1
0
Fork 0
oarc-dsc-datatool/dsc_datatool/transformer/labler.py
Daniel Baumann 1ea3e103a7
Adding upstream version 1.4.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-04-22 13:23:23 +02:00

69 lines
1.4 KiB
Python

"""dsc_datatool.transformer.labler
See `man dsc-datatool-transformer labler`.
Part of dsc_datatool.
:copyright: 2024 OARC, Inc.
"""
import yaml
from dsc_datatool import Transformer, encoding
def _process(label, d):
l = label.get(d.name, None)
if d.values:
if l is None:
return
values = d.values
d.values = {}
for k, v in values.items():
nk = l.get(k, None)
d.values[nk or k] = v
return
if l:
v = l.get(d.value, None)
if v:
d.value = v
for d2 in d.dimensions:
_process(label, d2)
class Labler(Transformer):
label = None
def __init__(self, opts):
Transformer.__init__(self, opts)
if not 'yaml' in opts:
raise Exception('yaml=file option required')
f = open(opts.get('yaml'), 'r', encoding=encoding)
try:
self.label = yaml.full_load(f)
except AttributeError:
self.label = yaml.load(f)
f.close()
def process(self, datasets):
if self.label is None:
return
for dataset in datasets:
label = self.label.get(dataset.name, None)
if label is None:
continue
for d in dataset.dimensions:
_process(label, d)
import sys
if sys.version_info[0] == 3 and sys.version_info[1] == 5: # pragma: no cover
Transformer.__init_subclass__(Labler)