get_parent_map_chains
get dict of parent maps with chain of their children as list
Generates a dictionary of all the MaciDataObj's currently mapped parent attribute name references to its children, and returns a dict of the maps with the values represented in a chain-like structure using lists.
Useful if it is desired to view all parent attribute names with their interconnected child mappings following each other in order.
data.get_parent_map_chains() -> dict[str, list[str]] | list[str]
Basic Example getting all current parent mappings of the MaciDataObj as chains with no parameters
dict_data = data.get_parent_map_chains()In this example, we simply use the get_parent_map_chains method on the MaciDataObj to get a generated dict of all the current parent attribute names with their child mappings, currently held inside the maci object, represented as a dictionary, and assign the returned data to a variable.
Example output of a basic parent map with the children following it as a chain
{'attr1': ['attr1', 'attr2', 'attr3', 'attr4', 'attr5']}Parent maps have their own parent key name matching its attribute name and value being a list of attribute names starting with the parent as the first name, then children following one after another.
You may also pass in the known parent key name of the chain you wish to retrieve using the "parent_attr" optional positional parameter.
Example passing the name "attr1" in the method to receive its chain output
data.get_parent_map_chains('attr1')['attr1', 'attr2', 'attr3', 'attr4', 'attr5']As mentioned in the language section Map Assignment Glyph, It is possible to have a name be a parent and a child simultaneously. This is evaluated whether a child that is following a parent also has children following it and they are all interlinked together one after another. However, if it is just a parent and not a child, it will gain its own key name with its own chain.
If a child breaks off from the chain being reassigned to a new value and has children following it, it will gain its own chain separate from the one it was linked to. In addition, if a child happens to break off from the chain by being unmapped (See unmap_attr) or deleted, the child will just be released from the chain mapping. However, if the child that broke off was unmapped or deleted and was also a parent, the next child will inherit the role of a parent if it also has children and gain its own chain.
Example output of "attr3" breaking off chain by reassignment gaining its own chain
{'attr1': ['attr1', 'attr2'], 'attr3': ['attr3', 'attr4', 'attr5']}Example output of "attr3" breaking off chain by unmap or deletion and next child gains its own chain
key-ring exception
If a chain attempts to generate with multiple children mapped to the same parent, an exception will be thrown by default stating it cannot build a chain with multiple children linked to the same parent. That behavior would describe more of a key-ring like structure over a chain. See Map Assignment Glyph for more on that. If you wish to ignore that check, use dup_link_check parameter to disable it, but your chains may break off into separate chains if encountered as explained above.
For more information on the mapping concept, see Map Assignment Glyph in the language section and map_attr.
partner methods
Methods that provide related utility to this method
map_attr -> Map an attribute name unmap_attr -> Unmap an attribute name
parameters & arguments
Describes all parameter functionality and accepted data types
parent_attr: str | None
Optional first positional parameter. Accepts strings or None. Default = None.
Use this parameter to retrieve a chain from a specific parent attribute name
dup_link_check: bool
Optional parameter. Accepts booleans. Default = True.
Protects against duplicate child links being built to the parent. If disabled and a duplicate is found, it will still return chain(s), but will cut the chain's previous child links to the parent and only continue the chain from the last child to the parent and retain any chain links following the last child.
It is worth stating, this method does not break/affect the actual behavior of the attributes being linked together, as the get_parent_map_chains method only fresh builds a representation of the attributes linked together in the form of a chain for your reference to help understand what attribute names are connected to each other. The true linking is controlled by other mechanics, and any real duplicate links are not affected as that is acceptable behavior.
Last updated