Python3

Hey everyone,

We are working on a new framework to perform the creation of intranet applications for the municipality of Biel/Bienne (Switzerland). All our new applications should work with >= python3, which is whyt it was needed to upgrade martian to a newer version of Python. The upgrade respects backward compatibility with older versions of python, so it should be usable with applications running on python2.

All tests were running successfully with the following versions:
- python2.6
- python2.7
- python3.3
- python3.4

We enjoy the opensource philosophy and want to give our work back to the opensouce community. We hope to see our branch merged in master and a new release of your great product on pypi. 

best regards, 

Samuel Riolo
Software engineer at municipality of  Biel/Bienne
Samuel.Riolo@biel-bienne.ch





========================================================================================

riols@riols-VirtualBox:~/development/python/tester$ python tester.py 
Cloning into 'martian2.6'...
remote: Counting objects: 980, done.
remote: Compressing objects: 100% (482/482), done.
remote: Total 980 (delta 514), reused 779 (delta 369)
Receiving objects: 100% (980/980), 486.89 KiB, done.
Resolving deltas: 100% (514/514), done.
Creating directory '/home/riols/development/python/tester/martian2.6/bin'.
Creating directory '/home/riols/development/python/tester/martian2.6/parts'.
Creating directory '/home/riols/development/python/tester/martian2.6/eggs'.
Creating directory '/home/riols/development/python/tester/martian2.6/develop-eggs'.
Generated script '/home/riols/development/python/tester/martian2.6/bin/buildout'.
Develop: '/home/riols/development/python/tester/martian2.6/.'
warning: no files found matching '*.rst'
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Getting distribution for 'zc.recipe.egg>=2.0.0a3'.
Got zc.recipe.egg 2.0.1.
Getting distribution for 'zc.recipe.testrunner'.
zip_safe flag not set; analyzing archive contents...
Got zc.recipe.testrunner 2.0.0.
Getting distribution for 'zope.testrunner'.
package init file 'src/zope/testrunner/tests/testrunner-ex/__init__.py' not found (or not a regular file)
Creating missing __init__.py for zope.testrunner.tests.testrunner-ex
Got zope.testrunner 4.4.3.
Getting distribution for 'zope.interface'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.interface 4.1.1.
Getting distribution for 'zope.exceptions'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.exceptions 4.0.7.
Getting distribution for 'six'.
no previously-included directories found matching 'documentation/_build'
zip_safe flag not set; analyzing archive contents...
six: module references __path__
Got six 1.7.3.
Installing devpython.
Generated interpreter '/home/riols/development/python/tester/martian2.6/bin/devpython'.
Installing test.
Getting distribution for 'zope.testing'.
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.testing 4.1.3.
Generated script '/home/riols/development/python/tester/martian2.6/bin/test'.




 Test with python 2.6
========================================
Running tests at level 1
Running zope.testrunner.layer.UnitTests tests:
  Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
  Running:
........
  Ran 8 tests with 0 failures, 0 errors, 0 skipped in 0.096 seconds.
Tearing down left over layers:
  Tear down zope.testrunner.layer.UnitTests in 0.000 seconds.
========================================
Cloning into 'martian2.7'...
remote: Counting objects: 980, done.
remote: Compressing objects: 100% (482/482), done.
remote: Total 980 (delta 514), reused 779 (delta 369)
Receiving objects: 100% (980/980), 486.89 KiB, done.
Resolving deltas: 100% (514/514), done.
Creating directory '/home/riols/development/python/tester/martian2.7/bin'.
Creating directory '/home/riols/development/python/tester/martian2.7/parts'.
Creating directory '/home/riols/development/python/tester/martian2.7/eggs'.
Creating directory '/home/riols/development/python/tester/martian2.7/develop-eggs'.
Generated script '/home/riols/development/python/tester/martian2.7/bin/buildout'.
Develop: '/home/riols/development/python/tester/martian2.7/.'
warning: no files found matching '*.rst'
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Getting distribution for 'zc.recipe.egg>=2.0.0a3'.
Got zc.recipe.egg 2.0.1.
Getting distribution for 'zc.recipe.testrunner'.
zip_safe flag not set; analyzing archive contents...
Got zc.recipe.testrunner 2.0.0.
Getting distribution for 'zope.testrunner'.
package init file 'src/zope/testrunner/tests/testrunner-ex/__init__.py' not found (or not a regular file)
Creating missing __init__.py for zope.testrunner.tests.testrunner-ex
Got zope.testrunner 4.4.3.
Getting distribution for 'zope.interface'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.interface 4.1.1.
Getting distribution for 'zope.exceptions'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.exceptions 4.0.7.
Getting distribution for 'six'.
no previously-included directories found matching 'documentation/_build'
zip_safe flag not set; analyzing archive contents...
six: module references __path__
Got six 1.7.3.
Installing devpython.
Generated interpreter '/home/riols/development/python/tester/martian2.7/bin/devpython'.
Installing test.
Getting distribution for 'zope.testing'.
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.testing 4.1.3.
Generated script '/home/riols/development/python/tester/martian2.7/bin/test'.




 Test with python 2.7
========================================
Running tests at level 1
Running zope.testrunner.layer.UnitTests tests:
  Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
  Running:
........
  Ran 8 tests with 0 failures, 0 errors, 0 skipped in 0.097 seconds.
Tearing down left over layers:
  Tear down zope.testrunner.layer.UnitTests in 0.000 seconds.
========================================
Cloning into 'martian3.3'...
remote: Counting objects: 980, done.
remote: Compressing objects: 100% (482/482), done.
remote: Total 980 (delta 514), reused 779 (delta 369)
Receiving objects: 100% (980/980), 486.89 KiB, done.
Resolving deltas: 100% (514/514), done.
Creating directory '/home/riols/development/python/tester/martian3.3/bin'.
Creating directory '/home/riols/development/python/tester/martian3.3/parts'.
Creating directory '/home/riols/development/python/tester/martian3.3/eggs'.
Creating directory '/home/riols/development/python/tester/martian3.3/develop-eggs'.
Generated script '/home/riols/development/python/tester/martian3.3/bin/buildout'.
Develop: '/home/riols/development/python/tester/martian3.3/.'
warning: no files found matching '*.rst'
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Getting distribution for 'zc.recipe.egg>=2.0.0a3'.
Got zc.recipe.egg 2.0.1.
Getting distribution for 'zc.recipe.testrunner'.
zip_safe flag not set; analyzing archive contents...
Got zc.recipe.testrunner 2.0.0.
Getting distribution for 'zope.testrunner'.
package init file 'src/zope/testrunner/tests/testrunner-ex/__init__.py' not found (or not a regular file)
Creating missing __init__.py for zope.testrunner.tests.testrunner-ex
Got zope.testrunner 4.4.3.
Getting distribution for 'zope.interface'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.interface 4.1.1.
Getting distribution for 'zope.exceptions'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.exceptions 4.0.7.
Getting distribution for 'six'.
no previously-included directories found matching 'documentation/_build'
zip_safe flag not set; analyzing archive contents...
__pycache__.six.cpython-33: module references __path__
Got six 1.7.3.
Installing devpython.
Generated interpreter '/home/riols/development/python/tester/martian3.3/bin/devpython'.
Installing test.
Getting distribution for 'zope.testing'.
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.testing 4.1.3.
Generated script '/home/riols/development/python/tester/martian3.3/bin/test'.




 Test with python 3.3
========================================
Running tests at level 1
Running zope.testrunner.layer.UnitTests tests:
  Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
  Running:
........
  Ran 8 tests with 0 failures, 0 errors, 0 skipped in 0.125 seconds.
Tearing down left over layers:
  Tear down zope.testrunner.layer.UnitTests in 0.000 seconds.
========================================
Cloning into 'martian3.4'...
remote: Counting objects: 980, done.
remote: Compressing objects: 100% (482/482), done.
remote: Total 980 (delta 514), reused 779 (delta 369)
Receiving objects: 100% (980/980), 486.89 KiB, done.
Resolving deltas: 100% (514/514), done.
Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-0.9.6.tar.gz
Extracting in /tmp/tmp0u0clbg9
Now working in /tmp/tmp0u0clbg9/setuptools-0.9.6
Building a Setuptools egg in /tmp/tmpp37ix9tq
/tmp/tmpp37ix9tq/setuptools-0.9.6-py3.4.egg
Creating directory '/home/riols/development/python/tester/martian3.4/bin'.
Creating directory '/home/riols/development/python/tester/martian3.4/parts'.
Creating directory '/home/riols/development/python/tester/martian3.4/eggs'.
Creating directory '/home/riols/development/python/tester/martian3.4/develop-eggs'.
Generated script '/home/riols/development/python/tester/martian3.4/bin/buildout'.
Getting distribution for 'setuptools'.
Got setuptools 5.4.1.
Upgraded:
  setuptools version 5.4.1;
restarting.
Generated script '/home/riols/development/python/tester/martian3.4/bin/buildout'.
Develop: '/home/riols/development/python/tester/martian3.4/.'
warning: no files found matching '*.rst'
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Getting distribution for 'zc.recipe.egg>=2.0.0a3'.
Got zc.recipe.egg 2.0.1.
Getting distribution for 'zc.recipe.testrunner'.
zip_safe flag not set; analyzing archive contents...
Got zc.recipe.testrunner 2.0.0.
Getting distribution for 'zope.testrunner'.
package init file 'src/zope/testrunner/tests/testrunner-ex/__init__.py' not found (or not a regular file)
Got zope.testrunner 4.4.3.
Getting distribution for 'zope.interface'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.interface 4.1.1.
Getting distribution for 'zope.exceptions'.
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.exceptions 4.0.7.
Getting distribution for 'six'.
no previously-included directories found matching 'documentation/_build'
zip_safe flag not set; analyzing archive contents...
__pycache__.six.cpython-34: module references __path__
Got six 1.7.3.
Installing devpython.
Generated interpreter '/home/riols/development/python/tester/martian3.4/bin/devpython'.
Installing test.
Getting distribution for 'zope.testing'.
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
Got zope.testing 4.1.3.
Generated script '/home/riols/development/python/tester/martian3.4/bin/test'.




 Test with python 3.4
========================================
Running tests at level 1
Running zope.testrunner.layer.UnitTests tests:
  Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
  Running:
........
  Ran 8 tests with 0 failures, 0 errors, 0 skipped in 0.119 seconds.
Tearing down left over layers:
  Tear down zope.testrunner.layer.UnitTests in 0.000 seconds.
========================================

It might be nicer to define a module-global
```python
if hasattr(types, 'ClassType'):
    CLASS_TYPES = (type, types.ClassType)
else:
    CLASS_TYPES = (type,)
```
and then use `isinstance(obj, CLASS_TYPES)` here.