From 95e582b568a6b802e723f8a50a425f6b174569fb Mon Sep 17 00:00:00 2001 From: Gabriel M Date: Tue, 29 Aug 2023 10:59:02 -0600 Subject: [PATCH 1/5] fixed linting issues --- .../codice/L0/decom_python_example.py | 31 +- ...ator.py => ccsds_header_xtce_generator.py} | 6 +- imap_processing/codice/decom.py | 12 +- .../codice/generate_ccsds_header_xml.py | 39 +-- imap_processing/codice/make_xtce.py | 125 ++++---- imap_processing/codice/tests/test_bin_data.py | 3 +- poetry.lock | 288 +++++++++++++----- 7 files changed, 340 insertions(+), 164 deletions(-) rename imap_processing/codice/{CcsdsHeaderXtceGenerator.py => ccsds_header_xtce_generator.py} (86%) diff --git a/imap_processing/codice/L0/decom_python_example.py b/imap_processing/codice/L0/decom_python_example.py index cf6d2f88f..47ce71b9d 100644 --- a/imap_processing/codice/L0/decom_python_example.py +++ b/imap_processing/codice/L0/decom_python_example.py @@ -1,19 +1,20 @@ """ Main script to extract and decommute parameters from a binary file containing packets. -This script reads a binary file containing packet data, searches for a packet with a specific Application Process Identifier (APID), -and then decommutes the packet's parameters using a provided decommutation table. The extracted parameter values are printed. +This script reads a binary file containing packet data, searches for a packet with a +specific Application Process Identifier (APID), and then decommutes the packet's +parameters using a provided decommutation table. The extracted values are printed. Usage: - 1. Set the 'bin_file_path' variable to the path of the binary file containing packet data. + 1. Set the 'bin_file_path' variable to the path containing packet data. 2. Replace 'target_apid' with the desired APID to search for. - 3. Define the 'decomm_table' with the decommutation information for different parameters. + 3. Define the 'decomm_table' with the decommutation info for different parameters. 4. Run the script to extract and print decommuted parameter values. Example: Assuming 'read_binary_file' and other functions are defined: - Given a binary file at 'bin_file_path' and a desired 'target_apid': - - If a packet with the 'target_apid' is found, its parameters are extracted and printed. + - If a packet with the 'target_apid' is found, parameters are extracted and printed. - If no matching packet is found, a message indicating such is printed. """ @@ -46,7 +47,9 @@ def read_binary_file(file_path): """ Extracts a value from binary data by interpreting a specified range of bits. -This function is used to extract a value from a sequence of binary data by specifying the starting bit position and the number of bits to consider. The bits are interpreted as an unsigned integer value. +This function is used to extract a value from a sequence of binary data by specifying +the starting bit position and the number of bits to consider. The bits are interpreted +as an unsigned integer value. Parameters ---------- @@ -77,7 +80,9 @@ def extract_bits(data, start_bit, length): """ Finds the index of the first occurrence of a packet with a specific APID in binary data. -This function searches through a sequence of binary data to find the index of the first packet that matches the specified Application Process Identifier (APID). The APID is a unique identifier used in packet-based data communication protocols. +This function searches through a sequence of binary data to find the index of the first +packet that matches the specified Application Process Identifier (APID). +The APID is a unique identifier used in packet-based data communication protocols. Parameters ---------- @@ -86,7 +91,8 @@ def extract_bits(data, start_bit, length): Returns ------- - int: The index of the first occurrence of the packet with the specified APID, or -1 if not found. + int: The index of the first occurrence of the packet with the specified APID + or -1 if not found. Example: binary_data = bytes([0x12, 0x34, 0x56, 0x12, 0x78, 0x90]) # Example binary data @@ -106,12 +112,15 @@ def find_packet_with_apid(bin_data, target_apid): """ Decommutes packet data using a provided decommutation table. -This function takes a packet's binary data and a decommutation table as input, and returns a dictionary of parameter values extracted from the packet according to the table. +This function takes a packet's binary data and a decommutation table as input, and +returns a dictionary of parameter values extracted from the packet +according to the table. Parameters ---------- packet_data (bytes): Binary data of the packet to decommute. - decomm_table (list): List of dictionaries, each containing decommutation information for a parameter. + decomm_table (list): List of dictionaries, each containing decommutation + information for a parameter. Each dictionary should contain: - "mnemonic": A unique identifier for the parameter. - "sequence": An optional parameter sequence number. @@ -119,7 +128,7 @@ def find_packet_with_apid(bin_data, target_apid): - "startBitInByte": Starting bit index within the starting byte. - "startBit": Overall starting bit index in the packet. - "lengthInBits": Number of bits to extract for this parameter. - - "dataType": Data type of the parameter, e.g., "unsigned_int", "float", etc. + - "dataType": Data type of the parameter: "unsigned_int", "float", etc. """ diff --git a/imap_processing/codice/CcsdsHeaderXtceGenerator.py b/imap_processing/codice/ccsds_header_xtce_generator.py similarity index 86% rename from imap_processing/codice/CcsdsHeaderXtceGenerator.py rename to imap_processing/codice/ccsds_header_xtce_generator.py index 8e5abfc8a..4add2117f 100644 --- a/imap_processing/codice/CcsdsHeaderXtceGenerator.py +++ b/imap_processing/codice/ccsds_header_xtce_generator.py @@ -29,12 +29,14 @@ def __init__(self): { "name": "SRC_SEQ_CTR", "parameterTypeRef": "uint14", - "description": "CCSDS Packet Sequence Count (increments with each new packet)", + "description": "CCSDS Packet Sequence Count " + "(increments with each new packet)", }, { "name": "PKT_LEN", "parameterTypeRef": "uint16", - "description": "CCSDS Packet Length (number of bytes after Packet length minus 1)", + "description": "CCSDS Packet Length " + "(number of bytes after Packet length minus 1)", }, { "name": "SHCOARSE", diff --git a/imap_processing/codice/decom.py b/imap_processing/codice/decom.py index 043908740..15bf6ac02 100644 --- a/imap_processing/codice/decom.py +++ b/imap_processing/codice/decom.py @@ -1,6 +1,7 @@ -""" This is an example of how to use the 'space_packet_parser' module to parse with a XTCE file specifically for the - CODICE L0 data. This is a modified version of the example found in the 'space_packet_parser' module documentation. - This is the start of CODICE L0 data processing. +""" This is an example of how to use the 'space_packet_parser' module to parse with a +XTCE file specifically for the CODICE L0 data. This is a modified version of the +example found in the 'space_packet_parser' module documentation. +This is the start of CODICE L0 data processing. """ @@ -8,8 +9,9 @@ from space_packet_parser import parser, xtcedef -# Define the APID. This is the APID for the CODICE L0 data that is in the 'RAW.bin' file. -# Data bins like 'RAW.bin' will encompass multiple APIDs. This is why we need to specify the APID. +# Define the APID. This is the APID for the CODICE L0 data that is in the +# 'RAW.bin' file. Data bins like 'RAW.bin' will encompass multiple APIDs. This is why +# we need to specify the APID. # The APID should be in the packet definition file given by instrument team. apid = 0x460 diff --git a/imap_processing/codice/generate_ccsds_header_xml.py b/imap_processing/codice/generate_ccsds_header_xml.py index 4b4388abd..fb4749c78 100644 --- a/imap_processing/codice/generate_ccsds_header_xml.py +++ b/imap_processing/codice/generate_ccsds_header_xml.py @@ -3,48 +3,48 @@ the CCSDS header parameters in the XTCE file. """ -import xml.etree.ElementTree as ET +import xml.etree.ElementTree as Et -ET.register_namespace("xtce", "http://www.omg.org/space") +Et.register_namespace("xtce", "http://www.omg.org/space") # Create the root element -root = ET.Element("{http://www.omg.org/space}SpaceSystem") +root = Et.Element("{http://www.omg.org/space}SpaceSystem") root.attrib["name"] = "CCSDS_Headers" # Create the Header element and its attributes -header = ET.SubElement(root, "{http://www.omg.org/space}Header") +header = Et.SubElement(root, "{http://www.omg.org/space}Header") header.attrib["date"] = "2023" header.attrib["version"] = "1.0" header.attrib["author"] = "IMAP SDC" # Create the TelemetryMetaData element -telemetry_metadata = ET.SubElement(root, "{http://www.omg.org/space}TelemetryMetaData") +telemetry_metadata = Et.SubElement(root, "{http://www.omg.org/space}TelemetryMetaData") # Create the ParameterTypeSet element -parameter_type_set = ET.SubElement( +parameter_type_set = Et.SubElement( telemetry_metadata, "{http://www.omg.org/space}ParameterTypeSet" ) # Create integer parameter types integer_sizes = [1, 2, 3, 11, 14, 16, 32] for size in integer_sizes: - parameter_type = ET.SubElement( + parameter_type = Et.SubElement( parameter_type_set, "{http://www.omg.org/space}IntegerParameterType" ) parameter_type.attrib["name"] = f"uint{size}" parameter_type.attrib["signed"] = "false" - encoding = ET.SubElement( + encoding = Et.SubElement( parameter_type, "{http://www.omg.org/space}IntegerDataEncoding" ) encoding.attrib["sizeInBits"] = str(size) encoding.attrib["encoding"] = "unsigned" - unit_set = ET.SubElement(parameter_type, "{http://www.omg.org/space}UnitSet") + unit_set = Et.SubElement(parameter_type, "{http://www.omg.org/space}UnitSet") # Create the ParameterSet element -parameter_set = ET.SubElement( +parameter_set = Et.SubElement( telemetry_metadata, "{http://www.omg.org/space}ParameterSet" ) @@ -83,39 +83,40 @@ { "name": "PKT_LEN", "parameterTypeRef": "uint16", - "description": "CCSDS Packet Length (number of bytes after Packet length minus 1)", + "description": "CCSDS Packet Length " + "(number of bytes after Packet length minus 1)", }, ] for parameter_data in ccsds_parameters: - parameter = ET.SubElement(parameter_set, "{http://www.omg.org/space}Parameter") + parameter = Et.SubElement(parameter_set, "{http://www.omg.org/space}Parameter") parameter.attrib["name"] = parameter_data["name"] parameter.attrib["parameterTypeRef"] = parameter_data["parameterTypeRef"] - description = ET.SubElement(parameter, "{http://www.omg.org/space}LongDescription") + description = Et.SubElement(parameter, "{http://www.omg.org/space}LongDescription") description.text = parameter_data["description"] # Create the ContainerSet element -container_set = ET.SubElement( +container_set = Et.SubElement( telemetry_metadata, "{http://www.omg.org/space}ContainerSet" ) # Create the SequenceContainer element -sequence_container = ET.SubElement( +sequence_container = Et.SubElement( container_set, "{http://www.omg.org/space}SequenceContainer" ) sequence_container.attrib["name"] = "CCSDSPacket" # Create the EntryList element and add ParameterRefEntry elements -entry_list = ET.SubElement(sequence_container, "{http://www.omg.org/space}EntryList") +entry_list = Et.SubElement(sequence_container, "{http://www.omg.org/space}EntryList") for parameter_data in ccsds_parameters: - parameter_ref_entry = ET.SubElement( + parameter_ref_entry = Et.SubElement( entry_list, "{http://www.omg.org/space}ParameterRefEntry" ) parameter_ref_entry.attrib["parameterRef"] = parameter_data["name"] # Create the XML tree -tree = ET.ElementTree(root) -ET.indent(tree, space="\t", level=0) +tree = Et.ElementTree(root) +Et.indent(tree, space="\t", level=0) # Save the XML document to a file tree.write("L0/ccsds-header.xml", encoding="utf-8", xml_declaration=True) diff --git a/imap_processing/codice/make_xtce.py b/imap_processing/codice/make_xtce.py index 44d737f4f..148036d28 100644 --- a/imap_processing/codice/make_xtce.py +++ b/imap_processing/codice/make_xtce.py @@ -1,16 +1,18 @@ -""" The module will take an Excel file and convert it into an XTCE formatted XML file. This is specific for CODICE L0, - but can be modified for other missions. This is the start of CODICE L0 data processing. +""" The module will take an Excel file and convert it into an XTCE formatted XML file. +This is specific for CODICE L0, but can be modified for other missions. This is the +start of CODICE L0 data processing. """ -import xml.etree.ElementTree as ET +import xml.etree.ElementTree as Et import pandas as pd -from imap_processing.codice.CcsdsHeaderXtceGenerator import CCSDSParameters +from imap_processing.codice.ccsds_header_xtce_generator import CCSDSParameters -# Make sure the "sheet" name is correct. In an Excel file, there might be several "packets", which are "sheets" -# within the file.This is case-sensitive. -packet_name = "P_COD_AUT" # This is the name of the packet (sheet) in the Excel file you want to convert to XML +# Make sure the "sheet" name is correct. In an Excel file +# There might be several "packets", which are "sheets" within the file. +# This is case-sensitive. +packet_name = "P_COD_AUT" # This is the name of the packet (sheet) in the Excel file # This is the path to the Excel file you want to convert to XML path_to_excel_file = "/Users/gamo6782/Desktop/IMAP/TLM_COD_20230629-110638(update).xlsx" @@ -18,10 +20,11 @@ ccsds_parameters = CCSDSParameters().parameters if __name__ == "__main__": - # ET.register_namespace is important! Make sure you use the correct namespace for the xtce file you are using. + # ET.register_namespace is important! + # Make sure you use the correct namespace for the xtce file you are using. # This is the namespace for the IMAP xtce files currently. - ET.register_namespace( + Et.register_namespace( "xtce", "http://www.omg.org/space" ) # Update the namespace here @@ -33,7 +36,7 @@ pkt.fillna("", inplace=True) # Create the root element and add namespaces - root = ET.Element( + root = Et.Element( "{http://www.omg.org/space}SpaceSystem", nsmap={"xtce": "http://www.omg.org/space/xtce"}, ) @@ -42,51 +45,60 @@ # Create the Header element with attributes 'date', 'version', and 'author' # Versioning is used to keep track of changes to the XML file. - header = ET.SubElement(root, "{http://www.omg.org/space}Header") + header = Et.SubElement(root, "{http://www.omg.org/space}Header") header.attrib["date"] = "2023-08-21" header.attrib["version"] = "1.0" header.attrib["author"] = "IMAP SDC" """ - These lines of code create a structured XML hierarchy to represent data according to a defined XML schema: - - The 'TelemetryMetaData' element is added under the 'root' element, providing a namespace. - - Within 'TelemetryMetaData', the 'ParameterTypeSet' element is created to define parameter types. - - Similarly, the 'ParameterSet' element is added to 'TelemetryMetaData' to define specific parameters. - These elements and their organization help organize and standardize data representation in XML format. + These lines of code create a structured XML hierarchy to represent data according + to a defined XML schema: + - The 'TelemetryMetaData' element is added under the 'root' element, + providing a namespace. + - Within 'TelemetryMetaData', the 'ParameterTypeSet' element is created + to define parameter types. + - Similarly, the 'ParameterSet' element is added to 'TelemetryMetaData' + to define specific parameters. + These elements and their organization help organize and standardize + data representation in XML format. """ # Create the TelemetryMetaData element - telemetry_metadata = ET.SubElement( + telemetry_metadata = Et.SubElement( root, "{http://www.omg.org/space}TelemetryMetaData" ) # Create the ParameterTypeSet element - parameter_type_set = ET.SubElement(telemetry_metadata, "xtce:ParameterTypeSet") + parameter_type_set = Et.SubElement(telemetry_metadata, "xtce:ParameterTypeSet") # Create the ParameterSet element - parameter_set = ET.SubElement(telemetry_metadata, "xtce:ParameterSet") + parameter_set = Et.SubElement(telemetry_metadata, "xtce:ParameterSet") """ - The following loop creates a series of XML elements to define integer parameter types: - - The loop iterates from 0 to 32, creating an 'IntegerParameterType' element for each number. - - Within each 'IntegerParameterType' element, attributes like 'name' and 'signed' are set. - - An 'IntegerDataEncoding' element is added with attributes 'sizeInBits' and 'encoding'. + The following loop creates a series of XML elements to + define integer parameter types: + - The loop iterates from 0 - 32, creating an 'IntegerParameterType' element for + each number. + - In 'IntegerParameterType' element, attributes like 'name' and 'signed' are set. + - An 'IntegerDataEncoding' is added with attributes 'sizeInBits' and 'encoding'. - Lastly, a 'UnitSet' element is added within each 'IntegerParameterType'. - This loop efficiently defines integer parameter types for a range of values in the XML structure. + This loop efficiently defines integer parameter types for a range of + values in the XML structure. """ # Create integer parameter types for all numbers between 0-32 for size in range(33): # Range goes up to 33 to include 0-32 - parameter_type = ET.SubElement(parameter_type_set, "xtce:IntegerParameterType") + parameter_type = Et.SubElement(parameter_type_set, "xtce:IntegerParameterType") parameter_type.attrib["name"] = f"uint{size}" parameter_type.attrib["signed"] = "false" - encoding = ET.SubElement(parameter_type, "xtce:IntegerDataEncoding") + encoding = Et.SubElement(parameter_type, "xtce:IntegerDataEncoding") encoding.attrib["sizeInBits"] = str(size) encoding.attrib["encoding"] = "unsigned" - # unit_set is used to define the units for the parameter. This is not needed for CODICE L0. + # unit_set is used to define the units for the parameter. + # This is not needed for CODICE L0. # UnitSet will be used for CODICE L1. It can be used for other missions as well. - unit_set = ET.SubElement(parameter_type, "xtce:UnitSet") + unit_set = Et.SubElement(parameter_type, "xtce:UnitSet") """ This loop generates XML elements to define CCSDS packet parameters: @@ -94,51 +106,53 @@ - For each parameter, an 'xtce:Parameter' element is added to the 'parameter_set'. - Attributes like 'name' and 'parameterTypeRef' are set using the parameter data. - A 'LongDescription' element is created with the description text. - This loop effectively creates XML elements to define CCSDS packet parameters based on the given data. + This loop effectively creates XML elements to define CCSDS packet parameters + based on the given data. """ for parameter_data in ccsds_parameters: - parameter = ET.SubElement(parameter_set, "xtce:Parameter") + parameter = Et.SubElement(parameter_set, "xtce:Parameter") parameter.attrib["name"] = parameter_data["name"] parameter.attrib["parameterTypeRef"] = parameter_data["parameterTypeRef"] - description = ET.SubElement(parameter, "xtce:LongDescription") + description = Et.SubElement(parameter, "xtce:LongDescription") description.text = parameter_data["description"] # Create ContainerSet element - container_set = ET.SubElement(telemetry_metadata, "xtce:ContainerSet") + container_set = Et.SubElement(telemetry_metadata, "xtce:ContainerSet") # Create CCSDSPacket SequenceContainer - ccsds_packet_container = ET.SubElement(container_set, "xtce:SequenceContainer") + ccsds_packet_container = Et.SubElement(container_set, "xtce:SequenceContainer") ccsds_packet_container.attrib["name"] = "CCSDSPacket" - ccsds_packet_entry_list = ET.SubElement(ccsds_packet_container, "xtce:EntryList") + ccsds_packet_entry_list = Et.SubElement(ccsds_packet_container, "xtce:EntryList") for parameter_data in ccsds_parameters: - parameter_ref_entry = ET.SubElement( + parameter_ref_entry = Et.SubElement( ccsds_packet_entry_list, "xtce:ParameterRefEntry" ) parameter_ref_entry.attrib["parameterRef"] = parameter_data["name"] # Create CoDICESciencePacket SequenceContainer - codice_science_container = ET.SubElement(container_set, "xtce:SequenceContainer") + codice_science_container = Et.SubElement(container_set, "xtce:SequenceContainer") codice_science_container.attrib["name"] = "CoDICESciencePacket" - base_container = ET.SubElement(codice_science_container, "xtce:BaseContainer") + base_container = Et.SubElement(codice_science_container, "xtce:BaseContainer") base_container.attrib["containerRef"] = "CCSDSPacket" - restriction_criteria = ET.SubElement(base_container, "xtce:RestrictionCriteria") - comparison = ET.SubElement(restriction_criteria, "xtce:Comparison") + restriction_criteria = Et.SubElement(base_container, "xtce:RestrictionCriteria") + comparison = Et.SubElement(restriction_criteria, "xtce:Comparison") comparison.attrib["parameterRef"] = "PKT_APID" comparison.attrib["value"] = "1120" comparison.attrib["useCalibratedValue"] = "false" - codice_science_entry_list = ET.SubElement( + codice_science_entry_list = Et.SubElement( codice_science_container, "xtce:EntryList" ) # Add ParameterRefEntry elements for CoDICESciencePacket # ******************************* NEED TO LOOK AT THIS: To pkt specific - # This will be the list of parameters that will be included in the CoDICE Science Packet after the CCSDS header''' + # This will be the list of parameters that will be included in the + # CoDICE Science Packet after the CCSDS header''' parameter_refs = [ "Spare", "Power_Cycle_Rq", @@ -150,7 +164,7 @@ ] for parameter_ref in parameter_refs: - parameter_ref_entry = ET.SubElement( + parameter_ref_entry = Et.SubElement( codice_science_entry_list, "xtce:ParameterRefEntry" ) parameter_ref_entry.attrib["parameterRef"] = parameter_ref @@ -159,11 +173,14 @@ This loop processes rows from the DataFrame starting from the 9th row onwards: - It iterates over the DataFrame rows using the 'iterrows()' function. - For each row, it checks if the row index is less than 8 (rows before the 9th row). - - If the condition is met, the loop continues to the next iteration, skipping these rows. - - Otherwise, it creates an 'xtce:Parameter' element and adds it to the 'parameter_set'. + - If the condition is met, the loop continues to the next iteration, + skipping these rows. + - Otherwise, it creates an 'xtce:Parameter' element and adds it to + the 'parameter_set'. - Attributes like 'name' and 'parameterTypeRef' are set based on row data. - A 'LongDescription' element is created with the description text from the row. - This loop effectively generates XML elements for parameters starting from the 9th row of the DataFrame. + This loop effectively generates XML elements for parameters starting from the + 9th row of the DataFrame. """ # Process rows from 9 until the last available row in the DataFrame @@ -171,32 +188,34 @@ if index < 8: continue # Skip rows before row 9 - parameter = ET.SubElement(parameter_set, "{http://www.omg.org/space}Parameter") + parameter = Et.SubElement(parameter_set, "{http://www.omg.org/space}Parameter") parameter.attrib["name"] = row["mnemonic"] parameter_type_ref = f"uint{row['lengthInBits']}" parameter.attrib["parameterTypeRef"] = parameter_type_ref - description = ET.SubElement( + description = Et.SubElement( parameter, "{http://www.omg.org/space}LongDescription" ) description.text = row["longDescription"] """ - This section creates the final XML structure, indents it, and then saves it to a file: + This section creates the final XML structure, indents it, then saves it to a file: - The 'ET.ElementTree(root)' creates an ElementTree with the root element 'root'. - - 'ET.indent(tree, space="\t", level=0)' adds indentation to the XML structure for readability. + - 'ET.indent(tree, space="\t", level=0)' adds indentation for readability. - 'tree' is the ElementTree object. - 'space="\t"' specifies the character used for indentation (a tab in this case). - 'level=0' indicates the starting level of indentation. - - 'tree.write("p_cod_aut_test.xml", encoding="utf-8", xml_declaration=True)' writes the XML content to a file named "p_cod_aut_test.xml". + - 'tree.write("p_cod_aut_test.xml", encoding="utf-8", xml_declaration=True)' + writes the XML content to a file named "p_cod_aut_test.xml". - 'encoding="utf-8"' specifies the character encoding for the file. - 'xml_declaration=True' adds an XML declaration at the beginning of the file. - This section completes the XML generation process by creating a structured XML tree, formatting it with indentation, and saving it to a file. + This section completes the XML generation process by creating a structured XML tree + formatting it with indentation, and saving it to a file. """ # Create the XML tree - tree = ET.ElementTree(root) - ET.indent(tree, space="\t", level=0) + tree = Et.ElementTree(root) + Et.indent(tree, space="\t", level=0) # Save the XML document to a file output_xml_path = "L0/p_cod_aut_test.xml" diff --git a/imap_processing/codice/tests/test_bin_data.py b/imap_processing/codice/tests/test_bin_data.py index d3a12e4e2..9240a1126 100644 --- a/imap_processing/codice/tests/test_bin_data.py +++ b/imap_processing/codice/tests/test_bin_data.py @@ -1,4 +1,5 @@ -""" This code is used to test the size of a binary file. It is not used in the actual decom.py file. +""" This code is used to test the size of a binary file. + It is not used in the actual decom.py file. It is used to test the size of the binary file that is used in the decom.py file. """ import pytest diff --git a/poetry.lock b/poetry.lock index 64b5c54b3..18fcebecb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -82,17 +82,131 @@ soupsieve = ">1.2" html5lib = ["html5lib"] lxml = ["lxml"] +[[package]] +name = "bitarray" +version = "2.8.1" +description = "efficient arrays of booleans -- C extension" +optional = false +python-versions = "*" +files = [ + {file = "bitarray-2.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6be965028785413a6163dd55a639b898b22f67f9b6ed554081c23e94a602031e"}, + {file = "bitarray-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29e19cb80a69f6d1a64097bfbe1766c418e1a785d901b583ef0328ea10a30399"}, + {file = "bitarray-2.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0f6d705860f59721d7282496a4d29b5fd78690e1c1473503832c983e762b01b"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6df04efdba4e1bf9d93a1735e42005f8fcf812caf40c03934d9322412d563499"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18530ed3ddd71e9ff95440afce531efc3df7a3e0657f1c201c2c3cb41dd65869"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4cd81ffd2d58ef68c22c825aff89f4a47bd721e2ada0a3a96793169f370ae21"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8367768ab797105eb97dfbd4577fcde281618de4d8d3b16ad62c477bb065f347"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:848af80518d0ed2aee782018588c7c88805f51b01271935df5b256c8d81c726e"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c54b0af16be45de534af9d77e8a180126cd059f72db8b6550f62dda233868942"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f30cdce22af3dc7c73e70af391bfd87c4574cc40c74d651919e20efc26e014b5"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bc03bb358ae3917247d257207c79162e666d407ac473718d1b95316dac94162b"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:cf38871ed4cd89df9db7c70f729b948fa3e2848a07c69f78e4ddfbe4f23db63c"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a637bcd199c1366c65b98f18884f0d0b87403f04676b21e4635831660d722a7"}, + {file = "bitarray-2.8.1-cp310-cp310-win32.whl", hash = "sha256:904719fb7304d4115228b63c178f0cc725ad3b73e285c4b328e45a99a8e3fad6"}, + {file = "bitarray-2.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:1e859c664500d57526fe07140889a3b58dca54ff3b16ac6dc6d534a65c933084"}, + {file = "bitarray-2.8.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2d3f28a80f2e6bb96e9360a4baf3fbacb696b5aba06a14c18a15488d4b6f398f"}, + {file = "bitarray-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4677477a406f2a9e064920463f69172b865e4d69117e1f2160064d3f5912b0bd"}, + {file = "bitarray-2.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9061c0a50216f24c97fb2325de84200e5ad5555f25c854ddcb3ceb6f12136055"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:843af12991161b358b6379a8dc5f6636798f3dacdae182d30995b6a2df3b263e"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9336300fd0acf07ede92e424930176dc4b43ef1b298489e93ba9a1695e8ea752"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0af01e1f61fe627f63648c0c6f52de8eac56710a2ef1dbce4851d867084cc7e"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ab81c74a1805fe74330859b38e70d7525cdd80953461b59c06660046afaffcf"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2015a9dd718393e814ff7b9e80c58190eb1cef7980f86a97a33e8440e158ce2"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b0493ab66c6b8e17e9fde74c646b39ee09c236cf28a787cb8cbd3a83c05bff7"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:81e83ed7e0b1c09c5a33b97712da89e7a21fd3e5598eff3975c39540f5619792"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:741c3a2c0997c8f8878edfc65a4a8f7aa72eede337c9bc0b7bd8a45cf6e70dbc"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:57aeab27120a8a50917845bb81b0976e33d4759f2156b01359e2b43d445f5127"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17c32ba584e8fb9322419390e0e248769ed7d59de3ffa7432562a4c0ec4f1f82"}, + {file = "bitarray-2.8.1-cp311-cp311-win32.whl", hash = "sha256:b67733a240a96f09b7597af97ac4d60c59140cfcfd180f11a7221863b82f023a"}, + {file = "bitarray-2.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:7b29d4bf3d3da1847f2be9e30105bf51caaf5922e94dc827653e250ed33f4e8a"}, + {file = "bitarray-2.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f6175c1cf07dadad3213d60075704cf2e2f1232975cfd4ac8328c24a05e8f78"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cc066c7290151600b8872865708d2d00fb785c5db8a0df20d70d518e02f172b"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ce2ef9291a193a0e0cd5e23970bf3b682cc8b95220561d05b775b8d616d665f"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5582dd7d906e6f9ec1704f99d56d812f7d395d28c02262bc8b50834d51250c3"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2aa2267eb6d2b88ef7d139e79a6daaa84cd54d241b9797478f10dcb95a9cd620"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a04d4851e83730f03c4a6aac568c7d8b42f78f0f9cc8231d6db66192b030ce1e"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f7d2ec2174d503cbb092f8353527842633c530b4e03b9922411640ac9c018a19"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b65a04b2e029b0694b52d60786732afd15b1ec6517de61a36afbb7808a2ffac1"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:55020d6fb9b72bd3606969f5431386c592ed3666133bd475af945aa0fa9e84ec"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:797de3465f5f6c6be9a412b4e99eb6e8cdb86b83b6756655c4d83a65d0b9a376"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f9a66745682e175e143a180524a63e692acb2b8c86941073f6dd4ee906e69608"}, + {file = "bitarray-2.8.1-cp36-cp36m-win32.whl", hash = "sha256:443726af4bd60515e4e41ea36c5dbadb29a59bc799bcbf431011d1c6fd4363e3"}, + {file = "bitarray-2.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:2b0f754a5791635b8239abdcc0258378111b8ee7a8eb3e2bbc24bcc48a0f0b08"}, + {file = "bitarray-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d175e16419a52d54c0ac44c93309ba76dc2cfd33ee9d20624f1a5eb86b8e162e"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3128234bde3629ab301a501950587e847d30031a9cbf04d95f35cbf44469a9e"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75104c3076676708c1ac2484ebf5c26464fb3850312de33a5b5bf61bfa7dbec5"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bfb6ab9b1b5451a5483c9a2ae2a8f83799d7503b384b54f6ab56ea74abb305"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dc064a63445366f6b26eaf77230d326b9463e903ba59d6ff5efde0c5ec1ea0e"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cbe54685cf6b17b3e15faf6c4b76773bc1c484bc447020737d2550a9dde5f6e6"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9fed8aba8d1b09cf641b50f1e6dd079c31677106ea4b63ec29f4c49adfabd63f"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7c17dd8fb146c2c680bf1cb28b358f9e52a14076e44141c5442148863ee95d7d"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c9efcee311d9ba0c619743060585af9a9b81496e97b945843d5e954c67722a75"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dc7acffee09822b334d1b46cd384e969804abdf18f892c82c05c2328066cd2ae"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ea71e0a50060f96ad0821e0ac785e91e44807f8b69555970979d81934961d5bd"}, + {file = "bitarray-2.8.1-cp37-cp37m-win32.whl", hash = "sha256:69ab51d551d50e4d6ca35abc95c9d04b33ad28418019bb5481ab09bdbc0df15c"}, + {file = "bitarray-2.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3024ab4c4906c3681408ca17c35833237d18813ebb9f24ae9f9e3157a4a66939"}, + {file = "bitarray-2.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:46fdd27c8fa4186d8b290bf74a28cbd91b94127b1b6a35c265a002e394fa9324"}, + {file = "bitarray-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d32ccd2c0d906eae103ef84015f0545a395052b0b6eb0e02e9023ca0132557f6"}, + {file = "bitarray-2.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9186cf8135ca170cd907d8c4df408a87747570d192d89ec4ff23805611c702a0"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8d6e5ff385fea25caf26fd58b43f087deb763dcaddd18d3df2895235cf1b484"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d6a9c72354327c7aa9890ff87904cbe86830cb1fb58c39750a0afac8df5e051"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2f13b7d0694ce2024c82fc595e6ccc3918e7f069747c3de41b1ce72a9a1e346"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d38ceca90ed538706e3f111513073590f723f90659a7af0b992b29776a6e816"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b977c39e3734e73540a2e3a71501c2c6261c70c6ce59d427bb7c4ecf6331c7e"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:214c05a7642040f6174e29f3e099549d3c40ac44616405081bf230dcafb38767"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad440c17ef2ff42e94286186b5bcf82bf87c4026f91822675239102ebe1f7035"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:28dee92edd0d21655e56e1870c22468d0dabe557df18aa69f6d06b1543614180"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:df9d8a9a46c46950f306394705512553c552b633f8bf3c11359c4204289f11e3"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1a0d27aad02d8abcb1d3b7d85f463877c4937e71adf9b6adb9367f2cdad91a52"}, + {file = "bitarray-2.8.1-cp38-cp38-win32.whl", hash = "sha256:6033303431a7c85a535b3f1b0ec28abc2ebc2167c263f244993b56ccb87cae6b"}, + {file = "bitarray-2.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b65d487451e0e287565c8436cf4da45260f958f911299f6122a20d7ec76525c"}, + {file = "bitarray-2.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9aad7b4670f090734b272c072c9db375c63bd503512be9a9393e657dcacfc7e2"}, + {file = "bitarray-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bf80804014e3736515b84044c2be0e70080616b4ceddd4e38d85f3167aeb8165"}, + {file = "bitarray-2.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7f7231ef349e8f4955d9b39561f4683a418a73443cfce797a4eddbee1ba9664"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67e8fb18df51e649adbc81359e1db0f202d72708fba61b06f5ac8db47c08d107"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d5df3d6358425c9dfb6bdbd4f576563ec4173d24693a9042d05aadcb23c0b98"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ea51ba4204d086d5b76e84c31d2acbb355ed1b075ded54eb9b7070b0b95415d"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1414582b3b7516d2282433f0914dd9846389b051b2aea592ae7cc165806c24ac"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5934e3a623a1d485e1dcfc1990246e3c32c6fc6e7f0fd894750800d35fdb5794"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aa08a9b03888c768b9b2383949a942804d50d8164683b39fe62f0bfbfd9b4204"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:00ff372dfaced7dd6cc2dffd052fafc118053cf81a442992b9a23367479d77d7"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:dd76bbf5a4b2ab84b8ffa229f5648e80038ba76bf8d7acc5de9dd06031b38117"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e88a706f92ad1e0e1e66f6811d10b6155d5f18f0de9356ee899a7966a4e41992"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b2560475c5a1ff96fcab01fae7cf6b9a6da590f02659556b7fccc7991e401884"}, + {file = "bitarray-2.8.1-cp39-cp39-win32.whl", hash = "sha256:74cd1725d08325b6669e6e9a5d09cec29e7c41f7d58e082286af5387414d046d"}, + {file = "bitarray-2.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:e48c45ea7944225bcee026c457a70eaea61db3659d9603f07fc8a643ab7e633b"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2426dc7a0d92d8254def20ab7a231626397ce5b6fb3d4f44be74cc1370a60c3"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d34790a919f165b6f537935280ef5224957d9ce8ab11d339f5e6d0319a683ccc"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c26a923080bc211cab8f5a5e242e3657b32951fec8980db0616e9239aade482"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de1bc5f971aba46de88a4eb0dbb5779e30bbd7514f4dcbff743c209e0c02667"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3bb5f2954dd897b0bac13b5449e5c977534595b688120c8af054657a08b01f46"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:62ac31059a3c510ef64ed93d930581b262fd4592e6d95ede79fca91e8d3d3ef6"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae32ac7217e83646b9f64d7090bf7b737afaa569665621f110a05d9738ca841a"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3994f7dc48d21af40c0d69fca57d8040b02953f4c7c3652c2341d8947e9cbedf"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c361201e1c3ee6d6b2266f8b7a645389880bccab1b29e22e7a6b7b6e7831ad5"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:861850d6a58e7b6a7096d0b0efed9c6d993a6ab8b9d01e781df1f4d80cc00efa"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ee772c20dcb56b03d666a4e4383d0b5b942b0ccc27815e42fe0737b34cba2082"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63fa75e87ad8c57d5722cc87902ca148ef8bbbba12b5c5b3c3730a1bc9ac2886"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b999fb66980f885961d197d97d7ff5a13b7ab524ccf45ccb4704f4b82ce02e3"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3243e4b8279ff2fe4c6e7869f0e6930c17799ee9f8d07317f68d44a66b46281e"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:542358b178b025dcc95e7fb83389e9954f701c41d312cbb66bdd763cbe5414b5"}, + {file = "bitarray-2.8.1.tar.gz", hash = "sha256:e68ceef35a88625d16169550768fcc8d3894913e363c24ecbf6b8c07eb02c8f3"}, +] + [[package]] name = "bitstring" -version = "4.0.2" +version = "4.1.1" description = "Simple construction, analysis and modification of binary data." optional = false python-versions = ">=3.7" files = [ - {file = "bitstring-4.0.2-py3-none-any.whl", hash = "sha256:f93893791e8a6ecb02adcc5c191aaa964a06a9e1449e326cfb4f49ff5198e588"}, - {file = "bitstring-4.0.2.tar.gz", hash = "sha256:a391db8828ac4485dd5ce72c80b27ebac3e7b989631359959e310cd9729723b2"}, + {file = "bitstring-4.1.1-py3-none-any.whl", hash = "sha256:13a07c63a2901a5572638d4917a2e7ea539df6bfe49aeb1c56949117fda943fa"}, + {file = "bitstring-4.1.1.tar.gz", hash = "sha256:a9c97fdf9fe38f27ea0ac2b4cf2a3f5bce5ccc23b863082582b9f48b22274528"}, ] +[package.dependencies] +bitarray = ">=2.8.0,<3.0.0" + [[package]] name = "black" version = "23.7.0" @@ -152,13 +266,13 @@ files = [ [[package]] name = "cfgv" -version = "3.3.1" +version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = true -python-versions = ">=3.6.1" +python-versions = ">=3.8" files = [ - {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] [[package]] @@ -247,13 +361,13 @@ files = [ [[package]] name = "click" -version = "8.1.6" +version = "8.1.7" description = "Composable command line interface toolkit" optional = true python-versions = ">=3.7" files = [ - {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, - {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -294,28 +408,31 @@ files = [ [[package]] name = "filelock" -version = "3.12.2" +version = "3.12.3" description = "A platform independent file lock." optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, - {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, + {file = "filelock-3.12.3-py3-none-any.whl", hash = "sha256:f067e40ccc40f2b48395a80fcbd4728262fab54e232e090a4063ab804179efeb"}, + {file = "filelock-3.12.3.tar.gz", hash = "sha256:0ecc1dd2ec4672a10c8550a8182f1bd0c0a5088470ecd5a125e45f49472fac3d"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.7.1", markers = "python_version < \"3.11\""} + [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] [[package]] name = "identify" -version = "2.5.26" +version = "2.5.27" description = "File identification library for Python" optional = true python-versions = ">=3.8" files = [ - {file = "identify-2.5.26-py2.py3-none-any.whl", hash = "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54"}, - {file = "identify-2.5.26.tar.gz", hash = "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f"}, + {file = "identify-2.5.27-py2.py3-none-any.whl", hash = "sha256:fdb527b2dfe24602809b2201e033c2a113d7bdf716db3ca8e3243f735dcecaba"}, + {file = "identify-2.5.27.tar.gz", hash = "sha256:287b75b04a0e22d727bc9a41f0d4f3c1bcada97490fa6eabb5b28f0e9097e733"}, ] [package.extras] @@ -567,39 +684,39 @@ files = [ [[package]] name = "pathspec" -version = "0.11.1" +version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." optional = true python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] name = "platformdirs" -version = "3.9.1" +version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = true python-versions = ">=3.7" files = [ - {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, - {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] [[package]] name = "pluggy" -version = "1.2.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -663,13 +780,13 @@ test = ["codecov", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "pygments" -version = "2.15.1" +version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." optional = true python-versions = ">=3.7" files = [ - {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, - {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, ] [package.extras] @@ -711,6 +828,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -718,8 +836,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -736,6 +861,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -743,6 +869,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -797,18 +924,18 @@ files = [ [[package]] name = "setuptools" -version = "68.0.0" +version = "68.1.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, - {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, + {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, + {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -849,13 +976,13 @@ bitstring = ">=3.0.0,<5" [[package]] name = "sphinx" -version = "7.1.0" +version = "7.2.4" description = "Python documentation generator" optional = true -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinx-7.1.0-py3-none-any.whl", hash = "sha256:9bdfb5a2b28351d4fdf40a63cd006dbad727f793b243e669fc950d7116c634af"}, - {file = "sphinx-7.1.0.tar.gz", hash = "sha256:8f336d0221c3beb23006b3164ed1d46db9cebcce9cb41cdb9c5ecd4bcc509be0"}, + {file = "sphinx-7.2.4-py3-none-any.whl", hash = "sha256:9b3aa23254ffc5be468646810543e491653bf5a67f3f23e4ccd4e515b0bd0b9c"}, + {file = "sphinx-7.2.4.tar.gz", hash = "sha256:1aeec862bf1edff4374012ac38082e0d1daa066c9e327841a846401164797988"}, ] [package.dependencies] @@ -867,7 +994,7 @@ imagesize = ">=1.3" importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" -Pygments = ">=2.13" +Pygments = ">=2.14" requests = ">=2.25.0" snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" @@ -875,54 +1002,63 @@ sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-serializinghtml = ">=1.1.9" [package.extras] docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] +test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.4" +version = "1.0.7" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = true -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, - {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, + {file = "sphinxcontrib_applehelp-1.0.7-py3-none-any.whl", hash = "sha256:094c4d56209d1734e7d252f6e0b3ccc090bd52ee56807a5d9315b19c122ab15d"}, + {file = "sphinxcontrib_applehelp-1.0.7.tar.gz", hash = "sha256:39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.2" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +version = "1.0.5" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = true -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, + {file = "sphinxcontrib_devhelp-1.0.5-py3-none-any.whl", hash = "sha256:fe8009aed765188f08fcaadbb3ea0d90ce8ae2d76710b7e29ea7d047177dae2f"}, + {file = "sphinxcontrib_devhelp-1.0.5.tar.gz", hash = "sha256:63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.1" +version = "2.0.4" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = true -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, - {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, + {file = "sphinxcontrib_htmlhelp-2.0.4-py3-none-any.whl", hash = "sha256:8001661c077a73c29beaf4a79968d0726103c5605e27db92b9ebed8bab1359e9"}, + {file = "sphinxcontrib_htmlhelp-2.0.4.tar.gz", hash = "sha256:6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] @@ -943,30 +1079,36 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.3" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +version = "1.0.6" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = true -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, + {file = "sphinxcontrib_qthelp-1.0.6-py3-none-any.whl", hash = "sha256:bf76886ee7470b934e363da7a954ea2825650013d367728588732c7350f49ea4"}, + {file = "sphinxcontrib_qthelp-1.0.6.tar.gz", hash = "sha256:62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +version = "1.1.9" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = true -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, + {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, + {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] @@ -1023,13 +1165,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.24.2" +version = "20.24.3" description = "Virtual Python Environment builder" optional = true python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.2-py3-none-any.whl", hash = "sha256:43a3052be36080548bdee0b42919c88072037d50d56c28bd3f853cbe92b953ff"}, - {file = "virtualenv-20.24.2.tar.gz", hash = "sha256:fd8a78f46f6b99a67b7ec5cf73f92357891a7b3a40fd97637c27f854aae3b9e0"}, + {file = "virtualenv-20.24.3-py3-none-any.whl", hash = "sha256:95a6e9398b4967fbcb5fef2acec5efaf9aa4972049d9ae41f95e0972a683fd02"}, + {file = "virtualenv-20.24.3.tar.gz", hash = "sha256:e5c3b4ce817b0b328af041506a2a299418c98747c4b1e68cb7527e74ced23efc"}, ] [package.dependencies] From aa092638635e12b16e7154e7789cdcea2b385f9a Mon Sep 17 00:00:00 2001 From: Gabriel M Date: Tue, 29 Aug 2023 13:59:23 -0600 Subject: [PATCH 2/5] update poetry lock to us older version of bitstring --- poetry.lock | 122 ++-------------------------------------------------- 1 file changed, 4 insertions(+), 118 deletions(-) diff --git a/poetry.lock b/poetry.lock index 18fcebecb..58e877a6a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -82,131 +82,17 @@ soupsieve = ">1.2" html5lib = ["html5lib"] lxml = ["lxml"] -[[package]] -name = "bitarray" -version = "2.8.1" -description = "efficient arrays of booleans -- C extension" -optional = false -python-versions = "*" -files = [ - {file = "bitarray-2.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6be965028785413a6163dd55a639b898b22f67f9b6ed554081c23e94a602031e"}, - {file = "bitarray-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29e19cb80a69f6d1a64097bfbe1766c418e1a785d901b583ef0328ea10a30399"}, - {file = "bitarray-2.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0f6d705860f59721d7282496a4d29b5fd78690e1c1473503832c983e762b01b"}, - {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6df04efdba4e1bf9d93a1735e42005f8fcf812caf40c03934d9322412d563499"}, - {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18530ed3ddd71e9ff95440afce531efc3df7a3e0657f1c201c2c3cb41dd65869"}, - {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4cd81ffd2d58ef68c22c825aff89f4a47bd721e2ada0a3a96793169f370ae21"}, - {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8367768ab797105eb97dfbd4577fcde281618de4d8d3b16ad62c477bb065f347"}, - {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:848af80518d0ed2aee782018588c7c88805f51b01271935df5b256c8d81c726e"}, - {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c54b0af16be45de534af9d77e8a180126cd059f72db8b6550f62dda233868942"}, - {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f30cdce22af3dc7c73e70af391bfd87c4574cc40c74d651919e20efc26e014b5"}, - {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bc03bb358ae3917247d257207c79162e666d407ac473718d1b95316dac94162b"}, - {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:cf38871ed4cd89df9db7c70f729b948fa3e2848a07c69f78e4ddfbe4f23db63c"}, - {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a637bcd199c1366c65b98f18884f0d0b87403f04676b21e4635831660d722a7"}, - {file = "bitarray-2.8.1-cp310-cp310-win32.whl", hash = "sha256:904719fb7304d4115228b63c178f0cc725ad3b73e285c4b328e45a99a8e3fad6"}, - {file = "bitarray-2.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:1e859c664500d57526fe07140889a3b58dca54ff3b16ac6dc6d534a65c933084"}, - {file = "bitarray-2.8.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2d3f28a80f2e6bb96e9360a4baf3fbacb696b5aba06a14c18a15488d4b6f398f"}, - {file = "bitarray-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4677477a406f2a9e064920463f69172b865e4d69117e1f2160064d3f5912b0bd"}, - {file = "bitarray-2.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9061c0a50216f24c97fb2325de84200e5ad5555f25c854ddcb3ceb6f12136055"}, - {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:843af12991161b358b6379a8dc5f6636798f3dacdae182d30995b6a2df3b263e"}, - {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9336300fd0acf07ede92e424930176dc4b43ef1b298489e93ba9a1695e8ea752"}, - {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0af01e1f61fe627f63648c0c6f52de8eac56710a2ef1dbce4851d867084cc7e"}, - {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ab81c74a1805fe74330859b38e70d7525cdd80953461b59c06660046afaffcf"}, - {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2015a9dd718393e814ff7b9e80c58190eb1cef7980f86a97a33e8440e158ce2"}, - {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b0493ab66c6b8e17e9fde74c646b39ee09c236cf28a787cb8cbd3a83c05bff7"}, - {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:81e83ed7e0b1c09c5a33b97712da89e7a21fd3e5598eff3975c39540f5619792"}, - {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:741c3a2c0997c8f8878edfc65a4a8f7aa72eede337c9bc0b7bd8a45cf6e70dbc"}, - {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:57aeab27120a8a50917845bb81b0976e33d4759f2156b01359e2b43d445f5127"}, - {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17c32ba584e8fb9322419390e0e248769ed7d59de3ffa7432562a4c0ec4f1f82"}, - {file = "bitarray-2.8.1-cp311-cp311-win32.whl", hash = "sha256:b67733a240a96f09b7597af97ac4d60c59140cfcfd180f11a7221863b82f023a"}, - {file = "bitarray-2.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:7b29d4bf3d3da1847f2be9e30105bf51caaf5922e94dc827653e250ed33f4e8a"}, - {file = "bitarray-2.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f6175c1cf07dadad3213d60075704cf2e2f1232975cfd4ac8328c24a05e8f78"}, - {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cc066c7290151600b8872865708d2d00fb785c5db8a0df20d70d518e02f172b"}, - {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ce2ef9291a193a0e0cd5e23970bf3b682cc8b95220561d05b775b8d616d665f"}, - {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5582dd7d906e6f9ec1704f99d56d812f7d395d28c02262bc8b50834d51250c3"}, - {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2aa2267eb6d2b88ef7d139e79a6daaa84cd54d241b9797478f10dcb95a9cd620"}, - {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a04d4851e83730f03c4a6aac568c7d8b42f78f0f9cc8231d6db66192b030ce1e"}, - {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f7d2ec2174d503cbb092f8353527842633c530b4e03b9922411640ac9c018a19"}, - {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b65a04b2e029b0694b52d60786732afd15b1ec6517de61a36afbb7808a2ffac1"}, - {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:55020d6fb9b72bd3606969f5431386c592ed3666133bd475af945aa0fa9e84ec"}, - {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:797de3465f5f6c6be9a412b4e99eb6e8cdb86b83b6756655c4d83a65d0b9a376"}, - {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f9a66745682e175e143a180524a63e692acb2b8c86941073f6dd4ee906e69608"}, - {file = "bitarray-2.8.1-cp36-cp36m-win32.whl", hash = "sha256:443726af4bd60515e4e41ea36c5dbadb29a59bc799bcbf431011d1c6fd4363e3"}, - {file = "bitarray-2.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:2b0f754a5791635b8239abdcc0258378111b8ee7a8eb3e2bbc24bcc48a0f0b08"}, - {file = "bitarray-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d175e16419a52d54c0ac44c93309ba76dc2cfd33ee9d20624f1a5eb86b8e162e"}, - {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3128234bde3629ab301a501950587e847d30031a9cbf04d95f35cbf44469a9e"}, - {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75104c3076676708c1ac2484ebf5c26464fb3850312de33a5b5bf61bfa7dbec5"}, - {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bfb6ab9b1b5451a5483c9a2ae2a8f83799d7503b384b54f6ab56ea74abb305"}, - {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dc064a63445366f6b26eaf77230d326b9463e903ba59d6ff5efde0c5ec1ea0e"}, - {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cbe54685cf6b17b3e15faf6c4b76773bc1c484bc447020737d2550a9dde5f6e6"}, - {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9fed8aba8d1b09cf641b50f1e6dd079c31677106ea4b63ec29f4c49adfabd63f"}, - {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7c17dd8fb146c2c680bf1cb28b358f9e52a14076e44141c5442148863ee95d7d"}, - {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c9efcee311d9ba0c619743060585af9a9b81496e97b945843d5e954c67722a75"}, - {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dc7acffee09822b334d1b46cd384e969804abdf18f892c82c05c2328066cd2ae"}, - {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ea71e0a50060f96ad0821e0ac785e91e44807f8b69555970979d81934961d5bd"}, - {file = "bitarray-2.8.1-cp37-cp37m-win32.whl", hash = "sha256:69ab51d551d50e4d6ca35abc95c9d04b33ad28418019bb5481ab09bdbc0df15c"}, - {file = "bitarray-2.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3024ab4c4906c3681408ca17c35833237d18813ebb9f24ae9f9e3157a4a66939"}, - {file = "bitarray-2.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:46fdd27c8fa4186d8b290bf74a28cbd91b94127b1b6a35c265a002e394fa9324"}, - {file = "bitarray-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d32ccd2c0d906eae103ef84015f0545a395052b0b6eb0e02e9023ca0132557f6"}, - {file = "bitarray-2.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9186cf8135ca170cd907d8c4df408a87747570d192d89ec4ff23805611c702a0"}, - {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8d6e5ff385fea25caf26fd58b43f087deb763dcaddd18d3df2895235cf1b484"}, - {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d6a9c72354327c7aa9890ff87904cbe86830cb1fb58c39750a0afac8df5e051"}, - {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2f13b7d0694ce2024c82fc595e6ccc3918e7f069747c3de41b1ce72a9a1e346"}, - {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d38ceca90ed538706e3f111513073590f723f90659a7af0b992b29776a6e816"}, - {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b977c39e3734e73540a2e3a71501c2c6261c70c6ce59d427bb7c4ecf6331c7e"}, - {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:214c05a7642040f6174e29f3e099549d3c40ac44616405081bf230dcafb38767"}, - {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad440c17ef2ff42e94286186b5bcf82bf87c4026f91822675239102ebe1f7035"}, - {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:28dee92edd0d21655e56e1870c22468d0dabe557df18aa69f6d06b1543614180"}, - {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:df9d8a9a46c46950f306394705512553c552b633f8bf3c11359c4204289f11e3"}, - {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1a0d27aad02d8abcb1d3b7d85f463877c4937e71adf9b6adb9367f2cdad91a52"}, - {file = "bitarray-2.8.1-cp38-cp38-win32.whl", hash = "sha256:6033303431a7c85a535b3f1b0ec28abc2ebc2167c263f244993b56ccb87cae6b"}, - {file = "bitarray-2.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b65d487451e0e287565c8436cf4da45260f958f911299f6122a20d7ec76525c"}, - {file = "bitarray-2.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9aad7b4670f090734b272c072c9db375c63bd503512be9a9393e657dcacfc7e2"}, - {file = "bitarray-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bf80804014e3736515b84044c2be0e70080616b4ceddd4e38d85f3167aeb8165"}, - {file = "bitarray-2.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7f7231ef349e8f4955d9b39561f4683a418a73443cfce797a4eddbee1ba9664"}, - {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67e8fb18df51e649adbc81359e1db0f202d72708fba61b06f5ac8db47c08d107"}, - {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d5df3d6358425c9dfb6bdbd4f576563ec4173d24693a9042d05aadcb23c0b98"}, - {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ea51ba4204d086d5b76e84c31d2acbb355ed1b075ded54eb9b7070b0b95415d"}, - {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1414582b3b7516d2282433f0914dd9846389b051b2aea592ae7cc165806c24ac"}, - {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5934e3a623a1d485e1dcfc1990246e3c32c6fc6e7f0fd894750800d35fdb5794"}, - {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aa08a9b03888c768b9b2383949a942804d50d8164683b39fe62f0bfbfd9b4204"}, - {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:00ff372dfaced7dd6cc2dffd052fafc118053cf81a442992b9a23367479d77d7"}, - {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:dd76bbf5a4b2ab84b8ffa229f5648e80038ba76bf8d7acc5de9dd06031b38117"}, - {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e88a706f92ad1e0e1e66f6811d10b6155d5f18f0de9356ee899a7966a4e41992"}, - {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b2560475c5a1ff96fcab01fae7cf6b9a6da590f02659556b7fccc7991e401884"}, - {file = "bitarray-2.8.1-cp39-cp39-win32.whl", hash = "sha256:74cd1725d08325b6669e6e9a5d09cec29e7c41f7d58e082286af5387414d046d"}, - {file = "bitarray-2.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:e48c45ea7944225bcee026c457a70eaea61db3659d9603f07fc8a643ab7e633b"}, - {file = "bitarray-2.8.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2426dc7a0d92d8254def20ab7a231626397ce5b6fb3d4f44be74cc1370a60c3"}, - {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d34790a919f165b6f537935280ef5224957d9ce8ab11d339f5e6d0319a683ccc"}, - {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c26a923080bc211cab8f5a5e242e3657b32951fec8980db0616e9239aade482"}, - {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de1bc5f971aba46de88a4eb0dbb5779e30bbd7514f4dcbff743c209e0c02667"}, - {file = "bitarray-2.8.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3bb5f2954dd897b0bac13b5449e5c977534595b688120c8af054657a08b01f46"}, - {file = "bitarray-2.8.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:62ac31059a3c510ef64ed93d930581b262fd4592e6d95ede79fca91e8d3d3ef6"}, - {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae32ac7217e83646b9f64d7090bf7b737afaa569665621f110a05d9738ca841a"}, - {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3994f7dc48d21af40c0d69fca57d8040b02953f4c7c3652c2341d8947e9cbedf"}, - {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c361201e1c3ee6d6b2266f8b7a645389880bccab1b29e22e7a6b7b6e7831ad5"}, - {file = "bitarray-2.8.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:861850d6a58e7b6a7096d0b0efed9c6d993a6ab8b9d01e781df1f4d80cc00efa"}, - {file = "bitarray-2.8.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ee772c20dcb56b03d666a4e4383d0b5b942b0ccc27815e42fe0737b34cba2082"}, - {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63fa75e87ad8c57d5722cc87902ca148ef8bbbba12b5c5b3c3730a1bc9ac2886"}, - {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b999fb66980f885961d197d97d7ff5a13b7ab524ccf45ccb4704f4b82ce02e3"}, - {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3243e4b8279ff2fe4c6e7869f0e6930c17799ee9f8d07317f68d44a66b46281e"}, - {file = "bitarray-2.8.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:542358b178b025dcc95e7fb83389e9954f701c41d312cbb66bdd763cbe5414b5"}, - {file = "bitarray-2.8.1.tar.gz", hash = "sha256:e68ceef35a88625d16169550768fcc8d3894913e363c24ecbf6b8c07eb02c8f3"}, -] - [[package]] name = "bitstring" -version = "4.1.1" +version = "4.0.2" description = "Simple construction, analysis and modification of binary data." optional = false python-versions = ">=3.7" files = [ - {file = "bitstring-4.1.1-py3-none-any.whl", hash = "sha256:13a07c63a2901a5572638d4917a2e7ea539df6bfe49aeb1c56949117fda943fa"}, - {file = "bitstring-4.1.1.tar.gz", hash = "sha256:a9c97fdf9fe38f27ea0ac2b4cf2a3f5bce5ccc23b863082582b9f48b22274528"}, + {file = "bitstring-4.0.2-py3-none-any.whl", hash = "sha256:f93893791e8a6ecb02adcc5c191aaa964a06a9e1449e326cfb4f49ff5198e588"}, + {file = "bitstring-4.0.2.tar.gz", hash = "sha256:a391db8828ac4485dd5ce72c80b27ebac3e7b989631359959e310cd9729723b2"}, ] -[package.dependencies] -bitarray = ">=2.8.0,<3.0.0" - [[package]] name = "black" version = "23.7.0" @@ -1206,4 +1092,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "bae1225c6979e2ad2f2695f3a850d73bbbb4c465db167a4e3f968888d791c3b7" +content-hash = "04c615a81fdb8ba6fb8c1a7c0ecfa09876507dfa5459229d185bc59389492d74" From 0a79e9658fd04e5450e80a880b06ca2d23295bb2 Mon Sep 17 00:00:00 2001 From: Gabriel M Date: Tue, 29 Aug 2023 15:05:22 -0600 Subject: [PATCH 3/5] update poetry lock and doc strings --- .../codice/L0/decom_python_example.py | 184 +++++++++--------- imap_processing/codice/decom.py | 5 +- imap_processing/codice/make_xtce.py | 35 ++-- 3 files changed, 116 insertions(+), 108 deletions(-) diff --git a/imap_processing/codice/L0/decom_python_example.py b/imap_processing/codice/L0/decom_python_example.py index 47ce71b9d..203e8eb83 100644 --- a/imap_processing/codice/L0/decom_python_example.py +++ b/imap_processing/codice/L0/decom_python_example.py @@ -6,65 +6,68 @@ parameters using a provided decommutation table. The extracted values are printed. Usage: - 1. Set the 'bin_file_path' variable to the path containing packet data. - 2. Replace 'target_apid' with the desired APID to search for. - 3. Define the 'decomm_table' with the decommutation info for different parameters. + 1. Set the `bin_file_path` variable to the path containing packet data. + 2. Replace `target_apid` with the desired APID to search for. + 3. Define the `decomm_table` with the decommutation info for different parameters. 4. Run the script to extract and print decommuted parameter values. Example: - Assuming 'read_binary_file' and other functions are defined: - - Given a binary file at 'bin_file_path' and a desired 'target_apid': - - If a packet with the 'target_apid' is found, parameters are extracted and printed. + Assuming `read_binary_file` and other functions are defined: + - Given a binary file at `bin_file_path` and a desired `target_apid`: + - If a packet with the `target_apid` is found, parameters are extracted and printed. - If no matching packet is found, a message indicating such is printed. """ -""" -Parameters ----------- -bin_file_path : str - Path to the binary file containing packet data. - target_apid : int - APID of the packet to search for. - decomm_table : list - List of dictionaries, each containing decommutation information for a parameter. - Each dictionary should contain: - - "mnemonic": A unique identifier for the parameter. - - "sequence": An optional parameter sequence number. - - "startByte": Starting byte index in the packet. - - "startBitInByte": Starting bit index within the starting byte. - - "startBit": Overall starting bit index in the packet. - - "lengthInBits": Number of bits to extract for this parameter. - - "dataType": Data type of the parameter, e.g., "unsigned_int", "float", etc. - """ def read_binary_file(file_path): + """ + Parameters + ---------- + bin_file_path : str + Path to the binary file containing packet data. + target_apid : int + APID of the packet to search for. + decomm_table : list + List of dictionaries, each containing decommutation information for a parameter. + Each dictionary should contain: + - "mnemonic": A unique identifier for the parameter. + - "sequence": An optional parameter sequence number. + - "startByte": Starting byte index in the packet. + - "startBitInByte": Starting bit index within the starting byte. + - "startBit": Overall starting bit index in the packet. + - "lengthInBits": Number of bits to extract for this parameter. + - "dataType": Data type of the parameter: "unsigned_int", "float", etc. + """ with open(file_path, "rb") as file: data = file.read() return data -""" -Extracts a value from binary data by interpreting a specified range of bits. - -This function is used to extract a value from a sequence of binary data by specifying -the starting bit position and the number of bits to consider. The bits are interpreted -as an unsigned integer value. - -Parameters ----------- - data (bytes): The binary data from which the value will be extracted. - start_bit (int): The index of the starting bit for extraction. - length (int): The number of bits to extract. - -Returns -------- - int: The extracted value represented as an integer. - -""" def extract_bits(data, start_bit, length): + """ + Extracts a value from binary data by interpreting a specified range of bits. + + This function is used to extract a value from a sequence of binary data by + specifyingthe starting bit position and the number of bits to consider. + The bits are interpreted as an unsigned integer value. + + Parameters + ---------- + data : bytes + The binary data from which the value will be extracted. + start_bit : int + The index of the starting bit for extraction. + length : int + The number of bits to extract. + + Returns + ------- + int: The extracted value represented as an integer. + + """ byte_offset = start_bit // 8 bit_shift = start_bit % 8 mask = (1 << length) - 1 @@ -77,31 +80,36 @@ def extract_bits(data, start_bit, length): return value & mask -""" -Finds the index of the first occurrence of a packet with a specific APID in binary data. - -This function searches through a sequence of binary data to find the index of the first -packet that matches the specified Application Process Identifier (APID). -The APID is a unique identifier used in packet-based data communication protocols. - -Parameters ----------- - bin_data (bytes): The binary data to search within. - target_apid (int): The target APID to search for. - -Returns -------- - int: The index of the first occurrence of the packet with the specified APID - or -1 if not found. - -Example: - binary_data = bytes([0x12, 0x34, 0x56, 0x12, 0x78, 0x90]) # Example binary data - target_apid = 0x1234 # Example target APID - packet_index = find_packet_with_apid(binary_data, target_apid) -""" - def find_packet_with_apid(bin_data, target_apid): + """ + Finds the index of the first occurrence of a packet with a specific + APID in binary data. + + This function searches through a sequence of binary data to find the + index of the first packet that matches the specified Application Process + Identifier (APID). The APID is a unique identifier used in packet-based data + communication protocols. + + Parameters + ---------- + bin_data : bytes + The binary data to search within. + target_apid : int + The target APID to search for. + + Returns + ------- + int: The index of the first occurrence of the packet with the specified APID + or -1 if not found. + + Example: + binary_data = bytes ([0x12, 0x34, 0x56, 0x12, 0x78, 0x90]) + target_apid = 0x1234 + Example target APID + packet_index = find_packet_with_apid + (binary_data, target_apid) + """ # Search for the target APID in the binary data target_apid_bytes = target_apid.to_bytes(2, byteorder="big") idx = bin_data.find(target_apid_bytes) @@ -109,32 +117,34 @@ def find_packet_with_apid(bin_data, target_apid): return idx -""" -Decommutes packet data using a provided decommutation table. - -This function takes a packet's binary data and a decommutation table as input, and -returns a dictionary of parameter values extracted from the packet -according to the table. - -Parameters ----------- - packet_data (bytes): Binary data of the packet to decommute. - decomm_table (list): List of dictionaries, each containing decommutation - information for a parameter. - Each dictionary should contain: - - "mnemonic": A unique identifier for the parameter. - - "sequence": An optional parameter sequence number. - - "startByte": Starting byte index in the packet. - - "startBitInByte": Starting bit index within the starting byte. - - "startBit": Overall starting bit index in the packet. - - "lengthInBits": Number of bits to extract for this parameter. - - "dataType": Data type of the parameter: "unsigned_int", "float", etc. - -""" # Decommutation table variables may not all be the same def decommute_packet(packet_data, decomm_table): + """ + Decommutes packet data using a provided decommutation table. + + This function takes a packet's binary data and a decommutation table as input, and + returns a dictionary of parameter values extracted from the packet + according to the table. + + Parameters + ---------- + packet_data : bytes + Binary data of the packet to decommute. + decomm_table : list + List of dictionaries, each containing decommutation + information for a parameter. + Each dictionary should contain: + - "mnemonic": A unique identifier for the parameter. + - "sequence": An optional parameter sequence number. + - "startByte": Starting byte index in the packet. + - "startBitInByte": Starting bit index within the starting byte. + - "startBit": Overall starting bit index in the packet. + - "lengthInBits": Number of bits to extract for this parameter. + - "dataType": Data type of the parameter: "unsigned_int", "float", etc. + + """ parameters = {} for entry in decomm_table: diff --git a/imap_processing/codice/decom.py b/imap_processing/codice/decom.py index 15bf6ac02..a05fbdc5e 100644 --- a/imap_processing/codice/decom.py +++ b/imap_processing/codice/decom.py @@ -2,7 +2,6 @@ XTCE file specifically for the CODICE L0 data. This is a modified version of the example found in the 'space_packet_parser' module documentation. This is the start of CODICE L0 data processing. - """ from pathlib import Path @@ -10,8 +9,8 @@ from space_packet_parser import parser, xtcedef # Define the APID. This is the APID for the CODICE L0 data that is in the -# 'RAW.bin' file. Data bins like 'RAW.bin' will encompass multiple APIDs. This is why -# we need to specify the APID. +# 'RAW.bin' file. Data bins like 'RAW.bin' will encompass multiple APIDs. +# This is why we need to specify the APID. # The APID should be in the packet definition file given by instrument team. apid = 0x460 diff --git a/imap_processing/codice/make_xtce.py b/imap_processing/codice/make_xtce.py index 148036d28..bde4b30be 100644 --- a/imap_processing/codice/make_xtce.py +++ b/imap_processing/codice/make_xtce.py @@ -1,7 +1,6 @@ """ The module will take an Excel file and convert it into an XTCE formatted XML file. This is specific for CODICE L0, but can be modified for other missions. This is the start of CODICE L0 data processing. - """ import xml.etree.ElementTree as Et @@ -53,11 +52,11 @@ """ These lines of code create a structured XML hierarchy to represent data according to a defined XML schema: - - The 'TelemetryMetaData' element is added under the 'root' element, + - The `TelemetryMetaData` element is added under the 'root' element, providing a namespace. - - Within 'TelemetryMetaData', the 'ParameterTypeSet' element is created + - Within `TelemetryMetaData`, the `ParameterTypeSet` element is created to define parameter types. - - Similarly, the 'ParameterSet' element is added to 'TelemetryMetaData' + - Similarly, the `ParameterSet` element is added to `TelemetryMetaData` to define specific parameters. These elements and their organization help organize and standardize data representation in XML format. @@ -79,9 +78,9 @@ define integer parameter types: - The loop iterates from 0 - 32, creating an 'IntegerParameterType' element for each number. - - In 'IntegerParameterType' element, attributes like 'name' and 'signed' are set. - - An 'IntegerDataEncoding' is added with attributes 'sizeInBits' and 'encoding'. - - Lastly, a 'UnitSet' element is added within each 'IntegerParameterType'. + - In `IntegerParameterType` element, attributes like `name` and `signed` are set. + - An `IntegerDataEncoding` is added with attributes `sizeInBits` and `encoding`. + - Lastly, a `UnitSet` element is added within each `IntegerParameterType`. This loop efficiently defines integer parameter types for a range of values in the XML structure. """ @@ -102,10 +101,10 @@ """ This loop generates XML elements to define CCSDS packet parameters: - - It iterates over a list of 'ccsds_parameters', each containing parameter data. - - For each parameter, an 'xtce:Parameter' element is added to the 'parameter_set'. - - Attributes like 'name' and 'parameterTypeRef' are set using the parameter data. - - A 'LongDescription' element is created with the description text. + - It iterates over a list of `ccsds_parameters`, each containing parameter data. + - For each parameter, an `xtce:Parameter` element is added to the 'parameter_set'. + - Attributes like `name` and `parameterTypeRef` are set using the parameter data. + - A `LongDescription` element is created with the description text. This loop effectively creates XML elements to define CCSDS packet parameters based on the given data. """ @@ -171,14 +170,14 @@ """ This loop processes rows from the DataFrame starting from the 9th row onwards: - - It iterates over the DataFrame rows using the 'iterrows()' function. + - It iterates over the DataFrame rows using the `iterrows()` function. - For each row, it checks if the row index is less than 8 (rows before the 9th row). - If the condition is met, the loop continues to the next iteration, skipping these rows. - - Otherwise, it creates an 'xtce:Parameter' element and adds it to - the 'parameter_set'. - - Attributes like 'name' and 'parameterTypeRef' are set based on row data. - - A 'LongDescription' element is created with the description text from the row. + - Otherwise, it creates an `xtce:Parameter` element and adds it to + the `parameter_set`. + - Attributes like `name` and `parameterTypeRef` are set based on row data. + - A `LongDescription` element is created with the description text from the row. This loop effectively generates XML elements for parameters starting from the 9th row of the DataFrame. """ @@ -200,8 +199,8 @@ """ This section creates the final XML structure, indents it, then saves it to a file: - - The 'ET.ElementTree(root)' creates an ElementTree with the root element 'root'. - - 'ET.indent(tree, space="\t", level=0)' adds indentation for readability. + - The 'Et.ElementTree(root)' creates an ElementTree with the root element 'root'. + - 'Et.indent(tree, space="\t", level=0)' adds indentation for readability. - 'tree' is the ElementTree object. - 'space="\t"' specifies the character used for indentation (a tab in this case). - 'level=0' indicates the starting level of indentation. From d4d0caf129f243824059b7f9141ca43e862038ff Mon Sep 17 00:00:00 2001 From: Gabriel M Date: Tue, 29 Aug 2023 15:56:48 -0600 Subject: [PATCH 4/5] formatting review from Matthew --- .../codice/L0/decom_python_example.py | 50 ++++++++----------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/imap_processing/codice/L0/decom_python_example.py b/imap_processing/codice/L0/decom_python_example.py index 203e8eb83..7ea68ac70 100644 --- a/imap_processing/codice/L0/decom_python_example.py +++ b/imap_processing/codice/L0/decom_python_example.py @@ -19,17 +19,16 @@ """ - def read_binary_file(file_path): """ Parameters ---------- - bin_file_path : str + file_path : str Path to the binary file containing packet data. - target_apid : int - APID of the packet to search for. - decomm_table : list - List of dictionaries, each containing decommutation information for a parameter. + + Returns + -------- + data : dict Each dictionary should contain: - "mnemonic": A unique identifier for the parameter. - "sequence": An optional parameter sequence number. @@ -38,14 +37,12 @@ def read_binary_file(file_path): - "startBit": Overall starting bit index in the packet. - "lengthInBits": Number of bits to extract for this parameter. - "dataType": Data type of the parameter: "unsigned_int", "float", etc. - """ + """ with open(file_path, "rb") as file: data = file.read() return data - - def extract_bits(data, start_bit, length): """ Extracts a value from binary data by interpreting a specified range of bits. @@ -66,7 +63,6 @@ def extract_bits(data, start_bit, length): Returns ------- int: The extracted value represented as an integer. - """ byte_offset = start_bit // 8 bit_shift = start_bit % 8 @@ -80,7 +76,6 @@ def extract_bits(data, start_bit, length): return value & mask - def find_packet_with_apid(bin_data, target_apid): """ Finds the index of the first occurrence of a packet with a specific @@ -100,8 +95,8 @@ def find_packet_with_apid(bin_data, target_apid): Returns ------- - int: The index of the first occurrence of the packet with the specified APID - or -1 if not found. + idx : int + The index of the first occurrence of the packet with the specified APID Example: binary_data = bytes ([0x12, 0x34, 0x56, 0x12, 0x78, 0x90]) @@ -117,8 +112,6 @@ def find_packet_with_apid(bin_data, target_apid): return idx - - # Decommutation table variables may not all be the same def decommute_packet(packet_data, decomm_table): """ @@ -130,20 +123,19 @@ def decommute_packet(packet_data, decomm_table): Parameters ---------- - packet_data : bytes - Binary data of the packet to decommute. - decomm_table : list - List of dictionaries, each containing decommutation - information for a parameter. - Each dictionary should contain: - - "mnemonic": A unique identifier for the parameter. - - "sequence": An optional parameter sequence number. - - "startByte": Starting byte index in the packet. - - "startBitInByte": Starting bit index within the starting byte. - - "startBit": Overall starting bit index in the packet. - - "lengthInBits": Number of bits to extract for this parameter. - - "dataType": Data type of the parameter: "unsigned_int", "float", etc. - + packet_data : bytes + Binary data of the packet to decommute. + decomm_table : list + List of dictionaries, each containing decommutation + information for a parameter. + Each dictionary should contain: + - "mnemonic": A unique identifier for the parameter. + - "sequence": An optional parameter sequence number. + - "startByte": Starting byte index in the packet. + - "startBitInByte": Starting bit index within the starting byte. + - "startBit": Overall starting bit index in the packet. + - "lengthInBits": Number of bits to extract for this parameter. + - "dataType": Data type of the parameter: "unsigned_int", "float", etc. """ parameters = {} From eaad20a18370e451bb828943f2a6d79d3f6a7017 Mon Sep 17 00:00:00 2001 From: Matthew Bourque Date: Tue, 29 Aug 2023 16:09:12 -0600 Subject: [PATCH 5/5] Fixed indentation in some docstrings --- .../codice/L0/decom_python_example.py | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/imap_processing/codice/L0/decom_python_example.py b/imap_processing/codice/L0/decom_python_example.py index 7ea68ac70..102152b97 100644 --- a/imap_processing/codice/L0/decom_python_example.py +++ b/imap_processing/codice/L0/decom_python_example.py @@ -48,21 +48,22 @@ def extract_bits(data, start_bit, length): Extracts a value from binary data by interpreting a specified range of bits. This function is used to extract a value from a sequence of binary data by - specifyingthe starting bit position and the number of bits to consider. + specifying the starting bit position and the number of bits to consider. The bits are interpreted as an unsigned integer value. Parameters ---------- - data : bytes - The binary data from which the value will be extracted. - start_bit : int - The index of the starting bit for extraction. - length : int - The number of bits to extract. + data : bytes + The binary data from which the value will be extracted. + start_bit : int + The index of the starting bit for extraction. + length : int + The number of bits to extract. Returns ------- - int: The extracted value represented as an integer. + int + The extracted value represented as an integer. """ byte_offset = start_bit // 8 bit_shift = start_bit % 8 @@ -88,15 +89,15 @@ def find_packet_with_apid(bin_data, target_apid): Parameters ---------- - bin_data : bytes - The binary data to search within. - target_apid : int - The target APID to search for. + bin_data : bytes + The binary data to search within. + target_apid : int + The target APID to search for. Returns ------- - idx : int - The index of the first occurrence of the packet with the specified APID + idx : int + The index of the first occurrence of the packet with the specified APID Example: binary_data = bytes ([0x12, 0x34, 0x56, 0x12, 0x78, 0x90]) @@ -126,9 +127,12 @@ def decommute_packet(packet_data, decomm_table): packet_data : bytes Binary data of the packet to decommute. decomm_table : list - List of dictionaries, each containing decommutation - information for a parameter. - Each dictionary should contain: + List of dictionaries, each containing decommutation information for a parameter. + + Returns + ------- + parameters : dict + The decommuted parameters. Each dictionary should contain: - "mnemonic": A unique identifier for the parameter. - "sequence": An optional parameter sequence number. - "startByte": Starting byte index in the packet.