Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
elif isinstance(v, string_types):
if len(v):
section.create_property(name, v)
else:
section.create_property(name, nix.DataType.String)
elif isinstance(v, bytes):
section.create_property(name, v.decode())
elif isinstance(v, Iterable):
values = []
unit = None
definition = None
if len(v) == 0:
# NIX supports empty properties but dtype must be specified
# Defaulting to String and using definition to signify empty
# iterable as opposed to empty string
values = nix.DataType.String
definition = EMPTYANNOTATION
elif hasattr(v, "ndim") and v.ndim == 0:
values = v.item()
if isinstance(v, pq.Quantity):
unit = str(v.dimensionality)
else:
for item in v:
if isinstance(item, string_types):
item = item
elif isinstance(item, pq.Quantity):
unit = str(item.dimensionality)
item = item.magnitude.item()
elif isinstance(item, Iterable):
self.logger.warn("Multidimensional arrays and nested "
"containers are not currently "
"supported when writing to NIX.")
Metadata: For properties that specify a 'unit', a Quantity object is
created.
"""
neo_attrs = dict()
neo_attrs["nix_name"] = nix_obj.name
neo_attrs["description"] = stringify(nix_obj.definition)
if nix_obj.metadata:
for prop in nix_obj.metadata.inherited_properties():
values = list(prop.values)
if prop.unit:
units = prop.unit
values = create_quantity(values, units)
if not len(values):
if prop.definition == EMPTYANNOTATION:
values = list()
elif prop.data_type == nix.DataType.String:
values = ""
elif len(values) == 1:
values = values[0]
if prop.definition in (DATEANNOTATION, TIMEANNOTATION,
DATETIMEANNOTATION):
values = dt_from_nix(values, prop.definition)
if prop.definition == ARRAYANNOTATION:
if 'array_annotations' in neo_attrs:
neo_attrs['array_annotations'][prop.name] = values
else:
neo_attrs['array_annotations'] = {prop.name: values}
else:
neo_attrs[prop.name] = values
# since the 'neo_name' NIX property becomes the actual object's name,
# there's no reason to keep it in the annotations
neo_attrs["name"] = stringify(neo_attrs.pop("neo_name", None))