diff options
| author | Palica <palica+gitlab@liguros.net> | 2020-06-23 22:35:08 +0200 |
|---|---|---|
| committer | Palica <palica+gitlab@liguros.net> | 2020-06-23 22:35:08 +0200 |
| commit | ecdac123787b96ce6649f0f91da12ea6458cc2b1 (patch) | |
| tree | b89c74d9e6fe6e8aebc4c77bcbeb4ab73214127d /dev-python/wrapt | |
| parent | 1be72aa41cf41dedadeecf59dca9f01de6381f5e (diff) | |
| download | baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.gz baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.xz baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.zip | |
Updating liguros repo
Diffstat (limited to 'dev-python/wrapt')
| -rw-r--r-- | dev-python/wrapt/Manifest | 2 | ||||
| -rw-r--r-- | dev-python/wrapt/files/wrapt-1.12.1-py39.patch | 182 | ||||
| -rw-r--r-- | dev-python/wrapt/metadata.xml | 13 | ||||
| -rw-r--r-- | dev-python/wrapt/wrapt-1.11.2-r1.ebuild | 27 | ||||
| -rw-r--r-- | dev-python/wrapt/wrapt-1.12.1.ebuild | 30 |
5 files changed, 254 insertions, 0 deletions
diff --git a/dev-python/wrapt/Manifest b/dev-python/wrapt/Manifest new file mode 100644 index 000000000000..1d7c552d24d2 --- /dev/null +++ b/dev-python/wrapt/Manifest @@ -0,0 +1,2 @@ +DIST wrapt-1.11.2.tar.gz 124874 BLAKE2B 262518e097753830d80d834e1dcd5afe9c743e7cad8fad992146829255b99ef0c1a6d0344674935bb6beae9a8e5f42a1a4ade760f7300d104b1a17bc6f94f91f SHA512 2551247c46fbc34068e0f2d6efa91d8c87669c8bf1e16c3b5e2e5e0d84402301c38a78485b7e9a13120c99c9c942db680a84d87a52a072d530aba6444d86297d +DIST wrapt-1.12.1.tar.gz 126750 BLAKE2B 92aba2d400aa626445be68fdda2831132e1c341a2f20065b3d7071a2ebc174cb9de7e6a20a8375360cf7df181881fd20b7b2f70dbfdf533e8823982eeaa722f5 SHA512 33e964cb3aa2437bc7d084a98f622f7c5c8c719d97806796ae0317d35130bdb2679a9dd87be7077e2cae1eb32b65d152349fa7cc138cb392d5999cbfdcecc9ac diff --git a/dev-python/wrapt/files/wrapt-1.12.1-py39.patch b/dev-python/wrapt/files/wrapt-1.12.1-py39.patch new file mode 100644 index 000000000000..c3e85e09b660 --- /dev/null +++ b/dev-python/wrapt/files/wrapt-1.12.1-py39.patch @@ -0,0 +1,182 @@ +From 33708e76578c173333d1879a4a21baddf8fcdb6a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> +Date: Fri, 29 May 2020 16:06:07 +0200 +Subject: [PATCH] Update for fixed outer @classmethod behavior in Python 3.9 + +Fixes #160 +--- + docs/decorators.rst | 18 ++++++------- + tests/test_outer_classmethod.py | 45 +++++++++++++++++++++------------ + tests/test_synchronized_lock.py | 22 ++++++++-------- + 3 files changed, 49 insertions(+), 36 deletions(-) + +diff --git a/docs/decorators.rst b/docs/decorators.rst +index b8200d6..94201de 100644 +--- a/docs/decorators.rst ++++ b/docs/decorators.rst +@@ -641,15 +641,15 @@ When calling the wrapped function in the decorator wrapper function, the + instance is already bound to ``wrapped`` and will be passed automatically + as the first argument to the original wrapped function. + +-Note that due to a bug in Python ``classmethod.__get__()``, whereby it does +-not apply the descriptor protocol to the function wrapped by ``@classmethod``, +-the above only applies where the decorator wraps the ``@classmethod`` +-decorator. If the decorator is placed inside of the ``@classmethod`` +-decorator, then ``instance`` will be ``None`` and the decorator wrapper +-function will see the call as being the same as a normal function. As a +-result, always place any decorator outside of the ``@classmethod`` +-decorator. Hopefully this issue in Python can be addressed in a future +-Python version. ++Note that due to a bug in Python prior to 3.9 ``classmethod.__get__()``, ++whereby it does not apply the descriptor protocol to the function ++wrapped by ``@classmethod``, the above only applies where the decorator ++wraps the ``@classmethod`` decorator. If the decorator is placed inside ++of the ``@classmethod`` decorator, then ``instance`` will be ``None`` ++and the decorator wrapper function will see the call as being the same ++as a normal function. As a result, always place any decorator outside of ++the ``@classmethod`` decorator if you need to support earlier Python ++versions. + + Decorating Static Methods + ------------------------- +diff --git a/tests/test_outer_classmethod.py b/tests/test_outer_classmethod.py +index 6b4af4f..9c2fcb8 100644 +--- a/tests/test_outer_classmethod.py ++++ b/tests/test_outer_classmethod.py +@@ -3,6 +3,7 @@ from __future__ import print_function + import unittest + import inspect + import imp ++import sys + + import wrapt + +@@ -121,20 +122,26 @@ class TestNamingOuterClassMethod(unittest.TestCase): + class TestCallingOuterClassMethod(unittest.TestCase): + + def test_class_call_function(self): +- # Test calling classmethod. The instance and class passed to the +- # wrapper will both be None because our decorator is surrounded +- # by the classmethod decorator. The classmethod decorator +- # doesn't bind the method and treats it like a normal function, +- # explicitly passing the class as the first argument with the +- # actual arguments following that. ++ # Test calling classmethod. In Python 3.9, the class will be ++ # passed as instance. In older versions of Python, the instance ++ # and class passed to the wrapper will both be None because our ++ # decorator is surrounded by the classmethod decorator. ++ # The classmethod decorator doesn't bind the method and treats ++ # it like a normal function, explicitly passing the class ++ # as the first argument with the actual arguments following ++ # that. + + _args = (1, 2) + _kwargs = {'one': 1, 'two': 2} + + @wrapt.decorator + def _decorator(wrapped, instance, args, kwargs): +- self.assertEqual(instance, None) +- self.assertEqual(args, (Class,)+_args) ++ if sys.hexversion >= 0x03090000: ++ self.assertEqual(instance, Class) ++ self.assertEqual(args, _args) ++ else: ++ self.assertEqual(instance, None) ++ self.assertEqual(args, (Class,)+_args) + self.assertEqual(kwargs, _kwargs) + self.assertEqual(wrapped.__module__, _function.__module__) + self.assertEqual(wrapped.__name__, _function.__name__) +@@ -155,20 +162,26 @@ class TestCallingOuterClassMethod(unittest.TestCase): + self.assertEqual(result, (_args, _kwargs)) + + def test_instance_call_function(self): +- # Test calling classmethod via class instance. The instance +- # and class passed to the wrapper will both be None because our +- # decorator is surrounded by the classmethod decorator. The +- # classmethod decorator doesn't bind the method and treats it +- # like a normal function, explicitly passing the class as the +- # first argument with the actual arguments following that. ++ # Test calling classmethod via class instance. In Python 3.9, ++ # the class will be passed as instance. In older versions ++ # of Python, the instance and class passed to the wrapper will ++ # both be None because our decorator is surrounded ++ # by the classmethod decorator. The classmethod decorator ++ # doesn't bind the method and treats it like a normal function, ++ # explicitly passing the class as the first argument with ++ # the actual arguments following that. + + _args = (1, 2) + _kwargs = {'one': 1, 'two': 2} + + @wrapt.decorator + def _decorator(wrapped, instance, args, kwargs): +- self.assertEqual(instance, None) +- self.assertEqual(args, (Class,)+_args) ++ if sys.hexversion >= 0x03090000: ++ self.assertEqual(instance, Class) ++ self.assertEqual(args, _args) ++ else: ++ self.assertEqual(instance, None) ++ self.assertEqual(args, (Class,)+_args) + self.assertEqual(kwargs, _kwargs) + self.assertEqual(wrapped.__module__, _function.__module__) + self.assertEqual(wrapped.__name__, _function.__name__) +diff --git a/tests/test_synchronized_lock.py b/tests/test_synchronized_lock.py +index 6e7eb12..b8f60f3 100644 +--- a/tests/test_synchronized_lock.py ++++ b/tests/test_synchronized_lock.py +@@ -1,5 +1,6 @@ + from __future__ import print_function + ++import sys + import unittest + + import wrapt +@@ -157,34 +158,33 @@ class TestSynchronized(unittest.TestCase): + self.assertEqual(_lock3, _lock2) + + def test_synchronized_outer_classmethod(self): +- # XXX If all was good, this would be detected as a class ++ # Bug in Python < 3.9: ++ # If all was good, this would be detected as a class + # method call, but the classmethod decorator doesn't bind + # the wrapped function to the class before calling and + # just calls it direct, explicitly passing the class as +- # first argument. This screws things up. Would be nice if +- # Python were fixed, but that isn't likely to happen. ++ # first argument. This screws things up. + +- #_lock0 = getattr(C4, '_synchronized_lock', None) +- _lock0 = getattr(C4.function2, '_synchronized_lock', None) ++ lock_target = (C4 if sys.hexversion >= 0x03090000 ++ else C4.function2) ++ ++ _lock0 = getattr(lock_target, '_synchronized_lock', None) + self.assertEqual(_lock0, None) + + c4.function2() + +- #_lock1 = getattr(C4, '_synchronized_lock', None) +- _lock1 = getattr(C4.function2, '_synchronized_lock', None) ++ _lock1 = getattr(lock_target, '_synchronized_lock', None) + self.assertNotEqual(_lock1, None) + + C4.function2() + +- #_lock2 = getattr(C4, '_synchronized_lock', None) +- _lock2 = getattr(C4.function2, '_synchronized_lock', None) ++ _lock2 = getattr(lock_target, '_synchronized_lock', None) + self.assertNotEqual(_lock2, None) + self.assertEqual(_lock2, _lock1) + + C4.function2() + +- #_lock3 = getattr(C4, '_synchronized_lock', None) +- _lock3 = getattr(C4.function2, '_synchronized_lock', None) ++ _lock3 = getattr(lock_target, '_synchronized_lock', None) + self.assertNotEqual(_lock3, None) + self.assertEqual(_lock3, _lock2) + +-- +2.26.2 + diff --git a/dev-python/wrapt/metadata.xml b/dev-python/wrapt/metadata.xml new file mode 100644 index 000000000000..45355a7c3012 --- /dev/null +++ b/dev-python/wrapt/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>python@gentoo.org</email> + <name>Python</name> + </maintainer> + <upstream> + <remote-id type="github">GrahamDumpleton/wrapt</remote-id> + <remote-id type="pypi">wrapt</remote-id> + </upstream> + <origin>gentoo-staging</origin> +</pkgmetadata> diff --git a/dev-python/wrapt/wrapt-1.11.2-r1.ebuild b/dev-python/wrapt/wrapt-1.11.2-r1.ebuild new file mode 100644 index 000000000000..1c93fca3441d --- /dev/null +++ b/dev-python/wrapt/wrapt-1.11.2-r1.ebuild @@ -0,0 +1,27 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DISTUTILS_USE_SETUPTOOLS=no +PYTHON_COMPAT=( python3_{6,7,8} pypy3 ) + +inherit distutils-r1 + +DESCRIPTION="Module for decorators, wrappers and monkey patching" +HOMEPAGE="https://github.com/GrahamDumpleton/wrapt" +SRC_URI="https://github.com/GrahamDumpleton/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 ~ia64 ppc ppc64 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos" + +distutils_enable_tests pytest +distutils_enable_sphinx docs \ + dev-python/sphinx_rtd_theme + +python_compile() { + local WRAPT_EXTENSIONS=true + + distutils-r1_python_compile +} diff --git a/dev-python/wrapt/wrapt-1.12.1.ebuild b/dev-python/wrapt/wrapt-1.12.1.ebuild new file mode 100644 index 000000000000..477f6b207dc3 --- /dev/null +++ b/dev-python/wrapt/wrapt-1.12.1.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DISTUTILS_USE_SETUPTOOLS=no +PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 ) + +inherit distutils-r1 + +DESCRIPTION="Module for decorators, wrappers and monkey patching" +HOMEPAGE="https://github.com/GrahamDumpleton/wrapt" +SRC_URI="https://github.com/GrahamDumpleton/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos" + +distutils_enable_tests pytest +distutils_enable_sphinx docs dev-python/sphinx_rtd_theme + +PATCHES=( + "${FILESDIR}"/${P}-py39.patch +) + +python_compile() { + local WRAPT_EXTENSIONS=true + + distutils-r1_python_compile +} |
