devpi-builder 6.1.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-6.1.0 → devpi_builder-7.1.0}/.github/workflows/tests.yml +4 -7
- {devpi-builder-6.1.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-6.1.0 → devpi_builder-7.1.0}/CHANGELOG.rst +47 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/PKG-INFO +68 -10
- devpi_builder-7.1.0/core-requirements.txt +8 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder/cli.py +3 -4
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder/requirements.py +4 -4
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder/wheeler.py +9 -7
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/PKG-INFO +68 -10
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/SOURCES.txt +6 -3
- {devpi-builder-6.1.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.1.0/pyproject.toml +8 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/requirements.in +2 -1
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/requirements.txt +112 -125
- devpi_builder-7.1.0/setup.cfg +4 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/setup.py +5 -8
- devpi_builder-7.1.0/tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/test_cli.py +30 -13
- devpi_builder-7.1.0/tox.toml +14 -0
- devpi-builder-6.1.0/core-requirements.txt +0 -8
- devpi-builder-6.1.0/setup.cfg +0 -10
- devpi-builder-6.1.0/tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz +0 -0
- devpi-builder-6.1.0/tests/fixture/non-ascii_package/setup.cfg +0 -2
- devpi-builder-6.1.0/tests/fixture/pure_package/setup.cfg +0 -2
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/.coveragerc +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/.github/workflows/publish.yml +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/.pyup.yml +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/COPYING +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/MANIFEST.in +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/README.rst +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder/__init__.py +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/dependency_links.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/entry_points.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/devpi_builder.egg-info/top_level.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/non-ascii_package/setup.py +0 -0
- {devpi-builder-6.1.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-6.1.0 → devpi_builder-7.1.0}/tests/fixture/non-pure_package/setup.cfg +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/non-pure_package/setup.py +0 -0
- {devpi-builder-6.1.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-6.1.0 → devpi_builder-7.1.0}/tests/fixture/pure_package/setup.py +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/pure_package/test_package/__init__.py +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_blacklist.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_comments.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_continue_on_failed.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_different_styles.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_inexact_version.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_junit.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_multiple_versions.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_multiple_versions_on_line.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_no_version.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_non-ascii.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_pure_and_non-pure.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_simple.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_test_package.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/fixture/sample_vcs.txt +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/test_requirements.py +0 -0
- {devpi-builder-6.1.0 → devpi_builder-7.1.0}/tests/test_wheeler.py +0 -0
|
@@ -10,8 +10,9 @@ jobs:
|
|
|
10
10
|
test:
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
strategy:
|
|
13
|
+
fail-fast: false
|
|
13
14
|
matrix:
|
|
14
|
-
python-version: ['3.
|
|
15
|
+
python-version: ['3.11', '3.12', '3.13', '3.14', '3.15']
|
|
15
16
|
steps:
|
|
16
17
|
- uses: actions/checkout@v3
|
|
17
18
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -21,15 +22,11 @@ jobs:
|
|
|
21
22
|
- name: Install dependencies
|
|
22
23
|
run: |
|
|
23
24
|
python -m pip install --upgrade pip
|
|
24
|
-
python -m pip install
|
|
25
|
-
python -m pip install --no-deps -e .
|
|
26
|
-
python -m pip install coveralls
|
|
25
|
+
python -m pip install tox coveralls
|
|
27
26
|
python -m pip freeze
|
|
28
|
-
python -m pip --version
|
|
29
|
-
python -c 'import setuptools; print(f"setuptools=={setuptools.__version__}")'
|
|
30
27
|
- name: Test with pytest
|
|
31
28
|
run: |
|
|
32
|
-
|
|
29
|
+
tox -e ${{ matrix.python-version }} -- --cov
|
|
33
30
|
- name: Upload coverage data
|
|
34
31
|
run: |
|
|
35
32
|
coveralls --service=github
|
|
@@ -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,53 @@ 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
|
+
|
|
34
|
+
|
|
35
|
+
Version 7.0.0 - 2026-02-16
|
|
36
|
+
==========================
|
|
37
|
+
|
|
38
|
+
Added
|
|
39
|
+
-----
|
|
40
|
+
|
|
41
|
+
* Support for Python 3.12 and 3.13.
|
|
42
|
+
* Compatibility with junit-xml >= 2.0.
|
|
43
|
+
|
|
44
|
+
Fixed
|
|
45
|
+
-----
|
|
46
|
+
|
|
47
|
+
* Ensure Setuptools and ``wheel-filename`` are installed in compatible versions.
|
|
48
|
+
|
|
49
|
+
Removed
|
|
50
|
+
-------
|
|
51
|
+
|
|
52
|
+
* Python 3.6 to 3.8 are no longer supported. They likely still works but we will no longer run CI against it.
|
|
53
|
+
* Compatibility with junit-xml < 1.9. Junit-xml 1.9 was released more than three years ago.
|
|
7
54
|
|
|
8
55
|
Version 6.1.0 — 2023-09-22
|
|
9
56
|
==========================
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: devpi-builder
|
|
3
|
-
Version:
|
|
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,22 +13,33 @@ 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.7
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
20
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
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
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
|
-
Requires-Dist: junit-xml
|
|
30
|
+
Requires-Dist: junit-xml>=1.9
|
|
31
31
|
Requires-Dist: pip-requirements-parser>=32.0.1
|
|
32
|
+
Dynamic: author
|
|
33
|
+
Dynamic: author-email
|
|
34
|
+
Dynamic: classifier
|
|
35
|
+
Dynamic: description
|
|
36
|
+
Dynamic: description-content-type
|
|
37
|
+
Dynamic: home-page
|
|
38
|
+
Dynamic: license
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
Dynamic: requires-dist
|
|
41
|
+
Dynamic: requires-python
|
|
42
|
+
Dynamic: summary
|
|
32
43
|
|
|
33
44
|
=========================
|
|
34
45
|
Brandon the Devpi Builder
|
|
@@ -136,6 +147,53 @@ Changelog
|
|
|
136
147
|
|
|
137
148
|
This lists the most important changes for each release.
|
|
138
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
|
+
|
|
177
|
+
|
|
178
|
+
Version 7.0.0 - 2026-02-16
|
|
179
|
+
==========================
|
|
180
|
+
|
|
181
|
+
Added
|
|
182
|
+
-----
|
|
183
|
+
|
|
184
|
+
* Support for Python 3.12 and 3.13.
|
|
185
|
+
* Compatibility with junit-xml >= 2.0.
|
|
186
|
+
|
|
187
|
+
Fixed
|
|
188
|
+
-----
|
|
189
|
+
|
|
190
|
+
* Ensure Setuptools and ``wheel-filename`` are installed in compatible versions.
|
|
191
|
+
|
|
192
|
+
Removed
|
|
193
|
+
-------
|
|
194
|
+
|
|
195
|
+
* Python 3.6 to 3.8 are no longer supported. They likely still works but we will no longer run CI against it.
|
|
196
|
+
* Compatibility with junit-xml < 1.9. Junit-xml 1.9 was released more than three years ago.
|
|
139
197
|
|
|
140
198
|
Version 6.1.0 — 2023-09-22
|
|
141
199
|
==========================
|
|
@@ -5,13 +5,12 @@ 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
|
|
12
11
|
import os
|
|
13
12
|
|
|
14
|
-
from junit_xml import TestSuite, TestCase
|
|
13
|
+
from junit_xml import TestSuite, TestCase, to_xml_report_file
|
|
15
14
|
from devpi_plumber.client import DevpiClient, DevpiClientError
|
|
16
15
|
|
|
17
16
|
from devpi_builder import requirements, wheeler
|
|
@@ -125,9 +124,9 @@ 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
|
|
|
132
131
|
|
|
133
132
|
def main(args=None):
|
|
@@ -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
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: devpi-builder
|
|
3
|
-
Version:
|
|
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,22 +13,33 @@ 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.7
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
20
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
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
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
|
-
Requires-Dist: junit-xml
|
|
30
|
+
Requires-Dist: junit-xml>=1.9
|
|
31
31
|
Requires-Dist: pip-requirements-parser>=32.0.1
|
|
32
|
+
Dynamic: author
|
|
33
|
+
Dynamic: author-email
|
|
34
|
+
Dynamic: classifier
|
|
35
|
+
Dynamic: description
|
|
36
|
+
Dynamic: description-content-type
|
|
37
|
+
Dynamic: home-page
|
|
38
|
+
Dynamic: license
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
Dynamic: requires-dist
|
|
41
|
+
Dynamic: requires-python
|
|
42
|
+
Dynamic: summary
|
|
32
43
|
|
|
33
44
|
=========================
|
|
34
45
|
Brandon the Devpi Builder
|
|
@@ -136,6 +147,53 @@ Changelog
|
|
|
136
147
|
|
|
137
148
|
This lists the most important changes for each release.
|
|
138
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
|
+
|
|
177
|
+
|
|
178
|
+
Version 7.0.0 - 2026-02-16
|
|
179
|
+
==========================
|
|
180
|
+
|
|
181
|
+
Added
|
|
182
|
+
-----
|
|
183
|
+
|
|
184
|
+
* Support for Python 3.12 and 3.13.
|
|
185
|
+
* Compatibility with junit-xml >= 2.0.
|
|
186
|
+
|
|
187
|
+
Fixed
|
|
188
|
+
-----
|
|
189
|
+
|
|
190
|
+
* Ensure Setuptools and ``wheel-filename`` are installed in compatible versions.
|
|
191
|
+
|
|
192
|
+
Removed
|
|
193
|
+
-------
|
|
194
|
+
|
|
195
|
+
* Python 3.6 to 3.8 are no longer supported. They likely still works but we will no longer run CI against it.
|
|
196
|
+
* Compatibility with junit-xml < 1.9. Junit-xml 1.9 was released more than three years ago.
|
|
139
197
|
|
|
140
198
|
Version 6.1.0 — 2023-09-22
|
|
141
199
|
==========================
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
.coveragerc
|
|
2
2
|
.gitignore
|
|
3
|
+
.python-version
|
|
3
4
|
.pyup.yml
|
|
5
|
+
AGENTS.md
|
|
4
6
|
CHANGELOG.rst
|
|
5
7
|
COPYING
|
|
6
8
|
MANIFEST.in
|
|
7
9
|
README.rst
|
|
8
10
|
core-requirements.txt
|
|
11
|
+
pyproject.toml
|
|
9
12
|
requirements.in
|
|
10
13
|
requirements.txt
|
|
11
|
-
setup.cfg
|
|
12
14
|
setup.py
|
|
15
|
+
tox.toml
|
|
13
16
|
.github/workflows/publish.yml
|
|
14
17
|
.github/workflows/tests.yml
|
|
15
18
|
devpi_builder/__init__.py
|
|
@@ -21,6 +24,8 @@ devpi_builder.egg-info/SOURCES.txt
|
|
|
21
24
|
devpi_builder.egg-info/dependency_links.txt
|
|
22
25
|
devpi_builder.egg-info/entry_points.txt
|
|
23
26
|
devpi_builder.egg-info/requires.txt
|
|
27
|
+
devpi_builder.egg-info/scm_file_list.json
|
|
28
|
+
devpi_builder.egg-info/scm_version.json
|
|
24
29
|
devpi_builder.egg-info/top_level.txt
|
|
25
30
|
tests/test_cli.py
|
|
26
31
|
tests/test_requirements.py
|
|
@@ -39,13 +44,11 @@ tests/fixture/sample_pure_and_non-pure.txt
|
|
|
39
44
|
tests/fixture/sample_simple.txt
|
|
40
45
|
tests/fixture/sample_test_package.txt
|
|
41
46
|
tests/fixture/sample_vcs.txt
|
|
42
|
-
tests/fixture/non-ascii_package/setup.cfg
|
|
43
47
|
tests/fixture/non-ascii_package/setup.py
|
|
44
48
|
tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz
|
|
45
49
|
tests/fixture/non-pure_package/setup.cfg
|
|
46
50
|
tests/fixture/non-pure_package/setup.py
|
|
47
51
|
tests/fixture/non-pure_package/dist/test_package-0.1.dev1-cp27-none-linux_x86_64.whl
|
|
48
|
-
tests/fixture/pure_package/setup.cfg
|
|
49
52
|
tests/fixture/pure_package/setup.py
|
|
50
53
|
tests/fixture/pure_package/dist/test_package-0.1.dev1-py2.py3-none-any.whl
|
|
51
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,193 +1,181 @@
|
|
|
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
|
|
5
|
+
# pip-compile --no-emit-index-url --strip-extras --unsafe-package=pip
|
|
6
6
|
#
|
|
7
|
-
|
|
8
|
-
# via
|
|
9
|
-
|
|
10
|
-
# via aiohttp
|
|
11
|
-
argon2-cffi==21.3.0
|
|
7
|
+
anyio==4.15.1
|
|
8
|
+
# via httpx
|
|
9
|
+
argon2-cffi==25.1.0
|
|
12
10
|
# via
|
|
13
11
|
# devpi-server
|
|
14
12
|
# passlib
|
|
15
|
-
argon2-cffi-bindings==
|
|
13
|
+
argon2-cffi-bindings==26.1.0
|
|
16
14
|
# via argon2-cffi
|
|
17
|
-
|
|
18
|
-
# via aiohttp
|
|
19
|
-
attrs==21.4.0
|
|
15
|
+
attrs==26.1.0
|
|
20
16
|
# via
|
|
21
|
-
# aiohttp
|
|
22
17
|
# devpi-server
|
|
23
|
-
#
|
|
18
|
+
# headerparser
|
|
24
19
|
# wheel-inspect
|
|
25
|
-
|
|
26
|
-
# via readme-renderer
|
|
27
|
-
build==0.8.0
|
|
28
|
-
# via check-manifest
|
|
29
|
-
certifi==2023.7.22
|
|
30
|
-
# via requests
|
|
31
|
-
cffi==1.15.0
|
|
32
|
-
# via argon2-cffi-bindings
|
|
33
|
-
charset-normalizer==2.0.12
|
|
20
|
+
build==1.6.1
|
|
34
21
|
# via
|
|
35
|
-
#
|
|
22
|
+
# check-manifest
|
|
23
|
+
# devpi-client
|
|
24
|
+
certifi==2026.7.22
|
|
25
|
+
# via
|
|
26
|
+
# httpcore
|
|
27
|
+
# httpx
|
|
36
28
|
# requests
|
|
37
|
-
|
|
29
|
+
cffi==2.1.1
|
|
30
|
+
# via argon2-cffi-bindings
|
|
31
|
+
charset-normalizer==3.5.2
|
|
32
|
+
# via requests
|
|
33
|
+
check-manifest==0.51
|
|
38
34
|
# via devpi-client
|
|
39
|
-
coverage
|
|
35
|
+
coverage==7.16.2
|
|
40
36
|
# via pytest-cov
|
|
41
37
|
defusedxml==0.7.1
|
|
42
38
|
# via devpi-server
|
|
43
|
-
|
|
39
|
+
deprecated==1.3.1
|
|
40
|
+
# via headerparser
|
|
41
|
+
devpi-client==7.3.0
|
|
44
42
|
# via devpi-plumber
|
|
45
|
-
devpi-common==
|
|
43
|
+
devpi-common==4.1.1
|
|
46
44
|
# via
|
|
47
45
|
# devpi-client
|
|
48
46
|
# devpi-server
|
|
49
|
-
devpi-plumber
|
|
47
|
+
devpi-plumber==0.7.0
|
|
50
48
|
# via
|
|
51
49
|
# -r core-requirements.txt
|
|
52
50
|
# -r requirements.in
|
|
53
|
-
devpi-server==6.
|
|
51
|
+
devpi-server==6.20.3
|
|
54
52
|
# via devpi-plumber
|
|
55
|
-
|
|
56
|
-
# via virtualenv
|
|
57
|
-
docutils==0.19
|
|
53
|
+
docutils==0.23
|
|
58
54
|
# via readme-renderer
|
|
59
|
-
entry-points-txt==0.
|
|
55
|
+
entry-points-txt==0.3.0
|
|
60
56
|
# via wheel-inspect
|
|
61
|
-
|
|
62
|
-
# via
|
|
63
|
-
|
|
64
|
-
# virtualenv
|
|
65
|
-
frozenlist==1.3.3
|
|
66
|
-
# via
|
|
67
|
-
# aiohttp
|
|
68
|
-
# aiosignal
|
|
69
|
-
headerparser==0.4.0
|
|
57
|
+
h11==0.16.0
|
|
58
|
+
# via httpcore
|
|
59
|
+
headerparser==0.5.2
|
|
70
60
|
# via wheel-inspect
|
|
71
|
-
|
|
61
|
+
httpcore==1.0.9
|
|
62
|
+
# via httpx
|
|
63
|
+
httpx==0.28.1
|
|
64
|
+
# via devpi-server
|
|
65
|
+
hupper==1.12.1
|
|
72
66
|
# via pyramid
|
|
73
|
-
idna==3.
|
|
67
|
+
idna==3.20
|
|
74
68
|
# via
|
|
69
|
+
# anyio
|
|
70
|
+
# httpx
|
|
75
71
|
# requests
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
#
|
|
79
|
-
|
|
72
|
+
iniconfig==2.3.1
|
|
73
|
+
# via
|
|
74
|
+
# devpi-client
|
|
75
|
+
# pytest
|
|
76
|
+
itsdangerous==2.2.0
|
|
80
77
|
# via devpi-server
|
|
81
78
|
junit-xml==1.9
|
|
82
79
|
# via -r core-requirements.txt
|
|
83
|
-
lazy==
|
|
80
|
+
lazy==2.0
|
|
84
81
|
# via
|
|
85
82
|
# devpi-common
|
|
86
83
|
# devpi-server
|
|
87
|
-
|
|
84
|
+
legacy-cgi==2.6.4
|
|
88
85
|
# via -r requirements.in
|
|
89
|
-
|
|
90
|
-
# via
|
|
91
|
-
|
|
92
|
-
#
|
|
93
|
-
packaging==
|
|
86
|
+
mock==5.2.0
|
|
87
|
+
# via -r requirements.in
|
|
88
|
+
nh3==0.3.7
|
|
89
|
+
# via readme-renderer
|
|
90
|
+
packaging==26.3
|
|
94
91
|
# via
|
|
95
92
|
# build
|
|
93
|
+
# packaging-legacy
|
|
96
94
|
# pip-requirements-parser
|
|
97
95
|
# pytest
|
|
98
96
|
# setuptools-scm
|
|
99
|
-
#
|
|
97
|
+
# vcs-versioning
|
|
98
|
+
# wheel
|
|
100
99
|
# wheel-inspect
|
|
101
|
-
|
|
100
|
+
packaging-legacy==23.0.post0
|
|
101
|
+
# via devpi-common
|
|
102
|
+
passlib==1.7.4
|
|
102
103
|
# via devpi-server
|
|
103
|
-
pastedeploy==
|
|
104
|
+
pastedeploy==3.1.0
|
|
104
105
|
# via plaster-pastedeploy
|
|
105
|
-
pep517==0.12.0
|
|
106
|
-
# via build
|
|
107
106
|
pip-requirements-parser==32.0.1
|
|
108
107
|
# via -r core-requirements.txt
|
|
109
|
-
pkginfo==1.
|
|
108
|
+
pkginfo==1.13.1
|
|
110
109
|
# via devpi-client
|
|
111
|
-
plaster==1.
|
|
110
|
+
plaster==1.1.2
|
|
112
111
|
# via
|
|
113
112
|
# plaster-pastedeploy
|
|
114
113
|
# pyramid
|
|
115
|
-
plaster-pastedeploy==0.
|
|
114
|
+
plaster-pastedeploy==1.0.1
|
|
116
115
|
# via pyramid
|
|
117
|
-
platformdirs==
|
|
118
|
-
# via
|
|
119
|
-
# devpi-server
|
|
120
|
-
# virtualenv
|
|
121
|
-
pluggy==1.0.0
|
|
116
|
+
platformdirs==4.13.3
|
|
122
117
|
# via
|
|
123
118
|
# devpi-client
|
|
124
119
|
# devpi-server
|
|
125
|
-
|
|
126
|
-
# tox
|
|
127
|
-
py==1.11.0
|
|
120
|
+
pluggy==1.7.0
|
|
128
121
|
# via
|
|
129
122
|
# devpi-client
|
|
130
|
-
# devpi-common
|
|
131
123
|
# devpi-server
|
|
132
124
|
# pytest
|
|
133
|
-
#
|
|
134
|
-
|
|
125
|
+
# pytest-cov
|
|
126
|
+
py==1.11.0
|
|
127
|
+
# via devpi-server
|
|
128
|
+
pycparser==3.11
|
|
135
129
|
# via cffi
|
|
136
|
-
pygments==2.
|
|
137
|
-
# via readme-renderer
|
|
138
|
-
pyparsing==3.0.9
|
|
130
|
+
pygments==2.21.0
|
|
139
131
|
# via
|
|
140
|
-
#
|
|
141
|
-
#
|
|
142
|
-
|
|
132
|
+
# pytest
|
|
133
|
+
# readme-renderer
|
|
134
|
+
pyparsing==3.3.3
|
|
135
|
+
# via pip-requirements-parser
|
|
136
|
+
pyproject-hooks==1.3.3
|
|
137
|
+
# via build
|
|
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
|
-
python-dateutil==2.
|
|
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
|
-
six==1.
|
|
173
|
+
six==1.17.0
|
|
170
174
|
# via
|
|
171
|
-
# bleach
|
|
172
|
-
# headerparser
|
|
173
175
|
# junit-xml
|
|
174
176
|
# python-dateutil
|
|
175
|
-
|
|
176
|
-
# virtualenv
|
|
177
|
-
strictyaml==1.6.1
|
|
177
|
+
strictyaml==1.7.3
|
|
178
178
|
# via devpi-server
|
|
179
|
-
toml==0.10.2
|
|
180
|
-
# via tox
|
|
181
|
-
tomli==2.0.1
|
|
182
|
-
# via
|
|
183
|
-
# build
|
|
184
|
-
# check-manifest
|
|
185
|
-
# coverage
|
|
186
|
-
# pep517
|
|
187
|
-
# pytest
|
|
188
|
-
# setuptools-scm
|
|
189
|
-
tox==3.25.0
|
|
190
|
-
# via devpi-client
|
|
191
179
|
translationstring==1.4
|
|
192
180
|
# via pyramid
|
|
193
181
|
twitter-common-contextutil==0.3.11
|
|
@@ -196,33 +184,32 @@ twitter-common-dirutil==0.3.11
|
|
|
196
184
|
# via twitter-common-contextutil
|
|
197
185
|
twitter-common-lang==0.3.11
|
|
198
186
|
# via twitter-common-dirutil
|
|
199
|
-
|
|
187
|
+
typing-extensions==4.16.0
|
|
188
|
+
# via anyio
|
|
189
|
+
urllib3==2.8.0
|
|
200
190
|
# via requests
|
|
201
|
-
|
|
191
|
+
vcs-versioning==2.6.0
|
|
192
|
+
# via setuptools-scm
|
|
193
|
+
venusian==3.1.1
|
|
202
194
|
# via pyramid
|
|
203
|
-
|
|
204
|
-
# via tox
|
|
205
|
-
waitress==2.1.2
|
|
195
|
+
waitress==3.0.2
|
|
206
196
|
# via devpi-server
|
|
207
|
-
|
|
208
|
-
# via bleach
|
|
209
|
-
webob==1.8.7
|
|
197
|
+
webob==1.8.11
|
|
210
198
|
# via pyramid
|
|
211
|
-
wheel==0.
|
|
199
|
+
wheel==0.48.0
|
|
212
200
|
# via -r core-requirements.txt
|
|
213
|
-
wheel-filename==1.
|
|
201
|
+
wheel-filename==2.1.0
|
|
214
202
|
# via
|
|
215
203
|
# -r core-requirements.txt
|
|
216
204
|
# wheel-inspect
|
|
217
|
-
wheel-inspect==1.
|
|
205
|
+
wheel-inspect==1.8.0
|
|
218
206
|
# via -r core-requirements.txt
|
|
219
|
-
|
|
220
|
-
# via
|
|
221
|
-
zope-deprecation==
|
|
207
|
+
wrapt==2.5.1
|
|
208
|
+
# via deprecated
|
|
209
|
+
zope-deprecation==6.0
|
|
222
210
|
# via pyramid
|
|
223
|
-
zope-interface==
|
|
211
|
+
zope-interface==8.7
|
|
224
212
|
# via pyramid
|
|
225
213
|
|
|
226
214
|
# The following packages are considered to be unsafe in a requirements file:
|
|
227
215
|
# pip
|
|
228
|
-
# setuptools
|
|
@@ -19,10 +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.
|
|
23
|
-
setup_requires=[
|
|
24
|
-
'setuptools_scm',
|
|
25
|
-
],
|
|
22
|
+
python_requires='>=3.11',
|
|
26
23
|
classifiers=[
|
|
27
24
|
'Development Status :: 5 - Production/Stable',
|
|
28
25
|
'Environment :: Console',
|
|
@@ -31,11 +28,11 @@ setup(
|
|
|
31
28
|
'License :: OSI Approved :: BSD License',
|
|
32
29
|
'Topic :: System :: Archiving :: Packaging',
|
|
33
30
|
'Programming Language :: Python :: 3',
|
|
34
|
-
'Programming Language :: Python :: 3.7',
|
|
35
|
-
'Programming Language :: Python :: 3.8',
|
|
36
|
-
'Programming Language :: Python :: 3.9',
|
|
37
|
-
'Programming Language :: Python :: 3.10',
|
|
38
31
|
'Programming Language :: Python :: 3.11',
|
|
32
|
+
'Programming Language :: Python :: 3.12',
|
|
33
|
+
'Programming Language :: Python :: 3.13',
|
|
34
|
+
'Programming Language :: Python :: 3.14',
|
|
35
|
+
'Programming Language :: Python :: 3.15',
|
|
39
36
|
],
|
|
40
37
|
entry_points={
|
|
41
38
|
'console_scripts': [
|
|
Binary file
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
import xml.etree.ElementTree as ET
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
|
+
import requests
|
|
6
7
|
|
|
7
8
|
from mock import patch
|
|
8
9
|
from devpi_plumber.server import TestServer
|
|
9
10
|
from devpi_plumber.client import DevpiClient, DevpiClientError
|
|
10
11
|
|
|
11
|
-
from devpi_builder.cli import main
|
|
12
|
+
from devpi_builder.cli import Processor, main
|
|
12
13
|
from devpi_builder import wheeler
|
|
13
14
|
|
|
14
15
|
|
|
@@ -26,7 +27,7 @@ INDICES = {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
|
|
29
|
-
@pytest.
|
|
30
|
+
@pytest.fixture()
|
|
30
31
|
def devpi():
|
|
31
32
|
with TestServer(USERS, INDICES) as _devpi:
|
|
32
33
|
yield _devpi
|
|
@@ -187,20 +188,36 @@ def test_reports_junit_xml(devpi, tmpdir):
|
|
|
187
188
|
_assert_junit_xml_content(junit_filename)
|
|
188
189
|
|
|
189
190
|
|
|
190
|
-
def
|
|
191
|
-
|
|
191
|
+
def test_writes_empty_junit_xml_without_devpi(tmpdir):
|
|
192
|
+
junit_filename = str(tmpdir.join('junit.xml'))
|
|
192
193
|
|
|
193
|
-
|
|
194
|
-
USER,
|
|
195
|
-
PASSWORD) as client:
|
|
196
|
-
client.upload('tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz')
|
|
194
|
+
Processor(None, None, None, junit_xml=junit_filename).build_packages([])
|
|
197
195
|
|
|
198
|
-
|
|
196
|
+
assert ET.parse(junit_filename).getroot().tag == 'testsuites'
|
|
199
197
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
198
|
+
|
|
199
|
+
def test_handles_non_ascii_build_output(tmpdir, monkeypatch):
|
|
200
|
+
|
|
201
|
+
with TestServer(USERS, {
|
|
202
|
+
PURE_INDEX: {'bases': '/root/pypi'},
|
|
203
|
+
INDEX: {'bases': ''},
|
|
204
|
+
}) as devpi:
|
|
205
|
+
sdist_index = devpi.url + '/' + PURE_INDEX
|
|
206
|
+
|
|
207
|
+
monkeypatch.setenv('PIP_INDEX_URL', sdist_index)
|
|
208
|
+
|
|
209
|
+
# trigger retrieval of setuptools from upstream as that can take forever
|
|
210
|
+
requests.get(sdist_index + '/+simple/setuptools/', timeout=300).raise_for_status()
|
|
211
|
+
|
|
212
|
+
with DevpiClient(sdist_index, USER, PASSWORD) as client:
|
|
213
|
+
client.upload('tests/fixture/non-ascii_package/dist/non-ascii-package-0.1.dev1.tar.gz')
|
|
214
|
+
|
|
215
|
+
junit_filename = str(tmpdir.join('junit.xml'))
|
|
216
|
+
|
|
217
|
+
# our main assertion is that the main does not fail
|
|
218
|
+
main(['tests/fixture/sample_non-ascii.txt', devpi.url + '/' + INDEX,
|
|
219
|
+
'--user={}'.format(USER),
|
|
220
|
+
'--password={}'.format(PASSWORD), '--junit-xml', junit_filename])
|
|
204
221
|
|
|
205
222
|
# check that the build failure shows up in the build output
|
|
206
223
|
assert 'No non-ascii 4 you!' in open(junit_filename).read()
|
|
@@ -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"
|
devpi-builder-6.1.0/setup.cfg
DELETED
|
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
|
{devpi-builder-6.1.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-6.1.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
|