Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-iniconfig for 
openSUSE:Factory checked in at 2025-06-10 08:57:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-iniconfig (Old)
 and      /work/SRC/openSUSE:Factory/.python-iniconfig.new.19631 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-iniconfig"

Tue Jun 10 08:57:39 2025 rev:9 rq:1283362 version:2.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-iniconfig/python-iniconfig.changes        
2023-09-14 16:26:22.936118140 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-iniconfig.new.19631/python-iniconfig.changes 
    2025-06-10 08:58:30.182585626 +0200
@@ -1,0 +2,9 @@
+Tue Jun  3 14:18:36 UTC 2025 - Nico Krapp <nico.kr...@suse.com>
+
+- Update to 2.1.0
+  * fix #26 - list individuals in license file by @RonnyPfannschmidt in #52
+  * Run tests in CI by @nicoddemus in #53
+  * Use pypa/gh-action-pypi-publish@release/v1 @ GHA by @webknjaz in #54
+  * Add support for Python 3.12-3.13 and drop EOL 3.7 by @hugovk in #56
+
+-------------------------------------------------------------------

Old:
----
  iniconfig-2.0.0-tests.tar.gz
  iniconfig-2.0.0.tar.gz

New:
----
  iniconfig-2.1.0-tests.tar.gz
  iniconfig-2.1.0.tar.gz

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

Other differences:
------------------
++++++ python-iniconfig.spec ++++++
--- /var/tmp/diff_new_pack.uoYd4U/_old  2025-06-10 08:58:30.814611695 +0200
+++ /var/tmp/diff_new_pack.uoYd4U/_new  2025-06-10 08:58:30.818611860 +0200
@@ -1,7 +1,7 @@
 #
-# spec file
+# spec file for package python-iniconfig
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -27,7 +27,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-iniconfig%{psuffix}
-Version:        2.0.0
+Version:        2.1.0
 Release:        0
 Summary:        iniconfig: brain-dead simple config-ini parsing
 License:        MIT
@@ -35,7 +35,7 @@
 URL:            https://github.com/RonnyPfannschmidt/iniconfig
 Source:         
https://files.pythonhosted.org/packages/source/i/iniconfig/iniconfig-%{version}.tar.gz
 Source1:        
https://github.com/pytest-dev/iniconfig/archive/refs/tags/v%{version}.tar.gz#/iniconfig-%{version}-tests.tar.gz
-BuildRequires:  %{python_module base >= 3.7}
+BuildRequires:  %{python_module base >= 3.8}
 BuildRequires:  %{python_module hatch_vcs}
 BuildRequires:  %{python_module hatchling}
 BuildRequires:  %{python_module pip}

++++++ iniconfig-2.0.0-tests.tar.gz -> iniconfig-2.1.0-tests.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/.github/workflows/deploy.yml 
new/iniconfig-2.1.0/.github/workflows/deploy.yml
--- old/iniconfig-2.0.0/.github/workflows/deploy.yml    2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/.github/workflows/deploy.yml    2025-03-19 
18:28:27.000000000 +0100
@@ -15,11 +15,11 @@
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
         with:
           fetch-depth: 0
       - name: Cache
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           path: ~/.cache/pip
           key: deploy-${{ hashFiles('**/pyproject.toml') }}
@@ -27,7 +27,7 @@
             deploy-
 
       - name: Set up Python
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: "3.x"
 
@@ -50,7 +50,7 @@
 
       - name: Publish package to PyPI
         if: github.event.action == 'published'
-        uses: pypa/gh-action-pypi-publish@master
+        uses: pypa/gh-action-pypi-publish@release/v1
         with:
           user: __token__
           password: ${{ secrets.pypi_password }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/.github/workflows/main.yml 
new/iniconfig-2.1.0/.github/workflows/main.yml
--- old/iniconfig-2.0.0/.github/workflows/main.yml      2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/.github/workflows/main.yml      2025-03-19 
18:28:27.000000000 +0100
@@ -1,6 +1,6 @@
 name: build
 
-on: [push, pull_request]
+on: [push, pull_request, workflow_dispatch]
 
 jobs:
   build:
@@ -10,23 +10,26 @@
     strategy:
       fail-fast: false
       matrix:
-        python: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        python: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
         os: [ubuntu-latest, windows-latest]
 
     steps:
-    - uses: actions/checkout@v3
+    - uses: actions/checkout@v4
     - name: Set up Python
-      uses: actions/setup-python@v4
+      uses: actions/setup-python@v5
       with:
         python-version: ${{ matrix.python }}
-    - name: Install tox
-      run: python -m pip install --upgrade pip setuptools_scm hatch hatch-vcs
-    - name: install package local
-      run: pip install --no-build-isolation .
+        allow-prereleases: true
+    - name: Install hatch
+      run: python -m pip install --upgrade pip hatch hatch-vcs
+    - name: Run tests
+      run: hatch run +py=${{ matrix.python }} test:default --color=yes
 
   pre-commit:
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v3
-    - uses: actions/setup-python@v4
-    - uses: pre-commit/action@v3.0.0
+    - uses: actions/checkout@v4
+    - uses: actions/setup-python@v5
+      with:
+        python-version: 3.x
+    - uses: pre-commit/action@v3.0.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/.pre-commit-config.yaml 
new/iniconfig-2.1.0/.pre-commit-config.yaml
--- old/iniconfig-2.0.0/.pre-commit-config.yaml 2023-01-07 12:04:39.000000000 
+0100
+++ new/iniconfig-2.1.0/.pre-commit-config.yaml 2025-03-19 18:28:27.000000000 
+0100
@@ -3,7 +3,7 @@
     rev: v3.3.1
     hooks:
     -   id: pyupgrade
-        args: [--py37-plus]
+        args: [--py38-plus]
 - repo: https://github.com/tox-dev/pyproject-fmt
   rev: "0.4.1"
   hooks:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/CHANGELOG 
new/iniconfig-2.1.0/CHANGELOG
--- old/iniconfig-2.0.0/CHANGELOG       2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/CHANGELOG       2025-03-19 18:28:27.000000000 +0100
@@ -1,4 +1,11 @@
-2.0.0 
+2.1.0
+=====
+
+* fix artifact building - pin minimal version of hatch
+* drop eol python 3.8
+* add python 3.12 and 3.13
+
+2.0.0
 ======
 
 * add support for Python 3.7-3.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/LICENSE new/iniconfig-2.1.0/LICENSE
--- old/iniconfig-2.0.0/LICENSE 2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/LICENSE 2025-03-19 18:28:27.000000000 +0100
@@ -1,19 +1,21 @@
+The MIT License (MIT)
 
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-     
-  The above copyright notice and this permission notice shall be included in 
all
-  copies or substantial portions of the Software.
- 
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-  SOFTWARE.
+Copyright (c) 2010 - 2023 Holger Krekel and others
 
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/pyproject.toml 
new/iniconfig-2.1.0/pyproject.toml
--- old/iniconfig-2.0.0/pyproject.toml  2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/pyproject.toml  2025-03-19 18:28:27.000000000 +0100
@@ -2,7 +2,7 @@
 build-backend = "hatchling.build"
 requires = [
   "hatch-vcs",
-  "hatchling",
+  "hatchling>=1.26",
 ]
 
 [project]
@@ -14,7 +14,7 @@
     { name = "Ronny Pfannschmidt", email = "opensou...@ronnypfannschmidt.de" },
     { name = "Holger Krekel", email = "holger.kre...@gmail.com" },
 ]
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 dynamic = [
   "version",
 ]
@@ -27,11 +27,12 @@
     "Operating System :: POSIX",
     "Programming Language :: Python :: 3",
     "Programming Language :: Python :: 3 :: Only",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
     "Topic :: Software Development :: Libraries",
     "Topic :: Utilities",
 ]
@@ -55,10 +56,10 @@
   "pytest"
 ]
 [tool.hatch.envs.test.scripts]
-default = "pytest"
+default = "pytest {args}"
 
 [[tool.hatch.envs.test.matrix]]
-python = ["3.7", "3.8", "3.9", "3.10", "3.11"]
+python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
 
 [tool.setuptools_scm]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/src/iniconfig/__init__.py 
new/iniconfig-2.1.0/src/iniconfig/__init__.py
--- old/iniconfig-2.0.0/src/iniconfig/__init__.py       2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/src/iniconfig/__init__.py       2025-03-19 
18:28:27.000000000 +0100
@@ -20,7 +20,7 @@
 import os
 
 if TYPE_CHECKING:
-    from typing_extensions import Final
+    from typing import Final
 
 __all__ = ["IniConfig", "ParseError", "COMMENTCHARS", "iscommentline"]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/src/iniconfig/exceptions.py 
new/iniconfig-2.1.0/src/iniconfig/exceptions.py
--- old/iniconfig-2.0.0/src/iniconfig/exceptions.py     2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/src/iniconfig/exceptions.py     2025-03-19 
18:28:27.000000000 +0100
@@ -2,7 +2,7 @@
 from typing import TYPE_CHECKING
 
 if TYPE_CHECKING:
-    from typing_extensions import Final
+    from typing import Final
 
 
 class ParseError(Exception):

++++++ iniconfig-2.0.0-tests.tar.gz -> iniconfig-2.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/.github/workflows/deploy.yml 
new/iniconfig-2.1.0/.github/workflows/deploy.yml
--- old/iniconfig-2.0.0/.github/workflows/deploy.yml    2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/.github/workflows/deploy.yml    1970-01-01 
01:00:00.000000000 +0100
@@ -1,63 +0,0 @@
-name: Deploy
-
-on:
-  push:
-    branches:
-      - master
-      - "*deploy*"
-  release:
-    types:
-      - published
-
-jobs:
-  build:
-    if: github.repository == 'pytest-dev/iniconfig'
-    runs-on: ubuntu-latest
-
-    steps:
-      - uses: actions/checkout@v3
-        with:
-          fetch-depth: 0
-      - name: Cache
-        uses: actions/cache@v3
-        with:
-          path: ~/.cache/pip
-          key: deploy-${{ hashFiles('**/pyproject.toml') }}
-          restore-keys: |
-            deploy-
-
-      - name: Set up Python
-        uses: actions/setup-python@v4
-        with:
-          python-version: "3.x"
-
-      - name: Install build + twine
-        run: python -m pip install build twine setuptools_scm
-
-      - name: git describe output
-        run: git describe --tags
-
-      - id: scm_version
-        run: |
-          VERSION=$(python -m setuptools_scm --strip-dev)
-          echo SETUPTOOLS_SCM_PRETEND_VERSION=$VERSION >> $GITHUB_ENV
-
-      - name: Build package
-        run: python -m build
-      
-      - name: twine check
-        run: twine check dist/*
-
-      - name: Publish package to PyPI
-        if: github.event.action == 'published'
-        uses: pypa/gh-action-pypi-publish@master
-        with:
-          user: __token__
-          password: ${{ secrets.pypi_password }}
-
-      - name: Publish package to TestPyPI
-        uses: pypa/gh-action-pypi-publish@release/v1
-        with:
-          user: __token__
-          password: ${{ secrets.test_pypi_password }}
-          repository_url: https://test.pypi.org/legacy/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/.github/workflows/main.yml 
new/iniconfig-2.1.0/.github/workflows/main.yml
--- old/iniconfig-2.0.0/.github/workflows/main.yml      2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/.github/workflows/main.yml      1970-01-01 
01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-name: build
-
-on: [push, pull_request]
-
-jobs:
-  build:
-
-    runs-on: ${{ matrix.os }}
-
-    strategy:
-      fail-fast: false
-      matrix:
-        python: ["3.7", "3.8", "3.9", "3.10", "3.11"]
-        os: [ubuntu-latest, windows-latest]
-
-    steps:
-    - uses: actions/checkout@v3
-    - name: Set up Python
-      uses: actions/setup-python@v4
-      with:
-        python-version: ${{ matrix.python }}
-    - name: Install tox
-      run: python -m pip install --upgrade pip setuptools_scm hatch hatch-vcs
-    - name: install package local
-      run: pip install --no-build-isolation .
-
-  pre-commit:
-    runs-on: ubuntu-latest
-    steps:
-    - uses: actions/checkout@v3
-    - uses: actions/setup-python@v4
-    - uses: pre-commit/action@v3.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/.pre-commit-config.yaml 
new/iniconfig-2.1.0/.pre-commit-config.yaml
--- old/iniconfig-2.0.0/.pre-commit-config.yaml 2023-01-07 12:04:39.000000000 
+0100
+++ new/iniconfig-2.1.0/.pre-commit-config.yaml 1970-01-01 01:00:00.000000000 
+0100
@@ -1,24 +0,0 @@
-repos:
--   repo: https://github.com/asottile/pyupgrade
-    rev: v3.3.1
-    hooks:
-    -   id: pyupgrade
-        args: [--py37-plus]
-- repo: https://github.com/tox-dev/pyproject-fmt
-  rev: "0.4.1"
-  hooks:
-    - id: pyproject-fmt
-
-- repo: https://github.com/psf/black
-  rev: 22.12.0
-  hooks:
-      - id: black
-        language_version: python3
--   repo: https://github.com/pre-commit/mirrors-mypy
-    rev: 'v0.991' 
-    hooks:
-    -   id: mypy
-        args: []
-        additional_dependencies:
-          - "pytest==7.2.0"
-          - "tomli"
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/CHANGELOG 
new/iniconfig-2.1.0/CHANGELOG
--- old/iniconfig-2.0.0/CHANGELOG       2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/CHANGELOG       1970-01-01 01:00:00.000000000 +0100
@@ -1,52 +0,0 @@
-2.0.0 
-======
-
-* add support for Python 3.7-3.11
-* drop support for Python 2.6-3.6
-* add encoding argument defaulting to utf-8
-* inline and clarify type annotations
-* move parsing code from inline to extra file
-* add typing overloads for helper methods
-
-
-.. note::
-
-  major release due to the major changes in python versions supported + 
changes in packaging
-
-  the api is expected to be compatible
-
-
-1.1.1
-=====
-
-* fix version determination (thanks @florimondmanca)
-
-1.1.0
-=====
-
-- typing stubs (thanks @bluetech)
-- ci fixes
-
-1.0.1
-=====
-
-pytest 5+ support
-
-1.0
-===
-
-- re-sync with pylib codebase
-- add support for Python 3.4-3.5
-- drop support for Python 2.4-2.5, 3.2
-
-0.2
-===
-
-- added ability to ask "name in iniconfig", i.e. to check
-  if a section is contained.
-
-- fix bug in "name=value" parsing where value was "x=3"
-
-- allow for ': ' to delimit name=value pairs, so that e.g. .pypirc files
-  like http://docs.python.org/distutils/packageindex.html
-  can be successfully parsed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/LICENSE new/iniconfig-2.1.0/LICENSE
--- old/iniconfig-2.0.0/LICENSE 2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/LICENSE 2020-02-02 01:00:00.000000000 +0100
@@ -1,19 +1,21 @@
+The MIT License (MIT)
 
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-     
-  The above copyright notice and this permission notice shall be included in 
all
-  copies or substantial portions of the Software.
- 
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-  SOFTWARE.
+Copyright (c) 2010 - 2023 Holger Krekel and others
 
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/MANIFEST.in 
new/iniconfig-2.1.0/MANIFEST.in
--- old/iniconfig-2.0.0/MANIFEST.in     2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/MANIFEST.in     1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-include LICENSE
-include example.ini
-include tox.ini
-include src/iniconfig/py.typed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/PKG-INFO new/iniconfig-2.1.0/PKG-INFO
--- old/iniconfig-2.0.0/PKG-INFO        1970-01-01 01:00:00.000000000 +0100
+++ new/iniconfig-2.1.0/PKG-INFO        2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,81 @@
+Metadata-Version: 2.4
+Name: iniconfig
+Version: 2.1.0
+Summary: brain-dead simple config-ini parsing
+Project-URL: Homepage, https://github.com/pytest-dev/iniconfig
+Author-email: Ronny Pfannschmidt <opensou...@ronnypfannschmidt.de>, Holger 
Krekel <holger.kre...@gmail.com>
+License-Expression: MIT
+License-File: LICENSE
+Classifier: Development Status :: 4 - Beta
+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: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Topic :: Software Development :: Libraries
+Classifier: Topic :: Utilities
+Requires-Python: >=3.8
+Description-Content-Type: text/x-rst
+
+iniconfig: brain-dead simple parsing of ini files
+=======================================================
+
+iniconfig is a small and simple INI-file parser module
+having a unique set of features:
+
+* maintains order of sections and entries
+* supports multi-line values with or without line-continuations
+* supports "#" comments everywhere
+* raises errors with proper line-numbers
+* no bells and whistles like automatic substitutions
+* iniconfig raises an Error if two sections have the same name.
+
+If you encounter issues or have feature wishes please report them to:
+
+    https://github.com/RonnyPfannschmidt/iniconfig/issues
+
+Basic Example
+===================================
+
+If you have an ini file like this:
+
+.. code-block:: ini
+
+    # content of example.ini
+    [section1] # comment
+    name1=value1  # comment
+    name1b=value1,value2  # comment
+
+    [section2]
+    name2=
+        line1
+        line2
+
+then you can do:
+
+.. code-block:: pycon
+
+    >>> import iniconfig
+    >>> ini = iniconfig.IniConfig("example.ini")
+    >>> ini['section1']['name1'] # raises KeyError if not exists
+    'value1'
+    >>> ini.get('section1', 'name1b', [], lambda x: x.split(","))
+    ['value1', 'value2']
+    >>> ini.get('section1', 'notexist', [], lambda x: x.split(","))
+    []
+    >>> [x.name for x in list(ini)]
+    ['section1', 'section2']
+    >>> list(list(ini)[0].items())
+    [('name1', 'value1'), ('name1b', 'value1,value2')]
+    >>> 'section1' in ini
+    True
+    >>> 'inexistendsection' in ini
+    False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/example.ini 
new/iniconfig-2.1.0/example.ini
--- old/iniconfig-2.0.0/example.ini     2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/example.ini     1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-
-# content of example.ini
-[section1] # comment
-name1=value1  # comment
-name1b=value1,value2  # comment
-
-[section2]
-name2=
-    line1
-    line2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/pyproject.toml 
new/iniconfig-2.1.0/pyproject.toml
--- old/iniconfig-2.0.0/pyproject.toml  2023-01-07 12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/pyproject.toml  2020-02-02 01:00:00.000000000 +0100
@@ -2,7 +2,7 @@
 build-backend = "hatchling.build"
 requires = [
   "hatch-vcs",
-  "hatchling",
+  "hatchling>=1.26",
 ]
 
 [project]
@@ -14,7 +14,7 @@
     { name = "Ronny Pfannschmidt", email = "opensou...@ronnypfannschmidt.de" },
     { name = "Holger Krekel", email = "holger.kre...@gmail.com" },
 ]
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 dynamic = [
   "version",
 ]
@@ -27,11 +27,12 @@
     "Operating System :: POSIX",
     "Programming Language :: Python :: 3",
     "Programming Language :: Python :: 3 :: Only",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
     "Topic :: Software Development :: Libraries",
     "Topic :: Utilities",
 ]
@@ -55,10 +56,10 @@
   "pytest"
 ]
 [tool.hatch.envs.test.scripts]
-default = "pytest"
+default = "pytest {args}"
 
 [[tool.hatch.envs.test.matrix]]
-python = ["3.7", "3.8", "3.9", "3.10", "3.11"]
+python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
 
 [tool.setuptools_scm]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/src/iniconfig/__init__.py 
new/iniconfig-2.1.0/src/iniconfig/__init__.py
--- old/iniconfig-2.0.0/src/iniconfig/__init__.py       2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/src/iniconfig/__init__.py       2020-02-02 
01:00:00.000000000 +0100
@@ -20,7 +20,7 @@
 import os
 
 if TYPE_CHECKING:
-    from typing_extensions import Final
+    from typing import Final
 
 __all__ = ["IniConfig", "ParseError", "COMMENTCHARS", "iscommentline"]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/src/iniconfig/_version.py 
new/iniconfig-2.1.0/src/iniconfig/_version.py
--- old/iniconfig-2.0.0/src/iniconfig/_version.py       1970-01-01 
01:00:00.000000000 +0100
+++ new/iniconfig-2.1.0/src/iniconfig/_version.py       2020-02-02 
01:00:00.000000000 +0100
@@ -0,0 +1,21 @@
+# file generated by setuptools-scm
+# don't change, don't track in version control
+
+__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
+
+TYPE_CHECKING = False
+if TYPE_CHECKING:
+    from typing import Tuple
+    from typing import Union
+
+    VERSION_TUPLE = Tuple[Union[int, str], ...]
+else:
+    VERSION_TUPLE = object
+
+version: str
+__version__: str
+__version_tuple__: VERSION_TUPLE
+version_tuple: VERSION_TUPLE
+
+__version__ = version = '2.1.0'
+__version_tuple__ = version_tuple = (2, 1, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/src/iniconfig/exceptions.py 
new/iniconfig-2.1.0/src/iniconfig/exceptions.py
--- old/iniconfig-2.0.0/src/iniconfig/exceptions.py     2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/src/iniconfig/exceptions.py     2020-02-02 
01:00:00.000000000 +0100
@@ -2,7 +2,7 @@
 from typing import TYPE_CHECKING
 
 if TYPE_CHECKING:
-    from typing_extensions import Final
+    from typing import Final
 
 
 class ParseError(Exception):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/testing/conftest.py 
new/iniconfig-2.1.0/testing/conftest.py
--- old/iniconfig-2.0.0/testing/conftest.py     2023-01-07 12:04:39.000000000 
+0100
+++ new/iniconfig-2.1.0/testing/conftest.py     1970-01-01 01:00:00.000000000 
+0100
@@ -1 +0,0 @@
-option_doctestglob = "README.txt"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iniconfig-2.0.0/testing/test_iniconfig.py 
new/iniconfig-2.1.0/testing/test_iniconfig.py
--- old/iniconfig-2.0.0/testing/test_iniconfig.py       2023-01-07 
12:04:39.000000000 +0100
+++ new/iniconfig-2.1.0/testing/test_iniconfig.py       1970-01-01 
01:00:00.000000000 +0100
@@ -1,305 +0,0 @@
-from __future__ import annotations
-import pytest
-from iniconfig import IniConfig, ParseError, __all__ as ALL
-from iniconfig._parse import _ParsedLine as PL
-from iniconfig import iscommentline
-from textwrap import dedent
-from pathlib import Path
-
-
-check_tokens: dict[str, tuple[str, list[PL]]] = {
-    "section": ("[section]", [PL(0, "section", None, None)]),
-    "value": ("value = 1", [PL(0, None, "value", "1")]),
-    "value in section": (
-        "[section]\nvalue=1",
-        [PL(0, "section", None, None), PL(1, "section", "value", "1")],
-    ),
-    "value with continuation": (
-        "names =\n Alice\n Bob",
-        [PL(0, None, "names", "Alice\nBob")],
-    ),
-    "value with aligned continuation": (
-        "names = Alice\n        Bob",
-        [PL(0, None, "names", "Alice\nBob")],
-    ),
-    "blank line": (
-        "[section]\n\nvalue=1",
-        [PL(0, "section", None, None), PL(2, "section", "value", "1")],
-    ),
-    "comment": ("# comment", []),
-    "comment on value": ("value = 1", [PL(0, None, "value", "1")]),
-    "comment on section": ("[section] #comment", [PL(0, "section", None, 
None)]),
-    "comment2": ("; comment", []),
-    "comment2 on section": ("[section] ;comment", [PL(0, "section", None, 
None)]),
-    "pseudo section syntax in value": (
-        "name = value []",
-        [PL(0, None, "name", "value []")],
-    ),
-    "assignment in value": ("value = x = 3", [PL(0, None, "value", "x = 3")]),
-    "use of colon for name-values": ("name: y", [PL(0, None, "name", "y")]),
-    "use of colon without space": ("value:y=5", [PL(0, None, "value", "y=5")]),
-    "equality gets precedence": ("value=xyz:5", [PL(0, None, "value", 
"xyz:5")]),
-}
-
-
-@pytest.fixture(params=sorted(check_tokens))
-def input_expected(request: pytest.FixtureRequest) -> tuple[str, list[PL]]:
-
-    return check_tokens[request.param]
-
-
-@pytest.fixture
-def input(input_expected: tuple[str, list[PL]]) -> str:
-    return input_expected[0]
-
-
-@pytest.fixture
-def expected(input_expected: tuple[str, list[PL]]) -> list[PL]:
-    return input_expected[1]
-
-
-def parse(input: str) -> list[PL]:
-    from iniconfig._parse import parse_lines
-
-    return parse_lines("sample", input.splitlines(True))
-
-
-def parse_a_error(input: str) -> ParseError:
-    try:
-        parse(input)
-    except ParseError as e:
-        return e
-    else:
-        raise ValueError(input)
-
-
-def test_tokenize(input: str, expected: list[PL]) -> None:
-    parsed = parse(input)
-    assert parsed == expected
-
-
-def test_parse_empty() -> None:
-    parsed = parse("")
-    assert not parsed
-    ini = IniConfig("sample", "")
-    assert not ini.sections
-
-
-def test_ParseError() -> None:
-    e = ParseError("filename", 0, "hello")
-    assert str(e) == "filename:1: hello"
-
-
-def test_continuation_needs_perceeding_token() -> None:
-    err = parse_a_error(" Foo")
-    assert err.lineno == 0
-
-
-def test_continuation_cant_be_after_section() -> None:
-    err = parse_a_error("[section]\n Foo")
-    assert err.lineno == 1
-
-
-def test_section_cant_be_empty() -> None:
-    err = parse_a_error("[]")
-    assert err.lineno == 0
-
-
-@pytest.mark.parametrize(
-    "line",
-    [
-        "!!",
-    ],
-)
-def test_error_on_weird_lines(line: str) -> None:
-    parse_a_error(line)
-
-
-def test_iniconfig_from_file(tmp_path: Path) -> None:
-    path = tmp_path / "test.txt"
-    path.write_text("[metadata]\nname=1")
-
-    config = IniConfig(path=str(path))
-    assert list(config.sections) == ["metadata"]
-    config = IniConfig(str(path), "[diff]")
-    assert list(config.sections) == ["diff"]
-    with pytest.raises(TypeError):
-        IniConfig(data=path.read_text())  # type: ignore
-
-
-def test_iniconfig_section_first() -> None:
-    with pytest.raises(ParseError) as excinfo:
-        IniConfig("x", data="name=1")
-    assert excinfo.value.msg == "no section header defined"
-
-
-def test_iniconig_section_duplicate_fails() -> None:
-    with pytest.raises(ParseError) as excinfo:
-        IniConfig("x", data="[section]\n[section]")
-    assert "duplicate section" in str(excinfo.value)
-
-
-def test_iniconfig_duplicate_key_fails() -> None:
-    with pytest.raises(ParseError) as excinfo:
-        IniConfig("x", data="[section]\nname = Alice\nname = bob")
-
-    assert "duplicate name" in str(excinfo.value)
-
-
-def test_iniconfig_lineof() -> None:
-    config = IniConfig(
-        "x.ini",
-        data=("[section]\nvalue = 1\n[section2]\n# comment\nvalue =2"),
-    )
-
-    assert config.lineof("missing") is None
-    assert config.lineof("section") == 1
-    assert config.lineof("section2") == 3
-    assert config.lineof("section", "value") == 2
-    assert config.lineof("section2", "value") == 5
-
-    assert config["section"].lineof("value") == 2
-    assert config["section2"].lineof("value") == 5
-
-
-def test_iniconfig_get_convert() -> None:
-    config = IniConfig("x", data="[section]\nint = 1\nfloat = 1.1")
-    assert config.get("section", "int") == "1"
-    assert config.get("section", "int", convert=int) == 1
-
-
-def test_iniconfig_get_missing() -> None:
-    config = IniConfig("x", data="[section]\nint = 1\nfloat = 1.1")
-    assert config.get("section", "missing", default=1) == 1
-    assert config.get("section", "missing") is None
-
-
-def test_section_get() -> None:
-    config = IniConfig("x", data="[section]\nvalue=1")
-    section = config["section"]
-    assert section.get("value", convert=int) == 1
-    assert section.get("value", 1) == "1"
-    assert section.get("missing", 2) == 2
-
-
-def test_missing_section() -> None:
-    config = IniConfig("x", data="[section]\nvalue=1")
-    with pytest.raises(KeyError):
-        config["other"]
-
-
-def test_section_getitem() -> None:
-    config = IniConfig("x", data="[section]\nvalue=1")
-    assert config["section"]["value"] == "1"
-    assert config["section"]["value"] == "1"
-
-
-def test_section_iter() -> None:
-    config = IniConfig("x", data="[section]\nvalue=1")
-    names = list(config["section"])
-    assert names == ["value"]
-    items = list(config["section"].items())
-    assert items == [("value", "1")]
-
-
-def test_config_iter() -> None:
-    config = IniConfig(
-        "x.ini",
-        data=dedent(
-            """
-          [section1]
-          value=1
-          [section2]
-          value=2
-    """
-        ),
-    )
-    l = list(config)
-    assert len(l) == 2
-    assert l[0].name == "section1"
-    assert l[0]["value"] == "1"
-    assert l[1].name == "section2"
-    assert l[1]["value"] == "2"
-
-
-def test_config_contains() -> None:
-    config = IniConfig(
-        "x.ini",
-        data=dedent(
-            """
-          [section1]
-          value=1
-          [section2]
-          value=2
-    """
-        ),
-    )
-    assert "xyz" not in config
-    assert "section1" in config
-    assert "section2" in config
-
-
-def test_iter_file_order() -> None:
-    config = IniConfig(
-        "x.ini",
-        data="""
-[section2] #cpython dict ordered before section
-value = 1
-value2 = 2 # dict ordered before value
-[section]
-a = 1
-b = 2
-""",
-    )
-    l = list(config)
-    secnames = [x.name for x in l]
-    assert secnames == ["section2", "section"]
-    assert list(config["section2"]) == ["value", "value2"]
-    assert list(config["section"]) == ["a", "b"]
-
-
-def test_example_pypirc() -> None:
-    config = IniConfig(
-        "pypirc",
-        data=dedent(
-            """
-        [distutils]
-        index-servers =
-            pypi
-            other
-
-        [pypi]
-        repository: <repository-url>
-        username: <username>
-        password: <password>
-
-        [other]
-        repository: http://example.com/pypi
-        username: <username>
-        password: <password>
-    """
-        ),
-    )
-    distutils, pypi, other = list(config)
-    assert distutils["index-servers"] == "pypi\nother"
-    assert pypi["repository"] == "<repository-url>"
-    assert pypi["username"] == "<username>"
-    assert pypi["password"] == "<password>"
-    assert ["repository", "username", "password"] == list(other)
-
-
-def test_api_import() -> None:
-    assert ALL == ["IniConfig", "ParseError", "COMMENTCHARS", "iscommentline"]
-
-
-@pytest.mark.parametrize(
-    "line",
-    [
-        "#qwe",
-        "  #qwe",
-        ";qwe",
-        " ;qwe",
-    ],
-)
-def test_iscommentline_true(line: str) -> None:
-    assert iscommentline(line)

Reply via email to