ob-metaflow 2.15.13.1__py2.py3-none-any.whl → 2.19.7.1rc0__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/__init__.py +10 -3
- metaflow/_vendor/imghdr/__init__.py +186 -0
- metaflow/_vendor/yaml/__init__.py +427 -0
- metaflow/_vendor/yaml/composer.py +139 -0
- metaflow/_vendor/yaml/constructor.py +748 -0
- metaflow/_vendor/yaml/cyaml.py +101 -0
- metaflow/_vendor/yaml/dumper.py +62 -0
- metaflow/_vendor/yaml/emitter.py +1137 -0
- metaflow/_vendor/yaml/error.py +75 -0
- metaflow/_vendor/yaml/events.py +86 -0
- metaflow/_vendor/yaml/loader.py +63 -0
- metaflow/_vendor/yaml/nodes.py +49 -0
- metaflow/_vendor/yaml/parser.py +589 -0
- metaflow/_vendor/yaml/reader.py +185 -0
- metaflow/_vendor/yaml/representer.py +389 -0
- metaflow/_vendor/yaml/resolver.py +227 -0
- metaflow/_vendor/yaml/scanner.py +1435 -0
- metaflow/_vendor/yaml/serializer.py +111 -0
- metaflow/_vendor/yaml/tokens.py +104 -0
- metaflow/cards.py +4 -0
- metaflow/cli.py +125 -21
- metaflow/cli_components/init_cmd.py +1 -0
- metaflow/cli_components/run_cmds.py +204 -40
- metaflow/cli_components/step_cmd.py +160 -4
- metaflow/client/__init__.py +1 -0
- metaflow/client/core.py +198 -130
- metaflow/client/filecache.py +59 -32
- metaflow/cmd/code/__init__.py +2 -1
- metaflow/cmd/develop/stub_generator.py +49 -18
- metaflow/cmd/develop/stubs.py +9 -27
- metaflow/cmd/make_wrapper.py +30 -0
- metaflow/datastore/__init__.py +1 -0
- metaflow/datastore/content_addressed_store.py +40 -9
- metaflow/datastore/datastore_set.py +10 -1
- metaflow/datastore/flow_datastore.py +124 -4
- metaflow/datastore/spin_datastore.py +91 -0
- metaflow/datastore/task_datastore.py +92 -6
- metaflow/debug.py +5 -0
- metaflow/decorators.py +331 -82
- metaflow/extension_support/__init__.py +414 -356
- metaflow/extension_support/_empty_file.py +2 -2
- metaflow/flowspec.py +322 -82
- metaflow/graph.py +178 -15
- metaflow/includefile.py +25 -3
- metaflow/lint.py +94 -3
- metaflow/meta_files.py +13 -0
- metaflow/metadata_provider/metadata.py +13 -2
- metaflow/metaflow_config.py +66 -4
- metaflow/metaflow_environment.py +91 -25
- metaflow/metaflow_profile.py +18 -0
- metaflow/metaflow_version.py +16 -1
- metaflow/package/__init__.py +673 -0
- metaflow/packaging_sys/__init__.py +880 -0
- metaflow/packaging_sys/backend.py +128 -0
- metaflow/packaging_sys/distribution_support.py +153 -0
- metaflow/packaging_sys/tar_backend.py +99 -0
- metaflow/packaging_sys/utils.py +54 -0
- metaflow/packaging_sys/v1.py +527 -0
- metaflow/parameters.py +6 -2
- metaflow/plugins/__init__.py +6 -0
- metaflow/plugins/airflow/airflow.py +11 -1
- metaflow/plugins/airflow/airflow_cli.py +16 -5
- metaflow/plugins/argo/argo_client.py +42 -20
- metaflow/plugins/argo/argo_events.py +6 -6
- metaflow/plugins/argo/argo_workflows.py +1023 -344
- metaflow/plugins/argo/argo_workflows_cli.py +396 -94
- metaflow/plugins/argo/argo_workflows_decorator.py +9 -0
- metaflow/plugins/argo/argo_workflows_deployer_objects.py +75 -49
- metaflow/plugins/argo/capture_error.py +5 -2
- metaflow/plugins/argo/conditional_input_paths.py +35 -0
- metaflow/plugins/argo/exit_hooks.py +209 -0
- metaflow/plugins/argo/param_val.py +19 -0
- metaflow/plugins/aws/aws_client.py +6 -0
- metaflow/plugins/aws/aws_utils.py +33 -1
- metaflow/plugins/aws/batch/batch.py +72 -5
- metaflow/plugins/aws/batch/batch_cli.py +24 -3
- metaflow/plugins/aws/batch/batch_decorator.py +57 -6
- metaflow/plugins/aws/step_functions/step_functions.py +28 -3
- metaflow/plugins/aws/step_functions/step_functions_cli.py +49 -4
- metaflow/plugins/aws/step_functions/step_functions_deployer.py +3 -0
- metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py +30 -0
- metaflow/plugins/cards/card_cli.py +20 -1
- metaflow/plugins/cards/card_creator.py +24 -1
- metaflow/plugins/cards/card_datastore.py +21 -49
- metaflow/plugins/cards/card_decorator.py +58 -6
- metaflow/plugins/cards/card_modules/basic.py +38 -9
- metaflow/plugins/cards/card_modules/bundle.css +1 -1
- metaflow/plugins/cards/card_modules/chevron/renderer.py +1 -1
- metaflow/plugins/cards/card_modules/components.py +592 -3
- metaflow/plugins/cards/card_modules/convert_to_native_type.py +34 -5
- metaflow/plugins/cards/card_modules/json_viewer.py +232 -0
- metaflow/plugins/cards/card_modules/main.css +1 -0
- metaflow/plugins/cards/card_modules/main.js +56 -41
- metaflow/plugins/cards/card_modules/test_cards.py +22 -6
- metaflow/plugins/cards/component_serializer.py +1 -8
- metaflow/plugins/cards/metadata.py +22 -0
- metaflow/plugins/catch_decorator.py +9 -0
- metaflow/plugins/datastores/local_storage.py +12 -6
- metaflow/plugins/datastores/spin_storage.py +12 -0
- metaflow/plugins/datatools/s3/s3.py +49 -17
- metaflow/plugins/datatools/s3/s3op.py +113 -66
- metaflow/plugins/env_escape/client_modules.py +102 -72
- metaflow/plugins/events_decorator.py +127 -121
- metaflow/plugins/exit_hook/__init__.py +0 -0
- metaflow/plugins/exit_hook/exit_hook_decorator.py +46 -0
- metaflow/plugins/exit_hook/exit_hook_script.py +52 -0
- metaflow/plugins/kubernetes/kubernetes.py +12 -1
- metaflow/plugins/kubernetes/kubernetes_cli.py +11 -0
- metaflow/plugins/kubernetes/kubernetes_decorator.py +25 -6
- metaflow/plugins/kubernetes/kubernetes_job.py +12 -4
- metaflow/plugins/kubernetes/kubernetes_jobsets.py +31 -30
- metaflow/plugins/metadata_providers/local.py +76 -82
- metaflow/plugins/metadata_providers/service.py +13 -9
- metaflow/plugins/metadata_providers/spin.py +16 -0
- metaflow/plugins/package_cli.py +36 -24
- metaflow/plugins/parallel_decorator.py +11 -2
- metaflow/plugins/parsers.py +16 -0
- metaflow/plugins/pypi/bootstrap.py +7 -1
- metaflow/plugins/pypi/conda_decorator.py +41 -82
- metaflow/plugins/pypi/conda_environment.py +14 -6
- metaflow/plugins/pypi/micromamba.py +9 -1
- metaflow/plugins/pypi/pip.py +41 -5
- metaflow/plugins/pypi/pypi_decorator.py +4 -4
- metaflow/plugins/pypi/utils.py +22 -0
- metaflow/plugins/secrets/__init__.py +3 -0
- metaflow/plugins/secrets/secrets_decorator.py +14 -178
- metaflow/plugins/secrets/secrets_func.py +49 -0
- metaflow/plugins/secrets/secrets_spec.py +101 -0
- metaflow/plugins/secrets/utils.py +74 -0
- metaflow/plugins/test_unbounded_foreach_decorator.py +2 -2
- metaflow/plugins/timeout_decorator.py +0 -1
- metaflow/plugins/uv/bootstrap.py +29 -1
- metaflow/plugins/uv/uv_environment.py +5 -3
- metaflow/pylint_wrapper.py +5 -1
- metaflow/runner/click_api.py +79 -26
- metaflow/runner/deployer.py +208 -6
- metaflow/runner/deployer_impl.py +32 -12
- metaflow/runner/metaflow_runner.py +266 -33
- metaflow/runner/subprocess_manager.py +21 -1
- metaflow/runner/utils.py +27 -16
- metaflow/runtime.py +660 -66
- metaflow/task.py +255 -26
- metaflow/user_configs/config_options.py +33 -21
- metaflow/user_configs/config_parameters.py +220 -58
- metaflow/user_decorators/__init__.py +0 -0
- metaflow/user_decorators/common.py +144 -0
- metaflow/user_decorators/mutable_flow.py +512 -0
- metaflow/user_decorators/mutable_step.py +424 -0
- metaflow/user_decorators/user_flow_decorator.py +264 -0
- metaflow/user_decorators/user_step_decorator.py +749 -0
- metaflow/util.py +197 -7
- metaflow/vendor.py +23 -7
- metaflow/version.py +1 -1
- {ob_metaflow-2.15.13.1.data → ob_metaflow-2.19.7.1rc0.data}/data/share/metaflow/devtools/Makefile +13 -2
- {ob_metaflow-2.15.13.1.data → ob_metaflow-2.19.7.1rc0.data}/data/share/metaflow/devtools/Tiltfile +107 -7
- {ob_metaflow-2.15.13.1.data → ob_metaflow-2.19.7.1rc0.data}/data/share/metaflow/devtools/pick_services.sh +1 -0
- {ob_metaflow-2.15.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/METADATA +2 -3
- {ob_metaflow-2.15.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/RECORD +162 -121
- {ob_metaflow-2.15.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/WHEEL +1 -1
- metaflow/_vendor/v3_5/__init__.py +0 -1
- metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -644
- metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -152
- metaflow/_vendor/v3_5/zipp.py +0 -329
- metaflow/info_file.py +0 -25
- metaflow/package.py +0 -203
- metaflow/user_configs/config_decorators.py +0 -568
- {ob_metaflow-2.15.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/entry_points.txt +0 -0
- {ob_metaflow-2.15.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/licenses/LICENSE +0 -0
- {ob_metaflow-2.15.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
|
|
2
|
+
__all__ = ['Mark', 'YAMLError', 'MarkedYAMLError']
|
|
3
|
+
|
|
4
|
+
class Mark:
|
|
5
|
+
|
|
6
|
+
def __init__(self, name, index, line, column, buffer, pointer):
|
|
7
|
+
self.name = name
|
|
8
|
+
self.index = index
|
|
9
|
+
self.line = line
|
|
10
|
+
self.column = column
|
|
11
|
+
self.buffer = buffer
|
|
12
|
+
self.pointer = pointer
|
|
13
|
+
|
|
14
|
+
def get_snippet(self, indent=4, max_length=75):
|
|
15
|
+
if self.buffer is None:
|
|
16
|
+
return None
|
|
17
|
+
head = ''
|
|
18
|
+
start = self.pointer
|
|
19
|
+
while start > 0 and self.buffer[start-1] not in '\0\r\n\x85\u2028\u2029':
|
|
20
|
+
start -= 1
|
|
21
|
+
if self.pointer-start > max_length/2-1:
|
|
22
|
+
head = ' ... '
|
|
23
|
+
start += 5
|
|
24
|
+
break
|
|
25
|
+
tail = ''
|
|
26
|
+
end = self.pointer
|
|
27
|
+
while end < len(self.buffer) and self.buffer[end] not in '\0\r\n\x85\u2028\u2029':
|
|
28
|
+
end += 1
|
|
29
|
+
if end-self.pointer > max_length/2-1:
|
|
30
|
+
tail = ' ... '
|
|
31
|
+
end -= 5
|
|
32
|
+
break
|
|
33
|
+
snippet = self.buffer[start:end]
|
|
34
|
+
return ' '*indent + head + snippet + tail + '\n' \
|
|
35
|
+
+ ' '*(indent+self.pointer-start+len(head)) + '^'
|
|
36
|
+
|
|
37
|
+
def __str__(self):
|
|
38
|
+
snippet = self.get_snippet()
|
|
39
|
+
where = " in \"%s\", line %d, column %d" \
|
|
40
|
+
% (self.name, self.line+1, self.column+1)
|
|
41
|
+
if snippet is not None:
|
|
42
|
+
where += ":\n"+snippet
|
|
43
|
+
return where
|
|
44
|
+
|
|
45
|
+
class YAMLError(Exception):
|
|
46
|
+
pass
|
|
47
|
+
|
|
48
|
+
class MarkedYAMLError(YAMLError):
|
|
49
|
+
|
|
50
|
+
def __init__(self, context=None, context_mark=None,
|
|
51
|
+
problem=None, problem_mark=None, note=None):
|
|
52
|
+
self.context = context
|
|
53
|
+
self.context_mark = context_mark
|
|
54
|
+
self.problem = problem
|
|
55
|
+
self.problem_mark = problem_mark
|
|
56
|
+
self.note = note
|
|
57
|
+
|
|
58
|
+
def __str__(self):
|
|
59
|
+
lines = []
|
|
60
|
+
if self.context is not None:
|
|
61
|
+
lines.append(self.context)
|
|
62
|
+
if self.context_mark is not None \
|
|
63
|
+
and (self.problem is None or self.problem_mark is None
|
|
64
|
+
or self.context_mark.name != self.problem_mark.name
|
|
65
|
+
or self.context_mark.line != self.problem_mark.line
|
|
66
|
+
or self.context_mark.column != self.problem_mark.column):
|
|
67
|
+
lines.append(str(self.context_mark))
|
|
68
|
+
if self.problem is not None:
|
|
69
|
+
lines.append(self.problem)
|
|
70
|
+
if self.problem_mark is not None:
|
|
71
|
+
lines.append(str(self.problem_mark))
|
|
72
|
+
if self.note is not None:
|
|
73
|
+
lines.append(self.note)
|
|
74
|
+
return '\n'.join(lines)
|
|
75
|
+
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
|
|
2
|
+
# Abstract classes.
|
|
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
|
+
def __repr__(self):
|
|
9
|
+
attributes = [key for key in ['anchor', 'tag', 'implicit', 'value']
|
|
10
|
+
if hasattr(self, key)]
|
|
11
|
+
arguments = ', '.join(['%s=%r' % (key, getattr(self, key))
|
|
12
|
+
for key in attributes])
|
|
13
|
+
return '%s(%s)' % (self.__class__.__name__, arguments)
|
|
14
|
+
|
|
15
|
+
class NodeEvent(Event):
|
|
16
|
+
def __init__(self, anchor, start_mark=None, end_mark=None):
|
|
17
|
+
self.anchor = anchor
|
|
18
|
+
self.start_mark = start_mark
|
|
19
|
+
self.end_mark = end_mark
|
|
20
|
+
|
|
21
|
+
class CollectionStartEvent(NodeEvent):
|
|
22
|
+
def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None,
|
|
23
|
+
flow_style=None):
|
|
24
|
+
self.anchor = anchor
|
|
25
|
+
self.tag = tag
|
|
26
|
+
self.implicit = implicit
|
|
27
|
+
self.start_mark = start_mark
|
|
28
|
+
self.end_mark = end_mark
|
|
29
|
+
self.flow_style = flow_style
|
|
30
|
+
|
|
31
|
+
class CollectionEndEvent(Event):
|
|
32
|
+
pass
|
|
33
|
+
|
|
34
|
+
# Implementations.
|
|
35
|
+
|
|
36
|
+
class StreamStartEvent(Event):
|
|
37
|
+
def __init__(self, start_mark=None, end_mark=None, encoding=None):
|
|
38
|
+
self.start_mark = start_mark
|
|
39
|
+
self.end_mark = end_mark
|
|
40
|
+
self.encoding = encoding
|
|
41
|
+
|
|
42
|
+
class StreamEndEvent(Event):
|
|
43
|
+
pass
|
|
44
|
+
|
|
45
|
+
class DocumentStartEvent(Event):
|
|
46
|
+
def __init__(self, start_mark=None, end_mark=None,
|
|
47
|
+
explicit=None, version=None, tags=None):
|
|
48
|
+
self.start_mark = start_mark
|
|
49
|
+
self.end_mark = end_mark
|
|
50
|
+
self.explicit = explicit
|
|
51
|
+
self.version = version
|
|
52
|
+
self.tags = tags
|
|
53
|
+
|
|
54
|
+
class DocumentEndEvent(Event):
|
|
55
|
+
def __init__(self, start_mark=None, end_mark=None,
|
|
56
|
+
explicit=None):
|
|
57
|
+
self.start_mark = start_mark
|
|
58
|
+
self.end_mark = end_mark
|
|
59
|
+
self.explicit = explicit
|
|
60
|
+
|
|
61
|
+
class AliasEvent(NodeEvent):
|
|
62
|
+
pass
|
|
63
|
+
|
|
64
|
+
class ScalarEvent(NodeEvent):
|
|
65
|
+
def __init__(self, anchor, tag, implicit, value,
|
|
66
|
+
start_mark=None, end_mark=None, style=None):
|
|
67
|
+
self.anchor = anchor
|
|
68
|
+
self.tag = tag
|
|
69
|
+
self.implicit = implicit
|
|
70
|
+
self.value = value
|
|
71
|
+
self.start_mark = start_mark
|
|
72
|
+
self.end_mark = end_mark
|
|
73
|
+
self.style = style
|
|
74
|
+
|
|
75
|
+
class SequenceStartEvent(CollectionStartEvent):
|
|
76
|
+
pass
|
|
77
|
+
|
|
78
|
+
class SequenceEndEvent(CollectionEndEvent):
|
|
79
|
+
pass
|
|
80
|
+
|
|
81
|
+
class MappingStartEvent(CollectionStartEvent):
|
|
82
|
+
pass
|
|
83
|
+
|
|
84
|
+
class MappingEndEvent(CollectionEndEvent):
|
|
85
|
+
pass
|
|
86
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
|
|
2
|
+
__all__ = ['BaseLoader', 'FullLoader', 'SafeLoader', 'Loader', 'UnsafeLoader']
|
|
3
|
+
|
|
4
|
+
from .reader import *
|
|
5
|
+
from .scanner import *
|
|
6
|
+
from .parser import *
|
|
7
|
+
from .composer import *
|
|
8
|
+
from .constructor import *
|
|
9
|
+
from .resolver import *
|
|
10
|
+
|
|
11
|
+
class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver):
|
|
12
|
+
|
|
13
|
+
def __init__(self, stream):
|
|
14
|
+
Reader.__init__(self, stream)
|
|
15
|
+
Scanner.__init__(self)
|
|
16
|
+
Parser.__init__(self)
|
|
17
|
+
Composer.__init__(self)
|
|
18
|
+
BaseConstructor.__init__(self)
|
|
19
|
+
BaseResolver.__init__(self)
|
|
20
|
+
|
|
21
|
+
class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver):
|
|
22
|
+
|
|
23
|
+
def __init__(self, stream):
|
|
24
|
+
Reader.__init__(self, stream)
|
|
25
|
+
Scanner.__init__(self)
|
|
26
|
+
Parser.__init__(self)
|
|
27
|
+
Composer.__init__(self)
|
|
28
|
+
FullConstructor.__init__(self)
|
|
29
|
+
Resolver.__init__(self)
|
|
30
|
+
|
|
31
|
+
class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver):
|
|
32
|
+
|
|
33
|
+
def __init__(self, stream):
|
|
34
|
+
Reader.__init__(self, stream)
|
|
35
|
+
Scanner.__init__(self)
|
|
36
|
+
Parser.__init__(self)
|
|
37
|
+
Composer.__init__(self)
|
|
38
|
+
SafeConstructor.__init__(self)
|
|
39
|
+
Resolver.__init__(self)
|
|
40
|
+
|
|
41
|
+
class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
|
|
42
|
+
|
|
43
|
+
def __init__(self, stream):
|
|
44
|
+
Reader.__init__(self, stream)
|
|
45
|
+
Scanner.__init__(self)
|
|
46
|
+
Parser.__init__(self)
|
|
47
|
+
Composer.__init__(self)
|
|
48
|
+
Constructor.__init__(self)
|
|
49
|
+
Resolver.__init__(self)
|
|
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
|
+
|
|
57
|
+
def __init__(self, stream):
|
|
58
|
+
Reader.__init__(self, stream)
|
|
59
|
+
Scanner.__init__(self)
|
|
60
|
+
Parser.__init__(self)
|
|
61
|
+
Composer.__init__(self)
|
|
62
|
+
Constructor.__init__(self)
|
|
63
|
+
Resolver.__init__(self)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
|
|
2
|
+
class Node(object):
|
|
3
|
+
def __init__(self, tag, value, start_mark, end_mark):
|
|
4
|
+
self.tag = tag
|
|
5
|
+
self.value = value
|
|
6
|
+
self.start_mark = start_mark
|
|
7
|
+
self.end_mark = end_mark
|
|
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
|
+
class ScalarNode(Node):
|
|
26
|
+
id = 'scalar'
|
|
27
|
+
def __init__(self, tag, value,
|
|
28
|
+
start_mark=None, end_mark=None, style=None):
|
|
29
|
+
self.tag = tag
|
|
30
|
+
self.value = value
|
|
31
|
+
self.start_mark = start_mark
|
|
32
|
+
self.end_mark = end_mark
|
|
33
|
+
self.style = style
|
|
34
|
+
|
|
35
|
+
class CollectionNode(Node):
|
|
36
|
+
def __init__(self, tag, value,
|
|
37
|
+
start_mark=None, end_mark=None, flow_style=None):
|
|
38
|
+
self.tag = tag
|
|
39
|
+
self.value = value
|
|
40
|
+
self.start_mark = start_mark
|
|
41
|
+
self.end_mark = end_mark
|
|
42
|
+
self.flow_style = flow_style
|
|
43
|
+
|
|
44
|
+
class SequenceNode(CollectionNode):
|
|
45
|
+
id = 'sequence'
|
|
46
|
+
|
|
47
|
+
class MappingNode(CollectionNode):
|
|
48
|
+
id = 'mapping'
|
|
49
|
+
|