cutcutcodec.core.opti.cache.clean.graph.clean_graph

cutcutcodec.core.opti.cache.clean.graph.clean_graph(graph: MultiDiGraph) MultiDiGraph[source]

Update inplace the cache attribute of each nodes of the graph.

Parameters

graphnetworkx.MultiDiGraph

The assembly graph.

Returns

updated_graphnetworkx.MultiDiGraph

The same graph with the updated cache node attribute. The underground data are shared, operate in-place.

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.clean.graph import clean_graph
>>> container_out = ContainerOutput(
...     FilterAudioSubclip(GeneratorAudioNoise(0).out_streams, 0, 1).out_streams
... )
>>> graph = tree_to_graph(container_out)
>>> pprint(dict(clean_graph(graph).nodes("cache")))
{'container_output_1': ('099c022d457eb220c36ae22a75bf1998', {}),
 'filter_audio_subclip_1': ('10355c7ad764f111b15798bed884a821', {}),
 'generator_audio_noise_1': ('4dc3de85c734bfd23024c381599bfe3f', {})}
>>> pprint(list(graph.edges(keys=True, data=True)))
[('filter_audio_subclip_1',
  'container_output_1',
  '0->0',
  {'cache': ('10355c7ad764f111b15798bed884a821|0', {})}),
 ('generator_audio_noise_1',
  'filter_audio_subclip_1',
  '0->0',
  {'cache': ('4dc3de85c734bfd23024c381599bfe3f|0', {})})]
>>> for _, data in graph.nodes(data=True):
...     data["cache"][1]["key"] = "value"
...
>>> for *_, data in graph.edges(keys=True, data=True):
...     data["cache"][1]["key"] = "value"
...
>>> graph.nodes["filter_audio_subclip_1"]["state"]["duration_max"] = "2"
>>> pprint(dict(clean_graph(graph).nodes("cache")))
{'container_output_1': ('8978fa1dc585c4d400fb36ad711ba95f', {}),
 'filter_audio_subclip_1': ('0c5c8e9591d25413c94a4251a3a14444', {}),
 'generator_audio_noise_1': ('4dc3de85c734bfd23024c381599bfe3f',
                             {'key': 'value'})}
>>> pprint(list(graph.edges(keys=True, data=True)))
[('filter_audio_subclip_1',
  'container_output_1',
  '0->0',
  {'cache': ('0c5c8e9591d25413c94a4251a3a14444|0', {})}),
 ('generator_audio_noise_1',
  'filter_audio_subclip_1',
  '0->0',
  {'cache': ('4dc3de85c734bfd23024c381599bfe3f|0', {'key': 'value'})})]
>>>