summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* _yaml: Remove 'is_node', which is not used in the codebase anymorebschubert/node-no-isnodeBenjamin Schubert2019-07-031-20/+0
| | | | | A direct replacement would be isinstance(obj, MappingNode) if someone really needs it.
* Merge branch 'bschubert/new-node-compose' into 'bschubert/new-node-api'Benjamin Schubert2019-07-0310-232/+225
|\ | | | | | | | | Rework node compose API See merge request BuildStream/buildstream!1442
| * _yaml: Move 'node_composite' to a method on 'MappingNode'bschubert/new-node-composeBenjamin Schubert2019-07-0310-68/+64
| | | | | | | | | | - Also take care of node_composite_move in the same way. - Adapt all calling places
| * _yaml: move 'composite_dict' to 'MappingNode' as '_composite'Benjamin Schubert2019-07-032-18/+14
| |
| * _yaml: Extract parts of 'composite_dict' to each type of 'Node'Benjamin Schubert2019-07-032-49/+62
| | | | | | | | | | | | We had a large if-else clause in 'composite_dict' that was looking at the type of the source and acting based on that. This is easier to handle once split on each type of 'Node'
| * _yaml: Move actual composition logic to MappingNodeBenjamin Schubert2019-07-032-67/+51
| |
| * _yaml: move 'is_composite_list' as a Node memberBenjamin Schubert2019-07-032-44/+48
| |
| * tests/yaml: Stop using 'composite_dict' and use 'composite' insteadBenjamin Schubert2019-07-032-8/+8
|/ | | | | 'composite_dict' is a more internal method and we don't really need to access it there
* Merge branch 'bschubert/node-api-noassertions' into 'bschubert/new-node-api'Benjamin Schubert2019-07-036-58/+47
|\ | | | | | | | | _yaml: Move 'node_final_assertions' to 'Node._assert_fully_composited' See merge request BuildStream/buildstream!1444
| * _yaml: Move 'node_final_assertions' to 'Node._assert_fully_composited'bschubert/node-api-noassertionsBenjamin Schubert2019-07-026-58/+47
|/
* Merge branch 'bschubert/node-api-nosanitize' into 'bschubert/new-node-api'Benjamin Schubert2019-07-0280-440/+375
|\ | | | | | | | | Remove the need for 'node_sanitize' See merge request BuildStream/buildstream!1438
| * _yaml: remove node_sanitizebschubert/node-api-nosanitizeBenjamin Schubert2019-07-017-71/+20
| | | | | | | | | | | | | | | | | | Some call places do not need calls to 'node_sanitize' anymore, therefore removing the call entirely. Other still use it for convenience, but that doesn't seem the right way to do it for consistency. Those places have been replaced by calls to 'Node.strip_node_info()'.
| * _yaml: Decomission 'dump()'. 'roundtrip_dump' is an equivalent function nowBenjamin Schubert2019-07-016-22/+7
| | | | | | | | | | Remove completely '_yaml.dump()' and replace all notions and call by 'roundtrip_dump'
| * tests: Change all calls to _yaml.dump to _yaml.rountrip_dumpBenjamin Schubert2019-07-0166-311/+292
| | | | | | | | | | Now that both are equivalent, we can skip the sanitization part before the yaml call.
| * _yaml: Automatically represent Yaml nodes into yamlBenjamin Schubert2019-07-011-2/+16
| | | | | | | | | | This removes the need of calling _yaml.dump(), as roundtrip_dump is now equivalent.
| * _yaml: Stop stringifying manually in roundtrip_dumpBenjamin Schubert2019-07-011-27/+14
| | | | | | | | | | | | This removes the need of manually stringifying the values in roundtrip_dump by registering special Ruamel representer for each value we might expect.
| * _cachekey: Remove the 'node_sanitization' done before the json stringBenjamin Schubert2019-07-017-7/+26
|/ | | | | | | | Since ujson already sorts the keys, we just need to be able to jsonify Nodes sensibly. This is done by implementing __json__ on the 'Node' base class. This does not break the cache keys.
* _yaml: Remove 'node_find_target' and replace by 'MappingNode.find'Benjamin Schubert2019-07-014-68/+70
|
* _yaml: Remove 'key' from node_find_targetBenjamin Schubert2019-07-013-12/+7
| | | | | | | - node_find_target with 'key' is only used once in the codebase. We can remove and simplify this function - Allow 'MappingNode.get_node()' to be called without any 'expected_types'
* _yaml: Remove 'node_set'. Now use __setitem__Benjamin Schubert2019-07-0115-98/+98
| | | | | | - Implement __setitem__ on 'MappingNode' - Implement __setitem__ on 'SequenceNode' - Adapt all call sites to use the new calling way.
* _yaml: Remove 'node_items' and add 'MappingNode.items()'Benjamin Schubert2019-07-0110-86/+32
| | | | | | One difference is that 'MappingNode.items()' does not strip the provenance from scalars and lists, which ends up not affecting the code much.
* _yaml: Introduce 'MappingNode.values()'Benjamin Schubert2019-07-015-9/+17
| | | | | | | This is to mimic the 'dict.values()' interface. - Adapt parts of the code calling 'node_items' but ignoring the first value to use this instead
* _yaml: Remove 'node_keys' and add 'MappingNode.keys' to replace itBenjamin Schubert2019-07-017-29/+15
| | | | | This mimics the dict.keys() method but returns a list instead of a dict_keys, for cython performance reasons
* _yaml: Remove 'node_del' and support `del mapping[key]`Benjamin Schubert2019-07-018-28/+20
| | | | | - Also add a convenience method 'safe_del' catching the exception when we don't care if the value was there or not.
* _yaml: Remove 'node_copy' and add 'Node.copy()'Benjamin Schubert2019-07-017-85/+51
| | | | Also adaprt every part of the code calling it
* _yaml: Add a 'get_node' on Mapping, when return type can be of multiple typesBenjamin Schubert2019-07-013-12/+27
| | | | | | | | | | | Sometimes, we might want to have a list or a string, in which case, we can now use 'get_node', which can return multiple types. This method doesn't contain a 'default' value, as building a 'Node' from it would be hard. We therefore just have a 'allow_none' flag that allows returning 'None' when the value is not found. - includes: use the new 'get_node' instead of trying multiple versions
* _yaml: Never create base 'Node' directlyBenjamin Schubert2019-07-012-5/+8
| | | | We shouldn't have to create normal nodes ever. Let's ensure we don't
* _yaml: Remove 'node_get' and migrate all remaining calls to new APIBenjamin Schubert2019-07-0119-167/+67
|
* doc/bst2html: Remove usage of 'node_get' and use new APIBenjamin Schubert2019-07-011-13/+11
|
* element: Remove `node_get_member` and all references to itBenjamin Schubert2019-07-014-47/+3
| | | | This can now be done more easily with the Node api
* plugin: remove 'node_get_list_element'Benjamin Schubert2019-07-011-37/+1
| | | | | | | The new yaml API is able of getting these access with the same error messages handling. Having this helper is therefore not useful anymore.
* element: remove 'node_subst_list_element'Benjamin Schubert2019-07-012-43/+1
| | | | | This method is unused and can be easily reimplemented with the new Node API by looping over nodes.
* tests: remove 'node_get_yaml_provenance()' helper and replace with the new APIBenjamin Schubert2019-07-016-62/+19
| | | | | | This function is hard to make generic and, with the new API, the access is simplified. Therefore, removing this function and migrating all its usages
* _yaml: Introduce 'get_sequence()' and 'sequence_at()'/'mapping_at()'Benjamin Schubert2019-07-0119-70/+123
| | | | | | | | | - Adding 'get_sequence' on MappingNode to access sequences in a mapping - Adding 'sequence_at' on SequenceNode to access sequences in a sequence - Adding 'mapping_at' on SequenceNode to access mappings in a sequence Using "*_at" in sequences allows us to quickly understand if we are dealing with a sequence or a mapping.
* _yaml: Remove use of expected_type=None in 'node_get()'Benjamin Schubert2019-07-013-13/+11
| | | | | | | In a strongly typed API with Node, having a 'None' as expected type is hard to make nice. Moreover, this is rarely used in the codebase. Thus, adapting the call sites to not use 'None' as an expected type.
* _yaml: Add 'as_int()' on ScalarNodeBenjamin Schubert2019-07-018-15/+33
| | | | | | - Add the 'as_int()' method on 'ScalarNode' to replace 'node_get(mapping, key, int)' - Adapt all call sites to use the new API
* _yaml: Add 'as_bool()' and 'is_none()' to ScalarNodeBenjamin Schubert2019-07-0116-34/+58
| | | | | | | | | | | - 'as_bool()' casts a ScalarNode into a boolean, understanding both 'True' and 'False' as truthy-falsy values, as per node_get(type=bool) behavior - 'is_none()' allwos checking whether the scalar node contains a 'None' value. Since 'None' cannot be used when working with booleans, we need to have a way of checking for 'None' when we actually need the information of whether the value is unset. - Adapt all call places to use the new API
* _yaml: Add 'as_str()' on ScalarNode and 'get_scalar()' on MappingNodeBenjamin Schubert2019-07-0146-157/+189
| | | | | | | | | | - 'get_scalar()' allows retrieving a scalar node from a mapping. - 'as_str()' casts a ScalarNode into a string (thus removing the node information). Both together, those replace 'node_get(mapping, key, type=str)' but also allow retrieving the 'Node' itself, which will allow in the future lazier provenance computation.
* _yaml: add 'get_mapping()' to MappingNodeBenjamin Schubert2019-07-0119-77/+101
| | | | | | | | This allows to get a mapping node from another 'MappingNode', replacing 'node_get(my_mapping, key, type=dict)' Also changes all places where 'node_get' was called like that by the new API.
* _yaml: Introduce a 'Sequence' NodeBenjamin Schubert2019-07-011-10/+20
| | | | | | | This allows us to represent sequences (lists) more efficiently. This is the third type that is needed in order to know what kind of datastructure we are handling in our graph.
* _yaml: Introduce a 'Mapping' Node classBenjamin Schubert2019-07-013-23/+38
| | | | | This allows us to specialize the base 'Node' class to store mappings (dicts) more efficiently.
* _yaml: Introduce a Scalar Node to encapsulate str/int/boolsBenjamin Schubert2019-07-011-12/+33
| | | | | | | | This node specializes the 'Node' class to represent a scalar value. This allows us to let users access leaf Nodes in the graph without having to find them with `node_find_target`, and also will allow us lazier computation of node provenance in some cases.
* Merge branch 'aevri/cascache_nits' into 'master'bst-marge-bot2019-06-271-2/+5
|\ | | | | | | | | cascache.py: pick some nits See merge request BuildStream/buildstream!1433
| * cascache: add_object, assert path if link_directlyAngelos Evripiotis2019-06-271-0/+3
| |
| * cascache: refactor, rm some unused exception varsAngelos Evripiotis2019-06-271-2/+2
|/
* Merge branch 'juerg/source-checkout' into 'master'bst-marge-bot2019-06-2726-60/+74
|\ | | | | | | | | Fetch sources as needed for bst source checkout See merge request BuildStream/buildstream!1427
| * Regenerate man pagesJürg Billeter2019-06-2722-31/+65
| |
| * Fetch sources as needed for bst source checkoutJürg Billeter2019-06-274-29/+9
|/ | | | | This removes the --fetch option of bst source checkout, always enabling fetch support. This is in line with fetching subprojects as needed.
* Merge branch 'raoul/915-capabilities-service' into 'master'bst-marge-bot2019-06-2616-120/+252
|\ | | | | | | | | | | | | Capabilities service Closes #915 See merge request BuildStream/buildstream!1410
| * artifact.proto: Remove ArtifactStatus methodraoul/915-capabilities-serviceRaoul Hidalgo Charman2019-06-263-111/+4
| | | | | | | | | | | | Not needed now that capabilities service is used. Part of #915