⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.144
Server IP:
157.245.143.252
Server:
Linux www 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 14 13:19:59 UTC 2024 x86_64
Server Software:
nginx/1.26.0
PHP Version:
8.3.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
lib
/
python3
/
dist-packages
/
typeguard
/
View File Name :
_union_transformer.py
""" Transforms lazily evaluated PEP 604 unions into typing.Unions, for compatibility with Python versions older than 3.10. """ from __future__ import annotations from ast import ( BinOp, BitOr, Index, Load, Name, NodeTransformer, Subscript, fix_missing_locations, parse, ) from ast import Tuple as ASTTuple from types import CodeType from typing import Any, Dict, FrozenSet, List, Set, Tuple, Union type_substitutions = { "dict": Dict, "list": List, "tuple": Tuple, "set": Set, "frozenset": FrozenSet, "Union": Union, } class UnionTransformer(NodeTransformer): def __init__(self, union_name: Name | None = None): self.union_name = union_name or Name(id="Union", ctx=Load()) def visit_BinOp(self, node: BinOp) -> Any: self.generic_visit(node) if isinstance(node.op, BitOr): return Subscript( value=self.union_name, slice=Index( ASTTuple(elts=[node.left, node.right], ctx=Load()), ctx=Load() ), ctx=Load(), ) return node def compile_type_hint(hint: str) -> CodeType: parsed = parse(hint, "
", "eval") UnionTransformer().visit(parsed) fix_missing_locations(parsed) return compile(parsed, "
", "eval", flags=0)