Пример #1
0
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]
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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()
Пример #5
0
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')
Пример #6
0
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)
Пример #7
0
def _get_string_list(array):
    return [bytes_to_string(el) for el in array]
Пример #8
0
def _get_string_list(array: Sequence[bytes]) -> List[str]:
    return [bytes_to_string(el) for el in array]