pipgrip 0.10.15__tar.gz → 0.11.1__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.
Files changed (44) hide show
  1. {pipgrip-0.10.15/src/pipgrip.egg-info → pipgrip-0.11.1}/PKG-INFO +17 -13
  2. {pipgrip-0.10.15 → pipgrip-0.11.1}/README.md +16 -12
  3. pipgrip-0.11.1/src/pipgrip/_repo_version.py +1 -0
  4. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/cli.py +20 -2
  5. {pipgrip-0.10.15 → pipgrip-0.11.1/src/pipgrip.egg-info}/PKG-INFO +17 -13
  6. pipgrip-0.10.15/src/pipgrip/_repo_version.py +0 -1
  7. {pipgrip-0.10.15 → pipgrip-0.11.1}/LICENSE +0 -0
  8. {pipgrip-0.10.15 → pipgrip-0.11.1}/requirements/prod.txt +0 -0
  9. {pipgrip-0.10.15 → pipgrip-0.11.1}/setup.cfg +0 -0
  10. {pipgrip-0.10.15 → pipgrip-0.11.1}/setup.py +0 -0
  11. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/__init__.py +0 -0
  12. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/compat.py +0 -0
  13. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/__init__.py +0 -0
  14. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/__init__.py +0 -0
  15. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/_compat.py +0 -0
  16. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/assignment.py +0 -0
  17. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/constraint.py +0 -0
  18. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/failure.py +0 -0
  19. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/incompatibility.py +0 -0
  20. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/incompatibility_cause.py +0 -0
  21. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/package.py +0 -0
  22. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/package_source.py +0 -0
  23. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/partial_solution.py +0 -0
  24. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/range.py +0 -0
  25. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/result.py +0 -0
  26. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/set_relation.py +0 -0
  27. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/term.py +0 -0
  28. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/union.py +0 -0
  29. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/mixology/version_solver.py +0 -0
  30. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/__init__.py +0 -0
  31. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/empty_constraint.py +0 -0
  32. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/exceptions.py +0 -0
  33. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/patterns.py +0 -0
  34. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/version.py +0 -0
  35. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/version_constraint.py +0 -0
  36. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/version_range.py +0 -0
  37. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/libs/semver/version_union.py +0 -0
  38. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/package_source.py +0 -0
  39. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip/pipper.py +0 -0
  40. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip.egg-info/SOURCES.txt +0 -0
  41. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip.egg-info/dependency_links.txt +0 -0
  42. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip.egg-info/entry_points.txt +0 -0
  43. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip.egg-info/requires.txt +0 -0
  44. {pipgrip-0.10.15 → pipgrip-0.11.1}/src/pipgrip.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipgrip
3
- Version: 0.10.15
3
+ Version: 0.11.1
4
4
  Summary: Lightweight pip dependency resolver with deptree preview functionality based on the PubGrub algorithm
5
5
  Home-page: https://github.com/ddelange/pipgrip
6
6
  Author: ddelange
@@ -64,7 +64,7 @@ Dynamic: summary
64
64
  [![python](https://img.shields.io/pypi/pyversions/pipgrip.svg?logo=python&logoColor=white)](https://pypi.org/project/pipgrip/)
65
65
  [![downloads](https://static.pepy.tech/badge/pipgrip)](https://pypistats.org/packages/pipgrip)
66
66
 
67
- [pipgrip](https://github.com/ddelange/pipgrip) is a lightweight pip dependency resolver with deptree preview functionality based on the [PubGrub algorithm](https://medium.com/@nex3/pubgrub-2fb6470504f), which is also used by [poetry](https://github.com/python-poetry/poetry). For one or more [PEP 508](https://www.python.org/dev/peps/pep-0508/) dependency specifications, pipgrip recursively fetches/builds the Python wheels necessary for version solving, and optionally renders the full resulting dependency tree.
67
+ [pipgrip](https://github.com/ddelange/pipgrip) is a lightweight pip dependency resolver with deptree preview functionality based on the [PubGrub algorithm](https://medium.com/@nex3/pubgrub-2fb6470504f), which is also used by [poetry](https://github.com/python-poetry/poetry). For one or more [PEP 508](https://www.python.org/dev/peps/pep-0508/) dependency specifications, pipgrip recursively fetches Python wheel metadata necessary for version solving (with fallback to building the wheel if no metadata is available), and optionally renders the full resulting dependency tree.
68
68
 
69
69
  ```
70
70
  $ pipgrip --tree fastapi~=0.94
@@ -123,9 +123,10 @@ Usage: pipgrip [OPTIONS] [DEPENDENCIES]...
123
123
 
124
124
  pipgrip is a lightweight pip dependency resolver with deptree preview
125
125
  functionality based on the PubGrub algorithm, which is also used by poetry. For
126
- one or more PEP 508 dependency specifications, pipgrip recursively
127
- fetches/builds the Python wheels necessary for version solving, and optionally
128
- renders the full resulting dependency tree.
126
+ one or more PEP 508 dependency specifications, pipgrip recursively fetches
127
+ Python wheel metadata necessary for version solving (with fallback to building
128
+ the wheel if no metadata is available), and optionally renders the full
129
+ resulting dependency tree.
129
130
 
130
131
  Options:
131
132
  --install Install full dependency tree after resolving.
@@ -169,6 +170,10 @@ Options:
169
170
  -v, --verbose Control verbosity: -v will print cyclic
170
171
  dependencies (WARNING), -vv will show solving
171
172
  decisions (INFO), -vvv for development (DEBUG).
173
+ --skip-invalid-input Skip invalid requirements (e.g. internal
174
+ repositories, typos) and continue processing other
175
+ dependencies.
176
+ --version Show the version and exit.
172
177
  -h, --help Show this message and exit.
173
178
  ```
174
179
 
@@ -179,14 +184,13 @@ Exhaustive dependency trees without the need to install any packages ([at most b
179
184
  ```
180
185
  $ pipgrip --tree pipgrip
181
186
 
182
- pipgrip (0.10.6)
183
- ├── anytree>=2.4.1 (2.9.0)
184
- │ └── six (1.16.0)
185
- ├── click>=7 (8.1.6)
186
- ├── packaging>=17 (23.1)
187
- ├── pip>=22.2 (23.2.1)
188
- ├── setuptools>=38.3 (68.0.0)
189
- └── wheel (0.41.1)
187
+ pipgrip (0.11.0)
188
+ ├── anytree>=2.4.1 (2.13.0)
189
+ ├── click>=7 (8.3.1)
190
+ ├── packaging>=17 (25.0)
191
+ ├── pip>=22.2 (25.3)
192
+ ├── setuptools<81,>=38.3 (80.9.0)
193
+ └── wheel (0.45.1)
190
194
  ```
191
195
 
192
196
  For more details/further processing, combine `--tree` with `--json` for a detailed nested JSON dependency tree. See also `--tree-ascii` (no unicode tree markers), and `--tree-json` & `--tree-json-exact` (simplified JSON dependency trees).
@@ -7,7 +7,7 @@
7
7
  [![python](https://img.shields.io/pypi/pyversions/pipgrip.svg?logo=python&logoColor=white)](https://pypi.org/project/pipgrip/)
8
8
  [![downloads](https://static.pepy.tech/badge/pipgrip)](https://pypistats.org/packages/pipgrip)
9
9
 
10
- [pipgrip](https://github.com/ddelange/pipgrip) is a lightweight pip dependency resolver with deptree preview functionality based on the [PubGrub algorithm](https://medium.com/@nex3/pubgrub-2fb6470504f), which is also used by [poetry](https://github.com/python-poetry/poetry). For one or more [PEP 508](https://www.python.org/dev/peps/pep-0508/) dependency specifications, pipgrip recursively fetches/builds the Python wheels necessary for version solving, and optionally renders the full resulting dependency tree.
10
+ [pipgrip](https://github.com/ddelange/pipgrip) is a lightweight pip dependency resolver with deptree preview functionality based on the [PubGrub algorithm](https://medium.com/@nex3/pubgrub-2fb6470504f), which is also used by [poetry](https://github.com/python-poetry/poetry). For one or more [PEP 508](https://www.python.org/dev/peps/pep-0508/) dependency specifications, pipgrip recursively fetches Python wheel metadata necessary for version solving (with fallback to building the wheel if no metadata is available), and optionally renders the full resulting dependency tree.
11
11
 
12
12
  ```
13
13
  $ pipgrip --tree fastapi~=0.94
@@ -66,9 +66,10 @@ Usage: pipgrip [OPTIONS] [DEPENDENCIES]...
66
66
 
67
67
  pipgrip is a lightweight pip dependency resolver with deptree preview
68
68
  functionality based on the PubGrub algorithm, which is also used by poetry. For
69
- one or more PEP 508 dependency specifications, pipgrip recursively
70
- fetches/builds the Python wheels necessary for version solving, and optionally
71
- renders the full resulting dependency tree.
69
+ one or more PEP 508 dependency specifications, pipgrip recursively fetches
70
+ Python wheel metadata necessary for version solving (with fallback to building
71
+ the wheel if no metadata is available), and optionally renders the full
72
+ resulting dependency tree.
72
73
 
73
74
  Options:
74
75
  --install Install full dependency tree after resolving.
@@ -112,6 +113,10 @@ Options:
112
113
  -v, --verbose Control verbosity: -v will print cyclic
113
114
  dependencies (WARNING), -vv will show solving
114
115
  decisions (INFO), -vvv for development (DEBUG).
116
+ --skip-invalid-input Skip invalid requirements (e.g. internal
117
+ repositories, typos) and continue processing other
118
+ dependencies.
119
+ --version Show the version and exit.
115
120
  -h, --help Show this message and exit.
116
121
  ```
117
122
 
@@ -122,14 +127,13 @@ Exhaustive dependency trees without the need to install any packages ([at most b
122
127
  ```
123
128
  $ pipgrip --tree pipgrip
124
129
 
125
- pipgrip (0.10.6)
126
- ├── anytree>=2.4.1 (2.9.0)
127
- │ └── six (1.16.0)
128
- ├── click>=7 (8.1.6)
129
- ├── packaging>=17 (23.1)
130
- ├── pip>=22.2 (23.2.1)
131
- ├── setuptools>=38.3 (68.0.0)
132
- └── wheel (0.41.1)
130
+ pipgrip (0.11.0)
131
+ ├── anytree>=2.4.1 (2.13.0)
132
+ ├── click>=7 (8.3.1)
133
+ ├── packaging>=17 (25.0)
134
+ ├── pip>=22.2 (25.3)
135
+ ├── setuptools<81,>=38.3 (80.9.0)
136
+ └── wheel (0.45.1)
133
137
  ```
134
138
 
135
139
  For more details/further processing, combine `--tree` with `--json` for a detailed nested JSON dependency tree. See also `--tree-ascii` (no unicode tree markers), and `--tree-json` & `--tree-json-exact` (simplified JSON dependency trees).
@@ -0,0 +1 @@
1
+ version = "0.11.1"
@@ -45,6 +45,8 @@ import click
45
45
  from anytree import AsciiStyle, ContStyle, Node, RenderTree
46
46
  from anytree.exporter import DictExporter
47
47
  from packaging.markers import default_environment
48
+ from packaging.requirements import InvalidRequirement
49
+ from pkg_resources import RequirementParseError
48
50
 
49
51
  from pipgrip import __version__
50
52
  from pipgrip.compat import PIP_VERSION
@@ -56,6 +58,7 @@ from pipgrip.pipper import (
56
58
  BUILD_FAILURE_STR,
57
59
  REPORT_FAILURE_STR,
58
60
  install_packages,
61
+ parse_req,
59
62
  read_requirements,
60
63
  )
61
64
 
@@ -262,7 +265,7 @@ def render_lock(packages, include_dot=True, sort=False):
262
265
 
263
266
  @click.command(
264
267
  context_settings={"help_option_names": ["-h", "--help"], "max_content_width": 84},
265
- help="pipgrip is a lightweight pip dependency resolver with deptree preview functionality based on the PubGrub algorithm, which is also used by poetry. For one or more PEP 508 dependency specifications, pipgrip recursively fetches/builds the Python wheels necessary for version solving, and optionally renders the full resulting dependency tree.",
268
+ help="pipgrip is a lightweight pip dependency resolver with deptree preview functionality based on the PubGrub algorithm, which is also used by poetry. For one or more PEP 508 dependency specifications, pipgrip recursively fetches Python wheel metadata necessary for version solving (with fallback to building the wheel if no metadata is available), and optionally renders the full resulting dependency tree.",
266
269
  )
267
270
  @click.argument("dependencies", nargs=-1)
268
271
  @click.option(
@@ -383,6 +386,12 @@ def render_lock(packages, include_dot=True, sort=False):
383
386
  count=True,
384
387
  help="Control verbosity: -v will print cyclic dependencies (WARNING), -vv will show solving decisions (INFO), -vvv for development (DEBUG).",
385
388
  )
389
+ @click.option(
390
+ "--skip-invalid-input",
391
+ is_flag=True,
392
+ help="Skip invalid requirements (e.g. internal repositories, typos) and continue processing other dependencies.",
393
+ )
394
+ @click.version_option(version=__version__, prog_name="pipgrip")
386
395
  def main(
387
396
  dependencies,
388
397
  requirements_file,
@@ -406,6 +415,7 @@ def main(
406
415
  threads,
407
416
  pre,
408
417
  verbose,
418
+ skip_invalid_input,
409
419
  ):
410
420
  if verbose == 0:
411
421
  logger.setLevel(logging.ERROR)
@@ -476,7 +486,15 @@ def main(
476
486
  pre=pre,
477
487
  )
478
488
  for root_dependency in dependencies:
479
- source.root_dep(root_dependency)
489
+ try:
490
+ source.root_dep(root_dependency)
491
+ except (InvalidRequirement, RequirementParseError) as e:
492
+ if skip_invalid_input:
493
+ logger.warning(
494
+ "Skipping invalid requirement '%s': %s", root_dependency, str(e)
495
+ )
496
+ else:
497
+ raise
480
498
 
481
499
  solver = VersionSolver(source, threads=threads)
482
500
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipgrip
3
- Version: 0.10.15
3
+ Version: 0.11.1
4
4
  Summary: Lightweight pip dependency resolver with deptree preview functionality based on the PubGrub algorithm
5
5
  Home-page: https://github.com/ddelange/pipgrip
6
6
  Author: ddelange
@@ -64,7 +64,7 @@ Dynamic: summary
64
64
  [![python](https://img.shields.io/pypi/pyversions/pipgrip.svg?logo=python&logoColor=white)](https://pypi.org/project/pipgrip/)
65
65
  [![downloads](https://static.pepy.tech/badge/pipgrip)](https://pypistats.org/packages/pipgrip)
66
66
 
67
- [pipgrip](https://github.com/ddelange/pipgrip) is a lightweight pip dependency resolver with deptree preview functionality based on the [PubGrub algorithm](https://medium.com/@nex3/pubgrub-2fb6470504f), which is also used by [poetry](https://github.com/python-poetry/poetry). For one or more [PEP 508](https://www.python.org/dev/peps/pep-0508/) dependency specifications, pipgrip recursively fetches/builds the Python wheels necessary for version solving, and optionally renders the full resulting dependency tree.
67
+ [pipgrip](https://github.com/ddelange/pipgrip) is a lightweight pip dependency resolver with deptree preview functionality based on the [PubGrub algorithm](https://medium.com/@nex3/pubgrub-2fb6470504f), which is also used by [poetry](https://github.com/python-poetry/poetry). For one or more [PEP 508](https://www.python.org/dev/peps/pep-0508/) dependency specifications, pipgrip recursively fetches Python wheel metadata necessary for version solving (with fallback to building the wheel if no metadata is available), and optionally renders the full resulting dependency tree.
68
68
 
69
69
  ```
70
70
  $ pipgrip --tree fastapi~=0.94
@@ -123,9 +123,10 @@ Usage: pipgrip [OPTIONS] [DEPENDENCIES]...
123
123
 
124
124
  pipgrip is a lightweight pip dependency resolver with deptree preview
125
125
  functionality based on the PubGrub algorithm, which is also used by poetry. For
126
- one or more PEP 508 dependency specifications, pipgrip recursively
127
- fetches/builds the Python wheels necessary for version solving, and optionally
128
- renders the full resulting dependency tree.
126
+ one or more PEP 508 dependency specifications, pipgrip recursively fetches
127
+ Python wheel metadata necessary for version solving (with fallback to building
128
+ the wheel if no metadata is available), and optionally renders the full
129
+ resulting dependency tree.
129
130
 
130
131
  Options:
131
132
  --install Install full dependency tree after resolving.
@@ -169,6 +170,10 @@ Options:
169
170
  -v, --verbose Control verbosity: -v will print cyclic
170
171
  dependencies (WARNING), -vv will show solving
171
172
  decisions (INFO), -vvv for development (DEBUG).
173
+ --skip-invalid-input Skip invalid requirements (e.g. internal
174
+ repositories, typos) and continue processing other
175
+ dependencies.
176
+ --version Show the version and exit.
172
177
  -h, --help Show this message and exit.
173
178
  ```
174
179
 
@@ -179,14 +184,13 @@ Exhaustive dependency trees without the need to install any packages ([at most b
179
184
  ```
180
185
  $ pipgrip --tree pipgrip
181
186
 
182
- pipgrip (0.10.6)
183
- ├── anytree>=2.4.1 (2.9.0)
184
- │ └── six (1.16.0)
185
- ├── click>=7 (8.1.6)
186
- ├── packaging>=17 (23.1)
187
- ├── pip>=22.2 (23.2.1)
188
- ├── setuptools>=38.3 (68.0.0)
189
- └── wheel (0.41.1)
187
+ pipgrip (0.11.0)
188
+ ├── anytree>=2.4.1 (2.13.0)
189
+ ├── click>=7 (8.3.1)
190
+ ├── packaging>=17 (25.0)
191
+ ├── pip>=22.2 (25.3)
192
+ ├── setuptools<81,>=38.3 (80.9.0)
193
+ └── wheel (0.45.1)
190
194
  ```
191
195
 
192
196
  For more details/further processing, combine `--tree` with `--json` for a detailed nested JSON dependency tree. See also `--tree-ascii` (no unicode tree markers), and `--tree-json` & `--tree-json-exact` (simplified JSON dependency trees).
@@ -1 +0,0 @@
1
- version = "0.10.15"
File without changes
File without changes
File without changes