Bump to 1.5.4

This commit is contained in:
baiqwerdvd 2024-04-27 17:10:31 +08:00
parent 641ef14cc6
commit f96b7a9ed3
No known key found for this signature in database
GPG Key ID: 7717E46E1797411A
13 changed files with 518 additions and 525 deletions

431
pdm.lock generated
View File

@ -3,34 +3,34 @@
[metadata] [metadata]
groups = ["default", "test", "lint"] groups = ["default", "test", "lint"]
cross_platform = true strategy = ["cross_platform"]
static_urls = false lock_version = "4.4.1"
lock_version = "4.3"
content_hash = "sha256:1b338e97a2e31cf80be528667db03a0aaf04dec9a222fc70c4bb9c326736b754" content_hash = "sha256:1b338e97a2e31cf80be528667db03a0aaf04dec9a222fc70c4bb9c326736b754"
[[package]] [[package]]
name = "anyio" name = "anyio"
version = "4.0.0" version = "4.3.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "High level compatibility layer for multiple asynchronous event loop implementations" summary = "High level compatibility layer for multiple asynchronous event loop implementations"
dependencies = [ dependencies = [
"exceptiongroup>=1.0.2; python_version < \"3.11\"", "exceptiongroup>=1.0.2; python_version < \"3.11\"",
"idna>=2.8", "idna>=2.8",
"sniffio>=1.1", "sniffio>=1.1",
"typing-extensions>=4.1; python_version < \"3.11\"",
] ]
files = [ files = [
{file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"},
{file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"},
] ]
[[package]] [[package]]
name = "certifi" name = "certifi"
version = "2023.7.22" version = "2024.2.2"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Python package for providing Mozilla's CA Bundle." summary = "Python package for providing Mozilla's CA Bundle."
files = [ files = [
{file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
{file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
] ]
[[package]] [[package]]
@ -45,137 +45,137 @@ files = [
[[package]] [[package]]
name = "coverage" name = "coverage"
version = "7.3.2" version = "7.5.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Code coverage measurement for Python" summary = "Code coverage measurement for Python"
files = [ files = [
{file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"},
{file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"},
{file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"},
{file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"},
{file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"},
{file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"},
{file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"},
{file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"},
{file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"},
{file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"},
{file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"},
{file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"},
{file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"},
{file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"},
{file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"},
{file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"},
{file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"},
{file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"},
{file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"},
{file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"},
{file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"},
{file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"},
{file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"},
{file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"},
{file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"},
{file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"},
{file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"},
{file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"},
{file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"},
{file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"},
{file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"},
{file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"},
{file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"},
{file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"},
{file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"},
{file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"},
{file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"},
{file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"},
{file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"},
{file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"},
{file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"},
{file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"},
{file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"},
{file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"},
{file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"},
{file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"},
{file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"},
{file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"},
{file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"},
{file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"},
{file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"},
{file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"},
] ]
[[package]] [[package]]
name = "coverage" name = "coverage"
version = "7.3.2" version = "7.5.0"
extras = ["toml"] extras = ["toml"]
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Code coverage measurement for Python" summary = "Code coverage measurement for Python"
dependencies = [ dependencies = [
"coverage==7.3.2", "coverage==7.5.0",
"tomli; python_full_version <= \"3.11.0a6\"", "tomli; python_full_version <= \"3.11.0a6\"",
] ]
files = [ files = [
{file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, {file = "coverage-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:432949a32c3e3f820af808db1833d6d1631664d53dd3ce487aa25d574e18ad1c"},
{file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, {file = "coverage-7.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2bd7065249703cbeb6d4ce679c734bef0ee69baa7bff9724361ada04a15b7e3b"},
{file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, {file = "coverage-7.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbfe6389c5522b99768a93d89aca52ef92310a96b99782973b9d11e80511f932"},
{file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39793731182c4be939b4be0cdecde074b833f6171313cf53481f869937129ed3"},
{file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, {file = "coverage-7.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85a5dbe1ba1bf38d6c63b6d2c42132d45cbee6d9f0c51b52c59aa4afba057517"},
{file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:357754dcdfd811462a725e7501a9b4556388e8ecf66e79df6f4b988fa3d0b39a"},
{file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a81eb64feded34f40c8986869a2f764f0fe2db58c0530d3a4afbcde50f314880"},
{file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, {file = "coverage-7.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51431d0abbed3a868e967f8257c5faf283d41ec882f58413cf295a389bb22e58"},
{file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, {file = "coverage-7.5.0-cp310-cp310-win32.whl", hash = "sha256:f609ebcb0242d84b7adeee2b06c11a2ddaec5464d21888b2c8255f5fd6a98ae4"},
{file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, {file = "coverage-7.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:6782cd6216fab5a83216cc39f13ebe30adfac2fa72688c5a4d8d180cd52e8f6a"},
{file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, {file = "coverage-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e768d870801f68c74c2b669fc909839660180c366501d4cc4b87efd6b0eee375"},
{file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, {file = "coverage-7.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:84921b10aeb2dd453247fd10de22907984eaf80901b578a5cf0bb1e279a587cb"},
{file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, {file = "coverage-7.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:710c62b6e35a9a766b99b15cdc56d5aeda0914edae8bb467e9c355f75d14ee95"},
{file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c379cdd3efc0658e652a14112d51a7668f6bfca7445c5a10dee7eabecabba19d"},
{file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, {file = "coverage-7.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea9d3ca80bcf17edb2c08a4704259dadac196fe5e9274067e7a20511fad1743"},
{file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:41327143c5b1d715f5f98a397608f90ab9ebba606ae4e6f3389c2145410c52b1"},
{file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:565b2e82d0968c977e0b0f7cbf25fd06d78d4856289abc79694c8edcce6eb2de"},
{file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, {file = "coverage-7.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cf3539007202ebfe03923128fedfdd245db5860a36810136ad95a564a2fdffff"},
{file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, {file = "coverage-7.5.0-cp311-cp311-win32.whl", hash = "sha256:bf0b4b8d9caa8d64df838e0f8dcf68fb570c5733b726d1494b87f3da85db3a2d"},
{file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, {file = "coverage-7.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c6384cc90e37cfb60435bbbe0488444e54b98700f727f16f64d8bfda0b84656"},
{file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, {file = "coverage-7.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fed7a72d54bd52f4aeb6c6e951f363903bd7d70bc1cad64dd1f087980d309ab9"},
{file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, {file = "coverage-7.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cbe6581fcff7c8e262eb574244f81f5faaea539e712a058e6707a9d272fe5b64"},
{file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, {file = "coverage-7.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad97ec0da94b378e593ef532b980c15e377df9b9608c7c6da3506953182398af"},
{file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4bacd62aa2f1a1627352fe68885d6ee694bdaebb16038b6e680f2924a9b2cc"},
{file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, {file = "coverage-7.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf032b6c105881f9d77fa17d9eebe0ad1f9bfb2ad25777811f97c5362aa07f2"},
{file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ba01d9ba112b55bfa4b24808ec431197bb34f09f66f7cb4fd0258ff9d3711b1"},
{file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f0bfe42523893c188e9616d853c47685e1c575fe25f737adf473d0405dcfa7eb"},
{file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, {file = "coverage-7.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a9a7ef30a1b02547c1b23fa9a5564f03c9982fc71eb2ecb7f98c96d7a0db5cf2"},
{file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, {file = "coverage-7.5.0-cp312-cp312-win32.whl", hash = "sha256:3c2b77f295edb9fcdb6a250f83e6481c679335ca7e6e4a955e4290350f2d22a4"},
{file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, {file = "coverage-7.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:427e1e627b0963ac02d7c8730ca6d935df10280d230508c0ba059505e9233475"},
{file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, {file = "coverage-7.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9dd88fce54abbdbf4c42fb1fea0e498973d07816f24c0e27a1ecaf91883ce69e"},
{file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, {file = "coverage-7.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a898c11dca8f8c97b467138004a30133974aacd572818c383596f8d5b2eb04a9"},
{file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, {file = "coverage-7.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07dfdd492d645eea1bd70fb1d6febdcf47db178b0d99161d8e4eed18e7f62fe7"},
{file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3d117890b6eee85887b1eed41eefe2e598ad6e40523d9f94c4c4b213258e4a4"},
{file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, {file = "coverage-7.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6afd2e84e7da40fe23ca588379f815fb6dbbb1b757c883935ed11647205111cb"},
{file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9960dd1891b2ddf13a7fe45339cd59ecee3abb6b8326d8b932d0c5da208104f"},
{file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ced268e82af993d7801a9db2dbc1d2322e786c5dc76295d8e89473d46c6b84d4"},
{file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, {file = "coverage-7.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7c211f25777746d468d76f11719e64acb40eed410d81c26cefac641975beb88"},
{file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, {file = "coverage-7.5.0-cp38-cp38-win32.whl", hash = "sha256:262fffc1f6c1a26125d5d573e1ec379285a3723363f3bd9c83923c9593a2ac25"},
{file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, {file = "coverage-7.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:eed462b4541c540d63ab57b3fc69e7d8c84d5957668854ee4e408b50e92ce26a"},
{file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, {file = "coverage-7.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0194d654e360b3e6cc9b774e83235bae6b9b2cac3be09040880bb0e8a88f4a1"},
{file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, {file = "coverage-7.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33c020d3322662e74bc507fb11488773a96894aa82a622c35a5a28673c0c26f5"},
{file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, {file = "coverage-7.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbdf2cae14a06827bec50bd58e49249452d211d9caddd8bd80e35b53cb04631"},
{file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3235d7c781232e525b0761730e052388a01548bd7f67d0067a253887c6e8df46"},
{file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, {file = "coverage-7.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2de4e546f0ec4b2787d625e0b16b78e99c3e21bc1722b4977c0dddf11ca84e"},
{file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0e206259b73af35c4ec1319fd04003776e11e859936658cb6ceffdeba0f5be"},
{file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2055c4fb9a6ff624253d432aa471a37202cd8f458c033d6d989be4499aed037b"},
{file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, {file = "coverage-7.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075299460948cd12722a970c7eae43d25d37989da682997687b34ae6b87c0ef0"},
{file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, {file = "coverage-7.5.0-cp39-cp39-win32.whl", hash = "sha256:280132aada3bc2f0fac939a5771db4fbb84f245cb35b94fae4994d4c1f80dae7"},
{file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, {file = "coverage-7.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:c58536f6892559e030e6924896a44098bc1290663ea12532c78cef71d0df8493"},
{file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, {file = "coverage-7.5.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:2b57780b51084d5223eee7b59f0d4911c31c16ee5aa12737c7a02455829ff067"},
{file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, {file = "coverage-7.5.0.tar.gz", hash = "sha256:cf62d17310f34084c59c01e027259076479128d11e4661bb6c9acb38c5e19bb8"},
] ]
[[package]] [[package]]
name = "exceptiongroup" name = "exceptiongroup"
version = "1.1.3" version = "1.2.1"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Backport of PEP 654 (exception groups)" summary = "Backport of PEP 654 (exception groups)"
files = [ files = [
{file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"},
{file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"},
] ]
[[package]] [[package]]
@ -190,44 +190,43 @@ files = [
[[package]] [[package]]
name = "httpcore" name = "httpcore"
version = "0.18.0" version = "1.0.5"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A minimal low-level HTTP client." summary = "A minimal low-level HTTP client."
dependencies = [ dependencies = [
"anyio<5.0,>=3.0",
"certifi", "certifi",
"h11<0.15,>=0.13", "h11<0.15,>=0.13",
"sniffio==1.*",
] ]
files = [ files = [
{file = "httpcore-0.18.0-py3-none-any.whl", hash = "sha256:adc5398ee0a476567bf87467063ee63584a8bce86078bf748e48754f60202ced"}, {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"},
{file = "httpcore-0.18.0.tar.gz", hash = "sha256:13b5e5cd1dca1a6636a6aaea212b19f4f85cd88c366a2b82304181b769aab3c9"}, {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"},
] ]
[[package]] [[package]]
name = "httpx" name = "httpx"
version = "0.25.0" version = "0.27.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The next generation HTTP client." summary = "The next generation HTTP client."
dependencies = [ dependencies = [
"anyio",
"certifi", "certifi",
"httpcore<0.19.0,>=0.18.0", "httpcore==1.*",
"idna", "idna",
"sniffio", "sniffio",
] ]
files = [ files = [
{file = "httpx-0.25.0-py3-none-any.whl", hash = "sha256:181ea7f8ba3a82578be86ef4171554dd45fec26a02556a744db029a0a27b7100"}, {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"},
{file = "httpx-0.25.0.tar.gz", hash = "sha256:47ecda285389cb32bb2691cc6e069e3ab0205956f681c5b2ad2325719751d875"}, {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"},
] ]
[[package]] [[package]]
name = "idna" name = "idna"
version = "3.4" version = "3.7"
requires_python = ">=3.5" requires_python = ">=3.5"
summary = "Internationalized Domain Names in Applications (IDNA)" summary = "Internationalized Domain Names in Applications (IDNA)"
files = [ files = [
{file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
{file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
] ]
[[package]] [[package]]
@ -242,146 +241,146 @@ files = [
[[package]] [[package]]
name = "msgspec" name = "msgspec"
version = "0.18.4" version = "0.18.6"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML." summary = "A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML."
files = [ files = [
{file = "msgspec-0.18.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4d24a291a3c94a7f5e26e8f5ef93e72bf26c10dfeed4d6ae8fc87ead02f4e265"}, {file = "msgspec-0.18.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:77f30b0234eceeff0f651119b9821ce80949b4d667ad38f3bfed0d0ebf9d6d8f"},
{file = "msgspec-0.18.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9714b78965047638c01c818b4b418133d77e849017de17b0655ee37b714b47a6"}, {file = "msgspec-0.18.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a76b60e501b3932782a9da039bd1cd552b7d8dec54ce38332b87136c64852dd"},
{file = "msgspec-0.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:241277eed9fd91037372519fca62aecf823f7229c1d351030d0be5e3302580c1"}, {file = "msgspec-0.18.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06acbd6edf175bee0e36295d6b0302c6de3aaf61246b46f9549ca0041a9d7177"},
{file = "msgspec-0.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d08175cbb55c1a87dd258645dce6cd00705d6088bf88e7cf510a9d5c24b0720b"}, {file = "msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40a4df891676d9c28a67c2cc39947c33de516335680d1316a89e8f7218660410"},
{file = "msgspec-0.18.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:da13a06e77d683204eee3b134b08ecd5e4759a79014027b1bcd7a12c614b466d"}, {file = "msgspec-0.18.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a6896f4cd5b4b7d688018805520769a8446df911eb93b421c6c68155cdf9dd5a"},
{file = "msgspec-0.18.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73e70217ff5e4ac244c8f1b0769215cbc81e1c904e135597a5b71162857e6c27"}, {file = "msgspec-0.18.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3ac4dd63fd5309dd42a8c8c36c1563531069152be7819518be0a9d03be9788e4"},
{file = "msgspec-0.18.4-cp310-cp310-win_amd64.whl", hash = "sha256:dc25e6100026f5e1ecb5120150f4e78beb909cbeb0eb724b9982361b75c86c6b"}, {file = "msgspec-0.18.6-cp310-cp310-win_amd64.whl", hash = "sha256:fda4c357145cf0b760000c4ad597e19b53adf01382b711f281720a10a0fe72b7"},
{file = "msgspec-0.18.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e14287c3405093645b3812e3436598edd383b9ed724c686852e65d569f39f953"}, {file = "msgspec-0.18.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e77e56ffe2701e83a96e35770c6adb655ffc074d530018d1b584a8e635b4f36f"},
{file = "msgspec-0.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acdcef2fccfff02f80ac8673dbeab205c288b680d81e05bfb5ae0be6b1502a7e"}, {file = "msgspec-0.18.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5351afb216b743df4b6b147691523697ff3a2fc5f3d54f771e91219f5c23aaa"},
{file = "msgspec-0.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b052fd7d25a8aa2ffde10126ee1d97b4c6f3d81f3f3ab1258ff759a2bd794874"}, {file = "msgspec-0.18.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3232fabacef86fe8323cecbe99abbc5c02f7698e3f5f2e248e3480b66a3596b"},
{file = "msgspec-0.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:826dcb0dfaac0abbcf3a3ae991749900671796eb688b017a69a82bde1e624662"}, {file = "msgspec-0.18.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b524df6ea9998bbc99ea6ee4d0276a101bcc1aa8d14887bb823914d9f60d07"},
{file = "msgspec-0.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:86800265f87f192a0daefe668e0a9634c35bf8af94b1f297e1352ac62d2e26da"}, {file = "msgspec-0.18.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37f67c1d81272131895bb20d388dd8d341390acd0e192a55ab02d4d6468b434c"},
{file = "msgspec-0.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:227fee75a25080a8b3677cdd95b9c0c3652e27869004a084886c65eb558b3dd6"}, {file = "msgspec-0.18.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0feb7a03d971c1c0353de1a8fe30bb6579c2dc5ccf29b5f7c7ab01172010492"},
{file = "msgspec-0.18.4-cp311-cp311-win_amd64.whl", hash = "sha256:828ef92f6654915c36ef6c7d8fec92404a13be48f9ff85f060e73b30299bafe1"}, {file = "msgspec-0.18.6-cp311-cp311-win_amd64.whl", hash = "sha256:41cf758d3f40428c235c0f27bc6f322d43063bc32da7b9643e3f805c21ed57b4"},
{file = "msgspec-0.18.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8476848f4937da8faec53700891694df2e412453cb7445991f0664cdd1e2dd16"}, {file = "msgspec-0.18.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d86f5071fe33e19500920333c11e2267a31942d18fed4d9de5bc2fbab267d28c"},
{file = "msgspec-0.18.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f668102958841c5bbd3ba7cf569a65d17aa3bdcf22124f394dfcfcf53cc5a9b9"}, {file = "msgspec-0.18.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce13981bfa06f5eb126a3a5a38b1976bddb49a36e4f46d8e6edecf33ccf11df1"},
{file = "msgspec-0.18.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc2405dba5af6478dedd3512bb92197b6f9d1bc0095655afbe9b54d7a426f19f"}, {file = "msgspec-0.18.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97dec6932ad5e3ee1e3c14718638ba333befc45e0661caa57033cd4cc489466"},
{file = "msgspec-0.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99f3c13569a5add0980b0d8c6e0bd94a656f6363b26107435b3091df979d228"}, {file = "msgspec-0.18.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad237100393f637b297926cae1868b0d500f764ccd2f0623a380e2bcfb2809ca"},
{file = "msgspec-0.18.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8a198409f672f93534c9c36bdc9eea9fb536827bd63ea846882365516a961356"}, {file = "msgspec-0.18.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db1d8626748fa5d29bbd15da58b2d73af25b10aa98abf85aab8028119188ed57"},
{file = "msgspec-0.18.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e21bc5aae6b80dfe4eb75dc1bb29af65483f967d5522e9e3812115a0ba285cac"}, {file = "msgspec-0.18.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d70cb3d00d9f4de14d0b31d38dfe60c88ae16f3182988246a9861259c6722af6"},
{file = "msgspec-0.18.4-cp312-cp312-win_amd64.whl", hash = "sha256:44d551aee1ec8aa2d7b64762557c266bcbf7d5109f2246955718d05becc509d6"}, {file = "msgspec-0.18.6-cp312-cp312-win_amd64.whl", hash = "sha256:1003c20bfe9c6114cc16ea5db9c5466e49fae3d7f5e2e59cb70693190ad34da0"},
{file = "msgspec-0.18.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bbbc08d59f74de5791bda63569f26a35ae1dd6bd20c55c3ceba5567b0e5a8ef1"}, {file = "msgspec-0.18.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f7d9faed6dfff654a9ca7d9b0068456517f63dbc3aa704a527f493b9200b210a"},
{file = "msgspec-0.18.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:87bc01949a35970398f5267df8ed4189c340727bb6feec99efdb9969dd05cf30"}, {file = "msgspec-0.18.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9da21f804c1a1471f26d32b5d9bc0480450ea77fbb8d9db431463ab64aaac2cf"},
{file = "msgspec-0.18.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96ccaef83adc0ce96d95328a03289cd5aead4fe400aac21fbe2008855a124a01"}, {file = "msgspec-0.18.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46eb2f6b22b0e61c137e65795b97dc515860bf6ec761d8fb65fdb62aa094ba61"},
{file = "msgspec-0.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6229dd49438d81ed7a3470e3cbc9646b1cc1b120d415a1786df880dabb1d1c4"}, {file = "msgspec-0.18.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8355b55c80ac3e04885d72db515817d9fbb0def3bab936bba104e99ad22cf46"},
{file = "msgspec-0.18.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:55e578fd921c88de0d3a209fe5fd392bb66623924c6525b42cea37c72bf8d558"}, {file = "msgspec-0.18.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9080eb12b8f59e177bd1eb5c21e24dd2ba2fa88a1dbc9a98e05ad7779b54c681"},
{file = "msgspec-0.18.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e95bd0a946b5b7206f27c0f654f490231c9ad5e5a4ff65af8c986f5114dfaf0e"}, {file = "msgspec-0.18.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cc001cf39becf8d2dcd3f413a4797c55009b3a3cdbf78a8bf5a7ca8fdb76032c"},
{file = "msgspec-0.18.4-cp38-cp38-win_amd64.whl", hash = "sha256:7e95817021db96c43fd81244228e185b13b085cca3d5169af4e2dfe3ff412954"}, {file = "msgspec-0.18.6-cp38-cp38-win_amd64.whl", hash = "sha256:fac5834e14ac4da1fca373753e0c4ec9c8069d1fe5f534fa5208453b6065d5be"},
{file = "msgspec-0.18.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:847d79f6f0b698671ff390aa5a66e207108f2c23b077ef9314ca4fe7819fa4ec"}, {file = "msgspec-0.18.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:974d3520fcc6b824a6dedbdf2b411df31a73e6e7414301abac62e6b8d03791b4"},
{file = "msgspec-0.18.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e4294158c233884f3b3220f0e96a30d3e916a4781f9502ae6d477bd57bbc80ad"}, {file = "msgspec-0.18.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fd62e5818731a66aaa8e9b0a1e5543dc979a46278da01e85c3c9a1a4f047ef7e"},
{file = "msgspec-0.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb11ba2709019192636042df5c8db8738e45946735627021b7e7934714526e4"}, {file = "msgspec-0.18.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7481355a1adcf1f08dedd9311193c674ffb8bf7b79314b4314752b89a2cf7f1c"},
{file = "msgspec-0.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b01efbf80a987a99e9079257c893c026dc661d4cd05caa1f7eabf4accc7f1fbc"}, {file = "msgspec-0.18.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6aa85198f8f154cf35d6f979998f6dadd3dc46a8a8c714632f53f5d65b315c07"},
{file = "msgspec-0.18.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:991aa3c76d1b1ec84e840d0b3c96692af834e1f8a1e1a3974cbd189eaf0f2276"}, {file = "msgspec-0.18.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e24539b25c85c8f0597274f11061c102ad6b0c56af053373ba4629772b407be"},
{file = "msgspec-0.18.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8064908ddb3d95d3261aaca48fd38abb16ccf59dc3f2d01eb4e04591fc1e9bd4"}, {file = "msgspec-0.18.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c61ee4d3be03ea9cd089f7c8e36158786cd06e51fbb62529276452bbf2d52ece"},
{file = "msgspec-0.18.4-cp39-cp39-win_amd64.whl", hash = "sha256:5f446f16ea57d70cceec29b7cb85ec0b3bea032e3dec316806e38575ea3a69b4"}, {file = "msgspec-0.18.6-cp39-cp39-win_amd64.whl", hash = "sha256:b5c390b0b0b7da879520d4ae26044d74aeee5144f83087eb7842ba59c02bc090"},
{file = "msgspec-0.18.4.tar.gz", hash = "sha256:cb62030bd6b1a00b01a2fcb09735016011696304e6b1d3321e58022548268d3e"}, {file = "msgspec-0.18.6.tar.gz", hash = "sha256:a59fc3b4fcdb972d09138cb516dbde600c99d07c38fd9372a6ef500d2d031b4e"},
] ]
[[package]] [[package]]
name = "packaging" name = "packaging"
version = "23.2" version = "24.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Core utilities for Python packages" summary = "Core utilities for Python packages"
files = [ files = [
{file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"},
{file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"},
] ]
[[package]] [[package]]
name = "pluggy" name = "pluggy"
version = "1.3.0" version = "1.5.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "plugin and hook calling mechanisms for python" summary = "plugin and hook calling mechanisms for python"
files = [ files = [
{file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
{file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
] ]
[[package]] [[package]]
name = "pytest" name = "pytest"
version = "7.4.3" version = "8.1.2"
requires_python = ">=3.7" requires_python = ">=3.8"
summary = "pytest: simple powerful testing with Python" summary = "pytest: simple powerful testing with Python"
dependencies = [ dependencies = [
"colorama; sys_platform == \"win32\"", "colorama; sys_platform == \"win32\"",
"exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"",
"iniconfig", "iniconfig",
"packaging", "packaging",
"pluggy<2.0,>=0.12", "pluggy<2.0,>=1.4",
"tomli>=1.0.0; python_version < \"3.11\"", "tomli>=1; python_version < \"3.11\"",
] ]
files = [ files = [
{file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, {file = "pytest-8.1.2-py3-none-any.whl", hash = "sha256:6c06dc309ff46a05721e6fd48e492a775ed8165d2ecdf57f156a80c7e95bb142"},
{file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, {file = "pytest-8.1.2.tar.gz", hash = "sha256:f3c45d1d5eed96b01a2aea70dee6a4a366d51d38f9957768083e4fecfc77f3ef"},
] ]
[[package]] [[package]]
name = "pytest-asyncio" name = "pytest-asyncio"
version = "0.21.1" version = "0.23.6"
requires_python = ">=3.7" requires_python = ">=3.8"
summary = "Pytest support for asyncio" summary = "Pytest support for asyncio"
dependencies = [ dependencies = [
"pytest>=7.0.0", "pytest<9,>=7.0.0",
] ]
files = [ files = [
{file = "pytest-asyncio-0.21.1.tar.gz", hash = "sha256:40a7eae6dded22c7b604986855ea48400ab15b069ae38116e8c01238e9eeb64d"}, {file = "pytest-asyncio-0.23.6.tar.gz", hash = "sha256:ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f"},
{file = "pytest_asyncio-0.21.1-py3-none-any.whl", hash = "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b"}, {file = "pytest_asyncio-0.23.6-py3-none-any.whl", hash = "sha256:68516fdd1018ac57b846c9846b954f0393b26f094764a28c955eabb0536a4e8a"},
] ]
[[package]] [[package]]
name = "pytest-cov" name = "pytest-cov"
version = "4.1.0" version = "5.0.0"
requires_python = ">=3.7" requires_python = ">=3.8"
summary = "Pytest plugin for measuring coverage." summary = "Pytest plugin for measuring coverage."
dependencies = [ dependencies = [
"coverage[toml]>=5.2.1", "coverage[toml]>=5.2.1",
"pytest>=4.6", "pytest>=4.6",
] ]
files = [ files = [
{file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"},
{file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"},
] ]
[[package]] [[package]]
name = "ruff" name = "ruff"
version = "0.1.3" version = "0.4.2"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "An extremely fast Python linter, written in Rust." summary = "An extremely fast Python linter and code formatter, written in Rust."
files = [ files = [
{file = "ruff-0.1.3-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:b46d43d51f7061652eeadb426a9e3caa1e0002470229ab2fc19de8a7b0766901"}, {file = "ruff-0.4.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8d14dc8953f8af7e003a485ef560bbefa5f8cc1ad994eebb5b12136049bbccc5"},
{file = "ruff-0.1.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:b8afeb9abd26b4029c72adc9921b8363374f4e7edb78385ffaa80278313a15f9"}, {file = "ruff-0.4.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:24016ed18db3dc9786af103ff49c03bdf408ea253f3cb9e3638f39ac9cf2d483"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca3cf365bf32e9ba7e6db3f48a4d3e2c446cd19ebee04f05338bc3910114528b"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2e06459042ac841ed510196c350ba35a9b24a643e23db60d79b2db92af0c2b"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4874c165f96c14a00590dcc727a04dca0cfd110334c24b039458c06cf78a672e"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3afabaf7ba8e9c485a14ad8f4122feff6b2b93cc53cd4dad2fd24ae35112d5c5"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eec2dd31eed114e48ea42dbffc443e9b7221976554a504767ceaee3dd38edeb8"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:799eb468ea6bc54b95527143a4ceaf970d5aa3613050c6cff54c85fda3fde480"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dc3ec4edb3b73f21b4aa51337e16674c752f1d76a4a543af56d7d04e97769613"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ec4ba9436a51527fb6931a8839af4c36a5481f8c19e8f5e42c2f7ad3a49f5069"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e3de9ed2e39160800281848ff4670e1698037ca039bda7b9274f849258d26ce"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6a2243f8f434e487c2a010c7252150b1fdf019035130f41b77626f5655c9ca22"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c595193881922cc0556a90f3af99b1c5681f0c552e7a2a189956141d8666fe8"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8772130a063f3eebdf7095da00c0b9898bd1774c43b336272c3e98667d4fb8fa"},
{file = "ruff-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f75e670d529aa2288cd00fc0e9b9287603d95e1536d7a7e0cafe00f75e0dd9d"}, {file = "ruff-0.4.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ab165ef5d72392b4ebb85a8b0fbd321f69832a632e07a74794c0e598e7a8376"},
{file = "ruff-0.1.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:76dd49f6cd945d82d9d4a9a6622c54a994689d8d7b22fa1322983389b4892e20"}, {file = "ruff-0.4.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1f32cadf44c2020e75e0c56c3408ed1d32c024766bd41aedef92aa3ca28eef68"},
{file = "ruff-0.1.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:918b454bc4f8874a616f0d725590277c42949431ceb303950e87fef7a7d94cb3"}, {file = "ruff-0.4.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:22e306bf15e09af45ca812bc42fa59b628646fa7c26072555f278994890bc7ac"},
{file = "ruff-0.1.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d8859605e729cd5e53aa38275568dbbdb4fe882d2ea2714c5453b678dca83784"}, {file = "ruff-0.4.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:82986bb77ad83a1719c90b9528a9dd663c9206f7c0ab69282af8223566a0c34e"},
{file = "ruff-0.1.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0b6c55f5ef8d9dd05b230bb6ab80bc4381ecb60ae56db0330f660ea240cb0d4a"}, {file = "ruff-0.4.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:652e4ba553e421a6dc2a6d4868bc3b3881311702633eb3672f9f244ded8908cd"},
{file = "ruff-0.1.3-py3-none-win32.whl", hash = "sha256:3e7afcbdcfbe3399c34e0f6370c30f6e529193c731b885316c5a09c9e4317eef"}, {file = "ruff-0.4.2-py3-none-win32.whl", hash = "sha256:7891ee376770ac094da3ad40c116258a381b86c7352552788377c6eb16d784fe"},
{file = "ruff-0.1.3-py3-none-win_amd64.whl", hash = "sha256:7a18df6638cec4a5bd75350639b2bb2a2366e01222825562c7346674bdceb7ea"}, {file = "ruff-0.4.2-py3-none-win_amd64.whl", hash = "sha256:5ec481661fb2fd88a5d6cf1f83403d388ec90f9daaa36e40e2c003de66751798"},
{file = "ruff-0.1.3-py3-none-win_arm64.whl", hash = "sha256:12fd53696c83a194a2db7f9a46337ce06445fb9aa7d25ea6f293cf75b21aca9f"}, {file = "ruff-0.4.2-py3-none-win_arm64.whl", hash = "sha256:cbd1e87c71bca14792948c4ccb51ee61c3296e164019d2d484f3eaa2d360dfaf"},
{file = "ruff-0.1.3.tar.gz", hash = "sha256:3ba6145369a151401d5db79f0a47d50e470384d0d89d0d6f7fab0b589ad07c34"}, {file = "ruff-0.4.2.tar.gz", hash = "sha256:33bcc160aee2520664bc0859cfeaebc84bb7323becff3f303b8f1f2d81cb4edc"},
] ]
[[package]] [[package]]
name = "sniffio" name = "sniffio"
version = "1.3.0" version = "1.3.1"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Sniff out which async library your code is running under" summary = "Sniff out which async library your code is running under"
files = [ files = [
{file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
{file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
] ]
[[package]] [[package]]
@ -393,3 +392,13 @@ files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
] ]
[[package]]
name = "typing-extensions"
version = "4.11.0"
requires_python = ">=3.8"
summary = "Backported and Experimental Type Hints for Python 3.8+"
files = [
{file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"},
{file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"},
]

View File

@ -1,13 +1,13 @@
[project] [project]
name = "starrail_damage_cal" name = "starrail_damage_cal"
version = "1.5.3" version = "1.5.4"
description = "For StarRail Role Damage Cal" description = "For StarRail Role Damage Cal"
authors = [ authors = [
{name = "qwerdvd", email = "105906879+qwerdvd@users.noreply.github.com"}, {name = "qwerdvd", email = "105906879+qwerdvd@users.noreply.github.com"},
] ]
dependencies = [ dependencies = [
"msgspec>=0.18.4", "msgspec>=0.18.6",
"httpx>=0.25.0", "httpx>=0.27.0",
] ]
repository = "https://github.com/baiqwerdvd/StarRailDamageCal" repository = "https://github.com/baiqwerdvd/StarRailDamageCal"
requires-python = ">=3.8" requires-python = ">=3.8"

View File

@ -54,8 +54,6 @@ class Seele(BaseAvatar):
"Talent", "Talent",
) + attribute_bonus.get("AllDamageAddedRatio", 0) ) + attribute_bonus.get("AllDamageAddedRatio", 0)
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -153,8 +151,6 @@ class JingYuan(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -240,8 +236,6 @@ class Welt(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -581,8 +575,6 @@ class Argenti(BaseAvatar):
talent_cc_add * 2 + attribute_bonus.get("CriticalChanceBase", 0) talent_cc_add * 2 + attribute_bonus.get("CriticalChanceBase", 0)
) )
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -681,8 +673,6 @@ class Clara(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -807,9 +797,9 @@ class Silverwolf(BaseAvatar):
logger.info("战技降抗") logger.info("战技降抗")
logger.info("战技使目标全属性抗性降低的效果额外降低3%") logger.info("战技使目标全属性抗性降低的效果额外降低3%")
enemy_status_resistance = self.Skill_num("BPSkill", "BPSkill_D") + 0.03 enemy_status_resistance = self.Skill_num("BPSkill", "BPSkill_D") + 0.03
self.extra_ability_attribute[ self.extra_ability_attribute["QuantumResistancePenetration"] = (
"QuantumResistancePenetration" enemy_status_resistance
] = enemy_status_resistance )
logger.info("终结技降防") logger.info("终结技降防")
ultra_defence = self.Skill_num("Ultra", "Ultra_D") ultra_defence = self.Skill_num("Ultra", "Ultra_D")
logger.info("天赋降防") logger.info("天赋降防")
@ -822,8 +812,6 @@ class Silverwolf(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -896,8 +884,6 @@ class Kafka(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1003,8 +989,6 @@ class Blade(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1150,8 +1134,6 @@ class Fuxuan(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal_HP") skill_multiplier = self.Skill_num("Normal", "Normal_HP")
@ -1232,8 +1214,6 @@ class Yanqing(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1325,8 +1305,6 @@ class Himeko(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1418,8 +1396,6 @@ class Qingque(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1496,9 +1472,9 @@ class Jingliu(BaseAvatar):
self.extra_ability_attribute["UltraDmgAdd"] = 0.2 self.extra_ability_attribute["UltraDmgAdd"] = 0.2
critical_chance_base = self.Skill_num("Talent", "Talent_CC") critical_chance_base = self.Skill_num("Talent", "Talent_CC")
self.extra_ability_attribute["Ultra_CriticalChanceBase"] = critical_chance_base self.extra_ability_attribute["Ultra_CriticalChanceBase"] = critical_chance_base
self.extra_ability_attribute[ self.extra_ability_attribute["BPSkill1_CriticalChanceBase"] = (
"BPSkill1_CriticalChanceBase" critical_chance_base
] = critical_chance_base )
attack_added_ratio = self.Skill_num("Talent", "Talent_atk") attack_added_ratio = self.Skill_num("Talent", "Talent_atk")
self.extra_ability_attribute["BPSkill1AttackAddedRatio"] = attack_added_ratio self.extra_ability_attribute["BPSkill1AttackAddedRatio"] = attack_added_ratio
self.extra_ability_attribute["UltraAttackAddedRatio"] = attack_added_ratio self.extra_ability_attribute["UltraAttackAddedRatio"] = attack_added_ratio
@ -1508,8 +1484,6 @@ class Jingliu(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1609,8 +1583,6 @@ class Topaz(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1689,8 +1661,6 @@ class Guinaifen(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1773,8 +1743,6 @@ class Gepard(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1843,8 +1811,6 @@ class Luocha(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -1972,8 +1938,6 @@ class Bailu(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2068,8 +2032,6 @@ class Lynx(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 计算战技生命上限 # 计算战技生命上限
skill_multiplier = self.Skill_num("BPSkill", "BPSkill_HP") skill_multiplier = self.Skill_num("BPSkill", "BPSkill_HP")
skill_num = self.Skill_num("BPSkill", "BPSkill_HP_G") skill_num = self.Skill_num("BPSkill", "BPSkill_HP_G")
@ -2188,8 +2150,6 @@ class Natasha(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2281,8 +2241,6 @@ class Mar7th(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2383,8 +2341,6 @@ class Bronya(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 终结技增加伤害 # 终结技增加伤害
attribute_bonus["AttackAddedRatio"] = attribute_bonus.get( attribute_bonus["AttackAddedRatio"] = attribute_bonus.get(
"AttackAddedRatio", "AttackAddedRatio",
@ -2448,8 +2404,6 @@ class Yukong(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 终结技增加伤害 # 终结技增加伤害
attribute_bonus["AttackAddedRatio"] = attribute_bonus.get( attribute_bonus["AttackAddedRatio"] = attribute_bonus.get(
"AttackAddedRatio", "AttackAddedRatio",
@ -2535,8 +2489,6 @@ class Sushang(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2644,8 +2596,6 @@ class Luka(BaseAvatar):
0, 0,
) + self.Skill_num("Ultra", "Ultra_d") ) + self.Skill_num("Ultra", "Ultra_d")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2763,8 +2713,6 @@ class DanHeng(BaseAvatar):
0, 0,
) + self.Skill_num("Talent", "Talent") ) + self.Skill_num("Talent", "Talent")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2844,8 +2792,6 @@ class Arlan(BaseAvatar):
0, 0,
) + self.Skill_num("Talent", "Talent") ) + self.Skill_num("Talent", "Talent")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2923,8 +2869,6 @@ class Asta(BaseAvatar):
0, 0,
) + self.Skill_num("Ultra", "Ultra") ) + self.Skill_num("Ultra", "Ultra")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -2991,8 +2935,6 @@ class Herta(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3077,8 +3019,6 @@ class Serval(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3182,8 +3122,6 @@ class Pela(BaseAvatar):
0, 0,
) + self.Skill_num("Ultra", "Ultra_d") ) + self.Skill_num("Ultra", "Ultra_d")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3270,8 +3208,6 @@ class Sampo(BaseAvatar):
0, 0,
) + self.Skill_num("Ultra", "Ultra_d") ) + self.Skill_num("Ultra", "Ultra_d")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3360,8 +3296,6 @@ class Hook(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3470,8 +3404,6 @@ class Tingyun(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3532,8 +3464,6 @@ class Trailblazer(BaseAvatar):
+ self.Skill_num("Talent", "Talent") * 2 + self.Skill_num("Talent", "Talent") * 2
) )
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3615,8 +3545,6 @@ class Trailblazer_K(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3744,8 +3672,6 @@ class Huohuo(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3861,8 +3787,6 @@ class Hanya(BaseAvatar):
0, 0,
) + self.Skill_num("Ultra", "Ultra_A") ) + self.Skill_num("Ultra", "Ultra_A")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -3934,8 +3858,6 @@ class DrRatio(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -4058,8 +3980,6 @@ class RuanMei(BaseAvatar):
+ add_all_damage_added_ratio + add_all_damage_added_ratio
) )
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -4140,8 +4060,6 @@ class XueYi(BaseAvatar):
"AllDamageAddedRatio", 0 "AllDamageAddedRatio", 0
) + min(2.4, Break_Damage_Added_Ratio) ) + min(2.4, Break_Damage_Added_Ratio)
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal") skill_multiplier = self.Skill_num("Normal", "Normal")
@ -4200,6 +4118,7 @@ class XueYi(BaseAvatar):
return skill_info_list return skill_info_list
class BlackSwan(BaseAvatar): class BlackSwan(BaseAvatar):
Buff: BaseAvatarBuff Buff: BaseAvatarBuff
@ -4221,24 +4140,24 @@ class BlackSwan(BaseAvatar):
self.eidolon_attribute["ThunderResistancePenetration"] = 0.25 self.eidolon_attribute["ThunderResistancePenetration"] = 0.25
def extra_ability(self): def extra_ability(self):
#战技降防计算 # 战技降防计算
bpskill_defence = self.Skill_num("BPSkill", "BPSkill_D") bpskill_defence = self.Skill_num("BPSkill", "BPSkill_D")
self.extra_ability_attribute["ignore_defence"] = bpskill_defence self.extra_ability_attribute["ignore_defence"] = bpskill_defence
#终结技加伤害 # 终结技加伤害
self.extra_ability_attribute["AllDamageAddedRatio"] = self.Skill_num("Ultra", "Ultra_A") self.extra_ability_attribute["AllDamageAddedRatio"] = self.Skill_num(
"Ultra", "Ultra_A"
)
async def getdamage( async def getdamage(
self, self,
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 使自身造成的伤害提高提高数值等同于效果命中的60%最多使造成的伤害提高72%。 # 使自身造成的伤害提高, 提高数值等同于效果命中的60%, 最多使造成的伤害提高72%。
Break_Damage_Added_Ratio = attribute_bonus.get("StatusProbabilityBase", 0) * 0.6 Break_Damage_Added_Ratio = attribute_bonus.get("StatusProbabilityBase", 0) * 0.6
attribute_bonus["AllDamageAddedRatio"] = attribute_bonus.get( attribute_bonus["AllDamageAddedRatio"] = attribute_bonus.get(
"AllDamageAddedRatio", 0 "AllDamageAddedRatio", 0
) + min(0.72, Break_Damage_Added_Ratio) ) + min(0.72, Break_Damage_Added_Ratio)
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
@ -4293,14 +4212,12 @@ class BlackSwan(BaseAvatar):
self.avatar_level, self.avatar_level,
) )
skill_info_list.append({"name": "1层奥迹伤害", "damagelist": damagelist4}) skill_info_list.append({"name": "1层奥迹伤害", "damagelist": damagelist4})
# 计算50层奥迹持续伤害 # 计算50层奥迹持续伤害
skill_multiplier = self.Skill_num("Talent", "Talent") skill_multiplier = self.Skill_num("Talent", "Talent")
skill_multiplier += self.Skill_num("Talent", "Talent_UP") * 50 skill_multiplier += self.Skill_num("Talent", "Talent_UP") * 50
add_attr_bonus = copy.deepcopy(attribute_bonus) add_attr_bonus = copy.deepcopy(attribute_bonus)
add_attr_bonus["ignore_defence"] = ( add_attr_bonus["ignore_defence"] = add_attr_bonus.get("ignore_defence", 0) + 0.2
add_attr_bonus.get("ignore_defence", 0) + 0.2
)
damagelist5 = await calculate_damage( damagelist5 = await calculate_damage(
base_attr, base_attr,
add_attr_bonus, add_attr_bonus,
@ -4313,6 +4230,7 @@ class BlackSwan(BaseAvatar):
skill_info_list.append({"name": "50层奥迹伤害", "damagelist": damagelist5}) skill_info_list.append({"name": "50层奥迹伤害", "damagelist": damagelist5})
return skill_info_list return skill_info_list
class Sparkle(BaseAvatar): class Sparkle(BaseAvatar):
Buff: BaseAvatarBuff Buff: BaseAvatarBuff
@ -4337,23 +4255,28 @@ class Sparkle(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 终结技天赋增加伤害 # 终结技天赋增加伤害
All_Damage_Add = (self.Skill_num("Talent", "Talent") + self.Skill_num("Ultra", "Ultra")) * 3 All_Damage_Add = (
attribute_bonus["AllDamageAddedRatio"] = attribute_bonus.get( self.Skill_num("Talent", "Talent") + self.Skill_num("Ultra", "Ultra")
"AllDamageAddedRatio", 0 ) * 3
) + All_Damage_Add attribute_bonus["AllDamageAddedRatio"] = (
attribute_bonus.get("AllDamageAddedRatio", 0) + All_Damage_Add
#战技增加暴击伤害 )
# 战技增加暴击伤害
if self.avatar_rank >= 6: if self.avatar_rank >= 6:
add_critical_damage_base = attribute_bonus.get("CriticalDamageBase", 0) * (self.Skill_num("BPSkill", "BPSkill") + 0.3) + self.Skill_num("BPSkill", "BPSkill_G") add_critical_damage_base = attribute_bonus.get("CriticalDamageBase", 0) * (
self.Skill_num("BPSkill", "BPSkill") + 0.3
) + self.Skill_num("BPSkill", "BPSkill_G")
else: else:
add_critical_damage_base = attribute_bonus.get("CriticalDamageBase", 0) * self.Skill_num("BPSkill", "BPSkill") + self.Skill_num("BPSkill", "BPSkill_G") add_critical_damage_base = attribute_bonus.get(
"CriticalDamageBase", 0
) * self.Skill_num("BPSkill", "BPSkill") + self.Skill_num(
"BPSkill", "BPSkill_G"
)
attribute_bonus["CriticalDamageBase"] = ( attribute_bonus["CriticalDamageBase"] = (
attribute_bonus.get("CriticalDamageBase", 0) + add_critical_damage_base attribute_bonus.get("CriticalDamageBase", 0) + add_critical_damage_base
) )
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
@ -4377,6 +4300,7 @@ class Sparkle(BaseAvatar):
return skill_info_list return skill_info_list
class Acheron(BaseAvatar): class Acheron(BaseAvatar):
Buff: BaseAvatarBuff Buff: BaseAvatarBuff
@ -4406,10 +4330,9 @@ class Acheron(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
attribute_bonus["AllDamageAddedRatio"] = (
attribute_bonus["AllDamageAddedRatio"] = attribute_bonus.get("AllDamageAddedRatio", 0) + 0.9 attribute_bonus.get("AllDamageAddedRatio", 0) + 0.9
)
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
@ -4438,7 +4361,7 @@ class Acheron(BaseAvatar):
damagelist1[1] = damagelist1[1] * 1.6 damagelist1[1] = damagelist1[1] * 1.6
damagelist1[2] = damagelist1[2] * 1.6 damagelist1[2] = damagelist1[2] * 1.6
skill_info_list.append({"name": "普攻", "damagelist": damagelist1}) skill_info_list.append({"name": "普攻", "damagelist": damagelist1})
# 计算战技伤害 # 计算战技伤害
skill_multiplier = self.Skill_num("BPSkill", "BPSkill") skill_multiplier = self.Skill_num("BPSkill", "BPSkill")
if self.avatar_rank >= 6: if self.avatar_rank >= 6:
@ -4465,13 +4388,13 @@ class Acheron(BaseAvatar):
damagelist2[1] = damagelist2[1] * 1.6 damagelist2[1] = damagelist2[1] * 1.6
damagelist2[2] = damagelist2[2] * 1.6 damagelist2[2] = damagelist2[2] * 1.6
skill_info_list.append({"name": "战技", "damagelist": damagelist2}) skill_info_list.append({"name": "战技", "damagelist": damagelist2})
# 计算终结技 # 计算终结技
add_attr_bonus = copy.deepcopy(attribute_bonus) add_attr_bonus = copy.deepcopy(attribute_bonus)
add_attr_bonus["AllDamageResistancePenetration"] = ( add_attr_bonus["AllDamageResistancePenetration"] = (
add_attr_bonus.get("AllDamageResistancePenetration", 0) + 0.2 add_attr_bonus.get("AllDamageResistancePenetration", 0) + 0.2
) )
#啼泽雨斩 # 啼泽雨斩
skill_multiplier = self.Skill_num("Ultra", "Ultra_1_d") skill_multiplier = self.Skill_num("Ultra", "Ultra_1_d")
damagelist_u_1_d = await calculate_damage( damagelist_u_1_d = await calculate_damage(
base_attr, base_attr,
@ -4495,7 +4418,7 @@ class Acheron(BaseAvatar):
damagelist_u_1_d[1] = damagelist_u_1_d[1] * 1.6 + damagelist_u_2_d[1] * 1.6 damagelist_u_1_d[1] = damagelist_u_1_d[1] * 1.6 + damagelist_u_2_d[1] * 1.6
damagelist_u_1_d[2] = damagelist_u_1_d[2] * 1.6 + damagelist_u_2_d[2] * 1.6 damagelist_u_1_d[2] = damagelist_u_1_d[2] * 1.6 + damagelist_u_2_d[2] * 1.6
skill_info_list.append({"name": "啼泽雨斩", "damagelist": damagelist_u_1_d}) skill_info_list.append({"name": "啼泽雨斩", "damagelist": damagelist_u_1_d})
#黄泉返渡 # 黄泉返渡
skill_multiplier = self.Skill_num("Ultra", "Ultra_1_a") skill_multiplier = self.Skill_num("Ultra", "Ultra_1_a")
damagelist_u_1_a = await calculate_damage( damagelist_u_1_a = await calculate_damage(
base_attr, base_attr,
@ -4515,12 +4438,18 @@ class Acheron(BaseAvatar):
0.25, 0.25,
self.avatar_level, self.avatar_level,
) )
damagelist_u_1_a[0] = damagelist_u_1_a[0] * 1.6 + (damagelist_u_1_a_e[0] * 1.6) * 6 damagelist_u_1_a[0] = (
damagelist_u_1_a[1] = damagelist_u_1_a[1] * 1.6 + (damagelist_u_1_a_e[1] * 1.6) * 6 damagelist_u_1_a[0] * 1.6 + (damagelist_u_1_a_e[0] * 1.6) * 6
damagelist_u_1_a[2] = damagelist_u_1_a[2] * 1.6 + (damagelist_u_1_a_e[2] * 1.6) * 6 )
damagelist_u_1_a[1] = (
damagelist_u_1_a[1] * 1.6 + (damagelist_u_1_a_e[1] * 1.6) * 6
)
damagelist_u_1_a[2] = (
damagelist_u_1_a[2] * 1.6 + (damagelist_u_1_a_e[2] * 1.6) * 6
)
skill_info_list.append({"name": "黄泉返渡", "damagelist": damagelist_u_1_a}) skill_info_list.append({"name": "黄泉返渡", "damagelist": damagelist_u_1_a})
#总伤害 # 总伤害
damagelist_u = {} damagelist_u = {}
damagelist_u[0] = damagelist_u_1_d[0] * 3 + damagelist_u_1_a[0] damagelist_u[0] = damagelist_u_1_d[0] * 3 + damagelist_u_1_a[0]
damagelist_u[1] = damagelist_u_1_d[1] * 3 + damagelist_u_1_a[1] damagelist_u[1] = damagelist_u_1_d[1] * 3 + damagelist_u_1_a[1]
@ -4528,6 +4457,7 @@ class Acheron(BaseAvatar):
skill_info_list.append({"name": "终结技总伤", "damagelist": damagelist_u}) skill_info_list.append({"name": "终结技总伤", "damagelist": damagelist_u})
return skill_info_list return skill_info_list
class Aventurine(BaseAvatar): class Aventurine(BaseAvatar):
Buff: BaseAvatarBuff Buff: BaseAvatarBuff
@ -4559,19 +4489,23 @@ class Aventurine(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 天赋增加暴击 # 天赋增加暴击
defence = base_attr["defence"] * (1 + attribute_bonus["DefenceAddedRatio"]) + attribute_bonus["DefenceDelta"] defence = (
base_attr["defence"] * (1 + attribute_bonus["DefenceAddedRatio"])
+ attribute_bonus["DefenceDelta"]
)
if defence > 1600: if defence > 1600:
adddefrnce = defence - 1600 adddefrnce = defence - 1600
Critical_Chance_Base = (defence/100) * 0.02 Critical_Chance_Base = (defence / 100) * 0.02
Critical_Chance_Base = min(Critical_Chance_Base, 0.48) Critical_Chance_Base = min(Critical_Chance_Base, 0.48)
attribute_bonus["CriticalChanceBase"] = attribute_bonus.get("CriticalChanceBase", 0) + Critical_Chance_Base attribute_bonus["CriticalChanceBase"] = (
attribute_bonus.get("CriticalChanceBase", 0) + Critical_Chance_Base
#终结技增加暴击伤害 )
attribute_bonus["CriticalDamageBase"] = attribute_bonus.get("CriticalDamageBase", 0) + self.Skill_num("Ultra", "Ultra_CD")
# 终结技增加暴击伤害
attribute_bonus["CriticalDamageBase"] = attribute_bonus.get(
"CriticalDamageBase", 0
) + self.Skill_num("Ultra", "Ultra_CD")
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
@ -4598,7 +4532,7 @@ class Aventurine(BaseAvatar):
skill_num, skill_num,
) )
skill_info_list.append({"name": "战技(护盾)", "damagelist": damagelist2}) skill_info_list.append({"name": "战技(护盾)", "damagelist": damagelist2})
# 计算终结技伤害 # 计算终结技伤害
skill_multiplier = self.Skill_num("Ultra", "Ultra") skill_multiplier = self.Skill_num("Ultra", "Ultra")
damagelist3 = await calculate_damage( damagelist3 = await calculate_damage(
@ -4612,7 +4546,7 @@ class Aventurine(BaseAvatar):
2, 2,
) )
skill_info_list.append({"name": "终结技", "damagelist": damagelist3}) skill_info_list.append({"name": "终结技", "damagelist": damagelist3})
duanshu = 7 duanshu = 7
if self.avatar_rank >= 4: if self.avatar_rank >= 4:
duanshu = 10 duanshu = 10
@ -4634,9 +4568,10 @@ class Aventurine(BaseAvatar):
damagelist5[2] = damagelist4[2] * duanshu damagelist5[2] = damagelist4[2] * duanshu
skill_info_list.append({"name": "单层【盲注】追击", "damagelist": damagelist4}) skill_info_list.append({"name": "单层【盲注】追击", "damagelist": damagelist4})
skill_info_list.append({"name": "满层【盲注】追击", "damagelist": damagelist5}) skill_info_list.append({"name": "满层【盲注】追击", "damagelist": damagelist5})
return skill_info_list return skill_info_list
class Gallagher(BaseAvatar): class Gallagher(BaseAvatar):
Buff: BaseAvatarBuff Buff: BaseAvatarBuff
@ -4662,14 +4597,15 @@ class Gallagher(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 使自身提供的治疗量提高, 提高数值等同于击破特攻的50%, 最多使提供的治疗量提高75%
# 使自身提供的治疗量提高提高数值等同于击破特攻的50%最多使提供的治疗量提高75% Break_Damage_Added_Ratio_Base = attribute_bonus.get(
Break_Damage_Added_Ratio_Base = attribute_bonus.get("BreakDamageAddedRatioBase", 0) "BreakDamageAddedRatioBase", 0
)
Heal_Ratio_Base = Break_Damage_Added_Ratio_Base * 0.5 Heal_Ratio_Base = Break_Damage_Added_Ratio_Base * 0.5
Heal_Ratio_Base = min(0.75, Heal_Ratio_Base) Heal_Ratio_Base = min(0.75, Heal_Ratio_Base)
attribute_bonus["HealRatioBase"] = attribute_bonus.get("HealRatioBase", 0) + Heal_Ratio_Base attribute_bonus["HealRatioBase"] = (
attribute_bonus.get("HealRatioBase", 0) + Heal_Ratio_Base
)
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
@ -4684,7 +4620,7 @@ class Gallagher(BaseAvatar):
self.avatar_level, self.avatar_level,
) )
skill_info_list.append({"name": "普攻", "damagelist": damagelist1}) skill_info_list.append({"name": "普攻", "damagelist": damagelist1})
# 计算强化普攻伤害 # 计算强化普攻伤害
skill_multiplier = self.Skill_num("Normal", "Normal1") skill_multiplier = self.Skill_num("Normal", "Normal1")
damagelist2 = await calculate_damage( damagelist2 = await calculate_damage(
@ -4697,7 +4633,7 @@ class Gallagher(BaseAvatar):
self.avatar_level, self.avatar_level,
) )
skill_info_list.append({"name": "强化普攻", "damagelist": damagelist2}) skill_info_list.append({"name": "强化普攻", "damagelist": damagelist2})
# 计算战技治疗量 # 计算战技治疗量
skill_num = self.Skill_num("BPSkill", "BPSkill") skill_num = self.Skill_num("BPSkill", "BPSkill")
damagelist3 = await calculate_heal( damagelist3 = await calculate_heal(
@ -4708,7 +4644,7 @@ class Gallagher(BaseAvatar):
skill_num, skill_num,
) )
skill_info_list.append({"name": "战技治疗量", "damagelist": damagelist3}) skill_info_list.append({"name": "战技治疗量", "damagelist": damagelist3})
# 计算终结技伤害 # 计算终结技伤害
skill_multiplier = self.Skill_num("Ultra", "Ultra") skill_multiplier = self.Skill_num("Ultra", "Ultra")
damagelist4 = await calculate_damage( damagelist4 = await calculate_damage(
@ -4721,7 +4657,7 @@ class Gallagher(BaseAvatar):
self.avatar_level, self.avatar_level,
) )
skill_info_list.append({"name": "结技", "damagelist": damagelist4}) skill_info_list.append({"name": "结技", "damagelist": damagelist4})
# 计算天赋治疗量 # 计算天赋治疗量
skill_num = self.Skill_num("Talent", "Talent") skill_num = self.Skill_num("Talent", "Talent")
damagelist5 = await calculate_heal( damagelist5 = await calculate_heal(
@ -4732,9 +4668,10 @@ class Gallagher(BaseAvatar):
skill_num, skill_num,
) )
skill_info_list.append({"name": "天赋治疗量", "damagelist": damagelist5}) skill_info_list.append({"name": "天赋治疗量", "damagelist": damagelist5})
return skill_info_list return skill_info_list
class Robin(BaseAvatar): class Robin(BaseAvatar):
Buff: BaseAvatarBuff Buff: BaseAvatarBuff
@ -4753,7 +4690,7 @@ class Robin(BaseAvatar):
self.eidolon_attribute["CriticalDamageBase"] = 0.2 self.eidolon_attribute["CriticalDamageBase"] = 0.2
if self.avatar_rank >= 6: if self.avatar_rank >= 6:
self.eidolon_attribute["AllDamageResistancePenetration"] = 0.2 self.eidolon_attribute["AllDamageResistancePenetration"] = 0.2
def extra_ability(self): def extra_ability(self):
pass pass
@ -4762,24 +4699,29 @@ class Robin(BaseAvatar):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
# 战技伤害加成 # 战技伤害加成
all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0) all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0)
attribute_bonus["AllDamageAddedRatio"] = all_damage_added_ratio + self.Skill_num("BPSkill", "BPSkill") attribute_bonus["AllDamageAddedRatio"] = (
all_damage_added_ratio + self.Skill_num("BPSkill", "BPSkill")
)
# 终结技攻击加成计算 # 终结技攻击加成计算
attack = ( attack = (
base_attr["attack"] * (1 + attribute_bonus["AttackAddedRatio"]) base_attr["attack"] * (1 + attribute_bonus["AttackAddedRatio"])
+ attribute_bonus["AttackDelta"] + attribute_bonus["AttackDelta"]
) )
add_attack = (attack * self.Skill_num("Ultra", "Ultra_A")) + self.Skill_num("Ultra", "Ultra_G") add_attack = (attack * self.Skill_num("Ultra", "Ultra_A")) + self.Skill_num(
attribute_bonus["AttackDelta"] = attribute_bonus.get("AttackDelta", 0) + add_attack "Ultra", "Ultra_G"
)
attribute_bonus["AttackDelta"] = (
attribute_bonus.get("AttackDelta", 0) + add_attack
)
# 天赋爆伤加成 # 天赋爆伤加成
Critical_Damage_Base = attribute_bonus.get("CriticalDamageBase", 0) Critical_Damage_Base = attribute_bonus.get("CriticalDamageBase", 0)
attribute_bonus["CriticalDamageBase"] = Critical_Damage_Base + self.Skill_num("Talent", "Talent") attribute_bonus["CriticalDamageBase"] = Critical_Damage_Base + self.Skill_num(
"Talent", "Talent"
)
skill_info_list = [] skill_info_list = []
# 计算普攻伤害 # 计算普攻伤害
@ -4794,22 +4736,22 @@ class Robin(BaseAvatar):
self.avatar_level, self.avatar_level,
) )
skill_info_list.append({"name": "普攻", "damagelist": damagelist1}) skill_info_list.append({"name": "普攻", "damagelist": damagelist1})
# 计算战技治疗量 # 计算战技治疗量
skill_num = self.Skill_num("BPSkill", "BPSkill") skill_num = self.Skill_num("BPSkill", "BPSkill")
damagelist2 = {} damagelist2 = {}
damagelist2[0] = add_attack damagelist2[0] = add_attack
skill_info_list.append({"name": "终结技攻击提高", "damagelist": damagelist2}) skill_info_list.append({"name": "终结技攻击提高", "damagelist": damagelist2})
# 计算追击伤害 # 计算追击伤害
skill_multiplier = self.Skill_num("Ultra", "Ultra") skill_multiplier = self.Skill_num("Ultra", "Ultra")
add_attr_bonus = copy.deepcopy(attribute_bonus) add_attr_bonus = copy.deepcopy(attribute_bonus)
add_attr_bonus['CriticalDamageBase'] = 1 add_attr_bonus["CriticalDamageBase"] = 1
add_attr_bonus['CriticalChanceBase'] = 0.95 add_attr_bonus["CriticalChanceBase"] = 0.95
if self.avatar_rank >= 1: if self.avatar_rank >= 1:
skill_multiplier = skill_multiplier + 0.72 skill_multiplier = skill_multiplier + 0.72
if self.avatar_rank >= 6: if self.avatar_rank >= 6:
add_attr_bonus['CriticalDamageBase'] = 3 add_attr_bonus["CriticalDamageBase"] = 3
damagelist4 = await calculate_damage( damagelist4 = await calculate_damage(
base_attr, base_attr,
add_attr_bonus, add_attr_bonus,
@ -4820,9 +4762,10 @@ class Robin(BaseAvatar):
self.avatar_level, self.avatar_level,
) )
skill_info_list.append({"name": "【协奏】追加伤害", "damagelist": damagelist4}) skill_info_list.append({"name": "【协奏】追加伤害", "damagelist": damagelist4})
return skill_info_list return skill_info_list
class AvatarDamage: class AvatarDamage:
@classmethod @classmethod
def create(cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]): def create(cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]):

View File

@ -49,16 +49,13 @@ class BaseAvatarBuff:
return cls return cls
@abstractmethod @abstractmethod
async def Technique(self): async def Technique(self): ...
...
@abstractmethod @abstractmethod
async def eidolons(self): async def eidolons(self): ...
...
@abstractmethod @abstractmethod
async def extra_ability(self): async def extra_ability(self): ...
...
class BaseAvatarinfo: class BaseAvatarinfo:

View File

@ -19,13 +19,13 @@ class SingleRelic:
def get_attribute_(self): def get_attribute_(self):
# MainAffix # MainAffix
if self.raw_relic.MainAffix.Property in self.relic_attribute_bonus: if self.raw_relic.MainAffix.Property in self.relic_attribute_bonus:
self.relic_attribute_bonus[ self.relic_attribute_bonus[self.raw_relic.MainAffix.Property] += (
self.raw_relic.MainAffix.Property self.raw_relic.MainAffix.Value
] += self.raw_relic.MainAffix.Value )
else: else:
self.relic_attribute_bonus[ self.relic_attribute_bonus[self.raw_relic.MainAffix.Property] = (
self.raw_relic.MainAffix.Property self.raw_relic.MainAffix.Value
] = self.raw_relic.MainAffix.Value )
# SubAffix # SubAffix
if self.raw_relic.SubAffixList: if self.raw_relic.SubAffixList:
@ -58,15 +58,14 @@ class BaseRelicSetSkill:
self, self,
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ) -> bool: ...
...
@abstractmethod @abstractmethod
async def set_skill_ability( async def set_skill_ability(
self, self,
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ) -> Dict[str, float]:
"""战斗加成属性, 与 set_skill_property() 互斥""" """战斗加成属性, 与 set_skill_property() 互斥"""
... ...

View File

@ -33,7 +33,9 @@ class BaseWeapon:
self.weapon_property_ability() self.weapon_property_ability()
@abstractmethod @abstractmethod
async def weapon_ability(self, base_attr: Dict, attribute_bonus: Dict): async def weapon_ability(
self, Ultra_Use: float, base_attr: Dict[str, float], attribute_bonus: Dict
) -> Dict[str, float]:
"""战斗加成属性, 与 weapon_property_ability() 互斥""" """战斗加成属性, 与 weapon_property_ability() 互斥"""
... ...
@ -50,8 +52,7 @@ class BaseWeapon:
self.weapon_attribute[property_type] = value self.weapon_attribute[property_type] = value
@abstractmethod @abstractmethod
async def check(self): async def check(self) -> bool: ...
...
def get_attribute(self): def get_attribute(self):
promotion = EquipmentPromotionConfig.Equipment[str(self.weapon_id)][ promotion = EquipmentPromotionConfig.Equipment[str(self.weapon_id)][

View File

@ -428,6 +428,7 @@ class Relic116(BaseRelicSetSkill):
attribute_bonus["ignore_defence"] = ignore_defence + 0.06000000009313226 * 3 attribute_bonus["ignore_defence"] = ignore_defence + 0.06000000009313226 * 3
return attribute_bonus return attribute_bonus
class Relic117(BaseRelicSetSkill): class Relic117(BaseRelicSetSkill):
def __init__(self, set_id: int, count: int): def __init__(self, set_id: int, count: int):
super().__init__(set_id, count) super().__init__(set_id, count)
@ -439,7 +440,7 @@ class Relic117(BaseRelicSetSkill):
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
"""2件: 对受负面状态影响的敌人造成的伤害提高12%""" """2件: 对受负面状态影响的敌人造成的伤害提高12%"""
# 暴击率提高4%装备者对陷入不少于2/3个负面效果的敌方目标造成的暴击伤害提高8%/12%。装备者对敌方目标施加负面效果后上述效果提高100%持续1回合 # 暴击率提高4%, 装备者对陷入不少于2/3个负面效果的敌方目标造成的暴击伤害提高8%/12%。装备者对敌方目标施加负面效果后, 上述效果提高100%, 持续1回合
logger.info("Relic114 check success") logger.info("Relic114 check success")
return True return True
@ -450,14 +451,21 @@ class Relic117(BaseRelicSetSkill):
): ):
if self.pieces2 and await self.check(base_attr, attribute_bonus): if self.pieces2 and await self.check(base_attr, attribute_bonus):
All_Damage_Added_Ratio = attribute_bonus.get("AllDamageAddedRatio", 0) All_Damage_Added_Ratio = attribute_bonus.get("AllDamageAddedRatio", 0)
attribute_bonus["AllDamageAddedRatio"] = All_Damage_Added_Ratio + 0.12000000011175871 attribute_bonus["AllDamageAddedRatio"] = (
All_Damage_Added_Ratio + 0.12000000011175871
)
if self.pieces4 and await self.check(base_attr, attribute_bonus): if self.pieces4 and await self.check(base_attr, attribute_bonus):
Critical_Chance_Base = attribute_bonus.get("CriticalChanceBase", 0) Critical_Chance_Base = attribute_bonus.get("CriticalChanceBase", 0)
attribute_bonus["CriticalChanceBase"] = Critical_Chance_Base + 0.0400000000372529 attribute_bonus["CriticalChanceBase"] = (
Critical_Chance_Base + 0.0400000000372529
)
Critical_Damage_Base = attribute_bonus.get("CriticalDamageBase", 0) Critical_Damage_Base = attribute_bonus.get("CriticalDamageBase", 0)
attribute_bonus["CriticalDamageBase"] = Critical_Damage_Base + 0.12000000011175871 * 2 attribute_bonus["CriticalDamageBase"] = (
Critical_Damage_Base + 0.12000000011175871 * 2
)
return attribute_bonus return attribute_bonus
class Relic118(BaseRelicSetSkill): class Relic118(BaseRelicSetSkill):
def __init__(self, set_id: int, count: int): def __init__(self, set_id: int, count: int):
super().__init__(set_id, count) super().__init__(set_id, count)
@ -468,7 +476,7 @@ class Relic118(BaseRelicSetSkill):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
"""当装备者对我方目标施放终结技时我方全体击破特攻提高30%持续2回合该效果无法叠加。""" """当装备者对我方目标施放终结技时, 我方全体击破特攻提高30%, 持续2回合, 该效果无法叠加。"""
logger.info("Relic114 check success") logger.info("Relic114 check success")
return True return True
@ -478,10 +486,15 @@ class Relic118(BaseRelicSetSkill):
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
if self.pieces4 and await self.check(base_attr, attribute_bonus): if self.pieces4 and await self.check(base_attr, attribute_bonus):
Break_Damage_Added_Ratio_Base = attribute_bonus.get("BreakDamageAddedRatioBase", 0) Break_Damage_Added_Ratio_Base = attribute_bonus.get(
attribute_bonus["BreakDamageAddedRatioBase"] = Break_Damage_Added_Ratio_Base + 0.3000000002793968 "BreakDamageAddedRatioBase", 0
)
attribute_bonus["BreakDamageAddedRatioBase"] = (
Break_Damage_Added_Ratio_Base + 0.3000000002793968
)
return attribute_bonus return attribute_bonus
class Relic301(BaseRelicSetSkill): class Relic301(BaseRelicSetSkill):
def __init__(self, set_id: int, count: int): def __init__(self, set_id: int, count: int):
super().__init__(set_id, count) super().__init__(set_id, count)
@ -831,6 +844,7 @@ class Relic312(BaseRelicSetSkill):
return attribute_bonus return attribute_bonus
class Relic313(BaseRelicSetSkill): class Relic313(BaseRelicSetSkill):
def __init__(self, set_id: int, count: int): def __init__(self, set_id: int, count: int):
super().__init__(set_id, count) super().__init__(set_id, count)
@ -840,7 +854,7 @@ class Relic313(BaseRelicSetSkill):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
"""当敌方目标被消灭时装备者暴击伤害提高4%最多叠加10层。""" """当敌方目标被消灭时, 装备者暴击伤害提高4%, 最多叠加10层。"""
return True return True
async def set_skill_ability( async def set_skill_ability(
@ -849,12 +863,13 @@ class Relic313(BaseRelicSetSkill):
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
if self.pieces2 and await self.check(base_attr, attribute_bonus): if self.pieces2 and await self.check(base_attr, attribute_bonus):
attribute_bonus["CriticalDamageBase"] = ( attribute_bonus["CriticalDamageBase"] = attribute_bonus.get(
attribute_bonus.get("CriticalDamageBase", 0) + (0.0400000000372529 * 10) "CriticalDamageBase", 0
) ) + (0.0400000000372529 * 10)
return attribute_bonus return attribute_bonus
class Relic314(BaseRelicSetSkill): class Relic314(BaseRelicSetSkill):
def __init__(self, set_id: int, count: int): def __init__(self, set_id: int, count: int):
super().__init__(set_id, count) super().__init__(set_id, count)
@ -864,7 +879,7 @@ class Relic314(BaseRelicSetSkill):
base_attr: Dict[str, float], base_attr: Dict[str, float],
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
"""若至少存在一名与装备者命途相同的队友装备者的暴击率提高12%""" """若至少存在一名与装备者命途相同的队友, 装备者的暴击率提高12%"""
return True return True
async def set_skill_ability( async def set_skill_ability(
@ -879,6 +894,7 @@ class Relic314(BaseRelicSetSkill):
return attribute_bonus return attribute_bonus
class RelicSet: class RelicSet:
HEAD: SingleRelic HEAD: SingleRelic
HAND: SingleRelic HAND: SingleRelic

View File

@ -68,7 +68,7 @@ async def get_damage(
merged_attr = await merge_attribute(base_attr, add_attr_bonus) merged_attr = await merge_attribute(base_attr, add_attr_bonus)
injury_area, element_area = calculate_injury_area( injury_area = calculate_injury_area(
merged_attr, merged_attr,
skill_type, skill_type,
add_skill_type, add_skill_type,
@ -442,11 +442,21 @@ async def calculate_damage_tz(
is_hp=0, is_hp=0,
): ):
add_attr_bonus_tz = copy.deepcopy(add_attr_bonus) add_attr_bonus_tz = copy.deepcopy(add_attr_bonus)
add_attr_bonus_tz['AttackAddedRatio'] = add_attr_bonus_tz.get('AttackAddedRatio',0) + 1.694 add_attr_bonus_tz["AttackAddedRatio"] = (
add_attr_bonus_tz['ignore_defence'] = add_attr_bonus_tz.get('ignore_defence',0) + 0.44 add_attr_bonus_tz.get("AttackAddedRatio", 0) + 1.694
add_attr_bonus_tz['AllDamageResistancePenetration'] = add_attr_bonus_tz.get('AllDamageResistancePenetration',0) + 0.27 )
add_attr_bonus_tz['AllDamageAddedRatio'] = add_attr_bonus_tz.get('AllDamageAddedRatio',0) + 2.06 add_attr_bonus_tz["ignore_defence"] = (
add_attr_bonus_tz['CriticalDamageBase'] = add_attr_bonus_tz.get('CriticalDamageBase',0) + 4.578 add_attr_bonus_tz.get("ignore_defence", 0) + 0.44
)
add_attr_bonus_tz["AllDamageResistancePenetration"] = (
add_attr_bonus_tz.get("AllDamageResistancePenetration", 0) + 0.27
)
add_attr_bonus_tz["AllDamageAddedRatio"] = (
add_attr_bonus_tz.get("AllDamageAddedRatio", 0) + 2.06
)
add_attr_bonus_tz["CriticalDamageBase"] = (
add_attr_bonus_tz.get("CriticalDamageBase", 0) + 4.578
)
merged_attr_tz = await merge_attribute(base_attr, add_attr_bonus_tz) merged_attr_tz = await merge_attribute(base_attr, add_attr_bonus_tz)
if is_hp == 1: if is_hp == 1:
attack_tz = merged_attr_tz.get("hp", 0) attack_tz = merged_attr_tz.get("hp", 0)
@ -454,7 +464,7 @@ async def calculate_damage_tz(
attack_tz = merged_attr_tz.get("defence", 0) attack_tz = merged_attr_tz.get("defence", 0)
else: else:
attack_tz = merged_attr_tz.get("attack", 0) attack_tz = merged_attr_tz.get("attack", 0)
resistance_area_tz = calculate_resistance_area( resistance_area_tz = calculate_resistance_area(
merged_attr_tz, merged_attr_tz,
skill_type, skill_type,
@ -473,9 +483,11 @@ async def calculate_damage_tz(
element, element,
) )
# print(f'增伤区:{injury_area_tz}') # print(f'增伤区:{injury_area_tz}')
critical_damage_tz = calculate_critical_damage(merged_attr_tz, skill_type, add_skill_type) critical_damage_tz = calculate_critical_damage(
merged_attr_tz, skill_type, add_skill_type
)
# print(f'爆伤区:{critical_damage_tz}') # print(f'爆伤区:{critical_damage_tz}')
return ( return (
attack_tz attack_tz
* skill_multiplier * skill_multiplier

View File

@ -246,7 +246,7 @@ class BeforeDawn(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -279,7 +279,7 @@ class IntheNight(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -430,7 +430,7 @@ class TodayIsAnotherPeacefulDay(BaseWeapon):
async def check(self): async def check(self):
# 根据装备者的能量上限, 提高装备者造成的伤害: 每点能量提高0.2%, 最多计入160点 # 根据装备者的能量上限, 提高装备者造成的伤害: 每点能量提高0.2%, 最多计入160点
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -491,7 +491,7 @@ class MaketheWorldClamor(BaseWeapon):
async def check(self): async def check(self):
# 终结技造成的伤害提高32%。 # 终结技造成的伤害提高32%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -705,7 +705,7 @@ class NowheretoRun(BaseWeapon):
async def check(self): async def check(self):
# 使装备者的攻击力提高24% # 使装备者的攻击力提高24%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -951,7 +951,7 @@ class SolitaryHealing(BaseWeapon):
async def check(self): async def check(self):
# 使装备者的击破特攻提高20% # 使装备者的击破特攻提高20%
# 装备者施放终结技时, 使装备者造成的持续伤害提高24% # 装备者施放终结技时, 使装备者造成的持续伤害提高24%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -971,7 +971,7 @@ class BeforetheTutorialMissionStarts(BaseWeapon):
async def check(self): async def check(self):
# 当装备者攻击防御力被降低的敌方目标后, 恢复4点能量。 # 当装备者攻击防御力被降低的敌方目标后, 恢复4点能量。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -992,7 +992,7 @@ class WeWillMeetAgain(BaseWeapon):
async def check(self): async def check(self):
# 装备者施放普攻或战技后, # 装备者施放普攻或战技后,
# 对随机1个受到攻击的敌方目标造成等同于自身48%攻击力的附加伤害。 # 对随机1个受到攻击的敌方目标造成等同于自身48%攻击力的附加伤害。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1068,7 +1068,7 @@ class EyesofthePrey(BaseWeapon):
async def check(self): async def check(self):
# 造成的持续伤害提高24%。 # 造成的持续伤害提高24%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1183,7 +1183,7 @@ class TextureofMemories(BaseWeapon):
async def check(self): async def check(self):
# ... # ...
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1203,7 +1203,7 @@ class ThisIsMe(BaseWeapon):
async def check(self): async def check(self):
# 装备者施放终结技时造成的伤害值提高, 提高数值等同于装备者防御力的60% # 装备者施放终结技时造成的伤害值提高, 提高数值等同于装备者防御力的60%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1223,7 +1223,7 @@ class WeAreWildfire(BaseWeapon):
async def check(self): async def check(self):
# 战斗开始时, 使我方全体受到的伤害降低8% # 战斗开始时, 使我方全体受到的伤害降低8%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1244,7 +1244,7 @@ class TrendoftheUniversalMarket(BaseWeapon):
async def check(self): async def check(self):
# 当装备者受到攻击后, 有100%的基础概率使敌方目标陷入灼烧状态, # 当装备者受到攻击后, 有100%的基础概率使敌方目标陷入灼烧状态,
# 每回合造成等同于装备者40%防御力的持续伤害 # 每回合造成等同于装备者40%防御力的持续伤害
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1264,7 +1264,7 @@ class LandausChoice(BaseWeapon):
async def check(self): async def check(self):
# 装备者受到攻击的概率提高, 同时受到的伤害降低16%。 # 装备者受到攻击的概率提高, 同时受到的伤害降低16%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1284,7 +1284,7 @@ class DayOneofMyNewLife(BaseWeapon):
async def check(self): async def check(self):
# 进入战斗后, 使我方全体的全属性抗性提高8% # 进入战斗后, 使我方全体的全属性抗性提高8%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1304,7 +1304,7 @@ class Pioneering(BaseWeapon):
async def check(self): async def check(self):
# 进入战斗后, 使我方全体的全属性抗性提高8% # 进入战斗后, 使我方全体的全属性抗性提高8%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1324,7 +1324,7 @@ class Defense(BaseWeapon):
async def check(self): async def check(self):
# 进入战斗后, 使我方全体的全属性抗性提高8% # 进入战斗后, 使我方全体的全属性抗性提高8%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1428,7 +1428,7 @@ class CollapsingSky(BaseWeapon):
async def check(self): async def check(self):
# 使装备者普攻和战技造成的伤害提高20%。 # 使装备者普攻和战技造成的伤害提高20%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1458,7 +1458,7 @@ class HiddenShadow(BaseWeapon):
async def check(self): async def check(self):
# 施放战技后, 使装备者的下一次普攻对敌方目标造成等同于自身60%攻击力的附加伤害。 # 施放战技后, 使装备者的下一次普攻对敌方目标造成等同于自身60%攻击力的附加伤害。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1562,7 +1562,7 @@ class Passkey(BaseWeapon):
async def check(self): async def check(self):
# 使装备者施放战技后额外恢复8点能量 # 使装备者施放战技后额外恢复8点能量
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1582,7 +1582,7 @@ class DataBank(BaseWeapon):
async def check(self): async def check(self):
# 使装备者终结技造成的伤害提高28%。 # 使装备者终结技造成的伤害提高28%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1609,7 +1609,7 @@ class Thisbodyisasword(BaseWeapon):
# 当队友受到攻击或消耗生命值后, 装备者获得1层【月蚀】, # 当队友受到攻击或消耗生命值后, 装备者获得1层【月蚀】,
# 最多叠加3层。每层【月蚀】使装备者下一次攻击造成的伤害提高14%。 # 最多叠加3层。每层【月蚀】使装备者下一次攻击造成的伤害提高14%。
# 叠满3层时, 额外使该次攻击无视目标12%的防御力。该效果在装备者施放攻击后解除。 # 叠满3层时, 额外使该次攻击无视目标12%的防御力。该效果在装备者施放攻击后解除。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1743,7 +1743,7 @@ class TimeWaitsforNoOne(BaseWeapon):
async def check(self): async def check(self):
# 当装备者对我方目标提供治疗时,记录治疗量。当任意我方目标施放攻击后,根据记录治疗量的36%,对随机1个受到攻击的敌方目标造成基于装备者属性的附加伤害 # 当装备者对我方目标提供治疗时,记录治疗量。当任意我方目标施放攻击后,根据记录治疗量的36%,对随机1个受到攻击的敌方目标造成基于装备者属性的附加伤害
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1850,7 +1850,7 @@ class SharedFeeling(BaseWeapon):
async def check(self): async def check(self):
# 在施放战技时为我方全体恢复2点能量。 # 在施放战技时为我方全体恢复2点能量。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1906,7 +1906,7 @@ class QuidProQuo(BaseWeapon):
async def check(self): async def check(self):
# 随机为1个当前能量百分比小于50%的我方其他目标恢复8点能量。 # 随机为1个当前能量百分比小于50%的我方其他目标恢复8点能量。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -1926,7 +1926,7 @@ class WarmthShortensColdNights(BaseWeapon):
async def check(self): async def check(self):
# 施放普攻或战技后, 为我方全体回复等同于各自生命上限2%的生命值。 # 施放普攻或战技后, 为我方全体回复等同于各自生命上限2%的生命值。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2015,7 +2015,7 @@ class FineFruit(BaseWeapon):
async def check(self): async def check(self):
# 战斗开始时, 立即为我方全体恢复6点能量。 # 战斗开始时, 立即为我方全体恢复6点能量。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2035,7 +2035,7 @@ class Multiplication(BaseWeapon):
async def check(self): async def check(self):
# 战斗开始时, 立即为我方全体恢复6点能量。 # 战斗开始时, 立即为我方全体恢复6点能量。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2055,7 +2055,7 @@ class ButtheBattleIsnotOver(BaseWeapon):
async def check(self): async def check(self):
# 当装备者施放战技后, 使下一个行动的我方【其他目标】造成的伤害提高30% # 当装备者施放战技后, 使下一个行动的我方【其他目标】造成的伤害提高30%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2075,7 +2075,7 @@ class MemoriesofthePast(BaseWeapon):
async def check(self): async def check(self):
# 装备者施放攻击后, 额外恢复4点能量 # 装备者施放攻击后, 额外恢复4点能量
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2095,7 +2095,7 @@ class PlanetaryRendezvous(BaseWeapon):
async def check(self): async def check(self):
# 当我方目标造成与装备者相同属性的伤害时, 造成的伤害提高12%。 # 当我方目标造成与装备者相同属性的伤害时, 造成的伤害提高12%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2124,7 +2124,7 @@ class DanceDanceDance(BaseWeapon):
async def check(self): async def check(self):
# 当装备者施放终结技后, 我方全体行动提前16%。 # 当装备者施放终结技后, 我方全体行动提前16%。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2144,7 +2144,7 @@ class PastandFuture(BaseWeapon):
async def check(self): async def check(self):
# 使下一个行动的我方【其他目标】造成的伤害提高16% # 使下一个行动的我方【其他目标】造成的伤害提高16%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2167,7 +2167,7 @@ class CarvetheMoonWeavetheClouds(BaseWeapon):
# 使我方全体攻击力提高10% # 使我方全体攻击力提高10%
# 使我方全体暴击伤害提高12% # 使我方全体暴击伤害提高12%
# 暂时固定只算攻击 # 暂时固定只算攻击
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2196,7 +2196,7 @@ class Chorus(BaseWeapon):
async def check(self): async def check(self):
# 进入战斗后,使我方全体的攻击力提高8% # 进入战斗后,使我方全体的攻击力提高8%
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2225,7 +2225,7 @@ class MeshingCogs(BaseWeapon):
async def check(self): async def check(self):
# 使装备者施放攻击或受到攻击后,额外恢复4点能量 # 使装备者施放攻击或受到攻击后,额外恢复4点能量
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2342,6 +2342,7 @@ class PastSelfinMirror(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 游戏尘寰 # 游戏尘寰
class EarthlyEscapade(BaseWeapon): class EarthlyEscapade(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2350,7 +2351,7 @@ class EarthlyEscapade(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 战斗开始时使装备者获得【假面】持续3回合。当装备者持有【假面】时装备者的队友暴击率提高10%暴击伤害提高28%。 # 战斗开始时, 使装备者获得【假面】, 持续3回合。当装备者持有【假面】时, 装备者的队友暴击率提高10%, 暴击伤害提高28%。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2363,16 +2364,21 @@ class EarthlyEscapade(BaseWeapon):
critical_damage_base = attribute_bonus.get("CriticalDamageBase", 0) critical_damage_base = attribute_bonus.get("CriticalDamageBase", 0)
attribute_bonus["CriticalDamageBase"] = ( attribute_bonus["CriticalDamageBase"] = (
critical_damage_base critical_damage_base
+ weapon_effect["23021"]["Param"]["CriticalDamageBase"][self.weapon_rank - 1] + weapon_effect["23021"]["Param"]["CriticalDamageBase"][
self.weapon_rank - 1
]
) )
critical_chance_base = attribute_bonus.get("CriticalChanceBase", 0) critical_chance_base = attribute_bonus.get("CriticalChanceBase", 0)
attribute_bonus["CriticalChanceBase"] = ( attribute_bonus["CriticalChanceBase"] = (
critical_chance_base critical_chance_base
+ weapon_effect["23021"]["Param"]["CriticalChance"][self.weapon_rank - 1] + weapon_effect["23021"]["Param"]["CriticalChance"][
self.weapon_rank - 1
]
) )
return attribute_bonus return attribute_bonus
# 重塑时光之忆 # 重塑时光之忆
class ReforgedRemembrance(BaseWeapon): class ReforgedRemembrance(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2381,7 +2387,7 @@ class ReforgedRemembrance(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者对陷入风化、灼烧、触电、裂伤状态的敌方目标造成伤害时分别获得1层【先知】最多叠加4层。单场战斗中每种持续伤害状态类型仅可叠加1次【先知】效果。每层【先知】使装备者的攻击力提高5%造成的持续伤害无视目标7.2%的防御力。 # 装备者对陷入风化、灼烧、触电、裂伤状态的敌方目标造成伤害时, 分别获得1层【先知】, 最多叠加4层。单场战斗中, 每种持续伤害状态类型仅可叠加1次【先知】效果。每层【先知】使装备者的攻击力提高5%, 造成的持续伤害无视目标7.2%的防御力。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2401,7 +2407,7 @@ class ReforgedRemembrance(BaseWeapon):
) )
* 4 * 4
) )
resistance_penetration = attribute_bonus.get("DOTignore_defence", 0) resistance_penetration = attribute_bonus.get("DOTignore_defence", 0)
attribute_bonus["DOTignore_defence"] = ( attribute_bonus["DOTignore_defence"] = (
resistance_penetration resistance_penetration
@ -2414,6 +2420,7 @@ class ReforgedRemembrance(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 何物为真 # 何物为真
class WhatIsReal(BaseWeapon): class WhatIsReal(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2422,8 +2429,8 @@ class WhatIsReal(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 施放普攻后装备者回复等同于2%生命上限+800点的生命值。 # 施放普攻后, 装备者回复等同于2%生命上限+800点的生命值。
pass return True
async def weapon_ability( async def weapon_ability(
self, self,
@ -2433,6 +2440,7 @@ class WhatIsReal(BaseWeapon):
): ):
return attribute_bonus return attribute_bonus
# 美梦小镇大冒险 # 美梦小镇大冒险
class DreamvilleAdventure(BaseWeapon): class DreamvilleAdventure(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2441,7 +2449,7 @@ class DreamvilleAdventure(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者施放普攻、战技、终结技中某一类型的技能后,为我方全体附加【童心】,【童心】可以使我方目标对应类型的技能所造成的伤害提高12% # 装备者施放普攻、战技、终结技中某一类型的技能后, 为我方全体附加【童心】, 【童心】可以使我方目标对应类型的技能所造成的伤害提高12%
return True return True
async def weapon_ability( async def weapon_ability(
@ -2462,6 +2470,7 @@ class DreamvilleAdventure(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 最后的赢家 # 最后的赢家
class FinalVictor(BaseWeapon): class FinalVictor(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2470,7 +2479,7 @@ class FinalVictor(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 当装备者对敌方目标造成暴击后获得一层【好运】最多叠加4层。每层【好运】使装备者的暴击伤害提高8% # 当装备者对敌方目标造成暴击后获得一层【好运】, 最多叠加4层。每层【好运】使装备者的暴击伤害提高8%
return True return True
async def weapon_ability( async def weapon_ability(
@ -2481,17 +2490,15 @@ class FinalVictor(BaseWeapon):
): ):
if await self.check(): if await self.check():
Critical_Damage_Base = attribute_bonus.get("CriticalDamageBase", 0) Critical_Damage_Base = attribute_bonus.get("CriticalDamageBase", 0)
attribute_bonus["CriticalDamageBase"] = ( attribute_bonus["CriticalDamageBase"] = Critical_Damage_Base + (
Critical_Damage_Base weapon_effect["21037"]["Param"]["CriticalDamageBase"][
+ ( self.weapon_rank - 1
weapon_effect["21037"]["Param"]["CriticalDamageBase"][ ]
self.weapon_rank - 1 * 4
]
* 4
)
) )
return attribute_bonus return attribute_bonus
# 在火的远处 # 在火的远处
class FlamesAfar(BaseWeapon): class FlamesAfar(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2521,6 +2528,7 @@ class FlamesAfar(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 织造命运之线 # 织造命运之线
class DestinysThreadsForewoven(BaseWeapon): class DestinysThreadsForewoven(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2529,7 +2537,7 @@ class DestinysThreadsForewoven(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者每有100点防御力使装备者造成的伤害提高0.8%最多使造成的伤害提高32%。 # 装备者每有100点防御力, 使装备者造成的伤害提高0.8%, 最多使造成的伤害提高32%。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2539,13 +2547,26 @@ class DestinysThreadsForewoven(BaseWeapon):
attribute_bonus: Dict[str, float], attribute_bonus: Dict[str, float],
): ):
if await self.check(): if await self.check():
defence = base_attr["defence"] * (1 + attribute_bonus["DefenceAddedRatio"]) + attribute_bonus["DefenceDelta"] defence = (
damage_added = (defence/100) * weapon_effect["21039"]["Param"]["AllDamageAddedRatio"][self.weapon_rank - 1] base_attr["defence"] * (1 + attribute_bonus["DefenceAddedRatio"])
damage_added = min(damage_added, weapon_effect["21039"]["Param"]["AllDamageAddedRatio_max"][self.weapon_rank - 1]) + attribute_bonus["DefenceDelta"]
)
damage_added = (defence / 100) * weapon_effect["21039"]["Param"][
"AllDamageAddedRatio"
][self.weapon_rank - 1]
damage_added = min(
damage_added,
weapon_effect["21039"]["Param"]["AllDamageAddedRatio_max"][
self.weapon_rank - 1
],
)
all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0) all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0)
attribute_bonus["AllDamageAddedRatio"] = all_damage_added_ratio + damage_added attribute_bonus["AllDamageAddedRatio"] = (
all_damage_added_ratio + damage_added
)
return attribute_bonus return attribute_bonus
# 银河沦陷日 # 银河沦陷日
class TheDayTheCosmosFell(BaseWeapon): class TheDayTheCosmosFell(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2554,7 +2575,7 @@ class TheDayTheCosmosFell(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者施放攻击后若有不少于2个被攻击的敌方目标具有对应属性弱点装备者的暴击伤害提高20%持续2回合。 # 装备者施放攻击后, 若有不少于2个被攻击的敌方目标具有对应属性弱点, 装备者的暴击伤害提高20%, 持续2回合。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2575,6 +2596,7 @@ class TheDayTheCosmosFell(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 好戏开演 # 好戏开演
class ItsShowtime(BaseWeapon): class ItsShowtime(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2583,7 +2605,7 @@ class ItsShowtime(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者对敌方目标施加负面状态后获得一层【戏法】每层【戏法】使装备者造成的伤害提高6%最多叠加3层持续1回合。当装备者的效果命中大于等于80%时,攻击力提高20%。 # 装备者对敌方目标施加负面状态后, 获得一层【戏法】, 每层【戏法】使装备者造成的伤害提高6%, 最多叠加3层, 持续1回合。当装备者的效果命中大于等于80%时, 攻击力提高20%。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2594,14 +2616,11 @@ class ItsShowtime(BaseWeapon):
): ):
if await self.check(): if await self.check():
all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0) all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0)
attribute_bonus["AllDamageAddedRatio"] = ( attribute_bonus["AllDamageAddedRatio"] = all_damage_added_ratio + (
all_damage_added_ratio weapon_effect["21041"]["Param"]["AllDamageAddedRatio"][
+ ( self.weapon_rank - 1
weapon_effect["21041"]["Param"]["AllDamageAddedRatio"][ ]
self.weapon_rank - 1 * 3
]
* 3
)
) )
Status_Probability_Base = attribute_bonus.get("StatusProbabilityBase", 0) Status_Probability_Base = attribute_bonus.get("StatusProbabilityBase", 0)
if Status_Probability_Base >= 0.8: if Status_Probability_Base >= 0.8:
@ -2616,6 +2635,7 @@ class ItsShowtime(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 铭记于心的约定 # 铭记于心的约定
class IndeliblePromise(BaseWeapon): class IndeliblePromise(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2624,7 +2644,7 @@ class IndeliblePromise(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 当装备者释放终结技时暴击率提高15%持续2回合。 # 当装备者释放终结技时, 暴击率提高15%, 持续2回合。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2645,6 +2665,7 @@ class IndeliblePromise(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 两个人的演唱会 # 两个人的演唱会
class ConcertforTwo(BaseWeapon): class ConcertforTwo(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2653,7 +2674,7 @@ class ConcertforTwo(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 场上每有一名持有护盾的角色装备者造成的伤害提高4%。 # 场上每有一名持有护盾的角色, 装备者造成的伤害提高4%。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2664,17 +2685,15 @@ class ConcertforTwo(BaseWeapon):
): ):
if await self.check(): if await self.check():
all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0) all_damage_added_ratio = attribute_bonus.get("AllDamageAddedRatio", 0)
attribute_bonus["AllDamageAddedRatio"] = ( attribute_bonus["AllDamageAddedRatio"] = all_damage_added_ratio + (
all_damage_added_ratio weapon_effect["21043"]["Param"]["AllDamageAddedRatio"][
+ ( self.weapon_rank - 1
weapon_effect["21043"]["Param"]["AllDamageAddedRatio"][ ]
self.weapon_rank - 1 * 4
]
* 4
)
) )
return attribute_bonus return attribute_bonus
# 行于流逝的岸 # 行于流逝的岸
class AlongthePassingShore(BaseWeapon): class AlongthePassingShore(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2683,7 +2702,7 @@ class AlongthePassingShore(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者对陷入【泡影】状态的目标造成的伤害提高24%终结技造成的伤害额外提高24% # 装备者对陷入【泡影】状态的目标造成的伤害提高24%, 终结技造成的伤害额外提高24%
return True return True
async def weapon_ability( async def weapon_ability(
@ -2705,14 +2724,11 @@ class AlongthePassingShore(BaseWeapon):
Ultra_Dmg_Add = attribute_bonus.get("UltraDmgAdd", 0) Ultra_Dmg_Add = attribute_bonus.get("UltraDmgAdd", 0)
attribute_bonus["UltraDmgAdd"] = ( attribute_bonus["UltraDmgAdd"] = (
Ultra_Dmg_Add Ultra_Dmg_Add
+ ( + (weapon_effect["23024"]["Param"]["UltraDmgAdd"][self.weapon_rank - 1])
weapon_effect["23024"]["Param"]["UltraDmgAdd"][
self.weapon_rank - 1
]
)
) )
return attribute_bonus return attribute_bonus
# 命运从未公平 # 命运从未公平
class InherentlyUnjustDestiny(BaseWeapon): class InherentlyUnjustDestiny(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2721,7 +2737,7 @@ class InherentlyUnjustDestiny(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 当装备者为我方目标提供护盾时使装备者的暴击伤害提高40%持续2回合。当装备者发动追加攻击击中敌方目标时有100%的基础概率使受到攻击的敌方目标受到的伤害提高10%持续2回合。 # 当装备者为我方目标提供护盾时, 使装备者的暴击伤害提高40%, 持续2回合。当装备者发动追加攻击击中敌方目标时, 有100%的基础概率使受到攻击的敌方目标受到的伤害提高10%, 持续2回合。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2743,14 +2759,11 @@ class InherentlyUnjustDestiny(BaseWeapon):
Dmg_Ratio = attribute_bonus.get("DmgRatio", 0) Dmg_Ratio = attribute_bonus.get("DmgRatio", 0)
attribute_bonus["DmgRatio"] = ( attribute_bonus["DmgRatio"] = (
Dmg_Ratio Dmg_Ratio
+ ( + (weapon_effect["23023"]["Param"]["DmgRatio"][self.weapon_rank - 1])
weapon_effect["23023"]["Param"]["DmgRatio"][
self.weapon_rank - 1
]
)
) )
return attribute_bonus return attribute_bonus
# 夜色流光溢彩 # 夜色流光溢彩
class FlowingNightglow(BaseWeapon): class FlowingNightglow(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2759,7 +2772,7 @@ class FlowingNightglow(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 【华彩】使装备者的攻击力提高48%使我方全体造成的伤害提高24%持续1回合。 # 【华彩】使装备者的攻击力提高48%, 使我方全体造成的伤害提高24%, 持续1回合。
return True return True
async def weapon_ability( async def weapon_ability(
@ -2789,6 +2802,7 @@ class FlowingNightglow(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 驶向第二次生命 # 驶向第二次生命
class SailingTowardsASecondLife(BaseWeapon): class SailingTowardsASecondLife(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2797,7 +2811,7 @@ class SailingTowardsASecondLife(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 造成的击破伤害无视目标20%的防御力。当装备者击中敌方目标时使目标受到的伤害提高1%该状态最多叠加6层 # 造成的击破伤害无视目标20%的防御力。当装备者击中敌方目标时, 使目标受到的伤害提高1%, 该状态最多叠加6层
return True return True
async def weapon_ability( async def weapon_ability(
@ -2817,17 +2831,12 @@ class SailingTowardsASecondLife(BaseWeapon):
) )
) )
Dmg_Ratio = attribute_bonus.get("DmgRatio", 0) Dmg_Ratio = attribute_bonus.get("DmgRatio", 0)
attribute_bonus["DmgRatio"] = ( attribute_bonus["DmgRatio"] = Dmg_Ratio + (
Dmg_Ratio weapon_effect["23027"]["Param"]["DmgRatio"][self.weapon_rank - 1] * 6
+ (
weapon_effect["23027"]["Param"]["DmgRatio"][
self.weapon_rank - 1
]
* 6
)
) )
return attribute_bonus return attribute_bonus
# 无边曼舞 # 无边曼舞
class BoundlessChoreo(BaseWeapon): class BoundlessChoreo(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2857,6 +2866,7 @@ class BoundlessChoreo(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
# 为了明日的旅途 # 为了明日的旅途
class ForTomorrowsJourney(BaseWeapon): class ForTomorrowsJourney(BaseWeapon):
weapon_base_attributes: Dict weapon_base_attributes: Dict
@ -2865,7 +2875,7 @@ class ForTomorrowsJourney(BaseWeapon):
super().__init__(weapon) super().__init__(weapon)
async def check(self): async def check(self):
# 装备者施放终结技后造成的伤害提高18% # 装备者施放终结技后, 造成的伤害提高18%
return True return True
async def weapon_ability( async def weapon_ability(
@ -2886,6 +2896,7 @@ class ForTomorrowsJourney(BaseWeapon):
) )
return attribute_bonus return attribute_bonus
class Weapon: class Weapon:
@classmethod @classmethod
def create(cls, weapon: DamageInstanceWeapon): def create(cls, weapon: DamageInstanceWeapon):

View File

@ -8,6 +8,7 @@ class UidNotfoundError(Exception):
def __str__(self): def __str__(self):
return self.uid return self.uid
class InvalidUidError(Exception): class InvalidUidError(Exception):
def __init__(self, uid: str): def __init__(self, uid: str):
self.uid = uid self.uid = uid

View File

@ -1,4 +1,5 @@
"""Mihomo.me api 包装""" """Mihomo.me api 包装"""
from starrail_damage_cal.mihomo.models import MihomoData from starrail_damage_cal.mihomo.models import MihomoData
from starrail_damage_cal.mihomo.requests import get_char_card_info as requests from starrail_damage_cal.mihomo.requests import get_char_card_info as requests

View File

@ -10,7 +10,7 @@ from starrail_damage_cal.map.SR_MAP_PATH import (
class Character: class Character:
def __init__(self, card_prop: Dict): def __init__(self, card_prop: Dict):
self.char_level: int = int(card_prop["avatarLevel"]) self.char_level: int = int(card_prop["avatarLevel"])
self.char_id: str = card_prop["avatarId"] self.char_id: int = card_prop["avatarId"]
self.char_name: str = card_prop["avatarName"] self.char_name: str = card_prop["avatarName"]
self.char_rank = card_prop["rank"] if card_prop.get("rank") else 0 self.char_rank = card_prop["rank"] if card_prop.get("rank") else 0
self.char_rarity = card_prop["avatarRarity"] self.char_rarity = card_prop["avatarRarity"]
@ -28,7 +28,7 @@ class Character:
async def get_equipment_info(self): async def get_equipment_info(self):
if self.equipment == {}: if self.equipment == {}:
return return None
base_attr = self.base_attributes base_attr = self.base_attributes
equip = self.equipment equip = self.equipment
ability_property = EquipmentID2AbilityProperty[str(equip["equipmentID"])] ability_property = EquipmentID2AbilityProperty[str(equip["equipmentID"])]
@ -43,9 +43,10 @@ class Character:
self.base_attributes = base_attr self.base_attributes = base_attr
for equip_ability in equip_ability_property: for equip_ability in equip_ability_property:
property_type = equip_ability["PropertyType"] property_type: str = equip_ability["PropertyType"]
value = equip_ability["Value"]["Value"] value: float = equip_ability["Value"]["Value"]
self.add_attr[property_type] = value + self.add_attr.get(property_type, 0) self.add_attr[property_type] = value + self.add_attr.get(property_type, 0)
return self.add_attr
async def get_char_attribute_bonus(self): async def get_char_attribute_bonus(self):
attribute_bonus = self.attribute_bonus attribute_bonus = self.attribute_bonus

View File

@ -65,10 +65,12 @@ async def api_to_dict(
char_id_list: List[str] = [] char_id_list: List[str] = []
char_data_list: Dict[str, Dict] = {} char_data_list: Dict[str, Dict] = {}
nickName = PlayerDetailInfo.nickname nickName = PlayerDetailInfo.nickname
avatarList = (PlayerDetailInfo.avatarDetailList if PlayerDetailInfo.avatarDetailList else []) + (PlayerDetailInfo.assistAvatarList if PlayerDetailInfo.assistAvatarList else []) avatarList = (
PlayerDetailInfo.avatarDetailList if PlayerDetailInfo.avatarDetailList else []
) + (PlayerDetailInfo.assistAvatarList if PlayerDetailInfo.assistAvatarList else [])
for char in avatarList: for char in avatarList:
if str(char.avatarId) in char_id_list: if str(char.avatarId) in char_id_list:
continue continue
char_data, avatarName = await get_data( char_data, avatarName = await get_data(
char, char,
nickName, nickName,
@ -211,9 +213,9 @@ async def get_data(
# 查找skill_id在不在avatarSkill中 # 查找skill_id在不在avatarSkill中
for index, skill_item in enumerate(char_data["avatarSkill"]): for index, skill_item in enumerate(char_data["avatarSkill"]):
if str(skill_id) == str(skill_item["skillId"]): if str(skill_id) == str(skill_item["skillId"]):
char_data["avatarSkill"][index][ char_data["avatarSkill"][index]["skillLevel"] += (
"skillLevel" skill_up_num
] += skill_up_num )
break break
# 处理基础属性 # 处理基础属性