Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-devpi-process for 
openSUSE:Factory checked in at 2023-10-03 20:15:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-devpi-process (Old)
 and      /work/SRC/openSUSE:Factory/.python-devpi-process.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-devpi-process"

Tue Oct  3 20:15:27 2023 rev:2 rq:1114346 version:1.0.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-devpi-process/python-devpi-process.changes    
    2023-05-11 12:34:18.126943668 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-devpi-process.new.28202/python-devpi-process.changes
     2023-10-03 20:17:11.074655839 +0200
@@ -1,0 +2,13 @@
+Tue Sep 26 19:22:07 UTC 2023 - Torsten Gruner <t.gru...@katodev.de>
+
+- update to version 1.0.0
+  * Exclude dependabot and pre-commit ci from release notes
+- version 0.3.1
+  * Add pyproject-fmt
+  * [pre-commit.ci] pre-commit autoupdate
+  * Bump deps and tools
+  * Bump pypa/gh-action-pypi-publish 1.8.6
+  * Add ruff
+- split package to prevent build dependency (multibuild)
+
+-------------------------------------------------------------------

Old:
----
  devpi_process-0.3.0.tar.gz

New:
----
  _multibuild
  devpi_process-1.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-devpi-process.spec ++++++
--- /var/tmp/diff_new_pack.x5Dp76/_old  2023-10-03 20:17:12.382703015 +0200
+++ /var/tmp/diff_new_pack.x5Dp76/_new  2023-10-03 20:17:12.382703015 +0200
@@ -1,5 +1,5 @@
 #
-# spec file for package python-devpi-process
+# spec file
 #
 # Copyright (c) 2023 SUSE LLC
 #
@@ -16,27 +16,43 @@
 #
 
 
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%define psuffix -test
+%bcond_without test
+%else
+%define psuffix %{nil}
+%bcond_with test
+%endif
 %{?sle15_python_module_pythons}
-Name:           python-devpi-process
-Version:        0.3.0
+%define skip_python39 1
+Name:           python-devpi-process%{psuffix}
+Version:        1.0.0
 Release:        0
 Summary:        Programmatic API to create and use a devpi server process
 License:        MIT
 URL:            https://github.com/tox-dev/devpi-process
-Source:         
https://files.pythonhosted.org/packages/source/d/devpi_process/devpi_process-0.3.0.tar.gz
+Source:         
https://files.pythonhosted.org/packages/source/d/devpi_process/devpi_process-%{version}.tar.gz
+BuildRequires:  %{python_module hatch-vcs >= 0.3}
+BuildRequires:  %{python_module hatchling >= 1.18}
 BuildRequires:  %{python_module pip}
+BuildRequires:  %{python_module typing-extensions >= 4.7.1 if %python-base < 
3.11}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-Requires:       python-devpi-client >= 6.0.2
-Requires:       python-devpi-server >= 6.7
-Suggests:       python-httpx >= 0.23.1
+Requires:       python-devpi-client >= 6.0.5
+Requires:       python-devpi-server >= 6.9.2
+Suggests:       python-httpx >= 0.24.1
 BuildArch:      noarch
 # SECTION test requirements
-BuildRequires:  %{python_module devpi-client >= 6.0.2}
-BuildRequires:  %{python_module devpi-server >= 6.7}
-BuildRequires:  %{python_module httpx}
-BuildRequires:  %{python_module pytest >= 7.2}
+%if %{with test}
+BuildRequires:  %{python_module covdefaults >= 2.3}
+BuildRequires:  %{python_module devpi-client >= 6.0.5}
+BuildRequires:  %{python_module devpi-server >= 6.8}
+BuildRequires:  %{python_module httpx >= 0.24.1}
+BuildRequires:  %{python_module pytest >= 7.4}
+BuildRequires:  %{python_module pytest-cov}
+%endif
 # /SECTION
 %python_subpackages
 
@@ -46,10 +62,10 @@
 
 %prep
 %autosetup -p1 -n devpi_process-%{version}
-
-# Both of these issues are resolved in the upstream master
-sed -i -e '/^license_file =/s/ =/s =/' \
-    -e '/^name/aversion = %{version}' setup.cfg
+# Fix version check for pytest
+sed -i -e '/import devpi_process/a\ \ \ \ from importlib import metadata' 
tests/test_devpi_process.py
+sed -i "s/^.*assert devpi_process.__version__/    assert 
metadata.version('devpi_process')/" tests/test_devpi_process.py
+sed -i "s/from ._version import __version__/from ._version import version/" 
src/devpi_process/__init__.py
 
 %build
 %pyproject_wheel
@@ -59,11 +75,16 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
+%if %{with test}
 %pytest
+%python_expand rm -r -f %{buildroot}/usr
+%endif
 
+%if !%{with test}
 %files %{python_files}
 %doc CHANGELOG.md README.md
 %license LICENSE.txt
 %{python_sitelib}/devpi_process
 %{python_sitelib}/devpi_process-%{version}*-info
+%endif
 

++++++ _multibuild ++++++
<multibuild>
  <package>test</package>
</multibuild>

++++++ devpi_process-0.3.0.tar.gz -> devpi_process-1.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/.github/release.yml 
new/devpi_process-1.0.0/.github/release.yml
--- old/devpi_process-0.3.0/.github/release.yml 1970-01-01 01:00:00.000000000 
+0100
+++ new/devpi_process-1.0.0/.github/release.yml 2020-02-02 01:00:00.000000000 
+0100
@@ -0,0 +1,5 @@
+changelog:
+  exclude:
+    authors:
+      - dependabot
+      - pre-commit-ci
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/.github/workflows/check.yml 
new/devpi_process-1.0.0/.github/workflows/check.yml
--- old/devpi_process-0.3.0/.github/workflows/check.yml 2022-12-03 
23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/.github/workflows/check.yml 2020-02-02 
01:00:00.000000000 +0100
@@ -1,6 +1,7 @@
 name: check
 on:
   push:
+    tags-ignore: ["**"]
   pull_request:
   schedule:
     - cron: "0 8 * * *"
@@ -19,12 +20,10 @@
         py:
           - "3.11"
           - "3.10"
-          - "pypy-3.7-v7.3.7" # ahead to start it earlier because takes longer
           - "3.9"
           - "3.8"
-          - "3.7"
         os:
-          - ubuntu-22.04
+          - ubuntu-latest
           - windows-2022
           - macos-12
 
@@ -65,7 +64,7 @@
       fail-fast: false
       matrix:
         os:
-          - ubuntu-22.04
+          - ubuntu-latest
           - windows-2022
         tox_env:
           - dev
@@ -87,26 +86,3 @@
         run: tox -vv --notest -e ${{ matrix.tox_env }}
       - name: Run test suite
         run: tox --skip-pkg-install -e ${{ matrix.tox_env }}
-
-  publish:
-    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
-    needs: [check, test]
-    runs-on: ubuntu-latest
-    steps:
-      - name: Setup python to build package
-        uses: actions/setup-python@v4
-        with:
-          python-version: "3.11"
-      - name: Install build
-        run: python -m pip install build
-      - uses: actions/checkout@v3
-        with:
-          fetch-depth: 0
-      - name: Build sdist and wheel
-        run: python -m build -s -w . -o dist
-      - name: Publish to PyPi
-        uses: pypa/gh-action-pypi-publish@v1.5.2
-        with:
-          skip_existing: true
-          user: __token__
-          password: ${{ secrets.pypi_password }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/.github/workflows/release.yml 
new/devpi_process-1.0.0/.github/workflows/release.yml
--- old/devpi_process-0.3.0/.github/workflows/release.yml       1970-01-01 
01:00:00.000000000 +0100
+++ new/devpi_process-1.0.0/.github/workflows/release.yml       2020-02-02 
01:00:00.000000000 +0100
@@ -0,0 +1,27 @@
+name: Release to PyPI
+on:
+  push:
+    tags: ["*"]
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    environment:
+      name: release
+      url: https://pypi.org/p/devpi-process
+    permissions:
+      id-token: write
+    steps:
+      - name: Setup python to build package
+        uses: actions/setup-python@v4
+        with:
+          python-version: "3.11"
+      - name: Install build
+        run: python -m pip install build
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+      - name: Build package
+        run: pyproject-build -s -w . -o dist
+      - name: Publish to PyPI
+        uses: pypa/gh-action-pypi-publish@v1.8.10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/.gitignore 
new/devpi_process-1.0.0/.gitignore
--- old/devpi_process-0.3.0/.gitignore  2022-12-03 23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/.gitignore  2020-02-02 01:00:00.000000000 +0100
@@ -1,11 +1,7 @@
-.idea
-*.egg-info/
-.tox/
+/.tox
 .coverage*
 coverage.xml
 .*_cache
 __pycache__
 **.pyc
-build
-dist
-src/devpi_process/version.py
+src/devpi_process/_version.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/.pre-commit-config.yaml 
new/devpi_process-1.0.0/.pre-commit-config.yaml
--- old/devpi_process-0.3.0/.pre-commit-config.yaml     2022-12-03 
23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/.pre-commit-config.yaml     2020-02-02 
01:00:00.000000000 +0100
@@ -2,68 +2,32 @@
   - repo: https://github.com/pre-commit/pre-commit-hooks
     rev: v4.4.0
     hooks:
-      - id: check-ast
-      - id: check-builtin-literals
-      - id: check-docstring-first
-      - id: check-merge-conflict
-      - id: check-yaml
-      - id: check-toml
-      - id: debug-statements
       - id: end-of-file-fixer
       - id: trailing-whitespace
-  - repo: https://github.com/asottile/pyupgrade
-    rev: v3.3.0
+  - repo: https://github.com/astral-sh/ruff-pre-commit
+    rev: "v0.0.285"
     hooks:
-      - id: pyupgrade
-        args: ["--py36-plus"]
-  - repo: https://github.com/PyCQA/isort
-    rev: 5.10.1
-    hooks:
-      - id: isort
+      - id: ruff
+        args: [--fix, --exit-non-zero-on-fix]
   - repo: https://github.com/psf/black
-    rev: 22.10.0
+    rev: 23.7.0
     hooks:
       - id: black
-        args: [--safe]
-  - repo: https://github.com/asottile/blacken-docs
-    rev: v1.12.1
-    hooks:
-      - id: blacken-docs
-        additional_dependencies: [black==22.10]
-  - repo: https://github.com/asottile/setup-cfg-fmt
-    rev: v2.2.0
-    hooks:
-      - id: setup-cfg-fmt
   - repo: https://github.com/tox-dev/tox-ini-fmt
-    rev: "0.5.2"
+    rev: "1.3.1"
     hooks:
       - id: tox-ini-fmt
         args: ["-p", "fix"]
-  - repo: https://github.com/PyCQA/flake8
-    rev: 6.0.0
+  - repo: https://github.com/tox-dev/pyproject-fmt
+    rev: "0.13.1"
     hooks:
-      - id: flake8
-        additional_dependencies:
-          - flake8-bugbear==22.10.27
-          - flake8-comprehensions==3.10.1
-          - flake8-pytest-style==1.6
-          - flake8-spellcheck==0.28
-          - flake8-unused-arguments==0.0.12
-          - flake8-noqa==1.3
-          - pep8-naming==0.13.2
-          - flake8-pyproject==1.2.1
+      - id: pyproject-fmt
+        additional_dependencies: ["tox>=4.8"]
   - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: "v2.7.1"
+    rev: "v3.0.2"
     hooks:
       - id: prettier
-        additional_dependencies:
-          - prettier@2.7.1
-          - "@prettier/plugin-xml@2.2"
         args: ["--print-width=120", "--prose-wrap=always"]
-  - repo: https://github.com/igorshubovych/markdownlint-cli
-    rev: v0.32.2
-    hooks:
-      - id: markdownlint
   - repo: meta
     hooks:
       - id: check-hooks-apply
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/CODE_OF_CONDUCT.md 
new/devpi_process-1.0.0/CODE_OF_CONDUCT.md
--- old/devpi_process-0.3.0/CODE_OF_CONDUCT.md  2022-12-03 23:52:08.000000000 
+0100
+++ new/devpi_process-1.0.0/CODE_OF_CONDUCT.md  2020-02-02 01:00:00.000000000 
+0100
@@ -44,9 +44,9 @@
 ## Enforcement
 
 Instances of abusive, harassing, or otherwise unacceptable behavior may be 
reported by contacting the project team at
-tox-...@python.org. The project team will review and investigate all 
complaints, and will respond in a way that it deems
-appropriate to the circumstances. The project team is obligated to maintain 
confidentiality with regard to the reporter
-of an incident. Further details of specific enforcement policies may be posted 
separately.
+`tox-...@python.org`. The project team will review and investigate all 
complaints, and will respond in a way that it
+deems appropriate to the circumstances. The project team is obligated to 
maintain confidentiality with regard to the
+reporter of an incident. Further details of specific enforcement policies may 
be posted separately.
 
 Project maintainers who do not follow or enforce the Code of Conduct in good 
faith may face temporary or permanent
 repercussions as determined by other members of the project's leadership.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/PKG-INFO 
new/devpi_process-1.0.0/PKG-INFO
--- old/devpi_process-0.3.0/PKG-INFO    2022-12-03 23:52:15.693089700 +0100
+++ new/devpi_process-1.0.0/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
@@ -1,36 +1,47 @@
 Metadata-Version: 2.1
-Name: devpi_process
-Version: 0.3.0
+Name: devpi-process
+Version: 1.0.0
 Summary: devpi process provides a programmatic API to create and use a devpi 
server process
-Home-page: https://github.com/tox-dev/devpi-process
-Maintainer: Bernat Gabor
-Maintainer-email: gaborjber...@gmail.com
-License: MIT
+Project-URL: Homepage, https://github.com/tox-dev/devpi-process#readme
 Project-URL: Source, https://github.com/tox-dev/devpi-process
-Project-URL: Tracker, https://github.com/tox-dev/devpi-process
-Keywords: devpi,programmatic
-Platform: any
+Project-URL: Tracker, https://github.com/tox-dev/devpi-process/issues
+Author-email: Bernát Gábor <gaborjber...@gmail.com>
+Maintainer-email: Bernát Gábor <gaborjber...@gmail.com>
+License-Expression: MIT
+License-File: LICENSE.txt
+Keywords: environments,isolated,testing,virtual
 Classifier: Development Status :: 5 - Production/Stable
+Classifier: Framework :: tox
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: POSIX
-Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Topic :: Software Development :: Libraries
+Classifier: Topic :: Software Development :: Testing
 Classifier: Topic :: Utilities
-Requires-Python: >=3.7
-Description-Content-Type: text/markdown
+Requires-Python: >=3.8
+Requires-Dist: devpi-client>=6.0.5
+Requires-Dist: devpi-server>=6.9.2
+Requires-Dist: typing-extensions>=4.7.1; python_version < '3.11'
 Provides-Extra: test
-License-File: LICENSE.txt
+Requires-Dist: covdefaults>=2.3; extra == 'test'
+Requires-Dist: httpx>=0.24.1; extra == 'test'
+Requires-Dist: pytest-cov>=4.1; extra == 'test'
+Requires-Dist: pytest>=7.4; extra == 'test'
+Description-Content-Type: text/markdown
 
 # devpi-process
 
 
[![PyPI](https://img.shields.io/pypi/v/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
 [![PyPI - 
Implementation](https://img.shields.io/pypi/implementation/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
 [![PyPI - Python 
Version](https://img.shields.io/pypi/pyversions/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
-[![PyPI - 
Downloads](https://img.shields.io/pypi/dm/devpi-process?style=flat-square)](https://pypistats.org/packages/devpi-process)
+[![Downloads](https://static.pepy.tech/badge/devpi-process/month)](https://pepy.tech/project/devpi-process)
 [![PyPI - 
License](https://img.shields.io/pypi/l/devpi-process?style=flat-square)](https://opensource.org/licenses/MIT)
 
[![check](https://github.com/tox-dev/devpi-process/workflows/check/badge.svg)](https://github.com/tox-dev/devpi-process/actions?query=workflow%3Acheck)
 [![Code style:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/README.md 
new/devpi_process-1.0.0/README.md
--- old/devpi_process-0.3.0/README.md   2022-12-03 23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/README.md   2020-02-02 01:00:00.000000000 +0100
@@ -3,7 +3,7 @@
 
[![PyPI](https://img.shields.io/pypi/v/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
 [![PyPI - 
Implementation](https://img.shields.io/pypi/implementation/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
 [![PyPI - Python 
Version](https://img.shields.io/pypi/pyversions/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
-[![PyPI - 
Downloads](https://img.shields.io/pypi/dm/devpi-process?style=flat-square)](https://pypistats.org/packages/devpi-process)
+[![Downloads](https://static.pepy.tech/badge/devpi-process/month)](https://pepy.tech/project/devpi-process)
 [![PyPI - 
License](https://img.shields.io/pypi/l/devpi-process?style=flat-square)](https://opensource.org/licenses/MIT)
 
[![check](https://github.com/tox-dev/devpi-process/workflows/check/badge.svg)](https://github.com/tox-dev/devpi-process/actions?query=workflow%3Acheck)
 [![Code style:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/codecov.yml 
new/devpi_process-1.0.0/codecov.yml
--- old/devpi_process-0.3.0/codecov.yml 2022-12-03 23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/codecov.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-coverage:
-  status:
-    patch:
-      default:
-        informational: true
-comment: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/pyproject.toml 
new/devpi_process-1.0.0/pyproject.toml
--- old/devpi_process-0.3.0/pyproject.toml      2022-12-03 23:52:08.000000000 
+0100
+++ new/devpi_process-1.0.0/pyproject.toml      2020-02-02 01:00:00.000000000 
+0100
@@ -1,31 +1,106 @@
 [build-system]
-requires = ["setuptools>=65.6.3", "setuptools_scm>=7.0.5"]
-build-backend = 'setuptools.build_meta'
+build-backend = "hatchling.build"
+requires = [
+  "hatch-vcs>=0.3",
+  "hatchling>=1.18",
+]
+
+[project]
+name = "devpi-process"
+description = "devpi process provides a programmatic API to create and use a 
devpi server process"
+readme.content-type = "text/markdown"
+readme.file = "README.md"
+keywords = [
+  "environments",
+  "isolated",
+  "testing",
+  "virtual",
+]
+license = "MIT"
+maintainers = [{ name = "Bernát Gábor", email = "gaborjber...@gmail.com" }]
+authors = [{ name = "Bernát Gábor", email = "gaborjber...@gmail.com" }]
+requires-python = ">=3.8"
+classifiers = [
+  "Development Status :: 5 - Production/Stable",
+  "Framework :: tox",
+  "Intended Audience :: Developers",
+  "License :: OSI Approved :: MIT License",
+  "Operating System :: MacOS :: MacOS X",
+  "Operating System :: Microsoft :: Windows",
+  "Operating System :: POSIX",
+  "Programming Language :: Python :: 3 :: Only",
+  "Programming Language :: Python :: 3.8",
+  "Programming Language :: Python :: 3.9",
+  "Programming Language :: Python :: 3.10",
+  "Programming Language :: Python :: 3.11",
+  "Topic :: Software Development :: Libraries",
+  "Topic :: Software Development :: Testing",
+  "Topic :: Utilities",
+]
+dynamic = [
+  "version",
+]
+dependencies = [
+  "devpi-client>=6.0.5",
+  "devpi-server>=6.9.2",
+  'typing-extensions>=4.7.1; python_version < "3.11"',
+]
+optional-dependencies.test = [
+  "covdefaults>=2.3",
+  "httpx>=0.24.1",
+  "pytest>=7.4",
+  "pytest-cov>=4.1",
+]
+urls.Homepage = "https://github.com/tox-dev/devpi-process#readme";
+urls.Source = "https://github.com/tox-dev/devpi-process";
+urls.Tracker = "https://github.com/tox-dev/devpi-process/issues";
+
+[tool.hatch]
+build.hooks.vcs.version-file = "src/devpi_process/_version.py"
+version.source = "vcs"
 
 [tool.black]
 line-length = 120
 
-[tool.isort]
-profile = "black"
-known_first_party = ["devpi_process"]
-
-[tool.setuptools_scm]
-write_to = "src/devpi_process/version.py"
-write_to_template = """
-\"\"\" Version information \"\"\"
-
-__version__ = "{version}"
-"""
-
-[tool.pep8]
-max-line-length = "120"
-
-[tool.flake8]
-max-complexity = 22
-max-line-length = 120
-unused-arguments-ignore-abstract-functions = true
-noqa-require-code = true
-dictionaries = ["en_US", "python", "technical", "django"]
+[tool.ruff]
+select = ["ALL"]
+line-length = 120
+target-version = "py38"
+isort = {known-first-party = ["devpi_process"], required-imports = ["from 
__future__ import annotations"]}
 ignore = [
-  "E203", # whitespace before ':'
+  "ANN101",  # no typoe annotation for self
+  "ANN401",  # allow Any as type annotation
+  "D203",  # `one-blank-line-before-class` (D203) and 
`no-blank-line-before-class` (D211) are incompatible
+  "D212",  # `multi-line-summary-first-line` (D212) and 
`multi-line-summary-second-line` (D213) are incompatible
+  "S104",  # Possible binding to all interface
+]
+[tool.ruff.per-file-ignores]
+"tests/**/*.py" = [
+  "S101",  # asserts allowed in tests...
+  "FBT",  # don"t care about booleans as positional arguments in tests
+  "INP001", # no implicit namespace
+  "D",  # don"t care about documentation in tests
+  "S603",  # `subprocess` call: check for execution of untrusted input
+  "PLR2004",  # Magic value used in comparison, consider replacing with a 
constant variable
+]
+
+[tool.coverage]
+html.show_contexts = true
+html.skip_covered = false
+paths.source = [
+  "src",
+  ".tox*/*/lib/python*/site-packages",
+  ".tox*/pypy*/site-packages",
+  ".tox*\\*\\Lib\\site-packages",
+  "*/src",
+  "*\\src",
 ]
+report.fail_under = 98
+report.omit = []
+run.parallel = true
+run.plugins = ["covdefaults"]
+
+[tool.mypy]
+python_version = "3.11"
+show_error_codes = true
+strict = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/setup.cfg 
new/devpi_process-1.0.0/setup.cfg
--- old/devpi_process-0.3.0/setup.cfg   2022-12-03 23:52:15.693089700 +0100
+++ new/devpi_process-1.0.0/setup.cfg   1970-01-01 01:00:00.000000000 +0100
@@ -1,82 +0,0 @@
-[metadata]
-name = devpi_process
-description = devpi process provides a programmatic API to create and use a 
devpi server process
-long_description = file: README.md
-long_description_content_type = text/markdown
-url = https://github.com/tox-dev/devpi-process
-maintainer = Bernat Gabor
-maintainer_email = gaborjber...@gmail.com
-license = MIT
-license_file = LICENSE.txt
-platforms = any
-classifiers = 
-       Development Status :: 5 - Production/Stable
-       Intended Audience :: Developers
-       License :: OSI Approved :: MIT License
-       Operating System :: MacOS :: MacOS X
-       Operating System :: Microsoft :: Windows
-       Operating System :: POSIX
-       Programming Language :: Python :: 3
-       Programming Language :: Python :: 3 :: Only
-       Topic :: Software Development :: Libraries
-       Topic :: Utilities
-keywords = devpi, programmatic
-project_urls = 
-       Source=https://github.com/tox-dev/devpi-process
-       Tracker=https://github.com/tox-dev/devpi-process
-
-[options]
-packages = find:
-install_requires = 
-       devpi-client>=6.0.2
-       devpi-server>=6.7
-python_requires = >=3.7
-include_package_data = True
-package_dir = 
-       =src
-zip_safe = True
-
-[options.packages.find]
-where = src
-
-[options.extras_require]
-test = 
-       covdefaults>=2.2.2
-       httpx>=0.23.1
-       pytest>=7.2
-       pytest-cov>=4
-
-[options.package_data]
-devpi_process = py.typed
-
-[sdist]
-formats = gztar
-
-[coverage:run]
-plugins = covdefaults
-parallel = true
-
-[coverage:paths]
-src = 
-       src
-       .tox/*/lib/python*/site-packages
-       .tox/pypy*/site-packages
-       .tox\*\Lib\site-packages\
-       */src
-       *\src
-other = 
-       .
-       */devpi-process
-       *\devpi-process
-
-[coverage:report]
-fail_under = 100
-
-[coverage:html]
-show_contexts = true
-skip_covered = false
-
-[egg_info]
-tag_build = 
-tag_date = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/setup.py 
new/devpi_process-1.0.0/setup.py
--- old/devpi_process-0.3.0/setup.py    2022-12-03 23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/setup.py    1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-from __future__ import annotations
-
-from setuptools import setup
-
-setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process/__init__.py 
new/devpi_process-1.0.0/src/devpi_process/__init__.py
--- old/devpi_process-0.3.0/src/devpi_process/__init__.py       2022-12-03 
23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process/__init__.py       2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,4 @@
+"""Devpi PyPI to test with."""
 from __future__ import annotations
 
 import random
@@ -9,18 +10,35 @@
 from pathlib import Path
 from subprocess import PIPE, Popen, run
 from threading import Thread
-from types import TracebackType
-from typing import IO, Iterator, Sequence, cast
+from typing import IO, TYPE_CHECKING, Iterator, Sequence, cast
 
-from .version import __version__
+from ._version import __version__
+
+if TYPE_CHECKING:
+    from types import TracebackType
+
+    if sys.version_info >= (3, 11):  # pragma: no cover (py311+)
+        from typing import Self
+    else:  # pragma: no cover (<py311)
+        from typing_extensions import Self
 
 
 def _check_call(cmd: list[str]) -> None:
-    run(cmd, check=True, stdout=PIPE, stderr=PIPE)
+    run(cmd, check=True, capture_output=True)  # noqa: S603
 
 
 class Index:
+    """Index."""
+
     def __init__(self, base_url: str, name: str, user: str, client_cmd_base: 
list[str]) -> None:
+        """
+        Create index.
+
+        :param base_url: base url
+        :param name: name for the index server
+        :param user: the username to use
+        :param client_cmd_base:
+        """
         self._client_cmd_base = client_cmd_base
         self._server_url = base_url
         self.name = name
@@ -28,31 +46,54 @@
 
     @property
     def url(self) -> str:
+        """:return: the URL to the index server"""
         return f"{self._server_url}/{self.name}/+simple/"
 
     def use(self) -> None:
-        _check_call(self._client_cmd_base + ["use", 
f"{self.user}/{self.name}"])
+        """Use this index server."""
+        _check_call([*self._client_cmd_base, "use", 
f"{self.user}/{self.name}"])
 
     def upload(self, *files: Path) -> None:
+        """
+        Upload packages to the index.
+
+        :param files: the files to upload
+        """
         cmd = self._client_cmd_base + ["upload", "--index", self.name] + 
[str(i) for i in files]
         _check_call(cmd)
 
     def __repr__(self) -> str:
+        """:return: repr of the index"""
         return f"{self.__class__.__name__}(url={self.url})"
 
 
 class IndexServer:
-    def __init__(self, path: Path, with_root_pypi: bool = False, start_args: 
Sequence[str] | None = None) -> None:
+    """A PyPI index server locally."""
+
+    def __init__(
+        self,
+        path: Path,
+        with_root_pypi: bool = False,  # noqa: FBT001, FBT002
+        start_args: Sequence[str] | None = None,
+    ) -> None:
+        """
+        Create the local index server.
+
+        :param path: the path where to host files
+        :param with_root_pypi: access to upstream PyPI
+        :param start_args: additional arguments to start the server
+        """
         self.path = path
         self._with_root_pypi = with_root_pypi
         self._start_args: Sequence[str] = [] if start_args is None else 
start_args
 
         self.host, self.port = "localhost", _find_free_port()
-        self._passwd = "".join(random.choices(string.ascii_letters, k=8))
+        self._passwd = "".join(random.choices(string.ascii_letters, k=8))  # 
noqa: S311
 
         scripts_dir = sysconfig.get_path("scripts")
         if scripts_dir is None:
-            raise RuntimeError("could not get scripts folder of host 
interpreter")  # pragma: no cover
+            msg = "could not get scripts folder of host interpreter"  # 
pragma: no cover
+            raise RuntimeError(msg)  # pragma: no cover
 
         def _exe(name: str) -> str:
             return str(Path(scripts_dir) / f"{name}{'.exe' if sys.platform == 
'win32' else ''}")
@@ -70,9 +111,11 @@
 
     @property
     def user(self) -> str:
+        """:return: username of the index server"""
         return "root"
 
-    def __enter__(self) -> IndexServer:
+    def __enter__(self) -> Self:
+        """:return: start the index server"""
         self._create_and_start_server()
         self._setup_client()
         return self
@@ -89,7 +132,7 @@
         # 2. start the server
         cmd = [self._server, "--serverdir", server_at, "--port", 
str(self.port)]
         cmd.extend(self._start_args)
-        self._process = Popen(cmd, stdout=PIPE, universal_newlines=True)
+        self._process = Popen(cmd, stdout=PIPE, universal_newlines=True)  # 
noqa: S603
         stdout = self._drain_stdout()
         for line in stdout:  # pragma: no branch # will always loop at least 
once
             if "serving at url" in line:
@@ -108,32 +151,47 @@
         stdout = cast(IO[str], process.stdout)
         while True:
             if process.poll() is not None:  # pragma: no cover
-                print(f"devpi server with pid {process.pid} at 
{self._server_dir} died")
+                print(f"devpi server with pid {process.pid} at 
{self._server_dir} died")  # noqa: T201
                 break
             yield stdout.readline()
 
     def _setup_client(self) -> None:
-        """create a user on the server and authenticate it"""
+        """Create a user on the server and authenticate it."""
         self._client_dir.mkdir(exist_ok=True)
         base = ["--clientdir", str(self._client_dir)]
-        _check_call([self._client, "use"] + base + [self.url])
-        _check_call([self._client, "login"] + base + [self.user, "--password", 
self._passwd])
+        _check_call([self._client, "use", *base, self.url])
+        _check_call([self._client, "login", *base, self.user, "--password", 
self._passwd])
 
     def create_index(self, name: str, *args: str) -> Index:
+        """
+        Create an index on the server.
+
+        :param name: with name
+        :param args: additional arguments
+        :return: the created index
+        """
         if name in self._indexes:  # pragma: no cover
-            raise ValueError(f"index {name} already exists")
+            msg = f"index {name} already exists"
+            raise ValueError(msg)
         base = [self._client, "--clientdir", str(self._client_dir)]
-        _check_call(base + ["index", "-c", name, *args])
+        _check_call([*base, "index", "-c", name, *args])
         index = Index(f"{self.url}/{self.user}", name, self.user, base)
         self._indexes[name] = index
         return index
 
     def __exit__(
         self,
-        exc_type: type[BaseException] | None,  # noqa: U100
-        exc_val: BaseException | None,  # noqa: U100
-        exc_tb: TracebackType | None,  # noqa: U100
+        exc_type: type[BaseException] | None,
+        exc_val: BaseException | None,
+        exc_tb: TracebackType | None,
     ) -> None:
+        """
+        Stop the index server.
+
+        :param exc_type:
+        :param exc_val:
+        :param exc_tb:
+        """
         if self._process is not None:  # pragma: no cover # defend against 
devpi startup fail
             self._process.terminate()
         if self._stdout_drain is not None and self._stdout_drain.is_alive():  
# pragma: no cover # devpi startup fail
@@ -141,9 +199,11 @@
 
     @property
     def url(self) -> str:
+        """:return: url to the index server"""
         return f"http://{self.host}:{self.port}";
 
     def __repr__(self) -> str:
+        """:return: repr of the index server"""
         return f"{self.__class__.__name__}(url={self.url}, 
indexes={list(self._indexes)})"
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process/_version.py 
new/devpi_process-1.0.0/src/devpi_process/_version.py
--- old/devpi_process-0.3.0/src/devpi_process/_version.py       1970-01-01 
01:00:00.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process/_version.py       2020-02-02 
01:00:00.000000000 +0100
@@ -0,0 +1,4 @@
+# file generated by setuptools_scm
+# don't change, don't track in version control
+__version__ = version = '1.0.0'
+__version_tuple__ = version_tuple = (1, 0, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/src/devpi_process/version.py 
new/devpi_process-1.0.0/src/devpi_process/version.py
--- old/devpi_process-0.3.0/src/devpi_process/version.py        2022-12-03 
23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process/version.py        1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-""" Version information """
-
-__version__ = "0.3.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/src/devpi_process.egg-info/PKG-INFO 
new/devpi_process-1.0.0/src/devpi_process.egg-info/PKG-INFO
--- old/devpi_process-0.3.0/src/devpi_process.egg-info/PKG-INFO 2022-12-03 
23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process.egg-info/PKG-INFO 1970-01-01 
01:00:00.000000000 +0100
@@ -1,66 +0,0 @@
-Metadata-Version: 2.1
-Name: devpi-process
-Version: 0.3.0
-Summary: devpi process provides a programmatic API to create and use a devpi 
server process
-Home-page: https://github.com/tox-dev/devpi-process
-Maintainer: Bernat Gabor
-Maintainer-email: gaborjber...@gmail.com
-License: MIT
-Project-URL: Source, https://github.com/tox-dev/devpi-process
-Project-URL: Tracker, https://github.com/tox-dev/devpi-process
-Keywords: devpi,programmatic
-Platform: any
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Operating System :: MacOS :: MacOS X
-Classifier: Operating System :: Microsoft :: Windows
-Classifier: Operating System :: POSIX
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3 :: Only
-Classifier: Topic :: Software Development :: Libraries
-Classifier: Topic :: Utilities
-Requires-Python: >=3.7
-Description-Content-Type: text/markdown
-Provides-Extra: test
-License-File: LICENSE.txt
-
-# devpi-process
-
-[![PyPI](https://img.shields.io/pypi/v/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
-[![PyPI - 
Implementation](https://img.shields.io/pypi/implementation/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
-[![PyPI - Python 
Version](https://img.shields.io/pypi/pyversions/devpi-process?style=flat-square)](https://pypi.org/project/devpi-process)
-[![PyPI - 
Downloads](https://img.shields.io/pypi/dm/devpi-process?style=flat-square)](https://pypistats.org/packages/devpi-process)
-[![PyPI - 
License](https://img.shields.io/pypi/l/devpi-process?style=flat-square)](https://opensource.org/licenses/MIT)
-[![check](https://github.com/tox-dev/devpi-process/workflows/check/badge.svg)](https://github.com/tox-dev/devpi-process/actions?query=workflow%3Acheck)
-[![Code style:
-black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)](https://github.com/psf/black)
-
-Allows you to create 
[devpi](https://devpi.net/docs/devpi/devpi/stable/+d/index.html) server process 
with indexes, and
-upload artifacts to that programmatically.
-
-## install
-
-```sh
-pip install devpi-process
-```
-
-## use
-
-```python
-from pathlib import Path
-
-from devpi_process import Index, IndexServer
-
-with IndexServer(Path("server-dir")) as server:
-    # create an index mirroring an Artifactory instance
-    magic_index_url = 
"https://magic.com/artifactory/api/pypi/magic-pypi/simple";
-    base_name = "magic"
-    server.create_index(base_name, "type=mirror", 
f"mirror_url={magic_index_url}")
-
-    # create a dev index server that bases of magic PyPI, and upload a wheel 
to it
-    dev: Index = server.create_index("dev", f"bases={server.user}/{base_name}")
-    dev.upload("magic-2.24.0-py3-none-any.whl")
-
-    assert dev.url  # point the tool consuming the index server to this
-```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/src/devpi_process.egg-info/SOURCES.txt 
new/devpi_process-1.0.0/src/devpi_process.egg-info/SOURCES.txt
--- old/devpi_process-0.3.0/src/devpi_process.egg-info/SOURCES.txt      
2022-12-03 23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process.egg-info/SOURCES.txt      
1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-.gitignore
-.markdownlint.yaml
-.pre-commit-config.yaml
-CHANGELOG.md
-CODE_OF_CONDUCT.md
-LICENSE.txt
-README.md
-codecov.yml
-pyproject.toml
-setup.cfg
-setup.py
-tox.ini
-whitelist.txt
-.github/dependabot.yml
-.github/workflows/check.yml
-src/devpi_process/__init__.py
-src/devpi_process/py.typed
-src/devpi_process/version.py
-src/devpi_process.egg-info/PKG-INFO
-src/devpi_process.egg-info/SOURCES.txt
-src/devpi_process.egg-info/dependency_links.txt
-src/devpi_process.egg-info/requires.txt
-src/devpi_process.egg-info/top_level.txt
-src/devpi_process.egg-info/zip-safe
-src/pytest_devpi/version.py
-tests/test_devpi_process.py
-tests/demo_pkg_inline/build.py
-tests/demo_pkg_inline/pyproject.toml
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/src/devpi_process.egg-info/dependency_links.txt 
new/devpi_process-1.0.0/src/devpi_process.egg-info/dependency_links.txt
--- old/devpi_process-0.3.0/src/devpi_process.egg-info/dependency_links.txt     
2022-12-03 23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process.egg-info/dependency_links.txt     
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/src/devpi_process.egg-info/requires.txt 
new/devpi_process-1.0.0/src/devpi_process.egg-info/requires.txt
--- old/devpi_process-0.3.0/src/devpi_process.egg-info/requires.txt     
2022-12-03 23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process.egg-info/requires.txt     
1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-devpi-client>=6.0.2
-devpi-server>=6.7
-
-[test]
-covdefaults>=2.2.2
-httpx>=0.23.1
-pytest>=7.2
-pytest-cov>=4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/src/devpi_process.egg-info/top_level.txt 
new/devpi_process-1.0.0/src/devpi_process.egg-info/top_level.txt
--- old/devpi_process-0.3.0/src/devpi_process.egg-info/top_level.txt    
2022-12-03 23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process.egg-info/top_level.txt    
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-devpi_process
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/src/devpi_process.egg-info/zip-safe 
new/devpi_process-1.0.0/src/devpi_process.egg-info/zip-safe
--- old/devpi_process-0.3.0/src/devpi_process.egg-info/zip-safe 2022-12-03 
23:52:15.000000000 +0100
+++ new/devpi_process-1.0.0/src/devpi_process.egg-info/zip-safe 1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/src/pytest_devpi/version.py 
new/devpi_process-1.0.0/src/pytest_devpi/version.py
--- old/devpi_process-0.3.0/src/pytest_devpi/version.py 2022-12-03 
23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/src/pytest_devpi/version.py 1970-01-01 
01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-""" Version information """
-from __future__ import annotations
-
-__version__ = "0.1.dev1+gc78a9e3.d20210617"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/tests/demo_pkg_inline/build.py 
new/devpi_process-1.0.0/tests/demo_pkg_inline/build.py
--- old/devpi_process-0.3.0/tests/demo_pkg_inline/build.py      2022-12-03 
23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/tests/demo_pkg_inline/build.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1,9 +1,9 @@
 from __future__ import annotations
 
-import os
 import sys
 import tarfile
 from io import BytesIO
+from pathlib import Path
 from textwrap import dedent
 from zipfile import ZipFile
 
@@ -18,10 +18,10 @@
 record = f"{dist_info}/RECORD"
 content = {
     logic: f"def do():\n    print('greetings from {name}')",
-    metadata: """
+    metadata: f"""
         Metadata-Version: 2.1
-        Name: {}
-        Version: {}
+        Name: {pkg_name}
+        Version: {version}
         Summary: UNKNOWN
         Home-page: UNKNOWN
         Author: UNKNOWN
@@ -30,58 +30,52 @@
         Platform: UNKNOWN
 
         UNKNOWN
-       """.format(
-        pkg_name, version
-    ),
-    wheel: """
+       """,
+    wheel: f"""
         Wheel-Version: 1.0
-        Generator: {}-{}
+        Generator: {name}-{version}
         Root-Is-Purelib: true
-        Tag: py{}-none-any
-       """.format(
-        name, version, sys.version_info[0]
-    ),
+        Tag: py{sys.version_info[0]}-none-any
+       """,
     f"{dist_info}/top_level.txt": name,
-    record: """
-        {0}/__init__.py,,
-        {1}/METADATA,,
-        {1}/WHEEL,,
-        {1}/top_level.txt,,
-        {1}/RECORD,,
-       """.format(
-        name, dist_info
-    ),
+    record: f"""
+        {name}/__init__.py,,
+        {dist_info}/METADATA,,
+        {dist_info}/WHEEL,,
+        {dist_info}/top_level.txt,,
+        {dist_info}/RECORD,,
+       """,
 }
 
 
 def build_wheel(
     wheel_directory: str,
-    metadata_directory: str | None = None,  # noqa: U100
-    config_settings: None = None,  # noqa: U100
+    metadata_directory: str | None = None,  # noqa: ARG001
+    config_settings: None = None,  # noqa: ARG001
 ) -> str:
     base_name = f"{name}-{version}-py{sys.version_info[0]}-none-any.whl"
-    path = os.path.join(wheel_directory, base_name)
-    with ZipFile(path, "w") as zip_file_handler:
+    path = Path(wheel_directory) / base_name
+    with ZipFile(str(path), "w") as zip_file_handler:
         for arc_name, data in content.items():  # pragma: no branch
             zip_file_handler.writestr(arc_name, dedent(data).strip())
     return base_name
 
 
 def get_requires_for_build_wheel(
-    config_settings: None = None,  # noqa: U100
+    config_settings: None = None,  # noqa: ARG001
 ) -> list[str]:
     return []  # pragma: no cover # only executed in non-host pythons
 
 
 def build_sdist(
     sdist_directory: str,
-    config_settings: None = None,  # noqa: U100
+    config_settings: None = None,  # noqa: ARG001
 ) -> str:
     result = f"{name}-{version}.tar.gz"
-    with tarfile.open(os.path.join(sdist_directory, result), "w:gz") as tar:
-        root = os.path.dirname(os.path.abspath(__file__))
-        tar.add(os.path.join(root, "build.py"), "build.py")
-        tar.add(os.path.join(root, "pyproject.toml"), "pyproject.toml")
+    with tarfile.open(str(Path(sdist_directory) / result), "w:gz") as tar:
+        root = Path(__file__).parent
+        tar.add(str(root / "build.py"), "build.py")
+        tar.add(str(root / "pyproject.toml"), "pyproject.toml")
 
         pkg_info = dedent(content[metadata]).strip().encode("utf-8")
         info = tarfile.TarInfo("PKG-INFO")
@@ -92,6 +86,6 @@
 
 
 def get_requires_for_build_sdist(
-    config_settings: None = None,  # noqa: U100
+    config_settings: None = None,  # noqa: ARG001
 ) -> list[str]:
     return []  # pragma: no cover # only executed in non-host pythons
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/devpi_process-0.3.0/tests/demo_pkg_inline/pyproject.toml 
new/devpi_process-1.0.0/tests/demo_pkg_inline/pyproject.toml
--- old/devpi_process-0.3.0/tests/demo_pkg_inline/pyproject.toml        
2022-12-03 23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/tests/demo_pkg_inline/pyproject.toml        
2020-02-02 01:00:00.000000000 +0100
@@ -1,4 +1,7 @@
 [build-system]
-requires = []
 build-backend = "build"
-backend-path = ["."]
+requires = [
+]
+backend-path = [
+  ".",
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/tests/test_devpi_process.py 
new/devpi_process-1.0.0/tests/test_devpi_process.py
--- old/devpi_process-0.3.0/tests/test_devpi_process.py 2022-12-03 
23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/tests/test_devpi_process.py 2020-02-02 
01:00:00.000000000 +0100
@@ -2,13 +2,16 @@
 
 from importlib.util import module_from_spec, spec_from_file_location
 from pathlib import Path
+from typing import TYPE_CHECKING
 
 import pytest
-from _pytest.tmpdir import TempPathFactory
 from httpx import get
 
 from devpi_process import IndexServer
 
+if TYPE_CHECKING:
+    from _pytest.tmpdir import TempPathFactory
+
 
 def test_version() -> None:
     import devpi_process
@@ -66,5 +69,5 @@
 
 def test_create_server_start_args(tmp_path: Path) -> None:
     with IndexServer(tmp_path, start_args=["--offline-mode"]) as server:
-        assert server._process is not None
-        assert server._process.args[-1] == "--offline-mode"  # type: ignore
+        assert server._process is not None  # noqa: SLF001
+        assert server._process.args[-1] == "--offline-mode"  # type: 
ignore[index] # noqa: SLF001
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/tox.ini 
new/devpi_process-1.0.0/tox.ini
--- old/devpi_process-0.3.0/tox.ini     2022-12-03 23:52:08.000000000 +0100
+++ new/devpi_process-1.0.0/tox.ini     2020-02-02 01:00:00.000000000 +0100
@@ -1,60 +1,61 @@
 [tox]
-envlist =
+requires =
+    tox>=4.2
+env_list =
     fix
+    py311
     py310
     py39
     py38
     py37
     type
     readme
-isolated_build = true
 skip_missing_interpreters = true
-minversion = 3.14
 
 [testenv]
 description = run the unit tests with pytest under {basepython}
-setenv =
-    COVERAGE_FILE = {toxworkdir}/.coverage.{envname}
-    COVERAGE_PROCESS_START = {toxinidir}/setup.cfg
-    _COVERAGE_SRC = {envsitepackagesdir}/sphinx_argparse_cli
+package = wheel
+wheel_build_env = .pkg
 extras =
     test
+set_env =
+    COVERAGE_FILE = {toxworkdir}/.coverage.{envname}
+    COVERAGE_PROCESS_START = {toxinidir}/pyproject.toml
+    _COVERAGE_SRC = {envsitepackagesdir}/devpi_process
 commands =
     pytest {tty:--color=yes} {posargs: \
       --junitxml {toxworkdir}{/}junit.{envname}.xml --cov 
{envsitepackagesdir}{/}devpi_process \
       --cov {toxinidir}{/}tests --cov-fail-under=100 \
-      --cov-config=setup.cfg --no-cov-on-fail --cov-report 
term-missing:skip-covered --cov-context=test \
+      --cov-config=pyproject.toml --no-cov-on-fail --cov-report 
term-missing:skip-covered --cov-context=test \
       --cov-report html:{envtmpdir}{/}htmlcov --cov-report 
xml:{toxworkdir}{/}coverage.{envname}.xml \
       tests}
-package = wheel
-wheel_build_env = .pkg
 
 [testenv:fix]
 description = run static analysis and style check using flake8
-passenv =
-    HOMEPATH
-    PROGRAMDATA
 skip_install = true
 deps =
-    pre-commit>=2.20
+    pre-commit>=3.3.3
+pass_env =
+    HOMEPATH
+    PROGRAMDATA
 commands =
     pre-commit run --all-files --show-diff-on-failure
 
 [testenv:type]
 description = run type check on code base
-setenv =
-    {tty:MYPY_FORCE_COLOR = 1}
 deps =
-    mypy==0.991
+    mypy==1.5
+set_env =
+    {tty:MYPY_FORCE_COLOR = 1}
 commands =
-    mypy --strict --python-version 3.10 src
-    mypy --strict --python-version 3.10 tests
+    mypy src
+    mypy tests
 
 [testenv:readme]
 description = check that the long description is valid
 skip_install = true
 deps =
-    build[virtualenv]>=0.9
+    build[virtualenv]>=0.10
     twine>=4.0.2
 commands =
     python -m build --sdist --wheel -o {envtmpdir} .
@@ -62,18 +63,10 @@
 
 [testenv:dev]
 description = generate a DEV environment
-usedevelop = true
+package = editable
 extras =
     docs
     test
 commands =
     python -m pip list --format=columns
     python -c 'import sys; print(sys.executable)'
-
-[testenv:py311]
-setenv =
-    {[testenv]setenv}
-    AIOHTTP_NO_EXTENSIONS = 1
-
-[pytest]
-junit_family = xunit2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/devpi_process-0.3.0/whitelist.txt 
new/devpi_process-1.0.0/whitelist.txt
--- old/devpi_process-0.3.0/whitelist.txt       2022-12-03 23:52:08.000000000 
+0100
+++ new/devpi_process-1.0.0/whitelist.txt       1970-01-01 01:00:00.000000000 
+0100
@@ -1,10 +0,0 @@
-addfile
-devpi
-exe
-getsockname
-inet
-mktemp
-readline
-sdist
-sysconfig
-tmpdir

Reply via email to