cutcutcodec.core.opti.cache.hashes.graph.compute_graph_items_hash

cutcutcodec.core.opti.cache.hashes.graph.compute_graph_items_hash(graph: MultiDiGraph) dict[str | tuple[str, str, str], str][source]

Compute a signature for each node and edge, which reflects its state in the graph.

This is mean to detecting a change of attributes in one of the upstream elements.

Parameters

graphnetworkx.MultiDiGraph

The assembly graph.

Returns

hashesdict[str | tuple[str, str, str], str]

To each node and edge name, associate its state as a string.

Notes

The graph must not contain any cycles because the function would never returns.

Examples

>>> from pprint import pprint
>>> from cutcutcodec.core.classes.container import ContainerOutput
>>> from cutcutcodec.core.compilation.tree_to_graph import tree_to_graph
>>> from cutcutcodec.core.filter.audio.subclip import FilterAudioSubclip
>>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise
>>> from cutcutcodec.core.opti.cache.hashes.graph import compute_graph_items_hash
>>> container_out = ContainerOutput(
...     FilterAudioSubclip(GeneratorAudioNoise(0).out_streams, 0, 1).out_streams
... )
>>> graph = tree_to_graph(container_out)
>>> pprint(compute_graph_items_hash(graph))  
{'container_output_1': '099c022d457eb220c36ae22a75bf1998',
 'filter_audio_subclip_1': '10355c7ad764f111b15798bed884a821',
 'generator_audio_noise_1': '4dc3de85c734bfd23024c381599bfe3f',
 ('filter_audio_subclip_1', 'container_output_1', '0->0'): '10355c7ad764f111b15798bed884a821|0',
 ('generator_audio_noise_1', '...subclip_1', '0->0'): '4dc3de85c734bfd23024c381599bfe3f|0'}
>>>