devpi-process 1.0.0__tar.gz → 1.0.2__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.0.2/.github/FUNDING.yml +1 -0
- devpi_process-1.0.2/.github/SECURITY.md +13 -0
- devpi_process-1.0.2/.github/workflows/check.yaml +51 -0
- devpi_process-1.0.2/.github/workflows/release.yaml +48 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/.pre-commit-config.yaml +19 -13
- {devpi_process-1.0.0 → devpi_process-1.0.2}/PKG-INFO +13 -13
- {devpi_process-1.0.0 → devpi_process-1.0.2}/README.md +1 -3
- devpi_process-1.0.2/pyproject.toml +136 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/src/devpi_process/__init__.py +3 -2
- devpi_process-1.0.2/src/devpi_process/_version.py +16 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/tests/test_devpi_process.py +1 -1
- devpi_process-1.0.2/tox.ini +69 -0
- devpi_process-1.0.0/.github/workflows/check.yml +0 -88
- devpi_process-1.0.0/.github/workflows/release.yml +0 -27
- devpi_process-1.0.0/pyproject.toml +0 -106
- devpi_process-1.0.0/src/devpi_process/_version.py +0 -4
- devpi_process-1.0.0/tox.ini +0 -72
- {devpi_process-1.0.0 → devpi_process-1.0.2}/.github/dependabot.yml +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/.github/release.yml +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/.gitignore +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/.markdownlint.yaml +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/CHANGELOG.md +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/CODE_OF_CONDUCT.md +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/LICENSE.txt +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/src/devpi_process/py.typed +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/tests/demo_pkg_inline/build.py +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.2}/tests/demo_pkg_inline/pyproject.toml +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tidelift: pypi/devpi-process
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
| Version | Supported |
|
|
6
|
+
| ------- | ------------------ |
|
|
7
|
+
| 1.0.0 + | :white_check_mark: |
|
|
8
|
+
| < 1.0.0 | :x: |
|
|
9
|
+
|
|
10
|
+
## Reporting a Vulnerability
|
|
11
|
+
|
|
12
|
+
To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift
|
|
13
|
+
will coordinate the fix and disclosure.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: check
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
tags-ignore: ["**"]
|
|
7
|
+
pull_request:
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: "0 8 * * *"
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: check-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
test:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
strategy:
|
|
19
|
+
fail-fast: false
|
|
20
|
+
matrix:
|
|
21
|
+
env:
|
|
22
|
+
- "3.13"
|
|
23
|
+
- "3.12"
|
|
24
|
+
- "3.11"
|
|
25
|
+
- "3.10"
|
|
26
|
+
- "3.9"
|
|
27
|
+
- "3.8"
|
|
28
|
+
- type
|
|
29
|
+
- dev
|
|
30
|
+
- pkg_meta
|
|
31
|
+
steps:
|
|
32
|
+
- uses: actions/checkout@v4
|
|
33
|
+
with:
|
|
34
|
+
fetch-depth: 0
|
|
35
|
+
- name: Install the latest version of uv
|
|
36
|
+
uses: astral-sh/setup-uv@v3
|
|
37
|
+
with:
|
|
38
|
+
enable-cache: true
|
|
39
|
+
cache-dependency-glob: "pyproject.toml"
|
|
40
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
41
|
+
- name: Install tox
|
|
42
|
+
run: uv tool install --python-preference only-managed --python 3.13 tox --with tox-uv
|
|
43
|
+
- name: Install Python
|
|
44
|
+
if: startsWith(matrix.env, '3.') && matrix.env != '3.13'
|
|
45
|
+
run: uv python install --python-preference only-managed ${{ matrix.env }}
|
|
46
|
+
- name: Setup test suite
|
|
47
|
+
run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.env }}
|
|
48
|
+
- name: Run test suite
|
|
49
|
+
run: tox run --skip-pkg-install -e ${{ matrix.env }}
|
|
50
|
+
env:
|
|
51
|
+
PYTEST_ADDOPTS: "-vv --durations=5"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: Release to PyPI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ["*"]
|
|
5
|
+
|
|
6
|
+
env:
|
|
7
|
+
dists-artifact-name: python-package-distributions
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
with:
|
|
15
|
+
fetch-depth: 0
|
|
16
|
+
- name: Install the latest version of uv
|
|
17
|
+
uses: astral-sh/setup-uv@v3
|
|
18
|
+
with:
|
|
19
|
+
enable-cache: true
|
|
20
|
+
cache-dependency-glob: "pyproject.toml"
|
|
21
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
22
|
+
- name: Build package
|
|
23
|
+
run: uv build --python 3.13 --python-preference only-managed --sdist --wheel . --out-dir dist
|
|
24
|
+
- name: Store the distribution packages
|
|
25
|
+
uses: actions/upload-artifact@v4
|
|
26
|
+
with:
|
|
27
|
+
name: ${{ env.dists-artifact-name }}
|
|
28
|
+
path: dist/*
|
|
29
|
+
|
|
30
|
+
release:
|
|
31
|
+
needs:
|
|
32
|
+
- build
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
environment:
|
|
35
|
+
name: release
|
|
36
|
+
url: https://pypi.org/project/devpi-process/${{ github.ref_name }}
|
|
37
|
+
permissions:
|
|
38
|
+
id-token: write
|
|
39
|
+
steps:
|
|
40
|
+
- name: Download all the dists
|
|
41
|
+
uses: actions/download-artifact@v4
|
|
42
|
+
with:
|
|
43
|
+
name: ${{ env.dists-artifact-name }}
|
|
44
|
+
path: dist/
|
|
45
|
+
- name: Publish to PyPI
|
|
46
|
+
uses: pypa/gh-action-pypi-publish@v1.10.1
|
|
47
|
+
with:
|
|
48
|
+
attestations: true
|
|
@@ -1,30 +1,36 @@
|
|
|
1
1
|
repos:
|
|
2
2
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
-
rev: v4.
|
|
3
|
+
rev: v4.6.0
|
|
4
4
|
hooks:
|
|
5
5
|
- id: end-of-file-fixer
|
|
6
6
|
- id: trailing-whitespace
|
|
7
|
-
- repo: https://github.com/
|
|
8
|
-
rev:
|
|
7
|
+
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
8
|
+
rev: 0.29.2
|
|
9
9
|
hooks:
|
|
10
|
-
- id:
|
|
11
|
-
args: [--
|
|
12
|
-
- repo: https://github.com/
|
|
13
|
-
rev:
|
|
10
|
+
- id: check-github-workflows
|
|
11
|
+
args: ["--verbose"]
|
|
12
|
+
- repo: https://github.com/codespell-project/codespell
|
|
13
|
+
rev: v2.3.0
|
|
14
14
|
hooks:
|
|
15
|
-
- id:
|
|
15
|
+
- id: codespell
|
|
16
|
+
additional_dependencies: ["tomli>=2.0.1"]
|
|
16
17
|
- repo: https://github.com/tox-dev/tox-ini-fmt
|
|
17
|
-
rev: "1.
|
|
18
|
+
rev: "1.4.0"
|
|
18
19
|
hooks:
|
|
19
20
|
- id: tox-ini-fmt
|
|
20
21
|
args: ["-p", "fix"]
|
|
21
22
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
22
|
-
rev: "
|
|
23
|
+
rev: "2.2.3"
|
|
23
24
|
hooks:
|
|
24
25
|
- id: pyproject-fmt
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
27
|
+
rev: "v0.6.5"
|
|
28
|
+
hooks:
|
|
29
|
+
- id: ruff-format
|
|
30
|
+
- id: ruff
|
|
31
|
+
args: ["--fix", "--unsafe-fixes", "--exit-non-zero-on-fix"]
|
|
32
|
+
- repo: https://github.com/rbubley/mirrors-prettier
|
|
33
|
+
rev: "v3.3.3"
|
|
28
34
|
hooks:
|
|
29
35
|
- id: prettier
|
|
30
36
|
args: ["--print-width=120", "--prose-wrap=always"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: devpi-process
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
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
|
|
@@ -22,18 +22,20 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.9
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.10
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.11
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
27
|
Classifier: Topic :: Software Development :: Libraries
|
|
26
28
|
Classifier: Topic :: Software Development :: Testing
|
|
27
29
|
Classifier: Topic :: Utilities
|
|
28
30
|
Requires-Python: >=3.8
|
|
29
|
-
Requires-Dist: devpi-client>=
|
|
30
|
-
Requires-Dist: devpi-server>=6.
|
|
31
|
-
Requires-Dist: typing-extensions>=4.
|
|
32
|
-
Provides-Extra:
|
|
33
|
-
Requires-Dist: covdefaults>=2.3; extra == '
|
|
34
|
-
Requires-Dist: httpx>=0.
|
|
35
|
-
Requires-Dist: pytest-cov>=
|
|
36
|
-
Requires-Dist: pytest>=
|
|
31
|
+
Requires-Dist: devpi-client>=7.1
|
|
32
|
+
Requires-Dist: devpi-server>=6.12.1
|
|
33
|
+
Requires-Dist: typing-extensions>=4.12.2; python_version < '3.11'
|
|
34
|
+
Provides-Extra: testing
|
|
35
|
+
Requires-Dist: covdefaults>=2.3; extra == 'testing'
|
|
36
|
+
Requires-Dist: httpx>=0.27.2; extra == 'testing'
|
|
37
|
+
Requires-Dist: pytest-cov>=5; extra == 'testing'
|
|
38
|
+
Requires-Dist: pytest>=8.3.2; extra == 'testing'
|
|
37
39
|
Description-Content-Type: text/markdown
|
|
38
40
|
|
|
39
41
|
# devpi-process
|
|
@@ -43,9 +45,7 @@ Description-Content-Type: text/markdown
|
|
|
43
45
|
[](https://pypi.org/project/devpi-process)
|
|
44
46
|
[](https://pepy.tech/project/devpi-process)
|
|
45
47
|
[](https://opensource.org/licenses/MIT)
|
|
46
|
-
[](https://github.com/tox-dev/devpi-process/actions
|
|
47
|
-
[](https://github.com/psf/black)
|
|
48
|
+
[](https://github.com/tox-dev/devpi-process/actions/workflows/check.yaml)
|
|
49
49
|
|
|
50
50
|
Allows you to create [devpi](https://devpi.net/docs/devpi/devpi/stable/+d/index.html) server process with indexes, and
|
|
51
51
|
upload artifacts to that programmatically.
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
[](https://pypi.org/project/devpi-process)
|
|
6
6
|
[](https://pepy.tech/project/devpi-process)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
|
-
[](https://github.com/tox-dev/devpi-process/actions
|
|
9
|
-
[](https://github.com/psf/black)
|
|
8
|
+
[](https://github.com/tox-dev/devpi-process/actions/workflows/check.yaml)
|
|
11
9
|
|
|
12
10
|
Allows you to create [devpi](https://devpi.net/docs/devpi/devpi/stable/+d/index.html) server process with indexes, and
|
|
13
11
|
upload artifacts to that programmatically.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
build-backend = "hatchling.build"
|
|
3
|
+
requires = [
|
|
4
|
+
"hatch-vcs>=0.4",
|
|
5
|
+
"hatchling>=1.25",
|
|
6
|
+
]
|
|
7
|
+
|
|
8
|
+
[project]
|
|
9
|
+
name = "devpi-process"
|
|
10
|
+
description = "devpi process provides a programmatic API to create and use a devpi server process"
|
|
11
|
+
readme.content-type = "text/markdown"
|
|
12
|
+
readme.file = "README.md"
|
|
13
|
+
keywords = [
|
|
14
|
+
"environments",
|
|
15
|
+
"isolated",
|
|
16
|
+
"testing",
|
|
17
|
+
"virtual",
|
|
18
|
+
]
|
|
19
|
+
license = "MIT"
|
|
20
|
+
maintainers = [
|
|
21
|
+
{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" },
|
|
22
|
+
]
|
|
23
|
+
authors = [
|
|
24
|
+
{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" },
|
|
25
|
+
]
|
|
26
|
+
requires-python = ">=3.8"
|
|
27
|
+
classifiers = [
|
|
28
|
+
"Development Status :: 5 - Production/Stable",
|
|
29
|
+
"Framework :: tox",
|
|
30
|
+
"Intended Audience :: Developers",
|
|
31
|
+
"License :: OSI Approved :: MIT License",
|
|
32
|
+
"Operating System :: MacOS :: MacOS X",
|
|
33
|
+
"Operating System :: Microsoft :: Windows",
|
|
34
|
+
"Operating System :: POSIX",
|
|
35
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
36
|
+
"Programming Language :: Python :: 3.8",
|
|
37
|
+
"Programming Language :: Python :: 3.9",
|
|
38
|
+
"Programming Language :: Python :: 3.10",
|
|
39
|
+
"Programming Language :: Python :: 3.11",
|
|
40
|
+
"Programming Language :: Python :: 3.12",
|
|
41
|
+
"Programming Language :: Python :: 3.13",
|
|
42
|
+
"Topic :: Software Development :: Libraries",
|
|
43
|
+
"Topic :: Software Development :: Testing",
|
|
44
|
+
"Topic :: Utilities",
|
|
45
|
+
]
|
|
46
|
+
dynamic = [
|
|
47
|
+
"version",
|
|
48
|
+
]
|
|
49
|
+
dependencies = [
|
|
50
|
+
"devpi-client>=7.1",
|
|
51
|
+
"devpi-server>=6.12.1",
|
|
52
|
+
"typing-extensions>=4.12.2; python_version<'3.11'",
|
|
53
|
+
]
|
|
54
|
+
optional-dependencies.testing = [
|
|
55
|
+
"covdefaults>=2.3",
|
|
56
|
+
"httpx>=0.27.2",
|
|
57
|
+
"pytest>=8.3.2",
|
|
58
|
+
"pytest-cov>=5",
|
|
59
|
+
]
|
|
60
|
+
urls.Homepage = "https://github.com/tox-dev/devpi-process#readme"
|
|
61
|
+
urls.Source = "https://github.com/tox-dev/devpi-process"
|
|
62
|
+
urls.Tracker = "https://github.com/tox-dev/devpi-process/issues"
|
|
63
|
+
|
|
64
|
+
[tool.hatch]
|
|
65
|
+
build.hooks.vcs.version-file = "src/devpi_process/_version.py"
|
|
66
|
+
version.source = "vcs"
|
|
67
|
+
|
|
68
|
+
[tool.black]
|
|
69
|
+
line-length = 120
|
|
70
|
+
|
|
71
|
+
[tool.ruff]
|
|
72
|
+
target-version = "py38"
|
|
73
|
+
line-length = 120
|
|
74
|
+
format.preview = true
|
|
75
|
+
format.docstring-code-line-length = 100
|
|
76
|
+
format.docstring-code-format = true
|
|
77
|
+
lint.select = [
|
|
78
|
+
"ALL",
|
|
79
|
+
]
|
|
80
|
+
lint.ignore = [
|
|
81
|
+
"ANN101", # no type annotation for self
|
|
82
|
+
"ANN401", # allow Any as type annotation
|
|
83
|
+
"COM812", # Conflict with formatter
|
|
84
|
+
"CPY", # No copyright statements
|
|
85
|
+
"D203", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible
|
|
86
|
+
"D212", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible
|
|
87
|
+
"DOC", # not supported
|
|
88
|
+
"ISC001", # Conflict with formatter
|
|
89
|
+
"S104", # Possible binding to all interface
|
|
90
|
+
]
|
|
91
|
+
lint.per-file-ignores."tests/**/*.py" = [
|
|
92
|
+
"D", # don't care about documentation in tests
|
|
93
|
+
"FBT", # don't care about booleans as positional arguments in tests
|
|
94
|
+
"INP001", # no implicit namespace
|
|
95
|
+
"PLR2004", # Magic value used in comparison, consider replacing with a constant variable
|
|
96
|
+
"S101", # asserts allowed in tests
|
|
97
|
+
"S603", # `subprocess` call: check for execution of untrusted input
|
|
98
|
+
]
|
|
99
|
+
lint.isort = { known-first-party = [
|
|
100
|
+
"devpi_process",
|
|
101
|
+
], required-imports = [
|
|
102
|
+
"from __future__ import annotations",
|
|
103
|
+
] }
|
|
104
|
+
lint.preview = true
|
|
105
|
+
|
|
106
|
+
[tool.codespell]
|
|
107
|
+
builtin = "clear,usage,en-GB_to_en-US"
|
|
108
|
+
write-changes = true
|
|
109
|
+
count = true
|
|
110
|
+
|
|
111
|
+
[tool.pyproject-fmt]
|
|
112
|
+
max_supported_python = "3.13"
|
|
113
|
+
|
|
114
|
+
[tool.coverage]
|
|
115
|
+
html.show_contexts = true
|
|
116
|
+
html.skip_covered = false
|
|
117
|
+
paths.source = [
|
|
118
|
+
"src",
|
|
119
|
+
".tox*/*/lib/python*/site-packages",
|
|
120
|
+
".tox*/pypy*/site-packages",
|
|
121
|
+
".tox*\\*\\Lib\\site-packages",
|
|
122
|
+
"*/src",
|
|
123
|
+
"*\\src",
|
|
124
|
+
]
|
|
125
|
+
report.fail_under = 98
|
|
126
|
+
report.omit = [
|
|
127
|
+
]
|
|
128
|
+
run.parallel = true
|
|
129
|
+
run.plugins = [
|
|
130
|
+
"covdefaults",
|
|
131
|
+
]
|
|
132
|
+
|
|
133
|
+
[tool.mypy]
|
|
134
|
+
python_version = "3.12"
|
|
135
|
+
show_error_codes = true
|
|
136
|
+
strict = true
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Devpi PyPI to test with."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
import random
|
|
@@ -8,7 +9,7 @@ import sys
|
|
|
8
9
|
import sysconfig
|
|
9
10
|
from contextlib import closing
|
|
10
11
|
from pathlib import Path
|
|
11
|
-
from subprocess import PIPE, Popen, run
|
|
12
|
+
from subprocess import PIPE, Popen, run # noqa: S404
|
|
12
13
|
from threading import Thread
|
|
13
14
|
from typing import IO, TYPE_CHECKING, Iterator, Sequence, cast
|
|
14
15
|
|
|
@@ -214,7 +215,7 @@ def _find_free_port() -> int:
|
|
|
214
215
|
|
|
215
216
|
|
|
216
217
|
__all__ = [
|
|
217
|
-
"__version__",
|
|
218
218
|
"Index",
|
|
219
219
|
"IndexServer",
|
|
220
|
+
"__version__",
|
|
220
221
|
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# file generated by setuptools_scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
TYPE_CHECKING = False
|
|
4
|
+
if TYPE_CHECKING:
|
|
5
|
+
from typing import Tuple, Union
|
|
6
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
7
|
+
else:
|
|
8
|
+
VERSION_TUPLE = object
|
|
9
|
+
|
|
10
|
+
version: str
|
|
11
|
+
__version__: str
|
|
12
|
+
__version_tuple__: VERSION_TUPLE
|
|
13
|
+
version_tuple: VERSION_TUPLE
|
|
14
|
+
|
|
15
|
+
__version__ = version = '1.0.2'
|
|
16
|
+
__version_tuple__ = version_tuple = (1, 0, 2)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[tox]
|
|
2
|
+
requires =
|
|
3
|
+
tox>=4.2
|
|
4
|
+
tox-uv>=1.11.3
|
|
5
|
+
env_list =
|
|
6
|
+
fix
|
|
7
|
+
3.13
|
|
8
|
+
3.12
|
|
9
|
+
3.11
|
|
10
|
+
3.10
|
|
11
|
+
3.9
|
|
12
|
+
3.8
|
|
13
|
+
type
|
|
14
|
+
pkg_meta
|
|
15
|
+
skip_missing_interpreters = true
|
|
16
|
+
|
|
17
|
+
[testenv]
|
|
18
|
+
description = run the unit tests with pytest under {base_python}
|
|
19
|
+
package = wheel
|
|
20
|
+
wheel_build_env = .pkg
|
|
21
|
+
extras =
|
|
22
|
+
testing
|
|
23
|
+
pass_env =
|
|
24
|
+
DIFF_AGAINST
|
|
25
|
+
PYTEST_*
|
|
26
|
+
set_env =
|
|
27
|
+
COVERAGE_FILE = {work_dir}/.coverage.{env_name}
|
|
28
|
+
commands =
|
|
29
|
+
python -m pytest {tty:--color=yes} {posargs: \
|
|
30
|
+
--cov {env_site_packages_dir}{/}devpi_process --cov {tox_root}{/}tests \
|
|
31
|
+
--cov-config=pyproject.toml --no-cov-on-fail --cov-report term-missing:skip-covered --cov-context=test \
|
|
32
|
+
--cov-report html:{env_tmp_dir}{/}htmlcov --cov-report xml:{work_dir}{/}coverage.{env_name}.xml \
|
|
33
|
+
--junitxml {work_dir}{/}junit.{env_name}.xml \
|
|
34
|
+
tests}
|
|
35
|
+
|
|
36
|
+
[testenv:fix]
|
|
37
|
+
description = format the code base to adhere to our styles, and complain about what we cannot do automatically
|
|
38
|
+
skip_install = true
|
|
39
|
+
deps =
|
|
40
|
+
pre-commit-uv>=4.1.1
|
|
41
|
+
commands =
|
|
42
|
+
pre-commit run --all-files --show-diff-on-failure
|
|
43
|
+
|
|
44
|
+
[testenv:type]
|
|
45
|
+
description = run type check on code base
|
|
46
|
+
deps =
|
|
47
|
+
mypy==1.11.2
|
|
48
|
+
commands =
|
|
49
|
+
mypy src
|
|
50
|
+
mypy tests
|
|
51
|
+
|
|
52
|
+
[testenv:pkg_meta]
|
|
53
|
+
description = check that the long description is valid
|
|
54
|
+
skip_install = true
|
|
55
|
+
deps =
|
|
56
|
+
check-wheel-contents>=0.6
|
|
57
|
+
twine>=5.1.1
|
|
58
|
+
uv>=0.4.10
|
|
59
|
+
commands =
|
|
60
|
+
uv build --sdist --wheel --out-dir {env_tmp_dir} .
|
|
61
|
+
twine check {env_tmp_dir}{/}*
|
|
62
|
+
check-wheel-contents --no-config {env_tmp_dir}
|
|
63
|
+
|
|
64
|
+
[testenv:dev]
|
|
65
|
+
description = generate a DEV environment
|
|
66
|
+
package = editable
|
|
67
|
+
commands =
|
|
68
|
+
uv pip tree
|
|
69
|
+
python -c 'import sys; print(sys.executable)'
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
name: check
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
tags-ignore: ["**"]
|
|
5
|
-
pull_request:
|
|
6
|
-
schedule:
|
|
7
|
-
- cron: "0 8 * * *"
|
|
8
|
-
|
|
9
|
-
concurrency:
|
|
10
|
-
group: check-${{ github.ref }}
|
|
11
|
-
cancel-in-progress: true
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
test:
|
|
15
|
-
name: test ${{ matrix.py }} - ${{ matrix.os }}
|
|
16
|
-
runs-on: ${{ matrix.os }}
|
|
17
|
-
strategy:
|
|
18
|
-
fail-fast: false
|
|
19
|
-
matrix:
|
|
20
|
-
py:
|
|
21
|
-
- "3.11"
|
|
22
|
-
- "3.10"
|
|
23
|
-
- "3.9"
|
|
24
|
-
- "3.8"
|
|
25
|
-
os:
|
|
26
|
-
- ubuntu-latest
|
|
27
|
-
- windows-2022
|
|
28
|
-
- macos-12
|
|
29
|
-
|
|
30
|
-
steps:
|
|
31
|
-
- name: Setup python for tox
|
|
32
|
-
uses: actions/setup-python@v4
|
|
33
|
-
with:
|
|
34
|
-
python-version: "3.11"
|
|
35
|
-
- name: Install tox
|
|
36
|
-
run: python -m pip install tox
|
|
37
|
-
- uses: actions/checkout@v3
|
|
38
|
-
with:
|
|
39
|
-
fetch-depth: 0
|
|
40
|
-
- name: Setup python for test ${{ matrix.py }}
|
|
41
|
-
uses: actions/setup-python@v4
|
|
42
|
-
with:
|
|
43
|
-
python-version: ${{ matrix.py }}
|
|
44
|
-
- name: Pick environment to run
|
|
45
|
-
run: |
|
|
46
|
-
import os; import platform; import sys; from pathlib import Path
|
|
47
|
-
env = f'TOXENV=py{"" if platform.python_implementation() == "CPython" else "py"}3{sys.version_info.minor}'
|
|
48
|
-
print(f"Picked: {env} for {sys.version} based of {sys.executable}")
|
|
49
|
-
with Path(os.environ["GITHUB_ENV"]).open("ta") as file_handler:
|
|
50
|
-
file_handler.write(env)
|
|
51
|
-
shell: python
|
|
52
|
-
- name: Setup test suite
|
|
53
|
-
run: tox -vv --notest
|
|
54
|
-
- name: Run test suite
|
|
55
|
-
run: tox --skip-pkg-install
|
|
56
|
-
env:
|
|
57
|
-
PYTEST_ADDOPTS: "-vv --durations=20"
|
|
58
|
-
CI_RUN: "yes"
|
|
59
|
-
|
|
60
|
-
check:
|
|
61
|
-
name: tox env ${{ matrix.tox_env }} - ${{ matrix.os }}
|
|
62
|
-
runs-on: ${{ matrix.os }}
|
|
63
|
-
strategy:
|
|
64
|
-
fail-fast: false
|
|
65
|
-
matrix:
|
|
66
|
-
os:
|
|
67
|
-
- ubuntu-latest
|
|
68
|
-
- windows-2022
|
|
69
|
-
tox_env:
|
|
70
|
-
- dev
|
|
71
|
-
- type
|
|
72
|
-
- readme
|
|
73
|
-
exclude:
|
|
74
|
-
- { os: windows-2022, tox_env: readme }
|
|
75
|
-
steps:
|
|
76
|
-
- uses: actions/checkout@v3
|
|
77
|
-
with:
|
|
78
|
-
fetch-depth: 0
|
|
79
|
-
- name: Setup Python "3.11"
|
|
80
|
-
uses: actions/setup-python@v4
|
|
81
|
-
with:
|
|
82
|
-
python-version: "3.11"
|
|
83
|
-
- name: Install tox
|
|
84
|
-
run: python -m pip install tox
|
|
85
|
-
- name: Setup test suite
|
|
86
|
-
run: tox -vv --notest -e ${{ matrix.tox_env }}
|
|
87
|
-
- name: Run test suite
|
|
88
|
-
run: tox --skip-pkg-install -e ${{ matrix.tox_env }}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
name: Release to PyPI
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
tags: ["*"]
|
|
5
|
-
|
|
6
|
-
jobs:
|
|
7
|
-
release:
|
|
8
|
-
runs-on: ubuntu-latest
|
|
9
|
-
environment:
|
|
10
|
-
name: release
|
|
11
|
-
url: https://pypi.org/p/devpi-process
|
|
12
|
-
permissions:
|
|
13
|
-
id-token: write
|
|
14
|
-
steps:
|
|
15
|
-
- name: Setup python to build package
|
|
16
|
-
uses: actions/setup-python@v4
|
|
17
|
-
with:
|
|
18
|
-
python-version: "3.11"
|
|
19
|
-
- name: Install build
|
|
20
|
-
run: python -m pip install build
|
|
21
|
-
- uses: actions/checkout@v3
|
|
22
|
-
with:
|
|
23
|
-
fetch-depth: 0
|
|
24
|
-
- name: Build package
|
|
25
|
-
run: pyproject-build -s -w . -o dist
|
|
26
|
-
- name: Publish to PyPI
|
|
27
|
-
uses: pypa/gh-action-pypi-publish@v1.8.10
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
build-backend = "hatchling.build"
|
|
3
|
-
requires = [
|
|
4
|
-
"hatch-vcs>=0.3",
|
|
5
|
-
"hatchling>=1.18",
|
|
6
|
-
]
|
|
7
|
-
|
|
8
|
-
[project]
|
|
9
|
-
name = "devpi-process"
|
|
10
|
-
description = "devpi process provides a programmatic API to create and use a devpi server process"
|
|
11
|
-
readme.content-type = "text/markdown"
|
|
12
|
-
readme.file = "README.md"
|
|
13
|
-
keywords = [
|
|
14
|
-
"environments",
|
|
15
|
-
"isolated",
|
|
16
|
-
"testing",
|
|
17
|
-
"virtual",
|
|
18
|
-
]
|
|
19
|
-
license = "MIT"
|
|
20
|
-
maintainers = [{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" }]
|
|
21
|
-
authors = [{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" }]
|
|
22
|
-
requires-python = ">=3.8"
|
|
23
|
-
classifiers = [
|
|
24
|
-
"Development Status :: 5 - Production/Stable",
|
|
25
|
-
"Framework :: tox",
|
|
26
|
-
"Intended Audience :: Developers",
|
|
27
|
-
"License :: OSI Approved :: MIT License",
|
|
28
|
-
"Operating System :: MacOS :: MacOS X",
|
|
29
|
-
"Operating System :: Microsoft :: Windows",
|
|
30
|
-
"Operating System :: POSIX",
|
|
31
|
-
"Programming Language :: Python :: 3 :: Only",
|
|
32
|
-
"Programming Language :: Python :: 3.8",
|
|
33
|
-
"Programming Language :: Python :: 3.9",
|
|
34
|
-
"Programming Language :: Python :: 3.10",
|
|
35
|
-
"Programming Language :: Python :: 3.11",
|
|
36
|
-
"Topic :: Software Development :: Libraries",
|
|
37
|
-
"Topic :: Software Development :: Testing",
|
|
38
|
-
"Topic :: Utilities",
|
|
39
|
-
]
|
|
40
|
-
dynamic = [
|
|
41
|
-
"version",
|
|
42
|
-
]
|
|
43
|
-
dependencies = [
|
|
44
|
-
"devpi-client>=6.0.5",
|
|
45
|
-
"devpi-server>=6.9.2",
|
|
46
|
-
'typing-extensions>=4.7.1; python_version < "3.11"',
|
|
47
|
-
]
|
|
48
|
-
optional-dependencies.test = [
|
|
49
|
-
"covdefaults>=2.3",
|
|
50
|
-
"httpx>=0.24.1",
|
|
51
|
-
"pytest>=7.4",
|
|
52
|
-
"pytest-cov>=4.1",
|
|
53
|
-
]
|
|
54
|
-
urls.Homepage = "https://github.com/tox-dev/devpi-process#readme"
|
|
55
|
-
urls.Source = "https://github.com/tox-dev/devpi-process"
|
|
56
|
-
urls.Tracker = "https://github.com/tox-dev/devpi-process/issues"
|
|
57
|
-
|
|
58
|
-
[tool.hatch]
|
|
59
|
-
build.hooks.vcs.version-file = "src/devpi_process/_version.py"
|
|
60
|
-
version.source = "vcs"
|
|
61
|
-
|
|
62
|
-
[tool.black]
|
|
63
|
-
line-length = 120
|
|
64
|
-
|
|
65
|
-
[tool.ruff]
|
|
66
|
-
select = ["ALL"]
|
|
67
|
-
line-length = 120
|
|
68
|
-
target-version = "py38"
|
|
69
|
-
isort = {known-first-party = ["devpi_process"], required-imports = ["from __future__ import annotations"]}
|
|
70
|
-
ignore = [
|
|
71
|
-
"ANN101", # no typoe annotation for self
|
|
72
|
-
"ANN401", # allow Any as type annotation
|
|
73
|
-
"D203", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible
|
|
74
|
-
"D212", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible
|
|
75
|
-
"S104", # Possible binding to all interface
|
|
76
|
-
]
|
|
77
|
-
[tool.ruff.per-file-ignores]
|
|
78
|
-
"tests/**/*.py" = [
|
|
79
|
-
"S101", # asserts allowed in tests...
|
|
80
|
-
"FBT", # don"t care about booleans as positional arguments in tests
|
|
81
|
-
"INP001", # no implicit namespace
|
|
82
|
-
"D", # don"t care about documentation in tests
|
|
83
|
-
"S603", # `subprocess` call: check for execution of untrusted input
|
|
84
|
-
"PLR2004", # Magic value used in comparison, consider replacing with a constant variable
|
|
85
|
-
]
|
|
86
|
-
|
|
87
|
-
[tool.coverage]
|
|
88
|
-
html.show_contexts = true
|
|
89
|
-
html.skip_covered = false
|
|
90
|
-
paths.source = [
|
|
91
|
-
"src",
|
|
92
|
-
".tox*/*/lib/python*/site-packages",
|
|
93
|
-
".tox*/pypy*/site-packages",
|
|
94
|
-
".tox*\\*\\Lib\\site-packages",
|
|
95
|
-
"*/src",
|
|
96
|
-
"*\\src",
|
|
97
|
-
]
|
|
98
|
-
report.fail_under = 98
|
|
99
|
-
report.omit = []
|
|
100
|
-
run.parallel = true
|
|
101
|
-
run.plugins = ["covdefaults"]
|
|
102
|
-
|
|
103
|
-
[tool.mypy]
|
|
104
|
-
python_version = "3.11"
|
|
105
|
-
show_error_codes = true
|
|
106
|
-
strict = true
|
devpi_process-1.0.0/tox.ini
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
[tox]
|
|
2
|
-
requires =
|
|
3
|
-
tox>=4.2
|
|
4
|
-
env_list =
|
|
5
|
-
fix
|
|
6
|
-
py311
|
|
7
|
-
py310
|
|
8
|
-
py39
|
|
9
|
-
py38
|
|
10
|
-
py37
|
|
11
|
-
type
|
|
12
|
-
readme
|
|
13
|
-
skip_missing_interpreters = true
|
|
14
|
-
|
|
15
|
-
[testenv]
|
|
16
|
-
description = run the unit tests with pytest under {basepython}
|
|
17
|
-
package = wheel
|
|
18
|
-
wheel_build_env = .pkg
|
|
19
|
-
extras =
|
|
20
|
-
test
|
|
21
|
-
set_env =
|
|
22
|
-
COVERAGE_FILE = {toxworkdir}/.coverage.{envname}
|
|
23
|
-
COVERAGE_PROCESS_START = {toxinidir}/pyproject.toml
|
|
24
|
-
_COVERAGE_SRC = {envsitepackagesdir}/devpi_process
|
|
25
|
-
commands =
|
|
26
|
-
pytest {tty:--color=yes} {posargs: \
|
|
27
|
-
--junitxml {toxworkdir}{/}junit.{envname}.xml --cov {envsitepackagesdir}{/}devpi_process \
|
|
28
|
-
--cov {toxinidir}{/}tests --cov-fail-under=100 \
|
|
29
|
-
--cov-config=pyproject.toml --no-cov-on-fail --cov-report term-missing:skip-covered --cov-context=test \
|
|
30
|
-
--cov-report html:{envtmpdir}{/}htmlcov --cov-report xml:{toxworkdir}{/}coverage.{envname}.xml \
|
|
31
|
-
tests}
|
|
32
|
-
|
|
33
|
-
[testenv:fix]
|
|
34
|
-
description = run static analysis and style check using flake8
|
|
35
|
-
skip_install = true
|
|
36
|
-
deps =
|
|
37
|
-
pre-commit>=3.3.3
|
|
38
|
-
pass_env =
|
|
39
|
-
HOMEPATH
|
|
40
|
-
PROGRAMDATA
|
|
41
|
-
commands =
|
|
42
|
-
pre-commit run --all-files --show-diff-on-failure
|
|
43
|
-
|
|
44
|
-
[testenv:type]
|
|
45
|
-
description = run type check on code base
|
|
46
|
-
deps =
|
|
47
|
-
mypy==1.5
|
|
48
|
-
set_env =
|
|
49
|
-
{tty:MYPY_FORCE_COLOR = 1}
|
|
50
|
-
commands =
|
|
51
|
-
mypy src
|
|
52
|
-
mypy tests
|
|
53
|
-
|
|
54
|
-
[testenv:readme]
|
|
55
|
-
description = check that the long description is valid
|
|
56
|
-
skip_install = true
|
|
57
|
-
deps =
|
|
58
|
-
build[virtualenv]>=0.10
|
|
59
|
-
twine>=4.0.2
|
|
60
|
-
commands =
|
|
61
|
-
python -m build --sdist --wheel -o {envtmpdir} .
|
|
62
|
-
twine check {envtmpdir}/*
|
|
63
|
-
|
|
64
|
-
[testenv:dev]
|
|
65
|
-
description = generate a DEV environment
|
|
66
|
-
package = editable
|
|
67
|
-
extras =
|
|
68
|
-
docs
|
|
69
|
-
test
|
|
70
|
-
commands =
|
|
71
|
-
python -m pip list --format=columns
|
|
72
|
-
python -c 'import sys; print(sys.executable)'
|
|
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
|