Ejemplo n.º 1
0
def print_nice_bytes(bytestream):
    """Nice output for bytestream."""
    str_list = pretty_bytes(
        bytestream, prefix="b'\\x", delimiter="\\x", items_per_line=10
    )
    for string in str_list:
        print(string)
Ejemplo n.º 2
0
 def test_bytesio(self):
     """Test wrap list using bytesio"""
     bytestream = BytesIO()
     bytestream.write(a_associate_rq)
     result = pretty_bytes(bytestream,
                           prefix='',
                           delimiter='',
                           items_per_line=10)
     assert isinstance(result[0], str)
Ejemplo n.º 3
0
def pretty_element(elem):
    """Return a pretty element string.

    .. versionadded:: 1.5

    Parameters
    ----------
    elem : pydicom.dataelem.DataElement
        The element to beautify.

    Returns
    -------
    str
    """
    try:
        value = elem.value
        if elem.VM == 0 and elem.VR != 'SQ':
            # Empty value
            value = '(no value available)'
        elif elem.VR in ['OB', 'OD', 'OF', 'OL', 'OW', 'OV']:
            # Byte VRs
            if elem.VM == 1:
                # Single value
                length = len(elem.value)
                if length <= 13:
                    value = '[{}]'.format(
                        pretty_bytes(elem.value, prefix='', delimiter=' ')[0])
                else:
                    value = '({} bytes of binary data)'.format(len(elem.value))
            else:
                # Multiple values - probably non-conformant
                total_length = sum([len(ii) for ii in elem.value])
                value = '({} bytes of binary data)'.format(total_length)
        elif elem.VR != 'SQ':
            # Non-sequence elements
            if elem.VM == 1:
                value = '[{}]'.format(elem.value)
            else:
                value = '[{}]'.format('\\'.join([str(ii)
                                                 for ii in elem.value]))
        elif elem.VR == 'SQ':
            # Sequence elements
            if elem.VM == 1:
                value = '(Sequence with {} item)'.format(len(elem.value))
            else:
                value = '(Sequence with {} items)'.format(len(elem.value))

    except Exception as exc:
        value = '(pynetdicom failed to beautify value)'

    return '({:04X},{:04X}) {} {: <40} # {} {}'.format(elem.tag.group,
                                                       elem.tag.element,
                                                       elem.VR, value, elem.VM,
                                                       elem.keyword)
Ejemplo n.º 4
0
def pretty_element(elem: DataElement) -> str:
    """Return a pretty element string.

    .. versionadded:: 1.5

    Parameters
    ----------
    elem : pydicom.dataelem.DataElement
        The element to beautify.

    Returns
    -------
    str
    """
    try:
        value = elem.value
        if elem.VM == 0 and elem.VR != "SQ":
            # Empty value
            value = "(no value available)"
        elif elem.VR in ["OB", "OD", "OF", "OL", "OW", "OV"]:
            # Byte VRs
            if elem.VM == 1:
                # Single value
                length = len(elem.value)
                if length <= 13:
                    value = pretty_bytes(elem.value, prefix="", delimiter=" ")
                    value = f"[{value[0]}]"
                else:
                    value = f"({len(elem.value)} bytes of binary data)"
            else:
                # Multiple values - probably non-conformant
                total_length = sum([len(ii) for ii in elem.value])
                value = f"({total_length} bytes of binary data)"
        elif elem.VR != "SQ":
            # Non-sequence elements
            if elem.VM == 1:
                value = f"[{elem.value}]"
            else:
                value = "\\".join([str(ii) for ii in elem.value])
                value = f"[{value}]"
        elif elem.VR == "SQ":
            # Sequence elements
            if elem.VM == 1:
                value = f"(Sequence with {len(elem.value)} item)"
            else:
                value = f"(Sequence with {len(elem.value)} items)"

    except Exception as exc:
        value = "(pynetdicom failed to beautify value)"

    return "({:04X},{:04X}) {} {: <40} # {} {}".format(elem.tag.group,
                                                       elem.tag.element,
                                                       elem.VR, value, elem.VM,
                                                       elem.keyword)
Ejemplo n.º 5
0
    def test_parameters(self):
        """Test parameters are correct."""
        # Default
        bytestream = a_associate_rq
        result = pretty_bytes(bytestream)
        assert len(result) == 14
        assert isinstance(result[0], str)

        # prefix
        result = pretty_bytes(bytestream, prefix="\\x")
        for line in result:
            assert line[:2] == "\\x"

        # delimiter
        result = pretty_bytes(bytestream, prefix="", delimiter=",")
        for line in result:
            assert line[2] == ","

        # items_per_line
        result = pretty_bytes(bytestream,
                              prefix="",
                              delimiter="",
                              items_per_line=10)
        assert len(result[0]) == 20

        # max_size
        result = pretty_bytes(bytestream,
                              prefix="",
                              delimiter="",
                              items_per_line=10,
                              max_size=100)
        assert len(result) == 11  # 10 plus the cutoff line
        assert "Only dumping 100 bytes." == result[0]
        assert "382e332e312e312e3120" == result[-1]

        result = pretty_bytes(bytestream, max_size=None)
        assert "Only dumping 100 bytes." != result[0]
        assert "  43  4f  4d  5f  30  39  30" == result[-1]

        # suffix
        result = pretty_bytes(bytestream, suffix="xxx")
        for line in result:
            assert line[-3:] == "xxx"
Ejemplo n.º 6
0
    def test_parameters(self):
        """Test parameters are correct."""
        # Default
        bytestream = a_associate_rq
        result = pretty_bytes(bytestream)
        assert len(result) == 14
        assert isinstance(result[0], str)

        # prefix
        result = pretty_bytes(bytestream, prefix='\\x')
        for line in result:
            assert line[:2] == '\\x'

        # delimiter
        result = pretty_bytes(bytestream, prefix='', delimiter=',')
        for line in result:
            assert line[2] == ','

        # items_per_line
        result = pretty_bytes(bytestream,
                              prefix='',
                              delimiter='',
                              items_per_line=10)
        assert len(result[0]) == 20

        # max_size
        result = pretty_bytes(bytestream,
                              prefix='',
                              delimiter='',
                              items_per_line=10,
                              max_size=100)
        assert len(result) == 11  # 10 plus the cutoff line
        result = pretty_bytes(bytestream, max_size=None)

        # suffix
        result = pretty_bytes(bytestream, suffix='xxx')
        for line in result:
            assert line[-3:] == 'xxx'