Browse Source

Don't use dict.keys/iterkeys

Ask Solem 12 years ago
parent
commit
8e11d7b11d

+ 1 - 1
celery/__compat__.py

@@ -187,7 +187,7 @@ def get_compat_module(pkg, name):
         fqdn = '.'.join([pkg.__name__, name])
         module = sys.modules[fqdn] = import_module(attrs)
         return module
-    attrs['__all__'] = attrs.keys()
+    attrs['__all__'] = list(attrs)
     return create_module(name, dict(attrs), pkg=pkg, prepare_attr=prepare)
 
 

+ 1 - 2
celery/app/abstract.py

@@ -60,5 +60,4 @@ class configurated(object):
                 setattr(self, attr_name, attr_value)
 
     def confopts_as_dict(self):
-        return dict((key, getattr(self, key))
-                        for key in self.__confopts__.iterkeys())
+        return dict((key, getattr(self, key)) for key in self.__confopts__)

+ 1 - 1
celery/app/amqp.py

@@ -131,7 +131,7 @@ class Queues(dict):
 
     def select_remove(self, queue):
         if self._consume_from is None:
-            self.select_subset(k for k in self.keys() if k != queue)
+            self.select_subset(k for k in self if k != queue)
         else:
             self._consume_from.pop(queue, None)
 

+ 1 - 1
celery/apps/worker.py

@@ -194,7 +194,7 @@ class Worker(configurated):
                 count, pluralize(count, 'message')))
 
     def tasklist(self, include_builtins=True):
-        tasks = self.app.tasks.keys()
+        tasks = self.app.tasks
         if not include_builtins:
             tasks = filter(lambda s: not s.startswith('celery.'), tasks)
         return '\n'.join('  . %s' % task for task in sorted(tasks))

+ 12 - 7
celery/backends/cache.py

@@ -16,6 +16,15 @@ from .base import KeyValueStoreBackend
 
 _imp = [None]
 
+REQUIRES_BACKEND = """\
+The memcached backend requires either pylibmc or python-memcached.\
+"""
+
+UNKNOWN_BACKEND = """\
+The cache backend %r is unknown,
+Please use one of the following backends instead: %s\
+"""
+
 
 def import_best_memcache():
     if _imp[0] is None:
@@ -27,9 +36,7 @@ def import_best_memcache():
             try:
                 import memcache  # noqa
             except ImportError:
-                raise ImproperlyConfigured(
-                    'Memcached backend requires either the pylibmc '
-                    'or memcache library')
+                raise ImproperlyConfigured(REQUIRES_BACKEND)
         _imp[0] = (is_pylibmc, memcache)
     return _imp[0]
 
@@ -90,10 +97,8 @@ class CacheBackend(KeyValueStoreBackend):
         try:
             self.Client = backends[self.backend]()
         except KeyError:
-            raise ImproperlyConfigured(
-                    'Unknown cache backend: %s. Please use one of the '
-                    'following backends: %s' % (self.backend,
-                                                ', '.join(backends.keys())))
+            raise ImproperlyConfigured(UNKNOWN_BACKEND % (
+                self.backend, ', '.join(backends)))
 
     def get(self, key):
         return self.client.get(key)

+ 1 - 1
celery/bin/camqadm.py

@@ -239,7 +239,7 @@ class AMQShell(cmd.Cmd):
     def do_help(self, *args):
         if not args:
             self.say(HELP_HEADER)
-            for cmd_name in self.amqp.keys():
+            for cmd_name in self.amqp:
                 self.display_command_help(cmd_name, short=True)
             self.say(EXAMPLE_TEXT)
         else:

+ 6 - 4
celery/bin/celery.py

@@ -162,7 +162,7 @@ class Command(BaseCommand):
 
     def say_remote_command_reply(self, replies):
         c = self.colored
-        node = replies.keys()[0]
+        node = iter(replies).next()  # <-- take first.
         reply = replies[node]
         status, preply = self.prettify(reply)
         self.say_chat('->', c.cyan(node, ': ') + status,
@@ -326,7 +326,7 @@ class list_(Command):
 
     def run(self, what=None, *_, **kw):
         topics = {'bindings': self.list_bindings}
-        available = ', '.join(topics.keys())
+        available = ', '.join(topics)
         if not what:
             raise Error('You must specify what to list (%s)' % available)
         if what not in topics:
@@ -401,7 +401,7 @@ class purge(Command):
 
     """
     def run(self, *args, **kwargs):
-        queues = len(self.app.amqp.queues.keys())
+        queues = len(self.app.amqp.queues)
         messages_removed = self.app.control.purge()
         if messages_removed:
             self.out('Purged %s %s from %s known task %s.' % (
@@ -712,7 +712,9 @@ class shell(Command):  # pragma: no cover
           xmap, xstarmap subtask, Task
         - all registered tasks.
 
-    Example Session::
+    Example Session:
+
+    .. code-block:: bash
 
         $ celery shell
 

+ 1 - 1
celery/bin/celeryd.py

@@ -148,7 +148,7 @@ class WorkerCommand(Command):
                 kwargs['loglevel'] = mlevel(loglevel)
             except KeyError:  # pragma: no cover
                 self.die('Unknown level %r. Please use one of %s.' % (
-                    loglevel, '|'.join(l for l in LOG_LEVELS.keys()
+                    loglevel, '|'.join(l for l in LOG_LEVELS
                       if isinstance(l, basestring))))
         return self.app.Worker(**kwargs).run()
 

+ 1 - 1
celery/bin/celeryd_multi.py

@@ -6,7 +6,7 @@
 Examples
 ========
 
-::
+.. code-block:: bash
 
     # Single worker with explicit name and events enabled.
     $ celeryd-multi start Leslie -E

+ 7 - 7
celery/datastructures.py

@@ -173,7 +173,7 @@ class DependencyGraph(object):
         fh.write('}\n')
 
     def __iter__(self):
-        return self.adjacent.iterkeys()
+        return iter(self.adjacent)
 
     def __getitem__(self, node):
         return self.adjacent[node]
@@ -262,11 +262,11 @@ class DictAttribute(object):
         return hasattr(self.obj, key)
 
     def _iterate_keys(self):
-        return vars(self.obj).iterkeys()
+        return iter(vars(self.obj))
     iterkeys = _iterate_keys
 
     def __iter__(self):
-        return self.iterkeys()
+        return self._iterate_keys()
 
     def _iterate_items(self):
         return vars(self.obj).iteritems()
@@ -278,7 +278,7 @@ class DictAttribute(object):
     else:
 
         def keys(self):
-            return list(self._iterate_keys())
+            return list(self)
 
         def items(self):
             return list(self._iterate_items())
@@ -346,7 +346,7 @@ class ConfigurationView(AttributeDictMixin):
         return repr(dict(self.iteritems()))
 
     def __iter__(self):
-        return self.iterkeys()
+        return self._iterate_keys()
 
     def _iter(self, op):
         # defaults must be first in the stream, so values in
@@ -354,7 +354,7 @@ class ConfigurationView(AttributeDictMixin):
         return chain(*[op(d) for d in reversed(self._order)])
 
     def _iterate_keys(self):
-        return uniq(self._iter(lambda d: d.iterkeys()))
+        return uniq(self._iter(lambda d: d))
     iterkeys = _iterate_keys
 
     def _iterate_items(self):
@@ -437,7 +437,7 @@ class LimitedSet(object):
         return iter(self._data)
 
     def __repr__(self):
-        return 'LimitedSet(%r)' % (self._data.keys(), )
+        return 'LimitedSet(%r)' % (list(self._data), )
 
     @property
     def chronologically(self):

+ 2 - 2
celery/events/dumper.py

@@ -59,14 +59,14 @@ class Dumper(object):
             return self.format_task_event(hostname, timestamp,
                                           type, task, event)
         fields = ', '.join('%s=%s' % (key, event[key])
-                        for key in sorted(event.keys()))
+                        for key in sorted(event))
         sep = fields and ':' or ''
         self.say('%s [%s] %s%s %s' % (hostname, timestamp,
                                       humanize_type(type), sep, fields))
 
     def format_task_event(self, hostname, timestamp, type, task, event):
         fields = ', '.join('%s=%s' % (key, event[key])
-                        for key in sorted(event.keys()))
+                        for key in sorted(event))
         sep = fields and ':' or ''
         self.say('%s [%s] %s%s %s %s' % (hostname, timestamp,
                     humanize_type(type), sep, task, fields))

+ 1 - 1
celery/tests/bin/test_celery.py

@@ -340,4 +340,4 @@ class test_main(AppCase):
     def test_main(self, Command):
         command = Command.return_value = Mock()
         main()
-        command.execute_from_commandline.assert_called_with()
+        command.execute_from_commandline.assert_called_with(None)

+ 3 - 1
celery/tests/security/test_security.py

@@ -1,7 +1,9 @@
 """
 Keys and certificates for tests (KEY1 is a private key of CERT1, etc.)
 
-Generated with::
+Generated with:
+
+.. code-block:: bash
 
     $ openssl genrsa -des3 -passout pass:test -out key1.key 1024
     $ openssl req -new -key key1.key -out key1.csr -passin pass:test

+ 1 - 1
celery/utils/functional.py

@@ -62,7 +62,7 @@ class LRUCache(UserDict):
             self.data[key] = value
 
     def __iter__(self):
-        return self.data.iterkeys()
+        return iter(self.data)
 
     def _iterate_items(self):
         for k in self:

+ 2 - 2
celery/worker/autoreload.py

@@ -102,7 +102,7 @@ class StatMonitor(BaseMonitor):
             modified = dict((f, mt) for f, mt in self._mtimes()
                                 if self._maybe_modified(f, mt))
             if modified:
-                self.on_change(modified.keys())
+                self.on_change(modified)
                 self.modify_times.update(modified)
             time.sleep(self.interval)
 
@@ -232,7 +232,7 @@ class Autoreloader(bgThread):
         files.update(dict((module_file(sys.modules[m]), m)
                         for m in self.modules))
 
-        self._monitor = self.Monitor(files.keys(), self.on_change,
+        self._monitor = self.Monitor(files, self.on_change,
                 shutdown_event=self._is_shutdown, **self.options)
         self._hashes = dict([(f, file_hash(f)) for f in files])
 

+ 2 - 2
celery/worker/buckets.py

@@ -150,12 +150,12 @@ class TaskBucket(object):
 
     def init_with_registry(self):
         """Initialize with buckets for all the task types in the registry."""
-        for task in self.task_registry.keys():
+        for task in self.task_registry:
             self.add_bucket_for_type(task)
 
     def refresh(self):
         """Refresh rate limits for all task types in the registry."""
-        for task in self.task_registry.keys():
+        for task in self.task_registry:
             self.update_bucket_for_type(task)
 
     def get_bucket_for_type(self, task_name):

+ 1 - 1
celery/worker/control.py

@@ -213,7 +213,7 @@ def dump_tasks(panel, taskinfoitems=None, **kwargs):
         return '%s [%s]' % (task.name, ' '.join(info))
 
     info = map(_extract_info, (tasks[task]
-                                    for task in sorted(tasks.keys())))
+                                    for task in sorted(tasks)))
     logger.debug('* Dump of currently registered tasks:\n%s', '\n'.join(info))
 
     return info