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.
Files changed (53) hide show
  1. metaflow/_vendor/typeguard/_checkers.py +259 -95
  2. metaflow/_vendor/typeguard/_config.py +4 -4
  3. metaflow/_vendor/typeguard/_decorators.py +8 -12
  4. metaflow/_vendor/typeguard/_functions.py +33 -32
  5. metaflow/_vendor/typeguard/_pytest_plugin.py +40 -13
  6. metaflow/_vendor/typeguard/_suppression.py +3 -5
  7. metaflow/_vendor/typeguard/_transformer.py +84 -48
  8. metaflow/_vendor/typeguard/_union_transformer.py +1 -0
  9. metaflow/_vendor/typeguard/_utils.py +13 -9
  10. metaflow/_vendor/typing_extensions.py +1088 -500
  11. metaflow/_vendor/v3_7/__init__.py +1 -0
  12. metaflow/_vendor/v3_7/importlib_metadata/__init__.py +1063 -0
  13. metaflow/_vendor/v3_7/importlib_metadata/_adapters.py +68 -0
  14. metaflow/_vendor/v3_7/importlib_metadata/_collections.py +30 -0
  15. metaflow/_vendor/v3_7/importlib_metadata/_compat.py +71 -0
  16. metaflow/_vendor/v3_7/importlib_metadata/_functools.py +104 -0
  17. metaflow/_vendor/v3_7/importlib_metadata/_itertools.py +73 -0
  18. metaflow/_vendor/v3_7/importlib_metadata/_meta.py +48 -0
  19. metaflow/_vendor/v3_7/importlib_metadata/_text.py +99 -0
  20. metaflow/_vendor/v3_7/importlib_metadata/py.typed +0 -0
  21. metaflow/_vendor/v3_7/typeguard/__init__.py +48 -0
  22. metaflow/_vendor/v3_7/typeguard/_checkers.py +906 -0
  23. metaflow/_vendor/v3_7/typeguard/_config.py +108 -0
  24. metaflow/_vendor/v3_7/typeguard/_decorators.py +237 -0
  25. metaflow/_vendor/v3_7/typeguard/_exceptions.py +42 -0
  26. metaflow/_vendor/v3_7/typeguard/_functions.py +310 -0
  27. metaflow/_vendor/v3_7/typeguard/_importhook.py +213 -0
  28. metaflow/_vendor/v3_7/typeguard/_memo.py +48 -0
  29. metaflow/_vendor/v3_7/typeguard/_pytest_plugin.py +100 -0
  30. metaflow/_vendor/v3_7/typeguard/_suppression.py +88 -0
  31. metaflow/_vendor/v3_7/typeguard/_transformer.py +1207 -0
  32. metaflow/_vendor/v3_7/typeguard/_union_transformer.py +54 -0
  33. metaflow/_vendor/v3_7/typeguard/_utils.py +169 -0
  34. metaflow/_vendor/v3_7/typeguard/py.typed +0 -0
  35. metaflow/_vendor/v3_7/typing_extensions.py +3072 -0
  36. metaflow/_vendor/v3_7/zipp.py +329 -0
  37. metaflow/cmd/develop/stubs.py +1 -1
  38. metaflow/extension_support/__init__.py +1 -1
  39. metaflow/plugins/argo/argo_workflows.py +34 -11
  40. metaflow/plugins/argo/argo_workflows_deployer_objects.py +7 -6
  41. metaflow/plugins/pypi/utils.py +4 -0
  42. metaflow/runner/click_api.py +7 -2
  43. metaflow/vendor.py +1 -0
  44. metaflow/version.py +1 -1
  45. {metaflow-2.15.5.data → metaflow-2.15.7.data}/data/share/metaflow/devtools/Makefile +2 -2
  46. {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/METADATA +4 -3
  47. {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/RECORD +53 -27
  48. {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/WHEEL +1 -1
  49. {metaflow-2.15.5.data → metaflow-2.15.7.data}/data/share/metaflow/devtools/Tiltfile +0 -0
  50. {metaflow-2.15.5.data → metaflow-2.15.7.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
  51. {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info}/entry_points.txt +0 -0
  52. {metaflow-2.15.5.dist-info → metaflow-2.15.7.dist-info/licenses}/LICENSE +0 -0
  53. {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