fprime-gds 3.6.0__tar.gz → 3.6.2a1__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 (309) hide show
  1. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/PKG-INFO +1 -1
  2. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/json_loader.py +15 -0
  3. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/dictionaries.py +32 -39
  4. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/app.py +3 -0
  5. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/resource.py +5 -2
  6. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/addon.js +8 -3
  7. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/datastore.js +1 -0
  8. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/json.js +10 -3
  9. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds.egg-info/PKG-INFO +1 -1
  10. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds.egg-info/SOURCES.txt +0 -4
  11. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/loaders/resources/RefTopologyDictionary.json +6354 -5040
  12. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/loaders/test_json_loader.py +17 -0
  13. fprime_gds-3.6.0/src/fprime_gds/common/loaders/ch_py_loader.py +0 -79
  14. fprime_gds-3.6.0/src/fprime_gds/common/loaders/cmd_py_loader.py +0 -66
  15. fprime_gds-3.6.0/src/fprime_gds/common/loaders/event_py_loader.py +0 -75
  16. fprime_gds-3.6.0/src/fprime_gds/common/loaders/python_loader.py +0 -132
  17. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  18. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/actions/codeql/security-pack.yml +0 -0
  19. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/actions/spelling/excludes.txt +0 -0
  20. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/actions/spelling/expect.txt +0 -0
  21. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/actions/spelling/patterns.txt +0 -0
  22. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/pull_request_template.md +0 -0
  23. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/resources/RefTopologyAppDictionary.xml +0 -0
  24. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/workflows/codeql-security-scan.yml +0 -0
  25. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/workflows/fprime-gds-tests.yml +0 -0
  26. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/workflows/gds-cli-tests.yml +0 -0
  27. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/workflows/publish.yml +0 -0
  28. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.github/workflows/spelling.yml +0 -0
  29. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/.gitignore +0 -0
  30. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/Doxyfile +0 -0
  31. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/LICENSE.txt +0 -0
  32. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/NOTICE.txt +0 -0
  33. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/README.md +0 -0
  34. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/configs/__init__.py +0 -0
  35. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/docs/README.md +0 -0
  36. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/docs/_static/css/rtd_width.css +0 -0
  37. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/docs/conf.py +0 -0
  38. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/docs/gendoc.bash +0 -0
  39. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/docs/index.rst +0 -0
  40. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/examples/simple_sequence.bin +0 -0
  41. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/examples/simple_sequence.seq +0 -0
  42. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/pyproject.toml +0 -0
  43. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/setup.cfg +0 -0
  44. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/setup.py +0 -0
  45. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fastentrypoints.py +0 -0
  46. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/__init__.py +0 -0
  47. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/__init__.py +0 -0
  48. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/__init__.py +0 -0
  49. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/adapters/__init__.py +0 -0
  50. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/adapters/base.py +0 -0
  51. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/adapters/ip.py +0 -0
  52. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/adapters/uart.py +0 -0
  53. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/checksum.py +0 -0
  54. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/framing.py +0 -0
  55. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/ground.py +0 -0
  56. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/communication/updown.py +0 -0
  57. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/controllers/__init__.py +0 -0
  58. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/__init__.py +0 -0
  59. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/ch_data.py +0 -0
  60. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/cmd_data.py +0 -0
  61. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/event_data.py +0 -0
  62. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/exceptions.py +0 -0
  63. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/file_data.py +0 -0
  64. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/pkt_data.py +0 -0
  65. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/data_types/sys_data.py +0 -0
  66. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/decoders/__init__.py +0 -0
  67. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/decoders/ch_decoder.py +0 -0
  68. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/decoders/decoder.py +0 -0
  69. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/decoders/event_decoder.py +0 -0
  70. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/decoders/file_decoder.py +0 -0
  71. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/decoders/pkt_decoder.py +0 -0
  72. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/distributor/__init__.py +0 -0
  73. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/distributor/distributor.py +0 -0
  74. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/__init__.py +0 -0
  75. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/ch_encoder.py +0 -0
  76. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/cmd_encoder.py +0 -0
  77. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/encoder.py +0 -0
  78. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/event_encoder.py +0 -0
  79. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/file_encoder.py +0 -0
  80. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/pkt_encoder.py +0 -0
  81. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/encoders/seq_writer.py +0 -0
  82. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/files/File Decoder Documentation.txt +0 -0
  83. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/files/__init__.py +0 -0
  84. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/files/downlinker.py +0 -0
  85. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/files/helpers.py +0 -0
  86. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/files/uplinker.py +0 -0
  87. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/__init__.py +0 -0
  88. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/base_commands.py +0 -0
  89. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/channels.py +0 -0
  90. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/command_send.py +0 -0
  91. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/events.py +0 -0
  92. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/filtering_utils.py +0 -0
  93. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/gds_cli/test_api_utils.py +0 -0
  94. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/handlers.py +0 -0
  95. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/history/__init__.py +0 -0
  96. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/history/chrono.py +0 -0
  97. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/history/history.py +0 -0
  98. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/history/ram.py +0 -0
  99. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/history/test.py +0 -0
  100. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/__init__.py +0 -0
  101. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/ch_json_loader.py +0 -0
  102. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/ch_xml_loader.py +0 -0
  103. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/cmd_json_loader.py +0 -0
  104. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/cmd_xml_loader.py +0 -0
  105. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/dict_loader.py +0 -0
  106. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/event_json_loader.py +0 -0
  107. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/event_xml_loader.py +0 -0
  108. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/pkt_xml_loader.py +0 -0
  109. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/loaders/xml_loader.py +0 -0
  110. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/logger/__init__.py +0 -0
  111. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/logger/data_logger.py +0 -0
  112. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/logger/test_logger.py +0 -0
  113. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/models/__init__.py +0 -0
  114. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/models/common/__init__.py +0 -0
  115. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/models/common/channel_telemetry.py +0 -0
  116. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/models/common/command.py +0 -0
  117. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/models/common/event.py +0 -0
  118. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/parsers/__init__.py +0 -0
  119. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/parsers/seq_file_parser.py +0 -0
  120. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/__init__.py +0 -0
  121. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/encoding.py +0 -0
  122. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/files.py +0 -0
  123. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/histories.py +0 -0
  124. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/router.py +0 -0
  125. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/pipeline/standard.py +0 -0
  126. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/templates/__init__.py +0 -0
  127. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/templates/ch_template.py +0 -0
  128. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/templates/cmd_template.py +0 -0
  129. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/templates/data_template.py +0 -0
  130. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/templates/event_template.py +0 -0
  131. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/templates/pkt_template.py +0 -0
  132. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/testing_fw/__init__.py +0 -0
  133. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/testing_fw/api.py +0 -0
  134. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/testing_fw/predicates.py +0 -0
  135. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/testing_fw/pytest_integration.py +0 -0
  136. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/tools/__init__.py +0 -0
  137. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/tools/seqgen.py +0 -0
  138. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/transport.py +0 -0
  139. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/utils/__init__.py +0 -0
  140. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/utils/config_manager.py +0 -0
  141. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/utils/data_desc_type.py +0 -0
  142. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/utils/event_severity.py +0 -0
  143. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/utils/string_util.py +0 -0
  144. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/common/zmq_transport.py +0 -0
  145. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/__init__.py +0 -0
  146. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/apps.py +0 -0
  147. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/cli.py +0 -0
  148. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/comm.py +0 -0
  149. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/data_product_writer.py +0 -0
  150. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/fprime_cli.py +0 -0
  151. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/run_deployment.py +0 -0
  152. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/tcpserver.py +0 -0
  153. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/executables/utils.py +0 -0
  154. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/__init__.py +0 -0
  155. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/channels.py +0 -0
  156. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/commands.py +0 -0
  157. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/components.py +0 -0
  158. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/default_settings.py +0 -0
  159. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/errors.py +0 -0
  160. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/events.py +0 -0
  161. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/json.py +0 -0
  162. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/logs.py +0 -0
  163. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/requirements.txt +0 -0
  164. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/sequence.py +0 -0
  165. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/.idea/.gitignore +0 -0
  166. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/.idea/misc.xml +0 -0
  167. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/.idea/modules.xml +0 -0
  168. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/.idea/static.iml +0 -0
  169. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/.idea/vcs.xml +0 -0
  170. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/advanced-settings/addon-templates.js +0 -0
  171. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/advanced-settings/addon.js +0 -0
  172. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/channel-render/addon.js +0 -0
  173. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/channel-render/channel-render-template.js +0 -0
  174. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/channel-render/channel-render.js +0 -0
  175. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/addon-templates.js +0 -0
  176. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/config.js +0 -0
  177. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-streaming.js +0 -0
  178. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/chartjs-plugin-zoom.js +0 -0
  179. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/modified-vendor/flat.js +0 -0
  180. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/sibling.js +0 -0
  181. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/vendor/chart.js +0 -0
  182. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/vendor/chartjs-adapter-luxon.min.js +0 -0
  183. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/chart-display/vendor/hammer.min.js +0 -0
  184. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/addon.js +0 -0
  185. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/argument-templates.js +0 -0
  186. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/arguments.js +0 -0
  187. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/command-history-template.js +0 -0
  188. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/command-history.js +0 -0
  189. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/command-input-template.js +0 -0
  190. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/command-input.js +0 -0
  191. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/command-string-template.js +0 -0
  192. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/commanding/command-string.js +0 -0
  193. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/dictionary/addon-templates.js +0 -0
  194. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/dictionary/addon.js +0 -0
  195. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/enabled.js +0 -0
  196. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/image-display/addon.js +0 -0
  197. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/image-display/dashboard.xml +0 -0
  198. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/README.md +0 -0
  199. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/addon-templates.js +0 -0
  200. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/addon.js +0 -0
  201. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/autocomplete.js +0 -0
  202. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/lint.js +0 -0
  203. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/third/code-mirror.es.js +0 -0
  204. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/.gitignore +0 -0
  205. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/index.js +0 -0
  206. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/language.grammer +0 -0
  207. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/package.json +0 -0
  208. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/addons/sequencer/third/rollup/rollup.config.js +0 -0
  209. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/css/fprime.css +0 -0
  210. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/css/fpstyle.css +0 -0
  211. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/favicon.ico +0 -0
  212. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/img/error.svg +0 -0
  213. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/img/logo.svg +0 -0
  214. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/img/success.svg +0 -0
  215. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/index.html +0 -0
  216. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/config.js +0 -0
  217. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/gds.js +0 -0
  218. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/loader.js +0 -0
  219. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/performance.js +0 -0
  220. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/settings.js +0 -0
  221. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/uploader.js +0 -0
  222. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/validate.js +0 -0
  223. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/channel.js +0 -0
  224. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/dashboard-box.js +0 -0
  225. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/dashboard-row.js +0 -0
  226. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/dashboard.js +0 -0
  227. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/downlink.js +0 -0
  228. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/event.js +0 -0
  229. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/fp-row.js +0 -0
  230. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/fptable.js +0 -0
  231. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/log.js +0 -0
  232. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/tabetc.js +0 -0
  233. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/uplink.js +0 -0
  234. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/js/vue-support/utils.js +0 -0
  235. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/css/all.min.css +0 -0
  236. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/css/bootstrap.min.css +0 -0
  237. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/css/vue-select.css +0 -0
  238. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/js/luxon.min.js +0 -0
  239. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/js/sorttable.js +0 -0
  240. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/js/v-runtime-template.js +0 -0
  241. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/js/vue-select.js +0 -0
  242. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/js/vue.min.js +0 -0
  243. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.eot +0 -0
  244. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.svg +0 -0
  245. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.ttf +0 -0
  246. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff +0 -0
  247. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-brands-400.woff2 +0 -0
  248. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.eot +0 -0
  249. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.svg +0 -0
  250. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.ttf +0 -0
  251. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff +0 -0
  252. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-regular-400.woff2 +0 -0
  253. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.eot +0 -0
  254. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.svg +0 -0
  255. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.ttf +0 -0
  256. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff +0 -0
  257. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2 +0 -0
  258. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/stats.py +0 -0
  259. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/flask/updown.py +0 -0
  260. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/plugin/__init__.py +0 -0
  261. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/plugin/definitions.py +0 -0
  262. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/plugin/system.py +0 -0
  263. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds/version.py +0 -0
  264. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds.egg-info/dependency_links.txt +0 -0
  265. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds.egg-info/entry_points.txt +0 -0
  266. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds.egg-info/requires.txt +0 -0
  267. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/src/fprime_gds.egg-info/top_level.txt +0 -0
  268. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/data_types/test_cmd_data.py +0 -0
  269. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/distributor/test_distributor.py +0 -0
  270. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/encoders/test_ch_encoder.py +0 -0
  271. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/encoders/test_event_encoder.py +0 -0
  272. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/encoders/test_pkt_encoder.py +0 -0
  273. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/gds_cli/filtering_utils_test.py +0 -0
  274. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/gds_cli/utils_test.py +0 -0
  275. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/history/chronohistory_unit_test.py +0 -0
  276. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/history/testhistory_unit_test.py +0 -0
  277. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/testing_fw/UnitTestDictionary.xml +0 -0
  278. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/testing_fw/api_unit_test.py +0 -0
  279. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/testing_fw/logs/.gitignore +0 -0
  280. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/testing_fw/predicate_unit_test.py +0 -0
  281. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/tools/expected/simple_expected.bin +0 -0
  282. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/tools/input/simple_bad_sequence.seq +0 -0
  283. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/tools/input/simple_sequence.seq +0 -0
  284. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/tools/resources/simple_dictionary.json +0 -0
  285. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/tools/resources/simple_dictionary.xml +0 -0
  286. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/tools/seqgen_unit_test.py +0 -0
  287. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/common/utils/test_string_util.py +0 -0
  288. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/.gitignore +0 -0
  289. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/dictionary.json +0 -0
  290. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeBool.bin +0 -0
  291. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeComplex.bin +0 -0
  292. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin +0 -0
  293. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeEnum.bin +0 -0
  294. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeF32.bin +0 -0
  295. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeF64.bin +0 -0
  296. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin +0 -0
  297. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeI16.bin +0 -0
  298. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeI32.bin +0 -0
  299. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeI64.bin +0 -0
  300. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeI8.bin +0 -0
  301. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeU32.bin +0 -0
  302. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin +0 -0
  303. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin +0 -0
  304. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/test_data_product_writer.py +0 -0
  305. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/test_run_deployment.py +0 -0
  306. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/executables/test_utils.py +0 -0
  307. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/sample/dictionary.xml +0 -0
  308. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/fprime_gds/test_plugins.py +0 -0
  309. {fprime_gds-3.6.0 → fprime_gds-3.6.2a1}/test/gui/GUI_Test_Procedure.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fprime-gds
3
- Version: 3.6.0
3
+ Version: 3.6.2a1
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:
@@ -71,6 +71,18 @@ class JsonLoader(dict_loader.DictLoader):
71
71
  self.json_dict["metadata"].get("projectVersion", "unknown"),
72
72
  )
73
73
 
74
+ def get_metadata(self):
75
+ """Get the metadata field of the JSON dictionary
76
+
77
+ Raises:
78
+ GdsDictionaryParsingException: if the dictionary has no metadata field
79
+ """
80
+ if "metadata" not in self.json_dict:
81
+ raise GdsDictionaryParsingException(
82
+ f"Dictionary has no metadata field: {self.json_file}"
83
+ )
84
+ return self.json_dict["metadata"]
85
+
74
86
  def parse_type(self, type_dict: dict) -> BaseType:
75
87
  type_name: str = type_dict.get("name", None)
76
88
 
@@ -102,6 +114,9 @@ class JsonLoader(dict_loader.DictLoader):
102
114
  f"Dictionary type name has no corresponding type definition: {type_name}"
103
115
  )
104
116
 
117
+ if qualified_type.get("kind") == "alias":
118
+ return self.parse_type(qualified_type.get("underlyingType"))
119
+
105
120
  if qualified_type.get("kind") == "array":
106
121
  return self.construct_array_type(type_name, qualified_type)
107
122
 
@@ -7,20 +7,16 @@ class called "Dictionaries".
7
7
  @author mstarch
8
8
  """
9
9
 
10
- import os
11
10
  from pathlib import Path
12
11
 
13
- import fprime_gds.common.loaders.ch_py_loader
14
- import fprime_gds.common.loaders.ch_xml_loader
15
-
16
- # Py Loaders
17
- import fprime_gds.common.loaders.cmd_py_loader
18
12
 
19
13
  # XML Loaders
14
+ import fprime_gds.common.loaders.ch_xml_loader
20
15
  import fprime_gds.common.loaders.cmd_xml_loader
21
- import fprime_gds.common.loaders.event_py_loader
22
16
  import fprime_gds.common.loaders.event_xml_loader
23
17
  import fprime_gds.common.loaders.pkt_xml_loader
18
+
19
+ # JSON Loaders
24
20
  import fprime_gds.common.loaders.ch_json_loader
25
21
  import fprime_gds.common.loaders.cmd_json_loader
26
22
  import fprime_gds.common.loaders.event_json_loader
@@ -50,6 +46,7 @@ class Dictionaries:
50
46
  self._channel_name_dict = None
51
47
  self._packet_dict = None
52
48
  self._versions = None
49
+ self._metadata = None
53
50
 
54
51
  def load_dictionaries(self, dictionary, packet_spec):
55
52
  """
@@ -59,57 +56,39 @@ class Dictionaries:
59
56
  :param dictionary: dictionary path used for loading dictionaries
60
57
  :param packet_spec: specification for packets, or None, for packetized telemetry
61
58
  """
62
- # Loading the dictionaries from a directory. A directory indicates heritage python dicts.
63
- if os.path.isdir(dictionary):
64
- # Events
65
- event_loader = fprime_gds.common.loaders.event_py_loader.EventPyLoader()
66
- self._event_id_dict = event_loader.get_id_dict(
67
- os.path.join(dictionary, "events")
68
- )
69
- self._event_name_dict = event_loader.get_name_dict(
70
- os.path.join(dictionary, "events")
71
- )
72
- # Commands
73
- command_loader = fprime_gds.common.loaders.cmd_py_loader.CmdPyLoader()
74
- self._command_id_dict = command_loader.get_id_dict(
75
- os.path.join(dictionary, "commands")
76
- )
77
- self._command_name_dict = command_loader.get_name_dict(
78
- os.path.join(dictionary, "commands")
79
- )
80
- # Channels
81
- channel_loader = fprime_gds.common.loaders.ch_py_loader.ChPyLoader()
82
- self._channel_id_dict = channel_loader.get_id_dict(
83
- os.path.join(dictionary, "channels")
84
- )
85
- self._channel_name_dict = channel_loader.get_name_dict(
86
- os.path.join(dictionary, "channels")
87
- )
88
- elif Path(dictionary).is_file() and ".json" in Path(dictionary).suffixes:
59
+ if Path(dictionary).is_file() and ".json" in Path(dictionary).suffixes:
89
60
  # Events
90
61
  json_event_loader = (
91
62
  fprime_gds.common.loaders.event_json_loader.EventJsonLoader(dictionary)
92
63
  )
93
64
  self._event_name_dict = json_event_loader.get_name_dict(None)
94
65
  self._event_id_dict = json_event_loader.get_id_dict(None)
95
- self._versions = json_event_loader.get_versions()
96
66
  # Commands
97
67
  json_command_loader = (
98
68
  fprime_gds.common.loaders.cmd_json_loader.CmdJsonLoader(dictionary)
99
69
  )
100
70
  self._command_name_dict = json_command_loader.get_name_dict(None)
101
71
  self._command_id_dict = json_command_loader.get_id_dict(None)
102
- assert (
103
- self._versions == json_command_loader.get_versions()
104
- ), "Version mismatch while loading"
105
72
  # Channels
106
73
  json_channel_loader = fprime_gds.common.loaders.ch_json_loader.ChJsonLoader(
107
74
  dictionary
108
75
  )
109
76
  self._channel_name_dict = json_channel_loader.get_name_dict(None)
110
77
  self._channel_id_dict = json_channel_loader.get_id_dict(None)
78
+ # Metadata
79
+ self._versions = json_event_loader.get_versions()
80
+ self._metadata = json_event_loader.get_metadata().copy()
81
+ self._metadata["dictionary_type"] = "json"
82
+ # Each loaders should agree on metadata and versions
83
+ assert (
84
+ json_command_loader.get_metadata()
85
+ == json_channel_loader.get_metadata()
86
+ == json_event_loader.get_metadata()
87
+ ), "Metadata mismatch while loading"
111
88
  assert (
112
- self._versions == json_channel_loader.get_versions()
89
+ json_command_loader.get_versions()
90
+ == json_channel_loader.get_versions()
91
+ == json_event_loader.get_versions()
113
92
  ), "Version mismatch while loading"
114
93
  # XML dictionaries
115
94
  elif Path(dictionary).is_file():
@@ -132,6 +111,12 @@ class Dictionaries:
132
111
  assert (
133
112
  self._versions == channel_loader.get_versions()
134
113
  ), "Version mismatch while loading"
114
+ # versions are camelCase to match the metadata field of the JSON dictionaries
115
+ self._metadata = {
116
+ "frameworkVersion": self._versions[0],
117
+ "projectVersion": self._versions[1],
118
+ "dictionary_type": "xml",
119
+ }
135
120
  else:
136
121
  msg = f"[ERROR] Dictionary '{dictionary}' does not exist."
137
122
  raise Exception(msg)
@@ -184,6 +169,14 @@ class Dictionaries:
184
169
  """Framework version in dictionary"""
185
170
  return self._versions[0]
186
171
 
172
+ @property
173
+ def metadata(self):
174
+ """Dictionary metadata.
175
+
176
+ Note: framework_version and project_version are also available as separate properties
177
+ for legacy reasons. New code should use the metadata property."""
178
+ return self._metadata
179
+
187
180
  @property
188
181
  def packet(self):
189
182
  """Packet dictionary"""
@@ -84,6 +84,7 @@ def construct_app():
84
84
  pipeline.dictionaries.command_name,
85
85
  pipeline.dictionaries.project_version,
86
86
  pipeline.dictionaries.framework_version,
87
+ pipeline.dictionaries.metadata,
87
88
  ],
88
89
  )
89
90
  api.add_resource(
@@ -103,6 +104,7 @@ def construct_app():
103
104
  pipeline.dictionaries.event_id,
104
105
  pipeline.dictionaries.project_version,
105
106
  pipeline.dictionaries.framework_version,
107
+ pipeline.dictionaries.metadata,
106
108
  ],
107
109
  )
108
110
  api.add_resource(
@@ -117,6 +119,7 @@ def construct_app():
117
119
  pipeline.dictionaries.channel_id,
118
120
  pipeline.dictionaries.project_version,
119
121
  pipeline.dictionaries.framework_version,
122
+ pipeline.dictionaries.metadata,
120
123
  ],
121
124
  )
122
125
  api.add_resource(
@@ -17,17 +17,19 @@ class DictionaryResource(Resource):
17
17
  should be flask compatible. Errors with the dictionary are a 500 server error and may not be recovered.
18
18
  """
19
19
 
20
- def __init__(self, dictionary, project_version, framework_version):
20
+ def __init__(self, dictionary, project_version, framework_version, metadata):
21
21
  """Constructor used to setup for dictionary
22
22
 
23
23
  Args:
24
24
  dictionary: dictionary to serve when GET is called
25
25
  project_version: project version for the dictionary
26
26
  framework_version: project version for the dictionary
27
+ metadata (dict): additional metadata to serve with the dictionary
27
28
  """
28
29
  self.dictionary = dictionary
29
30
  self.project_version = project_version
30
31
  self.framework_version = framework_version
32
+ self.metadata = metadata
31
33
 
32
34
  def get(self):
33
35
  """HTTP GET method handler for dictionary resource
@@ -38,7 +40,8 @@ class DictionaryResource(Resource):
38
40
  return {
39
41
  "dictionary": self.dictionary,
40
42
  "project_version": self.project_version,
41
- "framework_version": self.framework_version
43
+ "framework_version": self.framework_version,
44
+ "metadata": self.metadata
42
45
  }
43
46
 
44
47
 
@@ -197,12 +197,17 @@ Vue.component("chart-display", {
197
197
  if (this.selected == null || this.chart == null) {
198
198
  return;
199
199
  }
200
- // Get channel name assuming the string is in component.channel format.
200
+ // Get channel name assuming the string is in either of these format:
201
+ // - component.channel format for XML dictionaries
202
+ // - deployment.component.channel for JSON dictionaries
203
+ // Can't just slice by last '.' because channel name can include complex types
204
+ // which are in the form of 'component.channel.fieldName'
205
+ let SLICE_INDEX = _dictionaries.metadata.dictionary_type == "xml" ? 2 : 3;
201
206
  let channel_full_name = this.selected
202
207
  .split(".")
203
- .slice(0, 2)
208
+ .slice(0, SLICE_INDEX)
204
209
  .join(".");
205
- let serial_path = this.selected.split(".").slice(2).join(".");
210
+ let serial_path = this.selected.split(".").slice(SLICE_INDEX).join(".");
206
211
 
207
212
  // Filter channels down to the graphed channel
208
213
  let new_channels = channels.filter((channel) => {
@@ -253,6 +253,7 @@ class DataStore {
253
253
  commands_by_id: Object.fromEntries(Object.values(_loader.endpoints["command-dict"].data.dictionary).map((value) => [value.id, value])),
254
254
  framework_version: _loader.endpoints["command-dict"].data.framework_version,
255
255
  project_version: _loader.endpoints["command-dict"].data.project_version,
256
+ metadata: _loader.endpoints["command-dict"].data.metadata,
256
257
  });
257
258
  // Setup channels object in preparation for updates. Channel object need to be well formed, even if blank,
258
259
  // because rendering of edit-views is still possible.
@@ -30,7 +30,7 @@ class RegExLexer {
30
30
  // NaN token
31
31
  ["NAN", /^NaN/],
32
32
  // boolean token
33
- ["BOOLEAN", /^(true)|(false)/],
33
+ ["BOOLEAN", /^(true)|^(false)/],
34
34
  // Open object token
35
35
  ["OPEN_OBJECT", /^\{/],
36
36
  // Close object token
@@ -55,6 +55,8 @@ class RegExLexer {
55
55
  static tokenize(original_string) {
56
56
  let tokens = [];
57
57
  let input_string = original_string;
58
+ let total_length = 0;
59
+ let last_token_type = "--NONE--"
58
60
  // Consume the whole string
59
61
  while (input_string !== "") {
60
62
  let matched_something = false;
@@ -62,18 +64,23 @@ class RegExLexer {
62
64
  let match = token_matcher.exec(input_string)
63
65
 
64
66
  // Token detected
65
- if (match != null) {
67
+ if (match != null && match.index == 0 ) {
66
68
  matched_something = true;
67
69
  let matched = match[0];
68
70
  tokens.push([token_type, matched]);
69
71
  // Consume the string
70
72
  input_string = input_string.substring(matched.length);
73
+ total_length += matched.length;
74
+ last_token_type = token_type;
71
75
  break;
72
76
  }
73
77
  }
74
78
  // Check for no token match
75
79
  if (!matched_something) {
76
- throw SyntaxError("Failed to match valid token: '" + input_string.substring(0, 20) + "'...");
80
+ let say = "Failed to match valid token: '" + input_string.substring(0, 20);
81
+ say += "' Context: '" + original_string.substring(Math.max(total_length - 20, 0), total_length + 20);
82
+ say += "' Last token's type: " + last_token_type + ".";
83
+ throw SyntaxError(say);
77
84
  }
78
85
  }
79
86
  return tokens;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fprime-gds
3
- Version: 3.6.0
3
+ Version: 3.6.2a1
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:
@@ -91,18 +91,14 @@ src/fprime_gds/common/history/ram.py
91
91
  src/fprime_gds/common/history/test.py
92
92
  src/fprime_gds/common/loaders/__init__.py
93
93
  src/fprime_gds/common/loaders/ch_json_loader.py
94
- src/fprime_gds/common/loaders/ch_py_loader.py
95
94
  src/fprime_gds/common/loaders/ch_xml_loader.py
96
95
  src/fprime_gds/common/loaders/cmd_json_loader.py
97
- src/fprime_gds/common/loaders/cmd_py_loader.py
98
96
  src/fprime_gds/common/loaders/cmd_xml_loader.py
99
97
  src/fprime_gds/common/loaders/dict_loader.py
100
98
  src/fprime_gds/common/loaders/event_json_loader.py
101
- src/fprime_gds/common/loaders/event_py_loader.py
102
99
  src/fprime_gds/common/loaders/event_xml_loader.py
103
100
  src/fprime_gds/common/loaders/json_loader.py
104
101
  src/fprime_gds/common/loaders/pkt_xml_loader.py
105
- src/fprime_gds/common/loaders/python_loader.py
106
102
  src/fprime_gds/common/loaders/xml_loader.py
107
103
  src/fprime_gds/common/logger/__init__.py
108
104
  src/fprime_gds/common/logger/data_logger.py