pydepinject 0.0.1.dev1__tar.gz → 0.0.1.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/MANIFEST.in +1 -1
- {pydepinject-0.0.1.dev1/src/pydepinject.egg-info → pydepinject-0.0.1.dev2}/PKG-INFO +3 -1
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/pyproject.toml +7 -1
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/pydepinject/__init__.py +30 -14
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2/src/pydepinject.egg-info}/PKG-INFO +3 -1
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/pydepinject.egg-info/requires.txt +2 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/LICENSE +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/Readme.md +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/setup.cfg +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/pydepinject.egg-info/SOURCES.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/pydepinject.egg-info/dependency_links.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/pydepinject.egg-info/top_level.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/PKG-INFO +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/SOURCES.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/dependency_links.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/requires.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/top_level.txt +0 -0
- {pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/tests/test_pydepinject.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pydepinject
|
|
3
|
-
Version: 0.0.1.
|
|
3
|
+
Version: 0.0.1.dev2
|
|
4
4
|
Summary: A package to dynamically inject requirements into a virtual environment.
|
|
5
5
|
Author: pydepinject
|
|
6
6
|
License: MIT
|
|
@@ -21,6 +21,7 @@ Classifier: Typing :: Typed
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
License-File: LICENSE
|
|
24
|
+
Requires-Dist: packaging~=22.0
|
|
24
25
|
Provides-Extra: lint
|
|
25
26
|
Requires-Dist: ruff==0.4.7; extra == "lint"
|
|
26
27
|
Requires-Dist: pyright==1.1.365; extra == "lint"
|
|
@@ -28,6 +29,7 @@ Requires-Dist: isort==5.13.2; extra == "lint"
|
|
|
28
29
|
Provides-Extra: test
|
|
29
30
|
Requires-Dist: pytest==8.2.1; extra == "test"
|
|
30
31
|
Requires-Dist: pytest-cov==5.0.0; extra == "test"
|
|
32
|
+
Requires-Dist: pytest-xdist==3.6.1; extra == "test"
|
|
31
33
|
Provides-Extra: build
|
|
32
34
|
Requires-Dist: check-manifest==0.49; extra == "build"
|
|
33
35
|
Requires-Dist: build==1.2.1; extra == "build"
|
|
@@ -15,6 +15,9 @@ authors = [
|
|
|
15
15
|
license = { text="MIT" }
|
|
16
16
|
keywords = ["virtualenv", "requirements", "dependency management"]
|
|
17
17
|
requires-python = ">=3.9"
|
|
18
|
+
dependencies = [
|
|
19
|
+
"packaging~=22.0",
|
|
20
|
+
]
|
|
18
21
|
classifiers = [
|
|
19
22
|
"Development Status :: 4 - Beta",
|
|
20
23
|
"Intended Audience :: Developers",
|
|
@@ -42,6 +45,7 @@ lint = [
|
|
|
42
45
|
test = [
|
|
43
46
|
"pytest==8.2.1",
|
|
44
47
|
"pytest-cov==5.0.0",
|
|
48
|
+
"pytest-xdist==3.6.1",
|
|
45
49
|
]
|
|
46
50
|
build = [
|
|
47
51
|
"check-manifest==0.49",
|
|
@@ -62,7 +66,8 @@ log_level = "DEBUG"
|
|
|
62
66
|
|
|
63
67
|
[tool.pytest.ini_options]
|
|
64
68
|
pythonpath = "src"
|
|
65
|
-
|
|
69
|
+
addopts = "--durations=10 -n auto"
|
|
70
|
+
# Estimated test times: 74s with auto (2), 76s with 6 workers, 113se with no workers.
|
|
66
71
|
|
|
67
72
|
[tool.ruff]
|
|
68
73
|
preview = true
|
|
@@ -130,3 +135,4 @@ twine = {version = "5.1.0"}
|
|
|
130
135
|
|
|
131
136
|
[tool.custom.ci]
|
|
132
137
|
python_versions = ["3.9", "3.10", "3.11", "3.12"]
|
|
138
|
+
packaging_versions = ["22", "23", "24"]
|
|
@@ -18,7 +18,7 @@ if typing.TYPE_CHECKING:
|
|
|
18
18
|
from typing import Any
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
VERSION = "0.0.
|
|
21
|
+
VERSION = "0.0.1dev2"
|
|
22
22
|
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
24
24
|
logger.setLevel(logging.DEBUG)
|
|
@@ -31,25 +31,41 @@ logger.debug("VENV_ROOT: %s", VENV_ROOT)
|
|
|
31
31
|
def is_requirements_satisfied(*packages: str):
|
|
32
32
|
"""Check if the requirements are already satisfied. Return None if it cannot be determined."""
|
|
33
33
|
try:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
import
|
|
34
|
+
from importlib.metadata import PackageNotFoundError, distribution
|
|
35
|
+
|
|
36
|
+
from packaging.requirements import Requirement
|
|
37
37
|
except ImportError:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
try:
|
|
39
|
+
from importlib.metadata import PackageNotFoundError, distribution
|
|
40
|
+
|
|
41
|
+
from packaging.requirements import Requirement
|
|
42
|
+
except ImportError:
|
|
43
|
+
logger.warning(
|
|
44
|
+
"importlib.metadata and packaging not found. Cannot check if requirements are satisfied."
|
|
45
|
+
)
|
|
46
|
+
return None
|
|
42
47
|
|
|
43
48
|
try:
|
|
44
49
|
for package in packages:
|
|
45
50
|
logger.debug("Checking package: %s", package)
|
|
46
|
-
req =
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
req = Requirement(package)
|
|
52
|
+
try:
|
|
53
|
+
dist = distribution(req.name)
|
|
54
|
+
if dist.version not in req.specifier:
|
|
55
|
+
logger.debug(
|
|
56
|
+
"Requirement %s is not satisfied. Version conflict.", package
|
|
57
|
+
)
|
|
58
|
+
return False
|
|
59
|
+
logger.debug("Requirement %s is satisfied", package)
|
|
60
|
+
except PackageNotFoundError:
|
|
61
|
+
logger.debug(
|
|
62
|
+
"Requirement %s is not satisfied. Distribution not found.", package
|
|
63
|
+
)
|
|
64
|
+
return False
|
|
49
65
|
return True
|
|
50
|
-
except
|
|
51
|
-
logger.
|
|
52
|
-
return
|
|
66
|
+
except Exception as e:
|
|
67
|
+
logger.warning("An error occurred while checking requirements: %s", str(e))
|
|
68
|
+
return None
|
|
53
69
|
|
|
54
70
|
|
|
55
71
|
class RequirementManager:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pydepinject
|
|
3
|
-
Version: 0.0.1.
|
|
3
|
+
Version: 0.0.1.dev2
|
|
4
4
|
Summary: A package to dynamically inject requirements into a virtual environment.
|
|
5
5
|
Author: pydepinject
|
|
6
6
|
License: MIT
|
|
@@ -21,6 +21,7 @@ Classifier: Typing :: Typed
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
License-File: LICENSE
|
|
24
|
+
Requires-Dist: packaging~=22.0
|
|
24
25
|
Provides-Extra: lint
|
|
25
26
|
Requires-Dist: ruff==0.4.7; extra == "lint"
|
|
26
27
|
Requires-Dist: pyright==1.1.365; extra == "lint"
|
|
@@ -28,6 +29,7 @@ Requires-Dist: isort==5.13.2; extra == "lint"
|
|
|
28
29
|
Provides-Extra: test
|
|
29
30
|
Requires-Dist: pytest==8.2.1; extra == "test"
|
|
30
31
|
Requires-Dist: pytest-cov==5.0.0; extra == "test"
|
|
32
|
+
Requires-Dist: pytest-xdist==3.6.1; extra == "test"
|
|
31
33
|
Provides-Extra: build
|
|
32
34
|
Requires-Dist: check-manifest==0.49; extra == "build"
|
|
33
35
|
Requires-Dist: build==1.2.1; extra == "build"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/pydepinject.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/requires.txt
RENAMED
|
File without changes
|
{pydepinject-0.0.1.dev1 → pydepinject-0.0.1.dev2}/src/requirementmanager.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|