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)
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)
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)
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)
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"
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'