diff options
author | Arthur Zamarin <arthurzam@gentoo.org> | 2021-08-25 08:26:27 +0300 |
---|---|---|
committer | Arthur Zamarin <arthurzam@gentoo.org> | 2021-08-25 08:29:05 +0300 |
commit | 843541a5c33e89e226b075276c1d24b158771d94 (patch) | |
tree | 8c90ff5f3ab2538f4dd7232a5523446a6da9ab4e /dev-python/PyContracts | |
parent | dev-python/svg-path: drop 4.0.2 (diff) | |
download | gentoo-843541a5c33e89e226b075276c1d24b158771d94.tar.gz gentoo-843541a5c33e89e226b075276c1d24b158771d94.tar.bz2 gentoo-843541a5c33e89e226b075276c1d24b158771d94.zip |
dev-python/PyContracts: enable py3.10, add test dep on numpy
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
Diffstat (limited to 'dev-python/PyContracts')
-rw-r--r-- | dev-python/PyContracts/PyContracts-1.8.14-r1.ebuild | 13 | ||||
-rw-r--r-- | dev-python/PyContracts/files/PyContracts-1.8.14-fix-py3.10.patch | 150 |
2 files changed, 161 insertions, 2 deletions
diff --git a/dev-python/PyContracts/PyContracts-1.8.14-r1.ebuild b/dev-python/PyContracts/PyContracts-1.8.14-r1.ebuild index 4158f29912c4..f94e9113dd4d 100644 --- a/dev-python/PyContracts/PyContracts-1.8.14-r1.ebuild +++ b/dev-python/PyContracts/PyContracts-1.8.14-r1.ebuild @@ -3,8 +3,7 @@ EAPI=7 -DISTUTILS_USE_SETUPTOOLS=bdepend -PYTHON_COMPAT=( python3_{7..9} pypy3 ) +PYTHON_COMPAT=( python3_{8..10} pypy3 ) inherit distutils-r1 @@ -22,5 +21,15 @@ RDEPEND=" dev-python/pyparsing[${PYTHON_USEDEP}] dev-python/six[${PYTHON_USEDEP}] " +BDEPEND=" + test? ( $(python_gen_cond_dep ' + dev-python/numpy[${PYTHON_USEDEP}] + ' 'python*' ) + ) +" + +PATCHES=( + "${FILESDIR}/${P}-fix-py3.10.patch" +) distutils_enable_tests nose diff --git a/dev-python/PyContracts/files/PyContracts-1.8.14-fix-py3.10.patch b/dev-python/PyContracts/files/PyContracts-1.8.14-fix-py3.10.patch new file mode 100644 index 000000000000..754b40efabd8 --- /dev/null +++ b/dev-python/PyContracts/files/PyContracts-1.8.14-fix-py3.10.patch @@ -0,0 +1,150 @@ +From d23ee2902e9e9aeffec86cbdb7a392d71be70861 Mon Sep 17 00:00:00 2001 +From: slorg1 <slorg1@gmail.com> +Date: Tue, 16 Apr 2019 14:13:52 -0400 +Subject: [PATCH] + upgrade to use collections.abc as needed for python 3.6+ + +--- a/src/contracts/library/map.py ++++ b/src/contracts/library/map.py +@@ -1,7 +1,11 @@ + from ..interface import Contract, ContractNotRespected + from ..syntax import (W, contract_expression, O, S, add_contract, add_keyword, + Keyword) +-import collections ++ ++try: ++ import collections.abc as collectionsAbc # python 3.6+ ++except ImportError: ++ import collections as collectionsAbc + + + class Map(Contract): +@@ -13,7 +17,7 @@ def __init__(self, length=None, key_c=None, value_c=None, where=None): + self.value_c = value_c + + def check_contract(self, context, value, silent): +- if not isinstance(value, collections.Mapping): ++ if not isinstance(value, collectionsAbc.Mapping): + error = 'Expected a Mapping, got %r.' % value.__class__.__name__ + raise ContractNotRespected(contract=self, error=error, + value=value, context=context) +--- a/src/contracts/library/miscellaneous_aliases.py ++++ b/src/contracts/library/miscellaneous_aliases.py +@@ -1,12 +1,16 @@ +-import collections +- ++try: ++ import collections.abc as collectionsAbc # python 3.6+ ++except ImportError: ++ import collections as collectionsAbc + + + def ist(C): ++ + def f(x): + f.__name__ = 'isinstance_of_%s' % C.__name__ + if not isinstance(x, C): + raise ValueError('Value is not an instance of %s.' % C.__name__) ++ + return f + + +@@ -14,33 +18,32 @@ def m_new_contract(name, f): + from contracts.library.extensions import CheckCallable + from contracts.library.extensions import Extension + Extension.registrar[name] = CheckCallable(f) +- + +-m_new_contract('Container', ist(collections.Container)) +-# todo: Iterable(x) +-m_new_contract('Iterable', ist(collections.Iterable)) +- +-m_new_contract('Hashable', ist(collections.Hashable)) + ++m_new_contract('Container', ist(collectionsAbc.Container)) ++# todo: Iterable(x) ++m_new_contract('Iterable', ist(collectionsAbc.Iterable)) + ++m_new_contract('Hashable', ist(collectionsAbc.Hashable)) + +-m_new_contract('Iterator', ist(collections.Iterator)) +-m_new_contract('Sized', ist(collections.Sized)) +-m_new_contract('Callable', ist(collections.Callable)) +-m_new_contract('Sequence', ist(collections.Sequence)) +-m_new_contract('Set', ist(collections.Set)) +-m_new_contract('MutableSequence', ist(collections.MutableSequence)) +-m_new_contract('MutableSet', ist(collections.MutableSet)) +-m_new_contract('Mapping', ist(collections.Mapping)) +-m_new_contract('MutableMapping', ist(collections.MutableMapping)) +-#new_contract('MappingView', ist(collections.MappingView)) +-#new_contract('ItemsView', ist(collections.ItemsView)) +-#new_contract('ValuesView', ist(collections.ValuesView)) ++m_new_contract('Iterator', ist(collectionsAbc.Iterator)) ++m_new_contract('Sized', ist(collectionsAbc.Sized)) ++m_new_contract('Callable', ist(collectionsAbc.Callable)) ++m_new_contract('Sequence', ist(collectionsAbc.Sequence)) ++m_new_contract('Set', ist(collectionsAbc.Set)) ++m_new_contract('MutableSequence', ist(collectionsAbc.MutableSequence)) ++m_new_contract('MutableSet', ist(collectionsAbc.MutableSet)) ++m_new_contract('Mapping', ist(collectionsAbc.Mapping)) ++m_new_contract('MutableMapping', ist(collectionsAbc.MutableMapping)) ++# new_contract('MappingView', ist(collections.MappingView)) ++# new_contract('ItemsView', ist(collections.ItemsView)) ++# new_contract('ValuesView', ist(collections.ValuesView)) + + + # Not a lambda to have better messages +-def is_None(x): ++def is_None(x): + return x is None + ++ + m_new_contract('None', is_None) + m_new_contract('NoneType', is_None) +--- a/src/contracts/library/seq.py ++++ b/src/contracts/library/seq.py +@@ -1,7 +1,12 @@ + from ..interface import Contract, ContractNotRespected + from ..syntax import (add_contract, W, contract_expression, O, S, add_keyword, + Keyword) +-import collections ++ ++try: ++ import collections.abc as collectionsAbc # python 3.6+ ++except ImportError: ++ import collections as collectionsAbc ++ + from past.builtins import xrange + + try: +@@ -38,7 +43,7 @@ def check_contract(self, context, value, silent): + + return + +- if not isinstance(value, collections.Sequence): ++ if not isinstance(value, collectionsAbc.Sequence): + error = 'Expected a Sequence, got %r.' % value.__class__.__name__ + raise ContractNotRespected(self, error, value, context) + +--- a/src/contracts/library/sets.py ++++ b/src/contracts/library/sets.py +@@ -1,7 +1,10 @@ + from ..interface import Contract, ContractNotRespected, describe_type + from ..syntax import (Keyword, O, S, W, add_contract, add_keyword, + contract_expression) +-import collections ++try: ++ import collections.abc as collectionsAbc # python 3.6+ ++except ImportError: ++ import collections as collectionsAbc + + + class ASet(Contract): +@@ -13,7 +16,7 @@ def __init__(self, length_contract=None, + self.elements_contract = elements_contract + + def check_contract(self, context, value, silent): +- if not isinstance(value, collections.Set): ++ if not isinstance(value, collectionsAbc.Set): + error = 'Expected a set, got %r.' % describe_type(value) + raise ContractNotRespected(self, error, value, context) + |