ipa-python-kit 1.0.0__tar.gz → 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/.gitignore +2 -0
  2. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/PKG-INFO +3 -2
  3. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/README.md +2 -1
  4. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/pyproject.toml +2 -0
  5. ipa_python_kit-1.0.2/pytest.ini +7 -0
  6. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/app/__init__.py +3 -0
  7. ipa_python_kit-1.0.2/src/ipa/datetime/__init__.py +28 -0
  8. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/version.py +3 -3
  9. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa_python_kit.egg-info/PKG-INFO +3 -2
  10. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/uv.lock +213 -6
  11. ipa_python_kit-1.0.0/pytest.ini +0 -6
  12. ipa_python_kit-1.0.0/src/ipa/websocket/__init__.py +0 -1
  13. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/.pre-commit-config.yaml +0 -0
  14. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/.pypirc.example +0 -0
  15. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/.vscode/settings.json +0 -0
  16. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/alembic/README +0 -0
  17. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/alembic/env.py +0 -0
  18. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/alembic/script.py.mako +0 -0
  19. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/alembic/versions/5227325b977d_baseline.py +0 -0
  20. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/alembic.ini +0 -0
  21. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/docs/README.md +0 -0
  22. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/main.py +0 -0
  23. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/main.spec +0 -0
  24. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/ruff.toml +0 -0
  25. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/scripts/build +0 -0
  26. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/scripts/publish +0 -0
  27. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/scripts/setup +0 -0
  28. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/setup.cfg +0 -0
  29. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/biz/__init__.py +0 -0
  30. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/conf/__init__.py +0 -0
  31. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/__init__.py +0 -0
  32. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/cli/__init__.py +0 -0
  33. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/cli/model.py +0 -0
  34. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/cli/proxy.py +0 -0
  35. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/cli/seaweedfs.py +0 -0
  36. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/ctx/__init__.py +0 -0
  37. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/__init__.py +0 -0
  38. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/_math.py +0 -0
  39. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/_queue.py +0 -0
  40. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/base.py +0 -0
  41. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/config.py +0 -0
  42. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/container.py +0 -0
  43. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/echarts.py +0 -0
  44. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/exception.py +0 -0
  45. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/handler.py +0 -0
  46. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/lifecycle.py +0 -0
  47. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/net.py +0 -0
  48. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/notice.py +0 -0
  49. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/page.py +0 -0
  50. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/point.py +0 -0
  51. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/process.py +0 -0
  52. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/spatial.py +0 -0
  53. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/data_type/unitable.py +0 -0
  54. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/datetime/core.py +0 -0
  55. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/decorator/__init__.py +0 -0
  56. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/decorator/exception.py +0 -0
  57. {ipa_python_kit-1.0.0/src/ipa/datetime → ipa_python_kit-1.0.2/src/ipa/echarts}/__init__.py +0 -0
  58. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/echarts/core/__init__.py +0 -0
  59. {ipa_python_kit-1.0.0/src/ipa/echarts → ipa_python_kit-1.0.2/src/ipa/fastapi}/__init__.py +0 -0
  60. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/fastapi/core/__init__.py +0 -0
  61. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/__init__.py +0 -0
  62. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/_async.py +0 -0
  63. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/_lambda.py +0 -0
  64. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/_object.py +0 -0
  65. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/database.py +0 -0
  66. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/dict.py +0 -0
  67. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/num.py +0 -0
  68. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/shortcut.py +0 -0
  69. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/func/table.py +0 -0
  70. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/i18n/__init__.py +0 -0
  71. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/i18n/core.py +0 -0
  72. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/i18n/locales/__init__.py +0 -0
  73. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/io/__init__.py +0 -0
  74. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/io/buffer.py +0 -0
  75. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/__init__.py +0 -0
  76. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/builder.py +0 -0
  77. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/fmt.py +0 -0
  78. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/handler.py +0 -0
  79. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/model/__init__.py +0 -0
  80. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/model/dict_config.py +0 -0
  81. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/logging/util.py +0 -0
  82. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/math/__init__.py +0 -0
  83. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/math/core.py +0 -0
  84. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/network/__init__.py +0 -0
  85. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/pkg/__init__.py +0 -0
  86. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/pkg/hot_reload.py +0 -0
  87. {ipa_python_kit-1.0.0/src/ipa/fastapi → ipa_python_kit-1.0.2/src/ipa/pydantic}/__init__.py +0 -0
  88. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/pydantic/core/__init__.py +0 -0
  89. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/system/__init__.py +0 -0
  90. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/system/disk.py +0 -0
  91. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/system/process.py +0 -0
  92. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/visualization/__init__.py +0 -0
  93. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/visualization/_networkx.py +0 -0
  94. {ipa_python_kit-1.0.0/src/ipa/pydantic → ipa_python_kit-1.0.2/src/ipa/websocket}/__init__.py +0 -0
  95. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa/websocket/core/__init__.py +0 -0
  96. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa_python_kit.egg-info/SOURCES.txt +0 -0
  97. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa_python_kit.egg-info/dependency_links.txt +0 -0
  98. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa_python_kit.egg-info/requires.txt +0 -0
  99. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/src/ipa_python_kit.egg-info/top_level.txt +0 -0
  100. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/cli_test.py +0 -0
  101. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/ctx_test.py +0 -0
  102. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/data_type_test.py +0 -0
  103. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/datetime_test.py +0 -0
  104. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/decorator_test.py +0 -0
  105. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/echarts_test.py +0 -0
  106. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/fastapi_test.py +0 -0
  107. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/i18n_test.py +0 -0
  108. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/io_test.py +0 -0
  109. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/logger_test.py +0 -0
  110. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/math_test.py +0 -0
  111. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/network_test.py +0 -0
  112. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/point_test.py +0 -0
  113. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/pydantic_test.py +0 -0
  114. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/python_test.py +0 -0
  115. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/subprocess_test/child.py +0 -0
  116. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/subprocess_test/pipe_test.py +0 -0
  117. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/system_test.py +0 -0
  118. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/vis_test.py +0 -0
  119. {ipa_python_kit-1.0.0 → ipa_python_kit-1.0.2}/tests/websocket_test.py +0 -0
@@ -4,6 +4,8 @@ dist
4
4
  build
5
5
  data
6
6
  *.log
7
+ *.log.*
8
+ .coverage
7
9
 
8
10
  **/*.egg-info
9
11
  .pypirc
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ipa-python-kit
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: kit for python
5
5
  Author-email: xdewx <present150608@sina.com>
6
6
  Keywords: python,kit,lib,util
@@ -55,7 +55,7 @@ or
55
55
 
56
56
  ## features
57
57
 
58
- 1. pytest
58
+ 1. pytest & pytest-cov
59
59
  2. pre-commit
60
60
  3. darker for code format
61
61
  4. ruff for lint
@@ -83,6 +83,7 @@ before you start:
83
83
  ### unit test
84
84
 
85
85
  `uv run -m pytest`
86
+ > `htmlcov` folder contains html coverage report.
86
87
 
87
88
  ### run cli
88
89
 
@@ -10,7 +10,7 @@ or
10
10
 
11
11
  ## features
12
12
 
13
- 1. pytest
13
+ 1. pytest & pytest-cov
14
14
  2. pre-commit
15
15
  3. darker for code format
16
16
  4. ruff for lint
@@ -38,6 +38,7 @@ before you start:
38
38
  ### unit test
39
39
 
40
40
  `uv run -m pytest`
41
+ > `htmlcov` folder contains html coverage report.
41
42
 
42
43
  ### run cli
43
44
 
@@ -91,4 +91,6 @@ dev = [
91
91
  "pytest==8.3.5",
92
92
  "ruff==0.13.1",
93
93
  "setuptools-scm>=9.2.2",
94
+ "pyinstaller>=6.18.0",
95
+ "pytest-cov>=7.1.0",
94
96
  ]
@@ -0,0 +1,7 @@
1
+ [pytest]
2
+
3
+ pythonpath = src
4
+ testpaths = tests/
5
+
6
+ # 2. 代码覆盖率配置(pytest-cov)
7
+ addopts = --cov=src --cov-report=term --cov-report=html
@@ -55,3 +55,6 @@ class IAppConfig(ABC):
55
55
 
56
56
  def get_sidecar_dir(self, *args, **kwargs) -> Optional[Path]:
57
57
  raise NotImplementedError()
58
+
59
+ def get_result_dir(self, *args, **kwargs) -> Optional[Path]:
60
+ raise NotImplementedError()
@@ -0,0 +1,28 @@
1
+ import time
2
+ from typing import Literal
3
+
4
+ from .core import *
5
+
6
+
7
+ def timestamp(
8
+ unit: Literal["second", "millisecond", "microsecond"] = "millisecond",
9
+ type: Union[float, int] = int,
10
+ ) -> Union[float, int]:
11
+ """
12
+ 获取当前时间戳
13
+ Args:
14
+ unit: 时间戳单位,默认毫秒
15
+ type: 时间戳类型,默认整数
16
+ Returns:
17
+ 时间戳
18
+ """
19
+ s = time.time()
20
+ if unit == "millisecond":
21
+ v = s * 1000
22
+ elif unit == "microsecond":
23
+ v = s * 1000000
24
+ elif unit == "second":
25
+ v = s
26
+ else:
27
+ raise NotImplementedError(f"unsupported unit: {unit}")
28
+ return type(v)
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.0'
22
- __version_tuple__ = version_tuple = (1, 0, 0)
21
+ __version__ = version = '1.0.2'
22
+ __version_tuple__ = version_tuple = (1, 0, 2)
23
23
 
24
- __commit_id__ = commit_id = 'g33579e931'
24
+ __commit_id__ = commit_id = 'gfa5bd28fc'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ipa-python-kit
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: kit for python
5
5
  Author-email: xdewx <present150608@sina.com>
6
6
  Keywords: python,kit,lib,util
@@ -55,7 +55,7 @@ or
55
55
 
56
56
  ## features
57
57
 
58
- 1. pytest
58
+ 1. pytest & pytest-cov
59
59
  2. pre-commit
60
60
  3. darker for code format
61
61
  4. ruff for lint
@@ -83,6 +83,7 @@ before you start:
83
83
  ### unit test
84
84
 
85
85
  `uv run -m pytest`
86
+ > `htmlcov` folder contains html coverage report.
86
87
 
87
88
  ### run cli
88
89
 
@@ -21,6 +21,15 @@ wheels = [
21
21
  { url = "https://mirrors.cloud.tencent.com/pypi/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a" },
22
22
  ]
23
23
 
24
+ [[package]]
25
+ name = "altgraph"
26
+ version = "0.17.5"
27
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
28
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", hash = "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7" }
29
+ wheels = [
30
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", hash = "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597" },
31
+ ]
32
+
24
33
  [[package]]
25
34
  name = "annotated-doc"
26
35
  version = "0.0.4"
@@ -481,6 +490,124 @@ wheels = [
481
490
  { url = "https://mirrors.cloud.tencent.com/pypi/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77" },
482
491
  ]
483
492
 
493
+ [[package]]
494
+ name = "coverage"
495
+ version = "7.13.5"
496
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
497
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/9d/e0/70553e3000e345daff267cec284ce4cbf3fc141b6da229ac52775b5428f1/coverage-7.13.5.tar.gz", hash = "sha256:c81f6515c4c40141f83f502b07bbfa5c240ba25bbe73da7b33f1e5b6120ff179" }
498
+ wheels = [
499
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/69/33/e8c48488c29a73fd089f9d71f9653c1be7478f2ad6b5bc870db11a55d23d/coverage-7.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0723d2c96324561b9aa76fb982406e11d93cdb388a7a7da2b16e04719cf7ca5" },
500
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/da/bd/b0ebe9f677d7f4b74a3e115eec7ddd4bcf892074963a00d91e8b164a6386/coverage-7.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:52f444e86475992506b32d4e5ca55c24fc88d73bcbda0e9745095b28ef4dc0cf" },
501
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/48/cc/5cb9502f4e01972f54eedd48218bb203fe81e294be606a2bc93970208013/coverage-7.13.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:704de6328e3d612a8f6c07000a878ff38181ec3263d5a11da1db294fa6a9bdf8" },
502
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/7d/d8/3217636d86c7e7b12e126e4f30ef1581047da73140614523af7495ed5f2d/coverage-7.13.5-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a1a6d79a14e1ec1832cabc833898636ad5f3754a678ef8bb4908515208bf84f4" },
503
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/2b/30/2002ac6729ba2d4357438e2ed3c447ad8562866c8c63fc16f6dfc33afe56/coverage-7.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79060214983769c7ba3f0cee10b54c97609dca4d478fa1aa32b914480fd5738d" },
504
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/6c/85/552496626d6b9359eb0e2f86f920037c9cbfba09b24d914c6e1528155f7d/coverage-7.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:356e76b46783a98c2a2fe81ec79df4883a1e62895ea952968fb253c114e7f930" },
505
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/44/21/40256eabdcbccdb6acf6b381b3016a154399a75fe39d406f790ae84d1f3c/coverage-7.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cef0cdec915d11254a7f549c1170afecce708d30610c6abdded1f74e581666d" },
506
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/b1/e8/96e2a6c3f21a0ea77d7830b254a1542d0328acc8d7bdf6a284ba7e529f77/coverage-7.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dc022073d063b25a402454e5712ef9e007113e3a676b96c5f29b2bda29352f40" },
507
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/da/ba/8477f549e554827da390ec659f3c38e4b6d95470f4daafc2d8ff94eaa9c2/coverage-7.13.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9b74db26dfea4f4e50d48a4602207cd1e78be33182bc9cbf22da94f332f99878" },
508
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/55/59/bc22aef0e6aa179d5b1b001e8b3654785e9adf27ef24c93dc4228ebd5d68/coverage-7.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ad146744ca4fd09b50c482650e3c1b1f4dfa1d4792e0a04a369c7f23336f0400" },
509
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/de/1b/c6a023a160806a5137dca53468fd97530d6acad24a22003b1578a9c2e429/coverage-7.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c555b48be1853fe3997c11c4bd521cdd9a9612352de01fa4508f16ec341e6fe0" },
510
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/2d/3f/3532c85a55aa2f899fa17c186f831cfa1aa434d88ff792a709636f64130e/coverage-7.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7034b5c56a58ae5e85f23949d52c14aca2cfc6848a31764995b7de88f13a1ea0" },
511
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/aa/2e/b9d56af4a24ef45dfbcda88e06870cb7d57b2b0bfa3a888d79b4c8debd76/coverage-7.13.5-cp310-cp310-win32.whl", hash = "sha256:eb7fdf1ef130660e7415e0253a01a7d5a88c9c4d158bcf75cbbd922fd65a5b58" },
512
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9f/cc/d938417e7a4d7f0433ad4edee8bb2acdc60dc7ac5af19e2a07a048ecbee3/coverage-7.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:3e1bb5f6c78feeb1be3475789b14a0f0a5b47d505bfc7267126ccbd50289999e" },
513
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/4b/37/d24c8f8220ff07b839b2c043ea4903a33b0f455abe673ae3c03bbdb7f212/coverage-7.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66a80c616f80181f4d643b0f9e709d97bcea413ecd9631e1dedc7401c8e6695d" },
514
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/35/8b/cd129b0ca4afe886a6ce9d183c44d8301acbd4ef248622e7c49a23145605/coverage-7.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:145ede53ccbafb297c1c9287f788d1bc3efd6c900da23bf6931b09eafc931587" },
515
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/55/2f/e0e5b237bffdb5d6c530ce87cc1d413a5b7d7dfd60fb067ad6d254c35c76/coverage-7.13.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0672854dc733c342fa3e957e0605256d2bf5934feeac328da9e0b5449634a642" },
516
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/92/be/b1afb692be85b947f3401375851484496134c5554e67e822c35f28bf2fbc/coverage-7.13.5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec10e2a42b41c923c2209b846126c6582db5e43a33157e9870ba9fb70dc7854b" },
517
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/da/69/2f47bb6fa1b8d1e3e5d0c4be8ccb4313c63d742476a619418f85740d597b/coverage-7.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be3d4bbad9d4b037791794ddeedd7d64a56f5933a2c1373e18e9e568b9141686" },
518
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/d5/d0/79db81da58965bd29dabc8f4ad2a2af70611a57cba9d1ec006f072f30a54/coverage-7.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4d2afbc5cc54d286bfb54541aa50b64cdb07a718227168c87b9e2fb8f25e1743" },
519
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/e5/32/d0d7cc8168f91ddab44c0ce4806b969df5f5fdfdbb568eaca2dbc2a04936/coverage-7.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3ad050321264c49c2fa67bb599100456fc51d004b82534f379d16445da40fb75" },
520
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/4d/06/a055311d891ddbe231cd69fdd20ea4be6e3603ffebddf8704b8ca8e10a3c/coverage-7.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7300c8a6d13335b29bb76d7651c66af6bd8658517c43499f110ddc6717bfc209" },
521
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/d6/f6/d0fd2d21e29a657b5f77a2fe7082e1568158340dceb941954f776dce1b7b/coverage-7.13.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:eb07647a5738b89baab047f14edd18ded523de60f3b30e75c2acc826f79c839a" },
522
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/4e/ab/0d7fb2efc2e9a5eb7ddcc6e722f834a69b454b7e6e5888c3a8567ecffb31/coverage-7.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9adb6688e3b53adffefd4a52d72cbd8b02602bfb8f74dcd862337182fd4d1a4e" },
523
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/ba/6f/7467b917bbf5408610178f62a49c0ed4377bb16c1657f689cc61470da8ce/coverage-7.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7c8d4bc913dd70b93488d6c496c77f3aff5ea99a07e36a18f865bca55adef8bd" },
524
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/75/2c/1172fb689df92135f5bfbbd69fc83017a76d24ea2e2f3a1154007e2fb9f8/coverage-7.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0e3c426ffc4cd952f54ee9ffbdd10345709ecc78a3ecfd796a57236bfad0b9b8" },
525
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/67/21/9ac389377380a07884e3b48ba7a620fcd9dbfaf1d40565facdc6b36ec9ef/coverage-7.13.5-cp311-cp311-win32.whl", hash = "sha256:259b69bb83ad9894c4b25be2528139eecba9a82646ebdda2d9db1ba28424a6bf" },
526
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/af/7f/4cd8a92531253f9d7c1bbecd9fa1b472907fb54446ca768c59b531248dc5/coverage-7.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:258354455f4e86e3e9d0d17571d522e13b4e1e19bf0f8596bcf9476d61e7d8a9" },
527
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/12/a6/1d3f6155fb0010ca68eba7fe48ca6c9da7385058b77a95848710ecf189b1/coverage-7.13.5-cp311-cp311-win_arm64.whl", hash = "sha256:bff95879c33ec8da99fc9b6fe345ddb5be6414b41d6d1ad1c8f188d26f36e028" },
528
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a0/c3/a396306ba7db865bf96fc1fb3b7fd29bcbf3d829df642e77b13555163cd6/coverage-7.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:460cf0114c5016fa841214ff5564aa4864f11948da9440bc97e21ad1f4ba1e01" },
529
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a6/16/a68a19e5384e93f811dccc51034b1fd0b865841c390e3c931dcc4699e035/coverage-7.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e223ce4b4ed47f065bfb123687686512e37629be25cc63728557ae7db261422" },
530
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/29/72/20b917c6793af3a5ceb7fb9c50033f3ec7865f2911a1416b34a7cfa0813b/coverage-7.13.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6e3370441f4513c6252bf042b9c36d22491142385049243253c7e48398a15a9f" },
531
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/8c/49/cd14b789536ac6a4778c453c6a2338bc0a2fb60c5a5a41b4008328b9acc1/coverage-7.13.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:03ccc709a17a1de074fb1d11f217342fb0d2b1582ed544f554fc9fc3f07e95f5" },
532
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9d/00/7b0edcfe64e2ed4c0340dac14a52ad0f4c9bd0b8b5e531af7d55b703db7c/coverage-7.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f4818d065964db3c1c66dc0fbdac5ac692ecbc875555e13374fdbe7eedb4376" },
533
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/93/89/7ffc4ba0f5d0a55c1e84ea7cee39c9fc06af7b170513d83fbf3bbefce280/coverage-7.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:012d5319e66e9d5a218834642d6c35d265515a62f01157a45bcc036ecf947256" },
534
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/81/bd/73ddf85f93f7e6fa83e77ccecb6162d9415c79007b4bc124008a4995e4a7/coverage-7.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8dd02af98971bdb956363e4827d34425cb3df19ee550ef92855b0acb9c7ce51c" },
535
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a0/81/278aff4e8dec4926a0bcb9486320752811f543a3ce5b602cc7a29978d073/coverage-7.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f08fd75c50a760c7eb068ae823777268daaf16a80b918fa58eea888f8e3919f5" },
536
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/70/ee/fe1621488e2e0a58d7e94c4800f0d96f79671553488d401a612bebae324b/coverage-7.13.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:843ea8643cf967d1ac7e8ecd4bb00c99135adf4816c0c0593fdcc47b597fcf09" },
537
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/37/a6/f79fb37aa104b562207cc23cb5711ab6793608e246cae1e93f26b2236ed9/coverage-7.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9d44d7aa963820b1b971dbecd90bfe5fe8f81cff79787eb6cca15750bd2f79b9" },
538
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/75/f0/ed15262a58ec81ce457ceb717b7f78752a1713556b19081b76e90896e8d4/coverage-7.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:7132bed4bd7b836200c591410ae7d97bf7ae8be6fc87d160b2bd881df929e7bf" },
539
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/0f/e9/9129958f20e7e9d4d56d51d42ccf708d15cac355ff4ac6e736e97a9393d2/coverage-7.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a698e363641b98843c517817db75373c83254781426e94ada3197cabbc2c919c" },
540
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a4/d7/0ad9b15812d81272db94379fe4c6df8fd17781cc7671fdfa30c76ba5ff7b/coverage-7.13.5-cp312-cp312-win32.whl", hash = "sha256:bdba0a6b8812e8c7df002d908a9a2ea3c36e92611b5708633c50869e6d922fdf" },
541
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/29/3d/821a9a5799fac2556bcf0bd37a70d1d11fa9e49784b6d22e92e8b2f85f18/coverage-7.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:d2c87e0c473a10bffe991502eac389220533024c8082ec1ce849f4218dded810" },
542
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/d4/fa/2238c2ad08e35cf4f020ea721f717e09ec3152aea75d191a7faf3ef009a8/coverage-7.13.5-cp312-cp312-win_arm64.whl", hash = "sha256:bf69236a9a81bdca3bff53796237aab096cdbf8d78a66ad61e992d9dac7eb2de" },
543
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/74/8c/74fedc9663dcf168b0a059d4ea756ecae4da77a489048f94b5f512a8d0b3/coverage-7.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ec4af212df513e399cf11610cc27063f1586419e814755ab362e50a85ea69c1" },
544
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/0c/c9/44fb661c55062f0818a6ffd2685c67aa30816200d5f2817543717d4b92eb/coverage-7.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:941617e518602e2d64942c88ec8499f7fbd49d3f6c4327d3a71d43a1973032f3" },
545
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/5f/13/93419671cee82b780bab7ea96b67c8ef448f5f295f36bf5031154ec9a790/coverage-7.13.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:da305e9937617ee95c2e39d8ff9f040e0487cbf1ac174f777ed5eddd7a7c1f26" },
546
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/ac/68/1666e3a4462f8202d836920114fa7a5ee9275d1fa45366d336c551a162dd/coverage-7.13.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:78e696e1cc714e57e8b25760b33a8b1026b7048d270140d25dafe1b0a1ee05a3" },
547
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/4e/5e/3ee3b835647be646dcf3c65a7c6c18f87c27326a858f72ab22c12730773d/coverage-7.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02ca0eed225b2ff301c474aeeeae27d26e2537942aa0f87491d3e147e784a82b" },
548
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/44/b3/cb5bd1a04cfcc49ede6cd8409d80bee17661167686741e041abc7ee1b9a9/coverage-7.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:04690832cbea4e4663d9149e05dba142546ca05cb1848816760e7f58285c970a" },
549
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/1b/66/c1dceb7b9714473800b075f5c8a84f4588f887a90eb8645282031676e242/coverage-7.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0590e44dd2745c696a778f7bab6aa95256de2cbc8b8cff4f7db8ff09813d6969" },
550
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/b7/62/5502b73b97aa2e53ea22a39cf8649ff44827bef76d90bf638777daa27a9d/coverage-7.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d7cfad2d6d81dd298ab6b89fe72c3b7b05ec7544bdda3b707ddaecff8d25c161" },
551
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/7d/37/7792c2d69854397ca77a55c4646e5897c467928b0e27f2d235d83b5d08c6/coverage-7.13.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e092b9499de38ae0fbfbc603a74660eb6ff3e869e507b50d85a13b6db9863e15" },
552
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a3/23/bc866fb6163be52a8a9e5d708ba0d3b1283c12158cefca0a8bbb6e247a43/coverage-7.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:48c39bc4a04d983a54a705a6389512883d4a3b9862991b3617d547940e9f52b1" },
553
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/7d/8b/ef67e1c222ef49860701d346b8bbb70881bef283bd5f6cbba68a39a086c7/coverage-7.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2d3807015f138ffea1ed9afeeb8624fd781703f2858b62a8dd8da5a0994c57b6" },
554
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/46/0d/866d1f74f0acddbb906db212e096dee77a8e2158ca5e6bb44729f9d93298/coverage-7.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee2aa19e03161671ec964004fb74b2257805d9710bf14a5c704558b9d8dbaf17" },
555
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/7a/f5/be742fec31118f02ce42b21c6af187ad6a344fed546b56ca60caacc6a9a0/coverage-7.13.5-cp313-cp313-win32.whl", hash = "sha256:ce1998c0483007608c8382f4ff50164bfc5bd07a2246dd272aa4043b75e61e85" },
556
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/66/40/7732d648ab9d069a46e686043241f01206348e2bbf128daea85be4d6414b/coverage-7.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:631efb83f01569670a5e866ceb80fe483e7c159fac6f167e6571522636104a0b" },
557
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/48/af/fea819c12a095781f6ccd504890aaddaf88b8fab263c4940e82c7b770124/coverage-7.13.5-cp313-cp313-win_arm64.whl", hash = "sha256:f4cd16206ad171cbc2470dbea9103cf9a7607d5fe8c242fdf1edf36174020664" },
558
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/23/d2/17879af479df7fbbd44bd528a31692a48f6b25055d16482fdf5cdb633805/coverage-7.13.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0428cbef5783ad91fe240f673cc1f76b25e74bbfe1a13115e4aa30d3f538162d" },
559
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/5b/4c/d20e554f988c8f91d6a02c5118f9abbbf73a8768a3048cb4962230d5743f/coverage-7.13.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e0b216a19534b2427cc201a26c25da4a48633f29a487c61258643e89d28200c0" },
560
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/29/9c/f9f5277b95184f764b24e7231e166dfdb5780a46d408a2ac665969416d61/coverage-7.13.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:972a9cd27894afe4bc2b1480107054e062df08e671df7c2f18c205e805ccd806" },
561
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/d5/f6/7f1ab39393eeb50cfe4747ae8ef0e4fc564b989225aa1152e13a180d74f8/coverage-7.13.5-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4b59148601efcd2bac8c4dbf1f0ad6391693ccf7a74b8205781751637076aee3" },
562
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a0/d7/62c084fb489ed9c6fbdf57e006752e7c516ea46fd690e5ed8b8617c7d52e/coverage-7.13.5-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:505d7083c8b0c87a8fa8c07370c285847c1f77739b22e299ad75a6af6c32c5c9" },
563
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/a9/f6/df63d8660e1a0bff6125947afda112a0502736f470d62ca68b288ea762d8/coverage-7.13.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:60365289c3741e4db327e7baff2a4aaacf22f788e80fa4683393891b70a89fbd" },
564
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/5b/02/353ca81d36779bd108f6d384425f7139ac3c58c750dcfaafe5d0bee6436b/coverage-7.13.5-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1b88c69c8ef5d4b6fe7dea66d6636056a0f6a7527c440e890cf9259011f5e606" },
565
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/2c/16/2e79106d5749bcaf3aee6d309123548e3276517cd7851faa8da213bc61bf/coverage-7.13.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5b13955d31d1633cf9376908089b7cebe7d15ddad7aeaabcbe969a595a97e95e" },
566
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/29/c7/c29e0c59ffa6942030ae6f50b88ae49988e7e8da06de7ecdbf49c6d4feae/coverage-7.13.5-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f70c9ab2595c56f81a89620e22899eea8b212a4041bd728ac6f4a28bf5d3ddd0" },
567
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/40/48/097cdc3db342f34006a308ab41c3a7c11c3f0d84750d340f45d88a782e00/coverage-7.13.5-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:084b84a8c63e8d6fc7e3931b316a9bcafca1458d753c539db82d31ed20091a87" },
568
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/bb/1f/4994af354689e14fd03a75f8ec85a9a68d94e0188bbdab3fc1516b55e512/coverage-7.13.5-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ad14385487393e386e2ea988b09d62dd42c397662ac2dabc3832d71253eee479" },
569
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/22/c6/9bb9ef55903e628033560885f5c31aa227e46878118b63ab15dc7ba87797/coverage-7.13.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7f2c47b36fe7709a6e83bfadf4eefb90bd25fbe4014d715224c4316f808e59a2" },
570
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/14/4f/f5df9007e50b15e53e01edea486814783a7f019893733d9e4d6caad75557/coverage-7.13.5-cp313-cp313t-win32.whl", hash = "sha256:67e9bc5449801fad0e5dff329499fb090ba4c5800b86805c80617b4e29809b2a" },
571
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/e1/98/aa7fccaa97d0f3192bec013c4e6fd6d294a6ed44b640e6bb61f479e00ed5/coverage-7.13.5-cp313-cp313t-win_amd64.whl", hash = "sha256:da86cdcf10d2519e10cabb8ac2de03da1bcb6e4853790b7fbd48523332e3a819" },
572
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/3d/8b/e5c469f7352651e5f013198e9e21f97510b23de957dd06a84071683b4b60/coverage-7.13.5-cp313-cp313t-win_arm64.whl", hash = "sha256:0ecf12ecb326fe2c339d93fc131816f3a7367d223db37817208905c89bded911" },
573
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/8e/77/39703f0d1d4b478bfd30191d3c14f53caf596fac00efb3f8f6ee23646439/coverage-7.13.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fbabfaceaeb587e16f7008f7795cd80d20ec548dc7f94fbb0d4ec2e038ce563f" },
574
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/e2/3e/51dff36d99ae14639a133d9b164d63e628532e2974d8b1edb99dd1ebc733/coverage-7.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9bb2a28101a443669a423b665939381084412b81c3f8c0fcfbac57f4e30b5b8e" },
575
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/6a/6c/1f1917b01eb647c2f2adc9962bd66c79eb978951cab61bdc1acab3290c07/coverage-7.13.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bd3a2fbc1c6cccb3c5106140d87cc6a8715110373ef42b63cf5aea29df8c217a" },
576
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/22/e5/06b1f88f42a5a99df42ce61208bdec3bddb3d261412874280a19796fc09c/coverage-7.13.5-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6c36ddb64ed9d7e496028d1d00dfec3e428e0aabf4006583bb1839958d280510" },
577
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/80/28/2a148a51e5907e504fa7b85490277734e6771d8844ebcc48764a15e28155/coverage-7.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:380e8e9084d8eb38db3a9176a1a4f3c0082c3806fa0dc882d1d87abc3c789247" },
578
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/61/77/50e8d3d85cc0b7ebe09f30f151d670e302c7ff4a1bf6243f71dd8b0981fa/coverage-7.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e808af52a0513762df4d945ea164a24b37f2f518cbe97e03deaa0ee66139b4d6" },
579
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/3b/c4/b5fd1d4b7bf8d0e75d997afd3925c59ba629fc8616f1b3aae7605132e256/coverage-7.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e301d30dd7e95ae068671d746ba8c34e945a82682e62918e41b2679acd2051a0" },
580
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/f8/66/6ea21f910e92d69ef0b1c3346ea5922a51bad4446c9126db2ae96ee24c4c/coverage-7.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:800bc829053c80d240a687ceeb927a94fd108bbdc68dfbe505d0d75ab578a882" },
581
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9e/ea/879c83cb5d61aa2a35fb80e72715e92672daef8191b84911a643f533840c/coverage-7.13.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:0b67af5492adb31940ee418a5a655c28e48165da5afab8c7fa6fd72a142f8740" },
582
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/8a/fb/616d95d3adb88b9803b275580bdeee8bd1b69a886d057652521f83d7322f/coverage-7.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c9136ff29c3a91e25b1d1552b5308e53a1e0653a23e53b6366d7c2dcbbaf8a16" },
583
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/1c/93/25e6917c90ec1c9a56b0b26f6cad6408e5f13bb6b35d484a0d75c9cf000d/coverage-7.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:cff784eef7f0b8f6cb28804fbddcfa99f89efe4cc35fb5627e3ac58f91ed3ac0" },
584
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/fc/7b/dc1776b0464145a929deed214aef9fb1493f159b59ff3c7eeeedf91eddd0/coverage-7.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:68a4953be99b17ac3c23b6efbc8a38330d99680c9458927491d18700ef23ded0" },
585
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/ea/fb/99cbbc56a26e07762a2740713f3c8f9f3f3106e3a3dd8cc4474954bccd34/coverage-7.13.5-cp314-cp314-win32.whl", hash = "sha256:35a31f2b1578185fbe6aa2e74cea1b1d0bbf4c552774247d9160d29b80ed56cc" },
586
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/8d/b7/4758d4f73fb536347cc5e4ad63662f9d60ba9118cb6785e9616b2ce5d7fa/coverage-7.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:2aa055ae1857258f9e0045be26a6d62bdb47a72448b62d7b55f4820f361a2633" },
587
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/2c/f2/24d84e1dfe70f8ac9fdf30d338239860d0d1d5da0bda528959d0ebc9da28/coverage-7.13.5-cp314-cp314-win_arm64.whl", hash = "sha256:1b11eef33edeae9d142f9b4358edb76273b3bfd30bc3df9a4f95d0e49caf94e8" },
588
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/60/5b/4a168591057b3668c2428bff25dd3ebc21b629d666d90bcdfa0217940e84/coverage-7.13.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:10a0c37f0b646eaff7cce1874c31d1f1ccb297688d4c747291f4f4c70741cc8b" },
589
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/f5/21/1fd5c4dbfe4a58b6b99649125635df46decdfd4a784c3cd6d410d303e370/coverage-7.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b5db73ba3c41c7008037fa731ad5459fc3944cb7452fc0aa9f822ad3533c583c" },
590
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/d6/fe/2a924b3055a5e7e4512655a9d4609781b0d62334fa0140c3e742926834e2/coverage-7.13.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:750db93a81e3e5a9831b534be7b1229df848b2e125a604fe6651e48aa070e5f9" },
591
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/d7/0d/c8928f2bd518c45990fe1a2ab8db42e914ef9b726c975facc4282578c3eb/coverage-7.13.5-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9ddb4f4a5479f2539644be484da179b653273bca1a323947d48ab107b3ed1f29" },
592
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/ef/ae/4ae35bbd9a0af9d820362751f0766582833c211224b38665c0f8de3d487f/coverage-7.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8a7a2049c14f413163e2bdabd37e41179b1d1ccb10ffc6ccc4b7a718429c607" },
593
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9c/20/d326174c55af36f74eac6ae781612d9492f060ce8244b570bb9d50d9d609/coverage-7.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1c85e0b6c05c592ea6d8768a66a254bfb3874b53774b12d4c89c481eb78cb90" },
594
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/7a/5e/31484d62cbd0eabd3412e30d74386ece4a0837d4f6c3040a653878bfc019/coverage-7.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:777c4d1eff1b67876139d24288aaf1817f6c03d6bae9c5cc8d27b83bcfe38fe3" },
595
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/e9/d8/49a72d6de146eebb0b7e48cc0f4bc2c0dd858e3d4790ab2b39a2872b62bd/coverage-7.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6697e29b93707167687543480a40f0db8f356e86d9f67ddf2e37e2dfd91a9dab" },
596
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/06/3b/0351f1bd566e6e4dd39e978efe7958bde1d32f879e85589de147654f57bb/coverage-7.13.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:8fdf453a942c3e4d99bd80088141c4c6960bb232c409d9c3558e2dbaa3998562" },
597
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/5d/ce/796a2a2f4017f554d7810f5c573449b35b1e46788424a548d4d19201b222/coverage-7.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:32ca0c0114c9834a43f045a87dcebd69d108d8ffb666957ea65aa132f50332e2" },
598
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/3d/16/d5ae91455541d1a78bc90abf495be600588aff8f6db5c8b0dae739fa39c9/coverage-7.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:8769751c10f339021e2638cd354e13adeac54004d1941119b2c96fe5276d45ea" },
599
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/48/11/07f413dba62db21fb3fad5d0de013a50e073cc4e2dc4306e770360f6dfc8/coverage-7.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cec2d83125531bd153175354055cdb7a09987af08a9430bd173c937c6d0fba2a" },
600
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/91/15/d792371332eb4663115becf4bad47e047d16234b1aff687b1b18c58d60ae/coverage-7.13.5-cp314-cp314t-win32.whl", hash = "sha256:0cd9ed7a8b181775459296e402ca4fb27db1279740a24e93b3b41942ebe4b215" },
601
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/db/51/37221f59a111dca5e85be7dbf09696323b5b9f13ff65e0641d535ed06ea8/coverage-7.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:301e3b7dfefecaca37c9f1aa6f0049b7d4ab8dd933742b607765d757aca77d43" },
602
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/54/83/6acacc889de8987441aa7d5adfbdbf33d288dad28704a67e574f1df9bcbb/coverage-7.13.5-cp314-cp314t-win_arm64.whl", hash = "sha256:9dacc2ad679b292709e0f5fc1ac74a6d4d5562e424058962c7bb0c658ad25e45" },
603
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9e/ee/a4cf96b8ce1e566ed238f0659ac2d3f007ed1d14b181bcb684e19561a69a/coverage-7.13.5-py3-none-any.whl", hash = "sha256:34b02417cf070e173989b3db962f7ed56d2f644307b2cf9d5a0f258e13084a61" },
604
+ ]
605
+
606
+ [package.optional-dependencies]
607
+ toml = [
608
+ { name = "tomli", marker = "python_full_version <= '3.11'" },
609
+ ]
610
+
484
611
  [[package]]
485
612
  name = "cryptography"
486
613
  version = "46.0.7"
@@ -893,7 +1020,9 @@ dev = [
893
1020
  { name = "commitlint" },
894
1021
  { name = "darker" },
895
1022
  { name = "pre-commit" },
1023
+ { name = "pyinstaller" },
896
1024
  { name = "pytest" },
1025
+ { name = "pytest-cov" },
897
1026
  { name = "ruff" },
898
1027
  { name = "setuptools-scm" },
899
1028
  { name = "twine" },
@@ -936,7 +1065,9 @@ dev = [
936
1065
  { name = "commitlint", specifier = "==1.3.0" },
937
1066
  { name = "darker", specifier = "==2.1.1" },
938
1067
  { name = "pre-commit", specifier = "==3.5.0" },
1068
+ { name = "pyinstaller", specifier = ">=6.18.0" },
939
1069
  { name = "pytest", specifier = "==8.3.5" },
1070
+ { name = "pytest-cov", specifier = ">=7.1.0" },
940
1071
  { name = "ruff", specifier = "==0.13.1" },
941
1072
  { name = "setuptools-scm", specifier = ">=9.2.2" },
942
1073
  { name = "twine", specifier = ">=4.0.2" },
@@ -1141,6 +1272,18 @@ wheels = [
1141
1272
  { url = "https://mirrors.cloud.tencent.com/pypi/packages/0a/dd/8050c947d435c8d4bc94e3252f4d8bb8a76cfb424f043a8680be637a57f1/kiwisolver-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1" },
1142
1273
  ]
1143
1274
 
1275
+ [[package]]
1276
+ name = "macholib"
1277
+ version = "1.16.4"
1278
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
1279
+ dependencies = [
1280
+ { name = "altgraph" },
1281
+ ]
1282
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/10/2f/97589876ea967487978071c9042518d28b958d87b17dceb7cdc1d881f963/macholib-1.16.4.tar.gz", hash = "sha256:f408c93ab2e995cd2c46e34fe328b130404be143469e41bc366c807448979362" }
1283
+ wheels = [
1284
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/c7/d1/a9f36f8ecdf0fb7c9b1e78c8d7af12b8c8754e74851ac7b94a8305540fc7/macholib-1.16.4-py2.py3-none-any.whl", hash = "sha256:da1a3fa8266e30f0ce7e97c6a54eefaae8edd1e5f86f3eb8b95457cae90265ea" },
1285
+ ]
1286
+
1144
1287
  [[package]]
1145
1288
  name = "mako"
1146
1289
  version = "1.3.10"
@@ -1336,11 +1479,11 @@ wheels = [
1336
1479
 
1337
1480
  [[package]]
1338
1481
  name = "more-itertools"
1339
- version = "11.0.1"
1482
+ version = "11.0.2"
1340
1483
  source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
1341
- sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/24/24/e0acc4bf54cba50c1d432c70a72a3df96db4a321b2c4c68432a60759044f/more_itertools-11.0.1.tar.gz", hash = "sha256:fefaf25b7ab08f0b45fa9f1892cae93b9fc0089ef034d39213bce15f1cc9e199" }
1484
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/a2/f7/139d22fef48ac78127d18e01d80cf1be40236ae489769d17f35c3d425293/more_itertools-11.0.2.tar.gz", hash = "sha256:392a9e1e362cbc106a2457d37cabf9b36e5e12efd4ebff1654630e76597df804" }
1342
1485
  wheels = [
1343
- { url = "https://mirrors.cloud.tencent.com/pypi/packages/d8/f4/5e52c7319b8087acef603ed6e50dc325c02eaa999355414830468611f13c/more_itertools-11.0.1-py3-none-any.whl", hash = "sha256:eaf287826069452a8f61026c597eae2428b2d1ba2859083abbf240b46842ce6d" },
1486
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/cb/98/6af411189d9413534c3eb691182bff1f5c6d44ed2f93f2edfe52a1bbceb8/more_itertools-11.0.2-py3-none-any.whl", hash = "sha256:6e35b35f818b01f691643c6c611bc0902f2e92b46c18fffa77ae1e7c46e912e4" },
1344
1487
  ]
1345
1488
 
1346
1489
  [[package]]
@@ -1584,6 +1727,15 @@ wheels = [
1584
1727
  { url = "https://mirrors.cloud.tencent.com/pypi/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723" },
1585
1728
  ]
1586
1729
 
1730
+ [[package]]
1731
+ name = "pefile"
1732
+ version = "2024.8.26"
1733
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
1734
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", hash = "sha256:3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632" }
1735
+ wheels = [
1736
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", hash = "sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f" },
1737
+ ]
1738
+
1587
1739
  [[package]]
1588
1740
  name = "pillow"
1589
1741
  version = "12.2.0"
@@ -1966,6 +2118,47 @@ wheels = [
1966
2118
  { url = "https://mirrors.cloud.tencent.com/pypi/packages/9e/11/a1938340ecb32d71e47ad4914843775011e6e9da59ba1229f181fef3119e/pyhumps-3.8.0-py3-none-any.whl", hash = "sha256:060e1954d9069f428232a1adda165db0b9d8dfdce1d265d36df7fbff540acfd6" },
1967
2119
  ]
1968
2120
 
2121
+ [[package]]
2122
+ name = "pyinstaller"
2123
+ version = "6.19.0"
2124
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
2125
+ dependencies = [
2126
+ { name = "altgraph" },
2127
+ { name = "macholib", marker = "sys_platform == 'darwin'" },
2128
+ { name = "packaging" },
2129
+ { name = "pefile", marker = "sys_platform == 'win32'" },
2130
+ { name = "pyinstaller-hooks-contrib" },
2131
+ { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" },
2132
+ { name = "setuptools" },
2133
+ ]
2134
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/c8/63/fd62472b6371d89dc138d40c36d87a50dc2de18a035803bbdc376b4ffac4/pyinstaller-6.19.0.tar.gz", hash = "sha256:ec73aeb8bd9b7f2f1240d328a4542e90b3c6e6fbc106014778431c616592a865" }
2135
+ wheels = [
2136
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/e3/eb/23374721fecfa72677e79800921cb6aceefa6ba48574dc404f3f6c6c3be7/pyinstaller-6.19.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:4190e76b74f0c4b5c5f11ac360928cd2e36ec8e3194d437bf6b8648c7bc0c134" },
2137
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/cd/7e/dfd724b0b533f5aaec0ee5df406fe2319987ed6964480a706f85478b12ea/pyinstaller-6.19.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8bd68abd812d8a6ba33b9f1810e91fee0f325969733721b78151f0065319ca11" },
2138
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/88/c9/ee3a4101c31f26344e66896c73c1fd6ed8282bf871473365b7f8674af406/pyinstaller-6.19.0-py3-none-manylinux2014_i686.whl", hash = "sha256:1ec54ef967996ca61dacba676227e2b23219878ccce5ee9d6f3aada7b8ed8abf" },
2139
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/da/0a/fc77e9f861be8cf300ac37155f59cc92aff99b29f2ddd78546f563a5b5a6/pyinstaller-6.19.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:4ab2bb52e58448e14ddf9450601bdedd66800465043501c1d8f1cab87b60b122" },
2140
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/6d/e3/6872e020ee758afe0b821663858492c10745608b07150e5e2c824a5b3e1c/pyinstaller-6.19.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:da6d5c6391ccefe73554b9fa29b86001c8e378e0f20c2a4004f836ba537eff63" },
2141
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/53/60/b8db5f1a4b0fb228175f2ea0aa33f949adcc097fbe981cc524f9faf85777/pyinstaller-6.19.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a0fc5f6b3c55aa54353f0c74ffa59b1115433c1850c6f655d62b461a2ed6cbbe" },
2142
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/6f/4d/63b0600f2694e9141b83129fbc1c488ec84d5a0770b1448ec154dcd0fee9/pyinstaller-6.19.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:e649ba6bd1b0b89b210ad92adb5fbdc8a42dd2c5ca4f72ef3a0bfec83a424b83" },
2143
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/01/d4/e812ad36178093a0e9fd4b8127577748dd85b0cb71de912229dca21fd741/pyinstaller-6.19.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:481a909c8e60c8692fc60fcb1344d984b44b943f8bc9682f2fcdae305ad297e6" },
2144
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/52/03/b2c2ee41fb8e10fd2a45d21f5ec2ef25852cfb978dbf762972eed59e3d63/pyinstaller-6.19.0-py3-none-win32.whl", hash = "sha256:3c5c251054fe4cfaa04c34a363dcfbf811545438cb7198304cd444756bc2edd2" },
2145
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9c/d3/6d5e62b8270e2b53a6065e281b3a7785079b00e9019c8019952828dd1669/pyinstaller-6.19.0-py3-none-win_amd64.whl", hash = "sha256:b5bb6536c6560330d364d91522250f254b107cf69129d9cbcd0e6727c570be33" },
2146
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/81/65/458cd523308a101a22fd2742893405030cc24994cc74b1b767cecf137160/pyinstaller-6.19.0-py3-none-win_arm64.whl", hash = "sha256:c2d5a539b0bfe6159d5522c8c70e1c0e487f22c2badae0f97d45246223b798ea" },
2147
+ ]
2148
+
2149
+ [[package]]
2150
+ name = "pyinstaller-hooks-contrib"
2151
+ version = "2026.4"
2152
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
2153
+ dependencies = [
2154
+ { name = "packaging" },
2155
+ { name = "setuptools" },
2156
+ ]
2157
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/c7/fe/9278c29394bf69169febc21f96b4252c3ee7c8ec22c2fc545004bed47e71/pyinstaller_hooks_contrib-2026.4.tar.gz", hash = "sha256:766c281acb1ecc32e21c8c667056d7ebf5da0aabd5e30c219f9c2a283620eeaa" }
2158
+ wheels = [
2159
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/88/f4/035fb8c06deff827f540a9a4ed9122c54e5376fca3e42eddf0c263730775/pyinstaller_hooks_contrib-2026.4-py3-none-any.whl", hash = "sha256:1de1a5e49a878122010b88c7e295502bc69776c157c4a4dc78741a4e6178b00f" },
2160
+ ]
2161
+
1969
2162
  [[package]]
1970
2163
  name = "pyparsing"
1971
2164
  version = "3.3.2"
@@ -2001,6 +2194,20 @@ wheels = [
2001
2194
  { url = "https://mirrors.cloud.tencent.com/pypi/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820" },
2002
2195
  ]
2003
2196
 
2197
+ [[package]]
2198
+ name = "pytest-cov"
2199
+ version = "7.1.0"
2200
+ source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
2201
+ dependencies = [
2202
+ { name = "coverage", extra = ["toml"] },
2203
+ { name = "pluggy" },
2204
+ { name = "pytest" },
2205
+ ]
2206
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", hash = "sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2" }
2207
+ wheels = [
2208
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678" },
2209
+ ]
2210
+
2004
2211
  [[package]]
2005
2212
  name = "python-dateutil"
2006
2213
  version = "2.9.0.post0"
@@ -2553,7 +2760,7 @@ wheels = [
2553
2760
 
2554
2761
  [[package]]
2555
2762
  name = "virtualenv"
2556
- version = "21.2.0"
2763
+ version = "21.2.1"
2557
2764
  source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" }
2558
2765
  dependencies = [
2559
2766
  { name = "distlib" },
@@ -2562,9 +2769,9 @@ dependencies = [
2562
2769
  { name = "python-discovery" },
2563
2770
  { name = "typing-extensions", marker = "python_full_version < '3.11'" },
2564
2771
  ]
2565
- sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/aa/92/58199fe10049f9703c2666e809c4f686c54ef0a68b0f6afccf518c0b1eb9/virtualenv-21.2.0.tar.gz", hash = "sha256:1720dc3a62ef5b443092e3f499228599045d7fea4c79199770499df8becf9098" }
2772
+ sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/97/c5/aff062c66b42e2183201a7ace10c6b2e959a9a16525c8e8ca8e59410d27a/virtualenv-21.2.1.tar.gz", hash = "sha256:b66ffe81301766c0d5e2208fc3576652c59d44e7b731fc5f5ed701c9b537fa78" }
2566
2773
  wheels = [
2567
- { url = "https://mirrors.cloud.tencent.com/pypi/packages/c6/59/7d02447a55b2e55755011a647479041bc92a82e143f96a8195cb33bd0a1c/virtualenv-21.2.0-py3-none-any.whl", hash = "sha256:1bd755b504931164a5a496d217c014d098426cddc79363ad66ac78125f9d908f" },
2774
+ { url = "https://mirrors.cloud.tencent.com/pypi/packages/20/0e/f083a76cb590e60dff3868779558eefefb8dfb7c9ed020babc7aa014ccbf/virtualenv-21.2.1-py3-none-any.whl", hash = "sha256:bd16b49c53562b28cf1a3ad2f36edb805ad71301dee70ddc449e5c88a9f919a2" },
2568
2775
  ]
2569
2776
 
2570
2777
  [[package]]
@@ -1,6 +0,0 @@
1
- [pytest]
2
- # 核心:将 src 加入 pytest 的模块搜索路径
3
- pythonpath = src
4
-
5
- # 可选:指定测试目录,提升测试发现效率
6
- testpaths = tests
@@ -1 +0,0 @@
1
- from .core import *
File without changes
File without changes
File without changes
File without changes