gmat-czml 0.1.0__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 (273) hide show
  1. gmat_czml-0.1.0/.gitattributes +5 -0
  2. gmat_czml-0.1.0/.github/CODEOWNERS +2 -0
  3. gmat_czml-0.1.0/.github/ISSUE_TEMPLATE/bug.yml +59 -0
  4. gmat_czml-0.1.0/.github/ISSUE_TEMPLATE/chore.yml +25 -0
  5. gmat_czml-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  6. gmat_czml-0.1.0/.github/ISSUE_TEMPLATE/convert-failure.yml +51 -0
  7. gmat_czml-0.1.0/.github/ISSUE_TEMPLATE/feature.yml +41 -0
  8. gmat_czml-0.1.0/.github/pull_request_template.md +35 -0
  9. gmat_czml-0.1.0/.github/workflows/ci.yml +138 -0
  10. gmat_czml-0.1.0/.github/workflows/docs.yml +57 -0
  11. gmat_czml-0.1.0/.github/workflows/release.yml +74 -0
  12. gmat_czml-0.1.0/.gitignore +47 -0
  13. gmat_czml-0.1.0/.python-version +1 -0
  14. gmat_czml-0.1.0/CHANGELOG.md +53 -0
  15. gmat_czml-0.1.0/CITATION.cff +24 -0
  16. gmat_czml-0.1.0/CONTRIBUTING.md +63 -0
  17. gmat_czml-0.1.0/LICENSE +21 -0
  18. gmat_czml-0.1.0/PKG-INFO +132 -0
  19. gmat_czml-0.1.0/README.md +98 -0
  20. gmat_czml-0.1.0/docs/api.md +36 -0
  21. gmat_czml-0.1.0/docs/assets/gallery/geo.png +0 -0
  22. gmat_czml-0.1.0/docs/assets/gallery/leo-ground-track.gif +0 -0
  23. gmat_czml-0.1.0/docs/assets/gallery/leo-ground-track.png +0 -0
  24. gmat_czml-0.1.0/docs/assets/gallery/skyfield-iss.png +0 -0
  25. gmat_czml-0.1.0/docs/cli.md +40 -0
  26. gmat_czml-0.1.0/docs/conversion/ground-track.md +52 -0
  27. gmat_czml-0.1.0/docs/conversion/orbit-path.md +53 -0
  28. gmat_czml-0.1.0/docs/design/decisions.md +252 -0
  29. gmat_czml-0.1.0/docs/gallery.md +58 -0
  30. gmat_czml-0.1.0/docs/getting-started.md +108 -0
  31. gmat_czml-0.1.0/docs/index.md +49 -0
  32. gmat_czml-0.1.0/docs/schema.md +100 -0
  33. gmat_czml-0.1.0/docs/styling.md +31 -0
  34. gmat_czml-0.1.0/examples/README.md +51 -0
  35. gmat_czml-0.1.0/examples/data/gmat-leo.oem +116 -0
  36. gmat_czml-0.1.0/examples/data/iss.tle +3 -0
  37. gmat_czml-0.1.0/examples/geo.py +77 -0
  38. gmat_czml-0.1.0/examples/leo_ground_track.py +37 -0
  39. gmat_czml-0.1.0/examples/serve.py +42 -0
  40. gmat_czml-0.1.0/examples/skyfield_tle.py +81 -0
  41. gmat_czml-0.1.0/examples/viewer.html +273 -0
  42. gmat_czml-0.1.0/mkdocs.yml +90 -0
  43. gmat_czml-0.1.0/pyproject.toml +123 -0
  44. gmat_czml-0.1.0/scripts/griffe_sphinx_roles.py +42 -0
  45. gmat_czml-0.1.0/scripts/render_gallery.py +182 -0
  46. gmat_czml-0.1.0/src/gmat_czml/__init__.py +56 -0
  47. gmat_czml-0.1.0/src/gmat_czml/assembly.py +164 -0
  48. gmat_czml-0.1.0/src/gmat_czml/cli.py +136 -0
  49. gmat_czml-0.1.0/src/gmat_czml/convert/__init__.py +10 -0
  50. gmat_czml-0.1.0/src/gmat_czml/convert/ephemeris.py +238 -0
  51. gmat_czml-0.1.0/src/gmat_czml/convert/frames.py +104 -0
  52. gmat_czml-0.1.0/src/gmat_czml/convert/groundtrack.py +207 -0
  53. gmat_czml-0.1.0/src/gmat_czml/convert/sampling.py +185 -0
  54. gmat_czml-0.1.0/src/gmat_czml/convert/time.py +105 -0
  55. gmat_czml-0.1.0/src/gmat_czml/document.py +64 -0
  56. gmat_czml-0.1.0/src/gmat_czml/errors.py +211 -0
  57. gmat_czml-0.1.0/src/gmat_czml/py.typed +0 -0
  58. gmat_czml-0.1.0/src/gmat_czml/schema.py +314 -0
  59. gmat_czml-0.1.0/src/gmat_czml/styles.py +24 -0
  60. gmat_czml-0.1.0/tests/_harness.py +152 -0
  61. gmat_czml-0.1.0/tests/browser/test_cesium_parse.py +91 -0
  62. gmat_czml-0.1.0/tests/conftest.py +24 -0
  63. gmat_czml-0.1.0/tests/data/czml-schema/AlignedAxis.json +39 -0
  64. gmat_czml-0.1.0/tests/data/czml-schema/ArcType.json +29 -0
  65. gmat_czml-0.1.0/tests/data/czml-schema/Articulation.json +30 -0
  66. gmat_czml-0.1.0/tests/data/czml-schema/Articulations.json +11 -0
  67. gmat_czml-0.1.0/tests/data/czml-schema/BackgroundPadding.json +29 -0
  68. gmat_czml-0.1.0/tests/data/czml-schema/Billboard.json +105 -0
  69. gmat_czml-0.1.0/tests/data/czml-schema/Boolean.json +29 -0
  70. gmat_czml-0.1.0/tests/data/czml-schema/BoundingRectangle.json +29 -0
  71. gmat_czml-0.1.0/tests/data/czml-schema/Box.json +58 -0
  72. gmat_czml-0.1.0/tests/data/czml-schema/BoxDimensions.json +29 -0
  73. gmat_czml-0.1.0/tests/data/czml-schema/CheckerboardMaterial.json +30 -0
  74. gmat_czml-0.1.0/tests/data/czml-schema/ClassificationType.json +29 -0
  75. gmat_czml-0.1.0/tests/data/czml-schema/Clock.json +31 -0
  76. gmat_czml-0.1.0/tests/data/czml-schema/Color.json +34 -0
  77. gmat_czml-0.1.0/tests/data/czml-schema/ColorBlendMode.json +29 -0
  78. gmat_czml-0.1.0/tests/data/czml-schema/CornerType.json +29 -0
  79. gmat_czml-0.1.0/tests/data/czml-schema/Corridor.json +97 -0
  80. gmat_czml-0.1.0/tests/data/czml-schema/CustomProperties.json +11 -0
  81. gmat_czml-0.1.0/tests/data/czml-schema/CustomProperty.json +149 -0
  82. gmat_czml-0.1.0/tests/data/czml-schema/Cylinder.json +78 -0
  83. gmat_czml-0.1.0/tests/data/czml-schema/DeletableProperty.json +12 -0
  84. gmat_czml-0.1.0/tests/data/czml-schema/Direction.json +44 -0
  85. gmat_czml-0.1.0/tests/data/czml-schema/DirectionList.json +38 -0
  86. gmat_czml-0.1.0/tests/data/czml-schema/DistanceDisplayCondition.json +29 -0
  87. gmat_czml-0.1.0/tests/data/czml-schema/Document.json +10 -0
  88. gmat_czml-0.1.0/tests/data/czml-schema/Double.json +30 -0
  89. gmat_czml-0.1.0/tests/data/czml-schema/DoubleList.json +28 -0
  90. gmat_czml-0.1.0/tests/data/czml-schema/Ellipse.json +107 -0
  91. gmat_czml-0.1.0/tests/data/czml-schema/Ellipsoid.json +97 -0
  92. gmat_czml-0.1.0/tests/data/czml-schema/EllipsoidRadii.json +29 -0
  93. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/ConicSensor.json +155 -0
  94. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/CustomPatternSensor.json +140 -0
  95. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/Fan.json +59 -0
  96. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/RectangularSensor.json +145 -0
  97. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/SensorVolumePortionToDisplay.json +29 -0
  98. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/SensorVolumePortionToDisplayValue.json +22 -0
  99. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/SensorVolumePortionToDisplayValueProperty.json +6 -0
  100. gmat_czml-0.1.0/tests/data/czml-schema/Extensions/AGI/Vector.json +35 -0
  101. gmat_czml-0.1.0/tests/data/czml-schema/EyeOffset.json +29 -0
  102. gmat_czml-0.1.0/tests/data/czml-schema/Font.json +29 -0
  103. gmat_czml-0.1.0/tests/data/czml-schema/GridMaterial.json +40 -0
  104. gmat_czml-0.1.0/tests/data/czml-schema/HeightReference.json +29 -0
  105. gmat_czml-0.1.0/tests/data/czml-schema/HorizontalOrigin.json +29 -0
  106. gmat_czml-0.1.0/tests/data/czml-schema/ImageMaterial.json +34 -0
  107. gmat_czml-0.1.0/tests/data/czml-schema/Integer.json +30 -0
  108. gmat_czml-0.1.0/tests/data/czml-schema/InterpolatableProperty.json +43 -0
  109. gmat_czml-0.1.0/tests/data/czml-schema/LICENSE.md +205 -0
  110. gmat_czml-0.1.0/tests/data/czml-schema/Label.json +109 -0
  111. gmat_czml-0.1.0/tests/data/czml-schema/LabelStyle.json +29 -0
  112. gmat_czml-0.1.0/tests/data/czml-schema/LineCount.json +29 -0
  113. gmat_czml-0.1.0/tests/data/czml-schema/LineOffset.json +29 -0
  114. gmat_czml-0.1.0/tests/data/czml-schema/LineThickness.json +29 -0
  115. gmat_czml-0.1.0/tests/data/czml-schema/Material.json +35 -0
  116. gmat_czml-0.1.0/tests/data/czml-schema/Model.json +94 -0
  117. gmat_czml-0.1.0/tests/data/czml-schema/NearFarScalar.json +29 -0
  118. gmat_czml-0.1.0/tests/data/czml-schema/NodeTransformation.json +30 -0
  119. gmat_czml-0.1.0/tests/data/czml-schema/NodeTransformations.json +14 -0
  120. gmat_czml-0.1.0/tests/data/czml-schema/Orientation.json +38 -0
  121. gmat_czml-0.1.0/tests/data/czml-schema/Packet.json +151 -0
  122. gmat_czml-0.1.0/tests/data/czml-schema/Path.json +45 -0
  123. gmat_czml-0.1.0/tests/data/czml-schema/PixelOffset.json +29 -0
  124. gmat_czml-0.1.0/tests/data/czml-schema/Point.json +56 -0
  125. gmat_czml-0.1.0/tests/data/czml-schema/Polygon.json +116 -0
  126. gmat_czml-0.1.0/tests/data/czml-schema/Polyline.json +72 -0
  127. gmat_czml-0.1.0/tests/data/czml-schema/PolylineArrowMaterial.json +20 -0
  128. gmat_czml-0.1.0/tests/data/czml-schema/PolylineDashMaterial.json +35 -0
  129. gmat_czml-0.1.0/tests/data/czml-schema/PolylineGlowMaterial.json +30 -0
  130. gmat_czml-0.1.0/tests/data/czml-schema/PolylineMaterial.json +51 -0
  131. gmat_czml-0.1.0/tests/data/czml-schema/PolylineOutlineMaterial.json +30 -0
  132. gmat_czml-0.1.0/tests/data/czml-schema/PolylineVolume.json +68 -0
  133. gmat_czml-0.1.0/tests/data/czml-schema/Position.json +55 -0
  134. gmat_czml-0.1.0/tests/data/czml-schema/PositionList.json +43 -0
  135. gmat_czml-0.1.0/tests/data/czml-schema/PositionListOfLists.json +38 -0
  136. gmat_czml-0.1.0/tests/data/czml-schema/README.md +34 -0
  137. gmat_czml-0.1.0/tests/data/czml-schema/Rectangle.json +97 -0
  138. gmat_czml-0.1.0/tests/data/czml-schema/RectangleCoordinates.json +34 -0
  139. gmat_czml-0.1.0/tests/data/czml-schema/Repeat.json +29 -0
  140. gmat_czml-0.1.0/tests/data/czml-schema/Rotation.json +33 -0
  141. gmat_czml-0.1.0/tests/data/czml-schema/Scale.json +29 -0
  142. gmat_czml-0.1.0/tests/data/czml-schema/ShadowMode.json +29 -0
  143. gmat_czml-0.1.0/tests/data/czml-schema/Shape.json +23 -0
  144. gmat_czml-0.1.0/tests/data/czml-schema/SolidColorMaterial.json +20 -0
  145. gmat_czml-0.1.0/tests/data/czml-schema/String.json +29 -0
  146. gmat_czml-0.1.0/tests/data/czml-schema/StripeMaterial.json +40 -0
  147. gmat_czml-0.1.0/tests/data/czml-schema/StripeOrientation.json +29 -0
  148. gmat_czml-0.1.0/tests/data/czml-schema/Tileset.json +23 -0
  149. gmat_czml-0.1.0/tests/data/czml-schema/Translation.json +29 -0
  150. gmat_czml-0.1.0/tests/data/czml-schema/Uri.json +32 -0
  151. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ArcTypeValueProperty.json +6 -0
  152. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/BooleanValueProperty.json +6 -0
  153. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/BoundingRectangleValueProperty.json +6 -0
  154. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/Cartesian2ListValueProperty.json +6 -0
  155. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/Cartesian2ValueProperty.json +6 -0
  156. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/Cartesian3ListOfListsValueProperty.json +6 -0
  157. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/Cartesian3ListValueProperty.json +6 -0
  158. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/Cartesian3ValueProperty.json +6 -0
  159. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/Cartesian3VelocityValueProperty.json +6 -0
  160. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicDegreesListOfListsValueProperty.json +6 -0
  161. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicDegreesListValueProperty.json +6 -0
  162. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicDegreesValueProperty.json +6 -0
  163. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicRadiansListOfListsValueProperty.json +6 -0
  164. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicRadiansListValueProperty.json +6 -0
  165. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicRadiansValueProperty.json +6 -0
  166. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicRectangleDegreesValueProperty.json +6 -0
  167. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CartographicRectangleRadiansValueProperty.json +6 -0
  168. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ClassificationTypeValueProperty.json +6 -0
  169. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ColorBlendModeValueProperty.json +6 -0
  170. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/CornerTypeValueProperty.json +6 -0
  171. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/DistanceDisplayConditionValueProperty.json +6 -0
  172. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/DoubleListValueProperty.json +6 -0
  173. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/DoubleValueProperty.json +6 -0
  174. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/FontValueProperty.json +6 -0
  175. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/HeightReferenceValueProperty.json +6 -0
  176. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/HorizontalOriginValueProperty.json +6 -0
  177. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/IntegerValueProperty.json +6 -0
  178. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/LabelStyleValueProperty.json +6 -0
  179. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/NearFarScalarValueProperty.json +6 -0
  180. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ReferenceListOfListsValueProperty.json +6 -0
  181. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ReferenceListValueProperty.json +6 -0
  182. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ReferenceValueProperty.json +6 -0
  183. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/RgbaValueProperty.json +6 -0
  184. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/RgbafValueProperty.json +6 -0
  185. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/ShadowModeValueProperty.json +6 -0
  186. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/SphericalListValueProperty.json +6 -0
  187. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/SphericalValueProperty.json +6 -0
  188. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/StringValueProperty.json +6 -0
  189. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/StripeOrientationValueProperty.json +6 -0
  190. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/UnitCartesian3ListValueProperty.json +6 -0
  191. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/UnitCartesian3ValueProperty.json +6 -0
  192. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/UnitQuaternionValueProperty.json +6 -0
  193. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/UnitSphericalListValueProperty.json +6 -0
  194. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/UnitSphericalValueProperty.json +6 -0
  195. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/UriValueProperty.json +6 -0
  196. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/VelocityReferenceValueProperty.json +6 -0
  197. gmat_czml-0.1.0/tests/data/czml-schema/ValueProperties/VerticalOriginValueProperty.json +6 -0
  198. gmat_czml-0.1.0/tests/data/czml-schema/Values/ArcTypeValue.json +22 -0
  199. gmat_czml-0.1.0/tests/data/czml-schema/Values/BooleanValue.json +8 -0
  200. gmat_czml-0.1.0/tests/data/czml-schema/Values/BoundingRectangleValue.json +12 -0
  201. gmat_czml-0.1.0/tests/data/czml-schema/Values/Cartesian2ListValue.json +11 -0
  202. gmat_czml-0.1.0/tests/data/czml-schema/Values/Cartesian2Value.json +8 -0
  203. gmat_czml-0.1.0/tests/data/czml-schema/Values/Cartesian3ListOfListsValue.json +11 -0
  204. gmat_czml-0.1.0/tests/data/czml-schema/Values/Cartesian3ListValue.json +11 -0
  205. gmat_czml-0.1.0/tests/data/czml-schema/Values/Cartesian3Value.json +12 -0
  206. gmat_czml-0.1.0/tests/data/czml-schema/Values/Cartesian3VelocityValue.json +8 -0
  207. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicDegreesListOfListsValue.json +11 -0
  208. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicDegreesListValue.json +11 -0
  209. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicDegreesValue.json +12 -0
  210. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicRadiansListOfListsValue.json +11 -0
  211. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicRadiansListValue.json +11 -0
  212. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicRadiansValue.json +8 -0
  213. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicRectangleDegreesValue.json +12 -0
  214. gmat_czml-0.1.0/tests/data/czml-schema/Values/CartographicRectangleRadiansValue.json +8 -0
  215. gmat_czml-0.1.0/tests/data/czml-schema/Values/ClassificationTypeValue.json +22 -0
  216. gmat_czml-0.1.0/tests/data/czml-schema/Values/ClockRangeValue.json +21 -0
  217. gmat_czml-0.1.0/tests/data/czml-schema/Values/ClockStepValue.json +21 -0
  218. gmat_czml-0.1.0/tests/data/czml-schema/Values/ColorBlendModeValue.json +22 -0
  219. gmat_czml-0.1.0/tests/data/czml-schema/Values/CornerTypeValue.json +22 -0
  220. gmat_czml-0.1.0/tests/data/czml-schema/Values/DistanceDisplayConditionValue.json +12 -0
  221. gmat_czml-0.1.0/tests/data/czml-schema/Values/DoubleListValue.json +11 -0
  222. gmat_czml-0.1.0/tests/data/czml-schema/Values/DoubleValue.json +11 -0
  223. gmat_czml-0.1.0/tests/data/czml-schema/Values/FontValue.json +8 -0
  224. gmat_czml-0.1.0/tests/data/czml-schema/Values/HeightReferenceValue.json +22 -0
  225. gmat_czml-0.1.0/tests/data/czml-schema/Values/HorizontalOriginValue.json +22 -0
  226. gmat_czml-0.1.0/tests/data/czml-schema/Values/IntegerValue.json +11 -0
  227. gmat_czml-0.1.0/tests/data/czml-schema/Values/LabelStyleValue.json +22 -0
  228. gmat_czml-0.1.0/tests/data/czml-schema/Values/NearFarScalarValue.json +12 -0
  229. gmat_czml-0.1.0/tests/data/czml-schema/Values/ReferenceListOfListsValue.json +11 -0
  230. gmat_czml-0.1.0/tests/data/czml-schema/Values/ReferenceListValue.json +11 -0
  231. gmat_czml-0.1.0/tests/data/czml-schema/Values/ReferenceValue.json +11 -0
  232. gmat_czml-0.1.0/tests/data/czml-schema/Values/RgbaValue.json +8 -0
  233. gmat_czml-0.1.0/tests/data/czml-schema/Values/RgbafValue.json +8 -0
  234. gmat_czml-0.1.0/tests/data/czml-schema/Values/ShadowModeValue.json +26 -0
  235. gmat_czml-0.1.0/tests/data/czml-schema/Values/SphericalListValue.json +11 -0
  236. gmat_czml-0.1.0/tests/data/czml-schema/Values/SphericalValue.json +8 -0
  237. gmat_czml-0.1.0/tests/data/czml-schema/Values/StringValue.json +8 -0
  238. gmat_czml-0.1.0/tests/data/czml-schema/Values/StripeOrientationValue.json +18 -0
  239. gmat_czml-0.1.0/tests/data/czml-schema/Values/TimeIntervalCollectionValue.json +10 -0
  240. gmat_czml-0.1.0/tests/data/czml-schema/Values/TimeValue.json +7 -0
  241. gmat_czml-0.1.0/tests/data/czml-schema/Values/UnitCartesian3ListValue.json +11 -0
  242. gmat_czml-0.1.0/tests/data/czml-schema/Values/UnitCartesian3Value.json +8 -0
  243. gmat_czml-0.1.0/tests/data/czml-schema/Values/UnitQuaternionValue.json +12 -0
  244. gmat_czml-0.1.0/tests/data/czml-schema/Values/UnitSphericalListValue.json +11 -0
  245. gmat_czml-0.1.0/tests/data/czml-schema/Values/UnitSphericalValue.json +8 -0
  246. gmat_czml-0.1.0/tests/data/czml-schema/Values/UriValue.json +12 -0
  247. gmat_czml-0.1.0/tests/data/czml-schema/Values/VelocityReferenceValue.json +8 -0
  248. gmat_czml-0.1.0/tests/data/czml-schema/Values/VerticalOriginValue.json +26 -0
  249. gmat_czml-0.1.0/tests/data/czml-schema/VerticalOrigin.json +29 -0
  250. gmat_czml-0.1.0/tests/data/czml-schema/ViewFrom.json +32 -0
  251. gmat_czml-0.1.0/tests/data/czml-schema/Wall.json +66 -0
  252. gmat_czml-0.1.0/tests/data/gmat-leo.oem +116 -0
  253. gmat_czml-0.1.0/tests/data/gmat-leo.script +78 -0
  254. gmat_czml-0.1.0/tests/data/golden/gmat-leo-groundtrack.czml +1 -0
  255. gmat_czml-0.1.0/tests/data/golden/gmat-leo.czml +1 -0
  256. gmat_czml-0.1.0/tests/data/golden/multi-object.czml +1 -0
  257. gmat_czml-0.1.0/tests/data/golden/skyfield-iss-groundtrack.czml +1 -0
  258. gmat_czml-0.1.0/tests/data/golden/skyfield-iss.czml +1 -0
  259. gmat_czml-0.1.0/tests/data/iss.tle +3 -0
  260. gmat_czml-0.1.0/tests/data/leo.oem +21 -0
  261. gmat_czml-0.1.0/tests/test_assembly.py +273 -0
  262. gmat_czml-0.1.0/tests/test_cli.py +160 -0
  263. gmat_czml-0.1.0/tests/test_convert_ephemeris.py +370 -0
  264. gmat_czml-0.1.0/tests/test_convert_frames.py +209 -0
  265. gmat_czml-0.1.0/tests/test_convert_groundtrack.py +237 -0
  266. gmat_czml-0.1.0/tests/test_convert_sampling.py +211 -0
  267. gmat_czml-0.1.0/tests/test_convert_time.py +187 -0
  268. gmat_czml-0.1.0/tests/test_document.py +51 -0
  269. gmat_czml-0.1.0/tests/test_golden.py +86 -0
  270. gmat_czml-0.1.0/tests/test_package.py +26 -0
  271. gmat_czml-0.1.0/tests/test_schema.py +377 -0
  272. gmat_czml-0.1.0/tests/test_schema_validation.py +42 -0
  273. gmat_czml-0.1.0/uv.lock +2409 -0
@@ -0,0 +1,5 @@
1
+ # Golden / reference fixtures under tests/data are compared byte-for-byte by the conversion
2
+ # tests. Git's line-ending normalisation (autocrlf on Windows checks out LF as CRLF) would
3
+ # otherwise rewrite them and break those byte-exact assertions, so treat the fixtures as binary
4
+ # — checked out verbatim, identical on every platform.
5
+ tests/data/** -text
@@ -0,0 +1,2 @@
1
+ # Default reviewer for everything in this repo.
2
+ * @djankov
@@ -0,0 +1,59 @@
1
+ name: Bug
2
+ description: Report a defect in gmat-czml.
3
+ title: "<short summary>"
4
+ labels: ["type:bug"]
5
+ body:
6
+ - type: textarea
7
+ id: what_happened
8
+ attributes:
9
+ label: What happened
10
+ description: Observed behavior. Include error messages and tracebacks verbatim.
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: what_expected
15
+ attributes:
16
+ label: What you expected
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: repro
21
+ attributes:
22
+ label: Minimal reproduction
23
+ description: >-
24
+ Smallest snippet that triggers the bug — the Python (or CLI) call and, if a
25
+ trajectory fails to convert, the smallest input that reproduces it.
26
+ render: python
27
+ validations:
28
+ required: true
29
+ - type: input
30
+ id: gmat_czml_version
31
+ attributes:
32
+ label: gmat-czml version
33
+ placeholder: "e.g. 0.1.0, or git sha"
34
+ validations:
35
+ required: true
36
+ - type: input
37
+ id: python_version
38
+ attributes:
39
+ label: Python version
40
+ placeholder: "e.g. 3.12.3"
41
+ validations:
42
+ required: true
43
+ - type: dropdown
44
+ id: os
45
+ attributes:
46
+ label: Operating system
47
+ options:
48
+ - Linux
49
+ - Windows
50
+ - macOS
51
+ - Other
52
+ validations:
53
+ required: true
54
+ - type: textarea
55
+ id: logs
56
+ attributes:
57
+ label: Logs
58
+ description: Relevant output — tracebacks, warnings, pytest output.
59
+ render: shell
@@ -0,0 +1,25 @@
1
+ name: Chore
2
+ description: Tooling, infra, hygiene, or other non-feature work.
3
+ title: "<short summary>"
4
+ labels: ["type:chore"]
5
+ body:
6
+ - type: textarea
7
+ id: what
8
+ attributes:
9
+ label: What
10
+ description: What needs to happen.
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: why
15
+ attributes:
16
+ label: Why
17
+ description: Why now. What's blocked or painful without it.
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: done
22
+ attributes:
23
+ label: Definition of done
24
+ value: |
25
+ - [ ]
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Question or discussion
4
+ url: https://github.com/orgs/astro-tools/discussions
5
+ about: Open a discussion for usage questions, ideas, or general chat.
@@ -0,0 +1,51 @@
1
+ name: My trajectory does not convert
2
+ description: A trajectory that should convert to CZML fails or renders wrong.
3
+ title: "<short summary>"
4
+ labels: ["type:bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: >-
9
+ gmat-czml consumes the canonical state-series schema. Most conversion failures come down to
10
+ the input DataFrame's columns or `attrs`, so please share its shape below.
11
+ - type: textarea
12
+ id: what_happened
13
+ attributes:
14
+ label: What happened
15
+ description: The error, the wrong rendering, or the missing entity. Include tracebacks verbatim.
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: dataframe_schema
20
+ attributes:
21
+ label: Input DataFrame schema
22
+ description: >-
23
+ The columns and the `attrs` of the DataFrame you passed — ideally the output of
24
+ `print(df.columns.tolist()); print(df.attrs); print(df.head())`.
25
+ render: text
26
+ validations:
27
+ required: true
28
+ - type: textarea
29
+ id: producer
30
+ attributes:
31
+ label: Where the trajectory came from
32
+ description: >-
33
+ How the trajectory was produced or read (a GMAT run, a TLE propagation, a read ephemeris
34
+ file, …) and which file format if any.
35
+ validations:
36
+ required: true
37
+ - type: textarea
38
+ id: call
39
+ attributes:
40
+ label: The call you made
41
+ description: The `to_czml(...)` or `gmat-czml convert` invocation.
42
+ render: python
43
+ validations:
44
+ required: true
45
+ - type: input
46
+ id: gmat_czml_version
47
+ attributes:
48
+ label: gmat-czml version
49
+ placeholder: "e.g. 0.1.0, or git sha"
50
+ validations:
51
+ required: true
@@ -0,0 +1,41 @@
1
+ name: Feature
2
+ description: Propose a new capability or a non-trivial change.
3
+ title: "<short summary>"
4
+ labels: ["type:feature"]
5
+ body:
6
+ - type: textarea
7
+ id: summary
8
+ attributes:
9
+ label: Summary
10
+ description: One or two sentences describing what this feature is.
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: motivation
15
+ attributes:
16
+ label: Motivation
17
+ description: Why this matters. What can't users do today that they should be able to do?
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: acceptance
22
+ attributes:
23
+ label: Acceptance criteria
24
+ description: >-
25
+ Concrete, testable checkboxes. An outside reviewer should be able to read these
26
+ and tell whether the feature is done.
27
+ value: |
28
+ - [ ]
29
+ - [ ]
30
+ validations:
31
+ required: true
32
+ - type: textarea
33
+ id: out_of_scope
34
+ attributes:
35
+ label: Out of scope / non-goals
36
+ description: What this issue deliberately does not cover. Helps keep scope honest.
37
+ - type: textarea
38
+ id: notes
39
+ attributes:
40
+ label: Notes
41
+ description: Design notes, links to the design decisions, references to prior art, open questions.
@@ -0,0 +1,35 @@
1
+ <!--
2
+ Thanks for contributing to gmat-czml. Keep PRs small and scoped to one issue.
3
+ -->
4
+
5
+ ## Summary
6
+
7
+ <!-- One or two sentences: what this PR changes and why. -->
8
+
9
+ Closes #
10
+
11
+ ## Changes
12
+
13
+ <!-- Short bullet list of the substantive changes. Omit trivia (formatting, imports). -->
14
+
15
+ -
16
+
17
+ ## Tested with
18
+
19
+ <!-- Tick what you ran locally. CI will re-run on Ubuntu, Windows, and macOS. -->
20
+
21
+ - [ ] `pytest -m "not browser"`
22
+ - [ ] `pytest -m browser` (headless CesiumJS)
23
+ - [ ] `ruff check`
24
+ - [ ] `ruff format --check`
25
+ - [ ] `mypy`
26
+
27
+ ## Breaking changes
28
+
29
+ <!-- "None" if none. Otherwise: what breaks, who is affected, migration notes. -->
30
+
31
+ None.
32
+
33
+ ## Notes for reviewers
34
+
35
+ <!-- Optional. Things to look at first, known rough edges, questions for the reviewer. -->
@@ -0,0 +1,138 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ concurrency:
9
+ group: ci-${{ github.workflow }}-${{ github.ref }}
10
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
11
+
12
+ jobs:
13
+ test:
14
+ name: test (${{ matrix.os }}, py${{ matrix.python-version }})
15
+ runs-on: ${{ matrix.os }}
16
+ timeout-minutes: 20
17
+ strategy:
18
+ fail-fast: false
19
+ # 3 OSes × 3 Python minors. gmat-czml is pure Python, so the matrix is the
20
+ # platform / interpreter spread. The browser and czml-validation jobs run once
21
+ # on Ubuntu (their output is platform-independent), so they are excluded here.
22
+ matrix:
23
+ os: [ubuntu-latest, windows-latest, macos-latest]
24
+ python-version: ['3.10', '3.11', '3.12']
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - name: Set up Python ${{ matrix.python-version }}
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v4
33
+ with:
34
+ enable-cache: true
35
+ cache-dependency-glob: uv.lock
36
+ - name: Install project
37
+ run: uv sync --all-groups
38
+ - name: Run pytest
39
+ run: uv run pytest -m "not browser and not czml" --cov --cov-report=term-missing
40
+
41
+ lint:
42
+ name: lint
43
+ runs-on: ubuntu-latest
44
+ timeout-minutes: 5
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+ - uses: actions/setup-python@v5
48
+ with:
49
+ python-version: '3.12'
50
+ - uses: astral-sh/setup-uv@v4
51
+ with:
52
+ enable-cache: true
53
+ cache-dependency-glob: uv.lock
54
+ - run: uv sync --all-groups
55
+ - run: uv run ruff check
56
+ - run: uv run ruff format --check
57
+
58
+ typecheck:
59
+ name: typecheck
60
+ runs-on: ubuntu-latest
61
+ timeout-minutes: 10
62
+ steps:
63
+ - uses: actions/checkout@v4
64
+ - uses: actions/setup-python@v5
65
+ with:
66
+ python-version: '3.12'
67
+ - uses: astral-sh/setup-uv@v4
68
+ with:
69
+ enable-cache: true
70
+ cache-dependency-glob: uv.lock
71
+ - run: uv sync --all-groups
72
+ - run: uv run mypy
73
+
74
+ # Smoke-check that `pip install gmat-czml` (no dev group) imports cleanly. Catches a
75
+ # dev-only dependency leaking into the default install path.
76
+ minimal-install:
77
+ name: minimal install smoke
78
+ runs-on: ubuntu-latest
79
+ timeout-minutes: 5
80
+ steps:
81
+ - uses: actions/checkout@v4
82
+ - uses: actions/setup-python@v5
83
+ with:
84
+ python-version: '3.12'
85
+ - run: pip install .
86
+ - run: python -c "import gmat_czml; print(gmat_czml.__version__)"
87
+
88
+ # Validate the emitted CZML against the official CZML JSON schema (vendored under
89
+ # tests/data/czml-schema/) and byte-diff it against the committed golden corpus, on the real
90
+ # GMAT and TLE producer fixtures.
91
+ czml-validate:
92
+ name: CZML validation
93
+ runs-on: ubuntu-latest
94
+ timeout-minutes: 10
95
+ steps:
96
+ - uses: actions/checkout@v4
97
+ - uses: actions/setup-python@v5
98
+ with:
99
+ python-version: '3.12'
100
+ - uses: astral-sh/setup-uv@v4
101
+ with:
102
+ enable-cache: true
103
+ cache-dependency-glob: uv.lock
104
+ - run: uv sync --all-groups
105
+ - run: uv run pytest -m czml -v
106
+
107
+ # Load the emitted CZML in a real headless CesiumJS client (Playwright + chromium) to catch
108
+ # valid-but-unrenderable output the schema check alone misses, and assert a correct, animated
109
+ # orbit path on the real GMAT and TLE producer fixtures.
110
+ cesium-parse:
111
+ name: headless CesiumJS parse
112
+ runs-on: ubuntu-latest
113
+ timeout-minutes: 15
114
+ steps:
115
+ - uses: actions/checkout@v4
116
+ - uses: actions/setup-python@v5
117
+ with:
118
+ python-version: '3.12'
119
+ - uses: astral-sh/setup-uv@v4
120
+ with:
121
+ enable-cache: true
122
+ cache-dependency-glob: uv.lock
123
+ - run: uv sync --all-groups
124
+ - run: uv run playwright install --with-deps chromium
125
+ - run: uv run pytest -m browser -v
126
+
127
+ # Validate CITATION.cff against the Citation File Format v1.2.0 schema.
128
+ citation:
129
+ name: citation file (cffconvert)
130
+ runs-on: ubuntu-latest
131
+ timeout-minutes: 5
132
+ steps:
133
+ - uses: actions/checkout@v4
134
+ - uses: actions/setup-python@v5
135
+ with:
136
+ python-version: '3.12'
137
+ - run: pip install cffconvert==2.0.0
138
+ - run: cffconvert --validate -i CITATION.cff
@@ -0,0 +1,57 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: ['v*']
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: docs-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
13
+
14
+ jobs:
15
+ build:
16
+ name: build
17
+ runs-on: ubuntu-latest
18
+ timeout-minutes: 5
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: '3.12'
24
+ - uses: astral-sh/setup-uv@v4
25
+ with:
26
+ enable-cache: true
27
+ cache-dependency-glob: uv.lock
28
+ - run: uv sync --all-groups
29
+ - run: uv run mkdocs build --strict
30
+
31
+ deploy:
32
+ name: deploy
33
+ needs: build
34
+ if: |
35
+ (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')) ||
36
+ github.event_name == 'workflow_dispatch'
37
+ runs-on: ubuntu-latest
38
+ timeout-minutes: 5
39
+ permissions:
40
+ contents: write
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ with:
44
+ fetch-depth: 0
45
+ - uses: actions/setup-python@v5
46
+ with:
47
+ python-version: '3.12'
48
+ - uses: astral-sh/setup-uv@v4
49
+ with:
50
+ enable-cache: true
51
+ cache-dependency-glob: uv.lock
52
+ - run: uv sync --all-groups
53
+ - name: Configure git identity
54
+ run: |
55
+ git config user.name "github-actions[bot]"
56
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
57
+ - run: uv run mkdocs gh-deploy --force --no-history
@@ -0,0 +1,74 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ['v*']
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: release-${{ github.ref }}
12
+ cancel-in-progress: false
13
+
14
+ jobs:
15
+ build:
16
+ name: build sdist + wheel
17
+ runs-on: ubuntu-latest
18
+ timeout-minutes: 5
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: '3.12'
24
+ - uses: astral-sh/setup-uv@v4
25
+ with:
26
+ enable-cache: true
27
+ cache-dependency-glob: uv.lock
28
+ - run: uv build
29
+ - uses: actions/upload-artifact@v4
30
+ with:
31
+ name: dist
32
+ path: dist/
33
+ if-no-files-found: error
34
+
35
+ publish-pypi:
36
+ name: publish to PyPI
37
+ needs: build
38
+ runs-on: ubuntu-latest
39
+ timeout-minutes: 10
40
+ environment:
41
+ name: pypi
42
+ url: https://pypi.org/p/gmat-czml
43
+ permissions:
44
+ id-token: write
45
+ steps:
46
+ - uses: actions/download-artifact@v4
47
+ with:
48
+ name: dist
49
+ path: dist/
50
+ - uses: pypa/gh-action-pypi-publish@release/v1
51
+ with:
52
+ skip-existing: true
53
+
54
+ github-release:
55
+ name: github release
56
+ needs: publish-pypi
57
+ runs-on: ubuntu-latest
58
+ timeout-minutes: 5
59
+ permissions:
60
+ contents: write
61
+ steps:
62
+ - uses: actions/download-artifact@v4
63
+ with:
64
+ name: dist
65
+ path: dist/
66
+ - name: Create GitHub Release
67
+ env:
68
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
69
+ run: |
70
+ gh release create "${GITHUB_REF_NAME}" \
71
+ --repo "${GITHUB_REPOSITORY}" \
72
+ --title "${GITHUB_REF_NAME}" \
73
+ --generate-notes \
74
+ dist/*
@@ -0,0 +1,47 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg
7
+ *.egg-info/
8
+ .eggs/
9
+ build/
10
+ dist/
11
+ wheels/
12
+ *.whl
13
+
14
+ # Environments
15
+ .venv/
16
+ venv/
17
+ env/
18
+ .env
19
+
20
+ # uv
21
+ .uv-cache/
22
+
23
+ # Tooling caches
24
+ .pytest_cache/
25
+ .mypy_cache/
26
+ .ruff_cache/
27
+ .coverage
28
+ .coverage.*
29
+ coverage.xml
30
+ htmlcov/
31
+
32
+ # Playwright
33
+ test-results/
34
+ playwright-report/
35
+
36
+ # Docs build
37
+ site/
38
+ .cache/
39
+
40
+ # Example gallery output (regenerate with the scripts under examples/)
41
+ examples/output/
42
+
43
+ # IDE / editor
44
+ .vscode/
45
+ .idea/
46
+ *.swp
47
+ .DS_Store
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,53 @@
1
+ # Changelog
2
+
3
+ All notable changes to gmat-czml are documented here. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres to
5
+ [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Entries are aggregated at release-cut
6
+ time, not per pull request.
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] - 2026-06-04
11
+
12
+ First release. gmat-czml takes an already-computed trajectory — a state history in the canonical
13
+ state-series form produced by a headless GMAT run or read by the org's format-I/O library — and
14
+ turns it into a CZML document a Cesium client can animate. It does not propagate, integrate, or
15
+ render: the producer is the source of geometric truth, and Cesium is the renderer.
16
+
17
+ ### Added
18
+
19
+ - **`to_czml`, the single entry point**, and the `CzmlDocument` it returns. The call accepts a
20
+ canonical state-series `DataFrame`, an orbit-formats `Ephemeris`, a file orbit-formats can read
21
+ (OEM, GMAT report, SP3, STK ephemeris, …), or an iterable of any of these for a multi-object
22
+ scene. The document saves to a `.czml` file (`save`) or comes back in memory (`to_json` /
23
+ `to_dict`) — no file needed.
24
+ - **The canonical input boundary.** One row per sample (`Epoch`, `X` `Y` `Z` required;
25
+ `VX` `VY` `VZ` optional) plus `DataFrame.attrs` metadata, with the reference frame and time
26
+ scale required and never guessed. A malformed input raises a typed `GmatCzmlError` subclass that
27
+ names exactly what is wrong, rather than failing deep in assembly.
28
+ - **Orbit path.** Each object becomes a Cesium entity carrying four properties — a sampled
29
+ `position` in metres, a `path`, a `point`, and a `label`. The source's interpolation method and
30
+ degree pass through to the CZML `interpolationAlgorithm` / `interpolationDegree`
31
+ (`LAGRANGE` / `HERMITE` / `LINEAR`, defaulting to Lagrange degree 5), and the recognised frame
32
+ maps to CZML `INERTIAL` or `FIXED`.
33
+ - **Tolerance-bounded decimation.** A cross-track Douglas–Peucker pass drops samples that stay
34
+ within tolerance of the kept polyline — a `degree + 1` support floor preserves the interpolation
35
+ curve — so a dense, high-rate ephemeris ships a compact document without visible path error.
36
+ Epochs travel as one reference epoch plus per-sample second offsets.
37
+ - **Ground track** (opt-in via `ground_track=True`). The sub-satellite point becomes a geodetic
38
+ polyline that floats at the satellite's own height over the correct ground position, with
39
+ antimeridian crossings split at an interpolated seam on the dateline. The inertial → Earth-fixed
40
+ rotation and the WGS84 geodetic projection are delegated to orbit-formats — Earth-only, and a
41
+ trajectory declared about another central body is rejected rather than mis-projected.
42
+ - **Clock synthesis.** A document clock is synthesized from the trajectory's own epoch span, with
43
+ the declared time scale converted to the UTC Cesium expects.
44
+ - **Multi-object / multi-segment scenes.** An iterable of trajectories becomes one document, one
45
+ entity per object, on a single shared clock.
46
+ - **Styling.** A single baked-in `sat-default` style covers every object's point, label, path, and
47
+ ground track; the `Style` handle is the stable seam later customization plugs into.
48
+ - **`gmat-czml convert` CLI.** A thin driver over `to_czml` — `convert INPUT -o OUTPUT` with
49
+ `--ground-track`, `--playback-seconds`, and `--style` — whose output is byte-for-byte the
50
+ document the API produces.
51
+ - **Documentation.** A published docs site — getting started, the schema reference, per-entity
52
+ conversion, styling, the CLI, an example gallery with rendered output, and the API reference —
53
+ with the design rationale recorded under `docs/design/`.
@@ -0,0 +1,24 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use gmat-czml in academic work, please cite it using the metadata below."
3
+ title: gmat-czml
4
+ abstract: >-
5
+ gmat-czml is a permissively-licensed Python library that converts an already-computed
6
+ trajectory — in the canonical state-series form produced by a headless GMAT run or read by the
7
+ org's format-I/O library — into CZML for browser-based 3D visualization in Cesium. It maps state
8
+ ephemerides to an orbit path, renders a ground track, synthesizes a clock,
9
+ and emits an in-memory or on-disk document; it does not propagate or render.
10
+ type: software
11
+ authors:
12
+ - given-names: Dimitrije
13
+ family-names: Jankovic
14
+ version: 0.1.0
15
+ license: MIT
16
+ repository-code: "https://github.com/astro-tools/gmat-czml"
17
+ url: "https://github.com/astro-tools/gmat-czml"
18
+ keywords:
19
+ - astrodynamics
20
+ - orbital-mechanics
21
+ - cesium
22
+ - czml
23
+ - visualization
24
+ - space