summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-11 18:45:06 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-11 18:45:06 +0000
commite5ff39a1c26f43139e12406572ccd601a23dd790 (patch)
tree1552f4d0f6754419de766e51c9fdfb4eb7507f17
parent5b17a9afc262d8f1ca3331302503142640d3dd3e (diff)
automatic import of python-singledispatchmethod
-rw-r--r--.gitignore1
-rw-r--r--python-singledispatchmethod.spec195
-rw-r--r--sources1
3 files changed, 197 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..a72a5f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/singledispatchmethod-1.0.tar.gz
diff --git a/python-singledispatchmethod.spec b/python-singledispatchmethod.spec
new file mode 100644
index 0000000..4459613
--- /dev/null
+++ b/python-singledispatchmethod.spec
@@ -0,0 +1,195 @@
+%global _empty_manifest_terminate_build 0
+Name: python-singledispatchmethod
+Version: 1.0
+Release: 1
+Summary: Backport of @functools.singledispatchmethod to Python 2.7-3.7.
+License: MIT
+URL: https://github.com/ikalnytskyi/singledispatchmethod
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/be/e0/20ecc21453d7f052ee04d0d9b3305798e0f6afc619885c9aaee4ba86b25c/singledispatchmethod-1.0.tar.gz
+BuildArch: noarch
+
+
+%description
+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?
+ $ 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:
+ 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:
+ 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.
+
+%package -n python3-singledispatchmethod
+Summary: Backport of @functools.singledispatchmethod to Python 2.7-3.7.
+Provides: python-singledispatchmethod
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-singledispatchmethod
+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?
+ $ 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:
+ 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:
+ 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.
+
+%package help
+Summary: Development documents and examples for singledispatchmethod
+Provides: python3-singledispatchmethod-doc
+%description help
+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?
+ $ 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:
+ 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:
+ 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.
+
+%prep
+%autosetup -n singledispatchmethod-1.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-singledispatchmethod -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..5cc514e
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+d2653ccefce26ff614741cd71c2f6ec6 singledispatchmethod-1.0.tar.gz