TL;DR love of Satan On Fri, Apr 26, 2019 at 2:48 PM Derek Dagit <da...@apache.org> wrote:
> I think it should be consistent. > > The first line establishes an indentation width of 2 spaces. > > The second line is a list element that itself is a map of one entry, and > your multi-line text is the value for this entry. > > Since it is nested, in effect we need to indent twice, and so I think that > is why 4 spaces works when 2 does not in this case. > > On Fri, Apr 26, 2019 at 2:32 PM Walt Karas <wka...@verizonmedia.com > .invalid> > wrote: > > > So, it seems that with YAML, it sometimes matters whether you use 4 > spaces > > of indentation rather that 2 space of indentation. Is there some reason > we > > are choosing to use YAML, other than sheer love of Satan? > > > > $ cat load.py > > > > import yaml > > > > import sys > > > > f = open(sys.argv[1], 'r') > > > > y = yaml.load(f) > > > > print(y) > > > > $ > > > > $ cat y1.yaml > > > > a: > > > > - b: | > > > > one > > > > two > > > > - c: | > > > > three > > > > four > > > > $ > > > > $ cat y2.yaml > > > > a: > > > > - b: | > > > > one > > > > two > > > > - c: | > > > > three > > > > four > > > > $ > > > > $ python load.py y1.yaml > > > > {'a': [{'b': 'one\ntwo\n'}, {'c': 'three\nfour\n'}]} > > > > $ > > > > $ python load.py y2.yaml > > > > Traceback (most recent call last): > > > > File "load.py", line 4, in <module> > > > > y = yaml.load(f) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/__init__.py", line > 71, > > in load > > > > return loader.get_single_data() > > > > File "/usr/local/lib/python2.7/site-packages/yaml/constructor.py", line > > 37, in get_single_data > > > > node = self.get_single_node() > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 36, > > in get_single_node > > > > document = self.compose_document() > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 55, > > in compose_document > > > > node = self.compose_node(None, None) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 84, > > in compose_node > > > > node = self.compose_mapping_node(anchor) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 133, > > in compose_mapping_node > > > > item_value = self.compose_node(node, item_key) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 82, > > in compose_node > > > > node = self.compose_sequence_node(anchor) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 111, > > in compose_sequence_node > > > > node.value.append(self.compose_node(node, index)) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 84, > > in compose_node > > > > node = self.compose_mapping_node(anchor) > > > > File "/usr/local/lib/python2.7/site-packages/yaml/composer.py", line > 127, > > in compose_mapping_node > > > > while not self.check_event(MappingEndEvent): > > > > File "/usr/local/lib/python2.7/site-packages/yaml/parser.py", line 98, > in > > check_event > > > > self.current_event = self.state() > > > > File "/usr/local/lib/python2.7/site-packages/yaml/parser.py", line 428, > > in parse_block_mapping_key > > > > if self.check_token(KeyToken): > > > > File "/usr/local/lib/python2.7/site-packages/yaml/scanner.py", line > 115, > > in check_token > > > > while self.need_more_tokens(): > > > > File "/usr/local/lib/python2.7/site-packages/yaml/scanner.py", line > 149, > > in need_more_tokens > > > > self.stale_possible_simple_keys() > > > > File "/usr/local/lib/python2.7/site-packages/yaml/scanner.py", line > 289, > > in stale_possible_simple_keys > > > > "could not find expected ':'", self.get_mark()) > > > > yaml.scanner.ScannerError: while scanning a simple key > > > > in "y2.yaml", line 3, column 5 > > > > could not find expected ':' > > > > in "y2.yaml", line 4, column 5 > > >