* Upgrade pylint to 2.0.1 * Pylint 2 bad-whitespace fix * Pylint 2 possibly-unused-variable fixes * Pylint 2 try-except-raise fixes * Disable pylint fixme for todoist for now https://github.com/PyCQA/pylint/pull/2320 * Disable pylint 2 useless-return for now https://github.com/PyCQA/pylint/issues/2300 * Disable pylint 2 invalid-name for type variables for now https://github.com/PyCQA/pylint/issues/1290 * Disable pylint 2 not-an-iterable for now https://github.com/PyCQA/pylint/issues/2311 * Pylint 2 unsubscriptable-object workarounds * Disable intentional pylint 2 assignment-from-nones * Disable pylint 2 unsupported-membership-test apparent false positives * Disable pylint 2 assignment-from-no-return apparent false positives * Disable pylint 2 comparison-with-callable false positives https://github.com/PyCQA/pylint/issues/2306
17 lines
540 B
Python
17 lines
540 B
Python
"""Decorator utility functions."""
|
|
from typing import Callable, TypeVar
|
|
|
|
CALLABLE_T = TypeVar('CALLABLE_T', bound=Callable) # noqa pylint: disable=invalid-name
|
|
|
|
|
|
class Registry(dict):
|
|
"""Registry of items."""
|
|
|
|
def register(self, name: str) -> Callable[[CALLABLE_T], CALLABLE_T]:
|
|
"""Return decorator to register item with a specific name."""
|
|
def decorator(func: CALLABLE_T) -> CALLABLE_T:
|
|
"""Register decorated function."""
|
|
self[name] = func
|
|
return func
|
|
|
|
return decorator
|