outerbounds 0.3.71__py3-none-any.whl → 0.3.75__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. outerbounds/_vendor/PyYAML.LICENSE +20 -0
  2. outerbounds/_vendor/__init__.py +0 -0
  3. outerbounds/_vendor/_yaml/__init__.py +34 -0
  4. outerbounds/_vendor/click/__init__.py +73 -0
  5. outerbounds/_vendor/click/_compat.py +626 -0
  6. outerbounds/_vendor/click/_termui_impl.py +717 -0
  7. outerbounds/_vendor/click/_textwrap.py +49 -0
  8. outerbounds/_vendor/click/_winconsole.py +279 -0
  9. outerbounds/_vendor/click/core.py +2998 -0
  10. outerbounds/_vendor/click/decorators.py +497 -0
  11. outerbounds/_vendor/click/exceptions.py +287 -0
  12. outerbounds/_vendor/click/formatting.py +301 -0
  13. outerbounds/_vendor/click/globals.py +68 -0
  14. outerbounds/_vendor/click/parser.py +529 -0
  15. outerbounds/_vendor/click/py.typed +0 -0
  16. outerbounds/_vendor/click/shell_completion.py +580 -0
  17. outerbounds/_vendor/click/termui.py +787 -0
  18. outerbounds/_vendor/click/testing.py +479 -0
  19. outerbounds/_vendor/click/types.py +1073 -0
  20. outerbounds/_vendor/click/utils.py +580 -0
  21. outerbounds/_vendor/click.LICENSE +28 -0
  22. outerbounds/_vendor/vendor_any.txt +2 -0
  23. outerbounds/_vendor/yaml/__init__.py +471 -0
  24. outerbounds/_vendor/yaml/composer.py +146 -0
  25. outerbounds/_vendor/yaml/constructor.py +862 -0
  26. outerbounds/_vendor/yaml/cyaml.py +177 -0
  27. outerbounds/_vendor/yaml/dumper.py +138 -0
  28. outerbounds/_vendor/yaml/emitter.py +1239 -0
  29. outerbounds/_vendor/yaml/error.py +94 -0
  30. outerbounds/_vendor/yaml/events.py +104 -0
  31. outerbounds/_vendor/yaml/loader.py +62 -0
  32. outerbounds/_vendor/yaml/nodes.py +51 -0
  33. outerbounds/_vendor/yaml/parser.py +629 -0
  34. outerbounds/_vendor/yaml/reader.py +208 -0
  35. outerbounds/_vendor/yaml/representer.py +378 -0
  36. outerbounds/_vendor/yaml/resolver.py +245 -0
  37. outerbounds/_vendor/yaml/scanner.py +1555 -0
  38. outerbounds/_vendor/yaml/serializer.py +127 -0
  39. outerbounds/_vendor/yaml/tokens.py +129 -0
  40. outerbounds/command_groups/cli.py +1 -1
  41. outerbounds/command_groups/local_setup_cli.py +1 -2
  42. outerbounds/command_groups/perimeters_cli.py +1 -2
  43. outerbounds/command_groups/workstations_cli.py +2 -2
  44. outerbounds/utils/kubeconfig.py +2 -2
  45. outerbounds/utils/metaflowconfig.py +1 -1
  46. outerbounds/vendor.py +159 -0
  47. {outerbounds-0.3.71.dist-info → outerbounds-0.3.75.dist-info}/METADATA +1 -3
  48. outerbounds-0.3.75.dist-info/RECORD +55 -0
  49. outerbounds-0.3.71.dist-info/RECORD +0 -15
  50. {outerbounds-0.3.71.dist-info → outerbounds-0.3.75.dist-info}/WHEEL +0 -0
  51. {outerbounds-0.3.71.dist-info → outerbounds-0.3.75.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,127 @@
1
+ __all__ = ["Serializer", "SerializerError"]
2
+
3
+ from .error import YAMLError
4
+ from .events import *
5
+ from .nodes import *
6
+
7
+
8
+ class SerializerError(YAMLError):
9
+ pass
10
+
11
+
12
+ class Serializer:
13
+
14
+ ANCHOR_TEMPLATE = "id%03d"
15
+
16
+ def __init__(
17
+ self,
18
+ encoding=None,
19
+ explicit_start=None,
20
+ explicit_end=None,
21
+ version=None,
22
+ tags=None,
23
+ ):
24
+ self.use_encoding = encoding
25
+ self.use_explicit_start = explicit_start
26
+ self.use_explicit_end = explicit_end
27
+ self.use_version = version
28
+ self.use_tags = tags
29
+ self.serialized_nodes = {}
30
+ self.anchors = {}
31
+ self.last_anchor_id = 0
32
+ self.closed = None
33
+
34
+ def open(self):
35
+ if self.closed is None:
36
+ self.emit(StreamStartEvent(encoding=self.use_encoding))
37
+ self.closed = False
38
+ elif self.closed:
39
+ raise SerializerError("serializer is closed")
40
+ else:
41
+ raise SerializerError("serializer is already opened")
42
+
43
+ def close(self):
44
+ if self.closed is None:
45
+ raise SerializerError("serializer is not opened")
46
+ elif not self.closed:
47
+ self.emit(StreamEndEvent())
48
+ self.closed = True
49
+
50
+ # def __del__(self):
51
+ # self.close()
52
+
53
+ def serialize(self, node):
54
+ if self.closed is None:
55
+ raise SerializerError("serializer is not opened")
56
+ elif self.closed:
57
+ raise SerializerError("serializer is closed")
58
+ self.emit(
59
+ DocumentStartEvent(
60
+ explicit=self.use_explicit_start,
61
+ version=self.use_version,
62
+ tags=self.use_tags,
63
+ )
64
+ )
65
+ self.anchor_node(node)
66
+ self.serialize_node(node, None, None)
67
+ self.emit(DocumentEndEvent(explicit=self.use_explicit_end))
68
+ self.serialized_nodes = {}
69
+ self.anchors = {}
70
+ self.last_anchor_id = 0
71
+
72
+ def anchor_node(self, node):
73
+ if node in self.anchors:
74
+ if self.anchors[node] is None:
75
+ self.anchors[node] = self.generate_anchor(node)
76
+ else:
77
+ self.anchors[node] = None
78
+ if isinstance(node, SequenceNode):
79
+ for item in node.value:
80
+ self.anchor_node(item)
81
+ elif isinstance(node, MappingNode):
82
+ for key, value in node.value:
83
+ self.anchor_node(key)
84
+ self.anchor_node(value)
85
+
86
+ def generate_anchor(self, node):
87
+ self.last_anchor_id += 1
88
+ return self.ANCHOR_TEMPLATE % self.last_anchor_id
89
+
90
+ def serialize_node(self, node, parent, index):
91
+ alias = self.anchors[node]
92
+ if node in self.serialized_nodes:
93
+ self.emit(AliasEvent(alias))
94
+ else:
95
+ self.serialized_nodes[node] = True
96
+ self.descend_resolver(parent, index)
97
+ if isinstance(node, ScalarNode):
98
+ detected_tag = self.resolve(ScalarNode, node.value, (True, False))
99
+ default_tag = self.resolve(ScalarNode, node.value, (False, True))
100
+ implicit = (node.tag == detected_tag), (node.tag == default_tag)
101
+ self.emit(
102
+ ScalarEvent(alias, node.tag, implicit, node.value, style=node.style)
103
+ )
104
+ elif isinstance(node, SequenceNode):
105
+ implicit = node.tag == self.resolve(SequenceNode, node.value, True)
106
+ self.emit(
107
+ SequenceStartEvent(
108
+ alias, node.tag, implicit, flow_style=node.flow_style
109
+ )
110
+ )
111
+ index = 0
112
+ for item in node.value:
113
+ self.serialize_node(item, node, index)
114
+ index += 1
115
+ self.emit(SequenceEndEvent())
116
+ elif isinstance(node, MappingNode):
117
+ implicit = node.tag == self.resolve(MappingNode, node.value, True)
118
+ self.emit(
119
+ MappingStartEvent(
120
+ alias, node.tag, implicit, flow_style=node.flow_style
121
+ )
122
+ )
123
+ for key, value in node.value:
124
+ self.serialize_node(key, node, None)
125
+ self.serialize_node(value, node, key)
126
+ self.emit(MappingEndEvent())
127
+ self.ascend_resolver()
@@ -0,0 +1,129 @@
1
+ class Token(object):
2
+ def __init__(self, start_mark, end_mark):
3
+ self.start_mark = start_mark
4
+ self.end_mark = end_mark
5
+
6
+ def __repr__(self):
7
+ attributes = [key for key in self.__dict__ if not key.endswith("_mark")]
8
+ attributes.sort()
9
+ arguments = ", ".join(
10
+ ["%s=%r" % (key, getattr(self, key)) for key in attributes]
11
+ )
12
+ return "%s(%s)" % (self.__class__.__name__, arguments)
13
+
14
+
15
+ # class BOMToken(Token):
16
+ # id = '<byte order mark>'
17
+
18
+
19
+ class DirectiveToken(Token):
20
+ id = "<directive>"
21
+
22
+ def __init__(self, name, value, start_mark, end_mark):
23
+ self.name = name
24
+ self.value = value
25
+ self.start_mark = start_mark
26
+ self.end_mark = end_mark
27
+
28
+
29
+ class DocumentStartToken(Token):
30
+ id = "<document start>"
31
+
32
+
33
+ class DocumentEndToken(Token):
34
+ id = "<document end>"
35
+
36
+
37
+ class StreamStartToken(Token):
38
+ id = "<stream start>"
39
+
40
+ def __init__(self, start_mark=None, end_mark=None, encoding=None):
41
+ self.start_mark = start_mark
42
+ self.end_mark = end_mark
43
+ self.encoding = encoding
44
+
45
+
46
+ class StreamEndToken(Token):
47
+ id = "<stream end>"
48
+
49
+
50
+ class BlockSequenceStartToken(Token):
51
+ id = "<block sequence start>"
52
+
53
+
54
+ class BlockMappingStartToken(Token):
55
+ id = "<block mapping start>"
56
+
57
+
58
+ class BlockEndToken(Token):
59
+ id = "<block end>"
60
+
61
+
62
+ class FlowSequenceStartToken(Token):
63
+ id = "["
64
+
65
+
66
+ class FlowMappingStartToken(Token):
67
+ id = "{"
68
+
69
+
70
+ class FlowSequenceEndToken(Token):
71
+ id = "]"
72
+
73
+
74
+ class FlowMappingEndToken(Token):
75
+ id = "}"
76
+
77
+
78
+ class KeyToken(Token):
79
+ id = "?"
80
+
81
+
82
+ class ValueToken(Token):
83
+ id = ":"
84
+
85
+
86
+ class BlockEntryToken(Token):
87
+ id = "-"
88
+
89
+
90
+ class FlowEntryToken(Token):
91
+ id = ","
92
+
93
+
94
+ class AliasToken(Token):
95
+ id = "<alias>"
96
+
97
+ def __init__(self, value, start_mark, end_mark):
98
+ self.value = value
99
+ self.start_mark = start_mark
100
+ self.end_mark = end_mark
101
+
102
+
103
+ class AnchorToken(Token):
104
+ id = "<anchor>"
105
+
106
+ def __init__(self, value, start_mark, end_mark):
107
+ self.value = value
108
+ self.start_mark = start_mark
109
+ self.end_mark = end_mark
110
+
111
+
112
+ class TagToken(Token):
113
+ id = "<tag>"
114
+
115
+ def __init__(self, value, start_mark, end_mark):
116
+ self.value = value
117
+ self.start_mark = start_mark
118
+ self.end_mark = end_mark
119
+
120
+
121
+ class ScalarToken(Token):
122
+ id = "<scalar>"
123
+
124
+ def __init__(self, value, plain, start_mark, end_mark, style=None):
125
+ self.value = value
126
+ self.plain = plain
127
+ self.start_mark = start_mark
128
+ self.end_mark = end_mark
129
+ self.style = style
@@ -1,4 +1,4 @@
1
- import click
1
+ from outerbounds._vendor import click
2
2
  from . import local_setup_cli
3
3
  from . import workstations_cli
4
4
  from . import perimeters_cli
@@ -11,8 +11,7 @@ from importlib.machinery import PathFinder
11
11
  from os import path
12
12
  from pathlib import Path
13
13
  from typing import Any, Callable, Dict, List
14
-
15
- import click
14
+ from outerbounds._vendor import click
16
15
  import requests
17
16
  from requests.exceptions import HTTPError
18
17
 
@@ -11,8 +11,7 @@ from importlib.machinery import PathFinder
11
11
  from os import path
12
12
  from pathlib import Path
13
13
  from typing import Any, Callable, Dict, List
14
-
15
- import click
14
+ from outerbounds._vendor import click
16
15
  import requests
17
16
  from requests.exceptions import HTTPError
18
17
 
@@ -1,5 +1,5 @@
1
- import click
2
- import yaml
1
+ from outerbounds._vendor import click
2
+ from outerbounds._vendor import yaml
3
3
  import requests
4
4
  import base64
5
5
  import datetime
@@ -1,6 +1,6 @@
1
1
  import os
2
- import yaml
3
- from yaml.scanner import ScannerError
2
+ from outerbounds._vendor import yaml
3
+ from outerbounds._vendor.yaml.scanner import ScannerError
4
4
  import subprocess
5
5
  from os import path
6
6
  import platform
@@ -1,4 +1,4 @@
1
- import click
1
+ from outerbounds._vendor import click
2
2
  import json
3
3
  import os
4
4
  import requests
outerbounds/vendor.py ADDED
@@ -0,0 +1,159 @@
1
+ import glob
2
+ import shutil
3
+ import subprocess
4
+ import re
5
+
6
+ from functools import partial
7
+ from itertools import chain
8
+ from pathlib import Path
9
+
10
+ WHITELIST = {
11
+ "README.txt",
12
+ "__init__.py",
13
+ "vendor_any.txt",
14
+ "pip.LICENSE",
15
+ }
16
+
17
+ # Borrowed from https://github.com/pypa/pip/tree/main/src/pip/_vendor
18
+
19
+ VENDOR_SUBDIR = re.compile(r"^_vendor/vendor_([a-zA-Z0-9_]+).txt$")
20
+
21
+
22
+ def delete_all(*paths, whitelist=frozenset()):
23
+ for item in paths:
24
+ if item.is_dir():
25
+ shutil.rmtree(item, ignore_errors=True)
26
+ elif item.is_file() and item.name not in whitelist:
27
+ item.unlink()
28
+
29
+
30
+ def iter_subtree(path):
31
+ """Recursively yield all files in a subtree, depth-first"""
32
+ if not path.is_dir():
33
+ if path.is_file():
34
+ yield path
35
+ return
36
+ for item in path.iterdir():
37
+ if item.is_dir():
38
+ yield from iter_subtree(item)
39
+ elif item.is_file():
40
+ yield item
41
+
42
+
43
+ def patch_vendor_imports(file, replacements):
44
+ text = file.read_text("utf8")
45
+ for replacement in replacements:
46
+ text = replacement(text)
47
+ file.write_text(text, "utf8")
48
+
49
+
50
+ def find_vendored_libs(vendor_dir, whitelist, whitelist_dirs):
51
+ vendored_libs = []
52
+ paths = []
53
+ for item in vendor_dir.iterdir():
54
+ if item.is_dir() and item not in whitelist_dirs:
55
+ vendored_libs.append(item.name)
56
+ elif item.is_file() and item.name not in whitelist:
57
+ vendored_libs.append(item.stem) # without extension
58
+ else: # not a dir or a file not in the whitelist
59
+ continue
60
+ paths.append(item)
61
+ return vendored_libs, paths
62
+
63
+
64
+ def fetch_licenses(*info_dir, vendor_dir):
65
+ for file in chain.from_iterable(map(iter_subtree, info_dir)):
66
+ if "LICENSE" in file.name:
67
+ library = file.parent.name.split("-")[0]
68
+ shutil.copy(file, vendor_dir / ("%s.LICENSE" % library))
69
+ else:
70
+ continue
71
+
72
+
73
+ def vendor(vendor_dir):
74
+ # remove everything
75
+ delete_all(*vendor_dir.iterdir(), whitelist=WHITELIST)
76
+
77
+ exclude_subdirs = []
78
+ # Iterate on the vendor*.txt files
79
+ for vendor_file in glob.glob(f"{vendor_dir.name}/vendor*.txt"):
80
+ # We extract the subdirectory we are going to extract into
81
+ subdir = VENDOR_SUBDIR.match(vendor_file).group(1)
82
+ # Includes "any" but it doesn't really matter unless you install "any"
83
+ exclude_subdirs.append(subdir)
84
+
85
+ for subdir in exclude_subdirs:
86
+ create_init_file = False
87
+ if subdir == "any":
88
+ vendor_subdir = vendor_dir
89
+ # target package is <parent>.<vendor_dir>; foo/_vendor -> foo._vendor
90
+ pkgname = f"{vendor_dir.parent.name}.{vendor_dir.name}"
91
+ else:
92
+ create_init_file = True
93
+ vendor_subdir = vendor_dir / subdir
94
+ # target package is <parent>.<vendor_dir>; foo/_vendor -> foo._vendor
95
+ pkgname = f"{vendor_dir.parent.name}.{vendor_dir.name}.{vendor_subdir.name}"
96
+
97
+ # install with pip
98
+ subprocess.run(
99
+ [
100
+ "python3",
101
+ "-m",
102
+ "pip",
103
+ "install",
104
+ "-t",
105
+ str(vendor_subdir),
106
+ "-r",
107
+ "_vendor/vendor_%s.txt" % subdir,
108
+ "--no-compile",
109
+ ]
110
+ )
111
+
112
+ # fetch licenses
113
+ fetch_licenses(*vendor_subdir.glob("*.dist-info"), vendor_dir=vendor_subdir)
114
+
115
+ # delete stuff that's not needed
116
+ delete_all(
117
+ *vendor_subdir.glob("*.dist-info"),
118
+ *vendor_subdir.glob("*.egg-info"),
119
+ vendor_subdir / "bin",
120
+ )
121
+
122
+ # Touch a __init__.py file
123
+ if create_init_file:
124
+ with open(
125
+ "%s/__init__.py" % str(vendor_subdir), "w+", encoding="utf-8"
126
+ ) as f:
127
+ f.write("# Empty file")
128
+
129
+ vendored_libs, paths = find_vendored_libs(
130
+ vendor_subdir, WHITELIST, exclude_subdirs
131
+ )
132
+
133
+ replacements = []
134
+ for lib in vendored_libs:
135
+ replacements += (
136
+ partial( # import bar -> import foo._vendor.bar
137
+ re.compile(r"(^\s*)import {}\n".format(lib), flags=re.M).sub,
138
+ r"\1from {} import {}\n".format(pkgname, lib),
139
+ ),
140
+ partial( # from bar -> from foo._vendor.bar
141
+ re.compile(r"(^\s*)from {}(\.|\s+)".format(lib), flags=re.M).sub,
142
+ r"\1from {}.{}\2".format(pkgname, lib),
143
+ ),
144
+ )
145
+
146
+ for file in chain.from_iterable(map(iter_subtree, paths)):
147
+ if file.suffix == ".py":
148
+ patch_vendor_imports(file, replacements)
149
+
150
+
151
+ if __name__ == "__main__":
152
+ here = Path("__file__").resolve().parent
153
+ vendor_tl_dir = here / "_vendor"
154
+ has_vendor_file = len(glob.glob(f"{vendor_tl_dir.name}/vendor*.txt")) > 0
155
+ assert has_vendor_file, "_vendor/vendor*.txt file not found"
156
+ assert (
157
+ vendor_tl_dir / "__init__.py"
158
+ ).exists(), "_vendor/__init__.py file not found"
159
+ vendor(vendor_tl_dir)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: outerbounds
3
- Version: 0.3.71
3
+ Version: 0.3.75
4
4
  Summary: More Data Science, Less Administration
5
5
  License: Proprietary
6
6
  Keywords: data science,machine learning,MLOps
@@ -16,12 +16,10 @@ Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Provides-Extra: azure
18
18
  Provides-Extra: gcp
19
- Requires-Dist: PyYAML (>=6.0,<7.0)
20
19
  Requires-Dist: azure-identity (>=1.15.0,<2.0.0) ; extra == "azure"
21
20
  Requires-Dist: azure-keyvault-secrets (>=4.7.0,<5.0.0) ; extra == "azure"
22
21
  Requires-Dist: azure-storage-blob (>=12.9.0,<13.0.0) ; extra == "azure"
23
22
  Requires-Dist: boto3
24
- Requires-Dist: click (>=8.1.3,<9.0.0)
25
23
  Requires-Dist: google-api-core (>=2.16.1,<3.0.0) ; extra == "gcp"
26
24
  Requires-Dist: google-auth (>=2.27.0,<3.0.0) ; extra == "gcp"
27
25
  Requires-Dist: google-cloud-secret-manager (>=2.20.0,<3.0.0) ; extra == "gcp"
@@ -0,0 +1,55 @@
1
+ outerbounds/__init__.py,sha256=GPdaubvAYF8pOFWJ3b-sPMKCpyfpteWVMZWkmaYhxRw,32
2
+ outerbounds/_vendor/PyYAML.LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101
3
+ outerbounds/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ outerbounds/_vendor/_yaml/__init__.py,sha256=nD985-g4Mrx97PhtSzI2L53o8sCHUJ4ZoBWcUd7o0PQ,1449
5
+ outerbounds/_vendor/click/__init__.py,sha256=rQBLutqg-z6m8nOzivIfigDn_emijB_dKv9BZ2FNi5s,3138
6
+ outerbounds/_vendor/click/_compat.py,sha256=JIHLYs7Jzz4KT9t-ds4o4jBzLjnwCiJQKqur-5iwCKI,18810
7
+ outerbounds/_vendor/click/_termui_impl.py,sha256=qK6Cfy4mRFxvxE8dya8RBhLpSC8HjF-lvBc6aNrPdwg,23451
8
+ outerbounds/_vendor/click/_textwrap.py,sha256=10fQ64OcBUMuK7mFvh8363_uoOxPlRItZBmKzRJDgoY,1353
9
+ outerbounds/_vendor/click/_winconsole.py,sha256=5ju3jQkcZD0W27WEMGqmEP4y_crUVzPCqsX_FYb7BO0,7860
10
+ outerbounds/_vendor/click/core.py,sha256=ici4JXpq5VWyQkFQQklE4GnUKR8wxSP1YAzqaVYAZ3Y,112862
11
+ outerbounds/_vendor/click/decorators.py,sha256=yo3zvzgUm5q7h5CXjyV6q3h_PJAiUaem178zXwdWUFI,16350
12
+ outerbounds/_vendor/click/exceptions.py,sha256=7gDaLGuFZBeCNwY9ERMsF2-Z3R9Fvq09Zc6IZSKjseo,9167
13
+ outerbounds/_vendor/click/formatting.py,sha256=Frf0-5W33-loyY_i9qrwXR8-STnW3m5gvyxLVUdyxyk,9706
14
+ outerbounds/_vendor/click/globals.py,sha256=TP-qM88STzc7f127h35TD_v920FgfOD2EwzqA0oE8XU,1961
15
+ outerbounds/_vendor/click/parser.py,sha256=cAEt1uQR8gq3-S9ysqbVU-fdAZNvilxw4ReJ_T1OQMk,19044
16
+ outerbounds/_vendor/click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ outerbounds/_vendor/click/shell_completion.py,sha256=qOp_BeC9esEOSZKyu5G7RIxEUaLsXUX-mTb7hB1r4QY,18018
18
+ outerbounds/_vendor/click/termui.py,sha256=ACBQVOvFCTSqtD5VREeCAdRtlHd-Imla-Lte4wSfMjA,28355
19
+ outerbounds/_vendor/click/testing.py,sha256=ptpMYgRY7dVfE3UDgkgwayu9ePw98sQI3D7zZXiCpj4,16063
20
+ outerbounds/_vendor/click/types.py,sha256=u8LK2CRcVw3jWDutzP_wgFV478TXhsjL8gYSFPjGKkE,35865
21
+ outerbounds/_vendor/click/utils.py,sha256=33D6E7poH_nrKB-xr-UyDEXnxOcCiQqxuRLtrqeVv6o,18682
22
+ outerbounds/_vendor/click.LICENSE,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475
23
+ outerbounds/_vendor/vendor_any.txt,sha256=9vi_h2zSBIx0sFM9i69xNEwe-HyeX0_sdtMjImmvgXo,27
24
+ outerbounds/_vendor/yaml/__init__.py,sha256=lPcXUknB0EUNfCL8MJOgq26y70nOQR_Eajqzycmtnhg,12569
25
+ outerbounds/_vendor/yaml/composer.py,sha256=KI1ASnRYW7jWza4BxiHsjDdpV_AYR6wGKD_d3q5y1GY,4975
26
+ outerbounds/_vendor/yaml/constructor.py,sha256=a_QHcwgF8J3ius54IchRi50VSuX-tNZfL83JsRA9q9w,30058
27
+ outerbounds/_vendor/yaml/cyaml.py,sha256=pbSaKr0mn_yMEc4DuLbl38RGWVSkXBgA9NXHATnjfuE,4497
28
+ outerbounds/_vendor/yaml/dumper.py,sha256=ncn_DlBmKv_aTtkv9tBagK-8SQE9ETLIdwTYMO0_5WA,3507
29
+ outerbounds/_vendor/yaml/emitter.py,sha256=9jcV2QKdsHWAPJrqsWMEBCLCU56D25qLC1XiQFcU48A,44167
30
+ outerbounds/_vendor/yaml/error.py,sha256=1ImZXAcfUbnuVfkHYSeHakDojgwAjFs4pFUKfKNFLuw,2726
31
+ outerbounds/_vendor/yaml/events.py,sha256=VlHDUFXu2zAU6TFEQUBDIq8gU3s_1Q67vpNlYY645p4,2465
32
+ outerbounds/_vendor/yaml/loader.py,sha256=jX2YIC4HwJslE2DKVwLix2ne8qhJyFJzwjJz7CzVPOk,2060
33
+ outerbounds/_vendor/yaml/nodes.py,sha256=K0QBIan-NI8RqxiPyo6fLaR-GSTpmF_9eXtJ3uf6rEo,1422
34
+ outerbounds/_vendor/yaml/parser.py,sha256=BhbxGU0AjebJZIVFpBIPoP5YAGYOMVg7Vjmd-aFP5ts,26214
35
+ outerbounds/_vendor/yaml/reader.py,sha256=lR8yfw6FMasPB41qFrsBUOVtASViXnKd89tvJHQNsVc,7109
36
+ outerbounds/_vendor/yaml/representer.py,sha256=FK_yoIj_17GdgzVP8_yFBobV56PKqEkZ5AGtBdKjWDc,14088
37
+ outerbounds/_vendor/yaml/resolver.py,sha256=dPhU1d7G1JCMktPFvNhyqwj2oNvx1yf_Jfa35CydQXA,8992
38
+ outerbounds/_vendor/yaml/scanner.py,sha256=ZcI8IngR56PaQ0m27WU2vxCqmDCuRjz-hr7pirbMPuw,52982
39
+ outerbounds/_vendor/yaml/serializer.py,sha256=8wFZRy9SsQSktF_f9OOroroqsh4qVUe53ry07P9UgCc,4368
40
+ outerbounds/_vendor/yaml/tokens.py,sha256=JBSu38wihGr4l73JwbfMA7Ks1-X84g8-NskTz7KwPmA,2578
41
+ outerbounds/cli_main.py,sha256=e9UMnPysmc7gbrimq2I4KfltggyU7pw59Cn9aEguVcU,74
42
+ outerbounds/command_groups/__init__.py,sha256=QPWtj5wDRTINDxVUL7XPqG3HoxHNvYOg08EnuSZB2Hc,21
43
+ outerbounds/command_groups/cli.py,sha256=sorDdQvmTPqIwfvgtuNLILelimXu5CknFnWQFsYFGHs,286
44
+ outerbounds/command_groups/local_setup_cli.py,sha256=somQMeLgRSK8BAje2rN6LeY-lszXmwBpNLvDCk293h8,36554
45
+ outerbounds/command_groups/perimeters_cli.py,sha256=vU1LykO9T2Xj4Fn8hyhaCUR4q454q1aVoU4XhhrgAS4,12781
46
+ outerbounds/command_groups/workstations_cli.py,sha256=V5Jbj1cVb4IRllI7fOgNgL6OekRpuFDv6CEhDb4xC6w,22016
47
+ outerbounds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ outerbounds/utils/kubeconfig.py,sha256=yvcyRXGR4AhQuqUDqmbGxEOHw5ixMFV0AZIDg1LI_Qo,7981
49
+ outerbounds/utils/metaflowconfig.py,sha256=Ja1eufYm4UANRNpk7qlxg_UUudToDOVCjaWg88N-xhQ,3538
50
+ outerbounds/utils/schema.py,sha256=cNlgjmteLPbDzSEUSQDsq8txdhMGyezSmM83jU3aa0w,2329
51
+ outerbounds/vendor.py,sha256=gRLRJNXtZBeUpPEog0LOeIsl6GosaFFbCxUvR4bW6IQ,5093
52
+ outerbounds-0.3.75.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
53
+ outerbounds-0.3.75.dist-info/entry_points.txt,sha256=7ye0281PKlvqxu15rjw60zKg2pMsXI49_A8BmGqIqBw,47
54
+ outerbounds-0.3.75.dist-info/METADATA,sha256=GEWnisRc8l6bSjyNYuyfOFztMW311cC1qv-N0CwA4Mw,1531
55
+ outerbounds-0.3.75.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- outerbounds/__init__.py,sha256=GPdaubvAYF8pOFWJ3b-sPMKCpyfpteWVMZWkmaYhxRw,32
2
- outerbounds/cli_main.py,sha256=e9UMnPysmc7gbrimq2I4KfltggyU7pw59Cn9aEguVcU,74
3
- outerbounds/command_groups/__init__.py,sha256=QPWtj5wDRTINDxVUL7XPqG3HoxHNvYOg08EnuSZB2Hc,21
4
- outerbounds/command_groups/cli.py,sha256=H4LxcYTmsY9DQUrReSRLjvbg9s9Ro7s-eUrcMqEJ_9A,261
5
- outerbounds/command_groups/local_setup_cli.py,sha256=Xqb-tsAkYgc90duC_6COSR9MsDpMNiKigQxlXUUYfN0,36530
6
- outerbounds/command_groups/perimeters_cli.py,sha256=OxbxYQnHZDLRb3SFaVpD2mjp8W8s1fvK1Wc4htyRuGw,12757
7
- outerbounds/command_groups/workstations_cli.py,sha256=b5lt8_g2B0zCoUoNriTRv32IPB6E4mI2sUhubDT7Yjo,21966
8
- outerbounds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- outerbounds/utils/kubeconfig.py,sha256=l1mUP1j9VIq3fsffi5bJ1Nk-hYlwd1dIqkpj7DvVS1E,7936
10
- outerbounds/utils/metaflowconfig.py,sha256=JkhT2yOGpN7t2R2p9uaUJRDJU9fqFPwn4DcojjVnJMI,3513
11
- outerbounds/utils/schema.py,sha256=cNlgjmteLPbDzSEUSQDsq8txdhMGyezSmM83jU3aa0w,2329
12
- outerbounds-0.3.71.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
13
- outerbounds-0.3.71.dist-info/entry_points.txt,sha256=7ye0281PKlvqxu15rjw60zKg2pMsXI49_A8BmGqIqBw,47
14
- outerbounds-0.3.71.dist-info/METADATA,sha256=KqI-Q9v-pA-Rk4tATtmehZMYJ0w7SNC29PS43Oo7YKE,1604
15
- outerbounds-0.3.71.dist-info/RECORD,,