Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
singledispatchmethod
Advanced tools
Backport of @functools.singledispatchmethod
decorator [1]_ from
Python 3.8 to Python 2.7-3.7. These are merely ~30 lines of code, but
why bother yourself with copypasta?
.. code:: bash
$ pip install singledispatchmethod
The decorator transforms a method into a single-dispatch [2]_ generic function [3]_. Note that since the dispatch happens on the type of the first non-self or non-cls argument, you have to create your function accordingly:
.. code:: python
from singledispatchmethod import singledispatchmethod
class Negator:
@singledispatchmethod
def neg(self, arg):
raise NotImplementedError("Cannot negate a")
@neg.register
def _(self, arg: int):
return -arg
@neg.register
def _(self, arg: bool):
return not arg
@singledispatchmethod
supports nesting with other decorators such as
@classmethod
. However, in order to expose dispatcher.register
,
@singledispatchmethod
must be the outer most decorator. Here is
the Negator
class with the neg
methods being class bound:
.. code:: python
from singledispatchmethod import singledispatchmethod
class Negator:
@singledispatchmethod
@classmethod
def neg(cls, arg):
raise NotImplementedError("Cannot negate a")
@neg.register
@classmethod
def _(cls, arg: int):
return -arg
@neg.register
@classmethod
def _(cls, arg: bool):
return not arg
The same pattern can be used for other similar decorators, such as
@staticmethod
or @abstractmethod
. Please note, since
@singledispatchmethod
decorator is based on
@functools.singledispatch
, type annotations are supported by
dispatcher.register
only since Python 3.7.
.. [1] https://docs.python.org/3.8/library/functools.html#functools.singledispatchmethod .. [2] https://docs.python.org/3.8/glossary.html#term-single-dispatch .. [3] https://docs.python.org/3.8/glossary.html#term-generic-function
FAQs
Backport of @functools.singledispatchmethod to Python 2.7-3.7.
We found that singledispatchmethod demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.