Skip to content

Commit ae7b024

Browse files
committed
Frame initial functionality
1 parent 4889ac3 commit ae7b024

File tree

3 files changed

+168
-3
lines changed

3 files changed

+168
-3
lines changed

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,16 @@ Add this to your `.pre-commit-config.yaml`
1414
rev: v0.1.0
1515
hooks:
1616
- id: check-eol
17+
args: [--fail-unreleased=False, --fail-security=False]
1718
```
1819
1920
## Hooks
20-
### `asdf`
21-
Lorem ipsum dolor sit amet
21+
### `check-eol`
22+
Check `requires-python` against the current Python lifecycle & fail if an EOL version is included.
23+
24+
* Use `--fail-unreleased` to fail if a Python version is specified that that has not yet been released. (Default: `False`)
25+
* **NOTE:** This includes packages that do not specify an upper constraint on `requires-python`, e.g. `">=3.11"`.
26+
* Use `--fail-security` to fail if a Python version is specified that is only receiving security updates. (Default: `False`)
2227

2328
## Python Version Support
2429
Starting with Python 3.11, a best attempt is made to support Python versions until they reach EOL, after which support will be formally dropped by the next minor or major release of this package, whichever arrives first. The status of Python versions can be found [here](https://devguide.python.org/versions/).

cached_release_cycle.json

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
{
2+
"3.14": {
3+
"branch": "main",
4+
"pep": 745,
5+
"status": "feature",
6+
"first_release": "2025-10-01",
7+
"end_of_life": "2030-10",
8+
"release_manager": "Hugo van Kemenade"
9+
},
10+
"3.13": {
11+
"branch": "3.13",
12+
"pep": 719,
13+
"status": "bugfix",
14+
"first_release": "2024-10-07",
15+
"end_of_life": "2029-10",
16+
"release_manager": "Thomas Wouters"
17+
},
18+
"3.12": {
19+
"branch": "3.12",
20+
"pep": 693,
21+
"status": "security",
22+
"first_release": "2023-10-02",
23+
"end_of_life": "2028-10",
24+
"release_manager": "Thomas Wouters"
25+
},
26+
"3.11": {
27+
"branch": "3.11",
28+
"pep": 664,
29+
"status": "security",
30+
"first_release": "2022-10-24",
31+
"end_of_life": "2027-10",
32+
"release_manager": "Pablo Galindo Salgado"
33+
},
34+
"3.10": {
35+
"branch": "3.10",
36+
"pep": 619,
37+
"status": "security",
38+
"first_release": "2021-10-04",
39+
"end_of_life": "2026-10",
40+
"release_manager": "Pablo Galindo Salgado"
41+
},
42+
"3.9": {
43+
"branch": "3.9",
44+
"pep": 596,
45+
"status": "security",
46+
"first_release": "2020-10-05",
47+
"end_of_life": "2025-10",
48+
"release_manager": "Łukasz Langa"
49+
},
50+
"3.8": {
51+
"branch": "3.8",
52+
"pep": 569,
53+
"status": "end-of-life",
54+
"first_release": "2019-10-14",
55+
"end_of_life": "2024-10-07",
56+
"release_manager": "Łukasz Langa"
57+
},
58+
"3.7": {
59+
"branch": "3.7",
60+
"pep": 537,
61+
"status": "end-of-life",
62+
"first_release": "2018-06-27",
63+
"end_of_life": "2023-06-27",
64+
"release_manager": "Ned Deily"
65+
},
66+
"3.6": {
67+
"branch": "3.6",
68+
"pep": 494,
69+
"status": "end-of-life",
70+
"first_release": "2016-12-23",
71+
"end_of_life": "2021-12-23",
72+
"release_manager": "Ned Deily"
73+
},
74+
"3.5": {
75+
"branch": "3.5",
76+
"pep": 478,
77+
"status": "end-of-life",
78+
"first_release": "2015-09-13",
79+
"end_of_life": "2020-09-30",
80+
"release_manager": "Larry Hastings"
81+
},
82+
"3.4": {
83+
"branch": "3.4",
84+
"pep": 429,
85+
"status": "end-of-life",
86+
"first_release": "2014-03-16",
87+
"end_of_life": "2019-03-18",
88+
"release_manager": "Larry Hastings"
89+
},
90+
"3.3": {
91+
"branch": "3.3",
92+
"pep": 398,
93+
"status": "end-of-life",
94+
"first_release": "2012-09-29",
95+
"end_of_life": "2017-09-29",
96+
"release_manager": "Georg Brandl, Ned Deily (3.3.7+)"
97+
},
98+
"3.2": {
99+
"branch": "3.2",
100+
"pep": 392,
101+
"status": "end-of-life",
102+
"first_release": "2011-02-20",
103+
"end_of_life": "2016-02-20",
104+
"release_manager": "Georg Brandl"
105+
},
106+
"2.7": {
107+
"branch": "2.7",
108+
"pep": 373,
109+
"status": "end-of-life",
110+
"first_release": "2010-07-03",
111+
"end_of_life": "2020-01-01",
112+
"release_manager": "Benjamin Peterson"
113+
},
114+
"3.1": {
115+
"branch": "3.1",
116+
"pep": 375,
117+
"status": "end-of-life",
118+
"first_release": "2009-06-27",
119+
"end_of_life": "2012-04-09",
120+
"release_manager": "Benjamin Peterson"
121+
},
122+
"3.0": {
123+
"branch": "3.0",
124+
"pep": 361,
125+
"status": "end-of-life",
126+
"first_release": "2008-12-03",
127+
"end_of_life": "2009-06-27",
128+
"release_manager": "Barry Warsaw"
129+
},
130+
"2.6": {
131+
"branch": "2.6",
132+
"pep": 361,
133+
"status": "end-of-life",
134+
"first_release": "2008-10-01",
135+
"end_of_life": "2013-10-29",
136+
"release_manager": "Barry Warsaw"
137+
}
138+
}

pre_commit_python_eol/check_eol.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,35 @@
44
from pathlib import Path
55

66

7+
def _get_supported_python(toml_file: Path) -> None:
8+
raise NotImplementedError
9+
10+
11+
def _get_cached_release_cycle() -> None:
12+
raise NotImplementedError
13+
14+
15+
def _get_release_cycle() -> None:
16+
raise NotImplementedError
17+
18+
19+
def check_python_support(toml_file: Path, fail_unreleased: bool, fail_security: bool) -> None:
20+
raise NotImplementedError
21+
22+
723
def main(argv: abc.Sequence[str] | None = None) -> int: # noqa: D103
824
parser = argparse.ArgumentParser()
925
parser.add_argument("filenames", nargs="*", type=Path)
26+
parser.add_argument("--fail-unreleased", type=bool, default=False)
27+
parser.add_argument("--fail-security", type=bool, default=False)
1028
args = parser.parse_args(argv)
1129

1230
ec = 0
13-
raise NotImplementedError
31+
for file in args.filenames:
32+
check_python_support(
33+
file, fail_unreleased=args.fail_unreleased, fail_security=args.fail_security
34+
)
35+
1436
return ec
1537

1638

0 commit comments

Comments
 (0)