File: changes.md

package info (click to toggle)
python-parse-stages 0.1.9-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 260 kB
  • sloc: python: 505; sh: 42; makefile: 4
file content (310 lines) | stat: -rw-r--r-- 12,149 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<!--
SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
SPDX-License-Identifier: BSD-2-Clause
-->

# Changelog

All notable changes to the parse-stages project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.9] - 2024-08-09

### Semi-incompatible changes

- Drop support for Python 3.8 and 3.9

### Fixes

- Fix the logic in a "this should never happen anyway" check for
  the `pyparsing` parser returning invalid results
- Nix expressions:
    - run `python3.X`, not `python3`, so as to not accidentally invoke
      a "more preferred" Python version that is also installed in
      the Nix environment

### Other changes

- Let Ruff insist on trailing commas when formatting the source code
- Use `list` instead of `typing.List` for the dataclass member fields
- Simplify the expression parser by using structural pattern matching
- Use `typeA | typeB | typeC` as a type parameter to `isinstance()`
- Documentation:
    - use mkdocstrings 0.25 with no changes
- Test suite:
    - Ruff:
        - fold the "all" configuration into the `pyproject.toml` file and
          move the "base" one to the `ruff-base.toml` file in the top-level directory
        - use Ruff 0.5.7
        - drop the override for the no longer emitted `ANN101`
        - add global overrides for the new docstring-related `DOC201` and `DOC501`
    - use Reuse 4.x with no changes
    - vendor-import vetox 0.2.0 and use it with no changes
- Nix expressions:
    - drop Python 3.8 from the `run-*.sh` helpers, it was dropped form nixpkgs/unstable
    - run pytest on Python 3.13, too
    - run tox on Python 3.12 and 3.13, too
    - update the vendored copy of vetox to version 0.1.3
    - run vetox with support for [uv](https://github.com/astral-sh/uv) and
      [tox-uv](https://github.com/tox-dev/tox-uv)
    - when running `uv`, use `/etc/ssl/certs/ca-certificates.crt` as the path to
      the system-wide certificates file; allow it to be overridden using
      the `VETOX_CERT_FILE` environment variable
    - only pass the minor version of Python, we only support Python 3.x
    - pass the Python minor version as a string for easier interpolation

## [0.1.8] - 2024-02-08

### Additions

- Support parentheses in stage specifications, e.g. `(@check or @docs) and not @manual`
- Tentatively declare Python 3.13 as a supported version
- Documentation:
    - add a "Download" page
- Test suite:
    - vendor-import [the vetox testing tool](https://devel.ringlet.net/devel/vetox/)
    - add a Nix expression to run `vetox`

### Other changes

- Completely switch to Ruff for source code formatting
- Test suite:
    - use Ruff 0.2.1:
        - derive an abstract class directly from `abc.ABC`, no need for the metaclass
        - sort the list of exported symbols (`__all__`)
        - add an empty line to the end of the "Examples" docstring section
        - push some Ruff configuration settings into the `ruff.lint.*` hierarchy
    - use Pytest 8.x and also install Pygments for syntax highlighting
    - push the unit tests' source from `unit_tests/` into `tests/unit/`
    - also build the documentation in the second Tox stage
    - put the Tox stage specifications in the `pyproject.toml` file on separate lines
    - let `reuse` ignore the `.mypy_cache/` directory, too

## [0.1.7] - 2023-11-08

### Fixes

- Documentation:
    - fix the ReadTheDocs build by adding the `build` section to its configuration

### Additions

- Test suite:
    - also run the Ruff formatter in the `format` Tox check environment
    - add a "reformat-ruff" Tox environment that uses the Ruff formatter
    - add the "reuse" environment to the list of Tox environments to run by
      default and install Git in the Nix derivation since the `reuse` tool
      uses it to figure out which files to check

### Other changes

- Documentation:
    - use mkdocstrings 0.23 with no changes
- Test suite:
    - use Ruff 0.1.4:
        - specify the copyright notice pattern for Ruff to look for
    - let Ruff also reformat the docstrings in addition to the import blocks
    - move the "reuse" Tox test environment to the first (quick) stage

## [0.1.6] - 2023-09-28

### Other changes

- Test suite:
    - use a pinned version of Ruff to avoid breakage with changes enabled in
      future versions
    - use Ruff 0.0.291, add a forgotten deferred annotations import
    - move the "format" check to the first Tox stage
    - use black 23.7 or later so it understands "py312" as a supported version
    - use reuse 2.x with no changes

## [0.1.5] - 2023-06-27

### Fixes

- Build infrastructure:
    - relax the `hatch-requirements-txt` to >= 0.3, which is the version in
      Debian testing/unstable
    - specify a lower requirement for `hatchling` as >= 1.8, which is
      the version in Ubuntu 22.10 (kinetic)
    - specify an upper requirement for `hatchling`
- Main source:
    - do not disable all Flake8 / Ruff checks for three files!
    - fix some formatting nits in the newly-checked source files
- Test suite:
    - drop the `pyupgrade` environment from Tox's default envlist;
      there is (by design) no way to run it in a no-op, report-only mode
    - do not pass the `python_version` option to `mypy`, let it check
      the code with regard to the currently-running Python interpreter

### Additions

- Build infrastructure:
    - specify the project license
    - add some more PyPI trove classifiers
- Test suite:
    - introduce the `PY_MINVER_MIN` and `PY_MINVER_MAX` environment variables for
      the `nix/run-pytest.sh` helper tool so that e.g. the current flakiness of
      Python 3.12 in nixpkgs-unstable can be skipped
    - add a Nix expression and the `nix/run-tox.sh` helper tool to run
      all the Tox tests using a different Python version
    - also include the `reuse` Tox environment in the ones run at the `@check`
      stage using the `tox-stages` tool

### Other changes

- Main source:
    - replace assertions in the parsing code with `if` statements that
      raise our own exceptions
- Documentation:
    - refer to version 1.1.0 of the "Keep a Changelog" format specification
    - use `mkdocstrings` 0.22, no changes
- Test suite:
    - drop the `flake8` / `pep8`, `pylint`, and `pydocstyle`
      Tox test environments, Ruff handles most of these checks now
    - use Ruff 0.0.275, activate all the new check areas, just in case
    - use mypy 1.x, no changes

## [0.1.4] - 2023-05-13

### Additions

- Documentation:
    - add a [ReadTheDocs mirror](https://parse-stages.readthedocs.io/)
- Main source:
    - `parse_stage_ids()`: allow an empty set to be specified by the exact
      strings "", "0", or "none"

### Other changes

- Build system:
    - drop the obsolete `tool.setuptools.*` sections from the `pyproject.toml` file
- Documentation:
    - bump the version of `mkdocstrings-python` with no changes
- Test suite:
    - Ruff:
        - use Ruff 0.0.267, enable the `FLY` checks area

## [0.1.3] - 2023-05-07

### Fixes

- Add a blank line to a docstring section (ruff D214).
- Drop the text in a `NotImplementedError` raised in an abstract method;
  it should be obvious (ruff EM101)

### Additions

- Add a `.gitignore` file, mostly so that `reuse` can be run at any time
- Add a "Home, GitLab, PyPI" navigational line to the documentation
  index page and to the `README.md` file

### Other changes

- Main source:
    - reformat the import sections using Ruff's `isort` implementation
- Build system:
    - switch to `hatch` / `hatchling` for the PEP517 build
- Documentation:
    - use the `default_handler` configuration option of `mkdocstrings`
      instead of specifying `handler: python` for each class!
    - bump the versions of `mkdocstrings` and `mkdocstrings-python` with
      no changes
- Test suite:
    - specify 4.1 as the Tox minimum version and switch to the Tox 4.x
      format for the multiline list of files
    - rename the `black` Tox environment to `format` and
      the `black-reformat` one to `reformat`, since they also run
      Ruff's `isort` now
    - Ruff:
        - use Ruff 0.0.265, enable the `INT` checks area although
          we do not use gettext
        - enable all ruff check areas in `config/ruff-most/`, let
          the `config/ruff-base/` files take care of the ignored ones
        - no longer disable the "relative imports" check, it does not
          complain about our source code
    - Pylint:
        - reenable the "empty comment" plugin; we should have no
          trouble with it since switching to SPDX license tags
    - Bump the versions of `flake8-implicit-str-concat`, `flake8-simplify`,
      `pylint`, and `triceratops` with no code changes

## [0.1.2] - 2023-03-10

### Semi-incompatible changes

- Drop Python 3.7 support.

### Fixes

- Fix the 0.1.1 release URL in the changelog file.
- Do not run the `pyupgrade` Tox environment automatically.
- Add a docstring to the unit test suite's `__init__.py` file instead of
  overriding a linter check.

### Additions

- Start some MkDocs-based documentation.
- Add the `reuse` Tox test environment to run the REUSE tool manually.

### Other changes

- Rework the Ruff invocation Tox targets a bit:
    - drop the `ruff-all-unchained` test environment; at this point in
      Ruff's development we are bound to specific versions anyway
    - move the config files to a `config/` directory, not `.config/`
    - move the "normal" Ruff invocation configuration to `config/ruff-most/`
    - use Ruff 0.0.254 with no code changes
    - activate all of Ruff 0.0.254's liners in the "normal" invocation
- Switch to SPDX license tags.
- Specify the supported Python version in the configuration of the pylint and
  black tools.
- Move the changelog file into the documentation directory.
- In the packaging metadata, point to the Ringlet homepage generated from
  the newly-added documentation.

## [0.1.1] - 2023-02-05

### Fixes

- Use "precedence" instead of "priority" when discussing operators in
  the README file.
- Do not use the `list` generic type in the definition of the `TaggedFrozen` and
  `Tagged` classes; library consumers may try to use `typing.get_type_hints()` on
  them or on derived classes, and Python < 3.9 would have a problem with that.
- Fill in the module docstring using the text of the README file.
- Fix some problems reported by `ruff`:
    - fix the order of some `import` statements
    - fix the formatting of some docstrings

### Other changes

- Add the `ruff-all` test environment that enables all the checks of the `ruff`
  tool for a certain locked version of `ruff`.
- Add the `tool.test-stages` section in the `pyproject.toml` file to specify
  the order that Tox environments should be run during development using
  the `tox-stages` tool from the `test-stages` Python library.
- Add a lot of `flake8` plugins to the Tox `pep8` test environment
- Use ruff 0.0.241, pylint 2.16.x, and black 23.x.

## [0.1.0] - 2023-01-25

### Started

- First public release.

[Unreleased]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.9...main
[0.1.9]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.8...release%2F0.1.9
[0.1.8]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.7...release%2F0.1.8
[0.1.7]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.6...release%2F0.1.7
[0.1.6]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.5...release%2F0.1.6
[0.1.5]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.4...release%2F0.1.5
[0.1.4]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.3...release%2F0.1.4
[0.1.3]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.2...release%2F0.1.3
[0.1.2]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.1...release%2F0.1.2
[0.1.1]: https://gitlab.com/ppentchev/parse-stages/-/compare/release%2F0.1.0...release%2F0.1.1
[0.1.0]: https://gitlab.com/ppentchev/parse-stages/-/tags/release%2F0.1.0