diff --git a/.envrc b/.envrc index 9447acf..e7e5a84 100644 --- a/.envrc +++ b/.envrc @@ -1,8 +1,4 @@ load_pdm() { - if [[ -d .venv ]] && [[ -d __pypackages__ ]]; then - echo -e "\033[0;31m.envrc: Both .venv and __pypackages__ detected, please remove one of them.\033[0m" - fi - if [[ -d .venv ]]; then echo ".envrc: Detected .venv, activating it" local VENV=".venv" @@ -11,7 +7,7 @@ load_pdm() { return fi - # If no .venv or __pypackages__ exists, try to activate any virtualenv + # If no .venv exists, try to activate any virtualenv echo ".envrc: No .venv detected, trying to activate any virtualenv" local VENV=$(dirname $(pdm info --python )) export VIRTUAL_ENV=$(echo "$VENV" | rev | cut -d'/' -f2- | rev) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e37c2dd..3b22c0e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,12 +19,12 @@ repos: - id: fix-byte-order-marker # Versions must be kept in sync with lockfile - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.1.13' + rev: 'v0.1.15' hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.12.1 + rev: 24.1.1 hooks: - id: black - repo: https://github.com/adrienverge/yamllint diff --git a/pdm.lock b/pdm.lock index 4d947fa..e594cf9 100644 --- a/pdm.lock +++ b/pdm.lock @@ -9,7 +9,7 @@ content_hash = "sha256:1e79f4c0b1bd8e9cba1d3c04c716c757a959a5ce6754c09013d7059f3 [[package]] name = "aiohttp" -version = "3.9.1" +version = "3.9.3" requires_python = ">=3.8" summary = "Async http client/server framework (asyncio)" dependencies = [ @@ -20,37 +20,37 @@ dependencies = [ "yarl<2.0,>=1.0", ] files = [ - {url = "https://files.pythonhosted.org/packages/02/3a/9aa79bc010bb8af6020f8e70937710d01622b97a7e04b8f8fbea97b04ff8/aiohttp-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57"}, - {url = "https://files.pythonhosted.org/packages/19/73/7a1d65a5e29417290cd32b0716958f56b683cb00d7dba7639b9e639b73d7/aiohttp-3.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449"}, - {url = "https://files.pythonhosted.org/packages/19/bc/81103c23bf5faf5e19c7598c6d08f014b9d46cb2948e46a3b0e8915e37f6/aiohttp-3.9.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2"}, - {url = "https://files.pythonhosted.org/packages/20/43/19a597a7e50ea99d04509ea82659c52149fefec45b5005d2e1f67b68ac0d/aiohttp-3.9.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f"}, - {url = "https://files.pythonhosted.org/packages/21/66/114bf1d9f0a38a50bf1b7a5c8315a44fd1f35bd1fee025a230907a2cb4b7/aiohttp-3.9.1-cp312-cp312-win32.whl", hash = "sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed"}, - {url = "https://files.pythonhosted.org/packages/3c/2a/6db78762123f368d97a38694b75d1942fcff6d476cb633dbca84c93c7221/aiohttp-3.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5"}, - {url = "https://files.pythonhosted.org/packages/41/d6/e4f5eadff5e4523f75b56183f474f7d5f54fc495e80ee875843d7b264492/aiohttp-3.9.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065"}, - {url = "https://files.pythonhosted.org/packages/4e/13/e929a6a50288e60ade3961b294d2f5aeb251b6579e4290a5397e484d0df9/aiohttp-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213"}, - {url = "https://files.pythonhosted.org/packages/52/eb/1686184646e6d813328df77fd54745477b295e12db09db131d5619b8b9b7/aiohttp-3.9.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d"}, - {url = "https://files.pythonhosted.org/packages/54/07/9467d3f8dae29b14f423b414d9e67512a76743c5bb7686fb05fe10c9cc3e/aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"}, - {url = "https://files.pythonhosted.org/packages/54/5d/4ea65eaf9a81821e2a02ba1f77644920dd0a575a2fd05557adb433db3ef6/aiohttp-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0"}, - {url = "https://files.pythonhosted.org/packages/59/86/f759ee047d87cff52028e90679a2f5c15c08f1b816cd1c16eb06db65276f/aiohttp-3.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe"}, - {url = "https://files.pythonhosted.org/packages/5c/3e/fb04926474e304b20032010bfa2409a218610ea5fab0e4cd56848b50582f/aiohttp-3.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff"}, - {url = "https://files.pythonhosted.org/packages/5c/4d/d35186a191fe522cf600eb6b9de3b2d9222ad58bc241639e508e061f0460/aiohttp-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35"}, - {url = "https://files.pythonhosted.org/packages/69/8d/769a1e9cdce1c9774dd2edc8f4e94c759256246066e5263de917e5b22a0a/aiohttp-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d"}, - {url = "https://files.pythonhosted.org/packages/70/de/9cfb42190a946df5179375a8e59110faf8188e2c19f58a6f8f6846414c8f/aiohttp-3.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821"}, - {url = "https://files.pythonhosted.org/packages/75/5f/90a2869ad3d1fb9bd984bfc1b02d8b19e381467b238bd3668a09faa69df5/aiohttp-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c"}, - {url = "https://files.pythonhosted.org/packages/7f/3b/4e0952616216ae9db1ebb4d6bbdd6bef2011d48c22fc9efb61c3039102f5/aiohttp-3.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3"}, - {url = "https://files.pythonhosted.org/packages/84/7a/70ca0dcffcb261d1e71590d1c93863f8b59415a52f610f75ee3e570e003c/aiohttp-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587"}, - {url = "https://files.pythonhosted.org/packages/8c/4b/fec8718e62106fa0362c5109f362ce45f6985d14283678e5c82cc9dfb0af/aiohttp-3.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb"}, - {url = "https://files.pythonhosted.org/packages/a0/ed/83c4e2ae68bf31ef28b50fdcbd885792de03e94e4b0587ed08a02095f79a/aiohttp-3.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a"}, - {url = "https://files.pythonhosted.org/packages/a4/56/f5064eb44914235591b372b04420fd9e80b21110ae718ba72387f49ee9c0/aiohttp-3.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66"}, - {url = "https://files.pythonhosted.org/packages/af/26/9d04bf5100562111eb1d77f8ecd7f297660c36981ab1826318594c11ab4d/aiohttp-3.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01"}, - {url = "https://files.pythonhosted.org/packages/b6/ae/30c8962df269f86912be9e3ec59b51dd8eaeccb5d23695f63177a0e21d1b/aiohttp-3.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183"}, - {url = "https://files.pythonhosted.org/packages/cf/45/580b5a6abb70530cea7f6e697227c61e0001eff75d50b897a62b66c6d3b7/aiohttp-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af"}, - {url = "https://files.pythonhosted.org/packages/d0/89/5cdbebbdfe91c1f937ef4cc2836152cce0d2a0138029b53703d0c3f13199/aiohttp-3.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f"}, - {url = "https://files.pythonhosted.org/packages/dc/8e/237831f6ab5518c114f253caa689b1e4993df40f5e72c598a1a494510b20/aiohttp-3.9.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd"}, - {url = "https://files.pythonhosted.org/packages/de/fc/08864a3f83e674eece6104800c697dfb7c09a331b47b3b3b758342128164/aiohttp-3.9.1-cp311-cp311-win32.whl", hash = "sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544"}, - {url = "https://files.pythonhosted.org/packages/e6/c5/dcdade8e4ab2dc4a22d77c14acea31f69d7e69a2d19eec4c4c19673cca81/aiohttp-3.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e"}, - {url = "https://files.pythonhosted.org/packages/f3/1a/6452aa5ab519e79c43831e59fcef6f76426b51810d9772e03addc3efd958/aiohttp-3.9.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b"}, - {url = "https://files.pythonhosted.org/packages/fb/fc/96ad8b6fc5f557a6b6bf500d8609148849aa010529a10c5a0829c4fc878c/aiohttp-3.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87"}, + {url = "https://files.pythonhosted.org/packages/02/fe/b15ae84c4641ff829154d7a6646c4ba4612208ab28229c90bf0844e59e18/aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, + {url = "https://files.pythonhosted.org/packages/03/20/0a43a00edd6a401369ceb38bfe07a67823337dd26102e760d3230e0dedcf/aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, + {url = "https://files.pythonhosted.org/packages/0e/91/fdd26fc726d7ece6bf735a8613893e14dea5de8cc90757de4a412fe89355/aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, + {url = "https://files.pythonhosted.org/packages/10/11/93c1f592e555f3db46226674b8c84b7c84c6fc19a0efdc8af9185a8e0fc8/aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, + {url = "https://files.pythonhosted.org/packages/18/93/1f005bbe044471a0444a82cdd7356f5120b9cf94fe2c50c0cdbf28f1258b/aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, + {url = "https://files.pythonhosted.org/packages/19/bc/cfb51d97646cd67cebd90f0b5b0bebe063ebc8efd93e888b0aed9d74a549/aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, + {url = "https://files.pythonhosted.org/packages/1d/44/b0df11b0dc36ca2880c9a3a2a73f084290dafdf7451f43f6bce1d25a0925/aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, + {url = "https://files.pythonhosted.org/packages/2d/8c/8e0f346927177d2c25570bbea9975d3a99556753ee53ab55386149bbb1e3/aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, + {url = "https://files.pythonhosted.org/packages/3d/90/6ea3249e4570df575e1aa348b37b7ac1074482c2fab46a1ee84392cbc02e/aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, + {url = "https://files.pythonhosted.org/packages/42/ea/720d6d99462d91c7ff8a1d5602fbad2c1e9af232014fb8ac07611a5e54e3/aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, + {url = "https://files.pythonhosted.org/packages/46/57/9959621366c272f05c95f6cf795ebde9edc22c718e61bae1f565a4832b86/aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, + {url = "https://files.pythonhosted.org/packages/51/00/946624cb603d4433fab1f1f708aca9dd178349f9fe7956bd8eb4b08a377d/aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, + {url = "https://files.pythonhosted.org/packages/5f/75/b3f077038cb3a8d83cd4d128e23d432bd40b6efd79e6f4361551f3c92e5e/aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, + {url = "https://files.pythonhosted.org/packages/60/17/bf9e80ec684ba8576dd3577a6562bff40c9bac9e4068f81aa3b9e66b008e/aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, + {url = "https://files.pythonhosted.org/packages/64/df/5cddb631867dbc85c058efcb16cbccb72f8bf66c0f6dca38dee346f4699a/aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, + {url = "https://files.pythonhosted.org/packages/6f/82/58ceac3a641202957466a532e9f92f439c6a71b74a4ffcc1919e270703d2/aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, + {url = "https://files.pythonhosted.org/packages/72/09/1f36849c36b7929dd09e013c637808fcaf908a0aa543388c2903dbb68bba/aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, + {url = "https://files.pythonhosted.org/packages/78/4c/579dcd801e1d98a8cb9144005452c65bcdaf5cce0aff1d6363385a8062b3/aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, + {url = "https://files.pythonhosted.org/packages/84/bb/74c9f32e1a76fab04b54ed6cd4b0dc4a07bd9dc6f3bb37f630149a9c3068/aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, + {url = "https://files.pythonhosted.org/packages/98/e4/6e56f3d2a9404192ed46ad8edf7c676aafeb8f342ca134d69fed920a59f3/aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, + {url = "https://files.pythonhosted.org/packages/a3/59/cd5e456835df696e6307c8b045acfada1557ac822d527c27bb33c1308091/aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, + {url = "https://files.pythonhosted.org/packages/a8/89/f35fbdcd20166eb2ab39de874712310866e2e8349c4a4dfc0b82fe5b8a67/aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, + {url = "https://files.pythonhosted.org/packages/ae/b1/34f3deb33ee7f5c573076021b581b875c7e364973d1852b3207265269f78/aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, + {url = "https://files.pythonhosted.org/packages/b7/e0/661d5b21fd9ca5bfb7f89373430298ed6c0c1e84270a3f8fda5172a95700/aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, + {url = "https://files.pythonhosted.org/packages/be/5c/abb04824e97346a406349a6be4c8ea0a981b0d8bf472ee417ef83b5b5601/aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, + {url = "https://files.pythonhosted.org/packages/c2/bf/db1fc240d89cde43fd7bb11c1c3f9156dd184881a527ad8b0f9e8f4d434a/aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, + {url = "https://files.pythonhosted.org/packages/d3/b0/efb74d5f92a460c774e0254b3109c2d00fd3a1553f98363abb2b25cac9a3/aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, + {url = "https://files.pythonhosted.org/packages/e2/11/4bd14dee3b507dbe20413e972c10accb79de8390ddac5154ef076c1ca31a/aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, + {url = "https://files.pythonhosted.org/packages/e9/18/64c65a8ead659bae24a47a8197195be4340f26260e4363bd4924346b9343/aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, + {url = "https://files.pythonhosted.org/packages/ef/d1/6aea10c955896329402950407823625ab3a549b99e9c1e97fc61e5622b8a/aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, + {url = "https://files.pythonhosted.org/packages/fd/4f/5c6041fca616a1cafa4914f630d6898085afe4683be5387a4054da55f52a/aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, ] [[package]] @@ -237,7 +237,7 @@ files = [ [[package]] name = "black" -version = "23.12.1" +version = "24.1.1" requires_python = ">=3.8" summary = "The uncompromising code formatter." dependencies = [ @@ -248,16 +248,16 @@ dependencies = [ "platformdirs>=2", ] files = [ - {url = "https://files.pythonhosted.org/packages/37/bf/a80abc6fcdb00f0d4d3d74184b172adbf2197f6b002913fa0fb6af4dc6db/black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, - {url = "https://files.pythonhosted.org/packages/66/16/8726cedc83be841dfa854bbeef1288ee82272282a71048d7935292182b0b/black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, - {url = "https://files.pythonhosted.org/packages/72/e2/d981a3ff05ba9abe3cfa33e70c986facb0614fd57c4f802ef435f4dd1697/black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, - {url = "https://files.pythonhosted.org/packages/7b/14/4da7b12a9abc43a601c215cb5a3d176734578da109f0dbf0a832ed78be09/black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, - {url = "https://files.pythonhosted.org/packages/98/2b/54e5dbe9be5a10cbea2259517206ff7b6a452bb34e07508c7e1395950833/black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, - {url = "https://files.pythonhosted.org/packages/99/de/ddb45cc044256431d96d846ce03164d149d81ca606b5172224d1872e0b58/black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, - {url = "https://files.pythonhosted.org/packages/d2/1e/30f5eafcc41b8378890ba39b693fa111f7dca8a2620ba5162075d95ffe46/black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, - {url = "https://files.pythonhosted.org/packages/eb/59/1f5c8eb7bba8a8b1bb5c87f097d16410c93a48a6655be3773db5d2783deb/black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, - {url = "https://files.pythonhosted.org/packages/ed/2c/d9b1a77101e6e5f294f6553d76c39322122bfea2a438aeea4eb6d4b22749/black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, - {url = "https://files.pythonhosted.org/packages/fd/f4/a57cde4b60da0e249073009f4a9087e9e0a955deae78d3c2a493208d0c5c/black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, + {url = "https://files.pythonhosted.org/packages/17/9e/104321dd49d30f7e9475afef76db7ad14b43f56933a315a657504d8fbdd7/black-24.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e2c8dfa14677f90d976f68e0c923947ae68fa3961d61ee30976c388adc0b02c8"}, + {url = "https://files.pythonhosted.org/packages/1d/25/85c545f605f005a1724ccc654f4981461ea0234835ba7689f6c5a97d3e5d/black-24.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:5d7b06ea8816cbd4becfe5f70accae953c53c0e53aa98730ceccb0395520ee5d"}, + {url = "https://files.pythonhosted.org/packages/55/14/07a41fb78fe81aa4852f16af4211fab5a130fcd3150b44a336042a3252d5/black-24.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07204d078e25327aad9ed2c64790d681238686bce254c910de640c7cc4fc3aa6"}, + {url = "https://files.pythonhosted.org/packages/77/ec/a429d15d2e7f996203bff98e2b2e84ad4cb3de318de147b0038dc93fbc71/black-24.1.1.tar.gz", hash = "sha256:48b5760dcbfe5cf97fd4fba23946681f3a81514c6ab8a45b50da67ac8fbc6c7b"}, + {url = "https://files.pythonhosted.org/packages/95/f3/c3d59ae490c627950efc97a27c3f73776577e2ec32d35737e72aee3d6738/black-24.1.1-py3-none-any.whl", hash = "sha256:5cdc2e2195212208fbcae579b931407c1fa9997584f0a415421748aeafff1168"}, + {url = "https://files.pythonhosted.org/packages/be/ff/9380fb957347ab897543b53228cfd85112e421bdaf243e3865fa2d5e80ce/black-24.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a21725862d0e855ae05da1dd25e3825ed712eaaccef6b03017fe0853a01aa45e"}, + {url = "https://files.pythonhosted.org/packages/c0/92/cc543b133cd1337cbfce3e7d2c9d45b5e913224ed1fc791875d062d7be46/black-24.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0269dfdea12442022e88043d2910429bed717b2d04523867a85dacce535916b8"}, + {url = "https://files.pythonhosted.org/packages/e5/fa/eaa2c165840a2496654366fcdc17f63459b89e3296b9269a18ba6d71f596/black-24.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:a83fe522d9698d8f9a101b860b1ee154c1d25f8a82ceb807d319f085b2627c5b"}, + {url = "https://files.pythonhosted.org/packages/e8/e3/8519496759b4f15d73323b00f70bde3eb097efd177382a4bed3899162a9e/black-24.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3d64db762eae4a5ce04b6e3dd745dcca0fb9560eb931a5be97472e38652a161"}, + {url = "https://files.pythonhosted.org/packages/ef/cc/b205025212eaa90a73985873d5b88210d7c337c02afc4d9fa6ce438a080f/black-24.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fc1ec9aa6f4d98d022101e015261c056ddebe3da6a8ccfc2c792cbe0349d48b7"}, ] [[package]] @@ -356,15 +356,15 @@ files = [ [[package]] name = "celery-types" -version = "0.21.0" +version = "0.22.0" requires_python = ">=3.9,<4.0" summary = "Type stubs for Celery and its related packages" dependencies = [ "typing-extensions<5.0.0,>=4.9.0", ] files = [ - {url = "https://files.pythonhosted.org/packages/11/19/7424a40e031d7d4e128d1146247966791588fd04d6e3009edf29c48e57be/celery_types-0.21.0.tar.gz", hash = "sha256:c6f1628943280c7a253fbb30381621771f3d9e3a3e77c36979ed35043d6d416b"}, - {url = "https://files.pythonhosted.org/packages/3d/81/601e61eaedd2fe0770d832e7f831593cd526ab24e4531a2c86990c9bf101/celery_types-0.21.0-py3-none-any.whl", hash = "sha256:a447e653b70b47385b67175cd2f87b6e1dff6bc88dadcedb7a72143bd92118f2"}, + {url = "https://files.pythonhosted.org/packages/57/0a/f7d6089e39b43528d74f99f3f58b9900fe76894e8208ec4f22ffa71e4a73/celery_types-0.22.0.tar.gz", hash = "sha256:0ecad2fa5a6eded0a1f919e5e1e381cc2ff0635fe4b21db53b4661b6876d5b30"}, + {url = "https://files.pythonhosted.org/packages/b4/fc/ab9ed137f6a7a54746cb27410e475f6b375dbb9e20f8c2d3317186d0a63e/celery_types-0.22.0-py3-none-any.whl", hash = "sha256:79a66637d1d6af5992d1dc80259d9538869941325e966006f1e795220519b9ac"}, ] [[package]] @@ -688,7 +688,7 @@ files = [ [[package]] name = "ddtrace" -version = "2.3.3" +version = "2.3.4" requires_python = ">=3.7" summary = "Datadog APM client library" dependencies = [ @@ -705,27 +705,27 @@ dependencies = [ "xmltodict>=0.12", ] files = [ - {url = "https://files.pythonhosted.org/packages/00/54/10f71ab023776dc4fee3c6e9a515dc6abb013314dd77391cad53649a1884/ddtrace-2.3.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2bfbeefcf807c3993c669042d00865fc2048a6c737172362afecf5b44d80725b"}, - {url = "https://files.pythonhosted.org/packages/00/bc/2f86099be48b715b4bda929ef6c45f1562a09177a2aed4813b63064558db/ddtrace-2.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01aea62d2c9f4a5f309e91b0d08a7eb935aee7e7416c274ede926416062c425b"}, - {url = "https://files.pythonhosted.org/packages/15/3d/9b283f6555b97958d95ff13ded4e7800e8edcb76d7483ab99b22b6c15599/ddtrace-2.3.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:6d659f9107683d4a58d945b6fdab0d9c4311a56f25ff78ea97aed89adcbd30cc"}, - {url = "https://files.pythonhosted.org/packages/19/45/58de53f3c0ccc4fbd3eef28c50e4c998dd8854e9c8676c46e19af36f2cbe/ddtrace-2.3.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9730607f2b14143d7bb9e4d8faf7433e7aa3637987eb3e7c7dfe223f8d29f059"}, - {url = "https://files.pythonhosted.org/packages/1c/27/589bab552d211475908fc6851716b55b77b812690c307a5f4dbcb3de3c74/ddtrace-2.3.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:021e7246bdcdb0a020b34007c8d76deffd62bfabfa81890e051fdb99cca178a7"}, - {url = "https://files.pythonhosted.org/packages/2c/98/b8eb4d3a40d67b75decd37d21fc5dd895c47419f4b16a081a5ffc2df94a7/ddtrace-2.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bdcb642e02136bfef278398dc4fa5b944c6532ab4e94c24391fdecb0e5d44532"}, - {url = "https://files.pythonhosted.org/packages/58/70/c369f3914daf5dca458bd816e270b65ccc3d1ae4d4eb78911c3f722a4a57/ddtrace-2.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e6d55ad0a9ca15792c41e3996df669cf643b11fc8af81e662d1065ba7ae8a4"}, - {url = "https://files.pythonhosted.org/packages/62/1a/7c0cbd6f0e237e708674ceed6a3af8ba0b092332ba5ded4bc66b81a94d5e/ddtrace-2.3.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4cbb49e7672cbdf7749a52bd166a9006c6015bd4a33f3208144b240f2f0c8785"}, - {url = "https://files.pythonhosted.org/packages/6d/a7/b7cbf9c3b77ca3848de81c818f54b6abd7d6f9d130a73b7843bb31413935/ddtrace-2.3.3-cp312-cp312-win32.whl", hash = "sha256:018927bf0f682154416d9f6432d437711159dbd09f7652834784dcd2a50ffa51"}, - {url = "https://files.pythonhosted.org/packages/77/9b/e33df5f52206750a8491dbcbbfb35bedd3145ad99ac18e1075dacac43ece/ddtrace-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:01795772049b5441d259e8a6c81ab0d4352d51aff05d0d4ab85a475723bb7590"}, - {url = "https://files.pythonhosted.org/packages/79/e5/1fb6f19d8b5eeb1c53f80579310393b0bfbf4d2432fff27d22e37dae5d7b/ddtrace-2.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f681b1293919b30986e7077c1b64a0dfcd5e382e2ac67f252ccf635f2822699"}, - {url = "https://files.pythonhosted.org/packages/a1/d0/2c29b58e5e6f434df62e9e853f8e0759c8fee971e5affc26d0f91ee61507/ddtrace-2.3.3.tar.gz", hash = "sha256:1816a9f4579501481a59872166f895c6bdd3fd37eb6256ed1bc7dc776332a3af"}, - {url = "https://files.pythonhosted.org/packages/a4/69/4447faa8b2b26753acd324243dab0d881498583e19fcfcff69c066f2687e/ddtrace-2.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fd9f6577f3f0baa2268a3606f19e18c3533037c04c6b4b4f0210ad3747458ae6"}, - {url = "https://files.pythonhosted.org/packages/a4/df/20f1a9c6c1d46941b8e600a4c1c407052c28d5a3ac8a5e36e54edc83c745/ddtrace-2.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:77ec1377eff0f34cadae544345a88e6fba8bcbc58902cb5be7ee8d63cccf9560"}, - {url = "https://files.pythonhosted.org/packages/a8/3e/251d1cac9f3c52e63bdf11a1c97a0085e71c607145e940314863d7d833aa/ddtrace-2.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32ae5a3e840503908d291ce12bfdf961a0d5aa35e328d16545d9d921b72b9760"}, - {url = "https://files.pythonhosted.org/packages/a8/70/cedf0ad066acb0214a181104e1c82b4dce9ac7b2a0479a4854b1983e9f35/ddtrace-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:4477e893e01461d0acfc180185ac76f56a8c8b2633f3e99b392bd3d62c56e891"}, - {url = "https://files.pythonhosted.org/packages/bc/cc/662ad9129dd2b528f4cb60919ef2cb0ccb30c31082ea0fb95be131a54796/ddtrace-2.3.3-cp311-cp311-win32.whl", hash = "sha256:de483fb695da4a6e9d9df7a9b65e0e487dce92c38aa5ef912a84a9a76bb7ff71"}, - {url = "https://files.pythonhosted.org/packages/cd/7a/293bc927f52d6d265eba7dd97231f9eda981d6a898c58233e409ead2d92c/ddtrace-2.3.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a405f5d8cc63f34ed1df7e21f40b5563b215529fd64ee3e1af45448d069706f2"}, - {url = "https://files.pythonhosted.org/packages/d8/ee/c98c899b00f31492d50b6a22c99d699d9bb08e006ec67d8678db3c0d7e42/ddtrace-2.3.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:b47867d9ec2bfc6a950eb2ec9a2404f6927c6607b28c3f7703612cb788dab9c6"}, - {url = "https://files.pythonhosted.org/packages/e8/0a/bcb34082c68c8ec0c1e1573a81a31c14d843e031f0e2399fb4ba1d2eff5e/ddtrace-2.3.3-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:7e5c7458485e83e0bf345eb4b641f8d05cd2e9acce47c399b9348a1c874585f5"}, - {url = "https://files.pythonhosted.org/packages/f5/1f/1f0f2d421785fdcb5968b0da57e70bb33078900d010fc7ec7bfae7d0e56e/ddtrace-2.3.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f367161a13dac5e33727eb6ad6374616d5263c6e978150e5c420f6e0cab23926"}, + {url = "https://files.pythonhosted.org/packages/0f/88/d4a15dca07acc759a0297fe5c85b2b46f4eb1edf95229e57069b6f130b1c/ddtrace-2.3.4-cp311-cp311-win_amd64.whl", hash = "sha256:6bd858f66fbb6e4115c5d404dbbe5b995ab04d5f17cdeb9bbc32b627c3f77a65"}, + {url = "https://files.pythonhosted.org/packages/19/b6/279552e5c47d1a8a7c14d880588cdbdc4977cffa36d4df85884ba388bcfa/ddtrace-2.3.4-cp312-cp312-win32.whl", hash = "sha256:98af596365354cf77144b21f785db5159150ad695c52f26c19099f3f8eaa728c"}, + {url = "https://files.pythonhosted.org/packages/28/ec/e573f38b0e4d679b2ff4c3337e9e7abc4c10930c3938873c7f05c9c6bc97/ddtrace-2.3.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a3230401e0d8da44b2a09eca7c698912e0dc7bd8c70c4d9c1d66fe2a67a150b9"}, + {url = "https://files.pythonhosted.org/packages/29/92/479536a4da1649077fd6ddcf13c8ae574abd5cb241e3d7d27e39b43aee02/ddtrace-2.3.4-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:4d1a94129e8fb7ea4f52a62bd7a38abb5d25da3bcf3077ca42cff26f755edae0"}, + {url = "https://files.pythonhosted.org/packages/30/c7/9cec7dd8815483143c0aa529d3f36835f333a2e880b1893e251115994f61/ddtrace-2.3.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52011174d092fac88b2455ebcfee5c002e0692ed209f9ff9875837717d0e6d8d"}, + {url = "https://files.pythonhosted.org/packages/34/7f/577a1e839717dab548e3aba5d1683d50069d2a4c96cfdb5fd26422221704/ddtrace-2.3.4-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:ff566434fcf6865f70cd8b99b88d188de657b93e93b478dafd70e0ec4273b397"}, + {url = "https://files.pythonhosted.org/packages/35/b7/32c5974c2394a3d67e84a75d2d9867afb181cfb9d25f26ebff616b9b1429/ddtrace-2.3.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e170cc27e35ad81703bc635434f6d34d2cca49a8728dc6fa917b6ec10af01b77"}, + {url = "https://files.pythonhosted.org/packages/4f/5c/b2edd4f1e4c2189d73eec5bcd5e69e0c25b514ef075ebc502742cdbc6caf/ddtrace-2.3.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3acefac10a2288da8cd4fe8ff1cc31667d87c69804bef1fbe1ed786757b2223a"}, + {url = "https://files.pythonhosted.org/packages/51/a3/a33ce4c306fa4d320f974f4cd2b8f550cbaf5ef9da97c1c4bc8201271839/ddtrace-2.3.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7890eecc47d945aa58b8fe2ba7ac9c85ab7a48c7cd9a9f23c103c4f48224b65"}, + {url = "https://files.pythonhosted.org/packages/67/9c/1ae70502ebe113ea5f44093308ee9057d60da727e8138515212234a5c1fc/ddtrace-2.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7faf770166a37da92dc2b00c3f88fc6dcacc9d7ad5652a4e4212cc69088944b"}, + {url = "https://files.pythonhosted.org/packages/69/2e/3ef736dfbb830a451bb7004ee0dc4617472ed8e5c9ca7f9190945469241a/ddtrace-2.3.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8b02c2026190580aebac394153e713c653a2ca4b736e7cdffbef129e60b5b74"}, + {url = "https://files.pythonhosted.org/packages/6a/28/0c5ed12d03029ff4986061976a95b7ef734c85c3e4a7b3fe602e3f567b8a/ddtrace-2.3.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:f4439ab411680c78e79f13b1d6d28d83940ca716ce15910b4d8b75ead1cbd94b"}, + {url = "https://files.pythonhosted.org/packages/70/92/3cdb400bc884e19460d63d3442a1439e119f4742aaac9d07eca7e0cbb581/ddtrace-2.3.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baeff47df2e81e7138ba79f40391bd8798aeaede394c0733c60ab97ed7b9ca36"}, + {url = "https://files.pythonhosted.org/packages/72/6b/f3981b6e2f726918a3f7080941e13eb0ef181230d90e62b6018c041e9cdb/ddtrace-2.3.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ab4be0b59f5580c45b7378eb00c5dfdf0e7228680b250afde967e261874dd20b"}, + {url = "https://files.pythonhosted.org/packages/8c/f9/4750a77bcf912b1b6c678cac67a4817041b2ce550a4fdf6aa6bd756c6356/ddtrace-2.3.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0e0fcf187f31c65b630b0ed73055ccddb6336d95bc737d0defa72222b50db028"}, + {url = "https://files.pythonhosted.org/packages/a5/06/d02784152bbe19c1aa1ed1bea8c5d52a34a8f57362628ddcb939dd3ae189/ddtrace-2.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab4905e473990f8513983dab6bdee9f38dd9b5d8c43540fdedd64dfaa0a7c826"}, + {url = "https://files.pythonhosted.org/packages/ab/7a/c09fd74b5ca8fa63a241e78fa61be5f478df11d7239a269d8348cf8744f4/ddtrace-2.3.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e78d41af054fcf2d90723a7ebdb74b64391f07aabf50484efcfde360be913d41"}, + {url = "https://files.pythonhosted.org/packages/c4/9a/914f5201fb15e55d253f7cd54e5109952bb9175d041db85f9e7b4dd56715/ddtrace-2.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:d8a711b95fe1eebcbd1b72a154dc7b3dd91bd35a4f657ecac5742d05c03087fd"}, + {url = "https://files.pythonhosted.org/packages/c5/07/0700b7c72ca041122132e0847f51d6769c8c7d8f0ac6dbb3f9c0e975505c/ddtrace-2.3.4-cp311-cp311-win32.whl", hash = "sha256:9c51ab2c9d74add6628fed5d2867dca08573a42e9ca78067fdf571c1bb710b5b"}, + {url = "https://files.pythonhosted.org/packages/c7/20/9fd0a4b2b94f1ee110f91aaac3214ddc1d138eb7e6f5297d6f3ca3c8a9f1/ddtrace-2.3.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:183dc323f4ebd5ffc9e1a6e0cc89a74c0b6e235988e7a2dfff89da11cd648658"}, + {url = "https://files.pythonhosted.org/packages/de/3e/030acc6c91a3b497f28ecc33869b292cbe2105444706826ce8f850c6e4c9/ddtrace-2.3.4.tar.gz", hash = "sha256:6a0d2fd4245fb44cf9a7834b16d5d1988dd1916d1511060dded79490dece54b9"}, ] [[package]] @@ -819,14 +819,14 @@ files = [ [[package]] name = "django-components" -version = "0.32" +version = "0.34.1" summary = "A way to create simple reusable template components in Django." dependencies = [ "Django>=3.2", ] files = [ - {url = "https://files.pythonhosted.org/packages/4d/e5/c831bc5a0a07d3ac87b7d992c9ce2bcb8482c032ed420e9492611ff786a8/django_components-0.32.tar.gz", hash = "sha256:ebd0855ad18601830ab680fed203600d18e22cb2a0a89b54812f0bcfe3144b92"}, - {url = "https://files.pythonhosted.org/packages/54/f2/8c92e04b5476bd9f04e67b4e1356a923e51a6d6ea0062122e080dd2a3d0f/django_components-0.32-py3-none-any.whl", hash = "sha256:723cfd2c0062b9cb1c8f388fad0ff08d35918b04b6cc72c103b6c076ca6745d1"}, + {url = "https://files.pythonhosted.org/packages/08/81/287702553b221dbd0b6699682ab79ace672777a272d6f27a6c13e9adf505/django_components-0.34.1.tar.gz", hash = "sha256:a3d47bc9e6f94163e03c0b07e41af3ccebe214d92833bbafd57a3105ced81ec2"}, + {url = "https://files.pythonhosted.org/packages/3c/12/f2aa7b4ba9bb5f093636be307a3a184533dd524fa2fff35442ab8888f2a4/django_components-0.34.1-py3-none-any.whl", hash = "sha256:6f8f180e480b4055db414c60eb2c618f83742a1f70833d3da4afa637f46668f4"}, ] [[package]] @@ -965,7 +965,7 @@ files = [ [[package]] name = "django-silk" -version = "5.0.4" +version = "5.1.0" requires_python = ">=3.8" summary = "Silky smooth profiling for the Django Framework" dependencies = [ @@ -975,8 +975,8 @@ dependencies = [ "sqlparse", ] files = [ - {url = "https://files.pythonhosted.org/packages/11/c3/87608811d2e2f6b299cba2e786ea7e89ed34a15bba8dd66862db9ba553f9/django-silk-5.0.4.tar.gz", hash = "sha256:8cbfbc647d182527726d8d52d3fcfa193f4d250f21406c3fb1062efa6fb95c63"}, - {url = "https://files.pythonhosted.org/packages/6f/2d/3eb5f314db904d1dd61dbbb8cae105c8d33afc6ad470e31085e408665ea2/django_silk-5.0.4-py3-none-any.whl", hash = "sha256:b345d3973d1d382e09735eb525eaf3eebd3edee9a69d1003eb9b01badb2438db"}, + {url = "https://files.pythonhosted.org/packages/87/cf/273b7494fea1bdb3e7843cab58587cd835cbc7e138e05d3f0c0698cb2121/django_silk-5.1.0-py3-none-any.whl", hash = "sha256:35a2051672b0be86af4ce734a0df0b6674c8c63f2df730b3756ec6e52923707d"}, + {url = "https://files.pythonhosted.org/packages/b6/ab/9db04cbbb60a4a6c444f87a0dc3d6b554182abd234a170158fad20085704/django-silk-5.1.0.tar.gz", hash = "sha256:34abb5852315f0f3303d45b7ab4a2caa9cf670102b614dbb2ac40a5d2d5cbffb"}, ] [[package]] @@ -1076,7 +1076,7 @@ files = [ [[package]] name = "django-watchfiles" -version = "0.1.0" +version = "0.1.1" requires_python = ">=3.8" summary = "Use watchfiles in Django’s autoreloader." dependencies = [ @@ -1084,8 +1084,8 @@ dependencies = [ "watchfiles", ] files = [ - {url = "https://files.pythonhosted.org/packages/ac/57/0b5dde6f4de9055949bcf5c8a45a09debe297d1e77ba7da8080ee4fefc49/django_watchfiles-0.1.0-py3-none-any.whl", hash = "sha256:30e0e125bca7c0b577d44d26f0e71a3086de69f1fbb58d1920826c4d9ab8236f"}, - {url = "https://files.pythonhosted.org/packages/d8/0a/3759fb4066508868eaebf012a7d60ce3aa267ff0b7fc3e182d4d55cdf092/django_watchfiles-0.1.0.tar.gz", hash = "sha256:2e94fa22e78ca129dc8c9071454bed67c9a6d07715a5bd6e284c74cde8d86cb4"}, + {url = "https://files.pythonhosted.org/packages/2a/40/1a12f29bd06072de5a6b240c228f9f17c4544b6c859cbb6321cb4433577a/django-watchfiles-0.1.1.tar.gz", hash = "sha256:0597441237d6ce540d17f582c2e8100d28f676cd75b8e21b2ac896464d6a8e89"}, + {url = "https://files.pythonhosted.org/packages/a1/79/db16cb8c12bc297bf59e998dc18f2ca7c74a965acdd4971f143d019f3ce8/django_watchfiles-0.1.1-py3-none-any.whl", hash = "sha256:4490a3c3fed2ea61d5e38a767e6440d82540bd855cb5a9d616e52e1ad78c6a89"}, ] [[package]] @@ -1176,7 +1176,7 @@ files = [ [[package]] name = "drf-spectacular" -version = "0.27.0" +version = "0.27.1" requires_python = ">=3.6" summary = "Sane and flexible OpenAPI 3 schema generation for Django REST framework" dependencies = [ @@ -1188,8 +1188,8 @@ dependencies = [ "uritemplate>=2.0.0", ] files = [ - {url = "https://files.pythonhosted.org/packages/30/89/b284c24bb807410aebfccafb3b491c673b8e926cf8eb27eca58f01973fb5/drf_spectacular-0.27.0-py3-none-any.whl", hash = "sha256:6ab2d20674244e8c940c2883f744b43c34fc68c70ea3aefa802f574108c9699b"}, - {url = "https://files.pythonhosted.org/packages/53/c1/550dd00343b9b4ed1542c4e62ca384b1f6c10cd49f69ca0c9ddb8a17d062/drf-spectacular-0.27.0.tar.gz", hash = "sha256:18d7ae74b2b5d533fd31f1c591ebaa5cce1447e0976ced927401e3163040dea9"}, + {url = "https://files.pythonhosted.org/packages/3e/85/f143316a3762bc3c3d99a81d1999aff637bd849326e7cf3eeec762adb23d/drf-spectacular-0.27.1.tar.gz", hash = "sha256:452e0cff3c12ee057b897508a077562967b9e62717992eeec10e62dbbc7b5a33"}, + {url = "https://files.pythonhosted.org/packages/4b/13/c2b24ed6757b83c9263fc8d4e563b375d6da22bd54a2d22e8898273a2ef9/drf_spectacular-0.27.1-py3-none-any.whl", hash = "sha256:0a4cada4b7136a0bf17233476c066c511a048bc6a485ae2140326ac7ba4003b2"}, ] [[package]] @@ -1474,7 +1474,7 @@ files = [ [[package]] name = "hypothesis" -version = "6.95.0" +version = "6.97.2" requires_python = ">=3.8" summary = "A library for property-based testing" dependencies = [ @@ -1482,8 +1482,8 @@ dependencies = [ "sortedcontainers<3.0.0,>=2.1.0", ] files = [ - {url = "https://files.pythonhosted.org/packages/99/bf/29eef91e92628b374306e10090921831c515bb142905ed8a2b67fa231201/hypothesis-6.95.0.tar.gz", hash = "sha256:63b1097096a8744926b1f0ce237498a2c1c5cc8304f53611b27a1fab199e847c"}, - {url = "https://files.pythonhosted.org/packages/e5/9b/31022e7e4e7b12e374139a922db25b9c8b7f6c7c96b8ec74128a7f13ff4b/hypothesis-6.95.0-py3-none-any.whl", hash = "sha256:203021a42013fd3a599aa0e9a9d297a928ef66a0783981f1ab9efcc706e142e0"}, + {url = "https://files.pythonhosted.org/packages/87/a6/6bc9b4ae21e02b2a6fbfb1f70af522c1a001384cedd8a0eff9f7c2ec21b0/hypothesis-6.97.2.tar.gz", hash = "sha256:17d2752532e59518586d3e13585f31869bc4b24105a96f30374b7a0524100505"}, + {url = "https://files.pythonhosted.org/packages/d2/9f/5e95ec8eec17a8956aa07befb07bd38c4fe600b0852e886521b8a14edccf/hypothesis-6.97.2-py3-none-any.whl", hash = "sha256:7cf6d7a7b5acc898269478d62e4d25f373e8df6b4900b0447b39d44f12385352"}, ] [[package]] @@ -1917,7 +1917,7 @@ files = [ [[package]] name = "mkdocs-material" -version = "9.5.5" +version = "9.5.6" requires_python = ">=3.8" summary = "Documentation that simply works" dependencies = [ @@ -1934,8 +1934,8 @@ dependencies = [ "requests~=2.26", ] files = [ - {url = "https://files.pythonhosted.org/packages/61/61/c97396dd6a8b907ece79af0478e1c5bda9640ebea9ee1ea2bdc7b70cf88e/mkdocs_material-9.5.5.tar.gz", hash = "sha256:4480d9580faf42fed0123d0465502bfc1c0c239ecc9c4d66159cf0459ea1b4ae"}, - {url = "https://files.pythonhosted.org/packages/68/df/b1bc00671e10463288ca87db24f80ba120cc80ef83ed4d07b4efa1ba596f/mkdocs_material-9.5.5-py3-none-any.whl", hash = "sha256:ac50b2431a79a3b160fdefbba37c9132485f1a69166aba115ad49fafdbbbc5df"}, + {url = "https://files.pythonhosted.org/packages/4b/2b/e61b001bf4b466896120a043d944198d33607faa19e4432f913fc38c3426/mkdocs_material-9.5.6.tar.gz", hash = "sha256:5b24df36d8ac6cecd611241ce6f6423ccde3e1ad89f8360c3f76d5565fc2d82a"}, + {url = "https://files.pythonhosted.org/packages/a9/57/500d1548e69090c842b91ff653099313118f2fc2f15e9cc87788e746b2cd/mkdocs_material-9.5.6-py3-none-any.whl", hash = "sha256:e115b90fccf5cd7f5d15b0c2f8e6246b21041628b8f590630e7fca66ed7fcf6c"}, ] [[package]] @@ -1950,23 +1950,23 @@ files = [ [[package]] name = "mkdocs-material" -version = "9.5.5" +version = "9.5.6" extras = ["imaging"] requires_python = ">=3.8" summary = "Documentation that simply works" dependencies = [ "cairosvg~=2.6", - "mkdocs-material==9.5.5", + "mkdocs-material==9.5.6", "pillow~=10.2", ] files = [ - {url = "https://files.pythonhosted.org/packages/61/61/c97396dd6a8b907ece79af0478e1c5bda9640ebea9ee1ea2bdc7b70cf88e/mkdocs_material-9.5.5.tar.gz", hash = "sha256:4480d9580faf42fed0123d0465502bfc1c0c239ecc9c4d66159cf0459ea1b4ae"}, - {url = "https://files.pythonhosted.org/packages/68/df/b1bc00671e10463288ca87db24f80ba120cc80ef83ed4d07b4efa1ba596f/mkdocs_material-9.5.5-py3-none-any.whl", hash = "sha256:ac50b2431a79a3b160fdefbba37c9132485f1a69166aba115ad49fafdbbbc5df"}, + {url = "https://files.pythonhosted.org/packages/4b/2b/e61b001bf4b466896120a043d944198d33607faa19e4432f913fc38c3426/mkdocs_material-9.5.6.tar.gz", hash = "sha256:5b24df36d8ac6cecd611241ce6f6423ccde3e1ad89f8360c3f76d5565fc2d82a"}, + {url = "https://files.pythonhosted.org/packages/a9/57/500d1548e69090c842b91ff653099313118f2fc2f15e9cc87788e746b2cd/mkdocs_material-9.5.6-py3-none-any.whl", hash = "sha256:e115b90fccf5cd7f5d15b0c2f8e6246b21041628b8f590630e7fca66ed7fcf6c"}, ] [[package]] name = "mkdocs-minify-plugin" -version = "0.7.2" +version = "0.8.0" requires_python = ">=3.8" summary = "An MkDocs plugin to minify HTML, JS or CSS files prior to being written to disk" dependencies = [ @@ -1976,8 +1976,8 @@ dependencies = [ "mkdocs>=1.4.1", ] files = [ - {url = "https://files.pythonhosted.org/packages/46/e7/417d1f8a59a04d30dcbc5458f11f119a18630b627d17ffbb546e9d9f9897/mkdocs-minify-plugin-0.7.2.tar.gz", hash = "sha256:6a551e22d6517eaef9e1890afd60021dc1dcd1255de02d266f588d1ace040713"}, - {url = "https://files.pythonhosted.org/packages/8b/08/6c1a5a558970d1c4d31780c2072cae1f9410ba549ea8788da96767c3452d/mkdocs_minify_plugin-0.7.2-py3-none-any.whl", hash = "sha256:ae8bfc4a68806883e990ea025938b3f989da7b9fa08ea8390dba47adf25e0c5b"}, + {url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6"}, + {url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d"}, ] [[package]] @@ -2540,18 +2540,18 @@ files = [ [[package]] name = "pytest" -version = "7.4.4" -requires_python = ">=3.7" +version = "8.0.0" +requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" dependencies = [ "colorama; sys_platform == \"win32\"", "iniconfig", "packaging", - "pluggy<2.0,>=0.12", + "pluggy<2.0,>=1.3.0", ] files = [ - {url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {url = "https://files.pythonhosted.org/packages/50/fd/af2d835eed57448960c4e7e9ab76ee42f24bcdd521e967191bc26fa2dece/pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {url = "https://files.pythonhosted.org/packages/c7/10/727155d44c5e04bb08e880668e53079547282e4f950535234e5a80690564/pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, ] [[package]] @@ -2595,16 +2595,16 @@ files = [ [[package]] name = "pytest-httpx" -version = "0.28.0" +version = "0.29.0" requires_python = ">=3.9" summary = "Send responses to httpx." dependencies = [ "httpx==0.26.*", - "pytest==7.*", + "pytest<9,>=7", ] files = [ - {url = "https://files.pythonhosted.org/packages/17/d0/92904c6313ab6960a1e07d1ebe7d3ae2f2cff714cbae53c1f2bc2f0b4b26/pytest_httpx-0.28.0.tar.gz", hash = "sha256:a82505fdf59f19eaaf2853db3f3832b3dee35d3bc58000232db2b65c5fca0614"}, - {url = "https://files.pythonhosted.org/packages/3e/96/e5bc2ebdfbd46cd5bd7a891fa0c30123e5fc7cfe3e1e5191355f4c6234f3/pytest_httpx-0.28.0-py3-none-any.whl", hash = "sha256:045774556a3633688742315a6981aab2806ce93bcbcc8444253ab87bca286800"}, + {url = "https://files.pythonhosted.org/packages/1c/2c/ac24ee71a486bae499228e455aa99d7c49571ce1d86c57c8277ef03916ba/pytest_httpx-0.29.0.tar.gz", hash = "sha256:ed08ed802e2b315b83cdd16f0b26cbb2b836c29e0fde5c18bc3105f1073e0332"}, + {url = "https://files.pythonhosted.org/packages/42/0a/f85e3bb81adb7e48474fa770fdb843388de342523ec6573a6876787c82c1/pytest_httpx-0.29.0-py3-none-any.whl", hash = "sha256:7d6fd29042e7b98ed98199ded120bc8100c8078ca306952666e89bf8807b95ff"}, ] [[package]] @@ -2953,27 +2953,27 @@ files = [ [[package]] name = "ruff" -version = "0.1.13" +version = "0.1.15" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." files = [ - {url = "https://files.pythonhosted.org/packages/14/11/85823f21d1dd7beec2a684593bc4e771f677c5baec8d8c4fbb318110fdb2/ruff-0.1.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b13ba5d7156daaf3fd08b6b993360a96060500aca7e307d95ecbc5bb47a69296"}, - {url = "https://files.pythonhosted.org/packages/26/3b/99d3a67e377e86c48660a73416711d0f1390e47444d54cc103db3c8de409/ruff-0.1.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6894b00495e00c27b6ba61af1fc666f17de6140345e5ef27dd6e08fb987259d"}, - {url = "https://files.pythonhosted.org/packages/36/23/f440bd8ca4b3a3c315bf3e840145ec813547ef754a14f905d0b9c2a0caaf/ruff-0.1.13-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e3fd36e0d48aeac672aa850045e784673449ce619afc12823ea7868fcc41d8ba"}, - {url = "https://files.pythonhosted.org/packages/73/54/9476fa803f4d4ca1f758128025a4bfb9ed9ff3223044fcfab8adb3d2f345/ruff-0.1.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dcaab50e278ff497ee4d1fe69b29ca0a9a47cd954bb17963628fa417933c6eb1"}, - {url = "https://files.pythonhosted.org/packages/84/df/1e6f44ec3ac0dd0ab40788387b3e230b9e0450c0ca6bf29b0580e2f2d806/ruff-0.1.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2f59bcf5217c661254bd6bc42d65a6fd1a8b80c48763cb5c2293295babd945dd"}, - {url = "https://files.pythonhosted.org/packages/8c/18/cf5732c19de9e87c7e6bf2c70db2e3c39cd022b2c3614e8df432cd499a81/ruff-0.1.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7a36fa90eb12208272a858475ec43ac811ac37e91ef868759770b71bdabe27b6"}, - {url = "https://files.pythonhosted.org/packages/8d/eb/434446d79e265faf886a0bb6f3578552571861ddefd0f72585c3c8f80850/ruff-0.1.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9fb6b3b86450d4ec6a6732f9f60c4406061b6851c4b29f944f8c9d91c3611c7a"}, - {url = "https://files.pythonhosted.org/packages/9a/54/6ef6d55555bfffecb1870a46fa62c74ee900e22e505b24a8a08f7a5b812b/ruff-0.1.13-py3-none-win_arm64.whl", hash = "sha256:6bbbc3042075871ec17f28864808540a26f0f79a4478c357d3e3d2284e832998"}, - {url = "https://files.pythonhosted.org/packages/a3/93/c04251f638553f023ea2ee7384efa65a0a9080080a820beb6b7a7e66599e/ruff-0.1.13-py3-none-win_amd64.whl", hash = "sha256:f988746e3c3982bea7f824c8fa318ce7f538c4dfefec99cd09c8770bd33e6539"}, - {url = "https://files.pythonhosted.org/packages/b2/ab/e178659aa6ab71b230f1a9d134b94b137e57db5512822150afb6dea1b557/ruff-0.1.13.tar.gz", hash = "sha256:e261f1baed6291f434ffb1d5c6bd8051d1c2a26958072d38dfbec39b3dda7352"}, - {url = "https://files.pythonhosted.org/packages/bb/33/a63195d2e4972fdeb7e5576b795bf0251a23d281bbd12db2686e171bfff7/ruff-0.1.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f57de973de4edef3ad3044d6a50c02ad9fc2dff0d88587f25f1a48e3f72edf5e"}, - {url = "https://files.pythonhosted.org/packages/c0/05/150fda0258e363eb9a3473216f05f2af6855e1164f7782bac9da46526128/ruff-0.1.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5f0312ba1061e9b8c724e9a702d3c8621e3c6e6c2c9bd862550ab2951ac75c16"}, - {url = "https://files.pythonhosted.org/packages/ce/c8/0a8e26b64a5bbf6ae4d297b4b6b97949614ce799ea28f4621ccd05c266cb/ruff-0.1.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226b517f42d59a543d6383cfe03cccf0091e3e0ed1b856c6824be03d2a75d3b6"}, - {url = "https://files.pythonhosted.org/packages/df/2e/283cd50b9605fe765b77df22fd3a0be19689b00030e7609338ab50f8b603/ruff-0.1.13-py3-none-win32.whl", hash = "sha256:a623349a505ff768dad6bd57087e2461be8db58305ebd5577bd0e98631f9ae69"}, - {url = "https://files.pythonhosted.org/packages/e4/a4/afec3423ecb1dfb134f95060c41fd3c9f30d122234660fd20652027a9fa8/ruff-0.1.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1600942485c6e66119da294c6294856b5c86fd6df591ce293e4a4cc8e72989"}, - {url = "https://files.pythonhosted.org/packages/e8/9b/57ce6dfbcacd82d66ded19a80d2b595f9a75df1a185a169cf97ec109330d/ruff-0.1.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ee3febce7863e231a467f90e681d3d89210b900d49ce88723ce052c8761be8c7"}, - {url = "https://files.pythonhosted.org/packages/ef/62/ba7510290912b600b919a8a476505270064467474631da05890623d183b7/ruff-0.1.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9ebb40442f7b531e136d334ef0851412410061e65d61ca8ce90d894a094feb22"}, + {url = "https://files.pythonhosted.org/packages/0c/57/dbc885f94450335fcff82301c4b25cf614894e79d9afbd249714e709ab42/ruff-0.1.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4025ac5e87d9b80e1f300207eb2fd099ff8200fa2320d7dc066a3f4622dc6b"}, + {url = "https://files.pythonhosted.org/packages/11/2c/fac0658910ea3ea87a23583e58277533154261b73f9460388eb2e6e02e8f/ruff-0.1.15-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5fe8d54df166ecc24106db7dd6a68d44852d14eb0729ea4672bb4d96c320b7df"}, + {url = "https://files.pythonhosted.org/packages/18/d7/2199ecb42cef4d70de0e72ce4ca8878d060e25fe4434cb66f51e26158a2a/ruff-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d432aec35bfc0d800d4f70eba26e23a352386be3a6cf157083d18f6f5881c8"}, + {url = "https://files.pythonhosted.org/packages/2b/5f/3ba51cc770ed2b2df88efc32bba26759e6ac5c6149319a60913a85230936/ruff-0.1.15-py3-none-win_amd64.whl", hash = "sha256:3837ac73d869efc4182d9036b1405ef4c73d9b1f88da2413875e34e0d6919587"}, + {url = "https://files.pythonhosted.org/packages/39/75/8dea2fc156ae525971fdada8723f78e605dcf89428f5686728438b12f9ef/ruff-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b17b93c02cdb6aeb696effecea1095ac93f3884a49a554a9afa76bb125c114c1"}, + {url = "https://files.pythonhosted.org/packages/42/33/7165f88a156be1c2fd13a18b3af6e75bbf82da5b6978cd2128d666accc18/ruff-0.1.15.tar.gz", hash = "sha256:f6dfa8c1b21c913c326919056c390966648b680966febcb796cc9d1aaab8564e"}, + {url = "https://files.pythonhosted.org/packages/47/41/96b770475c46590bfd051ca0c5f797b2d45f2638c45f3a9daf1ae55b96d6/ruff-0.1.15-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ddb87643be40f034e97e97f5bc2ef7ce39de20e34608f3f829db727a93fb82c5"}, + {url = "https://files.pythonhosted.org/packages/55/09/c09d0f9b41d1f5e3de117579f2fcdb7063fd76cd92d6614eae1b77ccbccb/ruff-0.1.15-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6f8ad828f01e8dd32cc58bc28375150171d198491fc901f6f98d2a39ba8e3ff5"}, + {url = "https://files.pythonhosted.org/packages/5b/c1/2116927385c761ffb786dfb77654a634ecd7803dee4de3b47b59536374f1/ruff-0.1.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f0bfbb53c4b4de117ac4d6ddfd33aa5fc31beeaa21d23c45c6dd249faf9126f"}, + {url = "https://files.pythonhosted.org/packages/72/48/c9dfc2c87dc6b92446d8092c2be25b42ca4fb201cecb2499996ccf483c34/ruff-0.1.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86811954eec63e9ea162af0ffa9f8d09088bab51b7438e8b6488b9401863c25e"}, + {url = "https://files.pythonhosted.org/packages/8d/61/ffdccecb0b39521d7060d6a6bc33c53d7f20d48d3511d6333cb01f26e979/ruff-0.1.15-py3-none-win32.whl", hash = "sha256:2417e1cb6e2068389b07e6fa74c306b2810fe3ee3476d5b8a96616633f40d14f"}, + {url = "https://files.pythonhosted.org/packages/98/fa/2a627747a5a5f7e1d3447704f795fd35d486460838485762cd569ef8eb0e/ruff-0.1.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66ec24fe36841636e814b8f90f572a8c0cb0e54d8b5c2d0e300d28a0d7bffec"}, + {url = "https://files.pythonhosted.org/packages/b8/85/da93f0fc8f2424cf776fcce6daef9291162345179d16faf1401ff2890068/ruff-0.1.15-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6c629cf64bacfd136c07c78ac10a54578ec9d1bd2a9d395efbee0935868bf852"}, + {url = "https://files.pythonhosted.org/packages/bb/e0/8a6f9db2c5b8c7108c7e7347cd6beca805d1b2ae618569c72f2515d11e52/ruff-0.1.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9405fa9ac0e97f35aaddf185a1be194a589424b8713e3b97b762336ec79ff807"}, + {url = "https://files.pythonhosted.org/packages/c9/bd/c196493563d6bf8fe960f10b83926a3fae3a43a96eac6b263aecb96c61d7/ruff-0.1.15-py3-none-win_arm64.whl", hash = "sha256:9a933dfb1c14ec7a33cceb1e49ec4a16b51ce3c20fd42663198746efc0427360"}, + {url = "https://files.pythonhosted.org/packages/e5/bf/de34ad339e0d1f6faa858cbcf793f3abc168b7aa516dd9227d843b992be8/ruff-0.1.15-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1bab866aafb53da39c2cadfb8e1c4550ac5340bb40300083eb8967ba25481447"}, + {url = "https://files.pythonhosted.org/packages/e8/ca/4066dbcc3631a4efe1fe695f42f20aca50474d760b3bd8e57d7565d75aa5/ruff-0.1.15-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:abf4822129ed3a5ce54383d5f0e964e7fef74a41e48eb1dfad404151efc130a2"}, ] [[package]] @@ -3136,22 +3136,22 @@ files = [ [[package]] name = "types-markdown" -version = "3.5.0.20240106" +version = "3.5.0.20240129" requires_python = ">=3.8" summary = "Typing stubs for Markdown" files = [ - {url = "https://files.pythonhosted.org/packages/0d/31/8eb2bdef2e4fc022140b06d55ce10dfbf3d320ff8d55217d11087c6c13c0/types_Markdown-3.5.0.20240106-py3-none-any.whl", hash = "sha256:c23569d33718475dfae25c0036c6e6866f409e7077ee8a0728ab3db263d8e4a5"}, - {url = "https://files.pythonhosted.org/packages/41/5a/0edc47c110d79900fa84c445ab13ebf19425065473e1620d207b197a0535/types-Markdown-3.5.0.20240106.tar.gz", hash = "sha256:be47d35cbe61d458bd17aec127f1da233cd6ed96fa9a131c710378a4e8857030"}, + {url = "https://files.pythonhosted.org/packages/d5/95/5600142d29962bb1a4325cacf32e95890757a6139e2739ef410da373aee3/types_Markdown-3.5.0.20240129-py3-none-any.whl", hash = "sha256:d6861d9d68e8268a5346d8a43d14727e6c636ebc6d49f2b8fc034c25996d35dd"}, + {url = "https://files.pythonhosted.org/packages/fe/16/7cb777f8f4381b19729966fdb261a3023f222e9cf08f1a2a22165557884f/types-Markdown-3.5.0.20240129.tar.gz", hash = "sha256:9acd36fef264d9ed5a96345c45f7d80f0d967059e92213998b3046fbb64f67fc"}, ] [[package]] name = "types-protobuf" -version = "4.24.0.20240106" +version = "4.24.0.20240129" requires_python = ">=3.8" summary = "Typing stubs for protobuf" files = [ - {url = "https://files.pythonhosted.org/packages/88/27/91ec2a6644adc446730c6ddd4353d31bb95158c5f9481a5e11c176259d75/types_protobuf-4.24.0.20240106-py3-none-any.whl", hash = "sha256:0612ef3156bd80567460a15ac7c109b313f6022f1fee04b4d922ab2789baab79"}, - {url = "https://files.pythonhosted.org/packages/e3/d0/8e009dc38402759815e718c27547a798febf55503a5245e82b6c2a030767/types-protobuf-4.24.0.20240106.tar.gz", hash = "sha256:024f034f3b5e2bb2bbff55ebc4d591ed0d2280d90faceedcb148b9e714a3f3ee"}, + {url = "https://files.pythonhosted.org/packages/2e/79/b2b7cbe088f803ad1fd8b454f848a097390eaa1ad761c32d69f3c8f2672b/types-protobuf-4.24.0.20240129.tar.gz", hash = "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891"}, + {url = "https://files.pythonhosted.org/packages/82/e6/eb15d73595b0f33ec08392f10280f89441b720f5f43d30426219a014ab1c/types_protobuf-4.24.0.20240129-py3-none-any.whl", hash = "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead"}, ] [[package]] @@ -3211,25 +3211,25 @@ files = [ [[package]] name = "types-requests" -version = "2.31.0.20240106" +version = "2.31.0.20240125" requires_python = ">=3.8" summary = "Typing stubs for requests" dependencies = [ "urllib3>=2", ] files = [ - {url = "https://files.pythonhosted.org/packages/69/be/af3ec284a5dd21cffc84fa0088211adf896b6e5e862ce9b1ead212e51b0e/types_requests-2.31.0.20240106-py3-none-any.whl", hash = "sha256:da997b3b6a72cc08d09f4dba9802fdbabc89104b35fe24ee588e674037689354"}, - {url = "https://files.pythonhosted.org/packages/db/da/fc326bbcaf723b5ce4d92f8338724d02a4942198ed0d3b1376dc3c21f79e/types-requests-2.31.0.20240106.tar.gz", hash = "sha256:0e1c731c17f33618ec58e022b614a1a2ecc25f7dc86800b36ef341380402c612"}, + {url = "https://files.pythonhosted.org/packages/ae/29/3290a0d17865b9ec3d54fbb17faa265d9de7e856b6a3b52dfdf3507efd7c/types_requests-2.31.0.20240125-py3-none-any.whl", hash = "sha256:9592a9a4cb92d6d75d9b491a41477272b710e021011a2a3061157e2fb1f1a5d1"}, + {url = "https://files.pythonhosted.org/packages/d9/7f/fb937e67e242dc191716860f6f16c6b57d2b20896e98a15ca5c298bd18b4/types-requests-2.31.0.20240125.tar.gz", hash = "sha256:03a28ce1d7cd54199148e043b2079cdded22d6795d19a2c2a6791a4b2b5e2eb5"}, ] [[package]] name = "types-setuptools" -version = "69.0.0.20240115" +version = "69.0.0.20240125" requires_python = ">=3.8" summary = "Typing stubs for setuptools" files = [ - {url = "https://files.pythonhosted.org/packages/07/64/bd87e18c7cdd21636140750ba7a3f4c6551c1baef969445a927185ec374a/types-setuptools-69.0.0.20240115.tar.gz", hash = "sha256:1a9c863899f40cbe2053d0cd1d00ddef0330b492335467d018f73c1fec9462a3"}, - {url = "https://files.pythonhosted.org/packages/e6/fb/d0816b1029d3204ad4ed7f7d11786afd3cdcfebc4f0c0586cf5d1177cf82/types_setuptools-69.0.0.20240115-py3-none-any.whl", hash = "sha256:7409e774c69e1810cb45052dbaed839fc30302e86a3ff945172ef2a2e7ab46f8"}, + {url = "https://files.pythonhosted.org/packages/33/d2/d51f630222844d3d39dc80cb7f34f3df1765ee2ffed22f9b82e111afe1cc/types-setuptools-69.0.0.20240125.tar.gz", hash = "sha256:22ad498cb585b22ce8c97ada1fccdf294a2e0dd7dc984a28535a84ea82f45b3f"}, + {url = "https://files.pythonhosted.org/packages/b8/b9/fd100e50ab166e5c2a6933f04c711e378b6ec93e2c74f84a693aa408d8e1/types_setuptools-69.0.0.20240125-py3-none-any.whl", hash = "sha256:00835f959ff24ebc32c55da8df9d46e8df25e3c4bfacb43e98b61fde51a4bc41"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 1e5eb06..6fabd65 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,9 @@ classifiers = [ dynamic = ["version"] [project.urls] -Source = "https://github.com/ManoManoTech/firefighter-incident" +Repository = "https://github.com/ManoManoTech/firefighter-incident" +Documentation = "https://manomanotech.github.io/firefighter-incident/latest/" +Changelog = "https://github.com/ManoManoTech/firefighter-incident/releases" [project.scripts] ff-web = "main:main" @@ -413,7 +415,7 @@ django_settings_module = "firefighter.firefighter.settings" [tool.pytest.ini_options] testpaths = ["tests"] # markers = [{unit="tests that are isolated from the db, external api calls and other mockable internal code."}] -norecursedirs = "*.egg .eggs dist build docs .tox .git __pycache__ node_modules .venv __pypackages__" +norecursedirs = "*.egg .eggs dist build docs .tox .git __pycache__ node_modules .venv" timeout = 15 # Ignore deprecation warnings from libs filterwarnings = [ @@ -535,7 +537,7 @@ external = [ "__init__.py" = ["F401"] "_version.py" = ["Q000", "UP", "I"] "**/settings_builder.py" = ["F403"] -"tests/*" = ["S101", "D", "ANN", "PLR2004", "INP", "DTZ005", "TCH", "SLF001"] +"tests/*" = ["S101", "D", "ANN", "PLR2004", "INP", "DTZ005", "TCH", "SLF001", "PLC2701"] "**/migrations/*" = ["PLR", "D", "ANN", "ARG", "N806", "I002"] "stubs/*" = ["ARG", "ANN", "D", "INP", "TCH"] "**/apps.py" = ["F401", "PLC0415"] diff --git a/src/firefighter/firefighter/http_client.py b/src/firefighter/firefighter/http_client.py index c57d2ea..f66f47d 100644 --- a/src/firefighter/firefighter/http_client.py +++ b/src/firefighter/firefighter/http_client.py @@ -6,9 +6,9 @@ import httpx from django.conf import settings -FF_HTTP_CLIENT_ADDITIONAL_HEADERS: dict[ - str, Any -] | None = settings.FF_HTTP_CLIENT_ADDITIONAL_HEADERS +FF_HTTP_CLIENT_ADDITIONAL_HEADERS: dict[str, Any] | None = ( + settings.FF_HTTP_CLIENT_ADDITIONAL_HEADERS +) class HttpClient: diff --git a/src/firefighter/firefighter/settings/__init__.py b/src/firefighter/firefighter/settings/__init__.py index 0a8808c..1d6e93d 100644 --- a/src/firefighter/firefighter/settings/__init__.py +++ b/src/firefighter/firefighter/settings/__init__.py @@ -10,6 +10,7 @@ ``` """ + # ruff: noqa: E402, F403 # pylint: disable=wrong-import-position # isort: off diff --git a/src/firefighter/firefighter/settings/environments/prod.py b/src/firefighter/firefighter/settings/environments/prod.py index 1025377..d5570ba 100644 --- a/src/firefighter/firefighter/settings/environments/prod.py +++ b/src/firefighter/firefighter/settings/environments/prod.py @@ -2,6 +2,7 @@ This file is required and if `ENV=dev` these values are not used. """ + from __future__ import annotations from pathlib import Path diff --git a/src/firefighter/firefighter/urls.py b/src/firefighter/firefighter/urls.py index 4b9a26e..703929a 100644 --- a/src/firefighter/firefighter/urls.py +++ b/src/firefighter/firefighter/urls.py @@ -20,6 +20,7 @@ 1. Import the include() function: `from django.urls import include, path` 2. Add a URL to urlpatterns: `path('blog/', include('blog.urls'))` """ + from __future__ import annotations import sys diff --git a/src/firefighter/firefighter/wsgi.py b/src/firefighter/firefighter/wsgi.py index 2dab3d4..1219428 100644 --- a/src/firefighter/firefighter/wsgi.py +++ b/src/firefighter/firefighter/wsgi.py @@ -5,6 +5,7 @@ For more information on this file, see https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ """ + from __future__ import annotations # We need to be able to shadow virtualenv things with our own code diff --git a/src/firefighter/incidents/models/incident.py b/src/firefighter/incidents/models/incident.py index 56fb9cd..1bd877c 100644 --- a/src/firefighter/incidents/models/incident.py +++ b/src/firefighter/incidents/models/incident.py @@ -460,9 +460,9 @@ def build_invite_list(self) -> list[User]: users_list: list[User] = [] # Send signal to modules (Confluence, PagerDuty...) - result_users: list[ - tuple[Any, Exception | list[User]] - ] = signals.get_invites.send_robust(sender=None, incident=self) + result_users: list[tuple[Any, Exception | list[User]]] = ( + signals.get_invites.send_robust(sender=None, incident=self) + ) # Aggregate the results for provider in result_users: diff --git a/src/firefighter/incidents/views/errors.py b/src/firefighter/incidents/views/errors.py index 46bad7a..5ecf952 100644 --- a/src/firefighter/incidents/views/errors.py +++ b/src/firefighter/incidents/views/errors.py @@ -2,7 +2,6 @@ https://github.com/django/django/blob/0dd29209091280ccf34e07c9468746c396b7778e/django/views/defaults.py. """ - from __future__ import annotations import logging @@ -43,9 +42,9 @@ class JsonHttpResponseBadRequest(JsonResponse, HttpResponseBadRequest): pass -ERROR_404_TEMPLATE_NAME = ( - ERROR_403_TEMPLATE_NAME -) = ERROR_400_TEMPLATE_NAME = ERROR_500_TEMPLATE_NAME = "incidents/errors/base.html" +ERROR_404_TEMPLATE_NAME = ERROR_403_TEMPLATE_NAME = ERROR_400_TEMPLATE_NAME = ( + ERROR_500_TEMPLATE_NAME +) = "incidents/errors/base.html" BACKUP_ERROR_PAGE_TEMPLATE = """ diff --git a/src/firefighter/pagerduty/tasks/__init__.py b/src/firefighter/pagerduty/tasks/__init__.py index 735c619..40ce0f7 100644 --- a/src/firefighter/pagerduty/tasks/__init__.py +++ b/src/firefighter/pagerduty/tasks/__init__.py @@ -1,4 +1,5 @@ """PagerDuty Celery tasks.""" + from __future__ import annotations from firefighter.pagerduty.tasks.fetch_oncall import fetch_oncalls diff --git a/src/firefighter/slack/messages/slack_messages.py b/src/firefighter/slack/messages/slack_messages.py index 9d39f5b..543177f 100644 --- a/src/firefighter/slack/messages/slack_messages.py +++ b/src/firefighter/slack/messages/slack_messages.py @@ -339,9 +339,9 @@ def get_metadata(self) -> Metadata: event_payload={ "ff_type": self.id, "incident_id": self.incident.id, - "incident_update_id": str(self.incident_update.id) - if self.incident_update - else None, + "incident_update_id": ( + str(self.incident_update.id) if self.incident_update else None + ), "new_roles": { role.role_type.slug: user_slack_handle_or_name( role.user if hasattr(role, "user") else None @@ -491,13 +491,15 @@ def get_blocks(self) -> list[Block]: SectionBlock( block_id="message_status_update", fields=fields, - accessory=ButtonElement( - text="Update", - value=str(self.incident.id), - action_id=UpdateStatusModal.open_action, - ) - if self.in_channel - else None, + accessory=( + ButtonElement( + text="Update", + value=str(self.incident.id), + action_id=UpdateStatusModal.open_action, + ) + if self.in_channel + else None + ), ), ] ) diff --git a/src/firefighter/slack/rules.py b/src/firefighter/slack/rules.py index 3997a0f..ab2a80f 100644 --- a/src/firefighter/slack/rules.py +++ b/src/firefighter/slack/rules.py @@ -2,6 +2,7 @@ This module may be removed in a future version. """ + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/src/firefighter/slack/signals/create_incident_conversation.py b/src/firefighter/slack/signals/create_incident_conversation.py index 3b5c8ca..41525a9 100644 --- a/src/firefighter/slack/signals/create_incident_conversation.py +++ b/src/firefighter/slack/signals/create_incident_conversation.py @@ -3,6 +3,7 @@ XXX It might be divided into two signals/tasks, one for creating, one for inviting. XXX Sending the end signal should be done by this signal's caller, not by this signal receiver directly. """ + from __future__ import annotations import logging diff --git a/src/firefighter/slack/views/events/home.py b/src/firefighter/slack/views/events/home.py index c1aee04..7e71f0c 100644 --- a/src/firefighter/slack/views/events/home.py +++ b/src/firefighter/slack/views/events/home.py @@ -52,7 +52,6 @@ def update_home_tab( event: dict[str, Any], client: WebClient = DefaultWebClient ) -> None: logger.debug(event) - # Show only the latest 30 incidents, as Slack does not allow more than 100 elements shown_incidents = list( Incident.objects.filter(_status__lt=IncidentStatus.CLOSED.value) @@ -154,20 +153,22 @@ def _home_incident_element( text=f":speaking_head_in_silhouette: *Last update:* {date_time(incident.updated_at) }" ), ], - accessory=OverflowMenuElement( - action_id="app_home_incident_action", - options=[ - Option(text="Update status", value="update_status"), - Option( - text="See status page", - url=incident.status_page_url - + "?utm_medium=FireFighter+Slack&utm_source=Slack+Home&utm_campaign=Slack+Home+Button", - value="open_link", - ), - ], - ) - if show_actions - else None, + accessory=( + OverflowMenuElement( + action_id="app_home_incident_action", + options=[ + Option(text="Update status", value="update_status"), + Option( + text="See status page", + url=incident.status_page_url + + "?utm_medium=FireFighter+Slack&utm_source=Slack+Home&utm_campaign=Slack+Home+Button", + value="open_link", + ), + ], + ) + if show_actions + else None + ), ), slack_block_quote(incident.description, length=1500), ] diff --git a/src/firefighter/slack/views/modals/close.py b/src/firefighter/slack/views/modals/close.py index df0011c..4a2dcdb 100644 --- a/src/firefighter/slack/views/modals/close.py +++ b/src/firefighter/slack/views/modals/close.py @@ -109,18 +109,20 @@ def build_modal_fn( ), ActionsBlock( elements=[ - ButtonElement( - text="Fill the post-mortem on Confluence", - action_id="open_link", - url=incident.postmortem_for.page_edit_url, - style="primary", - ) - if hasattr(incident, "postmortem_for") - else ButtonElement( - text="Create the post-mortem", - action_id=str(PostMortemModal.push_action), - value=str(incident.id), - style="primary", + ( + ButtonElement( + text="Fill the post-mortem on Confluence", + action_id="open_link", + url=incident.postmortem_for.page_edit_url, + style="primary", + ) + if hasattr(incident, "postmortem_for") + else ButtonElement( + text="Create the post-mortem", + action_id=str(PostMortemModal.push_action), + value=str(incident.id), + style="primary", + ) ), ButtonElement( text="Update status", diff --git a/src/firefighter/slack/views/modals/key_event_message.py b/src/firefighter/slack/views/modals/key_event_message.py index 0c15b77..4bdc841 100644 --- a/src/firefighter/slack/views/modals/key_event_message.py +++ b/src/firefighter/slack/views/modals/key_event_message.py @@ -88,15 +88,15 @@ def handle_modal_fn( # type: ignore[override] """Handle the time and date inputs for the key events.""" logger.debug(body) - slack_form: SlackForm[ - IncidentUpdateKeyEventsForm - ] | None = self.handle_form_errors( - ack, - body, - forms_kwargs={ - "incident": incident, - "user": user, - }, + slack_form: SlackForm[IncidentUpdateKeyEventsForm] | None = ( + self.handle_form_errors( + ack, + body, + forms_kwargs={ + "incident": incident, + "user": user, + }, + ) ) form = slack_form.form if slack_form else None diff --git a/src/firefighter/slack/views/modals/open.py b/src/firefighter/slack/views/modals/open.py index ab1dbe4..745ecc7 100644 --- a/src/firefighter/slack/views/modals/open.py +++ b/src/firefighter/slack/views/modals/open.py @@ -97,9 +97,9 @@ def build_modal_fn(self, open_incident_context: OpeningData | None = None, user: ): open_incident_context["details_form_data"] = {} assert open_incident_context["details_form_data"] is not None # noqa: S101 - open_incident_context["details_form_data"][ - "priority" - ] = open_incident_context["priority"] + open_incident_context["details_form_data"]["priority"] = ( + open_incident_context["priority"] + ) # Make blocks with all this context intro_blocks = self.get_intro_blocks() @@ -353,9 +353,9 @@ def _validate_details_form( if not details_form_modal_class: return False, None, None - details_form_class: type[ - CreateIncidentFormBase - ] = details_form_modal_class.form_class + details_form_class: type[CreateIncidentFormBase] = ( + details_form_modal_class.form_class + ) if not details_form_class: return False, None, None @@ -482,9 +482,9 @@ def handle_modal_fn( # type: ignore data, incident_type_value ) if details_form_modal_class: - details_form_class: type[ - CreateIncidentFormBase - ] = details_form_modal_class.form_class + details_form_class: type[CreateIncidentFormBase] = ( + details_form_modal_class.form_class + ) if details_form_class: details_form: CreateIncidentFormBase = details_form_class( details_form_data_raw diff --git a/src/firefighter/slack/views/modals/opening/details/critical.py b/src/firefighter/slack/views/modals/opening/details/critical.py index c0301a5..42e9d58 100644 --- a/src/firefighter/slack/views/modals/opening/details/critical.py +++ b/src/firefighter/slack/views/modals/opening/details/critical.py @@ -48,11 +48,13 @@ class CreateIncidentFormSlack(CreateIncidentForm): "placeholder": "Select a priority", }, "widget": { - "post_block": SectionBlock( - text=f"_<{settings.SLACK_SEVERITY_HELP_GUIDE_URL}|How to choose the priority?>_" - ) - if settings.SLACK_SEVERITY_HELP_GUIDE_URL - else None, + "post_block": ( + SectionBlock( + text=f"_<{settings.SLACK_SEVERITY_HELP_GUIDE_URL}|How to choose the priority?>_" + ) + if settings.SLACK_SEVERITY_HELP_GUIDE_URL + else None + ), "label_from_instance": lambda obj: f"{obj.emoji} {obj.name} - {obj.description}", }, }, diff --git a/src/firefighter/slack/views/modals/trigger_oncall.py b/src/firefighter/slack/views/modals/trigger_oncall.py index 8785a6d..b81e9c3 100644 --- a/src/firefighter/slack/views/modals/trigger_oncall.py +++ b/src/firefighter/slack/views/modals/trigger_oncall.py @@ -46,16 +46,18 @@ def build_modal_fn(self, incident: Incident, **kwargs: Any) -> View: text=f"You are about to trigger on-call for incident #{incident.id}. Please select the on-call line that you want to trigger." ), DividerBlock(), - InputBlock( - block_id="oncall_service", - label="Select on-call line", - element=RadioButtonsElement( - action_id="select_oncall_service", options=pd_options - ), - ) - if len(pd_options) > 0 - else SectionBlock( - text=":warning: No PagerDuty services in the database! :warning:\nAdministrator action is needed." + ( + InputBlock( + block_id="oncall_service", + label="Select on-call line", + element=RadioButtonsElement( + action_id="select_oncall_service", options=pd_options + ), + ) + if len(pd_options) > 0 + else SectionBlock( + text=":warning: No PagerDuty services in the database! :warning:\nAdministrator action is needed." + ) ), ] @@ -109,9 +111,11 @@ def handle_modal_fn(ack: Ack, body: dict[str, Any], incident: Incident, user: Us title=incident.title, details=incident.description, incident_id=incident.id, - conference_url=incident.slack_channel_url - if incident.slack_channel_url - else incident.status_page_url, + conference_url=( + incident.slack_channel_url + if incident.slack_channel_url + else incident.status_page_url + ), triggered_by=user, ) except Exception as e: # TODO better exception handling diff --git a/src/firefighter/slack/views/modals/update_status.py b/src/firefighter/slack/views/modals/update_status.py index 3d907e4..fa02faa 100644 --- a/src/firefighter/slack/views/modals/update_status.py +++ b/src/firefighter/slack/views/modals/update_status.py @@ -41,11 +41,13 @@ class UpdateStatusFormSlack(UpdateStatusForm): "placeholder": "Select a priority", }, "widget": { - "post_block": SectionBlock( - text=f"_<{settings.SLACK_SEVERITY_HELP_GUIDE_URL}|How to choose the priority?>_" - ) - if settings.SLACK_SEVERITY_HELP_GUIDE_URL - else None, + "post_block": ( + SectionBlock( + text=f"_<{settings.SLACK_SEVERITY_HELP_GUIDE_URL}|How to choose the priority?>_" + ) + if settings.SLACK_SEVERITY_HELP_GUIDE_URL + else None + ), "label_from_instance": priority_label, }, }, diff --git a/tests/conftest.py b/tests/conftest.py index b9fd8cd..f512e7d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,6 +4,7 @@ 1. https://docs.python.org/3/library/doctest.html 2. https://docs.pytest.org/en/latest/doctest.html """ + # pylint: disable=redefined-outer-name from __future__ import annotations diff --git a/tests/test_slack/test_models/test_incident_channel.py b/tests/test_slack/test_models/test_incident_channel.py index e3f09a8..ec0f721 100644 --- a/tests/test_slack/test_models/test_incident_channel.py +++ b/tests/test_slack/test_models/test_incident_channel.py @@ -32,8 +32,8 @@ def test_get_active_slack_users( with patch.object( SlackUser.objects, "add_slack_id_to_user" ) as mock_add_slack_id_to_user: - mock_add_slack_id_to_user.side_effect = ( - lambda user: user if user.is_active else None + mock_add_slack_id_to_user.side_effect = lambda user: ( + user if user.is_active else None ) for i, user in enumerate(users_mapped): @@ -91,10 +91,8 @@ def test_invite_users_to_conversation_individually( with patch.object( incident_channel, "_invite_users_with_slack_id", autospec=True ) as mock_invite_users: - mock_invite_users.side_effect = ( - lambda user_ids, client: user_ids # noqa: ARG005 - if "user1" in user_ids - else SlackApiError + mock_invite_users.side_effect = lambda user_ids, client: ( # noqa: ARG005 + user_ids if "user1" in user_ids else SlackApiError ) invited_slack_ids = incident_channel._invite_users_to_conversation_individually( @@ -220,13 +218,17 @@ def test_invite_users(incident_channel: IncidentChannel, mock_web_client: WebCli user.slack_user = SlackUserFactory(user=user) # Mock the sub-methods of invite_users - with patch.object( - incident_channel, "_get_active_slack_users", autospec=True - ) as mock_get_active_users, patch.object( - incident_channel, "_get_slack_id_list", autospec=True - ) as mock_get_slack_ids, patch.object( - incident_channel, "_invite_users_to_conversation", autospec=True - ) as mock_invite: + with ( + patch.object( + incident_channel, "_get_active_slack_users", autospec=True + ) as mock_get_active_users, + patch.object( + incident_channel, "_get_slack_id_list", autospec=True + ) as mock_get_slack_ids, + patch.object( + incident_channel, "_invite_users_to_conversation", autospec=True + ) as mock_invite, + ): mock_get_active_users.return_value = users mock_get_slack_ids.return_value = {u.slack_user.slack_id for u in users} mock_invite.return_value = {u.slack_user.slack_id for u in users} @@ -267,13 +269,17 @@ def test_invite_users_one_no_slack( user.slack_user = SlackUserFactory(user=user) # Mock the sub-methods of invite_users - with patch.object( - incident_channel, "_get_active_slack_users", autospec=True - ) as mock_get_active_users, patch.object( - incident_channel, "_get_slack_id_list", autospec=True - ) as mock_get_slack_ids, patch.object( - incident_channel, "_invite_users_to_conversation", autospec=True - ) as mock_invite: + with ( + patch.object( + incident_channel, "_get_active_slack_users", autospec=True + ) as mock_get_active_users, + patch.object( + incident_channel, "_get_slack_id_list", autospec=True + ) as mock_get_slack_ids, + patch.object( + incident_channel, "_invite_users_to_conversation", autospec=True + ) as mock_invite, + ): mock_get_active_users.return_value = users[:-1] mock_get_slack_ids.return_value = {u.slack_user.slack_id for u in users[:-1]} mock_invite.return_value = {u.slack_user.slack_id for u in users[:-1]} @@ -301,9 +307,12 @@ def test_invite_users_all_inactive( u.is_active = False # Mock the sub-methods of invite_users - with patch.object( - incident_channel, "_get_slack_id_list", autospec=True - ) as mock_get_slack_ids, caplog.at_level(logging.INFO): + with ( + patch.object( + incident_channel, "_get_slack_id_list", autospec=True + ) as mock_get_slack_ids, + caplog.at_level(logging.INFO), + ): mock_get_slack_ids.return_value = {} incident_channel.invite_users(users, client=MagicMock())