Skip to content

Commit f8680bf

Browse files
se-jaegerphilipp-jung
authored andcommitted
chore: Remove py39, add py313 and 314 (#26)
I addition to #24, this one adds full support for python 3.13 and python 3.14 and drops support for 3.9 (because it is EOL). Pandas is now supports up to python 3.14, which was the blocker for supporting these version in `tab-err`. See: - https://pyreadiness.org/3.9/ - https://pyreadiness.org/3.13 - https://pyreadiness.org/3.14 --------- Signed-off-by: Sebastian Jäger <git@sebastian-jaeger.me>
1 parent fe3a964 commit f8680bf

12 files changed

Lines changed: 968 additions & 1408 deletions

File tree

.github/workflows/mypy.yaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,27 @@ jobs:
1414
fail-fast: true
1515
matrix:
1616
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
17-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
17+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
1818
runs-on: ${{ matrix.os }}
1919
steps:
2020
#----------------------------------------------
2121
# check-out repo and set-up python
2222
#----------------------------------------------
2323
- name: Check out repository
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v6
2525
- name: Set up python ${{ matrix.python-version }}
2626
id: setup-python
27-
uses: actions/setup-python@v5
27+
uses: actions/setup-python@v6
2828
with:
2929
python-version: ${{ matrix.python-version }}
3030

3131
#----------------------------------------------
3232
# ----- install uv -----
3333
#----------------------------------------------
3434
- name: Install uv
35-
uses: astral-sh/setup-uv@v5
35+
uses: astral-sh/setup-uv@v7
3636
with:
3737
enable-cache: true
38-
version: "0.7.3"
3938

4039
#----------------------------------------------
4140
# ----- setup matchers & run mypy -----

.github/workflows/publish.yaml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,17 @@ jobs:
3030
# check-out repo and set-up python
3131
#----------------------------------------------
3232
- name: Checkout code
33-
uses: actions/checkout@v4
34-
- name: Set up Python 3.9
35-
uses: actions/setup-python@v5
33+
uses: actions/checkout@v6
34+
- name: Set up Python 3.10
35+
uses: actions/setup-python@v6
3636
with:
37-
python-version: "3.9"
37+
python-version: "3.10"
3838

3939
#----------------------------------------------
4040
# ----- install uv -----
4141
#----------------------------------------------
4242
- name: Install uv
43-
uses: astral-sh/setup-uv@v5
44-
with:
45-
version: "0.7.3"
43+
uses: astral-sh/setup-uv@v7
4644

4745
#----------------------------------------------
4846
# install dependencies and build packages

.github/workflows/ruff.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ jobs:
1414
fail-fast: true
1515
matrix:
1616
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
17-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
17+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
1818
runs-on: ${{ matrix.os }}
1919
steps:
2020
#----------------------------------------------
2121
# check-out repo and set-up python
2222
#----------------------------------------------
2323
- name: Check out repository
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v6
2525
- name: Set up python ${{ matrix.python-version }}
2626
id: setup-python
27-
uses: actions/setup-python@v5
27+
uses: actions/setup-python@v6
2828
with:
2929
python-version: ${{ matrix.python-version }}
3030

.github/workflows/tests.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,21 @@ jobs:
2222
# Check out repo and set up Python
2323
#----------------------------------------------
2424
- name: Check out repository
25-
uses: actions/checkout@v4
25+
uses: actions/checkout@v6
2626

2727
- name: Set up Python ${{ matrix.python-version }}
2828
id: setup-python
29-
uses: actions/setup-python@v5
29+
uses: actions/setup-python@v6
3030
with:
3131
python-version: ${{ matrix.python-version }}
3232

3333
#----------------------------------------------
3434
# Install uv
3535
#----------------------------------------------
3636
- name: Install uv
37-
uses: astral-sh/setup-uv@v5
37+
uses: astral-sh/setup-uv@v7
3838
with:
3939
enable-cache: true
40-
version: "0.7.3"
4140

4241
#----------------------------------------------
4342
# Run Pytest

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
default_language_version:
2-
python: python3.9
2+
python: python3.10
33

44
repos:
55
- repo: https://github.com/astral-sh/ruff-pre-commit
6-
rev: v0.8.0
6+
rev: v0.9.21
77
hooks:
88
# Run the linter and fix issues ...
99
- id: ruff

README.md

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# `tab_err`
2+
23
<h1 align="center">
34
Inject Realistic Errors Into Tables
45
</h1>
@@ -18,7 +19,6 @@
1819
[![pytest](https://github.com/calgo-lab/tab_err/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/calgo-lab/tab_err/actions/workflows/tests.yaml)
1920
[![Ruff](https://github.com/calgo-lab/tab_err/actions/workflows/ruff.yaml/badge.svg?branch=main)](https://github.com/calgo-lab/tab_err/actions/workflows/ruff.yaml)
2021

21-
2222
`tab_err` injects realistic errors into tabular data such as database tables and DataFrames.
2323
The library is developed and maintained by the [Cognitive Algorithms Lab](https://calgo-lab.de/) at BHT Berlin.
2424

@@ -28,13 +28,15 @@ Researchers and data practitioners can generate errors in a controlled way, eval
2828
## How it Works
2929

3030
The library's building blocks are `ErrorMechanism`s, `ErrorType`s, and `ErrorModel`s.
31-
- An `ErrorMechanism` describes the error's distribution - that's *where* incorrect cells appear in the table. We support *erroneous at random* (EAR), *erroneous not at random* (ENAR) and *erroneous completely at random* (ECAR).
32-
- An `ErrorType` describes *how* the value is wrong: a typo, an outlier, a category swap, and so on. Read the documentation for a [full list of supported error types](https://tab-err.readthedocs.io/latest/api/tab_err/error_type/index.html).
31+
32+
- An `ErrorMechanism` describes the error's distribution - that's _where_ incorrect cells appear in the table. We support _erroneous at random_ (EAR), _erroneous not at random_ (ENAR) and _erroneous completely at random_ (ECAR).
33+
- An `ErrorType` describes _how_ the value is wrong: a typo, an outlier, a category swap, and so on. Read the documentation for a [full list of supported error types](https://tab-err.readthedocs.io/latest/api/tab_err/error_type/index.html).
3334
- An `ErrorModel` is a set of mechanisms and types to perturb existing data with realistic errors. It is shareable as metadata.
3435

3536
`tab_err` is supported by a `pandas` backend.
3637

3738
## Examples
39+
3840
```python
3941
from sklearn.datasets import load_iris
4042

@@ -77,7 +79,7 @@ For a detailed guide and more examples, see our [Getting Started Notebook](https
7779

7880
## Where to get it
7981

80-
The source code is hosted on GitHub at <https://github.com/calgo-lab/tab_err>.
82+
The source code is hosted on GitHub at <https://github.com/calgo-lab/tab_err>.
8183
Binary installers for the latest releases are available at the Python Package Index (PyPI) <https://pypi.org/project/tab-err>.
8284

8385
```sh
@@ -96,25 +98,26 @@ Develop on feature branches and open pull requests when you're ready.
9698
Make sure that your changes are tested, documented, and clearly described in the pull request.
9799

98100
## Citation
101+
99102
If you use the error model that's underlying `tab_err` for a scientific publication, we would appreciate your citation.
100103

101-
```
104+
```bib
102105
@article{10.1145/3774914,
103-
author = {Jung, Philipp and J\"{a}ger, Sebastian and Chandler, Nicholas and Biessmann, Felix},
104-
title = {Towards Realistic Error Models for Tabular Data},
105-
year = {2025},
106-
issue_date = {December 2025},
107-
publisher = {Association for Computing Machinery},
108-
address = {New York, NY, USA},
109-
volume = {17},
110-
number = {4},
111-
issn = {1936-1955},
112-
url = {https://doi.org/10.1145/3774914},
113-
doi = {10.1145/3774914},
114-
journal = {J. Data and Information Quality},
115-
month = dec,
116-
articleno = {28},
117-
numpages = {27},
118-
keywords = {Tabular data, data quality, data errors, data error generation, error model, realistic error model, error type}
106+
author = {Jung, Philipp and J\"{a}ger, Sebastian and Chandler, Nicholas and Biessmann, Felix},
107+
title = {Towards Realistic Error Models for Tabular Data},
108+
year = {2025},
109+
issue_date = {December 2025},
110+
publisher = {Association for Computing Machinery},
111+
address = {New York, NY, USA},
112+
volume = {17},
113+
number = {4},
114+
issn = {1936-1955},
115+
url = {https://doi.org/10.1145/3774914},
116+
doi = {10.1145/3774914},
117+
journal = {J. Data and Information Quality},
118+
month = dec,
119+
articleno = {28},
120+
numpages = {27},
121+
keywords = {Tabular data, data quality, data errors, data error generation, error model, realistic error model, error type}
119122
}
120-
```
123+
```

examples/1-Getting-Started.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@
343343
"name": "python",
344344
"nbconvert_exporter": "python",
345345
"pygments_lexer": "ipython3",
346-
"version": "3.9.20"
346+
"version": "3.10.19"
347347
}
348348
},
349349
"nbformat": 4,

0 commit comments

Comments
 (0)