Skip to content

Commit

Permalink
Add __slots__ to timer helpers (#9406)
Browse files Browse the repository at this point in the history
Co-authored-by: Sam Bull <git@sambull.org>
(cherry picked from commit 24b0e6f)
  • Loading branch information
bdraco committed Oct 3, 2024
1 parent 4c67472 commit a713f6d
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGES/9406.misc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Reduced memory required for timer objects created during the client request lifecycle -- by :user:`bdraco`.
10 changes: 10 additions & 0 deletions aiohttp/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,8 @@ def calculate_timeout_when(
class TimeoutHandle:
"""Timeout handle"""

__slots__ = ("_timeout", "_loop", "_ceil_threshold", "_callbacks")

def __init__(
self,
loop: asyncio.AbstractEventLoop,
Expand Down Expand Up @@ -629,11 +631,17 @@ def __call__(self) -> None:


class BaseTimerContext(ContextManager["BaseTimerContext"]):

__slots__ = ()

def assert_timeout(self) -> None:
"""Raise TimeoutError if timeout has been exceeded."""


class TimerNoop(BaseTimerContext):

__slots__ = ()

def __enter__(self) -> BaseTimerContext:
return self

Expand All @@ -649,6 +657,8 @@ def __exit__(
class TimerContext(BaseTimerContext):
"""Low resolution timeout context manager"""

__slots__ = ("_loop", "_tasks", "_cancelled", "_cancelling")

def __init__(self, loop: asyncio.AbstractEventLoop) -> None:
self._loop = loop
self._tasks: List[asyncio.Task[Any]] = []
Expand Down
5 changes: 5 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,8 @@ skip = "pp*"
[tool.codespell]
skip = '.git,*.pdf,*.svg,Makefile,CONTRIBUTORS.txt,venvs,_build'
ignore-words-list = 'te'

[tool.slotscheck]
# TODO(3.13): Remove aiohttp.helpers once https://github.com/python/cpython/pull/106771
# is available in all supported cpython versions
exclude-modules = "(^aiohttp\\.helpers)"

0 comments on commit a713f6d

Please sign in to comment.