Release c921371089d249833cf85a16e7ee72e7 - Removed python2 implementation

This commit is contained in:
Dirk Alders 2025-03-24 14:51:00 +01:00
parent e1f76d9631
commit fce227b428
8 changed files with 7777 additions and 16734 deletions

View File

@ -38,8 +38,6 @@ import gzip
import logging
import time
import sys
if sys.version_info < (3, 0):
from cStringIO import StringIO
try:
from config import APP_NAME as ROOT_LOGGER_NAME
@ -50,7 +48,7 @@ logger = logging.getLogger(ROOT_LOGGER_NAME).getChild(__name__)
__DESCRIPTION__ = """The Module {\\tt %s} is designed to support functionality for strings (e.g. transfer strings via a bytestream, compressing, extracting, ...).
For more Information read the sphinx documentation.""" % __name__.replace('_', '\_')
"""The Module Description"""
__INTERPRETER__ = (2, 3)
__INTERPRETER__ = (3, )
"""The Tested Interpreter-Versions"""
__all__ = ['gzip_compress',
@ -133,17 +131,7 @@ def gzip_compress(s, compresslevel=9):
"""
rv = None
t = time.time()
if sys.version_info >= (3, 0):
rv = gzip.compress(s, compresslevel)
else:
buf = StringIO()
f = gzip.GzipFile(mode='wb', compresslevel=compresslevel, fileobj=buf)
try:
f.write(s)
finally:
f.close()
rv = buf.getvalue()
buf.close()
if rv is not None:
logger.debug('GZIP: Finished to compress a string (compression_rate=%.3f, consumed_time=%.1fs).', len(rv) / float(len(s)), time.time() - t)
return rv
@ -167,16 +155,7 @@ def gzip_extract(s):
"""
t = time.time()
rv = None
if sys.version_info >= (3, 0):
rv = gzip.decompress(s)
else:
inbuffer = StringIO(s)
f = gzip.GzipFile(mode='rb', fileobj=inbuffer)
try:
rv = f.read()
finally:
f.close()
inbuffer.close()
if rv is not None:
logger.debug('GZIP: Finished to extract a string (compression_rate=%.3f, consumed_time=%.1fs).', len(s) / float(len(rv)), time.time() - t)
return rv
@ -199,10 +178,7 @@ def hexlify(s):
"""
rv = '(%d):' % len(s)
for byte in s:
if sys.version_info >= (3, 0):
rv += ' %02x' % byte
else:
rv += ' %02x' % ord(byte)
return rv
@ -213,7 +189,4 @@ def linefeed_filter(s):
:returns: A string with converted carriage return and/ or linefeed.
:rtype: str
"""
if sys.version_info >= (3, 0):
return s.replace(b'\r', b'\\r').replace(b'\n', b'\\n')
else:
return s.replace('\r', '\\r').replace('\n', '\\n')

Binary file not shown.

View File

@ -0,0 +1,269 @@
def specification(req_spec):
req_spec.add_title("Title")
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=1,
heading="Stream Definition",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=19,
heading="Physical representation",
description="The library {\\tt stringtools} shall have a method {\\tt physical\\_repr}, transforming a float or integer value to a string with a 1 to 3 digit value followed by the physical prefix for the unit.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=20,
heading="Time representation",
description="The library {\\tt stringtools} shall have a method {\\tt physical\\_repr}, transforming an integer value to a time string like {\\tt HH:MM:SS}.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=21,
heading="Fraction representation",
description="The library {\\tt stringtools} shall have a method {\\tt frac\\_repr}, transforming a float or integer value to a fraction string with a limited denominator.",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=2,
heading="Human readable value representations",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=3,
heading="Stream to Human readable String",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=1,
heading="Hexadecimal Values",
description="A Stream shall be converted to a human readable String containing all bytes as hexadecimal values seperated by a Space.",
reason="Make non printable characters printable.",
fitcriterion="A stream shall be converted at least once and the hex values shall exist in the returnvalue in the correct order.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=2,
heading="Number of Bytes",
description="The Length of a Stream surrounded by brakets shall be included in the human readable string.",
reason="Show the length of a Stream without counting the seperated values.",
fitcriterion="The described pattern including the decimal number of bytes is included in the string for at least one Stream.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=5,
heading="CRLF-Filter",
description="The module stringtools shall have a method to replace carriage return and line feed to their escaped representation.",
reason="Replace these characters to make output printable (e.g. for logging a string based protocol).",
fitcriterion="Filter at least one string and check at least one CR and one LF representation.",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=4,
heading="Stream Compression",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=3,
heading="Compress",
description="The module stringtools shall have a method compressing a Stream with gzip.",
reason="Speed up transfer with low transfer rate.",
fitcriterion="Compressed Stream is extractable and results in the original data.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=4,
heading="Extract",
description="The module stringtools shall have a method extracting a Stream with gzip.",
reason="Speed up transfer with low transfer rate.",
fitcriterion="Extracted Stream is equal to the original compressed data.",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=5,
heading="Carriagereturn Seperation Protocol (CSP)",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=6,
heading="Frame creation",
description="The CSP module shall support a method to create a Frame from a stream.",
reason="Simple message or frame generation for streams (e.g. Keyboard (user input), RFID-Reader, \\ldots).",
fitcriterion="Creation of a testframe and checking the result.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=7,
heading="Frame creation error",
description="The Frame creation Method shall raise ValueError, if a frame separation character is in the Source-String.",
reason="String including separation charcter will be splitted in pieces while processing after transport.",
fitcriterion="ValueErroro is raised for at least one String including the separation character.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=8,
heading="Frame processing",
description="The CSP Module shall support a class including a method to process stream snipets of variable length. This Method shall return an empty list, if no frame has been detected, otherwise it shall return a list including detected frame(s).",
reason="Support message analysis of a stream with every size.",
fitcriterion="At least one frame given in at least two snippets is identified correctly.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=9,
heading="Frame processing - Input data type error",
description="If the input data is not bytes for python3 or str for python 2, the process method shall raise TypeError.",
reason="Type restriction.",
fitcriterion="At least the following types return TypeError (list, int, str for python3, unicode for python 2).",
)
#
# Section
#
sec_uuid = req_spec.add(
itemtype="SEC",
id=6,
heading="Serial Transfer Protocol (STP)",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=10,
heading="Frame creation",
description="A frame creation method shall create a frame out of given input data.",
reason="Message or Frame generation for streams (e.g. data transfer via bluetooth, ethernet, \\ldots).",
fitcriterion="Creation of a testframe and checking the result.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=15,
heading="Frame creation - Start pattern and end pattern inside a message",
description="The frame creation method shall support existance of the start or end pattern in the data to be framed.",
reason="Possibility to send any kind of data (including the patterns).",
fitcriterion="Creation of a testframe out of data including at least one start pattern and one end pattern and checking the result.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=11,
heading="Frame processing",
description="The STP Module shall support a class including a method to process stream snipets of variable length. This Method shall return an empty list, if no frame has been detected, otherwise it shall return a list including detected frame(s).",
reason="Support message analysis of a stream with every size.",
fitcriterion="At least one frame given in at least two snippets is identified correctly.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=12,
heading="Frame processing - Input data type error",
description="If the input data is not bytes for python3 or str for python 2, the process method shall raise TypeError.",
reason="Type restriction.",
fitcriterion="At least the following types return TypeError (list, int, str for python3, unicode for python 2).",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=13,
heading="Frame processing - Start pattern and end pattern inside a message",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=14,
heading="Frame processing - Data before the start pattern",
description="Data before the start pattern shall be ignored. A warning shall be given to the logger.",
reason="Robustness against wrong or corrupted data.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=16,
heading="Frame processing - Incorrect start patterns",
description="On receiving an incorrect start pattern, STP shall stay in ESCAPE\\_1, in case of data sync was received twice or back to state IDLE in all other faulty start patterns starting with data sync. A warning shall be given to the logger.",
reason="Robustness against wrong or corrupted data.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=17,
heading="Frame processing - Incorrect end pattern",
description="On receiving an incorrect end pattern, STP shall change to state STORE\\_DATA, in case of a start pattern, to ESCAPE\\_1, in case of data sync was received twice or back to state IDLE in all other faulty end patterns starting with data sync. A warning shall be given to the logger.",
reason="Robustness against wrong or corrupted data.",
)
# Requirement
req_spec.add(
parent=sec_uuid,
itemtype="REQ",
id=18,
heading="Frame processing - After state corruption",
description="The state of STP shall be set to IDLE, after an unknown state was recognised. The currently processed data shall be processed again. An error shall be given to the logger.",
reason="Robustness against wrong or corrupted data.",
)

View File

@ -1,241 +1,220 @@
<?xml version="1.0" ?>
<coverage branch-rate="0.9767" branches-covered="84" branches-valid="86" complexity="0" line-rate="1" lines-covered="217" lines-valid="217" timestamp="1614533396800" version="4.5.2">
<!-- Generated by coverage.py: https://coverage.readthedocs.io -->
<coverage version="7.7.1" timestamp="1742824173477" lines-valid="194" lines-covered="194" line-rate="1" branches-valid="64" branches-covered="62" branch-rate="0.9688" complexity="0">
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.7.1 -->
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
<sources/>
<sources>
<source></source>
</sources>
<packages>
<package branch-rate="0.9767" complexity="0" line-rate="1" name=".usr.data.dirk.prj.unittest.stringtools.pylibs.stringtools">
<package name=".home.dirk.my_repositories.unittest.stringtools.pylibs.stringtools" line-rate="1" branch-rate="0.9688" complexity="0">
<classes>
<class branch-rate="0.9375" complexity="0" filename="/usr/data/dirk/prj/unittest/stringtools/pylibs/stringtools/__init__.py" line-rate="1" name="__init__.py">
<class name="__init__.py" filename="/home/dirk/my_repositories/unittest/stringtools/pylibs/stringtools/__init__.py" complexity="0" line-rate="1" branch-rate="0.9091">
<methods/>
<lines>
<line hits="1" number="4"/>
<line hits="1" number="32"/>
<line hits="1" number="33"/>
<line hits="1" number="34"/>
<line hits="1" number="36"/>
<line hits="1" number="37"/>
<line hits="1" number="38"/>
<line hits="1" number="39"/>
<line hits="1" number="40"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="41"/>
<line hits="1" number="42"/>
<line hits="1" number="44"/>
<line hits="1" number="45"/>
<line hits="1" number="46"/>
<line hits="1" number="47"/>
<line hits="1" number="48"/>
<line hits="1" number="50"/>
<line hits="1" number="53"/>
<line hits="1" number="56"/>
<line hits="1" number="63"/>
<line hits="1" number="64"/>
<line hits="1" number="76"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="77"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="78"/>
<line hits="1" number="79"/>
<line hits="1" number="80"/>
<line hits="1" number="82"/>
<line hits="1" number="83"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="84"/>
<line hits="1" number="85"/>
<line hits="1" number="87"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="89"/>
<line hits="1" number="90"/>
<line hits="1" number="92"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="93"/>
<line hits="1" number="94"/>
<line hits="1" number="95"/>
<line hits="1" number="98"/>
<line hits="1" number="99"/>
<line hits="1" number="100"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="101"/>
<line hits="1" number="102"/>
<line hits="1" number="104"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="105"/>
<line hits="1" number="106"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="107"/>
<line hits="1" number="108"/>
<line hits="1" number="109"/>
<line hits="1" number="112"/>
<line hits="1" number="113"/>
<line hits="1" number="114"/>
<line hits="1" number="117"/>
<line hits="1" number="134"/>
<line hits="1" number="135"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="136"/>
<line hits="1" number="137"/>
<line hits="1" number="139"/>
<line hits="1" number="140"/>
<line hits="1" number="141"/>
<line hits="1" number="142"/>
<line hits="1" number="144"/>
<line hits="1" number="145"/>
<line hits="1" number="146"/>
<line branch="true" condition-coverage="50% (1/2)" hits="1" missing-branches="149" number="147"/>
<line hits="1" number="148"/>
<line hits="1" number="149"/>
<line hits="1" number="152"/>
<line hits="1" number="168"/>
<line hits="1" number="169"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="170"/>
<line hits="1" number="171"/>
<line hits="1" number="173"/>
<line hits="1" number="174"/>
<line hits="1" number="175"/>
<line hits="1" number="176"/>
<line hits="1" number="178"/>
<line hits="1" number="179"/>
<line branch="true" condition-coverage="50% (1/2)" hits="1" missing-branches="182" number="180"/>
<line hits="1" number="181"/>
<line hits="1" number="182"/>
<line hits="1" number="185"/>
<line hits="1" number="200"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="201"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="202"/>
<line hits="1" number="203"/>
<line hits="1" number="205"/>
<line hits="1" number="206"/>
<line hits="1" number="209"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="216"/>
<line hits="1" number="217"/>
<line hits="1" number="219"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="48" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="52" hits="1"/>
<line number="54" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="74" hits="1"/>
<line number="75" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="76" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="77" hits="1"/>
<line number="78" hits="1"/>
<line number="80" hits="1"/>
<line number="81" hits="1"/>
<line number="82" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="83" hits="1"/>
<line number="85" hits="1"/>
<line number="87" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="88" hits="1"/>
<line number="90" hits="1"/>
<line number="91" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="92" hits="1"/>
<line number="93" hits="1"/>
<line number="96" hits="1"/>
<line number="97" hits="1"/>
<line number="98" hits="1"/>
<line number="99" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="100" hits="1"/>
<line number="102" hits="1"/>
<line number="103" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="104" hits="1"/>
<line number="105" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="106" hits="1"/>
<line number="107" hits="1"/>
<line number="110" hits="1"/>
<line number="111" hits="1"/>
<line number="112" hits="1"/>
<line number="115" hits="1"/>
<line number="132" hits="1"/>
<line number="133" hits="1"/>
<line number="134" hits="1"/>
<line number="135" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="137"/>
<line number="136" hits="1"/>
<line number="137" hits="1"/>
<line number="140" hits="1"/>
<line number="156" hits="1"/>
<line number="157" hits="1"/>
<line number="158" hits="1"/>
<line number="159" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="161"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="164" hits="1"/>
<line number="179" hits="1"/>
<line number="180" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="181" hits="1"/>
<line number="182" hits="1"/>
<line number="185" hits="1"/>
<line number="192" hits="1"/>
</lines>
</class>
<class branch-rate="1" complexity="0" filename="/usr/data/dirk/prj/unittest/stringtools/pylibs/stringtools/csp.py" line-rate="1" name="csp.py">
<class name="csp.py" filename="/home/dirk/my_repositories/unittest/stringtools/pylibs/stringtools/csp.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line hits="1" number="4"/>
<line hits="1" number="22"/>
<line hits="1" number="24"/>
<line hits="1" number="25"/>
<line hits="1" number="27"/>
<line hits="1" number="28"/>
<line hits="1" number="29"/>
<line hits="1" number="30"/>
<line hits="1" number="31"/>
<line hits="1" number="33"/>
<line hits="1" number="36"/>
<line hits="1" number="47"/>
<line hits="1" number="49"/>
<line hits="1" number="50"/>
<line hits="1" number="51"/>
<line hits="1" number="53"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="61"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="62"/>
<line hits="1" number="63"/>
<line hits="1" number="65"/>
<line hits="1" number="66"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="67"/>
<line hits="1" number="68"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="69"/>
<line hits="1" number="70"/>
<line hits="1" number="71"/>
<line hits="1" number="74"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="89"/>
<line hits="1" number="90"/>
<line hits="1" number="92"/>
<line number="22" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="31" hits="1"/>
<line number="33" hits="1"/>
<line number="36" hits="1"/>
<line number="47" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="53" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="64" hits="1"/>
<line number="65" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="66" hits="1"/>
<line number="67" hits="1"/>
<line number="70" hits="1"/>
<line number="85" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="86" hits="1"/>
<line number="88" hits="1"/>
</lines>
</class>
<class branch-rate="1" complexity="0" filename="/usr/data/dirk/prj/unittest/stringtools/pylibs/stringtools/stp.py" line-rate="1" name="stp.py">
<class name="stp.py" filename="/home/dirk/my_repositories/unittest/stringtools/pylibs/stringtools/stp.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line hits="1" number="4"/>
<line hits="1" number="22"/>
<line hits="1" number="24"/>
<line hits="1" number="25"/>
<line hits="1" number="27"/>
<line hits="1" number="28"/>
<line hits="1" number="29"/>
<line hits="1" number="30"/>
<line hits="1" number="31"/>
<line hits="1" number="33"/>
<line hits="1" number="35"/>
<line hits="1" number="37"/>
<line hits="1" number="39"/>
<line hits="1" number="42"/>
<line hits="1" number="44"/>
<line hits="1" number="46"/>
<line hits="1" number="48"/>
<line hits="1" number="52"/>
<line hits="1" number="63"/>
<line hits="1" number="65"/>
<line hits="1" number="66"/>
<line hits="1" number="67"/>
<line hits="1" number="68"/>
<line hits="1" number="70"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="71"/>
<line hits="1" number="72"/>
<line hits="1" number="73"/>
<line hits="1" number="75"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="83"/>
<line hits="1" number="84"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="85"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="86"/>
<line hits="1" number="87"/>
<line hits="1" number="89"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="91"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="92"/>
<line hits="1" number="93"/>
<line hits="1" number="95"/>
<line hits="1" number="96"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="98"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="99"/>
<line hits="1" number="100"/>
<line hits="1" number="101"/>
<line hits="1" number="103"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="104"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="105"/>
<line hits="1" number="106"/>
<line hits="1" number="107"/>
<line hits="1" number="108"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="109"/>
<line hits="1" number="110"/>
<line hits="1" number="111"/>
<line hits="1" number="113"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="114"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="115"/>
<line hits="1" number="116"/>
<line hits="1" number="117"/>
<line hits="1" number="119"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="120"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="121"/>
<line hits="1" number="122"/>
<line hits="1" number="123"/>
<line hits="1" number="124"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="125"/>
<line hits="1" number="126"/>
<line hits="1" number="127"/>
<line hits="1" number="128"/>
<line hits="1" number="129"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="130"/>
<line hits="1" number="131"/>
<line hits="1" number="132"/>
<line hits="1" number="133"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="134"/>
<line hits="1" number="135"/>
<line hits="1" number="136"/>
<line hits="1" number="137"/>
<line hits="1" number="139"/>
<line hits="1" number="140"/>
<line hits="1" number="141"/>
<line hits="1" number="143"/>
<line hits="1" number="144"/>
<line hits="1" number="145"/>
<line hits="1" number="146"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="147"/>
<line hits="1" number="148"/>
<line hits="1" number="149"/>
<line hits="1" number="152"/>
<line hits="1" number="167"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="169"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="170"/>
<line hits="1" number="171"/>
<line branch="true" condition-coverage="100% (2/2)" hits="1" number="172"/>
<line hits="1" number="173"/>
<line hits="1" number="175"/>
<line hits="1" number="177"/>
<line hits="1" number="178"/>
<line number="22" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="31" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="52" hits="1"/>
<line number="63" hits="1"/>
<line number="65" hits="1"/>
<line number="66" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="72" hits="1"/>
<line number="73" hits="1"/>
<line number="75" hits="1"/>
<line number="83" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="84" hits="1"/>
<line number="86" hits="1"/>
<line number="88" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="89" hits="1"/>
<line number="90" hits="1"/>
<line number="92" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="93" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="94" hits="1"/>
<line number="95" hits="1"/>
<line number="97" hits="1"/>
<line number="98" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="99" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="100" hits="1"/>
<line number="101" hits="1"/>
<line number="102" hits="1"/>
<line number="103" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="104" hits="1"/>
<line number="105" hits="1"/>
<line number="107" hits="1"/>
<line number="108" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="109" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="110" hits="1"/>
<line number="111" hits="1"/>
<line number="113" hits="1"/>
<line number="114" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="115" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="116" hits="1"/>
<line number="117" hits="1"/>
<line number="118" hits="1"/>
<line number="119" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="120" hits="1"/>
<line number="121" hits="1"/>
<line number="122" hits="1"/>
<line number="123" hits="1"/>
<line number="124" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="125" hits="1"/>
<line number="126" hits="1"/>
<line number="127" hits="1"/>
<line number="128" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="129" hits="1"/>
<line number="130" hits="1"/>
<line number="131" hits="1"/>
<line number="133" hits="1"/>
<line number="134" hits="1"/>
<line number="135" hits="1"/>
<line number="137" hits="1"/>
<line number="138" hits="1"/>
<line number="139" hits="1"/>
<line number="140" hits="1"/>
<line number="141" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="142" hits="1"/>
<line number="143" hits="1"/>
<line number="146" hits="1"/>
<line number="161" hits="1"/>
<line number="163" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="164" hits="1"/>
<line number="165" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="166" hits="1"/>
<line number="168" hits="1"/>
<line number="170" hits="1"/>
<line number="171" hits="1"/>
</lines>
</class>
</classes>

File diff suppressed because it is too large Load Diff

Binary file not shown.

4
csp.py
View File

@ -58,10 +58,6 @@ class csp(object):
:returns: A list of the extracted message(s)
:rtype: list
"""
if sys.version_info < (3, 0):
if type(data) is unicode:
raise TypeError
#
rv = (self.__buffer__ + data).split(self.__seperator__)
self.__buffer__ = rv.pop()
if len(self.__buffer__) != 0:

7
stp.py
View File

@ -82,17 +82,11 @@ class stp(object):
"""
if type(data) is list:
raise TypeError
if sys.version_info <= (3, 0):
if type(data) is unicode:
raise TypeError
#
rv = []
#
while len(data) > 0:
if sys.version_info >= (3, 0):
b = bytes([data[0]])
else:
b = data[0]
data = data[1:]
#
if self.state == STP_STATE_IDLE:
@ -167,7 +161,6 @@ def build_frame(data):
rv = DATA_SYNC + DATA_CLEAR_BUFFER
for byte in data:
if sys.version_info >= (3, 0):
byte = bytes([byte])
if byte == DATA_SYNC:
rv += DATA_SYNC + DATA_STORE_SYNC_VALUE