diff --git a/lockfiles/pants-plugins.lock b/lockfiles/pants-plugins.lock index 138856518c..800913170f 100644 --- a/lockfiles/pants-plugins.lock +++ b/lockfiles/pants-plugins.lock @@ -9,9 +9,9 @@ // "CPython==3.11.*" // ], // "generated_with_requirements": [ +// "aiohttp", // "pantsbuild.pants.testutil==2.25.0", -// "pantsbuild.pants==2.25.0", -// "requests" +// "pantsbuild.pants==2.25.0" // ], // "manylinux": "manylinux2014", // "requirement_constraints": [], @@ -31,6 +31,139 @@ "locked_resolves": [ { "locked_requirements": [ + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", + "url": "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", + "url": "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz" + } + ], + "project_name": "aiohappyeyeballs", + "requires_dists": [], + "requires_python": ">=3.9", + "version": "2.6.1" + }, + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "61c721764e41af907c9d16b6daa05a458f066015abd35923051be8705108ed17", + "url": "https://files.pythonhosted.org/packages/a7/53/87327fe982fa310944e1450e97bf7b2a28015263771931372a1dfe682c58/aiohttp-3.11.16-cp311-cp311-musllinux_1_2_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "e3538bc9fe1b902bef51372462e3d7c96fce2b566642512138a480b7adc9d508", + "url": "https://files.pythonhosted.org/packages/1d/e2/7d92adc03e3458edd18a21da2575ab84e58f16b1672ae98529e4eeee45ab/aiohttp-3.11.16-cp311-cp311-musllinux_1_2_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "df7db76400bf46ec6a0a73192b14c8295bdb9812053f4fe53f4e789f3ea66bbb", + "url": "https://files.pythonhosted.org/packages/34/23/eedf80ec42865ea5355b46265a2433134138eff9a4fea17e1348530fa4ae/aiohttp-3.11.16-cp311-cp311-macosx_11_0_arm64.whl" + }, + { + "algorithm": "sha256", + "hash": "cc3a145479a76ad0ed646434d09216d33d08eef0d8c9a11f5ae5cdc37caa3540", + "url": "https://files.pythonhosted.org/packages/36/23/4a5b1ef6cff994936bf96d981dd817b487d9db755457a0d1c2939920d620/aiohttp-3.11.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "3ab3367bb7f61ad18793fea2ef71f2d181c528c87948638366bf1de26e239183", + "url": "https://files.pythonhosted.org/packages/3a/52/7549573cd654ad651e3c5786ec3946d8f0ee379023e22deb503ff856b16c/aiohttp-3.11.16-cp311-cp311-musllinux_1_2_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "0a2f451849e6b39e5c226803dcacfa9c7133e9825dcefd2f4e837a2ec5a3bb98", + "url": "https://files.pythonhosted.org/packages/58/28/3e1e1884070b95f1f69c473a1995852a6f8516670bb1c29d6cb2dbb73e1c/aiohttp-3.11.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "f6ddd90d9fb4b501c97a4458f1c1720e42432c26cb76d28177c5b5ad4e332601", + "url": "https://files.pythonhosted.org/packages/64/4c/ee416987b6729558f2eb1b727c60196580aafdb141e83bd78bb031d1c000/aiohttp-3.11.16-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "8df6612df74409080575dca38a5237282865408016e65636a76a2eb9348c2567", + "url": "https://files.pythonhosted.org/packages/ad/55/a032b32fa80a662d25d9eb170ed1e2c2be239304ca114ec66c89dc40f37f/aiohttp-3.11.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "8cb0688a8d81c63d716e867d59a9ccc389e97ac7037ebef904c2b89334407180", + "url": "https://files.pythonhosted.org/packages/b1/98/be30539cd84260d9f3ea1936d50445e25aa6029a4cb9707f3b64cfd710f7/aiohttp-3.11.16-cp311-cp311-macosx_10_9_universal2.whl" + }, + { + "algorithm": "sha256", + "hash": "78e6e23b954644737e385befa0deb20233e2dfddf95dd11e9db752bdd2a294d3", + "url": "https://files.pythonhosted.org/packages/b1/df/ca775605f72abbda4e4746e793c408c84373ca2c6ce7a106a09f853f1e89/aiohttp-3.11.16-cp311-cp311-musllinux_1_2_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "696ef00e8a1f0cec5e30640e64eca75d8e777933d1438f4facc9c0cdf288a810", + "url": "https://files.pythonhosted.org/packages/cc/6c/21c45b66124df5b4b0ab638271ecd8c6402b702977120cb4d5be6408e15d/aiohttp-3.11.16-cp311-cp311-musllinux_1_2_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "d007aa39a52d62373bd23428ba4a2546eed0e7643d7bf2e41ddcefd54519842c", + "url": "https://files.pythonhosted.org/packages/d0/5d/c7474b4c3069bb35276d54c82997dff4f7575e4b73f0a7b1b08a39ece1eb/aiohttp-3.11.16-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "56a3443aca82abda0e07be2e1ecb76a050714faf2be84256dae291182ba59049", + "url": "https://files.pythonhosted.org/packages/d5/54/dcd24a23c7a5a2922123e07a296a5f79ea87ce605f531be068415c326de6/aiohttp-3.11.16-cp311-cp311-musllinux_1_2_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "0ad1fb47da60ae1ddfb316f0ff16d1f3b8e844d1a1e154641928ea0583d486ed", + "url": "https://files.pythonhosted.org/packages/e6/27/d51116ce18bdfdea7a2244b55ad38d7b01a4298af55765eed7e8431f013d/aiohttp-3.11.16-cp311-cp311-macosx_10_9_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "16f8a2c9538c14a557b4d309ed4d0a7c60f0253e8ed7b6c9a2859a7582f8b1b8", + "url": "https://files.pythonhosted.org/packages/f1/d9/1c4721d143e14af753f2bf5e3b681883e1f24b592c0482df6fa6e33597fa/aiohttp-3.11.16.tar.gz" + } + ], + "project_name": "aiohttp", + "requires_dists": [ + "Brotli; platform_python_implementation == \"CPython\" and extra == \"speedups\"", + "aiodns>=3.2.0; (sys_platform == \"linux\" or sys_platform == \"darwin\") and extra == \"speedups\"", + "aiohappyeyeballs>=2.3.0", + "aiosignal>=1.1.2", + "async-timeout<6.0,>=4.0; python_version < \"3.11\"", + "attrs>=17.3.0", + "brotlicffi; platform_python_implementation != \"CPython\" and extra == \"speedups\"", + "frozenlist>=1.1.1", + "multidict<7.0,>=4.5", + "propcache>=0.2.0", + "yarl<2.0,>=1.17.0" + ], + "requires_python": ">=3.9", + "version": "3.11.16" + }, + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", + "url": "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", + "url": "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz" + } + ], + "project_name": "aiosignal", + "requires_dists": [ + "frozenlist>=1.1.0" + ], + "requires_python": ">=3.9", + "version": "1.3.2" + }, { "artifacts": [ { @@ -112,131 +245,133 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", - "url": "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl" + "hash": "fbf996a709f8da2e745ef763f482ce2d311aa817d287593a5b990d6d6e4f0443", + "url": "https://files.pythonhosted.org/packages/52/93/342cc62a70ab727e093ed98e02a725d85b746345f05d2b5e5034649f4ec8/chevron-0.14.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", - "url": "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz" + "hash": "87613aafdf6d77b6a90ff073165a61ae5086e21ad49057aa0e53681601800ebf", + "url": "https://files.pythonhosted.org/packages/15/1f/ca74b65b19798895d63a6e92874162f44233467c9e7c1ed8afd19016ebe9/chevron-0.14.0.tar.gz" } ], - "project_name": "certifi", + "project_name": "chevron", "requires_dists": [], - "requires_python": ">=3.6", - "version": "2025.1.31" + "requires_python": null, + "version": "0.14.0" }, { "artifacts": [ { "algorithm": "sha256", - "hash": "d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", - "url": "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl" + "hash": "8408e52656455977053871990bd25824d85803b9417aa348f10ba29ef0c751f7", + "url": "https://files.pythonhosted.org/packages/31/91/6630ebd169ca170634ca8a10dfcc5f5c11b0621672d4c2c9e40381c6d81a/fasteners-0.16.3-py2.py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", - "url": "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz" + "hash": "b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de", + "url": "https://files.pythonhosted.org/packages/28/e4/2888d41cdbd405828ccdb9a8536c5919939c2f4c6ab9b2ba63e9bd2570d5/fasteners-0.16.3.tar.gz" + } + ], + "project_name": "fasteners", + "requires_dists": [ + "monotonic>=0.1; python_version < \"3.4\"", + "six" + ], + "requires_python": null, + "version": "0.16.3" + }, + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", + "url": "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", - "url": "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl" + "hash": "fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", + "url": "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl" }, { "algorithm": "sha256", - "hash": "234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", - "url": "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + "hash": "7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", + "url": "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl" }, { "algorithm": "sha256", - "hash": "237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", - "url": "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl" + "hash": "49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", + "url": "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl" }, { "algorithm": "sha256", - "hash": "c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", - "url": "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl" + "hash": "ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", + "url": "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl" }, { "algorithm": "sha256", - "hash": "f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", - "url": "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + "hash": "118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", + "url": "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", - "url": "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl" + "hash": "8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", + "url": "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl" }, { "algorithm": "sha256", - "hash": "28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", - "url": "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + "hash": "e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", + "url": "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl" }, { "algorithm": "sha256", - "hash": "09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", - "url": "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl" + "hash": "b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", + "url": "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" }, { "algorithm": "sha256", - "hash": "fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", - "url": "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + "hash": "9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", + "url": "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl" }, { "algorithm": "sha256", - "hash": "5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", - "url": "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl" + "hash": "62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", + "url": "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" }, { "algorithm": "sha256", - "hash": "eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", - "url": "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" - } - ], - "project_name": "charset-normalizer", - "requires_dists": [], - "requires_python": ">=3.7", - "version": "3.4.1" - }, - { - "artifacts": [ + "hash": "8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", + "url": "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl" + }, { "algorithm": "sha256", - "hash": "fbf996a709f8da2e745ef763f482ce2d311aa817d287593a5b990d6d6e4f0443", - "url": "https://files.pythonhosted.org/packages/52/93/342cc62a70ab727e093ed98e02a725d85b746345f05d2b5e5034649f4ec8/chevron-0.14.0-py3-none-any.whl" + "hash": "716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", + "url": "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" }, { "algorithm": "sha256", - "hash": "87613aafdf6d77b6a90ff073165a61ae5086e21ad49057aa0e53681601800ebf", - "url": "https://files.pythonhosted.org/packages/15/1f/ca74b65b19798895d63a6e92874162f44233467c9e7c1ed8afd19016ebe9/chevron-0.14.0.tar.gz" - } - ], - "project_name": "chevron", - "requires_dists": [], - "requires_python": null, - "version": "0.14.0" - }, - { - "artifacts": [ + "hash": "1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", + "url": "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + }, { "algorithm": "sha256", - "hash": "8408e52656455977053871990bd25824d85803b9417aa348f10ba29ef0c751f7", - "url": "https://files.pythonhosted.org/packages/31/91/6630ebd169ca170634ca8a10dfcc5f5c11b0621672d4c2c9e40381c6d81a/fasteners-0.16.3-py2.py3-none-any.whl" + "hash": "54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", + "url": "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl" }, { "algorithm": "sha256", - "hash": "b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de", - "url": "https://files.pythonhosted.org/packages/28/e4/2888d41cdbd405828ccdb9a8536c5919939c2f4c6ab9b2ba63e9bd2570d5/fasteners-0.16.3.tar.gz" + "hash": "431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", + "url": "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", + "url": "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz" } ], - "project_name": "fasteners", - "requires_dists": [ - "monotonic>=0.1; python_version < \"3.4\"", - "six" - ], - "requires_python": null, - "version": "0.16.3" + "project_name": "frozenlist", + "requires_dists": [], + "requires_python": ">=3.9", + "version": "1.6.0" }, { "artifacts": [ @@ -397,6 +532,101 @@ "requires_python": ">=3.9", "version": "1.4.0" }, + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", + "url": "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", + "url": "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", + "url": "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl" + }, + { + "algorithm": "sha256", + "hash": "30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", + "url": "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", + "url": "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", + "url": "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", + "url": "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", + "url": "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", + "url": "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", + "url": "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", + "url": "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", + "url": "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", + "url": "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", + "url": "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", + "url": "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz" + }, + { + "algorithm": "sha256", + "hash": "fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", + "url": "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl" + }, + { + "algorithm": "sha256", + "hash": "2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", + "url": "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + } + ], + "project_name": "multidict", + "requires_dists": [ + "typing-extensions>=4.1.0; python_version < \"3.11\"" + ], + "requires_python": ">=3.9", + "version": "6.4.3" + }, { "artifacts": [ { @@ -524,6 +754,94 @@ "requires_python": ">=3.8", "version": "1.5.0" }, + { + "artifacts": [ + { + "algorithm": "sha256", + "hash": "9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", + "url": "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", + "url": "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", + "url": "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz" + }, + { + "algorithm": "sha256", + "hash": "f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", + "url": "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", + "url": "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", + "url": "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", + "url": "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", + "url": "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl" + }, + { + "algorithm": "sha256", + "hash": "61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", + "url": "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", + "url": "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", + "url": "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", + "url": "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", + "url": "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl" + }, + { + "algorithm": "sha256", + "hash": "5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", + "url": "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", + "url": "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", + "url": "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + } + ], + "project_name": "propcache", + "requires_dists": [], + "requires_python": ">=3.9", + "version": "0.3.1" + }, { "artifacts": [ { @@ -585,13 +903,13 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", - "url": "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl" + "hash": "a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", + "url": "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", - "url": "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz" + "hash": "b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", + "url": "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz" } ], "project_name": "pyparsing", @@ -600,7 +918,7 @@ "railroad-diagrams; extra == \"diagrams\"" ], "requires_python": ">=3.9", - "version": "3.2.1" + "version": "3.2.3" }, { "artifacts": [ @@ -711,31 +1029,6 @@ "requires_python": ">=3.8", "version": "6.0.2" }, - { - "artifacts": [ - { - "algorithm": "sha256", - "hash": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", - "url": "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" - }, - { - "algorithm": "sha256", - "hash": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", - "url": "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" - } - ], - "project_name": "requests", - "requires_dists": [ - "PySocks!=1.5.7,>=1.5.6; extra == \"socks\"", - "certifi>=2017.4.17", - "chardet<6,>=3.0.2; extra == \"use-chardet-on-py3\"", - "charset-normalizer<4,>=2", - "idna<4,>=2.5", - "urllib3<3,>=1.21.1" - ], - "requires_python": ">=3.8", - "version": "2.32.3" - }, { "artifacts": [ { @@ -1016,19 +1309,19 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", - "url": "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl" + "hash": "a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", + "url": "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl" }, { "algorithm": "sha256", - "hash": "1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", - "url": "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz" + "hash": "e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", + "url": "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz" } ], "project_name": "typing-extensions", "requires_dists": [], "requires_python": ">=3.8", - "version": "4.12.2" + "version": "4.13.2" }, { "artifacts": [ @@ -1087,25 +1380,98 @@ "artifacts": [ { "algorithm": "sha256", - "hash": "1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", - "url": "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl" + "hash": "5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", + "url": "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl" + }, + { + "algorithm": "sha256", + "hash": "86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", + "url": "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", + "url": "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", + "url": "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl" + }, + { + "algorithm": "sha256", + "hash": "ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", + "url": "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl" + }, + { + "algorithm": "sha256", + "hash": "6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", + "url": "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", + "url": "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + }, + { + "algorithm": "sha256", + "hash": "fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", + "url": "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl" + }, + { + "algorithm": "sha256", + "hash": "686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", + "url": "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz" + }, + { + "algorithm": "sha256", + "hash": "b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", + "url": "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl" + }, + { + "algorithm": "sha256", + "hash": "40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", + "url": "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", + "url": "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", + "url": "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl" + }, + { + "algorithm": "sha256", + "hash": "634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", + "url": "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl" + }, + { + "algorithm": "sha256", + "hash": "eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", + "url": "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl" + }, + { + "algorithm": "sha256", + "hash": "c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", + "url": "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl" }, { "algorithm": "sha256", - "hash": "f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", - "url": "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz" + "hash": "c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", + "url": "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" } ], - "project_name": "urllib3", + "project_name": "yarl", "requires_dists": [ - "brotli>=1.0.9; platform_python_implementation == \"CPython\" and extra == \"brotli\"", - "brotlicffi>=0.8.0; platform_python_implementation != \"CPython\" and extra == \"brotli\"", - "h2<5,>=4; extra == \"h2\"", - "pysocks!=1.5.7,<2.0,>=1.5.6; extra == \"socks\"", - "zstandard>=0.18.0; extra == \"zstd\"" + "idna>=2.0", + "multidict>=4.0", + "propcache>=0.2.1" ], "requires_python": ">=3.9", - "version": "2.3.0" + "version": "1.20.0" } ], "platform_tag": null @@ -1119,9 +1485,9 @@ "pip_version": "24.2", "prefer_older_binary": false, "requirements": [ + "aiohttp", "pantsbuild.pants.testutil==2.25.0", - "pantsbuild.pants==2.25.0", - "requests" + "pantsbuild.pants==2.25.0" ], "requires_python": [ "==3.11.*" diff --git a/packaging/BUILD b/packaging/BUILD index 903ffa954b..c726b1543d 100644 --- a/packaging/BUILD +++ b/packaging/BUILD @@ -71,6 +71,75 @@ nfpm_deb_package( }, section="python", priority="optional", + # package relationships + predepends=[ + # dpkg 1.18 is good enough feature-wise (trigger --await) + "dpkg (>= 1.19.7)", # 1.19.7 = ubuntu focal; 1.19.8 = debian buster + # deb/scripts/pre-install.sh deps: + "adduser", + ], + depends=[ + # was in depends + "sudo", + # no need to specify what is already in pre-depends (only pre-install script uses adduser) + #"adduser", + "libssl-dev", + "libffi-dev", + "git", + "libpam0g", + "openssh-server", + "openssh-client", + "bash", + "netbase", + + # "${Depends}", + "python3-distutils", + "python3-dev", + # We use nFPM, not debhelpers, so these do not make sense: + # "${shlibs:Depends}", # We explicitly disabled the analogous RPM feature + # "libc6 (>= 2.29)", + # "libexpat1 (>= 2.1~beta3)", + # "libgcc-s1 (>= 4.2)", + # "libldap-2.4-2 (>= 2.4.11)", + # "libstdc++6 (>= 5.2)", + # "zlib1g (>= 1:1.2.0)", + # "${misc:Depends}", + + # for virtualenv(s) + "python3 (>= 3.8)", # Moved from pre-depends as we no longer use dh-virtualenv. + "python3-distutils", + "python3-dev", + "libssl-dev", + "libffi-dev", + # for auth + "libpam0g", # st2-auth-backend-pam + # "libldap-dev", # is this needed? + # for packs; actions; utils + "bash", + "git", + "sudo", + "netbase", + "openssh-server", + "openssh-client", + # "dnsutils", # for linux.dig action + # deb/scripts/{post-install.sh,pre-remove.sh} deps: + # cat + # tar (makeself deps?) + # systemd + + # we install these on github + "libldap2-dev", # this is in the auto detected shlibs:Depends + "libsasl2-dev", + "libssl-dev", # listed above + "libyaml-dev", + # "ldap-utils", # probably not + + # pants --py311 export --resolve=st2 + # + ], + conflicts=[ + "st2common", + ], **_common_pkg_metadata, **_distro("focal"), ) @@ -104,6 +173,78 @@ nfpm_rpm_package( packager=_maintainer, # group="System/Management", # was only useful for EL 5 and earlier compression="zstd:best", # xz and lzma are ~3x slower than gzip or zstd + # package relationships + depends=[ # aka Requires + "openssl-devel", + "libffi-devel", + "git", + "pam", + "openssh-server", + "openssh-clients", + "bash", + "setup", + # TODO: parametrize + "python3-devel", # EL 8 + "python38-devel", # EL 9 + # These are in the native built rpms (this list is deduplicated) + # "/bin/bash", + # "/bin/sh", + # "/opt/stackstorm/st2/bin/python", + # "/usr/bin/env", + # "config(st2) = 3.9dev-80", # provided by this package + # "ld-linux-x86-64.so.2()(64bit)", + # "ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)", + # "libc.so.6()(64bit)", + # "libc.so.6(GLIBC_2.12)(64bit)", + # "libc.so.6(GLIBC_2.14)(64bit)", + # "libc.so.6(GLIBC_2.17)(64bit)", + # "libc.so.6(GLIBC_2.18)(64bit)", + # "libc.so.6(GLIBC_2.2.5)(64bit)", + # "libc.so.6(GLIBC_2.25)(64bit)", + # "libc.so.6(GLIBC_2.28)(64bit)", + # "libc.so.6(GLIBC_2.3)(64bit)", + # "libc.so.6(GLIBC_2.3.4)(64bit)", + # "libc.so.6(GLIBC_2.4)(64bit)", + # "libc.so.6(GLIBC_2.6)(64bit)", + # "libc.so.6(GLIBC_2.7)(64bit)", + # "libdl.so.2()(64bit)", + # "libdl.so.2(GLIBC_2.2.5)(64bit)", + # "libffi-devel", + # "libgcc_s.so.1()(64bit)", + # "libgcc_s.so.1(GCC_3.0)(64bit)", + # "libgcc_s.so.1(GCC_3.3)(64bit)", + # "libgcc_s.so.1(GCC_4.2.0)(64bit)", + # "liblber.so.2()(64bit)", + # "liblber.so.2(OPENLDAP_2.200)(64bit)", + # "libldap.so.2()(64bit)", + # "libldap.so.2(OPENLDAP_2.200)(64bit)", + # "libm.so.6()(64bit)", + # "libpthread.so.0()(64bit)", + # "libpthread.so.0(GLIBC_2.2.5)(64bit)", + # "libpthread.so.0(GLIBC_2.3.2)(64bit)", + # "libstdc++.so.6()(64bit)", + # "libstdc++.so.6(CXXABI_1.3)(64bit)", + # "libstdc++.so.6(CXXABI_1.3.7)(64bit)", + # "libstdc++.so.6(CXXABI_1.3.9)(64bit)", + # "libstdc++.so.6(GLIBCXX_3.4)(64bit)", + # "libstdc++.so.6(GLIBCXX_3.4.11)(64bit)", + # "libstdc++.so.6(GLIBCXX_3.4.21)(64bit)", + # "rpmlib(CompressedFileNames) = 3.0.4-1", + # "rpmlib(FileDigests) = 4.6.0-1", + # "rpmlib(PayloadFilesHavePrefix) = 4.0-1", + # "rpmlib(PayloadIsZstd) = 5.4.18-1", + # "rtld(GNU_HASH)", + ], + conflicts=[ + "st2common", + ], + # TODO: Does nFPM auto generate any provides entries? + # provides=[ + # # These are in the native built rpms + # "config(st2)", + # "st2", + # "st2(x86-64)", + # ], **_common_pkg_metadata, **_distro("el8"), **_distro("el9"), diff --git a/packaging/BUILD.venv b/packaging/BUILD.venv index f28c44db4e..2fca8eb9f9 100644 --- a/packaging/BUILD.venv +++ b/packaging/BUILD.venv @@ -55,6 +55,12 @@ pex_binary( "//contrib/runners/python_runner", "//contrib/runners/remote_runner", "//contrib/runners/winrm_runner", + # TODO: Make a separate pex for each auth backend to avoid the python-ldap dep in the core pex. + # Pex only includes pre-built wheels, not sdists, so the st2-auth-ldap pex will need to be + # built for every distro+version, but the core st2 pex will be the same across distros. + # Then, the core pex needs a way to determine which additional pexes to add to the venv. + "//:auth_backends", + "//:rbac_backends", ], executable="build_st2_venv.py", # included by dependency inferrence execution_mode="venv", diff --git a/pants-plugins/release/constants.py b/pants-plugins/release/constants.py new file mode 100644 index 0000000000..bcc296ba65 --- /dev/null +++ b/pants-plugins/release/constants.py @@ -0,0 +1,69 @@ +# Copyright 2025 The StackStorm Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +ARCH_NAMES = { # {nfpm_arch: {pkg_type: packagecloud_arch}} + # The key comes from the 'arch' field of nfpm_*_package targets (GOARCH or GOARCH+GOARM). + # https://www.pantsbuild.org/stable/reference/targets/nfpm_deb_package#arch + # https://www.pantsbuild.org/stable/reference/targets/nfpm_rpm_package#arch + "amd64": { + "deb": "amd64", + "rpm": "x86_64", + } +} + +# This includes distros we do not support. +DISTROS_BY_PKG_TYPE = { # {pkg_type: {distro: {distro_id: distro_version}}} + "deb": { + "debian": { # no releases in packagecloud (so far) + "buster": "10", + "bullseye": "11", + "bookworm": "12", + "trixie": "13", + "forky": "14", + }, + "ubuntu": { # Only LTS releases + "trusty": "14.04", # the oldest with releases in packagecloud + "xenial": "16.04", + "bionic": "18.04", + "focal": "20.04", + "jammy": "22.04", + "noble": "24.04", + }, + }, + "rpm": { + "el": { # EL = Enterprise Linux (RHEL, Rocky, Alma, ...) + # 6 is the oldest with releases in packagecloud + f"el{v}": f"{v}" + for v in (6, 7, 8, 9) + }, + }, +} + +DISTRO_INFO = { + distro_id: { + "distro": distro, + "version": distro_version, + "pkg_type": pkg_type, + } + for pkg_type, distros in DISTROS_BY_PKG_TYPE.items() + for distro, distro_ids in distros.items() + for distro_id, distro_version in distro_ids.items() +} + +DISTRO_PACKAGE_SEARCH_URL = { + "debian": "https://packages.debian.org/search", + "ubuntu": "https://packages.ubuntu.com/search", +} diff --git a/pants-plugins/release/package_deps.py b/pants-plugins/release/package_deps.py new file mode 100644 index 0000000000..d9f4563f9f --- /dev/null +++ b/pants-plugins/release/package_deps.py @@ -0,0 +1,150 @@ +# Copyright 2025 The StackStorm Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from collections import defaultdict +from typing import AsyncGenerator + +import aiohttp +from bs4 import BeautifulSoup + +from .constants import ARCH_NAMES, DISTRO_INFO, DISTRO_PACKAGE_SEARCH_URL + + +async def translate_sonames_to_deb_packages( + distro_id: str, arch: str, sonames: tuple[str] +) -> set[str]: + """Given a soname, lookup the deb package that provides it. + + Tools like 'apt-get -S' and 'apt-file' only work for the host's + active distro and distro version. This code, however, should + be able to run on any host even non-debian and non-ubuntu hosts. + So, it uses an API call instead of local tooling. + """ + distro = DISTRO_INFO.get(distro_id, {}).get("distro") + search_url = DISTRO_PACKAGE_SEARCH_URL.get(distro) + if not search_url: + return set() + + # TODO: validate if always packagecloud_arch == debian_arch + debian_arch = ARCH_NAMES.get(arch, {}).get("deb") or arch + + packages = set() + async with aiohttp.ClientSession() as client: + for soname in sonames: + html_doc = await search_deb_packages( + client, search_url, distro_id, debian_arch, soname + ) + async for package, _ in deb_packages_from_html_response(html_doc): + if package: + packages.add(package) + + return packages + + +async def search_deb_packages( + client: aiohttp.ClientSession, + search_url: str, + distro_id: str, + debian_arch: str, + soname: str, +) -> str: + """Use API to search for deb packages that contain soname. + + This HTTP+HTML package search API, sadly, does not support + any format other than HTML (not JSON, YAML, etc). + """ + # https://salsa.debian.org/webmaster-team/packages/-/blob/master/SEARCHES?ref_type=heads#L110-136 + query_params = { + "format": "html", # sadly, this API only supports format=html. + "searchon": "contents", + "mode": "exactfilename", # soname should be exact filename. + # mode=="" means find files where `filepath.endswith(keyword)` + # mode=="filename" means find files where `keyword in filename` + # mode=="exactfilename" means find files where `filename==keyword` + "arch": debian_arch, + "suite": distro_id, + "keywords": soname, + } + + # TODO: This needs to retry a few times as the API can be flaky + async with client.get(search_url, params=query_params) as response: + + # response.status + + # sadly the "API" returns html and does not support other formats. + html_doc = await response.text() + + return html_doc + + +async def deb_packages_from_html_response( + html_doc: str, +) -> AsyncGenerator[tuple[str, tuple[str, ...]]]: + """Extract deb packages from an HTML search response. + + This uses beautifulsoup to parse the search API's HTML responses with + logic that is very similar to the MIT licensed apt-search CLI tool. + This does not use apt-search directly because it is not meant to be + a library, and it hardcodes the ubuntu package search URL. + https://github.com/david-haerer/apt-search + """ + + # inspiration from (MIT licensed): + # https://github.com/david-haerer/apt-search/blob/main/apt_search/main.py + # (this script handles more API edge cases than apt-search and creates structured data) + + soup = BeautifulSoup(html_doc, "html.parser") + + # .table means 'search for a
| File | Packages |
|---|---|
| /usr/lib/x86_64-linux-gnu/libldap-2.5.so.0 | + #libldap-2.5.0 [amd64] | + #
| /usr/sbin/dnsmasq | + #dnsmasq-base, dnsmasq-base-lua | + #