From 159778f434e6d725bfbd3735fe6e5983c4b14a10 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Thu, 27 Mar 2025 21:38:10 -0400 Subject: [PATCH 1/9] Add docs image --- .gitignore | 1 + docs/test.png | Bin 0 -> 18310 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/test.png diff --git a/.gitignore b/.gitignore index b025b95..3dc6259 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,4 @@ dmypy.json cython_debug/ *.png +!docs/*.png diff --git a/docs/test.png b/docs/test.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfb1c071d143b225410465dc60943f18b7886bb GIT binary patch literal 18310 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 V2Gs2<;QKmI((e_-D?|-G|36J-WE21Z literal 0 HcmV?d00001 From 4b9ef7831176557b33c35dc6afd7580b76614e40 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 18:16:44 -0400 Subject: [PATCH 2/9] Add license --- LICENSE | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..409a6ec --- /dev/null +++ b/LICENSE @@ -0,0 +1,18 @@ +Copyright 2025 Thomas Harrison + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From ccd51e18d4df2e2d02bb2ef9dbec364fd836198e Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:23:39 -0400 Subject: [PATCH 3/9] Update pyproject.toml in prep for release --- poetry.lock | 716 ++----------------------------------------------- pyproject.toml | 13 +- 2 files changed, 33 insertions(+), 696 deletions(-) diff --git a/poetry.lock b/poetry.lock index 034d865..0831507 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,109 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. - -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "asttokens" -version = "3.0.0" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = ">=3.8" -files = [ - {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, - {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, -] - -[package.extras] -astroid = ["astroid (>=2,<4)"] -test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "click" @@ -111,6 +6,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -125,27 +21,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] - -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] +markers = {main = "platform_system == \"Windows\"", dev = "sys_platform == \"win32\""} [[package]] name = "coverage" @@ -153,6 +34,7 @@ version = "7.7.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "coverage-7.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:553ba93f8e3c70e1b0031e4dfea36aba4e2b51fe5770db35e99af8dc5c5a9dfe"}, {file = "coverage-7.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:44683f2556a56c9a6e673b583763096b8efbd2df022b02995609cf8e64fc8ae0"}, @@ -223,53 +105,7 @@ files = [ tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} [package.extras] -toml = ["tomli"] - -[[package]] -name = "debugpy" -version = "1.8.13" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "debugpy-1.8.13-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:06859f68e817966723ffe046b896b1bd75c665996a77313370336ee9e1de3e90"}, - {file = "debugpy-1.8.13-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c2db69fb8df3168bc857d7b7d2494fed295dfdbde9a45f27b4b152f37520"}, - {file = "debugpy-1.8.13-cp310-cp310-win32.whl", hash = "sha256:46abe0b821cad751fc1fb9f860fb2e68d75e2c5d360986d0136cd1db8cad4428"}, - {file = "debugpy-1.8.13-cp310-cp310-win_amd64.whl", hash = "sha256:dc7b77f5d32674686a5f06955e4b18c0e41fb5a605f5b33cf225790f114cfeec"}, - {file = "debugpy-1.8.13-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:eee02b2ed52a563126c97bf04194af48f2fe1f68bb522a312b05935798e922ff"}, - {file = "debugpy-1.8.13-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4caca674206e97c85c034c1efab4483f33971d4e02e73081265ecb612af65377"}, - {file = "debugpy-1.8.13-cp311-cp311-win32.whl", hash = "sha256:7d9a05efc6973b5aaf076d779cf3a6bbb1199e059a17738a2aa9d27a53bcc888"}, - {file = "debugpy-1.8.13-cp311-cp311-win_amd64.whl", hash = "sha256:62f9b4a861c256f37e163ada8cf5a81f4c8d5148fc17ee31fb46813bd658cdcc"}, - {file = "debugpy-1.8.13-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:2b8de94c5c78aa0d0ed79023eb27c7c56a64c68217d881bee2ffbcb13951d0c1"}, - {file = "debugpy-1.8.13-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887d54276cefbe7290a754424b077e41efa405a3e07122d8897de54709dbe522"}, - {file = "debugpy-1.8.13-cp312-cp312-win32.whl", hash = "sha256:3872ce5453b17837ef47fb9f3edc25085ff998ce63543f45ba7af41e7f7d370f"}, - {file = "debugpy-1.8.13-cp312-cp312-win_amd64.whl", hash = "sha256:63ca7670563c320503fea26ac688988d9d6b9c6a12abc8a8cf2e7dd8e5f6b6ea"}, - {file = "debugpy-1.8.13-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:31abc9618be4edad0b3e3a85277bc9ab51a2d9f708ead0d99ffb5bb750e18503"}, - {file = "debugpy-1.8.13-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0bd87557f97bced5513a74088af0b84982b6ccb2e254b9312e29e8a5c4270eb"}, - {file = "debugpy-1.8.13-cp313-cp313-win32.whl", hash = "sha256:5268ae7fdca75f526d04465931cb0bd24577477ff50e8bb03dab90983f4ebd02"}, - {file = "debugpy-1.8.13-cp313-cp313-win_amd64.whl", hash = "sha256:79ce4ed40966c4c1631d0131606b055a5a2f8e430e3f7bf8fd3744b09943e8e8"}, - {file = "debugpy-1.8.13-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:acf39a6e98630959763f9669feddee540745dfc45ad28dbc9bd1f9cd60639391"}, - {file = "debugpy-1.8.13-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:924464d87e7d905eb0d79fb70846558910e906d9ee309b60c4fe597a2e802590"}, - {file = "debugpy-1.8.13-cp38-cp38-win32.whl", hash = "sha256:3dae443739c6b604802da9f3e09b0f45ddf1cf23c99161f3a1a8039f61a8bb89"}, - {file = "debugpy-1.8.13-cp38-cp38-win_amd64.whl", hash = "sha256:ed93c3155fc1f888ab2b43626182174e457fc31b7781cd1845629303790b8ad1"}, - {file = "debugpy-1.8.13-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:6fab771639332bd8ceb769aacf454a30d14d7a964f2012bf9c4e04c60f16e85b"}, - {file = "debugpy-1.8.13-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32b6857f8263a969ce2ca098f228e5cc0604d277447ec05911a8c46cf3e7e307"}, - {file = "debugpy-1.8.13-cp39-cp39-win32.whl", hash = "sha256:f14d2c4efa1809da125ca62df41050d9c7cd9cb9e380a2685d1e453c4d450ccb"}, - {file = "debugpy-1.8.13-cp39-cp39-win_amd64.whl", hash = "sha256:ea869fe405880327497e6945c09365922c79d2a1eed4c3ae04d77ac7ae34b2b5"}, - {file = "debugpy-1.8.13-py2.py3-none-any.whl", hash = "sha256:d4ba115cdd0e3a70942bd562adba9ec8c651fe69ddde2298a1be296fc331906f"}, - {file = "debugpy-1.8.13.tar.gz", hash = "sha256:837e7bef95bdefba426ae38b9a94821ebdc5bea55627879cd48165c90b9e50ce"}, -] - -[[package]] -name = "decorator" -version = "5.2.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.8" -files = [ - {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, - {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, -] +toml = ["tomli ; python_full_version <= \"3.11.0a6\""] [[package]] name = "exceptiongroup" @@ -277,6 +113,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -285,234 +123,37 @@ files = [ [package.extras] test = ["pytest (>=6)"] -[[package]] -name = "executing" -version = "2.2.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -files = [ - {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, - {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] - [[package]] name = "iniconfig" version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] -[[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - -[package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "ipython" -version = "8.34.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.10" -files = [ - {file = "ipython-8.34.0-py3-none-any.whl", hash = "sha256:0419883fa46e0baa182c5d50ebb8d6b49df1889fdb70750ad6d8cfe678eda6e3"}, - {file = "ipython-8.34.0.tar.gz", hash = "sha256:c31d658e754673ecc6514583e7dda8069e47136eb62458816b7d1e6625948b5a"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" -typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} - -[package.extras] -all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing_extensions"] -kernel = ["ipykernel"] -matplotlib = ["matplotlib"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "jedi" -version = "0.19.2" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -files = [ - {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, - {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, -] - -[package.dependencies] -parso = ">=0.8.4,<0.9.0" - -[package.extras] -docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] - -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-core" -version = "5.7.2" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - [[package]] name = "packaging" version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] - -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - [[package]] name = "pillow" version = "11.1.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "pillow-11.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:e1abe69aca89514737465752b4bcaf8016de61b3be1397a8fc260ba33321b3a8"}, {file = "pillow-11.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c640e5a06869c75994624551f45e5506e4256562ead981cce820d5ab39ae2192"}, @@ -592,31 +233,16 @@ docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout", "trove-classifiers (>=2024.10.12)"] -typing = ["typing-extensions"] +typing = ["typing-extensions ; python_version < \"3.10\""] xmp = ["defusedxml"] -[[package]] -name = "platformdirs" -version = "4.3.7" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.9" -files = [ - {file = "platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94"}, - {file = "platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.14.1)"] - [[package]] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -626,85 +252,13 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "prompt-toolkit" -version = "3.0.50" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, - {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." -optional = false -python-versions = ">=3.6" -files = [ - {file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25"}, - {file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da"}, - {file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91"}, - {file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34"}, - {file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993"}, - {file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17"}, - {file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e"}, - {file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99"}, - {file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553"}, - {file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456"}, -] - -[package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - [[package]] name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -719,6 +273,7 @@ version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -741,6 +296,7 @@ version = "4.1.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, @@ -753,156 +309,13 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pywin32" -version = "310" -description = "Python for Window Extensions" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1"}, - {file = "pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d"}, - {file = "pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213"}, - {file = "pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd"}, - {file = "pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c"}, - {file = "pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582"}, - {file = "pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d"}, - {file = "pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060"}, - {file = "pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966"}, - {file = "pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab"}, - {file = "pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e"}, - {file = "pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33"}, - {file = "pywin32-310-cp38-cp38-win32.whl", hash = "sha256:0867beb8addefa2e3979d4084352e4ac6e991ca45373390775f7084cc0209b9c"}, - {file = "pywin32-310-cp38-cp38-win_amd64.whl", hash = "sha256:30f0a9b3138fb5e07eb4973b7077e1883f558e40c578c6925acc7a94c34eaa36"}, - {file = "pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a"}, - {file = "pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475"}, -] - -[[package]] -name = "pyzmq" -version = "26.3.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyzmq-26.3.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1586944f4736515af5c6d3a5b150c7e8ca2a2d6e46b23057320584d6f2438f4a"}, - {file = "pyzmq-26.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa7efc695d1fc9f72d91bf9b6c6fe2d7e1b4193836ec530a98faf7d7a7577a58"}, - {file = "pyzmq-26.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd84441e4021cec6e4dd040550386cd9c9ea1d9418ea1a8002dbb7b576026b2b"}, - {file = "pyzmq-26.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9176856f36c34a8aa5c0b35ddf52a5d5cd8abeece57c2cd904cfddae3fd9acd3"}, - {file = "pyzmq-26.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:49334faa749d55b77f084389a80654bf2e68ab5191c0235066f0140c1b670d64"}, - {file = "pyzmq-26.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fd30fc80fe96efb06bea21667c5793bbd65c0dc793187feb39b8f96990680b00"}, - {file = "pyzmq-26.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b2eddfbbfb473a62c3a251bb737a6d58d91907f6e1d95791431ebe556f47d916"}, - {file = "pyzmq-26.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:70b3acb9ad729a53d4e751dace35404a024f188aad406013454216aba5485b4e"}, - {file = "pyzmq-26.3.0-cp310-cp310-win32.whl", hash = "sha256:c1bd75d692cd7c6d862a98013bfdf06702783b75cffbf5dae06d718fecefe8f2"}, - {file = "pyzmq-26.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:d7165bcda0dbf203e5ad04d79955d223d84b2263df4db92f525ba370b03a12ab"}, - {file = "pyzmq-26.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:e34a63f71d2ecffb3c643909ad2d488251afeb5ef3635602b3448e609611a7ed"}, - {file = "pyzmq-26.3.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:2833602d9d42c94b9d0d2a44d2b382d3d3a4485be018ba19dddc401a464c617a"}, - {file = "pyzmq-26.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8270d104ec7caa0bdac246d31d48d94472033ceab5ba142881704350b28159c"}, - {file = "pyzmq-26.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c208a977843d18d3bd185f323e4eaa912eb4869cb230947dc6edd8a27a4e558a"}, - {file = "pyzmq-26.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eddc2be28a379c218e0d92e4a432805dcb0ca5870156a90b54c03cd9799f9f8a"}, - {file = "pyzmq-26.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c0b519fa2159c42272f8a244354a0e110d65175647e5185b04008ec00df9f079"}, - {file = "pyzmq-26.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1595533de3a80bf8363372c20bafa963ec4bf9f2b8f539b1d9a5017f430b84c9"}, - {file = "pyzmq-26.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bbef99eb8d18ba9a40f00e8836b8040cdcf0f2fa649684cf7a66339599919d21"}, - {file = "pyzmq-26.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:979486d444ca3c469cd1c7f6a619ce48ff08b3b595d451937db543754bfacb65"}, - {file = "pyzmq-26.3.0-cp311-cp311-win32.whl", hash = "sha256:4b127cfe10b4c56e4285b69fd4b38ea1d368099ea4273d8fb349163fce3cd598"}, - {file = "pyzmq-26.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:cf736cc1298ef15280d9fcf7a25c09b05af016656856dc6fe5626fd8912658dd"}, - {file = "pyzmq-26.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:2dc46ec09f5d36f606ac8393303149e69d17121beee13c8dac25e2a2078e31c4"}, - {file = "pyzmq-26.3.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:c80653332c6136da7f4d4e143975e74ac0fa14f851f716d90583bc19e8945cea"}, - {file = "pyzmq-26.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e317ee1d4528a03506cb1c282cd9db73660a35b3564096de37de7350e7d87a7"}, - {file = "pyzmq-26.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:943a22ebb3daacb45f76a9bcca9a7b74e7d94608c0c0505da30af900b998ca8d"}, - {file = "pyzmq-26.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fc9e71490d989144981ea21ef4fdfaa7b6aa84aff9632d91c736441ce2f6b00"}, - {file = "pyzmq-26.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e281a8071a06888575a4eb523c4deeefdcd2f5fe4a2d47e02ac8bf3a5b49f695"}, - {file = "pyzmq-26.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:be77efd735bb1064605be8dec6e721141c1421ef0b115ef54e493a64e50e9a52"}, - {file = "pyzmq-26.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a4ac2ffa34f1212dd586af90f4ba894e424f0cabb3a49cdcff944925640f6ac"}, - {file = "pyzmq-26.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ba698c7c252af83b6bba9775035263f0df5f807f0404019916d4b71af8161f66"}, - {file = "pyzmq-26.3.0-cp312-cp312-win32.whl", hash = "sha256:214038aaa88e801e54c2ef0cfdb2e6df27eb05f67b477380a452b595c5ecfa37"}, - {file = "pyzmq-26.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:bad7fe0372e505442482ca3ccbc0d6f38dae81b1650f57a0aa6bbee18e7df495"}, - {file = "pyzmq-26.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:b7b578d604e79e99aa39495becea013fd043fa9f36e4b490efa951f3d847a24d"}, - {file = "pyzmq-26.3.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:fa85953df84beb7b8b73cb3ec3f5d92b62687a09a8e71525c6734e020edf56fd"}, - {file = "pyzmq-26.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:209d09f0ab6ddbcebe64630d1e6ca940687e736f443c265ae15bc4bfad833597"}, - {file = "pyzmq-26.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d35cc1086f1d4f907df85c6cceb2245cb39a04f69c3f375993363216134d76d4"}, - {file = "pyzmq-26.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b380e9087078ba91e45fb18cdd0c25275ffaa045cf63c947be0ddae6186bc9d9"}, - {file = "pyzmq-26.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6d64e74143587efe7c9522bb74d1448128fdf9897cc9b6d8b9927490922fd558"}, - {file = "pyzmq-26.3.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:efba4f53ac7752eea6d8ca38a4ddac579e6e742fba78d1e99c12c95cd2acfc64"}, - {file = "pyzmq-26.3.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:9b0137a1c40da3b7989839f9b78a44de642cdd1ce20dcef341de174c8d04aa53"}, - {file = "pyzmq-26.3.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a995404bd3982c089e57b428c74edd5bfc3b0616b3dbcd6a8e270f1ee2110f36"}, - {file = "pyzmq-26.3.0-cp313-cp313-win32.whl", hash = "sha256:240b1634b9e530ef6a277d95cbca1a6922f44dfddc5f0a3cd6c722a8de867f14"}, - {file = "pyzmq-26.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:fe67291775ea4c2883764ba467eb389c29c308c56b86c1e19e49c9e1ed0cbeca"}, - {file = "pyzmq-26.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:73ca9ae9a9011b714cf7650450cd9c8b61a135180b708904f1f0a05004543dce"}, - {file = "pyzmq-26.3.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:fea7efbd7e49af9d7e5ed6c506dfc7de3d1a628790bd3a35fd0e3c904dc7d464"}, - {file = "pyzmq-26.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4430c7cba23bb0e2ee203eee7851c1654167d956fc6d4b3a87909ccaf3c5825"}, - {file = "pyzmq-26.3.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:016d89bee8c7d566fad75516b4e53ec7c81018c062d4c51cd061badf9539be52"}, - {file = "pyzmq-26.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04bfe59852d76d56736bfd10ac1d49d421ab8ed11030b4a0332900691507f557"}, - {file = "pyzmq-26.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:1fe05bd0d633a0f672bb28cb8b4743358d196792e1caf04973b7898a0d70b046"}, - {file = "pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:2aa1a9f236d5b835fb8642f27de95f9edcfd276c4bc1b6ffc84f27c6fb2e2981"}, - {file = "pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:21399b31753bf321043ea60c360ed5052cc7be20739785b1dff1820f819e35b3"}, - {file = "pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d015efcd96aca8882057e7e6f06224f79eecd22cad193d3e6a0a91ec67590d1f"}, - {file = "pyzmq-26.3.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:18183cc3851b995fdc7e5f03d03b8a4e1b12b0f79dff1ec1da75069af6357a05"}, - {file = "pyzmq-26.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:da87e977f92d930a3683e10ba2b38bcc59adfc25896827e0b9d78b208b7757a6"}, - {file = "pyzmq-26.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf6db401f4957afbf372a4730c6d5b2a234393af723983cbf4bcd13d54c71e1a"}, - {file = "pyzmq-26.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03caa2ffd64252122139d50ec92987f89616b9b92c9ba72920b40e92709d5e26"}, - {file = "pyzmq-26.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fbf206e5329e20937fa19bd41cf3af06d5967f8f7e86b59d783b26b40ced755c"}, - {file = "pyzmq-26.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6fb539a6382a048308b409d8c66d79bf636eda1b24f70c78f2a1fd16e92b037b"}, - {file = "pyzmq-26.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7897b8c8bbbb2bd8cad887bffcb07aede71ef1e45383bd4d6ac049bf0af312a4"}, - {file = "pyzmq-26.3.0-cp38-cp38-win32.whl", hash = "sha256:91dead2daca698ae52ce70ee2adbb94ddd9b5f96877565fd40aa4efd18ecc6a3"}, - {file = "pyzmq-26.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:8c088e009a6d6b9f563336adb906e3a8d3fd64db129acc8d8fd0e9fe22b2dac8"}, - {file = "pyzmq-26.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2eaed0d911fb3280981d5495978152fab6afd9fe217fd16f411523665089cef1"}, - {file = "pyzmq-26.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7998b60ef1c105846fb3bfca494769fde3bba6160902e7cd27a8df8257890ee9"}, - {file = "pyzmq-26.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:96c0006a8d1d00e46cb44c8e8d7316d4a232f3d8f2ed43179d4578dbcb0829b6"}, - {file = "pyzmq-26.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e17cc198dc50a25a0f245e6b1e56f692df2acec3ccae82d1f60c34bfb72bbec"}, - {file = "pyzmq-26.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:92a30840f4f2a31f7049d0a7de5fc69dd03b19bd5d8e7fed8d0bde49ce49b589"}, - {file = "pyzmq-26.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f52eba83272a26b444f4b8fc79f2e2c83f91d706d693836c9f7ccb16e6713c31"}, - {file = "pyzmq-26.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:952085a09ff32115794629ba47f8940896d7842afdef1283332109d38222479d"}, - {file = "pyzmq-26.3.0-cp39-cp39-win32.whl", hash = "sha256:0240289e33e3fbae44a5db73e54e955399179332a6b1d47c764a4983ec1524c3"}, - {file = "pyzmq-26.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b2db7c82f08b8ce44c0b9d1153ce63907491972a7581e8b6adea71817f119df8"}, - {file = "pyzmq-26.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:2d3459b6311463c96abcb97808ee0a1abb0d932833edb6aa81c30d622fd4a12d"}, - {file = "pyzmq-26.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad03f4252d9041b0635c37528dfa3f44b39f46024ae28c8567f7423676ee409b"}, - {file = "pyzmq-26.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f3dfb68cf7bf4cfdf34283a75848e077c5defa4907506327282afe92780084d"}, - {file = "pyzmq-26.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:356ec0e39c5a9cda872b65aca1fd8a5d296ffdadf8e2442b70ff32e73ef597b1"}, - {file = "pyzmq-26.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:749d671b0eec8e738bbf0b361168369d8c682b94fcd458c20741dc4d69ef5278"}, - {file = "pyzmq-26.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f950f17ae608e0786298340163cac25a4c5543ef25362dd5ddb6dcb10b547be9"}, - {file = "pyzmq-26.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b4fc9903a73c25be9d5fe45c87faababcf3879445efa16140146b08fccfac017"}, - {file = "pyzmq-26.3.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c15b69af22030960ac63567e98ad8221cddf5d720d9cf03d85021dfd452324ef"}, - {file = "pyzmq-26.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2cf9ab0dff4dbaa2e893eb608373c97eb908e53b7d9793ad00ccbd082c0ee12f"}, - {file = "pyzmq-26.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ec332675f6a138db57aad93ae6387953763f85419bdbd18e914cb279ee1c451"}, - {file = "pyzmq-26.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:eb96568a22fe070590942cd4780950e2172e00fb033a8b76e47692583b1bd97c"}, - {file = "pyzmq-26.3.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:009a38241c76184cb004c869e82a99f0aee32eda412c1eb44df5820324a01d25"}, - {file = "pyzmq-26.3.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c22a12713707467abedc6d75529dd365180c4c2a1511268972c6e1d472bd63e"}, - {file = "pyzmq-26.3.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1614fcd116275d24f2346ffca4047a741c546ad9d561cbf7813f11226ca4ed2c"}, - {file = "pyzmq-26.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e2cafe7e9c7fed690e8ecf65af119f9c482923b5075a78f6f7629c63e1b4b1d"}, - {file = "pyzmq-26.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:14e0b81753424bd374075df6cc30b87f2c99e5f022501d97eff66544ca578941"}, - {file = "pyzmq-26.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:21c6ddb98557a77cfe3366af0c5600fb222a1b2de5f90d9cd052b324e0c295e8"}, - {file = "pyzmq-26.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc81d5d60c9d40e692de14b8d884d43cf67562402b931681f0ccb3ce6b19875"}, - {file = "pyzmq-26.3.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52b064fafef772d0f5dbf52d4c39f092be7bc62d9a602fe6e82082e001326de3"}, - {file = "pyzmq-26.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b72206eb041f780451c61e1e89dbc3705f3d66aaaa14ee320d4f55864b13358a"}, - {file = "pyzmq-26.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ab78dc21c7b1e13053086bcf0b4246440b43b5409904b73bfd1156654ece8a1"}, - {file = "pyzmq-26.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0b42403ad7d1194dca9574cd3c56691c345f4601fa2d0a33434f35142baec7ac"}, - {file = "pyzmq-26.3.0.tar.gz", hash = "sha256:f1cd68b8236faab78138a8fc703f7ca0ad431b17a3fcac696358600d4e6243b3"}, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - [[package]] name = "ruff" version = "0.8.6" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "ruff-0.8.6-py3-none-linux_armv6l.whl", hash = "sha256:defed167955d42c68b407e8f2e6f56ba52520e790aba4ca707a9c88619e580e3"}, {file = "ruff-0.8.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:54799ca3d67ae5e0b7a7ac234baa657a9c1784b48ec954a094da7c206e0365b1"}, @@ -924,42 +337,14 @@ files = [ {file = "ruff-0.8.6.tar.gz", hash = "sha256:dcad24b81b62650b0eb8814f576fc65cfee8674772a6e24c9b747911801eeaa5"}, ] -[[package]] -name = "six" -version = "1.17.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, -] - -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_full_version <= \"3.11.0a6\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -995,64 +380,7 @@ files = [ {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] -[[package]] -name = "tornado" -version = "6.4.2" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false -python-versions = ">=3.8" -files = [ - {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, - {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, - {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, - {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, - {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, - {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, - {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, - {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, - {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, - {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, - {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - -[[package]] -name = "typing-extensions" -version = "4.13.0" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5"}, - {file = "typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b"}, -] - -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - [metadata] -lock-version = "2.0" -python-versions = ">=3.10,<3.14" -content-hash = "e3abc3cdca4617fd14391694eb68a959babbc79d783de703a4c0a2967f12872a" +lock-version = "2.1" +python-versions = "^3.10" +content-hash = "bdec2829e186befa0556195cacbcd40736f27e0736b142c1803d976e8d18cf66" diff --git a/pyproject.toml b/pyproject.toml index b384240..634845c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,19 @@ [tool.poetry] name = "codepic" version = "0.1.0" -description = "code picture" +description = "Capture code into a picture" authors = ["Thomas Harrison "] readme = "README.md" +license = "MIT" +homepage = "https://github.com/twh2898/codepic" +repository = "https://github.com/twh2898/codepic" +classifiers = [ + "Programming Language :: Python :: 3", + "Operating System :: POSIX :: Linux", + "License :: OSI Approved :: MIT License", +] + +packages = [{ include = "codepic", from = "src" }] [tool.poetry.dependencies] python = "^3.10" @@ -15,7 +25,6 @@ click = "^8.1.8" pytest = "^7.1.3" pytest-cov = "^4.0.0" ruff = "^0.8.4" -ipykernel = "^6.29.5" [tool.poetry.scripts] codepic = "codepic:cli" From e60e5de452c53cdb3da5c3c9fa056aed34e7dfab Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:23:48 -0400 Subject: [PATCH 4/9] Add github actions --- .github/workflows/ci.yml | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2e4c74b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,62 @@ +name: ci + +on: + push: + +jobs: + lint_test_build: + name: Lint, Test & Dev Build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: twh2898/reusable-workflows/setup_python@main + with: + python-version: "3.12" + poetry-version: "1.8.5" + + - name: Install Dependencies + run: poetry install + + - name: Lint + run: poetry run ruff check . + + - name: Lint + run: poetry run pytest tests --cov=src --cov-branch --cov-fail-under=100 + + build_release: + name: Build Release + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, 'NO RELEASE') + + needs: lint_test_build + + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + + - name: Increment Version + uses: twh2898/reusable-workflows/increment_version@main + id: version + + - name: Setup Python + uses: twh2898/reusable-workflows/setup_python@main + with: + python-version: "3.12" + poetry-version: "1.8.5" + + - name: Install Dependencies + run: poetry install + + - name: Publish Package + env: + VERSION: ${{ steps.version.outputs.version }} + PYPI_TOKEN: ${{ secrets.PYPI_KEY }} + run: | + poetry version $VERSION + poetry config pypi-token.pypi $PYPI_TOKEN + poetry publish From 69f19ebcb203f430185c2ede93edd1045dd532ac Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:24:41 -0400 Subject: [PATCH 5/9] Disable tests --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e4c74b..4472862 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,8 +23,8 @@ jobs: - name: Lint run: poetry run ruff check . - - name: Lint - run: poetry run pytest tests --cov=src --cov-branch --cov-fail-under=100 + # - name: Test + # run: poetry run pytest tests --cov=src --cov-branch --cov-fail-under=100 build_release: name: Build Release From d8b78f670a7179103995e7c07961ee5f3a38a877 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:26:02 -0400 Subject: [PATCH 6/9] Build --- .github/workflows/ci.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4472862..5c31f7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,8 +4,8 @@ on: push: jobs: - lint_test_build: - name: Lint, Test & Dev Build + lint_test: + name: Lint & Test runs-on: ubuntu-latest steps: @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, 'NO RELEASE') - needs: lint_test_build + needs: lint_test permissions: contents: write @@ -52,6 +52,10 @@ jobs: - name: Install Dependencies run: poetry install + - name: Build Release + run: | + poetry build + - name: Publish Package env: VERSION: ${{ steps.version.outputs.version }} From abca82f9b745b002d46150f5f10fc36333829fe2 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:27:45 -0400 Subject: [PATCH 7/9] Set version before build --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c31f7a..aaffd33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,15 +52,19 @@ jobs: - name: Install Dependencies run: poetry install + - name: Set version + env: + VERSION: ${{ steps.version.outputs.version }} + run: | + poetry version $VERSION + - name: Build Release run: | poetry build - name: Publish Package env: - VERSION: ${{ steps.version.outputs.version }} PYPI_TOKEN: ${{ secrets.PYPI_KEY }} run: | - poetry version $VERSION poetry config pypi-token.pypi $PYPI_TOKEN poetry publish From 3513ad874ead037acea33f185029648196bb7885 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:37:36 -0400 Subject: [PATCH 8/9] Wip create gh release --- .github/workflows/ci.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aaffd33..6334921 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,9 +62,17 @@ jobs: run: | poetry build - - name: Publish Package - env: - PYPI_TOKEN: ${{ secrets.PYPI_KEY }} - run: | - poetry config pypi-token.pypi $PYPI_TOKEN - poetry publish + - name: Create Release + uses: ncipollo/release-action@v1.14.0 + with: + artifacts: "dist/*.whl" + makeLatest: true + generateReleaseNotes: true + tag: ${{ steps.version.outputs.version }} + + # - name: Publish Package + # env: + # PYPI_TOKEN: ${{ secrets.PYPI_KEY }} + # run: | + # poetry config pypi-token.pypi $PYPI_TOKEN + # poetry publish From 09390014c6ecca72f55995c6f4c946b495bd92b0 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Fri, 28 Mar 2025 23:45:54 -0400 Subject: [PATCH 9/9] Only build for push of branch --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6334921..a2c27ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,6 +2,7 @@ name: ci on: push: + branch: jobs: lint_test: