outerbounds 0.3.68__py3-none-any.whl → 0.3.104__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.
- 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 +586 -0
- outerbounds/command_groups/cli.py +9 -5
- outerbounds/command_groups/local_setup_cli.py +1 -5
- outerbounds/command_groups/perimeters_cli.py +198 -25
- outerbounds/command_groups/tutorials_cli.py +111 -0
- outerbounds/command_groups/workstations_cli.py +2 -2
- outerbounds/utils/kubeconfig.py +2 -2
- outerbounds/utils/metaflowconfig.py +68 -9
- outerbounds/utils/schema.py +2 -2
- outerbounds/utils/utils.py +19 -0
- outerbounds/vendor.py +159 -0
- {outerbounds-0.3.68.dist-info → outerbounds-0.3.104.dist-info}/METADATA +14 -7
- outerbounds-0.3.104.dist-info/RECORD +59 -0
- {outerbounds-0.3.68.dist-info → outerbounds-0.3.104.dist-info}/WHEEL +1 -1
- outerbounds-0.3.68.dist-info/RECORD +0 -15
- {outerbounds-0.3.68.dist-info → outerbounds-0.3.104.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"
|