From 98989b482739cc5eced4c0fd743bffa75eb5726d Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Fri, 11 Oct 2024 15:37:27 +0200 Subject: [PATCH] drop support for Python 3.8 (#747) --- .github/workflows/main.yml | 2 - CHANGELOG.md | 2 + README.md | 2 +- pdoc/extract.py | 12 +- pyproject.toml | 4 +- test/test_snapshot.py | 1 - test/testdata/misc.html | 1508 +++++++++++++++++++--------------- test/testdata/misc.py | 41 + test/testdata/misc.txt | 8 + test/testdata/misc_py39.html | 253 ------ test/testdata/misc_py39.py | 41 - test/testdata/misc_py39.txt | 10 - uv.lock | 326 +++----- 13 files changed, 1046 insertions(+), 1164 deletions(-) delete mode 100644 test/testdata/misc_py39.html delete mode 100644 test/testdata/misc_py39.py delete mode 100644 test/testdata/misc_py39.txt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 36bf1063..b5bf8acb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -53,8 +53,6 @@ jobs: py: 3.10.13 - os: ubuntu-latest py: 3.9.18 - - os: ubuntu-latest - py: 3.8.18 runs-on: ${{ matrix.os }} steps: - uses: mhils/workflows/checkout@v11 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c2d0dda..408abbde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ## Unreleased: pdoc next +- Remove support for Python 3.8, which has reached end-of-life on 2024-10-07 . + ([#747](https://github.com/mitmproxy/pdoc/pull/747), @mhils) ## 2024-09-11: pdoc 14.7.0 diff --git a/README.md b/README.md index a38f4c6a..32e50267 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ API Documentation for Python Projects. pip install pdoc ``` -pdoc is compatible with Python 3.8 and newer. +pdoc is compatible with Python 3.9 and newer. # Usage diff --git a/pdoc/extract.py b/pdoc/extract.py index 711cf682..d01a8a28 100644 --- a/pdoc/extract.py +++ b/pdoc/extract.py @@ -201,11 +201,13 @@ def mock_some_common_side_effects(): Note that this function must not be used for security purposes, it's easily bypassable. """ - with patch("subprocess.Popen", new=_PdocDefusedPopen), patch( - "os.startfile", new=_noop, create=True - ), patch("sys.stdout", new=io.StringIO()), patch( - "sys.stderr", new=io.StringIO() - ), patch("sys.stdin", new=io.StringIO()): + with ( + patch("subprocess.Popen", new=_PdocDefusedPopen), + patch("os.startfile", new=_noop, create=True), + patch("sys.stdout", new=io.StringIO()), + patch("sys.stderr", new=io.StringIO()), + patch("sys.stdin", new=io.StringIO()), + ): yield diff --git a/pyproject.toml b/pyproject.toml index 6a080daf..f7a2552c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ name = "pdoc" description = "API Documentation for Python Projects" readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" license = { text="MIT-0" } authors = [{name = "Maximilian Hils", email = "pdoc@maximilianhils.com"}] dynamic = ["version"] @@ -11,7 +11,6 @@ dependencies = [ "Jinja2 >= 2.11.0", "pygments >= 2.12.0", "MarkupSafe >= 1.1.1", - "astunparse; python_version<'3.9'", ] classifiers = [ @@ -23,7 +22,6 @@ classifiers = [ "Environment :: Console", "Intended Audience :: Developers", "Operating System :: OS Independent", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/test/test_snapshot.py b/test/test_snapshot.py index 23b79ea1..ed4cadd5 100755 --- a/test/test_snapshot.py +++ b/test/test_snapshot.py @@ -136,7 +136,6 @@ def outfile(self, format: str) -> Path: with_output_directory=True, ), Snapshot("misc"), - Snapshot("misc_py39", min_version=(3, 9)), Snapshot("misc_py310", min_version=(3, 10)), Snapshot("misc_py312", min_version=(3, 12)), Snapshot("misc_py313", min_version=(3, 13)), diff --git a/test/testdata/misc.html b/test/testdata/misc.html index 169fffc4..ded086aa 100644 --- a/test/testdata/misc.html +++ b/test/testdata/misc.html @@ -287,6 +287,24 @@

API Documentation

+
  • + SingleDispatchMethodExample + + +
  • +
  • + DataclassStructure + + +
  • @@ -309,480 +327,521 @@

      1import abc
    -  2from functools import cached_property
    -  3from functools import lru_cache
    -  4import sched
    -  5from typing import Generic
    -  6from typing import TypeVar
    -  7
    -  8# https://github.com/mitmproxy/pdoc/issues/226
    -  9
    - 10
    - 11class Descriptor:
    - 12    def __init__(self, func):
    - 13        self.__doc__ = func.__doc__
    +  2from ctypes import Structure
    +  3from dataclasses import dataclass
    +  4import functools
    +  5from functools import cached_property
    +  6from functools import lru_cache
    +  7import sched
    +  8from typing import Generic
    +  9from typing import TypeVar
    + 10from typing import Union
    + 11
    + 12# https://github.com/mitmproxy/pdoc/issues/226
    + 13
      14
    - 15    def __get__(self, instance, owner):
    - 16        return self if instance is None else getattr(instance, "_x", 0)
    - 17
    - 18    def __set__(self, instance, value):
    - 19        instance._x = value
    - 20
    + 15class Descriptor:
    + 16    def __init__(self, func):
    + 17        self.__doc__ = func.__doc__
    + 18
    + 19    def __get__(self, instance, owner):
    + 20        return self if instance is None else getattr(instance, "_x", 0)
      21
    - 22class Issue226:
    - 23    @Descriptor
    - 24    def size(self):
    - 25        """This is the size"""
    - 26
    - 27
    - 28# Testing function and object default values
    - 29
    + 22    def __set__(self, instance, value):
    + 23        instance._x = value
    + 24
    + 25
    + 26class Issue226:
    + 27    @Descriptor
    + 28    def size(self):
    + 29        """This is the size"""
      30
    - 31def default_func():
    - 32    pass
    + 31
    + 32# Testing function and object default values
      33
      34
    - 35default_obj = object()
    - 36
    - 37var_with_default_obj = default_obj
    - 38"""this shouldn't render the object address"""
    - 39var_with_default_func = default_func
    - 40"""this just renders like a normal function"""
    - 41
    - 42
    - 43def func_with_defaults(a=default_obj, b=default_func):
    - 44    """this shouldn't render object or function addresses"""
    - 45    pass
    + 35def default_func():
    + 36    pass
    + 37
    + 38
    + 39default_obj = object()
    + 40
    + 41var_with_default_obj = default_obj
    + 42"""this shouldn't render the object address"""
    + 43var_with_default_func = default_func
    + 44"""this just renders like a normal function"""
    + 45
      46
    - 47
    - 48# Testing classmethod links in code
    - 49class ClassmethodLink:
    - 50    """
    - 51    You can either do
    - 52
    - 53    >>> ClassmethodLink.bar()
    - 54    42
    - 55
    - 56    or
    - 57
    - 58    ```python
    - 59    ClassmethodLink.bar()
    - 60    ```
    + 47def func_with_defaults(a=default_obj, b=default_func):
    + 48    """this shouldn't render object or function addresses"""
    + 49    pass
    + 50
    + 51
    + 52# Testing classmethod links in code
    + 53class ClassmethodLink:
    + 54    """
    + 55    You can either do
    + 56
    + 57    >>> ClassmethodLink.bar()
    + 58    42
    + 59
    + 60    or
      61
    - 62    neither will be linked.
    - 63    """
    - 64
    - 65    @classmethod
    - 66    def bar(cls):
    - 67        return 42
    + 62    ```python
    + 63    ClassmethodLink.bar()
    + 64    ```
    + 65
    + 66    neither will be linked.
    + 67    """
      68
    - 69
    - 70# Testing generic bases
    - 71
    - 72T = TypeVar("T")
    + 69    @classmethod
    + 70    def bar(cls):
    + 71        return 42
    + 72
      73
    - 74
    - 75class GenericParent(Generic[T]):
    - 76    """GenericParent"""
    + 74# Testing generic bases
    + 75
    + 76T = TypeVar("T")
      77
      78
    - 79class NonGenericChild(GenericParent[str]):
    - 80    """NonGenericChild"""
    + 79class GenericParent(Generic[T]):
    + 80    """GenericParent"""
      81
      82
    - 83# Testing docstring inheritance
    - 84
    + 83class NonGenericChild(GenericParent[str]):
    + 84    """NonGenericChild"""
      85
    - 86class Base:
    - 87    def __init__(self):
    - 88        """init"""
    - 89        super().__init__()
    - 90
    - 91    def foo(self):
    - 92        """foo"""
    - 93        pass
    + 86
    + 87# Testing docstring inheritance
    + 88
    + 89
    + 90class Base:
    + 91    def __init__(self):
    + 92        """init"""
    + 93        super().__init__()
      94
    - 95    @classmethod
    - 96    def bar(cls):
    - 97        """bar"""
    - 98        pass
    - 99
    -100    @staticmethod
    -101    def baz():
    -102        """baz"""
    -103        pass
    -104
    -105    @property
    -106    def qux(self):
    -107        """qux"""
    -108        return
    -109
    -110    @cached_property
    -111    def quux(self):
    -112        """quux"""
    -113        return
    -114
    -115    quuux: int = 42
    -116    """quuux"""
    -117
    + 95    def foo(self):
    + 96        """foo"""
    + 97        pass
    + 98
    + 99    @classmethod
    +100    def bar(cls):
    +101        """bar"""
    +102        pass
    +103
    +104    @staticmethod
    +105    def baz():
    +106        """baz"""
    +107        pass
    +108
    +109    @property
    +110    def qux(self):
    +111        """qux"""
    +112        return
    +113
    +114    @cached_property
    +115    def quux(self):
    +116        """quux"""
    +117        return
     118
    -119class Child(Base):
    -120    def __init__(self):
    -121        super().__init__()
    +119    quuux: int = 42
    +120    """quuux"""
    +121
     122
    -123    def foo(self):
    -124        pass
    -125
    -126    @classmethod
    -127    def bar(cls):
    +123class Child(Base):
    +124    def __init__(self):
    +125        super().__init__()
    +126
    +127    def foo(self):
     128        pass
     129
    -130    @staticmethod
    -131    def baz():
    +130    @classmethod
    +131    def bar(cls):
     132        pass
     133
    -134    @property
    -135    def qux(self):
    -136        return
    +134    @staticmethod
    +135    def baz():
    +136        pass
     137
    -138    @cached_property
    -139    def quux(self):
    +138    @property
    +139    def qux(self):
     140        return
     141
    -142    quuux: int = 42
    -143
    -144
    -145# Testing that an attribute that is only annotated does not trigger a "submodule not found" warning.
    -146
    -147only_annotated: int
    +142    @cached_property
    +143    def quux(self):
    +144        return
    +145
    +146    quuux: int = 42
    +147
     148
    -149
    -150# Testing that a private class in __all__ is displayed
    -151
    +149# Testing that an attribute that is only annotated does not trigger a "submodule not found" warning.
    +150
    +151only_annotated: int
     152
    -153class _Private:
    -154    """private class"""
    +153
    +154# Testing that a private class in __all__ is displayed
     155
    -156    pass
    -157
    -158    def _do(self):
    -159        """private method"""
    -160
    +156
    +157class _Private:
    +158    """private class"""
    +159
    +160    pass
     161
    -162# Testing a class attribute that is a lambda (which generates quirky sources)
    -163
    +162    def _do(self):
    +163        """private method"""
     164
    -165class LambdaAttr:
    -166    # not really supported, but also shouldn't crash.
    -167    attr = lambda x: 42  # noqa
    +165
    +166# Testing a class attribute that is a lambda (which generates quirky sources)
    +167
     168
    -169
    -170# Testing different docstring annotations
    -171# fmt: off
    +169class LambdaAttr:
    +170    # not really supported, but also shouldn't crash.
    +171    attr = lambda x: 42  # noqa
     172
     173
    -174def foo():
    -175    """no indents"""
    +174# Testing different docstring annotations
    +175# fmt: off
     176
     177
    -178def bar():
    -179    """no
    -180indents"""
    +178def foo():
    +179    """no indents"""
    +180
     181
    -182
    -183def baz():
    -184    """one
    -185    indent"""
    +182def bar():
    +183    """no
    +184indents"""
    +185
     186
    -187
    -188def qux():
    -189    """
    -190    two
    -191    indents
    -192    """
    -193
    -194
    -195class Indented:
    -196    def foo(self):
    -197        """no indents"""
    +187def baz():
    +188    """one
    +189    indent"""
    +190
    +191
    +192def qux():
    +193    """
    +194    two
    +195    indents
    +196    """
    +197
     198
    -199    def bar(self):
    -200        """no
    -201indents"""
    +199class Indented:
    +200    def foo(self):
    +201        """no indents"""
     202
    -203    def baz(self):
    -204        """one
    -205        indent"""
    +203    def bar(self):
    +204        """no
    +205indents"""
     206
    -207    def qux(self):
    -208        """
    -209        two
    -210        indents
    -211        """
    -212
    -213    @lru_cache()
    -214    def foo_decorated(self):
    -215        """no indents"""
    +207    def baz(self):
    +208        """one
    +209        indent"""
    +210
    +211    def qux(self):
    +212        """
    +213        two
    +214        indents
    +215        """
     216
     217    @lru_cache()
    -218    # comment
    -219    def foo_commented(self):
    -220        """no indents"""
    -221
    -222    @lru_cache()
    -223    def bar_decorated(self):
    -224        """no
    -225indents"""
    -226
    -227    @lru_cache()
    -228    def baz_decorated(self):
    -229        """one
    -230        indent"""
    -231
    -232    @lru_cache()
    -233    def qux_decorated(self):
    -234        """
    -235        two
    -236        indents
    -237        """
    -238
    -239    @lru_cache(
    -240        maxsize=42
    -241    )
    -242    def quux_decorated(self):
    -243        """multi-line decorator, https://github.com/mitmproxy/pdoc/issues/246"""
    -244
    -245
    -246def _protected_decorator(f):
    -247    return f
    +218    def foo_decorated(self):
    +219        """no indents"""
    +220
    +221    @lru_cache()
    +222    # comment
    +223    def foo_commented(self):
    +224        """no indents"""
    +225
    +226    @lru_cache()
    +227    def bar_decorated(self):
    +228        """no
    +229indents"""
    +230
    +231    @lru_cache()
    +232    def baz_decorated(self):
    +233        """one
    +234        indent"""
    +235
    +236    @lru_cache()
    +237    def qux_decorated(self):
    +238        """
    +239        two
    +240        indents
    +241        """
    +242
    +243    @lru_cache(
    +244        maxsize=42
    +245    )
    +246    def quux_decorated(self):
    +247        """multi-line decorator, https://github.com/mitmproxy/pdoc/issues/246"""
     248
     249
    -250@_protected_decorator
    -251def fun_with_protected_decorator():
    -252    """This function has a protected decorator (name starting with a single `_`)."""
    +250def _protected_decorator(f):
    +251    return f
    +252
     253
    -254
    -255class UnhashableDataDescriptor:
    -256    def __get__(self):
    -257        pass
    -258    __hash__ = None  # type: ignore
    -259
    -260
    -261unhashable = UnhashableDataDescriptor()
    -262
    +254@_protected_decorator
    +255def fun_with_protected_decorator():
    +256    """This function has a protected decorator (name starting with a single `_`)."""
    +257
    +258
    +259class UnhashableDataDescriptor:
    +260    def __get__(self):
    +261        pass
    +262    __hash__ = None  # type: ignore
     263
    -264class AbstractClass(metaclass=abc.ABCMeta):
    -265    """This class shouldn't show a constructor as it's abstract."""
    -266    @abc.abstractmethod
    -267    def foo(self):
    -268        pass
    -269
    -270
    -271# Adapted from https://github.com/mitmproxy/pdoc/issues/320
    -272
    -273def make_adder(a: int):
    -274    def add_func(b: int) -> int:
    -275        """This function adds two numbers."""
    -276        return a + b
    -277    return add_func
    -278
    -279
    -280add_four = make_adder(4)
    -281add_five = make_adder(5)
    -282"""This function adds five."""
    -283add_six = make_adder(6)
    -284add_six.__doc__ = "This function adds six."
    -285
    -286
    -287# Adapted from https://github.com/mitmproxy/pdoc/issues/335
    -288def linkify_links():
    -289    """
    -290    This docstring contains links that are also identifiers:
    -291
    -292    - [`linkify_links`](https://example.com/)
    -293    - [misc.linkify_links](https://example.com/)
    -294    - [`linkify_links()`](https://example.com/)
    -295    - [misc.linkify_links()](https://example.com/)
    -296    - [link in target](https://example.com/misc.linkify_links)
    -297    - [explicit linking](#AbstractClass.foo)
    -298    """
    -299
    -300
    -301class Issue352aMeta(type):
    -302    def __call__(cls, *args, **kwargs):
    -303        """Meta.__call__"""
    +264
    +265unhashable = UnhashableDataDescriptor()
    +266
    +267
    +268class AbstractClass(metaclass=abc.ABCMeta):
    +269    """This class shouldn't show a constructor as it's abstract."""
    +270    @abc.abstractmethod
    +271    def foo(self):
    +272        pass
    +273
    +274
    +275# Adapted from https://github.com/mitmproxy/pdoc/issues/320
    +276
    +277def make_adder(a: int):
    +278    def add_func(b: int) -> int:
    +279        """This function adds two numbers."""
    +280        return a + b
    +281    return add_func
    +282
    +283
    +284add_four = make_adder(4)
    +285add_five = make_adder(5)
    +286"""This function adds five."""
    +287add_six = make_adder(6)
    +288add_six.__doc__ = "This function adds six."
    +289
    +290
    +291# Adapted from https://github.com/mitmproxy/pdoc/issues/335
    +292def linkify_links():
    +293    """
    +294    This docstring contains links that are also identifiers:
    +295
    +296    - [`linkify_links`](https://example.com/)
    +297    - [misc.linkify_links](https://example.com/)
    +298    - [`linkify_links()`](https://example.com/)
    +299    - [misc.linkify_links()](https://example.com/)
    +300    - [link in target](https://example.com/misc.linkify_links)
    +301    - [explicit linking](#AbstractClass.foo)
    +302    """
    +303
     304
    -305
    -306class Issue352a(metaclass=Issue352aMeta):
    -307    def __init__(self):
    -308        """Issue352.__init__ should be preferred over Meta.__call__."""
    +305class Issue352aMeta(type):
    +306    def __call__(cls, *args, **kwargs):
    +307        """Meta.__call__"""
    +308
     309
    -310
    -311class Issue352bMeta(type):
    -312    def __call__(cls, *args, **kwargs):
    -313        pass
    +310class Issue352a(metaclass=Issue352aMeta):
    +311    def __init__(self):
    +312        """Issue352.__init__ should be preferred over Meta.__call__."""
    +313
     314
    -315
    -316class Issue352b(metaclass=Issue352bMeta):
    -317    """No docstrings for the constructor here."""
    +315class Issue352bMeta(type):
    +316    def __call__(cls, *args, **kwargs):
    +317        pass
     318
     319
    -320class CustomCallMeta(type):
    -321    def __call__(cls, *args, **kwargs):
    -322        """Custom docstring in metaclass.`__call__`"""
    +320class Issue352b(metaclass=Issue352bMeta):
    +321    """No docstrings for the constructor here."""
    +322
     323
    -324
    -325class CustomCall(metaclass=CustomCallMeta):
    -326    """A class where the constructor is defined by its metaclass."""
    +324class CustomCallMeta(type):
    +325    def __call__(cls, *args, **kwargs):
    +326        """Custom docstring in metaclass.`__call__`"""
     327
     328
    -329class Headings:
    -330    """
    -331    # Heading 1
    +329class CustomCall(metaclass=CustomCallMeta):
    +330    """A class where the constructor is defined by its metaclass."""
    +331
     332
    -333    Here is some text.
    -334
    -335    ## Heading 2
    +333class Headings:
    +334    """
    +335    # Heading 1
     336
     337    Here is some text.
     338
    -339    ### Heading 3
    +339    ## Heading 2
     340
     341    Here is some text.
     342
    -343    #### Heading 4
    +343    ### Heading 3
     344
     345    Here is some text.
     346
    -347    ##### Heading 5
    +347    #### Heading 4
     348
     349    Here is some text.
     350
    -351    ###### Heading 6
    +351    ##### Heading 5
     352
     353    Here is some text.
     354
    -355    """
    +355    ###### Heading 6
     356
    -357
    -358class CustomRepr:
    -359    def __repr__(self):
    -360        return "°<script>alert(1)</script>"
    +357    Here is some text.
    +358
    +359    """
    +360
     361
    -362
    -363def repr_not_syntax_highlightable(x=CustomRepr()):
    -364    """The default value for x fails to highlight with pygments."""
    +362class CustomRepr:
    +363    def __repr__(self):
    +364        return "°<script>alert(1)</script>"
     365
     366
    -367class ClassDecorator:
    -368    """This is a class that wraps a function. It will be documented correctly."""
    -369    def __init__(self, func):
    -370        self._func = func
    -371
    -372
    -373@ClassDecorator
    -374def another_decorated_function(arg: str) -> str:
    -375    """This is another decorated function. It will not be documented correctly."""
    -376    raise NotImplementedError
    -377
    -378
    -379class SubclassRef:
    -380    class SubClass:
    -381        pass
    +367def repr_not_syntax_highlightable(x=CustomRepr()):
    +368    """The default value for x fails to highlight with pygments."""
    +369
    +370
    +371class ClassDecorator:
    +372    """This is a class that wraps a function. It will be documented correctly."""
    +373    def __init__(self, func):
    +374        self._func = func
    +375
    +376
    +377@ClassDecorator
    +378def another_decorated_function(arg: str) -> str:
    +379    """This is another decorated function. It will not be documented correctly."""
    +380    raise NotImplementedError
    +381
     382
    -383    def __init__(self, x: "SubClass"):
    -384        print(x)
    -385
    +383class SubclassRef:
    +384    class SubClass:
    +385        pass
     386
    -387class ClassAsAttribute:
    -388    static_attr_to_class = ClassDecorator
    -389    """this is a static attribute that point to a Class (not an instance)"""
    +387    def __init__(self, x: "SubClass"):
    +388        print(x)
    +389
     390
    -391    static_attr_to_instance = ClassDecorator(None)
    -392    """this is a static attribute that point to an instance"""
    -393
    +391class ClassAsAttribute:
    +392    static_attr_to_class = ClassDecorator
    +393    """this is a static attribute that point to a Class (not an instance)"""
     394
    -395class scheduler(sched.scheduler):
    -396    """Test for broken links for inherited methods, https://github.com/mitmproxy/pdoc/issues/490"""
    +395    static_attr_to_instance = ClassDecorator(None)
    +396    """this is a static attribute that point to an instance"""
     397
     398
    -399class __init__:
    -400    """https://github.com/mitmproxy/pdoc/issues/519"""
    +399class scheduler(sched.scheduler):
    +400    """Test for broken links for inherited methods, https://github.com/mitmproxy/pdoc/issues/490"""
     401
     402
    -403def dynamically_modify_docstring1():
    -404    """this should **not** be the docstring."""
    +403class __init__:
    +404    """https://github.com/mitmproxy/pdoc/issues/519"""
     405
     406
    -407def dynamically_modify_docstring2():
    -408    pass
    +407def dynamically_modify_docstring1():
    +408    """this should **not** be the docstring."""
     409
     410
    -411dynamically_modify_docstring1.__doc__ = "https://github.com/mitmproxy/pdoc/issues/536"
    -412dynamically_modify_docstring2.__doc__ = "https://github.com/mitmproxy/pdoc/issues/536"
    +411def dynamically_modify_docstring2():
    +412    pass
     413
     414
    -415def _docstring_modifier(fn):
    -416    fn.__doc__ = "https://github.com/mitmproxy/pdoc/issues/536"
    -417    return fn
    +415dynamically_modify_docstring1.__doc__ = "https://github.com/mitmproxy/pdoc/issues/536"
    +416dynamically_modify_docstring2.__doc__ = "https://github.com/mitmproxy/pdoc/issues/536"
    +417
     418
    -419
    -420@_docstring_modifier
    -421def dynamically_modify_docstring3():
    -422    """This should **not** be the docstring."""
    +419def _docstring_modifier(fn):
    +420    fn.__doc__ = "https://github.com/mitmproxy/pdoc/issues/536"
    +421    return fn
    +422
     423
    -424
    -425@_docstring_modifier
    -426def dynamically_modify_docstring4():
    -427    pass
    +424@_docstring_modifier
    +425def dynamically_modify_docstring3():
    +426    """This should **not** be the docstring."""
    +427
     428
    -429
    -430class DocstringFromNew:
    -431    def __new__(cls, *args, **kwargs):
    -432        """This is a class with a docstring inferred from `__new__`."""
    +429@_docstring_modifier
    +430def dynamically_modify_docstring4():
    +431    pass
    +432
     433
    -434
    -435__all__ = [
    -436    "Issue226",
    -437    "var_with_default_obj",
    -438    "var_with_default_func",
    -439    "func_with_defaults",
    -440    "ClassmethodLink",
    -441    "GenericParent",
    -442    "NonGenericChild",
    -443    "Child",
    -444    "only_annotated",
    -445    "_Private",
    -446    "LambdaAttr",
    -447    "foo",
    -448    "bar",
    -449    "baz",
    -450    "qux",
    -451    "Indented",
    -452    "fun_with_protected_decorator",
    -453    "unhashable",
    -454    "AbstractClass",
    -455    "add_four",
    -456    "add_five",
    -457    "add_six",
    -458    "linkify_links",
    -459    "Issue352a",
    -460    "Issue352b",
    -461    "CustomCall",
    -462    "Headings",
    -463    "repr_not_syntax_highlightable",
    -464    "ClassDecorator",
    -465    "another_decorated_function",
    -466    "SubclassRef",
    -467    "ClassAsAttribute",
    -468    "scheduler",
    -469    "__init__",
    -470    "dynamically_modify_docstring1",
    -471    "dynamically_modify_docstring2",
    -472    "dynamically_modify_docstring3",
    -473    "dynamically_modify_docstring4",
    -474    "DocstringFromNew",
    -475]
    +434class DocstringFromNew:
    +435    def __new__(cls, *args, **kwargs):
    +436        """This is a class with a docstring inferred from `__new__`."""
    +437
    +438
    +439
    +440
    +441
    +442
    +443class SingleDispatchMethodExample:
    +444    @functools.singledispatchmethod
    +445    def fancymethod(self, str_or_int: Union[str, int]):
    +446        """A fancy method which is capable of handling either `str` or `int`.
    +447
    +448        :param str_or_int: string or integer to handle
    +449        """
    +450        raise NotImplementedError(f"{type(str_or_int)=} not implemented!")
    +451
    +452    @fancymethod.register
    +453    def fancymethod_handle_str(self, str_to_handle: str):
    +454        """Fancy method handles a string.
    +455
    +456        :param str_to_handle: string which will be handled
    +457        """
    +458        print(f"{type(str_to_handle)} = '{str_to_handle}")
    +459
    +460    @fancymethod.register
    +461    def _fancymethod_handle_int(self, int_to_handle: int):
    +462        """Fancy method handles int (not shown in doc).
    +463
    +464        :param int_to_handle: int which will be handled
    +465        """
    +466        print(f"{type(int_to_handle)} = '{int_to_handle:x}'")
    +467
    +468
    +469@dataclass(init=False)
    +470class DataclassStructure(Structure):
    +471    """DataclassStructure raises for `inspect.signature`."""
    +472
    +473
    +474__all__ = [
    +475    "Issue226",
    +476    "var_with_default_obj",
    +477    "var_with_default_func",
    +478    "func_with_defaults",
    +479    "ClassmethodLink",
    +480    "GenericParent",
    +481    "NonGenericChild",
    +482    "Child",
    +483    "only_annotated",
    +484    "_Private",
    +485    "LambdaAttr",
    +486    "foo",
    +487    "bar",
    +488    "baz",
    +489    "qux",
    +490    "Indented",
    +491    "fun_with_protected_decorator",
    +492    "unhashable",
    +493    "AbstractClass",
    +494    "add_four",
    +495    "add_five",
    +496    "add_six",
    +497    "linkify_links",
    +498    "Issue352a",
    +499    "Issue352b",
    +500    "CustomCall",
    +501    "Headings",
    +502    "repr_not_syntax_highlightable",
    +503    "ClassDecorator",
    +504    "another_decorated_function",
    +505    "SubclassRef",
    +506    "ClassAsAttribute",
    +507    "scheduler",
    +508    "__init__",
    +509    "dynamically_modify_docstring1",
    +510    "dynamically_modify_docstring2",
    +511    "dynamically_modify_docstring3",
    +512    "dynamically_modify_docstring4",
    +513    "DocstringFromNew",
    +514    "SingleDispatchMethodExample",
    +515    "DataclassStructure",
    +516]
     
    @@ -798,10 +857,10 @@

    -
    23class Issue226:
    -24    @Descriptor
    -25    def size(self):
    -26        """This is the size"""
    +            
    27class Issue226:
    +28    @Descriptor
    +29    def size(self):
    +30        """This is the size"""
     
    @@ -846,8 +905,8 @@

    -
    32def default_func():
    -33    pass
    +            
    36def default_func():
    +37    pass
     
    @@ -867,9 +926,9 @@

    -
    44def func_with_defaults(a=default_obj, b=default_func):
    -45    """this shouldn't render object or function addresses"""
    -46    pass
    +            
    48def func_with_defaults(a=default_obj, b=default_func):
    +49    """this shouldn't render object or function addresses"""
    +50    pass
     
    @@ -889,25 +948,25 @@

    -
    50class ClassmethodLink:
    -51    """
    -52    You can either do
    -53
    -54    >>> ClassmethodLink.bar()
    -55    42
    -56
    -57    or
    -58
    -59    ```python
    -60    ClassmethodLink.bar()
    -61    ```
    +            
    54class ClassmethodLink:
    +55    """
    +56    You can either do
    +57
    +58    >>> ClassmethodLink.bar()
    +59    42
    +60
    +61    or
     62
    -63    neither will be linked.
    -64    """
    -65
    -66    @classmethod
    -67    def bar(cls):
    -68        return 42
    +63    ```python
    +64    ClassmethodLink.bar()
    +65    ```
    +66
    +67    neither will be linked.
    +68    """
    +69
    +70    @classmethod
    +71    def bar(cls):
    +72        return 42
     
    @@ -942,9 +1001,9 @@

    -
    66    @classmethod
    -67    def bar(cls):
    -68        return 42
    +            
    70    @classmethod
    +71    def bar(cls):
    +72        return 42
     
    @@ -963,8 +1022,8 @@

    -
    76class GenericParent(Generic[T]):
    -77    """GenericParent"""
    +            
    80class GenericParent(Generic[T]):
    +81    """GenericParent"""
     
    @@ -984,8 +1043,8 @@

    -
    80class NonGenericChild(GenericParent[str]):
    -81    """NonGenericChild"""
    +            
    84class NonGenericChild(GenericParent[str]):
    +85    """NonGenericChild"""
     
    @@ -1005,30 +1064,30 @@

    -
    120class Child(Base):
    -121    def __init__(self):
    -122        super().__init__()
    -123
    -124    def foo(self):
    -125        pass
    -126
    -127    @classmethod
    -128    def bar(cls):
    +            
    124class Child(Base):
    +125    def __init__(self):
    +126        super().__init__()
    +127
    +128    def foo(self):
     129        pass
     130
    -131    @staticmethod
    -132    def baz():
    +131    @classmethod
    +132    def bar(cls):
     133        pass
     134
    -135    @property
    -136    def qux(self):
    -137        return
    +135    @staticmethod
    +136    def baz():
    +137        pass
     138
    -139    @cached_property
    -140    def quux(self):
    +139    @property
    +140    def qux(self):
     141        return
     142
    -143    quuux: int = 42
    +143    @cached_property
    +144    def quux(self):
    +145        return
    +146
    +147    quuux: int = 42
     
    @@ -1044,8 +1103,8 @@

    -
    121    def __init__(self):
    -122        super().__init__()
    +            
    125    def __init__(self):
    +126        super().__init__()
     
    @@ -1065,8 +1124,8 @@

    -
    124    def foo(self):
    -125        pass
    +            
    128    def foo(self):
    +129        pass
     
    @@ -1087,9 +1146,9 @@

    -
    127    @classmethod
    -128    def bar(cls):
    -129        pass
    +            
    131    @classmethod
    +132    def bar(cls):
    +133        pass
     
    @@ -1110,9 +1169,9 @@

    -
    131    @staticmethod
    -132    def baz():
    -133        pass
    +            
    135    @staticmethod
    +136    def baz():
    +137        pass
     
    @@ -1130,9 +1189,9 @@

    -
    135    @property
    -136    def qux(self):
    -137        return
    +            
    139    @property
    +140    def qux(self):
    +141        return
     
    @@ -1150,9 +1209,9 @@

    -
    139    @cached_property
    -140    def quux(self):
    -141        return
    +            
    143    @cached_property
    +144    def quux(self):
    +145        return
     
    @@ -1198,13 +1257,13 @@

    -
    154class _Private:
    -155    """private class"""
    -156
    -157    pass
    -158
    -159    def _do(self):
    -160        """private method"""
    +            
    158class _Private:
    +159    """private class"""
    +160
    +161    pass
    +162
    +163    def _do(self):
    +164        """private method"""
     
    @@ -1224,9 +1283,9 @@

    -
    166class LambdaAttr:
    -167    # not really supported, but also shouldn't crash.
    -168    attr = lambda x: 42  # noqa
    +            
    170class LambdaAttr:
    +171    # not really supported, but also shouldn't crash.
    +172    attr = lambda x: 42  # noqa
     
    @@ -1243,7 +1302,7 @@

    -
    168    attr = lambda x: 42  # noqa
    +            
    172    attr = lambda x: 42  # noqa
     
    @@ -1262,8 +1321,8 @@

    -
    175def foo():
    -176    """no indents"""
    +            
    179def foo():
    +180    """no indents"""
     
    @@ -1283,9 +1342,9 @@

    -
    179def bar():
    -180    """no
    -181indents"""
    +            
    183def bar():
    +184    """no
    +185indents"""
     
    @@ -1306,9 +1365,9 @@

    -
    184def baz():
    -185    """one
    -186    indent"""
    +            
    188def baz():
    +189    """one
    +190    indent"""
     
    @@ -1329,11 +1388,11 @@

    -
    189def qux():
    -190    """
    -191    two
    -192    indents
    -193    """
    +            
    193def qux():
    +194    """
    +195    two
    +196    indents
    +197    """
     
    @@ -1354,55 +1413,55 @@

    -
    196class Indented:
    -197    def foo(self):
    -198        """no indents"""
    -199
    -200    def bar(self):
    -201        """no
    -202indents"""
    +            
    200class Indented:
    +201    def foo(self):
    +202        """no indents"""
     203
    -204    def baz(self):
    -205        """one
    -206        indent"""
    +204    def bar(self):
    +205        """no
    +206indents"""
     207
    -208    def qux(self):
    -209        """
    -210        two
    -211        indents
    -212        """
    -213
    -214    @lru_cache()
    -215    def foo_decorated(self):
    -216        """no indents"""
    +208    def baz(self):
    +209        """one
    +210        indent"""
    +211
    +212    def qux(self):
    +213        """
    +214        two
    +215        indents
    +216        """
     217
     218    @lru_cache()
    -219    # comment
    -220    def foo_commented(self):
    -221        """no indents"""
    -222
    -223    @lru_cache()
    -224    def bar_decorated(self):
    -225        """no
    -226indents"""
    -227
    -228    @lru_cache()
    -229    def baz_decorated(self):
    -230        """one
    -231        indent"""
    -232
    -233    @lru_cache()
    -234    def qux_decorated(self):
    -235        """
    -236        two
    -237        indents
    -238        """
    -239
    -240    @lru_cache(
    -241        maxsize=42
    -242    )
    -243    def quux_decorated(self):
    -244        """multi-line decorator, https://github.com/mitmproxy/pdoc/issues/246"""
    +219    def foo_decorated(self):
    +220        """no indents"""
    +221
    +222    @lru_cache()
    +223    # comment
    +224    def foo_commented(self):
    +225        """no indents"""
    +226
    +227    @lru_cache()
    +228    def bar_decorated(self):
    +229        """no
    +230indents"""
    +231
    +232    @lru_cache()
    +233    def baz_decorated(self):
    +234        """one
    +235        indent"""
    +236
    +237    @lru_cache()
    +238    def qux_decorated(self):
    +239        """
    +240        two
    +241        indents
    +242        """
    +243
    +244    @lru_cache(
    +245        maxsize=42
    +246    )
    +247    def quux_decorated(self):
    +248        """multi-line decorator, https://github.com/mitmproxy/pdoc/issues/246"""
     
    @@ -1419,8 +1478,8 @@

    -
    197    def foo(self):
    -198        """no indents"""
    +            
    201    def foo(self):
    +202        """no indents"""
     
    @@ -1440,9 +1499,9 @@

    -
    200    def bar(self):
    -201        """no
    -202indents"""
    +            
    204    def bar(self):
    +205        """no
    +206indents"""
     
    @@ -1463,9 +1522,9 @@

    -
    204    def baz(self):
    -205        """one
    -206        indent"""
    +            
    208    def baz(self):
    +209        """one
    +210        indent"""
     
    @@ -1486,11 +1545,11 @@

    -
    208    def qux(self):
    -209        """
    -210        two
    -211        indents
    -212        """
    +            
    212    def qux(self):
    +213        """
    +214        two
    +215        indents
    +216        """
     
    @@ -1512,9 +1571,9 @@

    -
    214    @lru_cache()
    -215    def foo_decorated(self):
    -216        """no indents"""
    +            
    218    @lru_cache()
    +219    def foo_decorated(self):
    +220        """no indents"""
     
    @@ -1535,10 +1594,10 @@

    -
    218    @lru_cache()
    -219    # comment
    -220    def foo_commented(self):
    -221        """no indents"""
    +            
    222    @lru_cache()
    +223    # comment
    +224    def foo_commented(self):
    +225        """no indents"""
     
    @@ -1559,10 +1618,10 @@

    -
    223    @lru_cache()
    -224    def bar_decorated(self):
    -225        """no
    -226indents"""
    +            
    227    @lru_cache()
    +228    def bar_decorated(self):
    +229        """no
    +230indents"""
     
    @@ -1584,10 +1643,10 @@

    -
    228    @lru_cache()
    -229    def baz_decorated(self):
    -230        """one
    -231        indent"""
    +            
    232    @lru_cache()
    +233    def baz_decorated(self):
    +234        """one
    +235        indent"""
     
    @@ -1609,12 +1668,12 @@

    -
    233    @lru_cache()
    -234    def qux_decorated(self):
    -235        """
    -236        two
    -237        indents
    -238        """
    +            
    237    @lru_cache()
    +238    def qux_decorated(self):
    +239        """
    +240        two
    +241        indents
    +242        """
     
    @@ -1636,11 +1695,11 @@

    -
    240    @lru_cache(
    -241        maxsize=42
    -242    )
    -243    def quux_decorated(self):
    -244        """multi-line decorator, https://github.com/mitmproxy/pdoc/issues/246"""
    +            
    244    @lru_cache(
    +245        maxsize=42
    +246    )
    +247    def quux_decorated(self):
    +248        """multi-line decorator, https://github.com/mitmproxy/pdoc/issues/246"""
     
    @@ -1661,9 +1720,9 @@

    -
    251@_protected_decorator
    -252def fun_with_protected_decorator():
    -253    """This function has a protected decorator (name starting with a single `_`)."""
    +            
    255@_protected_decorator
    +256def fun_with_protected_decorator():
    +257    """This function has a protected decorator (name starting with a single `_`)."""
     
    @@ -1696,11 +1755,11 @@

    -
    265class AbstractClass(metaclass=abc.ABCMeta):
    -266    """This class shouldn't show a constructor as it's abstract."""
    -267    @abc.abstractmethod
    -268    def foo(self):
    -269        pass
    +            
    269class AbstractClass(metaclass=abc.ABCMeta):
    +270    """This class shouldn't show a constructor as it's abstract."""
    +271    @abc.abstractmethod
    +272    def foo(self):
    +273        pass
     
    @@ -1720,9 +1779,9 @@

    -
    267    @abc.abstractmethod
    -268    def foo(self):
    -269        pass
    +            
    271    @abc.abstractmethod
    +272    def foo(self):
    +273        pass
     
    @@ -1741,9 +1800,9 @@

    -
    275    def add_func(b: int) -> int:
    -276        """This function adds two numbers."""
    -277        return a + b
    +            
    279    def add_func(b: int) -> int:
    +280        """This function adds two numbers."""
    +281        return a + b
     
    @@ -1763,9 +1822,9 @@

    -
    275    def add_func(b: int) -> int:
    -276        """This function adds two numbers."""
    -277        return a + b
    +            
    279    def add_func(b: int) -> int:
    +280        """This function adds two numbers."""
    +281        return a + b
     
    @@ -1785,9 +1844,9 @@

    -
    275    def add_func(b: int) -> int:
    -276        """This function adds two numbers."""
    -277        return a + b
    +            
    279    def add_func(b: int) -> int:
    +280        """This function adds two numbers."""
    +281        return a + b
     
    @@ -1807,17 +1866,17 @@

    -
    289def linkify_links():
    -290    """
    -291    This docstring contains links that are also identifiers:
    -292
    -293    - [`linkify_links`](https://example.com/)
    -294    - [misc.linkify_links](https://example.com/)
    -295    - [`linkify_links()`](https://example.com/)
    -296    - [misc.linkify_links()](https://example.com/)
    -297    - [link in target](https://example.com/misc.linkify_links)
    -298    - [explicit linking](#AbstractClass.foo)
    -299    """
    +            
    293def linkify_links():
    +294    """
    +295    This docstring contains links that are also identifiers:
    +296
    +297    - [`linkify_links`](https://example.com/)
    +298    - [misc.linkify_links](https://example.com/)
    +299    - [`linkify_links()`](https://example.com/)
    +300    - [misc.linkify_links()](https://example.com/)
    +301    - [link in target](https://example.com/misc.linkify_links)
    +302    - [explicit linking](#AbstractClass.foo)
    +303    """
     
    @@ -1846,9 +1905,9 @@

    -
    307class Issue352a(metaclass=Issue352aMeta):
    -308    def __init__(self):
    -309        """Issue352.__init__ should be preferred over Meta.__call__."""
    +            
    311class Issue352a(metaclass=Issue352aMeta):
    +312    def __init__(self):
    +313        """Issue352.__init__ should be preferred over Meta.__call__."""
     
    @@ -1864,8 +1923,8 @@

    -
    308    def __init__(self):
    -309        """Issue352.__init__ should be preferred over Meta.__call__."""
    +            
    312    def __init__(self):
    +313        """Issue352.__init__ should be preferred over Meta.__call__."""
     
    @@ -1886,8 +1945,8 @@

    -
    317class Issue352b(metaclass=Issue352bMeta):
    -318    """No docstrings for the constructor here."""
    +            
    321class Issue352b(metaclass=Issue352bMeta):
    +322    """No docstrings for the constructor here."""
     
    @@ -1907,8 +1966,8 @@

    -
    326class CustomCall(metaclass=CustomCallMeta):
    -327    """A class where the constructor is defined by its metaclass."""
    +            
    330class CustomCall(metaclass=CustomCallMeta):
    +331    """A class where the constructor is defined by its metaclass."""
     
    @@ -1926,8 +1985,8 @@

    -
    322    def __call__(cls, *args, **kwargs):
    -323        """Custom docstring in metaclass.`__call__`"""
    +            
    326    def __call__(cls, *args, **kwargs):
    +327        """Custom docstring in metaclass.`__call__`"""
     
    @@ -1948,33 +2007,33 @@

    -
    330class Headings:
    -331    """
    -332    # Heading 1
    -333
    -334    Here is some text.
    -335
    -336    ## Heading 2
    +            
    334class Headings:
    +335    """
    +336    # Heading 1
     337
     338    Here is some text.
     339
    -340    ### Heading 3
    +340    ## Heading 2
     341
     342    Here is some text.
     343
    -344    #### Heading 4
    +344    ### Heading 3
     345
     346    Here is some text.
     347
    -348    ##### Heading 5
    +348    #### Heading 4
     349
     350    Here is some text.
     351
    -352    ###### Heading 6
    +352    ##### Heading 5
     353
     354    Here is some text.
     355
    -356    """
    +356    ###### Heading 6
    +357
    +358    Here is some text.
    +359
    +360    """
     
    @@ -2016,8 +2075,8 @@
    Heading 6
    -
    364def repr_not_syntax_highlightable(x=CustomRepr()):
    -365    """The default value for x fails to highlight with pygments."""
    +            
    368def repr_not_syntax_highlightable(x=CustomRepr()):
    +369    """The default value for x fails to highlight with pygments."""
     
    @@ -2037,10 +2096,10 @@
    Heading 6
    -
    368class ClassDecorator:
    -369    """This is a class that wraps a function. It will be documented correctly."""
    -370    def __init__(self, func):
    -371        self._func = func
    +            
    372class ClassDecorator:
    +373    """This is a class that wraps a function. It will be documented correctly."""
    +374    def __init__(self, func):
    +375        self._func = func
     
    @@ -2058,8 +2117,8 @@
    Heading 6
    -
    370    def __init__(self, func):
    -371        self._func = func
    +            
    374    def __init__(self, func):
    +375        self._func = func
     
    @@ -2092,12 +2151,12 @@
    Heading 6
    -
    380class SubclassRef:
    -381    class SubClass:
    -382        pass
    -383
    -384    def __init__(self, x: "SubClass"):
    -385        print(x)
    +            
    384class SubclassRef:
    +385    class SubClass:
    +386        pass
    +387
    +388    def __init__(self, x: "SubClass"):
    +389        print(x)
     
    @@ -2113,8 +2172,8 @@
    Heading 6
    -
    384    def __init__(self, x: "SubClass"):
    -385        print(x)
    +            
    388    def __init__(self, x: "SubClass"):
    +389        print(x)
     
    @@ -2133,8 +2192,8 @@
    Heading 6
    -
    381    class SubClass:
    -382        pass
    +            
    385    class SubClass:
    +386        pass
     
    @@ -2152,12 +2211,12 @@
    Heading 6
    -
    388class ClassAsAttribute:
    -389    static_attr_to_class = ClassDecorator
    -390    """this is a static attribute that point to a Class (not an instance)"""
    -391
    -392    static_attr_to_instance = ClassDecorator(None)
    -393    """this is a static attribute that point to an instance"""
    +            
    392class ClassAsAttribute:
    +393    static_attr_to_class = ClassDecorator
    +394    """this is a static attribute that point to a Class (not an instance)"""
    +395
    +396    static_attr_to_instance = ClassDecorator(None)
    +397    """this is a static attribute that point to an instance"""
     
    @@ -2203,8 +2262,8 @@
    Heading 6
    -
    396class scheduler(sched.scheduler):
    -397    """Test for broken links for inherited methods, https://github.com/mitmproxy/pdoc/issues/490"""
    +            
    400class scheduler(sched.scheduler):
    +401    """Test for broken links for inherited methods, https://github.com/mitmproxy/pdoc/issues/490"""
     
    @@ -2241,8 +2300,8 @@
    Inherited Members
    -
    400class __init__:
    -401    """https://github.com/mitmproxy/pdoc/issues/519"""
    +            
    404class __init__:
    +405    """https://github.com/mitmproxy/pdoc/issues/519"""
     
    @@ -2262,8 +2321,8 @@
    Inherited Members
    -
    404def dynamically_modify_docstring1():
    -405    """this should **not** be the docstring."""
    +            
    408def dynamically_modify_docstring1():
    +409    """this should **not** be the docstring."""
     
    @@ -2283,8 +2342,8 @@
    Inherited Members
    -
    408def dynamically_modify_docstring2():
    -409    pass
    +            
    412def dynamically_modify_docstring2():
    +413    pass
     
    @@ -2304,9 +2363,9 @@
    Inherited Members
    -
    421@_docstring_modifier
    -422def dynamically_modify_docstring3():
    -423    """This should **not** be the docstring."""
    +            
    425@_docstring_modifier
    +426def dynamically_modify_docstring3():
    +427    """This should **not** be the docstring."""
     
    @@ -2326,9 +2385,9 @@
    Inherited Members
    -
    426@_docstring_modifier
    -427def dynamically_modify_docstring4():
    -428    pass
    +            
    430@_docstring_modifier
    +431def dynamically_modify_docstring4():
    +432    pass
     
    @@ -2348,9 +2407,9 @@
    Inherited Members
    -
    431class DocstringFromNew:
    -432    def __new__(cls, *args, **kwargs):
    -433        """This is a class with a docstring inferred from `__new__`."""
    +            
    435class DocstringFromNew:
    +436    def __new__(cls, *args, **kwargs):
    +437        """This is a class with a docstring inferred from `__new__`."""
     
    @@ -2366,8 +2425,8 @@
    Inherited Members
    -
    432    def __new__(cls, *args, **kwargs):
    -433        """This is a class with a docstring inferred from `__new__`."""
    +            
    436    def __new__(cls, *args, **kwargs):
    +437        """This is a class with a docstring inferred from `__new__`."""
     
    @@ -2377,6 +2436,145 @@
    Inherited Members
    +
    + +
    + + class + SingleDispatchMethodExample: + + + +
    + +
    444class SingleDispatchMethodExample:
    +445    @functools.singledispatchmethod
    +446    def fancymethod(self, str_or_int: Union[str, int]):
    +447        """A fancy method which is capable of handling either `str` or `int`.
    +448
    +449        :param str_or_int: string or integer to handle
    +450        """
    +451        raise NotImplementedError(f"{type(str_or_int)=} not implemented!")
    +452
    +453    @fancymethod.register
    +454    def fancymethod_handle_str(self, str_to_handle: str):
    +455        """Fancy method handles a string.
    +456
    +457        :param str_to_handle: string which will be handled
    +458        """
    +459        print(f"{type(str_to_handle)} = '{str_to_handle}")
    +460
    +461    @fancymethod.register
    +462    def _fancymethod_handle_int(self, int_to_handle: int):
    +463        """Fancy method handles int (not shown in doc).
    +464
    +465        :param int_to_handle: int which will be handled
    +466        """
    +467        print(f"{type(int_to_handle)} = '{int_to_handle:x}'")
    +
    + + + + +
    + +
    +
    @functools.singledispatchmethod
    + + def + fancymethod(self, str_or_int: Union[str, int]): + + + +
    + +
    445    @functools.singledispatchmethod
    +446    def fancymethod(self, str_or_int: Union[str, int]):
    +447        """A fancy method which is capable of handling either `str` or `int`.
    +448
    +449        :param str_or_int: string or integer to handle
    +450        """
    +451        raise NotImplementedError(f"{type(str_or_int)=} not implemented!")
    +
    + + +

    A fancy method which is capable of handling either str or int.

    + +
    Parameters
    + +
      +
    • str_or_int: string or integer to handle
    • +
    +
    + + +
    +
    + +
    +
    @fancymethod.register
    + + def + fancymethod_handle_str(self, str_to_handle: str): + + + +
    + +
    453    @fancymethod.register
    +454    def fancymethod_handle_str(self, str_to_handle: str):
    +455        """Fancy method handles a string.
    +456
    +457        :param str_to_handle: string which will be handled
    +458        """
    +459        print(f"{type(str_to_handle)} = '{str_to_handle}")
    +
    + + +

    Fancy method handles a string.

    + +
    Parameters
    + +
      +
    • str_to_handle: string which will be handled
    • +
    +
    + + +
    +
    +
    + +
    +
    @dataclass(init=False)
    + + class + DataclassStructure(_ctypes.Structure): + + + +
    + +
    470@dataclass(init=False)
    +471class DataclassStructure(Structure):
    +472    """DataclassStructure raises for `inspect.signature`."""
    +
    + + +

    DataclassStructure raises for inspect.signature.

    +
    + + +
    +
    Inherited Members
    +
    +
    _ctypes.Structure
    +
    Structure
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/test/testdata/misc.py b/test/testdata/misc.py index 4fdb23c7..db0a4d3e 100644 --- a/test/testdata/misc.py +++ b/test/testdata/misc.py @@ -1,9 +1,13 @@ import abc +from ctypes import Structure +from dataclasses import dataclass +import functools from functools import cached_property from functools import lru_cache import sched from typing import Generic from typing import TypeVar +from typing import Union # https://github.com/mitmproxy/pdoc/issues/226 @@ -432,6 +436,41 @@ def __new__(cls, *args, **kwargs): """This is a class with a docstring inferred from `__new__`.""" + + + + +class SingleDispatchMethodExample: + @functools.singledispatchmethod + def fancymethod(self, str_or_int: Union[str, int]): + """A fancy method which is capable of handling either `str` or `int`. + + :param str_or_int: string or integer to handle + """ + raise NotImplementedError(f"{type(str_or_int)=} not implemented!") + + @fancymethod.register + def fancymethod_handle_str(self, str_to_handle: str): + """Fancy method handles a string. + + :param str_to_handle: string which will be handled + """ + print(f"{type(str_to_handle)} = '{str_to_handle}") + + @fancymethod.register + def _fancymethod_handle_int(self, int_to_handle: int): + """Fancy method handles int (not shown in doc). + + :param int_to_handle: int which will be handled + """ + print(f"{type(int_to_handle)} = '{int_to_handle:x}'") + + +@dataclass(init=False) +class DataclassStructure(Structure): + """DataclassStructure raises for `inspect.signature`.""" + + __all__ = [ "Issue226", "var_with_default_obj", @@ -472,4 +511,6 @@ def __new__(cls, *args, **kwargs): "dynamically_modify_docstring3", "dynamically_modify_docstring4", "DocstringFromNew", + "SingleDispatchMethodExample", + "DataclassStructure", ] diff --git a/test/testdata/misc.txt b/test/testdata/misc.txt index 0044bbae..182f13ac 100644 --- a/test/testdata/misc.txt +++ b/test/testdata/misc.txt @@ -122,4 +122,12 @@ > + + <@functools.singledispatchmethod method def fancymethod(self, str_or_int: Union[str, int]): ... # A fancy method which…> + <@fancymethod.register method def fancymethod_handle_str(self, str_to_handle: str): ... # Fancy method handles…> + > + <@dataclass(init=False) class misc.DataclassStructure # DataclassStructure r… + + > > \ No newline at end of file diff --git a/test/testdata/misc_py39.html b/test/testdata/misc_py39.html deleted file mode 100644 index 27e19f25..00000000 --- a/test/testdata/misc_py39.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - misc_py39 API documentation - - - - - - - - - -
    -
    -

    -misc_py39

    - -

    Testing features that either are 3.9+ only or render slightly different on 3.9.

    -
    - - - - - -
     1"""
    - 2Testing features that either are 3.9+ only or render slightly different on 3.9.
    - 3"""
    - 4
    - 5from __future__ import annotations
    - 6
    - 7from ctypes import Structure
    - 8from dataclasses import dataclass
    - 9import functools
    -10from typing import Union
    -11
    -12
    -13class SingleDispatchMethodExample:
    -14    @functools.singledispatchmethod
    -15    def fancymethod(self, str_or_int: Union[str, int]):
    -16        """A fancy method which is capable of handling either `str` or `int`.
    -17
    -18        :param str_or_int: string or integer to handle
    -19        """
    -20        raise NotImplementedError(f"{type(str_or_int)=} not implemented!")
    -21
    -22    @fancymethod.register
    -23    def fancymethod_handle_str(self, str_to_handle: str):
    -24        """Fancy method handles a string.
    -25
    -26        :param str_to_handle: string which will be handled
    -27        """
    -28        print(f"{type(str_to_handle)} = '{str_to_handle}")
    -29
    -30    @fancymethod.register
    -31    def _fancymethod_handle_int(self, int_to_handle: int):
    -32        """Fancy method handles int (not shown in doc).
    -33
    -34        :param int_to_handle: int which will be handled
    -35        """
    -36        print(f"{type(int_to_handle)} = '{int_to_handle:x}'")
    -37
    -38
    -39@dataclass(init=False)
    -40class DataclassStructure(Structure):
    -41    """DataclassStructure raises for `inspect.signature`."""
    -
    - - -
    -
    - -
    - - class - SingleDispatchMethodExample: - - - -
    - -
    14class SingleDispatchMethodExample:
    -15    @functools.singledispatchmethod
    -16    def fancymethod(self, str_or_int: Union[str, int]):
    -17        """A fancy method which is capable of handling either `str` or `int`.
    -18
    -19        :param str_or_int: string or integer to handle
    -20        """
    -21        raise NotImplementedError(f"{type(str_or_int)=} not implemented!")
    -22
    -23    @fancymethod.register
    -24    def fancymethod_handle_str(self, str_to_handle: str):
    -25        """Fancy method handles a string.
    -26
    -27        :param str_to_handle: string which will be handled
    -28        """
    -29        print(f"{type(str_to_handle)} = '{str_to_handle}")
    -30
    -31    @fancymethod.register
    -32    def _fancymethod_handle_int(self, int_to_handle: int):
    -33        """Fancy method handles int (not shown in doc).
    -34
    -35        :param int_to_handle: int which will be handled
    -36        """
    -37        print(f"{type(int_to_handle)} = '{int_to_handle:x}'")
    -
    - - - - -
    - -
    -
    @functools.singledispatchmethod
    - - def - fancymethod(self, str_or_int: Union[str, int]): - - - -
    - -
    15    @functools.singledispatchmethod
    -16    def fancymethod(self, str_or_int: Union[str, int]):
    -17        """A fancy method which is capable of handling either `str` or `int`.
    -18
    -19        :param str_or_int: string or integer to handle
    -20        """
    -21        raise NotImplementedError(f"{type(str_or_int)=} not implemented!")
    -
    - - -

    A fancy method which is capable of handling either str or int.

    - -
    Parameters
    - -
      -
    • str_or_int: string or integer to handle
    • -
    -
    - - -
    -
    - -
    -
    @fancymethod.register
    - - def - fancymethod_handle_str(self, str_to_handle: str): - - - -
    - -
    23    @fancymethod.register
    -24    def fancymethod_handle_str(self, str_to_handle: str):
    -25        """Fancy method handles a string.
    -26
    -27        :param str_to_handle: string which will be handled
    -28        """
    -29        print(f"{type(str_to_handle)} = '{str_to_handle}")
    -
    - - -

    Fancy method handles a string.

    - -
    Parameters
    - -
      -
    • str_to_handle: string which will be handled
    • -
    -
    - - -
    -
    -
    - -
    -
    @dataclass(init=False)
    - - class - DataclassStructure(_ctypes.Structure): - - - -
    - -
    40@dataclass(init=False)
    -41class DataclassStructure(Structure):
    -42    """DataclassStructure raises for `inspect.signature`."""
    -
    - - -

    DataclassStructure raises for inspect.signature.

    -
    - - -
    -
    Inherited Members
    -
    -
    _ctypes.Structure
    -
    Structure
    - -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/test/testdata/misc_py39.py b/test/testdata/misc_py39.py deleted file mode 100644 index 34054c45..00000000 --- a/test/testdata/misc_py39.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Testing features that either are 3.9+ only or render slightly different on 3.9. -""" - -from __future__ import annotations - -from ctypes import Structure -from dataclasses import dataclass -import functools -from typing import Union - - -class SingleDispatchMethodExample: - @functools.singledispatchmethod - def fancymethod(self, str_or_int: Union[str, int]): - """A fancy method which is capable of handling either `str` or `int`. - - :param str_or_int: string or integer to handle - """ - raise NotImplementedError(f"{type(str_or_int)=} not implemented!") - - @fancymethod.register - def fancymethod_handle_str(self, str_to_handle: str): - """Fancy method handles a string. - - :param str_to_handle: string which will be handled - """ - print(f"{type(str_to_handle)} = '{str_to_handle}") - - @fancymethod.register - def _fancymethod_handle_int(self, int_to_handle: int): - """Fancy method handles int (not shown in doc). - - :param int_to_handle: int which will be handled - """ - print(f"{type(int_to_handle)} = '{int_to_handle:x}'") - - -@dataclass(init=False) -class DataclassStructure(Structure): - """DataclassStructure raises for `inspect.signature`.""" diff --git a/test/testdata/misc_py39.txt b/test/testdata/misc_py39.txt deleted file mode 100644 index dd2fb387..00000000 --- a/test/testdata/misc_py39.txt +++ /dev/null @@ -1,10 +0,0 @@ - - <@functools.singledispatchmethod method def fancymethod(self, str_or_int: Union[str, int]): ... # A fancy method which…> - <@fancymethod.register method def fancymethod_handle_str(self, str_to_handle: str): ... # Fancy method handles…> - > - <@dataclass(init=False) class misc_py39.DataclassStructure # DataclassStructure r… - - > -> \ No newline at end of file diff --git a/uv.lock b/uv.lock index de60aeaa..b5f425f1 100644 --- a/uv.lock +++ b/uv.lock @@ -1,18 +1,5 @@ version = 1 -requires-python = ">=3.8" - -[[package]] -name = "astunparse" -version = "1.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, - { name = "wheel" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872", size = 18290 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/03/13dde6512ad7b4557eb792fbcf0c653af6076b81e5941d36ec61f7ce6028/astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8", size = 12732 }, -] +requires-python = ">=3.9" [[package]] name = "attrs" @@ -52,81 +39,71 @@ wheels = [ [[package]] name = "coverage" -version = "7.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f7/08/7e37f82e4d1aead42a7443ff06a1e406aabf7302c4f00a546e4b320b994c/coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d", size = 798791 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/61/eb7ce5ed62bacf21beca4937a90fe32545c91a3c8a42a30c6616d48fc70d/coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16", size = 206690 }, - { url = "https://files.pythonhosted.org/packages/7d/73/041928e434442bd3afde5584bdc3f932fb4562b1597629f537387cec6f3d/coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36", size = 207127 }, - { url = "https://files.pythonhosted.org/packages/c7/c8/6ca52b5147828e45ad0242388477fdb90df2c6cbb9a441701a12b3c71bc8/coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02", size = 235654 }, - { url = "https://files.pythonhosted.org/packages/d5/da/9ac2b62557f4340270942011d6efeab9833648380109e897d48ab7c1035d/coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc", size = 233598 }, - { url = "https://files.pythonhosted.org/packages/53/23/9e2c114d0178abc42b6d8d5281f651a8e6519abfa0ef460a00a91f80879d/coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23", size = 234732 }, - { url = "https://files.pythonhosted.org/packages/0f/7e/a0230756fb133343a52716e8b855045f13342b70e48e8ad41d8a0d60ab98/coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34", size = 233816 }, - { url = "https://files.pythonhosted.org/packages/28/7c/3753c8b40d232b1e5eeaed798c875537cf3cb183fb5041017c1fdb7ec14e/coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c", size = 232325 }, - { url = "https://files.pythonhosted.org/packages/57/e3/818a2b2af5b7573b4b82cf3e9f137ab158c90ea750a8f053716a32f20f06/coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959", size = 233418 }, - { url = "https://files.pythonhosted.org/packages/c8/fb/4532b0b0cefb3f06d201648715e03b0feb822907edab3935112b61b885e2/coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232", size = 209343 }, - { url = "https://files.pythonhosted.org/packages/5a/25/af337cc7421eca1c187cc9c315f0a755d48e755d2853715bfe8c418a45fa/coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0", size = 210136 }, - { url = "https://files.pythonhosted.org/packages/ad/5f/67af7d60d7e8ce61a4e2ddcd1bd5fb787180c8d0ae0fbd073f903b3dd95d/coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93", size = 206796 }, - { url = "https://files.pythonhosted.org/packages/e1/0e/e52332389e057daa2e03be1fbfef25bb4d626b37d12ed42ae6281d0a274c/coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3", size = 207244 }, - { url = "https://files.pythonhosted.org/packages/aa/cd/766b45fb6e090f20f8927d9c7cb34237d41c73a939358bc881883fd3a40d/coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff", size = 239279 }, - { url = "https://files.pythonhosted.org/packages/70/6c/a9ccd6fe50ddaf13442a1e2dd519ca805cbe0f1fcd377fba6d8339b98ccb/coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d", size = 236859 }, - { url = "https://files.pythonhosted.org/packages/14/6f/8351b465febb4dbc1ca9929505202db909c5a635c6fdf33e089bbc3d7d85/coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6", size = 238549 }, - { url = "https://files.pythonhosted.org/packages/68/3c/289b81fa18ad72138e6d78c4c11a82b5378a312c0e467e2f6b495c260907/coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56", size = 237477 }, - { url = "https://files.pythonhosted.org/packages/ed/1c/aa1efa6459d822bd72c4abc0b9418cf268de3f60eeccd65dc4988553bd8d/coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234", size = 236134 }, - { url = "https://files.pythonhosted.org/packages/fb/c8/521c698f2d2796565fe9c789c2ee1ccdae610b3aa20b9b2ef980cc253640/coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133", size = 236910 }, - { url = "https://files.pythonhosted.org/packages/7d/30/033e663399ff17dca90d793ee8a2ea2890e7fdf085da58d82468b4220bf7/coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c", size = 209348 }, - { url = "https://files.pythonhosted.org/packages/20/05/0d1ccbb52727ccdadaa3ff37e4d2dc1cd4d47f0c3df9eb58d9ec8508ca88/coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6", size = 210230 }, - { url = "https://files.pythonhosted.org/packages/7e/d4/300fc921dff243cd518c7db3a4c614b7e4b2431b0d1145c1e274fd99bd70/coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778", size = 206983 }, - { url = "https://files.pythonhosted.org/packages/e1/ab/6bf00de5327ecb8db205f9ae596885417a31535eeda6e7b99463108782e1/coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391", size = 207221 }, - { url = "https://files.pythonhosted.org/packages/92/8f/2ead05e735022d1a7f3a0a683ac7f737de14850395a826192f0288703472/coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8", size = 240342 }, - { url = "https://files.pythonhosted.org/packages/0f/ef/94043e478201ffa85b8ae2d2c79b4081e5a1b73438aafafccf3e9bafb6b5/coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d", size = 237371 }, - { url = "https://files.pythonhosted.org/packages/1f/0f/c890339dd605f3ebc269543247bdd43b703cce6825b5ed42ff5f2d6122c7/coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca", size = 239455 }, - { url = "https://files.pythonhosted.org/packages/d1/04/7fd7b39ec7372a04efb0f70c70e35857a99b6a9188b5205efb4c77d6a57a/coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163", size = 238924 }, - { url = "https://files.pythonhosted.org/packages/ed/bf/73ce346a9d32a09cf369f14d2a06651329c984e106f5992c89579d25b27e/coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a", size = 237252 }, - { url = "https://files.pythonhosted.org/packages/86/74/1dc7a20969725e917b1e07fe71a955eb34bc606b938316bcc799f228374b/coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d", size = 238897 }, - { url = "https://files.pythonhosted.org/packages/b6/e9/d9cc3deceb361c491b81005c668578b0dfa51eed02cd081620e9a62f24ec/coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5", size = 209606 }, - { url = "https://files.pythonhosted.org/packages/47/c8/5a2e41922ea6740f77d555c4d47544acd7dc3f251fe14199c09c0f5958d3/coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb", size = 210373 }, - { url = "https://files.pythonhosted.org/packages/8c/f9/9aa4dfb751cb01c949c990d136a0f92027fbcc5781c6e921df1cb1563f20/coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106", size = 207007 }, - { url = "https://files.pythonhosted.org/packages/b9/67/e1413d5a8591622a46dd04ff80873b04c849268831ed5c304c16433e7e30/coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9", size = 207269 }, - { url = "https://files.pythonhosted.org/packages/14/5b/9dec847b305e44a5634d0fb8498d135ab1d88330482b74065fcec0622224/coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c", size = 239886 }, - { url = "https://files.pythonhosted.org/packages/7b/b7/35760a67c168e29f454928f51f970342d23cf75a2bb0323e0f07334c85f3/coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a", size = 237037 }, - { url = "https://files.pythonhosted.org/packages/f7/95/d2fd31f1d638df806cae59d7daea5abf2b15b5234016a5ebb502c2f3f7ee/coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060", size = 239038 }, - { url = "https://files.pythonhosted.org/packages/6e/bd/110689ff5752b67924efd5e2aedf5190cbbe245fc81b8dec1abaffba619d/coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862", size = 238690 }, - { url = "https://files.pythonhosted.org/packages/d3/a8/08d7b38e6ff8df52331c83130d0ab92d9c9a8b5462f9e99c9f051a4ae206/coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388", size = 236765 }, - { url = "https://files.pythonhosted.org/packages/d6/6a/9cf96839d3147d55ae713eb2d877f4d777e7dc5ba2bce227167d0118dfe8/coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155", size = 238611 }, - { url = "https://files.pythonhosted.org/packages/74/e4/7ff20d6a0b59eeaab40b3140a71e38cf52547ba21dbcf1d79c5a32bba61b/coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a", size = 209671 }, - { url = "https://files.pythonhosted.org/packages/35/59/1812f08a85b57c9fdb6d0b383d779e47b6f643bc278ed682859512517e83/coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129", size = 210368 }, - { url = "https://files.pythonhosted.org/packages/9c/15/08913be1c59d7562a3e39fce20661a98c0a3f59d5754312899acc6cb8a2d/coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e", size = 207758 }, - { url = "https://files.pythonhosted.org/packages/c4/ae/b5d58dff26cade02ada6ca612a76447acd69dccdbb3a478e9e088eb3d4b9/coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962", size = 208035 }, - { url = "https://files.pythonhosted.org/packages/b8/d7/62095e355ec0613b08dfb19206ce3033a0eedb6f4a67af5ed267a8800642/coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb", size = 250839 }, - { url = "https://files.pythonhosted.org/packages/7c/1e/c2967cb7991b112ba3766df0d9c21de46b476d103e32bb401b1b2adf3380/coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704", size = 246569 }, - { url = "https://files.pythonhosted.org/packages/8b/61/a7a6a55dd266007ed3b1df7a3386a0d760d014542d72f7c2c6938483b7bd/coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b", size = 248927 }, - { url = "https://files.pythonhosted.org/packages/c8/fa/13a6f56d72b429f56ef612eb3bc5ce1b75b7ee12864b3bd12526ab794847/coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f", size = 248401 }, - { url = "https://files.pythonhosted.org/packages/75/06/0429c652aa0fb761fc60e8c6b291338c9173c6aa0f4e40e1902345b42830/coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223", size = 246301 }, - { url = "https://files.pythonhosted.org/packages/52/76/1766bb8b803a88f93c3a2d07e30ffa359467810e5cbc68e375ebe6906efb/coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3", size = 247598 }, - { url = "https://files.pythonhosted.org/packages/66/8b/f54f8db2ae17188be9566e8166ac6df105c1c611e25da755738025708d54/coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f", size = 210307 }, - { url = "https://files.pythonhosted.org/packages/9f/b0/e0dca6da9170aefc07515cce067b97178cefafb512d00a87a1c717d2efd5/coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657", size = 211453 }, - { url = "https://files.pythonhosted.org/packages/81/d0/d9e3d554e38beea5a2e22178ddb16587dbcbe9a1ef3211f55733924bf7fa/coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0", size = 206674 }, - { url = "https://files.pythonhosted.org/packages/38/ea/cab2dc248d9f45b2b7f9f1f596a4d75a435cb364437c61b51d2eb33ceb0e/coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a", size = 207101 }, - { url = "https://files.pythonhosted.org/packages/ca/6f/f82f9a500c7c5722368978a5390c418d2a4d083ef955309a8748ecaa8920/coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b", size = 236554 }, - { url = "https://files.pythonhosted.org/packages/a6/94/d3055aa33d4e7e733d8fa309d9adf147b4b06a82c1346366fc15a2b1d5fa/coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3", size = 234440 }, - { url = "https://files.pythonhosted.org/packages/e4/6e/885bcd787d9dd674de4a7d8ec83faf729534c63d05d51d45d4fa168f7102/coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de", size = 235889 }, - { url = "https://files.pythonhosted.org/packages/f4/63/df50120a7744492710854860783d6819ff23e482dee15462c9a833cc428a/coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6", size = 235142 }, - { url = "https://files.pythonhosted.org/packages/3a/5d/9d0acfcded2b3e9ce1c7923ca52ccc00c78a74e112fc2aee661125b7843b/coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569", size = 233805 }, - { url = "https://files.pythonhosted.org/packages/c4/56/50abf070cb3cd9b1dd32f2c88f083aab561ecbffbcd783275cb51c17f11d/coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989", size = 234655 }, - { url = "https://files.pythonhosted.org/packages/25/ee/b4c246048b8485f85a2426ef4abab88e48c6e80c74e964bea5cd4cd4b115/coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7", size = 209296 }, - { url = "https://files.pythonhosted.org/packages/5c/1c/96cf86b70b69ea2b12924cdf7cabb8ad10e6130eab8d767a1099fbd2a44f/coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8", size = 210137 }, - { url = "https://files.pythonhosted.org/packages/19/d3/d54c5aa83268779d54c86deb39c1c4566e5d45c155369ca152765f8db413/coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255", size = 206688 }, - { url = "https://files.pythonhosted.org/packages/a5/fe/137d5dca72e4a258b1bc17bb04f2e0196898fe495843402ce826a7419fe3/coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8", size = 207120 }, - { url = "https://files.pythonhosted.org/packages/78/5b/a0a796983f3201ff5485323b225d7c8b74ce30c11f456017e23d8e8d1945/coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2", size = 235249 }, - { url = "https://files.pythonhosted.org/packages/4e/e1/76089d6a5ef9d68f018f65411fcdaaeb0141b504587b901d74e8587606ad/coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a", size = 233237 }, - { url = "https://files.pythonhosted.org/packages/9a/6f/eef79b779a540326fee9520e5542a8b428cc3bfa8b7c8f1022c1ee4fc66c/coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc", size = 234311 }, - { url = "https://files.pythonhosted.org/packages/75/e1/656d65fb126c29a494ef964005702b012f3498db1a30dd562958e85a4049/coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004", size = 233453 }, - { url = "https://files.pythonhosted.org/packages/68/6a/45f108f137941a4a1238c85f28fd9d048cc46b5466d6b8dda3aba1bb9d4f/coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb", size = 231958 }, - { url = "https://files.pythonhosted.org/packages/9b/e7/47b809099168b8b8c72ae311efc3e88c8d8a1162b3ba4b8da3cfcdb85743/coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36", size = 232938 }, - { url = "https://files.pythonhosted.org/packages/52/80/052222ba7058071f905435bad0ba392cc12006380731c37afaf3fe749b88/coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c", size = 209352 }, - { url = "https://files.pythonhosted.org/packages/b8/d8/1b92e0b3adcf384e98770a00ca095da1b5f7b483e6563ae4eb5e935d24a1/coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca", size = 210153 }, - { url = "https://files.pythonhosted.org/packages/a5/2b/0354ed096bca64dc8e32a7cbcae28b34cb5ad0b1fe2125d6d99583313ac0/coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df", size = 198926 }, +version = "7.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/60/e781e8302e7b28f21ce06e30af077f856aa2cb4cf2253287dae9a593d509/coverage-7.6.2.tar.gz", hash = "sha256:a5f81e68aa62bc0cfca04f7b19eaa8f9c826b53fc82ab9e2121976dc74f131f3", size = 797872 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/14/fb75c01b8427fb567c90ce920c90ed2bd314ad6960d54e8b377928607fd1/coverage-7.6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9df1950fb92d49970cce38100d7e7293c84ed3606eaa16ea0b6bc27175bb667", size = 206561 }, + { url = "https://files.pythonhosted.org/packages/93/b4/dcbf15f5583507415d0a78ce206e19d76699f1161e8b1ff6e1a21e9f9743/coverage-7.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:24500f4b0e03aab60ce575c85365beab64b44d4db837021e08339f61d1fbfe52", size = 206994 }, + { url = "https://files.pythonhosted.org/packages/47/ee/57d607e14479fb760721ea1784608ade532665934bd75f260b250dc6c877/coverage-7.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a663b180b6669c400b4630a24cc776f23a992d38ce7ae72ede2a397ce6b0f170", size = 235429 }, + { url = "https://files.pythonhosted.org/packages/76/e1/cd263fd750fdb115aab11a086e3584d99d46fca1f201b5493cc3972aea28/coverage-7.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfde025e2793a22efe8c21f807d276bd1d6a4bcc5ba6f19dbdfc4e7a12160909", size = 233329 }, + { url = "https://files.pythonhosted.org/packages/30/3b/a1623d50fcd6ba532cef0c3c1059eec2a08a311676ffa84dbe4beb2b8a33/coverage-7.6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:087932079c065d7b8ebadd3a0160656c55954144af6439886c8bcf78bbbcde7f", size = 234491 }, + { url = "https://files.pythonhosted.org/packages/b1/a6/8f3b3fd1f9b9400f3df38a7159362622546e2d951cc4984cf4617d0fd4d7/coverage-7.6.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9c6b0c1cafd96213a0327cf680acb39f70e452caf8e9a25aeb05316db9c07f89", size = 233589 }, + { url = "https://files.pythonhosted.org/packages/e3/40/37d64093f57b372435d87679956607ecab066d2aede76c6d215815a35fa3/coverage-7.6.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6e85830eed5b5263ffa0c62428e43cb844296f3b4461f09e4bdb0d44ec190bc2", size = 232050 }, + { url = "https://files.pythonhosted.org/packages/80/63/cbb76298b4f42bffe0030f1bc129a26a26255857c6beaa20419259ac07cc/coverage-7.6.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:62ab4231c01e156ece1b3a187c87173f31cbeee83a5e1f6dff17f288dca93345", size = 233180 }, + { url = "https://files.pythonhosted.org/packages/7a/6a/eafa81503e905d473b799920927b06aa6ffba12db035fc98735b55bc1741/coverage-7.6.2-cp310-cp310-win32.whl", hash = "sha256:7b80fbb0da3aebde102a37ef0138aeedff45997e22f8962e5f16ae1742852676", size = 209281 }, + { url = "https://files.pythonhosted.org/packages/19/d1/6b354c2cd52e0244944c097aaa71896869878df999f5f8e75fcd37eaf0f3/coverage-7.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:d20c3d1f31f14d6962a4e2f549c21d31e670b90f777ef4171be540fb7fb70f02", size = 210092 }, + { url = "https://files.pythonhosted.org/packages/a5/29/72da824da4182f518b054c21552b7ed2473a4e4c6ac616298209808a1a5c/coverage-7.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb21bac7783c1bf6f4bbe68b1e0ff0d20e7e7732cfb7995bc8d96e23aa90fc7b", size = 206667 }, + { url = "https://files.pythonhosted.org/packages/23/52/c15dcf3cf575256c7c0992e441cd41092a6c519d65abe1eb5567aab3d8e8/coverage-7.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a7b2e437fbd8fae5bc7716b9c7ff97aecc95f0b4d56e4ca08b3c8d8adcaadb84", size = 207111 }, + { url = "https://files.pythonhosted.org/packages/92/61/0d46dc26cf9f711b7b6078a54680665a5c2d62ec15991adb51e79236c699/coverage-7.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:536f77f2bf5797983652d1d55f1a7272a29afcc89e3ae51caa99b2db4e89d658", size = 239050 }, + { url = "https://files.pythonhosted.org/packages/3b/cb/9de71bade0343a0793f645f78a0e409248d85a2e5b4c4a9a1697c3b2e3d2/coverage-7.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f361296ca7054f0936b02525646b2731b32c8074ba6defab524b79b2b7eeac72", size = 236454 }, + { url = "https://files.pythonhosted.org/packages/f2/81/b0dc02487447c4a56cf2eed5c57735097f77aeff582277a35f1f70713a8d/coverage-7.6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7926d8d034e06b479797c199747dd774d5e86179f2ce44294423327a88d66ca7", size = 238320 }, + { url = "https://files.pythonhosted.org/packages/60/90/76815a76234050a87d0d1438a34820c1b857dd17353855c02bddabbedea8/coverage-7.6.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0bbae11c138585c89fb4e991faefb174a80112e1a7557d507aaa07675c62e66b", size = 237250 }, + { url = "https://files.pythonhosted.org/packages/f6/bd/760a599c08c882d97382855264586bba2604901029c3f6bec5710477ae81/coverage-7.6.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fcad7d5d2bbfeae1026b395036a8aa5abf67e8038ae7e6a25c7d0f88b10a8e6a", size = 235880 }, + { url = "https://files.pythonhosted.org/packages/83/de/41c3b90a779e473ae1ca325542aa5fa5464b7d2061288e9c22ba5f1deaa3/coverage-7.6.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f01e53575f27097d75d42de33b1b289c74b16891ce576d767ad8c48d17aeb5e0", size = 236653 }, + { url = "https://files.pythonhosted.org/packages/f4/90/61fe2721b9a9d9446e6c3ca33b6569e81d2a9a795ddfe786a66bf54035b7/coverage-7.6.2-cp311-cp311-win32.whl", hash = "sha256:7781f4f70c9b0b39e1b129b10c7d43a4e0c91f90c60435e6da8288efc2b73438", size = 209251 }, + { url = "https://files.pythonhosted.org/packages/96/87/d586f2b12b98288fc874d366cd8d5601f5a374cb75853647a3e4d02e4eb0/coverage-7.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:9bcd51eeca35a80e76dc5794a9dd7cb04b97f0e8af620d54711793bfc1fbba4b", size = 210083 }, + { url = "https://files.pythonhosted.org/packages/3f/ac/1cca5ed5cf512a71cdd6e3afb75a5ef196f7ef9772be9192dadaaa5cfc1c/coverage-7.6.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ebc94fadbd4a3f4215993326a6a00e47d79889391f5659bf310f55fe5d9f581c", size = 206856 }, + { url = "https://files.pythonhosted.org/packages/e4/58/030354d250f107a95e7aca24c7fd238709a3c7df3083cb206368798e637a/coverage-7.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9681516288e3dcf0aa7c26231178cc0be6cac9705cac06709f2353c5b406cfea", size = 207098 }, + { url = "https://files.pythonhosted.org/packages/03/df/5f2cd6048d44a54bb5f58f8ece4efbc5b686ed49f8bd8dbf41eb2a6a687f/coverage-7.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d9c5d13927d77af4fbe453953810db766f75401e764727e73a6ee4f82527b3e", size = 240109 }, + { url = "https://files.pythonhosted.org/packages/d3/18/7c53887643d921faa95529643b1b33e60ebba30ab835c8b5abd4e54d946b/coverage-7.6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b92f9ca04b3e719d69b02dc4a69debb795af84cb7afd09c5eb5d54b4a1ae2191", size = 237141 }, + { url = "https://files.pythonhosted.org/packages/d2/79/339bdf597d128374e6150c089b37436ba694585d769cabf6d5abd73a1365/coverage-7.6.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ff2ef83d6d0b527b5c9dad73819b24a2f76fdddcfd6c4e7a4d7e73ecb0656b4", size = 239210 }, + { url = "https://files.pythonhosted.org/packages/a9/62/7310c6de2bcb8a42f91094d41f0d4793ccda5a54621be3db76a156556cf2/coverage-7.6.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:47ccb6e99a3031ffbbd6e7cc041e70770b4fe405370c66a54dbf26a500ded80b", size = 238698 }, + { url = "https://files.pythonhosted.org/packages/f2/cb/ccb23c084d7f581f770dc7ed547dc5b50763334ad6ce26087a9ad0b5b26d/coverage-7.6.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a867d26f06bcd047ef716175b2696b315cb7571ccb951006d61ca80bbc356e9e", size = 237000 }, + { url = "https://files.pythonhosted.org/packages/e7/ab/58de9e2f94e4dc91b84d6e2705aa1e9d5447a2669fe113b4bbce6d2224a1/coverage-7.6.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cdfcf2e914e2ba653101157458afd0ad92a16731eeba9a611b5cbb3e7124e74b", size = 238666 }, + { url = "https://files.pythonhosted.org/packages/6c/dc/8be87b9ed5dbd4892b603f41088b41982768e928734e5bdce67d2ddd460a/coverage-7.6.2-cp312-cp312-win32.whl", hash = "sha256:f9035695dadfb397bee9eeaf1dc7fbeda483bf7664a7397a629846800ce6e276", size = 209489 }, + { url = "https://files.pythonhosted.org/packages/64/3a/3f44e55273a58bfb39b87ad76541bbb81d14de916b034fdb39971cc99ffe/coverage-7.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:5ed69befa9a9fc796fe015a7040c9398722d6b97df73a6b608e9e275fa0932b0", size = 210270 }, + { url = "https://files.pythonhosted.org/packages/ae/99/c9676a75b57438a19c5174dfcf39798b42728ad56650497286379dc0c2c3/coverage-7.6.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4eea60c79d36a8f39475b1af887663bc3ae4f31289cd216f514ce18d5938df40", size = 206888 }, + { url = "https://files.pythonhosted.org/packages/e0/de/820ecb42e892049c5f384430e98b35b899da3451dd0cdb2f867baf26abfa/coverage-7.6.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa68a6cdbe1bc6793a9dbfc38302c11599bbe1837392ae9b1d238b9ef3dafcf1", size = 207142 }, + { url = "https://files.pythonhosted.org/packages/dd/59/81fc7ad855d65eeb68fe9e7809cbb339946adb07be7ac32d3fc24dc17bd7/coverage-7.6.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec528ae69f0a139690fad6deac8a7d33629fa61ccce693fdd07ddf7e9931fba", size = 239658 }, + { url = "https://files.pythonhosted.org/packages/cd/a7/865de3eb9e78ffbf7afd92f86d2580b18edfb6f0481bd3c39b205e05a762/coverage-7.6.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed5ac02126f74d190fa2cc14a9eb2a5d9837d5863920fa472b02eb1595cdc925", size = 236802 }, + { url = "https://files.pythonhosted.org/packages/36/94/3b8f3abf88b7c451f97fd14c98f536bcee364e74250d928d57cc97c38ddd/coverage-7.6.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c0ea0d4db8a36b275cb6fb2437a3715697a4ba3cb7b918d3525cc75f726304", size = 238793 }, + { url = "https://files.pythonhosted.org/packages/d5/4b/57f95e41a10525002f524f3dbd577a3a9871d67998f8a8eb192fe697dc7b/coverage-7.6.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:35a51598f29b2a19e26d0908bd196f771a9b1c5d9a07bf20be0adf28f1ad4f77", size = 238455 }, + { url = "https://files.pythonhosted.org/packages/99/c9/9fbe5b841628e1d9030c8044844afef4f4735586289eb9237eeb5b97f0d7/coverage-7.6.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c9192925acc33e146864b8cf037e2ed32a91fdf7644ae875f5d46cd2ef086a5f", size = 236538 }, + { url = "https://files.pythonhosted.org/packages/43/0d/2200a0d447e30de94d48e4851c04d8dce37340815e7eda27457a7043c037/coverage-7.6.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf4eeecc9e10f5403ec06138978235af79c9a79af494eb6b1d60a50b49ed2869", size = 238383 }, + { url = "https://files.pythonhosted.org/packages/ec/8a/106c66faafb4a87002b698769d6de3c4db0b6c29a7aeb72de13b893c333e/coverage-7.6.2-cp313-cp313-win32.whl", hash = "sha256:e4ee15b267d2dad3e8759ca441ad450c334f3733304c55210c2a44516e8d5530", size = 209551 }, + { url = "https://files.pythonhosted.org/packages/c4/f5/1b39e2faaf5b9cc7eed568c444df5991ce7ff7138e2e735a6801be1bdadb/coverage-7.6.2-cp313-cp313-win_amd64.whl", hash = "sha256:c71965d1ced48bf97aab79fad56df82c566b4c498ffc09c2094605727c4b7e36", size = 210282 }, + { url = "https://files.pythonhosted.org/packages/79/a3/8dd4e6c09f5286094cd6c7edb115b3fbf06ad8304d45431722a4e3bc2508/coverage-7.6.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7571e8bbecc6ac066256f9de40365ff833553e2e0c0c004f4482facb131820ef", size = 207629 }, + { url = "https://files.pythonhosted.org/packages/8e/db/a9aa7009bbdc570a235e1ac781c0a83aa323cac6db8f8f13c2127b110978/coverage-7.6.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:078a87519057dacb5d77e333f740708ec2a8f768655f1db07f8dfd28d7a005f0", size = 207902 }, + { url = "https://files.pythonhosted.org/packages/54/08/d0962be62d4335599ca2ff3a48bb68c9bfb80df74e28ca689ff5f392087b/coverage-7.6.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5e92e3e84a8718d2de36cd8387459cba9a4508337b8c5f450ce42b87a9e760", size = 250617 }, + { url = "https://files.pythonhosted.org/packages/a5/a2/158570aff1dd88b661a6c11281cbb190e8696e77798b4b2e47c74bfb2f39/coverage-7.6.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebabdf1c76593a09ee18c1a06cd3022919861365219ea3aca0247ededf6facd6", size = 246334 }, + { url = "https://files.pythonhosted.org/packages/aa/fe/b00428cca325b6585ca77422e4f64d7d86a225b14664b98682ea501efb57/coverage-7.6.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12179eb0575b8900912711688e45474f04ab3934aaa7b624dea7b3c511ecc90f", size = 248692 }, + { url = "https://files.pythonhosted.org/packages/30/21/0a15fefc13039450bc45e7159f3add92489f004555eb7dab9c7ad4365dd0/coverage-7.6.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:39d3b964abfe1519b9d313ab28abf1d02faea26cd14b27f5283849bf59479ff5", size = 248188 }, + { url = "https://files.pythonhosted.org/packages/de/b8/5c093526046a8450a7a3d62ad09517cf38e638f6b3ee9433dd6a73360501/coverage-7.6.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:84c4315577f7cd511d6250ffd0f695c825efe729f4205c0340f7004eda51191f", size = 246072 }, + { url = "https://files.pythonhosted.org/packages/1e/8b/542b607d2cff56e5a90a6948f5a9040b693761d2be2d3c3bf88957b02361/coverage-7.6.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ff797320dcbff57caa6b2301c3913784a010e13b1f6cf4ab3f563f3c5e7919db", size = 247354 }, + { url = "https://files.pythonhosted.org/packages/95/82/2e9111aa5e59f42b332d387f64e3205c2263518d1e660154d0c9fc54390e/coverage-7.6.2-cp313-cp313t-win32.whl", hash = "sha256:2b636a301e53964550e2f3094484fa5a96e699db318d65398cfba438c5c92171", size = 210194 }, + { url = "https://files.pythonhosted.org/packages/9d/46/aabe4305cfc57cab4865f788ceceef746c422469720c32ed7a5b44e20f5e/coverage-7.6.2-cp313-cp313t-win_amd64.whl", hash = "sha256:d03a060ac1a08e10589c27d509bbdb35b65f2d7f3f8d81cf2fa199877c7bc58a", size = 211346 }, + { url = "https://files.pythonhosted.org/packages/6a/a9/85d14426f2449252f302f12c1c2a957a0a7ae7f35317ca3eaa365e1d6453/coverage-7.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c37faddc8acd826cfc5e2392531aba734b229741d3daec7f4c777a8f0d4993e5", size = 206555 }, + { url = "https://files.pythonhosted.org/packages/71/ff/bc4d5697a55edf1ff077c47df5637ff4518ba2760ada82c142aca79ea3fe/coverage-7.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab31fdd643f162c467cfe6a86e9cb5f1965b632e5e65c072d90854ff486d02cf", size = 206990 }, + { url = "https://files.pythonhosted.org/packages/34/65/1301721d09f5b58da9decfd62eb42eaef07fdb854dae904c3482e59cc309/coverage-7.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97df87e1a20deb75ac7d920c812e9326096aa00a9a4b6d07679b4f1f14b06c90", size = 235022 }, + { url = "https://files.pythonhosted.org/packages/9f/ec/7a2f361485226e6934a8f5d1f6eef7e8b7faf228fb6107476fa584700a32/coverage-7.6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:343056c5e0737487a5291f5691f4dfeb25b3e3c8699b4d36b92bb0e586219d14", size = 232943 }, + { url = "https://files.pythonhosted.org/packages/2d/60/b23e61a372bef93c9d13d87efa2ea3a870130be498e5b81740616b6e6200/coverage-7.6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4ef1c56b47b6b9024b939d503ab487231df1f722065a48f4fc61832130b90e", size = 234074 }, + { url = "https://files.pythonhosted.org/packages/89/ec/4a56d9b310b2413987682ae3a858e30ea11d6f6d05366ecab4d73385fbef/coverage-7.6.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fca4a92c8a7a73dee6946471bce6d1443d94155694b893b79e19ca2a540d86e", size = 233226 }, + { url = "https://files.pythonhosted.org/packages/8c/77/31ecc00c525dea216d59090b807e9d1268a07d289f9dbe0cfc6795e33b68/coverage-7.6.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69f251804e052fc46d29d0e7348cdc5fcbfc4861dc4a1ebedef7e78d241ad39e", size = 231706 }, + { url = "https://files.pythonhosted.org/packages/7b/02/3f84bdd286a9db9b816cb5ca0adfa001575f8e496ba39da26f0ded2f0849/coverage-7.6.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ea055b3ea046c0f66217af65bc193bbbeca1c8661dc5fd42698db5795d2627", size = 232697 }, + { url = "https://files.pythonhosted.org/packages/7c/34/158b73026cbc2d2b3a56fbc71d955c0eea52953e49de97f820b3060f62b9/coverage-7.6.2-cp39-cp39-win32.whl", hash = "sha256:6c2ba1e0c24d8fae8f2cf0aeb2fc0a2a7f69b6d20bd8d3749fd6b36ecef5edf0", size = 209278 }, + { url = "https://files.pythonhosted.org/packages/d1/05/4326e4ea071176f0bddc30b5a3555b48fa96c45a8f6a09b6c2e4041dfcc0/coverage-7.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:2186369a654a15628e9c1c9921409a6b3eda833e4b91f3ca2a7d9f77abb4987c", size = 210057 }, + { url = "https://files.pythonhosted.org/packages/9d/5c/88f15b7614ba9ed1dbb1c0bd2c9073184b96c2bead0b93199487b44d04b3/coverage-7.6.2-pp39.pp310-none-any.whl", hash = "sha256:667952739daafe9616db19fbedbdb87917eee253ac4f31d70c7587f7ab531b4e", size = 198799 }, ] [package.optional-dependencies] @@ -163,28 +140,16 @@ wheels = [ [[package]] name = "hypothesis" -version = "6.113.0" +version = "6.114.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "sortedcontainers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/32/6513cd7256f38c19a6c8a1d5ce9792bcd35c7f11651989994731f0e97672/hypothesis-6.113.0.tar.gz", hash = "sha256:5556ac66fdf72a4ccd5d237810f7cf6bdcd00534a4485015ef881af26e20f7c7", size = 408897 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/03/1348ccb88bd3df1f1848afdea74c4c1dd42e75d1be9d022123d8f3cb180a/hypothesis-6.114.1.tar.gz", hash = "sha256:15ea6e4bb297276351ada18f172c60049c117a91040154ea620c632cc4c53e88", size = 407177 } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/fa/4acb477b86a94571958bd337eae5baf334d21b8c98a04b594d0dad381ba8/hypothesis-6.113.0-py3-none-any.whl", hash = "sha256:d539180eb2bb71ed28a23dfe94e67c851f9b09f3ccc4125afad43f17e32e2bad", size = 469790 }, -] - -[[package]] -name = "importlib-resources" -version = "6.4.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp", marker = "python_full_version < '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115 }, + { url = "https://files.pythonhosted.org/packages/40/f8/1bbde9c5853d711979c27f9b6a16365aedf8dfefba5e2dc1c38ab81c9bc7/hypothesis-6.114.1-py3-none-any.whl", hash = "sha256:117f2d065d3f2ec5b2b37c89150c2350be7feb43dfb9ccc30f30d5293b34e607", size = 468274 }, ] [[package]] @@ -210,60 +175,70 @@ wheels = [ [[package]] name = "markupsafe" -version = "2.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/54/ad5eb37bf9d51800010a74e4665425831a9db4e7c4e0fde4352e391e808e/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", size = 18206 }, - { url = "https://files.pythonhosted.org/packages/6a/4a/a4d49415e600bacae038c67f9fecc1d5433b9d3c71a4de6f33537b89654c/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", size = 14079 }, - { url = "https://files.pythonhosted.org/packages/0a/7b/85681ae3c33c385b10ac0f8dd025c30af83c78cec1c37a6aa3b55e67f5ec/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", size = 26620 }, - { url = "https://files.pythonhosted.org/packages/7c/52/2b1b570f6b8b803cef5ac28fdf78c0da318916c7d2fe9402a84d591b394c/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", size = 25818 }, - { url = "https://files.pythonhosted.org/packages/29/fe/a36ba8c7ca55621620b2d7c585313efd10729e63ef81e4e61f52330da781/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", size = 25493 }, - { url = "https://files.pythonhosted.org/packages/60/ae/9c60231cdfda003434e8bd27282b1f4e197ad5a710c14bee8bea8a9ca4f0/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", size = 30630 }, - { url = "https://files.pythonhosted.org/packages/65/dc/1510be4d179869f5dafe071aecb3f1f41b45d37c02329dfba01ff59e5ac5/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", size = 29745 }, - { url = "https://files.pythonhosted.org/packages/30/39/8d845dd7d0b0613d86e0ef89549bfb5f61ed781f59af45fc96496e897f3a/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", size = 30021 }, - { url = "https://files.pythonhosted.org/packages/c7/5c/356a6f62e4f3c5fbf2602b4771376af22a3b16efa74eb8716fb4e328e01e/MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", size = 16659 }, - { url = "https://files.pythonhosted.org/packages/69/48/acbf292615c65f0604a0c6fc402ce6d8c991276e16c80c46a8f758fbd30c/MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", size = 17213 }, - { url = "https://files.pythonhosted.org/packages/11/e7/291e55127bb2ae67c64d66cef01432b5933859dfb7d6949daa721b89d0b3/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", size = 18219 }, - { url = "https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", size = 14098 }, - { url = "https://files.pythonhosted.org/packages/1c/cf/35fe557e53709e93feb65575c93927942087e9b97213eabc3fe9d5b25a55/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", size = 29014 }, - { url = "https://files.pythonhosted.org/packages/97/18/c30da5e7a0e7f4603abfc6780574131221d9148f323752c2755d48abad30/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", size = 28220 }, - { url = "https://files.pythonhosted.org/packages/0c/40/2e73e7d532d030b1e41180807a80d564eda53babaf04d65e15c1cf897e40/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", size = 27756 }, - { url = "https://files.pythonhosted.org/packages/18/46/5dca760547e8c59c5311b332f70605d24c99d1303dd9a6e1fc3ed0d73561/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", size = 33988 }, - { url = "https://files.pythonhosted.org/packages/6d/c5/27febe918ac36397919cd4a67d5579cbbfa8da027fa1238af6285bb368ea/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", size = 32718 }, - { url = "https://files.pythonhosted.org/packages/f8/81/56e567126a2c2bc2684d6391332e357589a96a76cb9f8e5052d85cb0ead8/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", size = 33317 }, - { url = "https://files.pythonhosted.org/packages/00/0b/23f4b2470accb53285c613a3ab9ec19dc944eaf53592cb6d9e2af8aa24cc/MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", size = 16670 }, - { url = "https://files.pythonhosted.org/packages/b7/a2/c78a06a9ec6d04b3445a949615c4c7ed86a0b2eb68e44e7541b9d57067cc/MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", size = 17224 }, - { url = "https://files.pythonhosted.org/packages/53/bd/583bf3e4c8d6a321938c13f49d44024dbe5ed63e0a7ba127e454a66da974/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", size = 18215 }, - { url = "https://files.pythonhosted.org/packages/48/d6/e7cd795fc710292c3af3a06d80868ce4b02bfbbf370b7cee11d282815a2a/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", size = 14069 }, - { url = "https://files.pythonhosted.org/packages/51/b5/5d8ec796e2a08fc814a2c7d2584b55f889a55cf17dd1a90f2beb70744e5c/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", size = 29452 }, - { url = "https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", size = 28462 }, - { url = "https://files.pythonhosted.org/packages/2d/75/fd6cb2e68780f72d47e6671840ca517bda5ef663d30ada7616b0462ad1e3/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", size = 27869 }, - { url = "https://files.pythonhosted.org/packages/b0/81/147c477391c2750e8fc7705829f7351cf1cd3be64406edcf900dc633feb2/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", size = 33906 }, - { url = "https://files.pythonhosted.org/packages/8b/ff/9a52b71839d7a256b563e85d11050e307121000dcebc97df120176b3ad93/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", size = 32296 }, - { url = "https://files.pythonhosted.org/packages/88/07/2dc76aa51b481eb96a4c3198894f38b480490e834479611a4053fbf08623/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", size = 33038 }, - { url = "https://files.pythonhosted.org/packages/96/0c/620c1fb3661858c0e37eb3cbffd8c6f732a67cd97296f725789679801b31/MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", size = 16572 }, - { url = "https://files.pythonhosted.org/packages/3f/14/c3554d512d5f9100a95e737502f4a2323a1959f6d0d01e0d0997b35f7b10/MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", size = 17127 }, - { url = "https://files.pythonhosted.org/packages/f8/ff/2c942a82c35a49df5de3a630ce0a8456ac2969691b230e530ac12314364c/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", size = 18192 }, - { url = "https://files.pythonhosted.org/packages/4f/14/6f294b9c4f969d0c801a4615e221c1e084722ea6114ab2114189c5b8cbe0/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", size = 14072 }, - { url = "https://files.pythonhosted.org/packages/81/d4/fd74714ed30a1dedd0b82427c02fa4deec64f173831ec716da11c51a50aa/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", size = 26928 }, - { url = "https://files.pythonhosted.org/packages/c7/bd/50319665ce81bb10e90d1cf76f9e1aa269ea6f7fa30ab4521f14d122a3df/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", size = 26106 }, - { url = "https://files.pythonhosted.org/packages/4c/6f/f2b0f675635b05f6afd5ea03c094557bdb8622fa8e673387444fe8d8e787/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68", size = 25781 }, - { url = "https://files.pythonhosted.org/packages/51/e0/393467cf899b34a9d3678e78961c2c8cdf49fb902a959ba54ece01273fb1/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", size = 30518 }, - { url = "https://files.pythonhosted.org/packages/f6/02/5437e2ad33047290dafced9df741d9efc3e716b75583bbd73a9984f1b6f7/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", size = 29669 }, - { url = "https://files.pythonhosted.org/packages/0e/7d/968284145ffd9d726183ed6237c77938c021abacde4e073020f920e060b2/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", size = 29933 }, - { url = "https://files.pythonhosted.org/packages/bf/f3/ecb00fc8ab02b7beae8699f34db9357ae49d9f21d4d3de6f305f34fa949e/MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", size = 16656 }, - { url = "https://files.pythonhosted.org/packages/92/21/357205f03514a49b293e214ac39de01fadd0970a6e05e4bf1ddd0ffd0881/MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", size = 17206 }, - { url = "https://files.pythonhosted.org/packages/0f/31/780bb297db036ba7b7bbede5e1d7f1e14d704ad4beb3ce53fb495d22bc62/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", size = 18193 }, - { url = "https://files.pythonhosted.org/packages/6c/77/d77701bbef72892affe060cdacb7a2ed7fd68dae3b477a8642f15ad3b132/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", size = 14073 }, - { url = "https://files.pythonhosted.org/packages/d9/a7/1e558b4f78454c8a3a0199292d96159eb4d091f983bc35ef258314fe7269/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", size = 26486 }, - { url = "https://files.pythonhosted.org/packages/5f/5a/360da85076688755ea0cceb92472923086993e86b5613bbae9fbc14136b0/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", size = 25685 }, - { url = "https://files.pythonhosted.org/packages/6a/18/ae5a258e3401f9b8312f92b028c54d7026a97ec3ab20bfaddbdfa7d8cce8/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", size = 25338 }, - { url = "https://files.pythonhosted.org/packages/0b/cc/48206bd61c5b9d0129f4d75243b156929b04c94c09041321456fd06a876d/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", size = 30439 }, - { url = "https://files.pythonhosted.org/packages/d1/06/a41c112ab9ffdeeb5f77bc3e331fdadf97fa65e52e44ba31880f4e7f983c/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", size = 29531 }, - { url = "https://files.pythonhosted.org/packages/02/8c/ab9a463301a50dab04d5472e998acbd4080597abc048166ded5c7aa768c8/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", size = 29823 }, - { url = "https://files.pythonhosted.org/packages/bc/29/9bc18da763496b055d8e98ce476c8e718dcfd78157e17f555ce6dd7d0895/MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", size = 16658 }, - { url = "https://files.pythonhosted.org/packages/f6/f8/4da07de16f10551ca1f640c92b5f316f9394088b183c6a57183df6de5ae4/MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", size = 17211 }, +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/d2/38ff920762f2247c3af5cbbbbc40756f575d9692d381d7c520f45deb9b8f/markupsafe-3.0.1.tar.gz", hash = "sha256:3e683ee4f5d0fa2dde4db77ed8dd8a876686e3fc417655c2ece9a90576905344", size = 20249 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/a2/0482d1a157f5f10f72fc4fe8c3be9ffa3651c1f7a12b60a3ab71b2635e13/MarkupSafe-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:db842712984e91707437461930e6011e60b39136c7331e971952bb30465bc1a1", size = 14391 }, + { url = "https://files.pythonhosted.org/packages/3b/25/5ea6500d200fd2dc3ea25c765f69dea0a1a8d42ec80a38cd896ad47cb85d/MarkupSafe-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ffb4a8e7d46ed96ae48805746755fadd0909fea2306f93d5d8233ba23dda12a", size = 12414 }, + { url = "https://files.pythonhosted.org/packages/92/41/cf5397dd6bb18895d148aa402cafa71018f2ffc5f6e9d6e90d85b523c741/MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67c519635a4f64e495c50e3107d9b4075aec33634272b5db1cde839e07367589", size = 21787 }, + { url = "https://files.pythonhosted.org/packages/2e/0d/5d91ef2b4f30afa87483a3a7c108c777d144b1c42d7113459296a8a2bfa0/MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48488d999ed50ba8d38c581d67e496f955821dc183883550a6fbc7f1aefdc170", size = 20954 }, + { url = "https://files.pythonhosted.org/packages/f6/de/12a4110c2c7c7b502fe0e6f911367726dbb7a37e03e207495135d064bb48/MarkupSafe-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f31ae06f1328595d762c9a2bf29dafd8621c7d3adc130cbb46278079758779ca", size = 21086 }, + { url = "https://files.pythonhosted.org/packages/96/55/59389babc6e8ed206849a9958de9da7c23f3a75d294f46e99624fa38fb79/MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80fcbf3add8790caddfab6764bde258b5d09aefbe9169c183f88a7410f0f6dea", size = 21685 }, + { url = "https://files.pythonhosted.org/packages/3d/cb/cbad5f093e12cd79ceea3e2957ba5bd4c2706810f333d0a3422ab2aef358/MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3341c043c37d78cc5ae6e3e305e988532b072329639007fd408a476642a89fd6", size = 21348 }, + { url = "https://files.pythonhosted.org/packages/8e/70/e19c4f39d68a52406012ee118667b57efb0bbe6e950be21187cd7a1b4b80/MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cb53e2a99df28eee3b5f4fea166020d3ef9116fdc5764bc5117486e6d1211b25", size = 21098 }, + { url = "https://files.pythonhosted.org/packages/30/95/ca809c01624428d427e9b3a4500f9068eca941e0c520328954ce84ad966a/MarkupSafe-3.0.1-cp310-cp310-win32.whl", hash = "sha256:db15ce28e1e127a0013dfb8ac243a8e392db8c61eae113337536edb28bdc1f97", size = 15075 }, + { url = "https://files.pythonhosted.org/packages/23/41/decb99ab07793656821a86f827a394700ce28402ebb02dc6d003210d9859/MarkupSafe-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:4ffaaac913c3f7345579db4f33b0020db693f302ca5137f106060316761beea9", size = 15535 }, + { url = "https://files.pythonhosted.org/packages/ce/af/2f5d88a7fc7226bd34c6e15f6061246ad8cff979da9f19d11bdd0addd8e2/MarkupSafe-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:26627785a54a947f6d7336ce5963569b5d75614619e75193bdb4e06e21d447ad", size = 14387 }, + { url = "https://files.pythonhosted.org/packages/8d/43/fd588ef5d192308c5e05974bac659bf6ae29c202b7ea2c4194bcf01eacee/MarkupSafe-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b954093679d5750495725ea6f88409946d69cfb25ea7b4c846eef5044194f583", size = 12410 }, + { url = "https://files.pythonhosted.org/packages/58/26/78f161d602fb03804118905e5faacafc0ec592bbad71aaee62537529813a/MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:973a371a55ce9ed333a3a0f8e0bcfae9e0d637711534bcb11e130af2ab9334e7", size = 24006 }, + { url = "https://files.pythonhosted.org/packages/ae/1d/7d5ec8bcfd9c2db235d720fa51d818b7e2abc45250ce5f53dd6cb60409ca/MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:244dbe463d5fb6d7ce161301a03a6fe744dac9072328ba9fc82289238582697b", size = 23303 }, + { url = "https://files.pythonhosted.org/packages/26/ce/703ca3b03a709e3bd1fbffa407789e56b9fa664456538092617dd665fc1d/MarkupSafe-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d98e66a24497637dd31ccab090b34392dddb1f2f811c4b4cd80c230205c074a3", size = 23205 }, + { url = "https://files.pythonhosted.org/packages/88/60/40be0493decabc2344b12d3a709fd6ccdd15a5ebaee1e8d878315d107ad3/MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad91738f14eb8da0ff82f2acd0098b6257621410dcbd4df20aaa5b4233d75a50", size = 23684 }, + { url = "https://files.pythonhosted.org/packages/6d/f8/8fd52a66e8f62a9add62b4a0b5a3ab4092027437f2ef027f812d94ae91cf/MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7044312a928a66a4c2a22644147bc61a199c1709712069a344a3fb5cfcf16915", size = 23472 }, + { url = "https://files.pythonhosted.org/packages/d4/0b/998b17b9e06ea45ad1646fea586f1b83d02dfdb14d47dd2fd81fba5a08c9/MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a4792d3b3a6dfafefdf8e937f14906a51bd27025a36f4b188728a73382231d91", size = 23388 }, + { url = "https://files.pythonhosted.org/packages/5a/57/b6b7aa23b2e26d68d601718f8ce3161fbdaf967b31752c7dec52bef828c9/MarkupSafe-3.0.1-cp311-cp311-win32.whl", hash = "sha256:fa7d686ed9883f3d664d39d5a8e74d3c5f63e603c2e3ff0abcba23eac6542635", size = 15106 }, + { url = "https://files.pythonhosted.org/packages/fc/b5/20cb1d714596acb553c810009c8004c809823947da63e13c19a7decfcb6c/MarkupSafe-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ba25a71ebf05b9bb0e2ae99f8bc08a07ee8e98c612175087112656ca0f5c8bf", size = 15542 }, + { url = "https://files.pythonhosted.org/packages/45/6d/72ed58d42a12bd9fc288dbff6dd8d03ea973a232ac0538d7f88d105b5251/MarkupSafe-3.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8ae369e84466aa70f3154ee23c1451fda10a8ee1b63923ce76667e3077f2b0c4", size = 14322 }, + { url = "https://files.pythonhosted.org/packages/86/f5/241238f89cdd6461ac9f521af8389f9a48fab97e4f315c69e9e0d52bc919/MarkupSafe-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40f1e10d51c92859765522cbd79c5c8989f40f0419614bcdc5015e7b6bf97fc5", size = 12380 }, + { url = "https://files.pythonhosted.org/packages/27/94/79751928bca5841416d8ca02e22198672e021d5c7120338e2a6e3771f8fc/MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a4cb365cb49b750bdb60b846b0c0bc49ed62e59a76635095a179d440540c346", size = 24099 }, + { url = "https://files.pythonhosted.org/packages/10/6e/1b8070bbfc467429c7983cd5ffd4ec57e1d501763d974c7caaa0a9a79f4c/MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee3941769bd2522fe39222206f6dd97ae83c442a94c90f2b7a25d847d40f4729", size = 23249 }, + { url = "https://files.pythonhosted.org/packages/66/50/9389ae6cdff78d7481a2a2641830b5eb1d1f62177550e73355a810a889c9/MarkupSafe-3.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62fada2c942702ef8952754abfc1a9f7658a4d5460fabe95ac7ec2cbe0d02abc", size = 23149 }, + { url = "https://files.pythonhosted.org/packages/16/02/5dddff5366fde47133186efb847fa88bddef85914bbe623e25cfeccb3517/MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c2d64fdba74ad16138300815cfdc6ab2f4647e23ced81f59e940d7d4a1469d9", size = 23864 }, + { url = "https://files.pythonhosted.org/packages/f3/f1/700ee6655561cfda986e03f7afc309e3738918551afa7dedd99225586227/MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fb532dd9900381d2e8f48172ddc5a59db4c445a11b9fab40b3b786da40d3b56b", size = 23440 }, + { url = "https://files.pythonhosted.org/packages/fb/3e/d26623ac7f16709823b4c80e0b4a1c9196eeb46182a6c1d47b5e0c8434f4/MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0f84af7e813784feb4d5e4ff7db633aba6c8ca64a833f61d8e4eade234ef0c38", size = 23610 }, + { url = "https://files.pythonhosted.org/packages/51/04/1f8da0810c39cb9fcff96b6baed62272c97065e9cf11471965a161439e20/MarkupSafe-3.0.1-cp312-cp312-win32.whl", hash = "sha256:cbf445eb5628981a80f54087f9acdbf84f9b7d862756110d172993b9a5ae81aa", size = 15113 }, + { url = "https://files.pythonhosted.org/packages/eb/24/a36dc37365bdd358b1e583cc40475593e36ab02cb7da6b3d0b9c05b0da7a/MarkupSafe-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:a10860e00ded1dd0a65b83e717af28845bb7bd16d8ace40fe5531491de76b79f", size = 15611 }, + { url = "https://files.pythonhosted.org/packages/b1/60/4572a8aa1beccbc24b133aa0670781a5d2697f4fa3fecf0a87b46383174b/MarkupSafe-3.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e81c52638315ff4ac1b533d427f50bc0afc746deb949210bc85f05d4f15fd772", size = 14325 }, + { url = "https://files.pythonhosted.org/packages/38/42/849915b99a765ec104bfd07ee933de5fc9c58fa9570efa7db81717f495d8/MarkupSafe-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:312387403cd40699ab91d50735ea7a507b788091c416dd007eac54434aee51da", size = 12373 }, + { url = "https://files.pythonhosted.org/packages/ef/82/4caaebd963c6d60b28e4445f38841d24f8b49bc10594a09956c9d73bfc08/MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ae99f31f47d849758a687102afdd05bd3d3ff7dbab0a8f1587981b58a76152a", size = 24059 }, + { url = "https://files.pythonhosted.org/packages/20/15/6b319be2f79fcfa3173f479d69f4e950b5c9b642db4f22cf73ae5ade745f/MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c97ff7fedf56d86bae92fa0a646ce1a0ec7509a7578e1ed238731ba13aabcd1c", size = 23211 }, + { url = "https://files.pythonhosted.org/packages/9d/3f/8963bdf4962feb2154475acb7dc350f04217b5e0be7763a39b432291e229/MarkupSafe-3.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7420ceda262dbb4b8d839a4ec63d61c261e4e77677ed7c66c99f4e7cb5030dd", size = 23095 }, + { url = "https://files.pythonhosted.org/packages/af/93/f770bc70953d32de0c6ce4bcb76271512123a1ead91aaef625a020c5bfaf/MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45d42d132cff577c92bfba536aefcfea7e26efb975bd455db4e6602f5c9f45e7", size = 23901 }, + { url = "https://files.pythonhosted.org/packages/11/92/1e5a33aa0a1190161238628fb68eb1bc5e67b56a5c89f0636328704b463a/MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c8817557d0de9349109acb38b9dd570b03cc5014e8aabf1cbddc6e81005becd", size = 23463 }, + { url = "https://files.pythonhosted.org/packages/0d/fe/657efdfe385d2a3a701f2c4fcc9577c63c438aeefdd642d0d956c4ecd225/MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a54c43d3ec4cf2a39f4387ad044221c66a376e58c0d0e971d47c475ba79c6b5", size = 23569 }, + { url = "https://files.pythonhosted.org/packages/cf/24/587dea40304046ace60f846cedaebc0d33d967a3ce46c11395a10e7a78ba/MarkupSafe-3.0.1-cp313-cp313-win32.whl", hash = "sha256:c91b394f7601438ff79a4b93d16be92f216adb57d813a78be4446fe0f6bc2d8c", size = 15117 }, + { url = "https://files.pythonhosted.org/packages/32/8f/d8961d633f26a011b4fe054f3bfff52f673423b8c431553268741dfb089e/MarkupSafe-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:fe32482b37b4b00c7a52a07211b479653b7fe4f22b2e481b9a9b099d8a430f2f", size = 15613 }, + { url = "https://files.pythonhosted.org/packages/9e/93/d6367ffbcd0c5c371370767f768eaa32af60bc411245b8517e383c6a2b12/MarkupSafe-3.0.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:17b2aea42a7280db02ac644db1d634ad47dcc96faf38ab304fe26ba2680d359a", size = 14563 }, + { url = "https://files.pythonhosted.org/packages/4a/37/f813c3835747dec08fe19ac9b9eced01fdf93a4b3e626521675dc7f423a9/MarkupSafe-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:852dc840f6d7c985603e60b5deaae1d89c56cb038b577f6b5b8c808c97580f1d", size = 12505 }, + { url = "https://files.pythonhosted.org/packages/72/bf/800b4d1580298ca91ccd6c95915bbd147142dad1b8cf91d57b93b28670dd/MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0778de17cff1acaeccc3ff30cd99a3fd5c50fc58ad3d6c0e0c4c58092b859396", size = 25358 }, + { url = "https://files.pythonhosted.org/packages/fd/78/26e209abc8f0a379f031f0acc151231974e5b153d7eda5759d17d8f329f2/MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:800100d45176652ded796134277ecb13640c1a537cad3b8b53da45aa96330453", size = 23797 }, + { url = "https://files.pythonhosted.org/packages/09/e1/918496a9390891756efee818880e71c1bbaf587f4dc8ede3f3852357310a/MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d06b24c686a34c86c8c1fba923181eae6b10565e4d80bdd7bc1c8e2f11247aa4", size = 23743 }, + { url = "https://files.pythonhosted.org/packages/cd/c6/26f576cd58d6c2decd9045e4e3f3c5dbc01ea6cb710916e7bbb6ebd95b6b/MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:33d1c36b90e570ba7785dacd1faaf091203d9942bc036118fab8110a401eb1a8", size = 25076 }, + { url = "https://files.pythonhosted.org/packages/b5/fa/10b24fb3b0e15fe5389dc88ecc6226ede08297e0ba7130610efbe0cdfb27/MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:beeebf760a9c1f4c07ef6a53465e8cfa776ea6a2021eda0d0417ec41043fe984", size = 24037 }, + { url = "https://files.pythonhosted.org/packages/c8/81/4b3f5537d9f6cc4f5c80d6c4b78af9a5247fd37b5aba95807b2cbc336b9a/MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bbde71a705f8e9e4c3e9e33db69341d040c827c7afa6789b14c6e16776074f5a", size = 24015 }, + { url = "https://files.pythonhosted.org/packages/5f/07/8e8dcecd53216c5e01a51e84c32a2bce166690ed19c184774b38cd41921d/MarkupSafe-3.0.1-cp313-cp313t-win32.whl", hash = "sha256:82b5dba6eb1bcc29cc305a18a3c5365d2af06ee71b123216416f7e20d2a84e5b", size = 15213 }, + { url = "https://files.pythonhosted.org/packages/0d/87/4c364e0f109eea2402079abecbe33fef4f347b551a11423d1f4e187ea497/MarkupSafe-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:730d86af59e0e43ce277bb83970530dd223bf7f2a838e086b50affa6ec5f9295", size = 15741 }, + { url = "https://files.pythonhosted.org/packages/6f/4f/420741fb39fa3d40396fb1731a1ca78e6f9fbb225dcf15e5185b1fa954bc/MarkupSafe-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4935dd7883f1d50e2ffecca0aa33dc1946a94c8f3fdafb8df5c330e48f71b132", size = 14376 }, + { url = "https://files.pythonhosted.org/packages/91/71/0c4782b9ce7fb68b140b94e1eb9d2b6292990bda91dc3d3b5a34e8bd41f3/MarkupSafe-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e9393357f19954248b00bed7c56f29a25c930593a77630c719653d51e7669c2a", size = 12408 }, + { url = "https://files.pythonhosted.org/packages/3e/3c/cbf30bf7ac1da2e013e3d338e1582db85fc3b27bf9f8863137423ad4b0b6/MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40621d60d0e58aa573b68ac5e2d6b20d44392878e0bfc159012a5787c4e35bc8", size = 21654 }, + { url = "https://files.pythonhosted.org/packages/0b/28/229e797b8727427845b79cbd58019f598e478f974730fa705fa23904b18e/MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f94190df587738280d544971500b9cafc9b950d32efcb1fba9ac10d84e6aa4e6", size = 20817 }, + { url = "https://files.pythonhosted.org/packages/e8/b4/1121f3b2614de93cbb3deec7f44df283df44c2258ea9368bb1302b4a0b45/MarkupSafe-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6a387d61fe41cdf7ea95b38e9af11cfb1a63499af2759444b99185c4ab33f5b", size = 20956 }, + { url = "https://files.pythonhosted.org/packages/a8/8b/b4d57bafca01c8b1e1fbb037660869fa4f6725983c4105a02bd1242f0066/MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8ad4ad1429cd4f315f32ef263c1342166695fad76c100c5d979c45d5570ed58b", size = 21548 }, + { url = "https://files.pythonhosted.org/packages/83/87/04806f7096ba1d4f1b8c61f35c1d7c0b507c6a3cf7ed495393bf97eb5af7/MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e24bfe89c6ac4c31792793ad9f861b8f6dc4546ac6dc8f1c9083c7c4f2b335cd", size = 21222 }, + { url = "https://files.pythonhosted.org/packages/e9/96/1ecb2bb5ee7298e628cff95833beba7da6a774df7fe890a6d2f0ec460590/MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2a4b34a8d14649315c4bc26bbfa352663eb51d146e35eef231dd739d54a5430a", size = 20952 }, + { url = "https://files.pythonhosted.org/packages/fd/70/b937a12df7bbff14e1ca3385929f464c7af2ca72c8183c95dad26c3bf754/MarkupSafe-3.0.1-cp39-cp39-win32.whl", hash = "sha256:242d6860f1fd9191aef5fae22b51c5c19767f93fb9ead4d21924e0bcb17619d8", size = 15075 }, + { url = "https://files.pythonhosted.org/packages/e3/c4/262fac0328552da9a75a7786d7c0f43adaba4afb5f295979d33fa0f324c7/MarkupSafe-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:93e8248d650e7e9d49e8251f883eed60ecbc0e8ffd6349e18550925e31bd029b", size = 15527 }, ] [[package]] @@ -292,11 +267,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f3/3c/350a9da895f8a7e87ade0028b962be0252d152e0c2fbaafa6f0658b4d0d4/mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987", size = 12506856 }, { url = "https://files.pythonhosted.org/packages/b6/49/ee5adf6a49ff13f4202d949544d3d08abb0ea1f3e7f2a6d5b4c10ba0360a/mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca", size = 12952066 }, { url = "https://files.pythonhosted.org/packages/27/c0/b19d709a42b24004d720db37446a42abadf844d5c46a2c442e2a074d70d9/mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70", size = 9664000 }, - { url = "https://files.pythonhosted.org/packages/42/ad/5a8567700410f8aa7c755b0ebd4cacff22468cbc5517588773d65075c0cb/mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b", size = 10876550 }, - { url = "https://files.pythonhosted.org/packages/1b/bc/9fc16ea7a27ceb93e123d300f1cfe27a6dd1eac9a8beea4f4d401e737e9d/mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86", size = 10068086 }, - { url = "https://files.pythonhosted.org/packages/cd/8f/a1e460f1288405a13352dad16b24aba6dce4f850fc76510c540faa96eda3/mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce", size = 12459214 }, - { url = "https://files.pythonhosted.org/packages/c7/74/746b31aef7cc7512dab8bdc2311ef88d63fadc1c453a09c8cab7e57e59bf/mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1", size = 12962942 }, - { url = "https://files.pythonhosted.org/packages/28/a4/7fae712240b640d75bb859294ad4776b9960b3216ccb7fa747f578e6c632/mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b", size = 9545616 }, { url = "https://files.pythonhosted.org/packages/16/64/bb5ed751487e2bea0dfaa6f640a7e3bb88083648f522e766d5ef4a76f578/mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6", size = 10937294 }, { url = "https://files.pythonhosted.org/packages/a9/a3/67a0069abed93c3bf3b0bebb8857e2979a02828a4a3fd82f107f8f1143e8/mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70", size = 10107707 }, { url = "https://files.pythonhosted.org/packages/2f/4d/0379daf4258b454b1f9ed589a9dabd072c17f97496daea7b72fdacf7c248/mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d", size = 12498367 }, @@ -328,7 +298,6 @@ name = "pdoc" version = "14.7.0" source = { editable = "." } dependencies = [ - { name = "astunparse", marker = "python_full_version < '3.9'" }, { name = "jinja2" }, { name = "markupsafe" }, { name = "pygments" }, @@ -350,7 +319,6 @@ dev = [ [package.metadata] requires-dist = [ - { name = "astunparse", marker = "python_full_version < '3.9'" }, { name = "jinja2", specifier = ">=2.11.0" }, { name = "markupsafe", specifier = ">=1.1.1" }, { name = "pygments", specifier = ">=2.12.0" }, @@ -488,15 +456,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3e/14/fd026bc74ded05e2351681545a5f626e78ef831f8edce064d61acd2e6ec7/ruff-0.6.9-py3-none-win_arm64.whl", hash = "sha256:a9641e31476d601f83cd602608739a0840e348bda93fec9f1ee816f8b6798b93", size = 8679879 }, ] -[[package]] -name = "six" -version = "1.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, -] - [[package]] name = "sortedcontainers" version = "2.4.0" @@ -542,7 +501,6 @@ name = "tox-uv" version = "1.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "importlib-resources", marker = "python_full_version < '3.9'" }, { name = "packaging" }, { name = "tox" }, { name = "typing-extensions", marker = "python_full_version < '3.10'" }, @@ -631,21 +589,3 @@ sdist = { url = "https://files.pythonhosted.org/packages/3f/40/abc5a766da6b0b245 wheels = [ { url = "https://files.pythonhosted.org/packages/59/90/57b8ac0c8a231545adc7698c64c5a36fa7cd8e376c691b9bde877269f2eb/virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2", size = 5999862 }, ] - -[[package]] -name = "wheel" -version = "0.44.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/a0/95e9e962c5fd9da11c1e28aa4c0d8210ab277b1ada951d2aee336b505813/wheel-0.44.0.tar.gz", hash = "sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49", size = 100733 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/d1/9babe2ccaecff775992753d8686970b1e2755d21c8a63be73aba7a4e7d77/wheel-0.44.0-py3-none-any.whl", hash = "sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f", size = 67059 }, -] - -[[package]] -name = "zipp" -version = "3.20.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200 }, -]