Differences between revisions 26 and 27
Revision 26 as of 2008-03-06 01:50:30
Size: 5146
Editor: PhilipJenvey
Comment: updates
Revision 27 as of 2008-04-15 05:29:57
Size: 6156
Editor: PhilipJenvey
Comment: updates -- we're pretty well far along now
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:

**nose trunk is now fully supported on Jython**
Line 40: Line 42:
Most tests pass, there's a few failures, some of which are due to dict ordering. **All tests pass, minus one doctest (that fails due to expecting CPython dict ordering)**
Line 55: Line 57:
  * selectable files: cgiapp uses this in conjunction with subprocess. we can emulate selectable files but it still might have trouble expecting subprocess behavior we can't emulate
Line 57: Line 61:
All tests pass **All tests pass**
Line 61: Line 65:
PasteScript imports a number of CPython only modules (like pwd and fcntl) PasteScript imports a number of CPython only modules (like pwd and fcntl) **(now conditionally)**

  * One failing test requires the Cheetah templating language (maybe we'll just skip it)
  * test_egg_finder doesn't seem to have its paths setup correctly
Line 65: Line 72:
A few failures All the important tests are passing, the current failures are either due to testing > 2.3 behavior, and one due to cStringIO's repr not matching CPython's
Line 69: Line 76:
All tests pass **All tests pass**
Line 73: Line 80:
1 failing test **All tests pass**
Line 79: Line 86:
  * 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)   * _ast module: mako trunk includes support for parsing Python code via _ast. Frank is busy working on _ast support
Line 83: Line 90:
**All tests pass**
Line 86: Line 95:
  * base64.b64encode: might die on an attempting to import b64encode in beaker.crypto.PBKDF2 (at least it does when the tests are run)   * base64.b64encode: might die on an attempting to import b64encode in beaker.crypto.PBKDF2 (at least it does when the tests are run) **fixed, b64encode is 2.4 specific, 2.3 backwards compat was added**
Line 96: Line 105:
  * webhelpers.textile requires the unicodedata module   * webhelpers.textile requires the unicodedata module **now imported only when needed**

  * some tests rely on source code encodings (PEP 263) support

  * the literal object requires a fix for our str/unicode __add__/__radd__ problems
Line 104: Line 117:
  * some tests rely on source code encodings (PEP 263) support

  * attempts to import xml.parsers.expat.ExpatError

  * uses elementtree which doesn't work due to reliance on xml.parsers.expat
Line 107: Line 126:
**all simplejson tests pass**
Line 109: Line 130:
  all simplejson tests pass!

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

nose trunk is now fully supported on Jython

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

All tests pass, minus one doctest (that fails due to expecting CPython 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)
  • selectable files: cgiapp uses this in conjunction with subprocess. we can emulate selectable files but it still might have trouble expecting subprocess behavior we can't emulate

PasteDeploy

All tests pass

PasteScript

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

  • One failing test requires the Cheetah templating language (maybe we'll just skip it)
  • test_egg_finder doesn't seem to have its paths setup correctly

WebOb

All the important tests are passing, the current failures are either due to testing > 2.3 behavior, and one due to cStringIO's repr not matching CPython's

WebTest

All tests pass

WebError

All tests pass

Mako

requires:

  • _ast module: mako trunk includes support for parsing Python code via _ast. Frank is busy working on _ast support

Beaker

All tests pass

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) fixed, b64encode is 2.4 specific, 2.3 backwards compat was added

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 now imported only when needed
  • some tests rely on source code encodings (PEP 263) support
  • the literal object requires a fix for our str/unicode __add__/__radd__ problems

FormEncode

requires:

  • gettext (which requires the locale module, which Jython lacks) (both were added in r4077, 4084)
  • some tests rely on source code encodings (PEP 263) support
  • attempts to import xml.parsers.expat.ExpatError
  • uses elementtree which doesn't work due to reliance on xml.parsers.expat

simplejson

all simplejson tests pass

  • 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)

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)