diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index b7bd019..9def83f 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - py: ["3.10", 3.9, 3.8] + py: ["3.11", "3.12", "3.13", "3.14"] fail-fast: false steps: @@ -59,8 +59,10 @@ jobs: PYTHONDEVMODE: 1 - name: Upload Python coverage to codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v5 with: flags: python fail_ci_if_error: true files: coverage.xml + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 89f1d4f..a3ddb1c 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -2,9 +2,9 @@ version: 2 # Set the version of Python and other tools you might need build: - os: ubuntu-22.04 + os: ubuntu-24.04 tools: - python: "3.10" + python: "3.14" # Build documentation in the docs/ directory with Sphinx sphinx: diff --git a/Makefile b/Makefile index a7c587f..548cc75 100644 --- a/Makefile +++ b/Makefile @@ -5,39 +5,39 @@ PYSOURCES=$(wildcard screed/*.py) TESTSOURCES=$(wildcard screed/tests/*.py) -SOURCES=$(PYSOURCES) setup.py +SOURCES=$(PYSOURCES) VERSION=$(shell git describe --tags --dirty | sed s/v//) all: - ./setup.py build + python -m build . install: FORCE - ./setup.py build install + pip install -e . install-dependencies: FORCE pip install -e .[all] develop: FORCE - ./setup.py develop + pip install -e . dist: dist/screed-$(VERSION).tar.gz dist/screed-$(VERSION).tar.gz: $(SOURCES) - ./setup.py sdist + python -m build --sdist . clean: FORCE - ./setup.py clean --all || true + pip uninstall screed || true rm -rf build/ rm -rf coverage-debug .coverage coverage.xml rm -rf doc/_build rm -rf .eggs/ *.egg-info/ .cache/ __pycache__/ *.pyc */*.pyc */*/*.pyc pep8: $(PYSOURCES) $(TESTSOURCES) - pycodestyle --exclude=_version.py setup.py screed/ + pycodestyle --exclude=_version.py screed/ pylint: FORCE pylint --msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" \ - setup.py screed || true + screed || true doc: FORCE cd doc && make html diff --git a/pyproject.toml b/pyproject.toml index bc3daad..19f6bd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] requires = [ "setuptools >= 48", - "setuptools_scm[toml] >= 4, <6", + "setuptools_scm[toml] >= 9, <10", "setuptools_scm_git_archive", "wheel >= 0.29.0", ] @@ -10,3 +10,58 @@ build-backend = 'setuptools.build_meta' [tool.setuptools_scm] write_to = "screed/version.py" git_describe_command = "git describe --dirty --tags --long --match v* --first-parent" + +[project] +name = "screed" +description = "a Python library for loading FASTA and FASTQ sequences" +readme = "README.md" +license = "BSD-3-Clause" +license-files = [ "doc/LICENSE.rst" ] +requires-python = ">=3.11" +dynamic = [ "version" ] + +authors = [ + { name = "Alex Nolley" }, + { name = "C. Titus Brown" }, +] + +maintainers = [ + { name = "C. Titus Brown", email = "titus@idyll.org" }, + { name = "Luiz Irber", email="luiz@sourmash.bio" }, +] + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Environment :: MacOS X", + "Intended Audience :: Science/Research", + "Natural Language :: English", + "Operating System :: POSIX :: Linux", + "Operating System :: MacOS :: MacOS X", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering :: Bio-Informatics", +] + +[project.urls] +"Homepage" = "https://github.com/dib-lab/screed" +"Documentation" = "https://screed.readthedocs.io/" +"Source" = "https://github.com/dib-lab/screed" +"Tracker" = "https://github.com/dib-lab/screed/issues" +"CI" = "https://github.com/dib-lab/screed/actions" + +[project.scripts] +"screed" = "screed.__main__:main" + +[project.optional-dependencies] +test = [ + "pytest >= 6.2.2", + "pycodestyle", + "pytest-cov", +] +all = ["screed[test]"] + +[tool.setuptools] +packages = ["screed"] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index f7cc503..0000000 --- a/setup.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[metadata] -name = screed -description = a Python library for loading FASTA and FASTQ sequences -long_description = file: README.md -long_description_content_type = text/markdown; charset=UTF-8 -url = https://github.com/dib-lab/screed -author = Alex Nolley, C. Titus Brown -author_email = ctbrown@ucdavis.edu, -license = BSD 3-clause -license_file = doc/LICENSE.rst -classifiers = - Development Status :: 5 - Production/Stable - Environment :: Console - Environment :: MacOS X - Intended Audience :: Science/Research - License :: OSI Approved :: BSD License - Natural Language :: English - Operating System :: POSIX :: Linux - Operating System :: MacOS :: MacOS X - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Topic :: Scientific/Engineering :: Bio-Informatics -project_urls = - Documentation = https://screed.readthedocs.io - Source = https://github.com/dib-lab/screed - Tracker = https://github.com/dib-lab/screed/issues - -[options] -zip_safe = False -packages = find: -platforms = any -include_package_data = True -python_requires = >=3.7 -setup_requires = - setuptools_scm - -[bdist_wheel] -universal = 1 - -[aliases] -test=pytest - -[options.entry_points] -console_scripts = - screed = screed.__main__:main - -[options.extras_require] -test = - pytest >= 6.2.2 - pycodestyle - pytest-cov - importlib_resources;python_version<'3.9' -all = - %(test)s diff --git a/setup.py b/setup.py deleted file mode 100755 index dbe9716..0000000 --- a/setup.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env python -import setuptools - -if __name__ == "__main__": - setuptools.setup() diff --git a/tox.ini b/tox.ini index ca8ae76..7e36add 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38, py39, py310 +envlist = py311, py312, py313, py314 minversion = 3.12 isolated_build = true skip_missing_interpreters = true @@ -26,6 +26,7 @@ deps = [gh-actions] python = - 3.8: py38 - 3.9: py39 - 3.10: py310 + 3.11: py311 + 3.12: py312 + 3.13: py313 + 3.14: py314