throttle-controller 0.2.0__tar.gz → 0.3.1__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 (36) hide show
  1. throttle_controller-0.3.1/.github/workflows/gitignore-in.yml +16 -0
  2. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.github/workflows/happy.yml +1 -1
  3. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.github/workflows/pypi-publish.yml +9 -17
  4. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.github/workflows/python-test.yml +20 -23
  5. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.gitignore +17 -12
  6. throttle_controller-0.3.1/.gitignore.in +5 -0
  7. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/LICENSE +1 -1
  8. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/PKG-INFO +19 -14
  9. throttle_controller-0.3.1/pyproject.toml +67 -0
  10. throttle_controller-0.3.1/setup.cfg +4 -0
  11. throttle_controller-0.3.1/throttle_controller/__init__.py +7 -0
  12. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller/_version.py +2 -2
  13. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller/protocol.py +8 -12
  14. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller.egg-info/PKG-INFO +19 -14
  15. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller.egg-info/SOURCES.txt +2 -2
  16. throttle_controller-0.3.1/throttle_controller.egg-info/requires.txt +1 -0
  17. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller.egg-info/top_level.txt +0 -1
  18. throttle_controller-0.3.1/uv.lock +407 -0
  19. throttle-controller-0.2.0/.gitignore.in +0 -10
  20. throttle-controller-0.2.0/poetry.lock +0 -570
  21. throttle-controller-0.2.0/pyproject.toml +0 -68
  22. throttle-controller-0.2.0/setup.cfg +0 -46
  23. throttle-controller-0.2.0/throttle_controller/__init__.py +0 -2
  24. throttle-controller-0.2.0/throttle_controller.egg-info/requires.txt +0 -7
  25. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.coveragerc +0 -0
  26. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.github/renovate.json5 +0 -0
  27. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/.github/workflows/spellcheck.yml +0 -0
  28. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/README.md +0 -0
  29. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/tests/__init__.py +0 -0
  30. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/tests/test_simple.py +0 -0
  31. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/tests/test_utils_interval.py +0 -0
  32. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller/py.typed +0 -0
  33. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller/simple.py +0 -0
  34. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller/utils/__init__.py +0 -0
  35. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller/utils/interval.py +0 -0
  36. {throttle-controller-0.2.0 → throttle_controller-0.3.1}/throttle_controller.egg-info/dependency_links.txt +0 -0
@@ -0,0 +1,16 @@
1
+ name: Update gitignore file
2
+
3
+ on:
4
+ schedule:
5
+ # daily at 00:00
6
+ - cron: '0 0 * * *'
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ update-gitignore:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: gitignore-in/gh-action@v0.2.2
@@ -13,6 +13,6 @@ jobs:
13
13
  name: happy
14
14
  continue-on-error: true
15
15
  steps:
16
- - uses: kitsuyui/happy-commit@v0.8
16
+ - uses: kitsuyui/happy-commit@v0.9
17
17
  with:
18
18
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -8,7 +8,7 @@ on:
8
8
  types: [prereleased, released]
9
9
 
10
10
  env:
11
- python_version: 3.12
11
+ python_version: 3.13
12
12
 
13
13
  jobs:
14
14
  deploy:
@@ -18,28 +18,20 @@ jobs:
18
18
 
19
19
  - name: Set up Python
20
20
  id: setup-python
21
- uses: actions/setup-python@v4
21
+ uses: actions/setup-python@v5
22
22
  with:
23
23
  python-version: ${{ env.python_version }}
24
24
 
25
- - name: Set up poetry
26
- uses: abatilo/actions-poetry@v2
25
+ - name: Set up uv
26
+ uses: astral-sh/setup-uv@v5
27
27
 
28
- - name: Cache
29
- uses: actions/cache@v3
30
- with:
31
- path: ~/.cache/pypoetry/virtualenvs
32
- key: ${{ runner.os }}-build-${{ env.python_version }}-${{ hashFiles('**/poetry.lock') }}
33
- restore-keys: |
34
- ${{ runner.os }}-build-${{ env.python_version }}-${{ hashFiles('**/poetry.lock') }}
35
- ${{ runner.os }}-build-${{ env.python_version }}-
36
- ${{ runner.os }}-
37
-
38
- - run: poetry install
28
+ - name: Install dependencies
29
+ run: |
30
+ uv python pin ${{ env.python_version }}
31
+ uv sync
39
32
 
40
33
  - name: Build
41
- # I use poetry just as a package manager, so this is not `poetry build`
42
- run: poetry run poe build
34
+ run: uv build
43
35
 
44
36
  - name: Publish distribution to Test PyPI
45
37
  uses: pypa/gh-action-pypi-publish@release/v1
@@ -1,14 +1,19 @@
1
1
  name: Test
2
2
  on:
3
- - pull_request
4
-
3
+ # pull-request events are not triggered when a PR is merged
4
+ # push events are not triggered when a PR created from a fork repository
5
+ # So we need both to run tests on every PR and after merging
6
+ pull_request:
7
+ push:
8
+ branches:
9
+ - main
5
10
  jobs:
6
11
  test:
7
12
  runs-on: ubuntu-latest
8
13
  strategy:
9
14
  fail-fast: false
10
15
  matrix:
11
- python: ["3.8", "3.9", "3.10", "3.11", "3.12"]
16
+ python: ["3.9", "3.10", "3.11", "3.12", "3.13"]
12
17
 
13
18
  steps:
14
19
  - name: Checkout
@@ -16,32 +21,24 @@ jobs:
16
21
 
17
22
  - name: Set up Python
18
23
  id: setup-python
19
- uses: actions/setup-python@v4
24
+ uses: actions/setup-python@v5
20
25
  with:
21
26
  python-version: "${{ matrix.python }}"
22
27
 
23
- - name: Set up poetry
24
- uses: abatilo/actions-poetry@v2
25
-
26
- - name: Cache
27
- uses: actions/cache@v3
28
- with:
29
- path: ~/.cache/pypoetry/virtualenvs
30
- key: ${{ runner.os }}-build-${{ matrix.python }}-${{ hashFiles('**/poetry.lock') }}
31
- restore-keys: |
32
- ${{ runner.os }}-build-${{ matrix.python }}-${{ hashFiles('**/poetry.lock') }}
33
- ${{ runner.os }}-build-${{ matrix.python }}-
34
- ${{ runner.os }}-
28
+ - name: Set up uv
29
+ uses: astral-sh/setup-uv@v5
35
30
 
36
31
  - name: Install dependencies
37
- run: poetry install
32
+ run: |
33
+ uv python pin ${{ matrix.python }}
34
+ uv sync
38
35
 
39
36
  - name: Lint
40
- run: poetry run poe check
37
+ run: uv run poe check
41
38
 
42
39
  - name: Check Python version
43
40
  run: |
44
- actual_version=$(poetry run python --version)
41
+ actual_version=$(uv run python --version)
45
42
  expected_version="Python ${{ matrix.python }}"
46
43
  if [ "$actual_version" == *"$expected_version"* ]; then
47
44
  echo "Expected $expected_version, but got $actual_version"
@@ -49,14 +46,14 @@ jobs:
49
46
  fi
50
47
 
51
48
  - name: Test
52
- run: poetry run poe test
49
+ run: uv run poe test
53
50
 
54
51
  - name: Coverage
55
- run: poetry run poe coverage-xml
52
+ run: uv run poe coverage-xml
56
53
 
57
54
  - name: Upload coverage report to Codecov
58
- if: matrix.python == '3.12'
59
- uses: codecov/codecov-action@v3
55
+ if: matrix.python == '3.13'
56
+ uses: codecov/codecov-action@v5
60
57
  with:
61
58
  token: ${{ secrets.CODECOV_TOKEN }}
62
59
  files: ./coverage.xml
@@ -1,5 +1,11 @@
1
+ # DO NOT EDIT THIS FILE
2
+ # Generated by gitignore.in
3
+ # Edit .gitignore.in instead of this file
4
+ # Run `gitignore.in` to build .gitignore
5
+ # -----------------------------------------------------------------------------
6
+ # gibo dump Linux
1
7
  ### Generated by gibo (https://github.com/simonwhitaker/gibo)
2
- ### https://raw.github.com/github/gitignore/e5323759e387ba347a9d50f8b0ddd16502eb71d4/Global/Linux.gitignore
8
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Linux.gitignore
3
9
 
4
10
  *~
5
11
 
@@ -14,10 +20,10 @@
14
20
 
15
21
  # .nfs files are created when an open file is removed but is still being accessed
16
22
  .nfs*
17
-
18
-
23
+ # -----------------------------------------------------------------------------
24
+ # gibo dump Windows
19
25
  ### Generated by gibo (https://github.com/simonwhitaker/gibo)
20
- ### https://raw.github.com/github/gitignore/e5323759e387ba347a9d50f8b0ddd16502eb71d4/Global/Windows.gitignore
26
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Windows.gitignore
21
27
 
22
28
  # Windows thumbnail cache files
23
29
  Thumbs.db
@@ -43,10 +49,10 @@ $RECYCLE.BIN/
43
49
 
44
50
  # Windows shortcuts
45
51
  *.lnk
46
-
47
-
52
+ # -----------------------------------------------------------------------------
53
+ # gibo dump macOS
48
54
  ### Generated by gibo (https://github.com/simonwhitaker/gibo)
49
- ### https://raw.github.com/github/gitignore/e5323759e387ba347a9d50f8b0ddd16502eb71d4/Global/macOS.gitignore
55
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/macOS.gitignore
50
56
 
51
57
  # General
52
58
  .DS_Store
@@ -74,10 +80,10 @@ Icon
74
80
  Network Trash Folder
75
81
  Temporary Items
76
82
  .apdisk
77
-
78
-
83
+ # -----------------------------------------------------------------------------
84
+ # gibo dump Python
79
85
  ### Generated by gibo (https://github.com/simonwhitaker/gibo)
80
- ### https://raw.github.com/github/gitignore/e5323759e387ba347a9d50f8b0ddd16502eb71d4/Python.gitignore
86
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Python.gitignore
81
87
 
82
88
  # Byte-compiled / optimized / DLL files
83
89
  __pycache__/
@@ -239,6 +245,5 @@ cython_debug/
239
245
  # and can be added to the global gitignore or merged into this file. For a more nuclear
240
246
  # option (not recommended) you can uncomment the following to ignore the entire idea folder.
241
247
  #.idea/
242
-
243
-
248
+ # -----------------------------------------------------------------------------
244
249
  _version.py
@@ -0,0 +1,5 @@
1
+ gibo dump Linux
2
+ gibo dump Windows
3
+ gibo dump macOS
4
+ gibo dump Python
5
+ echo _version.py
@@ -1,4 +1,4 @@
1
- Copyright 2022 Kitsu Yui
1
+ Copyright 2022-2025 Kitsu Yui
2
2
 
3
3
  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
4
 
@@ -1,28 +1,33 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: throttle-controller
3
- Version: 0.2.0
3
+ Version: 0.3.1
4
4
  Summary: A simple throttling controller
5
- Home-page: https://github.com/kitsuyui/python-throttle-controller
6
- Author: Yui Kitsu
7
- Author-email: kitsuyui+github@kitsuyui.com
8
- License: BSD-3-Clause
5
+ Author-email: Yui KITSU <kitsuyui+github@kitsuyui.com>
6
+ License: Copyright 2022-2025 Kitsu Yui
7
+
8
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
9
+
10
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
13
+
14
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17
+
18
+ Project-URL: Homepage, https://github.com/kitsuyui/python-throttle-controller
9
19
  Classifier: Development Status :: 3 - Alpha
10
20
  Classifier: License :: OSI Approved :: BSD License
11
- Classifier: Programming Language :: Python :: 3.8
12
21
  Classifier: Programming Language :: Python :: 3.9
13
22
  Classifier: Programming Language :: Python :: 3.10
14
23
  Classifier: Programming Language :: Python :: 3.11
15
24
  Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
16
26
  Classifier: Intended Audience :: Developers
17
- Requires-Python: >=3.8
27
+ Requires-Python: >=3.9
18
28
  Description-Content-Type: text/markdown
19
29
  License-File: LICENSE
20
- Provides-Extra: dev
21
- Requires-Dist: pytest; extra == "dev"
22
- Requires-Dist: black; extra == "dev"
23
- Requires-Dist: isort; extra == "dev"
24
- Requires-Dist: flake8; extra == "dev"
25
- Requires-Dist: mypy; extra == "dev"
30
+ Requires-Dist: typing-extensions
26
31
 
27
32
  # throttle-controller
28
33
 
@@ -0,0 +1,67 @@
1
+ [project]
2
+ name = "throttle-controller"
3
+ dynamic = ["version"]
4
+ requires-python = ">=3.9"
5
+ dependencies = ["typing-extensions"]
6
+ description = "A simple throttling controller"
7
+ readme = {file = "README.md", content-type = "text/markdown"}
8
+ license = { file = "LICENSE" }
9
+ authors = [
10
+ {name = "Yui KITSU", email = "kitsuyui+github@kitsuyui.com"}
11
+ ]
12
+ classifiers = [
13
+ "Development Status :: 3 - Alpha",
14
+ "License :: OSI Approved :: BSD License",
15
+ "Programming Language :: Python :: 3.9",
16
+ "Programming Language :: Python :: 3.10",
17
+ "Programming Language :: Python :: 3.11",
18
+ "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
20
+ "Intended Audience :: Developers",
21
+ ]
22
+
23
+ [project.urls]
24
+ Homepage = "https://github.com/kitsuyui/python-throttle-controller"
25
+
26
+ [tool.setuptools]
27
+ package-data = { "throttle_controller" = ["py.typed"], "*" = ["README.md, LICENSE"] }
28
+ package-dir = { "throttle_controller" = "throttle_controller" }
29
+
30
+ [tool.uv]
31
+ dev-dependencies = [
32
+ "pytest",
33
+ "pytest-cov",
34
+ "poethepoet",
35
+ "setuptools-scm",
36
+ "ruff",
37
+ "mypy",
38
+ ]
39
+
40
+ [build-system]
41
+ requires = [
42
+ "setuptools", "setuptools_scm"
43
+ ]
44
+ build-backend = "setuptools.build_meta"
45
+
46
+ [tool.setuptools_scm]
47
+ write_to = "throttle_controller/_version.py"
48
+ version_scheme = "only-version"
49
+ local_scheme = "no-local-version"
50
+
51
+ [tool.poe.tasks]
52
+ test = "pytest"
53
+ coverage-xml = "pytest --cov=throttle_controller --doctest-modules --cov-report=xml"
54
+ format = "ruff format throttle_controller"
55
+ check = [
56
+ { cmd = "ruff check throttle_controller" },
57
+ { cmd = "mypy throttle_controller tests" },
58
+ ]
59
+ build = [
60
+ { cmd = "python -m build"}
61
+ ]
62
+ [tool.mypy]
63
+ strict = true
64
+ ignore_missing_imports = false
65
+
66
+ [tool.ruff]
67
+ line-length = 79
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,7 @@
1
+ from .protocol import ThrottleController
2
+ from .simple import SimpleThrottleController
3
+
4
+ # https://packaging-guide.openastronomy.org/en/latest/advanced/versioning.html
5
+ from ._version import __version__
6
+
7
+ __all__ = ["ThrottleController", "SimpleThrottleController", "__version__"]
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.2.0'
16
- __version_tuple__ = version_tuple = (0, 2, 0)
15
+ __version__ = version = '0.3.1'
16
+ __version_tuple__ = version_tuple = (0, 3, 1)
@@ -13,23 +13,19 @@ Key = Hashable
13
13
 
14
14
 
15
15
  class ThrottleController(Protocol): # pragma: no cover
16
- def cooldown_time_for(self, key: Key) -> datetime.timedelta:
17
- ...
16
+ def cooldown_time_for(self, key: Key) -> datetime.timedelta: ...
18
17
 
19
- def record_use_time(self, key: Key, use_time: datetime.datetime) -> None:
20
- ...
18
+ def record_use_time(
19
+ self, key: Key, use_time: datetime.datetime
20
+ ) -> None: ...
21
21
 
22
- def record_use_time_as_now(self, key: Key) -> None:
23
- ...
22
+ def record_use_time_as_now(self, key: Key) -> None: ...
24
23
 
25
- def wait_if_needed(self, key: Key) -> None:
26
- ...
24
+ def wait_if_needed(self, key: Key) -> None: ...
27
25
 
28
- def wait_time_for(self, key: Key) -> datetime.timedelta:
29
- ...
26
+ def wait_time_for(self, key: Key) -> datetime.timedelta: ...
30
27
 
31
- def next_available_time(self, key: Key) -> datetime.datetime:
32
- ...
28
+ def next_available_time(self, key: Key) -> datetime.datetime: ...
33
29
 
34
30
  @contextlib.contextmanager
35
31
  def use(self, key: Key) -> Generator[None, None, None]:
@@ -1,28 +1,33 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: throttle-controller
3
- Version: 0.2.0
3
+ Version: 0.3.1
4
4
  Summary: A simple throttling controller
5
- Home-page: https://github.com/kitsuyui/python-throttle-controller
6
- Author: Yui Kitsu
7
- Author-email: kitsuyui+github@kitsuyui.com
8
- License: BSD-3-Clause
5
+ Author-email: Yui KITSU <kitsuyui+github@kitsuyui.com>
6
+ License: Copyright 2022-2025 Kitsu Yui
7
+
8
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
9
+
10
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
13
+
14
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17
+
18
+ Project-URL: Homepage, https://github.com/kitsuyui/python-throttle-controller
9
19
  Classifier: Development Status :: 3 - Alpha
10
20
  Classifier: License :: OSI Approved :: BSD License
11
- Classifier: Programming Language :: Python :: 3.8
12
21
  Classifier: Programming Language :: Python :: 3.9
13
22
  Classifier: Programming Language :: Python :: 3.10
14
23
  Classifier: Programming Language :: Python :: 3.11
15
24
  Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
16
26
  Classifier: Intended Audience :: Developers
17
- Requires-Python: >=3.8
27
+ Requires-Python: >=3.9
18
28
  Description-Content-Type: text/markdown
19
29
  License-File: LICENSE
20
- Provides-Extra: dev
21
- Requires-Dist: pytest; extra == "dev"
22
- Requires-Dist: black; extra == "dev"
23
- Requires-Dist: isort; extra == "dev"
24
- Requires-Dist: flake8; extra == "dev"
25
- Requires-Dist: mypy; extra == "dev"
30
+ Requires-Dist: typing-extensions
26
31
 
27
32
  # throttle-controller
28
33
 
@@ -3,10 +3,10 @@
3
3
  .gitignore.in
4
4
  LICENSE
5
5
  README.md
6
- poetry.lock
7
6
  pyproject.toml
8
- setup.cfg
7
+ uv.lock
9
8
  .github/renovate.json5
9
+ .github/workflows/gitignore-in.yml
10
10
  .github/workflows/happy.yml
11
11
  .github/workflows/pypi-publish.yml
12
12
  .github/workflows/python-test.yml
@@ -0,0 +1 @@
1
+ typing-extensions