tangram-core 0.2.0__cp313-cp313-win_amd64.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 (171) hide show
  1. tangram_core/App.vue +335 -0
  2. tangram_core/__init__.py +5 -0
  3. tangram_core/__main__.py +141 -0
  4. tangram_core/_core.cp313-win_amd64.pyd +0 -0
  5. tangram_core/_core.pyi +38 -0
  6. tangram_core/api.ts +456 -0
  7. tangram_core/backend.py +335 -0
  8. tangram_core/colour.ts +71 -0
  9. tangram_core/config.py +122 -0
  10. tangram_core/dist-frontend/aggregation-layers.js +521 -0
  11. tangram_core/dist-frontend/aggregation-layers.js.map +1 -0
  12. tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js +2 -0
  13. tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js.map +1 -0
  14. tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js +11 -0
  15. tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js.map +1 -0
  16. tangram_core/dist-frontend/assets/assert-hrfsarFU.js +3 -0
  17. tangram_core/dist-frontend/assets/assert-hrfsarFU.js.map +1 -0
  18. tangram_core/dist-frontend/assets/b612-latin-400-italic-DePNXA0a.woff +0 -0
  19. tangram_core/dist-frontend/assets/b612-latin-400-italic-a-4GLPtl.woff2 +0 -0
  20. tangram_core/dist-frontend/assets/b612-latin-400-normal-CC98FVm_.woff2 +0 -0
  21. tangram_core/dist-frontend/assets/b612-latin-400-normal-JbZ7xwUX.woff +0 -0
  22. tangram_core/dist-frontend/assets/b612-latin-700-normal-B_Snq1wd.woff +0 -0
  23. tangram_core/dist-frontend/assets/b612-latin-700-normal-BinQrnoB.woff2 +0 -0
  24. tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js +26 -0
  25. tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js.map +1 -0
  26. tangram_core/dist-frontend/assets/color-CUNNsFV-.js +17 -0
  27. tangram_core/dist-frontend/assets/color-CUNNsFV-.js.map +1 -0
  28. tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js +2 -0
  29. tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js.map +1 -0
  30. tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js +2 -0
  31. tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js.map +1 -0
  32. tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js +2 -0
  33. tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js.map +1 -0
  34. tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js +1010 -0
  35. tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js.map +1 -0
  36. tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js +94 -0
  37. tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js.map +1 -0
  38. tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js +2 -0
  39. tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js.map +1 -0
  40. tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js +2 -0
  41. tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js.map +1 -0
  42. tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-DTZQ6lD6.woff2 +0 -0
  43. tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-HYADljCo.woff +0 -0
  44. tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-ByjKuJjN.woff2 +0 -0
  45. tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-DzgUY3Rl.woff +0 -0
  46. tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-BaHVOdFB.woff2 +0 -0
  47. tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-yvPjCxxx.woff +0 -0
  48. tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-D0Kpgs_9.woff2 +0 -0
  49. tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-Dlt-daqV.woff +0 -0
  50. tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-ByiM2lek.woff +0 -0
  51. tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-DfC_iMic.woff2 +0 -0
  52. tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DLCFFAUf.woff +0 -0
  53. tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DuasYmn8.woff2 +0 -0
  54. tangram_core/dist-frontend/assets/index-UPPakSLR.css +1 -0
  55. tangram_core/dist-frontend/assets/index-r8T0kY2p.js +821 -0
  56. tangram_core/dist-frontend/assets/index-r8T0kY2p.js.map +1 -0
  57. tangram_core/dist-frontend/assets/layer-DO63TrsS.js +555 -0
  58. tangram_core/dist-frontend/assets/layer-DO63TrsS.js.map +1 -0
  59. tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js +2 -0
  60. tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js.map +1 -0
  61. tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js +1123 -0
  62. tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js.map +1 -0
  63. tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js +2 -0
  64. tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js.map +1 -0
  65. tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js +2 -0
  66. tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js.map +1 -0
  67. tangram_core/dist-frontend/assets/project-CrvReKGW.js +760 -0
  68. tangram_core/dist-frontend/assets/project-CrvReKGW.js.map +1 -0
  69. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-4qS3_zkX.woff2 +0 -0
  70. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-CDK-EZBY.woff +0 -0
  71. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-Bgns473E.woff +0 -0
  72. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-_T2aQlWs.woff2 +0 -0
  73. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-CvEVpWxD.woff +0 -0
  74. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-s4PklZE0.woff2 +0 -0
  75. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-9RN-Z7cI.woff2 +0 -0
  76. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-BGMkBBYx.woff +0 -0
  77. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-C7erd-g8.woff +0 -0
  78. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-DR5R5TWx.woff2 +0 -0
  79. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-DGo1Ayjq.woff2 +0 -0
  80. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-WtM1l1qc.woff +0 -0
  81. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-C8FNIdXm.woff2 +0 -0
  82. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-TLDmfi3Q.woff +0 -0
  83. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CTXjXnze.woff2 +0 -0
  84. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CWPRiRXS.woff +0 -0
  85. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-CR6qj4Z4.woff2 +0 -0
  86. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-DHRaIs10.woff +0 -0
  87. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-D5vBSIyg.woff2 +0 -0
  88. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-FabMgVmk.woff +0 -0
  89. tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-BIN62cw9.woff +0 -0
  90. tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-Hsn-wDIp.woff2 +0 -0
  91. tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-89Up2Xly.woff +0 -0
  92. tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-DWMOA2VK.woff2 +0 -0
  93. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-D_BR-3LG.woff2 +0 -0
  94. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-om57GXsO.woff +0 -0
  95. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-BICmKrXV.woff2 +0 -0
  96. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-D2e7XwB1.woff +0 -0
  97. tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-3p2daRJW.woff2 +0 -0
  98. tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-Dc9bsamC.woff +0 -0
  99. tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-BOl6B_hI.woff +0 -0
  100. tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-DRbp0YnP.woff2 +0 -0
  101. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-BXrkWnoY.woff +0 -0
  102. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-Bhem1d5z.woff2 +0 -0
  103. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-DT8nEsYA.woff +0 -0
  104. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-OHaX69iP.woff2 +0 -0
  105. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-CcSTXKtO.woff2 +0 -0
  106. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-JgPl2bDS.woff +0 -0
  107. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-B004qtqu.woff2 +0 -0
  108. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-O6H_RRvN.woff +0 -0
  109. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-BwUYFJ2t.woff2 +0 -0
  110. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-DV8QogUk.woff +0 -0
  111. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-0o1laQ-g.woff2 +0 -0
  112. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-CPsdS8_S.woff +0 -0
  113. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-G9shSJ2z.woff +0 -0
  114. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-TFWhjk13.woff2 +0 -0
  115. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-BtNeb9D6.woff +0 -0
  116. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-D35V1G0s.woff2 +0 -0
  117. tangram_core/dist-frontend/assets/shader-BJmsOfPx.js +843 -0
  118. tangram_core/dist-frontend/assets/shader-BJmsOfPx.js.map +1 -0
  119. tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js +392 -0
  120. tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js.map +1 -0
  121. tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js +2 -0
  122. tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js.map +1 -0
  123. tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js +7 -0
  124. tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js.map +1 -0
  125. tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js +3 -0
  126. tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js.map +1 -0
  127. tangram_core/dist-frontend/assets/widget-BbOeHGj0.js +2 -0
  128. tangram_core/dist-frontend/assets/widget-BbOeHGj0.js.map +1 -0
  129. tangram_core/dist-frontend/core.js +60 -0
  130. tangram_core/dist-frontend/core.js.map +1 -0
  131. tangram_core/dist-frontend/extensions.js +609 -0
  132. tangram_core/dist-frontend/extensions.js.map +1 -0
  133. tangram_core/dist-frontend/favicon.ico +0 -0
  134. tangram_core/dist-frontend/favicon.png +0 -0
  135. tangram_core/dist-frontend/font-awesome.min.css +4 -0
  136. tangram_core/dist-frontend/fonts/FontAwesome.otf +0 -0
  137. tangram_core/dist-frontend/fonts/fontawesome-webfont.eot +0 -0
  138. tangram_core/dist-frontend/fonts/fontawesome-webfont.svg +2671 -0
  139. tangram_core/dist-frontend/fonts/fontawesome-webfont.ttf +0 -0
  140. tangram_core/dist-frontend/fonts/fontawesome-webfont.woff +0 -0
  141. tangram_core/dist-frontend/fonts/fontawesome-webfont.woff2 +0 -0
  142. tangram_core/dist-frontend/geo-layers.js +115 -0
  143. tangram_core/dist-frontend/geo-layers.js.map +1 -0
  144. tangram_core/dist-frontend/index.html +38 -0
  145. tangram_core/dist-frontend/json.js +3 -0
  146. tangram_core/dist-frontend/json.js.map +1 -0
  147. tangram_core/dist-frontend/layers.js +268 -0
  148. tangram_core/dist-frontend/layers.js.map +1 -0
  149. tangram_core/dist-frontend/lit-html.js +7 -0
  150. tangram_core/dist-frontend/lit-html.js.map +1 -0
  151. tangram_core/dist-frontend/mapbox.js +2 -0
  152. tangram_core/dist-frontend/mapbox.js.map +1 -0
  153. tangram_core/dist-frontend/maplibre-gl.js +59 -0
  154. tangram_core/dist-frontend/maplibre-gl.js.map +1 -0
  155. tangram_core/dist-frontend/mesh-layers.js +2 -0
  156. tangram_core/dist-frontend/mesh-layers.js.map +1 -0
  157. tangram_core/dist-frontend/rs1090_wasm.js +813 -0
  158. tangram_core/dist-frontend/rs1090_wasm_bg.wasm +0 -0
  159. tangram_core/dist-frontend/vue.esm-browser.prod.js +13 -0
  160. tangram_core/dist-frontend/widgets.js +3 -0
  161. tangram_core/dist-frontend/widgets.js.map +1 -0
  162. tangram_core/main.ts +16 -0
  163. tangram_core/plugin.py +70 -0
  164. tangram_core/plugin.ts +41 -0
  165. tangram_core/redis.py +89 -0
  166. tangram_core/user.css +114 -0
  167. tangram_core/vite-plugin-tangram.mjs +88 -0
  168. tangram_core-0.2.0.dist-info/METADATA +37 -0
  169. tangram_core-0.2.0.dist-info/RECORD +171 -0
  170. tangram_core-0.2.0.dist-info/WHEEL +4 -0
  171. tangram_core-0.2.0.dist-info/entry_points.txt +2 -0
tangram_core/redis.py ADDED
@@ -0,0 +1,89 @@
1
+ import abc
2
+ import asyncio
3
+ import logging
4
+ from typing import Generic, List, TypeVar
5
+
6
+ from redis.asyncio import Redis
7
+ from redis.asyncio.client import PubSub
8
+ from redis.exceptions import RedisError
9
+
10
+ log = logging.getLogger(__name__)
11
+
12
+ StateT = TypeVar("StateT")
13
+
14
+
15
+ class Subscriber(abc.ABC, Generic[StateT]):
16
+ redis: Redis
17
+ task: asyncio.Task[None]
18
+ pubsub: PubSub
19
+
20
+ def __init__(
21
+ self, name: str, redis_url: str, channels: List[str], initial_state: StateT
22
+ ):
23
+ self.name = name
24
+ self.redis_url: str = redis_url
25
+ self.channels: List[str] = channels
26
+ self.state: StateT = initial_state
27
+ self._running = False
28
+
29
+ async def subscribe(self) -> None:
30
+ if self._running:
31
+ log.warning("%s already running", self.name)
32
+ return
33
+
34
+ try:
35
+ self.redis = await Redis.from_url(self.redis_url)
36
+ self.pubsub = self.redis.pubsub()
37
+ await self.pubsub.psubscribe(*self.channels)
38
+ except RedisError as e:
39
+ log.error("%s failed to connect to Redis: %s", self.name, e)
40
+ raise
41
+
42
+ async def listen() -> None:
43
+ try:
44
+ log.info("%s listening ...", self.name)
45
+ async for message in self.pubsub.listen():
46
+ log.debug("message: %s", message)
47
+ if message["type"] == "pmessage":
48
+ await self.message_handler(
49
+ message["channel"].decode("utf-8"),
50
+ message["data"].decode("utf-8"),
51
+ message["pattern"].decode("utf-8"),
52
+ self.state,
53
+ )
54
+ except asyncio.CancelledError:
55
+ log.warning("%s cancelled", self.name)
56
+
57
+ self._running = True
58
+
59
+ self.task = asyncio.create_task(listen())
60
+ log.info("%s task created, running ...", self.name)
61
+
62
+ async def cleanup(self) -> None:
63
+ if not self._running:
64
+ return
65
+
66
+ if self.task:
67
+ log.debug("%s canceling task ...", self.name)
68
+ self.task.cancel()
69
+ try:
70
+ log.debug("%s await task to finish ...", self.name)
71
+ await self.task
72
+ log.debug("%s task canceled", self.name)
73
+ except asyncio.CancelledError as exc:
74
+ log.error("%s task canceling error: %s", self.name, exc)
75
+ if self.pubsub:
76
+ await self.pubsub.unsubscribe()
77
+ if self.redis:
78
+ await self.redis.close()
79
+ self._running = False
80
+
81
+ def is_active(self) -> bool:
82
+ """Return True if the subscriber is actively listening."""
83
+ return self._running and self.task is not None and not self.task.done()
84
+
85
+ @abc.abstractmethod
86
+ async def message_handler(
87
+ self, event: str, payload: str, pattern: str, state: StateT
88
+ ) -> None:
89
+ pass
tangram_core/user.css ADDED
@@ -0,0 +1,114 @@
1
+ html,
2
+ body,
3
+ #container-map {
4
+ height: 100%;
5
+ overflow: hidden;
6
+ width: 100%;
7
+ }
8
+
9
+ #map {
10
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
11
+ height: 100%;
12
+ width: auto;
13
+ }
14
+
15
+
16
+ #chart {
17
+ border: none;
18
+ }
19
+
20
+ div.form {
21
+ float: right;
22
+ clear: right;
23
+ width: 300px;
24
+ border: 1px solid #bab0ac;
25
+ padding: 10px;
26
+ }
27
+
28
+ body {
29
+ font-family: "B612", sans-serif;
30
+ }
31
+
32
+ span.monospace {
33
+ font-family: "B612", sans-serif;
34
+ font-size: 85%;
35
+ }
36
+
37
+ .smaller td {
38
+ font-size: 95%;
39
+ }
40
+
41
+ table a:not(.btn),
42
+ .table a:not(.btn) {
43
+ text-decoration: none;
44
+ }
45
+
46
+ a.flag {
47
+ position: relative;
48
+ cursor: pointer;
49
+ color: #2c3e50;
50
+ }
51
+
52
+ a.flag:hover::after {
53
+ content: attr(data-tooltip);
54
+ position: absolute;
55
+ bottom: 1.7em;
56
+ left: 0.5em;
57
+ border: 1px #18bc9c solid;
58
+ border-radius: 5px;
59
+ padding: 4px;
60
+ color: whitesmoke;
61
+ background-color: #18bc9c;
62
+ text-align: center;
63
+ font-size: 90%;
64
+ width: max-content;
65
+ z-index: 1;
66
+ }
67
+
68
+ .w20pc {
69
+ width: 20%;
70
+ }
71
+
72
+ .center {
73
+ margin-top: 20px;
74
+ margin-left: auto;
75
+ margin-right: auto;
76
+ /* max-width: 1000px; */
77
+ }
78
+
79
+ .copyright_label {
80
+ display: inline;
81
+ padding: 0.2em 0.6em 0.3em;
82
+ font-size: 75%;
83
+ font-weight: 400;
84
+ line-height: 1;
85
+ color: #fff;
86
+ text-align: center;
87
+ white-space: nowrap;
88
+ vertical-align: baseline;
89
+ border-radius: 0.25em;
90
+ position: absolute;
91
+ bottom: 0;
92
+ z-index: 1;
93
+ }
94
+
95
+ .turb_selected {
96
+ stroke: red;
97
+ stroke-width: 15px;
98
+ z-index: -1;
99
+ }
100
+
101
+ .form-popup {
102
+ display: none;
103
+ position: fixed;
104
+ bottom: 0;
105
+ right: 15px;
106
+ border: 3px solid #f1f1f1;
107
+ z-index: 9;
108
+ }
109
+
110
+ .form-container {
111
+ max-width: 300px;
112
+ padding: 10px;
113
+ background-color: white;
114
+ }
@@ -0,0 +1,88 @@
1
+ // not using typescript because of an annoying vite bug:
2
+ // - https://github.com/vitejs/vite/issues/5370
3
+ // - https://github.com/vitejs/vite/issues/16040
4
+ // essentially, vite's on-the-fly transpilation is scoped only to the config
5
+ // file itself. therefore vite plugins in a monorepo cannot be typescript.
6
+ import vue from "@vitejs/plugin-vue";
7
+ import path from "path";
8
+ import fs from "fs/promises";
9
+
10
+ const DECKGL_PACKAGES = [
11
+ "@deck.gl/core",
12
+ "@deck.gl/layers",
13
+ "@deck.gl/aggregation-layers",
14
+ "@deck.gl/geo-layers",
15
+ "@deck.gl/mesh-layers",
16
+ "@deck.gl/json",
17
+ "@deck.gl/mapbox",
18
+ "@deck.gl/widgets",
19
+ "@deck.gl/extensions"
20
+ ];
21
+
22
+ /**
23
+ * @returns {import('vite').Plugin[]}
24
+ */
25
+ export function tangramPlugin() {
26
+ const projectRoot = process.cwd();
27
+ /** @type {{ name: string; main: string; }} */
28
+ let pkg;
29
+ let entryFileName;
30
+
31
+ /** @type {import('vite').Plugin} */
32
+ const configInjector = {
33
+ name: "tangram-plugin-config-injector",
34
+ async config() {
35
+ const pkgPath = path.resolve(projectRoot, "package.json");
36
+ pkg = JSON.parse(await fs.readFile(pkgPath, "utf-8"));
37
+
38
+ if (!pkg.main) {
39
+ throw new Error(
40
+ `\`main\` field must be specified in ${pkg.name}'s package.json`
41
+ );
42
+ }
43
+ entryFileName = path.parse(pkg.main).name;
44
+
45
+ /** @type {import('vite').UserConfig} */
46
+ const tangramBuildConfig = {
47
+ build: {
48
+ sourcemap: true,
49
+ lib: {
50
+ entry: pkg.main,
51
+ fileName: entryFileName,
52
+ formats: ["es"]
53
+ },
54
+ rollupOptions: {
55
+ external: ["vue", "maplibre", ...DECKGL_PACKAGES, "lit-html", "rs1090-wasm"]
56
+ },
57
+ outDir: "dist-frontend",
58
+ minify: true
59
+ }
60
+ };
61
+ return tangramBuildConfig;
62
+ }
63
+ };
64
+
65
+ /** @type {import('vite').Plugin} */
66
+ const manifestGenerator = {
67
+ name: "tangram-manifest-generator",
68
+ apply: "build",
69
+ async writeBundle(outputOptions, bundle) {
70
+ const outDir = outputOptions.dir;
71
+ const cssAsset = Object.values(bundle).find(
72
+ asset => asset.type === "asset" && asset.fileName.endsWith(".css")
73
+ );
74
+
75
+ const manifest = {
76
+ name: pkg.name,
77
+ main: `${entryFileName}.js`,
78
+ ...(cssAsset && { style: cssAsset.fileName })
79
+ };
80
+ await fs.writeFile(
81
+ path.resolve(outDir, "plugin.json"),
82
+ JSON.stringify(manifest, null, 2)
83
+ );
84
+ }
85
+ };
86
+
87
+ return [vue(), configInjector, manifestGenerator];
88
+ }
@@ -0,0 +1,37 @@
1
+ Metadata-Version: 2.4
2
+ Name: tangram_core
3
+ Version: 0.2.0
4
+ Requires-Dist: fastapi>=0.115.4
5
+ Requires-Dist: uvicorn>=0.32.0
6
+ Requires-Dist: redis>=5.2.0
7
+ Requires-Dist: httpx[http2]>=0.27.2
8
+ Requires-Dist: pydantic>=2.6.1
9
+ Requires-Dist: typer
10
+ Requires-Dist: tomli ; python_full_version < '3.11'
11
+ Requires-Dist: platformdirs>=4.5.0
12
+ Summary: A framework for real-time analysis of ADS-B and Mode S surveillance data
13
+ Home-Page: https://mode-s.org/tangram/
14
+ Author-email: Xavier Olive <git@xoolive.org>, Junzi Sun <git@junzis.com>, Xiaogang Huang <maple.hl@gmail.com>, Michel Khalaf <khalafmichel98@gmail.com>, Abraham Cheung <abraham@ylcheung.com>
15
+ License-Expression: AGPL-3.0
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
18
+
19
+ # tangram_core
20
+
21
+ `tangram_core` is the core of the tangram framework, designed to aggregate and process ADS-B and Mode S surveillance data for real-time analysis. It provides a flexible plugin architecture that allows users to implement custom components for their specific needs.
22
+
23
+ Documentation is available at <https://mode-s.org/tangram/>.
24
+ Repository: <https://github.com/open-aviation/tangram>
25
+
26
+ ## Components
27
+
28
+ - Backend: A Python backend built with FastAPI. The backend also exposes a WebSocket interface for real-time data visualization and analysis (written in Rust)
29
+
30
+ - Frontend: A JavaScript frontend built with TypeScript and Vue.js. The frontend connects to the backend via WebSocket to display real-time data and visualizations.
31
+
32
+ The full package is published as a Python package named [`tangram_core`](https://pypi.org/project/tangram_core/): it contains a compiled Rust library together with the frontend assets.
33
+
34
+ - The Rust library is also available separately as a crate: [`tangram_core`](https://crates.io/crates/tangram_core), and can be used to build custom plugins with Rust.
35
+
36
+ - The frontend library is also available separately as an npm package: [`@open-aviation/tangram-core`](https://www.npmjs.com/package/@open-aviation/tangram-core), and can be used to build custom frontend components.
37
+
@@ -0,0 +1,171 @@
1
+ tangram_core-0.2.0.dist-info/METADATA,sha256=97ApcelH_UoDK96Xzl5ITt8nILz_02Lvlx28-gHN_OU,2067
2
+ tangram_core-0.2.0.dist-info/WHEEL,sha256=lraoTyulw0EpTbLV2AtR5kXAJRP7w3nUqalBgpOHvcQ,97
3
+ tangram_core-0.2.0.dist-info/entry_points.txt,sha256=kjrk9xS6gEsupFnVCXDc_HkeSzXebpF0IYfduL0m0Nw,52
4
+ tangram_core/App.vue,sha256=Tth7UF6MBZqRcwyQ35v-ZjAg4mGzJSnRimqCb9l72Fg,7774
5
+ tangram_core/__init__.py,sha256=Hoa7QrfsOto2C6_cb897EY76UvRtVwFVO1onMVaP8v0,178
6
+ tangram_core/__main__.py,sha256=cwaTRAus7ZAtM7UnYurk3g4gaDMvnLR18t-47qyeRuE,4152
7
+ tangram_core/_core.cp313-win_amd64.pyd,sha256=ia7pMJrzYzXHsNDmySpC-SAG59vG1OPFBKVlz8WVTo8,5096960
8
+ tangram_core/_core.pyi,sha256=Evl5dFzrZSpO6uP5tHNILbTtF3j1UB_vrs_MOQ9QjMk,1295
9
+ tangram_core/api.ts,sha256=RsNqxqb_Br-hkcIVEEchUiT-BqM_WQPskDXsP6nm_j0,12292
10
+ tangram_core/backend.py,sha256=3jeBv0ERTLM9pL4iM0rmBS-LlxDu-PYJmk1ydq-goVM,11067
11
+ tangram_core/colour.ts,sha256=8gwQXV1zdLtcUziKFt2r6fxsjRUH6h1lZqa30cJwQNY,2067
12
+ tangram_core/config.py,sha256=Wu9Q6zqzDokoQIinz27wUVuKHhCyBHiobP8P25o3338,3031
13
+ tangram_core/dist-frontend/aggregation-layers.js,sha256=KkTb2_jbcY0FftoCRrk4eCs5CbAAia1VI6mZhEy_Aus,75891
14
+ tangram_core/dist-frontend/aggregation-layers.js.map,sha256=Iza4QNzbczLG7i0MCplPgAMKTzdqZACvHnxnk1ehUSw,286410
15
+ tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js,sha256=hN5bFySAj2o5mjPV-niHug91K7tz-7JswQD77BEav2M,170
16
+ tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js.map,sha256=lUOYtHcPQJ4teu1xMANm97SNK2KD30CN-oCub0OrDOw,109
17
+ tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js,sha256=bdHO66hsxCUCGV0Jv_RZnb-KHm5yPyNbwvcAf2lsX2U,11800
18
+ tangram_core/dist-frontend/assets/array-utils-flat-wyE8tIYR.js.map,sha256=GXndrKSYVkhnm9-_PGtg2LTP68u8I9DJOrJH76j9UIw,48559
19
+ tangram_core/dist-frontend/assets/assert-hrfsarFU.js,sha256=NcemcyPqmJchC-wBqFkdDLV1YKr2YJjKNmU-WvodGLQ,14186
20
+ tangram_core/dist-frontend/assets/assert-hrfsarFU.js.map,sha256=ZmgIHZgZDL2XrK7dQkwFVLRAYTykFMa9O4tQFpGWz9I,60425
21
+ tangram_core/dist-frontend/assets/b612-latin-400-italic-DePNXA0a.woff,sha256=YozqgjGwKUhcWu-li9Yk_4bxGWQsDE2M0EvHecAXw6w,17604
22
+ tangram_core/dist-frontend/assets/b612-latin-400-italic-a-4GLPtl.woff2,sha256=R-w_V_NcENkoLtuu6ZmwW5621J0lOBRiX4HG6jYitgQ,14592
23
+ tangram_core/dist-frontend/assets/b612-latin-400-normal-CC98FVm_.woff2,sha256=qW5H_q7ED1tTtsjpQeh7p3MteTXUfypVQiNYXzbGeF0,21160
24
+ tangram_core/dist-frontend/assets/b612-latin-400-normal-JbZ7xwUX.woff,sha256=ruxBxd0p7lmjZxDFnVUm74IkvkQbM66ww95tgTIViyQ,15760
25
+ tangram_core/dist-frontend/assets/b612-latin-700-normal-B_Snq1wd.woff,sha256=dMnHJifj_uVTQUPHY9HFLNQ8qkTm3PvYVVZ3R2QdIZI,16200
26
+ tangram_core/dist-frontend/assets/b612-latin-700-normal-BinQrnoB.woff2,sha256=lfOdsXRYiDEQDn4yoDKdT5GVKmwo8v2R8geVHjqMZ4g,13244
27
+ tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js,sha256=_TNGk7nUrNkDDRZ-3fKQslVOLNSC-MTFYtGVKVoOADg,1615
28
+ tangram_core/dist-frontend/assets/clip-extension-DTCP51Ak.js.map,sha256=CQ62Djxe0fI_uarVZcCQnWGDTjoIYFjOtY9mx_6KySc,5563
29
+ tangram_core/dist-frontend/assets/color-CUNNsFV-.js,sha256=Ifbbm5X2Gid3V7-6x0ya4i0J4eYRBOoneXwVw1kR7hw,564
30
+ tangram_core/dist-frontend/assets/color-CUNNsFV-.js.map,sha256=75y2V4TuwzWXKKQjWOInAY0lWJVjscxjtxqDIbIrSi8,1467
31
+ tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js,sha256=7aA-QtMR-HmxERuq_dEQimchvH3-fuQzMSD83f_WJ7k,1973
32
+ tangram_core/dist-frontend/assets/cube-geometry-CzJ_uBWa.js.map,sha256=JOjxhvEJDXYAxXD2hiGzQmmz36PEtrv9WgWN3yjF7m8,8796
33
+ tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js,sha256=A2DXAUJoplbwiG6PonU8utPnMFxiBGu4EUMMSFEuzAY,62054
34
+ tangram_core/dist-frontend/assets/deep-equal-uriyKJca.js.map,sha256=-v2_nqYy79RLwobhY_oBpcwtZlXEC1p4wdtEt0g-C9c,417493
35
+ tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js,sha256=g5DGKOx5ateURNTa9BMlBiXAeZNCkiKXCsa4wdqED6s,1854
36
+ tangram_core/dist-frontend/assets/fly-to-interpolator-DlKiy9_S.js.map,sha256=YErA_Og06slFX-q_BXyFOvUzlpi4duY_C3UJm52ttzo,10518
37
+ tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js,sha256=mFvzCCr_3JtL6qJS6V6XraP2N6x6-fVISopg6AdRR2g,85656
38
+ tangram_core/dist-frontend/assets/geojson-layer-CLhXLxdI.js.map,sha256=GjSh4VdYNiyYK2MUsUD13bLqyZvH0t0L3_HDMsCikKs,257237
39
+ tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js,sha256=WAHuFScyA8dRSk2oKbxPgcc9oxDUQZfl8s6HFamKW9I,96477
40
+ tangram_core/dist-frontend/assets/globe-view-DKhftlA1.js.map,sha256=JS3FFJNOOs_wB78-9k5BKqzxY5k_Oed6bWYqnMOEqfU,389765
41
+ tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js,sha256=yBGpGfcrQBlCRaGKs1wJfdKpWSQg6GX6MY9mPNsolVw,2459
42
+ tangram_core/dist-frontend/assets/globe-viewport-CPES4D4P.js.map,sha256=McprtQsRd6M-XwR5A48mvHY4TCFeVLMGK0clDTFri8Y,12370
43
+ tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js,sha256=U0ncNV20sOqAG3H43s9u87VHK7qDGwb2J9ItS52g3gE,5172
44
+ tangram_core/dist-frontend/assets/image-loader-ClbNCMXW.js.map,sha256=OSOJEwB6LAs-FetvPoGaYSGDs1guupVbmziuooLGA2c,32292
45
+ tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-DTZQ6lD6.woff2,sha256=nVoEgNK9PkOxJL-PNngsj8B5-fiwI8Zyv_Z-nO_8I2s,17664
46
+ tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-HYADljCo.woff,sha256=m_pCxxt0afUFx6Gx7kiODcvIVvMgLlfU-Z-vA__JUEA,16284
47
+ tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-ByjKuJjN.woff2,sha256=qdgixNdJqwcvNxUiQxHaPIMCsHCo30HUdwkMFFo2EBc,17960
48
+ tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-DzgUY3Rl.woff,sha256=H_FNpGjuwazQXmiPDO4dzrCEs53sMNylgtQbw9nHjKg,16624
49
+ tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-BaHVOdFB.woff2,sha256=llD-Pm3DchCAolsq4e3_JIa_14_AOy02qQmZjZQOTis,18232
50
+ tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-yvPjCxxx.woff,sha256=YlLZ5KEJWPOjhYLjY8DcML6A2juHIjr6lUiSavcImNA,17196
51
+ tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-D0Kpgs_9.woff2,sha256=B5JAeVcwtYkEaj7r1_Tx1FsoZAtlz9m5GBlI15agBI8,18452
52
+ tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-Dlt-daqV.woff,sha256=tT6AW7VDCcmiIjehuXC9_11gbYC1qndGyrxV6t1tRA4,17564
53
+ tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-ByiM2lek.woff,sha256=qjJMit4Q7rmUQrUrREI7hta_ayTgS1MoRZJfjHA3Vsg,6092
54
+ tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-DfC_iMic.woff2,sha256=pVQEL2LNbmcj0tgIJtfUBR-BA2AU4CjIXPT1feolz0E,8316
55
+ tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DLCFFAUf.woff,sha256=kHdUifrsCtXl6l_o_1a7AHSh22xvfcbSOAZ_r1kEgiY,6304
56
+ tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DuasYmn8.woff2,sha256=s_mP_O6yafbi19Su_iybH4kiBCD3mfyIb6To2l3wSq4,8476
57
+ tangram_core/dist-frontend/assets/index-UPPakSLR.css,sha256=8VsY6zT93Crq1kaQV3fm2jRzCu2iwprBcdGEKxqRYMA,113246
58
+ tangram_core/dist-frontend/assets/index-r8T0kY2p.js,sha256=-zmKHZEzVQ_ZZCPam2j8jkiPxJVZVC52bJfvZpqvQ6o,1105527
59
+ tangram_core/dist-frontend/assets/index-r8T0kY2p.js.map,sha256=PeTfpMzeL0WGjojvDfIfIGpFLtdI2hCQaZGLQPWN6EI,2490205
60
+ tangram_core/dist-frontend/assets/layer-DO63TrsS.js,sha256=cMXqyvg2aaBLuaXEscmXVTPQhwjcVqG2oAp4PIkCgW4,79665
61
+ tangram_core/dist-frontend/assets/layer-DO63TrsS.js.map,sha256=n18iJ-JFXT3aMpvik4QStNyZw1uf8LU7KFrF3A9d3rU,310877
62
+ tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js,sha256=5fORIlGrdRjn-AEj6JYScbTEQMrQUKCvew3cuADq9uE,847
63
+ tangram_core/dist-frontend/assets/layer-extension-CZ3zsHuN.js.map,sha256=d8uG0uYccrFAP232nh7-kvIF23tq5dd3PHH9aeO-MsQ,3445
64
+ tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js,sha256=0FvvLjEX5QZG7NXRT9DAHBq7UjGB8sf02ZpFggeH3g0,151872
65
+ tangram_core/dist-frontend/assets/mesh-layers-BSECKarm.js.map,sha256=qpQbYwzLfwp8_TvSIRtewUNTFtTRTMjPFJtWHr3lFro,612928
66
+ tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js,sha256=8Km76Qs88JDEhrVdzRqW9bDOkzGOHKnSJ9XsQvKEquM,1298
67
+ tangram_core/dist-frontend/assets/orthographic-viewport-CzZmHDEZ.js.map,sha256=cTjQaePdtHATGgmNhmbLyLJuuZaovJPhtXTp4r-r7BU,5924
68
+ tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js,sha256=OvV3EKiV8fCbqiQ3Gl5j2-jYm4-j3ClW9nf5aMthths,6320
69
+ tangram_core/dist-frontend/assets/pick-layers-pass-xhWsgZtf.js.map,sha256=wbqzKNUOudW5oc95tt_1RMThio3qWYjwpO4tMP8c1Pw,30663
70
+ tangram_core/dist-frontend/assets/project-CrvReKGW.js,sha256=w5HGI5ulKgRKBOM_HsmsFXkn_em8GloOlkyV38z2oEE,35517
71
+ tangram_core/dist-frontend/assets/project-CrvReKGW.js.map,sha256=8BbrlRFKzz5URbkeXDLytz02_C7crva6P5oO9TU7qhw,110315
72
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-4qS3_zkX.woff2,sha256=UYlmNbmu0VAt_sLt9maPfCVcc0HueaIxbqLHJCu18C8,12672
73
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-CDK-EZBY.woff,sha256=CExFKTDTq4KjeCu-rS05CIQ8qxfCXoIqOz9A0EBrErk,10716
74
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-Bgns473E.woff,sha256=8ytmLBpig0bJkFFBUmRWGEzs9xPoKAHBTFduvGg_hg8,9696
75
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-_T2aQlWs.woff2,sha256=xK_IvUsYhklak6J04XmieWJzKoMXa3n3EJYI8tCMuUo,11804
76
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-CvEVpWxD.woff,sha256=3Gvc8biZQZiiyZiyxSwozaK8gZJCR7wdpD5zqvRFkDs,9888
77
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-s4PklZE0.woff2,sha256=73BclUffP33P9_M6M93sYL7bhtprhvHE5FjeIFe946Y,12072
78
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-9RN-Z7cI.woff2,sha256=e57xMQOeBYtiLU2ly7bS54NSbRN8v3Rzj4mEwlwtP78,12144
79
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-BGMkBBYx.woff,sha256=dLfngJ8eMdsqLSH6HwwJJGUtI3blV3qTiODeVCXKRn4,10012
80
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-C7erd-g8.woff,sha256=zrDfuCFH_Nzn4Jsr9OFYejJ4FRabVGDBTSnMFDJuhrA,16996
81
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-DR5R5TWx.woff2,sha256=9fGcZOzZcc9V5tEIn7ZmczGkpanTqkb8GUMRcC4bub4,18528
82
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-DGo1Ayjq.woff2,sha256=w8_DMBZsf6jhl8xphm8_M6gcCJ0ZufIYJXMj7EagPnM,17032
83
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-WtM1l1qc.woff,sha256=pjCPA4gqyqBcNk3jNAdQkHf61xwBrZN7S0bV1YkXJY8,15352
84
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-C8FNIdXm.woff2,sha256=egvG2-_akvk6nydHJKein22ExWhh8rnmHI0vg4yOz7Q,17448
85
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-TLDmfi3Q.woff,sha256=-ikzel_fuoOXeHgR1asfTr-YOonJWZUc4p7gcAcuW-U,15552
86
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CTXjXnze.woff2,sha256=JruuE2DAAM1xJ6045mC3xxZbGN1qu-HCGDDB4GY5RDQ,17496
87
+ tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CWPRiRXS.woff,sha256=KkTuZPWjVpXErwPLkSva2WLsQxRBPQUQzXiCJISLpIM,15560
88
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-CR6qj4Z4.woff2,sha256=04RW-mLVqvTNNzd3dvdUXLljnXiIY6kNhgB2Yii4Yjc,10108
89
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-DHRaIs10.woff,sha256=LKaa9m1KzBRYS65k-t4CHbAnVPeoYuleyy28aq36tKg,8064
90
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-D5vBSIyg.woff2,sha256=NXIjfZ4yJKyJSQTvDRPNl8o4Vn9K6wwIsE4f-Zjw_ls,9560
91
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-FabMgVmk.woff,sha256=A-MCWiS6iM8Pie9sbPW71-kWkfkF8Go_PGinnPl1lXQ,7460
92
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-BIN62cw9.woff,sha256=ahtCRbCQTN9lvEh384UzzqHaYysbm457IOL7NYTtqMk,7516
93
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-Hsn-wDIp.woff2,sha256=3FtxRCPRNbTMNJUW2lNL1Omsau-LvJ7IkXi7iSZ6sbw,9700
94
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-89Up2Xly.woff,sha256=1nVnKObj1dwGZ_X32qE-DNWDpJC1UufsDuaCtuTh3VY,7512
95
+ tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-DWMOA2VK.woff2,sha256=js4qxBtb4gj2Z66v_rew4dn4JxAPNbDJCXFMjc6S-Fw,9672
96
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-D_BR-3LG.woff2,sha256=89xldEcQ4duVRp3RYQbPmCFgb0x3xhBfqmQVL3S2dTg,22380
97
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-om57GXsO.woff,sha256=-Y4OlSqEjiIgYkzsBuzbdyt7fJTnBCPY_IdFeyNl_3A,21268
98
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-BICmKrXV.woff2,sha256=VDwD__cdGzlZCvEC4IUsLbzkb02-T6rrr7727cguePU,20820
99
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-D2e7XwB1.woff,sha256=tvCw-734hhDJiBd_-u6xaU8GIIUV5uZN3HBqtINrbcE,19576
100
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-3p2daRJW.woff2,sha256=ZputQjQVghL4gM-hJB3BiGb3SLW1LN9KrrAMVsvYc1I,21040
101
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-Dc9bsamC.woff,sha256=ctxA5OkZASzFAb3ppzeE8v7PI8ZU1iDxdP1kfRb-M58,19708
102
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-BOl6B_hI.woff,sha256=n4CCN4yv9Xd99lceMR4fB4kCL-HbJW4WaxXoDN6hHI4,19736
103
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-DRbp0YnP.woff2,sha256=q3TwwtfsN-ROAXuVhmdd0AxRlZEgfcO7yOADxWKNybc,21128
104
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-BXrkWnoY.woff,sha256=IGhA-x24MRafRKcJ4IG5mugQ1oqJ3mpQ3twErZ07q0g,13584
105
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-Bhem1d5z.woff2,sha256=21zZ17h-7eYPCWre7qO4CIVENOkz2U0Yiz_4a8HnByU,14944
106
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-DT8nEsYA.woff,sha256=kjoM0OGkfqpT06rU1mC2DvpUhzjplV3TducO-v2ol0I,12548
107
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-OHaX69iP.woff2,sha256=yiueq6z6uZ2t4Afd2tYju2iVxEVSnST9cFQMP8yE6zk,13968
108
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-CcSTXKtO.woff2,sha256=d1qXR7tW2V1i5ASMdQw_MhgN6vm2-g8nsP1At3e_u4w,14168
109
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-JgPl2bDS.woff,sha256=aThIkps6fgko9yViWDx8KWQRCracbv5ypC03YCQ-pWs,12612
110
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-B004qtqu.woff2,sha256=t6_Nc2e5H2-vvQWrSsYZXr2VeU41TDaKDcsau1_8h-0,14236
111
+ tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-O6H_RRvN.woff,sha256=QJxKE8nS80QZ9qYMzAXzt5JGcqrCxk9UdKOM_TE_4AE,12660
112
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-BwUYFJ2t.woff2,sha256=OJmfoKCJ4_QSxHosobWUFubzOZ8DIfRoXRqkJ_AIY5Y,8284
113
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-DV8QogUk.woff,sha256=tmomibb9MFo8V4vv3GGZKV4TZ1dCkryUT__LzsuTc7k,5928
114
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-0o1laQ-g.woff2,sha256=FoIHyD5UUviXI2RyIqN3SlPlilQTBsYUkwJ6x3KATHA,8012
115
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-CPsdS8_S.woff,sha256=4_Ud3wPWpQLSJOrUPkK-Q3UGQ0x1my-L8iG5AvM_Du8,5536
116
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-G9shSJ2z.woff,sha256=H62yIL9DSKQ38SRrYVDGGfjOHnazYyxl_v1tLEevbZw,5580
117
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-TFWhjk13.woff2,sha256=bQVH2hmuwLXP9YQwp20idEwkBiTnGRvHweubABjC_h8,8008
118
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-BtNeb9D6.woff,sha256=RHUNABXRzWDd4_t_FNJwsD4h9APMbUUBfvC6vFM0grg,5604
119
+ tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-D35V1G0s.woff2,sha256=OcHp0IKjio_9iqocX3S5wC6vFJ__Cx1sPenlK9-E6v4,8000
120
+ tangram_core/dist-frontend/assets/shader-BJmsOfPx.js,sha256=NddoTJ4MrR5mhgm_t4H3UmBORp3KeKMI_oUdLvahqfY,250519
121
+ tangram_core/dist-frontend/assets/shader-BJmsOfPx.js.map,sha256=kPhEBEY0j_H1Buh4z_7bfeVRP8aFhYfLGMSoltm_Fgw,604999
122
+ tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js,sha256=9Ds8xtoYxVY5DNcB4OoO5Bmiw6FwusZEUX6ykschYHQ,45595
123
+ tangram_core/dist-frontend/assets/solid-polygon-layer-DiarVGxh.js.map,sha256=a1AGTjnJirjo7dBraM6S-xYfXBX4G4AYHPKaZUUm0IM,190746
124
+ tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js,sha256=TVx6VrCE7UxXO27k3CqYqHGd12Zyl8-7629LCp2TID4,5561
125
+ tangram_core/dist-frontend/assets/tesselator-49Dw9L5A.js.map,sha256=0d8Kt4fNTYJwWtq2hlqYgWeJwpXWbF0Dq3jlLMdfNS0,25996
126
+ tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js,sha256=IGSD1Z6-G6MZUN-Kg9CBaV82rrUzNJ4tlywdREPRmzc,60165
127
+ tangram_core/dist-frontend/assets/webgl-developer-tools-CZl8qVFg.js.map,sha256=8FZX4imkKYFOw2KVQEPcEeyXo4D_nuD51ntF4NixRsg,267290
128
+ tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js,sha256=bwtsm_SgYufYB7Z_r4Udna9QEDzJkEhWUBnuO8ZirEY,80845
129
+ tangram_core/dist-frontend/assets/webgl-device-BY0-CUP6.js.map,sha256=8Jlk8_ON_k-QwZaDAJWybEDl6IsWVXI-62GMGacfGa4,374944
130
+ tangram_core/dist-frontend/assets/widget-BbOeHGj0.js,sha256=0sc6R8pRgGQ9MnNV5R5kxIz9ABBkF51glthNIfO6IS4,5074
131
+ tangram_core/dist-frontend/assets/widget-BbOeHGj0.js.map,sha256=aKWijkdPuix_3DeWzhs9DZU6LVGkE3NOkPbUXkf-REY,24319
132
+ tangram_core/dist-frontend/core.js,sha256=NzIsjSOwFESlwLFUM4xNLtOqZF1CSUBzxboSM7ENn54,21469
133
+ tangram_core/dist-frontend/core.js.map,sha256=Y_jr9FRcqAJfHFrj5LyU0IMMG9pYte8xvnDecO2C8mY,79879
134
+ tangram_core/dist-frontend/extensions.js,sha256=vA0gwR1tUOG1VCBADhNEfa9Ou0sO6wS4QuM6J57vQmU,52421
135
+ tangram_core/dist-frontend/extensions.js.map,sha256=LojdfaMg3QzMpHsTwtmrtjdOKy4zlkCeDDSbd1Tr82Q,174081
136
+ tangram_core/dist-frontend/favicon.ico,sha256=2MG5sth8hvbhlLOTsF1z6gyxMOt9hbI1ze8vk3ayFc0,3125
137
+ tangram_core/dist-frontend/favicon.png,sha256=4k7fCKcNJw9IMtNDVS1nsMb62jxt7J1YRDvntL6b68Y,40688
138
+ tangram_core/dist-frontend/font-awesome.min.css,sha256=eZrrJcwDc_3uDhsdt61sL2oOBY362qM3lon1gyExkL0,31000
139
+ tangram_core/dist-frontend/fonts/FontAwesome.otf,sha256=RE3UNmYV_8ShbQErL6kBNwZdPMtBD6b9Xk3de15P_NU,134808
140
+ tangram_core/dist-frontend/fonts/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
141
+ tangram_core/dist-frontend/fonts/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
142
+ tangram_core/dist-frontend/fonts/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
143
+ tangram_core/dist-frontend/fonts/fontawesome-webfont.woff,sha256=ugxZ3rVFD1y0Gz-TYJ7i0NmVQVh33foiPoqKdTNHTwc,98024
144
+ tangram_core/dist-frontend/fonts/fontawesome-webfont.woff2,sha256=Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8_4,77160
145
+ tangram_core/dist-frontend/geo-layers.js,sha256=brQhHPU9bZWlten0JGg5Oz7-uDZUV3WYPoFq6vVQtng,424505
146
+ tangram_core/dist-frontend/geo-layers.js.map,sha256=sTBfY_IgP7A0gSPCaHJZ7n3UkvuPLMFJLnerxqtbnUA,2034147
147
+ tangram_core/dist-frontend/index.html,sha256=0AAJ5vlg0xlA4459TLlk1l-ESrk1fB-WNw7NNiSGz_I,1397
148
+ tangram_core/dist-frontend/json.js,sha256=mA5j6eseq-0lZkLrSHT-vgKQ_29enj6VOUZFl25N3gE,11822
149
+ tangram_core/dist-frontend/json.js.map,sha256=ezKy5SDTMrAk2rtK-88ggatk6f_VV4V0DiNZCUcj1ck,78261
150
+ tangram_core/dist-frontend/layers.js,sha256=giumEX8NU7UE8u-1KqYLib2h6DlGBvWEU6rjA5t55oQ,13658
151
+ tangram_core/dist-frontend/layers.js.map,sha256=79ciCfdnpJnG55fEg3Q0sXK6t6goxAxEjOmBjKqLzcc,23568
152
+ tangram_core/dist-frontend/lit-html.js,sha256=NKwyNrk_zmL_Jh0lwwOdglIfePg79vd9BP7HR5bxNxo,7300
153
+ tangram_core/dist-frontend/lit-html.js.map,sha256=OOLR2RZTCtjS--ol-NB8Dm-ym_dRS_db2wyQQijtcsc,96159
154
+ tangram_core/dist-frontend/mapbox.js,sha256=7pKLuRcDowaZJKa1qaFBMLH_qBtApUgqdGlnTWzoR6s,9542
155
+ tangram_core/dist-frontend/mapbox.js.map,sha256=roTJAM8-tBozEeWXWn8a0133QXpDMudoBEwPOckkNk4,40611
156
+ tangram_core/dist-frontend/maplibre-gl.js,sha256=jrS8Kkfqdoc1F8nTzRxMn0Fyvi-kxaq67AOOW5L0GS8,1015688
157
+ tangram_core/dist-frontend/maplibre-gl.js.map,sha256=K_waa_cIkJ0EJbmL0qx_iXfjfcM9VfNE3_VxyTzUvn8,5758688
158
+ tangram_core/dist-frontend/mesh-layers.js,sha256=Do5hHOcxo-tABb6NakhXAkC9jmlvQJ6KuxLl-GDiF70,516
159
+ tangram_core/dist-frontend/mesh-layers.js.map,sha256=Y_tyBt4dcEmZosR3T9WvVCOkjt9k_3O8PKcoUT9LES0,95
160
+ tangram_core/dist-frontend/rs1090_wasm.js,sha256=vRh9coROJb0MbUddAH4vrGWwK8wyMsoDWSAAmzKajxU,26260
161
+ tangram_core/dist-frontend/rs1090_wasm_bg.wasm,sha256=7KKP-KObOBdoQshBgCnXIB-ylirG1rV0BcutjplwHbk,3797882
162
+ tangram_core/dist-frontend/vue.esm-browser.prod.js,sha256=HIxQG1GbqR8oFA3mRO_7OD3DNe4COf1fSGA8mohzPuY,165993
163
+ tangram_core/dist-frontend/widgets.js,sha256=R6a8s5I1Vk_NE5w_R2vx7LTqTMagVgUMQrESoG49lzw,50151
164
+ tangram_core/dist-frontend/widgets.js.map,sha256=OoV9t-vWFAmr66bwddZBxC5n1F3WfW-gSJsdHybKFiU,166080
165
+ tangram_core/main.ts,sha256=qoDdMUdmjbGz_0_b-Ld8X7cM48LZfLWJS4VL07ZQrNM,549
166
+ tangram_core/plugin.py,sha256=qY3XdRfsPZy80gDhJLlm-CYCYoL9DkVBQxdpGQgz3qA,2212
167
+ tangram_core/plugin.ts,sha256=UbNUniFq1iYyN3SCG0kLkDpsTwHVokFZGdcJt4jv1uA,1266
168
+ tangram_core/redis.py,sha256=OgNc10pzOi5H4ZcS1Ahew5r2bxyDV6XK5-hofWRUhuA,2916
169
+ tangram_core/user.css,sha256=UIyei0q9X7-VWFGW4z8A7uf3Zvzg2w9z0e5k81Rn4V8,1596
170
+ tangram_core/vite-plugin-tangram.mjs,sha256=tc1uy0dgvoliyuL1JOXijFTj1GcAMjziPHtEGHKn-sw,2480
171
+ tangram_core-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.10.2)
3
+ Root-Is-Purelib: false
4
+ Tag: cp313-cp313-win_amd64
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ tangram=tangram_core.__main__:app