Skip to content

Commit 2cb0d53

Browse files
committed
Add support for 3.14; drop support for 3.9
1 parent 2069221 commit 2cb0d53

File tree

7 files changed

+45
-39
lines changed

7 files changed

+45
-39
lines changed

.github/workflows/run-tests.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
strategy:
1717
matrix:
1818
os: [ubuntu-latest]
19-
version: ['3.9', '3.10', '3.11', '3.12', '3.13.0']
19+
version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
2020
include:
2121
- version: '3.9'
2222
tox-env: py39,py39-mypy,py39-lint,bandit
@@ -25,14 +25,16 @@ jobs:
2525
- version: '3.11'
2626
tox-env: py311,py311-mypy,py311-lint,bandit
2727
- version: '3.12'
28-
tox-env: py312,py312-mypy,py312-lint,format,bandit
29-
- version: '3.13.0'
28+
tox-env: py312,py312-mypy,py312-lint,bandit
29+
- version: '3.13'
3030
tox-env: py313,py313-mypy,py313-lint,bandit
31+
- version: '3.14'
32+
tox-env: py314,py314-mypy,py314-lint,bandit,format
3133
- os: windows-latest
32-
version: '3.13'
33-
tox-env: py313,bandit
34+
version: '3.14'
35+
tox-env: py314,bandit
3436
- os: macos-latest
35-
version: '3.13'
37+
version: '3.14'
3638
tox-env: py313,bandit
3739
steps:
3840
- uses: actions/checkout@v4

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Added
9+
* Added support for Python 3.14 (#1282)
10+
11+
### Removed
12+
* Removed support for Python 3.9 (#1283)
813

914
## [v0.4.0]
1015
### Added

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 🐍 basilisp 🐍
22

3-
A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+.
3+
A Clojure-compatible(-ish) Lisp dialect targeting Python 3.10+.
44

55
[![PyPI](https://img.shields.io/pypi/v/basilisp.svg?style=flat-square)](https://pypi.org/project/basilisp/) [![python](https://img.shields.io/pypi/pyversions/basilisp.svg?style=flat-square)](https://pypi.org/project/basilisp/) [![pyimpl](https://img.shields.io/pypi/implementation/basilisp.svg?style=flat-square)](https://pypi.org/project/basilisp/) [![readthedocs](https://img.shields.io/readthedocs/basilisp.svg?style=flat-square)](https://basilisp.readthedocs.io/) [![Run tests](https://github.com/basilisp-lang/basilisp/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/basilisp-lang/basilisp/actions/workflows/run-tests.yml) [![Coveralls github](https://img.shields.io/coveralls/github/basilisp-lang/basilisp.svg?style=flat-square)](https://coveralls.io/github/basilisp-lang/basilisp) [![license](https://img.shields.io/github/license/basilisp-lang/basilisp.svg?style=flat-square)](https://github.com/basilisp-lang/basilisp/blob/master/LICENSE)
66

pyproject.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,19 @@ classifiers = [
1818
"License :: OSI Approved :: Eclipse Public License 1.0 (EPL-1.0)",
1919
"Programming Language :: Python",
2020
"Programming Language :: Python :: 3",
21-
"Programming Language :: Python :: 3.9",
2221
"Programming Language :: Python :: 3.10",
2322
"Programming Language :: Python :: 3.11",
2423
"Programming Language :: Python :: 3.12",
2524
"Programming Language :: Python :: 3.13",
25+
"Programming Language :: Python :: 3.14",
2626
"Programming Language :: Python :: Implementation :: CPython",
2727
"Programming Language :: Python :: Implementation :: PyPy",
2828
"Topic :: Software Development :: Compilers",
2929
]
3030
include = ["README.md", "LICENSE"]
3131

3232
[tool.poetry.dependencies]
33-
python = "^3.9"
33+
python = "^3.10"
3434
attrs = ">=22.2.0"
3535
immutables = ">=0.20,<1.0.0"
3636
prompt-toolkit = ">=3.0.0,<4.0.0"
@@ -236,7 +236,6 @@ warn_unused_ignores = true
236236

237237
[[tool.mypy.overrides]]
238238
module = [
239-
"astor.*",
240239
"prompt_toolkit.*",
241240
"pygments.*",
242241
"pytest.*",

src/basilisp/lang/runtime.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
IMPORT_MODULE_VAR_SYM = sym.symbol(IMPORT_MODULE_VAR_NAME, ns=CORE_NS)
6969
NS_VAR_NS = CORE_NS
7070
REPL_DEFAULT_NS = "basilisp.user"
71-
SUPPORTED_PYTHON_VERSIONS = frozenset({(3, 9), (3, 10), (3, 11), (3, 12), (3, 13)})
71+
SUPPORTED_PYTHON_VERSIONS = frozenset({(3, 10), (3, 11), (3, 12), (3, 13), (3, 14)})
7272
BASILISP_VERSION_STRING = importlib.metadata.version("basilisp")
7373
BASILISP_VERSION = vec.vector(
7474
(int(s) if s.isdigit() else s) for s in BASILISP_VERSION_STRING.split(".")

tests/basilisp/runtime_test.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,6 @@ def test_is_supported_python_version():
3030
@pytest.mark.parametrize(
3131
"feature",
3232
{
33-
(3, 9): frozenset(
34-
map(
35-
kw.keyword,
36-
[
37-
"lpy39",
38-
"default",
39-
"lpy",
40-
"lpy39-",
41-
"lpy39+",
42-
"lpy310-",
43-
"lpy311-",
44-
"lpy312-",
45-
"lpy313-",
46-
platform.system().lower(),
47-
],
48-
)
49-
),
5033
(3, 10): frozenset(
5134
map(
5235
kw.keyword,
@@ -59,7 +42,7 @@ def test_is_supported_python_version():
5942
"lpy311-",
6043
"lpy310+",
6144
"lpy310-",
62-
"lpy39+",
45+
"lpy314-",
6346
platform.system().lower(),
6447
],
6548
)
@@ -76,7 +59,7 @@ def test_is_supported_python_version():
7659
"lpy312-",
7760
"lpy311-",
7861
"lpy310+",
79-
"lpy39+",
62+
"lpy314-",
8063
platform.system().lower(),
8164
],
8265
)
@@ -92,7 +75,7 @@ def test_is_supported_python_version():
9275
"lpy312+",
9376
"lpy313-",
9477
"lpy312-",
95-
"lpy39+",
78+
"lpy314-",
9679
platform.system().lower(),
9780
],
9881
)
@@ -109,7 +92,24 @@ def test_is_supported_python_version():
10992
"lpy313+",
11093
"lpy313-",
11194
"lpy310+",
112-
"lpy39+",
95+
"lpy314-",
96+
platform.system().lower(),
97+
],
98+
)
99+
),
100+
(3, 14): frozenset(
101+
map(
102+
kw.keyword,
103+
[
104+
"lpy314",
105+
"default",
106+
"lpy",
107+
"lpy310+",
108+
"lpy311+",
109+
"lpy312+",
110+
"lpy313+",
111+
"lpy314-",
112+
"lpy314+",
113113
platform.system().lower(),
114114
],
115115
)

tox.ini

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[tox]
2-
envlist = py39,py310,py311,py312,py313,pypy3,coverage,py{39,310,311,312,313}-mypy,py{39,310,311,312,313}-lint,format,bandit
2+
envlist = py310,py311,py312,py313,pypy3,coverage,py{310,311,312,313,314}-mypy,py{310,311,312,313,314}-lint,format,bandit
33
labels =
4-
test = py39,py310,py311,py312,py313
4+
test = py310,py311,py312,py313,py314
55

66
[testenv]
77
allowlist_externals = poetry
@@ -25,7 +25,7 @@ commands =
2525
{posargs}
2626

2727
[testenv:coverage]
28-
depends = py39, py310, py311, py312, py313
28+
depends = py310, py311, py312, py313, py314
2929
deps = coverage[toml]
3030
commands =
3131
coverage combine
@@ -40,7 +40,7 @@ commands =
4040
isort --check .
4141
black --check .
4242

43-
[testenv:py{39,310,311,312,313}-mypy]
43+
[testenv:py{310,311,312,313,314}-mypy]
4444
labels = mypy
4545
deps =
4646
mypy
@@ -49,11 +49,11 @@ deps =
4949
commands =
5050
mypy --config-file={toxinidir}/pyproject.toml -p basilisp
5151

52-
[testenv:py{39,310,311,312,313}-lint]
52+
[testenv:py{310,311,312,313,314}-lint]
5353
labels = lint
5454
deps =
55-
pylint >=3.0.0,<4.0.0
56-
pytest >=7.0.0,<8.0.0
55+
pylint >=4.0.0,<5.0.0
56+
pytest >=7.0.0,<9.0.0
5757
ruff >=0.1.0,<1.0.0
5858
sphinx
5959
commands =

0 commit comments

Comments
 (0)