public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: dev-python/PyContracts/, dev-python/PyContracts/files/
@ 2021-08-25  5:29 Arthur Zamarin
  0 siblings, 0 replies; only message in thread
From: Arthur Zamarin @ 2021-08-25  5:29 UTC (permalink / raw
  To: gentoo-commits

commit:     843541a5c33e89e226b075276c1d24b158771d94
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 25 05:26:27 2021 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed Aug 25 05:29:05 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=843541a5

dev-python/PyContracts: enable py3.10, add test dep on numpy

Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 .../PyContracts/PyContracts-1.8.14-r1.ebuild       |  13 +-
 .../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 4158f29912c..f94e9113dd4 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 00000000000..754b40efabd
--- /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)
+ 


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-08-25  5:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-25  5:29 [gentoo-commits] repo/gentoo:master commit in: dev-python/PyContracts/, dev-python/PyContracts/files/ Arthur Zamarin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox