Comments (3)
This looks more broken in astor 0.6:
>>> import astor
>>> import ast
>>> print (astor.to_source(ast.parse('a = 1e400')))
a = 1e1000
>>> print (astor.to_source(ast.parse('a = -1e400')))
a = -1e1000
@pmaupin do you know what causes this?
from astor.
Sorry I didn't document this fix better.
As described by the bug report, the behavior in 0.5 is broken -- inf
can appear in the AST, but inf
is not a reserved word in Python.
However, the suggested fix of using float('inf')
will not round-trip properly; the call to float
is embedded in the AST along with the string 'inf'
, so the generated AST does not match the original AST.
The only way I know of to create source code that will cause inf
to be output in the AST is to use a number that is too big, so the current solution works and round-trips correctly, unless somebody has a python with more than 10 bits of exponent in a float. If anybody knows a more canonical way of doing this, that would be great, but the goal is to generate source code that will compile to having inf
in the AST, not to generate a call to float
along with a string.
BTW, thanks for all your great work on this!
from astor.
Ah, you're right. I definitely missed this:
Lines 612 to 618 in 50d6d27
I've added a test case and explicitly document this in the test so hopefully I won't forget again :)
Thanks!
from astor.
Related Issues (20)
- ast.to_source does not return a valid source code (Call with f-string argument) HOT 1
- Deleted
- 0.8.1: test suite i sfailing HOT 1
- Cannot roundtrip Python 3.9 stdlib xml/dom/minidom.py
- Uneeded triplequotes added in round trip
- 0.8.1 keeps failing with NotADirectoryError HOT 3
- Missing parentheses in dictionary unpacking HOT 1
- to_source raises AssertionError
- AttributeError: 'FunctionDef' object has no attribute 'decorator_list'
- Can't find implementation of method `SourceGenerator.get__pp` HOT 2
- Retire `astor`, as `ast.unparse` exists, and migrate it into API-compatible shims of `ast` for older versions of python HOT 3
- Example to insert python code through AST
- Python 3.10.7 is now more careful with huge integers HOT 2
- SyntaxError: invalid syntax HOT 2
- AttributeError: No defined handler for node of type Match HOT 2
- Pypi release? HOT 2
- [3.12] DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
- Switch to use GitHub Actions
- why the type of variable βNEW_PARAM_JIN is wrong
- astor.to_source pretty_string HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from astor.