plotstyle 1.2.3__tar.gz → 1.2.4__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 (173) hide show
  1. {plotstyle-1.2.3 → plotstyle-1.2.4}/CHANGELOG.md +37 -21
  2. plotstyle-1.2.4/CITATION.cff +37 -0
  3. {plotstyle-1.2.3 → plotstyle-1.2.4}/PKG-INFO +307 -260
  4. plotstyle-1.2.4/README.md +700 -0
  5. {plotstyle-1.2.3 → plotstyle-1.2.4}/pyproject.toml +14 -17
  6. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_compat/mpl_style.py +1 -1
  7. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_utils/warnings.py +0 -10
  8. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_version.py +2 -2
  9. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/cli/main.py +14 -1
  10. plotstyle-1.2.4/src/plotstyle/color/data/conservative_colorblind.json +5 -0
  11. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_high_contrast.json +1 -1
  12. plotstyle-1.2.4/src/plotstyle/color/data/tol_light.json +5 -0
  13. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_1.json +7 -0
  14. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_10.json +16 -0
  15. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_11.json +17 -0
  16. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_12.json +18 -0
  17. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_13.json +19 -0
  18. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_14.json +20 -0
  19. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_15.json +21 -0
  20. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_16.json +22 -0
  21. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_17.json +23 -0
  22. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_18.json +24 -0
  23. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_19.json +25 -0
  24. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_2.json +8 -0
  25. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_20.json +26 -0
  26. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_21.json +27 -0
  27. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_22.json +28 -0
  28. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_23.json +29 -0
  29. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_3.json +9 -0
  30. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_rainbow_4.json +6 -1
  31. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_5.json +11 -0
  32. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_6.json +12 -0
  33. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_7.json +13 -0
  34. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_8.json +14 -0
  35. plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_9.json +15 -0
  36. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/palettes.py +2 -0
  37. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/fonts.py +13 -1
  38. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-japanese.toml +2 -2
  39. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-korean.toml +2 -2
  40. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-simplified.toml +2 -2
  41. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-traditional.toml +2 -2
  42. plotstyle-1.2.4/src/plotstyle/overlays/conservative-colorblind.toml +7 -0
  43. plotstyle-1.2.4/src/plotstyle/overlays/si-units.toml +13 -0
  44. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-high-contrast.toml +1 -1
  45. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-light.toml +1 -1
  46. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-1.toml +7 -0
  47. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-10.toml +1 -1
  48. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-11.toml +7 -0
  49. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-13.toml +7 -0
  50. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-14.toml +7 -0
  51. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-15.toml +7 -0
  52. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-16.toml +7 -0
  53. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-17.toml +7 -0
  54. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-18.toml +7 -0
  55. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-19.toml +7 -0
  56. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-2.toml +7 -0
  57. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-20.toml +7 -0
  58. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-21.toml +7 -0
  59. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-22.toml +7 -0
  60. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-23.toml +7 -0
  61. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-3.toml +7 -0
  62. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-5.toml +7 -0
  63. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-7.toml +7 -0
  64. plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-9.toml +7 -0
  65. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/__init__.py +3 -26
  66. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/_templates.toml +3 -2
  67. plotstyle-1.2.4/src/plotstyle/specs/acm.toml +33 -0
  68. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/acs.toml +3 -4
  69. plotstyle-1.2.4/src/plotstyle/specs/cell.toml +32 -0
  70. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/elsevier.toml +1 -2
  71. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/ieee.toml +1 -2
  72. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/nature.toml +2 -3
  73. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/plos.toml +1 -2
  74. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/prl.toml +1 -2
  75. plotstyle-1.2.4/src/plotstyle/specs/science.toml +34 -0
  76. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/springer.toml +1 -2
  77. plotstyle-1.2.4/src/plotstyle/specs/usenix.toml +33 -0
  78. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/wiley.toml +2 -3
  79. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_style.py +0 -3
  80. plotstyle-1.2.3/README.md +0 -653
  81. plotstyle-1.2.3/src/plotstyle/color/data/tol_light.json +0 -5
  82. plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_10.json +0 -5
  83. plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_12.json +0 -5
  84. plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_6.json +0 -5
  85. plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_8.json +0 -5
  86. plotstyle-1.2.3/src/plotstyle/specs/cell.toml +0 -35
  87. plotstyle-1.2.3/src/plotstyle/specs/science.toml +0 -31
  88. {plotstyle-1.2.3 → plotstyle-1.2.4}/.gitignore +0 -0
  89. {plotstyle-1.2.3 → plotstyle-1.2.4}/LICENSE +0 -0
  90. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/__init__.py +0 -0
  91. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_compat/__init__.py +0 -0
  92. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_utils/__init__.py +0 -0
  93. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_utils/io.py +0 -0
  94. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/cli/__init__.py +0 -0
  95. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/__init__.py +0 -0
  96. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/_rendering.py +0 -0
  97. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/accessibility.py +0 -0
  98. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/okabe_ito.json +0 -0
  99. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/safe_grayscale.json +0 -0
  100. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_bright.json +0 -0
  101. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_muted.json +0 -0
  102. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_vibrant.json +0 -0
  103. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/grayscale.py +0 -0
  104. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/__init__.py +0 -0
  105. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/export.py +0 -0
  106. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/figure.py +0 -0
  107. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/migrate.py +0 -0
  108. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/style.py +0 -0
  109. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/__init__.py +0 -0
  110. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/latex.py +0 -0
  111. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/rcparams.py +0 -0
  112. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/integrations/__init__.py +0 -0
  113. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/integrations/seaborn.py +0 -0
  114. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/__init__.py +0 -0
  115. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/bar.toml +0 -0
  116. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/grid.toml +0 -0
  117. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/high-vis.toml +0 -0
  118. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/latex-sans.toml +0 -0
  119. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/minimal.toml +0 -0
  120. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/no-latex.toml +0 -0
  121. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/notebook.toml +0 -0
  122. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/okabe-ito.toml +0 -0
  123. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/pgf.toml +0 -0
  124. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/presentation.toml +0 -0
  125. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/russian.toml +0 -0
  126. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/safe-grayscale.toml +0 -0
  127. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/scatter.toml +0 -0
  128. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/schema.py +0 -0
  129. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-bright.toml +0 -0
  130. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-muted.toml +0 -0
  131. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-12.toml +0 -0
  132. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-4.toml +0 -0
  133. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-6.toml +0 -0
  134. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-8.toml +0 -0
  135. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-vibrant.toml +0 -0
  136. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/turkish.toml +0 -0
  137. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/preview/__init__.py +0 -0
  138. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/preview/gallery.py +0 -0
  139. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/preview/print_size.py +0 -0
  140. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/py.typed +0 -0
  141. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/schema.py +0 -0
  142. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/units.py +0 -0
  143. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/__init__.py +0 -0
  144. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/__init__.py +0 -0
  145. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/_base.py +0 -0
  146. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/colors.py +0 -0
  147. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/dimensions.py +0 -0
  148. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/export.py +0 -0
  149. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/lines.py +0 -0
  150. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/typography.py +0 -0
  151. {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/report.py +0 -0
  152. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/conftest.py +0 -0
  153. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_cli/test_main.py +0 -0
  154. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_accessibility.py +0 -0
  155. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_grayscale.py +0 -0
  156. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_palettes.py +0 -0
  157. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_rendering.py +0 -0
  158. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_export.py +0 -0
  159. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_figure.py +0 -0
  160. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_migrate.py +0 -0
  161. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_engine/test_fonts.py +0 -0
  162. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_engine/test_latex.py +0 -0
  163. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_engine/test_rcparams.py +0 -0
  164. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_integrations/test_seaborn.py +0 -0
  165. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_preview/test_gallery.py +0 -0
  166. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_preview/test_print_size.py +0 -0
  167. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_specs/test_registry.py +0 -0
  168. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_specs/test_schema.py +0 -0
  169. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_specs/test_units.py +0 -0
  170. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_utils/test_io.py +0 -0
  171. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_utils/test_warnings.py +0 -0
  172. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_validation/test_checks.py +0 -0
  173. {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_validation/test_report.py +0 -0
@@ -9,30 +9,46 @@ and this project adheres to [PEP 440](https://peps.python.org/pep-0440/) version
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
- _Nothing yet._
12
+ ### Added
13
+
14
+ - **ACM journal preset** (`acm.toml`): two-column format per ACM sigconf template (84.5 mm single column, 180.0 mm double column, 235.0 mm max height); Linux Libertine / Times New Roman font family.
15
+ - **USENIX journal preset** (`usenix.toml`): two-column format per USENIX author guide (85.0 mm single column, 178.0 mm double column, 229.0 mm max height).
16
+ - **`conservative-colorblind` overlay**: 7-color palette safe under all major types of color vision deficiency, including tritanopia. Based on Paul Tol's Vibrant subset.
17
+ - **`si-units` overlay**: loads the `siunitx` LaTeX package (`\usepackage{siunitx}`, `\sisetup{detect-all}`) for consistent SI unit notation in axis labels and annotations. Requires `text.usetex = True`.
18
+ - **`FontFallbackWarning` on missing overlay fonts** (`check_overlay_fonts()`): when none of the required fonts for an overlay are found, a `FontFallbackWarning` is now emitted with the missing font names and a hint to rebuild the Matplotlib font cache.
19
+ - **CLI font-cache hint**: `plotstyle fonts --overlay <overlay>` prints a "Next steps" message when all required fonts are missing, with the exact command to rebuild the Matplotlib font cache.
20
+
21
+ ### Fixed
22
+
23
+ - **`tol_rainbow_1` through `tol_rainbow_23` source URL** (`color/data/`): corrected from `personal.sron.nl/~pault/data/colourschemes.pdf` to `sronpersonalpages.nl/~pault/data/colourschemes.pdf` in all 23 files.
24
+ - **`tol_light` palette color order** (`color/data/tol_light.json`, `overlays/tol-light.toml`): color order corrected to match the official Paul Tol source. The previous order had positions 2-9 scrambled relative to the canonical sequence.
25
+ - **`tol_high_contrast` palette color order** (`color/data/tol_high_contrast.json`, `overlays/tol-high-contrast.toml`): corrected to blue, red, yellow (`#004488`, `#BB5566`, `#DDAA33`); was blue, yellow, red.
26
+
27
+ ### Changed
28
+
29
+ - **`cjk-japanese` overlay**: Yu Gothic added to `font.family` and `requires.fonts` lists between TakaoGothic and Noto Sans CJK JP. Provides Japanese text support on Windows 10 and 11 out of the box.
13
30
 
14
31
  ---
15
32
 
16
33
  ## [1.2.3] - 2026-04-30
17
34
 
18
- Minor release: automatic journal color cycle, `target_font_pt` typography field, Nature-specific rcParams, CLI improvements, a full documentation and example audit, and a new doc image generation script.
35
+ Minor release: automatic journal color cycle, `target_font_pt` typography field, global tick and axis defaults, CLI improvements, a full documentation and example audit, and docs image regeneration.
19
36
 
20
37
  ### Added
21
38
 
22
39
  - **Automatic journal palette as default color cycle** (`plotstyle.use()`): calling `use("nature")` (or any journal key) now sets the journal's recommended palette as `axes.prop_cycle` automatically. Every `ax.plot()`, `ax.bar()`, and `ax.scatter()` call draws from it without any `color=` argument. A color overlay applied in the same `use()` call overrides this default.
23
40
  - **`target_font_pt` field on `TypographySpec`**: optional `float | None` field that records a journal's explicitly stated target font size (as opposed to only a min/max range). When set, `build_rcparams()` uses it as `font.size` instead of the midpoint of the range. `nature.toml` sets `target_font_pt = 7.0` (Nature's guidelines explicitly state 7 pt as the standard text size).
24
41
  - **`plotstyle info` CLI shows `Target size:`**: when `target_font_pt` is set for a journal, the `plotstyle info <journal>` command now prints a `Target size:` line under Typography.
25
- - **Nature-specific tick and legend rcParams** (`build_rcparams()`): the Nature preset now applies inward-facing ticks (`xtick.direction: in`, `ytick.direction: in`), minor ticks visible on all axes, mirrored tick marks (`xtick.top: True`, `ytick.right: True`), and `legend.frameon: False` - matching Nature's published figure style guidelines.
26
- - **`scripts/generate_docs_images.py`**: new script that regenerates all 9 static PNG images used in the documentation (`docs/images/`) from the current codebase in one headless run.
27
- - **Docs images regenerated**: all 9 images in `docs/images/` rebuilt using the updated codebase - `quickstart_nature.png`, `multi_panel_science.png`, `palette_comparison.png`, `accessibility_colorblind.png`, `accessibility_grayscale.png`, `gallery_nature.png`, `gallery_ieee.png`, `seaborn_scatter_nature.png`, `overlay_bar.png`.
28
- - **New test coverage**: `TestUseColorCycle` (automatic palette cycle), `TestUseFontSizeTarget` (target_font_pt font size selection), `TestBuildRcparamsLegend` (Nature legend.frameon), and `TestBuildRcparamsTicks` (Nature inward/mirrored tick rcParams).
42
+ - **Global tick and axis defaults** (`build_rcparams()`): all journal presets now apply inward-facing ticks (`xtick.direction: in`, `ytick.direction: in`), minor ticks on all axes, mirrored tick marks (`xtick.top: True`, `ytick.right: True`), and `legend.frameon: False`. These are applied uniformly via `build_rcparams()` regardless of journal.
43
+ - **Docs images regenerated**: all 9 images in `docs/images/` rebuilt to reflect the automatic palette cycle and `target_font_pt` changes: `quickstart_nature.png`, `multi_panel_science.png`, `palette_comparison.png`, `accessibility_colorblind.png`, `accessibility_grayscale.png`, `gallery_nature.png`, `gallery_ieee.png`, `seaborn_scatter_nature.png`, `overlay_bar.png`.
44
+ - **New test coverage**: `TestUseColorCycle` (automatic palette cycle), `TestUseFontSizeTarget` (target_font_pt font size selection), `TestBuildRcparamsLegend` (legend.frameon), and `TestBuildRcparamsTicks` (inward/mirrored tick rcParams).
29
45
 
30
46
  ### Changed
31
47
 
32
48
  - **`examples/03_color_palettes.py`**: added Section 1 demonstrating the automatic default color cycle; renumbered remaining sections 2-6.
33
49
  - **`examples/05_validation.py`**: added `is_failure` / `is_warning` convenience property usage.
34
50
  - **`examples/09_registry_and_spec.py`**: expanded to cover `target_font_pt`, `is_official`, `assumed_fields`, and `registry.preload()`.
35
- - **`examples/12_overlays.py`**: added color overlay, grid rendering overlay, scatter + IEEE warning, overlay inspection, and `list_overlays()` with category filter. Imports reorganized to comply with E402 (module-level imports at top); unused loop variable renamed to `_ls` to comply with B007.
51
+ - **`examples/12_overlays.py`**: added color overlay, grid rendering overlay, scatter + IEEE warning, overlay inspection, and `list_overlays()` with category filter. Imports reorganized to comply with E402; unused loop variable renamed to `_ls` to comply with B007.
36
52
  - **Docs**: all docs updated to reflect the automatic palette cycle and `target_font_pt` changes; `colour` spelling standardized to `color` throughout.
37
53
 
38
54
  ---
@@ -84,7 +100,7 @@ Patch release: `simulate_cvd` example, warning quality improvements, and docs/ex
84
100
 
85
101
  ## [1.2.0] - 2026-04-23
86
102
 
87
- Feature release: **overlays**, **units & conversions**, **Seaborn integration**, improved **font/LaTeX controls**, plus major CLI/docs/example expansion.
103
+ Feature release: **overlays**, **units & conversions**, expanded **Seaborn integration**, improved **font/LaTeX controls**, plus major CLI/docs/example expansion.
88
104
 
89
105
  ### Added
90
106
 
@@ -95,13 +111,13 @@ Feature release: **overlays**, **units & conversions**, **Seaborn integration**,
95
111
  - `plotstyle overlays [--category <category>]` to list overlays.
96
112
  - `plotstyle overlay-info <overlay>` to inspect overlay metadata and `rcParams`.
97
113
  - **Font checks for overlays**: `plotstyle fonts --overlay <overlay>` (in addition to `--journal`).
98
- - **Seaborn integration**: helpers to keep PlotStyle `rcParams` consistent when using Seaborn themes (`patch_seaborn()`, `plotstyle_theme()`, `unpatch_seaborn()`).
99
114
  - **Units & conversions**: new/expanded utilities and docs for consistent size specification across specs and helpers.
100
115
  - **Matplotlib-native styles compatibility**: support for registering/using PlotStyle presets as Matplotlib styles where applicable.
101
116
  - **New examples & previews**: additional example scripts including overlays, Seaborn integration, units/conversions, print-size preview, Matplotlib native styles, and LaTeX/fonts.
102
117
 
103
118
  ### Changed
104
119
 
120
+ - **Seaborn integration expanded**: `unpatch_seaborn()` added to explicitly restore Matplotlib's original `rcParams` after a Seaborn theme call. `patch_seaborn()` and `plotstyle_theme()` were present since `0.1.0a1`; this release adds `unpatch_seaborn()`, a dedicated integration example, and a new Seaborn guide in the docs.
105
121
  - **CLI UX improvements**
106
122
  - `plotstyle fonts` now supports `--journal` *or* `--overlay` (mutually exclusive, required).
107
123
  - More robust argument parsing (e.g. ignores empty entries in `--formats`).
@@ -116,24 +132,24 @@ Feature release: **overlays**, **units & conversions**, **Seaborn integration**,
116
132
 
117
133
  ## [1.1.0] - 2026-04-16
118
134
 
119
- Minor feature release : ergonomics improvements, hardened error handling, and spec updates.
135
+ Minor feature release: ergonomics improvements, hardened error handling, and spec updates.
120
136
 
121
137
  ### Added
122
138
 
123
- - **`quiet` parameter on `JournalStyle.export()`** : suppresses compliance summaries and manifest output for scripting workflows.
124
- - **Pre-computed Type 3 font checks** : compliance summary now accepts a pre-computed result for Type 3 font detection, improving performance when the check has already been run by the caller.
125
- - **`JournalSpec` key access** : `JournalSpec` now supports key-style access, and the dimension check message has been updated for clarity.
139
+ - **`quiet` parameter on `JournalStyle.export()`**: suppresses compliance summaries and manifest output for scripting workflows.
140
+ - **Pre-computed Type 3 font checks**: compliance summary now accepts a pre-computed result for Type 3 font detection, improving performance when the check has already been run by the caller.
141
+ - **`JournalSpec` key access**: `JournalSpec` now supports key-style access, and the dimension check message has been updated for clarity.
126
142
 
127
143
  ### Fixed
128
144
 
129
- - **`SpecNotFoundError` base classes** : now inherits from both `ValueError` and `KeyError` so existing `except ValueError` and `except KeyError` handlers catch it correctly; a custom `__str__` produces clearer diagnostic messages.
145
+ - **`SpecNotFoundError` base classes**: now inherits from both `ValueError` and `KeyError` so existing `except ValueError` and `except KeyError` handlers catch it correctly; a custom `__str__` produces clearer diagnostic messages.
130
146
 
131
147
  ### Changed
132
148
 
133
- - **IEEE Transactions spec updated** : column widths, max height, font family, panel-label properties, and preferred output formats revised to match current IEEE author guidelines.
134
- - **CI documentation build** : Sphinx `docs` job (`sphinx-build -W -n`) added to the CI workflow; rendered HTML is uploaded as an artifact on every push.
135
- - **Module docstrings** : expanded and standardised across `__init__.py`, `_utils/`, `color/`, `core/`, and `validation/` for consistent Sphinx rendering.
136
- - **Context-manager examples** : all `plotstyle.use()` call sites in docs and examples updated to the `with plotstyle.use(...) as style:` form to ensure correct `rcParams` restoration.
149
+ - **IEEE Transactions spec updated**: column widths, max height, font family, panel-label properties, and preferred output formats revised to match current IEEE author guidelines.
150
+ - **CI documentation build**: Sphinx `docs` job (`sphinx-build -W -n`) added to the CI workflow; rendered HTML is uploaded as an artifact on every push.
151
+ - **Module docstrings**: expanded and standardised across `__init__.py`, `_utils/`, `color/`, `core/`, and `validation/` for consistent Sphinx rendering.
152
+ - **Context-manager examples**: all `plotstyle.use()` call sites in docs and examples updated to the `with plotstyle.use(...) as style:` form to ensure correct `rcParams` restoration.
137
153
 
138
154
  ---
139
155
 
@@ -161,7 +177,7 @@ Second alpha: full documentation suite, comprehensive test coverage, and hardene
161
177
  - **Comprehensive test suite**: new test modules added: `test_style`, `test_palettes`, `test_accessibility`, `test_grayscale`, `test_rendering`, `test_gallery`, `test_print_size`, `test_cli`, `test_io`, `test_warnings`, `test_checks`, `test_report`; existing modules `test_figure`, `test_export`, `test_migrate`, `test_fonts`, and `test_registry` substantially expanded.
162
178
  - **Export DPI validation**: `validation/checks/export.py` now emits a hard `FAIL` (instead of a `WARN`) when `savefig.dpi` is a numeric value that is provably below the journal's minimum DPI requirement.
163
179
  - **Dependabot**: `.github/dependabot.yml` added for automated dependency-update pull requests.
164
- - **`_format_panel_label()` range guard**: raises `ValueError` for panel indices 702 (beyond the two-character `"zz"` label); valid range is now explicitly documented as 0701.
180
+ - **`_format_panel_label()` range guard**: raises `ValueError` for panel indices >= 702 (beyond the two-character `"zz"` label); valid range is now explicitly documented as 0-701.
165
181
 
166
182
  ### Changed
167
183
 
@@ -181,8 +197,8 @@ First public alpha release.
181
197
 
182
198
  - **Core style engine**: `plotstyle.use()` applies journal presets to Matplotlib's `rcParams`; works as a context manager with automatic restoration on exit.
183
199
  - **Figure helpers**: `plotstyle.figure()` and `plotstyle.subplots()` create correctly-sized figures at the exact column width and max height specified by each journal.
184
- - **Auto panel labels**: multi-panel figures receive **(a)**, **(b)**, **(c)**, labels placed according to the journal's style rules.
185
- - **Colorblind-safe palettes**: built-in OkabeIto, Tol Bright, Tol Vibrant, Tol Muted, and Safe Grayscale palettes (`plotstyle.palette()`).
200
+ - **Auto panel labels**: multi-panel figures receive **(a)**, **(b)**, **(c)**, ... labels placed according to the journal's style rules.
201
+ - **Colorblind-safe palettes**: built-in Okabe-Ito, Tol Bright, Tol Vibrant, Tol Muted, and Safe Grayscale palettes (`plotstyle.palette()`).
186
202
  - **Accessibility previews**: `plotstyle.preview_colorblind()` simulates deuteranopia, protanopia, and tritanopia; `plotstyle.preview_grayscale()` previews grayscale rendering.
187
203
  - **Pre-submission validation**: `plotstyle.validate()` checks dimensions, typography, line weights, color accessibility, and export settings against a target journal spec.
188
204
  - **Submission-ready export**: `plotstyle.savefig()` saves with font embedding and DPI enforcement; `plotstyle.export_submission()` batch-exports to all formats a journal accepts.
@@ -0,0 +1,37 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use PlotStyle in your research, please cite it using the metadata below."
3
+ type: software
4
+ title: PlotStyle
5
+ version: "1.2.4"
6
+ date-released: "2026-04-27"
7
+ license: MIT
8
+ abstract: >-
9
+ PlotStyle is a Python library that formats Matplotlib and Seaborn figures
10
+ to meet the exact typographic, dimensional, and export requirements of
11
+ major academic journals. It includes built-in presets for journals such as
12
+ Nature, Science, IEEE, ACS, ACM, Cell, PLOS, PRL, Springer, Wiley, Elsevier,
13
+ and USENIX, along with figure validation, colorblind and grayscale accessibility
14
+ previews, composable style overlays, and a CLI for inspecting and comparing
15
+ journal specs.
16
+ authors:
17
+ - family-names: Kaushal
18
+ given-names: Rahul
19
+ alias: rahulkaushal04
20
+ repository-code: "https://github.com/rahulkaushal04/plotstyle"
21
+ url: "https://plotstyle.readthedocs.io"
22
+ identifiers:
23
+ - type: url
24
+ value: "https://pypi.org/project/plotstyle/1.2.4/"
25
+ description: "PyPI release for version 1.2.4"
26
+ keywords:
27
+ - matplotlib
28
+ - seaborn
29
+ - scientific-publishing
30
+ - journal-figures
31
+ - data-visualization
32
+ - academic-research
33
+ - colorblind-accessibility
34
+ - figure-export
35
+ - validation
36
+ - rcParams
37
+ - python