fprime-gds 4.0.2a3__py3-none-any.whl → 4.0.2a4__py3-none-any.whl

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 (28) hide show
  1. fprime_gds/common/distributor/distributor.py +9 -6
  2. fprime_gds/common/fpy/README.md +190 -42
  3. fprime_gds/common/fpy/SPEC.md +153 -39
  4. fprime_gds/common/fpy/bytecode/assembler.py +62 -0
  5. fprime_gds/common/fpy/bytecode/directives.py +620 -294
  6. fprime_gds/common/fpy/codegen.py +687 -910
  7. fprime_gds/common/fpy/grammar.lark +44 -9
  8. fprime_gds/common/fpy/main.py +27 -4
  9. fprime_gds/common/fpy/model.py +799 -0
  10. fprime_gds/common/fpy/parser.py +29 -34
  11. fprime_gds/common/fpy/test_helpers.py +119 -0
  12. fprime_gds/common/fpy/types.py +563 -0
  13. fprime_gds/executables/cli.py +9 -0
  14. fprime_gds/executables/run_deployment.py +2 -0
  15. fprime_gds/flask/app.py +17 -2
  16. fprime_gds/flask/default_settings.py +1 -0
  17. fprime_gds/flask/static/index.html +7 -4
  18. fprime_gds/flask/static/js/config.js +9 -1
  19. fprime_gds/flask/static/js/vue-support/channel.js +16 -0
  20. fprime_gds/flask/static/js/vue-support/event.js +1 -0
  21. fprime_gds/flask/static/js/vue-support/fp-row.js +25 -1
  22. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/METADATA +1 -1
  23. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/RECORD +28 -24
  24. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/entry_points.txt +2 -1
  25. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/WHEEL +0 -0
  26. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/licenses/LICENSE.txt +0 -0
  27. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/licenses/NOTICE.txt +0 -0
  28. {fprime_gds-4.0.2a3.dist-info → fprime_gds-4.0.2a4.dist-info}/top_level.txt +0 -0
@@ -77,7 +77,9 @@ Note: Vue.js annotations are used, as Vue is the data-to-view framework of choic
77
77
  <li v-for="tab in tabs"
78
78
  :class="['nav-item', 'nav-link', 'click-able-item', { active: currentTab == tab[0] }]"
79
79
  :key="tab[0]"
80
- v-on:click="route(tab[0])">
80
+ v-on:click="route(tab[0])"
81
+ v-if="config.enableDashboards || tab[0] != 'Dashboard'"
82
+ >
81
83
  <span class="d-none d-sm-none d-md-none d-lg-block" v-bind:id="tab[0]">{{ tab[0] }}</span>
82
84
  <span class="d-none d-sm-block d-md-block d-lg-none">{{ tab[1] }}</span>
83
85
  </li>
@@ -111,7 +113,7 @@ Note: Vue.js annotations are used, as Vue is the data-to-view framework of choic
111
113
  <dictionary v-show="currentTab == 'Dictionaries'"></dictionary>
112
114
  <logging v-show="currentTab == 'Logs'"></logging>
113
115
  <sequencer v-show="currentTab == 'Sequences'"></sequencer>
114
- <dashboard v-show="currentTab == 'Dashboard'"></dashboard>
116
+ <dashboard v-if="config.enableDashboards" v-show="currentTab == 'Dashboard'"></dashboard>
115
117
  <advanced-settings v-show="currentTab == 'Advanced'"></advanced-settings>
116
118
  <dictionary-version></dictionary-version>
117
119
  </div>
@@ -181,7 +183,7 @@ Note: Vue.js annotations are used, as Vue is the data-to-view framework of choic
181
183
  <div class="fp-flex-header">
182
184
  <h2>Events</h2>
183
185
  </div>
184
- <fp-table :header-columns="['Event Time', 'Event Id', 'Event Name', 'Event Severity', 'Event Description']"
186
+ <fp-table ref="fptable" :header-columns="['Event Time', 'Event Id', 'Event Name', 'Event Severity', 'Event Description']"
185
187
  :items-key="'events'"
186
188
  :item-to-columns="columnify"
187
189
  :row-style="style"
@@ -206,7 +208,7 @@ Note: Vue.js annotations are used, as Vue is the data-to-view framework of choic
206
208
  <div class="fp-flex-header">
207
209
  <h2>Channels</h2>
208
210
  </div>
209
- <fp-table :display-template="'channel-row'"
211
+ <fp-table ref="fptable" :display-template="'channel-row'"
210
212
  :header-columns="['Last Sample Time', 'Channel Id', 'Channel Name', 'Channel Value']"
211
213
  :items-key="'channels'"
212
214
  :item-to-columns="columnify"
@@ -214,6 +216,7 @@ Note: Vue.js annotations are used, as Vue is the data-to-view framework of choic
214
216
  :support-views="true"
215
217
  :item-to-view-name="itemToName"
216
218
  :item-hide="channelHider"
219
+ :clear-rows="clearChannels"
217
220
  :initial-fields="fields"
218
221
  :filter-text="filterText"
219
222
  :initial-views="itemsShown"
@@ -22,5 +22,13 @@ export let config = {
22
22
  default: 1000
23
23
  },
24
24
  // Summary counter fields containing object of field: bootstrap class
25
- summaryFields: {"WARNING_HI": "warning", "FATAL": "danger", "GDS_Errors": "danger"}
25
+ summaryFields: {"WARNING_HI": "warning", "FATAL": "danger", "GDS_Errors": "danger"},
26
+
27
+ // Dashboards are a security vulnerability in that users are uploading artifacts that trigger
28
+ // arbitrary rendering and code execution. This is explained in more detail here:
29
+ // https://v2.vuejs.org/v2/guide/security#Rule-No-1-Never-Use-Non-trusted-Templates
30
+ //
31
+ // Thus dashboards are disabled by default and projects must opt-in thus taking the responsibility
32
+ // to validate and review the safety of the dashboards they use.
33
+ enableDashboards: false
26
34
  };
@@ -120,9 +120,25 @@ Vue.component("channel-table", {
120
120
  * @return {boolean}
121
121
  */
122
122
  channelHider(item) {
123
+ // Never hide channels if all channels are null
124
+ let all_null = Object.values(_datastore.channels).reduce((accumulator, channel) => accumulator && channel.val == null);
125
+ if (all_null && this.itemsShown.length == 0) {
126
+ return false;
127
+ }
123
128
  return item.val == null
124
129
  || item.time == null
125
130
  || listExistsAndItemNameNotInList(this.itemsShown, item);
131
+ },
132
+ /**
133
+ * Function that clears all channels
134
+ */
135
+ clearChannels() {
136
+ let channels = {}
137
+ for (let key in _dictionaries.channels) {
138
+ channels[key] = {id: key, time: null, datetime: null, val: null};
139
+ }
140
+ Object.assign(_datastore.channels, channels);
141
+ this.$refs.fptable.send([]);
126
142
  }
127
143
  }
128
144
  });
@@ -116,6 +116,7 @@ Vue.component("event-list", {
116
116
  */
117
117
  clearEvents() {
118
118
  _datastore.events.splice(0, _datastore.events.length);
119
+ this.$refs.fptable.send([]);
119
120
  },
120
121
  /**
121
122
  * Returns if the given item should be hidden in the data table; by
@@ -10,6 +10,28 @@
10
10
  *
11
11
  * Note: fp-row is broken up such that other row implementations can inherit the base properties.
12
12
  */
13
+
14
+ let headerRegex = new RegExp("&lt;h([1-6])&gt;([^&]*)&lt;/h[1-6]&gt;", "g");
15
+ let spanRegex = new RegExp("&lt;span( title=\"[^\"]*\")?&gt;([^&]*)&lt;/span&gt;", "g");
16
+
17
+ /**
18
+ * Replace strings keeping <h1> - <h6> and <span...> tags.
19
+ * @param {*} item: display item
20
+ * @returns: sanitized display item
21
+ */
22
+ function sanitize(item) {
23
+ if (typeof(item) !== "string") {
24
+ return item;
25
+ }
26
+ // Remove all HTML tags
27
+ item = item.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
28
+ // Put back in h[1-6] and span tags
29
+ item = item.replaceAll(headerRegex, "<h$1>$2</h$1>")
30
+ .replaceAll(spanRegex, "<span $1>$2</span>");
31
+ return item;
32
+ }
33
+
34
+
13
35
  export let fp_row_base_component = {
14
36
  template: "#fp-row-template",
15
37
  props: {
@@ -85,7 +107,9 @@ export let fp_row_base_component = {
85
107
  if (typeof (this.itemToColumns) !== "function") {
86
108
  throw Error("Failed to define required 'itemToColumns' function on fp-table")
87
109
  }
88
- return this.itemToColumns(this.item).filter((item, index) => this.visible == null || this.visible.indexOf(index) !== -1);
110
+ return this.itemToColumns(this.item)
111
+ .map(sanitize)
112
+ .filter((item, index) => this.visible == null || this.visible.indexOf(index) !== -1);
89
113
  },
90
114
  /**
91
115
  * Calculates the style of the row based on a given item. This is optional and will not raise an error if the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fprime-gds
3
- Version: 4.0.2a3
3
+ Version: 4.0.2a4
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:
@@ -35,7 +35,7 @@ fprime_gds/common/decoders/event_decoder.py,sha256=tF_mg98RDjR0PppymGhmXybYXA0mF
35
35
  fprime_gds/common/decoders/file_decoder.py,sha256=Ky2U8bli3YL6GbT9jSSvI73ySOtf0cdZLK4FXTuWjfA,2542
36
36
  fprime_gds/common/decoders/pkt_decoder.py,sha256=c1CebqBaD7rAZd9t0AXkGVRTCtvXj0YH9OBN2bJKaTk,3327
37
37
  fprime_gds/common/distributor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- fprime_gds/common/distributor/distributor.py,sha256=hP0mUknxxpKrQfYkf57dHbMItwgUTzpzmkrc1AOHVCw,8034
38
+ fprime_gds/common/distributor/distributor.py,sha256=6XevwW9c75Un-tT0JXCE_savhvBUya8FWW-cHZNAqdw,8334
39
39
  fprime_gds/common/encoders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  fprime_gds/common/encoders/ch_encoder.py,sha256=TBrTJ7TK4WwCh6KAspozh63WcPxrMImloB8tz7qeulw,2878
41
41
  fprime_gds/common/encoders/cmd_encoder.py,sha256=iFPi6uMlMPlApC47p9YKRjKJxMvz46p15Yy3NnGTyaE,3497
@@ -49,15 +49,19 @@ fprime_gds/common/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
49
49
  fprime_gds/common/files/downlinker.py,sha256=CZPfhH0J9-LNqW5Cv_ryicLTuoedLSWK8OPQmmQDZZY,7498
50
50
  fprime_gds/common/files/helpers.py,sha256=sGaxcczXmZ5_soawT7x_eJ_cC2PZ6KOGBfusAV4QC_g,7219
51
51
  fprime_gds/common/files/uplinker.py,sha256=lgqhlgeipBt3Arx-ohzK8vCdS54fKpv9Rg7SUTocUX8,13244
52
- fprime_gds/common/fpy/README.md,sha256=AJE9KJDarTTW9nsTJBiZ6cKyPYQbWKbKJbFiNz6M8Z4,1414
53
- fprime_gds/common/fpy/SPEC.md,sha256=XTMgr96BIVJheOtjAp6Qgu5l5RE16DxxIkPl0WwXfEs,2248
52
+ fprime_gds/common/fpy/README.md,sha256=3lEAlRhkChCdjqhF1RIaNnRbUJZTtk-2LUHD55Uca2A,7602
53
+ fprime_gds/common/fpy/SPEC.md,sha256=j-V5F4I-syKJFnsW5ySE8va4GoXC50kECXUAr4xZYA8,5864
54
54
  fprime_gds/common/fpy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- fprime_gds/common/fpy/codegen.py,sha256=5VdV-f6CdU1LPJx4swB_GV5pvPe3Cqh9E3bkS0dBAo4,59828
56
- fprime_gds/common/fpy/grammar.lark,sha256=QIQgmj58pW9ou2u7DzE39c0fz55eGNj3X7ridzAHRFk,2128
57
- fprime_gds/common/fpy/main.py,sha256=U50sQCrwhZgxGzkjKgaJywoQM_cEH78hN9Vy3pDKKMA,1073
58
- fprime_gds/common/fpy/parser.py,sha256=g-l67oZN_vB1JAdZ5S3u9m8APf6PdJ88GZyz0iX66qo,4418
55
+ fprime_gds/common/fpy/codegen.py,sha256=EmTsqkUqVFHH2xuvxw3nNPSgvGumsetRVTnYl5DeW7I,53045
56
+ fprime_gds/common/fpy/grammar.lark,sha256=ZjL9xYK9v1Ko-_hm99mR2IB-Alqx9amGRHX0a7jehdM,2826
57
+ fprime_gds/common/fpy/main.py,sha256=fdo1TLWNvmmygiqwZlszOTlDHN8cXnSG69grxZ6loXQ,1927
58
+ fprime_gds/common/fpy/model.py,sha256=tLKtkDLk52dLKUVrS-p2Dma1r-aE2eqBgahYwB7oecc,27392
59
+ fprime_gds/common/fpy/parser.py,sha256=zbB_vcWi2VybLYP8s7st5RkzZBnPRdP1ilR6DIum1-M,4346
60
+ fprime_gds/common/fpy/test_helpers.py,sha256=19iACidiZZyeOo8LgwP6ir-X2mPPVNrlTpd34Sia5m8,4109
61
+ fprime_gds/common/fpy/types.py,sha256=IplHyCGXsru0EPALvGdjFNXCQRmr437K_dR0_zhYgSo,16916
59
62
  fprime_gds/common/fpy/bytecode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- fprime_gds/common/fpy/bytecode/directives.py,sha256=tBpPQ2ZnQXA7juB85HhacDdil1vEHUKW8m_AsMf1KdQ,13360
63
+ fprime_gds/common/fpy/bytecode/assembler.py,sha256=8UH7UAWbHP_cEQT4QVB7zV1SGoR5R_euvwWhiHzfwrw,1501
64
+ fprime_gds/common/fpy/bytecode/directives.py,sha256=JBgznGs8rMlBFm_YwXmZiKGAoYnQCjuDse_zbQLVZsA,23225
61
65
  fprime_gds/common/gds_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
66
  fprime_gds/common/gds_cli/base_commands.py,sha256=js4SAXPfDYy_ewIL27066XylExxh9S1A-e4NNChWf9s,9430
63
67
  fprime_gds/common/gds_cli/channels.py,sha256=BvADGBrsJ2G9zcGpSwJlxLRFiY1bUxtQSTfEOlA3UME,2134
@@ -122,20 +126,20 @@ fprime_gds/common/utils/event_severity.py,sha256=7qPXHrDaM_REJ7sKBUEJTZIE0D4qVnV
122
126
  fprime_gds/common/utils/string_util.py,sha256=u_2iahRG3ROu3lAAt_KVcK226gEByElXqrA8mH8eDpI,3584
123
127
  fprime_gds/executables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
128
  fprime_gds/executables/apps.py,sha256=_OLWxby1XvYmmDcecsOAKu34XGf952_ya5uRWf_8Y3I,15127
125
- fprime_gds/executables/cli.py,sha256=OqcBOpvnj8f8wZjntfbr-pNzCEF3P_-eA58kBqK7iDg,52216
129
+ fprime_gds/executables/cli.py,sha256=OgP0RYrqasTzFXP8r3L1UAlGq0wKGVLb5_Vr6nxFpGc,52643
126
130
  fprime_gds/executables/comm.py,sha256=08rO0o0MJgTRngB7Ygu2IL_gEAWKF7WFvFyro1CqReE,5214
127
131
  fprime_gds/executables/data_product_writer.py,sha256=e1Rp2LT_Cpg08f0Ki8GhirC7Wn6LtYiAef7KLAkZHUY,37773
128
132
  fprime_gds/executables/dictionary_merge.py,sha256=3Zy8LcbEdBwmNX2GLN_Nr1DfbLyWYHg-y4jdjTVCXgY,7966
129
133
  fprime_gds/executables/fprime_cli.py,sha256=9_eNU7AzUOMhz4FLPkD_byA9C13c509wGPZN-kdw9Ok,12429
130
- fprime_gds/executables/run_deployment.py,sha256=4K3isTF7C8FojFvzxLC8vaj1GZpKOuPZQ3CtIYdyhRE,7638
134
+ fprime_gds/executables/run_deployment.py,sha256=XM_--4Pj37cpe7fjv1Jr87Ep1YC-qZpgUXk7v_fZGMY,7744
131
135
  fprime_gds/executables/tcpserver.py,sha256=KspVpu5YIuiWKOk5E6UDMKvqXYrRB1j9aX8CkMxysfw,17555
132
136
  fprime_gds/executables/utils.py,sha256=SbzXRe1p41qMPdifvPap5_4v0T42gZZ_Rs_OYfITd80,7626
133
137
  fprime_gds/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
- fprime_gds/flask/app.py,sha256=2LTjx5MFP18ypYz_l80i4ijAWuxv7IVtmzCgCk0fBy8,6852
138
+ fprime_gds/flask/app.py,sha256=vOcZvLekuMsWhc8hrZf60ni8nPPAHlFwgK1yF1nMC58,7255
135
139
  fprime_gds/flask/channels.py,sha256=sOeL-UmWPh2hqYvqj81STpABLlPcjdPgkRwjd3Qx77k,735
136
140
  fprime_gds/flask/commands.py,sha256=62R3b0mnjc3_XpULpqJyUSvAcfOjAyZNifQ3wqHKO7s,3658
137
141
  fprime_gds/flask/components.py,sha256=a-eG8XJfSrqR8MIzIc9StwbNwxcBqkxYMEYq46S2Bmk,4176
138
- fprime_gds/flask/default_settings.py,sha256=SkNfd5R4tv59rcmPiHERIZNIEmzXP3KJcJZektgtZCA,603
142
+ fprime_gds/flask/default_settings.py,sha256=uDYQQUTRWbkeodln9rsS8ccSW_bgQ3u-cS3QkPzK4MQ,696
139
143
  fprime_gds/flask/errors.py,sha256=yN3jDsJd30jL6aOIF-SqbVoesvReHqPvXlIt8qWB87M,2133
140
144
  fprime_gds/flask/events.py,sha256=BO9OUUwNDnRuOz4ZC6nFHMR7sJJ9P2P0xUxDluGd218,732
141
145
  fprime_gds/flask/json.py,sha256=PBljX3afJzyE_04DvZS4OEFOQW_ldVmfWiTYfxPZiGo,5888
@@ -146,7 +150,7 @@ fprime_gds/flask/sequence.py,sha256=1FfOFIUdWFX1qXjONAWm1vklPbyhkBYkuPow8RBt-yk,
146
150
  fprime_gds/flask/stats.py,sha256=i62envu9V6WpNsRD_mlhwzB_2dGUOCTf1XpyC5HApzg,1177
147
151
  fprime_gds/flask/updown.py,sha256=7za_zgOwQKHgm-3W1OBZqBgDLCmj7c0ziFEduhEuqdU,6176
148
152
  fprime_gds/flask/static/favicon.ico,sha256=pwqBRx64V_wyrrXgXsBXPWWUmwqanuWAfesMpFfV1E4,15406
149
- fprime_gds/flask/static/index.html,sha256=7SPp-p3ywyBtElPWEAAjrBuh-PNr8LUtd1JXw6emcVU,26087
153
+ fprime_gds/flask/static/index.html,sha256=mzdnT0aqLntWBkmvJywiOd_spSviSdB4BoExPyJUEQU,26331
150
154
  fprime_gds/flask/static/.idea/.gitignore,sha256=NHNmSnP0xfbzJRKbluJMetE8N_J3-dXL-arvLWCrYTk,38
151
155
  fprime_gds/flask/static/.idea/misc.xml,sha256=jiBUIoLNoO3PVZNHFbeuPqK7i2ghgKEpmbgvBHXqizY,174
152
156
  fprime_gds/flask/static/.idea/modules.xml,sha256=iH0knC0oHsbwsrC7lgoIqoHQUYPiTqHLiAkihGsSoAE,264
@@ -197,7 +201,7 @@ fprime_gds/flask/static/css/fpstyle.css,sha256=9JvcrT8VnLONCrEXY-QNdNPXKAH9U7WUr
197
201
  fprime_gds/flask/static/img/error.svg,sha256=dJOAFEQ_DlLvJg-fBuBGDCBua8rbvSzmY3lqCuw3yc4,1953
198
202
  fprime_gds/flask/static/img/logo.svg,sha256=czqCyVnhqFEw7qsKDMm63w959Pa77nYqY7GyoHVGcZ4,12470
199
203
  fprime_gds/flask/static/img/success.svg,sha256=wCfYG4cPfSCcsZ76JI4SwAJ-y62rahx9rJXyB-2qDIY,1757
200
- fprime_gds/flask/static/js/config.js,sha256=3CNrVmUtUGeiomAuoAE22w34r7wA-X0OtXN3JtLZYJ8,1066
204
+ fprime_gds/flask/static/js/config.js,sha256=QS8riL5Q6LPR6hoCPPS5nRNaoFVJxI2CfOucKlcbsFo,1551
201
205
  fprime_gds/flask/static/js/datastore.js,sha256=AAJKRQbcvQuS-4OScad5zBfYjHljDrjsL5RnTcXx39A,15508
202
206
  fprime_gds/flask/static/js/gds.js,sha256=OeDJrNmNA8hUPi8QIHP-s33MW_IYT3QIccxzL75MsjA,1297
203
207
  fprime_gds/flask/static/js/json.js,sha256=kfwzTqoyLu_Feqcp9WEhDWpZ3lziwHy9LGkOg8PCo6s,12429
@@ -206,13 +210,13 @@ fprime_gds/flask/static/js/performance.js,sha256=fGBbK5anf5UB9iAr6rO4u9sCkrQGlOH
206
210
  fprime_gds/flask/static/js/settings.js,sha256=Cfnn1ybZUOmsp48t_b23TDaHBRctvpD_h2ivBVKz6HM,1101
207
211
  fprime_gds/flask/static/js/uploader.js,sha256=HdFUGwJ-SN_OEMXiXXJw0YblC0j_QiOA1y9yVWyS4SI,2730
208
212
  fprime_gds/flask/static/js/validate.js,sha256=yVY_MlpJeRfBRy3-k_JflWqyk-P_YJU3ot-iJtRJFPM,13046
209
- fprime_gds/flask/static/js/vue-support/channel.js,sha256=d0reMOk2yyyUxV8cvN8VNHkdUI_YHVsVEjj_ZWqyCcY,4577
213
+ fprime_gds/flask/static/js/vue-support/channel.js,sha256=a1ll-y5qqPiWCgSB2LJWmC4718ZFmsr542YPQQKh1rA,5257
210
214
  fprime_gds/flask/static/js/vue-support/dashboard-box.js,sha256=yX6eH9BQRKRLHk2eBDv1AjVjpLbl8PP8t-SXQPmi0sU,739
211
215
  fprime_gds/flask/static/js/vue-support/dashboard-row.js,sha256=vCkLANr_8GAkPLV4K0WAXWJohevOTods0VbjMrA5zC0,297
212
216
  fprime_gds/flask/static/js/vue-support/dashboard.js,sha256=WOdmZoivmtg9KbLe8usPjlXTzEO_uwJQIY9iIgMhW2g,3022
213
217
  fprime_gds/flask/static/js/vue-support/downlink.js,sha256=zY7S4w5ylQDQJ9-ihN-_1CUOxacGCuTyVO7-jeVefQg,1589
214
- fprime_gds/flask/static/js/vue-support/event.js,sha256=p9Kh8Po7pN4cMMfP4lhvx8fnoohRTr07p4cPvWaSheM,5292
215
- fprime_gds/flask/static/js/vue-support/fp-row.js,sha256=BwfWOxmTD7WPKKSBPlwLq3eARYQUg3pan1PPA9VzKy0,3760
218
+ fprime_gds/flask/static/js/vue-support/event.js,sha256=9hrFAtDGBHFRXAmvhhDAN1iuJcn_TyTnn6ymzn8L3Cw,5333
219
+ fprime_gds/flask/static/js/vue-support/fp-row.js,sha256=ujy7T6jl1vnfCx7kf_DLrtLqA79y9SUr4rdVdKYqHUg,4475
216
220
  fprime_gds/flask/static/js/vue-support/fptable.js,sha256=ETGE4LlBeLXQnOv6-NNtZtk3JadDOPus6ad3tBEooUo,18874
217
221
  fprime_gds/flask/static/js/vue-support/log.js,sha256=40dDjFgmEugTFZFsy0Y1xqNJpnuEfUiZ_-M3HGTPMCc,2735
218
222
  fprime_gds/flask/static/js/vue-support/tabetc.js,sha256=_JfTOezwXrxZ-RaSs4jhLdv5e3hTbjxYTnbGwv6NTAc,3865
@@ -244,10 +248,10 @@ fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2,sha256=mDS4KtJuK
244
248
  fprime_gds/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
249
  fprime_gds/plugin/definitions.py,sha256=QlxW1gNvoiqGMslSJjh3dTFZuv0igFHawN__3XJ0Wns,5355
246
250
  fprime_gds/plugin/system.py,sha256=M9xb-8jBhCUUx3X1z2uAP8Wx_v6NkL8JeaFgGcMnQqY,13432
247
- fprime_gds-4.0.2a3.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
248
- fprime_gds-4.0.2a3.dist-info/licenses/NOTICE.txt,sha256=vXjA_xRcQhd83Vfk5D_vXg5kOjnnXvLuMi5vFKDEVmg,1612
249
- fprime_gds-4.0.2a3.dist-info/METADATA,sha256=G-I0rASiP20RANqp57TUZN8009cPcrzZ2Lydwxx295w,24576
250
- fprime_gds-4.0.2a3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
251
- fprime_gds-4.0.2a3.dist-info/entry_points.txt,sha256=16r0xeF-Qn-ducW_QvHiyrFnNjnLK-OOaTbqQIQpd0o,494
252
- fprime_gds-4.0.2a3.dist-info/top_level.txt,sha256=6vzFLIX6ANfavKaXFHDMSLFtS94a6FaAsIWhjgYuSNE,27
253
- fprime_gds-4.0.2a3.dist-info/RECORD,,
251
+ fprime_gds-4.0.2a4.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
252
+ fprime_gds-4.0.2a4.dist-info/licenses/NOTICE.txt,sha256=vXjA_xRcQhd83Vfk5D_vXg5kOjnnXvLuMi5vFKDEVmg,1612
253
+ fprime_gds-4.0.2a4.dist-info/METADATA,sha256=jJXlRA8gO9KhN8WGHJ6J_vx59671yO7OHe_XNNtYLAM,24576
254
+ fprime_gds-4.0.2a4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
255
+ fprime_gds-4.0.2a4.dist-info/entry_points.txt,sha256=zESAeUBvVYSuzzinWIqNWaewa8nYDDImEX4jBzdyThs,559
256
+ fprime_gds-4.0.2a4.dist-info/top_level.txt,sha256=6vzFLIX6ANfavKaXFHDMSLFtS94a6FaAsIWhjgYuSNE,27
257
+ fprime_gds-4.0.2a4.dist-info/RECORD,,
@@ -1,7 +1,8 @@
1
1
  [console_scripts]
2
2
  fprime-cli = fprime_gds.executables.fprime_cli:main
3
3
  fprime-dp-write = fprime_gds.executables.data_product_writer:main
4
- fprime-fpyc = fprime_gds.common.fpy.main:main
4
+ fprime-fpy-model = fprime_gds.common.fpy.main:model_main
5
+ fprime-fpyc = fprime_gds.common.fpy.main:compile_main
5
6
  fprime-gds = fprime_gds.executables.run_deployment:main
6
7
  fprime-merge-dictionary = fprime_gds.executables.dictionary_merge:main
7
8
  fprime-prm-write = fprime_gds.common.tools.params:main