summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEkaterina Vaartis <vaartis@kotobank.ch>2021-05-14 23:05:14 +0300
committerMichał Górny <mgorny@gentoo.org>2021-05-15 13:51:32 +0200
commit5afe2baaffb4746f159b3d82f6ed28c33c8f5e18 (patch)
tree18726924be1bb04b56a37a75eb9e229d4293f6a1
parentdev-python/dnspython: bump revision of 1.16.0 to r2 for python 3.10 (diff)
downloadgentoo-5afe2baaffb4746f159b3d82f6ed28c33c8f5e18.tar.gz
gentoo-5afe2baaffb4746f159b3d82f6ed28c33c8f5e18.tar.bz2
gentoo-5afe2baaffb4746f159b3d82f6ed28c33c8f5e18.zip
dev-python/cryptography: bump to r1 and backport the fixes for 3.10
Signed-off-by: Ekaterina Vaartis <vaartis@kotobank.ch> Closes: https://github.com/gentoo/gentoo/pull/20795 Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r--dev-python/cryptography/cryptography-3.4.7-r1.ebuild (renamed from dev-python/cryptography/cryptography-3.4.7.ebuild)6
-rw-r--r--dev-python/cryptography/files/cryptography-3.4.7-py310.patch301
2 files changed, 306 insertions, 1 deletions
diff --git a/dev-python/cryptography/cryptography-3.4.7.ebuild b/dev-python/cryptography/cryptography-3.4.7-r1.ebuild
index 59b98063ce3e..1a0d6a6f5d95 100644
--- a/dev-python/cryptography/cryptography-3.4.7.ebuild
+++ b/dev-python/cryptography/cryptography-3.4.7-r1.ebuild
@@ -3,7 +3,7 @@
EAPI=7
-PYTHON_COMPAT=( python3_{7..9} pypy3 )
+PYTHON_COMPAT=( python3_{7..10} pypy3 )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1 multiprocessing
@@ -41,6 +41,10 @@ DEPEND="
"
RDEPEND+=${DEPEND}
+PATCHES=(
+ "${FILESDIR}/${P}-py310.patch"
+)
+
src_prepare() {
default
diff --git a/dev-python/cryptography/files/cryptography-3.4.7-py310.patch b/dev-python/cryptography/files/cryptography-3.4.7-py310.patch
new file mode 100644
index 000000000000..d961af82b774
--- /dev/null
+++ b/dev-python/cryptography/files/cryptography-3.4.7-py310.patch
@@ -0,0 +1,301 @@
+diff --git a/src/cryptography/exceptions.py b/src/cryptography/exceptions.py
+index f5860590..3bd98d82 100644
+--- a/src/cryptography/exceptions.py
++++ b/src/cryptography/exceptions.py
+@@ -3,10 +3,10 @@
+ # for complete details.
+
+
+-from enum import Enum
++from cryptography import utils
+
+
+-class _Reasons(Enum):
++class _Reasons(utils.Enum):
+ BACKEND_MISSING_INTERFACE = 0
+ UNSUPPORTED_HASH = 1
+ UNSUPPORTED_CIPHER = 2
+diff --git a/src/cryptography/hazmat/primitives/_serialization.py b/src/cryptography/hazmat/primitives/_serialization.py
+index 96a5ed9b..160a6b89 100644
+--- a/src/cryptography/hazmat/primitives/_serialization.py
++++ b/src/cryptography/hazmat/primitives/_serialization.py
+@@ -3,13 +3,14 @@
+ # for complete details.
+
+ import abc
+-from enum import Enum
++
++from cryptography import utils
+
+ # This exists to break an import cycle. These classes are normally accessible
+ # from the serialization module.
+
+
+-class Encoding(Enum):
++class Encoding(utils.Enum):
+ PEM = "PEM"
+ DER = "DER"
+ OpenSSH = "OpenSSH"
+@@ -18,14 +19,14 @@ class Encoding(Enum):
+ SMIME = "S/MIME"
+
+
+-class PrivateFormat(Enum):
++class PrivateFormat(utils.Enum):
+ PKCS8 = "PKCS8"
+ TraditionalOpenSSL = "TraditionalOpenSSL"
+ Raw = "Raw"
+ OpenSSH = "OpenSSH"
+
+
+-class PublicFormat(Enum):
++class PublicFormat(utils.Enum):
+ SubjectPublicKeyInfo = "X.509 subjectPublicKeyInfo with PKCS#1"
+ PKCS1 = "Raw PKCS#1"
+ OpenSSH = "OpenSSH"
+@@ -34,7 +35,7 @@ class PublicFormat(Enum):
+ UncompressedPoint = "X9.62 Uncompressed Point"
+
+
+-class ParameterFormat(Enum):
++class ParameterFormat(utils.Enum):
+ PKCS3 = "PKCS3"
+
+
+diff --git a/src/cryptography/hazmat/primitives/kdf/kbkdf.py b/src/cryptography/hazmat/primitives/kdf/kbkdf.py
+index ac36474f..75fe7d51 100644
+--- a/src/cryptography/hazmat/primitives/kdf/kbkdf.py
++++ b/src/cryptography/hazmat/primitives/kdf/kbkdf.py
+@@ -4,7 +4,6 @@
+
+
+ import typing
+-from enum import Enum
+
+ from cryptography import utils
+ from cryptography.exceptions import (
+@@ -19,11 +18,11 @@ from cryptography.hazmat.primitives import constant_time, hashes, hmac
+ from cryptography.hazmat.primitives.kdf import KeyDerivationFunction
+
+
+-class Mode(Enum):
++class Mode(utils.Enum):
+ CounterMode = "ctr"
+
+
+-class CounterLocation(Enum):
++class CounterLocation(utils.Enum):
+ BeforeFixed = "before_fixed"
+ AfterFixed = "after_fixed"
+
+diff --git a/src/cryptography/hazmat/primitives/serialization/pkcs7.py b/src/cryptography/hazmat/primitives/serialization/pkcs7.py
+index bcd9e330..57aac7e3 100644
+--- a/src/cryptography/hazmat/primitives/serialization/pkcs7.py
++++ b/src/cryptography/hazmat/primitives/serialization/pkcs7.py
+@@ -3,8 +3,8 @@
+ # for complete details.
+
+ import typing
+-from enum import Enum
+
++from cryptography import utils
+ from cryptography import x509
+ from cryptography.hazmat.backends import _get_backend
+ from cryptography.hazmat.primitives import hashes, serialization
+@@ -35,7 +35,7 @@ _ALLOWED_PRIVATE_KEY_TYPES = typing.Union[
+ ]
+
+
+-class PKCS7Options(Enum):
++class PKCS7Options(utils.Enum):
+ Text = "Add text/plain MIME type"
+ Binary = "Don't translate input data into canonical MIME format"
+ DetachedSignature = "Don't embed data in the PKCS7 structure"
+diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py
+index ef0fc443..9e571cfd 100644
+--- a/src/cryptography/utils.py
++++ b/src/cryptography/utils.py
+@@ -4,6 +4,7 @@
+
+
+ import abc
++import enum
+ import inspect
+ import sys
+ import typing
+@@ -162,3 +163,13 @@ int_from_bytes = deprecated(
+ "int_from_bytes is deprecated, use int.from_bytes instead",
+ DeprecatedIn34,
+ )
++
++
++# Python 3.10 changed representation of enums. We use well-defined object
++# representation and string representation from Python 3.9.
++class Enum(enum.Enum):
++ def __repr__(self):
++ return f"<{self.__class__.__name__}.{self._name_}: {self._value_!r}>"
++
++ def __str__(self):
++ return f"{self.__class__.__name__}.{self._name_}"
+diff --git a/src/cryptography/x509/base.py b/src/cryptography/x509/base.py
+index 5505fa3b..e3846c33 100644
+--- a/src/cryptography/x509/base.py
++++ b/src/cryptography/x509/base.py
+@@ -7,9 +7,9 @@ import abc
+ import datetime
+ import os
+ import typing
+-from enum import Enum
+
+ from cryptography.hazmat._types import _PRIVATE_KEY_TYPES, _PUBLIC_KEY_TYPES
++from cryptography import utils
+ from cryptography.hazmat.backends import _get_backend
+ from cryptography.hazmat.primitives import hashes, serialization
+ from cryptography.hazmat.primitives.asymmetric import (
+@@ -66,7 +66,7 @@ def _convert_to_naive_utc_time(time: datetime.datetime) -> datetime.datetime:
+ return time
+
+
+-class Version(Enum):
++class Version(utils.Enum):
+ v1 = 0
+ v3 = 2
+
+diff --git a/src/cryptography/x509/certificate_transparency.py b/src/cryptography/x509/certificate_transparency.py
+index d51bee92..d80f051a 100644
+--- a/src/cryptography/x509/certificate_transparency.py
++++ b/src/cryptography/x509/certificate_transparency.py
+@@ -5,15 +5,16 @@
+
+ import abc
+ import datetime
+-from enum import Enum
+
++from cryptography import utils
+
+-class LogEntryType(Enum):
++
++class LogEntryType(utils.Enum):
+ X509_CERTIFICATE = 0
+ PRE_CERTIFICATE = 1
+
+
+-class Version(Enum):
++class Version(utils.Enum):
+ v1 = 0
+
+
+diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py
+index 6cae016a..742f1fa2 100644
+--- a/src/cryptography/x509/extensions.py
++++ b/src/cryptography/x509/extensions.py
+@@ -8,7 +8,6 @@ import datetime
+ import hashlib
+ import ipaddress
+ import typing
+-from enum import Enum
+
+ from cryptography import utils
+ from cryptography.hazmat._der import (
+@@ -634,7 +633,7 @@ class DistributionPoint(object):
+ crl_issuer = utils.read_only_property("_crl_issuer")
+
+
+-class ReasonFlags(Enum):
++class ReasonFlags(utils.Enum):
+ unspecified = "unspecified"
+ key_compromise = "keyCompromise"
+ ca_compromise = "cACompromise"
+@@ -978,7 +977,7 @@ class TLSFeature(ExtensionType):
+ return hash(tuple(self._features))
+
+
+-class TLSFeatureType(Enum):
++class TLSFeatureType(utils.Enum):
+ # status_request is defined in RFC 6066 and is used for what is commonly
+ # called OCSP Must-Staple when present in the TLS Feature extension in an
+ # X.509 certificate.
+diff --git a/src/cryptography/x509/name.py b/src/cryptography/x509/name.py
+index a579aa21..9069a9f4 100644
+--- a/src/cryptography/x509/name.py
++++ b/src/cryptography/x509/name.py
+@@ -3,14 +3,13 @@
+ # for complete details.
+
+ import typing
+-from enum import Enum
+
+ from cryptography import utils
+ from cryptography.hazmat.backends import _get_backend
+ from cryptography.x509.oid import NameOID, ObjectIdentifier
+
+
+-class _ASN1Type(Enum):
++class _ASN1Type(utils.Enum):
+ UTF8String = 12
+ NumericString = 18
+ PrintableString = 19
+diff --git a/src/cryptography/x509/ocsp.py b/src/cryptography/x509/ocsp.py
+index 1c5de73e..bcf210c1 100644
+--- a/src/cryptography/x509/ocsp.py
++++ b/src/cryptography/x509/ocsp.py
+@@ -6,8 +6,8 @@
+ import abc
+ import datetime
+ import typing
+-from enum import Enum
+
++from cryptography import utils
+ from cryptography import x509
+ from cryptography.hazmat.primitives import hashes, serialization
+ from cryptography.x509.base import (
+@@ -27,12 +27,12 @@ _OIDS_TO_HASH = {
+ }
+
+
+-class OCSPResponderEncoding(Enum):
++class OCSPResponderEncoding(utils.Enum):
+ HASH = "By Hash"
+ NAME = "By Name"
+
+
+-class OCSPResponseStatus(Enum):
++class OCSPResponseStatus(utils.Enum):
+ SUCCESSFUL = 0
+ MALFORMED_REQUEST = 1
+ INTERNAL_ERROR = 2
+@@ -58,7 +58,7 @@ def _verify_algorithm(algorithm):
+ )
+
+
+-class OCSPCertStatus(Enum):
++class OCSPCertStatus(utils.Enum):
+ GOOD = 0
+ REVOKED = 1
+ UNKNOWN = 2
+diff --git a/tests/test_cryptography_utils.py b/tests/test_cryptography_utils.py
+index 6b795e0c..803997ac 100644
+--- a/tests/test_cryptography_utils.py
++++ b/tests/test_cryptography_utils.py
+@@ -2,6 +2,7 @@
+ # 2.0, and the BSD License. See the LICENSE file in the root of this repository
+ # for complete details.
+
++import enum
+ import typing
+
+ import pytest
+@@ -51,3 +52,13 @@ class TestCachedProperty(object):
+ assert len(accesses) == 1
+ assert t.t == 14
+ assert len(accesses) == 1
++
++
++def test_enum():
++ class TestEnum(utils.Enum):
++ value = "something"
++
++ assert issubclass(TestEnum, enum.Enum)
++ assert isinstance(TestEnum.value, enum.Enum)
++ assert repr(TestEnum.value) == "<TestEnum.value: 'something'>"
++ assert str(TestEnum.value) == "TestEnum.value"