diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bff8813..801ccad 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 diff --git a/DEVELOP.md b/DEVELOP.md index 440838a..df23ae1 100644 --- a/DEVELOP.md +++ b/DEVELOP.md @@ -1,16 +1,11 @@ -# How to create a dev venv +# Local development -If you have tox, you can run: `tox -re venv`, that will get you a `.venv/` -ready to go. - -If you don't have tox, you can run this (any python 3.6+ will do): +Create a dev venv: ```shell -rm -rf .venv -/usr/bin/python3 -mvenv .venv -.venv/bin/pip install -U pip -.venv/bin/pip install -r requirements.txt -r tests/requirements.txt -.venv/bin/pip install -e . +uv venv +uv pip install -r requirements.txt -r tests/requirements.txt +uv pip install -e . ``` You can then run `portable-python` from that venv: @@ -24,10 +19,8 @@ You can then run `portable-python` from that venv: # Run the tests If you have tox, just run: `tox` to run all the tests. You can also run: -- `tox -e py39` to run with just one python version +- `tox -e py313` to run with just one python version - `tox -e style` to check PEP8 formatting -- `tox -r` if you changed any `requirements.txt` (`-r` is short for `--recreate`) -- `tox -re py39` to recreate and run `py39` only - etc If you don't have tox, you can run the tests with: `.venv/bin/pytest tests/` @@ -49,7 +42,7 @@ You can easily run `portable-python` in a debugger. In PyCharm for example, you would simply browse to `.venv/bin/portable-python` then right-click and select "Debug portable-python". You can then edit the build/run configuration in PyCharm, add some "Parameters" to it, -like for example `build-report 3.10.5`, and then set breakpoints wherever you like. +like for example `build-report 3.13.2`, and then set breakpoints wherever you like. There is a `--dryrun` mode that can come in very handy for rapid iterations. @@ -71,5 +64,5 @@ docker run -it -v./:/src/ portable-python-jammy /bin/bash Now inside docker, you run a build: ```shell -portable-python build 3.11.4 +portable-python build 3.13.2 ``` diff --git a/setup.py b/setup.py index e20724c..0aa1dd1 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ author="Zoran Simic zoran@simicweb.com", keywords="python, portable, binary", url="https://github.com/codrsquad/portable-python", - python_requires=">=3.8", + python_requires=">=3.9", entry_points={ "console_scripts": [ "portable-python = portable_python.__main__:main", @@ -22,7 +22,6 @@ "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/src/portable_python/versions.py b/src/portable_python/versions.py index 26369d6..294426a 100644 --- a/src/portable_python/versions.py +++ b/src/portable_python/versions.py @@ -74,7 +74,7 @@ def get_builder(self): class CPythonFamily(VersionFamily): """Implementation for cpython""" - min_version = "3.7" # Earliest non-EOL known to compile well + min_version = "3.9" # Earliest non-EOL known to compile well @runez.cached_property def client(self): diff --git a/tests/test_list.py b/tests/test_list.py index d3ebf51..cd7cb6a 100644 --- a/tests/test_list.py +++ b/tests/test_list.py @@ -7,7 +7,7 @@ GH_CPYTHON_SAMPLE = """ [ {"ref": "refs/tags/v3.9.7"}, -{"ref": "refs/tags/v3.8.12"}, +{"ref": "refs/tags/v3.13.3"}, {"ref": "refs/tags/v3.5.10"} ] """ @@ -15,7 +15,7 @@ PYTHON_ORG_SAMPLE = """ 3.9.5/ 3.9.6/ -3.9.11/ +3.13.2/ 3.5.10/ """ @@ -34,12 +34,12 @@ def test_list(cli, monkeypatch): assert setup.python_spec.version == PPG.cpython.latest cp = CPythonFamily() - assert str(cp.latest) == "3.9.6" + assert str(cp.latest) == "3.13.2" monkeypatch.setattr(PPG.cpython, "_versions", None) cli.run("list") assert cli.succeeded - assert cli.logged.stdout.contents().strip() == "cpython:\n 3.9: 3.9.6\n 3.8: 3.8.11" + assert cli.logged.stdout.contents().strip() == "cpython:\n 3.13: 3.13.2\n 3.9: 3.9.6" cli.run("list", "--json") assert cli.succeeded @@ -52,4 +52,4 @@ def test_list(cli, monkeypatch): monkeypatch.setattr(PPG.cpython, "_versions", None) cli.run("-c", cli.tests_path("sample-config1.yml"), "list") assert cli.succeeded - assert cli.logged.stdout.contents().strip() == "cpython:\n 3.9: 3.9.7\n 3.8: 3.8.12" + assert cli.logged.stdout.contents().strip() == "cpython:\n 3.13: 3.13.3\n 3.9: 3.9.7"