rootfig 0.6.0__tar.gz → 0.8.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 (501) hide show
  1. {rootfig-0.6.0 → rootfig-0.8.0}/CONTRIBUTING.md +10 -2
  2. {rootfig-0.6.0 → rootfig-0.8.0}/PKG-INFO +44 -13
  3. {rootfig-0.6.0 → rootfig-0.8.0}/README.md +39 -8
  4. rootfig-0.8.0/docs/api.md +121 -0
  5. rootfig-0.8.0/docs/batch.md +478 -0
  6. {rootfig-0.6.0 → rootfig-0.8.0}/docs/composable.md +71 -8
  7. {rootfig-0.6.0 → rootfig-0.8.0}/docs/ecosystem.md +19 -4
  8. rootfig-0.8.0/docs/images/gallery/arrays-alice-dark.png +0 -0
  9. rootfig-0.8.0/docs/images/gallery/arrays-alice.png +0 -0
  10. rootfig-0.8.0/docs/images/gallery/arrays-atlas-dark.png +0 -0
  11. rootfig-0.8.0/docs/images/gallery/arrays-atlas.png +0 -0
  12. rootfig-0.8.0/docs/images/gallery/arrays-lhcb-dark.png +0 -0
  13. rootfig-0.8.0/docs/images/gallery/arrays-lhcb.png +0 -0
  14. rootfig-0.8.0/docs/images/gallery/correlation-alice-dark.png +0 -0
  15. rootfig-0.8.0/docs/images/gallery/correlation-alice.png +0 -0
  16. rootfig-0.8.0/docs/images/gallery/correlation-atlas-dark.png +0 -0
  17. rootfig-0.8.0/docs/images/gallery/correlation-atlas.png +0 -0
  18. rootfig-0.8.0/docs/images/gallery/correlation-cms-dark.png +0 -0
  19. rootfig-0.8.0/docs/images/gallery/correlation-cms.png +0 -0
  20. rootfig-0.8.0/docs/images/gallery/correlation-dune-dark.png +0 -0
  21. rootfig-0.8.0/docs/images/gallery/correlation-dune.png +0 -0
  22. rootfig-0.8.0/docs/images/gallery/correlation-lhcb-dark.png +0 -0
  23. rootfig-0.8.0/docs/images/gallery/correlation-lhcb.png +0 -0
  24. rootfig-0.8.0/docs/images/gallery/density_flow-atlas-dark.png +0 -0
  25. rootfig-0.8.0/docs/images/gallery/density_flow-atlas.png +0 -0
  26. rootfig-0.8.0/docs/images/gallery/density_flow-cms-dark.png +0 -0
  27. rootfig-0.8.0/docs/images/gallery/density_flow-cms.png +0 -0
  28. rootfig-0.8.0/docs/images/gallery/density_flow-lhcb-dark.png +0 -0
  29. rootfig-0.8.0/docs/images/gallery/density_flow-lhcb.png +0 -0
  30. rootfig-0.8.0/docs/images/gallery/efficiency-alice-dark.png +0 -0
  31. rootfig-0.8.0/docs/images/gallery/efficiency-alice.png +0 -0
  32. rootfig-0.8.0/docs/images/gallery/efficiency-atlas-dark.png +0 -0
  33. rootfig-0.8.0/docs/images/gallery/efficiency-atlas.png +0 -0
  34. rootfig-0.8.0/docs/images/gallery/efficiency-cms-dark.png +0 -0
  35. rootfig-0.8.0/docs/images/gallery/efficiency-cms.png +0 -0
  36. rootfig-0.8.0/docs/images/gallery/efficiency-lhcb-dark.png +0 -0
  37. rootfig-0.8.0/docs/images/gallery/efficiency-lhcb.png +0 -0
  38. rootfig-0.8.0/docs/images/gallery/expressions-alice-dark.png +0 -0
  39. rootfig-0.8.0/docs/images/gallery/expressions-alice.png +0 -0
  40. rootfig-0.8.0/docs/images/gallery/expressions-atlas-dark.png +0 -0
  41. rootfig-0.8.0/docs/images/gallery/expressions-atlas.png +0 -0
  42. rootfig-0.8.0/docs/images/gallery/expressions-cms-dark.png +0 -0
  43. rootfig-0.8.0/docs/images/gallery/expressions-cms.png +0 -0
  44. rootfig-0.8.0/docs/images/gallery/expressions-dune-dark.png +0 -0
  45. rootfig-0.8.0/docs/images/gallery/expressions-dune.png +0 -0
  46. rootfig-0.8.0/docs/images/gallery/expressions-lhcb-dark.png +0 -0
  47. rootfig-0.8.0/docs/images/gallery/expressions-lhcb.png +0 -0
  48. rootfig-0.8.0/docs/images/gallery/fill_stats-alice-dark.png +0 -0
  49. rootfig-0.8.0/docs/images/gallery/fill_stats-alice.png +0 -0
  50. rootfig-0.8.0/docs/images/gallery/fill_stats-atlas-dark.png +0 -0
  51. rootfig-0.8.0/docs/images/gallery/fill_stats-atlas.png +0 -0
  52. rootfig-0.8.0/docs/images/gallery/fill_stats-cms-dark.png +0 -0
  53. rootfig-0.8.0/docs/images/gallery/fill_stats-cms.png +0 -0
  54. rootfig-0.8.0/docs/images/gallery/fill_stats-dark.png +0 -0
  55. rootfig-0.8.0/docs/images/gallery/fill_stats-dune-dark.png +0 -0
  56. rootfig-0.8.0/docs/images/gallery/fill_stats-dune.png +0 -0
  57. rootfig-0.8.0/docs/images/gallery/fill_stats-lhcb-dark.png +0 -0
  58. rootfig-0.8.0/docs/images/gallery/fill_stats-lhcb.png +0 -0
  59. rootfig-0.8.0/docs/images/gallery/fill_stats.png +0 -0
  60. rootfig-0.8.0/docs/images/gallery/hist2d-cms-dark.png +0 -0
  61. rootfig-0.8.0/docs/images/gallery/hist2d-cms.png +0 -0
  62. rootfig-0.8.0/docs/images/gallery/hist2d-dark.png +0 -0
  63. rootfig-0.8.0/docs/images/gallery/hist2d-dune-dark.png +0 -0
  64. rootfig-0.8.0/docs/images/gallery/hist2d-dune.png +0 -0
  65. rootfig-0.8.0/docs/images/gallery/hist2d.png +0 -0
  66. rootfig-0.8.0/docs/images/gallery/log_axes-alice-dark.png +0 -0
  67. rootfig-0.8.0/docs/images/gallery/log_axes-alice.png +0 -0
  68. rootfig-0.8.0/docs/images/gallery/log_axes-atlas-dark.png +0 -0
  69. rootfig-0.8.0/docs/images/gallery/log_axes-atlas.png +0 -0
  70. rootfig-0.8.0/docs/images/gallery/log_axes-cms-dark.png +0 -0
  71. rootfig-0.8.0/docs/images/gallery/log_axes-cms.png +0 -0
  72. rootfig-0.8.0/docs/images/gallery/log_axes-dune-dark.png +0 -0
  73. rootfig-0.8.0/docs/images/gallery/log_axes-dune.png +0 -0
  74. rootfig-0.8.0/docs/images/gallery/log_axes-lhcb-dark.png +0 -0
  75. rootfig-0.8.0/docs/images/gallery/log_axes-lhcb.png +0 -0
  76. rootfig-0.8.0/docs/images/gallery/luminosity-dark.png +0 -0
  77. rootfig-0.8.0/docs/images/gallery/luminosity.png +0 -0
  78. rootfig-0.8.0/docs/images/gallery/many_plots-dark.png +0 -0
  79. rootfig-0.8.0/docs/images/gallery/many_plots.png +0 -0
  80. rootfig-0.8.0/docs/images/gallery/object_vs_event-alice-dark.png +0 -0
  81. rootfig-0.8.0/docs/images/gallery/object_vs_event-alice.png +0 -0
  82. rootfig-0.8.0/docs/images/gallery/object_vs_event-atlas-dark.png +0 -0
  83. rootfig-0.8.0/docs/images/gallery/object_vs_event-atlas.png +0 -0
  84. rootfig-0.8.0/docs/images/gallery/object_vs_event-cms-dark.png +0 -0
  85. rootfig-0.8.0/docs/images/gallery/object_vs_event-cms.png +0 -0
  86. rootfig-0.8.0/docs/images/gallery/object_vs_event-lhcb-dark.png +0 -0
  87. rootfig-0.8.0/docs/images/gallery/object_vs_event-lhcb.png +0 -0
  88. rootfig-0.8.0/docs/images/gallery/overlay_ratio-alice-dark.png +0 -0
  89. rootfig-0.8.0/docs/images/gallery/overlay_ratio-alice.png +0 -0
  90. rootfig-0.8.0/docs/images/gallery/overlay_ratio-atlas-dark.png +0 -0
  91. rootfig-0.8.0/docs/images/gallery/overlay_ratio-atlas.png +0 -0
  92. rootfig-0.8.0/docs/images/gallery/overlay_ratio-cms-dark.png +0 -0
  93. rootfig-0.8.0/docs/images/gallery/overlay_ratio-cms.png +0 -0
  94. rootfig-0.8.0/docs/images/gallery/overlay_ratio-lhcb-dark.png +0 -0
  95. rootfig-0.8.0/docs/images/gallery/overlay_ratio-lhcb.png +0 -0
  96. rootfig-0.8.0/docs/images/gallery/profile-atlas-dark.png +0 -0
  97. rootfig-0.8.0/docs/images/gallery/profile-atlas.png +0 -0
  98. rootfig-0.8.0/docs/images/gallery/profile-dune-dark.png +0 -0
  99. rootfig-0.8.0/docs/images/gallery/profile-dune.png +0 -0
  100. rootfig-0.8.0/docs/images/gallery/profile-lhcb-dark.png +0 -0
  101. rootfig-0.8.0/docs/images/gallery/profile-lhcb.png +0 -0
  102. rootfig-0.8.0/docs/images/gallery/pull-alice-dark.png +0 -0
  103. rootfig-0.8.0/docs/images/gallery/pull-alice.png +0 -0
  104. rootfig-0.8.0/docs/images/gallery/pull-atlas-dark.png +0 -0
  105. rootfig-0.8.0/docs/images/gallery/pull-atlas.png +0 -0
  106. rootfig-0.8.0/docs/images/gallery/pull-cms-dark.png +0 -0
  107. rootfig-0.8.0/docs/images/gallery/pull-cms.png +0 -0
  108. rootfig-0.8.0/docs/images/gallery/pull-dark.png +0 -0
  109. rootfig-0.8.0/docs/images/gallery/pull-dune-dark.png +0 -0
  110. rootfig-0.8.0/docs/images/gallery/pull-dune.png +0 -0
  111. rootfig-0.8.0/docs/images/gallery/pull-lhcb-dark.png +0 -0
  112. rootfig-0.8.0/docs/images/gallery/pull-lhcb.png +0 -0
  113. rootfig-0.8.0/docs/images/gallery/pull.png +0 -0
  114. rootfig-0.8.0/docs/images/gallery/quick-alice-dark.png +0 -0
  115. rootfig-0.8.0/docs/images/gallery/quick-alice.png +0 -0
  116. rootfig-0.8.0/docs/images/gallery/quick-atlas-dark.png +0 -0
  117. rootfig-0.8.0/docs/images/gallery/quick-atlas.png +0 -0
  118. rootfig-0.8.0/docs/images/gallery/quick-cms-dark.png +0 -0
  119. rootfig-0.8.0/docs/images/gallery/quick-cms.png +0 -0
  120. rootfig-0.8.0/docs/images/gallery/quick-lhcb-dark.png +0 -0
  121. rootfig-0.8.0/docs/images/gallery/quick-lhcb.png +0 -0
  122. rootfig-0.8.0/docs/images/gallery/ratio_reference-alice-dark.png +0 -0
  123. rootfig-0.8.0/docs/images/gallery/ratio_reference-alice.png +0 -0
  124. rootfig-0.8.0/docs/images/gallery/ratio_reference-atlas-dark.png +0 -0
  125. rootfig-0.8.0/docs/images/gallery/ratio_reference-atlas.png +0 -0
  126. rootfig-0.8.0/docs/images/gallery/ratio_reference-cms-dark.png +0 -0
  127. rootfig-0.8.0/docs/images/gallery/ratio_reference-cms.png +0 -0
  128. rootfig-0.8.0/docs/images/gallery/ratio_reference-lhcb-dark.png +0 -0
  129. rootfig-0.8.0/docs/images/gallery/ratio_reference-lhcb.png +0 -0
  130. rootfig-0.8.0/docs/images/gallery/selective_stack-alice-dark.png +0 -0
  131. rootfig-0.8.0/docs/images/gallery/selective_stack-alice.png +0 -0
  132. rootfig-0.8.0/docs/images/gallery/selective_stack-atlas-dark.png +0 -0
  133. rootfig-0.8.0/docs/images/gallery/selective_stack-atlas.png +0 -0
  134. rootfig-0.8.0/docs/images/gallery/selective_stack-cms-dark.png +0 -0
  135. rootfig-0.8.0/docs/images/gallery/selective_stack-cms.png +0 -0
  136. rootfig-0.8.0/docs/images/gallery/selective_stack-dark.png +0 -0
  137. rootfig-0.8.0/docs/images/gallery/selective_stack-dune-dark.png +0 -0
  138. rootfig-0.8.0/docs/images/gallery/selective_stack-dune.png +0 -0
  139. rootfig-0.8.0/docs/images/gallery/selective_stack-lhcb-dark.png +0 -0
  140. rootfig-0.8.0/docs/images/gallery/selective_stack-lhcb.png +0 -0
  141. rootfig-0.8.0/docs/images/gallery/selective_stack.png +0 -0
  142. rootfig-0.8.0/docs/images/gallery/stack_data-alice-dark.png +0 -0
  143. rootfig-0.8.0/docs/images/gallery/stack_data-alice.png +0 -0
  144. rootfig-0.8.0/docs/images/gallery/stack_data-atlas-dark.png +0 -0
  145. rootfig-0.8.0/docs/images/gallery/stack_data-atlas.png +0 -0
  146. rootfig-0.8.0/docs/images/gallery/stack_data-cms-dark.png +0 -0
  147. rootfig-0.8.0/docs/images/gallery/stack_data-cms.png +0 -0
  148. rootfig-0.8.0/docs/images/gallery/stack_data-dune-dark.png +0 -0
  149. rootfig-0.8.0/docs/images/gallery/stack_data-dune.png +0 -0
  150. rootfig-0.8.0/docs/images/gallery/stack_data-lhcb-dark.png +0 -0
  151. rootfig-0.8.0/docs/images/gallery/stack_data-lhcb.png +0 -0
  152. rootfig-0.8.0/docs/images/gallery/stored_histograms-dark.png +0 -0
  153. rootfig-0.8.0/docs/images/gallery/stored_histograms.png +0 -0
  154. rootfig-0.8.0/docs/images/gallery/style_colors-dark.png +0 -0
  155. rootfig-0.8.0/docs/images/gallery/style_colors.png +0 -0
  156. rootfig-0.8.0/docs/images/gallery/systematics-alice-dark.png +0 -0
  157. rootfig-0.8.0/docs/images/gallery/systematics-alice.png +0 -0
  158. rootfig-0.8.0/docs/images/gallery/systematics-atlas-dark.png +0 -0
  159. rootfig-0.8.0/docs/images/gallery/systematics-atlas.png +0 -0
  160. rootfig-0.8.0/docs/images/gallery/systematics-cms-dark.png +0 -0
  161. rootfig-0.8.0/docs/images/gallery/systematics-cms.png +0 -0
  162. rootfig-0.8.0/docs/images/gallery/systematics-dune-dark.png +0 -0
  163. rootfig-0.8.0/docs/images/gallery/systematics-dune.png +0 -0
  164. rootfig-0.8.0/docs/images/gallery/systematics-lhcb-dark.png +0 -0
  165. rootfig-0.8.0/docs/images/gallery/systematics-lhcb.png +0 -0
  166. rootfig-0.8.0/docs/images/gallery/variable_bins-alice-dark.png +0 -0
  167. rootfig-0.8.0/docs/images/gallery/variable_bins-alice.png +0 -0
  168. rootfig-0.8.0/docs/images/gallery/variable_bins-atlas-dark.png +0 -0
  169. rootfig-0.8.0/docs/images/gallery/variable_bins-atlas.png +0 -0
  170. rootfig-0.8.0/docs/images/gallery/variable_bins-cms-dark.png +0 -0
  171. rootfig-0.8.0/docs/images/gallery/variable_bins-cms.png +0 -0
  172. rootfig-0.8.0/docs/images/gallery/variable_bins-dune-dark.png +0 -0
  173. rootfig-0.8.0/docs/images/gallery/variable_bins-dune.png +0 -0
  174. rootfig-0.8.0/docs/images/gallery/variable_bins-lhcb-dark.png +0 -0
  175. rootfig-0.8.0/docs/images/gallery/variable_bins-lhcb.png +0 -0
  176. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-alice-dark.png +0 -0
  177. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-alice.png +0 -0
  178. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-atlas-dark.png +0 -0
  179. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-atlas.png +0 -0
  180. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-cms-dark.png +0 -0
  181. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-cms.png +0 -0
  182. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-dark.png +0 -0
  183. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-dune-dark.png +0 -0
  184. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-dune.png +0 -0
  185. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-lhcb-dark.png +0 -0
  186. rootfig-0.8.0/docs/images/gallery/xbreak_ratio-lhcb.png +0 -0
  187. rootfig-0.8.0/docs/images/gallery/xbreak_ratio.png +0 -0
  188. {rootfig-0.6.0 → rootfig-0.8.0}/docs/index.md +3 -2
  189. {rootfig-0.6.0 → rootfig-0.8.0}/docs/plotting.md +221 -99
  190. {rootfig-0.6.0 → rootfig-0.8.0}/docs/quickstart.md +2 -2
  191. {rootfig-0.6.0 → rootfig-0.8.0}/examples/gallery/__init__.py +78 -15
  192. {rootfig-0.6.0 → rootfig-0.8.0}/examples/gallery/data.py +25 -2
  193. {rootfig-0.6.0 → rootfig-0.8.0}/mkdocs.yml +2 -1
  194. {rootfig-0.6.0 → rootfig-0.8.0}/pyproject.toml +9 -7
  195. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/__init__.py +19 -10
  196. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/_storage.py +15 -5
  197. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/__init__.py +5 -0
  198. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/_common.py +23 -9
  199. rootfig-0.8.0/src/rootfig/api/_discover.py +526 -0
  200. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/_hists.py +7 -17
  201. rootfig-0.8.0/src/rootfig/api/_panel.py +273 -0
  202. rootfig-0.8.0/src/rootfig/api/_pdf.py +202 -0
  203. rootfig-0.8.0/src/rootfig/api/batch.py +992 -0
  204. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/data.py +22 -12
  205. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/measures.py +16 -10
  206. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/plots1d.py +358 -246
  207. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/plots2d.py +17 -13
  208. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/expressions/__init__.py +10 -2
  209. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/expressions/parser.py +25 -1
  210. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/__init__.py +24 -27
  211. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/build.py +128 -111
  212. rootfig-0.8.0/src/rootfig/histograms/comparison.py +374 -0
  213. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/efficiency.py +1 -1
  214. rootfig-0.8.0/src/rootfig/histograms/groups.py +50 -0
  215. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/pipeline.py +153 -59
  216. rootfig-0.8.0/src/rootfig/histograms/prefetch.py +212 -0
  217. rootfig-0.8.0/src/rootfig/histograms/sources.py +24 -0
  218. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/stored.py +91 -27
  219. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/systematics.py +3 -1
  220. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/io/__init__.py +10 -1
  221. rootfig-0.8.0/src/rootfig/io/cache.py +80 -0
  222. rootfig-0.8.0/src/rootfig/io/objects.py +165 -0
  223. rootfig-0.8.0/src/rootfig/io/schema.py +98 -0
  224. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/io/sources.py +167 -47
  225. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/__init__.py +11 -7
  226. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/binning.py +30 -32
  227. rootfig-0.8.0/src/rootfig/model/filenames.py +68 -0
  228. rootfig-0.8.0/src/rootfig/model/groups.py +139 -0
  229. rootfig-0.8.0/src/rootfig/model/inputs.py +156 -0
  230. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/samples.py +6 -85
  231. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/style.py +1 -1
  232. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/variables.py +21 -24
  233. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/__init__.py +23 -12
  234. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/annotations.py +9 -5
  235. rootfig-0.8.0/src/rootfig/plotting/engine.py +153 -0
  236. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/figure.py +215 -71
  237. rootfig-0.8.0/src/rootfig/plotting/finish.py +127 -0
  238. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/hist1d.py +308 -131
  239. rootfig-0.8.0/src/rootfig/plotting/pages.py +314 -0
  240. rootfig-0.8.0/src/rootfig/plotting/panel.py +382 -0
  241. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/result.py +63 -32
  242. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/style.py +167 -76
  243. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/selection/__init__.py +0 -2
  244. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_api.py +1108 -121
  245. rootfig-0.8.0/tests/test_batch.py +1293 -0
  246. rootfig-0.8.0/tests/test_discovery.py +1151 -0
  247. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_expressions.py +39 -0
  248. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_histograms.py +751 -47
  249. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_io.py +448 -1
  250. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_model.py +297 -8
  251. rootfig-0.8.0/tests/test_pages.py +282 -0
  252. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_plotting.py +669 -116
  253. rootfig-0.8.0/tests/test_save_pdf.py +836 -0
  254. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_selection.py +2 -1
  255. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_tutorials.py +7 -2
  256. rootfig-0.8.0/tests/type_checks/batch.py +71 -0
  257. rootfig-0.8.0/tests/type_checks/groups.py +25 -0
  258. rootfig-0.6.0/docs/api.md +0 -53
  259. rootfig-0.6.0/docs/images/gallery/arrays-alice-dark.png +0 -0
  260. rootfig-0.6.0/docs/images/gallery/arrays-alice.png +0 -0
  261. rootfig-0.6.0/docs/images/gallery/arrays-atlas-dark.png +0 -0
  262. rootfig-0.6.0/docs/images/gallery/arrays-atlas.png +0 -0
  263. rootfig-0.6.0/docs/images/gallery/arrays-lhcb-dark.png +0 -0
  264. rootfig-0.6.0/docs/images/gallery/arrays-lhcb.png +0 -0
  265. rootfig-0.6.0/docs/images/gallery/correlation-alice-dark.png +0 -0
  266. rootfig-0.6.0/docs/images/gallery/correlation-alice.png +0 -0
  267. rootfig-0.6.0/docs/images/gallery/correlation-atlas-dark.png +0 -0
  268. rootfig-0.6.0/docs/images/gallery/correlation-atlas.png +0 -0
  269. rootfig-0.6.0/docs/images/gallery/correlation-cms-dark.png +0 -0
  270. rootfig-0.6.0/docs/images/gallery/correlation-cms.png +0 -0
  271. rootfig-0.6.0/docs/images/gallery/correlation-dune-dark.png +0 -0
  272. rootfig-0.6.0/docs/images/gallery/correlation-dune.png +0 -0
  273. rootfig-0.6.0/docs/images/gallery/correlation-lhcb-dark.png +0 -0
  274. rootfig-0.6.0/docs/images/gallery/correlation-lhcb.png +0 -0
  275. rootfig-0.6.0/docs/images/gallery/density_flow-atlas-dark.png +0 -0
  276. rootfig-0.6.0/docs/images/gallery/density_flow-atlas.png +0 -0
  277. rootfig-0.6.0/docs/images/gallery/density_flow-cms-dark.png +0 -0
  278. rootfig-0.6.0/docs/images/gallery/density_flow-cms.png +0 -0
  279. rootfig-0.6.0/docs/images/gallery/density_flow-lhcb-dark.png +0 -0
  280. rootfig-0.6.0/docs/images/gallery/density_flow-lhcb.png +0 -0
  281. rootfig-0.6.0/docs/images/gallery/efficiency-alice-dark.png +0 -0
  282. rootfig-0.6.0/docs/images/gallery/efficiency-alice.png +0 -0
  283. rootfig-0.6.0/docs/images/gallery/efficiency-atlas-dark.png +0 -0
  284. rootfig-0.6.0/docs/images/gallery/efficiency-atlas.png +0 -0
  285. rootfig-0.6.0/docs/images/gallery/efficiency-cms-dark.png +0 -0
  286. rootfig-0.6.0/docs/images/gallery/efficiency-cms.png +0 -0
  287. rootfig-0.6.0/docs/images/gallery/efficiency-lhcb-dark.png +0 -0
  288. rootfig-0.6.0/docs/images/gallery/efficiency-lhcb.png +0 -0
  289. rootfig-0.6.0/docs/images/gallery/expressions-alice-dark.png +0 -0
  290. rootfig-0.6.0/docs/images/gallery/expressions-alice.png +0 -0
  291. rootfig-0.6.0/docs/images/gallery/expressions-atlas-dark.png +0 -0
  292. rootfig-0.6.0/docs/images/gallery/expressions-atlas.png +0 -0
  293. rootfig-0.6.0/docs/images/gallery/expressions-cms-dark.png +0 -0
  294. rootfig-0.6.0/docs/images/gallery/expressions-cms.png +0 -0
  295. rootfig-0.6.0/docs/images/gallery/expressions-dune-dark.png +0 -0
  296. rootfig-0.6.0/docs/images/gallery/expressions-dune.png +0 -0
  297. rootfig-0.6.0/docs/images/gallery/expressions-lhcb-dark.png +0 -0
  298. rootfig-0.6.0/docs/images/gallery/expressions-lhcb.png +0 -0
  299. rootfig-0.6.0/docs/images/gallery/fill_stats-alice-dark.png +0 -0
  300. rootfig-0.6.0/docs/images/gallery/fill_stats-alice.png +0 -0
  301. rootfig-0.6.0/docs/images/gallery/fill_stats-atlas-dark.png +0 -0
  302. rootfig-0.6.0/docs/images/gallery/fill_stats-atlas.png +0 -0
  303. rootfig-0.6.0/docs/images/gallery/fill_stats-cms-dark.png +0 -0
  304. rootfig-0.6.0/docs/images/gallery/fill_stats-cms.png +0 -0
  305. rootfig-0.6.0/docs/images/gallery/fill_stats-dark.png +0 -0
  306. rootfig-0.6.0/docs/images/gallery/fill_stats-dune-dark.png +0 -0
  307. rootfig-0.6.0/docs/images/gallery/fill_stats-dune.png +0 -0
  308. rootfig-0.6.0/docs/images/gallery/fill_stats-lhcb-dark.png +0 -0
  309. rootfig-0.6.0/docs/images/gallery/fill_stats-lhcb.png +0 -0
  310. rootfig-0.6.0/docs/images/gallery/fill_stats.png +0 -0
  311. rootfig-0.6.0/docs/images/gallery/hist2d-cms-dark.png +0 -0
  312. rootfig-0.6.0/docs/images/gallery/hist2d-cms.png +0 -0
  313. rootfig-0.6.0/docs/images/gallery/hist2d-dark.png +0 -0
  314. rootfig-0.6.0/docs/images/gallery/hist2d-dune-dark.png +0 -0
  315. rootfig-0.6.0/docs/images/gallery/hist2d-dune.png +0 -0
  316. rootfig-0.6.0/docs/images/gallery/hist2d.png +0 -0
  317. rootfig-0.6.0/docs/images/gallery/log_axes-alice-dark.png +0 -0
  318. rootfig-0.6.0/docs/images/gallery/log_axes-alice.png +0 -0
  319. rootfig-0.6.0/docs/images/gallery/log_axes-atlas-dark.png +0 -0
  320. rootfig-0.6.0/docs/images/gallery/log_axes-atlas.png +0 -0
  321. rootfig-0.6.0/docs/images/gallery/log_axes-cms-dark.png +0 -0
  322. rootfig-0.6.0/docs/images/gallery/log_axes-cms.png +0 -0
  323. rootfig-0.6.0/docs/images/gallery/log_axes-dune-dark.png +0 -0
  324. rootfig-0.6.0/docs/images/gallery/log_axes-dune.png +0 -0
  325. rootfig-0.6.0/docs/images/gallery/log_axes-lhcb-dark.png +0 -0
  326. rootfig-0.6.0/docs/images/gallery/log_axes-lhcb.png +0 -0
  327. rootfig-0.6.0/docs/images/gallery/luminosity-dark.png +0 -0
  328. rootfig-0.6.0/docs/images/gallery/luminosity.png +0 -0
  329. rootfig-0.6.0/docs/images/gallery/many_plots-dark.png +0 -0
  330. rootfig-0.6.0/docs/images/gallery/many_plots.png +0 -0
  331. rootfig-0.6.0/docs/images/gallery/object_vs_event-alice-dark.png +0 -0
  332. rootfig-0.6.0/docs/images/gallery/object_vs_event-alice.png +0 -0
  333. rootfig-0.6.0/docs/images/gallery/object_vs_event-atlas-dark.png +0 -0
  334. rootfig-0.6.0/docs/images/gallery/object_vs_event-atlas.png +0 -0
  335. rootfig-0.6.0/docs/images/gallery/object_vs_event-cms-dark.png +0 -0
  336. rootfig-0.6.0/docs/images/gallery/object_vs_event-cms.png +0 -0
  337. rootfig-0.6.0/docs/images/gallery/object_vs_event-lhcb-dark.png +0 -0
  338. rootfig-0.6.0/docs/images/gallery/object_vs_event-lhcb.png +0 -0
  339. rootfig-0.6.0/docs/images/gallery/overlay_ratio-alice-dark.png +0 -0
  340. rootfig-0.6.0/docs/images/gallery/overlay_ratio-alice.png +0 -0
  341. rootfig-0.6.0/docs/images/gallery/overlay_ratio-atlas-dark.png +0 -0
  342. rootfig-0.6.0/docs/images/gallery/overlay_ratio-atlas.png +0 -0
  343. rootfig-0.6.0/docs/images/gallery/overlay_ratio-cms-dark.png +0 -0
  344. rootfig-0.6.0/docs/images/gallery/overlay_ratio-cms.png +0 -0
  345. rootfig-0.6.0/docs/images/gallery/overlay_ratio-lhcb-dark.png +0 -0
  346. rootfig-0.6.0/docs/images/gallery/overlay_ratio-lhcb.png +0 -0
  347. rootfig-0.6.0/docs/images/gallery/profile-atlas-dark.png +0 -0
  348. rootfig-0.6.0/docs/images/gallery/profile-atlas.png +0 -0
  349. rootfig-0.6.0/docs/images/gallery/profile-dune-dark.png +0 -0
  350. rootfig-0.6.0/docs/images/gallery/profile-dune.png +0 -0
  351. rootfig-0.6.0/docs/images/gallery/profile-lhcb-dark.png +0 -0
  352. rootfig-0.6.0/docs/images/gallery/profile-lhcb.png +0 -0
  353. rootfig-0.6.0/docs/images/gallery/quick-alice-dark.png +0 -0
  354. rootfig-0.6.0/docs/images/gallery/quick-alice.png +0 -0
  355. rootfig-0.6.0/docs/images/gallery/quick-atlas-dark.png +0 -0
  356. rootfig-0.6.0/docs/images/gallery/quick-atlas.png +0 -0
  357. rootfig-0.6.0/docs/images/gallery/quick-cms-dark.png +0 -0
  358. rootfig-0.6.0/docs/images/gallery/quick-cms.png +0 -0
  359. rootfig-0.6.0/docs/images/gallery/quick-lhcb-dark.png +0 -0
  360. rootfig-0.6.0/docs/images/gallery/quick-lhcb.png +0 -0
  361. rootfig-0.6.0/docs/images/gallery/ratio_reference-alice-dark.png +0 -0
  362. rootfig-0.6.0/docs/images/gallery/ratio_reference-alice.png +0 -0
  363. rootfig-0.6.0/docs/images/gallery/ratio_reference-atlas-dark.png +0 -0
  364. rootfig-0.6.0/docs/images/gallery/ratio_reference-atlas.png +0 -0
  365. rootfig-0.6.0/docs/images/gallery/ratio_reference-cms-dark.png +0 -0
  366. rootfig-0.6.0/docs/images/gallery/ratio_reference-cms.png +0 -0
  367. rootfig-0.6.0/docs/images/gallery/ratio_reference-lhcb-dark.png +0 -0
  368. rootfig-0.6.0/docs/images/gallery/ratio_reference-lhcb.png +0 -0
  369. rootfig-0.6.0/docs/images/gallery/stack_data-alice-dark.png +0 -0
  370. rootfig-0.6.0/docs/images/gallery/stack_data-alice.png +0 -0
  371. rootfig-0.6.0/docs/images/gallery/stack_data-atlas-dark.png +0 -0
  372. rootfig-0.6.0/docs/images/gallery/stack_data-atlas.png +0 -0
  373. rootfig-0.6.0/docs/images/gallery/stack_data-cms-dark.png +0 -0
  374. rootfig-0.6.0/docs/images/gallery/stack_data-cms.png +0 -0
  375. rootfig-0.6.0/docs/images/gallery/stack_data-dune-dark.png +0 -0
  376. rootfig-0.6.0/docs/images/gallery/stack_data-dune.png +0 -0
  377. rootfig-0.6.0/docs/images/gallery/stack_data-lhcb-dark.png +0 -0
  378. rootfig-0.6.0/docs/images/gallery/stack_data-lhcb.png +0 -0
  379. rootfig-0.6.0/docs/images/gallery/style_colors-dark.png +0 -0
  380. rootfig-0.6.0/docs/images/gallery/style_colors.png +0 -0
  381. rootfig-0.6.0/docs/images/gallery/systematics-alice-dark.png +0 -0
  382. rootfig-0.6.0/docs/images/gallery/systematics-alice.png +0 -0
  383. rootfig-0.6.0/docs/images/gallery/systematics-atlas-dark.png +0 -0
  384. rootfig-0.6.0/docs/images/gallery/systematics-atlas.png +0 -0
  385. rootfig-0.6.0/docs/images/gallery/systematics-cms-dark.png +0 -0
  386. rootfig-0.6.0/docs/images/gallery/systematics-cms.png +0 -0
  387. rootfig-0.6.0/docs/images/gallery/systematics-dune-dark.png +0 -0
  388. rootfig-0.6.0/docs/images/gallery/systematics-dune.png +0 -0
  389. rootfig-0.6.0/docs/images/gallery/systematics-lhcb-dark.png +0 -0
  390. rootfig-0.6.0/docs/images/gallery/systematics-lhcb.png +0 -0
  391. rootfig-0.6.0/docs/images/gallery/variable_bins-alice-dark.png +0 -0
  392. rootfig-0.6.0/docs/images/gallery/variable_bins-alice.png +0 -0
  393. rootfig-0.6.0/docs/images/gallery/variable_bins-atlas-dark.png +0 -0
  394. rootfig-0.6.0/docs/images/gallery/variable_bins-atlas.png +0 -0
  395. rootfig-0.6.0/docs/images/gallery/variable_bins-cms-dark.png +0 -0
  396. rootfig-0.6.0/docs/images/gallery/variable_bins-cms.png +0 -0
  397. rootfig-0.6.0/docs/images/gallery/variable_bins-dune-dark.png +0 -0
  398. rootfig-0.6.0/docs/images/gallery/variable_bins-dune.png +0 -0
  399. rootfig-0.6.0/docs/images/gallery/variable_bins-lhcb-dark.png +0 -0
  400. rootfig-0.6.0/docs/images/gallery/variable_bins-lhcb.png +0 -0
  401. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-alice-dark.png +0 -0
  402. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-alice.png +0 -0
  403. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-atlas-dark.png +0 -0
  404. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-atlas.png +0 -0
  405. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-cms-dark.png +0 -0
  406. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-cms.png +0 -0
  407. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-dark.png +0 -0
  408. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-dune-dark.png +0 -0
  409. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-dune.png +0 -0
  410. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-lhcb-dark.png +0 -0
  411. rootfig-0.6.0/docs/images/gallery/xbreak_ratio-lhcb.png +0 -0
  412. rootfig-0.6.0/docs/images/gallery/xbreak_ratio.png +0 -0
  413. rootfig-0.6.0/src/rootfig/histograms/ratio.py +0 -241
  414. rootfig-0.6.0/src/rootfig/io/objects.py +0 -128
  415. rootfig-0.6.0/src/rootfig/plotting/ratio.py +0 -206
  416. {rootfig-0.6.0 → rootfig-0.8.0}/.gitignore +0 -0
  417. {rootfig-0.6.0 → rootfig-0.8.0}/LICENSE +0 -0
  418. {rootfig-0.6.0 → rootfig-0.8.0}/docs/expressions.md +0 -0
  419. {rootfig-0.6.0 → rootfig-0.8.0}/docs/gallery/index.md +0 -0
  420. {rootfig-0.6.0 → rootfig-0.8.0}/docs/hooks/gallery.py +0 -0
  421. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/arrays-cms-dark.png +0 -0
  422. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/arrays-cms.png +0 -0
  423. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/arrays-dark.png +0 -0
  424. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/arrays-dune-dark.png +0 -0
  425. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/arrays-dune.png +0 -0
  426. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/arrays.png +0 -0
  427. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/correlation-dark.png +0 -0
  428. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/correlation.png +0 -0
  429. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/density_flow-alice-dark.png +0 -0
  430. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/density_flow-alice.png +0 -0
  431. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/density_flow-dark.png +0 -0
  432. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/density_flow-dune-dark.png +0 -0
  433. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/density_flow-dune.png +0 -0
  434. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/density_flow.png +0 -0
  435. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/efficiency-dark.png +0 -0
  436. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/efficiency-dune-dark.png +0 -0
  437. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/efficiency-dune.png +0 -0
  438. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/efficiency.png +0 -0
  439. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/expressions-dark.png +0 -0
  440. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/expressions.png +0 -0
  441. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/hist2d-alice-dark.png +0 -0
  442. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/hist2d-alice.png +0 -0
  443. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/hist2d-atlas-dark.png +0 -0
  444. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/hist2d-atlas.png +0 -0
  445. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/hist2d-lhcb-dark.png +0 -0
  446. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/hist2d-lhcb.png +0 -0
  447. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/log_axes-dark.png +0 -0
  448. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/log_axes.png +0 -0
  449. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/object_vs_event-dark.png +0 -0
  450. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/object_vs_event-dune-dark.png +0 -0
  451. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/object_vs_event-dune.png +0 -0
  452. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/object_vs_event.png +0 -0
  453. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/overlay_ratio-dark.png +0 -0
  454. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/overlay_ratio-dune-dark.png +0 -0
  455. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/overlay_ratio-dune.png +0 -0
  456. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/overlay_ratio.png +0 -0
  457. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/profile-alice-dark.png +0 -0
  458. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/profile-alice.png +0 -0
  459. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/profile-cms-dark.png +0 -0
  460. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/profile-cms.png +0 -0
  461. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/profile-dark.png +0 -0
  462. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/profile.png +0 -0
  463. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/quick-dark.png +0 -0
  464. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/quick-dune-dark.png +0 -0
  465. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/quick-dune.png +0 -0
  466. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/quick.png +0 -0
  467. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/ratio_reference-dark.png +0 -0
  468. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/ratio_reference-dune-dark.png +0 -0
  469. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/ratio_reference-dune.png +0 -0
  470. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/ratio_reference.png +0 -0
  471. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/robust_range-dark.png +0 -0
  472. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/robust_range.png +0 -0
  473. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/stack_data-dark.png +0 -0
  474. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/stack_data.png +0 -0
  475. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/systematics-dark.png +0 -0
  476. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/systematics.png +0 -0
  477. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/variable_bins-dark.png +0 -0
  478. {rootfig-0.6.0 → rootfig-0.8.0}/docs/images/gallery/variable_bins.png +0 -0
  479. {rootfig-0.6.0 → rootfig-0.8.0}/docs/stylesheets/gallery.css +0 -0
  480. {rootfig-0.6.0 → rootfig-0.8.0}/examples/gallery/__main__.py +0 -0
  481. {rootfig-0.6.0 → rootfig-0.8.0}/examples/gallery/registry.py +0 -0
  482. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/_mapping.py +0 -0
  483. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/_typing.py +0 -0
  484. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/api/tables.py +0 -0
  485. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/errors.py +0 -0
  486. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/expressions/functions.py +0 -0
  487. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/cutflow.py +0 -0
  488. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/normalize.py +0 -0
  489. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/histograms/stats.py +0 -0
  490. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/cuts.py +0 -0
  491. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/systematics.py +0 -0
  492. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/model/units.py +0 -0
  493. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/correlation.py +0 -0
  494. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/hist2d.py +0 -0
  495. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/plotting/points.py +0 -0
  496. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/py.typed +0 -0
  497. {rootfig-0.6.0 → rootfig-0.8.0}/src/rootfig/selection/columns.py +0 -0
  498. {rootfig-0.6.0 → rootfig-0.8.0}/tests/conftest.py +0 -0
  499. {rootfig-0.6.0 → rootfig-0.8.0}/tests/data/split_collection.root +0 -0
  500. {rootfig-0.6.0 → rootfig-0.8.0}/tests/test_gallery.py +0 -0
  501. {rootfig-0.6.0 → rootfig-0.8.0}/tests/type_checks/systematics.py +0 -0
@@ -32,6 +32,14 @@ that use ROOT's tutorial files run only when `root-config` is available
32
32
  locally and are skipped otherwise; do not add
33
33
  tests that require ROOT or network access.
34
34
 
35
+ `key4hep.yml` runs the tests on the Key4hep nightlies (LCG `devkey-head`) and the
36
+ latest Key4hep release, weekly as well, since the stacks change without a commit
37
+ here. `.github/scripts/key4hep-test.sh` installs rootfig into a
38
+ [cvmfs-venv](https://github.com/jbeirer/cvmfs-venv) with `--no-index`, so every
39
+ runtime dependency must come from the stack: the floors in `pyproject.toml` stay
40
+ at or below what the nightlies ship. Locally: `.github/scripts/key4hep-test.sh
41
+ /cvmfs/sw-nightlies.hsf.org/key4hep/setup.sh`.
42
+
35
43
  ## Layout
36
44
 
37
45
  ```
@@ -40,9 +48,9 @@ src/rootfig/
40
48
  errors.py exception hierarchy
41
49
  expressions/ parse, validate and evaluate expression strings
42
50
  io/ file and in-memory data sources
43
- model/ Sample, Variable, Cut, Style, binning
51
+ model/ Sample, Group, Variable, Cut, Style, binning
44
52
  selection/ per-event / per-object semantics -> flat columns
45
- histograms/ filling, normalisation, ratios, statistics, pipeline
53
+ histograms/ filling, normalisation, comparisons, statistics, groups, pipeline
46
54
  plotting/ matplotlib/mplhep rendering, styles, annotations
47
55
  tests/ one module per layer plus end-to-end API tests
48
56
  docs/ MkDocs sources
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rootfig
3
- Version: 0.6.0
4
- Summary: Publication-quality figures straight from ROOT trees, without ROOT: uproot + Awkward + hist + mplhep with a TTree::Draw-like API.
3
+ Version: 0.8.0
4
+ Summary: Publication-quality figures straight from ROOT trees and histograms, without ROOT: uproot + Awkward + hist + mplhep with a TTree::Draw-like API.
5
5
  Project-URL: Homepage, https://github.com/jbeirer/rootfig
6
6
  Project-URL: Documentation, https://jbeirer.github.io/rootfig/
7
7
  Project-URL: Repository, https://github.com/jbeirer/rootfig
@@ -24,11 +24,11 @@ Classifier: Topic :: Scientific/Engineering :: Visualization
24
24
  Classifier: Typing :: Typed
25
25
  Requires-Python: >=3.12
26
26
  Requires-Dist: awkward>=2.8
27
- Requires-Dist: hist>=2.7.2
27
+ Requires-Dist: hist>=2.9
28
28
  Requires-Dist: matplotlib>=3.11
29
- Requires-Dist: mplhep>=1.3
29
+ Requires-Dist: mplhep>=1.2.1
30
30
  Requires-Dist: numpy>=1.26
31
- Requires-Dist: uproot>=5.7.4
31
+ Requires-Dist: uproot>=5.7.1
32
32
  Description-Content-Type: text/markdown
33
33
 
34
34
  <p align="center">
@@ -40,7 +40,7 @@ Description-Content-Type: text/markdown
40
40
  </p>
41
41
 
42
42
  <p align="center">
43
- <strong>Publication-quality figures straight from ROOT trees, without ROOT.</strong>
43
+ <strong>Publication-quality figures straight from ROOT trees and histograms, without ROOT.</strong>
44
44
  </p>
45
45
 
46
46
  <p align="center">
@@ -53,6 +53,7 @@ Description-Content-Type: text/markdown
53
53
  <a href="https://jbeirer.github.io/rootfig/"><img src="https://img.shields.io/badge/docs-online-blue" alt="Documentation"></a>
54
54
  <a href="https://doi.org/10.5281/zenodo.22726311"><img src="https://zenodo.org/badge/1366702602.svg" alt="DOI"></a>
55
55
  <a href="https://github.com/jbeirer/rootfig/actions/workflows/ci.yml"><img src="https://github.com/jbeirer/rootfig/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
56
+ <a href="https://github.com/jbeirer/rootfig/actions/workflows/key4hep.yml"><img src="https://github.com/jbeirer/rootfig/actions/workflows/key4hep.yml/badge.svg" alt="Key4hep"></a>
56
57
  <a href="https://codecov.io/gh/jbeirer/rootfig"><img src="https://codecov.io/gh/jbeirer/rootfig/branch/main/graph/badge.svg" alt="codecov"></a>
57
58
  <a href="https://pypi.org/project/rootfig/"><img src="https://img.shields.io/pypi/v/rootfig.svg" alt="PyPI"></a>
58
59
  <a href="https://pypi.org/project/rootfig/"><img src="https://img.shields.io/pypi/pyversions/rootfig.svg" alt="Python"></a>
@@ -97,7 +98,7 @@ uv add rootfig
97
98
  ```
98
99
 
99
100
  Python 3.12 or newer. No ROOT installation is needed; `TTree` and `RNTuple`
100
- files are both supported.
101
+ files and stored `TH1`/`TH2` histograms are all supported.
101
102
 
102
103
  ## Compare samples in one call
103
104
 
@@ -113,7 +114,8 @@ rf.plot(
113
114
  weight="event_weight",
114
115
  bins=(50, 0, 200),
115
116
  normalize=True,
116
- ratio="Background",
117
+ panel="ratio",
118
+ reference="Background",
117
119
  )
118
120
  ```
119
121
 
@@ -138,7 +140,7 @@ p = rf.plot(
138
140
  observed=data,
139
141
  selection=baseline,
140
142
  stack=True,
141
- ratio=True,
143
+ panel="ratio",
142
144
  logy=True,
143
145
  style=style,
144
146
  )
@@ -150,22 +152,51 @@ Everything you get back is a standard object: `p.fig` and `p.ax` are
150
152
  matplotlib `Figure`/`Axes`, `p.hists` are `hist.Hist` objects, and
151
153
  `rf.load(...)` returns Awkward arrays.
152
154
 
155
+ For histogram files, `Group` sums processes and a `Variable` crops and merges
156
+ their bins just as it bins a tree. `PlotBook` draws the variants from one
157
+ preparation; `rf.ALL` discovers every shared histogram for an overview.
158
+
159
+ ```python
160
+ # Histogram files: one per process, already scaled to 5 ab^-1
161
+ ww = rf.Sample("outputs/p8_ee_WW_ecm240.root", label="WW")
162
+ zz = rf.Sample("outputs/p8_ee_ZZ_ecm240.root", label="ZZ")
163
+ zh = rf.Sample("outputs/p8_ee_ZH_ecm240.root", label="ZH")
164
+ fcc = rf.Style(experiment="FCC-ee", status="Simulation", com="240 GeV", lumi="5 ab^-1")
165
+
166
+ book = rf.PlotBook(
167
+ [rf.Group([ww, zz], label="VV"), zh],
168
+ [rf.Variable("zmumu_recoil_m", bins=(200, 120, 140), label="Recoil mass", unit="GeV")],
169
+ variants={"stack": {"stack": True}, "nostack": {"stack": ["VV"]}},
170
+ plot_kwargs={"style": fcc},
171
+ )
172
+ book.save_pdf("zh.pdf") # rf.ALL in place of the list plots every histogram the files share
173
+ ```
174
+
153
175
  ## What you can do
154
176
 
155
177
  - **Select events and objects with readable expressions.** Write cuts such as
156
178
  `count(Jet_pt) >= 2` or `Muon_pt > 20`; event and object selections have
157
179
  explicit rules, and event weights carry through to each selected object.
158
- - **Compare samples with a few keywords.** Overlays, stacks, data points and
159
- ratio panels share binning and propagate histogram uncertainties; bin edges
180
+ - **Compare samples with a few keywords.** Overlays, stacks, data points and a
181
+ lower panel (ratio, difference, relative difference, pull or significance,
182
+ against a reference you name) share binning and propagate histogram
183
+ uncertainties; bin edges
160
184
  and `(n, low, high)` are used as given, while a range inferred from the data
161
185
  ignores far outliers, so `-999` sentinels do not set the axis. Normalise to
162
- unity, density, bin width or luminosity.
186
+ unity, density, bin width or luminosity; stack some samples and overlay the rest.
187
+ Draw several samples as one histogram with `rf.Group`, each keeping its own
188
+ weights, cross section and systematics.
163
189
  - **Show systematic uncertainties.** Attach weight, branch, file or
164
- normalisation variations to a sample; stacks and ratio panels draw the
190
+ normalisation variations to a sample; stacks and lower panels draw the
165
191
  combined statistical and systematic band, and every component stays
166
192
  accessible.
167
193
  - **Style figures for your analysis.** Add experiment labels, units, log axes
168
194
  and broken axes, then refine the result with matplotlib.
195
+ - **Produce whole sets of plots.** `rf.PlotBook` runs one `rf.plot` call over
196
+ variables × selections × variants, lazily, and saves each under a
197
+ deterministic name or all of them as one multipage PDF; `rf.ALL` discovers
198
+ the variables from the files, and `select()` filters the book down while
199
+ iterating on a plot.
169
200
  - **Go beyond 1D plots.** Draw 2D histograms, correlations, efficiencies,
170
201
  profiles, resolutions and significance panels; produce cut flows and
171
202
  summary statistics from the same inputs.
@@ -7,7 +7,7 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- <strong>Publication-quality figures straight from ROOT trees, without ROOT.</strong>
10
+ <strong>Publication-quality figures straight from ROOT trees and histograms, without ROOT.</strong>
11
11
  </p>
12
12
 
13
13
  <p align="center">
@@ -20,6 +20,7 @@
20
20
  <a href="https://jbeirer.github.io/rootfig/"><img src="https://img.shields.io/badge/docs-online-blue" alt="Documentation"></a>
21
21
  <a href="https://doi.org/10.5281/zenodo.22726311"><img src="https://zenodo.org/badge/1366702602.svg" alt="DOI"></a>
22
22
  <a href="https://github.com/jbeirer/rootfig/actions/workflows/ci.yml"><img src="https://github.com/jbeirer/rootfig/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
23
+ <a href="https://github.com/jbeirer/rootfig/actions/workflows/key4hep.yml"><img src="https://github.com/jbeirer/rootfig/actions/workflows/key4hep.yml/badge.svg" alt="Key4hep"></a>
23
24
  <a href="https://codecov.io/gh/jbeirer/rootfig"><img src="https://codecov.io/gh/jbeirer/rootfig/branch/main/graph/badge.svg" alt="codecov"></a>
24
25
  <a href="https://pypi.org/project/rootfig/"><img src="https://img.shields.io/pypi/v/rootfig.svg" alt="PyPI"></a>
25
26
  <a href="https://pypi.org/project/rootfig/"><img src="https://img.shields.io/pypi/pyversions/rootfig.svg" alt="Python"></a>
@@ -64,7 +65,7 @@ uv add rootfig
64
65
  ```
65
66
 
66
67
  Python 3.12 or newer. No ROOT installation is needed; `TTree` and `RNTuple`
67
- files are both supported.
68
+ files and stored `TH1`/`TH2` histograms are all supported.
68
69
 
69
70
  ## Compare samples in one call
70
71
 
@@ -80,7 +81,8 @@ rf.plot(
80
81
  weight="event_weight",
81
82
  bins=(50, 0, 200),
82
83
  normalize=True,
83
- ratio="Background",
84
+ panel="ratio",
85
+ reference="Background",
84
86
  )
85
87
  ```
86
88
 
@@ -105,7 +107,7 @@ p = rf.plot(
105
107
  observed=data,
106
108
  selection=baseline,
107
109
  stack=True,
108
- ratio=True,
110
+ panel="ratio",
109
111
  logy=True,
110
112
  style=style,
111
113
  )
@@ -117,22 +119,51 @@ Everything you get back is a standard object: `p.fig` and `p.ax` are
117
119
  matplotlib `Figure`/`Axes`, `p.hists` are `hist.Hist` objects, and
118
120
  `rf.load(...)` returns Awkward arrays.
119
121
 
122
+ For histogram files, `Group` sums processes and a `Variable` crops and merges
123
+ their bins just as it bins a tree. `PlotBook` draws the variants from one
124
+ preparation; `rf.ALL` discovers every shared histogram for an overview.
125
+
126
+ ```python
127
+ # Histogram files: one per process, already scaled to 5 ab^-1
128
+ ww = rf.Sample("outputs/p8_ee_WW_ecm240.root", label="WW")
129
+ zz = rf.Sample("outputs/p8_ee_ZZ_ecm240.root", label="ZZ")
130
+ zh = rf.Sample("outputs/p8_ee_ZH_ecm240.root", label="ZH")
131
+ fcc = rf.Style(experiment="FCC-ee", status="Simulation", com="240 GeV", lumi="5 ab^-1")
132
+
133
+ book = rf.PlotBook(
134
+ [rf.Group([ww, zz], label="VV"), zh],
135
+ [rf.Variable("zmumu_recoil_m", bins=(200, 120, 140), label="Recoil mass", unit="GeV")],
136
+ variants={"stack": {"stack": True}, "nostack": {"stack": ["VV"]}},
137
+ plot_kwargs={"style": fcc},
138
+ )
139
+ book.save_pdf("zh.pdf") # rf.ALL in place of the list plots every histogram the files share
140
+ ```
141
+
120
142
  ## What you can do
121
143
 
122
144
  - **Select events and objects with readable expressions.** Write cuts such as
123
145
  `count(Jet_pt) >= 2` or `Muon_pt > 20`; event and object selections have
124
146
  explicit rules, and event weights carry through to each selected object.
125
- - **Compare samples with a few keywords.** Overlays, stacks, data points and
126
- ratio panels share binning and propagate histogram uncertainties; bin edges
147
+ - **Compare samples with a few keywords.** Overlays, stacks, data points and a
148
+ lower panel (ratio, difference, relative difference, pull or significance,
149
+ against a reference you name) share binning and propagate histogram
150
+ uncertainties; bin edges
127
151
  and `(n, low, high)` are used as given, while a range inferred from the data
128
152
  ignores far outliers, so `-999` sentinels do not set the axis. Normalise to
129
- unity, density, bin width or luminosity.
153
+ unity, density, bin width or luminosity; stack some samples and overlay the rest.
154
+ Draw several samples as one histogram with `rf.Group`, each keeping its own
155
+ weights, cross section and systematics.
130
156
  - **Show systematic uncertainties.** Attach weight, branch, file or
131
- normalisation variations to a sample; stacks and ratio panels draw the
157
+ normalisation variations to a sample; stacks and lower panels draw the
132
158
  combined statistical and systematic band, and every component stays
133
159
  accessible.
134
160
  - **Style figures for your analysis.** Add experiment labels, units, log axes
135
161
  and broken axes, then refine the result with matplotlib.
162
+ - **Produce whole sets of plots.** `rf.PlotBook` runs one `rf.plot` call over
163
+ variables × selections × variants, lazily, and saves each under a
164
+ deterministic name or all of them as one multipage PDF; `rf.ALL` discovers
165
+ the variables from the files, and `select()` filters the book down while
166
+ iterating on a plot.
136
167
  - **Go beyond 1D plots.** Draw 2D histograms, correlations, efficiencies,
137
168
  profiles, resolutions and significance panels; produce cut flows and
138
169
  summary statistics from the same inputs.
@@ -0,0 +1,121 @@
1
+ # API reference
2
+
3
+ ## Top level
4
+
5
+ ::: rootfig.plot
6
+ ::: rootfig.plot2d
7
+ ::: rootfig.histogram
8
+ ::: rootfig.api.data.histograms
9
+ options:
10
+ heading: rootfig.histograms
11
+ ::: rootfig.load
12
+ ::: rootfig.summarize
13
+ ::: rootfig.correlation
14
+ ::: rootfig.cutflow
15
+ ::: rootfig.efficiency
16
+ ::: rootfig.profile
17
+ ::: rootfig.evaluate
18
+ ::: rootfig.compare
19
+ ::: rootfig.log_bins
20
+ ::: rootfig.use_style
21
+ ::: rootfig.dark_theme
22
+
23
+ ## Descriptions
24
+
25
+ ::: rootfig.Sample
26
+ ::: rootfig.Group
27
+ ::: rootfig.Variable
28
+ ::: rootfig.Cut
29
+ ::: rootfig.Style
30
+ ::: rootfig.Systematic
31
+
32
+ ## Batch plotting
33
+
34
+ ::: rootfig.PlotBook
35
+ ::: rootfig.PlotTask
36
+ ::: rootfig.ALL
37
+ ::: rootfig.discover_variables
38
+ ::: rootfig.model.check_file_stem
39
+ ::: rootfig.model.safe_file_stem
40
+
41
+ ## Results
42
+
43
+ ::: rootfig.Plot
44
+ ::: rootfig.Histogram
45
+ ::: rootfig.Comparison
46
+ ::: rootfig.Uncertainty
47
+ ::: rootfig.Summary
48
+ ::: rootfig.SummaryTable
49
+ ::: rootfig.Cutflow
50
+ ::: rootfig.CutflowTable
51
+ ::: rootfig.Efficiency
52
+ ::: rootfig.Profile
53
+
54
+ ## Errors and warnings
55
+
56
+ ::: rootfig.errors
57
+
58
+ ## Lower layers
59
+
60
+ These are the layers `rf.plot` is built from, usable on their own; names a module
61
+ does not list here are internal. The descriptions in `rootfig.model` are documented
62
+ above.
63
+
64
+ ::: rootfig.io
65
+ options:
66
+ members:
67
+ - FileSource
68
+ - ArraySource
69
+ - Source
70
+ - ReadCache
71
+ - as_source
72
+
73
+ ::: rootfig.expressions
74
+ options:
75
+ members:
76
+ - Expression
77
+ - parse
78
+ - FUNCTIONS
79
+ - CONSTANTS
80
+
81
+ ::: rootfig.selection
82
+ options:
83
+ members:
84
+ - prepare
85
+ - Columns
86
+ - depth_of
87
+
88
+ ::: rootfig.histograms
89
+ options:
90
+ members:
91
+ - build_histograms
92
+ - fill
93
+ - sum_histograms
94
+ - uncertainty
95
+ - summarize
96
+ - read_stored
97
+ - compatible_binning
98
+
99
+ <!-- The function shares its name with a submodule; its defining path is unambiguous. -->
100
+ ::: rootfig.histograms.normalize.normalize
101
+ options:
102
+ heading: normalize
103
+ heading_level: 3
104
+
105
+ ::: rootfig.plotting
106
+ options:
107
+ members:
108
+ - draw_histograms
109
+ - draw_panel
110
+ - draw_hist2d
111
+ - draw_correlation
112
+ - draw_efficiencies
113
+ - draw_profiles
114
+ - split_stack
115
+ - make_figure
116
+ - Layout
117
+ - figure_size
118
+ - add_legend
119
+ - add_stats_box
120
+ - add_text
121
+ - style_context