figrecipe 0.6.0__py3-none-any.whl → 0.9.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. figrecipe/__init__.py +161 -1030
  2. figrecipe/__main__.py +12 -0
  3. figrecipe/_api/__init__.py +48 -0
  4. figrecipe/_api/_extract.py +108 -0
  5. figrecipe/_api/_notebook.py +61 -0
  6. figrecipe/_api/_panel.py +113 -0
  7. figrecipe/_api/_save.py +287 -0
  8. figrecipe/_api/_seaborn_proxy.py +34 -0
  9. figrecipe/_api/_style_manager.py +153 -0
  10. figrecipe/_api/_subplots.py +333 -0
  11. figrecipe/_api/_validate.py +82 -0
  12. figrecipe/_cli/__init__.py +7 -0
  13. figrecipe/_cli/_compose.py +87 -0
  14. figrecipe/_cli/_convert.py +117 -0
  15. figrecipe/_cli/_crop.py +82 -0
  16. figrecipe/_cli/_edit.py +70 -0
  17. figrecipe/_cli/_extract.py +128 -0
  18. figrecipe/_cli/_fonts.py +47 -0
  19. figrecipe/_cli/_info.py +67 -0
  20. figrecipe/_cli/_main.py +58 -0
  21. figrecipe/_cli/_reproduce.py +79 -0
  22. figrecipe/_cli/_style.py +77 -0
  23. figrecipe/_cli/_validate.py +66 -0
  24. figrecipe/_cli/_version.py +50 -0
  25. figrecipe/_composition/__init__.py +32 -0
  26. figrecipe/_composition/_alignment.py +452 -0
  27. figrecipe/_composition/_compose.py +179 -0
  28. figrecipe/_composition/_import_axes.py +127 -0
  29. figrecipe/_composition/_visibility.py +125 -0
  30. figrecipe/_dev/__init__.py +4 -93
  31. figrecipe/_dev/_plotters.py +76 -0
  32. figrecipe/_dev/_run_demos.py +56 -0
  33. figrecipe/_dev/browser/__init__.py +69 -0
  34. figrecipe/_dev/browser/_audio.py +240 -0
  35. figrecipe/_dev/browser/_caption.py +356 -0
  36. figrecipe/_dev/browser/_click_effect.py +146 -0
  37. figrecipe/_dev/browser/_cursor.py +196 -0
  38. figrecipe/_dev/browser/_highlight.py +105 -0
  39. figrecipe/_dev/browser/_narration.py +237 -0
  40. figrecipe/_dev/browser/_recorder.py +446 -0
  41. figrecipe/_dev/browser/_utils.py +178 -0
  42. figrecipe/_dev/browser/_video_trim/__init__.py +152 -0
  43. figrecipe/_dev/browser/_video_trim/_detection.py +223 -0
  44. figrecipe/_dev/browser/_video_trim/_markers.py +140 -0
  45. figrecipe/_dev/demo_plotters/__init__.py +35 -166
  46. figrecipe/_dev/demo_plotters/_categories.py +81 -0
  47. figrecipe/_dev/demo_plotters/_figure_creators.py +119 -0
  48. figrecipe/_dev/demo_plotters/_helpers.py +31 -0
  49. figrecipe/_dev/demo_plotters/_registry.py +50 -0
  50. figrecipe/_dev/demo_plotters/bar_categorical/__init__.py +4 -0
  51. figrecipe/_dev/demo_plotters/contour_surface/__init__.py +4 -0
  52. figrecipe/_dev/demo_plotters/distribution/__init__.py +4 -0
  53. figrecipe/_dev/demo_plotters/image_matrix/__init__.py +4 -0
  54. figrecipe/_dev/demo_plotters/line_curve/__init__.py +4 -0
  55. figrecipe/_dev/demo_plotters/{plot_plot.py → line_curve/plot_plot.py} +3 -2
  56. figrecipe/_dev/demo_plotters/scatter_points/__init__.py +4 -0
  57. figrecipe/_dev/demo_plotters/special/__init__.py +4 -0
  58. figrecipe/_dev/demo_plotters/{plot_pie.py → special/plot_pie.py} +5 -1
  59. figrecipe/_dev/demo_plotters/spectral_signal/__init__.py +4 -0
  60. figrecipe/_dev/demo_plotters/vector_flow/__init__.py +4 -0
  61. figrecipe/_editor/__init__.py +61 -13
  62. figrecipe/_editor/_bbox/__init__.py +43 -0
  63. figrecipe/_editor/_bbox/_collections.py +177 -0
  64. figrecipe/_editor/_bbox/_elements.py +159 -0
  65. figrecipe/_editor/_bbox/_extract.py +402 -0
  66. figrecipe/_editor/_bbox/_extract_axes.py +370 -0
  67. figrecipe/_editor/_bbox/_extract_text.py +466 -0
  68. figrecipe/_editor/_bbox/_lines.py +173 -0
  69. figrecipe/_editor/_bbox/_transforms.py +146 -0
  70. figrecipe/_editor/_call_overrides.py +183 -0
  71. figrecipe/_editor/_datatable_plot_handlers.py +249 -0
  72. figrecipe/_editor/_figure_layout.py +211 -0
  73. figrecipe/_editor/_flask_app.py +200 -1030
  74. figrecipe/_editor/_helpers.py +251 -0
  75. figrecipe/_editor/_hitmap/__init__.py +76 -0
  76. figrecipe/_editor/_hitmap/_artists/__init__.py +21 -0
  77. figrecipe/_editor/_hitmap/_artists/_collections.py +345 -0
  78. figrecipe/_editor/_hitmap/_artists/_images.py +68 -0
  79. figrecipe/_editor/_hitmap/_artists/_lines.py +107 -0
  80. figrecipe/_editor/_hitmap/_artists/_patches.py +163 -0
  81. figrecipe/_editor/_hitmap/_artists/_text.py +190 -0
  82. figrecipe/_editor/_hitmap/_colors.py +181 -0
  83. figrecipe/_editor/_hitmap/_detect.py +194 -0
  84. figrecipe/_editor/_hitmap/_restore.py +154 -0
  85. figrecipe/_editor/_hitmap_main.py +182 -0
  86. figrecipe/_editor/_overrides.py +4 -1
  87. figrecipe/_editor/_plot_types_registry.py +190 -0
  88. figrecipe/_editor/_preferences.py +135 -0
  89. figrecipe/_editor/_render_overrides.py +507 -0
  90. figrecipe/_editor/_renderer.py +81 -186
  91. figrecipe/_editor/_routes_annotation.py +114 -0
  92. figrecipe/_editor/_routes_axis.py +482 -0
  93. figrecipe/_editor/_routes_captions.py +130 -0
  94. figrecipe/_editor/_routes_composition.py +270 -0
  95. figrecipe/_editor/_routes_core.py +126 -0
  96. figrecipe/_editor/_routes_datatable.py +364 -0
  97. figrecipe/_editor/_routes_element.py +335 -0
  98. figrecipe/_editor/_routes_files.py +443 -0
  99. figrecipe/_editor/_routes_image.py +200 -0
  100. figrecipe/_editor/_routes_snapshot.py +94 -0
  101. figrecipe/_editor/_routes_style.py +243 -0
  102. figrecipe/_editor/_templates/__init__.py +116 -1
  103. figrecipe/_editor/_templates/_html.py +154 -64
  104. figrecipe/_editor/_templates/_html_components/__init__.py +13 -0
  105. figrecipe/_editor/_templates/_html_components/_composition_toolbar.py +79 -0
  106. figrecipe/_editor/_templates/_html_components/_file_browser.py +41 -0
  107. figrecipe/_editor/_templates/_html_datatable.py +92 -0
  108. figrecipe/_editor/_templates/_scripts/__init__.py +178 -0
  109. figrecipe/_editor/_templates/_scripts/_accordion.py +328 -0
  110. figrecipe/_editor/_templates/_scripts/_annotation_drag.py +504 -0
  111. figrecipe/_editor/_templates/_scripts/_api.py +228 -0
  112. figrecipe/_editor/_templates/_scripts/_canvas_context_menu.py +182 -0
  113. figrecipe/_editor/_templates/_scripts/_captions.py +231 -0
  114. figrecipe/_editor/_templates/_scripts/_colors.py +485 -0
  115. figrecipe/_editor/_templates/_scripts/_composition.py +283 -0
  116. figrecipe/_editor/_templates/_scripts/_core.py +493 -0
  117. figrecipe/_editor/_templates/_scripts/_datatable/__init__.py +59 -0
  118. figrecipe/_editor/_templates/_scripts/_datatable/_cell_edit.py +97 -0
  119. figrecipe/_editor/_templates/_scripts/_datatable/_clipboard.py +164 -0
  120. figrecipe/_editor/_templates/_scripts/_datatable/_context_menu.py +221 -0
  121. figrecipe/_editor/_templates/_scripts/_datatable/_core.py +150 -0
  122. figrecipe/_editor/_templates/_scripts/_datatable/_editable.py +511 -0
  123. figrecipe/_editor/_templates/_scripts/_datatable/_import.py +161 -0
  124. figrecipe/_editor/_templates/_scripts/_datatable/_plot.py +261 -0
  125. figrecipe/_editor/_templates/_scripts/_datatable/_selection.py +438 -0
  126. figrecipe/_editor/_templates/_scripts/_datatable/_table.py +256 -0
  127. figrecipe/_editor/_templates/_scripts/_datatable/_tabs.py +354 -0
  128. figrecipe/_editor/_templates/_scripts/_debug_snapshot.py +186 -0
  129. figrecipe/_editor/_templates/_scripts/_element_editor.py +325 -0
  130. figrecipe/_editor/_templates/_scripts/_files.py +429 -0
  131. figrecipe/_editor/_templates/_scripts/_files_context_menu.py +240 -0
  132. figrecipe/_editor/_templates/_scripts/_hitmap.py +512 -0
  133. figrecipe/_editor/_templates/_scripts/_image_drop.py +428 -0
  134. figrecipe/_editor/_templates/_scripts/_inspector.py +315 -0
  135. figrecipe/_editor/_templates/_scripts/_labels.py +464 -0
  136. figrecipe/_editor/_templates/_scripts/_legend_drag.py +270 -0
  137. figrecipe/_editor/_templates/_scripts/_modals.py +226 -0
  138. figrecipe/_editor/_templates/_scripts/_multi_select.py +198 -0
  139. figrecipe/_editor/_templates/_scripts/_overlays.py +292 -0
  140. figrecipe/_editor/_templates/_scripts/_panel_drag.py +505 -0
  141. figrecipe/_editor/_templates/_scripts/_panel_drag_snapshot.py +33 -0
  142. figrecipe/_editor/_templates/_scripts/_panel_position.py +463 -0
  143. figrecipe/_editor/_templates/_scripts/_panel_resize.py +230 -0
  144. figrecipe/_editor/_templates/_scripts/_panel_snap.py +307 -0
  145. figrecipe/_editor/_templates/_scripts/_region_select.py +255 -0
  146. figrecipe/_editor/_templates/_scripts/_selection.py +244 -0
  147. figrecipe/_editor/_templates/_scripts/_sync.py +242 -0
  148. figrecipe/_editor/_templates/_scripts/_tabs.py +89 -0
  149. figrecipe/_editor/_templates/_scripts/_undo_redo.py +348 -0
  150. figrecipe/_editor/_templates/_scripts/_view_mode.py +107 -0
  151. figrecipe/_editor/_templates/_scripts/_zoom.py +212 -0
  152. figrecipe/_editor/_templates/_styles/__init__.py +78 -0
  153. figrecipe/_editor/_templates/_styles/_base.py +111 -0
  154. figrecipe/_editor/_templates/_styles/_buttons.py +327 -0
  155. figrecipe/_editor/_templates/_styles/_color_input.py +123 -0
  156. figrecipe/_editor/_templates/_styles/_composition.py +87 -0
  157. figrecipe/_editor/_templates/_styles/_controls.py +430 -0
  158. figrecipe/_editor/_templates/_styles/_datatable/__init__.py +40 -0
  159. figrecipe/_editor/_templates/_styles/_datatable/_editable.py +203 -0
  160. figrecipe/_editor/_templates/_styles/_datatable/_panel.py +268 -0
  161. figrecipe/_editor/_templates/_styles/_datatable/_table.py +479 -0
  162. figrecipe/_editor/_templates/_styles/_datatable/_toolbar.py +384 -0
  163. figrecipe/_editor/_templates/_styles/_datatable/_vars.py +123 -0
  164. figrecipe/_editor/_templates/_styles/_dynamic_props.py +144 -0
  165. figrecipe/_editor/_templates/_styles/_file_browser.py +466 -0
  166. figrecipe/_editor/_templates/_styles/_forms.py +224 -0
  167. figrecipe/_editor/_templates/_styles/_hitmap.py +191 -0
  168. figrecipe/_editor/_templates/_styles/_inspector.py +90 -0
  169. figrecipe/_editor/_templates/_styles/_labels.py +118 -0
  170. figrecipe/_editor/_templates/_styles/_modals.py +127 -0
  171. figrecipe/_editor/_templates/_styles/_overlays.py +130 -0
  172. figrecipe/_editor/_templates/_styles/_preview.py +430 -0
  173. figrecipe/_editor/_templates/_styles/_selection.py +73 -0
  174. figrecipe/_editor/_templates/_styles/_spinner.py +117 -0
  175. figrecipe/_editor/static/audio/click.mp3 +0 -0
  176. figrecipe/_editor/static/click.mp3 +0 -0
  177. figrecipe/_editor/static/icons/favicon.ico +0 -0
  178. figrecipe/_integrations/__init__.py +17 -0
  179. figrecipe/_integrations/_scitex_stats.py +298 -0
  180. figrecipe/_params/_DECORATION_METHODS.py +8 -0
  181. figrecipe/_recorder.py +63 -109
  182. figrecipe/_recorder_utils.py +124 -0
  183. figrecipe/_reproducer/__init__.py +18 -0
  184. figrecipe/_reproducer/_core.py +509 -0
  185. figrecipe/_reproducer/_custom_plots.py +279 -0
  186. figrecipe/_reproducer/_seaborn.py +100 -0
  187. figrecipe/_reproducer/_violin.py +186 -0
  188. figrecipe/_signatures/_kwargs.py +273 -0
  189. figrecipe/_signatures/_loader.py +21 -423
  190. figrecipe/_signatures/_parsing.py +147 -0
  191. figrecipe/_utils/__init__.py +3 -0
  192. figrecipe/_utils/_bundle.py +205 -0
  193. figrecipe/_wrappers/_axes.py +252 -895
  194. figrecipe/_wrappers/_axes_helpers.py +136 -0
  195. figrecipe/_wrappers/_axes_plots.py +418 -0
  196. figrecipe/_wrappers/_axes_seaborn.py +157 -0
  197. figrecipe/_wrappers/_caption_generator.py +218 -0
  198. figrecipe/_wrappers/_figure.py +188 -1
  199. figrecipe/_wrappers/_panel_labels.py +127 -0
  200. figrecipe/_wrappers/_plot_helpers.py +143 -0
  201. figrecipe/_wrappers/_stat_annotation.py +274 -0
  202. figrecipe/_wrappers/_violin_helpers.py +180 -0
  203. figrecipe/styles/__init__.py +8 -6
  204. figrecipe/styles/_dotdict.py +72 -0
  205. figrecipe/styles/_finalize.py +134 -0
  206. figrecipe/styles/_fonts.py +77 -0
  207. figrecipe/styles/_kwargs_converter.py +178 -0
  208. figrecipe/styles/_plot_styles.py +209 -0
  209. figrecipe/styles/_style_applier.py +42 -480
  210. figrecipe/styles/_style_loader.py +16 -192
  211. figrecipe/styles/_themes.py +151 -0
  212. figrecipe/styles/presets/MATPLOTLIB.yaml +2 -1
  213. figrecipe/styles/presets/SCITEX.yaml +40 -28
  214. figrecipe-0.9.0.dist-info/METADATA +427 -0
  215. figrecipe-0.9.0.dist-info/RECORD +277 -0
  216. figrecipe-0.9.0.dist-info/entry_points.txt +2 -0
  217. figrecipe/_editor/_bbox.py +0 -978
  218. figrecipe/_editor/_hitmap.py +0 -937
  219. figrecipe/_editor/_templates/_scripts.py +0 -2778
  220. figrecipe/_editor/_templates/_styles.py +0 -1326
  221. figrecipe/_reproducer.py +0 -975
  222. figrecipe-0.6.0.dist-info/METADATA +0 -394
  223. figrecipe-0.6.0.dist-info/RECORD +0 -90
  224. /figrecipe/_dev/demo_plotters/{plot_bar.py → bar_categorical/plot_bar.py} +0 -0
  225. /figrecipe/_dev/demo_plotters/{plot_barh.py → bar_categorical/plot_barh.py} +0 -0
  226. /figrecipe/_dev/demo_plotters/{plot_contour.py → contour_surface/plot_contour.py} +0 -0
  227. /figrecipe/_dev/demo_plotters/{plot_contourf.py → contour_surface/plot_contourf.py} +0 -0
  228. /figrecipe/_dev/demo_plotters/{plot_tricontour.py → contour_surface/plot_tricontour.py} +0 -0
  229. /figrecipe/_dev/demo_plotters/{plot_tricontourf.py → contour_surface/plot_tricontourf.py} +0 -0
  230. /figrecipe/_dev/demo_plotters/{plot_tripcolor.py → contour_surface/plot_tripcolor.py} +0 -0
  231. /figrecipe/_dev/demo_plotters/{plot_triplot.py → contour_surface/plot_triplot.py} +0 -0
  232. /figrecipe/_dev/demo_plotters/{plot_boxplot.py → distribution/plot_boxplot.py} +0 -0
  233. /figrecipe/_dev/demo_plotters/{plot_ecdf.py → distribution/plot_ecdf.py} +0 -0
  234. /figrecipe/_dev/demo_plotters/{plot_hist.py → distribution/plot_hist.py} +0 -0
  235. /figrecipe/_dev/demo_plotters/{plot_hist2d.py → distribution/plot_hist2d.py} +0 -0
  236. /figrecipe/_dev/demo_plotters/{plot_violinplot.py → distribution/plot_violinplot.py} +0 -0
  237. /figrecipe/_dev/demo_plotters/{plot_hexbin.py → image_matrix/plot_hexbin.py} +0 -0
  238. /figrecipe/_dev/demo_plotters/{plot_imshow.py → image_matrix/plot_imshow.py} +0 -0
  239. /figrecipe/_dev/demo_plotters/{plot_matshow.py → image_matrix/plot_matshow.py} +0 -0
  240. /figrecipe/_dev/demo_plotters/{plot_pcolor.py → image_matrix/plot_pcolor.py} +0 -0
  241. /figrecipe/_dev/demo_plotters/{plot_pcolormesh.py → image_matrix/plot_pcolormesh.py} +0 -0
  242. /figrecipe/_dev/demo_plotters/{plot_spy.py → image_matrix/plot_spy.py} +0 -0
  243. /figrecipe/_dev/demo_plotters/{plot_errorbar.py → line_curve/plot_errorbar.py} +0 -0
  244. /figrecipe/_dev/demo_plotters/{plot_fill.py → line_curve/plot_fill.py} +0 -0
  245. /figrecipe/_dev/demo_plotters/{plot_fill_between.py → line_curve/plot_fill_between.py} +0 -0
  246. /figrecipe/_dev/demo_plotters/{plot_fill_betweenx.py → line_curve/plot_fill_betweenx.py} +0 -0
  247. /figrecipe/_dev/demo_plotters/{plot_stackplot.py → line_curve/plot_stackplot.py} +0 -0
  248. /figrecipe/_dev/demo_plotters/{plot_stairs.py → line_curve/plot_stairs.py} +0 -0
  249. /figrecipe/_dev/demo_plotters/{plot_step.py → line_curve/plot_step.py} +0 -0
  250. /figrecipe/_dev/demo_plotters/{plot_scatter.py → scatter_points/plot_scatter.py} +0 -0
  251. /figrecipe/_dev/demo_plotters/{plot_eventplot.py → special/plot_eventplot.py} +0 -0
  252. /figrecipe/_dev/demo_plotters/{plot_loglog.py → special/plot_loglog.py} +0 -0
  253. /figrecipe/_dev/demo_plotters/{plot_semilogx.py → special/plot_semilogx.py} +0 -0
  254. /figrecipe/_dev/demo_plotters/{plot_semilogy.py → special/plot_semilogy.py} +0 -0
  255. /figrecipe/_dev/demo_plotters/{plot_stem.py → special/plot_stem.py} +0 -0
  256. /figrecipe/_dev/demo_plotters/{plot_acorr.py → spectral_signal/plot_acorr.py} +0 -0
  257. /figrecipe/_dev/demo_plotters/{plot_angle_spectrum.py → spectral_signal/plot_angle_spectrum.py} +0 -0
  258. /figrecipe/_dev/demo_plotters/{plot_cohere.py → spectral_signal/plot_cohere.py} +0 -0
  259. /figrecipe/_dev/demo_plotters/{plot_csd.py → spectral_signal/plot_csd.py} +0 -0
  260. /figrecipe/_dev/demo_plotters/{plot_magnitude_spectrum.py → spectral_signal/plot_magnitude_spectrum.py} +0 -0
  261. /figrecipe/_dev/demo_plotters/{plot_phase_spectrum.py → spectral_signal/plot_phase_spectrum.py} +0 -0
  262. /figrecipe/_dev/demo_plotters/{plot_psd.py → spectral_signal/plot_psd.py} +0 -0
  263. /figrecipe/_dev/demo_plotters/{plot_specgram.py → spectral_signal/plot_specgram.py} +0 -0
  264. /figrecipe/_dev/demo_plotters/{plot_xcorr.py → spectral_signal/plot_xcorr.py} +0 -0
  265. /figrecipe/_dev/demo_plotters/{plot_barbs.py → vector_flow/plot_barbs.py} +0 -0
  266. /figrecipe/_dev/demo_plotters/{plot_quiver.py → vector_flow/plot_quiver.py} +0 -0
  267. /figrecipe/_dev/demo_plotters/{plot_streamplot.py → vector_flow/plot_streamplot.py} +0 -0
  268. {figrecipe-0.6.0.dist-info → figrecipe-0.9.0.dist-info}/WHEEL +0 -0
  269. {figrecipe-0.6.0.dist-info → figrecipe-0.9.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,394 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: figrecipe
3
- Version: 0.6.0
4
- Summary: Reproducible matplotlib wrapper with mm-precision layouts
5
- Project-URL: Homepage, https://github.com/ywatanabe1989/figrecipe
6
- Project-URL: Documentation, https://github.com/ywatanabe1989/figrecipe#readme
7
- Project-URL: Repository, https://github.com/ywatanabe1989/figrecipe.git
8
- Project-URL: Issues, https://github.com/ywatanabe1989/figrecipe/issues
9
- Author-email: Yusuke Watanabe <ywatanabe@scitex.ai>
10
- License-Expression: AGPL-3.0
11
- License-File: LICENSE
12
- Keywords: matplotlib,millimeter,plotting,publication,recipe,reproducibility,scientific,visualization,yaml
13
- Classifier: Development Status :: 4 - Beta
14
- Classifier: Intended Audience :: Science/Research
15
- Classifier: License :: OSI Approved :: GNU Affero General Public License v3
16
- Classifier: Operating System :: OS Independent
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.9
19
- Classifier: Programming Language :: Python :: 3.10
20
- Classifier: Programming Language :: Python :: 3.11
21
- Classifier: Programming Language :: Python :: 3.12
22
- Classifier: Topic :: Scientific/Engineering :: Visualization
23
- Requires-Python: >=3.9
24
- Requires-Dist: matplotlib>=3.5.0
25
- Requires-Dist: numpy>=1.20.0
26
- Requires-Dist: ruamel-yaml>=0.17.0
27
- Requires-Dist: scipy>=1.7.0
28
- Provides-Extra: all
29
- Requires-Dist: flask>=2.0.0; extra == 'all'
30
- Requires-Dist: pandas>=1.3.0; extra == 'all'
31
- Requires-Dist: pillow>=9.0.0; extra == 'all'
32
- Requires-Dist: pytest-cov>=4.0.0; extra == 'all'
33
- Requires-Dist: pytest>=7.0.0; extra == 'all'
34
- Requires-Dist: seaborn>=0.12.0; extra == 'all'
35
- Provides-Extra: dev
36
- Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
37
- Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
38
- Requires-Dist: pytest>=7.0.0; extra == 'dev'
39
- Provides-Extra: editor
40
- Requires-Dist: flask>=2.0.0; extra == 'editor'
41
- Requires-Dist: pillow>=9.0.0; extra == 'editor'
42
- Provides-Extra: imaging
43
- Requires-Dist: pillow>=9.0.0; extra == 'imaging'
44
- Provides-Extra: seaborn
45
- Requires-Dist: pandas>=1.3.0; extra == 'seaborn'
46
- Requires-Dist: seaborn>=0.12.0; extra == 'seaborn'
47
- Description-Content-Type: text/markdown
48
-
49
- <!-- ---
50
- !-- Timestamp: 2025-12-22 14:49:10
51
- !-- Author: ywatanabe
52
- !-- File: /home/ywatanabe/proj/figrecipe/README.md
53
- !-- --- -->
54
-
55
- <p align="center">
56
- <img src="docs/figrecipe_logo.png" alt="figrecipe logo" width="200"/>
57
- </p>
58
-
59
- # FigRecipe
60
-
61
- **Reproducible matplotlib figures with mm-precision layouts.**
62
- FigRecipe is a lightweight recording & reproduction layer for matplotlib,
63
- designed for scientific figures that must remain **editable, inspectable,
64
- and reproducible**.
65
-
66
- Part of **SciTeX™ – Research OS for reproducible science**
67
- https://scitex.ai
68
-
69
- [![PyPI version](https://badge.fury.io/py/figrecipe.svg)](https://badge.fury.io/py/figrecipe)
70
- [![Tests](https://github.com/ywatanabe1989/figrecipe/actions/workflows/test.yml/badge.svg)](https://github.com/ywatanabe1989/figrecipe/actions/workflows/test.yml)
71
- [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
72
-
73
- ---
74
-
75
- ## Why FigRecipe?
76
-
77
- In scientific workflows, figures are often:
78
- - hard to reproduce once scripts change,
79
- - resized manually in pixels or inches,
80
- - impossible to partially reuse or inspect later.
81
-
82
- **FigRecipe solves this by recording plotting calls as a structured “recipe”**,
83
- allowing figures to be:
84
- - faithfully reproduced,
85
- - partially re-rendered,
86
- - inspected for underlying data,
87
- - laid out in **exact millimeters** for publication.
88
-
89
- ---
90
-
91
- ## Key Features
92
-
93
- - ✅ Drop-in replacement for `matplotlib.pyplot` (use `figrecipe.pyplot` to enable recording)
94
- - ✅ Automatic recording of plotting calls
95
- - ✅ Reproduce figures from a YAML recipe
96
- - ✅ Extract plotted data programmatically
97
- - ✅ Selective reproduction of specific plots
98
- - ✅ Millimeter-based layout (journal-ready)
99
- - ✅ Publication-quality style presets
100
- - ✅ Dark theme support (data colors preserved)
101
- - ✅ Seamless seaborn integration
102
- - ✅ Crop figures to content with mm margins
103
- - ✅ **Interactive GUI editor** with live preview
104
-
105
- ---
106
-
107
- ## Examples
108
-
109
- 📓 **[View Demo Notebook on nbviewer](https://nbviewer.org/github/ywatanabe1989/figrecipe/blob/main/examples/figrecipe_demo.ipynb)** (recommended)
110
-
111
- The notebook includes side-by-side comparisons of original and reproduced figures.
112
-
113
- Source: [examples/figrecipe_demo.ipynb](examples/figrecipe_demo.ipynb)
114
-
115
- ## Installation
116
-
117
- ```bash
118
- pip install figrecipe
119
-
120
- # Optional extras
121
- pip install figrecipe[seaborn] # seaborn + pandas support
122
- pip install figrecipe[imaging] # image cropping (Pillow)
123
- pip install figrecipe[all] # all extras
124
-
125
- # Optional: for PDF export from notebooks (SVG → PDF)
126
- sudo apt install inkscape # Linux
127
- brew install inkscape # macOS
128
- ```
129
-
130
- **Requirements:** Python >= 3.9
131
-
132
- ## Basic Usage
133
-
134
- ### Recording & Saving
135
-
136
- ``` python
137
- import figrecipe as fr
138
- # import figrecipe.pyplot as plt
139
- import numpy as np
140
-
141
- x = np.linspace(0, 10, 100)
142
- y = np.sin(x)
143
-
144
- fig, ax = fr.subplots() # or plt.subplots()
145
- ax.plot(x, y, color='red', linewidth=2, id='sine_wave')
146
- ax.set_xlabel('Time (s)')
147
- ax.set_ylabel('Amplitude')
148
-
149
- # Save image + recipe
150
- img_path, yaml_path, result = fr.save(fig, 'figure.png')
151
- # → creates: figure.png + figure.yaml
152
- ```
153
-
154
- ### Reproducing a Figure
155
-
156
- ``` python
157
- import figrecipe as fr
158
-
159
- fig, ax = fr.reproduce('figure.yaml')
160
- ```
161
-
162
- ### Extracting Plotted Data
163
-
164
- ``` python
165
- import figrecipe as fr
166
-
167
- data = fr.extract_data('figure.yaml')
168
- # {'sine_wave': {'x': array([...]), 'y': array([...])}}
169
- ```
170
-
171
- ### Millimeter-Based Layout (Publication-Ready)
172
-
173
- ``` python
174
- fig, ax = fr.subplots(
175
- axes_width_mm=60,
176
- axes_height_mm=40,
177
- margin_left_mm=15,
178
- margin_bottom_mm=12,
179
- )
180
- ```
181
- This guarantees consistent sizing across editors, exports, and journals.
182
-
183
- ### Style Presets
184
-
185
- ``` python
186
- fr.list_presets()
187
- # ['MATPLOTLIB', 'SCITEX']
188
-
189
- # Publication-quality preset (applied globally)
190
- fr.load_style('SCITEX')
191
- fig, ax = fr.subplots()
192
-
193
- # Dark theme (UI-only, data colors preserved)
194
- fr.load_style('SCITEX_DARK')
195
- # or: fr.load_style('SCITEX', dark=True)
196
-
197
- # Custom style
198
- fr.load_style('/path/to/my_style.yaml')
199
- ```
200
-
201
- See [src/figrecipe/styles/presets/](src/figrecipe/styles/presets/) for full examples.
202
-
203
- ### Interactive GUI Editor
204
-
205
- ``` python
206
- import figrecipe as fr
207
- import numpy as np
208
-
209
- fig, ax = fr.subplots()
210
- ax.plot(np.sin(np.linspace(0, 10, 100)))
211
-
212
- # Launch browser-based editor
213
- overrides = fr.edit(fig, port=5050)
214
-
215
- # Returns style overrides when editor is closed (Ctrl+C)
216
- # Apply overrides to future figures or save to custom YAML
217
- ```
218
-
219
- The editor provides:
220
- - **Live preview** with real-time style updates
221
- - **Theme switching** between SCITEX/MATPLOTLIB presets
222
- - **Element selection** with hover highlighting
223
- - **Property panels** for Figure, Axis, Legend, and Labels
224
- - **Download** in PNG, SVG, PDF formats
225
- - **Export** updated recipe YAML
226
-
227
- ### Style Format (YAML)
228
-
229
- ``` yaml
230
- # Timestamp: "2025-12-22 12:40:36 (ywatanabe)"
231
- # File: ./src/figrecipe/styles/presets/SCITEX.yaml
232
- # FIGRECIPE Style Preset
233
- # ======================
234
- # Publication-quality settings for scientific figures.
235
- # Optimized for scientific journals with Arial font.
236
-
237
- axes:
238
- width_mm: 40
239
- height_mm: 28
240
- thickness_mm: 0.2
241
-
242
- margins:
243
- left_mm: 1
244
- right_mm: 1
245
- bottom_mm: 1
246
- top_mm: 1
247
-
248
- spacing:
249
- horizontal_mm: 8
250
- vertical_mm: 10
251
-
252
- fonts:
253
- family: "Arial"
254
- axis_label_pt: 7
255
- tick_label_pt: 7
256
- title_pt: 8
257
- suptitle_pt: 8
258
- legend_pt: 6
259
- annotation_pt: 6
260
-
261
- padding:
262
- label_pt: 2.0
263
- tick_pt: 2.0
264
- title_pt: 4.0
265
-
266
- lines:
267
- trace_mm: 0.2
268
- errorbar_mm: 0.2
269
- errorbar_cap_mm: 0.8
270
-
271
- ticks:
272
- length_mm: 0.8
273
- thickness_mm: 0.2
274
- direction: "out"
275
- n_ticks: 4
276
-
277
- markers:
278
- size_mm: 0.8
279
- scatter_mm: 0.8
280
- edge_width_mm: null # None = no border (cleaner than 0)
281
-
282
- legend:
283
- frameon: false # No frame for clean look
284
- bg: null # Background (null = use theme.legend_bg)
285
- edgecolor: null # Frame edge color
286
- alpha: 1.0 # Transparency
287
- loc: "best"
288
-
289
- output:
290
- dpi: 300
291
- transparent: true
292
- format: "pdf"
293
-
294
- behavior:
295
- auto_scale_axes: true
296
- hide_top_spine: true
297
- hide_right_spine: true
298
- grid: false
299
-
300
- theme:
301
- mode: "light"
302
- dark:
303
- figure_bg: "transparent"
304
- axes_bg: "transparent"
305
- legend_bg: "transparent"
306
- text: "#d4d4d4"
307
- spine: "#d4d4d4"
308
- tick: "#d4d4d4"
309
- grid: "#3a3a3a"
310
- light:
311
- figure_bg: "transparent"
312
- axes_bg: "transparent"
313
- legend_bg: "transparent"
314
- text: "black"
315
- spine: "black"
316
- tick: "black"
317
- grid: "#cccccc"
318
-
319
- # SciTeX Color Palette (RGB format)
320
- colors:
321
- palette:
322
- - [0, 128, 192] # blue
323
- - [255, 70, 50] # red
324
- - [20, 180, 20] # green
325
- - [230, 160, 20] # yellow
326
- - [200, 50, 255] # purple
327
- - [20, 200, 200] # lightblue
328
- - [228, 94, 50] # orange
329
- - [255, 150, 200] # pink
330
-
331
- # Named colors
332
- white: [255, 255, 255]
333
- black: [0, 0, 0]
334
- blue: [0, 128, 192]
335
- red: [255, 70, 50]
336
- pink: [255, 150, 200]
337
- green: [20, 180, 20]
338
- yellow: [230, 160, 20]
339
- gray: [128, 128, 128]
340
- grey: [128, 128, 128]
341
- purple: [200, 50, 255]
342
- lightblue: [20, 200, 200]
343
- brown: [128, 0, 0]
344
- navy: [0, 0, 100]
345
- orange: [228, 94, 50]
346
-
347
- # Semantic
348
- primary: [0, 128, 192]
349
- secondary: [255, 70, 50]
350
- accent: [20, 180, 20]
351
-
352
- # EOF
353
- ```
354
-
355
-
356
- ### API Overview
357
-
358
- | Import | Description |
359
- |----------------------------------|---------------------------------------------------|
360
- | `import figrecipe.pyplot as plt` | Drop-in replacement of `matplotlib.pyplot as plt` |
361
- | `import figrecipe as fr` | Import figrecipe package |
362
- |----------------------------------|---------------------------------------------------|
363
- | Function | |
364
- |----------------------------------|---------------------------------------------------|
365
- | `fr.subplots()` | Create a recording-enabled figure |
366
- | `fr.save(fig, 'fig.png')` | Save image + recipe |
367
- | `fr.reproduce('fig.yaml')` | Reproduce figure from recipe |
368
- | `fr.extract_data('fig.yaml')` | Extract plotted data |
369
- | `fr.info('fig.yaml')` | Inspect recipe metadata |
370
- | `fr.edit(fig)` | Launch interactive GUI editor |
371
- | `fr.load_style()` | Load style preset (global) |
372
- | `fr.list_presets()` | List available presets |
373
- | `fr.crop('fig.png')` | Crop to content with mm margin |
374
-
375
- ## Positioning
376
-
377
- FigRecipe focuses on *how* figures are constructed, not *what* they represent.
378
-
379
- FigRecipe provides recording, reproduction, layout fidelity, and interactive editing.
380
-
381
- Higher-level workflows (figures–tables–statistics bundle, integration with manuscript writing) are handled in:
382
-
383
- FTS (Figure-Table-Statistics Bundle) in SciTeX Ecosystem:
384
- https://github.com/ywatanabe1989/scitex-code
385
- https://scitex.ai/vis/
386
- https://scitex.ai/writer/
387
-
388
-
389
- ## License
390
-
391
- AGPL-3.0 See [LICENSE](LICENSE)
392
- .
393
-
394
- <!-- EOF -->
@@ -1,90 +0,0 @@
1
- figrecipe/__init__.py,sha256=0e2XWApmdZk4AnledqGGb5ptLahZ-1I5NaIjUS3YzyY,41731
2
- figrecipe/_recorder.py,sha256=oF52PizJjPfBrjfb1-g-LlCdexSGNrVFZw4uUEb8TmU,15984
3
- figrecipe/_reproducer.py,sha256=b8Qjgmh12pSZgkHVKUSchz8UlK9FipD2D5zV-1KV-Hc,28933
4
- figrecipe/_seaborn.py,sha256=H_yDpHCB0F-6goQ6eY_3oe7LA3EhGanC7i2ScBnwcKE,8327
5
- figrecipe/_serializer.py,sha256=aNz-7SNjweFBcdK_9FXcptgLTd_jHFqG8q5E7gTVImE,6248
6
- figrecipe/_validator.py,sha256=Aevecjk8mCX-yp92BQkz9F5hxEPev9n-yQuDRaEO3CE,5821
7
- figrecipe/plt.py,sha256=rFmUE3dzCIVPm_kmHjMhj2u20u0gpinYO7HEooi3joE,280
8
- figrecipe/pyplot.py,sha256=WVdPgm-0R5Nw-wwNUMbUe9F1jn89DrwgYPhK6vXhqIc,5686
9
- figrecipe/_dev/__init__.py,sha256=RD8QbtlGfHFbFXd551DYw0KyCdXbflVnjBfSnBSNioo,3193
10
- figrecipe/_dev/demo_plotters/__init__.py,sha256=H4F0AMEQIc6gIGxI_5083yPhIgjMrT0Tl-XSn7AJeZM,5314
11
- figrecipe/_dev/demo_plotters/plot_acorr.py,sha256=URj5y4BwUpsaCdLZ3Z3PEnos0kTZSSSM90VSTAqo0xU,505
12
- figrecipe/_dev/demo_plotters/plot_angle_spectrum.py,sha256=aRR6pE1UIAU7vEPOVryvX8TinDoAX-V8Y48dYqr3qEE,697
13
- figrecipe/_dev/demo_plotters/plot_bar.py,sha256=yq0RRH9Gp7SXeaaekfNM0UqXTiFR882pWceUO05BrJ0,530
14
- figrecipe/_dev/demo_plotters/plot_barbs.py,sha256=if9EVceghVPREOSEvo9_qZQym3G74gFDV0zVsY6fWqI,625
15
- figrecipe/_dev/demo_plotters/plot_barh.py,sha256=UvldSfn-vVu_YdsLccfEC8ujkWQ0fmZdEZRRS9iM47Q,558
16
- figrecipe/_dev/demo_plotters/plot_boxplot.py,sha256=_FGUZKpKsCN0QkY3x3iD0T6SWVWIilqXQfnEdERnKms,543
17
- figrecipe/_dev/demo_plotters/plot_cohere.py,sha256=v0eRGcSo1i6f_pl9w87p9kI1MX6ag7zV55xH1_c3ews,671
18
- figrecipe/_dev/demo_plotters/plot_contour.py,sha256=SWz4aJnnz3BxzGD61kouXFM_x3rL75IFvPPXXGE5_zk,624
19
- figrecipe/_dev/demo_plotters/plot_contourf.py,sha256=ZsuwNwfNbnlOwFMYFsrIkAM3rJ-QAmgT26wYxxfGmk0,621
20
- figrecipe/_dev/demo_plotters/plot_csd.py,sha256=RMPSipAyF3tZjuA6QZYbptEbRmUUCqzLy-PzhCv5_Es,673
21
- figrecipe/_dev/demo_plotters/plot_ecdf.py,sha256=hjosy8Z10XXGrFcmkrF9Z7mMlZ-y2Bfku54kpEGs014,498
22
- figrecipe/_dev/demo_plotters/plot_errorbar.py,sha256=TIH1JPUJkepmnsS6CKAGmx5C4Mi2ho1nHmDzT3I_eew,583
23
- figrecipe/_dev/demo_plotters/plot_eventplot.py,sha256=0UFjOzUeI2Y8-f5VD6RsKqzBZAFekXrFeKHLDz_qvZY,578
24
- figrecipe/_dev/demo_plotters/plot_fill.py,sha256=U3F6YF05Wl68MDCe9-zdLjmRfN864X9o9Ty2D0AJ60k,585
25
- figrecipe/_dev/demo_plotters/plot_fill_between.py,sha256=EhcUIiGbK_8oLnQ-KIKckptM_gtMviJPnXVphwdV5PE,688
26
- figrecipe/_dev/demo_plotters/plot_fill_betweenx.py,sha256=ap4S91Ny6XKzJdS-xUyCrnDsG5sShkKbG5HbcR1g_YU,624
27
- figrecipe/_dev/demo_plotters/plot_hexbin.py,sha256=dcA2clgNpCndb8H2D8aTUcgsgDlk-eotUCvrJ-HUK1s,522
28
- figrecipe/_dev/demo_plotters/plot_hist.py,sha256=7KDdldxZZ1yw1e2IVw8JC6l7r-AxhGapxHvjmgiPN10,486
29
- figrecipe/_dev/demo_plotters/plot_hist2d.py,sha256=XES4qLGaE9yiVgzUehhH18I5SAmRr0BE-rq0J_SNcxw,512
30
- figrecipe/_dev/demo_plotters/plot_imshow.py,sha256=z8N70pjwnMqud9g83wszRdudZWSbCt_MoLukaq_XLl4,464
31
- figrecipe/_dev/demo_plotters/plot_loglog.py,sha256=7IiBJeFDB865Ly7uVXbUyMX9PklpdrKUDX95kLWEFcs,513
32
- figrecipe/_dev/demo_plotters/plot_magnitude_spectrum.py,sha256=TbAyoyJ7INaLy8Gj7K0C2i8kr6slIqjP3BV5jDIOEHU,699
33
- figrecipe/_dev/demo_plotters/plot_matshow.py,sha256=6j_VzV0yMtd9CErvzXXUL7O615sWcPqGdsdufM6urwo,472
34
- figrecipe/_dev/demo_plotters/plot_pcolor.py,sha256=-G3K1l1m8WtVI_c9aIo1OsROb2o6O5YkMDWNZm3wmCE,596
35
- figrecipe/_dev/demo_plotters/plot_pcolormesh.py,sha256=MPAr9yTn41IeWP2ixiWkVVZWJnDi3qTrBr1tZkW_1J8,650
36
- figrecipe/_dev/demo_plotters/plot_phase_spectrum.py,sha256=D8Gvt66yFg-NMr9pBhWSOHvZC00sr73pI6Q-qymo2bs,685
37
- figrecipe/_dev/demo_plotters/plot_pie.py,sha256=bhpJpIlhKh9sAZ__Bm0GhtR97uVtTZPLF-zYom9RFL0,459
38
- figrecipe/_dev/demo_plotters/plot_plot.py,sha256=C1_x6mBMwzXMzCLR9dwDOhEsCNdVZa3IJmNwhlzzjFw,534
39
- figrecipe/_dev/demo_plotters/plot_psd.py,sha256=_5F0cQu1reUvx0dfXWYZ1BuKCjsg2jowNzEYRmvMmuc,672
40
- figrecipe/_dev/demo_plotters/plot_quiver.py,sha256=e3okVGvjZt_sqCEM_noikyPJ4HIxunH-RZosPVmuXAY,609
41
- figrecipe/_dev/demo_plotters/plot_scatter.py,sha256=-ZZGsRbgZSOvqMMGU0CrHKQkojeTfQPciC6eSorON5U,514
42
- figrecipe/_dev/demo_plotters/plot_semilogx.py,sha256=aDfCCiuZrbTgfiYD4wcq_5q66VE0FzUOG1h4V2boUBo,544
43
- figrecipe/_dev/demo_plotters/plot_semilogy.py,sha256=lqEuQHnI92eWrVhYTzExPUEkRZBrR02-Cgebnu1lXBE,542
44
- figrecipe/_dev/demo_plotters/plot_specgram.py,sha256=MyPjy3XVgD40zgD8sUIe6AkzkOD18JWKDMIDyhThP6s,670
45
- figrecipe/_dev/demo_plotters/plot_spy.py,sha256=lby0AHDpbXCec2EHbOWMg6EpBp4quHxfrvHMfgaBAH0,602
46
- figrecipe/_dev/demo_plotters/plot_stackplot.py,sha256=WUqYL3bqLurRCAPaDPHtRWeAtaIUOMbWPVS2vWrVlsw,622
47
- figrecipe/_dev/demo_plotters/plot_stairs.py,sha256=os3Elybe_vNarMo6wWUoQgxkBPhstebe6M67aCWPigQ,566
48
- figrecipe/_dev/demo_plotters/plot_stem.py,sha256=-F7AkHxwnizJ7_nkFj_Jw2PD4kgI2mN-RgSyIKkU_XI,504
49
- figrecipe/_dev/demo_plotters/plot_step.py,sha256=_qMs8H1Vj3EaG8FnAUOyiDgnRu_PpmQ9tB_mqqWY6nE,517
50
- figrecipe/_dev/demo_plotters/plot_streamplot.py,sha256=IulKlBfpK8SIIau_E_msZ3cNk2_nqDstMae6TEnl8uI,618
51
- figrecipe/_dev/demo_plotters/plot_tricontour.py,sha256=VkvwyPPKl_1GGWHxLbfeQrUCK-uPQ3t31DMmkyE_g3w,623
52
- figrecipe/_dev/demo_plotters/plot_tricontourf.py,sha256=mHF0WFnlHji65dXV347VYWsUB_LBIN68wLvRW9FZdwo,643
53
- figrecipe/_dev/demo_plotters/plot_tripcolor.py,sha256=UMFi9PETxs_En6Tzk54_bF9qUHjnQq8beCj8ZM6NARs,671
54
- figrecipe/_dev/demo_plotters/plot_triplot.py,sha256=Rkc-Y6zito57X2we1wfeGqM-GB0yBJDg7gkB8Py8doY,532
55
- figrecipe/_dev/demo_plotters/plot_violinplot.py,sha256=ssxe8YdXSlgtrk8sMjiaeUHAePpt4WUnCP_DLNu26q8,597
56
- figrecipe/_dev/demo_plotters/plot_xcorr.py,sha256=BUDU5phnG88UkJUdc4v-TGMR2RoPHQUNzCLwNhI7YpI,544
57
- figrecipe/_editor/__init__.py,sha256=GX3jN6Wh4asSkHPJOO88MoGemnsWvusp0qGGcR-nKZA,6511
58
- figrecipe/_editor/_bbox.py,sha256=Pis7E7idxynQTuw1hCOWFH8CeUAynvx3Rn-uJb2tbtg,29698
59
- figrecipe/_editor/_flask_app.py,sha256=vqcqi10PtKA4l7MT0CYfjC-b09lMAOt3MVTsfAZRl5M,45417
60
- figrecipe/_editor/_hitmap.py,sha256=TbCPqPek7qwNCrwM93Gj7Vj02ZgPVdJ_zO-aZmAaSVM,31301
61
- figrecipe/_editor/_overrides.py,sha256=Q7MWLo9bUBgnuYvPByC9TrYq_ajdBMPuKptw0CsohuY,8892
62
- figrecipe/_editor/_renderer.py,sha256=StrYAoCtjs7ClL9KlBPw0y7ZlJ1VlaK0nuHWNe_NbuI,10308
63
- figrecipe/_editor/_templates/__init__.py,sha256=cEDSRm1p-E16XiKTfK0co7zl_oWUkj8YJhAl2126kb0,2347
64
- figrecipe/_editor/_templates/_html.py,sha256=MWRYboevS_I0bghgY13iCxlZ-Kpi2gOJz9yRP9VWRRo,22394
65
- figrecipe/_editor/_templates/_scripts.py,sha256=eI7zEVEitrqDPXnMEzKCZPymYq1IUaz97AYCzl46msI,100135
66
- figrecipe/_editor/_templates/_styles.py,sha256=Vt_jnVXZTx15OmpzijdNnNyd3Vh3OLDFlmc4ycjZbBM,26457
67
- figrecipe/_params/_DECORATION_METHODS.py,sha256=YqHj7lbnLgwjFvkfEPwGlY2UcTTClVOEwxsQkHQCpj4,466
68
- figrecipe/_params/_PLOTTING_METHODS.py,sha256=6S2SvXPQpQ0Y6ut-8kUjyheMNtiDEQCY1aB59XPq788,929
69
- figrecipe/_params/__init__.py,sha256=EjlVg-n_DlASnSxQYW61kd8JnKeyo-1DMMusJUxm_io,245
70
- figrecipe/_signatures/README.md,sha256=eDchfORRdfMAdlPBTKMP3PgcIQywhK3KB1yps3YIzYw,1085
71
- figrecipe/_signatures/__init__.py,sha256=ekzkD0PG8dvRce7Rc3iRBo65GkOqYLP5hYBGIXfmaaQ,332
72
- figrecipe/_signatures/_loader.py,sha256=hcd2RC31_ZuSrn63bHqvYCrWuR3a0KJQCIzgNk6xOLA,21844
73
- figrecipe/_utils/__init__.py,sha256=TYh3wizq2WoUuopE8WZBvUTTSSJGud1EReb3INsSAM4,845
74
- figrecipe/_utils/_crop.py,sha256=vOZuggtGIeJYYwRBugq5OebF3a5s5j0h_3STPtfhJjU,8474
75
- figrecipe/_utils/_diff.py,sha256=cjRXjMrfXFKz6uZQOZ-XYifc0mzmHZyRXn_LY13K1SY,2354
76
- figrecipe/_utils/_image_diff.py,sha256=LCXRbXqEtr_mI5Xpk1ju59Fw5B2UqNtvYZx_Uyh98Sw,5416
77
- figrecipe/_utils/_numpy_io.py,sha256=YYUDtkyBEeXZ54iSpC_7CoxP33Yk1eoRbIabZYol-SY,4532
78
- figrecipe/_utils/_units.py,sha256=EJiG4-Fle3C5oQ7vNIqG_Ms_vru_0NPj39ESEXO84ZY,4656
79
- figrecipe/_wrappers/__init__.py,sha256=CcBUID5G6Mo_bNGpCaz5vbfB8CG7XtF-9lOm7kShQPw,214
80
- figrecipe/_wrappers/_axes.py,sha256=scmXSe7Uh4fxbMoSiOx8bHBS4LmQ5pOm59OOaYFMYT0,36998
81
- figrecipe/_wrappers/_figure.py,sha256=6S0fptSkO2E7qx1hzjX4jpgrnvHA8jXW_R1GmDoIrlA,9826
82
- figrecipe/styles/__init__.py,sha256=yFiAHmPS83-pj2s6n5ZqR-_9jexdNAm6IzGwYwFIMR8,975
83
- figrecipe/styles/_style_applier.py,sha256=ylBZTUh-8Xs9bO4-IzqSlwoGqdskWym8tgJ2iatPc8w,24543
84
- figrecipe/styles/_style_loader.py,sha256=c7YuDzazVirm9PVmTWaWGfuBH2W0iSVbnYrmdLQ3z4c,19467
85
- figrecipe/styles/presets/MATPLOTLIB.yaml,sha256=VtkRFd0Sb07TxJ6DR5PC_Ij3rDpoa1_-jdmGNMm01E8,1815
86
- figrecipe/styles/presets/SCITEX.yaml,sha256=Zkq-LF-b2eV03H8GvEdzpWQqfww3NN0EAS8p7Pqj300,4681
87
- figrecipe-0.6.0.dist-info/METADATA,sha256=3Px2zWN2LNF0fIxnFaGD_XhbXvI64wHIkONtfRinl0I,11175
88
- figrecipe-0.6.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
89
- figrecipe-0.6.0.dist-info/licenses/LICENSE,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
90
- figrecipe-0.6.0.dist-info/RECORD,,