diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml deleted file mode 100644 index a884716..0000000 --- a/.github/workflows/tests.yaml +++ /dev/null @@ -1,53 +0,0 @@ -name: Tests - -on: - push: - branches: - - main - paths: - - hatch_pip_compile/** - - pyproject.toml - - .github/workflows/tests.yaml - pull_request: - branches: ["**"] - paths: - - hatch_pip_compile/** - - pyproject.toml - - .github/workflows/tests.yaml - schedule: - - cron: 0 12 1 * * -jobs: - test-suite: - runs-on: ubuntu-latest - strategy: - fail-fast: true - matrix: - include: - - { name: Python 3.12, python: "3.12" } - - { name: Python 3.11, python: "3.11" } - - { name: Python 3.10, python: "3.10" } - - { name: Python 3.9, python: "3.9" } - - { name: Python 3.8, python: "3.8" } - concurrency: - group: ${{ github.workflow }}-${{ matrix.python }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Set up Github Workspace - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Python Environment ${{ matrix.python }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - - name: Install Hatch - run: | - python -m pip install --upgrade pip - python -m pip install -q hatch pre-commit - python -m pip install -q -e . - hatch --version - - name: Test Suite - run: | - echo "::add-matcher::.github/workflows/matchers/python.json" - hatch run +py="${{ matrix.python }}" all:cov - echo "::remove-matcher owner=python::" diff --git a/.hatch/default.lock b/.hatch/default.lock deleted file mode 100644 index e5c715b..0000000 --- a/.hatch/default.lock +++ /dev/null @@ -1,257 +0,0 @@ -#################################################################################### -# 🔒 hatch-pip-compile 🔒 -# -# - coverage[toml]>=6.5 -# - pytest -# - hatch -# - pip-tools -# -#################################################################################### - -anyio==4.0.0 \ - --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ - --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a - # via httpx -build==1.0.3 \ - --hash=sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b \ - --hash=sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f - # via pip-tools -certifi==2023.7.22 \ - --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ - --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 - # via - # httpcore - # httpx -click==8.1.7 \ - --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ - --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de - # via - # hatch - # pip-tools - # userpath -coverage==7.3.2 \ - --hash=sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1 \ - --hash=sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63 \ - --hash=sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9 \ - --hash=sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312 \ - --hash=sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3 \ - --hash=sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb \ - --hash=sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25 \ - --hash=sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92 \ - --hash=sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda \ - --hash=sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148 \ - --hash=sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6 \ - --hash=sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216 \ - --hash=sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a \ - --hash=sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640 \ - --hash=sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836 \ - --hash=sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c \ - --hash=sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f \ - --hash=sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2 \ - --hash=sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901 \ - --hash=sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed \ - --hash=sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a \ - --hash=sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074 \ - --hash=sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc \ - --hash=sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84 \ - --hash=sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083 \ - --hash=sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f \ - --hash=sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c \ - --hash=sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c \ - --hash=sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637 \ - --hash=sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2 \ - --hash=sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82 \ - --hash=sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f \ - --hash=sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce \ - --hash=sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef \ - --hash=sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f \ - --hash=sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611 \ - --hash=sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c \ - --hash=sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76 \ - --hash=sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9 \ - --hash=sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce \ - --hash=sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9 \ - --hash=sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf \ - --hash=sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf \ - --hash=sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9 \ - --hash=sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6 \ - --hash=sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2 \ - --hash=sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a \ - --hash=sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a \ - --hash=sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf \ - --hash=sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738 \ - --hash=sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a \ - --hash=sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4 - # via - # hatch-pip-compile (pyproject.toml) - # coverage -distlib==0.3.7 \ - --hash=sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057 \ - --hash=sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8 - # via virtualenv -editables==0.5 \ - --hash=sha256:309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2 \ - --hash=sha256:61e5ffa82629e0d8bfe09bc44a07db3c1ab8ed1ce78a6980732870f19b5e7d4c - # via hatchling -filelock==3.13.1 \ - --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ - --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c - # via virtualenv -h11==0.14.0 \ - --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ - --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 - # via httpcore -hatch==1.7.0 \ - --hash=sha256:7afc701fd5b33684a6650e1ecab8957e19685f824240ba7458dcacd66f90fb46 \ - --hash=sha256:efc84112fd02ca85b7bab54f5e2ef71393a98dc849eac9aca390504031f8a1a8 - # via hatch-pip-compile (pyproject.toml) -hatchling==1.18.0 \ - --hash=sha256:50e99c3110ce0afc3f7bdbadff1c71c17758e476731c27607940cfa6686489ca \ - --hash=sha256:b66dc254931ec42aa68b5febd1d342c58142cc5267b7ff3b12ba3fa5b4900c93 - # via hatch -httpcore==1.0.1 \ - --hash=sha256:c5e97ef177dca2023d0b9aad98e49507ef5423e9f1d94ffe2cfe250aa28e63b0 \ - --hash=sha256:fce1ddf9b606cfb98132ab58865c3728c52c8e4c3c46e2aabb3674464a186e92 - # via httpx -httpx==0.25.1 \ - --hash=sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a \ - --hash=sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0 - # via hatch -hyperlink==21.0.0 \ - --hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \ - --hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4 - # via hatch -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # anyio - # httpx - # hyperlink -importlib-metadata==6.8.0 \ - --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ - --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 - # via keyring -iniconfig==2.0.0 \ - --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ - --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 - # via pytest -jaraco-classes==3.3.0 \ - --hash=sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb \ - --hash=sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621 - # via keyring -keyring==24.2.0 \ - --hash=sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6 \ - --hash=sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509 - # via hatch -markdown-it-py==3.0.0 \ - --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ - --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb - # via rich -mdurl==0.1.2 \ - --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ - --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba - # via markdown-it-py -more-itertools==10.1.0 \ - --hash=sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a \ - --hash=sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6 - # via jaraco-classes -packaging==23.2 \ - --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ - --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 - # via - # build - # hatch - # hatchling - # pytest -pathspec==0.11.2 \ - --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ - --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 - # via hatchling -pexpect==4.8.0 \ - --hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937 \ - --hash=sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c - # via hatch -pip-tools==7.3.0 \ - --hash=sha256:8717693288720a8c6ebd07149c93ab0be1fced0b5191df9e9decd3263e20d85e \ - --hash=sha256:8e9c99127fe024c025b46a0b2d15c7bd47f18f33226cf7330d35493663fc1d1d - # via hatch-pip-compile (pyproject.toml) -platformdirs==3.11.0 \ - --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ - --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e - # via - # hatch - # virtualenv -pluggy==1.3.0 \ - --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ - --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 - # via - # hatchling - # pytest -ptyprocess==0.7.0 \ - --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ - --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 - # via pexpect -pygments==2.16.1 \ - --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \ - --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29 - # via rich -pyperclip==1.8.2 \ - --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 - # via hatch -pyproject-hooks==1.0.0 \ - --hash=sha256:283c11acd6b928d2f6a7c73fa0d01cb2bdc5f07c57a2eeb6e83d5e56b97976f8 \ - --hash=sha256:f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5 - # via build -pytest==7.4.3 \ - --hash=sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac \ - --hash=sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5 - # via hatch-pip-compile (pyproject.toml) -rich==13.6.0 \ - --hash=sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245 \ - --hash=sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef - # via hatch -shellingham==1.5.4 \ - --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ - --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de - # via hatch -sniffio==1.3.0 \ - --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ - --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 - # via - # anyio - # httpx -tomli-w==1.0.0 \ - --hash=sha256:9f2a07e8be30a0729e533ec968016807069991ae2fd921a78d42f429ae5f4463 \ - --hash=sha256:f463434305e0336248cac9c2dc8076b707d8a12d019dd349f5c1e382dd1ae1b9 - # via hatch -tomlkit==0.12.2 \ - --hash=sha256:df32fab589a81f0d7dc525a4267b6d7a64ee99619cbd1eeb0fae32c1dd426977 \ - --hash=sha256:eeea7ac7563faeab0a1ed8fe12c2e5a51c61f933f2502f7e9db0241a65163ad0 - # via hatch -trove-classifiers==2023.11.9 \ - --hash=sha256:0542bc03d151f8af84f0eb0e74aa931b374b6f9c8ed8fbf7ee41989fb9d40f1d \ - --hash=sha256:f9784ab55054bb327d0c8d33931fb2555b81e5b4868832490ab7959ae3ea9186 - # via hatchling -userpath==1.9.1 \ - --hash=sha256:ce8176728d98c914b6401781bf3b23fccd968d1647539c8788c7010375e02796 \ - --hash=sha256:e085053e5161f82558793c41d60375289efceb4b77d96033ea9c84fc0893f772 - # via hatch -virtualenv==20.24.6 \ - --hash=sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af \ - --hash=sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381 - # via hatch -wheel==0.41.3 \ - --hash=sha256:488609bc63a29322326e05560731bf7bfea8e48ad646e1f5e40d366607de0942 \ - --hash=sha256:4d4987ce51a49370ea65c0bfd2234e8ce80a12780820d9dc462597a6e60d0841 - # via pip-tools -zipp==3.17.0 \ - --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ - --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 - # via importlib-metadata - -# WARNING: The following packages were not pinned, but pip requires them to be -# pinned when the requirements file includes hashes and the requirement is not -# satisfied by a package already installed. Consider using the --allow-unsafe flag. -# pip -# setuptools diff --git a/README.md b/README.md index 6e1e111..8e9bb45 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # hatch-pip-compile -hatch plugin to use pip-compile to manage project dependencies +[hatch] plugin to use [pip-compile] to manage project dependencies [![PyPI](https://img.shields.io/pypi/v/hatch-pip-compile?color=blue&label=🔨%20hatch-pip-compile)](https://github.com/juftin/hatch-pip-compile) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/hatch-pip-compile)](https://pypi.python.org/pypi/hatch-pip-compile/) @@ -18,8 +18,8 @@ pip install hatch-pip-compile ### pipx -Personally, I use [pipx](https://github.com/pypa/pipx) to install and use hatch. If you do too, -you will need to inject the `hatch-pip-compile` plugin into the hatch environment. +If you use [pipx] to install and use hatch you will need to inject +the `hatch-pip-compile` plugin into the hatch environment. ```shell pipx install hatch @@ -30,35 +30,51 @@ pipx inject hatch hatch-pip-compile The `hatch-pip-compile` plugin will automatically run `pip-compile` whenever your environment needs to be updated. Behind the scenes, this plugin creates a lockfile -at `.hatch/.lock`. Alongside `pip-compile`, this plugin also uses -`pip-sync` to install the dependencies from the lockfile into your environment. +at `requirements.txt` (non-default lockfiles are located at `.hatch/.lock`). +Alongside `pip-compile`, this plugin also uses [pip-sync] to install the dependencies +from the lockfile into your environment. ## Configuration -The [environment plugin](https://hatch.pypa.io/latest/plugins/environment/) name is `pip-compile`. +The [environment plugin] name is `pip-compile`. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.default] type = "pip-compile" ``` - **_hatch.toml_** ```toml - [envs.] + [envs.default] type = "pip-compile" ``` -### lock-directory +### Configuration Options -The directory where the lockfiles will be stored. Defaults to `.hatch`. +| name | type | description | +| ------------------------ | ----------- | ----------------------------------------------------------------------------------------------------------- | +| lock-directory | `str` | The directory where the lockfiles will be stored. `default` env is project root, non-default is `.hatch` | +| lock-filename | `str` | The filename of the ultimate lockfile. `default` env is `requirements.txt`, non-default is `.lock` | +| pip-compile-hashes | `bool` | Whether to generate hashes in the lockfile. Defaults to `true`. | +| pip-compile-header | `bool` | Whether to use the `pip-compile` header instead of the `hatch-pip-compile` header, defaults to `false` | +| pip-compile-strip-extras | `bool` | Whether to strip the extras from the lockfile ensuring it is constraints compatible, defaults to `true` | +| pip-compile-args | `list[str]` | Additional command-line arguments to pass to `pip-compile` | + +#### Examples + +##### lock-directory + +The directory where the lockfiles will be stored. Defaults to +the project root for the `default` environment, and `.hatch` for +non-default environments. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.] type = "pip-compile" lock-directory = "requirements" ``` @@ -66,19 +82,42 @@ The directory where the lockfiles will be stored. Defaults to `.hatch`. - **_hatch.toml_** ```toml - [envs.] + [envs.] type = "pip-compile" lock-directory = "requirements" ``` -### pip-compile-hashes +##### lock-filename -Whether or not to use hashes in the lockfile. Defaults to `true`. +The filename of the ultimate lockfile. Defaults to `requirements.txt` +for the `default` environment, and `.lock` for non-default environments. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.lint] + type = "pip-compile" + lock-directory = "." + lock-filename = "linting-lockfile.txt" + ``` + +- **_hatch.toml_** + + ```toml + [envs.lint] + type = "pip-compile" + lock-directory = "." + lock-filename = "linting-lockfile.txt" + ``` + +##### pip-compile-hashes + +Whether to generate hashes in the lockfile. Defaults to `true`. + +- **_pyproject.toml_** + + ```toml + [tool.hatch.envs.] type = "pip-compile" pip-compile-hashes = true ``` @@ -86,19 +125,20 @@ Whether or not to use hashes in the lockfile. Defaults to `true`. - **_hatch.toml_** ```toml - [envs.] + [envs.] type = "pip-compile" pip-compile-hashes = true ``` -### pip-compile-args +##### pip-compile-args -Extra arguments to pass to `pip-compile`. Defaults to None. +Extra arguments to pass to `pip-compile`. Custom PyPI indexes can be +specified here. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.] type = "pip-compile" pip-compile-args = [ "--index-url", @@ -109,7 +149,7 @@ Extra arguments to pass to `pip-compile`. Defaults to None. - **_hatch.toml_** ```toml - [envs.] + [envs.] type = "pip-compile" pip-compile-args = [ "--index-url", @@ -117,15 +157,25 @@ Extra arguments to pass to `pip-compile`. Defaults to None. ] ``` +## Notes + +### Dev Dependencies + +Using the default hatch configuration, dev dependencies listed in your +`default` environment (like `pytest`) will be included on the default lockfile +(`requirements.txt`). If you want to remove your dev dependencies +from the lockfile you must remove them from the `default` environment +on your `pyproject.toml` / `hatch.toml` file. + --- --- -#### Check Out the [Docs](https://juftin.github.io/hatch-pip-compile/) +#### Check Out the [Docs] -#### Looking to contribute? See the [Contributing Guide](https://juftin.github.io/hatch-pip-compile/contributing) +#### Looking to contribute? See the [Contributing Guide] -#### See the [Changelog](https://github.com/juftin/hatch-pip-compile/releases) +#### See the [Changelog] --- @@ -134,3 +184,12 @@ Extra arguments to pass to `pip-compile`. Defaults to None.

logo

+ +[pip-compile]: https://pip-tools.readthedocs.io/en/latest/ +[pip-sync]: https://pip-tools.readthedocs.io/en/latest/ +[hatch]: https://hatch.pypa.io/latest/ +[pipx]: https://pipxproject.github.io/pipx/ +[Docs]: https://juftin.github.io/hatch-pip-compile/ +[Contributing Guide]: https://juftin.github.io/hatch-pip-compile/contributing +[Changelog]: https://github.com/juftin/hatch-pip-compile/releases +[environment plugin]: https://hatch.pypa.io/latest/plugins/environment/ diff --git a/docs/contributing.md b/docs/contributing.md index 967bb7c..36daf53 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -43,7 +43,6 @@ | Command Description | Command | Notes | | ------------------------------ | --------------------------- | ---------------------------------------------------------- | -| Run Tests | `hatch run cov` | Runs tests with `pytest` and `coverage` | | Run Formatting | `hatch run lint:fmt` | Runs `ruff` code formatter | | Run Linting | `hatch run lint:all` | Runs `ruff` and `mypy` linters / type checkers | | Run Type Checking | `hatch run lint:typing` | Runs `mypy` type checker | diff --git a/docs/index.md b/docs/index.md index a5314a2..69a7a54 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # hatch-pip-compile -hatch plugin to use pip-compile to manage project dependencies +[hatch] plugin to use [pip-compile] to manage project dependencies [![PyPI](https://img.shields.io/pypi/v/hatch-pip-compile?color=blue&label=🔨%20hatch-pip-compile)](https://github.com/juftin/hatch-pip-compile) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/hatch-pip-compile)](https://pypi.python.org/pypi/hatch-pip-compile/) @@ -18,8 +18,8 @@ pip install hatch-pip-compile ### pipx -Personally, I use [pipx](https://github.com/pypa/pipx) to install and use hatch. If you do too, -you will need to inject the `hatch-pip-compile` plugin into the hatch environment. +If you use [pipx] to install and use hatch you will need to inject +the `hatch-pip-compile` plugin into the hatch environment. ```shell pipx install hatch @@ -30,35 +30,51 @@ pipx inject hatch hatch-pip-compile The `hatch-pip-compile` plugin will automatically run `pip-compile` whenever your environment needs to be updated. Behind the scenes, this plugin creates a lockfile -at `.hatch/.lock`. Alongside `pip-compile`, this plugin also uses -`pip-sync` to install the dependencies from the lockfile into your environment. +at `requirements.txt` (non-default lockfiles are located at `.hatch/.lock`). +Alongside `pip-compile`, this plugin also uses [pip-sync] to install the dependencies +from the lockfile into your environment. ## Configuration -The [environment plugin](https://hatch.pypa.io/latest/plugins/environment/) name is `pip-compile`. +The [environment plugin] name is `pip-compile`. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.default] type = "pip-compile" ``` - **_hatch.toml_** ```toml - [envs.] + [envs.default] type = "pip-compile" ``` -### lock-directory +### Configuration Options -The directory where the lockfiles will be stored. Defaults to `.hatch`. +| name | type | description | +| ------------------------ | ----------- | ----------------------------------------------------------------------------------------------------------- | +| lock-directory | `str` | The directory where the lockfiles will be stored. `default` env is project root, non-default is `.hatch` | +| lock-filename | `str` | The filename of the ultimate lockfile. `default` env is `requirements.txt`, non-default is `.lock` | +| pip-compile-hashes | `bool` | Whether to generate hashes in the lockfile. Defaults to `true`. | +| pip-compile-header | `bool` | Whether to use the `pip-compile` header instead of the `hatch-pip-compile` header, defaults to `false` | +| pip-compile-strip-extras | `bool` | Whether to strip the extras from the lockfile ensuring it is constraints compatible, defaults to `true` | +| pip-compile-args | `list[str]` | Additional command-line arguments to pass to `pip-compile` | + +#### Examples + +##### lock-directory + +The directory where the lockfiles will be stored. Defaults to +the project root for the `default` environment, and `.hatch` for +non-default environments. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.] type = "pip-compile" lock-directory = "requirements" ``` @@ -66,19 +82,42 @@ The directory where the lockfiles will be stored. Defaults to `.hatch`. - **_hatch.toml_** ```toml - [envs.] + [envs.] type = "pip-compile" lock-directory = "requirements" ``` -### pip-compile-hashes +##### lock-filename -Whether or not to use hashes in the lockfile. Defaults to `true`. +The filename of the ultimate lockfile. Defaults to `requirements.txt` +for the `default` environment, and `.lock` for non-default environments. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.lint] + type = "pip-compile" + lock-directory = "." + lock-filename = "linting-lockfile.txt" + ``` + +- **_hatch.toml_** + + ```toml + [envs.lint] + type = "pip-compile" + lock-directory = "." + lock-filename = "linting-lockfile.txt" + ``` + +##### pip-compile-hashes + +Whether to generate hashes in the lockfile. Defaults to `true`. + +- **_pyproject.toml_** + + ```toml + [tool.hatch.envs.] type = "pip-compile" pip-compile-hashes = true ``` @@ -86,19 +125,20 @@ Whether or not to use hashes in the lockfile. Defaults to `true`. - **_hatch.toml_** ```toml - [envs.] + [envs.] type = "pip-compile" pip-compile-hashes = true ``` -### pip-compile-args +##### pip-compile-args -Extra arguments to pass to `pip-compile`. Defaults to None. +Extra arguments to pass to `pip-compile`. Custom PyPI indexes can be +specified here. - **_pyproject.toml_** ```toml - [tool.hatch.envs.] + [tool.hatch.envs.] type = "pip-compile" pip-compile-args = [ "--index-url", @@ -109,7 +149,7 @@ Extra arguments to pass to `pip-compile`. Defaults to None. - **_hatch.toml_** ```toml - [envs.] + [envs.] type = "pip-compile" pip-compile-args = [ "--index-url", @@ -117,6 +157,16 @@ Extra arguments to pass to `pip-compile`. Defaults to None. ] ``` +## Notes + +### Dev Dependencies + +Using the default hatch configuration, dev dependencies listed in your +`default` environment (like `pytest`) will be included on the default lockfile +(`requirements.txt`). If you want to remove your dev dependencies +from the lockfile you must remove them from the `default` environment +on your `pyproject.toml` / `hatch.toml` file. + --- --- @@ -124,3 +174,12 @@ Extra arguments to pass to `pip-compile`. Defaults to None.

logo

+ +[pip-compile]: https://pip-tools.readthedocs.io/en/latest/ +[pip-sync]: https://pip-tools.readthedocs.io/en/latest/ +[hatch]: https://hatch.pypa.io/latest/ +[pipx]: https://pipxproject.github.io/pipx/ +[Docs]: https://juftin.github.io/hatch-pip-compile/ +[Contributing Guide]: https://juftin.github.io/hatch-pip-compile/contributing +[Changelog]: https://github.com/juftin/hatch-pip-compile/releases +[environment plugin]: https://hatch.pypa.io/latest/plugins/environment/ diff --git a/hatch_pip_compile/plugin.py b/hatch_pip_compile/plugin.py index 5660460..a13d9e4 100644 --- a/hatch_pip_compile/plugin.py +++ b/hatch_pip_compile/plugin.py @@ -2,11 +2,13 @@ hatch-pip-compile plugin """ +from __future__ import annotations + import pathlib import re import tempfile from textwrap import dedent -from typing import List +from typing import Any, List from hatch.env.virtual import VirtualEnvironment @@ -23,22 +25,39 @@ def __init__(self, *args, **kwargs): Initialize PipCompileEnvironment with extra attributes """ super().__init__(*args, **kwargs) - self._piptools_lock_file = self._config_lock_directory / f"{self.name}.lock" + if self.name == "default": + _default_lock_filename = "requirements.txt" + else: + _default_lock_filename = f"{self.name}.lock" + _lock_filename = self.config.get("lock-filename", _default_lock_filename) + self._piptools_lock_file = self._config_lock_directory / _lock_filename @staticmethod - def get_option_types(): + def get_option_types() -> dict[str, Any]: """ Get option types """ - return {"lock-directory": str, "pip-compile-args": List[str], "pip-compile-hashes": bool} + return { + "lock-directory": str, + "lock-filename": str, + "pip-compile-hashes": bool, + "pip-compile-header": bool, + "pip-compile-strip-extras": bool, + "pip-compile-args": List[str], + } @property def _config_lock_directory(self) -> pathlib.Path: """ Get the lock directory from the config """ - default_lock_dir = self.root / ".hatch" + if self.name == "default": + default_lock_dir = self.root + else: + default_lock_dir = self.root / ".hatch" lock_dir = self.config.get("lock-directory", default_lock_dir) + if lock_dir in [".", "./", ""]: + lock_dir = self.root return pathlib.Path(lock_dir) def _pip_compile_command(self, output_file: pathlib.Path, input_file: pathlib.Path) -> None: @@ -52,8 +71,12 @@ def _pip_compile_command(self, output_file: pathlib.Path, input_file: pathlib.Pa "piptools", "compile", "--quiet", - "--strip-extras", - "--no-header", + ( + "--strip-extras" + if self.config.get("pip-compile-strip-extras", False) is True + else "--no-strip-extras" + ), + "--header" if self.config.get("pip-compile-header", False) is True else "--no-header", "--output-file", str(output_file), "--resolver=backtracking", @@ -63,7 +86,8 @@ def _pip_compile_command(self, output_file: pathlib.Path, input_file: pathlib.Pa cmd.extend(self.config.get("pip-compile-args", [])) cmd.append(str(input_file)) self.platform.check_command(cmd) - self._post_process_lockfile() + if self.config.get("pip-compile-header", False) is False: + self._post_process_lockfile() def _pip_compile_cli(self) -> None: """ @@ -117,7 +141,10 @@ def dependencies_in_sync(self): if len(self.dependencies) > 0 and (self._piptools_lock_file.exists() is False): return False elif len(self.dependencies) > 0 and (self._piptools_lock_file.exists() is True): - expected_locks = self._lock_file_compare() + if self.config.get("pip-compile-header", False) is True: + expected_locks = True + else: + expected_locks = self._lock_file_compare() if expected_locks is False: return False return super().dependencies_in_sync() diff --git a/pyproject.toml b/pyproject.toml index 1004ece..ce3626a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,8 +20,7 @@ classifiers = [ "Programming Language :: Python :: Implementation :: PyPy" ] dependencies = [ - "hatch", - "pip-tools" + "hatch" ] description = "hatch plugin to use pip-compile to manage project dependencies" dynamic = ["version"] @@ -61,10 +60,6 @@ source_pkgs = ["hatch_pip_compile", "tests"] python = ["3.8", "3.9", "3.10", "3.11", "3.12"] [tool.hatch.envs.default] -dependencies = [ - "coverage[toml]>=6.5", - "pytest" -] path = ".venv" post-install-commands = [ "pre-commit install" @@ -72,18 +67,6 @@ post-install-commands = [ python = "3.11" type = "pip-compile" -[tool.hatch.envs.default.scripts] -cov = [ - "test-cov", - "cov-report" -] -cov-report = [ - "- coverage combine", - "coverage report -m" -] -test = "pytest {args:tests}" -test-cov = "coverage run -m pytest {args:tests}" - [tool.hatch.envs.docs] dependencies = [ "mkdocs~=1.5.2", @@ -131,7 +114,7 @@ style = [ "ruff {args:.}", "ruff format --check --diff {args:.}" ] -typing = "mypy --install-types --non-interactive {args:hatch_pip_compile tests}" +typing = "mypy --install-types --non-interactive {args:hatch_pip_compile}" [tool.hatch.version] path = "hatch_pip_compile/__about__.py" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ab96bda --- /dev/null +++ b/requirements.txt @@ -0,0 +1,163 @@ +#################################################################################### +# 🔒 hatch-pip-compile 🔒 +# +# - hatch +# +#################################################################################### + +anyio==4.0.0 \ + --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ + --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a + # via httpx +certifi==2023.7.22 \ + --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ + --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 + # via + # httpcore + # httpx +click==8.1.7 \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de + # via + # hatch + # userpath +distlib==0.3.7 \ + --hash=sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057 \ + --hash=sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8 + # via virtualenv +editables==0.5 \ + --hash=sha256:309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2 \ + --hash=sha256:61e5ffa82629e0d8bfe09bc44a07db3c1ab8ed1ce78a6980732870f19b5e7d4c + # via hatchling +filelock==3.13.1 \ + --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ + --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c + # via virtualenv +h11==0.14.0 \ + --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ + --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 + # via httpcore +hatch==1.7.0 \ + --hash=sha256:7afc701fd5b33684a6650e1ecab8957e19685f824240ba7458dcacd66f90fb46 \ + --hash=sha256:efc84112fd02ca85b7bab54f5e2ef71393a98dc849eac9aca390504031f8a1a8 + # via hatch-pip-compile (pyproject.toml) +hatchling==1.18.0 \ + --hash=sha256:50e99c3110ce0afc3f7bdbadff1c71c17758e476731c27607940cfa6686489ca \ + --hash=sha256:b66dc254931ec42aa68b5febd1d342c58142cc5267b7ff3b12ba3fa5b4900c93 + # via hatch +httpcore==1.0.2 \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 + # via httpx +httpx==0.25.1 \ + --hash=sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a \ + --hash=sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0 + # via hatch +hyperlink==21.0.0 \ + --hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \ + --hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4 + # via hatch +idna==3.4 \ + --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ + --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 + # via + # anyio + # httpx + # hyperlink +importlib-metadata==6.8.0 \ + --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ + --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 + # via keyring +jaraco-classes==3.3.0 \ + --hash=sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb \ + --hash=sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621 + # via keyring +keyring==24.3.0 \ + --hash=sha256:4446d35d636e6a10b8bce7caa66913dd9eca5fd222ca03a3d42c38608ac30836 \ + --hash=sha256:e730ecffd309658a08ee82535a3b5ec4b4c8669a9be11efb66249d8e0aeb9a25 + # via hatch +markdown-it-py==3.0.0 \ + --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ + --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb + # via rich +mdurl==0.1.2 \ + --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ + --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba + # via markdown-it-py +more-itertools==10.1.0 \ + --hash=sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a \ + --hash=sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6 + # via jaraco-classes +packaging==23.2 \ + --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ + --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 + # via + # hatch + # hatchling +pathspec==0.11.2 \ + --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ + --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 + # via hatchling +pexpect==4.8.0 \ + --hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937 \ + --hash=sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c + # via hatch +platformdirs==3.11.0 \ + --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ + --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e + # via + # hatch + # virtualenv +pluggy==1.3.0 \ + --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ + --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 + # via hatchling +ptyprocess==0.7.0 \ + --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ + --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 + # via pexpect +pygments==2.16.1 \ + --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \ + --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29 + # via rich +pyperclip==1.8.2 \ + --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 + # via hatch +rich==13.7.0 \ + --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ + --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 + # via hatch +shellingham==1.5.4 \ + --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ + --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de + # via hatch +sniffio==1.3.0 \ + --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ + --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 + # via + # anyio + # httpx +tomli-w==1.0.0 \ + --hash=sha256:9f2a07e8be30a0729e533ec968016807069991ae2fd921a78d42f429ae5f4463 \ + --hash=sha256:f463434305e0336248cac9c2dc8076b707d8a12d019dd349f5c1e382dd1ae1b9 + # via hatch +tomlkit==0.12.3 \ + --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \ + --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba + # via hatch +trove-classifiers==2023.11.14 \ + --hash=sha256:2893a80cf3c48645462dea97c72c02a9fb1f7bd3c65f9908d3ffb1a7ef0b3833 \ + --hash=sha256:64b5e78305a5de347f2cd7ec8c12d704a3ef0cb85cc10c0ca5f73488d1c201f8 + # via hatchling +userpath==1.9.1 \ + --hash=sha256:ce8176728d98c914b6401781bf3b23fccd968d1647539c8788c7010375e02796 \ + --hash=sha256:e085053e5161f82558793c41d60375289efceb4b77d96033ea9c84fc0893f772 + # via hatch +virtualenv==20.24.6 \ + --hash=sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af \ + --hash=sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381 + # via hatch +zipp==3.17.0 \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 + # via importlib-metadata diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index 85698cd..0000000 --- a/tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" -Test suite for the hatch-pip-compile package -""" diff --git a/tests/test_example.py b/tests/test_example.py deleted file mode 100644 index 825b167..0000000 --- a/tests/test_example.py +++ /dev/null @@ -1,10 +0,0 @@ -""" -Test Placeholder -""" - - -def test_placeholder(): - """ - Placeholder - """ - assert True