devpi-process 1.1.1__tar.gz → 1.3.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_process-1.3.0/.github/FUNDING.yaml +3 -0
- devpi_process-1.3.0/.github/dependabot.yaml +13 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.github/workflows/check.yaml +12 -9
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.github/workflows/release.yaml +13 -12
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.markdownlint.yaml +0 -1
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.pre-commit-config.yaml +25 -11
- {devpi_process-1.1.1 → devpi_process-1.3.0}/PKG-INFO +6 -7
- {devpi_process-1.1.1 → devpi_process-1.3.0}/pyproject.toml +31 -32
- {devpi_process-1.1.1 → devpi_process-1.3.0}/src/devpi_process/__init__.py +10 -14
- devpi_process-1.3.0/src/devpi_process/_version.py +24 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/tests/demo_pkg_inline/build.py +5 -5
- {devpi_process-1.1.1 → devpi_process-1.3.0}/tests/test_devpi_process.py +5 -3
- {devpi_process-1.1.1 → devpi_process-1.3.0}/tox.toml +8 -4
- devpi_process-1.1.1/.github/FUNDING.yaml +0 -1
- devpi_process-1.1.1/.github/dependabot.yaml +0 -6
- devpi_process-1.1.1/src/devpi_process/_version.py +0 -34
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.github/SECURITY.md +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.github/release.yaml +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/.gitignore +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/CHANGELOG.md +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/CODE_OF_CONDUCT.md +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/LICENSE.txt +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/README.md +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/src/devpi_process/py.typed +0 -0
- {devpi_process-1.1.1 → devpi_process-1.3.0}/tests/demo_pkg_inline/pyproject.toml +0 -0
|
@@ -7,40 +7,43 @@ on:
|
|
|
7
7
|
pull_request:
|
|
8
8
|
schedule:
|
|
9
9
|
- cron: "0 8 * * *"
|
|
10
|
-
|
|
11
10
|
concurrency:
|
|
12
11
|
group: check-${{ github.ref }}
|
|
13
12
|
cancel-in-progress: true
|
|
14
|
-
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
15
|
jobs:
|
|
16
16
|
test:
|
|
17
|
-
runs-on: ubuntu-
|
|
17
|
+
runs-on: ubuntu-26.04
|
|
18
18
|
strategy:
|
|
19
19
|
fail-fast: false
|
|
20
20
|
matrix:
|
|
21
21
|
env:
|
|
22
|
+
- "3.15"
|
|
23
|
+
- "3.15t"
|
|
22
24
|
- "3.14"
|
|
23
25
|
- "3.13"
|
|
24
26
|
- "3.12"
|
|
25
27
|
- "3.11"
|
|
26
|
-
- "3.10"
|
|
27
28
|
- type
|
|
28
29
|
- dev
|
|
29
30
|
- pkg_meta
|
|
30
31
|
steps:
|
|
31
|
-
- uses: actions/checkout@
|
|
32
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
32
33
|
with:
|
|
33
34
|
fetch-depth: 0
|
|
35
|
+
persist-credentials: false
|
|
34
36
|
- name: Install the latest version of uv
|
|
35
|
-
uses: astral-sh/setup-uv@
|
|
37
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
36
38
|
with:
|
|
37
|
-
|
|
39
|
+
python-version: "3.15"
|
|
40
|
+
enable-cache: false
|
|
38
41
|
cache-dependency-glob: "pyproject.toml"
|
|
39
42
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
40
43
|
- name: Install tox
|
|
41
|
-
run: uv tool install --python-preference only-managed --python 3.
|
|
44
|
+
run: uv tool install --python-preference only-managed --python 3.15 tox --with tox-uv
|
|
42
45
|
- name: Install Python
|
|
43
|
-
if: startsWith(matrix.env, '3.') && matrix.env != '3.
|
|
46
|
+
if: startsWith(matrix.env, '3.') && matrix.env != '3.15'
|
|
44
47
|
run: uv python install --python-preference only-managed ${{ matrix.env }}
|
|
45
48
|
- name: Setup test suite
|
|
46
49
|
run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.env }}
|
|
@@ -2,35 +2,36 @@ name: Release to PyPI
|
|
|
2
2
|
on:
|
|
3
3
|
push:
|
|
4
4
|
tags: ["*"]
|
|
5
|
-
|
|
5
|
+
permissions:
|
|
6
|
+
contents: read
|
|
6
7
|
env:
|
|
7
8
|
dists-artifact-name: python-package-distributions
|
|
8
|
-
|
|
9
9
|
jobs:
|
|
10
10
|
build:
|
|
11
|
-
runs-on: ubuntu-
|
|
11
|
+
runs-on: ubuntu-26.04
|
|
12
12
|
steps:
|
|
13
|
-
- uses: actions/checkout@
|
|
13
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
14
14
|
with:
|
|
15
15
|
fetch-depth: 0
|
|
16
|
+
persist-credentials: false
|
|
16
17
|
- name: Install the latest version of uv
|
|
17
|
-
uses: astral-sh/setup-uv@
|
|
18
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
18
19
|
with:
|
|
19
|
-
|
|
20
|
+
python-version: "3.15"
|
|
21
|
+
enable-cache: false
|
|
20
22
|
cache-dependency-glob: "pyproject.toml"
|
|
21
23
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
22
24
|
- name: Build package
|
|
23
|
-
run: uv build --python 3.
|
|
25
|
+
run: uv build --python 3.15 --python-preference only-managed --sdist --wheel . --out-dir dist
|
|
24
26
|
- name: Store the distribution packages
|
|
25
|
-
uses: actions/upload-artifact@
|
|
27
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
26
28
|
with:
|
|
27
29
|
name: ${{ env.dists-artifact-name }}
|
|
28
30
|
path: dist/*
|
|
29
|
-
|
|
30
31
|
release:
|
|
31
32
|
needs:
|
|
32
33
|
- build
|
|
33
|
-
runs-on: ubuntu-
|
|
34
|
+
runs-on: ubuntu-26.04
|
|
34
35
|
environment:
|
|
35
36
|
name: release
|
|
36
37
|
url: https://pypi.org/project/devpi-process/${{ github.ref_name }}
|
|
@@ -38,11 +39,11 @@ jobs:
|
|
|
38
39
|
id-token: write
|
|
39
40
|
steps:
|
|
40
41
|
- name: Download all the dists
|
|
41
|
-
uses: actions/download-artifact@
|
|
42
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
42
43
|
with:
|
|
43
44
|
name: ${{ env.dists-artifact-name }}
|
|
44
45
|
path: dist/
|
|
45
46
|
- name: Publish to PyPI
|
|
46
|
-
uses: pypa/gh-action-pypi-publish@v1.
|
|
47
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
47
48
|
with:
|
|
48
49
|
attestations: true
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
default_language_version:
|
|
2
|
+
python: python3.15
|
|
1
3
|
repos:
|
|
2
4
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
5
|
rev: v6.0.0
|
|
@@ -5,34 +7,46 @@ repos:
|
|
|
5
7
|
- id: end-of-file-fixer
|
|
6
8
|
- id: trailing-whitespace
|
|
7
9
|
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
8
|
-
rev: 0.
|
|
10
|
+
rev: 0.38.2
|
|
9
11
|
hooks:
|
|
10
12
|
- id: check-github-workflows
|
|
11
13
|
args: ["--verbose"]
|
|
12
14
|
- repo: https://github.com/codespell-project/codespell
|
|
13
|
-
rev: v2.4.
|
|
15
|
+
rev: v2.4.3
|
|
14
16
|
hooks:
|
|
15
17
|
- id: codespell
|
|
16
|
-
additional_dependencies: ["tomli>=2.2.1"]
|
|
17
18
|
- repo: https://github.com/tox-dev/tox-toml-fmt
|
|
18
|
-
rev: "v1.
|
|
19
|
+
rev: "v1.11.0"
|
|
19
20
|
hooks:
|
|
20
21
|
- id: tox-toml-fmt
|
|
21
22
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
22
|
-
rev: "v2.
|
|
23
|
+
rev: "v2.30.1"
|
|
23
24
|
hooks:
|
|
24
25
|
- id: pyproject-fmt
|
|
25
26
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
26
|
-
rev: "v0.
|
|
27
|
+
rev: "v0.16.10"
|
|
27
28
|
hooks:
|
|
28
29
|
- id: ruff-format
|
|
29
30
|
- id: ruff
|
|
30
31
|
args: ["--fix", "--unsafe-fixes", "--exit-non-zero-on-fix"]
|
|
31
|
-
- repo: https://github.com/
|
|
32
|
-
rev: "
|
|
33
|
-
hooks:
|
|
34
|
-
- id:
|
|
35
|
-
|
|
32
|
+
- repo: https://github.com/google/yamlfmt
|
|
33
|
+
rev: "v0.21.0"
|
|
34
|
+
hooks:
|
|
35
|
+
- id: yamlfmt
|
|
36
|
+
- repo: local
|
|
37
|
+
hooks:
|
|
38
|
+
- id: mdformat
|
|
39
|
+
name: mdformat
|
|
40
|
+
entry: mdformat --wrap 120
|
|
41
|
+
language: python
|
|
42
|
+
types: [markdown]
|
|
43
|
+
additional_dependencies:
|
|
44
|
+
- mdformat-gfm>=1
|
|
45
|
+
- mdformat-ruff>=0.1.3
|
|
46
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
47
|
+
rev: v1.30.1
|
|
48
|
+
hooks:
|
|
49
|
+
- id: zizmor
|
|
36
50
|
- repo: meta
|
|
37
51
|
hooks:
|
|
38
52
|
- id: check-hooks-apply
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: devpi-process
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: devpi process provides a programmatic API to create and use a devpi server process
|
|
5
5
|
Project-URL: Homepage, https://github.com/tox-dev/devpi-process#readme
|
|
6
6
|
Project-URL: Source, https://github.com/tox-dev/devpi-process
|
|
@@ -18,18 +18,17 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
18
18
|
Classifier: Operating System :: Microsoft :: Windows
|
|
19
19
|
Classifier: Operating System :: POSIX
|
|
20
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
26
26
|
Classifier: Topic :: Software Development :: Libraries
|
|
27
27
|
Classifier: Topic :: Software Development :: Testing
|
|
28
28
|
Classifier: Topic :: Utilities
|
|
29
|
-
Requires-Python: >=3.
|
|
30
|
-
Requires-Dist: devpi-client>=7.
|
|
31
|
-
Requires-Dist: devpi-server>=6.
|
|
32
|
-
Requires-Dist: typing-extensions>=4.15; python_version < '3.11'
|
|
29
|
+
Requires-Python: >=3.11
|
|
30
|
+
Requires-Dist: devpi-client>=7.3
|
|
31
|
+
Requires-Dist: devpi-server>=6.20.3
|
|
33
32
|
Description-Content-Type: text/markdown
|
|
34
33
|
|
|
35
34
|
# devpi-process
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
build-backend = "hatchling.build"
|
|
3
3
|
requires = [
|
|
4
4
|
"hatch-vcs>=0.5",
|
|
5
|
-
"hatchling>=1.
|
|
5
|
+
"hatchling>=1.32.4",
|
|
6
6
|
]
|
|
7
7
|
|
|
8
8
|
[project]
|
|
@@ -23,7 +23,7 @@ maintainers = [
|
|
|
23
23
|
authors = [
|
|
24
24
|
{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" },
|
|
25
25
|
]
|
|
26
|
-
requires-python = ">=3.
|
|
26
|
+
requires-python = ">=3.11"
|
|
27
27
|
classifiers = [
|
|
28
28
|
"Development Status :: 5 - Production/Stable",
|
|
29
29
|
"Framework :: tox",
|
|
@@ -33,11 +33,11 @@ classifiers = [
|
|
|
33
33
|
"Operating System :: Microsoft :: Windows",
|
|
34
34
|
"Operating System :: POSIX",
|
|
35
35
|
"Programming Language :: Python :: 3 :: Only",
|
|
36
|
-
"Programming Language :: Python :: 3.10",
|
|
37
36
|
"Programming Language :: Python :: 3.11",
|
|
38
37
|
"Programming Language :: Python :: 3.12",
|
|
39
38
|
"Programming Language :: Python :: 3.13",
|
|
40
39
|
"Programming Language :: Python :: 3.14",
|
|
40
|
+
"Programming Language :: Python :: 3.15",
|
|
41
41
|
"Topic :: Software Development :: Libraries",
|
|
42
42
|
"Topic :: Software Development :: Testing",
|
|
43
43
|
"Topic :: Utilities",
|
|
@@ -46,9 +46,8 @@ dynamic = [
|
|
|
46
46
|
"version",
|
|
47
47
|
]
|
|
48
48
|
dependencies = [
|
|
49
|
-
"devpi-client>=7.
|
|
50
|
-
"devpi-server>=6.
|
|
51
|
-
"typing-extensions>=4.15; python_version<'3.11'",
|
|
49
|
+
"devpi-client>=7.3",
|
|
50
|
+
"devpi-server>=6.20.3",
|
|
52
51
|
]
|
|
53
52
|
urls.Homepage = "https://github.com/tox-dev/devpi-process#readme"
|
|
54
53
|
urls.Source = "https://github.com/tox-dev/devpi-process"
|
|
@@ -64,25 +63,25 @@ dev = [
|
|
|
64
63
|
test = [
|
|
65
64
|
"covdefaults>=2.3",
|
|
66
65
|
"httpx>=0.28.1",
|
|
67
|
-
"pytest>=
|
|
68
|
-
"pytest-cov>=7",
|
|
66
|
+
"pytest>=9.1.1",
|
|
67
|
+
"pytest-cov>=7.1",
|
|
69
68
|
]
|
|
70
69
|
type = [
|
|
71
|
-
"ty>=0.0.
|
|
70
|
+
"ty>=0.0.84",
|
|
72
71
|
{ include-group = "test" },
|
|
73
72
|
]
|
|
74
73
|
lint = [
|
|
75
|
-
"pre-commit-uv>=4.
|
|
74
|
+
"pre-commit-uv>=4.3",
|
|
76
75
|
]
|
|
77
76
|
pkg-meta = [
|
|
78
77
|
"check-wheel-contents>=0.6.3",
|
|
79
|
-
"twine>=
|
|
80
|
-
"uv>=0.
|
|
78
|
+
"twine>=7",
|
|
79
|
+
"uv>=0.12.22",
|
|
81
80
|
]
|
|
82
81
|
|
|
83
82
|
[tool.hatch]
|
|
84
|
-
build.hooks.vcs.version-file = "src/devpi_process/_version.py"
|
|
85
83
|
version.source = "vcs"
|
|
84
|
+
build.hooks.vcs.version-file = "src/devpi_process/_version.py"
|
|
86
85
|
|
|
87
86
|
[tool.black]
|
|
88
87
|
line-length = 120
|
|
@@ -96,23 +95,23 @@ lint.select = [
|
|
|
96
95
|
"ALL",
|
|
97
96
|
]
|
|
98
97
|
lint.ignore = [
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
98
|
+
"any-type", # allow Any as type annotation
|
|
99
|
+
"CPY", # No copyright statements
|
|
100
|
+
"DOC", # not supported
|
|
101
|
+
"hardcoded-bind-all-interfaces", # Possible binding to all interface
|
|
102
|
+
"incorrect-blank-line-before-class", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible
|
|
103
|
+
"missing-trailing-comma", # Conflict with formatter
|
|
104
|
+
"multi-line-summary-first-line", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible
|
|
105
|
+
"non-empty-init-module", # `__init__` module should only contain docstrings and re-exports
|
|
106
|
+
"single-line-implicit-string-concatenation", # Conflict with formatter
|
|
108
107
|
]
|
|
109
108
|
lint.per-file-ignores."tests/**/*.py" = [
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
109
|
+
"assert", # asserts allowed in tests
|
|
110
|
+
"D", # don't care about documentation in tests
|
|
111
|
+
"FBT", # don't care about booleans as positional arguments in tests
|
|
112
|
+
"implicit-namespace-package", # no implicit namespace
|
|
113
|
+
"magic-value-comparison", # Magic value used in comparison, consider replacing with a constant variable
|
|
114
|
+
"subprocess-without-shell-equals-true", # `subprocess` call: check for execution of untrusted input
|
|
116
115
|
]
|
|
117
116
|
lint.isort = { known-first-party = [
|
|
118
117
|
"devpi_process",
|
|
@@ -127,7 +126,10 @@ write-changes = true
|
|
|
127
126
|
count = true
|
|
128
127
|
|
|
129
128
|
[tool.pyproject-fmt]
|
|
130
|
-
max_supported_python = "3.
|
|
129
|
+
max_supported_python = "3.15"
|
|
130
|
+
|
|
131
|
+
[tool.ty]
|
|
132
|
+
environment.python-version = "3.15"
|
|
131
133
|
|
|
132
134
|
[tool.coverage]
|
|
133
135
|
run.parallel = true
|
|
@@ -146,6 +148,3 @@ report.fail_under = 98
|
|
|
146
148
|
report.omit = []
|
|
147
149
|
html.show_contexts = true
|
|
148
150
|
html.skip_covered = false
|
|
149
|
-
|
|
150
|
-
[tool.ty]
|
|
151
|
-
environment.python-version = "3.14"
|
|
@@ -9,7 +9,7 @@ import sys
|
|
|
9
9
|
import sysconfig
|
|
10
10
|
from contextlib import closing
|
|
11
11
|
from pathlib import Path
|
|
12
|
-
from subprocess import PIPE, Popen, run #
|
|
12
|
+
from subprocess import PIPE, Popen, run # ruff:ignore[suspicious-subprocess-import]
|
|
13
13
|
from threading import Thread
|
|
14
14
|
from typing import IO, TYPE_CHECKING, cast
|
|
15
15
|
|
|
@@ -18,15 +18,11 @@ from ._version import __version__
|
|
|
18
18
|
if TYPE_CHECKING:
|
|
19
19
|
from collections.abc import Iterator, Sequence
|
|
20
20
|
from types import TracebackType
|
|
21
|
-
|
|
22
|
-
if sys.version_info >= (3, 11): # pragma: no cover (py311+)
|
|
23
|
-
from typing import Self
|
|
24
|
-
else: # pragma: no cover (<py311)
|
|
25
|
-
from typing_extensions import Self
|
|
21
|
+
from typing import Self
|
|
26
22
|
|
|
27
23
|
|
|
28
24
|
def _check_call(cmd: list[str]) -> None:
|
|
29
|
-
run(cmd, check=True, capture_output=True) #
|
|
25
|
+
run(cmd, check=True, capture_output=True) # ruff:ignore[subprocess-without-shell-equals-true]
|
|
30
26
|
|
|
31
27
|
|
|
32
28
|
class Index:
|
|
@@ -48,7 +44,7 @@ class Index:
|
|
|
48
44
|
|
|
49
45
|
@property
|
|
50
46
|
def url(self) -> str:
|
|
51
|
-
"""
|
|
47
|
+
"""The URL to the index server."""
|
|
52
48
|
return f"{self._server_url}/{self.name}/+simple/"
|
|
53
49
|
|
|
54
50
|
def use(self) -> None:
|
|
@@ -75,7 +71,7 @@ class IndexServer:
|
|
|
75
71
|
def __init__(
|
|
76
72
|
self,
|
|
77
73
|
path: Path,
|
|
78
|
-
with_root_pypi: bool = False, #
|
|
74
|
+
with_root_pypi: bool = False, # ruff:ignore[boolean-type-hint-positional-argument, boolean-default-value-positional-argument]
|
|
79
75
|
start_args: Sequence[str] | None = None,
|
|
80
76
|
) -> None:
|
|
81
77
|
"""
|
|
@@ -90,7 +86,7 @@ class IndexServer:
|
|
|
90
86
|
self._start_args: Sequence[str] = [] if start_args is None else start_args
|
|
91
87
|
|
|
92
88
|
self.host, self.port = "localhost", _find_free_port()
|
|
93
|
-
self._passwd = "".join(random.choices(string.ascii_letters, k=8)) #
|
|
89
|
+
self._passwd = "".join(random.choices(string.ascii_letters, k=8)) # ruff:ignore[suspicious-non-cryptographic-random-usage]
|
|
94
90
|
|
|
95
91
|
scripts_dir = sysconfig.get_path("scripts")
|
|
96
92
|
if scripts_dir is None:
|
|
@@ -113,7 +109,7 @@ class IndexServer:
|
|
|
113
109
|
|
|
114
110
|
@property
|
|
115
111
|
def user(self) -> str:
|
|
116
|
-
"""
|
|
112
|
+
"""Username of the index server."""
|
|
117
113
|
return "root"
|
|
118
114
|
|
|
119
115
|
def __enter__(self) -> Self:
|
|
@@ -134,7 +130,7 @@ class IndexServer:
|
|
|
134
130
|
# 2. start the server
|
|
135
131
|
cmd = [self._server, "--serverdir", server_at, "--port", str(self.port)]
|
|
136
132
|
cmd.extend(self._start_args)
|
|
137
|
-
self._process = Popen(cmd, stdout=PIPE, universal_newlines=True) #
|
|
133
|
+
self._process = Popen(cmd, stdout=PIPE, universal_newlines=True) # ruff:ignore[subprocess-without-shell-equals-true]
|
|
138
134
|
stdout = self._drain_stdout()
|
|
139
135
|
for line in stdout: # pragma: no branch # will always loop at least once
|
|
140
136
|
if "serving at url" in line:
|
|
@@ -153,7 +149,7 @@ class IndexServer:
|
|
|
153
149
|
stdout = cast("IO[str]", process.stdout)
|
|
154
150
|
while True:
|
|
155
151
|
if process.poll() is not None: # pragma: no cover
|
|
156
|
-
print(f"devpi server with pid {process.pid} at {self._server_dir} died") #
|
|
152
|
+
print(f"devpi server with pid {process.pid} at {self._server_dir} died") # ruff:ignore[print]
|
|
157
153
|
break
|
|
158
154
|
yield stdout.readline()
|
|
159
155
|
|
|
@@ -201,7 +197,7 @@ class IndexServer:
|
|
|
201
197
|
|
|
202
198
|
@property
|
|
203
199
|
def url(self) -> str:
|
|
204
|
-
"""
|
|
200
|
+
"""URL to the index server."""
|
|
205
201
|
return f"http://{self.host}:{self.port}"
|
|
206
202
|
|
|
207
203
|
def __repr__(self) -> str:
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"__version__",
|
|
7
|
+
"__version_tuple__",
|
|
8
|
+
"version",
|
|
9
|
+
"version_tuple",
|
|
10
|
+
"__commit_id__",
|
|
11
|
+
"commit_id",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
version: str
|
|
15
|
+
__version__: str
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
20
|
+
|
|
21
|
+
__version__ = version = '1.3.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 3, 0)
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = None
|
|
@@ -50,8 +50,8 @@ content = {
|
|
|
50
50
|
|
|
51
51
|
def build_wheel(
|
|
52
52
|
wheel_directory: str,
|
|
53
|
-
metadata_directory: str | None = None, #
|
|
54
|
-
config_settings: None = None, #
|
|
53
|
+
metadata_directory: str | None = None, # ruff:ignore[unused-function-argument]
|
|
54
|
+
config_settings: None = None, # ruff:ignore[unused-function-argument]
|
|
55
55
|
) -> str:
|
|
56
56
|
base_name = f"{name}-{version}-py{sys.version_info[0]}-none-any.whl"
|
|
57
57
|
path = Path(wheel_directory) / base_name
|
|
@@ -62,14 +62,14 @@ def build_wheel(
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
def get_requires_for_build_wheel(
|
|
65
|
-
config_settings: None = None, #
|
|
65
|
+
config_settings: None = None, # ruff:ignore[unused-function-argument]
|
|
66
66
|
) -> list[str]:
|
|
67
67
|
return [] # pragma: no cover # only executed in non-host pythons
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
def build_sdist(
|
|
71
71
|
sdist_directory: str,
|
|
72
|
-
config_settings: None = None, #
|
|
72
|
+
config_settings: None = None, # ruff:ignore[unused-function-argument]
|
|
73
73
|
) -> str:
|
|
74
74
|
result = f"{name}-{version}.tar.gz"
|
|
75
75
|
with tarfile.open(str(Path(sdist_directory) / result), "w:gz") as tar:
|
|
@@ -86,6 +86,6 @@ def build_sdist(
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
def get_requires_for_build_sdist(
|
|
89
|
-
config_settings: None = None, #
|
|
89
|
+
config_settings: None = None, # ruff:ignore[unused-function-argument]
|
|
90
90
|
) -> list[str]:
|
|
91
91
|
return [] # pragma: no cover # only executed in non-host pythons
|
|
@@ -14,7 +14,7 @@ if TYPE_CHECKING:
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def test_version() -> None:
|
|
17
|
-
import devpi_process #
|
|
17
|
+
import devpi_process # ruff:ignore[import-outside-top-level]
|
|
18
18
|
|
|
19
19
|
assert devpi_process.__version__ is not None
|
|
20
20
|
|
|
@@ -69,5 +69,7 @@ def test_create_server_with_pypi(tmp_path: Path) -> None:
|
|
|
69
69
|
|
|
70
70
|
def test_create_server_start_args(tmp_path: Path) -> None:
|
|
71
71
|
with IndexServer(tmp_path, start_args=["--offline-mode"]) as server:
|
|
72
|
-
assert server._process is not None #
|
|
73
|
-
|
|
72
|
+
assert server._process is not None # ruff:ignore[private-member-access]
|
|
73
|
+
args = server._process.args # ruff:ignore[private-member-access]
|
|
74
|
+
assert isinstance(args, list)
|
|
75
|
+
assert args[-1] == "--offline-mode"
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
requires = [ "tox>=4.
|
|
2
|
-
env_list = [ "3.14", "3.13", "3.12", "3.11", "3.
|
|
1
|
+
requires = [ "tox>=4.64.7", "tox-uv>=1.36.1" ]
|
|
2
|
+
env_list = [ "3.15", "3.14", "3.13", "3.12", "3.11", "3.15t", "fix", "pkg_meta", "type" ]
|
|
3
3
|
skip_missing_interpreters = true
|
|
4
4
|
|
|
5
5
|
[env_run_base]
|
|
6
6
|
description = "run the unit tests with pytest under {env_name}"
|
|
7
|
+
default_base_python = [ "3.15" ]
|
|
7
8
|
package = "wheel"
|
|
8
9
|
wheel_build_env = ".pkg"
|
|
9
10
|
dependency_groups = [ "test" ]
|
|
@@ -14,7 +15,7 @@ commands = [
|
|
|
14
15
|
"python",
|
|
15
16
|
"-m",
|
|
16
17
|
"pytest",
|
|
17
|
-
{ replace = "posargs",
|
|
18
|
+
{ replace = "posargs", default = [
|
|
18
19
|
"--cov",
|
|
19
20
|
"{env_site_packages_dir}{/}devpi_process",
|
|
20
21
|
"--cov",
|
|
@@ -31,10 +32,13 @@ commands = [
|
|
|
31
32
|
"--junitxml",
|
|
32
33
|
"{work_dir}{/}junit.{env_name}.xml",
|
|
33
34
|
"tests",
|
|
34
|
-
] },
|
|
35
|
+
], extend = true },
|
|
35
36
|
],
|
|
36
37
|
]
|
|
37
38
|
|
|
39
|
+
[env_pkg_base]
|
|
40
|
+
default_base_python = [ "3.15" ]
|
|
41
|
+
|
|
38
42
|
[env.fix]
|
|
39
43
|
description = "format the code base to adhere to our styles, and complain about what we cannot do automatically"
|
|
40
44
|
skip_install = true
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
tidelift: pypi/devpi-process
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# file generated by setuptools-scm
|
|
2
|
-
# don't change, don't track in version control
|
|
3
|
-
|
|
4
|
-
__all__ = [
|
|
5
|
-
"__version__",
|
|
6
|
-
"__version_tuple__",
|
|
7
|
-
"version",
|
|
8
|
-
"version_tuple",
|
|
9
|
-
"__commit_id__",
|
|
10
|
-
"commit_id",
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
TYPE_CHECKING = False
|
|
14
|
-
if TYPE_CHECKING:
|
|
15
|
-
from typing import Tuple
|
|
16
|
-
from typing import Union
|
|
17
|
-
|
|
18
|
-
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
-
COMMIT_ID = Union[str, None]
|
|
20
|
-
else:
|
|
21
|
-
VERSION_TUPLE = object
|
|
22
|
-
COMMIT_ID = object
|
|
23
|
-
|
|
24
|
-
version: str
|
|
25
|
-
__version__: str
|
|
26
|
-
__version_tuple__: VERSION_TUPLE
|
|
27
|
-
version_tuple: VERSION_TUPLE
|
|
28
|
-
commit_id: COMMIT_ID
|
|
29
|
-
__commit_id__: COMMIT_ID
|
|
30
|
-
|
|
31
|
-
__version__ = version = '1.1.1'
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 1, 1)
|
|
33
|
-
|
|
34
|
-
__commit_id__ = commit_id = None
|
|
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
|