Parcourir la source

Fixes bug with argument parsing in master

Ask Solem il y a 9 ans
Parent
commit
66e94b8abb
4 fichiers modifiés avec 11 ajouts et 11 suppressions
  1. 9 6
      celery/bin/base.py
  2. 1 1
      celery/bin/beat.py
  3. 0 3
      celery/bin/celeryd_detach.py
  4. 1 1
      celery/bin/events.py

+ 9 - 6
celery/bin/base.py

@@ -426,12 +426,15 @@ class Command(object):
             formatter=HelpFormatter(),
             description=self.description,
         )
-        parser.option_list.extend(self.preload_options)
-        self.prepare_arguments(parser)
-        option_list = self.get_options()
-        if option_list:
-            parser.option_lisat.extend(option_list)
-        parser.option_list.extend(self.app.user_options['preload'])
+        parser.add_options(self.preload_options)
+        for typ_ in reversed(type(self).mro()):
+            try:
+                prepare_arguments = typ_.prepare_arguments
+            except AttributeError:
+                continue
+            prepare_arguments(self, parser)
+        parser.add_options(self.get_options() or ())
+        parser.add_options(self.app.user_options['preload'])
         return self.prepare_parser(parser)
 
     def prepare_parser(self, parser):

+ 1 - 1
celery/bin/beat.py

@@ -86,7 +86,7 @@ class beat(Command):
         parser.add_option('-S', '--scheduler', dest='scheduler_cls')
         parser.add_option('-l', '--loglevel', default='WARN')
         daemon_options(parser, default_pidfile='celerybeat.pid')
-        parser.option_list.extend(self.app.user_options['beat'])
+        parser.add_options(self.app.user_options['beat'])
 
 
 def main(app=None):

+ 0 - 3
celery/bin/celeryd_detach.py

@@ -56,9 +56,6 @@ class PartialOptionParser(OptionParser):
         self.leftovers = []
         OptionParser.__init__(self, *args, **kwargs)
 
-    def add_option_group(self, group):
-        self.option_list.extend(group.option_list)
-
     def _process_long_opt(self, rargs, values):
         arg = rargs.pop(0)
 

+ 1 - 1
celery/bin/events.py

@@ -126,7 +126,7 @@ class events(Command):
         parser.add_option('-r', '--maxrate')
         parser.add_option('-l', '--loglevel', default='INFO')
         daemon_options(parser, default_pidfile='celeryev.pid')
-        parser.option_list.extend(self.app.user_options['events'])
+        parser.add_options(self.app.user_options['events'])
 
 
 def main():