Skip to content

Commit 401b55e

Browse files
authored
Merge pull request #7 from AcademySoftwareFoundation/hotfix/node_uniqueness
PR: Prefix node names to ensure uniqueness.
2 parents d0268d9 + e6c8616 commit 401b55e

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

opencolorio_config_aces/config/reference/discover/graph.py

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,18 @@
3232
__status__ = 'Production'
3333

3434
__all__ = [
35-
'build_aces_conversion_graph', 'node_to_ctl_transform',
36-
'ctl_transform_to_node', 'filter_nodes', 'conversion_path',
37-
'plot_aces_conversion_graph'
35+
'NODE_NAME_SEPARATOR', 'build_aces_conversion_graph',
36+
'node_to_ctl_transform', 'ctl_transform_to_node', 'filter_nodes',
37+
'conversion_path', 'plot_aces_conversion_graph'
3838
]
3939

40+
NODE_NAME_SEPARATOR = '/'
41+
"""
42+
*aces-dev* conversion graph node name separator.
43+
44+
NODE_NAME_SEPARATOR : unicode
45+
"""
46+
4047

4148
def build_aces_conversion_graph(ctl_transforms):
4249
"""
@@ -74,6 +81,7 @@ def build_aces_conversion_graph(ctl_transforms):
7481
source = ctl_transform.source
7582
target = ctl_transform.target
7683
family = ctl_transform.family
84+
type_ = ctl_transform.type
7785

7886
if source is None or target is None:
7987
logging.warning(f'"{ctl_transform}" has either a missing source '
@@ -99,6 +107,11 @@ def build_aces_conversion_graph(ctl_transforms):
99107
f'skipping!')
100108
continue
101109

110+
source = (source if source in ('ACES2065-1', 'OCES') else
111+
f'{type_}{NODE_NAME_SEPARATOR}{source}')
112+
target = (target if target in ('ACES2065-1', 'OCES') else
113+
f'{type_}{NODE_NAME_SEPARATOR}{target}')
114+
102115
# Serializing the data for "Graphviz AGraph".
103116
serialized = codecs.encode(pickle.dumps(ctl_transform, 4),
104117
'base64').decode()
@@ -138,7 +151,7 @@ def node_to_ctl_transform(graph, node):
138151
>>> ctl_transforms = classify_aces_ctl_transforms(
139152
... discover_aces_ctl_transforms())
140153
>>> graph = build_aces_conversion_graph(ctl_transforms)
141-
>>> node_to_ctl_transform(graph, 'P3D60_48nits') # doctest: +ELLIPSIS
154+
>>> node_to_ctl_transform(graph, 'ODT/P3D60_48nits') # doctest: +ELLIPSIS
142155
CTLTransform('odt...p3...ODT.Academy.P3D60_48nits.ctl')
143156
"""
144157

@@ -166,9 +179,9 @@ def ctl_transform_to_node(graph, ctl_transform):
166179
>>> ctl_transforms = classify_aces_ctl_transforms(
167180
... discover_aces_ctl_transforms())
168181
>>> graph = build_aces_conversion_graph(ctl_transforms)
169-
>>> ctl_transform = node_to_ctl_transform(graph, 'P3D60_48nits')
182+
>>> ctl_transform = node_to_ctl_transform(graph, 'ODT/P3D60_48nits')
170183
>>> ctl_transform_to_node(graph, ctl_transform)
171-
'P3D60_48nits'
184+
'ODT/P3D60_48nits'
172185
"""
173186

174187
for node in graph.nodes:
@@ -200,7 +213,7 @@ def filter_nodes(graph, filterers=None):
200213
... discover_aces_ctl_transforms())
201214
>>> graph = build_aces_conversion_graph(ctl_transforms)
202215
>>> sorted(filter_nodes(graph, [lambda x: x.genus == 'p3']))[0]
203-
'P3D60_48nits'
216+
'ODT/P3D60_48nits'
204217
"""
205218

206219
if filterers is None:
@@ -242,9 +255,9 @@ def conversion_path(graph, source, target):
242255
>>> ctl_transforms = classify_aces_ctl_transforms(
243256
... discover_aces_ctl_transforms())
244257
>>> graph = build_aces_conversion_graph(ctl_transforms)
245-
>>> conversion_path(graph, 'Venice_SLog3_SGamut3', 'P3D60_48nits')
246-
[('Venice_SLog3_SGamut3', 'ACES2065-1'), ('ACES2065-1', 'OCES'), \
247-
('OCES', 'P3D60_48nits')]
258+
>>> conversion_path(graph, 'IDT/Venice_SLog3_SGamut3', 'ODT/P3D60_48nits')
259+
[('IDT/Venice_SLog3_SGamut3', 'ACES2065-1'), ('ACES2065-1', 'OCES'), \
260+
('OCES', 'ODT/P3D60_48nits')]
248261
"""
249262

250263
path = nx.shortest_path(graph, source, target)
@@ -273,7 +286,7 @@ def plot_aces_conversion_graph(graph, filename, prog='dot', args=''):
273286
Returns
274287
-------
275288
AGraph
276-
*Pyraphviz* graph.
289+
*PyGraphviz* graph.
277290
"""
278291

279292
agraph = nx.nx_agraph.to_agraph(graph)
@@ -356,14 +369,16 @@ def plot_aces_conversion_graph(graph, filename, prog='dot', args=''):
356369
filtered_ctl_transforms = filter_ctl_transforms(classified_ctl_transforms)
357370

358371
graph = build_aces_conversion_graph(filtered_ctl_transforms)
372+
print(graph.nodes)
359373

360374
message_box('Retrieving a "CTL" Transform from a Node')
361-
print(node_to_ctl_transform(graph, 'P3D60_48nits'))
375+
print(node_to_ctl_transform(graph, 'ODT/P3D60_48nits'))
362376

363377
message_box('Retrieving a Node from a "CTL" Transform')
364378
print(
365379
ctl_transform_to_node(graph,
366-
node_to_ctl_transform(graph, 'P3D60_48nits')))
380+
node_to_ctl_transform(graph,
381+
'ODT/P3D60_48nits')))
367382

368383
message_box('Filtering "output_transform" Family')
369384
pprint(

opencolorio_config_aces/config/reference/generate/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
from opencolorio_config_aces.config.generation import (
2222
ConfigData, colorspace_factory, generate_config)
23+
from opencolorio_config_aces.config.reference.discover.graph import (
24+
NODE_NAME_SEPARATOR)
2325
from opencolorio_config_aces.config.reference import (
2426
build_aces_conversion_graph, classify_aces_ctl_transforms, conversion_path,
2527
discover_aces_ctl_transforms, filter_nodes, filter_ctl_transforms,
@@ -465,9 +467,9 @@ def create_builtin_transform(style):
465467
for edge in path:
466468
source, target = edge
467469
transform_styles.append(
468-
f'{source}'
470+
f'{source.split(NODE_NAME_SEPARATOR)[-1]}'
469471
f'{ACES_CONFIG_BUILTIN_TRANSFORM_NAME_SEPARATOR}'
470-
f'{target}')
472+
f'{target.split(NODE_NAME_SEPARATOR)[-1]}')
471473

472474
if len(transform_styles) == 1:
473475
builtin_transform = create_builtin_transform(transform_styles[0])

0 commit comments

Comments
 (0)