devpi-builder 7.0.0__tar.gz → 7.1.0__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.
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/.github/workflows/tests.yml +3 -16
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/.gitignore +3 -0
- devpi_builder-7.1.0/.python-version +1 -0
- devpi_builder-7.1.0/AGENTS.md +12 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/CHANGELOG.rst +27 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/PKG-INFO +34 -7
- devpi_builder-7.1.0/core-requirements.txt +8 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder/cli.py +1 -2
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder/requirements.py +4 -4
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder/wheeler.py +9 -7
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/PKG-INFO +34 -7
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/SOURCES.txt +4 -2
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/requires.txt +3 -3
- devpi_builder-7.1.0/devpi_builder.egg-info/scm_file_list.json +50 -0
- devpi_builder-7.1.0/devpi_builder.egg-info/scm_version.json +8 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/requirements.txt +66 -75
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/setup.py +3 -3
- devpi_builder-7.1.0/tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/test_cli.py +9 -1
- devpi_builder-7.1.0/tox.toml +14 -0
- devpi_builder-7.0.0/.python-version +0 -1
- devpi_builder-7.0.0/core-requirements.txt +0 -8
- devpi_builder-7.0.0/tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz +0 -0
- devpi_builder-7.0.0/tests/fixture/non-ascii_package/setup.cfg +0 -2
- devpi_builder-7.0.0/tests/fixture/pure_package/setup.cfg +0 -2
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/.coveragerc +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/.github/workflows/publish.yml +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/.pyup.yml +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/COPYING +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/MANIFEST.in +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/README.rst +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder/__init__.py +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/dependency_links.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/entry_points.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/top_level.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/pyproject.toml +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/requirements.in +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/setup.cfg +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/non-ascii_package/setup.py +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/non-pure_package/dist/test_package-0.1.dev1-cp27-none-linux_x86_64.whl +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/non-pure_package/setup.cfg +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/non-pure_package/setup.py +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/pure_package/dist/test_package-0.1.dev1-py2.py3-none-any.whl +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/pure_package/setup.py +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/pure_package/test_package/__init__.py +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_blacklist.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_comments.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_continue_on_failed.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_different_styles.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_inexact_version.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_junit.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_multiple_versions.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_multiple_versions_on_line.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_no_version.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_non-ascii.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_pure_and_non-pure.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_simple.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_test_package.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_vcs.txt +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/test_requirements.py +0 -0
- {devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/test_wheeler.py +0 -0
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
strategy:
|
|
13
13
|
fail-fast: false
|
|
14
14
|
matrix:
|
|
15
|
-
python-version: ['3.
|
|
15
|
+
python-version: ['3.11', '3.12', '3.13', '3.14', '3.15']
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v3
|
|
18
18
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -22,25 +22,12 @@ jobs:
|
|
|
22
22
|
- name: Install dependencies
|
|
23
23
|
run: |
|
|
24
24
|
python -m pip install --upgrade pip
|
|
25
|
-
|
|
26
|
-
python -m pip install 'setuptools<82'
|
|
27
|
-
python -m pip install -r requirements.txt
|
|
28
|
-
python -m pip install --no-deps -e .
|
|
29
|
-
if [ "${{ matrix.python-version }}" != "3.13" ]; then # workaround for TheKevJames/coveralls-python#523
|
|
30
|
-
python -m pip install coveralls
|
|
31
|
-
fi
|
|
25
|
+
python -m pip install tox coveralls
|
|
32
26
|
python -m pip freeze
|
|
33
|
-
python -m pip --version
|
|
34
|
-
python -c 'import setuptools; print(f"setuptools=={setuptools.__version__}")'
|
|
35
27
|
- name: Test with pytest
|
|
36
28
|
run: |
|
|
37
|
-
|
|
38
|
-
pytest --no-cov # workaround for TheKevJames/coveralls-python#523
|
|
39
|
-
else
|
|
40
|
-
pytest
|
|
41
|
-
fi
|
|
29
|
+
tox -e ${{ matrix.python-version }} -- --cov
|
|
42
30
|
- name: Upload coverage data
|
|
43
|
-
if: matrix.python-version != '3.13' # workaround for TheKevJames/coveralls-python#523
|
|
44
31
|
run: |
|
|
45
32
|
coveralls --service=github
|
|
46
33
|
env:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Agents
|
|
2
|
+
|
|
3
|
+
Use these project-specific defaults when making future changes:
|
|
4
|
+
|
|
5
|
+
- Run tests with `pytest`.
|
|
6
|
+
- Use `tox` to run the full test matrix across supported Python versions.
|
|
7
|
+
- Keep `core-requirements.txt` for runtime dependencies and `requirements.in` for test and development dependencies.
|
|
8
|
+
- Regenerate `requirements.txt` from `requirements.in` with `tox -e compile`. Use `tox -e compile -- --upgrade` to upgrade dependencies to the latest compatible versions.
|
|
9
|
+
- When changing supported Python versions, keep `tox.toml`, the GitHub Actions workflow, `setup.py` trove classifiers, and `.python-version` in sync.
|
|
10
|
+
- Keep `.python-version` set to the lowest supported Python version so Dependabot and single-version tooling pick it up correctly.
|
|
11
|
+
- Keep `base_python` in the `compile` environment in `tox.toml` set to the lowest supported Python version so that `tox -e compile` works correctly.
|
|
12
|
+
- When changing supported Python versions, recompile `requirements.txt` with `tox -e compile -- --upgrade` to ensure compatible dependency versions are used.
|
|
@@ -4,6 +4,33 @@ Changelog
|
|
|
4
4
|
|
|
5
5
|
This lists the most important changes for each release.
|
|
6
6
|
|
|
7
|
+
Version 7.1.0 - 2026-10-22
|
|
8
|
+
==========================
|
|
9
|
+
|
|
10
|
+
Added
|
|
11
|
+
-----
|
|
12
|
+
|
|
13
|
+
* Verified compatibility with Python 3.15.
|
|
14
|
+
* Compatibility with newer version of setuptools and ``wheel-filename``.
|
|
15
|
+
|
|
16
|
+
Removed
|
|
17
|
+
-------
|
|
18
|
+
|
|
19
|
+
* Compatibility with Python 3.10 is no longer verified.
|
|
20
|
+
* Removed deprecated universal wheel configuration from test fixtures.
|
|
21
|
+
|
|
22
|
+
Changed
|
|
23
|
+
-------
|
|
24
|
+
|
|
25
|
+
* Refreshed the locked test dependencies for Python 3.11+.
|
|
26
|
+
* Requires ``wheel-filename`` 2.0 or newer.
|
|
27
|
+
* JUnit XML reports are written with built-in ``open`` instead of deprecated ``codecs.open``.
|
|
28
|
+
|
|
29
|
+
Removed
|
|
30
|
+
-------
|
|
31
|
+
|
|
32
|
+
* Removed the remaining use of ``pkg_resources``.
|
|
33
|
+
|
|
7
34
|
|
|
8
35
|
Version 7.0.0 - 2026-02-16
|
|
9
36
|
==========================
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devpi-builder
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.1.0
|
|
4
4
|
Summary: Devpi-builder takes a requirements.txt and incrementally fills a devpi index with wheels of the listed python packages.
|
|
5
5
|
Home-page: https://github.com/blue-yonder/devpi-builder
|
|
6
6
|
Author: Matthias Bach
|
|
@@ -13,19 +13,19 @@ Classifier: Intended Audience :: System Administrators
|
|
|
13
13
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
14
|
Classifier: Topic :: System :: Archiving :: Packaging
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
-
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
22
|
Description-Content-Type: text/x-rst
|
|
23
23
|
License-File: COPYING
|
|
24
24
|
Requires-Dist: devpi-plumber>=0.2.14
|
|
25
|
-
Requires-Dist: setuptools
|
|
25
|
+
Requires-Dist: setuptools
|
|
26
26
|
Requires-Dist: wheel
|
|
27
|
-
Requires-Dist: wheel-filename
|
|
28
|
-
Requires-Dist: wheel-inspect>=1.
|
|
27
|
+
Requires-Dist: wheel-filename>=2.0
|
|
28
|
+
Requires-Dist: wheel-inspect>=1.8.0
|
|
29
29
|
Requires-Dist: pip>=1.5.3
|
|
30
30
|
Requires-Dist: junit-xml>=1.9
|
|
31
31
|
Requires-Dist: pip-requirements-parser>=32.0.1
|
|
@@ -147,6 +147,33 @@ Changelog
|
|
|
147
147
|
|
|
148
148
|
This lists the most important changes for each release.
|
|
149
149
|
|
|
150
|
+
Version 7.1.0 - 2026-10-22
|
|
151
|
+
==========================
|
|
152
|
+
|
|
153
|
+
Added
|
|
154
|
+
-----
|
|
155
|
+
|
|
156
|
+
* Verified compatibility with Python 3.15.
|
|
157
|
+
* Compatibility with newer version of setuptools and ``wheel-filename``.
|
|
158
|
+
|
|
159
|
+
Removed
|
|
160
|
+
-------
|
|
161
|
+
|
|
162
|
+
* Compatibility with Python 3.10 is no longer verified.
|
|
163
|
+
* Removed deprecated universal wheel configuration from test fixtures.
|
|
164
|
+
|
|
165
|
+
Changed
|
|
166
|
+
-------
|
|
167
|
+
|
|
168
|
+
* Refreshed the locked test dependencies for Python 3.11+.
|
|
169
|
+
* Requires ``wheel-filename`` 2.0 or newer.
|
|
170
|
+
* JUnit XML reports are written with built-in ``open`` instead of deprecated ``codecs.open``.
|
|
171
|
+
|
|
172
|
+
Removed
|
|
173
|
+
-------
|
|
174
|
+
|
|
175
|
+
* Removed the remaining use of ``pkg_resources``.
|
|
176
|
+
|
|
150
177
|
|
|
151
178
|
Version 7.0.0 - 2026-02-16
|
|
152
179
|
==========================
|
|
@@ -5,7 +5,6 @@ Command line interface for brandon
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import argparse
|
|
8
|
-
import codecs
|
|
9
8
|
import getpass
|
|
10
9
|
import locale
|
|
11
10
|
import logging
|
|
@@ -125,7 +124,7 @@ class Processor(object):
|
|
|
125
124
|
|
|
126
125
|
if self._junit_xml:
|
|
127
126
|
encoding = locale.getpreferredencoding()
|
|
128
|
-
with
|
|
127
|
+
with open(self._junit_xml, 'w', encoding=encoding) as output:
|
|
129
128
|
test_suite = TestSuite('devpi-builder results', self._results)
|
|
130
129
|
to_xml_report_file(output, [test_suite], encoding=encoding)
|
|
131
130
|
|
|
@@ -5,7 +5,7 @@ Functionality for reading specifications of required packages.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import pip_requirements_parser
|
|
8
|
-
import
|
|
8
|
+
from packaging.utils import canonicalize_name, canonicalize_version
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _extract_project_version(requirement):
|
|
@@ -61,10 +61,10 @@ def matched_by_list(package, version, requirements):
|
|
|
61
61
|
:param requirements: A list of requirements as read by read_raw()
|
|
62
62
|
:return: True if the package can be used to fulfil on of the requirements in the file, False otherwise
|
|
63
63
|
"""
|
|
64
|
-
version =
|
|
65
|
-
package =
|
|
64
|
+
version = canonicalize_version('{}'.format(version))
|
|
65
|
+
package = canonicalize_name(package)
|
|
66
66
|
matches = (
|
|
67
|
-
package
|
|
67
|
+
package == canonicalize_name(requirement.name) and (requirement.specifier.contains(version) if requirement.specifier else True)
|
|
68
68
|
for requirement in requirements
|
|
69
69
|
)
|
|
70
70
|
return any(matches)
|
|
@@ -11,9 +11,10 @@ import subprocess
|
|
|
11
11
|
import tempfile
|
|
12
12
|
|
|
13
13
|
from packaging import tags
|
|
14
|
-
from
|
|
14
|
+
from packaging.requirements import Requirement
|
|
15
|
+
from packaging.utils import canonicalize_name
|
|
16
|
+
from wheel_filename import ParseError, WheelFilename
|
|
15
17
|
|
|
16
|
-
from wheel_filename import InvalidFilenameError, parse_wheel_filename
|
|
17
18
|
from wheel_inspect import inspect_wheel
|
|
18
19
|
from wheel_inspect.classes import WheelFile
|
|
19
20
|
|
|
@@ -52,13 +53,14 @@ class Builder(object):
|
|
|
52
53
|
:param requirement:str : The requirement to satisfy
|
|
53
54
|
:param wheels: List of wheels to search.
|
|
54
55
|
"""
|
|
55
|
-
req = Requirement
|
|
56
|
+
req = Requirement(requirement)
|
|
57
|
+
req_name = canonicalize_name(req.name)
|
|
56
58
|
|
|
57
59
|
matching = []
|
|
58
60
|
for wheel in wheels:
|
|
59
61
|
w = wheel.parsed_filename
|
|
60
|
-
|
|
61
|
-
if
|
|
62
|
+
name = canonicalize_name(self._standardize_package_name(w.project))
|
|
63
|
+
if name == req_name and req.specifier.contains(str(w.version)):
|
|
62
64
|
matching.append(wheel.path)
|
|
63
65
|
return matching
|
|
64
66
|
|
|
@@ -120,12 +122,12 @@ def is_compatible(package):
|
|
|
120
122
|
Compatibility is based on https://www.python.org/dev/peps/pep-0425/
|
|
121
123
|
"""
|
|
122
124
|
try:
|
|
123
|
-
w =
|
|
125
|
+
w = WheelFilename.parse(package)
|
|
124
126
|
for systag in tags.sys_tags():
|
|
125
127
|
for tag in w.tag_triples():
|
|
126
128
|
if systag in tags.parse_tag(tag):
|
|
127
129
|
return True
|
|
128
|
-
except
|
|
130
|
+
except ParseError:
|
|
129
131
|
return False
|
|
130
132
|
|
|
131
133
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devpi-builder
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.1.0
|
|
4
4
|
Summary: Devpi-builder takes a requirements.txt and incrementally fills a devpi index with wheels of the listed python packages.
|
|
5
5
|
Home-page: https://github.com/blue-yonder/devpi-builder
|
|
6
6
|
Author: Matthias Bach
|
|
@@ -13,19 +13,19 @@ Classifier: Intended Audience :: System Administrators
|
|
|
13
13
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
14
|
Classifier: Topic :: System :: Archiving :: Packaging
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
-
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
22
|
Description-Content-Type: text/x-rst
|
|
23
23
|
License-File: COPYING
|
|
24
24
|
Requires-Dist: devpi-plumber>=0.2.14
|
|
25
|
-
Requires-Dist: setuptools
|
|
25
|
+
Requires-Dist: setuptools
|
|
26
26
|
Requires-Dist: wheel
|
|
27
|
-
Requires-Dist: wheel-filename
|
|
28
|
-
Requires-Dist: wheel-inspect>=1.
|
|
27
|
+
Requires-Dist: wheel-filename>=2.0
|
|
28
|
+
Requires-Dist: wheel-inspect>=1.8.0
|
|
29
29
|
Requires-Dist: pip>=1.5.3
|
|
30
30
|
Requires-Dist: junit-xml>=1.9
|
|
31
31
|
Requires-Dist: pip-requirements-parser>=32.0.1
|
|
@@ -147,6 +147,33 @@ Changelog
|
|
|
147
147
|
|
|
148
148
|
This lists the most important changes for each release.
|
|
149
149
|
|
|
150
|
+
Version 7.1.0 - 2026-10-22
|
|
151
|
+
==========================
|
|
152
|
+
|
|
153
|
+
Added
|
|
154
|
+
-----
|
|
155
|
+
|
|
156
|
+
* Verified compatibility with Python 3.15.
|
|
157
|
+
* Compatibility with newer version of setuptools and ``wheel-filename``.
|
|
158
|
+
|
|
159
|
+
Removed
|
|
160
|
+
-------
|
|
161
|
+
|
|
162
|
+
* Compatibility with Python 3.10 is no longer verified.
|
|
163
|
+
* Removed deprecated universal wheel configuration from test fixtures.
|
|
164
|
+
|
|
165
|
+
Changed
|
|
166
|
+
-------
|
|
167
|
+
|
|
168
|
+
* Refreshed the locked test dependencies for Python 3.11+.
|
|
169
|
+
* Requires ``wheel-filename`` 2.0 or newer.
|
|
170
|
+
* JUnit XML reports are written with built-in ``open`` instead of deprecated ``codecs.open``.
|
|
171
|
+
|
|
172
|
+
Removed
|
|
173
|
+
-------
|
|
174
|
+
|
|
175
|
+
* Removed the remaining use of ``pkg_resources``.
|
|
176
|
+
|
|
150
177
|
|
|
151
178
|
Version 7.0.0 - 2026-02-16
|
|
152
179
|
==========================
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
.gitignore
|
|
3
3
|
.python-version
|
|
4
4
|
.pyup.yml
|
|
5
|
+
AGENTS.md
|
|
5
6
|
CHANGELOG.rst
|
|
6
7
|
COPYING
|
|
7
8
|
MANIFEST.in
|
|
@@ -11,6 +12,7 @@ pyproject.toml
|
|
|
11
12
|
requirements.in
|
|
12
13
|
requirements.txt
|
|
13
14
|
setup.py
|
|
15
|
+
tox.toml
|
|
14
16
|
.github/workflows/publish.yml
|
|
15
17
|
.github/workflows/tests.yml
|
|
16
18
|
devpi_builder/__init__.py
|
|
@@ -22,6 +24,8 @@ devpi_builder.egg-info/SOURCES.txt
|
|
|
22
24
|
devpi_builder.egg-info/dependency_links.txt
|
|
23
25
|
devpi_builder.egg-info/entry_points.txt
|
|
24
26
|
devpi_builder.egg-info/requires.txt
|
|
27
|
+
devpi_builder.egg-info/scm_file_list.json
|
|
28
|
+
devpi_builder.egg-info/scm_version.json
|
|
25
29
|
devpi_builder.egg-info/top_level.txt
|
|
26
30
|
tests/test_cli.py
|
|
27
31
|
tests/test_requirements.py
|
|
@@ -40,13 +44,11 @@ tests/fixture/sample_pure_and_non-pure.txt
|
|
|
40
44
|
tests/fixture/sample_simple.txt
|
|
41
45
|
tests/fixture/sample_test_package.txt
|
|
42
46
|
tests/fixture/sample_vcs.txt
|
|
43
|
-
tests/fixture/non-ascii_package/setup.cfg
|
|
44
47
|
tests/fixture/non-ascii_package/setup.py
|
|
45
48
|
tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz
|
|
46
49
|
tests/fixture/non-pure_package/setup.cfg
|
|
47
50
|
tests/fixture/non-pure_package/setup.py
|
|
48
51
|
tests/fixture/non-pure_package/dist/test_package-0.1.dev1-cp27-none-linux_x86_64.whl
|
|
49
|
-
tests/fixture/pure_package/setup.cfg
|
|
50
52
|
tests/fixture/pure_package/setup.py
|
|
51
53
|
tests/fixture/pure_package/dist/test_package-0.1.dev1-py2.py3-none-any.whl
|
|
52
54
|
tests/fixture/pure_package/test_package/__init__.py
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": [
|
|
3
|
+
".coveragerc",
|
|
4
|
+
".github/workflows/publish.yml",
|
|
5
|
+
".github/workflows/tests.yml",
|
|
6
|
+
".gitignore",
|
|
7
|
+
".python-version",
|
|
8
|
+
".pyup.yml",
|
|
9
|
+
"AGENTS.md",
|
|
10
|
+
"CHANGELOG.rst",
|
|
11
|
+
"COPYING",
|
|
12
|
+
"MANIFEST.in",
|
|
13
|
+
"README.rst",
|
|
14
|
+
"core-requirements.txt",
|
|
15
|
+
"devpi_builder/__init__.py",
|
|
16
|
+
"devpi_builder/cli.py",
|
|
17
|
+
"devpi_builder/requirements.py",
|
|
18
|
+
"devpi_builder/wheeler.py",
|
|
19
|
+
"pyproject.toml",
|
|
20
|
+
"requirements.in",
|
|
21
|
+
"requirements.txt",
|
|
22
|
+
"setup.py",
|
|
23
|
+
"tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz",
|
|
24
|
+
"tests/fixture/non-ascii_package/setup.py",
|
|
25
|
+
"tests/fixture/non-pure_package/dist/test_package-0.1.dev1-cp27-none-linux_x86_64.whl",
|
|
26
|
+
"tests/fixture/non-pure_package/setup.cfg",
|
|
27
|
+
"tests/fixture/non-pure_package/setup.py",
|
|
28
|
+
"tests/fixture/pure_package/dist/test_package-0.1.dev1-py2.py3-none-any.whl",
|
|
29
|
+
"tests/fixture/pure_package/setup.py",
|
|
30
|
+
"tests/fixture/pure_package/test_package/__init__.py",
|
|
31
|
+
"tests/fixture/sample_blacklist.txt",
|
|
32
|
+
"tests/fixture/sample_comments.txt",
|
|
33
|
+
"tests/fixture/sample_continue_on_failed.txt",
|
|
34
|
+
"tests/fixture/sample_different_styles.txt",
|
|
35
|
+
"tests/fixture/sample_inexact_version.txt",
|
|
36
|
+
"tests/fixture/sample_junit.txt",
|
|
37
|
+
"tests/fixture/sample_multiple_versions.txt",
|
|
38
|
+
"tests/fixture/sample_multiple_versions_on_line.txt",
|
|
39
|
+
"tests/fixture/sample_no_version.txt",
|
|
40
|
+
"tests/fixture/sample_non-ascii.txt",
|
|
41
|
+
"tests/fixture/sample_pure_and_non-pure.txt",
|
|
42
|
+
"tests/fixture/sample_simple.txt",
|
|
43
|
+
"tests/fixture/sample_test_package.txt",
|
|
44
|
+
"tests/fixture/sample_vcs.txt",
|
|
45
|
+
"tests/test_cli.py",
|
|
46
|
+
"tests/test_requirements.py",
|
|
47
|
+
"tests/test_wheeler.py",
|
|
48
|
+
"tox.toml"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
#
|
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.11
|
|
3
3
|
# by the following command:
|
|
4
4
|
#
|
|
5
|
-
# pip-compile --no-emit-index-url --strip-extras
|
|
5
|
+
# pip-compile --no-emit-index-url --strip-extras --unsafe-package=pip
|
|
6
6
|
#
|
|
7
|
-
anyio==4.
|
|
7
|
+
anyio==4.15.1
|
|
8
8
|
# via httpx
|
|
9
|
-
argon2-cffi==
|
|
9
|
+
argon2-cffi==25.1.0
|
|
10
10
|
# via
|
|
11
11
|
# devpi-server
|
|
12
12
|
# passlib
|
|
13
|
-
argon2-cffi-bindings==
|
|
13
|
+
argon2-cffi-bindings==26.1.0
|
|
14
14
|
# via argon2-cffi
|
|
15
|
-
attrs==
|
|
15
|
+
attrs==26.1.0
|
|
16
16
|
# via
|
|
17
17
|
# devpi-server
|
|
18
18
|
# headerparser
|
|
19
19
|
# wheel-inspect
|
|
20
|
-
build==1.
|
|
20
|
+
build==1.6.1
|
|
21
21
|
# via
|
|
22
22
|
# check-manifest
|
|
23
23
|
# devpi-client
|
|
24
|
-
certifi==
|
|
24
|
+
certifi==2026.7.22
|
|
25
25
|
# via
|
|
26
26
|
# httpcore
|
|
27
27
|
# httpx
|
|
28
28
|
# requests
|
|
29
|
-
cffi==1.
|
|
29
|
+
cffi==2.1.1
|
|
30
30
|
# via argon2-cffi-bindings
|
|
31
|
-
charset-normalizer==3.
|
|
31
|
+
charset-normalizer==3.5.2
|
|
32
32
|
# via requests
|
|
33
|
-
check-manifest==0.
|
|
33
|
+
check-manifest==0.51
|
|
34
34
|
# via devpi-client
|
|
35
|
-
coverage==7.
|
|
35
|
+
coverage==7.16.2
|
|
36
36
|
# via pytest-cov
|
|
37
37
|
defusedxml==0.7.1
|
|
38
38
|
# via devpi-server
|
|
39
|
-
deprecated==1.
|
|
39
|
+
deprecated==1.3.1
|
|
40
40
|
# via headerparser
|
|
41
|
-
devpi-client==7.
|
|
41
|
+
devpi-client==7.3.0
|
|
42
42
|
# via devpi-plumber
|
|
43
|
-
devpi-common==4.
|
|
43
|
+
devpi-common==4.1.1
|
|
44
44
|
# via
|
|
45
45
|
# devpi-client
|
|
46
46
|
# devpi-server
|
|
@@ -48,16 +48,12 @@ devpi-plumber==0.7.0
|
|
|
48
48
|
# via
|
|
49
49
|
# -r core-requirements.txt
|
|
50
50
|
# -r requirements.in
|
|
51
|
-
devpi-server==6.
|
|
51
|
+
devpi-server==6.20.3
|
|
52
52
|
# via devpi-plumber
|
|
53
|
-
docutils==0.
|
|
53
|
+
docutils==0.23
|
|
54
54
|
# via readme-renderer
|
|
55
|
-
entry-points-txt==0.
|
|
55
|
+
entry-points-txt==0.3.0
|
|
56
56
|
# via wheel-inspect
|
|
57
|
-
exceptiongroup==1.2.2
|
|
58
|
-
# via
|
|
59
|
-
# anyio
|
|
60
|
-
# pytest
|
|
61
57
|
h11==0.16.0
|
|
62
58
|
# via httpcore
|
|
63
59
|
headerparser==0.5.2
|
|
@@ -68,16 +64,12 @@ httpx==0.28.1
|
|
|
68
64
|
# via devpi-server
|
|
69
65
|
hupper==1.12.1
|
|
70
66
|
# via pyramid
|
|
71
|
-
idna==3.
|
|
67
|
+
idna==3.20
|
|
72
68
|
# via
|
|
73
69
|
# anyio
|
|
74
70
|
# httpx
|
|
75
71
|
# requests
|
|
76
|
-
|
|
77
|
-
# via
|
|
78
|
-
# build
|
|
79
|
-
# setuptools-scm
|
|
80
|
-
iniconfig==2.1.0
|
|
72
|
+
iniconfig==2.3.1
|
|
81
73
|
# via
|
|
82
74
|
# devpi-client
|
|
83
75
|
# pytest
|
|
@@ -85,7 +77,7 @@ itsdangerous==2.2.0
|
|
|
85
77
|
# via devpi-server
|
|
86
78
|
junit-xml==1.9
|
|
87
79
|
# via -r core-requirements.txt
|
|
88
|
-
lazy==
|
|
80
|
+
lazy==2.0
|
|
89
81
|
# via
|
|
90
82
|
# devpi-common
|
|
91
83
|
# devpi-server
|
|
@@ -93,15 +85,16 @@ legacy-cgi==2.6.4
|
|
|
93
85
|
# via -r requirements.in
|
|
94
86
|
mock==5.2.0
|
|
95
87
|
# via -r requirements.in
|
|
96
|
-
nh3==0.
|
|
88
|
+
nh3==0.3.7
|
|
97
89
|
# via readme-renderer
|
|
98
|
-
packaging==
|
|
90
|
+
packaging==26.3
|
|
99
91
|
# via
|
|
100
92
|
# build
|
|
101
93
|
# packaging-legacy
|
|
102
94
|
# pip-requirements-parser
|
|
103
95
|
# pytest
|
|
104
96
|
# setuptools-scm
|
|
97
|
+
# vcs-versioning
|
|
105
98
|
# wheel
|
|
106
99
|
# wheel-inspect
|
|
107
100
|
packaging-legacy==23.0.post0
|
|
@@ -112,7 +105,7 @@ pastedeploy==3.1.0
|
|
|
112
105
|
# via plaster-pastedeploy
|
|
113
106
|
pip-requirements-parser==32.0.1
|
|
114
107
|
# via -r core-requirements.txt
|
|
115
|
-
pkginfo==1.
|
|
108
|
+
pkginfo==1.13.1
|
|
116
109
|
# via devpi-client
|
|
117
110
|
plaster==1.1.2
|
|
118
111
|
# via
|
|
@@ -120,68 +113,69 @@ plaster==1.1.2
|
|
|
120
113
|
# pyramid
|
|
121
114
|
plaster-pastedeploy==1.0.1
|
|
122
115
|
# via pyramid
|
|
123
|
-
platformdirs==4.3
|
|
116
|
+
platformdirs==4.13.3
|
|
124
117
|
# via
|
|
125
118
|
# devpi-client
|
|
126
119
|
# devpi-server
|
|
127
|
-
pluggy==1.
|
|
120
|
+
pluggy==1.7.0
|
|
128
121
|
# via
|
|
129
122
|
# devpi-client
|
|
130
123
|
# devpi-server
|
|
131
124
|
# pytest
|
|
125
|
+
# pytest-cov
|
|
132
126
|
py==1.11.0
|
|
133
127
|
# via devpi-server
|
|
134
|
-
pycparser==
|
|
128
|
+
pycparser==3.11
|
|
135
129
|
# via cffi
|
|
136
|
-
pygments==2.
|
|
137
|
-
# via
|
|
138
|
-
|
|
130
|
+
pygments==2.21.0
|
|
131
|
+
# via
|
|
132
|
+
# pytest
|
|
133
|
+
# readme-renderer
|
|
134
|
+
pyparsing==3.3.3
|
|
139
135
|
# via pip-requirements-parser
|
|
140
|
-
pyproject-hooks==1.
|
|
136
|
+
pyproject-hooks==1.3.3
|
|
141
137
|
# via build
|
|
142
|
-
pyramid==2.
|
|
138
|
+
pyramid==2.1
|
|
143
139
|
# via devpi-server
|
|
144
|
-
pytest==
|
|
140
|
+
pytest==9.1.1
|
|
145
141
|
# via
|
|
146
142
|
# -r requirements.in
|
|
147
143
|
# pytest-cov
|
|
148
144
|
# pytest-mock
|
|
149
|
-
pytest-cov==
|
|
145
|
+
pytest-cov==7.1.0
|
|
150
146
|
# via -r requirements.in
|
|
151
|
-
pytest-mock==3.
|
|
147
|
+
pytest-mock==3.16.0
|
|
152
148
|
# via -r requirements.in
|
|
153
149
|
python-dateutil==2.9.0.post0
|
|
154
150
|
# via strictyaml
|
|
155
|
-
readme-renderer==
|
|
151
|
+
readme-renderer==46.0
|
|
156
152
|
# via wheel-inspect
|
|
157
|
-
repoze-lru==0.
|
|
153
|
+
repoze-lru==0.8
|
|
158
154
|
# via devpi-server
|
|
159
|
-
requests==2.
|
|
155
|
+
requests==2.34.2
|
|
160
156
|
# via
|
|
157
|
+
# devpi-client
|
|
161
158
|
# devpi-common
|
|
162
159
|
# devpi-plumber
|
|
163
|
-
|
|
160
|
+
# devpi-server
|
|
161
|
+
ruamel-yaml==0.19.1
|
|
164
162
|
# via devpi-server
|
|
165
|
-
|
|
166
|
-
# via
|
|
167
|
-
|
|
163
|
+
setuptools==81.0.0
|
|
164
|
+
# via
|
|
165
|
+
# -r core-requirements.txt
|
|
166
|
+
# check-manifest
|
|
167
|
+
# devpi-server
|
|
168
|
+
# pyramid
|
|
169
|
+
# setuptools-scm
|
|
170
|
+
# zope-deprecation
|
|
171
|
+
setuptools-scm==10.3.4
|
|
168
172
|
# via -r requirements.in
|
|
169
173
|
six==1.17.0
|
|
170
174
|
# via
|
|
171
175
|
# junit-xml
|
|
172
176
|
# python-dateutil
|
|
173
|
-
sniffio==1.3.1
|
|
174
|
-
# via anyio
|
|
175
177
|
strictyaml==1.7.3
|
|
176
178
|
# via devpi-server
|
|
177
|
-
tomli==2.2.1
|
|
178
|
-
# via
|
|
179
|
-
# build
|
|
180
|
-
# check-manifest
|
|
181
|
-
# coverage
|
|
182
|
-
# devpi-client
|
|
183
|
-
# pytest
|
|
184
|
-
# setuptools-scm
|
|
185
179
|
translationstring==1.4
|
|
186
180
|
# via pyramid
|
|
187
181
|
twitter-common-contextutil==0.3.11
|
|
@@ -190,35 +184,32 @@ twitter-common-dirutil==0.3.11
|
|
|
190
184
|
# via twitter-common-contextutil
|
|
191
185
|
twitter-common-lang==0.3.11
|
|
192
186
|
# via twitter-common-dirutil
|
|
193
|
-
typing-extensions==4.
|
|
194
|
-
# via
|
|
195
|
-
|
|
196
|
-
# setuptools-scm
|
|
197
|
-
urllib3==2.6.3
|
|
187
|
+
typing-extensions==4.16.0
|
|
188
|
+
# via anyio
|
|
189
|
+
urllib3==2.8.0
|
|
198
190
|
# via requests
|
|
191
|
+
vcs-versioning==2.6.0
|
|
192
|
+
# via setuptools-scm
|
|
199
193
|
venusian==3.1.1
|
|
200
194
|
# via pyramid
|
|
201
195
|
waitress==3.0.2
|
|
202
196
|
# via devpi-server
|
|
203
|
-
webob==1.8.
|
|
197
|
+
webob==1.8.11
|
|
204
198
|
# via pyramid
|
|
205
|
-
wheel==0.
|
|
199
|
+
wheel==0.48.0
|
|
206
200
|
# via -r core-requirements.txt
|
|
207
|
-
wheel-filename==1.
|
|
201
|
+
wheel-filename==2.1.0
|
|
208
202
|
# via
|
|
209
203
|
# -r core-requirements.txt
|
|
210
204
|
# wheel-inspect
|
|
211
|
-
wheel-inspect==1.
|
|
205
|
+
wheel-inspect==1.8.0
|
|
212
206
|
# via -r core-requirements.txt
|
|
213
|
-
wrapt==
|
|
207
|
+
wrapt==2.5.1
|
|
214
208
|
# via deprecated
|
|
215
|
-
|
|
216
|
-
# via importlib-metadata
|
|
217
|
-
zope-deprecation==5.1
|
|
209
|
+
zope-deprecation==6.0
|
|
218
210
|
# via pyramid
|
|
219
|
-
zope-interface==7
|
|
211
|
+
zope-interface==8.7
|
|
220
212
|
# via pyramid
|
|
221
213
|
|
|
222
214
|
# The following packages are considered to be unsafe in a requirements file:
|
|
223
215
|
# pip
|
|
224
|
-
# setuptools
|
|
@@ -19,7 +19,7 @@ setup(
|
|
|
19
19
|
long_description_content_type='text/x-rst',
|
|
20
20
|
license='new BSD',
|
|
21
21
|
install_requires=requirements,
|
|
22
|
-
python_requires='>=3.
|
|
22
|
+
python_requires='>=3.11',
|
|
23
23
|
classifiers=[
|
|
24
24
|
'Development Status :: 5 - Production/Stable',
|
|
25
25
|
'Environment :: Console',
|
|
@@ -28,11 +28,11 @@ setup(
|
|
|
28
28
|
'License :: OSI Approved :: BSD License',
|
|
29
29
|
'Topic :: System :: Archiving :: Packaging',
|
|
30
30
|
'Programming Language :: Python :: 3',
|
|
31
|
-
'Programming Language :: Python :: 3.9',
|
|
32
|
-
'Programming Language :: Python :: 3.10',
|
|
33
31
|
'Programming Language :: Python :: 3.11',
|
|
34
32
|
'Programming Language :: Python :: 3.12',
|
|
35
33
|
'Programming Language :: Python :: 3.13',
|
|
34
|
+
'Programming Language :: Python :: 3.14',
|
|
35
|
+
'Programming Language :: Python :: 3.15',
|
|
36
36
|
],
|
|
37
37
|
entry_points={
|
|
38
38
|
'console_scripts': [
|
|
Binary file
|
|
@@ -9,7 +9,7 @@ from mock import patch
|
|
|
9
9
|
from devpi_plumber.server import TestServer
|
|
10
10
|
from devpi_plumber.client import DevpiClient, DevpiClientError
|
|
11
11
|
|
|
12
|
-
from devpi_builder.cli import main
|
|
12
|
+
from devpi_builder.cli import Processor, main
|
|
13
13
|
from devpi_builder import wheeler
|
|
14
14
|
|
|
15
15
|
|
|
@@ -188,6 +188,14 @@ def test_reports_junit_xml(devpi, tmpdir):
|
|
|
188
188
|
_assert_junit_xml_content(junit_filename)
|
|
189
189
|
|
|
190
190
|
|
|
191
|
+
def test_writes_empty_junit_xml_without_devpi(tmpdir):
|
|
192
|
+
junit_filename = str(tmpdir.join('junit.xml'))
|
|
193
|
+
|
|
194
|
+
Processor(None, None, None, junit_xml=junit_filename).build_packages([])
|
|
195
|
+
|
|
196
|
+
assert ET.parse(junit_filename).getroot().tag == 'testsuites'
|
|
197
|
+
|
|
198
|
+
|
|
191
199
|
def test_handles_non_ascii_build_output(tmpdir, monkeypatch):
|
|
192
200
|
|
|
193
201
|
with TestServer(USERS, {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
min_version = "4.0"
|
|
2
|
+
env_list = ["3.11", "3.12", "3.13", "3.14", "3.15"]
|
|
3
|
+
|
|
4
|
+
[env_run_base]
|
|
5
|
+
description = "run tests on {base_python}"
|
|
6
|
+
deps = ["-r requirements.txt", "--no-deps"]
|
|
7
|
+
commands = [["pytest", { replace = "posargs", default = ["--no-cov"], extend = true }]]
|
|
8
|
+
|
|
9
|
+
[env.compile]
|
|
10
|
+
description = "compile dependencies"
|
|
11
|
+
skip_install = true
|
|
12
|
+
deps = ["pip-tools"]
|
|
13
|
+
commands = [["pip-compile", "--no-emit-index-url", "--strip-extras", "--unsafe-package", "pip", { replace = "posargs", extend = true }]]
|
|
14
|
+
base_python = "3.11"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.9
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
devpi-plumber>=0.2.14
|
|
2
|
-
setuptools<82 # setuptools 82 drops pkg_resources
|
|
3
|
-
wheel
|
|
4
|
-
wheel-filename<2 # wheel-filename 2 breaks imports of InvalidFilenameError, parse_wheel_filename
|
|
5
|
-
wheel-inspect>=1.6.0
|
|
6
|
-
pip>=1.5.3
|
|
7
|
-
junit-xml>=1.9 # First version to support to_xml_report_file
|
|
8
|
-
pip-requirements-parser>=32.0.1
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/pure_package/test_package/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devpi_builder-7.0.0 → devpi_builder-7.1.0}/tests/fixture/sample_multiple_versions_on_line.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|