From 102f1c4c648d6dbb8f086228dbfef94de27f5c67 Mon Sep 17 00:00:00 2001 From: jnagasawa <2007284w@gsuite.kobe-u.ac.jp> Date: Wed, 14 Jan 2026 23:21:15 +0100 Subject: [PATCH] Set up automated testing with tox and requirements, and enhance unit and integration tests for diffusion2d. --- coverage-report.pdf | Bin 0 -> 146476 bytes diffusion2d.py | 9 +- requirements.txt | 770 +++++++++++++++++++++++ tests/integration/test_diffusion2d.py | 52 +- tests/unit/test_diffusion2d_functions.py | 60 +- tox.toml | 21 + 6 files changed, 907 insertions(+), 5 deletions(-) create mode 100644 coverage-report.pdf create mode 100644 requirements.txt create mode 100644 tox.toml diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..007f42496ddef76451f4f28315f56bab5be05820 GIT binary patch literal 146476 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 '3.11' \ + --hash=sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69 \ + --hash=sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc \ + --hash=sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880 \ + --hash=sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a \ + --hash=sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8 \ + --hash=sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc \ + --hash=sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470 \ + --hash=sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5 \ + --hash=sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263 \ + --hash=sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b \ + --hash=sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5 \ + --hash=sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381 \ + --hash=sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3 \ + --hash=sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4 \ + --hash=sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e \ + --hash=sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f \ + --hash=sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772 \ + --hash=sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286 \ + --hash=sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42 \ + --hash=sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301 \ + --hash=sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77 \ + --hash=sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7 \ + --hash=sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411 \ + --hash=sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1 \ + --hash=sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9 \ + --hash=sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a \ + --hash=sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b \ + --hash=sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db \ + --hash=sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6 \ + --hash=sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620 \ + --hash=sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989 \ + --hash=sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea \ + --hash=sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67 \ + --hash=sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5 \ + --hash=sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d \ + --hash=sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36 \ + --hash=sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99 \ + --hash=sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1 \ + --hash=sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e \ + --hash=sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b \ + --hash=sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8 \ + --hash=sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d \ + --hash=sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7 \ + --hash=sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7 \ + --hash=sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339 \ + --hash=sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1 \ + --hash=sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659 \ + --hash=sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4 \ + --hash=sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f \ + --hash=sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20 \ + --hash=sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36 \ + --hash=sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb \ + --hash=sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d \ + --hash=sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8 \ + --hash=sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0 \ + --hash=sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b \ + --hash=sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7 \ + --hash=sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe \ + --hash=sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77 \ + --hash=sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497 \ + --hash=sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd \ + --hash=sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1 \ + --hash=sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216 \ + --hash=sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13 \ + --hash=sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae \ + --hash=sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae \ + --hash=sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77 \ + --hash=sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3 \ + --hash=sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f \ + --hash=sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff \ + --hash=sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9 \ + --hash=sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a + # via matplotlib +coverage==7.13.1 \ + --hash=sha256:0403f647055de2609be776965108447deb8e384fe4a553c119e3ff6bfbab4784 \ + --hash=sha256:0642eae483cc8c2902e4af7298bf886d605e80f26382124cddc3967c2a3df09e \ + --hash=sha256:0b609fc9cdbd1f02e51f67f51e5aee60a841ef58a68d00d5ee2c0faf357481a3 \ + --hash=sha256:0d2c11f3ea4db66b5cbded23b20185c35066892c67d80ec4be4bab257b9ad1e0 \ + --hash=sha256:0e42e0ec0cd3e0d851cb3c91f770c9301f48647cb2877cb78f74bdaa07639a79 \ + --hash=sha256:132718176cc723026d201e347f800cd1a9e4b62ccd3f82476950834dad501c75 \ + --hash=sha256:16cc1da46c04fb0fb128b4dc430b78fa2aba8a6c0c9f8eb391fd5103409a6ac6 \ + --hash=sha256:18be793c4c87de2965e1c0f060f03d9e5aff66cfeae8e1dbe6e5b88056ec153f \ + --hash=sha256:1a55d509a1dc5a5b708b5dad3b5334e07a16ad4c2185e27b40e4dba796ab7f88 \ + --hash=sha256:1dcb645d7e34dcbcc96cd7c132b1fc55c39263ca62eb961c064eb3928997363b \ + --hash=sha256:2016745cb3ba554469d02819d78958b571792bb68e31302610e898f80dd3a573 \ + --hash=sha256:228b90f613b25ba0019361e4ab81520b343b622fc657daf7e501c4ed6a2366c0 \ + --hash=sha256:309ef5706e95e62578cda256b97f5e097916a2c26247c287bbe74794e7150df2 \ + --hash=sha256:339dc63b3eba969067b00f41f15ad161bf2946613156fb131266d8debc8e44d0 \ + --hash=sha256:3820778ea1387c2b6a818caec01c63adc5b3750211af6447e8dcfb9b6f08dbba \ + --hash=sha256:3d42df8201e00384736f0df9be2ced39324c3907607d17d50d50116c989d84cd \ + --hash=sha256:3e7b8bd70c48ffb28461ebe092c2345536fb18bbbf19d287c8913699735f505c \ + --hash=sha256:3f2f725aa3e909b3c5fdb8192490bdd8e1495e85906af74fe6e34a2a77ba0673 \ + --hash=sha256:3fc6a169517ca0d7ca6846c3c5392ef2b9e38896f61d615cb75b9e7134d4ee1e \ + --hash=sha256:45980ea19277dc0a579e432aef6a504fe098ef3a9032ead15e446eb0f1191aee \ + --hash=sha256:4d010d080c4888371033baab27e47c9df7d6fb28d0b7b7adf85a4a49be9298b3 \ + --hash=sha256:4de84e71173d4dada2897e5a0e1b7877e5eefbfe0d6a44edee6ce31d9b8ec09e \ + --hash=sha256:549d195116a1ba1e1ae2f5ca143f9777800f6636eab917d4f02b5310d6d73461 \ + --hash=sha256:562ec27dfa3f311e0db1ba243ec6e5f6ab96b1edfcfc6cf86f28038bc4961ce6 \ + --hash=sha256:57dfc8048c72ba48a8c45e188d811e5efd7e49b387effc8fb17e97936dde5bf6 \ + --hash=sha256:5899d28b5276f536fcf840b18b61a9fce23cc3aec1d114c44c07fe94ebeaa500 \ + --hash=sha256:60cfb538fe9ef86e5b2ab0ca8fc8d62524777f6c611dcaf76dc16fbe9b8e698a \ + --hash=sha256:623dcc6d7a7ba450bbdbeedbaa0c42b329bdae16491af2282f12a7e809be7eb9 \ + --hash=sha256:67170979de0dacac3f3097d02b0ad188d8edcea44ccc44aaa0550af49150c7dc \ + --hash=sha256:6e73ebb44dca5f708dc871fe0b90cf4cff1a13f9956f747cc87b535a840386f5 \ + --hash=sha256:6f34591000f06e62085b1865c9bc5f7858df748834662a51edadfd2c3bfe0dd3 \ + --hash=sha256:724b1b270cb13ea2e6503476e34541a0b1f62280bc997eab443f87790202033d \ + --hash=sha256:75a6f4aa904301dab8022397a22c0039edc1f51e90b83dbd4464b8a38dc87842 \ + --hash=sha256:77545b5dcda13b70f872c3b5974ac64c21d05e65b1590b441c8560115dc3a0d1 \ + --hash=sha256:776483fd35b58d8afe3acbd9988d5de592ab6da2d2a865edfdbc9fdb43e7c486 \ + --hash=sha256:77cc258aeb29a3417062758975521eae60af6f79e930d6993555eeac6a8eac29 \ + --hash=sha256:794f7c05af0763b1bbd1b9e6eff0e52ad068be3b12cd96c87de037b01390c968 \ + --hash=sha256:868a2fae76dfb06e87291bcbd4dcbcc778a8500510b618d50496e520bd94d9b9 \ + --hash=sha256:8842af7f175078456b8b17f1b73a0d16a65dcbdc653ecefeb00a56b3c8c298c4 \ + --hash=sha256:8d9bc218650022a768f3775dd7fdac1886437325d8d295d923ebcfef4892ad5c \ + --hash=sha256:8f572d989142e0908e6acf57ad1b9b86989ff057c006d13b76c146ec6a20216a \ + --hash=sha256:90480b2134999301eea795b3a9dbf606c6fbab1b489150c501da84a959442465 \ + --hash=sha256:916abf1ac5cf7eb16bc540a5bf75c71c43a676f5c52fcb9fe75a2bd75fb944e8 \ + --hash=sha256:92f980729e79b5d16d221038dbf2e8f9a9136afa072f9d5d6ed4cb984b126a09 \ + --hash=sha256:933082f161bbb3e9f90d00990dc956120f608cdbcaeea15c4d897f56ef4fe416 \ + --hash=sha256:97ab3647280d458a1f9adb85244e81587505a43c0c7cff851f5116cd2814b894 \ + --hash=sha256:985b7836931d033570b94c94713c6dba5f9d3ff26045f72c3e5dbc5fe3361e5a \ + --hash=sha256:9e549d642426e3579b3f4b92d0431543b012dcb6e825c91619d4e93b7363c3f9 \ + --hash=sha256:9edd0e01a343766add6817bc448408858ba6b489039eaaa2018474e4001651a4 \ + --hash=sha256:9ee68b21909686eeb21dfcba2c3b81fee70dcf38b140dcd5aa70680995fa3aa5 \ + --hash=sha256:9f5e772ed5fef25b3de9f2008fe67b92d46831bd2bc5bdc5dd6bfd06b83b316f \ + --hash=sha256:a03a4f3a19a189919c7055098790285cc5c5b0b3976f8d227aea39dbf9f8bfdb \ + --hash=sha256:a4d240d260a1aed814790bbe1f10a5ff31ce6c21bc78f0da4a1e8268d6c80dbd \ + --hash=sha256:a5a68357f686f8c4d527a2dc04f52e669c2fc1cbde38f6f7eb6a0e58cbd17cae \ + --hash=sha256:a998cc0aeeea4c6d5622a3754da5a493055d2d95186bad877b0a34ea6e6dbe0a \ + --hash=sha256:b67e47c5595b9224599016e333f5ec25392597a89d5744658f837d204e16c63e \ + --hash=sha256:b6f3b96617e9852703f5b633ea01315ca45c77e879584f283c44127f0f1ec564 \ + --hash=sha256:b7593fe7eb5feaa3fbb461ac79aac9f9fc0387a5ca8080b0c6fe2ca27b091afd \ + --hash=sha256:bb3f6562e89bad0110afbe64e485aac2462efdce6232cdec7862a095dc3412f6 \ + --hash=sha256:bb4f8c3c9a9f34423dba193f241f617b08ffc63e27f67159f60ae6baf2dcfe0f \ + --hash=sha256:bd63e7b74661fed317212fab774e2a648bc4bb09b35f25474f8e3325d2945cd7 \ + --hash=sha256:be753b225d159feb397bd0bf91ae86f689bad0da09d3b301478cd39b878ab31a \ + --hash=sha256:bf100a3288f9bb7f919b87eb84f87101e197535b9bd0e2c2b5b3179633324fee \ + --hash=sha256:c223d078112e90dc0e5c4e35b98b9584164bea9fbbd221c0b21c5241f6d51b62 \ + --hash=sha256:c3d8c679607220979434f494b139dfb00131ebf70bb406553d69c1ff01a5c33d \ + --hash=sha256:c43257717611ff5e9a1d79dce8e47566235ebda63328718d9b65dd640bc832ef \ + --hash=sha256:c832ec92c4499ac463186af72f9ed4d8daec15499b16f0a879b0d1c8e5cf4a3b \ + --hash=sha256:c8e2706ceb622bc63bac98ebb10ef5da80ed70fbd8a7999a5076de3afaef0fb1 \ + --hash=sha256:cb237bfd0ef4d5eb6a19e29f9e528ac67ac3be932ea6b44fb6cc09b9f3ecff78 \ + --hash=sha256:ccd7a6fca48ca9c131d9b0a2972a581e28b13416fc313fb98b6d24a03ce9a398 \ + --hash=sha256:d10a2ed46386e850bb3de503a54f9fe8192e5917fcbb143bfef653a9355e9a53 \ + --hash=sha256:d1443ba9acbb593fa7c1c29e011d7c9761545fe35e7652e85ce7f51a16f7e08d \ + --hash=sha256:d2287ac9360dec3837bfdad969963a5d073a09a85d898bd86bea82aa8876ef3c \ + --hash=sha256:d3c9f051b028810f5a87c88e5d6e9af3c0ff32ef62763bf15d29f740453ca909 \ + --hash=sha256:d72140ccf8a147e94274024ff6fd8fb7811354cf7ef88b1f0a988ebaa5bc774f \ + --hash=sha256:d938b4a840fb1523b9dfbbb454f652967f18e197569c32266d4d13f37244c3d9 \ + --hash=sha256:db622b999ffe49cb891f2fff3b340cdc2f9797d01a0a202a0973ba2562501d90 \ + --hash=sha256:e09fbecc007f7b6afdfb3b07ce5bd9f8494b6856dd4f577d26c66c391b829851 \ + --hash=sha256:e1fa280b3ad78eea5be86f94f461c04943d942697e0dac889fa18fff8f5f9147 \ + --hash=sha256:e4f18eca6028ffa62adbd185a8f1e1dd242f2e68164dba5c2b74a5204850b4cf \ + --hash=sha256:e825dbb7f84dfa24663dd75835e7257f8882629fc11f03ecf77d84a75134b864 \ + --hash=sha256:eaecf47ef10c72ece9a2a92118257da87e460e113b83cc0d2905cbbe931792b4 \ + --hash=sha256:ef6688db9bf91ba111ae734ba6ef1a063304a881749726e0d3575f5c10a9facf \ + --hash=sha256:f398ba4df52d30b1763f62eed9de5620dcde96e6f491f4c62686736b155aa6e4 \ + --hash=sha256:f80e2bb21bfab56ed7405c2d79d34b5dc0bc96c2c1d2a067b643a09fb756c43a \ + --hash=sha256:f83351e0f7dcdb14d7326c3d8d8c4e915fa685cbfdc6281f9470d97a04e9dfe4 \ + --hash=sha256:f8dca5590fec7a89ed6826fce625595279e586ead52e9e958d3237821fbc750c \ + --hash=sha256:fa3edde1aa8807de1d05934982416cb3ec46d1d4d91e280bcce7cca01c507992 \ + --hash=sha256:fea07c1a39a22614acb762e3fbbb4011f65eedafcb2948feeef641ac78b4ee5c \ + --hash=sha256:ff10896fa55167371960c5908150b434b71c876dfab97b69478f22c8b445ea19 \ + --hash=sha256:ff86d4e85188bba72cfb876df3e11fa243439882c55957184af44a35bd5880b7 \ + --hash=sha256:ffed1e4980889765c84a5d1a566159e363b71d6b6fbaf0bebc9d3c30bc016766 + # via testing-python-exercise +cycler==0.12.1 \ + --hash=sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 \ + --hash=sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c + # via matplotlib +exceptiongroup==1.3.1 ; python_full_version < '3.11' \ + --hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \ + --hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598 + # via pytest +fonttools==4.61.1 \ + --hash=sha256:0de30bfe7745c0d1ffa2b0b7048fb7123ad0d71107e10ee090fa0b16b9452e87 \ + --hash=sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796 \ + --hash=sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75 \ + --hash=sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d \ + --hash=sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371 \ + --hash=sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b \ + --hash=sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b \ + --hash=sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2 \ + --hash=sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3 \ + --hash=sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9 \ + --hash=sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd \ + --hash=sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c \ + --hash=sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c \ + --hash=sha256:58b0ee0ab5b1fc9921eccfe11d1435added19d6494dde14e323f25ad2bc30c56 \ + --hash=sha256:5ce02f38a754f207f2f06557523cd39a06438ba3aafc0639c477ac409fc64e37 \ + --hash=sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0 \ + --hash=sha256:5fe9fd43882620017add5eabb781ebfbc6998ee49b35bd7f8f79af1f9f99a958 \ + --hash=sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5 \ + --hash=sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118 \ + --hash=sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69 \ + --hash=sha256:75c1a6dfac6abd407634420c93864a1e274ebc1c7531346d9254c0d8f6ca00f9 \ + --hash=sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261 \ + --hash=sha256:77efb033d8d7ff233385f30c62c7c79271c8885d5c9657d967ede124671bbdfb \ + --hash=sha256:78a7d3ab09dc47ac1a363a493e6112d8cabed7ba7caad5f54dbe2f08676d1b47 \ + --hash=sha256:7c7db70d57e5e1089a274cbb2b1fd635c9a24de809a231b154965d415d6c6d24 \ + --hash=sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c \ + --hash=sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba \ + --hash=sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c \ + --hash=sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91 \ + --hash=sha256:a13fc8aeb24bad755eea8f7f9d409438eb94e82cf86b08fe77a03fbc8f6a96b1 \ + --hash=sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19 \ + --hash=sha256:a76d4cb80f41ba94a6691264be76435e5f72f2cb3cab0b092a6212855f71c2f6 \ + --hash=sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5 \ + --hash=sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2 \ + --hash=sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d \ + --hash=sha256:b846a1fcf8beadeb9ea4f44ec5bdde393e2f1569e17d700bfc49cd69bde75881 \ + --hash=sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063 \ + --hash=sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7 \ + --hash=sha256:c6604b735bb12fef8e0efd5578c9fb5d3d8532d5001ea13a19cddf295673ee09 \ + --hash=sha256:d8db08051fc9e7d8bc622f2112511b8107d8f27cd89e2f64ec45e9825e8288da \ + --hash=sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e \ + --hash=sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e \ + --hash=sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8 \ + --hash=sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa \ + --hash=sha256:eff1ac3cc66c2ac7cda1e64b4e2f3ffef474b7335f92fc3833fc632d595fcee6 \ + --hash=sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e \ + --hash=sha256:f79b168428351d11e10c5aeb61a74e1851ec221081299f4cf56036a95431c43a \ + --hash=sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c \ + --hash=sha256:fe2efccb324948a11dd09d22136fe2ac8a97d6c1347cf0b58a911dcd529f66b7 \ + --hash=sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd + # via matplotlib +iniconfig==2.3.0 \ + --hash=sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730 \ + --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 + # via pytest +kiwisolver==1.4.9 \ + --hash=sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c \ + --hash=sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7 \ + --hash=sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21 \ + --hash=sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e \ + --hash=sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff \ + --hash=sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7 \ + --hash=sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c \ + --hash=sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26 \ + --hash=sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa \ + --hash=sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f \ + --hash=sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1 \ + --hash=sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891 \ + --hash=sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77 \ + --hash=sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543 \ + --hash=sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d \ + --hash=sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce \ + --hash=sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3 \ + --hash=sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60 \ + --hash=sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a \ + --hash=sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089 \ + --hash=sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab \ + --hash=sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78 \ + --hash=sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771 \ + --hash=sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f \ + --hash=sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b \ + --hash=sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14 \ + --hash=sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32 \ + --hash=sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527 \ + --hash=sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185 \ + --hash=sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634 \ + --hash=sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed \ + --hash=sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1 \ + --hash=sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c \ + --hash=sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11 \ + --hash=sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752 \ + --hash=sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5 \ + --hash=sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4 \ + --hash=sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58 \ + --hash=sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5 \ + --hash=sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198 \ + --hash=sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536 \ + --hash=sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134 \ + --hash=sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf \ + --hash=sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2 \ + --hash=sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2 \ + --hash=sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370 \ + --hash=sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1 \ + --hash=sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154 \ + --hash=sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b \ + --hash=sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197 \ + --hash=sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386 \ + --hash=sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a \ + --hash=sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48 \ + --hash=sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748 \ + --hash=sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c \ + --hash=sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8 \ + --hash=sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5 \ + --hash=sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999 \ + --hash=sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369 \ + --hash=sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122 \ + --hash=sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b \ + --hash=sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098 \ + --hash=sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9 \ + --hash=sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f \ + --hash=sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799 \ + --hash=sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028 \ + --hash=sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2 \ + --hash=sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525 \ + --hash=sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d \ + --hash=sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb \ + --hash=sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872 \ + --hash=sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64 \ + --hash=sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586 \ + --hash=sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf \ + --hash=sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552 \ + --hash=sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2 \ + --hash=sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415 \ + --hash=sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c \ + --hash=sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6 \ + --hash=sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64 \ + --hash=sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d \ + --hash=sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548 \ + --hash=sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07 \ + --hash=sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61 \ + --hash=sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d \ + --hash=sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771 \ + --hash=sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9 \ + --hash=sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c \ + --hash=sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3 \ + --hash=sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16 \ + --hash=sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145 \ + --hash=sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611 \ + --hash=sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2 \ + --hash=sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464 \ + --hash=sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2 \ + --hash=sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04 \ + --hash=sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54 \ + --hash=sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df \ + --hash=sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f \ + --hash=sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1 \ + --hash=sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220 + # via matplotlib +matplotlib==3.10.8 \ + --hash=sha256:00270d217d6b20d14b584c521f810d60c5c78406dc289859776550df837dcda7 \ + --hash=sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a \ + --hash=sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f \ + --hash=sha256:12d90df9183093fcd479f4172ac26b322b1248b15729cb57f42f71f24c7e37a3 \ + --hash=sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5 \ + --hash=sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9 \ + --hash=sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2 \ + --hash=sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3 \ + --hash=sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6 \ + --hash=sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f \ + --hash=sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b \ + --hash=sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8 \ + --hash=sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008 \ + --hash=sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b \ + --hash=sha256:37b3c1cc42aa184b3f738cfa18c1c1d72fd496d85467a6cf7b807936d39aa656 \ + --hash=sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958 \ + --hash=sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04 \ + --hash=sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b \ + --hash=sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6 \ + --hash=sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908 \ + --hash=sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c \ + --hash=sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1 \ + --hash=sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d \ + --hash=sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1 \ + --hash=sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c \ + --hash=sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a \ + --hash=sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce \ + --hash=sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a \ + --hash=sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160 \ + --hash=sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1 \ + --hash=sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11 \ + --hash=sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a \ + --hash=sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466 \ + --hash=sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486 \ + --hash=sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78 \ + --hash=sha256:a48f2b74020919552ea25d222d5cc6af9ca3f4eb43a93e14d068457f545c2a17 \ + --hash=sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077 \ + --hash=sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565 \ + --hash=sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f \ + --hash=sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50 \ + --hash=sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58 \ + --hash=sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2 \ + --hash=sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645 \ + --hash=sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2 \ + --hash=sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39 \ + --hash=sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf \ + --hash=sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149 \ + --hash=sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22 \ + --hash=sha256:ee40c27c795bda6a5292e9cff9890189d32f7e3a0bf04e0e3c9430c4a00c37df \ + --hash=sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4 \ + --hash=sha256:f254d118d14a7f99d616271d6c3c27922c092dac11112670b157798b89bf4933 \ + --hash=sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6 \ + --hash=sha256:f97aeb209c3d2511443f8797e3e5a569aebb040d4f8bc79aa3ee78a8fb9e3dd8 \ + --hash=sha256:f9b587c9c7274c1613a30afabf65a272114cd6cdbe67b3406f818c79d7ab2e2a \ + --hash=sha256:fb061f596dad3a0f52b60dc6a5dec4a0c300dec41e058a7efe09256188d170b7 + # via testing-python-exercise +numpy==2.2.6 ; python_full_version < '3.11' \ + --hash=sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff \ + --hash=sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47 \ + --hash=sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84 \ + --hash=sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d \ + --hash=sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6 \ + --hash=sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f \ + --hash=sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b \ + --hash=sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49 \ + --hash=sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163 \ + --hash=sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571 \ + --hash=sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42 \ + --hash=sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff \ + --hash=sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491 \ + --hash=sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4 \ + --hash=sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566 \ + --hash=sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf \ + --hash=sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40 \ + --hash=sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd \ + --hash=sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06 \ + --hash=sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282 \ + --hash=sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680 \ + --hash=sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db \ + --hash=sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3 \ + --hash=sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90 \ + --hash=sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1 \ + --hash=sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289 \ + --hash=sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab \ + --hash=sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c \ + --hash=sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d \ + --hash=sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb \ + --hash=sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d \ + --hash=sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a \ + --hash=sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf \ + --hash=sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1 \ + --hash=sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2 \ + --hash=sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a \ + --hash=sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543 \ + --hash=sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00 \ + --hash=sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c \ + --hash=sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f \ + --hash=sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd \ + --hash=sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868 \ + --hash=sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303 \ + --hash=sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83 \ + --hash=sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3 \ + --hash=sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d \ + --hash=sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87 \ + --hash=sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa \ + --hash=sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f \ + --hash=sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae \ + --hash=sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda \ + --hash=sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915 \ + --hash=sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249 \ + --hash=sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de \ + --hash=sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8 + # via + # contourpy + # matplotlib + # testing-python-exercise +numpy==2.4.1 ; python_full_version >= '3.11' \ + --hash=sha256:0093e85df2960d7e4049664b26afc58b03236e967fb942354deef3208857a04c \ + --hash=sha256:09aa8a87e45b55a1c2c205d42e2808849ece5c484b2aab11fecabec3841cafba \ + --hash=sha256:0cce2a669e3c8ba02ee563c7835f92c153cf02edff1ae05e1823f1dde21b16a5 \ + --hash=sha256:0e6e8f9d9ecf95399982019c01223dc130542960a12edfa8edd1122dfa66a8a8 \ + --hash=sha256:0f118ce6b972080ba0758c6087c3617b5ba243d806268623dc34216d69099ba0 \ + --hash=sha256:178de8f87948163d98a4c9ab5bee4ce6519ca918926ec8df195af582de28544d \ + --hash=sha256:18e14c4d09d55eef39a6ab5b08406e84bc6869c1e34eef45564804f90b7e0574 \ + --hash=sha256:2023ef86243690c2791fd6353e5b4848eedaa88ca8a2d129f462049f6d484696 \ + --hash=sha256:20d4649c773f66cc2fc36f663e091f57c3b7655f936a4c681b4250855d1da8f5 \ + --hash=sha256:2302dc0224c1cbc49bb94f7064f3f923a971bfae45c33870dcbff63a2a550505 \ + --hash=sha256:26f0bcd9c79a00e339565b303badc74d3ea2bd6d52191eeca5f95936cad107d0 \ + --hash=sha256:297c72b1b98100c2e8f873d5d35fb551fce7040ade83d67dd51d38c8d42a2162 \ + --hash=sha256:2f44de05659b67d20499cbc96d49f2650769afcb398b79b324bb6e297bfe3844 \ + --hash=sha256:2ffd257026eb1b34352e749d7cc1678b5eeec3e329ad8c9965a797e08ccba205 \ + --hash=sha256:382ad67d99ef49024f11d1ce5dcb5ad8432446e4246a4b014418ba3a1175a1f4 \ + --hash=sha256:3869ea1ee1a1edc16c29bbe3a2f2a4e515cc3a44d43903ad41e0cacdbaf733dc \ + --hash=sha256:3d1a100e48cb266090a031397863ff8a30050ceefd798f686ff92c67a486753d \ + --hash=sha256:423797bdab2eeefbe608d7c1ec7b2b4fd3c58d51460f1ee26c7500a1d9c9ee93 \ + --hash=sha256:42d7dd5fa36d16d52a84f821eb96031836fd405ee6955dd732f2023724d0aa01 \ + --hash=sha256:49e792ec351315e16da54b543db06ca8a86985ab682602d90c60ef4ff4db2a9c \ + --hash=sha256:4e53170557d37ae404bf8d542ca5b7c629d6efa1117dac6a83e394142ea0a43f \ + --hash=sha256:4f1b68ff47680c2925f8063402a693ede215f0257f02596b1318ecdfb1d79e33 \ + --hash=sha256:4f9c360ecef085e5841c539a9a12b883dff005fbd7ce46722f5e9cef52634d82 \ + --hash=sha256:529050522e983e00a6c1c6b67411083630de8b57f65e853d7b03d9281b8694d2 \ + --hash=sha256:52b5f61bdb323b566b528899cc7db2ba5d1015bda7ea811a8bcf3c89c331fa42 \ + --hash=sha256:538bf4ec353709c765ff75ae616c34d3c3dca1a68312727e8f2676ea644f8509 \ + --hash=sha256:5adf01965456a664fc727ed69cc71848f28d063217c63e1a0e200a118d5eec9a \ + --hash=sha256:5b55aa56165b17aaf15520beb9cbd33c9039810e0d9643dd4379e44294c7303e \ + --hash=sha256:5d558123217a83b2d1ba316b986e9248a1ed1971ad495963d555ccd75dcb1556 \ + --hash=sha256:5de60946f14ebe15e713a6f22850c2372fa72f4ff9a432ab44aa90edcadaa65a \ + --hash=sha256:62fea415f83ad8fdb6c20840578e5fbaf5ddd65e0ec6c3c47eda0f69da172510 \ + --hash=sha256:6436cffb4f2bf26c974344439439c95e152c9a527013f26b3577be6c2ca64295 \ + --hash=sha256:6461de5113088b399d655d45c3897fa188766415d0f568f175ab071c8873bd73 \ + --hash=sha256:69e7419c9012c4aaf695109564e3387f1259f001b4326dfa55907b098af082d3 \ + --hash=sha256:71abbea030f2cfc3092a0ff9f8c8fdefdc5e0bf7d9d9c99663538bb0ecdac0b9 \ + --hash=sha256:7211b95ca365519d3596a1d8688a95874cc94219d417504d9ecb2df99fa7bfa8 \ + --hash=sha256:727c6c3275ddefa0dc078524a85e064c057b4f4e71ca5ca29a19163c607be745 \ + --hash=sha256:79e9e06c4c2379db47f3f6fc7a8652e7498251789bf8ff5bd43bf478ef314ca2 \ + --hash=sha256:7ad270f438cbdd402c364980317fb6b117d9ec5e226fff5b4148dd9aa9fc6e02 \ + --hash=sha256:7d5d7999df434a038d75a748275cd6c0094b0ecdb0837342b332a82defc4dc4d \ + --hash=sha256:8097529164c0f3e32bb89412a0905d9100bf434d9692d9fc275e18dcf53c9344 \ + --hash=sha256:82c55962006156aeef1629b953fd359064aa47e4d82cfc8e67f0918f7da3344f \ + --hash=sha256:8361ea4220d763e54cff2fbe7d8c93526b744f7cd9ddab47afeff7e14e8503be \ + --hash=sha256:899d2c18024984814ac7e83f8f49d8e8180e2fbe1b2e252f2e7f1d06bea92425 \ + --hash=sha256:8ad35f20be147a204e28b6a0575fbf3540c5e5f802634d4258d55b1ff5facce1 \ + --hash=sha256:8f085da926c0d491ffff3096f91078cc97ea67e7e6b65e490bc8dcda65663be2 \ + --hash=sha256:9171a42fcad32dcf3fa86f0a4faa5e9f8facefdb276f54b8b390d90447cff4e2 \ + --hash=sha256:92a0e65272fd60bfa0d9278e0484c2f52fe03b97aedc02b357f33fe752c52ffb \ + --hash=sha256:941c2a93313d030f219f3a71fd3d91a728b82979a5e8034eb2e60d394a2b83f9 \ + --hash=sha256:98b35775e03ab7f868908b524fc0a84d38932d8daf7b7e1c3c3a1b6c7a2c9f15 \ + --hash=sha256:a1ceafc5042451a858231588a104093474c6a5c57dcc724841f5c888d237d690 \ + --hash=sha256:a73044b752f5d34d4232f25f18160a1cc418ea4507f5f11e299d8ac36875f8a0 \ + --hash=sha256:a7870e8c5fc11aef57d6fea4b4085e537a3a60ad2cdd14322ed531fdca68d261 \ + --hash=sha256:a92f227dbcdc9e4c3e193add1a189a9909947d4f8504c576f4a732fd0b54240a \ + --hash=sha256:ac08c63cb7779b85e9d5318e6c3518b424bc1f364ac4cb2c6136f12e5ff2dccc \ + --hash=sha256:b6bcf39112e956594b3331316d90c90c90fb961e39696bda97b89462f5f3943f \ + --hash=sha256:c0faba4a331195bfa96f93dd9dfaa10b2c7aa8cda3a02b7fd635e588fe821bf5 \ + --hash=sha256:ce9ce141a505053b3c7bce3216071f3bf5c182b8b28930f14cd24d43932cd2df \ + --hash=sha256:cf6470d91d34bf669f61d515499859fa7a4c2f7c36434afb70e82df7217933f9 \ + --hash=sha256:d3703409aac693fa82c0aee023a1ae06a6e9d065dba10f5e8e80f642f1e9d0a2 \ + --hash=sha256:d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8 \ + --hash=sha256:d3f8f0df9f4b8be57b3bf74a1d087fec68f927a2fab68231fdb442bf2c12e426 \ + --hash=sha256:d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b \ + --hash=sha256:e1a27bb1b2dee45a2a53f5ca6ff2d1a7f135287883a1689e930d44d1ff296c87 \ + --hash=sha256:e3bd2cb07841166420d2fa7146c96ce00cb3410664cbc1a6be028e456c4ee220 \ + --hash=sha256:e7b6b5e28bbd47b7532698e5db2fe1db693d84b58c254e4389d99a27bb9b8f6b \ + --hash=sha256:e867df947d427cdd7a60e3e271729090b0f0df80f5f10ab7dd436f40811699c3 \ + --hash=sha256:ea66d2b41ca4a1630aae5507ee0a71647d3124d1741980138aa8f28f44dac36e \ + --hash=sha256:edee228f76ee2dab4579fad6f51f6a305de09d444280109e0f75df247ff21501 \ + --hash=sha256:f0a90aba7d521e6954670550e561a4cb925713bd944445dbe9e729b71f6cabee \ + --hash=sha256:f93bc6892fe7b0663e5ffa83b61aab510aacffd58c16e012bb9352d489d90cb7 \ + --hash=sha256:fb1461c99de4d040666ca0444057b06541e5642f800b71c56e6ea92d6a853a0c + # via + # contourpy + # matplotlib + # testing-python-exercise +packaging==25.0 \ + --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ + --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f + # via + # matplotlib + # pytest +pillow==12.1.0 \ + --hash=sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d \ + --hash=sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc \ + --hash=sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84 \ + --hash=sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de \ + --hash=sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0 \ + --hash=sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef \ + --hash=sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4 \ + --hash=sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82 \ + --hash=sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9 \ + --hash=sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030 \ + --hash=sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0 \ + --hash=sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18 \ + --hash=sha256:21e686a21078b0f9cb8c8a961d99e6a4ddb88e0fc5ea6e130172ddddc2e5221a \ + --hash=sha256:2415373395a831f53933c23ce051021e79c8cd7979822d8cc478547a3f4da8ef \ + --hash=sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b \ + --hash=sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6 \ + --hash=sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179 \ + --hash=sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e \ + --hash=sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72 \ + --hash=sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64 \ + --hash=sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451 \ + --hash=sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd \ + --hash=sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924 \ + --hash=sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616 \ + --hash=sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a \ + --hash=sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94 \ + --hash=sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc \ + --hash=sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8 \ + --hash=sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9 \ + --hash=sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91 \ + --hash=sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a \ + --hash=sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c \ + --hash=sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670 \ + --hash=sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea \ + --hash=sha256:64efdf00c09e31efd754448a383ea241f55a994fd079866b92d2bbff598aad91 \ + --hash=sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c \ + --hash=sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc \ + --hash=sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0 \ + --hash=sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b \ + --hash=sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65 \ + --hash=sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661 \ + --hash=sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19 \ + --hash=sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1 \ + --hash=sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0 \ + --hash=sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e \ + --hash=sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75 \ + --hash=sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4 \ + --hash=sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8 \ + --hash=sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd \ + --hash=sha256:8637e29d13f478bc4f153d8daa9ffb16455f0a6cb287da1b432fdad2bfbd66c7 \ + --hash=sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61 \ + --hash=sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51 \ + --hash=sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551 \ + --hash=sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45 \ + --hash=sha256:92a7fe4225365c5e3a8e598982269c6d6698d3e783b3b1ae979e7819f9cd55c1 \ + --hash=sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644 \ + --hash=sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796 \ + --hash=sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587 \ + --hash=sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304 \ + --hash=sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b \ + --hash=sha256:a40905599d8079e09f25027423aed94f2823adaf2868940de991e53a449e14a8 \ + --hash=sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17 \ + --hash=sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171 \ + --hash=sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3 \ + --hash=sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7 \ + --hash=sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988 \ + --hash=sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a \ + --hash=sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0 \ + --hash=sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c \ + --hash=sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2 \ + --hash=sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14 \ + --hash=sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5 \ + --hash=sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a \ + --hash=sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377 \ + --hash=sha256:cad302dc10fac357d3467a74a9561c90609768a6f73a1923b0fd851b6486f8b0 \ + --hash=sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5 \ + --hash=sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b \ + --hash=sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d \ + --hash=sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac \ + --hash=sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c \ + --hash=sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554 \ + --hash=sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643 \ + --hash=sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13 \ + --hash=sha256:e75d3dba8fc1ddfec0cd752108f93b83b4f8d6ab40e524a95d35f016b9683b09 \ + --hash=sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208 \ + --hash=sha256:f10c98f49227ed8383d28174ee95155a675c4ed7f85e2e573b04414f7e371bda \ + --hash=sha256:f188028b5af6b8fb2e9a76ac0f841a575bd1bd396e46ef0840d9b88a48fdbcea \ + --hash=sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e \ + --hash=sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0 \ + --hash=sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831 \ + --hash=sha256:fb125d860738a09d363a88daa0f59c4533529a90e564785e20fe875b200b6dbd + # via matplotlib +pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 + # via pytest +pygments==2.19.2 \ + --hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \ + --hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b + # via pytest +pyparsing==3.3.1 \ + --hash=sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82 \ + --hash=sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c + # via matplotlib +pytest==9.0.2 \ + --hash=sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b \ + --hash=sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11 + # via testing-python-exercise +python-dateutil==2.9.0.post0 \ + --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ + --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + # via matplotlib +six==1.17.0 \ + --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ + --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 + # via python-dateutil +tomli==2.4.0 ; python_full_version < '3.11' \ + --hash=sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729 \ + --hash=sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b \ + --hash=sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d \ + --hash=sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df \ + --hash=sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576 \ + --hash=sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d \ + --hash=sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1 \ + --hash=sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a \ + --hash=sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e \ + --hash=sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc \ + --hash=sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702 \ + --hash=sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6 \ + --hash=sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd \ + --hash=sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4 \ + --hash=sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776 \ + --hash=sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a \ + --hash=sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66 \ + --hash=sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87 \ + --hash=sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2 \ + --hash=sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f \ + --hash=sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475 \ + --hash=sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f \ + --hash=sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95 \ + --hash=sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9 \ + --hash=sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3 \ + --hash=sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9 \ + --hash=sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76 \ + --hash=sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da \ + --hash=sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8 \ + --hash=sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51 \ + --hash=sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86 \ + --hash=sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8 \ + --hash=sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0 \ + --hash=sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b \ + --hash=sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1 \ + --hash=sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e \ + --hash=sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d \ + --hash=sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c \ + --hash=sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867 \ + --hash=sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a \ + --hash=sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c \ + --hash=sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0 \ + --hash=sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4 \ + --hash=sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614 \ + --hash=sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132 \ + --hash=sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa \ + --hash=sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087 + # via pytest +typing-extensions==4.15.0 ; python_full_version < '3.11' \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + # via exceptiongroup diff --git a/tests/integration/test_diffusion2d.py b/tests/integration/test_diffusion2d.py index fd026b4..7bc05ae 100644 --- a/tests/integration/test_diffusion2d.py +++ b/tests/integration/test_diffusion2d.py @@ -5,15 +5,63 @@ from diffusion2d import SolveDiffusion2D +import pytest +import numpy as np +from diffusion2d import SolveDiffusion2D + + def test_initialize_physical_parameters(): """ - Checks function SolveDiffusion2D.initialize_domain + Checks function SolveDiffusion2D.initialize_domain + initialize_physical_parameters """ solver = SolveDiffusion2D() + w = 10.0 + h = 10.0 + dx = 0.5 + dy = 0.5 + d = 2.0 + + # expected_dt = (0.5^2 * 0.5^2) / (2 * 2.0 * (0.5^2 + 0.5^2)) + # expected_dt = 0.0625 / (4.0 * 0.5) = 0.03125 + expected_dt = 0.03125 + + + + solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + solver.initialize_physical_parameters(d=d) + + assert solver.dt == pytest.approx(expected_dt) def test_set_initial_condition(): """ - Checks function SolveDiffusion2D.get_initial_function + Checks function SolveDiffusion2D.initialize_domain + set_initial_condition """ solver = SolveDiffusion2D() + w = 10.0 + h = 10.0 + dx = 0.5 + dy = 0.5 + T_cold = 300.0 + T_hot = 700.0 + + solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + # We call initialize_physical_parameters only to set T_cold and T_hot + solver.initialize_physical_parameters(T_cold=T_cold, T_hot=T_hot) + + u = solver.set_initial_condition() + + # Manually compute expected u for verification + nx = int(w / dx) + ny = int(h / dy) + expected_u = T_cold * np.ones((nx, ny)) + r, cx, cy = 2, 5, 5 + r2 = r ** 2 + for i in range(nx): + for j in range(ny): + p2 = (i * dx - cx) ** 2 + (j * dy - cy) ** 2 + if p2 < r2: + expected_u[i, j] = T_hot + + assert np.allclose(u, expected_u) + diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index c4277ff..64ef849 100644 --- a/tests/unit/test_diffusion2d_functions.py +++ b/tests/unit/test_diffusion2d_functions.py @@ -2,25 +2,81 @@ Tests for functions in class SolveDiffusion2D """ +import pytest +import numpy as np from diffusion2d import SolveDiffusion2D + + def test_initialize_domain(): """ Check function SolveDiffusion2D.initialize_domain """ solver = SolveDiffusion2D() + w = 20.0 + h = 10.0 + dx = 0.2 + dy = 0.2 + + expected_nx = 100 + expected_ny = 50 + + solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + + assert solver.nx == expected_nx + assert solver.ny == expected_ny def test_initialize_physical_parameters(): """ - Checks function SolveDiffusion2D.initialize_domain + Checks function SolveDiffusion2D.initialize_physical_parameters """ solver = SolveDiffusion2D() + solver.dx = 0.1 + solver.dy = 0.1 + + d = 4.0 + T_cold = 300.0 + T_hot = 700.0 + + # expected_dt = 0.1^2 * 0.1^2 / (2 * 4.0 * (0.1^2 + 0.1^2)) + # expected_dt = 0.01 * 0.01 / (8.0 * (0.01 + 0.01)) + # expected_dt = 0.0001 / (8.0 * 0.02) = 0.0001 / 0.16 = 0.000625 + expected_dt = 0.000625 + + solver.initialize_physical_parameters(d=d, T_cold=T_cold, T_hot=T_hot) + + assert solver.dt == pytest.approx(expected_dt) + def test_set_initial_condition(): """ - Checks function SolveDiffusion2D.get_initial_function + Checks function SolveDiffusion2D.set_initial_condition """ solver = SolveDiffusion2D() + solver.nx = 10 + solver.ny = 10 + solver.dx = 1.0 + solver.dy = 1.0 + solver.T_cold = 300.0 + solver.T_hot = 700.0 + + u = solver.set_initial_condition() + + + # Manual check for a few points + # r=2, cx=5, cy=5. r2=4. + # p2 = (i*dx - 5)^2 + (j*dy - 5)^2 + + # Point (5,5) should be hot + assert u[5, 5] == 700.0 + # Point (3,5) should be cold ( (3-5)^2 + (5-5)^2 = 4, which is not < 4) + assert u[3, 5] == 300.0 + # Point (4,4) should be hot ( (4-5)^2 + (4-5)^2 = 2 < 4) + assert u[4, 4] == 700.0 + + # Check shape + assert u.shape == (10, 10) + diff --git a/tox.toml b/tox.toml new file mode 100644 index 0000000..ba0325a --- /dev/null +++ b/tox.toml @@ -0,0 +1,21 @@ +requires = ["tox>=4"] +env_list = ["pytest_env", "unittest_env"] + +[env.pytest_env] +description = "Run tests using pytest" +package = "skip" +deps = ["-rrequirements.txt"] +set_env = { PYTHONPATH = ".", MPLBACKEND = "Agg" } +allowlist_externals = ["pytest"] +commands = [ + ["pytest"] +] + +[env.unittest_env] +description = "Run tests using unittest" +package = "skip" +deps = ["-rrequirements.txt"] +set_env = { PYTHONPATH = ".", MPLBACKEND = "Agg" } +commands = [ + ["python", "-m", "unittest", "discover", "tests"] +] \ No newline at end of file