devpi-process 1.0.0__tar.gz → 1.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- devpi_process-1.0.1/.github/FUNDING.yml +1 -0
- devpi_process-1.0.1/.github/SECURITY.md +13 -0
- devpi_process-1.0.1/.github/workflows/check.yml +78 -0
- devpi_process-1.0.1/.github/workflows/release.yml +32 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/.pre-commit-config.yaml +19 -13
- {devpi_process-1.0.0 → devpi_process-1.0.1}/PKG-INFO +10 -8
- devpi_process-1.0.1/pyproject.toml +136 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/src/devpi_process/__init__.py +3 -2
- devpi_process-1.0.1/src/devpi_process/_version.py +16 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/tests/test_devpi_process.py +1 -1
- {devpi_process-1.0.0 → devpi_process-1.0.1}/tox.ini +16 -14
- 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 → devpi_process-1.0.1}/.github/dependabot.yml +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/.github/release.yml +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/.gitignore +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/.markdownlint.yaml +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/CHANGELOG.md +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/CODE_OF_CONDUCT.md +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/LICENSE.txt +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/README.md +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/src/devpi_process/py.typed +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/tests/demo_pkg_inline/build.py +0 -0
- {devpi_process-1.0.0 → devpi_process-1.0.1}/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,78 @@
|
|
|
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
|
+
name: test ${{ matrix.py }}
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
py:
|
|
23
|
+
- "3.13"
|
|
24
|
+
- "3.12"
|
|
25
|
+
- "3.11"
|
|
26
|
+
- "3.10"
|
|
27
|
+
- "3.9"
|
|
28
|
+
- "3.8"
|
|
29
|
+
steps:
|
|
30
|
+
- name: Install the latest version of uv
|
|
31
|
+
uses: astral-sh/setup-uv@v2
|
|
32
|
+
with:
|
|
33
|
+
enable-cache: true
|
|
34
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
35
|
+
- name: setup python for tox
|
|
36
|
+
uses: actions/setup-python@v5
|
|
37
|
+
with:
|
|
38
|
+
python-version: "3.12"
|
|
39
|
+
- name: install tox
|
|
40
|
+
run: uv pip install tox tox-uv --system
|
|
41
|
+
- uses: actions/checkout@v4
|
|
42
|
+
- name: setup python for test ${{ matrix.py }}
|
|
43
|
+
uses: actions/setup-python@v5
|
|
44
|
+
with:
|
|
45
|
+
python-version: ${{ matrix.py }}
|
|
46
|
+
allow-prereleases: true
|
|
47
|
+
- name: setup test suite
|
|
48
|
+
run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.py }}
|
|
49
|
+
- name: run test suite
|
|
50
|
+
run: tox run --skip-pkg-install -e ${{ matrix.py }}
|
|
51
|
+
|
|
52
|
+
check:
|
|
53
|
+
name: tox env ${{ matrix.tox_env }}
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
strategy:
|
|
56
|
+
fail-fast: false
|
|
57
|
+
matrix:
|
|
58
|
+
tox_env:
|
|
59
|
+
- type
|
|
60
|
+
- dev
|
|
61
|
+
- readme
|
|
62
|
+
steps:
|
|
63
|
+
- name: Install the latest version of uv
|
|
64
|
+
uses: astral-sh/setup-uv@v2
|
|
65
|
+
with:
|
|
66
|
+
enable-cache: true
|
|
67
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
68
|
+
- uses: actions/checkout@v4
|
|
69
|
+
- name: setup Python 3.12
|
|
70
|
+
uses: actions/setup-python@v5
|
|
71
|
+
with:
|
|
72
|
+
python-version: "3.12"
|
|
73
|
+
- name: install tox
|
|
74
|
+
run: uv pip install tox tox-uv --system
|
|
75
|
+
- name: Setup test suite
|
|
76
|
+
run: tox -vv --notest --skip-missing-interpreters false -e ${{ matrix.tox_env }}
|
|
77
|
+
- name: Run test suite
|
|
78
|
+
run: tox --skip-pkg-install -e ${{ matrix.tox_env }}
|
|
@@ -0,0 +1,32 @@
|
|
|
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@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.12"
|
|
19
|
+
- name: Install the latest version of uv
|
|
20
|
+
uses: astral-sh/setup-uv@v2
|
|
21
|
+
with:
|
|
22
|
+
enable-cache: true
|
|
23
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
24
|
+
- name: Install build
|
|
25
|
+
run: uv pip install build[uv] --system
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
29
|
+
- name: Build package
|
|
30
|
+
run: pyproject-build --installer uv --sdist --wheel . --outdir dist
|
|
31
|
+
- name: Publish to PyPI
|
|
32
|
+
uses: pypa/gh-action-pypi-publish@v1.10.1
|
|
@@ -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.3.
|
|
18
|
+
rev: "1.3.2"
|
|
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.1"
|
|
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.4"
|
|
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.1
|
|
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.
|
|
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'
|
|
32
34
|
Provides-Extra: test
|
|
33
35
|
Requires-Dist: covdefaults>=2.3; extra == 'test'
|
|
34
|
-
Requires-Dist: httpx>=0.
|
|
35
|
-
Requires-Dist: pytest-cov>=
|
|
36
|
-
Requires-Dist: pytest>=
|
|
36
|
+
Requires-Dist: httpx>=0.27.2; extra == 'test'
|
|
37
|
+
Requires-Dist: pytest-cov>=5; extra == 'test'
|
|
38
|
+
Requires-Dist: pytest>=8.3.2; extra == 'test'
|
|
37
39
|
Description-Content-Type: text/markdown
|
|
38
40
|
|
|
39
41
|
# devpi-process
|
|
@@ -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.test = [
|
|
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.1'
|
|
16
|
+
__version_tuple__ = version_tuple = (1, 0, 1)
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
[tox]
|
|
2
2
|
requires =
|
|
3
3
|
tox>=4.2
|
|
4
|
+
tox-uv>=1.11.3
|
|
4
5
|
env_list =
|
|
5
6
|
fix
|
|
6
|
-
py311
|
|
7
|
-
py310
|
|
8
|
-
py39
|
|
9
|
-
py38
|
|
10
|
-
py37
|
|
11
7
|
type
|
|
12
8
|
readme
|
|
9
|
+
3.13
|
|
10
|
+
3.12
|
|
11
|
+
3.11
|
|
12
|
+
3.10
|
|
13
|
+
3.9
|
|
14
|
+
3.8
|
|
13
15
|
skip_missing_interpreters = true
|
|
14
16
|
|
|
15
17
|
[testenv]
|
|
@@ -34,7 +36,7 @@ commands =
|
|
|
34
36
|
description = run static analysis and style check using flake8
|
|
35
37
|
skip_install = true
|
|
36
38
|
deps =
|
|
37
|
-
pre-commit>=
|
|
39
|
+
pre-commit-uv>=4.1
|
|
38
40
|
pass_env =
|
|
39
41
|
HOMEPATH
|
|
40
42
|
PROGRAMDATA
|
|
@@ -44,9 +46,7 @@ commands =
|
|
|
44
46
|
[testenv:type]
|
|
45
47
|
description = run type check on code base
|
|
46
48
|
deps =
|
|
47
|
-
mypy==1.
|
|
48
|
-
set_env =
|
|
49
|
-
{tty:MYPY_FORCE_COLOR = 1}
|
|
49
|
+
mypy==1.11.2
|
|
50
50
|
commands =
|
|
51
51
|
mypy src
|
|
52
52
|
mypy tests
|
|
@@ -55,11 +55,13 @@ commands =
|
|
|
55
55
|
description = check that the long description is valid
|
|
56
56
|
skip_install = true
|
|
57
57
|
deps =
|
|
58
|
-
build[
|
|
59
|
-
|
|
58
|
+
build[uv]>=1.2.2
|
|
59
|
+
check-wheel-contents>=0.6
|
|
60
|
+
twine>=5.1.1
|
|
60
61
|
commands =
|
|
61
|
-
|
|
62
|
-
twine check {envtmpdir}
|
|
62
|
+
pyproject-build --installer uv --outdir {envtmpdir} --sdist --wheel .
|
|
63
|
+
twine check {envtmpdir}{/}*
|
|
64
|
+
check-wheel-contents --no-config {envtmpdir}
|
|
63
65
|
|
|
64
66
|
[testenv:dev]
|
|
65
67
|
description = generate a DEV environment
|
|
@@ -68,5 +70,5 @@ extras =
|
|
|
68
70
|
docs
|
|
69
71
|
test
|
|
70
72
|
commands =
|
|
71
|
-
|
|
73
|
+
uv pip tree
|
|
72
74
|
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
|
|
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
|