def _parse_str(val, length, default, name, instance): """ Parse and/or validate the string input. Parameters ---------- val : None|str|bytes length : int default : None|str Returns ------- str """ if val is None: return default if isinstance(val, bytes): val = bytes_to_string(val) elif not isinstance(val, str): val = str(val) val = val.rstrip() if len(val) <= length: return val else: logger.warning( 'Got string input value of length {} for attribute {} of class {}, ' 'which is longer than the allowed length {}, so ' 'truncating'.format(len(val), name, instance.__class__.__name__, length)) return val[:length]
def _extract_attrs(h5_element, out=None): if out is None: out = OrderedDict() for key in h5_element.attrs: val = h5_element.attrs[key] out[key] = bytes_to_string(val) if isinstance(val, bytes) else val return out
def parse_xml_from_string(xml_string): """ Parse the ElementTree root node and xml namespace dict from an xml string. Parameters ---------- xml_string : str|bytes Returns ------- (ElementTree.Element, dict) """ xml_string = bytes_to_string(xml_string, encoding='utf-8') root_node = ElementTree.fromstring(xml_string) # define the namespace dictionary xml_ns = dict([ node for _, node in ElementTree.iterparse(StringIO(xml_string), events=('start-ns', )) ]) if len(xml_ns.keys()) == 0: xml_ns = None elif '' in xml_ns: xml_ns['default'] = xml_ns[''] return root_node, xml_ns
def _stringify(val): """ Decode the value as necessary, for hdf5 string support issues. Parameters ---------- val : str|bytes Returns ------- str """ return bytes_to_string(val).strip()
def _get_ref_time(str_in): """ Extract the given reference time. Parameters ---------- str_in : str|bytes Returns ------- numpy.datetime64 """ str_in = bytes_to_string(str_in) prefix = 'seconds since ' if not str_in.startswith(prefix): raise ValueError('Got unexpected reference time string - {}'.format(str_in)) return parse_timestring(str_in[len(prefix):], precision='ns')
def find_tre(tre_id): """ Try to find a TRE with given id in our registry. Return `None` if not found. Parameters ---------- tre_id : str|bytes Returns ------- sarpy.io.general.nitf_elements.base.TRE|None """ if not _parsed_package: parse_package() if isinstance(tre_id, bytes): tre_id = bytes_to_string(tre_id) if not isinstance(tre_id, string_types): raise TypeError('tre_id must be of type string. Got {}'.format(tre_id)) return _TRE_Registry.get(tre_id.strip(), None)
def _get_string_list(array): return [bytes_to_string(el) for el in array]
def _get_string_list(array: Sequence[bytes]) -> List[str]: return [bytes_to_string(el) for el in array]