outerbounds 0.3.55rc3__py3-none-any.whl → 0.3.133__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- outerbounds/_vendor/PyYAML.LICENSE +20 -0
- outerbounds/_vendor/__init__.py +0 -0
- outerbounds/_vendor/_yaml/__init__.py +34 -0
- outerbounds/_vendor/click/__init__.py +73 -0
- outerbounds/_vendor/click/_compat.py +626 -0
- outerbounds/_vendor/click/_termui_impl.py +717 -0
- outerbounds/_vendor/click/_textwrap.py +49 -0
- outerbounds/_vendor/click/_winconsole.py +279 -0
- outerbounds/_vendor/click/core.py +2998 -0
- outerbounds/_vendor/click/decorators.py +497 -0
- outerbounds/_vendor/click/exceptions.py +287 -0
- outerbounds/_vendor/click/formatting.py +301 -0
- outerbounds/_vendor/click/globals.py +68 -0
- outerbounds/_vendor/click/parser.py +529 -0
- outerbounds/_vendor/click/py.typed +0 -0
- outerbounds/_vendor/click/shell_completion.py +580 -0
- outerbounds/_vendor/click/termui.py +787 -0
- outerbounds/_vendor/click/testing.py +479 -0
- outerbounds/_vendor/click/types.py +1073 -0
- outerbounds/_vendor/click/utils.py +580 -0
- outerbounds/_vendor/click.LICENSE +28 -0
- outerbounds/_vendor/vendor_any.txt +2 -0
- outerbounds/_vendor/yaml/__init__.py +471 -0
- outerbounds/_vendor/yaml/_yaml.cpython-311-darwin.so +0 -0
- outerbounds/_vendor/yaml/composer.py +146 -0
- outerbounds/_vendor/yaml/constructor.py +862 -0
- outerbounds/_vendor/yaml/cyaml.py +177 -0
- outerbounds/_vendor/yaml/dumper.py +138 -0
- outerbounds/_vendor/yaml/emitter.py +1239 -0
- outerbounds/_vendor/yaml/error.py +94 -0
- outerbounds/_vendor/yaml/events.py +104 -0
- outerbounds/_vendor/yaml/loader.py +62 -0
- outerbounds/_vendor/yaml/nodes.py +51 -0
- outerbounds/_vendor/yaml/parser.py +629 -0
- outerbounds/_vendor/yaml/reader.py +208 -0
- outerbounds/_vendor/yaml/representer.py +378 -0
- outerbounds/_vendor/yaml/resolver.py +245 -0
- outerbounds/_vendor/yaml/scanner.py +1555 -0
- outerbounds/_vendor/yaml/serializer.py +127 -0
- outerbounds/_vendor/yaml/tokens.py +129 -0
- outerbounds/command_groups/apps_cli.py +450 -0
- outerbounds/command_groups/cli.py +9 -5
- outerbounds/command_groups/local_setup_cli.py +249 -33
- outerbounds/command_groups/perimeters_cli.py +231 -33
- outerbounds/command_groups/tutorials_cli.py +111 -0
- outerbounds/command_groups/workstations_cli.py +88 -15
- outerbounds/utils/kubeconfig.py +2 -2
- outerbounds/utils/metaflowconfig.py +111 -21
- outerbounds/utils/schema.py +8 -2
- outerbounds/utils/utils.py +19 -0
- outerbounds/vendor.py +159 -0
- {outerbounds-0.3.55rc3.dist-info → outerbounds-0.3.133.dist-info}/METADATA +17 -6
- outerbounds-0.3.133.dist-info/RECORD +59 -0
- {outerbounds-0.3.55rc3.dist-info → outerbounds-0.3.133.dist-info}/WHEEL +1 -1
- outerbounds-0.3.55rc3.dist-info/RECORD +0 -15
- {outerbounds-0.3.55rc3.dist-info → outerbounds-0.3.133.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
__all__ = ["Mark", "YAMLError", "MarkedYAMLError"]
|
2
|
+
|
3
|
+
|
4
|
+
class Mark:
|
5
|
+
def __init__(self, name, index, line, column, buffer, pointer):
|
6
|
+
self.name = name
|
7
|
+
self.index = index
|
8
|
+
self.line = line
|
9
|
+
self.column = column
|
10
|
+
self.buffer = buffer
|
11
|
+
self.pointer = pointer
|
12
|
+
|
13
|
+
def get_snippet(self, indent=4, max_length=75):
|
14
|
+
if self.buffer is None:
|
15
|
+
return None
|
16
|
+
head = ""
|
17
|
+
start = self.pointer
|
18
|
+
while start > 0 and self.buffer[start - 1] not in "\0\r\n\x85\u2028\u2029":
|
19
|
+
start -= 1
|
20
|
+
if self.pointer - start > max_length / 2 - 1:
|
21
|
+
head = " ... "
|
22
|
+
start += 5
|
23
|
+
break
|
24
|
+
tail = ""
|
25
|
+
end = self.pointer
|
26
|
+
while (
|
27
|
+
end < len(self.buffer) and self.buffer[end] not in "\0\r\n\x85\u2028\u2029"
|
28
|
+
):
|
29
|
+
end += 1
|
30
|
+
if end - self.pointer > max_length / 2 - 1:
|
31
|
+
tail = " ... "
|
32
|
+
end -= 5
|
33
|
+
break
|
34
|
+
snippet = self.buffer[start:end]
|
35
|
+
return (
|
36
|
+
" " * indent
|
37
|
+
+ head
|
38
|
+
+ snippet
|
39
|
+
+ tail
|
40
|
+
+ "\n"
|
41
|
+
+ " " * (indent + self.pointer - start + len(head))
|
42
|
+
+ "^"
|
43
|
+
)
|
44
|
+
|
45
|
+
def __str__(self):
|
46
|
+
snippet = self.get_snippet()
|
47
|
+
where = ' in "%s", line %d, column %d' % (
|
48
|
+
self.name,
|
49
|
+
self.line + 1,
|
50
|
+
self.column + 1,
|
51
|
+
)
|
52
|
+
if snippet is not None:
|
53
|
+
where += ":\n" + snippet
|
54
|
+
return where
|
55
|
+
|
56
|
+
|
57
|
+
class YAMLError(Exception):
|
58
|
+
pass
|
59
|
+
|
60
|
+
|
61
|
+
class MarkedYAMLError(YAMLError):
|
62
|
+
def __init__(
|
63
|
+
self,
|
64
|
+
context=None,
|
65
|
+
context_mark=None,
|
66
|
+
problem=None,
|
67
|
+
problem_mark=None,
|
68
|
+
note=None,
|
69
|
+
):
|
70
|
+
self.context = context
|
71
|
+
self.context_mark = context_mark
|
72
|
+
self.problem = problem
|
73
|
+
self.problem_mark = problem_mark
|
74
|
+
self.note = note
|
75
|
+
|
76
|
+
def __str__(self):
|
77
|
+
lines = []
|
78
|
+
if self.context is not None:
|
79
|
+
lines.append(self.context)
|
80
|
+
if self.context_mark is not None and (
|
81
|
+
self.problem is None
|
82
|
+
or self.problem_mark is None
|
83
|
+
or self.context_mark.name != self.problem_mark.name
|
84
|
+
or self.context_mark.line != self.problem_mark.line
|
85
|
+
or self.context_mark.column != self.problem_mark.column
|
86
|
+
):
|
87
|
+
lines.append(str(self.context_mark))
|
88
|
+
if self.problem is not None:
|
89
|
+
lines.append(self.problem)
|
90
|
+
if self.problem_mark is not None:
|
91
|
+
lines.append(str(self.problem_mark))
|
92
|
+
if self.note is not None:
|
93
|
+
lines.append(self.note)
|
94
|
+
return "\n".join(lines)
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# Abstract classes.
|
2
|
+
|
3
|
+
|
4
|
+
class Event(object):
|
5
|
+
def __init__(self, start_mark=None, end_mark=None):
|
6
|
+
self.start_mark = start_mark
|
7
|
+
self.end_mark = end_mark
|
8
|
+
|
9
|
+
def __repr__(self):
|
10
|
+
attributes = [
|
11
|
+
key for key in ["anchor", "tag", "implicit", "value"] if hasattr(self, key)
|
12
|
+
]
|
13
|
+
arguments = ", ".join(
|
14
|
+
["%s=%r" % (key, getattr(self, key)) for key in attributes]
|
15
|
+
)
|
16
|
+
return "%s(%s)" % (self.__class__.__name__, arguments)
|
17
|
+
|
18
|
+
|
19
|
+
class NodeEvent(Event):
|
20
|
+
def __init__(self, anchor, start_mark=None, end_mark=None):
|
21
|
+
self.anchor = anchor
|
22
|
+
self.start_mark = start_mark
|
23
|
+
self.end_mark = end_mark
|
24
|
+
|
25
|
+
|
26
|
+
class CollectionStartEvent(NodeEvent):
|
27
|
+
def __init__(
|
28
|
+
self, anchor, tag, implicit, start_mark=None, end_mark=None, flow_style=None
|
29
|
+
):
|
30
|
+
self.anchor = anchor
|
31
|
+
self.tag = tag
|
32
|
+
self.implicit = implicit
|
33
|
+
self.start_mark = start_mark
|
34
|
+
self.end_mark = end_mark
|
35
|
+
self.flow_style = flow_style
|
36
|
+
|
37
|
+
|
38
|
+
class CollectionEndEvent(Event):
|
39
|
+
pass
|
40
|
+
|
41
|
+
|
42
|
+
# Implementations.
|
43
|
+
|
44
|
+
|
45
|
+
class StreamStartEvent(Event):
|
46
|
+
def __init__(self, start_mark=None, end_mark=None, encoding=None):
|
47
|
+
self.start_mark = start_mark
|
48
|
+
self.end_mark = end_mark
|
49
|
+
self.encoding = encoding
|
50
|
+
|
51
|
+
|
52
|
+
class StreamEndEvent(Event):
|
53
|
+
pass
|
54
|
+
|
55
|
+
|
56
|
+
class DocumentStartEvent(Event):
|
57
|
+
def __init__(
|
58
|
+
self, start_mark=None, end_mark=None, explicit=None, version=None, tags=None
|
59
|
+
):
|
60
|
+
self.start_mark = start_mark
|
61
|
+
self.end_mark = end_mark
|
62
|
+
self.explicit = explicit
|
63
|
+
self.version = version
|
64
|
+
self.tags = tags
|
65
|
+
|
66
|
+
|
67
|
+
class DocumentEndEvent(Event):
|
68
|
+
def __init__(self, start_mark=None, end_mark=None, explicit=None):
|
69
|
+
self.start_mark = start_mark
|
70
|
+
self.end_mark = end_mark
|
71
|
+
self.explicit = explicit
|
72
|
+
|
73
|
+
|
74
|
+
class AliasEvent(NodeEvent):
|
75
|
+
pass
|
76
|
+
|
77
|
+
|
78
|
+
class ScalarEvent(NodeEvent):
|
79
|
+
def __init__(
|
80
|
+
self, anchor, tag, implicit, value, start_mark=None, end_mark=None, style=None
|
81
|
+
):
|
82
|
+
self.anchor = anchor
|
83
|
+
self.tag = tag
|
84
|
+
self.implicit = implicit
|
85
|
+
self.value = value
|
86
|
+
self.start_mark = start_mark
|
87
|
+
self.end_mark = end_mark
|
88
|
+
self.style = style
|
89
|
+
|
90
|
+
|
91
|
+
class SequenceStartEvent(CollectionStartEvent):
|
92
|
+
pass
|
93
|
+
|
94
|
+
|
95
|
+
class SequenceEndEvent(CollectionEndEvent):
|
96
|
+
pass
|
97
|
+
|
98
|
+
|
99
|
+
class MappingStartEvent(CollectionStartEvent):
|
100
|
+
pass
|
101
|
+
|
102
|
+
|
103
|
+
class MappingEndEvent(CollectionEndEvent):
|
104
|
+
pass
|
@@ -0,0 +1,62 @@
|
|
1
|
+
__all__ = ["BaseLoader", "FullLoader", "SafeLoader", "Loader", "UnsafeLoader"]
|
2
|
+
|
3
|
+
from .reader import *
|
4
|
+
from .scanner import *
|
5
|
+
from .parser import *
|
6
|
+
from .composer import *
|
7
|
+
from .constructor import *
|
8
|
+
from .resolver import *
|
9
|
+
|
10
|
+
|
11
|
+
class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver):
|
12
|
+
def __init__(self, stream):
|
13
|
+
Reader.__init__(self, stream)
|
14
|
+
Scanner.__init__(self)
|
15
|
+
Parser.__init__(self)
|
16
|
+
Composer.__init__(self)
|
17
|
+
BaseConstructor.__init__(self)
|
18
|
+
BaseResolver.__init__(self)
|
19
|
+
|
20
|
+
|
21
|
+
class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver):
|
22
|
+
def __init__(self, stream):
|
23
|
+
Reader.__init__(self, stream)
|
24
|
+
Scanner.__init__(self)
|
25
|
+
Parser.__init__(self)
|
26
|
+
Composer.__init__(self)
|
27
|
+
FullConstructor.__init__(self)
|
28
|
+
Resolver.__init__(self)
|
29
|
+
|
30
|
+
|
31
|
+
class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver):
|
32
|
+
def __init__(self, stream):
|
33
|
+
Reader.__init__(self, stream)
|
34
|
+
Scanner.__init__(self)
|
35
|
+
Parser.__init__(self)
|
36
|
+
Composer.__init__(self)
|
37
|
+
SafeConstructor.__init__(self)
|
38
|
+
Resolver.__init__(self)
|
39
|
+
|
40
|
+
|
41
|
+
class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
|
42
|
+
def __init__(self, stream):
|
43
|
+
Reader.__init__(self, stream)
|
44
|
+
Scanner.__init__(self)
|
45
|
+
Parser.__init__(self)
|
46
|
+
Composer.__init__(self)
|
47
|
+
Constructor.__init__(self)
|
48
|
+
Resolver.__init__(self)
|
49
|
+
|
50
|
+
|
51
|
+
# UnsafeLoader is the same as Loader (which is and was always unsafe on
|
52
|
+
# untrusted input). Use of either Loader or UnsafeLoader should be rare, since
|
53
|
+
# FullLoad should be able to load almost all YAML safely. Loader is left intact
|
54
|
+
# to ensure backwards compatibility.
|
55
|
+
class UnsafeLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
|
56
|
+
def __init__(self, stream):
|
57
|
+
Reader.__init__(self, stream)
|
58
|
+
Scanner.__init__(self)
|
59
|
+
Parser.__init__(self)
|
60
|
+
Composer.__init__(self)
|
61
|
+
Constructor.__init__(self)
|
62
|
+
Resolver.__init__(self)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class Node(object):
|
2
|
+
def __init__(self, tag, value, start_mark, end_mark):
|
3
|
+
self.tag = tag
|
4
|
+
self.value = value
|
5
|
+
self.start_mark = start_mark
|
6
|
+
self.end_mark = end_mark
|
7
|
+
|
8
|
+
def __repr__(self):
|
9
|
+
value = self.value
|
10
|
+
# if isinstance(value, list):
|
11
|
+
# if len(value) == 0:
|
12
|
+
# value = '<empty>'
|
13
|
+
# elif len(value) == 1:
|
14
|
+
# value = '<1 item>'
|
15
|
+
# else:
|
16
|
+
# value = '<%d items>' % len(value)
|
17
|
+
# else:
|
18
|
+
# if len(value) > 75:
|
19
|
+
# value = repr(value[:70]+u' ... ')
|
20
|
+
# else:
|
21
|
+
# value = repr(value)
|
22
|
+
value = repr(value)
|
23
|
+
return "%s(tag=%r, value=%s)" % (self.__class__.__name__, self.tag, value)
|
24
|
+
|
25
|
+
|
26
|
+
class ScalarNode(Node):
|
27
|
+
id = "scalar"
|
28
|
+
|
29
|
+
def __init__(self, tag, value, start_mark=None, end_mark=None, style=None):
|
30
|
+
self.tag = tag
|
31
|
+
self.value = value
|
32
|
+
self.start_mark = start_mark
|
33
|
+
self.end_mark = end_mark
|
34
|
+
self.style = style
|
35
|
+
|
36
|
+
|
37
|
+
class CollectionNode(Node):
|
38
|
+
def __init__(self, tag, value, start_mark=None, end_mark=None, flow_style=None):
|
39
|
+
self.tag = tag
|
40
|
+
self.value = value
|
41
|
+
self.start_mark = start_mark
|
42
|
+
self.end_mark = end_mark
|
43
|
+
self.flow_style = flow_style
|
44
|
+
|
45
|
+
|
46
|
+
class SequenceNode(CollectionNode):
|
47
|
+
id = "sequence"
|
48
|
+
|
49
|
+
|
50
|
+
class MappingNode(CollectionNode):
|
51
|
+
id = "mapping"
|