diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1051c7f..52a64a6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,9 +14,47 @@ concurrency: jobs: lint: name: Static analysis - uses: less-action/reusables/.github/workflows/pre-commit.yaml@main - with: - python-version: "3.11" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.12 + cache: pip + check-latest: true + - name: goose cache + uses: actions/cache@v4 + with: + path: ~/.cache/goose + key: "${{ runner.os }}-goose-3.12-${{ hashFiles('.goose/**/manifest.json') }}" + restore-keys: | + ${{ runner.os }}-goose-3.12 + ${{ runner.os }}-goose + - run: pip install git-goose + - run: python3 -m goose run --select=all --delete-orphan-environments + + type-check: + name: Type check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.12 + cache: pip + cache-dependency-path: typing-requirements.txt + check-latest: true + - name: mypy cache + uses: actions/cache@v4 + with: + path: .mypy_cache + key: "${{ runner.os }}-mypy-3.12-${{ hashFiles('typing-requirements.txt') }}" + restore-keys: | + ${{ runner.os }}-mypy-3.12 + ${{ runner.os }}-mypy + - run: pip install --require-hashes --no-dependencies -r typing-requirements.txt + - run: pip install --no-dependencies . + - run: mypy check-build: name: Check packaging metadata diff --git a/.goose/check-manifest/manifest.json b/.goose/check-manifest/manifest.json new file mode 100644 index 0000000..1711e0c --- /dev/null +++ b/.goose/check-manifest/manifest.json @@ -0,0 +1 @@ +{"source_dependencies":["check-manifest","setuptools-scm==8.1.0","setuptools==74.1.2","wheel==0.44.0"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:b20035ad9215b0fcfab6ed7888d9eba3c135901cc3f3b38258031154db8eec0f"}],"checksum":"sha256:d22cd331fc8a6160e0bafccf35e12ba887664bf07caa3fbee86aea1486b487f6"} \ No newline at end of file diff --git a/.goose/check-manifest/requirements.txt b/.goose/check-manifest/requirements.txt new file mode 100644 index 0000000..f5f1e34 --- /dev/null +++ b/.goose/check-manifest/requirements.txt @@ -0,0 +1,21 @@ +build==1.2.2 \ + --hash=sha256:119b2fb462adef986483438377a13b2f42064a2a3a4161f24a0cca698a07ac8c \ + --hash=sha256:277ccc71619d98afdd841a0e96ac9fe1593b823af481d3b0cea748e8894e0613 +check-manifest==0.49 \ + --hash=sha256:058cd30057714c39b96ce4d83f254fc770e3145c7b1932b5940b4e3efb5521ef \ + --hash=sha256:64a640445542cf226919657c7b78d02d9c1ca5b1c25d7e66e0e1ff325060f416 +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 +pyproject-hooks==1.1.0 \ + --hash=sha256:4b37730834edbd6bd37f26ece6b44802fb1c1ee2ece0e54ddff8bfc06db86965 \ + --hash=sha256:7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2 +setuptools==74.1.2 \ + --hash=sha256:5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308 \ + --hash=sha256:95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6 +setuptools-scm==8.1.0 \ + --hash=sha256:42dea1b65771cba93b7a515d65a65d8246e560768a66b9106a592c8e7f26c8a7 \ + --hash=sha256:897a3226a6fd4a6eb2f068745e49733261a21f70b1bb28fce0339feb978d9af3 +wheel==0.44.0 \ + --hash=sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f \ + --hash=sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49 diff --git a/.goose/mypy/manifest.json b/.goose/mypy/manifest.json new file mode 100644 index 0000000..cbbf3d6 --- /dev/null +++ b/.goose/mypy/manifest.json @@ -0,0 +1 @@ +{"source_dependencies":["hypothesis","mypy==1.4.1","numerary","phonenumbers","pydantic","pytest","typeguard","types-python-dateutil","types-setuptools","typing-extensions"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:6f915c7199f20c7f5c07e443a7f911868d3f5c8bf19de63496e369badfcf0072"}],"checksum":"sha256:dec0de1b65e756f0ee3acee5c2a29f960f0f70ddde58a83716d6e0e3d1f9b39e"} \ No newline at end of file diff --git a/.goose/mypy/requirements.txt b/.goose/mypy/requirements.txt new file mode 100644 index 0000000..8ff40c5 --- /dev/null +++ b/.goose/mypy/requirements.txt @@ -0,0 +1,167 @@ +annotated-types==0.7.0 \ + --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ + --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 +attrs==24.2.0 \ + --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ + --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 +beartype==0.18.5 \ + --hash=sha256:264ddc2f1da9ec94ff639141fbe33d22e12a9f75aa863b83b7046ffff1381927 \ + --hash=sha256:5301a14f2a9a5540fe47ec6d34d758e9cd8331d36c4760fc7a5499ab86310089 +hypothesis==6.112.1 \ + --hash=sha256:93631b1498b20d2c205ed304cbd41d50e9c069d78a9c773c1324ca094c5e30ce \ + --hash=sha256:b070d7a1bb9bd84706c31885c9aeddc138e2b36a9c112a91984f49501c567856 +iniconfig==2.0.0 \ + --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ + --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 +mypy==1.4.1 \ + --hash=sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042 \ + --hash=sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd \ + --hash=sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2 \ + --hash=sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01 \ + --hash=sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7 \ + --hash=sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3 \ + --hash=sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816 \ + --hash=sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3 \ + --hash=sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc \ + --hash=sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4 \ + --hash=sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b \ + --hash=sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8 \ + --hash=sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c \ + --hash=sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462 \ + --hash=sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7 \ + --hash=sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc \ + --hash=sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258 \ + --hash=sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b \ + --hash=sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9 \ + --hash=sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6 \ + --hash=sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f \ + --hash=sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1 \ + --hash=sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828 \ + --hash=sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878 \ + --hash=sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f \ + --hash=sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b +mypy-extensions==1.0.0 \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 +numerary==0.4.4 \ + --hash=sha256:ad955ddf7f5275f8e52f5520b2d6c654cc3bf1e3ae4bfb45664c9d51b208d0c6 +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 +phonenumbers==8.13.45 \ + --hash=sha256:53679a95b6060fd5e15467759252c87933d8566d6a5be00995a579eb0e02435b \ + --hash=sha256:bf05ec20fcd13f0d53e43a34ed7bd1c8be26a72b88fce4b8c64fca5b4641987a +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 +pydantic==2.9.2 \ + --hash=sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f \ + --hash=sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12 +pydantic-core==2.23.4 \ + --hash=sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36 \ + --hash=sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05 \ + --hash=sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071 \ + --hash=sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327 \ + --hash=sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c \ + --hash=sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36 \ + --hash=sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29 \ + --hash=sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744 \ + --hash=sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d \ + --hash=sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec \ + --hash=sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e \ + --hash=sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e \ + --hash=sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577 \ + --hash=sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232 \ + --hash=sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863 \ + --hash=sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6 \ + --hash=sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368 \ + --hash=sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480 \ + --hash=sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2 \ + --hash=sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2 \ + --hash=sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6 \ + --hash=sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769 \ + --hash=sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d \ + --hash=sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2 \ + --hash=sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84 \ + --hash=sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166 \ + --hash=sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271 \ + --hash=sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5 \ + --hash=sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb \ + --hash=sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13 \ + --hash=sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323 \ + --hash=sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556 \ + --hash=sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665 \ + --hash=sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef \ + --hash=sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb \ + --hash=sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119 \ + --hash=sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126 \ + --hash=sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510 \ + --hash=sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b \ + --hash=sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87 \ + --hash=sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f \ + --hash=sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc \ + --hash=sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8 \ + --hash=sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21 \ + --hash=sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f \ + --hash=sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6 \ + --hash=sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658 \ + --hash=sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b \ + --hash=sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3 \ + --hash=sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb \ + --hash=sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59 \ + --hash=sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24 \ + --hash=sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9 \ + --hash=sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3 \ + --hash=sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd \ + --hash=sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753 \ + --hash=sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55 \ + --hash=sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad \ + --hash=sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a \ + --hash=sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605 \ + --hash=sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e \ + --hash=sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b \ + --hash=sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433 \ + --hash=sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8 \ + --hash=sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07 \ + --hash=sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728 \ + --hash=sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0 \ + --hash=sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327 \ + --hash=sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555 \ + --hash=sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64 \ + --hash=sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6 \ + --hash=sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea \ + --hash=sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b \ + --hash=sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df \ + --hash=sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e \ + --hash=sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd \ + --hash=sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068 \ + --hash=sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3 \ + --hash=sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040 \ + --hash=sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12 \ + --hash=sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916 \ + --hash=sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f \ + --hash=sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f \ + --hash=sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801 \ + --hash=sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231 \ + --hash=sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5 \ + --hash=sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8 \ + --hash=sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee \ + --hash=sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607 +pytest==8.3.3 \ + --hash=sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181 \ + --hash=sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2 +sortedcontainers==2.4.0 \ + --hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \ + --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 +typeguard==4.3.0 \ + --hash=sha256:4d24c5b39a117f8a895b9da7a9b3114f04eb63bade45a4492de49b175b6f7dfa \ + --hash=sha256:92ee6a0aec9135181eae6067ebd617fd9de8d75d714fb548728a4933b1dea651 +types-python-dateutil==2.9.0.20240906 \ + --hash=sha256:27c8cc2d058ccb14946eebcaaa503088f4f6dbc4fb6093d3d456a49aef2753f6 \ + --hash=sha256:9706c3b68284c25adffc47319ecc7947e5bb86b3773f843c73906fd598bc176e +types-setuptools==75.1.0.20240917 \ + --hash=sha256:06f78307e68d1bbde6938072c57b81cf8a99bc84bd6dc7e4c5014730b097dc0c \ + --hash=sha256:12f12a165e7ed383f31def705e5c0fa1c26215dd466b0af34bd042f7d5331f55 +typing-extensions==4.12.2 \ + --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ + --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 diff --git a/.goose/node/manifest.json b/.goose/node/manifest.json new file mode 100644 index 0000000..fc2d5c7 --- /dev/null +++ b/.goose/node/manifest.json @@ -0,0 +1 @@ +{"source_dependencies":["prettier"],"lock_files":[{"path":"package-lock.json","checksum":"sha256:f4412caf2beed530362395e3e44258f75cc35e43e890f1e2f725f9bbda990f4c"},{"path":"package.json","checksum":"sha256:c5008cb00d6009f6d901cfe35523169a3deb91979b71fce65d6ac79fdace548b"}],"checksum":"sha256:a112173ffe8caaeb52381f7fef342a108d8d4b4e081310059c09786525de466c"} \ No newline at end of file diff --git a/.goose/node/package-lock.json b/.goose/node/package-lock.json new file mode 100644 index 0000000..b465d08 --- /dev/null +++ b/.goose/node/package-lock.json @@ -0,0 +1,26 @@ +{ + "name": "node", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "prettier": "*" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + } + } +} diff --git a/.goose/node/package.json b/.goose/node/package.json new file mode 100644 index 0000000..4cca591 --- /dev/null +++ b/.goose/node/package.json @@ -0,0 +1 @@ +{"lockfileVersion":3,"dependencies":{"prettier":"*"}} \ No newline at end of file diff --git a/.goose/python/manifest.json b/.goose/python/manifest.json new file mode 100644 index 0000000..8f2b743 --- /dev/null +++ b/.goose/python/manifest.json @@ -0,0 +1 @@ +{"source_dependencies":["blacken-docs","check-jsonschema","editorconfig-checker","pre-commit-hooks","ruff"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:140c1d41bca5c83cae63593d759d20bf957ff8b5fe5b9779a9ae8bd0072aea08"}],"checksum":"sha256:8210de127816e99ea1e0663462de57123730f998f7afe8dfe5b40add21f4b5e3"} \ No newline at end of file diff --git a/.goose/python/requirements.txt b/.goose/python/requirements.txt new file mode 100644 index 0000000..474c0d7 --- /dev/null +++ b/.goose/python/requirements.txt @@ -0,0 +1,445 @@ +attrs==24.2.0 \ + --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ + --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 +black==24.8.0 \ + --hash=sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6 \ + --hash=sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e \ + --hash=sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f \ + --hash=sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018 \ + --hash=sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e \ + --hash=sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd \ + --hash=sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4 \ + --hash=sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed \ + --hash=sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2 \ + --hash=sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42 \ + --hash=sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af \ + --hash=sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb \ + --hash=sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368 \ + --hash=sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb \ + --hash=sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af \ + --hash=sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed \ + --hash=sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47 \ + --hash=sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2 \ + --hash=sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a \ + --hash=sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c \ + --hash=sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920 \ + --hash=sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1 +blacken-docs==1.18.0 \ + --hash=sha256:47bed628679d008a8eb55d112df950582e68d0f57615223929e366348d935444 \ + --hash=sha256:64f592246784131e9f84dad1db397f44eeddc77fdf01726bab920a3f00a3815c +certifi==2024.8.30 \ + --hash=sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8 \ + --hash=sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9 +charset-normalizer==3.3.2 \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 +check-jsonschema==0.29.2 \ + --hash=sha256:6470ff23d848a26b1e77db1141827002f5fff3138295d3345c19b2410d345aa0 \ + --hash=sha256:a633aae257f16e5298853edf18fd30ab94878fd88bd6b91902cd7158151c675d +click==8.1.7 \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de +editorconfig-checker==3.0.3 \ + --hash=sha256:1771336e94b9e0c7791126206e5127edd0add664e2040daacf0b5b685a3fa242 +idna==3.10 \ + --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ + --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 +jsonschema==4.23.0 \ + --hash=sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4 \ + --hash=sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566 +jsonschema-specifications==2023.12.1 \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c +mypy-extensions==1.0.0 \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 +pathspec==0.12.1 \ + --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ + --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 +platformdirs==4.3.6 \ + --hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \ + --hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb +pre-commit-hooks==4.6.0 \ + --hash=sha256:a69199e6a2d45ec59c1020a81ca1549abddc2afb798276d9a0d951752d6abbfe \ + --hash=sha256:eb1f43ee67869cd41b4c59017fad4a0f9d4d61201d163f2135535aaf65035a2b +referencing==0.35.1 \ + --hash=sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c \ + --hash=sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de +regress==2024.8.1 \ + --hash=sha256:01c5cf3f5b1bcdc5056c76560ee32e577eae3d12f04d49d109c9665374e0b336 \ + --hash=sha256:0257c5c983c18f30323cb1d89b087d9ffe00d1236c9b628b282809703548cbbf \ + --hash=sha256:0568516ceb79e39d50f1bf165f16144ae2bf41bc5a389b958bcf2d3cb4162bb2 \ + --hash=sha256:08755799da2703d93fc84140337c14408894b3c5c43d51b370801d50c9dc13e2 \ + --hash=sha256:0ab55cedf84fc2837f406c6b6215361b9f8d87d9fd1ee5c03795112538dd8b6e \ + --hash=sha256:0bb0435f84acb82bfa5f637cdf2cbb2065a8379245dd5c2900a888a4189f84a9 \ + --hash=sha256:0bbaa5b10c90cd628fd8bbb78c51bc6b7a550264aad39448418669b66c3149c7 \ + --hash=sha256:0d617f9308a8f4d326fa7910eef88638e72a1e574a20d5a1880e5d760abca676 \ + --hash=sha256:0d814ea24e58c7a532fcbbe81524e20b019331275e07c812b3962b6033225532 \ + --hash=sha256:0e518c6402fbcb63a822a030a924bef12dfed18919409e6d4c2a52638f102d8e \ + --hash=sha256:0f8a1dd0e0cfc9554eee1c0b2281ec2c669c9e6268aed93298a5cfa84b671b4c \ + --hash=sha256:13bca45b276ba00dc9699449b445f50704929609292bfd2bd9789fb032f86e1f \ + --hash=sha256:1c80bca737ad7ccc0bcb207d84767be2c78f6a1f59441df6a9e34987e44b7f10 \ + --hash=sha256:28a6d98b7bf4fbfcfbb892541fd8edca121a409f5ea3d969715cd3b4581a5555 \ + --hash=sha256:2b149895165eddbf53abcb32d2ceff17cfcd5cb7f2ce7f846d27f5d048a61a0f \ + --hash=sha256:2b772f3f544dc9ed5af241da0fe403300e6594fdf6ee524fe2bea35bce91c7a2 \ + --hash=sha256:2d166076726be4e641f700617f657817b2500b016438a849fd11a043963cad84 \ + --hash=sha256:2da98b49a06c5f6084edc4f8702de2222c48140f166e13d7c01d880d187b6bb8 \ + --hash=sha256:2db0e7402d72e4dddf27096e8f1bf0d13ccc36db4e159cbf35c25ce38c823652 \ + --hash=sha256:2e8dc14db671ef35bcd9080b1a4f0e123880021f724cb4284c77603e04254b3e \ + --hash=sha256:3a85810d7357a67aeee5df9f60b6a777d84142dea130ccbe195627872310095b \ + --hash=sha256:3bebeada7947446776e5887c1a68b0a27d559419a09ff8e18de2202d305b5719 \ + --hash=sha256:3c71731d3c0cba999e448fc655704d4178f74c57b37df00c1868e818aec29129 \ + --hash=sha256:3dfd92637d3d27bfce7abfee8416ead601514853c1566454e0bc7dccf998e743 \ + --hash=sha256:3f8edaa46cacd7539a881f1ec6cfe3a0254b0ab4be2cfcfc37be08de90af7fc8 \ + --hash=sha256:40a3f47807a6145c38cc705ec430b2ba2c01ebdcb9665de33ec2deef2bab889d \ + --hash=sha256:4159f4f1225d0ab4372fcb7f232854416b05e7d509eeb51ab9e342137a5f89d4 \ + --hash=sha256:4531055cbc0c42cbbc2c301ae4c818ce81627dcf94d829496824260a75b3ded7 \ + --hash=sha256:4984db8f752a6fd8d954c3c92c091dae6245409b4f0f97366372d13f12839742 \ + --hash=sha256:4ba1529ef31bcf9940173e4ae8ccd73c368d19f054fbc6704f6e7c3c151686c1 \ + --hash=sha256:510e0df0939f841bc139308a7f917e2816189f760e0b04b856058a6b83f2e7bb \ + --hash=sha256:5155d76cb1767176a2bb49101f7d2428de1b198a75db45d45fa3a93668a8de65 \ + --hash=sha256:51607901c421e33f200a0155a23390354ad047e5c0ceb1adce2b4b51b80df534 \ + --hash=sha256:5664b0cd2b655b3a98283da4bfe9753f00ce30e5240bc06fb66ab716adf37de5 \ + --hash=sha256:5742b17bef7d9ccc44968df240caba64d07a6db8baff91b692205655b5b56675 \ + --hash=sha256:5bd6a04879856777cddd16a9dcc2557a871cb3e3dfbb2d0532d913818a307fd0 \ + --hash=sha256:5c0da903b0865491cbb4018b468072ab9e91edf9fc3eb2befd862ec34fee50e8 \ + --hash=sha256:612aee0226aca42324cc0fe31ee2f3a2aa1697c6908e60f3518d64d7e2080c4d \ + --hash=sha256:61d0709866749df8ab3b060483f4ff07275cc09faf1652ff6edb8548d7f10135 \ + --hash=sha256:6327aecd730bd221d01fd9103b7534d4555c1946ea4934e585d33628f24e80a1 \ + --hash=sha256:67ebf7c323851cd46e8da0c40304eefb69b79f365b64f5f7ca8006e51d13c0b4 \ + --hash=sha256:6bac104ad3a3cb8c0d591a855a20de5db069cead82c733abb85e73b34817b223 \ + --hash=sha256:6d078326f8dd444f218813cee934512b28dd04bf19be2bff13f55f6fbcce01dc \ + --hash=sha256:709a0640d7970314a59e1c4cd4edb8e8adfc8fce9cd24214dbf95a2ef7f6bca9 \ + --hash=sha256:70ae19cca2f986f5f7545c8fed4f93557c6aa6e402c17ff9888da61bc9b385d7 \ + --hash=sha256:70f908a904794055dc3c1d6606df9ac245e2c0cfc03f23a8ca66eb01890f75f0 \ + --hash=sha256:721eddbb1f3942c19c492a97f12ff824c8b404e5002dc0ef8aa22f0b6804858e \ + --hash=sha256:738e92c6a34089dc4f82fbf25124e36c44c43730d55ae2b2bccc42f862668f1c \ + --hash=sha256:73b82aa06800a8763bc64f6b7cddcc24c129576aa723bbd425ecc11eaa3b2dbf \ + --hash=sha256:77b32a0004196e7216e481b720e1a38356fe65a14fa07b3e632217eb8699620c \ + --hash=sha256:795c63d06150c0ce854be845772d3694458d2ec405233b53ea21485d33a7acef \ + --hash=sha256:7bbd2d00c5090c32714914ec59db3de63ad44f3045f3f9d4feae6729afdcfbfb \ + --hash=sha256:7c264d9df9312661e2199a2793c4d983da1114cdb7c6c851decb70edf9be5a44 \ + --hash=sha256:7f8d282c03c21e41582f589b0f2ae60cbdedaa92bc60e09a92ac297aea78c9dc \ + --hash=sha256:80422b2f36617417855f989278bdb31768380c5a8240d160a8eed307ced452c2 \ + --hash=sha256:817c5f300fb07f2f700dcf24fb404a2dc66466623f8b91fd5990647d0abd157b \ + --hash=sha256:855ac87baac7d5910c35f43998e538edb5e326ed9025d0dba9b2b8f45256f682 \ + --hash=sha256:89168b21f7db63ff09cd0f3a66ce2e7505698d88cde33941e9e244da69184708 \ + --hash=sha256:8a39445471943dcaba8508b7654866fe69214ff183d660b580193ad480e47be5 \ + --hash=sha256:98f622c8b69167641b572e1be4e79143040d540920b426502adc278cbce53609 \ + --hash=sha256:9f0b5936976699737dd49442d1373f3426845080728e892d45ef2f60b8ab39c4 \ + --hash=sha256:9f7977ecb2def81c58735f38b00a0d310561972a17cc224eec4c0e1289a761f4 \ + --hash=sha256:a03229ea8bc9c8d13d291e72ac07afd0f52c6c770feb6d4cc1bc02d39aa63d3a \ + --hash=sha256:a2f8746174d1b6aa7bc2aef20e9991da6b49cb4f96c093279a014b872e0c3b05 \ + --hash=sha256:a313b83455cb43343cd3d192e585102cee431610624cd8207c756bc6b582cbcd \ + --hash=sha256:a348c1cb89f9e8638d307b6d329f535a40cd565899241b998be5715804f85898 \ + --hash=sha256:a5e7f84f77588ef52594cdef825cc73e8bff7bd1f30993fcb477effd28038101 \ + --hash=sha256:ac4aac837ec36aeac5853a2d0eb27bbb97c72a4d2370e9f204da0156e0a0738d \ + --hash=sha256:acb330b0464dbca13ae1bfe6a9203e800ed9da68583586629acf7cbecbc50198 \ + --hash=sha256:b5dc24fbfad5864efd3c47f5397b295099e6ea4934541fe71e2dd0828e8160cb \ + --hash=sha256:b5fb2b3afbc3bda4852698a695a32a67ca517c9cd26215794819e60554aeb317 \ + --hash=sha256:b80a23f42770a7443d8230b5282577c9619ea449a28609f1ae1e5550be739336 \ + --hash=sha256:ba133499d13c2bb004bf9be2973aa298720938af9cff4d6028f81dd6f0447988 \ + --hash=sha256:baddcd6d592df29f328e4e437a19341872ac16a7d63bd2d5695e3ff47b3ab341 \ + --hash=sha256:beb5e5ecf6e42dd07a4b0defb8be7ee20bad0fc3ff07b41831ac7babf5b0904e \ + --hash=sha256:c0fd9415bffa70f7326f33f4353c2fb35de2e5ce2a040c968715206ac2c479ca \ + --hash=sha256:c586b457bf23bad85b301e753dee9882f98423043c443eba235a4cc684520a3d \ + --hash=sha256:c676350262698a1d3384b4c79f57fb02aba62ac6f25d02bd53e78b3cb220cd32 \ + --hash=sha256:c77351814218417f34b0de5c1c730eb7fe6a6ef8fecda0853ca3523fcd8a32d8 \ + --hash=sha256:cb8c4c9747b6d8387dae1fa75490c82182b79d9a5200cced94532f453e4480a4 \ + --hash=sha256:cd1911b97fe96c60735a13b18ee7f5e8e3ce2b0685ca0a903a2332ee3ceb307b \ + --hash=sha256:ce8eb75810ab300af7835ecbb2226380d08682b2375fa8134e9666d180214695 \ + --hash=sha256:ce9a9d42480e33e420614780feb87d6aef5e122664873566f4cb5bd8abee0ec7 \ + --hash=sha256:cfa5e78ea426119d2a76677c1722451a1ec4ea4bf424aab653e78bcbdd482ff9 \ + --hash=sha256:d00ae8ca41d40edb54e2f2d63313d5eee12f7ab035a4ac3d0710ea70e087f6d0 \ + --hash=sha256:d69bc842b30a8122f12b0cac48077de2b0b11a5375bcbf67ae2e890622911414 \ + --hash=sha256:d998067c6a0fae4106cfc47d27fc1e41ab2fcdf59616e8b51d919da895fe2ffe \ + --hash=sha256:dd038ea24add0ba99c50962714958cc257c961bca7ae379154904f37b4f8d263 \ + --hash=sha256:e3c5bedc07f37d469e213954e2a1f68fd7aed9b34fb0342d5eac33cbb6a140f0 \ + --hash=sha256:e431f880b49d042200eea9c9d11ea9fbeb1a6f4c884bcc72cf8c8ddff04bde47 \ + --hash=sha256:e47e69cf97a685475829c3633291013074422bedf31cb61714a9640802556b3c \ + --hash=sha256:e4b0090d540616a7a38a752033337da660eae07bf64e921784a71b28ff842065 \ + --hash=sha256:e6caa1c3ff82fab3118ff2962711c872251894a5b49332675746498f1ac4806f \ + --hash=sha256:eaa7ada76cd1dca8b7d8d8346aab71465a7b7c9c852ad18ce1a2e5012a193804 \ + --hash=sha256:ed8124b0a38df010bf861c54b04976211c13f9e6ac5f9e68c0181a427f265c77 \ + --hash=sha256:ee0595ee91a7d1f48317b1b4c3576b5be29517cf1491ba18cdef3967958170e5 \ + --hash=sha256:f09edc34fbb35a9b2aa75b78beb486fcbd4888be5e8b300e6aaf04f28e5a556b \ + --hash=sha256:f1f82979d5220d08149b011904add3de11f76954bdcb8adfe132f27a0438383d \ + --hash=sha256:f62c3d7e55cf9b9015aeec6d41dc85c29c9cb4013784db5a4d63a767d1670e10 \ + --hash=sha256:f7a83e0c7eee1fcb08ec5be97d1badef1c9c6d4c8d243c1c1de6e597f0670091 \ + --hash=sha256:f8a3ebfef21c38676d4ac7727ff6538d59d40bdfd8f2bc77865cb8bbbe99f110 \ + --hash=sha256:f92211f2e7a62c97af59a5dcbcb55f0e7e6a3572dd60abe5e31ab3858bb669ea \ + --hash=sha256:fcb30638eb43d6b51cb73ab6de48f1178beb695607872e914a9bb676518756fc +requests==2.32.3 \ + --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ + --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 +rpds-py==0.20.0 \ + --hash=sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c \ + --hash=sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585 \ + --hash=sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5 \ + --hash=sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6 \ + --hash=sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef \ + --hash=sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2 \ + --hash=sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29 \ + --hash=sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318 \ + --hash=sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b \ + --hash=sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399 \ + --hash=sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739 \ + --hash=sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee \ + --hash=sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174 \ + --hash=sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a \ + --hash=sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344 \ + --hash=sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2 \ + --hash=sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03 \ + --hash=sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5 \ + --hash=sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22 \ + --hash=sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e \ + --hash=sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96 \ + --hash=sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91 \ + --hash=sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752 \ + --hash=sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075 \ + --hash=sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253 \ + --hash=sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee \ + --hash=sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad \ + --hash=sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5 \ + --hash=sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce \ + --hash=sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7 \ + --hash=sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b \ + --hash=sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8 \ + --hash=sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57 \ + --hash=sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3 \ + --hash=sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec \ + --hash=sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209 \ + --hash=sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921 \ + --hash=sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045 \ + --hash=sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074 \ + --hash=sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580 \ + --hash=sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7 \ + --hash=sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5 \ + --hash=sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3 \ + --hash=sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0 \ + --hash=sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24 \ + --hash=sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139 \ + --hash=sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db \ + --hash=sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc \ + --hash=sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789 \ + --hash=sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f \ + --hash=sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2 \ + --hash=sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c \ + --hash=sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232 \ + --hash=sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6 \ + --hash=sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c \ + --hash=sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29 \ + --hash=sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489 \ + --hash=sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94 \ + --hash=sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751 \ + --hash=sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2 \ + --hash=sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda \ + --hash=sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9 \ + --hash=sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51 \ + --hash=sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c \ + --hash=sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8 \ + --hash=sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989 \ + --hash=sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511 \ + --hash=sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1 \ + --hash=sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2 \ + --hash=sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150 \ + --hash=sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c \ + --hash=sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965 \ + --hash=sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f \ + --hash=sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58 \ + --hash=sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b \ + --hash=sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f \ + --hash=sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d \ + --hash=sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821 \ + --hash=sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de \ + --hash=sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121 \ + --hash=sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855 \ + --hash=sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272 \ + --hash=sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60 \ + --hash=sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02 \ + --hash=sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1 \ + --hash=sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140 \ + --hash=sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879 \ + --hash=sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940 \ + --hash=sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364 \ + --hash=sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4 \ + --hash=sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e \ + --hash=sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420 \ + --hash=sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5 \ + --hash=sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24 \ + --hash=sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c \ + --hash=sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf \ + --hash=sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f \ + --hash=sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e \ + --hash=sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab \ + --hash=sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08 \ + --hash=sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92 \ + --hash=sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a \ + --hash=sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8 +ruamel-yaml==0.18.6 \ + --hash=sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636 \ + --hash=sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b +ruamel-yaml-clib==0.2.8 \ + --hash=sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d \ + --hash=sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001 \ + --hash=sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462 \ + --hash=sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9 \ + --hash=sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe \ + --hash=sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b \ + --hash=sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b \ + --hash=sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615 \ + --hash=sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62 \ + --hash=sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15 \ + --hash=sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b \ + --hash=sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1 \ + --hash=sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9 \ + --hash=sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675 \ + --hash=sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899 \ + --hash=sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7 \ + --hash=sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7 \ + --hash=sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312 \ + --hash=sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa \ + --hash=sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91 \ + --hash=sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b \ + --hash=sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6 \ + --hash=sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3 \ + --hash=sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334 \ + --hash=sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5 \ + --hash=sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3 \ + --hash=sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe \ + --hash=sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c \ + --hash=sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed \ + --hash=sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337 \ + --hash=sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880 \ + --hash=sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f \ + --hash=sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d \ + --hash=sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248 \ + --hash=sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d \ + --hash=sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf \ + --hash=sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512 \ + --hash=sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069 \ + --hash=sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb \ + --hash=sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942 \ + --hash=sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d \ + --hash=sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31 \ + --hash=sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92 \ + --hash=sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5 \ + --hash=sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28 \ + --hash=sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d \ + --hash=sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1 \ + --hash=sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2 \ + --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ + --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 +ruff==0.6.7 \ + --hash=sha256:02b083770e4cdb1495ed313f5694c62808e71764ec6ee5db84eedd82fd32d8f5 \ + --hash=sha256:08277b217534bfdcc2e1377f7f933e1c7957453e8a79764d004e44c40db923f2 \ + --hash=sha256:0c05fd37013de36dfa883a3854fae57b3113aaa8abf5dea79202675991d48624 \ + --hash=sha256:17a86aac6f915932d259f7bec79173e356165518859f94649d8c50b81ff087e9 \ + --hash=sha256:2f0b62056246234d59cbf2ea66e84812dc9ec4540518e37553513392c171cb18 \ + --hash=sha256:44e52129d82266fa59b587e2cd74def5637b730a69c4542525dfdecfaae38bd5 \ + --hash=sha256:525201b77f94d2b54868f0cbe5edc018e64c22563da6c5c2e5c107a4e85c1c0d \ + --hash=sha256:533d66b7774ef224e7cf91506a7dafcc9e8ec7c059263ec46629e54e7b1f90ab \ + --hash=sha256:590445eec5653f36248584579c06252ad2e110a5d1f32db5420de35fb0e1c977 \ + --hash=sha256:6b1462fa56c832dc0cea5b4041cfc9c97813505d11cce74ebc6d1aae068de36b \ + --hash=sha256:8854450839f339e1049fdbe15d875384242b8e85d5c6947bb2faad33c651020b \ + --hash=sha256:9ba4efe5c6dbbb58be58dd83feedb83b5e95c00091bf09987b4baf510fee5c99 \ + --hash=sha256:a0e1655868164e114ba43a908fd2d64a271a23660195017c17691fb6355d59bb \ + --hash=sha256:a939ca435b49f6966a7dd64b765c9df16f1faed0ca3b6f16acdf7731969deb35 \ + --hash=sha256:b28f0d5e2f771c1fe3c7a45d3f53916fc74a480698c4b5731f0bea61e52137c8 \ + --hash=sha256:b3f8822defd260ae2460ea3832b24d37d203c3577f48b055590a426a722d50ef \ + --hash=sha256:c6707a32e03b791f4448dc0dce24b636cbcdee4dd5607adc24e5ee73fd86c00a \ + --hash=sha256:f49c9caa28d9bbfac4a637ae10327b3db00f47d038f3fbb2195c4d682e925b14 +urllib3==2.2.3 \ + --hash=sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac \ + --hash=sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 3f9e98c..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,82 +0,0 @@ -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: "v4.4.0" - hooks: - - id: check-case-conflict - - id: check-merge-conflict - - id: end-of-file-fixer - - id: trailing-whitespace - - id: debug-statements - - id: detect-private-key - - - repo: https://github.com/editorconfig-checker/editorconfig-checker.python - rev: "2.7.2" - hooks: - - id: editorconfig-checker - alias: ec - args: - - -disable-indent-size - - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "v0.0.282" - hooks: - - id: ruff - - - repo: https://github.com/psf/black - rev: "23.7.0" - hooks: - - id: black - - - repo: https://github.com/asottile/blacken-docs - rev: "1.15.0" - hooks: - - id: blacken-docs - additional_dependencies: ["black==23.1.0"] - - - repo: https://github.com/sirosen/check-jsonschema - rev: "0.23.3" - hooks: - - id: check-github-workflows - - - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.4.1" - hooks: - - id: mypy - pass_filenames: false - additional_dependencies: - - typing-extensions==4.3.0 - - pytest==7.2.1 - - typeguard==4.0.0 - - phonenumbers==8.13.5 - - pydantic==1.10.4 - - types-setuptools==67.2.0.0 - - numerary==0.4.3 - - types-python-dateutil==2.8.19.6 - - hypothesis==6.68.0 - - - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v3.0.1" - hooks: - - id: prettier - additional_dependencies: - # This addresses slow installation progress, see: - # https://github.com/pre-commit/mirrors-eslint/issues/19#issuecomment-1026388904 - # https://github.com/npm/cli/issues/4028#issuecomment-1611625358 - - npm@8.11.0 - - prettier@3.0.1 - alias: format-markdown - types: [ markdown ] - args: - - --parser=markdown - - --print-width=88 - - --prose-wrap=always - - - repo: https://github.com/mgedmin/check-manifest - rev: "0.49" - hooks: - - id: check-manifest - args: ["--no-build-isolation"] - additional_dependencies: - - setuptools==74.1.2 - - setuptools-scm==8.1.0 - - wheel==0.44.0 diff --git a/MANIFEST.in b/MANIFEST.in index 76fc43c..3313784 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,6 +2,7 @@ exclude Makefile exclude .editorconfig recursive-exclude docs * recursive-exclude .github * +recursive-exclude .goose * recursive-exclude tests * recursive-include src py.typed exclude *.yaml diff --git a/Makefile b/Makefile index 9122639..aa63963 100644 --- a/Makefile +++ b/Makefile @@ -51,4 +51,11 @@ clean: docs-requirements: export CUSTOM_COMPILE_COMMAND='make docs-requirements' docs-requirements: @pip install --upgrade pip-tools - @pip-compile + @pip-compile --output-file=docs-requirements.txt --extra=docs + + +.PHONY: docs-requirements +typing-requirements: export CUSTOM_COMPILE_COMMAND='make typing-requirements' +typing-requirements: + @pip install --upgrade pip-tools + @pip-compile --output-file=typing-requirements.txt --extra=type-check diff --git a/README.md b/README.md index 6ef9ef2..274b4b8 100644 --- a/README.md +++ b/README.md @@ -59,8 +59,7 @@ from phantom import Phantom from phantom.predicates.collection import contained -class Name(str, Phantom, predicate=contained({"Jane", "Joe"})): - ... +class Name(str, Phantom, predicate=contained({"Jane", "Joe"})): ... def greet(name: Name): @@ -172,7 +171,7 @@ The code above outputs the following JSONSchema. Install development requirements, preferably in a virtualenv: ```bash -$ python3 -m pip install .[all,test] +$ python3 -m pip install .[all,test,type-check] ``` Run tests: @@ -183,21 +182,22 @@ $ pytest $ make test ``` -Linting and static type checking is setup with [pre-commit], after installing it you can -setup hooks with the following command, so that checks run before you push changes. +Run type checker: + +```bash +$ mypy +``` + +Linters and formatters are set up with [goose], after installing it you can run it as: ```bash -# configure hooks to run when pushing -$ pre-commit install -t pre-push -# or when committing -$ pre-commit install -t pre-commit # run all checks -$ pre-commit run --all-files +$ goose run --select=all # or just a single hook -$ pre-commit run mypy --all-files +$ goose run mypy --select=all ``` -In addition to static type checking, the project is setup with [pytest-mypy-plugins] to +In addition to static type checking, the project is set up with [pytest-mypy-plugins] to test that exposed mypy types work as expected, these checks will run together with the rest of the test suite, but you can single them out with the following command. @@ -216,5 +216,5 @@ $ make test-typing [pydantic]: https://pydantic-docs.helpmanual.io/ [pydantic-support]: https://phantom-types.readthedocs.io/en/stable/pages/pydantic-support.html -[pre-commit]: https://pre-commit.com/ +[goose]: https://github.com/antonagestam/goose [pytest-mypy-plugins]: https://github.com/TypedDjango/pytest-mypy-plugins diff --git a/docs-requirements.txt b/docs-requirements.txt index 76bfc74..0a1c21f 100644 --- a/docs-requirements.txt +++ b/docs-requirements.txt @@ -11,10 +11,7 @@ alabaster==1.0.0 \ attrs==24.2.0 \ --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 - # via - # hypothesis - # jsonschema - # referencing + # via hypothesis babel==2.16.0 \ --hash=sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b \ --hash=sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316 @@ -123,84 +120,6 @@ charset-normalizer==3.3.2 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 # via requests -coverage==7.6.1 \ - --hash=sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca \ - --hash=sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d \ - --hash=sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6 \ - --hash=sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989 \ - --hash=sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c \ - --hash=sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b \ - --hash=sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223 \ - --hash=sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f \ - --hash=sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56 \ - --hash=sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3 \ - --hash=sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8 \ - --hash=sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb \ - --hash=sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388 \ - --hash=sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0 \ - --hash=sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a \ - --hash=sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8 \ - --hash=sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f \ - --hash=sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a \ - --hash=sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962 \ - --hash=sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8 \ - --hash=sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391 \ - --hash=sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc \ - --hash=sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2 \ - --hash=sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155 \ - --hash=sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb \ - --hash=sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0 \ - --hash=sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c \ - --hash=sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a \ - --hash=sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004 \ - --hash=sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060 \ - --hash=sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232 \ - --hash=sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93 \ - --hash=sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129 \ - --hash=sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163 \ - --hash=sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de \ - --hash=sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6 \ - --hash=sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23 \ - --hash=sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569 \ - --hash=sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d \ - --hash=sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778 \ - --hash=sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d \ - --hash=sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36 \ - --hash=sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a \ - --hash=sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6 \ - --hash=sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34 \ - --hash=sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704 \ - --hash=sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106 \ - --hash=sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9 \ - --hash=sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862 \ - --hash=sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b \ - --hash=sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255 \ - --hash=sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16 \ - --hash=sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3 \ - --hash=sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133 \ - --hash=sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb \ - --hash=sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657 \ - --hash=sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d \ - --hash=sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca \ - --hash=sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36 \ - --hash=sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c \ - --hash=sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e \ - --hash=sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff \ - --hash=sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7 \ - --hash=sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5 \ - --hash=sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02 \ - --hash=sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c \ - --hash=sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df \ - --hash=sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3 \ - --hash=sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a \ - --hash=sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959 \ - --hash=sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234 \ - --hash=sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc - # via phantom-types (pyproject.toml) -decorator==5.1.1 \ - --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ - --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 - # via pytest-mypy-plugins docutils==0.21.2 \ --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \ --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2 @@ -212,9 +131,7 @@ furo==2024.8.6 \ hypothesis==6.112.1 \ --hash=sha256:93631b1498b20d2c205ed304cbd41d50e9c069d78a9c773c1324ca094c5e30ce \ --hash=sha256:b070d7a1bb9bd84706c31885c9aeddc138e2b36a9c112a91984f49501c567856 - # via - # phantom-types - # phantom-types (pyproject.toml) + # via phantom-types idna==3.10 \ --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 @@ -223,24 +140,10 @@ imagesize==1.4.1 \ --hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \ --hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a # via sphinx -iniconfig==2.0.0 \ - --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ - --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 - # via pytest jinja2==3.1.4 \ --hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \ --hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d - # via - # pytest-mypy-plugins - # sphinx -jsonschema==4.23.0 \ - --hash=sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4 \ - --hash=sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566 - # via pytest-mypy-plugins -jsonschema-specifications==2023.12.1 \ - --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ - --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c - # via jsonschema + # via sphinx markupsafe==2.1.5 \ --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ @@ -303,41 +206,6 @@ markupsafe==2.1.5 \ --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 # via jinja2 -mypy==1.11.2 \ - --hash=sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36 \ - --hash=sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce \ - --hash=sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6 \ - --hash=sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b \ - --hash=sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca \ - --hash=sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24 \ - --hash=sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383 \ - --hash=sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7 \ - --hash=sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86 \ - --hash=sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d \ - --hash=sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4 \ - --hash=sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8 \ - --hash=sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987 \ - --hash=sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385 \ - --hash=sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79 \ - --hash=sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef \ - --hash=sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6 \ - --hash=sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70 \ - --hash=sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca \ - --hash=sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70 \ - --hash=sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12 \ - --hash=sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104 \ - --hash=sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a \ - --hash=sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318 \ - --hash=sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1 \ - --hash=sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b \ - --hash=sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d - # via - # phantom-types (pyproject.toml) - # pytest-mypy-plugins -mypy-extensions==1.0.0 \ - --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ - --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 - # via mypy numerary==0.4.4 \ --hash=sha256:ad955ddf7f5275f8e52f5520b2d6c654cc3bf1e3ae4bfb45664c9d51b208d0c6 # via @@ -346,20 +214,11 @@ numerary==0.4.4 \ packaging==24.1 \ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 - # via - # pytest - # pytest-mypy-plugins - # sphinx + # via sphinx phonenumbers==8.13.45 \ --hash=sha256:53679a95b6060fd5e15467759252c87933d8566d6a5be00995a579eb0e02435b \ --hash=sha256:bf05ec20fcd13f0d53e43a34ed7bd1c8be26a72b88fce4b8c64fca5b4641987a - # via - # phantom-types - # phantom-types (pyproject.toml) -pluggy==1.5.0 \ - --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ - --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 - # via pytest + # via phantom-types pydantic==1.10.18 \ --hash=sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620 \ --hash=sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82 \ @@ -404,299 +263,21 @@ pydantic==1.10.18 \ --hash=sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2 \ --hash=sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890 \ --hash=sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f - # via - # phantom-types - # phantom-types (pyproject.toml) + # via phantom-types pygments==2.18.0 \ --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \ --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a # via # furo # sphinx -pytest==8.3.3 \ - --hash=sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181 \ - --hash=sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2 - # via - # phantom-types (pyproject.toml) - # pytest-mypy-plugins -pytest-mypy-plugins==3.1.2 \ - --hash=sha256:14fa9b00e59713a6fdb88fcf04e8139b9467e117b98d61fc12038c60afb7febe \ - --hash=sha256:3478ccb68e26a159e1287c4614c60f84cd0720e3895f174365c7440498234b9f - # via phantom-types (pyproject.toml) python-dateutil==2.9.0.post0 \ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 - # via - # phantom-types - # phantom-types (pyproject.toml) -pyyaml==6.0.2 \ - --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ - --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ - --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ - --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ - --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ - --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ - --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ - --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ - --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ - --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ - --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ - --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ - --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ - --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ - --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ - --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ - --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ - --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ - --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ - --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ - --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ - --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ - --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ - --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ - --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ - --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ - --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ - --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ - --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ - --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ - --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ - --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ - --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ - --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ - --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ - --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ - --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ - --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ - --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ - --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ - --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ - --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ - --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ - --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ - --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ - --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ - --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ - --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ - --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ - --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ - --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ - --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ - --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 - # via pytest-mypy-plugins -referencing==0.35.1 \ - --hash=sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c \ - --hash=sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de - # via - # jsonschema - # jsonschema-specifications -regex==2024.9.11 \ - --hash=sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623 \ - --hash=sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199 \ - --hash=sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664 \ - --hash=sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f \ - --hash=sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca \ - --hash=sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066 \ - --hash=sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca \ - --hash=sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39 \ - --hash=sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d \ - --hash=sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6 \ - --hash=sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35 \ - --hash=sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408 \ - --hash=sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5 \ - --hash=sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a \ - --hash=sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9 \ - --hash=sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92 \ - --hash=sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766 \ - --hash=sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168 \ - --hash=sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca \ - --hash=sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508 \ - --hash=sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df \ - --hash=sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf \ - --hash=sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b \ - --hash=sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4 \ - --hash=sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268 \ - --hash=sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6 \ - --hash=sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c \ - --hash=sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62 \ - --hash=sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231 \ - --hash=sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36 \ - --hash=sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba \ - --hash=sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4 \ - --hash=sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e \ - --hash=sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822 \ - --hash=sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4 \ - --hash=sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d \ - --hash=sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71 \ - --hash=sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50 \ - --hash=sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d \ - --hash=sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad \ - --hash=sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8 \ - --hash=sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8 \ - --hash=sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8 \ - --hash=sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd \ - --hash=sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16 \ - --hash=sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664 \ - --hash=sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a \ - --hash=sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f \ - --hash=sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd \ - --hash=sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a \ - --hash=sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9 \ - --hash=sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199 \ - --hash=sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d \ - --hash=sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963 \ - --hash=sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009 \ - --hash=sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a \ - --hash=sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679 \ - --hash=sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96 \ - --hash=sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42 \ - --hash=sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8 \ - --hash=sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e \ - --hash=sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7 \ - --hash=sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8 \ - --hash=sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802 \ - --hash=sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366 \ - --hash=sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137 \ - --hash=sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784 \ - --hash=sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29 \ - --hash=sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3 \ - --hash=sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771 \ - --hash=sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60 \ - --hash=sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a \ - --hash=sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4 \ - --hash=sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0 \ - --hash=sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84 \ - --hash=sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd \ - --hash=sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1 \ - --hash=sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776 \ - --hash=sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142 \ - --hash=sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89 \ - --hash=sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c \ - --hash=sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8 \ - --hash=sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35 \ - --hash=sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a \ - --hash=sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86 \ - --hash=sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9 \ - --hash=sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64 \ - --hash=sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554 \ - --hash=sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85 \ - --hash=sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb \ - --hash=sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0 \ - --hash=sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8 \ - --hash=sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb \ - --hash=sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919 - # via pytest-mypy-plugins + # via phantom-types requests==2.32.3 \ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 # via sphinx -rpds-py==0.20.0 \ - --hash=sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c \ - --hash=sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585 \ - --hash=sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5 \ - --hash=sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6 \ - --hash=sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef \ - --hash=sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2 \ - --hash=sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29 \ - --hash=sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318 \ - --hash=sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b \ - --hash=sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399 \ - --hash=sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739 \ - --hash=sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee \ - --hash=sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174 \ - --hash=sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a \ - --hash=sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344 \ - --hash=sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2 \ - --hash=sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03 \ - --hash=sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5 \ - --hash=sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22 \ - --hash=sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e \ - --hash=sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96 \ - --hash=sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91 \ - --hash=sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752 \ - --hash=sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075 \ - --hash=sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253 \ - --hash=sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee \ - --hash=sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad \ - --hash=sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5 \ - --hash=sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce \ - --hash=sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7 \ - --hash=sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b \ - --hash=sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8 \ - --hash=sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57 \ - --hash=sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3 \ - --hash=sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec \ - --hash=sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209 \ - --hash=sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921 \ - --hash=sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045 \ - --hash=sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074 \ - --hash=sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580 \ - --hash=sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7 \ - --hash=sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5 \ - --hash=sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3 \ - --hash=sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0 \ - --hash=sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24 \ - --hash=sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139 \ - --hash=sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db \ - --hash=sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc \ - --hash=sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789 \ - --hash=sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f \ - --hash=sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2 \ - --hash=sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c \ - --hash=sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232 \ - --hash=sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6 \ - --hash=sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c \ - --hash=sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29 \ - --hash=sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489 \ - --hash=sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94 \ - --hash=sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751 \ - --hash=sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2 \ - --hash=sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda \ - --hash=sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9 \ - --hash=sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51 \ - --hash=sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c \ - --hash=sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8 \ - --hash=sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989 \ - --hash=sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511 \ - --hash=sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1 \ - --hash=sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2 \ - --hash=sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150 \ - --hash=sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c \ - --hash=sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965 \ - --hash=sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f \ - --hash=sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58 \ - --hash=sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b \ - --hash=sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f \ - --hash=sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d \ - --hash=sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821 \ - --hash=sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de \ - --hash=sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121 \ - --hash=sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855 \ - --hash=sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272 \ - --hash=sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60 \ - --hash=sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02 \ - --hash=sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1 \ - --hash=sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140 \ - --hash=sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879 \ - --hash=sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940 \ - --hash=sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364 \ - --hash=sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4 \ - --hash=sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e \ - --hash=sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420 \ - --hash=sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5 \ - --hash=sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24 \ - --hash=sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c \ - --hash=sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf \ - --hash=sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f \ - --hash=sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e \ - --hash=sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab \ - --hash=sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08 \ - --hash=sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92 \ - --hash=sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a \ - --hash=sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8 - # via - # jsonschema - # referencing six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 @@ -753,10 +334,6 @@ sphinxcontrib-serializinghtml==2.0.0 \ --hash=sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331 \ --hash=sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d # via sphinx -tomlkit==0.13.2 \ - --hash=sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde \ - --hash=sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79 - # via pytest-mypy-plugins typeguard==4.2.1 \ --hash=sha256:7da3bd46e61f03e0852f8d251dcbdc2a336aa495d7daff01e092b55327796eb8 \ --hash=sha256:c556a1b95948230510070ca53fa0341fb0964611bd05d598d87fb52115d65fee @@ -767,7 +344,6 @@ typing-extensions==4.12.2 \ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 # via - # mypy # phantom-types # phantom-types (pyproject.toml) # pydantic diff --git a/docs/conf.py b/docs/conf.py index 1070876..cf5edbf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,7 +10,7 @@ # root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath("../src")) -import phantom # noqa: E402 +import phantom current_dir = pathlib.Path(__file__).resolve().parent diff --git a/goose.yaml b/goose.yaml new file mode 100644 index 0000000..365e876 --- /dev/null +++ b/goose.yaml @@ -0,0 +1,117 @@ +environments: + - id: python + ecosystem: + language: python + version: "3.12" + dependencies: + - ruff + - pre-commit-hooks + - editorconfig-checker + - blacken-docs + - check-jsonschema + + - id: check-manifest + ecosystem: + language: python + version: "3.12" + dependencies: + - check-manifest + - setuptools==74.1.2 + - setuptools-scm==8.1.0 + - wheel==0.44.0 + + - id: node + ecosystem: + language: node + version: "21.7.1" + dependencies: + - prettier + +hooks: + - id: check-manifest + environment: check-manifest + command: check-manifest + parameterize: false + read_only: true + args: [--no-build-isolation] + + - id: prettier + environment: node + command: prettier + types: [markdown] + args: + - --write + - --ignore-unknown + - --parser=markdown + - --print-width=88 + - --prose-wrap=always + + - id: check-case-conflict + environment: python + command: check-case-conflict + read_only: true + + - id: check-merge-conflict + environment: python + command: check-merge-conflict + read_only: true + types: [text] + + - id: python-debug-statements + environment: python + command: debug-statement-hook + read_only: true + types: [ python ] + + - id: detect-private-key + environment: python + command: detect-private-key + read_only: true + types: [ text ] + + - id: end-of-file-fixer + environment: python + command: end-of-file-fixer + types: [text] + + - id: trailing-whitespace-fixer + environment: python + command: trailing-whitespace-fixer + types: [text] + + - id: editorconfig-checker + environment: python + command: ec + args: [-disable-indent-size] + types: [text] + read_only: true + + - id: ruff-check + environment: python + command: ruff + args: [check, --force-exclude, --fix] + types: [python] + + - id: ruff-format + environment: python + command: ruff + args: [format, --force-exclude] + types: [python] + + - id: blacken-docs + environment: python + command: blacken-docs + types: [markdown, python] + + - id: check-github-workflows + environment: python + command: check-jsonschema + read_only: true + args: ["--builtin-schema", "vendor.github-workflows"] + types: [yaml] + exclude: + - codecov\.yml + - goose\.yaml + - dependabot\.yaml + - \.readthedocs\.yml + - ^tests/.* diff --git a/pyproject.toml b/pyproject.toml index 8cbb8ac..6516ea4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,7 +68,14 @@ test = [ "pytest-mypy-plugins>=1.9.3", "coverage", ] +type-check = [ + "phantom-types[all]", + "mypy==1.4.1", + "pytest", + "types-python-dateutil", +] docs = [ + "phantom-types[all]", "sphinx", "sphinx-autodoc-typehints", "furo", @@ -87,8 +94,6 @@ ignore = ["src/phantom/_version.py"] generate-hashes = true strip-extras = true upgrade = true -all-extras = true -output-file = "docs-requirements.txt" unsafe-package = ["phantom-types"] diff --git a/src/phantom/__init__.py b/src/phantom/__init__.py index d39bd82..a33d6f2 100644 --- a/src/phantom/__init__.py +++ b/src/phantom/__init__.py @@ -10,12 +10,12 @@ def is_big(value: int) -> bool: return value > 5 - class Big(int, Phantom, predicate=is_big): - ... + class Big(int, Phantom, predicate=is_big): ... assert isinstance(10, Big) # this passes """ + from ._base import Phantom from ._base import PhantomBase from ._base import PhantomMeta diff --git a/src/phantom/_base.py b/src/phantom/_base.py index 361de96..20c5c56 100644 --- a/src/phantom/_base.py +++ b/src/phantom/_base.py @@ -27,8 +27,7 @@ @runtime_checkable class InstanceCheckable(Protocol): - def __instancecheck__(self, instance: object) -> bool: - ... + def __instancecheck__(self, instance: object) -> bool: ... class PhantomMeta(abc.ABCMeta): @@ -73,8 +72,7 @@ def parse(cls: type[Derived], instance: object) -> Derived: @classmethod @abc.abstractmethod - def __instancecheck__(cls, instance: object) -> bool: - ... + def __instancecheck__(cls, instance: object) -> bool: ... @classmethod def __get_validators__(cls: type[Derived]) -> Iterator[Callable[[object], Derived]]: @@ -82,12 +80,10 @@ def __get_validators__(cls: type[Derived]) -> Iterator[Callable[[object], Derive yield cls.parse -class AbstractInstanceCheck(TypeError): - ... +class AbstractInstanceCheck(TypeError): ... -class MutableType(TypeError): - ... +class MutableType(TypeError): ... class Phantom(PhantomBase, Generic[T]): diff --git a/src/phantom/_utils/misc.py b/src/phantom/_utils/misc.py index 0c3eb6f..5d12e41 100644 --- a/src/phantom/_utils/misc.py +++ b/src/phantom/_utils/misc.py @@ -18,8 +18,7 @@ from typing_extensions import get_origin -class UnresolvedClassAttribute(NotImplementedError): - ... +class UnresolvedClassAttribute(NotImplementedError): ... def resolve_class_attr( @@ -125,8 +124,7 @@ def is_not_known_mutable_type(type_: BoundType) -> TypeGuard[NotKnownMutableType return not ( any(is_subtype(type_, mutable_type) for mutable_type in mutable) or ( - is_dataclass(type_) - and not type_.__dataclass_params__.frozen # type: ignore[union-attr] + is_dataclass(type_) and not type_.__dataclass_params__.frozen # type: ignore[union-attr] ) ) diff --git a/src/phantom/_utils/types.py b/src/phantom/_utils/types.py index 7cee446..a79df9d 100644 --- a/src/phantom/_utils/types.py +++ b/src/phantom/_utils/types.py @@ -10,68 +10,58 @@ @runtime_checkable class _SupportsLt(Protocol[T_contra]): - def __lt__(self, other: T_contra) -> bool: - ... + def __lt__(self, other: T_contra) -> bool: ... class SupportsLt( _SupportsLt[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable class _SupportsLe(Protocol[T_contra]): - def __le__(self, other: T_contra) -> bool: - ... + def __le__(self, other: T_contra) -> bool: ... class SupportsLe( _SupportsLe[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable class _SupportsGt(Protocol[T_contra]): - def __gt__(self, other: T_contra) -> bool: - ... + def __gt__(self, other: T_contra) -> bool: ... class SupportsGt( _SupportsGt[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable class _SupportsGe(Protocol[T_contra]): - def __ge__(self, other: T_contra) -> bool: - ... + def __ge__(self, other: T_contra) -> bool: ... class SupportsGe( _SupportsGe[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable class _SupportsEq(Protocol): - def __eq__(self, other: object) -> bool: - ... + def __eq__(self, other: object) -> bool: ... -class SupportsEq(Protocol, metaclass=CachingProtocolMeta): - ... +class SupportsEq(Protocol, metaclass=CachingProtocolMeta): ... @runtime_checkable @@ -82,78 +72,66 @@ class _Comparable( SupportsGe[T_contra], SupportsEq, Protocol[T_contra], -): - ... +): ... class Comparable( _Comparable[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable -class _SupportsLeGe(SupportsLe[T_contra], SupportsGe[T_contra], Protocol[T_contra]): - ... +class _SupportsLeGe(SupportsLe[T_contra], SupportsGe[T_contra], Protocol[T_contra]): ... class SupportsLeGe( _SupportsLeGe[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable -class _SupportsLeGt(SupportsLe[T_contra], SupportsGt[T_contra], Protocol[T_contra]): - ... +class _SupportsLeGt(SupportsLe[T_contra], SupportsGt[T_contra], Protocol[T_contra]): ... class SupportsLeGt( _SupportsLeGt[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable -class _SupportsLtGe(SupportsLt[T_contra], SupportsGe[T_contra], Protocol[T_contra]): - ... +class _SupportsLtGe(SupportsLt[T_contra], SupportsGe[T_contra], Protocol[T_contra]): ... class SupportsLtGe( _SupportsLtGe[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... -class _SupportsLtGt(SupportsLt[T_contra], SupportsGt[T_contra], Protocol[T_contra]): - ... +class _SupportsLtGt(SupportsLt[T_contra], SupportsGt[T_contra], Protocol[T_contra]): ... class SupportsLtGt( _SupportsLtGt[T_contra], Protocol[T_contra], metaclass=CachingProtocolMeta, -): - ... +): ... @runtime_checkable class _SupportsMod(Protocol[T_contra, U_co]): - def __mod__(self, other: T_contra) -> U_co: - ... + def __mod__(self, other: T_contra) -> U_co: ... class SupportsMod( _SupportsMod[T_contra, U_co], Protocol[T_contra, U_co], metaclass=CachingProtocolMeta, -): - ... +): ... diff --git a/src/phantom/boolean.py b/src/phantom/boolean.py index 5a122af..c4ba22b 100644 --- a/src/phantom/boolean.py +++ b/src/phantom/boolean.py @@ -2,6 +2,7 @@ Types describing objects that coerce to either ``True`` or ``False`` respectively when calling ``bool()`` on them. """ + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/src/phantom/datetime.py b/src/phantom/datetime.py index 1852815..a8d39ff 100644 --- a/src/phantom/datetime.py +++ b/src/phantom/datetime.py @@ -7,6 +7,7 @@ You can install python-dateutil by using the ``[dateutil]`` or ``[all]`` extras. """ + from __future__ import annotations import datetime diff --git a/src/phantom/errors.py b/src/phantom/errors.py index 0e64e5a..71513fa 100644 --- a/src/phantom/errors.py +++ b/src/phantom/errors.py @@ -1,6 +1,4 @@ -class BoundError(TypeError): - ... +class BoundError(TypeError): ... -class MissingDependency(Exception): - ... +class MissingDependency(Exception): ... diff --git a/src/phantom/ext/phonenumbers.py b/src/phantom/ext/phonenumbers.py index 23444aa..edb7be4 100644 --- a/src/phantom/ext/phonenumbers.py +++ b/src/phantom/ext/phonenumbers.py @@ -7,6 +7,7 @@ $ python3 -m pip install phantom-types[phonenumbers] """ + from __future__ import annotations from typing import Final diff --git a/src/phantom/interval.py b/src/phantom/interval.py index e591c72..3ac58e2 100644 --- a/src/phantom/interval.py +++ b/src/phantom/interval.py @@ -6,8 +6,7 @@ .. code-block:: python - class VolumeLevel(int, Inclusive, low=0, high=100): - ... + class VolumeLevel(int, Inclusive, low=0, high=100): ... There is also a set of concrete ready-to-use interval types provided, that use predicate functions from :py:mod:`phantom.predicates.interval`. @@ -43,16 +42,14 @@ def take_portion(portion: Portion, whole: Natural) -> float: class IntervalCheck(Protocol): - def __call__(self, a: N, b: N) -> Predicate[N]: - ... + def __call__(self, a: N, b: N) -> Predicate[N]: ... inf: Final = float("inf") neg_inf: Final = float("-inf") -class _NonScalarBounds(Exception): - ... +class _NonScalarBounds(Exception): ... def _get_scalar_int_bounds( diff --git a/src/phantom/iso3166.py b/src/phantom/iso3166.py index 10e2e4e..aa344ee 100644 --- a/src/phantom/iso3166.py +++ b/src/phantom/iso3166.py @@ -8,6 +8,7 @@ countries: tuple[CountryCode] = ("SE", "DK", ParsedAlpha2.parse("FR")) """ + from __future__ import annotations from typing import Final @@ -292,8 +293,7 @@ is_alpha2_country_code = contained(ALPHA2) -class InvalidCountryCode(TypeError): - ... +class InvalidCountryCode(TypeError): ... def normalize_alpha2_country_code(country_code: str) -> ParsedAlpha2: diff --git a/src/phantom/negated.py b/src/phantom/negated.py index b6b8674..c729cb1 100644 --- a/src/phantom/negated.py +++ b/src/phantom/negated.py @@ -5,6 +5,7 @@ eliminate the easy mistake of forgetting to wrap a string value in a containing sequence. """ + from __future__ import annotations from collections.abc import Sequence diff --git a/src/phantom/re.py b/src/phantom/re.py index 3ba05f5..c1a2e68 100644 --- a/src/phantom/re.py +++ b/src/phantom/re.py @@ -3,12 +3,12 @@ .. code-block:: python - class Greeting(Match, pattern=r"^(Hi|Hello)"): - ... + class Greeting(Match, pattern=r"^(Hi|Hello)"): ... assert isinstance("Hello Jane!", Greeting) """ + from __future__ import annotations import re diff --git a/src/phantom/sized.py b/src/phantom/sized.py index 0719138..c1d4bd3 100644 --- a/src/phantom/sized.py +++ b/src/phantom/sized.py @@ -12,18 +12,17 @@ .. code-block:: python - class SpecificSize(PhantomBound[int], min=5, max=10): - ... + class SpecificSize(PhantomBound[int], min=5, max=10): ... This example creates a type that accepts strings with 255 or less characters: .. code-block:: python - class SizedStr(str, PhantomBound[str], max=255): - ... + class SizedStr(str, PhantomBound[str], max=255): ... """ + from __future__ import annotations from collections.abc import Iterable @@ -69,8 +68,7 @@ class SizedIterable(Sized, Iterable[T], Protocol[T]): """Intersection of :py:class:`typing.Sized` and :py:class:`typing.Iterable`.""" -class SizedIterablePhantomMeta(PhantomMeta, _ProtocolMeta): - ... +class SizedIterablePhantomMeta(PhantomMeta, _ProtocolMeta): ... class PhantomSized( @@ -109,12 +107,10 @@ def __schema__(cls) -> Schema: } -class UnresolvedBounds(Exception): - ... +class UnresolvedBounds(Exception): ... -class LSPViolation(Exception): - ... +class LSPViolation(Exception): ... class PhantomBound( diff --git a/tests/ext/test_hypothesis.py b/tests/ext/test_hypothesis.py index 49ecac2..00a03f7 100644 --- a/tests/ext/test_hypothesis.py +++ b/tests/ext/test_hypothesis.py @@ -40,26 +40,22 @@ from tests.types import IntIncExc -class TensFloat(float, InclusiveExclusive, low=10, high=20): - ... +class TensFloat(float, InclusiveExclusive, low=10, high=20): ... -class TensInt(int, InclusiveExclusive, low=10, high=20): - ... +class TensInt(int, InclusiveExclusive, low=10, high=20): ... class Url( FullMatch, pattern=r"https?://www\.[A-z]+\.(com|se|org)", -): - ... +): ... T = TypeVar("T", bound=object, covariant=True) -class Few(PhantomBound[T], Generic[T], min=5, max=15): - ... +class Few(PhantomBound[T], Generic[T], min=5, max=15): ... @total_ordering @@ -72,20 +68,16 @@ def __lt__(self, other): # Test can create types that don't map to a Hypothesis strategy. -class InmappableInc(int, Inclusive, low=Inf(), high=100): - ... +class InmappableInc(int, Inclusive, low=Inf(), high=100): ... -class InmappableExc(float, Exclusive, low=Inf(), high=100): - ... +class InmappableExc(float, Exclusive, low=Inf(), high=100): ... -class InmappableIncExc(int, InclusiveExclusive, low=Inf(), high=100): - ... +class InmappableIncExc(int, InclusiveExclusive, low=Inf(), high=100): ... -class InmappableExcInc(float, ExclusiveInclusive, low=Inf(), high=100): - ... +class InmappableExcInc(float, ExclusiveInclusive, low=Inf(), high=100): ... @dataclass diff --git a/tests/pydantic/test_schemas.py b/tests/pydantic/test_schemas.py index cebc39c..f4e146f 100644 --- a/tests/pydantic/test_schemas.py +++ b/tests/pydantic/test_schemas.py @@ -25,32 +25,25 @@ pytestmark = [pytest.mark.external] -class ExclusiveType(int, Exclusive, low=0, high=100): - ... +class ExclusiveType(int, Exclusive, low=0, high=100): ... -class InclusiveType(float, Inclusive, low=-1, high=1): - ... +class InclusiveType(float, Inclusive, low=-1, high=1): ... -class ExclusiveInclusiveType(float, ExclusiveInclusive, low=0, high=100): - ... +class ExclusiveInclusiveType(float, ExclusiveInclusive, low=0, high=100): ... -class InclusiveExclusiveType(float, InclusiveExclusive, low=-100, high=0): - ... +class InclusiveExclusiveType(float, InclusiveExclusive, low=-100, high=0): ... -class MatchType(Match, pattern=r"^[A-Z]{2}[0-9]{2}$"): - ... +class MatchType(Match, pattern=r"^[A-Z]{2}[0-9]{2}$"): ... -class FullMatchType(FullMatch, pattern=r"^[A-Z]{2}[0-9]{2}$"): - ... +class FullMatchType(FullMatch, pattern=r"^[A-Z]{2}[0-9]{2}$"): ... -class OddSize(PhantomSized[int], len=odd): - ... +class OddSize(PhantomSized[int], len=odd): ... class DataModel(pydantic.BaseModel): diff --git a/tests/test_base.py b/tests/test_base.py index 4a04102..d4bfcba 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -58,28 +58,22 @@ def test_raises_for_invalid_pep_604_union(self): parser("3") def test_can_parse_intersection(self): - class A: - ... + class A: ... - class B: - ... + class B: ... - class C(A, B): - ... + class C(A, B): ... parser: Parser[C] = get_bound_parser((A, B)) value = C() assert parser(value) is value def test_can_parse_union(self): - class A: - ... + class A: ... - class B: - ... + class B: ... - class C(A, B): - ... + class C(A, B): ... parser: Callable[[object], Union[A, B]] = get_bound_parser(Union[A, B]) a = A() @@ -96,69 +90,56 @@ def test_subclass_without_predicate_raises(self): UnresolvedClassAttribute, match="must define class attribute __predicate__" ): - class A(Phantom, bound=int): - ... + class A(Phantom, bound=int): ... def test_subclass_without_bound_raises(self): with pytest.raises( UnresolvedClassAttribute, match="must define class attribute __bound__" ): - class A(Phantom, predicate=positive): - ... + class A(Phantom, predicate=positive): ... def test_rejects_partial_bound(self): - class A(Phantom, predicate=positive, bound=(int, float)): - ... + class A(Phantom, predicate=positive, bound=(int, float)): ... assert not isinstance(1.0, A) def test_concrecte_subclass_of_abstract_raises_for_missing_class_attribute(self): - class A(Phantom, bound=int, abstract=True): - ... + class A(Phantom, bound=int, abstract=True): ... with pytest.raises( UnresolvedClassAttribute, match="must define class attribute __predicate__" ): - class B(A): - ... + class B(A): ... def test_can_subclass_without_predicate_if_abstract(self): - class A(Phantom, bound=int, abstract=True): - ... + class A(Phantom, bound=int, abstract=True): ... def test_can_subclass_without_bound_if_abstract(self): - class A(Phantom, predicate=positive, abstract=True): - ... + class A(Phantom, predicate=positive, abstract=True): ... def test_subclass_with_incompatible_bounds_raises(self): - class A(Phantom, bound=Union[int, float], abstract=True): - ... + class A(Phantom, bound=Union[int, float], abstract=True): ... with pytest.raises(BoundError): - class B(A, bound=str, abstract=True): - ... + class B(A, bound=str, abstract=True): ... def test_can_define_bound_implicitly(self): - class A(float, Phantom, abstract=True): - ... + class A(float, Phantom, abstract=True): ... assert A.__bound__ is float def test_can_define_bound_explicitly(self): - class A(Phantom, bound=float, abstract=True): - ... + class A(Phantom, bound=float, abstract=True): ... assert A.__bound__ is float def test_can_inherit_bound(self): - class A(Phantom, bound=float, abstract=True): - ... + class A(Phantom, bound=float, abstract=True): ... - class B(A, abstract=True): - ... + class B(A, abstract=True): ... assert B.__bound__ is float @@ -178,27 +159,22 @@ class A( bound_type, # type: ignore[misc] Phantom, abstract=True, - ): - ... + ): ... def test_can_use_frozen_dataclass_as_bound(self): @dataclass(frozen=True) - class A: - ... + class A: ... - class B(A, Phantom, predicate=boolean.true): - ... + class B(A, Phantom, predicate=boolean.true): ... def test_abstract_instance_check_raises(self): - class A(Phantom, bound=float, abstract=True): - ... + class A(Phantom, bound=float, abstract=True): ... with pytest.raises(AbstractInstanceCheck): isinstance(1, A) def test_phantom_meta_is_usable_without_phantom_base(self): - class Alt(metaclass=PhantomMeta): - ... + class Alt(metaclass=PhantomMeta): ... assert isinstance("a", Alt) is False diff --git a/tests/test_fn.py b/tests/test_fn.py index 506cfc7..2100cd4 100644 --- a/tests/test_fn.py +++ b/tests/test_fn.py @@ -23,8 +23,7 @@ class Test_name: class Nested: - def method(self): - ... + def method(self): ... @pytest.mark.parametrize( "function, expected", @@ -84,20 +83,16 @@ def test_can_compose_complex_predicate(self) -> None: assert is_valid_name("") is False -class BaseError(Exception): - ... +class BaseError(Exception): ... -class Error(BaseError): - ... +class Error(BaseError): ... -class ErrorA(Error): - ... +class ErrorA(Error): ... -class ErrorB(Error): - ... +class ErrorB(Error): ... def dummy_function(val: type[Exception]) -> None: diff --git a/tests/test_interval.py b/tests/test_interval.py index bcb07af..7a921eb 100644 --- a/tests/test_interval.py +++ b/tests/test_interval.py @@ -25,12 +25,10 @@ class TestInterval: def test_subclassing_without_check_raises(self): with pytest.raises(TypeError, match="A must define an interval check$"): - class A(Interval, abstract=False): - ... + class A(Interval, abstract=False): ... def test_parse_coerces_str(self): - class Great(int, Inclusive, low=10): - ... + class Great(int, Inclusive, low=10): ... assert Great.parse("10") == 10 @@ -41,19 +39,16 @@ class A( check=interval.exclusive, low=Decimal("1.15"), high=Decimal("2.36"), - ): - ... + ): ... assert not isinstance(2, A) assert not isinstance(1.98, A) assert isinstance(Decimal("1.98"), A) def test_subclass_inherits_bounds(self): - class A(int, Inclusive, low=-10, high=10): - ... + class A(int, Inclusive, low=-10, high=10): ... - class B(A): - ... + class B(A): ... assert B.__check__ is A.__check__ assert isinstance(-10, B) @@ -61,8 +56,7 @@ class B(A): assert not isinstance(-11, B) assert not isinstance(11, B) - class C(A, low=0): - ... + class C(A, low=0): ... assert C.__check__ is A.__check__ assert isinstance(0, C) @@ -70,8 +64,7 @@ class C(A, low=0): assert not isinstance(-1, C) assert not isinstance(11, C) - class D(A, high=0): - ... + class D(A, high=0): ... assert D.__check__ is A.__check__ assert isinstance(-10, D) @@ -189,8 +182,7 @@ def __eq__(self, other): def __lt__(self, other): return False - class Int(int, Inclusive, low=Inf(), high=100): - ... + class Int(int, Inclusive, low=Inf(), high=100): ... with pytest.raises(_NonScalarBounds): _get_scalar_int_bounds(Int) @@ -204,8 +196,7 @@ def __eq__(self, other): def __lt__(self, other): return False - class Int(int, Inclusive, low=0, high=Inf()): - ... + class Int(int, Inclusive, low=0, high=Inf()): ... with pytest.raises(_NonScalarBounds): _get_scalar_int_bounds(Int) @@ -240,8 +231,7 @@ def __eq__(self, other): def __lt__(self, other): return False - class Int(float, Inclusive, low=Inf(), high=100): - ... + class Int(float, Inclusive, low=Inf(), high=100): ... with pytest.raises(_NonScalarBounds): _get_scalar_float_bounds(Int) @@ -255,8 +245,7 @@ def __eq__(self, other): def __lt__(self, other): return False - class Int(float, Inclusive, low=0, high=Inf()): - ... + class Int(float, Inclusive, low=0, high=Inf()): ... with pytest.raises(_NonScalarBounds): _get_scalar_float_bounds(Int) diff --git a/tests/test_re.py b/tests/test_re.py index eed5c3d..6333d38 100644 --- a/tests/test_re.py +++ b/tests/test_re.py @@ -8,12 +8,10 @@ from phantom.re import Match -class MatchPatternInstance(Match, pattern=re.compile(r"abc")): - ... +class MatchPatternInstance(Match, pattern=re.compile(r"abc")): ... -class MatchPatternStr(Match, pattern=r"abc"): - ... +class MatchPatternStr(Match, pattern=r"abc"): ... parametrize_match = pytest.mark.parametrize( @@ -43,12 +41,10 @@ def test_instantiation_returns_instance(self, match_type: type[Match]): assert s is match_type.parse(s) -class FullMatchPatternInstance(FullMatch, pattern=re.compile(r"abc")): - ... +class FullMatchPatternInstance(FullMatch, pattern=re.compile(r"abc")): ... -class FullMatchStr(FullMatch, pattern=r"abc"): - ... +class FullMatchStr(FullMatch, pattern=r"abc"): ... parametrize_full_match = pytest.mark.parametrize( diff --git a/tests/test_sized.py b/tests/test_sized.py index 2864a0d..a5ef421 100644 --- a/tests/test_sized.py +++ b/tests/test_sized.py @@ -39,8 +39,7 @@ class MutableDataclass: T = TypeVar("T") -class OddSize(PhantomSized[T], Generic[T], len=odd): - ... +class OddSize(PhantomSized[T], Generic[T], len=odd): ... class TestPhantomSized: @@ -94,8 +93,7 @@ def test_subscription_returns_type_alias(self): assert arg is tuple -class Tens(PhantomBound[T], Generic[T], min=10, max=19): - ... +class Tens(PhantomBound[T], Generic[T], min=10, max=19): ... class TestPhantomBound: @@ -139,18 +137,15 @@ def test_subscription_returns_type_alias(self): def test_raises_lsp_violation_when_attempting_to_decrease_min(self): with pytest.raises(LSPViolation): - class Lower(Tens, min=9): - ... + class Lower(Tens, min=9): ... def test_raises_lsp_violation_when_attempting_to_increase_max(self): with pytest.raises(LSPViolation): - class Higher(Tens, max=20): - ... + class Higher(Tens, max=20): ... def test_can_narrow_range_in_subclass(self): - class Fewer(Tens, min=11, max=18): - ... + class Fewer(Tens, min=11, max=18): ... assert isinstance(11 * (0,), Fewer) assert isinstance(18 * (0,), Fewer) @@ -158,11 +153,9 @@ class Fewer(Tens, min=11, max=18): assert not isinstance(19 * (0,), Fewer) def test_abstract_subclass_can_omit_bounds(self): - class A(PhantomBound, abstract=True): - ... + class A(PhantomBound, abstract=True): ... - class B(A, min=10, max=20): - ... + class B(A, min=10, max=20): ... assert B.__min__ == 10 assert B.__max__ == 20 @@ -170,8 +163,7 @@ class B(A, min=10, max=20): def test_raises_unresolved_bounds_when_concrete_subclass_omits_bounds(self): with pytest.raises(UnresolvedBounds): - class A(PhantomBound): - ... + class A(PhantomBound): ... class TestNonEmpty: diff --git a/tests/test_utils.py b/tests/test_utils.py index 878e785..0343751 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -6,24 +6,19 @@ from phantom._utils.misc import is_subtype -class A: - ... +class A: ... -class B: - ... +class B: ... -class C: - ... +class C: ... -class AAndB(A, B): - ... +class AAndB(A, B): ... -class SubOfA(A): - ... +class SubOfA(A): ... class TestIsSubtype: diff --git a/tests/types.py b/tests/types.py index ccc7819..d0562ad 100644 --- a/tests/types.py +++ b/tests/types.py @@ -4,33 +4,25 @@ from phantom.interval import InclusiveExclusive -class FloatInc(float, Inclusive, low=0, high=100): - ... +class FloatInc(float, Inclusive, low=0, high=100): ... -class IntInc(int, Inclusive, low=0, high=100): - ... +class IntInc(int, Inclusive, low=0, high=100): ... -class FloatExc(float, Exclusive, low=0, high=100): - ... +class FloatExc(float, Exclusive, low=0, high=100): ... -class IntExc(int, Exclusive, low=0, high=100): - ... +class IntExc(int, Exclusive, low=0, high=100): ... -class FloatIncExc(float, InclusiveExclusive, low=0, high=100): - ... +class FloatIncExc(float, InclusiveExclusive, low=0, high=100): ... -class IntIncExc(int, InclusiveExclusive, low=0, high=100): - ... +class IntIncExc(int, InclusiveExclusive, low=0, high=100): ... -class FloatExcInc(float, ExclusiveInclusive, low=0, high=100): - ... +class FloatExcInc(float, ExclusiveInclusive, low=0, high=100): ... -class IntExcInc(int, ExclusiveInclusive, low=0, high=100): - ... +class IntExcInc(int, ExclusiveInclusive, low=0, high=100): ... diff --git a/typing-requirements.txt b/typing-requirements.txt new file mode 100644 index 0000000..f322aa1 --- /dev/null +++ b/typing-requirements.txt @@ -0,0 +1,156 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# 'make typing-requirements' +# +attrs==24.2.0 \ + --hash=sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346 \ + --hash=sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 + # via hypothesis +beartype==0.18.5 \ + --hash=sha256:264ddc2f1da9ec94ff639141fbe33d22e12a9f75aa863b83b7046ffff1381927 \ + --hash=sha256:5301a14f2a9a5540fe47ec6d34d758e9cd8331d36c4760fc7a5499ab86310089 + # via numerary +hypothesis==6.112.1 \ + --hash=sha256:93631b1498b20d2c205ed304cbd41d50e9c069d78a9c773c1324ca094c5e30ce \ + --hash=sha256:b070d7a1bb9bd84706c31885c9aeddc138e2b36a9c112a91984f49501c567856 + # via phantom-types +iniconfig==2.0.0 \ + --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ + --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + # via pytest +mypy==1.4.1 \ + --hash=sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042 \ + --hash=sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd \ + --hash=sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2 \ + --hash=sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01 \ + --hash=sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7 \ + --hash=sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3 \ + --hash=sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816 \ + --hash=sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3 \ + --hash=sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc \ + --hash=sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4 \ + --hash=sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b \ + --hash=sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8 \ + --hash=sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c \ + --hash=sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462 \ + --hash=sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7 \ + --hash=sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc \ + --hash=sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258 \ + --hash=sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b \ + --hash=sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9 \ + --hash=sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6 \ + --hash=sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f \ + --hash=sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1 \ + --hash=sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828 \ + --hash=sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878 \ + --hash=sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f \ + --hash=sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b + # via phantom-types (pyproject.toml) +mypy-extensions==1.0.0 \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 + # via mypy +numerary==0.4.4 \ + --hash=sha256:ad955ddf7f5275f8e52f5520b2d6c654cc3bf1e3ae4bfb45664c9d51b208d0c6 + # via + # phantom-types + # phantom-types (pyproject.toml) +packaging==24.1 \ + --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ + --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 + # via pytest +phonenumbers==8.13.45 \ + --hash=sha256:53679a95b6060fd5e15467759252c87933d8566d6a5be00995a579eb0e02435b \ + --hash=sha256:bf05ec20fcd13f0d53e43a34ed7bd1c8be26a72b88fce4b8c64fca5b4641987a + # via phantom-types +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + # via pytest +pydantic==1.10.18 \ + --hash=sha256:069b9c9fc645474d5ea3653788b544a9e0ccd3dca3ad8c900c4c6eac844b4620 \ + --hash=sha256:06a189b81ffc52746ec9c8c007f16e5167c8b0a696e1a726369327e3db7b2a82 \ + --hash=sha256:11d9d9b87b50338b1b7de4ebf34fd29fdb0d219dc07ade29effc74d3d2609c62 \ + --hash=sha256:15fdbe568beaca9aacfccd5ceadfb5f1a235087a127e8af5e48df9d8a45ae85c \ + --hash=sha256:19a3bd00b9dafc2cd7250d94d5b578edf7a0bd7daf102617153ff9a8fa37871c \ + --hash=sha256:23e8ec1ce4e57b4f441fc91e3c12adba023fedd06868445a5b5f1d48f0ab3682 \ + --hash=sha256:24a4a159d0f7a8e26bf6463b0d3d60871d6a52eac5bb6a07a7df85c806f4c048 \ + --hash=sha256:2ce3fcf75b2bae99aa31bd4968de0474ebe8c8258a0110903478bd83dfee4e3b \ + --hash=sha256:335a32d72c51a313b33fa3a9b0fe283503272ef6467910338e123f90925f0f03 \ + --hash=sha256:3445426da503c7e40baccefb2b2989a0c5ce6b163679dd75f55493b460f05a8f \ + --hash=sha256:34a3613c7edb8c6fa578e58e9abe3c0f5e7430e0fc34a65a415a1683b9c32d9a \ + --hash=sha256:3d5492dbf953d7d849751917e3b2433fb26010d977aa7a0765c37425a4026ff1 \ + --hash=sha256:44ae8a3e35a54d2e8fa88ed65e1b08967a9ef8c320819a969bfa09ce5528fafe \ + --hash=sha256:467a14ee2183bc9c902579bb2f04c3d3dac00eff52e252850509a562255b2a33 \ + --hash=sha256:46f379b8cb8a3585e3f61bf9ae7d606c70d133943f339d38b76e041ec234953f \ + --hash=sha256:49e26c51ca854286bffc22b69787a8d4063a62bf7d83dc21d44d2ff426108518 \ + --hash=sha256:65f7361a09b07915a98efd17fdec23103307a54db2000bb92095457ca758d485 \ + --hash=sha256:6951f3f47cb5ca4da536ab161ac0163cab31417d20c54c6de5ddcab8bc813c3f \ + --hash=sha256:72fa46abace0a7743cc697dbb830a41ee84c9db8456e8d77a46d79b537efd7ec \ + --hash=sha256:74fe19dda960b193b0eb82c1f4d2c8e5e26918d9cda858cbf3f41dd28549cb70 \ + --hash=sha256:7a4c5eec138a9b52c67f664c7d51d4c7234c5ad65dd8aacd919fb47445a62c86 \ + --hash=sha256:80b982d42515632eb51f60fa1d217dfe0729f008e81a82d1544cc392e0a50ddf \ + --hash=sha256:941a2eb0a1509bd7f31e355912eb33b698eb0051730b2eaf9e70e2e1589cae1d \ + --hash=sha256:9f463abafdc92635da4b38807f5b9972276be7c8c5121989768549fceb8d2588 \ + --hash=sha256:a00e63104346145389b8e8f500bc6a241e729feaf0559b88b8aa513dd2065481 \ + --hash=sha256:aad8771ec8dbf9139b01b56f66386537c6fe4e76c8f7a47c10261b69ad25c2c9 \ + --hash=sha256:ae6fa2008e1443c46b7b3a5eb03800121868d5ab6bc7cda20b5df3e133cde8b3 \ + --hash=sha256:b661ce52c7b5e5f600c0c3c5839e71918346af2ef20062705ae76b5c16914cab \ + --hash=sha256:b74be007703547dc52e3c37344d130a7bfacca7df112a9e5ceeb840a9ce195c7 \ + --hash=sha256:baebdff1907d1d96a139c25136a9bb7d17e118f133a76a2ef3b845e831e3403a \ + --hash=sha256:c20f682defc9ef81cd7eaa485879ab29a86a0ba58acf669a78ed868e72bb89e0 \ + --hash=sha256:c3e742f62198c9eb9201781fbebe64533a3bbf6a76a91b8d438d62b813079dbc \ + --hash=sha256:c5ae6b7c8483b1e0bf59e5f1843e4fd8fd405e11df7de217ee65b98eb5462861 \ + --hash=sha256:c6d0a9f9eccaf7f438671a64acf654ef0d045466e63f9f68a579e2383b63f357 \ + --hash=sha256:cbfbca662ed3729204090c4d09ee4beeecc1a7ecba5a159a94b5a4eb24e3759a \ + --hash=sha256:d5389eb3b48a72da28c6e061a247ab224381435256eb541e175798483368fdd3 \ + --hash=sha256:e306e280ebebc65040034bff1a0a81fd86b2f4f05daac0131f29541cafd80b80 \ + --hash=sha256:e405ffcc1254d76bb0e760db101ee8916b620893e6edfbfee563b3c6f7a67c02 \ + --hash=sha256:e9ee4e6ca1d9616797fa2e9c0bfb8815912c7d67aca96f77428e316741082a1b \ + --hash=sha256:ef0fe7ad7cbdb5f372463d42e6ed4ca9c443a52ce544472d8842a0576d830da5 \ + --hash=sha256:efbc8a7f9cb5fe26122acba1852d8dcd1e125e723727c59dcd244da7bdaa54f2 \ + --hash=sha256:fcb20d4cb355195c75000a49bb4a31d75e4295200df620f454bbc6bdf60ca890 \ + --hash=sha256:fe734914977eed33033b70bfc097e1baaffb589517863955430bf2e0846ac30f + # via phantom-types +pytest==8.3.3 \ + --hash=sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181 \ + --hash=sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2 + # via phantom-types (pyproject.toml) +python-dateutil==2.9.0.post0 \ + --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ + --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + # via phantom-types +six==1.16.0 \ + --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ + --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 + # via python-dateutil +sortedcontainers==2.4.0 \ + --hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \ + --hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 + # via hypothesis +typeguard==4.2.1 \ + --hash=sha256:7da3bd46e61f03e0852f8d251dcbdc2a336aa495d7daff01e092b55327796eb8 \ + --hash=sha256:c556a1b95948230510070ca53fa0341fb0964611bd05d598d87fb52115d65fee + # via + # phantom-types + # phantom-types (pyproject.toml) +types-python-dateutil==2.9.0.20240906 \ + --hash=sha256:27c8cc2d058ccb14946eebcaaa503088f4f6dbc4fb6093d3d456a49aef2753f6 \ + --hash=sha256:9706c3b68284c25adffc47319ecc7947e5bb86b3773f843c73906fd598bc176e + # via phantom-types (pyproject.toml) +typing-extensions==4.12.2 \ + --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ + --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 + # via + # mypy + # phantom-types + # phantom-types (pyproject.toml) + # pydantic + # typeguard + +# 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. +# phantom-types