diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 69a6313a..b17e21d7 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -23,10 +23,9 @@ jobs: - {name: Mac, python: '3.9', os: macos-latest, tox: py39} - {name: '3.8', python: '3.8', os: ubuntu-latest, tox: py38} - {name: '3.7', python: '3.7', os: ubuntu-latest, tox: py37} - - {name: '3.6', python: '3.6', os: ubuntu-latest, tox: py36} - {name: '2.7', python: '2.7', os: ubuntu-latest, tox: py27} - - {name: 'PyPy2', python: 'pypy2', os: ubuntu-latest, tox: pypy} - - {name: 'PyPy3', python: 'pypy3', os: ubuntu-latest, tox: pypy3} + - {name: 'PyPy2', python: 'pypy-2.7', os: ubuntu-latest, tox: pypy} + - {name: 'PyPy3', python: 'pypy-3.8', os: ubuntu-latest, tox: pypy3} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 @@ -44,6 +43,6 @@ jobs: uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} - key: pip|${{ runner.os }}|${{ matrix.python }}|${{ hashFiles('setup.py') }}|${{ hashFiles('requirements/*.txt') }} + key: pip|${{ runner.os }}|${{ matrix.python }}|${{ hashFiles('pyproject.toml') }}|${{ hashFiles('requirements/*.txt') }} - run: pip install tox - run: tox -e ${{ matrix.tox }} diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 4a1617e6..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,8 +0,0 @@ -include CHANGELOG.md -include LICENSE -include README.md -include TODO.rst -include pytest.ini -include tox.ini -recursive-include docs -recursive-include tests diff --git a/README.md b/README.md index 665e2251..a4b8c0dd 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ in the same spirit as — and yet conspicuously missing from — **[Full and extensive docs are available on Read The Docs.][rtd]** See what's new [by checking the CHANGELOG][changelog]. -Boltons is tested against Python 2.6, 2.7, 3.4, 3.5, 3.6, 3.7, 3.8 and 3.9, as well as CPython +Boltons is tested against Python 2.7, 3.7, 3.8 and 3.9, as well as CPython _nightly_ and PyPy/PyPy3. [stdlib]: https://docs.python.org/2.7/library/index.html diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 00000000..ab0beef1 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,24 @@ +# Release + +----- + +Requirements: + +- `pip install -U build tox twine` + +A brief checklist for release: + +- `tox` +- `git commit` (if applicable) +- bump `boltons/__init__.py` version off of -dev +- `git commit -a -m "bump version for x.y.z release"` +- `python -m build` +- `twine upload dist/*` +- bump `docs/conf.py` version +- `git commit` +- `git tag -a x.y.z -m "brief summary"` +- write `CHANGELOG.md` +- `git commit` +- bump `boltons/__init__.py` version onto n+1 dev +- `git commit` +- `git push` diff --git a/boltons/__init__.py b/boltons/__init__.py index e69de29b..72f65648 100644 --- a/boltons/__init__.py +++ b/boltons/__init__.py @@ -0,0 +1 @@ +__version__ = '22.0.0dev' diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..de4ac470 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,53 @@ +[build-system] +requires = [ + "hatchling>=0.17.0", +] +build-backend = "hatchling.build" + +[project] +name = "boltons" +description = "When they're not builtins, they're boltons." +readme = "README.md" +license = "BSD-3-Clause" +authors = [ + { name = "Mahmoud Hashemi", email = "mahmoud@hatnote.com" }, +] +# https://pypi.org/classifiers/ +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Topic :: Software Development :: Libraries", + "Topic :: Utilities", + # List of python versions and their support status: + # https://en.wikipedia.org/wiki/History_of_Python#Table_of_versions + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dynamic = [ + "version", +] + +[project.urls] +Homepage = "https://github.com/mahmoud/boltons" + +[tool.hatch.version] +path = "boltons/__init__.py" + +[tool.hatch.build.targets.sdist] +include = [ + "/boltons", + "/docs", + "/tests", + "/CHANGELOG.md", + "/TODO.rst", + "/pytest.ini", + "/tox.ini", +] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 44d9e374..00000000 --- a/setup.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[wheel] -universal = 1 - -[metadata] -license_file = LICENSE diff --git a/setup.py b/setup.py deleted file mode 100644 index b2f1cca7..00000000 --- a/setup.py +++ /dev/null @@ -1,75 +0,0 @@ -"""Functionality that should be in the standard library. Like -builtins, but Boltons. - -Otherwise known as, "everyone's util.py," but cleaned up and -tested. - -Contains over 250 BSD-licensed utility types and functions that can be -used as a package or independently. `Extensively documented on Read -the Docs `_. -""" - -from setuptools import setup - - -__author__ = 'Mahmoud Hashemi' -__version__ = '21.0.1dev' -__contact__ = 'mahmoud@hatnote.com' -__url__ = 'https://github.com/mahmoud/boltons' -__license__ = 'BSD' - - -setup(name='boltons', - version=__version__, - description="When they're not builtins, they're boltons.", - long_description=__doc__, - author=__author__, - author_email=__contact__, - url=__url__, - packages=['boltons'], - include_package_data=True, - zip_safe=False, - license=__license__, - platforms='any', - classifiers=[ - # See: https://pypi.python.org/pypi?:action=list_classifiers - 'Topic :: Utilities', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: BSD License', - 'Topic :: Software Development :: Libraries', - 'Development Status :: 5 - Production/Stable', - 'Operating System :: OS Independent', - # List of python versions and their support status: - # https://en.wikipedia.org/wiki/CPython#Version_history - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: Implementation :: CPython', - 'Programming Language :: Python :: Implementation :: PyPy', ] - ) - -""" -A brief checklist for release: - -* tox -* git commit (if applicable) -* Bump setup.py version off of -dev -* git commit -a -m "bump version for x.y.z release" -* python setup.py sdist bdist_wheel upload -* bump docs/conf.py version -* git commit -* git tag -a x.y.z -m "brief summary" -* write CHANGELOG -* git commit -* bump setup.py version onto n+1 dev -* git commit -* git push - -""" diff --git a/tox.ini b/tox.ini index 13929272..6c1f3ea9 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,6 @@ [tox] -envlist = py27,py34,py37,py39,pypy +isolated_build = true +envlist = py27,py37,py39,pypy [testenv] changedir = .tox deps = -rrequirements-test.txt