> Most of tw2 is written with exceptions in python2.5 style,
> actually only that exception is written with 2.6+ syntax.
>
> we can probably ask toscawidgets team to change that except clause to
> solve the issue.
> tw2.0 is not python3 compatible and so there isn't any particular
> reason to keep it written that way.
>
> python3 compatibility won't probably happen before we have tg2.3 which
> won't support python2.5 anymore.
>
> On Mon, Apr 9, 2012 at 10:36 PM, Michael Pedersen <
m.pedersen@...> wrote:
>> Heh, I just found the exact same fix. We do have a new problem, though, and
>> this one is kinda large.
>>
>> tw2.core is using syntax like this:
>>
>> ======================================================================
>> ERROR: Failure: SyntaxError (invalid syntax (i18n.py, line 19))
>> ----------------------------------------------------------------------
>> Traceback (most recent call last):
>> File
>> "/home/marvin/venvs/tg2-25/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/loader.py",
>> line 390, in loadTestsFromName
>> addr.filename, addr.module)
>> File
>> "/home/marvin/venvs/tg2-25/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/importer.py",
>> line 39, in importFromPath
>> return self.importFromDir(dir_path, fqname)
>> File
>> "/home/marvin/venvs/tg2-25/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/importer.py",
>> line 86, in importFromDir
>> mod = load_module(part_fqname, fh, filename, desc)
>> File "/home/marvin/src/tg2/tests/test_validation.py", line 9, in <module>
>> from tg.controllers import TGController
>> File "/home/marvin/src/tg2/tg/__init__.py", line 58, in <module>
>> from tg.controllers import TGController, redirect, url, lurl, abort
>> File "/home/marvin/src/tg2/tg/controllers/__init__.py", line 5, in
>> <module>
>> from tg.controllers.decoratedcontroller import (DecoratedController,
>> File "/home/marvin/src/tg2/tg/controllers/decoratedcontroller.py", line
>> 40, in <module>
>> from tw2.core import ValidationError as Tw2ValidationError
>> File "/home/marvin/src/tg2/tw2.core-2.0.1-py2.5.egg/tw2/core/__init__.py",
>> line 11, in <module>
>> from widgets import (Widget, CompoundWidget, RepeatingWidget,
>> File "/home/marvin/src/tg2/tw2.core-2.0.1-py2.5.egg/tw2/core/widgets.py",
>> line 12, in <module>
>> import validation as vd
>> File
>> "/home/marvin/src/tg2/tw2.core-2.0.1-py2.5.egg/tw2/core/validation.py", line
>> 11, in <module>
>> from i18n import _
>> File "/home/marvin/src/tg2/tw2.core-2.0.1-py2.5.egg/tw2/core/i18n.py",
>> line 19
>> except TypeError as e:
>> ^
>> SyntaxError: invalid syntax
>>
>>
>> While I'm glad they are, it does require us to make a choice: Either tw2 is
>> not the default, or we're bumping the minimum requirement to Python 2.6.
>> Personally, I prefer Py-2.6, but that's me. Thoughts?
>>
>> On Mon, Apr 9, 2012 at 4:26 PM, Alessandro Molina
>> <
alessandro.molina@...> wrote:
>>>
>>> You are right, I forgot to check on Python 2.5 and methodcaller wasn't
>>> available there.
>>> I pushed a quick fix for that right now.
>>>
>>> On Mon, Apr 9, 2012 at 3:06 PM, Michael Pedersen <
m.pedersen@...>
>>> wrote:
>>> > Thank you. That problem has been fixed, but I'm afraid we might have a
>>> > more
>>> > serious problem. In Jenkins, I've upgraded all the tests to use Python
>>> > 2.5
>>> > and 2.7 (instead of 2.4 and 2.6). On 2.5, I get the traceback below.
>>> > Since I
>>> > do not get this on 2.7, I have to think we've got a language
>>> > incompatibility
>>> > happening (though it could be packages needing to be upgraded, too, and
>>> > that's the focus of my work tonight).
>>> >
>>> > Traceback (most recent call last):
>>> > File "setup.py", line 79, in <module>
>>> > zip_safe=False
>>> > File "/usr/lib/python2.5/distutils/core.py", line 151, in setup
>>> > dist.run_commands()
>>> > File "/usr/lib/python2.5/distutils/dist.py", line 974, in run_commands
>>> > self.run_command(cmd)
>>> > File "/usr/lib/python2.5/distutils/dist.py", line 994, in run_command
>>> > cmd_obj.run()
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/commands.py",
>>> > line 137, in run
>>> > TestProgram(argv=argv, config=self.__config)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/core.py",
>>> > line 118, in __init__
>>> > **extra_args)
>>> > File "/usr/lib/python2.5/unittest.py", line 767, in __init__
>>> > self.parseArgs(argv)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/core.py",
>>> > line 135, in parseArgs
>>> > self.config.configure(argv, doc=self.usage())
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/config.py",
>>> > line 330, in configure
>>> > self.plugins.begin()
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/plugins/manager.py",
>>> > line 94, in __call__
>>> > return self.call(*arg, **kw)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/nose-1.0.0-py2.5.egg/nose/plugins/manager.py",
>>> > line 162, in simple
>>> > result = meth(*arg, **kw)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/pylons/test.py",
>>> > line 74, in begin
>>> > relative_to=path)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 203, in loadapp
>>> > return loadobj(APP, uri, name=name, **kw)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 223, in loadobj
>>> > global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 247, in loadcontext
>>> > global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 270, in _loadconfig
>>> > return loader.get_context(object_type, name, global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 401, in get_context
>>> > section)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 423, in _context_from_use
>>> > object_type, name=use, global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 353, in get_context
>>> > global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 247, in loadcontext
>>> > global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 270, in _loadconfig
>>> > return loader.get_context(object_type, name, global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 401, in get_context
>>> > section)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 423, in _context_from_use
>>> > object_type, name=use, global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 353, in get_context
>>> > global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 247, in loadcontext
>>> > global_conf=global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 277, in _loadegg
>>> > return loader.get_context(object_type, name, global_conf)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 553, in get_context
>>> > object_type, name=name)
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg2env/lib/python2.5/site-packages/PasteDeploy-1.3.4-py2.5.egg/paste/deploy/loadwsgi.py",
>>> > line 579, in find_egg_entry_point
>>> > possible.append((entry.load(), protocol, entry.name))
>>> > File "build/bdist.linux-i686/egg/pkg_resources.py", line 1954, in load
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg21inst/tg21teststd/tg21teststd/config/middleware.py",
>>> > line 4, in <module>
>>> > from tg21teststd.config.app_cfg import base_config
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg21inst/tg21teststd/tg21teststd/config/app_cfg.py",
>>> > line 16, in <module>
>>> > from tg.configuration import AppConfig
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg21inst/tg21/tg/__init__.py",
>>> > line 58, in <module>
>>> > from tg.controllers import TGController, redirect, url, lurl, abort
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg21inst/tg21/tg/controllers/__init__.py",
>>> > line 5, in <module>
>>> > from tg.controllers.decoratedcontroller import (DecoratedController,
>>> > File
>>> >
>>> > "/home/hudson/.hudson/jobs/tg-2.2-devtools-py2.5/workspace/tg21inst/tg21/tg/controllers/decoratedcontroller.py",
>>> > line 11, in <module>
>>> > strip_string = operator.methodcaller('strip')
>>> > AttributeError: 'module' object has no attribute 'methodcaller'
>>> >
>>> > On Mon, Apr 9, 2012 at 5:59 AM, Alessandro Molina
>>> > <
alessandro.molina@...> wrote:
>>> >>
>>> >> That test has been added to reproduce a crank issue that should have
>>> >> been fixed in crank 0.6.2,
>>> >> check that you are actually testing with the last crank release.
>>> >>
>>> >> On Mon, Apr 9, 2012 at 6:01 AM, Michael Pedersen
>>> >> <
m.pedersen@...>
>>> >> wrote:
>>> >> > So, I've begun working on getting jenkins fixed. Now that 2.1.5 is
>>> >> > out,
>>> >> > it
>>> >> > seemed like the next logical step.
>>> >> >
>>> >> > I've run into a pair of issues, though, and I think they might be
>>> >> > related.
>>> >> > Since I've been out of the code for so long, and so many improvements
>>> >> > have
>>> >> > occurred, asking here seems like the better choice.
>>> >> >
>>> >> > Are we now using the multiprocessing module? If so, we need to add it
>>> >> > to
>>> >> > the
>>> >> > list of requirements when python version is 2.5.
>>> >> >
>>> >> > Second, when running nosetests on python 2.7 on jenkins, I get a
>>> >> > failure.
>>> >> > Specifically, this error:
>>> >> >
>>> >> >
>>> >> > ======================================================================
>>> >> > ERROR: test_not_found
>>> >> > (tests.test_tg_controller_dispatch.TestNotFoundWithIndexController)
>>> >> >
>>> >> > ----------------------------------------------------------------------
>>> >> > Traceback (most recent call last):
>>> >> > File
>>> >> >
>>> >> >
>>> >> > "/home/hudson/.hudson/jobs/tg-2.2-py2.7/workspace/tests/test_tg_controller_dispatch.py",
>>> >> > line 492, in test_not_found
>>> >> > r = self.app.get('/something', status=404)
>>> >> > File
>>> >> >
>>> >> >
>>> >> > "/home/hudson/.hudson/jobs/tg-2.2-py2.7/workspace/tg2env/lib/python2.7/site-packages/WebTest-1.2.4-py2.7.egg/webtest/__init__.py",
>>> >> > line 734, in get
>>> >> > expect_errors=expect_errors)
>>> >> > File
>>> >> >
>>> >> >
>>> >> > "/home/hudson/.hudson/jobs/tg-2.2-py2.7/workspace/tg2env/lib/python2.7/site-packages/WebTest-1.2.4-py2.7.egg/webtest/__init__.py",
>>> >> > line 974, in do_request
>>> >> > self._check_status(status, res)
>>> >> > File
>>> >> >
>>> >> >
>>> >> > "/home/hudson/.hudson/jobs/tg-2.2-py2.7/workspace/tg2env/lib/python2.7/site-packages/WebTest-1.2.4-py2.7.egg/webtest/__init__.py",
>>> >> > line 1012, in _check_status
>>> >> > "Bad response: %s (not %s)" % (res.status, status))
>>> >> > AppError: Bad response: 200 OK (not 404)
>>> >> >
>>> >> > Any clues as to why before I dig in? My next immediate task is to
>>> >> > prepare
>>> >> > the 2.2 beta release, and get every package for it upgraded as high
>>> >> > as
>>> >> > possible, so any help fixing this one error would be most
>>> >> > appreciated.
>>> >> >
>>> >> > --
>>> >> > Michael J. Pedersen
>>> >> > My Online Resume:
http://www.icelus.org/ -- Google+
>>> >> >
http://plus.ly/pedersen>>> >> > Google Talk:
m.pedersen@... -- Twitter: pedersentg
>>> >> >
>>> >> > --
>>> >> > You received this message because you are subscribed to the Google
>>> >> > Groups
>>> >> > "TurboGears Trunk" group.
>>> >> > To post to this group, send email to
>>> >> >
turbogears-trunk@....
>>> >> > To unsubscribe from this group, send email to
>>> >> >
turbogears-trunk+unsubscribe@....
>>> >> > For more options, visit this group at
>>> >> >
http://groups.google.com/group/turbogears-trunk?hl=en.
>>> >>
>>> >> --
>>> >> You received this message because you are subscribed to the Google
>>> >> Groups
>>> >> "TurboGears Trunk" group.
>>> >> To post to this group, send email to
turbogears-trunk@....
>>> >> To unsubscribe from this group, send email to
>>> >>
turbogears-trunk+unsubscribe@....
>>> >> For more options, visit this group at
>>> >>
http://groups.google.com/group/turbogears-trunk?hl=en.
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > Michael J. Pedersen
>>> > My Online Resume:
http://www.icelus.org/ -- Google+
>>> >
http://plus.ly/pedersen>>> > Google Talk:
m.pedersen@... -- Twitter: pedersentg
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> > Groups
>>> > "TurboGears Trunk" group.
>>> > To post to this group, send email to
turbogears-trunk@....
>>> > To unsubscribe from this group, send email to
>>> >
turbogears-trunk+unsubscribe@....
>>> > For more options, visit this group at
>>> >
http://groups.google.com/group/turbogears-trunk?hl=en.
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "TurboGears Trunk" group.
>>> To post to this group, send email to
turbogears-trunk@....
>>> To unsubscribe from this group, send email to
>>>
turbogears-trunk+unsubscribe@....
>>> For more options, visit this group at
>>>
http://groups.google.com/group/turbogears-trunk?hl=en.
>>>
>>
>>
>>
>> --
>> Michael J. Pedersen
>> My Online Resume:
http://www.icelus.org/ -- Google+
http://plus.ly/pedersen>> Google Talk:
m.pedersen@... -- Twitter: pedersentg
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "TurboGears Trunk" group.
>> To post to this group, send email to
turbogears-trunk@....
>> To unsubscribe from this group, send email to
>>
turbogears-trunk+unsubscribe@....
>> For more options, visit this group at
>>
http://groups.google.com/group/turbogears-trunk?hl=en.
You received this message because you are subscribed to the Google Groups "TurboGears Trunk" group.