[py3] Let InstanceCommand.run_arg() always return an int 3.26
authorDenis Laxalde <denis.laxalde@logilab.fr>
Wed, 13 Jun 2018 11:09:17 +0200
branch3.26
changeset 12323 562b09ec963a
parent 12322 cd211bb9aa8e
child 12324 39208d9256a2
[py3] Let InstanceCommand.run_arg() always return an int The caller of this method (which is method "run_args") does `max(status, self.run_arg(appid))` and run_arg might return None if the underlying <cmdname>_instance method returns None. On python3 max(1, None) breaks with "TypeError: unorderable types: int() > NoneType()". So we enforce run_arg() method to return an integer even if the underlying method returns None. This fixes call of "cubicweb-ctl i18ninstance" with Python3.
cubicweb/cwctl.py
--- a/cubicweb/cwctl.py	Mon Jun 18 08:47:03 2018 +0200
+++ b/cubicweb/cwctl.py	Wed Jun 13 11:09:17 2018 +0200
@@ -148,7 +148,7 @@
     def run_arg(self, appid):
         cmdmeth = getattr(self, '%s_instance' % self.name)
         try:
-            status = cmdmeth(appid)
+            status = cmdmeth(appid) or 0
         except (ExecutionError, ConfigurationError) as ex:
             sys.stderr.write('instance %s not %s: %s\n' % (
                     appid, self.actionverb, ex))