From fcc8a0c4e665734ff48a4e756c2d204f8076823c Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 27 Jan 2026 12:03:37 +0100 Subject: [PATCH 01/12] Add PyPI installation test to CI --- .github/workflows/test.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cfddc88..70716d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,3 +34,29 @@ jobs: run: uv sync --all-extras --dev - name: Run tests run: uv run pytest + + pypi-install-test: + needs: test + if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master') + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install from PyPI and test import + run: | + python -m pip install --upgrade pip + python -m pip install dataclass-csv + python -c " + try: + import dataclass_csv + print('✓ Successfully imported dataclass-csv from PyPI') + except ImportError as e: + print(f'✗ Failed to import: {e}') + exit(1) + " From 8d2b1113e7615be296785035db90aaa9010b34d4 Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 27 Jan 2026 13:50:26 +0100 Subject: [PATCH 02/12] Fix unit testing badge in README.md - workflow file name changed from unit-test.yml to test.yml --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca8b757..2e01cab 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Unit testing](https://github.com/dfurtado/dataclass-csv/actions/workflows/unit-test.yml/badge.svg)](https://github.com/dfurtado/dataclass-csv/actions/workflows/unit-test.yml) +[![Unit testing](https://github.com/dfurtado/dataclass-csv/actions/workflows/test.yml/badge.svg)](https://github.com/dfurtado/dataclass-csv/actions/workflows/test.yml) [![pypi](https://img.shields.io/pypi/v/dataclass-csv.svg)](https://pypi.python.org/pypi/dataclass-csv) [![Downloads](https://pepy.tech/badge/dataclass-csv)](https://pepy.tech/project/dataclass-csv) From 5ebe96e764792d12f332f4a3b093b55687a96eda Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 27 Jan 2026 14:09:23 +0100 Subject: [PATCH 03/12] Bump version to 1.5.0 in pyproject.toml - Should show up as a new version in PyPI when uploaded --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f59398b..a537d3e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dataclass-csv" -version = "1.4.1" +version = "1.5.0" description = "Map CSV data into dataclasses" readme = "README.md" license-expression = "BSD-3-Clause" @@ -12,7 +12,7 @@ authors = [ keywords = ["dataclass", "dataclasses", "csv", "dataclass-csv"] classifiers = [ "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", + "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 3 :: Only", @@ -24,7 +24,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Operating System :: Microsoft :: Windows", - "Operating System :: MacOS :: MacOS X", + "Operating System :: MacOS :: MacOS X", "Operating System :: Unix", "Operating System :: POSIX", "Environment :: Console", From 9548ca12590b11b14a6084c0c99dcd124640840f Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 08:12:32 +0100 Subject: [PATCH 04/12] Revert minor version update, to avoid merge conflicts (patch 1.4.1). --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a537d3e..0d6a3f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dataclass-csv" -version = "1.5.0" +version = "1.4.1" description = "Map CSV data into dataclasses" readme = "README.md" license-expression = "BSD-3-Clause" From 477310cfae9d15b74e110f37db13e6c72e02f66c Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 13:04:21 +0100 Subject: [PATCH 05/12] Add Python3.7 to test matrix --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 70716d5..3e42aad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: @@ -40,7 +40,7 @@ jobs: if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master') strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: From cebd1fa56cb07247165ec246a1fb1d7f3fd737ae Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 13:07:14 +0100 Subject: [PATCH 06/12] Rename pypi-install job - This job does not actually test the code, but that installing the pypi release works for the desired Python versions (see #72). - Run concurrently to test job (not only on success). --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3e42aad..cbf78e9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,8 +35,7 @@ jobs: - name: Run tests run: uv run pytest - pypi-install-test: - needs: test + pypi-install: if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master') strategy: matrix: From e8abc9bd8daf33ef1ee7d5c1a0f3e4449a33002d Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 13:19:00 +0100 Subject: [PATCH 07/12] Update pypi-install job to trigger on scheduled events for PyPI verification --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cbf78e9..a126722 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,6 +14,9 @@ on: - "**.py" - "uv.lock" - "pyproject.toml" + schedule: + # Run PyPI verification monthly on the 1st at 2 AM UTC + - cron: '0 2 1 * *' jobs: test: @@ -36,7 +39,7 @@ jobs: run: uv run pytest pypi-install: - if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master') + if: github.event_name == 'schedule' || (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')) strategy: matrix: python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] From c347d3feaf9aa41412db0b6cc1d2b96103a2fd4d Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 13:57:43 +0100 Subject: [PATCH 08/12] Export stubs (type checking) in release --- dataclass_csv/py.typed | 0 pyproject.toml | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 dataclass_csv/py.typed diff --git a/dataclass_csv/py.typed b/dataclass_csv/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index 0d6a3f3..7578b13 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,4 +53,7 @@ requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] -packages = ["dataclass_csv"] \ No newline at end of file +packages = ["dataclass_csv"] + +[tool.hatch.build.targets.wheel.force-include] +"dataclass_csv/py.typed" = "dataclass_csv/py.typed" \ No newline at end of file From a8e6661d8e9d2a761df843a6021150967ed81402 Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 16:31:17 +0100 Subject: [PATCH 09/12] Add Python3.14 to test matrix and classifiers for PyPI release --- .github/workflows/test.yml | 2 +- pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a126722..67563b3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: diff --git a/pyproject.toml b/pyproject.toml index 7578b13..8c9cf1e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS :: MacOS X", "Operating System :: Unix", From acc0322704184abe178d5a73fc8e3685d5f08fbf Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 16:31:51 +0100 Subject: [PATCH 10/12] Remove schedule and PyPI install jobs from CI --- .github/workflows/test.yml | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 67563b3..e9215b5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,9 +14,6 @@ on: - "**.py" - "uv.lock" - "pyproject.toml" - schedule: - # Run PyPI verification monthly on the 1st at 2 AM UTC - - cron: '0 2 1 * *' jobs: test: @@ -37,28 +34,3 @@ jobs: run: uv sync --all-extras --dev - name: Run tests run: uv run pytest - - pypi-install: - if: github.event_name == 'schedule' || (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master')) - strategy: - matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Install from PyPI and test import - run: | - python -m pip install --upgrade pip - python -m pip install dataclass-csv - python -c " - try: - import dataclass_csv - print('✓ Successfully imported dataclass-csv from PyPI') - except ImportError as e: - print(f'✗ Failed to import: {e}') - exit(1) - " From dad73c672f62401e2b665c8941662aad5b83b2e9 Mon Sep 17 00:00:00 2001 From: Flurin Arner Date: Tue, 3 Feb 2026 16:32:27 +0100 Subject: [PATCH 11/12] Remove forced wheel addition of py.typed for typing support --- pyproject.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8c9cf1e..07dbdc9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,4 @@ requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] -packages = ["dataclass_csv"] - -[tool.hatch.build.targets.wheel.force-include] -"dataclass_csv/py.typed" = "dataclass_csv/py.typed" \ No newline at end of file +packages = ["dataclass_csv"] \ No newline at end of file From 16a9002d4ae53621b5672deaef6a26e5d914dcae Mon Sep 17 00:00:00 2001 From: Daniel Furtado Date: Thu, 5 Feb 2026 09:01:29 +0100 Subject: [PATCH 12/12] Removed 3.7 from the test matri for now --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e9215b5..295eaba 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: