diff --git a/.devcontainer/on-create-command.sh b/.devcontainer/on-create-command.sh index deffa37b..fdf77952 100755 --- a/.devcontainer/on-create-command.sh +++ b/.devcontainer/on-create-command.sh @@ -3,7 +3,7 @@ set -e python3 -m venv .venv . .venv/bin/activate -pip install -U pip setuptools wheel +pip install -U pip pip install -r requirements/dev.txt pip install -e . pre-commit install --install-hooks diff --git a/CHANGES.rst b/CHANGES.rst index 5d3c7ff1..3264a25e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,6 +5,7 @@ Unreleased - Python 3.12 compatibility. - Require Werkzeug >= 2.3.6. +- Use ``flit_core`` instead of ``setuptools`` as build backend. - Refactor how an app's root and instance paths are determined. :issue:`5160` @@ -308,7 +309,7 @@ Released 2022-03-28 or ``AppContext.g`` instead. :issue:`3898` - ``copy_current_request_context`` can decorate async functions. :pr:`4303` -- The CLI uses ``importlib.metadata`` instead of ``setuptools`` to +- The CLI uses ``importlib.metadata`` instead of ``pkg_resources`` to load command entry points. :issue:`4419` - Overriding ``FlaskClient.open`` will not cause an error on redirect. :issue:`3396` diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 24daa729..fed44978 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -127,7 +127,7 @@ First time setup in your local environment .. code-block:: text - $ python -m pip install -U pip setuptools wheel + $ python -m pip install -U pip $ pip install -r requirements/dev.txt && pip install -e . - Install the pre-commit hooks. diff --git a/docs/patterns/packages.rst b/docs/patterns/packages.rst index 239a3fa2..90fa8a8f 100644 --- a/docs/patterns/packages.rst +++ b/docs/patterns/packages.rst @@ -54,8 +54,8 @@ a big problem, just add a new file called :file:`pyproject.toml` next to the inn ] [build-system] - requires = ["setuptools"] - build-backend = "setuptools.build_meta" + requires = ["flit_core<4"] + build-backend = "flit_core.buildapi" Install your application so it is importable: diff --git a/docs/tutorial/install.rst b/docs/tutorial/install.rst index 9bb1234e..519b0678 100644 --- a/docs/tutorial/install.rst +++ b/docs/tutorial/install.rst @@ -40,30 +40,13 @@ The ``pyproject.toml`` file describes your project and how to build it. ] [build-system] - requires = ["setuptools"] - build-backend = "setuptools.build_meta" + requires = ["flit_core<4"] + build-backend = "flit_core.buildapi" - -The setuptools build backend needs another file named ``MANIFEST.in`` to tell it about -non-Python files to include. - -.. code-block:: none - :caption: ``MANIFEST.in`` - - include flaskr/schema.sql - graft flaskr/static - graft flaskr/templates - global-exclude *.pyc - -This tells the build to copy everything in the ``static`` and ``templates`` directories, -and the ``schema.sql`` file, but to exclude all bytecode files. - -See the official `Packaging tutorial `_ and -`detailed guide `_ for more explanation of the files -and options used. +See the official `Packaging tutorial `_ for more +explanation of the files and options used. .. _packaging tutorial: https://packaging.python.org/tutorials/packaging-projects/ -.. _packaging guide: https://packaging.python.org/guides/distributing-packages-using-setuptools/ Install the Project @@ -95,9 +78,7 @@ You can observe that the project is now installed with ``pip list``. Jinja2 2.10 MarkupSafe 1.0 pip 9.0.3 - setuptools 39.0.1 Werkzeug 0.14.1 - wheel 0.30.0 Nothing changes from how you've been running your project so far. ``--app`` is still set to ``flaskr`` and ``flask run`` still runs diff --git a/examples/celery/pyproject.toml b/examples/celery/pyproject.toml index e480aebc..cd394678 100644 --- a/examples/celery/pyproject.toml +++ b/examples/celery/pyproject.toml @@ -7,5 +7,8 @@ requires-python = ">=3.8" dependencies = ["flask>=2.2.2", "celery[redis]>=5.2.7"] [build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" +requires = ["flit_core<4"] +build-backend = "flit_core.buildapi" + +[tool.flit.module] +name = "task_app" diff --git a/examples/javascript/MANIFEST.in b/examples/javascript/MANIFEST.in deleted file mode 100644 index c730a34e..00000000 --- a/examples/javascript/MANIFEST.in +++ /dev/null @@ -1,4 +0,0 @@ -include LICENSE.rst -graft js_example/templates -graft tests -global-exclude *.pyc diff --git a/examples/javascript/pyproject.toml b/examples/javascript/pyproject.toml index e74415b8..6c4d7def 100644 --- a/examples/javascript/pyproject.toml +++ b/examples/javascript/pyproject.toml @@ -3,7 +3,7 @@ name = "js_example" version = "1.1.0" description = "Demonstrates making AJAX requests to Flask." readme = "README.rst" -license = {text = "BSD-3-Clause"} +license = {file = "LICENSE.rst"} maintainers = [{name = "Pallets", email = "contact@palletsprojects.com"}] dependencies = ["flask"] @@ -14,8 +14,11 @@ Documentation = "https://flask.palletsprojects.com/patterns/jquery/" test = ["pytest"] [build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" +requires = ["flit_core<4"] +build-backend = "flit_core.buildapi" + +[tool.flit.module] +name = "js_example" [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/examples/tutorial/MANIFEST.in b/examples/tutorial/MANIFEST.in deleted file mode 100644 index 97d55d51..00000000 --- a/examples/tutorial/MANIFEST.in +++ /dev/null @@ -1,6 +0,0 @@ -include LICENSE.rst -include flaskr/schema.sql -graft flaskr/static -graft flaskr/templates -graft tests -global-exclude *.pyc diff --git a/examples/tutorial/pyproject.toml b/examples/tutorial/pyproject.toml index c86eb61f..2c806b15 100644 --- a/examples/tutorial/pyproject.toml +++ b/examples/tutorial/pyproject.toml @@ -16,8 +16,16 @@ Documentation = "https://flask.palletsprojects.com/tutorial/" test = ["pytest"] [build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" +requires = ["flit_core<4"] +build-backend = "flit_core.buildapi" + +[tool.flit.module] +name = "flaskr" + +[tool.flit.sdist] +include = [ + "tests/", +] [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/pyproject.toml b/pyproject.toml index 99dae36a..2c2832fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ name = "Flask" description = "A simple framework for building complex web applications." readme = "README.rst" -license = {text = "BSD-3-Clause"} +license = {file = "LICENSE.rst"} maintainers = [{name = "Pallets", email = "contact@palletsprojects.com"}] classifiers = [ "Development Status :: 5 - Production/Stable", @@ -44,11 +44,25 @@ dotenv = ["python-dotenv"] flask = "flask.cli:main" [build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" +requires = ["flit_core<4"] +build-backend = "flit_core.buildapi" -[tool.setuptools.dynamic] -version = {attr = "flask.__version__"} +[tool.flit.module] +name = "flask" + +[tool.flit.sdist] +include = [ + "docs/", + "examples/", + "requirements/", + "tests/", + "CHANGES.rst", + "CONTRIBUTING.rst", + "tox.ini", +] +exclude = [ + "docs/_build/", +] [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/requirements/typing.in b/requirements/typing.in index 2c589ea0..d2313079 100644 --- a/requirements/typing.in +++ b/requirements/typing.in @@ -1,5 +1,4 @@ mypy types-contextvars types-dataclasses -types-setuptools cryptography diff --git a/requirements/typing.txt b/requirements/typing.txt index ede79887..bad6fb22 100644 --- a/requirements/typing.txt +++ b/requirements/typing.txt @@ -1,4 +1,4 @@ -# SHA1:7cc3f64d4e78db89d81680ac81503d5ac35d31a9 +# SHA1:6a354b832686fd3ec017455769a0270953a1e225 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -19,7 +19,5 @@ types-contextvars==2.4.7.2 # via -r requirements/typing.in types-dataclasses==0.6.6 # via -r requirements/typing.in -types-setuptools==68.0.0.0 - # via -r requirements/typing.in typing-extensions==4.6.3 # via mypy