Hi,
we've been asked if Autobahn runs under Jython. Since there is an upcoming Jython version that supports 2.7 Python API, I thought I'd give it a try.
To my astonishment, I was able to get Autobahn working with minor efforts …
Tested: Twisted 12.3 under Jython from sources (together with zope.interface 4.05 and setuptools from sources) after applying the following patches. Stock AutobahnPython 0.6 from source.
1) Missing __builtin__.buffer
The following is a workaround due to http://bugs.jython.org/issue1521
Include
# workaround for Jython, see: http://bugs.jython.org/issue1521
import __builtin__
if not hasattr(__builtin__, 'buffer'):
def _buffer(object, offset = None, size = None):
if offset is None:
offset = 0
if size is None:
size = len(object)
return object[offset:offset+size]
__builtin__.buffer = _buffer
at the beginning of "twisted/python/compat.py".
2) Weird platform ident
Jython identifies itself as "Java" .. I was testing on Windows.
twisted/python/runtime.py
Line 36
#'java': 'java',
'java': 'win32',
This is necessary on Windows since otherwise Posix API is assumed.
Of course above is just a quick hack.
C:\Users\oberstet>jython
Jython 2.7b1 (default:ac42d59644e9, Feb 9 2013, 15:24:52)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys, os
>>> sys.platform
'java1.7.0'
>>> os.name
'java'
IMHO, os.name should return the real underlying OS on Jython, not "java" .. what do you think?
===
Where should those issue be adressed? Should Twisted include workarounds or should I lobby at Jython to "do the right" thing?
Cheers,
Tobias
Mit freundlichen Grüßen,
Tobias Oberstein
Geschäftsführer
+49(0)9131 940 3574
+49(0)176 23 752 055
Skype: toberstein
Twitter: @oberstet
Xing: Tobias Oberstein
Tavendo GmbH · Am Weihersbach 13 · 91074 Herzogenaurach · Deutschland
Office / Postanschrift : Waldstrasse 18 · 91054 Erlangen · Deutschland
+49(+)700 GO TAVENDO · +49(0)700 46 828 36 36 · www.tavendo.de
Amtsgericht Fürth · HRB 10365 · USt-Id.Nr DE246462916 · Geschäftsführer Tobias Oberstein