fprime-gds 4.0.0a5__tar.gz → 4.0.0a6__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.
Files changed (326) hide show
  1. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/PKG-INFO +1 -1
  2. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/dictionaries.py +7 -6
  3. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/apps.py +9 -4
  4. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/run_deployment.py +1 -1
  5. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds.egg-info/PKG-INFO +1 -1
  6. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/test_plugins.py +108 -24
  7. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  8. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/actions/codeql/security-pack.yml +0 -0
  9. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/actions/spelling/excludes.txt +0 -0
  10. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/actions/spelling/expect.txt +0 -0
  11. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/actions/spelling/patterns.txt +0 -0
  12. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/pull_request_template.md +0 -0
  13. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/resources/RefTopologyAppDictionary.xml +0 -0
  14. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/workflows/codeql-security-scan.yml +0 -0
  15. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/workflows/fprime-gds-tests.yml +0 -0
  16. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/workflows/gds-cli-tests.yml +0 -0
  17. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/workflows/publish.yml +0 -0
  18. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.github/workflows/spelling.yml +0 -0
  19. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/.gitignore +0 -0
  20. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/Doxyfile +0 -0
  21. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/LICENSE.txt +0 -0
  22. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/NOTICE.txt +0 -0
  23. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/README.md +0 -0
  24. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/configs/__init__.py +0 -0
  25. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/docs/README.md +0 -0
  26. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/docs/_static/css/rtd_width.css +0 -0
  27. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/docs/conf.py +0 -0
  28. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/docs/gendoc.bash +0 -0
  29. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/docs/index.rst +0 -0
  30. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/examples/simple_sequence.bin +0 -0
  31. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/examples/simple_sequence.seq +0 -0
  32. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/pyproject.toml +0 -0
  33. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/setup.cfg +0 -0
  34. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/setup.py +0 -0
  35. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fastentrypoints.py +0 -0
  36. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/__init__.py +0 -0
  37. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/__init__.py +0 -0
  38. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/__init__.py +0 -0
  39. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
  40. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/adapters/base.py +0 -0
  41. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/adapters/ip.py +0 -0
  42. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/adapters/uart.py +0 -0
  43. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/ccsds/__init__.py +0 -0
  44. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/ccsds/apid.py +0 -0
  45. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/ccsds/chain.py +0 -0
  46. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/ccsds/space_data_link.py +0 -0
  47. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/ccsds/space_packet.py +0 -0
  48. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/checksum.py +0 -0
  49. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/framing.py +0 -0
  50. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/ground.py +0 -0
  51. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/communication/updown.py +0 -0
  52. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/controllers/__init__.py +0 -0
  53. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/__init__.py +0 -0
  54. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/ch_data.py +0 -0
  55. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
  56. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/event_data.py +0 -0
  57. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/exceptions.py +0 -0
  58. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/file_data.py +0 -0
  59. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
  60. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/data_types/sys_data.py +0 -0
  61. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/decoders/__init__.py +0 -0
  62. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/decoders/ch_decoder.py +0 -0
  63. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/decoders/decoder.py +0 -0
  64. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/decoders/event_decoder.py +0 -0
  65. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
  66. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/decoders/pkt_decoder.py +0 -0
  67. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/distributor/__init__.py +0 -0
  68. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/distributor/distributor.py +0 -0
  69. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/__init__.py +0 -0
  70. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/ch_encoder.py +0 -0
  71. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/cmd_encoder.py +0 -0
  72. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/encoder.py +0 -0
  73. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/event_encoder.py +0 -0
  74. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
  75. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/pkt_encoder.py +0 -0
  76. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/encoders/seq_writer.py +0 -0
  77. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
  78. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/files/__init__.py +0 -0
  79. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/files/downlinker.py +0 -0
  80. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/files/helpers.py +0 -0
  81. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/files/uplinker.py +0 -0
  82. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/fpy/__init__.py +0 -0
  83. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/fpy/serialize_bytecode.py +0 -0
  84. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/fpy/types.py +0 -0
  85. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/__init__.py +0 -0
  86. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/base_commands.py +0 -0
  87. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/channels.py +0 -0
  88. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
  89. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/events.py +0 -0
  90. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
  91. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
  92. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/handlers.py +0 -0
  93. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/history/__init__.py +0 -0
  94. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/history/chrono.py +0 -0
  95. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/history/history.py +0 -0
  96. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/history/ram.py +0 -0
  97. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/history/test.py +0 -0
  98. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/__init__.py +0 -0
  99. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
  100. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
  101. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
  102. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
  103. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
  104. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
  105. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
  106. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/fw_type_json_loader.py +0 -0
  107. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/json_loader.py +0 -0
  108. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/pkt_json_loader.py +0 -0
  109. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
  110. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/prm_json_loader.py +0 -0
  111. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
  112. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/logger/__init__.py +0 -0
  113. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/logger/data_logger.py +0 -0
  114. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/logger/test_logger.py +0 -0
  115. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/models/__init__.py +0 -0
  116. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/models/common/__init__.py +0 -0
  117. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
  118. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/models/common/command.py +0 -0
  119. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/models/common/event.py +0 -0
  120. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/parsers/__init__.py +0 -0
  121. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
  122. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/__init__.py +0 -0
  123. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/encoding.py +0 -0
  124. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/files.py +0 -0
  125. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/histories.py +0 -0
  126. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/router.py +0 -0
  127. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/pipeline/standard.py +0 -0
  128. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/__init__.py +0 -0
  129. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/ch_template.py +0 -0
  130. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/cmd_template.py +0 -0
  131. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/data_template.py +0 -0
  132. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/event_template.py +0 -0
  133. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/pkt_template.py +0 -0
  134. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/templates/prm_template.py +0 -0
  135. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/testing_fw/__init__.py +0 -0
  136. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/testing_fw/api.py +0 -0
  137. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
  138. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/testing_fw/pytest_integration.py +0 -0
  139. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/tools/README.md +0 -0
  140. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/tools/__init__.py +0 -0
  141. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/tools/params.py +0 -0
  142. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/tools/seqgen.py +0 -0
  143. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/transport.py +0 -0
  144. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/utils/__init__.py +0 -0
  145. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/utils/config_manager.py +0 -0
  146. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
  147. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/utils/event_severity.py +0 -0
  148. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/utils/string_util.py +0 -0
  149. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/common/zmq_transport.py +0 -0
  150. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/__init__.py +0 -0
  151. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/cli.py +0 -0
  152. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/comm.py +0 -0
  153. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/data_product_writer.py +0 -0
  154. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/fprime_cli.py +0 -0
  155. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/tcpserver.py +0 -0
  156. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/executables/utils.py +0 -0
  157. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/__init__.py +0 -0
  158. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/app.py +0 -0
  159. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/channels.py +0 -0
  160. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/commands.py +0 -0
  161. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/components.py +0 -0
  162. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/default_settings.py +0 -0
  163. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/errors.py +0 -0
  164. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/events.py +0 -0
  165. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/json.py +0 -0
  166. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/logs.py +0 -0
  167. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/requirements.txt +0 -0
  168. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/resource.py +0 -0
  169. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/sequence.py +0 -0
  170. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
  171. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
  172. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
  173. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
  174. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
  175. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
  176. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
  177. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
  178. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
  179. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
  180. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
  181. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
  182. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
  183. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
  184. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
  185. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
  186. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
  187. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
  188. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
  189. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
  190. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
  191. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
  192. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
  193. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
  194. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
  195. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
  196. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
  197. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
  198. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
  199. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
  200. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
  201. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
  202. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
  203. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
  204. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
  205. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
  206. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
  207. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
  208. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
  209. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
  210. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
  211. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
  212. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
  213. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
  214. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
  215. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/css/fprime.css +0 -0
  216. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
  217. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/favicon.ico +0 -0
  218. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/img/error.svg +0 -0
  219. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/img/logo.svg +0 -0
  220. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/img/success.svg +0 -0
  221. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/index.html +0 -0
  222. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/config.js +0 -0
  223. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/datastore.js +0 -0
  224. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/gds.js +0 -0
  225. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/json.js +0 -0
  226. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/loader.js +0 -0
  227. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/performance.js +0 -0
  228. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/settings.js +0 -0
  229. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/uploader.js +0 -0
  230. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/validate.js +0 -0
  231. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/channel.js +0 -0
  232. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
  233. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
  234. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
  235. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
  236. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/event.js +0 -0
  237. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
  238. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
  239. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
  240. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
  241. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
  242. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
  243. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
  244. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
  245. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
  246. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
  247. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
  248. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
  249. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
  250. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
  251. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
  252. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
  253. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
  254. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
  255. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
  256. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
  257. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
  258. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
  259. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
  260. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
  261. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
  262. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
  263. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
  264. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
  265. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
  266. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/stats.py +0 -0
  267. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/flask/updown.py +0 -0
  268. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/plugin/__init__.py +0 -0
  269. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/plugin/definitions.py +0 -0
  270. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/plugin/system.py +0 -0
  271. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds/version.py +0 -0
  272. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds.egg-info/SOURCES.txt +0 -0
  273. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
  274. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds.egg-info/entry_points.txt +0 -0
  275. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds.egg-info/requires.txt +0 -0
  276. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/src/fprime_gds.egg-info/top_level.txt +0 -0
  277. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/communication/ccsds/test_space_data_link.py +0 -0
  278. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/communication/ccsds/test_space_packet.py +0 -0
  279. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
  280. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
  281. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
  282. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
  283. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
  284. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/fpy/integrated_tests.py +0 -0
  285. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
  286. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
  287. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
  288. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
  289. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +0 -0
  290. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/loaders/test_json_loader.py +0 -0
  291. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
  292. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
  293. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
  294. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
  295. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
  296. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/expected/simple_paramdb.dat +0 -0
  297. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/input/simple_bad_paramdb.json +0 -0
  298. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
  299. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/input/simple_paramdb.json +0 -0
  300. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
  301. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/resources/simple_dictionary.json +0 -0
  302. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
  303. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
  304. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/tools/test_paramdb_gen.py +0 -0
  305. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/common/utils/test_string_util.py +0 -0
  306. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/.gitignore +0 -0
  307. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/dictionary.json +0 -0
  308. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
  309. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
  310. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
  311. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
  312. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
  313. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
  314. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
  315. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
  316. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
  317. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
  318. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
  319. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
  320. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
  321. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
  322. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
  323. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/test_run_deployment.py +0 -0
  324. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/executables/test_utils.py +0 -0
  325. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/test/fprime_gds/sample/dictionary.xml +0 -0
  326. {fprime_gds-4.0.0a5 → fprime_gds-4.0.0a6}/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.0a5
3
+ Version: 4.0.0a6
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:
@@ -128,7 +128,13 @@ 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 packet_spec is not None:
132
+ packet_loader = fprime_gds.common.loaders.pkt_xml_loader.PktXmlLoader()
133
+ self._packet_dict = packet_loader.get_id_dict(
134
+ packet_spec, self._channel_name_dict
135
+ )
136
+ # Otherwise use JSON dictionary to attempt automatic packet loading
137
+ elif self._metadata["dictionary_type"] == "json":
132
138
  packet_loader = fprime_gds.common.loaders.pkt_json_loader.PktJsonLoader(dictionary)
133
139
  if packet_set_name is None:
134
140
  names = packet_loader.get_packet_set_names(None)
@@ -141,11 +147,6 @@ class Dictionaries:
141
147
  self._packet_dict = packet_loader.get_id_dict(
142
148
  None, packet_set_name, self._channel_name_dict
143
149
  )
144
- elif packet_spec is not None:
145
- packet_loader = fprime_gds.common.loaders.pkt_xml_loader.PktXmlLoader(dictionary)
146
- self._packet_dict = packet_loader.get_id_dict(
147
- packet_spec, self._channel_name_dict
148
- )
149
150
  else:
150
151
  self._packet_dict = None
151
152
 
@@ -237,14 +237,18 @@ class GdsStandardApp(GdsApp):
237
237
  arguments needed for the given parsers. When main is loaded, it will dispatch to the sub-classing plugin's
238
238
  start method. The subclassing plugin will already have had the arguments supplied via the PluginParser's
239
239
  construction of plugin objects.
240
+
241
+ Returns:
242
+ list of arguments to pass to subprocess
240
243
  """
241
244
  cls = self.__class__.__name__
242
245
  module = self.__class__.__module__
243
246
 
244
- namespace = Namespace(**self.arguments)
245
- args = CompositeParser(
247
+ composite_parser = CompositeParser(
246
248
  [self.get_cli_parser(), StandardPipelineParser]
247
- ).reproduce_cli_args(namespace)
249
+ )
250
+ namespace, _, _ = ParserBase.parse_known_args([composite_parser])
251
+ args = composite_parser.reproduce_cli_args(namespace)
248
252
  return [sys.executable, "-c", f"import {module}\n{module}.{cls}.main()"] + args
249
253
 
250
254
  @classmethod
@@ -260,9 +264,10 @@ class GdsStandardApp(GdsApp):
260
264
  # triggered by the code above that turns it off in the not-setup case.
261
265
  except AssertionError:
262
266
  pass
267
+ plugin_name = getattr(cls, "get_name", lambda: cls.__name__)()
263
268
  parsed_arguments, _ = ParserBase.parse_args(
264
269
  [cls.get_cli_parser(), StandardPipelineParser, PluginArgumentParser],
265
- f"{cls.get_name()}: a standard app plugin",
270
+ f"{plugin_name}: a standard app plugin",
266
271
  )
267
272
  pipeline = StandardPipeline()
268
273
  # Turn off history and filing
@@ -177,7 +177,7 @@ def launch_comm(parsed_args):
177
177
 
178
178
  def launch_plugin(plugin_class_instance):
179
179
  """Launch a plugin instance"""
180
- plugin_name = getattr(plugin_class_instance, "get_name", lambda: cls.__name__)()
180
+ plugin_name = getattr(plugin_class_instance, "get_name", lambda: plugin_class_instance.__class__.__name__)()
181
181
  return launch_process(
182
182
  plugin_class_instance.get_process_invocation(),
183
183
  name=f"{ plugin_name } Plugin App",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fprime-gds
3
- Version: 4.0.0a5
3
+ Version: 4.0.0a6
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:
@@ -12,17 +12,19 @@ import signal
12
12
  import subprocess
13
13
  import sys
14
14
  import time
15
+ from typing import Dict, Tuple
15
16
 
16
17
  import pytest
17
18
 
18
19
  from pathlib import Path
19
- from tempfile import NamedTemporaryFile
20
+ from tempfile import NamedTemporaryFile, TemporaryDirectory
20
21
  from fprime_gds.common.communication.adapters.ip import IpAdapter
21
22
  from fprime_gds.common.communication.adapters.base import NoneAdapter
22
23
  from fprime_gds.common.communication.adapters.uart import SerialAdapter
23
24
  from fprime_gds.common.communication.framing import FramerDeframer, FpFramerDeframer
25
+ from fprime_gds.common.pipeline.standard import StandardPipeline
24
26
  from fprime_gds.executables.cli import ParserBase, PluginArgumentParser
25
- from fprime_gds.executables.apps import GdsFunction, GdsApp
27
+ from fprime_gds.executables.apps import GdsFunction, GdsApp, GdsStandardApp
26
28
  from fprime_gds.plugin.definitions import gds_plugin_implementation, gds_plugin
27
29
  from fprime_gds.plugin.system import Plugins
28
30
 
@@ -192,6 +194,54 @@ class StartApp(GdsApp):
192
194
  """Register a good plugin"""
193
195
  return cls
194
196
 
197
+ @gds_plugin(GdsStandardApp)
198
+ class StandardAppTester(GdsStandardApp):
199
+ """A test plugin that uses the standard app functionality"""
200
+ INIT_CALLED = False
201
+
202
+ def __init__(self, test_arg, test_arg_with_default, start_up_file, **pipeline_arguments):
203
+ """Initialize the standard app tester"""
204
+ super().__init__(**pipeline_arguments)
205
+ self.test_arg = test_arg
206
+ self.test_arg_with_default = test_arg_with_default
207
+ self.start_up_file = start_up_file
208
+
209
+ @classmethod
210
+ def get_additional_arguments(cls) -> Dict[Tuple, Dict[str, str]]:
211
+ """Function to provide additional command line arguments beyond the standard pipeline
212
+
213
+ Override this function to provide additional arguments. The form of the arguments are the same as returned by
214
+ standard plugins: a dictionary of tuple flags to argparse kwargs inputs.
215
+
216
+ Return:
217
+ dictionary of flag tuple to argparse kwargs
218
+ """
219
+ return {
220
+ ("--test-arg",): {"type": str, "help": "Test argument", "required": True},
221
+ ("--test-arg-with-default",): {"type": str, "help": "Test argument with default", "default": "test-default"},
222
+ ("--start-up-file",): {
223
+ "type": str,
224
+ "help": "File to run start-up function on",
225
+ "required": True,
226
+ }
227
+ }
228
+
229
+ @classmethod
230
+ def init(cls):
231
+ """Allows standard application plugins to initialize before argument parsing is performed"""
232
+ cls.INIT_CALLED = True
233
+
234
+
235
+ def start(self, pipeline: StandardPipeline):
236
+ """Start function to contain behavior based in standard pipeline """
237
+ with open(self.start_up_file, "a+") as file_handle:
238
+ if self.INIT_CALLED:
239
+ print("[TestStandardApp] init called", file=file_handle)
240
+ print("[TestStandardApp] start called", file=file_handle)
241
+ print("[TestStandardApp] test-arg", self.test_arg, file=file_handle)
242
+ print("[TestStandardApp] test-arg-with-default", self.test_arg_with_default, file=file_handle)
243
+
244
+
195
245
 
196
246
  @pytest.fixture()
197
247
  def plugins():
@@ -215,31 +265,34 @@ def start_up(request):
215
265
  parent_path = Path(__file__).parent
216
266
  extra_plugins, flags = request.param
217
267
 
218
- command_arguments = [
219
- "fprime-gds",
220
- "-n",
221
- "--dictionary",
222
- str(parent_path / "sample" / "dictionary.xml"),
223
- "--zmq-transport",
224
- "ipc:///tmp/fprime-test-in",
225
- "ipc:///tmp/fprime-test-out",
226
- "-g",
227
- "none",
228
- ] + flags
229
-
230
268
  # Update the environment to side-load python
231
269
  environment = os.environ.copy()
232
270
  environment[Plugins.PLUGIN_ENVIRONMENT_VARIABLE] = extra_plugins
233
271
  environment["PYTHONPATH"] = f"{environment.get('PYTHONPATH', '')}:{parent_path}"
234
- with NamedTemporaryFile(mode="w+") as temp_file:
235
- assert "" == temp_file.read(), "Failed to read empty file"
236
- command_arguments += ["--start-up-file", temp_file.name]
237
- # Run subprocess for 3 seconds then kill the GDS with 5 seconds to shut down
238
- process = subprocess.Popen(command_arguments, env=environment)
239
- time.sleep(3)
240
- process.send_signal(signal.SIGINT)
241
- _ = process.communicate(None, 5)
242
- yield temp_file
272
+ with TemporaryDirectory() as temp_dir:
273
+ # Command line arguments including a temporary directory for the ZMQ transport
274
+ # sockets used in this test.
275
+ command_arguments = [
276
+ "fprime-gds",
277
+ "-n",
278
+ "--dictionary",
279
+ str(parent_path / "sample" / "dictionary.xml"),
280
+ "--zmq-transport",
281
+ f"ipc://{temp_dir}/fprime-test-in",
282
+ f"ipc://{temp_dir}/fprime-test-out",
283
+ "-g",
284
+ "none",
285
+ "--disable-custom-data-handlers",
286
+ ] + flags
287
+ with NamedTemporaryFile(mode="w+", dir=temp_dir) as temp_file:
288
+ assert "" == temp_file.read(), "Failed to read empty file"
289
+ command_arguments += ["--start-up-file", temp_file.name]
290
+ # Run subprocess for 3 seconds then kill the GDS with 5 seconds to shut down
291
+ process = subprocess.Popen(command_arguments, env=environment)
292
+ time.sleep(3)
293
+ process.send_signal(signal.SIGINT)
294
+ _ = process.communicate(None, 5)
295
+ yield temp_file
243
296
 
244
297
 
245
298
  def test_base_plugin(plugins):
@@ -404,9 +457,40 @@ def test_disabled_start_app(start_up):
404
457
  """Test disabled start-up functions"""
405
458
  assert "" == start_up.read(), "Failed to read empty file"
406
459
 
460
+ @pytest.mark.parametrize("start_up", [(f"{__name__}:StandardAppTester", ["--test-arg", "test"])], indirect=True)
461
+ def test_standard_app(start_up):
462
+ """Test standard app functionality"""
463
+ lines = [line.strip() for line in start_up.readlines()]
464
+ expected_lines = [
465
+ "[TestStandardApp] init called",
466
+ "[TestStandardApp] start called",
467
+ "[TestStandardApp] test-arg test",
468
+ "[TestStandardApp] test-arg-with-default test-default",
469
+ ]
470
+ assert expected_lines[0] in lines, "Plugin not initialized"
471
+ assert expected_lines[1] in lines, "Plugin not started"
472
+ assert expected_lines[2] in lines, "Test argument not passed"
473
+ assert expected_lines[3] in lines, "Test argument with default not passed"
474
+ assert expected_lines == lines, "Ordering of lines not correct"
475
+
476
+ @pytest.mark.parametrize("start_up", [(f"{__name__}:StandardAppTester", ["--test-arg", "test", "--test-arg-with-default", "test-non-default"])], indirect=True)
477
+ def test_standard_app_with_non_defaults(start_up):
478
+ """Test standard app functionality"""
479
+ lines = [line.strip() for line in start_up.readlines()]
480
+ expected_lines = [
481
+ "[TestStandardApp] init called",
482
+ "[TestStandardApp] start called",
483
+ "[TestStandardApp] test-arg test",
484
+ "[TestStandardApp] test-arg-with-default test-non-default",
485
+ ]
486
+ assert expected_lines[0] in lines, "Plugin not initialized"
487
+ assert expected_lines[1] in lines, "Plugin not started"
488
+ assert expected_lines[2] in lines, "Test argument not passed"
489
+ assert expected_lines[3] in lines, "Test argument with overridden default not passed"
490
+ assert expected_lines == lines, "Ordering of lines not correct"
407
491
 
408
492
  def main():
409
- """Run main entry point function
493
+ """Run main entry point function for StartApp plugin
410
494
 
411
495
  The main function is run when the file is invoked not as a pytest set of test, but rather when it is run as part of
412
496
  the StartApp plugin. This main program writes the second argument to the file represented as the first.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes