File: releases.rst

package info (click to toggle)
python-flake8 7.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,224 kB
  • sloc: python: 6,634; sh: 21; makefile: 19
file content (97 lines) | stat: -rw-r--r-- 2,742 bytes parent folder | download
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
==================
 Releasing Flake8
==================

There is not much that is hard to find about how |Flake8| is released.

- We use **major** releases (e.g., 2.0.0, 3.0.0, etc.) for big, potentially
  backwards incompatible, releases.

- We use **minor** releases (e.g., 2.1.0, 2.2.0, 3.1.0, 3.2.0, etc.) for
  releases that contain features and dependency version changes.

- We use **patch** releases (e.g., 2.1.1, 2.1.2, 3.0.1, 3.0.10, etc.) for
  releases that contain *only* bug fixes.

In this sense we follow semantic versioning. But we follow it as more of a set
of guidelines. We're also not perfect, so we may make mistakes, and that's
fine.


Major Releases
==============

Major releases are often associated with backwards incompatibility. |Flake8|
hopes to avoid those, but will occasionally need them.

Historically, |Flake8| has generated major releases for:

- Unvendoring dependencies (2.0)

- Large scale refactoring (2.0, 3.0, 5.0, 6.0)

- Subtly breaking CLI changes (3.0, 4.0, 5.0, 6.0, 7.0)

- Breaking changes to its plugin interface (3.0)

Major releases can also contain:

- Bug fixes (which may have backwards incompatible solutions)

- New features

- Dependency changes


Minor Releases
==============

Minor releases often have new features in them, which we define roughly as:

- New command-line flags

- New behaviour that does not break backwards compatibility

- New errors detected by dependencies, e.g., by raising the upper limit on
  PyFlakes we introduce F405

- Bug fixes


Patch Releases
==============

Patch releases should only ever have bug fixes in them.

We do not update dependency constraints in patch releases. If you do not
install |Flake8| from PyPI, there is a chance that your packager is using
different requirements. Some downstream redistributors have been known to
force a new version of PyFlakes, pep8/PyCodestyle, or McCabe into place.
Occasionally this will cause breakage when using |Flake8|. There is little
we can do to help you in those cases.


Process
=======

To prepare a release, we create a file in :file:`docs/source/release-notes/`
named: ``{{ release_number }}.rst`` (e.g., ``3.0.0.rst``). We note bug fixes,
improvements, and dependency version changes as well as other items of note
for users.

Before releasing, the following tox test environments must pass:

- Python 3.9 (a.k.a., ``tox -e py39``)

- Python 3.13 (a.k.a., ``tox -e py313``)

- PyPy 3 (a.k.a., ``tox -e pypy3``)

- Linters (a.k.a., ``tox -e linters``)

We tag the most recent commit that passes those items and contains our release
notes.

Finally, we run ``tox -e release`` to build source distributions (e.g.,
``flake8-3.0.0.tar.gz``), universal wheels, and upload them to PyPI with
Twine.