fprime-gds 4.0.0a3__tar.gz → 4.0.0a5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/PKG-INFO +1 -1
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/adapters/ip.py +14 -9
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/ccsds/space_packet.py +0 -1
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/distributor/distributor.py +2 -1
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/pkt_json_loader.py +4 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/dictionaries.py +9 -1
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/testing_fw/api.py +110 -5
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/testing_fw/pytest_integration.py +12 -1
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/data_product_writer.py +121 -158
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds.egg-info/PKG-INFO +1 -1
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/dictionary.json +233 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/actions/codeql/security-pack.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/actions/spelling/excludes.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/actions/spelling/expect.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/actions/spelling/patterns.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/pull_request_template.md +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/resources/RefTopologyAppDictionary.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/workflows/codeql-security-scan.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/workflows/fprime-gds-tests.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/workflows/gds-cli-tests.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/workflows/publish.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.github/workflows/spelling.yml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/.gitignore +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/Doxyfile +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/LICENSE.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/NOTICE.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/README.md +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/configs/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/docs/README.md +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/docs/_static/css/rtd_width.css +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/docs/conf.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/docs/gendoc.bash +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/docs/index.rst +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/examples/simple_sequence.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/examples/simple_sequence.seq +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/pyproject.toml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/setup.cfg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/setup.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fastentrypoints.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/adapters/base.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/adapters/uart.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/ccsds/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/ccsds/apid.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/ccsds/chain.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/ccsds/space_data_link.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/checksum.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/framing.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/ground.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/updown.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/controllers/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/ch_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/event_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/exceptions.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/file_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/data_types/sys_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/decoders/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/decoders/ch_decoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/decoders/decoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/decoders/event_decoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/decoders/pkt_decoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/distributor/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/ch_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/cmd_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/event_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/pkt_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/encoders/seq_writer.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/files/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/files/downlinker.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/files/helpers.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/files/uplinker.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/fpy/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/fpy/serialize_bytecode.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/fpy/types.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/base_commands.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/channels.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/events.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/handlers.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/history/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/history/chrono.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/history/history.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/history/ram.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/history/test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/fw_type_json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/prm_json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/logger/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/logger/data_logger.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/logger/test_logger.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/models/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/models/common/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/models/common/command.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/models/common/event.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/parsers/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/encoding.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/files.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/histories.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/router.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/pipeline/standard.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/ch_template.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/cmd_template.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/data_template.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/event_template.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/pkt_template.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/templates/prm_template.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/testing_fw/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/tools/README.md +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/tools/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/tools/params.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/tools/seqgen.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/transport.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/utils/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/utils/config_manager.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/utils/event_severity.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/utils/string_util.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/zmq_transport.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/apps.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/cli.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/comm.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/fprime_cli.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/run_deployment.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/tcpserver.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/executables/utils.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/app.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/channels.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/commands.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/components.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/default_settings.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/errors.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/events.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/json.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/logs.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/requirements.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/resource.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/sequence.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/css/fprime.css +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/favicon.ico +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/img/error.svg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/img/logo.svg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/img/success.svg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/index.html +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/config.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/datastore.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/gds.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/json.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/loader.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/performance.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/settings.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/uploader.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/validate.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/channel.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/event.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/stats.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/flask/updown.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/plugin/__init__.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/plugin/definitions.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/plugin/system.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/version.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds.egg-info/SOURCES.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds.egg-info/entry_points.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds.egg-info/requires.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds.egg-info/top_level.txt +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/communication/ccsds/test_space_data_link.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/communication/ccsds/test_space_packet.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/fpy/integrated_tests.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/loaders/test_json_loader.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/expected/simple_paramdb.dat +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/input/simple_bad_paramdb.json +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/input/simple_paramdb.json +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/resources/simple_dictionary.json +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/tools/test_paramdb_gen.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/common/utils/test_string_util.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/.gitignore +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/test_run_deployment.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/executables/test_utils.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/sample/dictionary.xml +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/fprime_gds/test_plugins.py +0 -0
- {fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/test/gui/GUI_Test_Procedure.md +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: fprime-gds
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.0a5
|
4
4
|
Summary: F Prime Flight Software Ground Data System layer
|
5
5
|
Author-email: Michael Starch <Michael.D.Starch@jpl.nasa.gov>, Thomas Boyer-Chammard <Thomas.Boyer.Chammard@jpl.nasa.gov>
|
6
6
|
License:
|
{fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/communication/adapters/ip.py
RENAMED
@@ -50,13 +50,11 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
50
50
|
both. This data is concatenated and returned up the stack for processing.
|
51
51
|
"""
|
52
52
|
|
53
|
-
# Interval to send a KEEPALIVE packet. None will turn off KEEPALIVE.
|
54
|
-
KEEPALIVE_INTERVAL = 0.500
|
55
53
|
# Data to send out as part of the KEEPALIVE packet. Should not be null nor empty.
|
56
54
|
KEEPALIVE_DATA = b"sitting well"
|
57
55
|
MAXIMUM_DATA_SIZE = 4096
|
58
56
|
|
59
|
-
def __init__(self, address, port, server=True):
|
57
|
+
def __init__(self, address, port, server=True, keepalive_interval=0.5):
|
60
58
|
"""
|
61
59
|
Initialize this adapter by creating a handler for UDP and TCP. A thread for the KEEPALIVE application packets
|
62
60
|
will be created, if the interval is not none. Handlers are servers unless server=False.
|
@@ -64,7 +62,8 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
64
62
|
self.address = address
|
65
63
|
self.port = port
|
66
64
|
self.stop = False
|
67
|
-
self.
|
65
|
+
self.keepalive_thread = None
|
66
|
+
self.keepalive_interval = keepalive_interval
|
68
67
|
self.tcp = TcpHandler(address, port, server=server)
|
69
68
|
self.udp = UdpHandler(address, port, server=server)
|
70
69
|
self.thtcp = None
|
@@ -91,11 +90,11 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
91
90
|
self.thudp.daemon = True
|
92
91
|
self.thudp.start()
|
93
92
|
# Start up a keep-alive ping if desired. This will hit the TCP uplink, and die if the connection is down
|
94
|
-
if
|
95
|
-
self.
|
96
|
-
target=self.th_alive, name="KeepCommAliveThread", args=[
|
93
|
+
if self.keepalive_interval > 0.0:
|
94
|
+
self.keepalive_thread = threading.Thread(
|
95
|
+
target=self.th_alive, name="KeepCommAliveThread", args=[self.keepalive_interval]
|
97
96
|
)
|
98
|
-
self.
|
97
|
+
self.keepalive_thread.start()
|
99
98
|
except (ValueError, TypeError) as exc:
|
100
99
|
LOGGER.error(
|
101
100
|
f"Failed to start keep-alive thread. {type(exc).__name__}: {str(exc)}"
|
@@ -186,6 +185,12 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
186
185
|
"default": True,
|
187
186
|
"help": "Run the IP adapter as the client (connects to FSW running TcpServer)",
|
188
187
|
},
|
188
|
+
("--keepalive-interval",): {
|
189
|
+
"dest": "keepalive_interval",
|
190
|
+
"type": float,
|
191
|
+
"default": 0.5000,
|
192
|
+
"help": "Keep alive packet interval. 0.0 = off, default = 0.5",
|
193
|
+
},
|
189
194
|
}
|
190
195
|
|
191
196
|
@classmethod
|
@@ -195,7 +200,7 @@ class IpAdapter(fprime_gds.common.communication.adapters.base.BaseAdapter):
|
|
195
200
|
return cls
|
196
201
|
|
197
202
|
@classmethod
|
198
|
-
def check_arguments(cls, address, port, server=True):
|
203
|
+
def check_arguments(cls, address, port, server=True, keepalive_interval=0.5):
|
199
204
|
"""
|
200
205
|
Code that should check arguments of this adapter. If there is a problem with this code, then a "ValueError"
|
201
206
|
should be raised describing the problem with these arguments.
|
@@ -199,9 +199,10 @@ class Distributor(DataHandler):
|
|
199
199
|
(length, data_desc, msg) = self.parse_raw_msg_api(raw_msg)
|
200
200
|
|
201
201
|
data_desc_key = data_desc_type.DataDescType(data_desc).name
|
202
|
-
|
203
202
|
for d in self.__decoders[data_desc_key]:
|
204
203
|
try:
|
205
204
|
d.data_callback(msg)
|
206
205
|
except DecodingException as dexc:
|
207
206
|
LOGGER.warning("Decoding error occurred: %s. Skipping.", dexc)
|
207
|
+
else:
|
208
|
+
LOGGER.warning("No decoder registered for: %s", data_desc_type.DataDescType(data_desc).name)
|
@@ -19,6 +19,10 @@ class PktJsonLoader(JsonLoader):
|
|
19
19
|
SET_NAME = "name"
|
20
20
|
MEMBERS = "members"
|
21
21
|
|
22
|
+
def get_packet_set_names(self, path):
|
23
|
+
""" Get the list of packet sets """
|
24
|
+
return [packet_set[self.SET_NAME] for packet_set in self.json_dict[self.PACKETS_FIELD]]
|
25
|
+
|
22
26
|
def get_id_dict(self, path, packet_set_name: str, ch_name_dict: dict):
|
23
27
|
if path in self.saved_dicts and packet_set_name in self.saved_dicts[path]:
|
24
28
|
(id_dict, name_dict) = self.saved_dicts[path][packet_set_name]
|
@@ -128,8 +128,16 @@ class Dictionaries:
|
|
128
128
|
msg = f"[ERROR] Dictionary '{dictionary}' does not exist."
|
129
129
|
raise Exception(msg)
|
130
130
|
# Check for packet specification
|
131
|
-
if self._metadata["dictionary_type"] == "json"
|
131
|
+
if self._metadata["dictionary_type"] == "json":
|
132
132
|
packet_loader = fprime_gds.common.loaders.pkt_json_loader.PktJsonLoader(dictionary)
|
133
|
+
if packet_set_name is None:
|
134
|
+
names = packet_loader.get_packet_set_names(None)
|
135
|
+
if len(names) == 0:
|
136
|
+
self._packet_dict = None
|
137
|
+
return
|
138
|
+
elif len(names) > 1:
|
139
|
+
raise Exception("[ERROR] Multiple packet sets, must set --packet-set-name")
|
140
|
+
packet_set_name = names[0]
|
133
141
|
self._packet_dict = packet_loader.get_id_dict(
|
134
142
|
None, packet_set_name, self._channel_name_dict
|
135
143
|
)
|
@@ -11,6 +11,7 @@ import signal
|
|
11
11
|
import time
|
12
12
|
from pathlib import Path
|
13
13
|
import shutil
|
14
|
+
import json
|
14
15
|
|
15
16
|
from fprime.common.models.serialize.time_type import TimeType
|
16
17
|
|
@@ -30,15 +31,17 @@ class IntegrationTestAPI(DataHandler):
|
|
30
31
|
|
31
32
|
NOW = "NOW"
|
32
33
|
|
33
|
-
def __init__(self, pipeline, logpath=None, fsw_order=True):
|
34
|
+
def __init__(self, pipeline, deployment_config=None, logpath=None, fsw_order=True):
|
34
35
|
"""
|
35
36
|
Initializes API: constructs and registers test histories.
|
36
37
|
Args:
|
37
38
|
pipeline: a pipeline object providing access to basic GDS functionality
|
39
|
+
deployment_config: path to deployment configuration file
|
38
40
|
logpath: an optional output destination for the api test log
|
39
41
|
fsw_order: a flag to determine whether the API histories will maintain FSW time order.
|
40
42
|
"""
|
41
43
|
self.pipeline = pipeline
|
44
|
+
self.deployment_config = deployment_config
|
42
45
|
|
43
46
|
# these are owned by the GDS and will not be modified by the test API.
|
44
47
|
self.aggregate_command_history = pipeline.histories.commands
|
@@ -228,11 +231,29 @@ class IntegrationTestAPI(DataHandler):
|
|
228
231
|
|
229
232
|
def get_deployment(self):
|
230
233
|
"""
|
231
|
-
Get the deployment of the target using the loaded FSW dictionary
|
234
|
+
Get the deployment of the target using the loaded FSW dictionary.
|
235
|
+
|
232
236
|
Returns:
|
233
|
-
The name of the deployment (str)
|
234
|
-
"""
|
235
|
-
|
237
|
+
The name of the deployment (str) or None if not found
|
238
|
+
"""
|
239
|
+
dictionary = str(self.pipeline.dictionary_path)
|
240
|
+
|
241
|
+
try:
|
242
|
+
with open(dictionary, 'r') as file:
|
243
|
+
data = json.load(file)
|
244
|
+
return data['metadata'].get("deploymentName")
|
245
|
+
except FileNotFoundError:
|
246
|
+
msg = f"Error: File not found at path: {dictionary}"
|
247
|
+
self.__log(msg, TestLogger.YELLOW)
|
248
|
+
return None
|
249
|
+
except json.JSONDecodeError as e:
|
250
|
+
msg = f"Error decoding JSON: {e}"
|
251
|
+
self.__log(msg, TestLogger.YELLOW)
|
252
|
+
return None
|
253
|
+
except Exception as e:
|
254
|
+
msg = f"An unexpected error occurred: {e} is an unknown key"
|
255
|
+
self.__log(msg, TestLogger.YELLOW)
|
256
|
+
return None
|
236
257
|
|
237
258
|
def wait_for_dataflow(self, count=1, channels=None, start=None, timeout=120):
|
238
259
|
"""
|
@@ -257,6 +278,90 @@ class IntegrationTestAPI(DataHandler):
|
|
257
278
|
assert False, msg
|
258
279
|
self.remove_telemetry_subhistory(history)
|
259
280
|
|
281
|
+
def get_config_file_path(self):
|
282
|
+
"""
|
283
|
+
Accessor for IntegrationTestAPI's deployment configuration file.
|
284
|
+
|
285
|
+
Returns:
|
286
|
+
path to user-specified deployment configuration file (str) or None if not defined
|
287
|
+
"""
|
288
|
+
if self.deployment_config:
|
289
|
+
return self.deployment_config
|
290
|
+
else:
|
291
|
+
return None
|
292
|
+
|
293
|
+
def load_config_file(self):
|
294
|
+
"""
|
295
|
+
Load user-specified deployment configuration JSON file.
|
296
|
+
|
297
|
+
Returns:
|
298
|
+
JSON object as a dictionary
|
299
|
+
"""
|
300
|
+
config_file = self.get_config_file_path()
|
301
|
+
|
302
|
+
try:
|
303
|
+
with open(config_file, 'r') as file:
|
304
|
+
result = json.load(file)
|
305
|
+
return result
|
306
|
+
except FileNotFoundError:
|
307
|
+
msg = f"Error: File not found at path {config_file}"
|
308
|
+
self.__log(msg, TestLogger.RED)
|
309
|
+
assert False, msg
|
310
|
+
except json.JSONDecodeError as e:
|
311
|
+
msg = f"Error decoding JSON: {e}"
|
312
|
+
self.__log(msg, TestLogger.RED)
|
313
|
+
assert False, msg
|
314
|
+
except Exception as e:
|
315
|
+
msg = f"An unexpected error occurred: {e}"
|
316
|
+
self.__log(msg, TestLogger.RED)
|
317
|
+
assert False, msg
|
318
|
+
|
319
|
+
def get_mnemonic(self, comp=None, name=None):
|
320
|
+
"""
|
321
|
+
Get deployment mnemonic of specified item from user-specified deployment
|
322
|
+
configuration file.
|
323
|
+
|
324
|
+
Args:
|
325
|
+
comp: qualified name of the component instance (str), i.e. "<component>.<instance>"
|
326
|
+
name: command, channel, or event name (str) [optional]
|
327
|
+
Returns:
|
328
|
+
deployment mnemonic of specified item (str) or native mnemonic (str) if not found
|
329
|
+
"""
|
330
|
+
data = self.load_config_file()
|
331
|
+
|
332
|
+
if data:
|
333
|
+
try:
|
334
|
+
mnemonic = data[comp]
|
335
|
+
return f"{mnemonic}.{name}" if name else f"{mnemonic}"
|
336
|
+
except KeyError:
|
337
|
+
self.__log(f"Error: {comp} not found", TestLogger.YELLOW)
|
338
|
+
return f"{comp}.{name}" if name else f"{comp}"
|
339
|
+
else:
|
340
|
+
return f"{comp}.{name}" if name else f"{comp}"
|
341
|
+
|
342
|
+
def get_prm_db_path(self) -> str:
|
343
|
+
"""
|
344
|
+
Get file path to parameter db from user-specified deployment configuration file.
|
345
|
+
|
346
|
+
Returns:
|
347
|
+
file path to parameter db (str) or None if not found
|
348
|
+
"""
|
349
|
+
data = self.load_config_file()
|
350
|
+
|
351
|
+
if data:
|
352
|
+
try:
|
353
|
+
filepath = data["Svc.PrmDb.filename"]
|
354
|
+
if filepath.startswith('/'):
|
355
|
+
return filepath
|
356
|
+
else:
|
357
|
+
msg = f"Error: {filepath} did not start with a forward slash"
|
358
|
+
self.__log(msg, TestLogger.RED)
|
359
|
+
assert False, msg
|
360
|
+
except KeyError:
|
361
|
+
return None
|
362
|
+
else:
|
363
|
+
return None
|
364
|
+
|
260
365
|
######################################################################################
|
261
366
|
# History Functions
|
262
367
|
######################################################################################
|
{fprime_gds-4.0.0a3 → fprime_gds-4.0.0a5}/src/fprime_gds/common/testing_fw/pytest_integration.py
RENAMED
@@ -52,6 +52,12 @@ def pytest_addoption(parser):
|
|
52
52
|
action="store_true",
|
53
53
|
help="Enable JUnitXML report generation to a specified location"
|
54
54
|
)
|
55
|
+
# Add an option to specify a json config file that maps components
|
56
|
+
parser.addoption(
|
57
|
+
"--deployment-config",
|
58
|
+
action="store",
|
59
|
+
help="Path to JSON configuration file for mapping deployment components"
|
60
|
+
)
|
55
61
|
|
56
62
|
def pytest_configure(config):
|
57
63
|
""" This is a hook to allow plugins and conftest files to perform initial configuration
|
@@ -85,6 +91,7 @@ def fprime_test_api_session(request):
|
|
85
91
|
pipeline_parser = StandardPipelineParser()
|
86
92
|
pipeline = None
|
87
93
|
api = None
|
94
|
+
deployment_config = None
|
88
95
|
try:
|
89
96
|
# Parse the command line arguments into a client connection
|
90
97
|
arg_ns = pipeline_parser.handle_arguments(request.config.known_args_namespace, client=True)
|
@@ -92,8 +99,12 @@ def fprime_test_api_session(request):
|
|
92
99
|
# Build a new pipeline with the parsed and processed arguments
|
93
100
|
pipeline = pipeline_parser.pipeline_factory(arg_ns, pipeline)
|
94
101
|
|
102
|
+
# Get deployment configuration from command line arguments
|
103
|
+
if request.config.option.deployment_config:
|
104
|
+
deployment_config = request.config.option.deployment_config
|
105
|
+
|
95
106
|
# Build and set up the integration test api
|
96
|
-
api = IntegrationTestAPI(pipeline, arg_ns.logs)
|
107
|
+
api = IntegrationTestAPI(pipeline, deployment_config, arg_ns.logs)
|
97
108
|
api.setup()
|
98
109
|
|
99
110
|
# Return the API. Note: the second call here-in will begin after the yield and clean-up after the test
|