summaryrefslogtreecommitdiff
path: root/dev-python/oscrypto
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/oscrypto')
-rw-r--r--dev-python/oscrypto/Manifest1
-rw-r--r--dev-python/oscrypto/files/openssl-3.0.10-fix.patch38
-rw-r--r--dev-python/oscrypto/files/py3.12.patch902
-rw-r--r--dev-python/oscrypto/metadata.xml9
-rw-r--r--dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild47
5 files changed, 0 insertions, 997 deletions
diff --git a/dev-python/oscrypto/Manifest b/dev-python/oscrypto/Manifest
deleted file mode 100644
index 3007bc1fce26..000000000000
--- a/dev-python/oscrypto/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST oscrypto-1.3.0.gh.tar.gz 313874 BLAKE2B 6dd3331978d0ca8e63a136988d55bd6e1314078256f6c5141f26d49382e8908b58974c8f8d281a98a7e5efff2e477488baf7a37e3ea4a17bf887c92f9b1d9985 SHA512 b5baf72e1a09615b267be4d1c4baf2375bb939b5bd3d717ca9ca70776541f590a8608bef95991967e23f3794e6220709ed2fe5acdedfe9bfce1921c879a74bec
diff --git a/dev-python/oscrypto/files/openssl-3.0.10-fix.patch b/dev-python/oscrypto/files/openssl-3.0.10-fix.patch
deleted file mode 100644
index a1c2e44c41fb..000000000000
--- a/dev-python/oscrypto/files/openssl-3.0.10-fix.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From ebbc944485b278192b60080ea1f495e287efb4f8 Mon Sep 17 00:00:00 2001
-From: Martin Journois <BibMartin@users.noreply.github.com>
-Date: Thu, 17 Aug 2023 13:09:31 +0200
-Subject: [PATCH] MJ: Fix #75 bug with openssl 3.0.10 (#76)
-
-* MJ: Fix #75 bug with openssl 3.0.10
-* MJ: Add fix suggested by @vcunat on _libcrypto_ctypes regex
----
- oscrypto/_openssl/_libcrypto_cffi.py | 2 +-
- oscrypto/_openssl/_libcrypto_ctypes.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/oscrypto/_openssl/_libcrypto_cffi.py b/oscrypto/_openssl/_libcrypto_cffi.py
-index 8aed03e..14eb576 100644
---- a/oscrypto/_openssl/_libcrypto_cffi.py
-+++ b/oscrypto/_openssl/_libcrypto_cffi.py
-@@ -37,7 +37,7 @@
-
- is_libressl = 'LibreSSL' in version_string
-
--version_match = re.search('\\b(\\d\\.\\d\\.\\d[a-z]*)\\b', version_string)
-+version_match = re.search('\\b(\\d\\.\\d\\.\\d+[a-z]*)\\b', version_string)
- if not version_match:
- version_match = re.search('(?<=LibreSSL )(\\d\\.\\d(\\.\\d)?)\\b', version_string)
- if not version_match:
-diff --git a/oscrypto/_openssl/_libcrypto_ctypes.py b/oscrypto/_openssl/_libcrypto_ctypes.py
-index e33ebbc..9cb294a 100644
---- a/oscrypto/_openssl/_libcrypto_ctypes.py
-+++ b/oscrypto/_openssl/_libcrypto_ctypes.py
-@@ -40,7 +40,7 @@
-
- is_libressl = 'LibreSSL' in version_string
-
--version_match = re.search('\\b(\\d\\.\\d\\.\\d[a-z]*)\\b', version_string)
-+version_match = re.search('\\b(\\d\\.\\d\\.\\d+[a-z]*)\\b', version_string)
- if not version_match:
- version_match = re.search('(?<=LibreSSL )(\\d\\.\\d(\\.\\d)?)\\b', version_string)
- if not version_match:
diff --git a/dev-python/oscrypto/files/py3.12.patch b/dev-python/oscrypto/files/py3.12.patch
deleted file mode 100644
index 0bb8cb0cda02..000000000000
--- a/dev-python/oscrypto/files/py3.12.patch
+++ /dev/null
@@ -1,902 +0,0 @@
-From 3be536e4a61ac5fbd403ee80cdb54cb666f34679 Mon Sep 17 00:00:00 2001
-From: Dominik 'Rathann' Mierzejewski <dominik@greysector.net>
-Date: Thu, 17 Aug 2023 09:05:29 +0200
-Subject: [PATCH 01/13] use `importlib` instead of deprecated `imp` module
-
-This fixes tests with python 3.12 where the `imp` module was
-[removed](https://docs.python.org/3.12/whatsnew/3.12.html#removed).
-
-This should fix issue #74.
----
- tests/__init__.py | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 4c65360..90bede4 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -1,7 +1,7 @@
- # coding: utf-8
- from __future__ import unicode_literals, division, absolute_import, print_function
-
--import imp
-+import importlib
- import os
- import unittest
-
-@@ -94,8 +94,7 @@ def _import_from(mod, path, mod_dir=None):
- return None
-
- try:
-- mod_info = imp.find_module(mod_dir, [path])
-- return imp.load_module(mod, *mod_info)
-+ return importlib.import_module(mod)
- except ImportError:
- return None
-
-
-From 199f07eefb9c0d1d5ad8093c012fbdae1fefa633 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Thu, 17 Aug 2023 07:14:40 -0400
-Subject: [PATCH 02/13] Fix compatibility with Python 2.6
-
----
- tests/__init__.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 90bede4..3ca9334 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -1,10 +1,15 @@
- # coding: utf-8
- from __future__ import unicode_literals, division, absolute_import, print_function
-
--import importlib
- import os
-+import sys
- import unittest
-
-+if sys.version_info < (3,):
-+ import imp as importlib
-+else:
-+ import importlib
-+
-
- __version__ = '1.3.0'
- __version_info__ = (1, 3, 0)
-
-From 19de26bdad3154dc30c6661b652c459438fa9be2 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Thu, 17 Aug 2023 07:25:49 -0400
-Subject: [PATCH 03/13] Fix both imp and importlib implementations
-
----
- tests/__init__.py | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 3ca9334..7aab84d 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -6,7 +6,7 @@
- import unittest
-
- if sys.version_info < (3,):
-- import imp as importlib
-+ import imp
- else:
- import importlib
-
-@@ -99,7 +99,12 @@ def _import_from(mod, path, mod_dir=None):
- return None
-
- try:
-- return importlib.import_module(mod)
-+ if sys.version_info < (3,):
-+ mod_info = imp.find_module(mod_dir, [path])
-+ return imp.load_module(mod, *mod_info)
-+ else:
-+ mod_info = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
-+ return importlib.import_module(mod, *mod_info)
- except ImportError:
- return None
-
-
-From 6973b915069babf665bc223979cd86b2dc262da4 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Thu, 17 Aug 2023 07:34:37 -0400
-Subject: [PATCH 04/13] More importlib fixes
-
----
- tests/__init__.py | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 7aab84d..957c083 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -103,8 +103,10 @@ def _import_from(mod, path, mod_dir=None):
- mod_info = imp.find_module(mod_dir, [path])
- return imp.load_module(mod, *mod_info)
- else:
-- mod_info = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
-- return importlib.import_module(mod, *mod_info)
-+ spec = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
-+ module = importlib.util.module_from_spec(spec)
-+ sys.modules[mod] = module
-+ spec.loader.exec_module(module)
- except ImportError:
- return None
-
-
-From 8843c89acae8435a7ba731b42750e42caef87a70 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Thu, 17 Aug 2023 07:35:40 -0400
-Subject: [PATCH 05/13] Python 3.3 has a different importlib implementation
-
----
- tests/__init__.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 957c083..8339b5d 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -5,7 +5,7 @@
- import sys
- import unittest
-
--if sys.version_info < (3,):
-+if sys.version_info < (3, 5):
- import imp
- else:
- import importlib
-@@ -99,7 +99,7 @@ def _import_from(mod, path, mod_dir=None):
- return None
-
- try:
-- if sys.version_info < (3,):
-+ if sys.version_info < (3, 5):
- mod_info = imp.find_module(mod_dir, [path])
- return imp.load_module(mod, *mod_info)
- else:
-
-From 53fa3ca263ad6bc04e4a8a56f180b82bdc88aa03 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Thu, 17 Aug 2023 08:22:21 -0400
-Subject: [PATCH 06/13] Attempt a different importlib implementation
-
----
- tests/__init__.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 8339b5d..0eecf2f 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -103,7 +103,12 @@ def _import_from(mod, path, mod_dir=None):
- mod_info = imp.find_module(mod_dir, [path])
- return imp.load_module(mod, *mod_info)
- else:
-- spec = importlib.machinery.PathFinder().find_spec(mod_dir, [path])
-+ loader_details = (
-+ importlib.machinery.SourceFileLoader,
-+ importlib.machinery.SOURCE_SUFFIXES
-+ )
-+ finder = importlib.machinery.FileFinder(path, loader_details)
-+ spec = finder.find_spec(mod_dir)
- module = importlib.util.module_from_spec(spec)
- sys.modules[mod] = module
- spec.loader.exec_module(module)
-
-From b013e440061c88dfe0301309b695c7b47bcc1e72 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Thu, 17 Aug 2023 15:52:30 -0400
-Subject: [PATCH 07/13] Hopefully some fully working Python 3.12-compatible
- import backflips
-
----
- dev/_import.py | 35 ++++++++++++++++++++++++++++++++---
- tests/__init__.py | 4 ++++
- 2 files changed, 36 insertions(+), 3 deletions(-)
-
-diff --git a/dev/_import.py b/dev/_import.py
-index d64c028..016c576 100644
---- a/dev/_import.py
-+++ b/dev/_import.py
-@@ -1,12 +1,19 @@
- # coding: utf-8
- from __future__ import unicode_literals, division, absolute_import, print_function
-
--import imp
- import sys
- import os
-
- from . import build_root, package_name, package_root
-
-+if sys.version_info < (3, 5):
-+ import imp
-+else:
-+ import importlib
-+ import importlib.machinery
-+ import importlib.util
-+
-+
- if sys.version_info < (3,):
- getcwd = os.getcwdu
- else:
-@@ -34,6 +41,14 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
- None if not loaded, otherwise the module
- """
-
-+ if mod in sys.modules:
-+ return sys.modules[mod]
-+
-+ if mod_dir is None:
-+ full_mod = mod
-+ else:
-+ full_mod = mod_dir
-+
- if mod_dir is None:
- mod_dir = mod.replace('.', os.sep)
-
-@@ -49,8 +64,22 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
- path = os.path.join(path, append)
-
- try:
-- mod_info = imp.find_module(mod_dir, [path])
-- return imp.load_module(mod, *mod_info)
-+ if sys.version_info < (3, 5):
-+ mod_info = imp.find_module(mod_dir, [path])
-+ return imp.load_module(mod, *mod_info)
-+
-+ else:
-+ loader_details = (
-+ importlib.machinery.SourceFileLoader,
-+ importlib.machinery.SOURCE_SUFFIXES
-+ )
-+ finder = importlib.machinery.FileFinder(path, loader_details)
-+ spec = finder.find_spec(full_mod)
-+ module = importlib.util.module_from_spec(spec)
-+ sys.modules[mod] = module
-+ spec.loader.exec_module(module)
-+ return module
-+
- except ImportError:
- if allow_error:
- raise
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 0eecf2f..9759ae3 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -89,6 +89,9 @@ def _import_from(mod, path, mod_dir=None):
- None if not loaded, otherwise the module
- """
-
-+ if mod in sys.modules:
-+ return sys.modules[mod]
-+
- if mod_dir is None:
- mod_dir = mod
-
-@@ -112,6 +115,7 @@ def _import_from(mod, path, mod_dir=None):
- module = importlib.util.module_from_spec(spec)
- sys.modules[mod] = module
- spec.loader.exec_module(module)
-+ return module
- except ImportError:
- return None
-
-
-From 8ec71631b5adf6f6ab34c7cc3fe8e229a2bdcbd7 Mon Sep 17 00:00:00 2001
-From: Dominik Mierzejewski <dominik@greysector.net>
-Date: Fri, 18 Aug 2023 11:18:06 +0200
-Subject: [PATCH 08/13] Use importlib with python 3.5+
-
-This fixes `python run.py ci` under python 3.12.
----
- dev/coverage.py | 21 ++++++++++++++++++---
- 1 file changed, 18 insertions(+), 3 deletions(-)
-
-diff --git a/dev/coverage.py b/dev/coverage.py
-index bb99a4f..6e669fe 100644
---- a/dev/coverage.py
-+++ b/dev/coverage.py
-@@ -4,7 +4,6 @@
- import cgi
- import codecs
- import coverage
--import imp
- import json
- import os
- import unittest
-@@ -33,6 +32,11 @@
- else:
- Pattern = re.Pattern
-
-+if sys.version_info < (3, 5):
-+ import imp
-+else:
-+ import importlib
-+
-
- def run(ci=False):
- """
-@@ -103,8 +107,19 @@ def _load_package_tests(name):
- if not os.path.exists(package_dir):
- return []
-
-- tests_module_info = imp.find_module('tests', [package_dir])
-- tests_module = imp.load_module('%s.tests' % name, *tests_module_info)
-+ if sys.version_info < (3, 5):
-+ tests_module_info = imp.find_module('tests', [package_dir])
-+ tests_module = imp.load_module('%s.tests' % name, *tests_module_info)
-+ else:
-+ loader_details = (
-+ importlib.machinery.SourceFileLoader,
-+ importlib.machinery.SOURCE_SUFFIXES
-+ )
-+ finder = importlib.machinery.FileFinder(package_dir, loader_details)
-+ spec = finder.find_spec('tests')
-+ test_module = importlib.util.module_from_spec(spec)
-+ sys.modules['%s.tests' % name] = test_module
-+ spec.loader.exec_module(test_module)
- return tests_module.test_classes()
-
-
-
-From 23d848a500413847a63df740af543e0fdaba5558 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Tue, 22 Aug 2023 06:56:36 -0400
-Subject: [PATCH 09/13] Reuse _import_from in coverage task, fixing module name
-
----
- dev/coverage.py | 21 ++-------------------
- 1 file changed, 2 insertions(+), 19 deletions(-)
-
-diff --git a/dev/coverage.py b/dev/coverage.py
-index 6e669fe..00684d0 100644
---- a/dev/coverage.py
-+++ b/dev/coverage.py
-@@ -16,6 +16,7 @@
- from fnmatch import fnmatch
-
- from . import package_name, package_root, other_packages
-+from ._import import _import_from
-
- if sys.version_info < (3,):
- str_cls = unicode # noqa
-@@ -32,11 +33,6 @@
- else:
- Pattern = re.Pattern
-
--if sys.version_info < (3, 5):
-- import imp
--else:
-- import importlib
--
-
- def run(ci=False):
- """
-@@ -107,20 +103,7 @@ def _load_package_tests(name):
- if not os.path.exists(package_dir):
- return []
-
-- if sys.version_info < (3, 5):
-- tests_module_info = imp.find_module('tests', [package_dir])
-- tests_module = imp.load_module('%s.tests' % name, *tests_module_info)
-- else:
-- loader_details = (
-- importlib.machinery.SourceFileLoader,
-- importlib.machinery.SOURCE_SUFFIXES
-- )
-- finder = importlib.machinery.FileFinder(package_dir, loader_details)
-- spec = finder.find_spec('tests')
-- test_module = importlib.util.module_from_spec(spec)
-- sys.modules['%s.tests' % name] = test_module
-- spec.loader.exec_module(test_module)
-- return tests_module.test_classes()
-+ return _import_from('%s.tests' % name, package_dir, 'tests').test_classes()
-
-
- def _env_info():
-
-From 9941d3b96e8aa08622d00954d89005dcf6e94b94 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Tue, 22 Aug 2023 07:03:26 -0400
-Subject: [PATCH 10/13] Factor out remaining usage of imp module
-
----
- dev/build.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/dev/build.py b/dev/build.py
-index 4899594..f429fee 100644
---- a/dev/build.py
-+++ b/dev/build.py
-@@ -1,7 +1,6 @@
- # coding: utf-8
- from __future__ import unicode_literals, division, absolute_import, print_function
-
--import imp
- import os
- import tarfile
- import zipfile
-@@ -9,6 +8,7 @@
- import setuptools.sandbox
-
- from . import package_root, package_name, has_tests_package
-+from ._import import _import_from
-
-
- def _list_zip(filename):
-@@ -45,8 +45,8 @@ def run():
-
- # Trying to call setuptools.sandbox.run_setup(setup, ['--version'])
- # resulted in a segfault, so we do this instead
-- module_info = imp.find_module('version', [os.path.join(package_root, package_name)])
-- version_mod = imp.load_module('%s.version' % package_name, *module_info)
-+ package_dir = os.path.join(package_root, package_name)
-+ version_mod = _import_from('%s.version' % package_name, package_dir, 'version')
-
- pkg_name_info = (package_name, version_mod.__version__)
- print('Building %s-%s' % pkg_name_info)
-
-From 799aa0d2f4a954d3fc120ab382c8dd4322758654 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Tue, 22 Aug 2023 16:29:39 -0400
-Subject: [PATCH 11/13] Rewrite importlib import mechanism
-
----
- dev/_import.py | 69 ++++++++++++++++++++++++++++++++---------
- tests/__init__.py | 79 ++++++++++++++++++++++++++++++++++++++++-------
- 2 files changed, 122 insertions(+), 26 deletions(-)
-
-diff --git a/dev/_import.py b/dev/_import.py
-index 016c576..20720e7 100644
---- a/dev/_import.py
-+++ b/dev/_import.py
-@@ -10,7 +10,7 @@
- import imp
- else:
- import importlib
-- import importlib.machinery
-+ import importlib.abc
- import importlib.util
-
-
-@@ -20,6 +20,48 @@
- getcwd = os.getcwd
-
-
-+class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
-+ def setup(self):
-+ self.modules = {}
-+ sys.meta_path.insert(0, self)
-+
-+ def add_module(self, package_name, package_path):
-+ if package_name not in self.modules:
-+ self.modules[package_name] = package_path
-+
-+ def find_spec(self, fullname, path, target=None):
-+ name_parts = fullname.split('.')
-+ if name_parts[0] not in self.modules:
-+ return None
-+
-+ package = name_parts[0]
-+ package_path = self.modules[package]
-+
-+ fullpath = os.path.join(package_path, *name_parts[1:])
-+
-+ if os.path.isdir(fullpath):
-+ filename = os.path.join(fullpath, "__init__.py")
-+ submodule_locations = [fullpath]
-+ else:
-+ filename = fullpath + ".py"
-+ submodule_locations = None
-+
-+ if not os.path.exists(filename):
-+ return None
-+
-+ return importlib.util.spec_from_file_location(
-+ fullname,
-+ filename,
-+ loader=None,
-+ submodule_search_locations=submodule_locations
-+ )
-+
-+
-+if sys.version_info >= (3, 5):
-+ CUSTOM_FINDER = ModCryptoMetaFinder()
-+ CUSTOM_FINDER.setup()
-+
-+
- def _import_from(mod, path, mod_dir=None, allow_error=False):
- """
- Imports a module from a specific path
-@@ -47,7 +89,7 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
- if mod_dir is None:
- full_mod = mod
- else:
-- full_mod = mod_dir
-+ full_mod = mod_dir.replace(os.sep, '.')
-
- if mod_dir is None:
- mod_dir = mod.replace('.', os.sep)
-@@ -55,8 +97,11 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
- if not os.path.exists(path):
- return None
-
-- if not os.path.exists(os.path.join(path, mod_dir)) \
-- and not os.path.exists(os.path.join(path, mod_dir + '.py')):
-+ source_path = os.path.join(path, mod_dir, '__init__.py')
-+ if not os.path.exists(source_path):
-+ source_path = os.path.join(path, mod_dir + '.py')
-+
-+ if not os.path.exists(source_path):
- return None
-
- if os.sep in mod_dir:
-@@ -69,16 +114,12 @@ def _import_from(mod, path, mod_dir=None, allow_error=False):
- return imp.load_module(mod, *mod_info)
-
- else:
-- loader_details = (
-- importlib.machinery.SourceFileLoader,
-- importlib.machinery.SOURCE_SUFFIXES
-- )
-- finder = importlib.machinery.FileFinder(path, loader_details)
-- spec = finder.find_spec(full_mod)
-- module = importlib.util.module_from_spec(spec)
-- sys.modules[mod] = module
-- spec.loader.exec_module(module)
-- return module
-+ package = mod.split('.', 1)[0]
-+ package_dir = full_mod.split('.', 1)[0]
-+ package_path = os.path.join(path, package_dir)
-+ CUSTOM_FINDER.add_module(package, package_path)
-+
-+ return importlib.import_module(mod)
-
- except ImportError:
- if allow_error:
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 9759ae3..2e24046 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -9,6 +9,8 @@
- import imp
- else:
- import importlib
-+ import importlib.abc
-+ import importlib.util
-
-
- __version__ = '1.3.0'
-@@ -71,6 +73,48 @@ def local_oscrypto():
- return (_asn1crypto_module, _oscrypto_module)
-
-
-+class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
-+ def setup(self):
-+ self.modules = {}
-+ sys.meta_path.insert(0, self)
-+
-+ def add_module(self, package_name, package_path):
-+ if package_name not in self.modules:
-+ self.modules[package_name] = package_path
-+
-+ def find_spec(self, fullname, path, target=None):
-+ name_parts = fullname.split('.')
-+ if name_parts[0] not in self.modules:
-+ return None
-+
-+ package = name_parts[0]
-+ package_path = self.modules[package]
-+
-+ fullpath = os.path.join(package_path, *name_parts[1:])
-+
-+ if os.path.isdir(fullpath):
-+ filename = os.path.join(fullpath, "__init__.py")
-+ submodule_locations = [fullpath]
-+ else:
-+ filename = fullpath + ".py"
-+ submodule_locations = None
-+
-+ if not os.path.exists(filename):
-+ return None
-+
-+ return importlib.util.spec_from_file_location(
-+ fullname,
-+ filename,
-+ loader=None,
-+ submodule_search_locations=submodule_locations
-+ )
-+
-+
-+if sys.version_info >= (3, 5):
-+ CUSTOM_FINDER = ModCryptoMetaFinder()
-+ CUSTOM_FINDER.setup()
-+
-+
- def _import_from(mod, path, mod_dir=None):
- """
- Imports a module from a specific path
-@@ -93,29 +137,40 @@ def _import_from(mod, path, mod_dir=None):
- return sys.modules[mod]
-
- if mod_dir is None:
-- mod_dir = mod
-+ full_mod = mod
-+ else:
-+ full_mod = mod_dir.replace(os.sep, '.')
-+
-+ if mod_dir is None:
-+ mod_dir = mod.replace('.', os.sep)
-
- if not os.path.exists(path):
- return None
-
-- if not os.path.exists(os.path.join(path, mod_dir)):
-+ source_path = os.path.join(path, mod_dir, '__init__.py')
-+ if not os.path.exists(source_path):
-+ source_path = os.path.join(path, mod_dir + '.py')
-+
-+ if not os.path.exists(source_path):
- return None
-
-+ if os.sep in mod_dir:
-+ append, mod_dir = mod_dir.rsplit(os.sep, 1)
-+ path = os.path.join(path, append)
-+
- try:
- if sys.version_info < (3, 5):
- mod_info = imp.find_module(mod_dir, [path])
- return imp.load_module(mod, *mod_info)
-+
- else:
-- loader_details = (
-- importlib.machinery.SourceFileLoader,
-- importlib.machinery.SOURCE_SUFFIXES
-- )
-- finder = importlib.machinery.FileFinder(path, loader_details)
-- spec = finder.find_spec(mod_dir)
-- module = importlib.util.module_from_spec(spec)
-- sys.modules[mod] = module
-- spec.loader.exec_module(module)
-- return module
-+ package = mod.split('.', 1)[0]
-+ package_dir = full_mod.split('.', 1)[0]
-+ package_path = os.path.join(path, package_dir)
-+ CUSTOM_FINDER.add_module(package, package_path)
-+
-+ return importlib.import_module(mod)
-+
- except ImportError:
- return None
-
-
-From 8a588fa0223f08f817e702f7f2cc4ef81017af26 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Tue, 22 Aug 2023 16:35:17 -0400
-Subject: [PATCH 12/13] Fix custom importlib code for Python < 3.5
-
----
- dev/_import.py | 73 +++++++++++++++++++++++------------------------
- tests/__init__.py | 58 ++++++++++++++++++-------------------
- 2 files changed, 65 insertions(+), 66 deletions(-)
-
-diff --git a/dev/_import.py b/dev/_import.py
-index 20720e7..2d016db 100644
---- a/dev/_import.py
-+++ b/dev/_import.py
-@@ -19,45 +19,44 @@
- else:
- getcwd = os.getcwd
-
--
--class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
-- def setup(self):
-- self.modules = {}
-- sys.meta_path.insert(0, self)
--
-- def add_module(self, package_name, package_path):
-- if package_name not in self.modules:
-- self.modules[package_name] = package_path
--
-- def find_spec(self, fullname, path, target=None):
-- name_parts = fullname.split('.')
-- if name_parts[0] not in self.modules:
-- return None
--
-- package = name_parts[0]
-- package_path = self.modules[package]
--
-- fullpath = os.path.join(package_path, *name_parts[1:])
--
-- if os.path.isdir(fullpath):
-- filename = os.path.join(fullpath, "__init__.py")
-- submodule_locations = [fullpath]
-- else:
-- filename = fullpath + ".py"
-- submodule_locations = None
--
-- if not os.path.exists(filename):
-- return None
--
-- return importlib.util.spec_from_file_location(
-- fullname,
-- filename,
-- loader=None,
-- submodule_search_locations=submodule_locations
-- )
-+if sys.version_info >= (3, 5):
-+ class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
-+ def setup(self):
-+ self.modules = {}
-+ sys.meta_path.insert(0, self)
-+
-+ def add_module(self, package_name, package_path):
-+ if package_name not in self.modules:
-+ self.modules[package_name] = package_path
-+
-+ def find_spec(self, fullname, path, target=None):
-+ name_parts = fullname.split('.')
-+ if name_parts[0] not in self.modules:
-+ return None
-+
-+ package = name_parts[0]
-+ package_path = self.modules[package]
-+
-+ fullpath = os.path.join(package_path, *name_parts[1:])
-+
-+ if os.path.isdir(fullpath):
-+ filename = os.path.join(fullpath, "__init__.py")
-+ submodule_locations = [fullpath]
-+ else:
-+ filename = fullpath + ".py"
-+ submodule_locations = None
-+
-+ if not os.path.exists(filename):
-+ return None
-+
-+ return importlib.util.spec_from_file_location(
-+ fullname,
-+ filename,
-+ loader=None,
-+ submodule_search_locations=submodule_locations
-+ )
-
-
--if sys.version_info >= (3, 5):
- CUSTOM_FINDER = ModCryptoMetaFinder()
- CUSTOM_FINDER.setup()
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 2e24046..e1e92e6 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -73,44 +73,44 @@ def local_oscrypto():
- return (_asn1crypto_module, _oscrypto_module)
-
-
--class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
-- def setup(self):
-- self.modules = {}
-- sys.meta_path.insert(0, self)
-+if sys.version_info >= (3, 5):
-+ class ModCryptoMetaFinder(importlib.abc.MetaPathFinder):
-+ def setup(self):
-+ self.modules = {}
-+ sys.meta_path.insert(0, self)
-
-- def add_module(self, package_name, package_path):
-- if package_name not in self.modules:
-- self.modules[package_name] = package_path
-+ def add_module(self, package_name, package_path):
-+ if package_name not in self.modules:
-+ self.modules[package_name] = package_path
-
-- def find_spec(self, fullname, path, target=None):
-- name_parts = fullname.split('.')
-- if name_parts[0] not in self.modules:
-- return None
-+ def find_spec(self, fullname, path, target=None):
-+ name_parts = fullname.split('.')
-+ if name_parts[0] not in self.modules:
-+ return None
-
-- package = name_parts[0]
-- package_path = self.modules[package]
-+ package = name_parts[0]
-+ package_path = self.modules[package]
-
-- fullpath = os.path.join(package_path, *name_parts[1:])
-+ fullpath = os.path.join(package_path, *name_parts[1:])
-
-- if os.path.isdir(fullpath):
-- filename = os.path.join(fullpath, "__init__.py")
-- submodule_locations = [fullpath]
-- else:
-- filename = fullpath + ".py"
-- submodule_locations = None
-+ if os.path.isdir(fullpath):
-+ filename = os.path.join(fullpath, "__init__.py")
-+ submodule_locations = [fullpath]
-+ else:
-+ filename = fullpath + ".py"
-+ submodule_locations = None
-
-- if not os.path.exists(filename):
-- return None
-+ if not os.path.exists(filename):
-+ return None
-
-- return importlib.util.spec_from_file_location(
-- fullname,
-- filename,
-- loader=None,
-- submodule_search_locations=submodule_locations
-- )
-+ return importlib.util.spec_from_file_location(
-+ fullname,
-+ filename,
-+ loader=None,
-+ submodule_search_locations=submodule_locations
-+ )
-
-
--if sys.version_info >= (3, 5):
- CUSTOM_FINDER = ModCryptoMetaFinder()
- CUSTOM_FINDER.setup()
-
-
-From d9f8e2ff88e722e3af6bf592c097298505a40381 Mon Sep 17 00:00:00 2001
-From: wbond <will@wbond.net>
-Date: Tue, 22 Aug 2023 16:45:45 -0400
-Subject: [PATCH 13/13] Fix test loading
-
----
- dev/_import.py | 1 -
- dev/coverage.py | 2 +-
- tests/__init__.py | 1 -
- 3 files changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/dev/_import.py b/dev/_import.py
-index 2d016db..c0a1983 100644
---- a/dev/_import.py
-+++ b/dev/_import.py
-@@ -56,7 +56,6 @@ def find_spec(self, fullname, path, target=None):
- submodule_search_locations=submodule_locations
- )
-
--
- CUSTOM_FINDER = ModCryptoMetaFinder()
- CUSTOM_FINDER.setup()
-
-diff --git a/dev/coverage.py b/dev/coverage.py
-index 00684d0..98f140b 100644
---- a/dev/coverage.py
-+++ b/dev/coverage.py
-@@ -103,7 +103,7 @@ def _load_package_tests(name):
- if not os.path.exists(package_dir):
- return []
-
-- return _import_from('%s.tests' % name, package_dir, 'tests').test_classes()
-+ return _import_from('%s_tests' % name, package_dir, 'tests').test_classes()
-
-
- def _env_info():
-diff --git a/tests/__init__.py b/tests/__init__.py
-index e1e92e6..3ae721d 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -110,7 +110,6 @@ def find_spec(self, fullname, path, target=None):
- submodule_search_locations=submodule_locations
- )
-
--
- CUSTOM_FINDER = ModCryptoMetaFinder()
- CUSTOM_FINDER.setup()
-
diff --git a/dev-python/oscrypto/metadata.xml b/dev-python/oscrypto/metadata.xml
deleted file mode 100644
index 70b387f1f27a..000000000000
--- a/dev-python/oscrypto/metadata.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
- <!-- maintainer-needed -->
- <upstream>
- <remote-id type="github">wbond/oscrypto</remote-id>
- <remote-id type="pypi">oscrypto</remote-id>
- </upstream>
-</pkgmetadata>
diff --git a/dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild b/dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild
deleted file mode 100644
index e9b43ccae20e..000000000000
--- a/dev-python/oscrypto/oscrypto-1.3.0-r2.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{13..14} )
-DISTUTILS_USE_PEP517=setuptools
-inherit edo distutils-r1 optfeature
-
-DESCRIPTION="TLS sockets, key generation, encryption, decryption, signing, verification"
-HOMEPAGE="
- https://pypi.org/project/oscrypto/
- https://github.com/wbond/oscrypto
-"
-SRC_URI="https://github.com/wbond/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RDEPEND="
- dev-libs/openssl
- >=dev-python/asn1crypto-1.5.1[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- $(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*')
- )
-"
-
-DOCS=( docs {changelog,readme}.md )
-
-PATCHES=(
- "${FILESDIR}"/openssl-3.0.10-fix.patch
- "${FILESDIR}"/py3.12.patch
-)
-
-distutils_enable_tests unittest
-
-python_test() {
- local -x OSCRYPTO_SKIP_INTERNET_TESTS="true"
- edo ${EPYTHON} -m tests
-}
-
-pkg_postinst() {
- optfeature "faster FFI" virtual/python-cffi
-}