From 51f6747ba7c752e098ea3707902cc8f128aace4f Mon Sep 17 00:00:00 2001 From: Russ Allbery Date: Fri, 30 Aug 2024 14:42:22 -0700 Subject: [PATCH] Move runtime dependencies to pyproject.toml uv pip compile supports building frozen dependencies from pyproject.toml, so move the runtime dependencies there to more closely match how typical Python packages work. Leave the development and tox dependencies in requirements for now. --- Makefile | 4 ++-- pyproject.toml | 20 +++++++++++++++----- requirements/main.in | 27 --------------------------- requirements/main.txt | 21 ++++++++++----------- 4 files changed, 27 insertions(+), 45 deletions(-) delete mode 100644 requirements/main.in diff --git a/Makefile b/Makefile index 229d07f..a804e9b 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ update-deps: uv pip install --upgrade pre-commit pre-commit autoupdate uv pip compile --upgrade --universal --generate-hashes \ - --output-file requirements/main.txt requirements/main.in + --output-file requirements/main.txt pyproject.toml uv pip compile --upgrade --universal --generate-hashes \ --output-file requirements/dev.txt requirements/dev.in uv pip compile --upgrade --universal --generate-hashes \ @@ -36,7 +36,7 @@ update-deps: update-deps-no-hashes: pip install --upgrade uv uv pip compile --upgrade --universal \ - --output-file requirements/main.txt requirements/main.in + --output-file requirements/main.txt pyproject.toml uv pip compile --upgrade --universal \ --output-file requirements/dev.txt requirements/dev.in uv pip compile --upgrade --universal \ diff --git a/pyproject.toml b/pyproject.toml index 7229dac..35fab44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,8 +20,19 @@ classifiers = [ # Python 3.11 currently (2024-06-05) due to the stack container and we need to # be able to install vo-cutouts there so that we can use supporting code. requires-python = ">=3.11" -# Use requirements/main.in for runtime dependencies instead. -dependencies = [] +dependencies = [ + # FastAPI including some optional features + "fastapi", + "python-multipart", + "uvicorn[standard]", + # Other dependencies. + "astropy", + "click", + "pydantic>2", + "pydantic-settings", + "safir[uws]>=6.2.0", + "structlog", +] dynamic = ["version"] [project.scripts] @@ -34,13 +45,10 @@ Source = "https://github.com/lsst-sqre/vo-cutouts" [build-system] requires = [ "setuptools>=42", - "wheel", "setuptools_scm[toml]>=3.4" ] build-backend = "setuptools.build_meta" -[tool.setuptools_scm] - [tool.coverage.run] parallel = true branch = true @@ -137,3 +145,5 @@ format = "md" md_header_level = "2" new_fragment_template = "file:changelog.d/_template.md.jinja" skip_fragments = "_template.md.jinja" + +[tool.setuptools_scm] diff --git a/requirements/main.in b/requirements/main.in deleted file mode 100644 index c8c1336..0000000 --- a/requirements/main.in +++ /dev/null @@ -1,27 +0,0 @@ -# -*- conf-mode -*- -# -# Editable runtime dependencies (equivalent to install_requires) -# Add direct runtime dependencies here, as well as implicit dependencies -# with constrained versions. -# -# After editing, update requirements/main.txt by running: -# make update-deps - -# These dependencies are for fastapi including some optional features. -fastapi -python-multipart -starlette -uvicorn[standard] - -# Other dependencies. -astropy -click -pydantic -pydantic-settings -safir[uws]>=6.2.0 -structlog - -# Uncomment this, change the branch, comment out safir above, and run make -# update-deps-no-hashes to test against an unreleased version of Safir. -#safir-arq @ git+https://github.com/lsst-sqre/safir@main#subdirectory=safir-arq -#safir[uws] @ git+https://github.com/lsst-sqre/safir@main#subdirectory=safir diff --git a/requirements/main.txt b/requirements/main.txt index 4afeddb..cb92a68 100644 --- a/requirements/main.txt +++ b/requirements/main.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --universal --generate-hashes --output-file requirements/main.txt requirements/main.in +# uv pip compile --universal --generate-hashes --output-file requirements/main.txt pyproject.toml annotated-types==0.7.0 \ --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 @@ -45,7 +45,7 @@ astropy==6.1.3 \ --hash=sha256:dde5b7e14d48e280643676a4821767a79e90bc3433ab81f40921eb36b49cf6da \ --hash=sha256:e6bfb987d512bbd70ec0c33ac023598594d35711bdb730cfaf3d8985d338155b \ --hash=sha256:e81c1fcb54b11190ce84c4106d49af762aff76ec18d50fbb205c556f423c4791 - # via -r requirements/main.in + # via vo-cutouts (pyproject.toml) astropy-iers-data==0.2024.8.27.10.28.29 \ --hash=sha256:13fd9e56103803d85467a0d20009268a7d0e812c6828ca5e04e11a5b779ecd65 \ --hash=sha256:8102e74d67d03b569f3da47aad3f410ce15d195110c479c38b61bf76e1aed516 @@ -269,7 +269,7 @@ click==8.1.7 \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de # via - # -r requirements/main.in + # vo-cutouts (pyproject.toml) # arq # safir # uvicorn @@ -314,7 +314,7 @@ fastapi==0.112.2 \ --hash=sha256:3d4729c038414d5193840706907a41839d839523da6ed0c2811f1168cac1798c \ --hash=sha256:db84b470bd0e2b1075942231e90e3577e12a903c4dc8696f0d206a7904a7af1c # via - # -r requirements/main.in + # vo-cutouts (pyproject.toml) # safir gidgethub==5.3.0 \ --hash=sha256:4dd92f2252d12756b13f9dd15cde322bfb0d625b6fb5d680da1567ec74b462c0 \ @@ -941,7 +941,7 @@ pydantic==2.8.2 \ --hash=sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a \ --hash=sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8 # via - # -r requirements/main.in + # vo-cutouts (pyproject.toml) # fastapi # pydantic-settings # pydantic-xml @@ -1046,7 +1046,7 @@ pydantic-settings==2.4.0 \ --hash=sha256:bb6849dc067f1687574c12a639e231f3a6feeed0a12d710c1382045c5db1c315 \ --hash=sha256:ed81c3a0f46392b4d7c0a565c05884e6e54b3456e6f0fe4d8814981172dc9a88 # via - # -r requirements/main.in + # vo-cutouts (pyproject.toml) # safir pydantic-xml==2.12.1 \ --hash=sha256:31623e9b287ef9eb1dda4caa92e893e3ac977f0327e1d76fd8a36879e455cea1 \ @@ -1079,7 +1079,7 @@ python-multipart==0.0.9 \ --hash=sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026 \ --hash=sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215 # via - # -r requirements/main.in + # vo-cutouts (pyproject.toml) # safir pyyaml==6.0.2 \ --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ @@ -1155,7 +1155,7 @@ rsa==4.9 \ safir==6.3.0 \ --hash=sha256:2fcd64bf37dd42eacedd6378341b2487cd06dbaf1f28403301b8d80f60a4fb56 \ --hash=sha256:6ad7dad520d87d853628849ef95a348c55dbd0180ad3f15c1cf2f7f8fe32f915 - # via -r requirements/main.in + # via vo-cutouts (pyproject.toml) safir-arq==6.3.0 \ --hash=sha256:c034e34fa79a7ebb4cfe3c1cb527e4c64c2195b63f919e2b623ae9dd72ac7e1b \ --hash=sha256:db110ce3fb0419d1d4a8d83b524ae9a09aa680d0e3f9323115cce836945b10e9 @@ -1225,14 +1225,13 @@ starlette==0.38.2 \ --hash=sha256:4ec6a59df6bbafdab5f567754481657f7ed90dc9d69b0c9ff017907dd54faeff \ --hash=sha256:c7c0441065252160993a1a37cf2a73bb64d271b17303e0b0c1eb7191cfb12d75 # via - # -r requirements/main.in # fastapi # safir structlog==24.4.0 \ --hash=sha256:597f61e80a91cc0749a9fd2a098ed76715a1c8a01f73e336b746504d1aad7610 \ --hash=sha256:b27bfecede327a6d2da5fbc96bd859f114ecc398a6389d664f62085ee7ae6fc4 # via - # -r requirements/main.in + # vo-cutouts (pyproject.toml) # safir # safir-arq # safir-logging @@ -1255,7 +1254,7 @@ urllib3==2.2.2 \ uvicorn==0.30.6 \ --hash=sha256:4b15decdda1e72be08209e860a1e10e92439ad5b97cf44cc945fcbee66fc5788 \ --hash=sha256:65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5 - # via -r requirements/main.in + # via vo-cutouts (pyproject.toml) uvloop==0.20.0 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32' \ --hash=sha256:265a99a2ff41a0fd56c19c3838b29bf54d1d177964c300dad388b27e84fd7847 \ --hash=sha256:2beee18efd33fa6fdb0976e18475a4042cd31c7433c866e8a09ab604c7c22ff2 \