fprime-gds 4.0.0a7__tar.gz → 4.0.0a9__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 (335) hide show
  1. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/actions/spelling/expect.txt +29 -1
  2. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/workflows/codeql-security-scan.yml +4 -0
  3. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/workflows/fprime-gds-tests.yml +4 -0
  4. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/workflows/gds-cli-tests.yml +4 -0
  5. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/workflows/spelling.yml +4 -0
  6. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/PKG-INFO +2 -1
  7. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/pyproject.toml +2 -1
  8. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/decoders/event_decoder.py +7 -1
  9. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/distributor/distributor.py +3 -1
  10. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/README.md +56 -0
  11. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/SPEC.md +69 -0
  12. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/bytecode/directives.py +490 -0
  13. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/codegen.py +1687 -0
  14. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/grammar.lark +88 -0
  15. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/main.py +40 -0
  16. fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/parser.py +239 -0
  17. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/logger/__init__.py +2 -2
  18. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/templates/cmd_template.py +8 -0
  19. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/cli.py +39 -17
  20. fprime_gds-4.0.0a9/src/fprime_gds/plugin/__init__.py +0 -0
  21. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds.egg-info/PKG-INFO +2 -1
  22. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds.egg-info/SOURCES.txt +9 -3
  23. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds.egg-info/entry_points.txt +1 -1
  24. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds.egg-info/requires.txt +1 -0
  25. fprime_gds-4.0.0a9/test/fprime_gds/common/fpy/disabled_test_compiler.py +765 -0
  26. fprime_gds-4.0.0a7/src/fprime_gds/common/fpy/serialize_bytecode.py +0 -229
  27. fprime_gds-4.0.0a7/src/fprime_gds/common/fpy/types.py +0 -203
  28. fprime_gds-4.0.0a7/test/fprime_gds/common/fpy/integrated_tests.py +0 -273
  29. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  30. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/actions/codeql/security-pack.yml +0 -0
  31. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/actions/spelling/excludes.txt +0 -0
  32. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/actions/spelling/patterns.txt +0 -0
  33. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/pull_request_template.md +0 -0
  34. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/resources/RefTopologyAppDictionary.xml +0 -0
  35. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.github/workflows/publish.yml +0 -0
  36. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/.gitignore +0 -0
  37. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/Doxyfile +0 -0
  38. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/LICENSE.txt +0 -0
  39. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/NOTICE.txt +0 -0
  40. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/README.md +0 -0
  41. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/configs/__init__.py +0 -0
  42. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/docs/README.md +0 -0
  43. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/docs/_static/css/rtd_width.css +0 -0
  44. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/docs/conf.py +0 -0
  45. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/docs/gendoc.bash +0 -0
  46. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/docs/index.rst +0 -0
  47. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/examples/simple_sequence.bin +0 -0
  48. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/examples/simple_sequence.seq +0 -0
  49. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/setup.cfg +0 -0
  50. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/setup.py +0 -0
  51. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fastentrypoints.py +0 -0
  52. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/__init__.py +0 -0
  53. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/__init__.py +0 -0
  54. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/__init__.py +0 -0
  55. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
  56. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/adapters/base.py +0 -0
  57. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/adapters/ip.py +0 -0
  58. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/adapters/uart.py +0 -0
  59. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/ccsds/__init__.py +0 -0
  60. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/ccsds/apid.py +0 -0
  61. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/ccsds/chain.py +0 -0
  62. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/ccsds/space_data_link.py +0 -0
  63. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/ccsds/space_packet.py +0 -0
  64. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/checksum.py +0 -0
  65. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/framing.py +0 -0
  66. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/ground.py +0 -0
  67. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/communication/updown.py +0 -0
  68. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/controllers/__init__.py +0 -0
  69. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/__init__.py +0 -0
  70. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/ch_data.py +0 -0
  71. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
  72. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/event_data.py +0 -0
  73. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/exceptions.py +0 -0
  74. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/file_data.py +0 -0
  75. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
  76. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/data_types/sys_data.py +0 -0
  77. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/decoders/__init__.py +0 -0
  78. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/decoders/ch_decoder.py +0 -0
  79. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/decoders/decoder.py +0 -0
  80. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
  81. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/decoders/pkt_decoder.py +0 -0
  82. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/distributor/__init__.py +0 -0
  83. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/__init__.py +0 -0
  84. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/ch_encoder.py +0 -0
  85. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/cmd_encoder.py +0 -0
  86. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/encoder.py +0 -0
  87. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/event_encoder.py +0 -0
  88. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
  89. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/pkt_encoder.py +0 -0
  90. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/encoders/seq_writer.py +0 -0
  91. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
  92. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/files/__init__.py +0 -0
  93. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/files/downlinker.py +0 -0
  94. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/files/helpers.py +0 -0
  95. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/files/uplinker.py +0 -0
  96. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/fpy/__init__.py +0 -0
  97. {fprime_gds-4.0.0a7/src/fprime_gds/common/gds_cli → fprime_gds-4.0.0a9/src/fprime_gds/common/fpy/bytecode}/__init__.py +0 -0
  98. {fprime_gds-4.0.0a7/src/fprime_gds/common/history → fprime_gds-4.0.0a9/src/fprime_gds/common/gds_cli}/__init__.py +0 -0
  99. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/gds_cli/base_commands.py +0 -0
  100. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/gds_cli/channels.py +0 -0
  101. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
  102. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/gds_cli/events.py +0 -0
  103. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
  104. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
  105. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/handlers.py +0 -0
  106. {fprime_gds-4.0.0a7/src/fprime_gds/common/loaders → fprime_gds-4.0.0a9/src/fprime_gds/common/history}/__init__.py +0 -0
  107. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/history/chrono.py +0 -0
  108. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/history/history.py +0 -0
  109. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/history/ram.py +0 -0
  110. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/history/test.py +0 -0
  111. {fprime_gds-4.0.0a7/src/fprime_gds/common/models → fprime_gds-4.0.0a9/src/fprime_gds/common/loaders}/__init__.py +0 -0
  112. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
  113. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
  114. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
  115. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
  116. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
  117. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
  118. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
  119. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/fw_type_json_loader.py +0 -0
  120. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/json_loader.py +0 -0
  121. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/pkt_json_loader.py +0 -0
  122. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
  123. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/prm_json_loader.py +0 -0
  124. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
  125. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/logger/data_logger.py +0 -0
  126. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/logger/test_logger.py +0 -0
  127. {fprime_gds-4.0.0a7/src/fprime_gds/common/models/common → fprime_gds-4.0.0a9/src/fprime_gds/common/models}/__init__.py +0 -0
  128. {fprime_gds-4.0.0a7/src/fprime_gds/common/parsers → fprime_gds-4.0.0a9/src/fprime_gds/common/models/common}/__init__.py +0 -0
  129. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
  130. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/models/common/command.py +0 -0
  131. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/models/common/event.py +0 -0
  132. {fprime_gds-4.0.0a7/src/fprime_gds/common/pipeline → fprime_gds-4.0.0a9/src/fprime_gds/common/parsers}/__init__.py +0 -0
  133. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
  134. {fprime_gds-4.0.0a7/src/fprime_gds/common/templates → fprime_gds-4.0.0a9/src/fprime_gds/common/pipeline}/__init__.py +0 -0
  135. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/pipeline/dictionaries.py +0 -0
  136. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/pipeline/encoding.py +0 -0
  137. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/pipeline/files.py +0 -0
  138. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/pipeline/histories.py +0 -0
  139. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/pipeline/router.py +0 -0
  140. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/pipeline/standard.py +0 -0
  141. {fprime_gds-4.0.0a7/src/fprime_gds/common/testing_fw → fprime_gds-4.0.0a9/src/fprime_gds/common/templates}/__init__.py +0 -0
  142. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/templates/ch_template.py +0 -0
  143. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/templates/data_template.py +0 -0
  144. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/templates/event_template.py +0 -0
  145. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/templates/pkt_template.py +0 -0
  146. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/templates/prm_template.py +0 -0
  147. {fprime_gds-4.0.0a7/src/fprime_gds/common/tools → fprime_gds-4.0.0a9/src/fprime_gds/common/testing_fw}/__init__.py +0 -0
  148. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/testing_fw/api.py +0 -0
  149. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
  150. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/testing_fw/pytest_integration.py +0 -0
  151. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/tools/README.md +0 -0
  152. {fprime_gds-4.0.0a7/src/fprime_gds/common/utils → fprime_gds-4.0.0a9/src/fprime_gds/common/tools}/__init__.py +0 -0
  153. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/tools/params.py +0 -0
  154. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/tools/seqgen.py +0 -0
  155. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/transport.py +0 -0
  156. {fprime_gds-4.0.0a7/src/fprime_gds/executables → fprime_gds-4.0.0a9/src/fprime_gds/common/utils}/__init__.py +0 -0
  157. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/utils/config_manager.py +0 -0
  158. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
  159. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/utils/event_severity.py +0 -0
  160. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/utils/string_util.py +0 -0
  161. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/common/zmq_transport.py +0 -0
  162. {fprime_gds-4.0.0a7/src/fprime_gds/flask → fprime_gds-4.0.0a9/src/fprime_gds/executables}/__init__.py +0 -0
  163. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/apps.py +0 -0
  164. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/comm.py +0 -0
  165. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/data_product_writer.py +0 -0
  166. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/fprime_cli.py +0 -0
  167. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/run_deployment.py +0 -0
  168. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/tcpserver.py +0 -0
  169. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/executables/utils.py +0 -0
  170. {fprime_gds-4.0.0a7/src/fprime_gds/plugin → fprime_gds-4.0.0a9/src/fprime_gds/flask}/__init__.py +0 -0
  171. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/app.py +0 -0
  172. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/channels.py +0 -0
  173. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/commands.py +0 -0
  174. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/components.py +0 -0
  175. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/default_settings.py +0 -0
  176. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/errors.py +0 -0
  177. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/events.py +0 -0
  178. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/json.py +0 -0
  179. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/logs.py +0 -0
  180. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/requirements.txt +0 -0
  181. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/resource.py +0 -0
  182. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/sequence.py +0 -0
  183. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
  184. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
  185. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
  186. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
  187. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
  188. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
  189. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
  190. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
  191. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
  192. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
  193. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
  194. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/addon.js +0 -0
  195. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
  196. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
  197. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
  198. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
  199. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
  200. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
  201. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
  202. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
  203. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
  204. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
  205. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
  206. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
  207. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
  208. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
  209. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
  210. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
  211. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
  212. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
  213. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
  214. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
  215. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
  216. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
  217. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
  218. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
  219. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
  220. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
  221. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
  222. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
  223. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
  224. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
  225. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
  226. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
  227. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
  228. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/css/fprime.css +0 -0
  229. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
  230. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/favicon.ico +0 -0
  231. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/img/error.svg +0 -0
  232. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/img/logo.svg +0 -0
  233. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/img/success.svg +0 -0
  234. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/index.html +0 -0
  235. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/config.js +0 -0
  236. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/datastore.js +0 -0
  237. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/gds.js +0 -0
  238. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/json.js +0 -0
  239. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/loader.js +0 -0
  240. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/performance.js +0 -0
  241. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/settings.js +0 -0
  242. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/uploader.js +0 -0
  243. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/validate.js +0 -0
  244. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/channel.js +0 -0
  245. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
  246. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
  247. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
  248. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
  249. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/event.js +0 -0
  250. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
  251. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
  252. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
  253. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
  254. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
  255. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
  256. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
  257. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
  258. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
  259. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
  260. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
  261. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
  262. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
  263. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
  264. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
  265. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
  266. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
  267. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
  268. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
  269. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
  270. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
  271. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
  272. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
  273. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
  274. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
  275. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
  276. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
  277. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
  278. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
  279. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/stats.py +0 -0
  280. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/flask/updown.py +0 -0
  281. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/plugin/definitions.py +0 -0
  282. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/plugin/system.py +0 -0
  283. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds/version.py +0 -0
  284. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
  285. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/src/fprime_gds.egg-info/top_level.txt +0 -0
  286. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/communication/ccsds/test_space_data_link.py +0 -0
  287. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/communication/ccsds/test_space_packet.py +0 -0
  288. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
  289. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
  290. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
  291. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
  292. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
  293. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
  294. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
  295. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
  296. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
  297. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +0 -0
  298. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/loaders/test_json_loader.py +0 -0
  299. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
  300. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
  301. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
  302. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
  303. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
  304. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/expected/simple_paramdb.dat +0 -0
  305. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/input/simple_bad_paramdb.json +0 -0
  306. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
  307. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/input/simple_paramdb.json +0 -0
  308. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
  309. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/resources/simple_dictionary.json +0 -0
  310. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
  311. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
  312. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/tools/test_paramdb_gen.py +0 -0
  313. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/common/utils/test_string_util.py +0 -0
  314. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/.gitignore +0 -0
  315. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/dictionary.json +0 -0
  316. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
  317. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
  318. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
  319. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
  320. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
  321. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
  322. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
  323. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
  324. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
  325. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
  326. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
  327. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
  328. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
  329. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
  330. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
  331. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/test_run_deployment.py +0 -0
  332. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/executables/test_utils.py +0 -0
  333. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/sample/dictionary.xml +0 -0
  334. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/fprime_gds/test_plugins.py +0 -0
  335. {fprime_gds-4.0.0a7 → fprime_gds-4.0.0a9}/test/gui/GUI_Test_Procedure.md +0 -0
@@ -40,20 +40,24 @@ cata
40
40
  CCB
41
41
  CCFF
42
42
  ccsds
43
+ Cdh
43
44
  Cdioux
44
45
  cdn
45
46
  cdxoefg
46
47
  CFDG
47
48
  CFDP
48
49
  CFPD
50
+ chans
49
51
  chartjs
50
52
  CHNG
51
53
  classdocs
52
54
  clearfix
53
55
  cls
54
56
  cmdhist
57
+ cmps
55
58
  cmt
56
59
  CODEFILE
60
+ codegen
57
61
  COLORSTYLE
58
62
  colorwheel
59
63
  columnify
@@ -80,7 +84,7 @@ deframed
80
84
  deframer
81
85
  deframing
82
86
  DEPRECATEDLIST
83
- DESER
87
+ deser
84
88
  Deserial
85
89
  deserializes
86
90
  dests
@@ -117,6 +121,7 @@ ECONNRESET
117
121
  ect
118
122
  EEXIST
119
123
  Efg
124
+ elifs
120
125
  ENDC
121
126
  endcond
122
127
  errorhandler
@@ -131,17 +136,26 @@ fastentrypoints
131
136
  fbuild
132
137
  fd
133
138
  FEEDNAME
139
+ FEQ
134
140
  FFCC
135
141
  FFFF
142
+ FGE
143
+ FGT
136
144
  fileurl
137
145
  Firefox
146
+ FLE
138
147
  focusring
148
+ FNE
139
149
  FONTNAME
140
150
  FONTPATH
141
151
  FONTSIZE
152
+ FPEXT
142
153
  fpp
143
154
  fprime
144
155
  fptable
156
+ FPTOSI
157
+ FPTOUI
158
+ FPTRUNC
145
159
  fpy
146
160
  fpybc
147
161
  fqn
@@ -170,12 +184,15 @@ hpaulson
170
184
  htags
171
185
  hyperlinks
172
186
  idct
187
+ idk
173
188
  idl
174
189
  idx
175
190
  ieeetr
191
+ IEQ
176
192
  ified
177
193
  ifun
178
194
  IH
195
+ INE
179
196
  inprogress
180
197
  intersphinx
181
198
  intlimits
@@ -197,6 +214,7 @@ junitxml
197
214
  keepalive
198
215
  keyify
199
216
  kinda
217
+ lalr
200
218
  leisher
201
219
  lestarch
202
220
  levelname
@@ -240,6 +258,7 @@ NOSONAR
240
258
  nosort
241
259
  nosubgrouping
242
260
  Noto
261
+ nreg
243
262
  NSPACES
244
263
  nuntil
245
264
  odl
@@ -264,6 +283,7 @@ pkts
264
283
  plainnat
265
284
  plantuml
266
285
  PNGs
286
+ postlex
267
287
  preds
268
288
  prm
269
289
  prmdb
@@ -312,20 +332,26 @@ seqfile
312
332
  seqgen
313
333
  serializables
314
334
  serialutil
335
+ SGE
336
+ SGT
315
337
  showinitializer
316
338
  sideeffect
317
339
  SIGALRM
340
+ SITOFP
318
341
  sizeb
319
342
  SMAP
320
343
  Smath
344
+ smth
321
345
  SNDHWM
322
346
  sorttable
323
347
  spacepacket
324
348
  squashify
349
+ sreg
325
350
  sss
326
351
  Ssymbols
327
352
  stackoverflow
328
353
  startuml
354
+ subclasscheck
329
355
  subcmd
330
356
  subgrouping
331
357
  subhist
@@ -367,7 +393,9 @@ typedef
367
393
  uart
368
394
  ucf
369
395
  udp
396
+ UGE
370
397
  UIs
398
+ UITOFP
371
399
  uk
372
400
  ul
373
401
  UNINIT
@@ -8,6 +8,10 @@ on:
8
8
  pull_request:
9
9
  # The branches below must be a subset of the branches above
10
10
  branches: [ devel ]
11
+ # Cancel in-progress runs if a newer run is started on a given PR
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
14
+ cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
11
15
 
12
16
  jobs:
13
17
  analyze:
@@ -6,6 +6,10 @@ on:
6
6
  pull_request:
7
7
  # The branches below must be a subset of the branches above
8
8
  branches: [ devel ]
9
+ # Cancel in-progress runs if a newer run is started on a given PR
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12
+ cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
9
13
 
10
14
  jobs:
11
15
  Unit-tests:
@@ -6,6 +6,10 @@ on:
6
6
  pull_request:
7
7
  # The branches below must be a subset of the branches above
8
8
  branches: [ devel ]
9
+ # Cancel in-progress runs if a newer run is started on a given PR
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12
+ cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
9
13
 
10
14
  env:
11
15
  DICTIONARY: ./.github/resources/RefTopologyAppDictionary.xml
@@ -11,6 +11,10 @@ on:
11
11
  tags-ignore:
12
12
  - "**"
13
13
  types: ['opened', 'reopened', 'synchronize']
14
+ # Cancel in-progress runs if a newer run is started on a given PR
15
+ concurrency:
16
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
17
+ cancel-in-progress: ${{ !contains(github.ref, 'devel') && !contains(github.ref, 'release/')}}
14
18
 
15
19
  jobs:
16
20
  spelling:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fprime-gds
3
- Version: 4.0.0a7
3
+ Version: 4.0.0a9
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:
@@ -240,6 +240,7 @@ Requires-Dist: Jinja2>=2.11.3
240
240
  Requires-Dist: openpyxl>=3.0.10
241
241
  Requires-Dist: pyserial>=3.5
242
242
  Requires-Dist: pydantic>=2.6
243
+ Requires-Dist: lark>=1.2.2
243
244
  Requires-Dist: PyYAML>=6.0.2
244
245
  Requires-Dist: spacepackets>=0.30.0
245
246
  Requires-Dist: crc>=7.0.0
@@ -43,6 +43,7 @@ dependencies = [
43
43
  "openpyxl>=3.0.10",
44
44
  "pyserial>=3.5",
45
45
  "pydantic>=2.6",
46
+ "lark>=1.2.2",
46
47
  "PyYAML>=6.0.2",
47
48
  "spacepackets>=0.30.0",
48
49
  "crc>=7.0.0"
@@ -65,7 +66,7 @@ fprime-seqgen = "fprime_gds.common.tools.seqgen:main"
65
66
  fprime-dp-write = "fprime_gds.executables.data_product_writer:main"
66
67
  fprime-gds = "fprime_gds.executables.run_deployment:main"
67
68
  fprime-prm-write = "fprime_gds.common.tools.params:main"
68
- fprime-fpy-bytecode = "fprime_gds.common.fpy.serialize_bytecode:main"
69
+ fprime-fpyc = "fprime_gds.common.fpy.main:main"
69
70
 
70
71
  # For Pytest fixtures
71
72
  [project.entry-points."pytest11"]
@@ -22,6 +22,8 @@ from fprime_gds.common.decoders import decoder
22
22
  from fprime_gds.common.decoders.decoder import DecodingException
23
23
  from fprime_gds.common.utils import config_manager
24
24
 
25
+ import logging
26
+ LOGGER = logging.getLogger("event_decoder")
25
27
 
26
28
  class EventDecoder(decoder.Decoder):
27
29
  """Decoder class for event data"""
@@ -67,7 +69,11 @@ class EventDecoder(decoder.Decoder):
67
69
  while (ptr < len(data)):
68
70
 
69
71
  # Decode event ID here...
70
- self.id_obj.deserialize(data, ptr)
72
+ if ptr + self.id_obj.getSize() <= len(data):
73
+ self.id_obj.deserialize(data, ptr)
74
+ else:
75
+ LOGGER.warning("Insufficient data for event ID")
76
+ break
71
77
  ptr += self.id_obj.getSize()
72
78
  event_id = self.id_obj.val
73
79
 
@@ -203,6 +203,8 @@ class Distributor(DataHandler):
203
203
  try:
204
204
  d.data_callback(msg)
205
205
  except DecodingException as dexc:
206
- LOGGER.warning("Decoding error occurred: %s. Skipping.", dexc)
206
+ LOGGER.warning("Decoding error: %s", dexc)
207
+ except Exception as exc:
208
+ LOGGER.warning("Parsing error: %s", exc)
207
209
  else:
208
210
  LOGGER.warning("No decoder registered for: %s", data_desc_type.DataDescType(data_desc).name)
@@ -0,0 +1,56 @@
1
+ # Fpy Advanced Sequencing Language Version 0.1
2
+ The Fpy advanced sequencing language is a combination of a high-level scripting language and a low-level bytecode language for running complex command sequences on spacecraft flight software.
3
+ ## Fpy Syntax
4
+ ### Modules, components, channels, commands and types
5
+ You can imagine the Fpy syntax as Python with the following mappings:
6
+ 1. FPrime modules become Python namespaces
7
+ 2. FPrime components become Python classes
8
+ 3. FPrime types (structs, arrays and enums) become Python classes
9
+ 4. FPrime component instances become Python object instances
10
+ 5. FPrime commands become member functions of Python object instances
11
+ 6. FPrime telemetry channels become member properties of Python object instances
12
+
13
+ FPrime declaration:
14
+ ```
15
+ module Ref {
16
+ passive component ExampleComponent {
17
+ telemetry testChannel: U8
18
+ sync command TEST_COMMAND(arg: string size 40)
19
+ }
20
+
21
+ instance exampleInstance: ExampleComponent base id 0x01
22
+ }
23
+ ```
24
+ Fpy usage:
25
+ ```py
26
+ # reference a telemetry channel
27
+ Ref.exampleInstance.testChannel
28
+ # call a command
29
+ Ref.exampleInstance.TEST_COMMAND("arg value")
30
+ ```
31
+
32
+
33
+ FPrime declaration:
34
+ ```
35
+ struct ExampleStruct {
36
+ member: F32
37
+ }
38
+
39
+ enum TestEnum {
40
+ ONE
41
+ TWO
42
+ THREE
43
+ }
44
+
45
+ array TestArray = [3] U8
46
+ ```
47
+
48
+ Fpy usage:
49
+ ```py
50
+ # construct a struct
51
+ ExampleStruct(0.0)
52
+ # reference an enum const
53
+ TestEnum.THREE
54
+ # construct an array
55
+ TestArray(1, 2, 3)
56
+ ```
@@ -0,0 +1,69 @@
1
+ Nothing type is a type whose set of values is an empty set
2
+ Unit type is a type whose set of values is a set with one element
3
+
4
+ # `if` statement
5
+
6
+ ## Syntactical and semantic checks
7
+
8
+ `"if" condition ":" INDENT stmt* DEDENT ("elif" condition ":" INDENT stmt* DEDENT)* ["else" ":" INDENT stmt* DEDENT]`
9
+
10
+ 1. where `condition` is an expression which evaluates to a boolean
11
+ 2. where `stmt` is a statement
12
+
13
+ ## Code generation
14
+
15
+ 1. `if` generates `IF`, followed by the generated code for the first body, followed by `GOTO` to the end of the if statement
16
+ 2. `elif` generates `IF`, followed by the generated code for its body, followed by `GOTO` to the end of the if statement
17
+ 3. `else` generates the code for its body
18
+
19
+ # `not` boolean operator
20
+
21
+ ## Syntactical and semantic checks
22
+
23
+ `"not" value` evaluates to a boolean at runtime
24
+
25
+ 1. where `value` is an expression which evaluates to a boolean
26
+
27
+ ## Code generation
28
+
29
+ 1. `not` generates `NOT`
30
+
31
+ # `and` and `or` boolean operators
32
+
33
+ ## Syntactical and semantic checks
34
+
35
+ `value (op value)+` evaluates to a boolean at runtime
36
+
37
+ 1. where `op: "and"|"or"`
38
+ 2. where `value` is an expression which evaluates to a boolean
39
+
40
+ ## Code generation
41
+
42
+ 1. Each `and` or `or` between two `value`s generates an `AND` or `OR`, respectively
43
+
44
+ # Infix comparisons
45
+
46
+ ## Syntactical and semantic checks
47
+
48
+ `lhs op rhs` evaluates to a boolean at runtime
49
+
50
+ 1. where `op: ">" | "<" | "<=" | ">=" | "==" | "!="`
51
+ 2. and `lhs`, `rhs` are expressions which evaluate to a number
52
+
53
+ If either `lhs` or `rhs` evaluate to a float:
54
+ 3. both `lhs` and `rhs` must evaluate to floats of the same bit width
55
+
56
+ Otherwise, `lhs` and `rhs` evaluate to integer values. All comparisons between integer values are valid.
57
+
58
+ ## Code generation
59
+
60
+ ### Equality comparisons
61
+
62
+ 1. `==` or `!=` between two floats generates `FEQ` or `FNE`, respectively
63
+ 2. `==` or `!=` between two ints generates `IEQ` or `INE`, respectively
64
+
65
+ ### Inequality comparisons
66
+
67
+ 1. `>`, `<`, `<=`, or `>=` between two floats generates `FGT`, `FLT`, `FLE` or `FGE`, respectively
68
+ 2. `>`, `<`, `<=`, or `>=` between two unsigned ints generates `UGT`, `ULT`, `ULE` or `UGE`, respectively
69
+ 2. `>`, `<`, `<=`, or `>=` between two ints, where at least one is signed, generates `SGT`, `SLT`, `SLE` or `SGE`, respectively