OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python37
/
lib
/
python3.7
/
site-packages
/
setuptools
/
_vendor
/
packaging
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/16/2024 08:49:51 PM
rwxr-xr-x
📄
__about__.py
736 bytes
11/13/2023 09:35:13 PM
rw-r--r--
📄
__init__.py
562 bytes
11/13/2023 09:35:13 PM
rw-r--r--
📁
__pycache__
-
02/16/2024 08:49:51 PM
rwxr-xr-x
📄
_compat.py
1.1 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
_structures.py
1.97 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
_typing.py
1.77 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
markers.py
9.29 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
requirements.py
4.8 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
specifiers.py
31.2 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
tags.py
23.5 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
utils.py
1.77 KB
11/13/2023 09:35:13 PM
rw-r--r--
📄
version.py
15.11 KB
11/13/2023 09:35:13 PM
rw-r--r--
Editing: _typing.py
Close
"""For neatly implementing static typing in packaging. `mypy` - the static type analysis tool we use - uses the `typing` module, which provides core functionality fundamental to mypy's functioning. Generally, `typing` would be imported at runtime and used in that fashion - it acts as a no-op at runtime and does not have any run-time overhead by design. As it turns out, `typing` is not vendorable - it uses separate sources for Python 2/Python 3. Thus, this codebase can not expect it to be present. To work around this, mypy allows the typing import to be behind a False-y optional to prevent it from running at runtime and type-comments can be used to remove the need for the types to be accessible directly during runtime. This module provides the False-y guard in a nicely named fashion so that a curious maintainer can reach here to read this. In packaging, all static-typing related imports should be guarded as follows: from packaging._typing import TYPE_CHECKING if TYPE_CHECKING: from typing import ... Ref: https://github.com/python/mypy/issues/3216 """ __all__ = ["TYPE_CHECKING", "cast"] # The TYPE_CHECKING constant defined by the typing module is False at runtime # but True while type checking. if False: # pragma: no cover from typing import TYPE_CHECKING else: TYPE_CHECKING = False # typing's cast syntax requires calling typing.cast at runtime, but we don't # want to import typing at runtime. Here, we inform the type checkers that # we're importing `typing.cast` as `cast` and re-implement typing.cast's # runtime behavior in a block that is ignored by type checkers. if TYPE_CHECKING: # pragma: no cover # not executed at runtime from typing import cast else: # executed at runtime def cast(type_, value): # noqa return value