fluxplot 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 (202) hide show
  1. fluxplot-0.1.0/.gitignore +19 -0
  2. fluxplot-0.1.0/LICENSE +21 -0
  3. fluxplot-0.1.0/PKG-INFO +1199 -0
  4. fluxplot-0.1.0/README.md +1169 -0
  5. fluxplot-0.1.0/THIRD_PARTY_NOTICES.md +472 -0
  6. fluxplot-0.1.0/examples/fluxbox_example.py +54 -0
  7. fluxplot-0.1.0/examples/glowbar_example.py +54 -0
  8. fluxplot-0.1.0/examples/growth_plot.py +51 -0
  9. fluxplot-0.1.0/examples/hexmatrix_example.py +75 -0
  10. fluxplot-0.1.0/examples/image_example.py +57 -0
  11. fluxplot-0.1.0/examples/scene3d_demo.py +93 -0
  12. fluxplot-0.1.0/pyproject.toml +49 -0
  13. fluxplot-0.1.0/src/fluxplot/__init__.py +115 -0
  14. fluxplot-0.1.0/src/fluxplot/_fieldmap.py +97 -0
  15. fluxplot-0.1.0/src/fluxplot/_mesh_reduce.py +54 -0
  16. fluxplot-0.1.0/src/fluxplot/_scene3d_size.py +95 -0
  17. fluxplot-0.1.0/src/fluxplot/_viewer/THIRD-PARTY.txt +23 -0
  18. fluxplot-0.1.0/src/fluxplot/_viewer/flux-model3d-viewer.min.js +4221 -0
  19. fluxplot-0.1.0/src/fluxplot/_viewer/stamp.json +4 -0
  20. fluxplot-0.1.0/src/fluxplot/api.py +1196 -0
  21. fluxplot-0.1.0/src/fluxplot/autotag.py +164 -0
  22. fluxplot-0.1.0/src/fluxplot/base.mplstyle +0 -0
  23. fluxplot-0.1.0/src/fluxplot/brackets.py +242 -0
  24. fluxplot-0.1.0/src/fluxplot/canonical_json.py +23 -0
  25. fluxplot-0.1.0/src/fluxplot/capture.py +150 -0
  26. fluxplot-0.1.0/src/fluxplot/colorcheck.py +285 -0
  27. fluxplot-0.1.0/src/fluxplot/colors.py +727 -0
  28. fluxplot-0.1.0/src/fluxplot/colorscale.py +477 -0
  29. fluxplot-0.1.0/src/fluxplot/data.py +178 -0
  30. fluxplot-0.1.0/src/fluxplot/definitions/colormaps.json +1639 -0
  31. fluxplot-0.1.0/src/fluxplot/definitions/flexoki.tokens.json +2571 -0
  32. fluxplot-0.1.0/src/fluxplot/definitions/palettes.json +2547 -0
  33. fluxplot-0.1.0/src/fluxplot/descriptors.py +87 -0
  34. fluxplot-0.1.0/src/fluxplot/fields.py +611 -0
  35. fluxplot-0.1.0/src/fluxplot/fits.py +240 -0
  36. fluxplot-0.1.0/src/fluxplot/glb.py +84 -0
  37. fluxplot-0.1.0/src/fluxplot/ids.py +173 -0
  38. fluxplot-0.1.0/src/fluxplot/images.py +362 -0
  39. fluxplot-0.1.0/src/fluxplot/integrity.py +27 -0
  40. fluxplot-0.1.0/src/fluxplot/manifest.py +788 -0
  41. fluxplot-0.1.0/src/fluxplot/mesh3d.py +376 -0
  42. fluxplot-0.1.0/src/fluxplot/panels.py +284 -0
  43. fluxplot-0.1.0/src/fluxplot/postprocess.py +638 -0
  44. fluxplot-0.1.0/src/fluxplot/presets.py +66 -0
  45. fluxplot-0.1.0/src/fluxplot/provenance.py +177 -0
  46. fluxplot-0.1.0/src/fluxplot/raster.py +295 -0
  47. fluxplot-0.1.0/src/fluxplot/recipe.py +178 -0
  48. fluxplot-0.1.0/src/fluxplot/render.py +66 -0
  49. fluxplot-0.1.0/src/fluxplot/roles.py +147 -0
  50. fluxplot-0.1.0/src/fluxplot/scene3d.py +386 -0
  51. fluxplot-0.1.0/src/fluxplot/scene3d_manifest.py +112 -0
  52. fluxplot-0.1.0/src/fluxplot/scene3d_viewer.py +633 -0
  53. fluxplot-0.1.0/src/fluxplot/schemas/.gitkeep +0 -0
  54. fluxplot-0.1.0/src/fluxplot/schemas/manifest.schema.json +2479 -0
  55. fluxplot-0.1.0/src/fluxplot/schemas/recipe.schema.json +179 -0
  56. fluxplot-0.1.0/src/fluxplot/schemas/scene3d.schema.json +461 -0
  57. fluxplot-0.1.0/src/fluxplot/seaborn_adapters.py +323 -0
  58. fluxplot-0.1.0/src/fluxplot/signature_fluxplots/__init__.py +18 -0
  59. fluxplot-0.1.0/src/fluxplot/signature_fluxplots/_colour.py +412 -0
  60. fluxplot-0.1.0/src/fluxplot/signature_fluxplots/fluxbox.py +433 -0
  61. fluxplot-0.1.0/src/fluxplot/signature_fluxplots/glowbar.py +769 -0
  62. fluxplot-0.1.0/src/fluxplot/signature_fluxplots/hexmatrix.py +927 -0
  63. fluxplot-0.1.0/src/fluxplot/stats/__init__.py +63 -0
  64. fluxplot-0.1.0/src/fluxplot/stats/_common.py +196 -0
  65. fluxplot-0.1.0/src/fluxplot/stats/multi_group.py +443 -0
  66. fluxplot-0.1.0/src/fluxplot/stats/paired.py +209 -0
  67. fluxplot-0.1.0/src/fluxplot/stats/two_group.py +149 -0
  68. fluxplot-0.1.0/src/fluxplot/style.py +469 -0
  69. fluxplot-0.1.0/src/fluxplot/surface.py +487 -0
  70. fluxplot-0.1.0/src/fluxplot/surface3d.py +197 -0
  71. fluxplot-0.1.0/src/fluxplot/tagger.py +561 -0
  72. fluxplot-0.1.0/src/fluxplot/version.py +19 -0
  73. fluxplot-0.1.0/tests/_helpers.py +25 -0
  74. fluxplot-0.1.0/tests/conftest.py +19 -0
  75. fluxplot-0.1.0/tests/fixtures/colorscale_vectors.json +10571 -0
  76. fluxplot-0.1.0/tests/fixtures/polish/fields.fluxplot.json +2241 -0
  77. fluxplot-0.1.0/tests/fixtures/polish/fields.png +0 -0
  78. fluxplot-0.1.0/tests/fixtures/polish/fields.recipe.json +35 -0
  79. fluxplot-0.1.0/tests/fixtures/polish/fields.svg +890 -0
  80. fluxplot-0.1.0/tests/fixtures/polish/panels-a.fluxplot.json +790 -0
  81. fluxplot-0.1.0/tests/fixtures/polish/panels-a.recipe.json +14 -0
  82. fluxplot-0.1.0/tests/fixtures/polish/panels-a.svg +231 -0
  83. fluxplot-0.1.0/tests/fixtures/polish/panels-b.fluxplot.json +766 -0
  84. fluxplot-0.1.0/tests/fixtures/polish/panels-b.recipe.json +14 -0
  85. fluxplot-0.1.0/tests/fixtures/polish/panels-b.svg +199 -0
  86. fluxplot-0.1.0/tests/fixtures/polish/presets.fluxplot.json +1620 -0
  87. fluxplot-0.1.0/tests/fixtures/polish/presets.recipe.json +26 -0
  88. fluxplot-0.1.0/tests/fixtures/polish/presets.svg +830 -0
  89. fluxplot-0.1.0/tests/fixtures/scene3d/SHA256SUMS.json +24 -0
  90. fluxplot-0.1.0/tests/fixtures/scene3d/box-axes.fluxplot.json +208 -0
  91. fluxplot-0.1.0/tests/fixtures/scene3d/box-axes.glb +0 -0
  92. fluxplot-0.1.0/tests/fixtures/scene3d/categorical-missing.fluxplot.json +98 -0
  93. fluxplot-0.1.0/tests/fixtures/scene3d/categorical-missing.glb +0 -0
  94. fluxplot-0.1.0/tests/fixtures/scene3d/continuous.fluxplot.json +118 -0
  95. fluxplot-0.1.0/tests/fixtures/scene3d/continuous.glb +0 -0
  96. fluxplot-0.1.0/tests/fixtures/scene3d/morph-a.fluxplot.json +89 -0
  97. fluxplot-0.1.0/tests/fixtures/scene3d/morph-a.glb +0 -0
  98. fluxplot-0.1.0/tests/fixtures/scene3d/morph-b.fluxplot.json +89 -0
  99. fluxplot-0.1.0/tests/fixtures/scene3d/morph-b.glb +0 -0
  100. fluxplot-0.1.0/tests/fixtures/scene3d/morph-incompatible.fluxplot.json +89 -0
  101. fluxplot-0.1.0/tests/fixtures/scene3d/morph-incompatible.glb +0 -0
  102. fluxplot-0.1.0/tests/fixtures/scene3d/named-parts.fluxplot.json +101 -0
  103. fluxplot-0.1.0/tests/fixtures/scene3d/named-parts.glb +0 -0
  104. fluxplot-0.1.0/tests/fixtures/scene3d/plain.fluxplot.json +78 -0
  105. fluxplot-0.1.0/tests/fixtures/scene3d/plain.glb +0 -0
  106. fluxplot-0.1.0/tests/fixtures/scene3d/scalebar.fluxplot.json +86 -0
  107. fluxplot-0.1.0/tests/fixtures/scene3d/scalebar.glb +0 -0
  108. fluxplot-0.1.0/tests/fixtures/scene3d/sequence.fluxplot.json +109 -0
  109. fluxplot-0.1.0/tests/fixtures/scene3d/sequence.glb +0 -0
  110. fluxplot-0.1.0/tests/fixtures/scene3d/states.fluxplot.json +92 -0
  111. fluxplot-0.1.0/tests/fixtures/scene3d/states.glb +0 -0
  112. fluxplot-0.1.0/tests/fixtures/scene3d-library/SHA256SUMS.json +35 -0
  113. fluxplot-0.1.0/tests/fixtures/scene3d-library/box-axes.fluxplot.json +219 -0
  114. fluxplot-0.1.0/tests/fixtures/scene3d-library/box-axes.glb +0 -0
  115. fluxplot-0.1.0/tests/fixtures/scene3d-library/box-axes.recipe.json +14 -0
  116. fluxplot-0.1.0/tests/fixtures/scene3d-library/categorical-missing.fluxplot.json +115 -0
  117. fluxplot-0.1.0/tests/fixtures/scene3d-library/categorical-missing.glb +0 -0
  118. fluxplot-0.1.0/tests/fixtures/scene3d-library/categorical-missing.recipe.json +14 -0
  119. fluxplot-0.1.0/tests/fixtures/scene3d-library/continuous.fluxplot.json +1135 -0
  120. fluxplot-0.1.0/tests/fixtures/scene3d-library/continuous.glb +0 -0
  121. fluxplot-0.1.0/tests/fixtures/scene3d-library/continuous.recipe.json +14 -0
  122. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-a.fluxplot.json +94 -0
  123. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-a.glb +0 -0
  124. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-a.recipe.json +14 -0
  125. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-b.fluxplot.json +94 -0
  126. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-b.glb +0 -0
  127. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-b.recipe.json +14 -0
  128. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-incompatible.fluxplot.json +94 -0
  129. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-incompatible.glb +0 -0
  130. fluxplot-0.1.0/tests/fixtures/scene3d-library/morph-incompatible.recipe.json +14 -0
  131. fluxplot-0.1.0/tests/fixtures/scene3d-library/named-parts.fluxplot.json +105 -0
  132. fluxplot-0.1.0/tests/fixtures/scene3d-library/named-parts.glb +0 -0
  133. fluxplot-0.1.0/tests/fixtures/scene3d-library/named-parts.recipe.json +14 -0
  134. fluxplot-0.1.0/tests/fixtures/scene3d-library/plain.fluxplot.json +83 -0
  135. fluxplot-0.1.0/tests/fixtures/scene3d-library/plain.glb +0 -0
  136. fluxplot-0.1.0/tests/fixtures/scene3d-library/plain.recipe.json +14 -0
  137. fluxplot-0.1.0/tests/fixtures/scene3d-library/scalebar.fluxplot.json +91 -0
  138. fluxplot-0.1.0/tests/fixtures/scene3d-library/scalebar.glb +0 -0
  139. fluxplot-0.1.0/tests/fixtures/scene3d-library/scalebar.recipe.json +14 -0
  140. fluxplot-0.1.0/tests/fixtures/scene3d-library/sequence.fluxplot.json +114 -0
  141. fluxplot-0.1.0/tests/fixtures/scene3d-library/sequence.glb +0 -0
  142. fluxplot-0.1.0/tests/fixtures/scene3d-library/sequence.recipe.json +14 -0
  143. fluxplot-0.1.0/tests/fixtures/scene3d-library/states.fluxplot.json +98 -0
  144. fluxplot-0.1.0/tests/fixtures/scene3d-library/states.glb +0 -0
  145. fluxplot-0.1.0/tests/fixtures/scene3d-library/states.recipe.json +14 -0
  146. fluxplot-0.1.0/tests/generate_colorscale_vectors.py +75 -0
  147. fluxplot-0.1.0/tests/generate_polish_fixtures.py +51 -0
  148. fluxplot-0.1.0/tests/generate_scene3d_fixtures.py +142 -0
  149. fluxplot-0.1.0/tests/generate_scene3d_library_fixtures.py +49 -0
  150. fluxplot-0.1.0/tests/test_alpha_by.py +153 -0
  151. fluxplot-0.1.0/tests/test_autotag_promotion.py +172 -0
  152. fluxplot-0.1.0/tests/test_band.py +63 -0
  153. fluxplot-0.1.0/tests/test_brackets.py +196 -0
  154. fluxplot-0.1.0/tests/test_capture.py +55 -0
  155. fluxplot-0.1.0/tests/test_color_definitions.py +186 -0
  156. fluxplot-0.1.0/tests/test_colorcheck.py +101 -0
  157. fluxplot-0.1.0/tests/test_colors.py +66 -0
  158. fluxplot-0.1.0/tests/test_colorscale.py +593 -0
  159. fluxplot-0.1.0/tests/test_core_fixes.py +122 -0
  160. fluxplot-0.1.0/tests/test_dark_ground.py +128 -0
  161. fluxplot-0.1.0/tests/test_data_kind.py +136 -0
  162. fluxplot-0.1.0/tests/test_determinism.py +75 -0
  163. fluxplot-0.1.0/tests/test_errorbar_legend.py +97 -0
  164. fluxplot-0.1.0/tests/test_examples_fresh.py +58 -0
  165. fluxplot-0.1.0/tests/test_extra_sweep.py +83 -0
  166. fluxplot-0.1.0/tests/test_fits.py +100 -0
  167. fluxplot-0.1.0/tests/test_fluxbox.py +264 -0
  168. fluxplot-0.1.0/tests/test_glowbar.py +287 -0
  169. fluxplot-0.1.0/tests/test_hexmatrix.py +249 -0
  170. fluxplot-0.1.0/tests/test_id_stability.py +101 -0
  171. fluxplot-0.1.0/tests/test_ids.py +62 -0
  172. fluxplot-0.1.0/tests/test_images.py +184 -0
  173. fluxplot-0.1.0/tests/test_m1_correctness.py +120 -0
  174. fluxplot-0.1.0/tests/test_marker_dom.py +72 -0
  175. fluxplot-0.1.0/tests/test_parts_contract.py +92 -0
  176. fluxplot-0.1.0/tests/test_polish.py +262 -0
  177. fluxplot-0.1.0/tests/test_provenance.py +198 -0
  178. fluxplot-0.1.0/tests/test_rasterize.py +354 -0
  179. fluxplot-0.1.0/tests/test_recipe_rerun.py +59 -0
  180. fluxplot-0.1.0/tests/test_scaffold.py +119 -0
  181. fluxplot-0.1.0/tests/test_scene3d.py +463 -0
  182. fluxplot-0.1.0/tests/test_scene3d_api.py +280 -0
  183. fluxplot-0.1.0/tests/test_scene3d_contract.py +39 -0
  184. fluxplot-0.1.0/tests/test_scene3d_static.py +211 -0
  185. fluxplot-0.1.0/tests/test_schema.py +49 -0
  186. fluxplot-0.1.0/tests/test_schema_complete.py +207 -0
  187. fluxplot-0.1.0/tests/test_seaborn_coverage.py +153 -0
  188. fluxplot-0.1.0/tests/test_semantic_integrity.py +237 -0
  189. fluxplot-0.1.0/tests/test_series_colors.py +147 -0
  190. fluxplot-0.1.0/tests/test_staged_write.py +60 -0
  191. fluxplot-0.1.0/tests/test_stats.py +259 -0
  192. fluxplot-0.1.0/tests/test_stats_multi.py +292 -0
  193. fluxplot-0.1.0/tests/test_step_stem_axes.py +105 -0
  194. fluxplot-0.1.0/tests/test_style.py +56 -0
  195. fluxplot-0.1.0/tests/test_surface.py +317 -0
  196. fluxplot-0.1.0/tests/test_tag_seaborn.py +138 -0
  197. fluxplot-0.1.0/tests/test_theme.py +147 -0
  198. fluxplot-0.1.0/tests/test_tick_deref.py +86 -0
  199. fluxplot-0.1.0/tests/test_tick_group_completeness.py +88 -0
  200. fluxplot-0.1.0/tests/test_twins_figure.py +116 -0
  201. fluxplot-0.1.0/tests/test_view_geometry.py +82 -0
  202. fluxplot-0.1.0/tests/test_wrappers.py +183 -0
@@ -0,0 +1,19 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .pytest_cache/
6
+ build/
7
+ dist/
8
+ # example/test outputs
9
+ examples/out/
10
+ examples/sizing/
11
+ examples/basic_example_output/
12
+ tests/_tmp/
13
+
14
+
15
+ # verification screenshots and reports
16
+ test-results/
17
+
18
+ # Personal planning/spec docs — kept local, never published
19
+ notes/
fluxplot-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kort Driessen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.