metaflow 2.15.5__py2.py3-none-any.whl → 2.15.7__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- metaflow/_vendor/typeguard/_checkers.py +259 -95
- metaflow/_vendor/typeguard/_config.py +4 -4
- metaflow/_vendor/typeguard/_decorators.py +8 -12
- metaflow/_vendor/typeguard/_functions.py +33 -32
- metaflow/_vendor/typeguard/_pytest_plugin.py +40 -13
- metaflow/_vendor/typeguard/_suppression.py +3 -5
- metaflow/_vendor/typeguard/_transformer.py +84 -48
- metaflow/_vendor/typeguard/_union_transformer.py +1 -0
- metaflow/_vendor/typeguard/_utils.py +13 -9
- metaflow/_vendor/typing_extensions.py +1088 -500
- metaflow/_vendor/v3_7/__init__.py +1 -0
- metaflow/_vendor/v3_7/importlib_metadata/__init__.py +1063 -0
- metaflow/_vendor/v3_7/importlib_metadata/_adapters.py +68 -0
- metaflow/_vendor/v3_7/importlib_metadata/_collections.py +30 -0
- metaflow/_vendor/v3_7/importlib_metadata/_compat.py +71 -0
- metaflow/_vendor/v3_7/importlib_metadata/_functools.py +104 -0
- metaflow/_vendor/v3_7/importlib_metadata/_itertools.py +73 -0
- metaflow/_vendor/v3_7/importlib_metadata/_meta.py +48 -0
- metaflow/_vendor/v3_7/importlib_metadata/_text.py +99 -0
- metaflow/_vendor/v3_7/importlib_metadata/py.typed +0 -0
- metaflow/_vendor/v3_7/typeguard/__init__.py +48 -0
- metaflow/_vendor/v3_7/typeguard/_checkers.py +906 -0
- metaflow/_vendor/v3_7/typeguard/_config.py +108 -0
- metaflow/_vendor/v3_7/typeguard/_decorators.py +237 -0
- metaflow/_vendor/v3_7/typeguard/_exceptions.py +42 -0
- metaflow/_vendor/v3_7/typeguard/_functions.py +310 -0
- metaflow/_vendor/v3_7/typeguard/_importhook.py +213 -0
- metaflow/_vendor/v3_7/typeguard/_memo.py +48 -0
- metaflow/_vendor/v3_7/typeguard/_pytest_plugin.py +100 -0
- metaflow/_vendor/v3_7/typeguard/_suppression.py +88 -0
- metaflow/_vendor/v3_7/typeguard/_transformer.py +1207 -0
- metaflow/_vendor/v3_7/typeguard/_union_transformer.py +54 -0
- metaflow/_vendor/v3_7/typeguard/_utils.py +169 -0
- metaflow/_vendor/v3_7/typeguard/py.typed +0 -0
- metaflow/_vendor/v3_7/typing_extensions.py +3072 -0
- metaflow/_vendor/v3_7/zipp.py +329 -0
- metaflow/cmd/develop/stubs.py +1 -1
- metaflow/extension_support/__init__.py +1 -1
- metaflow/plugins/argo/argo_workflows.py +34 -11
- metaflow/plugins/argo/argo_workflows_deployer_objects.py +7 -6
- metaflow/plugins/pypi/utils.py +4 -0
- metaflow/runner/click_api.py +7 -2
- metaflow/vendor.py +1 -0
- metaflow/version.py +1 -1
- {metaflow-2.15.5.data → metaflow-2.15.7.data}/data/share/metaflow/devtools/Makefile +2 -2
- {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/METADATA +4 -3
- {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/RECORD +53 -27
- {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/WHEEL +1 -1
- {metaflow-2.15.5.data → metaflow-2.15.7.data}/data/share/metaflow/devtools/Tiltfile +0 -0
- {metaflow-2.15.5.data → metaflow-2.15.7.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
- {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/entry_points.txt +0 -0
- {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info/licenses}/LICENSE +0 -0
- {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
"""
|
2
|
+
Transforms lazily evaluated PEP 604 unions into typing.Unions, for compatibility with
|
3
|
+
Python versions older than 3.10.
|
4
|
+
"""
|
5
|
+
from __future__ import annotations
|
6
|
+
|
7
|
+
from ast import (
|
8
|
+
BinOp,
|
9
|
+
BitOr,
|
10
|
+
Index,
|
11
|
+
Load,
|
12
|
+
Name,
|
13
|
+
NodeTransformer,
|
14
|
+
Subscript,
|
15
|
+
fix_missing_locations,
|
16
|
+
parse,
|
17
|
+
)
|
18
|
+
from ast import Tuple as ASTTuple
|
19
|
+
from types import CodeType
|
20
|
+
from typing import Any, Dict, FrozenSet, List, Set, Tuple, Union
|
21
|
+
|
22
|
+
type_substitutions = {
|
23
|
+
"dict": Dict,
|
24
|
+
"list": List,
|
25
|
+
"tuple": Tuple,
|
26
|
+
"set": Set,
|
27
|
+
"frozenset": FrozenSet,
|
28
|
+
"Union": Union,
|
29
|
+
}
|
30
|
+
|
31
|
+
|
32
|
+
class UnionTransformer(NodeTransformer):
|
33
|
+
def __init__(self, union_name: Name | None = None):
|
34
|
+
self.union_name = union_name or Name(id="Union", ctx=Load())
|
35
|
+
|
36
|
+
def visit_BinOp(self, node: BinOp) -> Any:
|
37
|
+
self.generic_visit(node)
|
38
|
+
if isinstance(node.op, BitOr):
|
39
|
+
return Subscript(
|
40
|
+
value=self.union_name,
|
41
|
+
slice=Index(
|
42
|
+
ASTTuple(elts=[node.left, node.right], ctx=Load()), ctx=Load()
|
43
|
+
),
|
44
|
+
ctx=Load(),
|
45
|
+
)
|
46
|
+
|
47
|
+
return node
|
48
|
+
|
49
|
+
|
50
|
+
def compile_type_hint(hint: str) -> CodeType:
|
51
|
+
parsed = parse(hint, "<string>", "eval")
|
52
|
+
UnionTransformer().visit(parsed)
|
53
|
+
fix_missing_locations(parsed)
|
54
|
+
return compile(parsed, "<string>", "eval", flags=0)
|
@@ -0,0 +1,169 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import inspect
|
4
|
+
import sys
|
5
|
+
from importlib import import_module
|
6
|
+
from inspect import currentframe
|
7
|
+
from types import CodeType, FrameType, FunctionType
|
8
|
+
from typing import TYPE_CHECKING, Any, Callable, ForwardRef, Union, cast
|
9
|
+
from weakref import WeakValueDictionary
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
from ._memo import TypeCheckMemo
|
13
|
+
|
14
|
+
if sys.version_info >= (3, 10):
|
15
|
+
from typing import get_args, get_origin
|
16
|
+
|
17
|
+
def evaluate_forwardref(forwardref: ForwardRef, memo: TypeCheckMemo) -> Any:
|
18
|
+
return forwardref._evaluate(memo.globals, memo.locals, frozenset())
|
19
|
+
|
20
|
+
else:
|
21
|
+
from metaflow._vendor.v3_7.typing_extensions import get_args, get_origin
|
22
|
+
|
23
|
+
evaluate_extra_args: tuple[frozenset[Any], ...] = (
|
24
|
+
(frozenset(),) if sys.version_info >= (3, 9) else ()
|
25
|
+
)
|
26
|
+
|
27
|
+
def evaluate_forwardref(forwardref: ForwardRef, memo: TypeCheckMemo) -> Any:
|
28
|
+
from ._union_transformer import compile_type_hint, type_substitutions
|
29
|
+
|
30
|
+
if not forwardref.__forward_evaluated__:
|
31
|
+
forwardref.__forward_code__ = compile_type_hint(forwardref.__forward_arg__)
|
32
|
+
|
33
|
+
try:
|
34
|
+
return forwardref._evaluate(memo.globals, memo.locals, *evaluate_extra_args)
|
35
|
+
except NameError:
|
36
|
+
if sys.version_info < (3, 10):
|
37
|
+
# Try again, with the type substitutions (list -> List etc.) in place
|
38
|
+
new_globals = memo.globals.copy()
|
39
|
+
new_globals.setdefault("Union", Union)
|
40
|
+
if sys.version_info < (3, 9):
|
41
|
+
new_globals.update(type_substitutions)
|
42
|
+
|
43
|
+
return forwardref._evaluate(
|
44
|
+
new_globals, memo.locals or new_globals, *evaluate_extra_args
|
45
|
+
)
|
46
|
+
|
47
|
+
raise
|
48
|
+
|
49
|
+
|
50
|
+
if sys.version_info >= (3, 8):
|
51
|
+
from typing import final
|
52
|
+
else:
|
53
|
+
from metaflow._vendor.v3_7.typing_extensions import final
|
54
|
+
|
55
|
+
|
56
|
+
_functions_map: WeakValueDictionary[CodeType, FunctionType] = WeakValueDictionary()
|
57
|
+
|
58
|
+
|
59
|
+
def get_type_name(type_: Any) -> str:
|
60
|
+
name: str
|
61
|
+
for attrname in "__name__", "_name", "__forward_arg__":
|
62
|
+
candidate = getattr(type_, attrname, None)
|
63
|
+
if isinstance(candidate, str):
|
64
|
+
name = candidate
|
65
|
+
break
|
66
|
+
else:
|
67
|
+
origin = get_origin(type_)
|
68
|
+
candidate = getattr(origin, "_name", None)
|
69
|
+
if candidate is None:
|
70
|
+
candidate = type_.__class__.__name__.strip("_")
|
71
|
+
|
72
|
+
if isinstance(candidate, str):
|
73
|
+
name = candidate
|
74
|
+
else:
|
75
|
+
return "(unknown)"
|
76
|
+
|
77
|
+
args = get_args(type_)
|
78
|
+
if args:
|
79
|
+
if name == "Literal":
|
80
|
+
formatted_args = ", ".join(repr(arg) for arg in args)
|
81
|
+
else:
|
82
|
+
formatted_args = ", ".join(get_type_name(arg) for arg in args)
|
83
|
+
|
84
|
+
name += f"[{formatted_args}]"
|
85
|
+
|
86
|
+
module = getattr(type_, "__module__", None)
|
87
|
+
if module and module not in (None, "typing", "typing_extensions", "builtins"):
|
88
|
+
name = module + "." + name
|
89
|
+
|
90
|
+
return name
|
91
|
+
|
92
|
+
|
93
|
+
def qualified_name(obj: Any, *, add_class_prefix: bool = False) -> str:
|
94
|
+
"""
|
95
|
+
Return the qualified name (e.g. package.module.Type) for the given object.
|
96
|
+
|
97
|
+
Builtins and types from the :mod:`typing` package get special treatment by having
|
98
|
+
the module name stripped from the generated name.
|
99
|
+
|
100
|
+
"""
|
101
|
+
if obj is None:
|
102
|
+
return "None"
|
103
|
+
elif inspect.isclass(obj):
|
104
|
+
prefix = "class " if add_class_prefix else ""
|
105
|
+
type_ = obj
|
106
|
+
else:
|
107
|
+
prefix = ""
|
108
|
+
type_ = type(obj)
|
109
|
+
|
110
|
+
module = type_.__module__
|
111
|
+
qualname = type_.__qualname__
|
112
|
+
name = qualname if module in ("typing", "builtins") else f"{module}.{qualname}"
|
113
|
+
return prefix + name
|
114
|
+
|
115
|
+
|
116
|
+
def function_name(func: Callable[..., Any]) -> str:
|
117
|
+
"""
|
118
|
+
Return the qualified name of the given function.
|
119
|
+
|
120
|
+
Builtins and types from the :mod:`typing` package get special treatment by having
|
121
|
+
the module name stripped from the generated name.
|
122
|
+
|
123
|
+
"""
|
124
|
+
# For partial functions and objects with __call__ defined, __qualname__ does not
|
125
|
+
# exist
|
126
|
+
module = getattr(func, "__module__", "")
|
127
|
+
qualname = (module + ".") if module not in ("builtins", "") else ""
|
128
|
+
return qualname + getattr(func, "__qualname__", repr(func))
|
129
|
+
|
130
|
+
|
131
|
+
def resolve_reference(reference: str) -> Any:
|
132
|
+
modulename, varname = reference.partition(":")[::2]
|
133
|
+
if not modulename or not varname:
|
134
|
+
raise ValueError(f"{reference!r} is not a module:varname reference")
|
135
|
+
|
136
|
+
obj = import_module(modulename)
|
137
|
+
for attr in varname.split("."):
|
138
|
+
obj = getattr(obj, attr)
|
139
|
+
|
140
|
+
return obj
|
141
|
+
|
142
|
+
|
143
|
+
def is_method_of(obj: object, cls: type) -> bool:
|
144
|
+
return (
|
145
|
+
inspect.isfunction(obj)
|
146
|
+
and obj.__module__ == cls.__module__
|
147
|
+
and obj.__qualname__.startswith(cls.__qualname__ + ".")
|
148
|
+
)
|
149
|
+
|
150
|
+
|
151
|
+
def get_stacklevel() -> int:
|
152
|
+
level = 1
|
153
|
+
frame = cast(FrameType, currentframe()).f_back
|
154
|
+
while frame and frame.f_globals.get("__name__", "").startswith("typeguard."):
|
155
|
+
level += 1
|
156
|
+
frame = frame.f_back
|
157
|
+
|
158
|
+
return level
|
159
|
+
|
160
|
+
|
161
|
+
@final
|
162
|
+
class Unset:
|
163
|
+
__slots__ = ()
|
164
|
+
|
165
|
+
def __repr__(self) -> str:
|
166
|
+
return "<unset>"
|
167
|
+
|
168
|
+
|
169
|
+
unset = Unset()
|
File without changes
|