Code Monkey home page Code Monkey logo

Comments (9)

berkerpeksag avatar berkerpeksag commented on July 18, 2024

Yes, we should use io.open(..., encoding='utf-8') instead of https://github.com/berkerpeksag/astor/blob/master/astor/misc.py#L165

from astor.

pmaupin avatar pmaupin commented on July 18, 2024

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.

  1. 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.)

  2. 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.

berkerpeksag avatar berkerpeksag commented on July 18, 2024
  1. 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.

pmaupin avatar pmaupin commented on July 18, 2024

Great! I'll work on that as part of merging anti8.

from astor.

ztane avatar ztane commented on July 18, 2024

Why not use the tokenize.open?

from astor.

berkerpeksag avatar berkerpeksag commented on July 18, 2024

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.

pmaupin avatar pmaupin commented on July 18, 2024

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.

pmaupin avatar pmaupin commented on July 18, 2024

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.

pmaupin avatar pmaupin commented on July 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.