jarvisplot 1.4.1__tar.gz → 1.4.2__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 (100) hide show
  1. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/JarvisPLOT.egg-info/PKG-INFO +1 -1
  2. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/JarvisPLOT.egg-info/SOURCES.txt +1 -0
  3. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/PKG-INFO +1 -1
  4. jarvisplot-1.4.2/jarvisplot/Figure/design_runtime.py +137 -0
  5. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/figure.py +3 -10
  6. {jarvisplot-1.4.1/jarvisplot/cards/a4paper/4x1 → jarvisplot-1.4.2/jarvisplot/cards/a4paper/2x1}/rect.json +4 -0
  7. {jarvisplot-1.4.1/jarvisplot/cards/gambit → jarvisplot-1.4.2/jarvisplot/cards/a4paper}/2x1/ternary.json +3 -0
  8. {jarvisplot-1.4.1/jarvisplot/cards/a4paper/4x1 → jarvisplot-1.4.2/jarvisplot/cards/gambit/2x1}/ternary.json +17 -0
  9. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/pyproject.toml +1 -1
  10. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
  11. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/JarvisPLOT.egg-info/entry_points.txt +0 -0
  12. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/JarvisPLOT.egg-info/requires.txt +0 -0
  13. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/JarvisPLOT.egg-info/top_level.txt +0 -0
  14. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/README.md +0 -0
  15. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/__init__.py +0 -0
  16. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/adapters_rect.py +0 -0
  17. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/adapters_ternary.py +0 -0
  18. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
  19. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/colorbar_runtime.py +0 -0
  20. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/config_runtime.py +0 -0
  21. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/data_pipelines.py +0 -0
  22. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/density_cell_runtime.py +0 -0
  23. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/dynesty_runtime.py +0 -0
  24. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/figure_types.py +0 -0
  25. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/helper.py +0 -0
  26. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
  27. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
  28. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
  29. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/layer_runtime.py +0 -0
  30. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/layout_runtime.py +0 -0
  31. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/method_registry.py +0 -0
  32. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
  33. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/posterior_hpd.py +0 -0
  34. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/posterior_mesh.py +0 -0
  35. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/preprocessor.py +0 -0
  36. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/preprocessor_runtime.py +0 -0
  37. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/profile_runtime.py +0 -0
  38. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/Figure/style_runtime.py +0 -0
  39. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/__init__.py +0 -0
  40. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cache_store.py +0 -0
  41. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
  42. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +0 -0
  43. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/2x1/rect5x1.json +0 -0
  44. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +0 -0
  45. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +0 -0
  46. {jarvisplot-1.4.1/jarvisplot/cards/a4paper/2x1 → jarvisplot-1.4.2/jarvisplot/cards/a4paper/4x1}/rect.json +0 -0
  47. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +0 -0
  48. {jarvisplot-1.4.1/jarvisplot/cards/a4paper/2x1 → jarvisplot-1.4.2/jarvisplot/cards/a4paper/4x1}/ternary.json +0 -0
  49. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +0 -0
  50. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/args.json +0 -0
  51. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/colors/colormaps.json +0 -0
  52. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/default/output.json +0 -0
  53. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/flowchart/default.json +0 -0
  54. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
  55. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/gambit/2x1/rect_cmap.json +0 -0
  56. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +0 -0
  57. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
  58. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
  59. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
  60. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
  61. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
  62. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
  63. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
  64. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/gambit.png +0 -0
  65. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/icons/gambit_small.png +0 -0
  66. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cards/style_preference.json +0 -0
  67. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/cli.py +0 -0
  68. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/client.py +0 -0
  69. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/config.py +0 -0
  70. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/core.py +0 -0
  71. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/core_assets.py +0 -0
  72. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/core_runtime.py +0 -0
  73. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/data_loader.py +0 -0
  74. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/data_loader_hdf5.py +0 -0
  75. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/data_loader_runtime.py +0 -0
  76. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/data_loader_summary.py +0 -0
  77. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/flowchart.py +0 -0
  78. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/inner_func.py +0 -0
  79. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/memtrace.py +0 -0
  80. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/utils/__init__.py +0 -0
  81. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/utils/cmaps.py +0 -0
  82. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/utils/dataframes.py +0 -0
  83. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/utils/expression.py +0 -0
  84. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/utils/interpolator.py +0 -0
  85. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/jarvisplot/utils/pathing.py +0 -0
  86. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/setup.cfg +0 -0
  87. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_data_loader_contracts.py +0 -0
  88. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_density_cell_transform.py +0 -0
  89. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_docs_status_labels.py +0 -0
  90. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_figure_contracts.py +0 -0
  91. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_figure_type_expander.py +0 -0
  92. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_flowchart_renderer.py +0 -0
  93. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_interp_2d_transform.py +0 -0
  94. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_interp_natural_neighbor.py +0 -0
  95. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_interpolator_contracts.py +0 -0
  96. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_jpcontour_methods.py +0 -0
  97. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_parse_data_metadata.py +0 -0
  98. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_pathing_contracts.py +0 -0
  99. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_posterior_hpd.py +0 -0
  100. {jarvisplot-1.4.1 → jarvisplot-1.4.2}/tests/test_template_json.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: JarvisPLOT
3
- Version: 1.4.1
3
+ Version: 1.4.2
4
4
  Summary: Jarvis-PLOT: YAML-driven plotting engine
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -28,6 +28,7 @@ jarvisplot/Figure/colorbar_runtime.py
28
28
  jarvisplot/Figure/config_runtime.py
29
29
  jarvisplot/Figure/data_pipelines.py
30
30
  jarvisplot/Figure/density_cell_runtime.py
31
+ jarvisplot/Figure/design_runtime.py
31
32
  jarvisplot/Figure/dynesty_runtime.py
32
33
  jarvisplot/Figure/figure.py
33
34
  jarvisplot/Figure/figure_types.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: JarvisPLOT
3
- Version: 1.4.1
3
+ Version: 1.4.2
4
4
  Summary: Jarvis-PLOT: YAML-driven plotting engine
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env python3
2
+ """Design-reference debug overlay for Jarvis-PLOT figures.
3
+
4
+ When a figure is rendered with ``debug: true`` in the YAML, this module draws a
5
+ dimension overlay on top of the finished figure: every axes defined by the style
6
+ card is outlined and annotated with
7
+
8
+ - its name (``ax`` / ``axc`` / ``axtri`` / ``ax0`` ...),
9
+ - its position rect ``[left, bottom, width, height]`` in figure fractions
10
+ (exactly the ``Frame.axes.<name>.rect`` value from the style JSON card), and
11
+ - its width / height converted to centimetres from ``figure.figsize``.
12
+
13
+ The primary axes additionally gets margin dimension lines (left / top / bottom
14
+ insets), and colorbar axes get a gap dimension to the primary axes.
15
+
16
+ The overlay never participates in data rendering; it is a read-only annotation
17
+ layer added just before the figure is saved. All drawing is wrapped so a
18
+ failure here can never break a normal plot.
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ import matplotlib as mpl
24
+
25
+
26
+ # overlay palette
27
+ _DIM = "#0A7FB6" # blue dimension lines + labels
28
+ _BOX = "#111111" # axes outline
29
+ _NAME = "#1A237E" # axes name + rect text
30
+ _MARGIN = "#FF3FA4" # pink figure border / caption
31
+
32
+ # order in which we look for the "primary" axes to fully dimension
33
+ _PRIMARY_ORDER = ("ax", "ax0", "ax1", "axtri")
34
+
35
+
36
+ def _raw(ax):
37
+ """Return the underlying matplotlib Axes for an adapter or raw Axes."""
38
+ return getattr(ax, "ax", ax)
39
+
40
+
41
+ def _position(ax):
42
+ try:
43
+ bb = _raw(ax).get_position()
44
+ return float(bb.x0), float(bb.y0), float(bb.width), float(bb.height)
45
+ except Exception:
46
+ return None
47
+
48
+
49
+ def draw_design_reference(fig) -> None:
50
+ """Draw the dimension overlay onto ``fig`` (a JarvisPLOT Figure wrapper)."""
51
+ try:
52
+ _draw(fig)
53
+ except Exception as exc: # never break a real plot because of the overlay
54
+ logger = getattr(fig, "logger", None)
55
+ if logger is not None:
56
+ try:
57
+ logger.debug(f"design-reference overlay skipped: {exc}")
58
+ except Exception:
59
+ pass
60
+
61
+
62
+ def _draw(fig) -> None:
63
+ F = fig.fig
64
+ w_in, h_in = (float(v) for v in F.get_size_inches())
65
+ w_cm, h_cm = w_in * 2.54, h_in * 2.54
66
+
67
+ ov = F.add_axes([0.0, 0.0, 1.0, 1.0], zorder=10_000)
68
+ ov.set_xlim(0.0, 1.0)
69
+ ov.set_ylim(0.0, 1.0)
70
+ ov.set_axis_off()
71
+ ov.patch.set_alpha(0.0)
72
+
73
+ def label(x, y, text, *, color=_DIM, size=5.0, ha="center", va="center",
74
+ rotation=0, weight="normal", family="monospace", boxed=True):
75
+ bbox = dict(boxstyle="square,pad=0.12", fc="white", ec="none", alpha=0.82) if boxed else None
76
+ ov.text(x, y, text, color=color, fontsize=size, ha=ha, va=va,
77
+ rotation=rotation, fontweight=weight, family=family, bbox=bbox,
78
+ zorder=10_002, clip_on=False)
79
+
80
+ def dim(x0, y0, x1, y1, text, *, vertical=False):
81
+ ov.annotate("", xy=(x1, y1), xytext=(x0, y0),
82
+ arrowprops=dict(arrowstyle="<|-|>", color=_DIM, lw=0.7,
83
+ shrinkA=0, shrinkB=0, mutation_scale=6),
84
+ zorder=10_001)
85
+ label((x0 + x1) / 2.0, (y0 + y1) / 2.0, text,
86
+ rotation=90 if vertical else 0)
87
+
88
+ # figure border + size caption
89
+ ov.add_patch(mpl.patches.Rectangle((0, 0), 1, 1, fill=False, ec=_MARGIN,
90
+ lw=0.9, zorder=10_001))
91
+ label(0.5, 0.995, f"design reference · figure {w_cm:.2f} cm × {h_cm:.2f} cm",
92
+ color=_MARGIN, size=6.0, va="top", weight="bold", family="DejaVu Sans")
93
+
94
+ # total figure height marker on the far left
95
+ dim(0.012, 0.0, 0.012, 1.0, f"{h_cm:.2f} cm", vertical=True)
96
+
97
+ # pick the primary axes to fully dimension
98
+ primary = next((n for n in _PRIMARY_ORDER if n in fig.axes), None)
99
+ primary_pos = _position(fig.axes[primary]) if primary else None
100
+
101
+ for name, ax in fig.axes.items():
102
+ pos = _position(ax)
103
+ if pos is None:
104
+ continue
105
+ l, b, w, h = pos
106
+
107
+ # outline only, so the real plot underneath keeps its true colors
108
+ ov.add_patch(mpl.patches.Rectangle((l, b), w, h, fill=False, ec=_BOX,
109
+ lw=0.9, zorder=10_001))
110
+
111
+ # name + rect + cm sizes — anchored so the text stays inside the figure
112
+ if l + w / 2.0 > 0.6: # axes sits in the right half
113
+ tx, ha = min(l + w, 0.992), "right"
114
+ else:
115
+ tx, ha = max(l + 0.012, 0.008), "left"
116
+ ty = min(b + h - 0.015, 0.93)
117
+ label(tx, ty, name, color=_NAME, size=7.0, ha=ha, va="top",
118
+ weight="bold", boxed=True)
119
+ label(tx, ty - 0.057,
120
+ f"[{l:.3f}, {b:.3f}, {w:.3f}, {h:.3f}]\n"
121
+ f"width: {w * w_cm:.3f} cm height: {h * h_cm:.3f} cm",
122
+ color=_NAME, size=4.6, ha=ha, va="top", boxed=True)
123
+
124
+ if name == primary:
125
+ yt = b + h
126
+ # left inset (figure left edge → axes left edge), drawn along the top edge
127
+ dim(0.0, yt, l, yt, f"{l * w_cm:.3f} cm")
128
+ # top inset (axes top edge → figure top)
129
+ dim(l, yt, l, 1.0, f"{(1.0 - yt) * h_cm:.3f} cm", vertical=True)
130
+ # bottom inset (figure bottom → axes bottom edge)
131
+ dim(l, 0.0, l, b, f"{b * h_cm:.3f} cm", vertical=True)
132
+ elif name.startswith("axc") and primary_pos is not None:
133
+ # gap between the primary axes' right edge and this colorbar's left edge
134
+ pl, pb, pw, ph = primary_pos
135
+ ygap = b + h / 2.0
136
+ if l > pl + pw:
137
+ dim(pl + pw, ygap, l, ygap, f"{(l - (pl + pw)) * w_cm:.3f} cm")
@@ -13,6 +13,7 @@ from .adapters_ternary import TernaryAxesAdapter
13
13
  from .method_registry import resolve_callable
14
14
  from .style_runtime import resolve_style_bundle_payload
15
15
  from .config_runtime import apply_figure_config
16
+ from .design_runtime import draw_design_reference
16
17
  from .layer_runtime import (
17
18
  load_layer_runtime_data as runtime_load_layer_runtime_data,
18
19
  release_layer_runtime_data as runtime_release_layer_runtime_data,
@@ -975,16 +976,8 @@ class Figure:
975
976
  def plot(self):
976
977
  self.render()
977
978
  # for layer in self.layers:
978
- if self.debug:
979
- if "axtri" in self.axes.keys():
980
- # Demo of Scatter Clip
981
- x = np.linspace(-1, 2, 121)
982
- y = np.linspace(-1, 2, 121)
983
- X, Y = np.meshgrid(x, y)
984
- self.axtri.scatter(x=X.ravel() + 0.5 * Y.ravel(), y=Y.ravel(), marker='.', s=1, facecolor="#0277BA", edgecolor="None")
985
-
986
- # Demo of Plot Clip
987
- self.axtri.plot(x=[-1, 0.5, 0.5, 2], y=[-1.1, 0.6, 0.3, 1.8], linestyle="-", color="#0277BA")
979
+ if self.debug:
980
+ draw_design_reference(self)
988
981
  self.savefig()
989
982
  import matplotlib.pyplot as plt
990
983
  plt.close(self.fig)
@@ -86,6 +86,10 @@
86
86
  "loc": "top",
87
87
  "fontsize": 12,
88
88
  "fontfamily": "STIXGeneral"
89
+ },
90
+ "ylabel_coords": {
91
+ "x": -0.1,
92
+ "y": 0.5
89
93
  }
90
94
  }
91
95
  },
@@ -124,6 +124,9 @@
124
124
  "va":"center"
125
125
  }
126
126
  }
127
+ },
128
+ "axlogo": {
129
+ "file": "&JP/jarvisplot/cards/icons/jarvisHEP.png"
127
130
  }
128
131
  },
129
132
  "Style": {
@@ -124,6 +124,23 @@
124
124
  "va":"center"
125
125
  }
126
126
  }
127
+ },
128
+ "axlogo": {
129
+ "file": "&JP/jarvisplot/cards/icons/gambit_small.png",
130
+ "text": [
131
+ {
132
+ "x": 0.0,
133
+ "y": -0.5,
134
+ "s": "GAMBIT 2.7",
135
+ "ha": "left",
136
+ "va": "bottom",
137
+ "color": "black",
138
+ "fontfamily": "Fira code",
139
+ "fontsize": 5.0,
140
+ "fontstyle": "normal",
141
+ "fontweight": "normal"
142
+ }
143
+ ]
127
144
  }
128
145
  },
129
146
  "Style": {
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "JarvisPLOT"
7
- version = "1.4.1"
7
+ version = "1.4.2"
8
8
  description = "Jarvis-PLOT: YAML-driven plotting engine"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes