Differences between revisions 5 and 26 (spanning 21 versions)
Revision 5 as of 2008-01-13 03:16:48
Size: 2266
Editor: PhilipJenvey
Comment: woohoo optparse
Revision 26 as of 2008-03-06 01:50:30
Size: 5146
Editor: PhilipJenvey
Comment: updates
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Getting Pylons (0.9.6.1) to run on Jython
=========================================
Pylons (trunk, 0.9.7) on Jython Requirements/TODO
=================================================
Line 6: Line 6:
* The ability to install Pylons and all its dependencies: Installing Pylons and its dependencies
--------------------------------------
Line 8: Line 9:
  * distutils and setuptools (Mostly finished, See `SetuptoolsOnJython`_)   * distutils and setuptools **(distutils is now supported and setuptools-0.6c8 supports jython-trunk, See** `SetuptoolsOnJython`_ ** for more details)**
Line 10: Line 11:
Ensure all dependencies' tests pass:   * Ensure all dependencies' tests pass. Pylons on jython buildbot: http://pylonshq.com:8014/
Line 12: Line 13:
* Paste, PasteDeploy and PasteScript nose
----
Line 14: Line 16:
* Mako Pylons projects require nose, but most packages (including Pylons) use nose as their own test runners.
Line 16: Line 18:
  - mako uses the compiler module to parse Python code into AST. The compiler module is mostly pure Python code, but its guts are really the native parser module (which Jython lacks) requires:
Line 18: Line 20:
* Beaker   * optparse module **(added in r4018)**
Line 20: Line 22:
* nose   * a fix for the cell variable (variables used in closures) bug here: http://pylonshq.com/pasties/667 **(fixed in r4038)**
Line 22: Line 24:
  requires:   * fix for new.instancemethod not allowing a PyType as its class argument **(fixed in r4051)**
Line 24: Line 26:
  - the optparse module (added in r4018)   * fix for inspect.argspec not working (also needed for Pylons, among other things) **(fixed in r4053)**
Line 26: Line 28:
  - compiler modules (compiler requires the parser module which Jython lacks). nose only needs the compiler module to use compiler.consts.CO_GENERATOR; until there's a parser, maybe jython could provide a broken compiler module that doesn't import parser   * imp.find_module returned entries in regard to bytecode files instead of .py files when they were available **(fixed in r4080)**
Line 28: Line 30:
* Routes   * fix type names and class __module__ in doctests **(fixed in r4107, 4111)**
Line 30: Line 32:
  - I got all of routes' tests to pass on Jython well over a year ago so I don't expect too much trouble here -pjenvey   * methods weren't always inheriting their inner functions' __name__ and __doc__ **(fixed in r4109)**
Line 32: Line 34:
* WebHelpers   * compiler package (and compiler requires the parser module which Jython lacks). nose only needs the compiler module to use compiler.consts.CO_GENERATOR; until there's a parser jython will provide a broken compiler module that doesn't import parser **(added in r4114)**
Line 34: Line 36:
* FormEncode   * Patches to nose for Jython compatibility: http://code.google.com/p/python-nose/issues/detail?id=160
Line 36: Line 38:
* simplejson Routes
------
Most tests pass, there's a few failures, some of which are due to dict ordering.
Line 38: Line 42:
  * `SetuptoolsOnJython`_ currently has trouble installing simplejson, because it attempts to compile its optional C extensions (that help performance). It expects to catch a distutils.errors.CCompilerError if the compilation fails, but Jython dies much earlier:
Line 40: Line 43:
  File "/Users/pjenvey/src/java/jython-trunk/dist/Lib/distutils/command/build_ext.py", line 598, in get_ext_filename Paste
----------------------------------
requires:
Line 42: Line 47:
  TypeError: cannot concatenate 'str' and 'NoneType' objects   * subprocess module: if it doesn't exist (Python 2.3) it uses a version copied over from CPython 2.4 (paste.util.subprocess24) **(added in r4150)**
Line 44: Line 49:
* decorator   * paste.script.util.uuid requires the Python 2.3 int/long unification (PEP 237) phase B **(added in r4175)**
Line 46: Line 51:
  - Note: decorators aren't currently supported in Jython, however the decorator module doesn't actually use decorators (works on CPython 2.3)   * modulefinder module (imported in paste/__init__.py). Jython currently lacks it, and modulefinder relies on reading code objects via marshal.load **(modulefinder added in r4179)**
Line 48: Line 53:
Later down the road:   * webbrowser module: paste.fixture imports it, Jython doesn't include it. It's pretty useless without the platform dependent CPython ic module on most environments. Without that, only console based browsers work and Jython's os.system can't redirect their stdin to actually make them usable **(Paste/WebTest trunk now only import webbrowser when it's needed)**
Line 50: Line 55:
* SQLAlchemy PasteDeploy
-----------
All tests pass
Line 52: Line 59:
  - The [http://www.sqlalchemy.org/trac/ticket/672 Dialect Refactor II] ticket will need to be implemented to properly support using SQLAlchemy via Jython's DBAPI jdbc driver, [http://jython.org/Project/userguide.html#database-connectivity-in-jython zxJDBC].
  - Frank Wierzbicki has done some preliminary work on using SQLAlchemy with Jython, info [http://groups.google.com/group/sqlalchemy/browse_frm/thread/d60db24fe1683a41/09320033f406d78b?hl=en&lnk=gst here], and is scheduled to give a talk at PyCon 2008: "Database development with Jython, SQLAlchemy, and Hibernate"
PasteScript
-----------
PasteScript imports a number of CPython only modules (like pwd and fcntl)

WebOb
-----
A few failures

WebTest
-------
All tests pass

WebError
--------
1 failing test

Mako
----
requires:

  * compiler module: to parse Python code into AST. The compiler module is mostly pure Python code, but its guts are really the native parser module (which Jython lacks)

Beaker
------
requires:

  * Paste (for paste.fixture) **can be installed/imported now**
  * base64.b64encode: might die on an attempting to import b64encode in beaker.crypto.PBKDF2 (at least it does when the tests are run)

WebHelpers
----------
requires:

  * routes **(can be installed/imported now that Paste doesn't blow up)**

  * simplejson **(can be installed now)**

  * webhelpers.textile requires the unicodedata module

FormEncode
----------
requires:

  * gettext (which requires the locale module, which Jython lacks) **(both were added in r4077, 4084)**

simplejson
----------

  * `SetuptoolsOnJython`_ (actually distutils) currently had trouble installing simplejson because it attempts to compile its optional C extensions (that help performance). It expected to catch a distutils.errors.CCompilerError **(fixed in r4157: A CCompilerError is now raised)**

  all simplejson tests pass!

decorator
---------

  * requires function.func_defaults to be writable and it currently isn't on Jython **(fixed in 4177)**
  * Note: decorators aren't currently supported in Jython, however the decorator module doesn't actually use decorators (works on CPython 2.3)

Later down the road
===================

SQLAlchemy
----------

  * The `Dialect Refactor II <http://www.sqlalchemy.org/trac/ticket/672>`_ ticket will need to be implemented to properly support using SQLAlchemy via Jython's DBAPI jdbc driver, `zxJDBC <http://jython.org/Project/userguide.html#database-connectivity-in-jython>`_.
  
  * Frank Wierzbicki has done some preliminary work on using SQLAlchemy with Jython, info `here <http://groups.google.com/group/sqlalchemy/browse_frm/thread/d60db24fe1683a41/09320033f406d78b?hl=en&lnk=gst>`_, and is scheduled to give a talk at PyCon 2008: "Database development with Jython, SQLAlchemy, and Hibernate"

Turbogears 2
------------

  * Jim Baker has already started playing with Genshi on the `Jython modern branch <http://fisheye3.cenqua.com/browse/jython/branches/modern>`_

Pylons (trunk, 0.9.7) on Jython Requirements/TODO

Installing Pylons and its dependencies

  • distutils and setuptools (distutils is now supported and setuptools-0.6c8 supports jython-trunk, See SetuptoolsOnJython ** for more details)**
  • Ensure all dependencies' tests pass. Pylons on jython buildbot: http://pylonshq.com:8014/

nose

Pylons projects require nose, but most packages (including Pylons) use nose as their own test runners.

requires:

  • optparse module (added in r4018)
  • a fix for the cell variable (variables used in closures) bug here: http://pylonshq.com/pasties/667 (fixed in r4038)
  • fix for new.instancemethod not allowing a PyType as its class argument (fixed in r4051)
  • fix for inspect.argspec not working (also needed for Pylons, among other things) (fixed in r4053)
  • imp.find_module returned entries in regard to bytecode files instead of .py files when they were available (fixed in r4080)
  • fix type names and class __module__ in doctests (fixed in r4107, 4111)
  • methods weren't always inheriting their inner functions' __name__ and __doc__ (fixed in r4109)
  • compiler package (and compiler requires the parser module which Jython lacks). nose only needs the compiler module to use compiler.consts.CO_GENERATOR; until there's a parser jython will provide a broken compiler module that doesn't import parser (added in r4114)
  • Patches to nose for Jython compatibility: http://code.google.com/p/python-nose/issues/detail?id=160

Routes

Most tests pass, there's a few failures, some of which are due to dict ordering.

Paste

requires:

  • subprocess module: if it doesn't exist (Python 2.3) it uses a version copied over from CPython 2.4 (paste.util.subprocess24) (added in r4150)
  • paste.script.util.uuid requires the Python 2.3 int/long unification (PEP 237) phase B (added in r4175)
  • modulefinder module (imported in paste/__init__.py). Jython currently lacks it, and modulefinder relies on reading code objects via marshal.load (modulefinder added in r4179)
  • webbrowser module: paste.fixture imports it, Jython doesn't include it. It's pretty useless without the platform dependent CPython ic module on most environments. Without that, only console based browsers work and Jython's os.system can't redirect their stdin to actually make them usable (Paste/WebTest trunk now only import webbrowser when it's needed)

PasteDeploy

All tests pass

PasteScript

PasteScript imports a number of CPython only modules (like pwd and fcntl)

WebOb

A few failures

WebTest

All tests pass

WebError

1 failing test

Mako

requires:

  • compiler module: to parse Python code into AST. The compiler module is mostly pure Python code, but its guts are really the native parser module (which Jython lacks)

Beaker

requires:

  • Paste (for paste.fixture) can be installed/imported now
  • base64.b64encode: might die on an attempting to import b64encode in beaker.crypto.PBKDF2 (at least it does when the tests are run)

WebHelpers

requires:

  • routes (can be installed/imported now that Paste doesn't blow up)
  • simplejson (can be installed now)
  • webhelpers.textile requires the unicodedata module

FormEncode

requires:

  • gettext (which requires the locale module, which Jython lacks) (both were added in r4077, 4084)

simplejson

  • SetuptoolsOnJython (actually distutils) currently had trouble installing simplejson because it attempts to compile its optional C extensions (that help performance). It expected to catch a distutils.errors.CCompilerError (fixed in r4157: A CCompilerError is now raised)

all simplejson tests pass!

decorator

  • requires function.func_defaults to be writable and it currently isn't on Jython (fixed in 4177)
  • Note: decorators aren't currently supported in Jython, however the decorator module doesn't actually use decorators (works on CPython 2.3)

Later down the road

SQLAlchemy

  • The Dialect Refactor II ticket will need to be implemented to properly support using SQLAlchemy via Jython's DBAPI jdbc driver, zxJDBC.
  • Frank Wierzbicki has done some preliminary work on using SQLAlchemy with Jython, info here, and is scheduled to give a talk at PyCon 2008: "Database development with Jython, SQLAlchemy, and Hibernate"

Turbogears 2

PylonsOnJython (last edited 2009-09-14 22:04:24 by PhilipJenvey)