Hello,
per the discussion on [1], it was decided to support Python 3 with a
script that will copy non-mpmath code to a different directory
("sympy-py3k"), run 2to3 on it, then copy the mpmath stuff over. I
implemented such a script with this commit[2] (if the commit gets
rebased away, it's in my porting4 branch). It simply traverses the
code and copies everything other than some dirs (.git, my/, mpmath/
and others); Ronan suggested scraping .gitignore for this info. If it
deems a file should be copied over (checking the mtime to try and not
do this every time) it adds it to a list of files to call 2to3 on.
After all relevant files are copied, 2to3 is run and then mpmath is
copied over (regardless of whether it changed or not). All in all, a
relatively simple script (the source might be cleaner than this
explanation).
Now, Aaron pointed out that this is a problem because it copies over
everything not explicitly ignored. He was worried about some rogue
script crashing 2to3, but there's also the danger of copying over
large files the user might have hanging around [*]. He suggested
getting around this by relying on the output of "git ls-files". This
is generally a cleaner approach (wish I had thought of it), as we skip
traversing our dirs and only copy over relevant files. The downside is
that the use2to3 script will then depend on the presence of the git
repo. It removes the usecase: "I downloaded py2 code, but I decided I
want it in Python 3 anyway. Why can't I just run the use2to3 script
the developers use if I have it already?". I'm not sure how likely
this particular case is going to crop up, but it seems possible. And,
we will also be depending on git.
So, should we:
a) continue with the script I have currently (perhaps with a big fat
warning "I hope you don't have any large files around." in some way
b) refactor to use "git ls-files", disregarding the above mentioned
usecase and relying on git for this script to work
c) something else?
Thanks for any comments.
[1] http://code.google.com/p/sympy/issues/detail?id=2482
[2]
https://github.com/vperic/sympy/commit/1e492f90e93811a9ff27d5eb152bcd1c112f7223
[*] We want to copy everything so the user could just "cd sympy-py3k"
and use SymPy under Python 3 from there seamlessly. The code that
needs 2to3 is spread around sympy/, doc/, examples/, bin/ and ./
(root), so copying everything is the cleanest solution IMHO.
--
Vladimir Perić
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy?hl=en.