Comments (9)
Yes, we should use io.open(..., encoding='utf-8')
instead of https://github.com/berkerpeksag/astor/blob/master/astor/misc.py#L165
from astor.
I tried that -- it doesn't actually help. The problem is that the files in question are encoded in iso-8859-1, not utf. They are properly marked according to https://www.python.org/dev/peps/pep-0263/ with a first line of
#-*- coding: iso-8859-1 -*-
PEP263 gives the instructions for decoding this -- read the first two lines, look for a match for this regexp, etc.
-
We can do that -- it's not rocket science -- but I was wondering if there was an accessible thing in the library to do it already (I think the implementation of PEP263 does it down in the compiler.)
-
Then we have the round-trip issue. Obviously, we don't need to go back to any random encoding, but I think the default encoding for < Python 3.0 is ASCII, so we probably haven't thought out how to generate non-ASCII characters in the output dump -- we probably need to automatically add the UTF-8 encoding at the top of the file.
from astor.
- We can do that -- it's not rocket science -- but I was wondering if there was an accessible thing in the library to do it already (I think the implementation of PEP263 does it down in the compiler.)
https://docs.python.org/3/library/tokenize.html#tokenize.detect_encoding would probably do the trick. We can backport it for Python 2.
from astor.
Great! I'll work on that as part of merging anti8.
from astor.
Why not use the tokenize.open
?
from astor.
tokenize.open also doesn't exist on Python 2. Since detect_encoding accepts a file object's readline method, we'll need to do duplicate tokenize.open anyway. So I'm +1 for using tokenize.open.
from astor.
It turns out the only failing issues I had were either on 3.4.0, or with broken pretty-print string code. I added some goofy stuff to the pretty-print string code, and everything seems to work. If nobody has a counter-example, I will close.
from astor.
So, for some reason, Python 3.6 works on my home machine but not my work machine. Both Ubuntu using the same PPA.
from astor.
I'm pretty sure this works on Python 3 now.
Closing until someone who cares generates any sort of failing test.
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.