Pweave icon indicating copy to clipboard operation
Pweave copied to clipboard

Python 2.* Compatibility

Open brandonwillard opened this issue 8 years ago • 9 comments

Looks like some of the current syntax requires Python 3, i.e.

(pweave-env)$ python setup.py develop
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    import pweave
  File "/home/bwillar0/projects/python/Pweave/pweave/__init__.py", line 7, in <module>
    from .pweb import *
  File "/home/bwillar0/projects/python/Pweave/pweave/pweb.py", line 26
    def __init__(self, source, doctype = None, *, informat = None, kernel = "python3",
                                                ^
SyntaxError: invalid syntax

Is there no longer Python 2.* compatibility?

brandonwillard avatar Aug 13 '16 21:08 brandonwillard

Current master is Python 3 only and so will be the next 0.3 release. I haven't updated the setup.py yet.

You can still run documents with Python 2 code with the --kernel option.

mpastell avatar Aug 14 '16 08:08 mpastell

I started working on a generic branch (both Python 2 and 3 compatible).

When run in Python 2.7 environment, it switches to Python 2 kernel.

abukaj avatar Jun 07 '17 16:06 abukaj

This version compatibility question was exclusively in reference to the source/development version of Python, which has already been addressed.

brandonwillard avatar Jun 07 '17 16:06 brandonwillard

@mpastell Just crossed my mind: have you definitively decided to abandon support for Python 2, or is this still possible in the project to support it?

I am thinking either about making the code P2/3 compatible or keeping P2 branch in sync with master.

abukaj avatar Aug 23 '17 08:08 abukaj

I have three reasons for wanting to drop Python 2:

  • The project is now tightly coupled with IPython and new versions of IPython are Python 3 only: http://ipython.readthedocs.io/en/stable/whatsnew/version6.html
  • Not supporting Python 2 means I can focus on new features, because I only need to test on one version
  • I haven't used Python 2 during the last 2 years and I'm very used to coding using only Python 3

So personally I find this a good time to drop it, if it would be included in the release it means I feel the need to support it. Python 2 users can still use new version of Pweave with Python 2 kernel.

See also: http://www.python3statement.org/

mpastell avatar Aug 24 '17 19:08 mpastell

I see. My approach is slightly different - I try to keep my code both P2/3 compatible, so I can maintain the support with minimal effort.

The only drawback I can see of abandoning Python 2 is referencing the used Pweave version pweave.__version__. I can see two solutions to fix that:

  • either inject __pweave_version__ variable into the global namespace of the kernel before weaving,
  • or define a tag to be substituted with version string when parsing the source file. Personally I am for the former option.

abukaj avatar Aug 25 '17 15:08 abukaj

Dear all... i just installed Peweave only to realize that it doesn´t support python 2. There is a comment here that i can change the kernel settings but i have no clue what this means. Would someone be willing to guide me? Thank you in advance

JamesLarkinWhite avatar Jan 20 '18 21:01 JamesLarkinWhite

IF i try to trun one of the test documents like: pweave -f md2html --kernel python2 FIR_designp.pmd or pweave -f md2html -k python2 FIR_designp.pmd

I still get this error:

Traceback (most recent call last): File "C:\Program Files (x86)\Python27\Lib\runpy.py", line 162, in run_module_as_main "main", fname, loader, pkg_name) File "C:\Program Files (x86)\Python27\Lib\runpy.py", line 72, in run_code exec code in run_globals File "C:\Program Files (x86)\Python27\Scripts\pweave.exe_main.py", line 5, in File "c:\program files (x86)\python27\lib\site-packages\pweave_init.py", line 6, in from . import readers File "c:\program files (x86)\python27\lib\site-packages\pweave\readers.py", line 8, in from urllib import request, parse ImportError: cannot import name request

I would really appreciate any help you are willing to offer. At the moment i can not install python3 on this mashine

JamesLarkinWhite avatar Jan 23 '18 09:01 JamesLarkinWhite

Python 2 will be a dead language in two years' time. The dependencies like ipython going away it the other nail in the coffin. I think @mpastell made the right call when he closed this issue.

piccolbo avatar Mar 20 '18 21:03 piccolbo