pyqicharts 2.0.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 (466) hide show
  1. pyqicharts-2.0.0/.github/ISSUE_TEMPLATE/bug_report.md +22 -0
  2. pyqicharts-2.0.0/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  3. pyqicharts-2.0.0/.github/pull_request_template.md +9 -0
  4. pyqicharts-2.0.0/.github/workflows/tests.yml +27 -0
  5. pyqicharts-2.0.0/API_STABILITY.md +75 -0
  6. pyqicharts-2.0.0/CHANGELOG.md +33 -0
  7. pyqicharts-2.0.0/CITATION.cff +14 -0
  8. pyqicharts-2.0.0/CODE_OF_CONDUCT.md +13 -0
  9. pyqicharts-2.0.0/CONTRIBUTING.md +30 -0
  10. pyqicharts-2.0.0/DISCLAIMER.md +15 -0
  11. pyqicharts-2.0.0/LICENSE +21 -0
  12. pyqicharts-2.0.0/MANIFEST.in +27 -0
  13. pyqicharts-2.0.0/PARITY_REPORT.md +31 -0
  14. pyqicharts-2.0.0/PKG-INFO +131 -0
  15. pyqicharts-2.0.0/README.md +85 -0
  16. pyqicharts-2.0.0/ROADMAP.md +27 -0
  17. pyqicharts-2.0.0/SECURITY.md +18 -0
  18. pyqicharts-2.0.0/VALIDATION_REPORT.md +44 -0
  19. pyqicharts-2.0.0/datasets/DATASET_MANIFEST.csv +154 -0
  20. pyqicharts-2.0.0/datasets/README.md +17 -0
  21. pyqicharts-2.0.0/datasets/sample/sample_healthcare_qi_data.csv +13 -0
  22. pyqicharts-2.0.0/datasets/sample/sample_subgroup_measurements.csv +25 -0
  23. pyqicharts-2.0.0/datasets/synthetic/finance/fraud_investigations.csv +73 -0
  24. pyqicharts-2.0.0/datasets/synthetic/finance/invoice_processing.csv +73 -0
  25. pyqicharts-2.0.0/datasets/synthetic/finance/payment_errors.csv +73 -0
  26. pyqicharts-2.0.0/datasets/synthetic/healthcare/dnas.csv +73 -0
  27. pyqicharts-2.0.0/datasets/synthetic/healthcare/emergency_department_waiting_times.csv +73 -0
  28. pyqicharts-2.0.0/datasets/synthetic/healthcare/falls.csv +73 -0
  29. pyqicharts-2.0.0/datasets/synthetic/healthcare/friends_and_family_test.csv +73 -0
  30. pyqicharts-2.0.0/datasets/synthetic/healthcare/length_of_stay.csv +73 -0
  31. pyqicharts-2.0.0/datasets/synthetic/healthcare/pressure_ulcers.csv +73 -0
  32. pyqicharts-2.0.0/datasets/synthetic/healthcare/theatre_utilisation.csv +73 -0
  33. pyqicharts-2.0.0/datasets/synthetic/manufacturing/defect_counts.csv +73 -0
  34. pyqicharts-2.0.0/datasets/synthetic/manufacturing/machine_downtime.csv +73 -0
  35. pyqicharts-2.0.0/datasets/synthetic/manufacturing/production_throughput.csv +73 -0
  36. pyqicharts-2.0.0/datasets/synthetic/service_industries/call_centre_response_times.csv +73 -0
  37. pyqicharts-2.0.0/datasets/synthetic/service_industries/customer_complaints.csv +73 -0
  38. pyqicharts-2.0.0/datasets/synthetic/service_industries/helpdesk_tickets.csv +73 -0
  39. pyqicharts-2.0.0/datasets/synthetic/service_industries/website_latency.csv +73 -0
  40. pyqicharts-2.0.0/datasets/synthetic/teaching/cyclical_variation.csv +73 -0
  41. pyqicharts-2.0.0/datasets/synthetic/teaching/gradual_trend.csv +73 -0
  42. pyqicharts-2.0.0/datasets/synthetic/teaching/increasing_variation.csv +73 -0
  43. pyqicharts-2.0.0/datasets/synthetic/teaching/multiple_special_causes.csv +73 -0
  44. pyqicharts-2.0.0/datasets/synthetic/teaching/process_shift.csv +73 -0
  45. pyqicharts-2.0.0/datasets/synthetic/teaching/seasonal_variation.csv +73 -0
  46. pyqicharts-2.0.0/datasets/synthetic/teaching/single_special_cause.csv +73 -0
  47. pyqicharts-2.0.0/datasets/synthetic/teaching/stable_process.csv +73 -0
  48. pyqicharts-2.0.0/datasets/validation_external/README.md +14 -0
  49. pyqicharts-2.0.0/datasets/validation_external/curated/naif_inpatient_falls_trust_rates_2022.csv +122 -0
  50. pyqicharts-2.0.0/datasets/validation_external/curated/ons_deaths_registered_england_wales_1838_2024.csv +188 -0
  51. pyqicharts-2.0.0/datasets/validation_external/curated/ons_live_births_england_wales_1938_2025.csv +89 -0
  52. pyqicharts-2.0.0/datasets/validation_external/curated/wlmds_waiting_list_72_weeks.csv +73 -0
  53. pyqicharts-2.0.0/datasets/validation_external/expected_outputs/external_expected_manifest.csv +5 -0
  54. pyqicharts-2.0.0/datasets/validation_external/expected_outputs/naif_inpatient_falls_trust_rates_2022_expected.csv +122 -0
  55. pyqicharts-2.0.0/datasets/validation_external/expected_outputs/ons_deaths_registered_england_wales_1838_2024_expected.csv +188 -0
  56. pyqicharts-2.0.0/datasets/validation_external/expected_outputs/ons_live_births_england_wales_1938_2025_expected.csv +89 -0
  57. pyqicharts-2.0.0/datasets/validation_external/expected_outputs/wlmds_waiting_list_72_weeks_expected.csv +73 -0
  58. pyqicharts-2.0.0/datasets/validation_external/external_sources.csv +9 -0
  59. pyqicharts-2.0.0/datasets/validation_external/raw/WLMDS-Summary-to-26-Apr-2026.xlsx +0 -0
  60. pyqicharts-2.0.0/datasets/validation_external/raw/annualdeaths2024.xlsx +0 -0
  61. pyqicharts-2.0.0/datasets/validation_external/raw/live-births-england-and-wales-1938-2025.csv +89 -0
  62. pyqicharts-2.0.0/datasets/validation_external/raw/phase-4-naif-facilities-audit-2022-annual-report-data.csv +185 -0
  63. pyqicharts-2.0.0/datasets/validation_external/validation_external_plan.md +13 -0
  64. pyqicharts-2.0.0/datasets/validation_internal/expanded/README.md +9 -0
  65. pyqicharts-2.0.0/datasets/validation_internal/expanded/c_edge.csv +5 -0
  66. pyqicharts-2.0.0/datasets/validation_internal/expanded/fixture_manifest.csv +14 -0
  67. pyqicharts-2.0.0/datasets/validation_internal/expanded/g_edge.csv +4 -0
  68. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_c.csv +5 -0
  69. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_g.csv +5 -0
  70. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_i.csv +7 -0
  71. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_mr.csv +5 -0
  72. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_p.csv +5 -0
  73. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_p_prime.csv +5 -0
  74. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_pareto.csv +6 -0
  75. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_run.csv +7 -0
  76. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_s.csv +7 -0
  77. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_t.csv +5 -0
  78. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_u.csv +5 -0
  79. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_u_prime.csv +5 -0
  80. pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_xbar.csv +7 -0
  81. pyqicharts-2.0.0/datasets/validation_internal/expanded/i_edge.csv +6 -0
  82. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_c_process.csv +10 -0
  83. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_g_process.csv +10 -0
  84. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_i_process.csv +10 -0
  85. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_mr_process.csv +10 -0
  86. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_p_prime_process.csv +10 -0
  87. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_p_process.csv +10 -0
  88. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_pareto_process.csv +7 -0
  89. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_run_process.csv +10 -0
  90. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_s_process.csv +13 -0
  91. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_t_process.csv +10 -0
  92. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_u_prime_process.csv +10 -0
  93. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_u_process.csv +10 -0
  94. pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_xbar_process.csv +13 -0
  95. pyqicharts-2.0.0/datasets/validation_internal/expanded/mr_edge.csv +5 -0
  96. pyqicharts-2.0.0/datasets/validation_internal/expanded/p_edge.csv +5 -0
  97. pyqicharts-2.0.0/datasets/validation_internal/expanded/p_prime_edge.csv +4 -0
  98. pyqicharts-2.0.0/datasets/validation_internal/expanded/pareto_edge.csv +5 -0
  99. pyqicharts-2.0.0/datasets/validation_internal/expanded/run_edge.csv +6 -0
  100. pyqicharts-2.0.0/datasets/validation_internal/expanded/s_edge.csv +6 -0
  101. pyqicharts-2.0.0/datasets/validation_internal/expanded/t_edge.csv +4 -0
  102. pyqicharts-2.0.0/datasets/validation_internal/expanded/u_edge.csv +5 -0
  103. pyqicharts-2.0.0/datasets/validation_internal/expanded/u_prime_edge.csv +4 -0
  104. pyqicharts-2.0.0/datasets/validation_internal/expanded/xbar_edge.csv +6 -0
  105. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/c_edge_expected.csv +4 -0
  106. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/expected_manifest.csv +40 -0
  107. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/g_edge_expected.csv +4 -0
  108. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_c_expected.csv +5 -0
  109. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_g_expected.csv +5 -0
  110. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_i_expected.csv +7 -0
  111. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_mr_expected.csv +5 -0
  112. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_p_expected.csv +5 -0
  113. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_p_prime_expected.csv +5 -0
  114. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_pareto_expected.csv +4 -0
  115. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_run_expected.csv +7 -0
  116. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_s_expected.csv +4 -0
  117. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_t_expected.csv +5 -0
  118. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_u_expected.csv +5 -0
  119. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_u_prime_expected.csv +5 -0
  120. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_xbar_expected.csv +4 -0
  121. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/i_edge_expected.csv +5 -0
  122. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_c_process_expected.csv +10 -0
  123. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_g_process_expected.csv +10 -0
  124. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_i_process_expected.csv +10 -0
  125. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_mr_process_expected.csv +10 -0
  126. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_p_prime_process_expected.csv +10 -0
  127. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_p_process_expected.csv +10 -0
  128. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_pareto_process_expected.csv +4 -0
  129. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_run_process_expected.csv +10 -0
  130. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_s_process_expected.csv +7 -0
  131. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_t_process_expected.csv +10 -0
  132. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_u_prime_process_expected.csv +10 -0
  133. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_u_process_expected.csv +10 -0
  134. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_xbar_process_expected.csv +7 -0
  135. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/mr_edge_expected.csv +4 -0
  136. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/p_edge_expected.csv +3 -0
  137. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/p_prime_edge_expected.csv +4 -0
  138. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/pareto_edge_expected.csv +3 -0
  139. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/run_edge_expected.csv +5 -0
  140. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/s_edge_expected.csv +4 -0
  141. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/t_edge_expected.csv +4 -0
  142. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/u_edge_expected.csv +3 -0
  143. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/u_prime_edge_expected.csv +4 -0
  144. pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/xbar_edge_expected.csv +4 -0
  145. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/c_expected.csv +9 -0
  146. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/g_expected.csv +9 -0
  147. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/i_expected.csv +9 -0
  148. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/mr_expected.csv +9 -0
  149. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/p_expected.csv +9 -0
  150. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/p_prime_expected.csv +9 -0
  151. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/run_expected.csv +9 -0
  152. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/s_expected.csv +7 -0
  153. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/t_expected.csv +9 -0
  154. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/u_expected.csv +9 -0
  155. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/u_prime_expected.csv +9 -0
  156. pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/xbar_expected.csv +7 -0
  157. pyqicharts-2.0.0/datasets/validation_internal/inputs/c.csv +9 -0
  158. pyqicharts-2.0.0/datasets/validation_internal/inputs/g.csv +9 -0
  159. pyqicharts-2.0.0/datasets/validation_internal/inputs/i.csv +9 -0
  160. pyqicharts-2.0.0/datasets/validation_internal/inputs/mr.csv +9 -0
  161. pyqicharts-2.0.0/datasets/validation_internal/inputs/p.csv +9 -0
  162. pyqicharts-2.0.0/datasets/validation_internal/inputs/p_prime.csv +9 -0
  163. pyqicharts-2.0.0/datasets/validation_internal/inputs/run.csv +9 -0
  164. pyqicharts-2.0.0/datasets/validation_internal/inputs/s.csv +25 -0
  165. pyqicharts-2.0.0/datasets/validation_internal/inputs/t.csv +9 -0
  166. pyqicharts-2.0.0/datasets/validation_internal/inputs/u.csv +9 -0
  167. pyqicharts-2.0.0/datasets/validation_internal/inputs/u_prime.csv +9 -0
  168. pyqicharts-2.0.0/datasets/validation_internal/inputs/xbar.csv +25 -0
  169. pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/g_segmented.csv +13 -0
  170. pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/g_segmented_expected.csv +13 -0
  171. pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/segmented_rare_event_manifest.csv +3 -0
  172. pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/t_segmented.csv +13 -0
  173. pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/t_segmented_expected.csv +13 -0
  174. pyqicharts-2.0.0/docs/analyst_workflow.md +64 -0
  175. pyqicharts-2.0.0/docs/api_reference.md +69 -0
  176. pyqicharts-2.0.0/docs/attribute_charts.md +9 -0
  177. pyqicharts-2.0.0/docs/calculation_assumptions.md +35 -0
  178. pyqicharts-2.0.0/docs/education_and_training.md +14 -0
  179. pyqicharts-2.0.0/docs/example_gallery.md +44 -0
  180. pyqicharts-2.0.0/docs/excel_companion.md +38 -0
  181. pyqicharts-2.0.0/docs/excel_guide.md +17 -0
  182. pyqicharts-2.0.0/docs/excel_setup.md +36 -0
  183. pyqicharts-2.0.0/docs/excel_troubleshooting.md +26 -0
  184. pyqicharts-2.0.0/docs/excel_user_guide.md +31 -0
  185. pyqicharts-2.0.0/docs/github-release-v0.3.0.md +20 -0
  186. pyqicharts-2.0.0/docs/github-release-v0.4.0.md +25 -0
  187. pyqicharts-2.0.0/docs/github-release-v0.5.0.md +26 -0
  188. pyqicharts-2.0.0/docs/github-release-v0.6.0.md +29 -0
  189. pyqicharts-2.0.0/docs/github-release-v0.7.0.md +31 -0
  190. pyqicharts-2.0.0/docs/github-release-v0.8.0.md +32 -0
  191. pyqicharts-2.0.0/docs/github-release-v0.9.0.md +25 -0
  192. pyqicharts-2.0.0/docs/github-release-v1.0.0.md +32 -0
  193. pyqicharts-2.0.0/docs/github-release-v1.1.0.md +16 -0
  194. pyqicharts-2.0.0/docs/healthcare_qi_guide.md +10 -0
  195. pyqicharts-2.0.0/docs/individuals_charts.md +21 -0
  196. pyqicharts-2.0.0/docs/installation.md +22 -0
  197. pyqicharts-2.0.0/docs/interactive_outputs.md +19 -0
  198. pyqicharts-2.0.0/docs/interpretation_table.md +60 -0
  199. pyqicharts-2.0.0/docs/localization.md +19 -0
  200. pyqicharts-2.0.0/docs/methodology_limitations.md +9 -0
  201. pyqicharts-2.0.0/docs/migration_qicharts2.md +12 -0
  202. pyqicharts-2.0.0/docs/powerbi.md +39 -0
  203. pyqicharts-2.0.0/docs/powerbi_template_pattern.md +25 -0
  204. pyqicharts-2.0.0/docs/powerpoint_guide.md +17 -0
  205. pyqicharts-2.0.0/docs/quickstart.md +14 -0
  206. pyqicharts-2.0.0/docs/rare_event_charts.md +12 -0
  207. pyqicharts-2.0.0/docs/rare_event_spc.md +45 -0
  208. pyqicharts-2.0.0/docs/real_world_validation.md +22 -0
  209. pyqicharts-2.0.0/docs/release-notes-v0.3.0.md +26 -0
  210. pyqicharts-2.0.0/docs/release-notes-v0.4.0.md +38 -0
  211. pyqicharts-2.0.0/docs/release-notes-v0.5.0.md +54 -0
  212. pyqicharts-2.0.0/docs/release-notes-v0.6.0.md +44 -0
  213. pyqicharts-2.0.0/docs/release-notes-v0.7.0.md +54 -0
  214. pyqicharts-2.0.0/docs/release-notes-v0.8.0.md +55 -0
  215. pyqicharts-2.0.0/docs/release-notes-v0.9.0.md +20 -0
  216. pyqicharts-2.0.0/docs/release-notes-v1.0.0.md +36 -0
  217. pyqicharts-2.0.0/docs/release-notes-v1.1.0.md +18 -0
  218. pyqicharts-2.0.0/docs/release-notes-v1.2.0.md +14 -0
  219. pyqicharts-2.0.0/docs/release-notes-v1.2.1.md +18 -0
  220. pyqicharts-2.0.0/docs/release-notes-v1.3.0.md +13 -0
  221. pyqicharts-2.0.0/docs/release-notes-v1.3.1.md +20 -0
  222. pyqicharts-2.0.0/docs/release-notes-v1.3.2.md +23 -0
  223. pyqicharts-2.0.0/docs/release-notes-v1.3.3.md +21 -0
  224. pyqicharts-2.0.0/docs/release-notes-v1.3.4.md +22 -0
  225. pyqicharts-2.0.0/docs/release-notes-v1.4.0.md +24 -0
  226. pyqicharts-2.0.0/docs/release-notes-v1.5.0.md +16 -0
  227. pyqicharts-2.0.0/docs/release-notes-v1.6.0.md +19 -0
  228. pyqicharts-2.0.0/docs/release-notes-v1.7.0.md +25 -0
  229. pyqicharts-2.0.0/docs/release-notes-v2.0.0.md +15 -0
  230. pyqicharts-2.0.0/docs/release-notes.md +9 -0
  231. pyqicharts-2.0.0/docs/report_metadata_schema.md +12 -0
  232. pyqicharts-2.0.0/docs/reporting.md +83 -0
  233. pyqicharts-2.0.0/docs/reports/excel_companion_report.md +42 -0
  234. pyqicharts-2.0.0/docs/reports/qi_spc_compatibility_report.md +23 -0
  235. pyqicharts-2.0.0/docs/reports/statistical_review.md +252 -0
  236. pyqicharts-2.0.0/docs/risk_adjusted_charts.md +10 -0
  237. pyqicharts-2.0.0/docs/risk_adjusted_spc.md +51 -0
  238. pyqicharts-2.0.0/docs/run_charts.md +9 -0
  239. pyqicharts-2.0.0/docs/statistical_reference.md +205 -0
  240. pyqicharts-2.0.0/docs/user_guide.md +113 -0
  241. pyqicharts-2.0.0/docs/validation.md +9 -0
  242. pyqicharts-2.0.0/docs/worked_examples.md +99 -0
  243. pyqicharts-2.0.0/examples/altair_example.py +11 -0
  244. pyqicharts-2.0.0/examples/batch_report.py +8 -0
  245. pyqicharts-2.0.0/examples/batch_report_config.json +21 -0
  246. pyqicharts-2.0.0/examples/c_chart.py +9 -0
  247. pyqicharts-2.0.0/examples/education_simulation.py +7 -0
  248. pyqicharts-2.0.0/examples/excel_export.py +10 -0
  249. pyqicharts-2.0.0/examples/excel_gallery/healthcare_naif_falls_rates.xlsx +0 -0
  250. pyqicharts-2.0.0/examples/excel_gallery/healthcare_wlmds_waiting_times.xlsx +0 -0
  251. pyqicharts-2.0.0/examples/excel_gallery/manufacturing_defects.xlsx +0 -0
  252. pyqicharts-2.0.0/examples/excel_gallery/teaching_process_shift.xlsx +0 -0
  253. pyqicharts-2.0.0/examples/excel_table_output.py +7 -0
  254. pyqicharts-2.0.0/examples/g_chart.py +15 -0
  255. pyqicharts-2.0.0/examples/linkedin_demo_chart.py +12 -0
  256. pyqicharts-2.0.0/examples/notebooks/qi_spc_exercise.ipynb +39 -0
  257. pyqicharts-2.0.0/examples/p_chart.py +9 -0
  258. pyqicharts-2.0.0/examples/p_prime_chart.py +16 -0
  259. pyqicharts-2.0.0/examples/plotly_example.py +11 -0
  260. pyqicharts-2.0.0/examples/powerbi_attribute_chart.py +10 -0
  261. pyqicharts-2.0.0/examples/powerbi_export.py +11 -0
  262. pyqicharts-2.0.0/examples/powerbi_python_visual.py +10 -0
  263. pyqicharts-2.0.0/examples/powerpoint_export.py +10 -0
  264. pyqicharts-2.0.0/examples/quick_start.py +20 -0
  265. pyqicharts-2.0.0/examples/run_chart.py +9 -0
  266. pyqicharts-2.0.0/examples/s_chart.py +8 -0
  267. pyqicharts-2.0.0/examples/t_chart.py +15 -0
  268. pyqicharts-2.0.0/examples/u_chart.py +9 -0
  269. pyqicharts-2.0.0/examples/u_prime_chart.py +16 -0
  270. pyqicharts-2.0.0/examples/xbar_chart.py +8 -0
  271. pyqicharts-2.0.0/examples/xmr_chart.py +9 -0
  272. pyqicharts-2.0.0/excel/README_excel.md +5 -0
  273. pyqicharts-2.0.0/excel/pyqicharts_excel_template.xlsm +0 -0
  274. pyqicharts-2.0.0/excel/pyqicharts_excel_template.xlsx +0 -0
  275. pyqicharts-2.0.0/office_addin/README.md +15 -0
  276. pyqicharts-2.0.0/office_addin/governance_checklist.md +11 -0
  277. pyqicharts-2.0.0/office_addin/manifest.xml +18 -0
  278. pyqicharts-2.0.0/pyproject.toml +54 -0
  279. pyqicharts-2.0.0/sample_data/sample_healthcare_qi_data.csv +13 -0
  280. pyqicharts-2.0.0/sample_data/sample_subgroup_measurements.csv +25 -0
  281. pyqicharts-2.0.0/setup.cfg +4 -0
  282. pyqicharts-2.0.0/src/pyqicharts/__init__.py +51 -0
  283. pyqicharts-2.0.0/src/pyqicharts/advanced.py +150 -0
  284. pyqicharts-2.0.0/src/pyqicharts/chart_selector.py +55 -0
  285. pyqicharts-2.0.0/src/pyqicharts/cli.py +106 -0
  286. pyqicharts-2.0.0/src/pyqicharts/core.py +204 -0
  287. pyqicharts-2.0.0/src/pyqicharts/datasets.py +96 -0
  288. pyqicharts-2.0.0/src/pyqicharts/education.py +87 -0
  289. pyqicharts-2.0.0/src/pyqicharts/export.py +177 -0
  290. pyqicharts-2.0.0/src/pyqicharts/interactive.py +58 -0
  291. pyqicharts-2.0.0/src/pyqicharts/localization.py +58 -0
  292. pyqicharts-2.0.0/src/pyqicharts/nelson.py +157 -0
  293. pyqicharts-2.0.0/src/pyqicharts/pareto.py +38 -0
  294. pyqicharts-2.0.0/src/pyqicharts/powerbi.py +370 -0
  295. pyqicharts-2.0.0/src/pyqicharts/presets.py +51 -0
  296. pyqicharts-2.0.0/src/pyqicharts/reporting.py +231 -0
  297. pyqicharts-2.0.0/src/pyqicharts/rules.py +193 -0
  298. pyqicharts-2.0.0/src/pyqicharts/sample_data/sample_healthcare_qi_data.csv +13 -0
  299. pyqicharts-2.0.0/src/pyqicharts/sample_data/sample_subgroup_measurements.csv +25 -0
  300. pyqicharts-2.0.0/src/pyqicharts/signals.py +97 -0
  301. pyqicharts-2.0.0/src/pyqicharts/tables.py +686 -0
  302. pyqicharts-2.0.0/src/pyqicharts/themes.py +39 -0
  303. pyqicharts-2.0.0/src/pyqicharts/validation.py +149 -0
  304. pyqicharts-2.0.0/src/pyqicharts/xmr_rules.py +276 -0
  305. pyqicharts-2.0.0/src/pyqicharts.egg-info/PKG-INFO +131 -0
  306. pyqicharts-2.0.0/src/pyqicharts.egg-info/SOURCES.txt +464 -0
  307. pyqicharts-2.0.0/src/pyqicharts.egg-info/dependency_links.txt +1 -0
  308. pyqicharts-2.0.0/src/pyqicharts.egg-info/entry_points.txt +3 -0
  309. pyqicharts-2.0.0/src/pyqicharts.egg-info/requires.txt +30 -0
  310. pyqicharts-2.0.0/src/pyqicharts.egg-info/top_level.txt +2 -0
  311. pyqicharts-2.0.0/src/pyqicharts_excel/__init__.py +35 -0
  312. pyqicharts-2.0.0/src/pyqicharts_excel/config.py +235 -0
  313. pyqicharts-2.0.0/src/pyqicharts_excel/examples.py +20 -0
  314. pyqicharts-2.0.0/src/pyqicharts_excel/excel_io.py +265 -0
  315. pyqicharts-2.0.0/src/pyqicharts_excel/outputs.py +166 -0
  316. pyqicharts-2.0.0/src/pyqicharts_excel/ribbon.py +36 -0
  317. pyqicharts-2.0.0/src/pyqicharts_excel/runner.py +218 -0
  318. pyqicharts-2.0.0/src/pyqicharts_excel/validation.py +81 -0
  319. pyqicharts-2.0.0/tests/conftest.py +12 -0
  320. pyqicharts-2.0.0/tests/test_excel_config.py +126 -0
  321. pyqicharts-2.0.0/tests/test_excel_helpers.py +89 -0
  322. pyqicharts-2.0.0/tests/test_excel_io.py +36 -0
  323. pyqicharts-2.0.0/tests/test_excel_outputs.py +67 -0
  324. pyqicharts-2.0.0/tests/test_excel_runner.py +167 -0
  325. pyqicharts-2.0.0/tests/test_process_features.py +70 -0
  326. pyqicharts-2.0.0/tests/test_qic.py +41 -0
  327. pyqicharts-2.0.0/tests/test_rare_event_charts.py +93 -0
  328. pyqicharts-2.0.0/tests/test_reporting.py +121 -0
  329. pyqicharts-2.0.0/tests/test_risk_adjusted_charts.py +57 -0
  330. pyqicharts-2.0.0/tests/test_rules.py +7 -0
  331. pyqicharts-2.0.0/tests/test_segment_validation_audit.py +110 -0
  332. pyqicharts-2.0.0/tests/test_tables.py +30 -0
  333. pyqicharts-2.0.0/tests/test_themes.py +9 -0
  334. pyqicharts-2.0.0/tests/test_v1_1_parity_features.py +85 -0
  335. pyqicharts-2.0.0/tests/test_v1_2_completion.py +123 -0
  336. pyqicharts-2.0.0/tests/test_v1_4_cleanup_release.py +69 -0
  337. pyqicharts-2.0.0/tests/test_v1_5_realdata_release.py +84 -0
  338. pyqicharts-2.0.0/tests/test_v1_6_sample_data_api.py +59 -0
  339. pyqicharts-2.0.0/tests/test_v1_7_qi_compatibility.py +153 -0
  340. pyqicharts-2.0.0/tests/test_v1_release.py +77 -0
  341. pyqicharts-2.0.0/tests/test_v2_release_candidate.py +355 -0
  342. pyqicharts-2.0.0/tests/test_validation_fixture_expansion.py +80 -0
  343. pyqicharts-2.0.0/tests/test_validation_release.py +59 -0
  344. pyqicharts-2.0.0/tests/test_xmr_rules.py +68 -0
  345. pyqicharts-2.0.0/tests/validation/test_chart_validation_data.py +55 -0
  346. pyqicharts-2.0.0/validation/README.md +7 -0
  347. pyqicharts-2.0.0/validation/acceptance_checklist.md +8 -0
  348. pyqicharts-2.0.0/validation/datasets/g_chart.csv +7 -0
  349. pyqicharts-2.0.0/validation/datasets/p_prime.csv +7 -0
  350. pyqicharts-2.0.0/validation/datasets/t_chart.csv +7 -0
  351. pyqicharts-2.0.0/validation/datasets/xmr.csv +7 -0
  352. pyqicharts-2.0.0/validation/expected_outputs/g_chart_expected.csv +7 -0
  353. pyqicharts-2.0.0/validation/expected_outputs/p_prime_expected.csv +7 -0
  354. pyqicharts-2.0.0/validation/expected_outputs/t_chart_expected.csv +7 -0
  355. pyqicharts-2.0.0/validation/expected_outputs/xmr_expected.csv +7 -0
  356. pyqicharts-2.0.0/validation_data/README.md +14 -0
  357. pyqicharts-2.0.0/validation_data/expanded/README.md +9 -0
  358. pyqicharts-2.0.0/validation_data/expanded/c_edge.csv +5 -0
  359. pyqicharts-2.0.0/validation_data/expanded/fixture_manifest.csv +14 -0
  360. pyqicharts-2.0.0/validation_data/expanded/g_edge.csv +4 -0
  361. pyqicharts-2.0.0/validation_data/expanded/healthcare_c.csv +5 -0
  362. pyqicharts-2.0.0/validation_data/expanded/healthcare_g.csv +5 -0
  363. pyqicharts-2.0.0/validation_data/expanded/healthcare_i.csv +7 -0
  364. pyqicharts-2.0.0/validation_data/expanded/healthcare_mr.csv +5 -0
  365. pyqicharts-2.0.0/validation_data/expanded/healthcare_p.csv +5 -0
  366. pyqicharts-2.0.0/validation_data/expanded/healthcare_p_prime.csv +5 -0
  367. pyqicharts-2.0.0/validation_data/expanded/healthcare_pareto.csv +6 -0
  368. pyqicharts-2.0.0/validation_data/expanded/healthcare_run.csv +7 -0
  369. pyqicharts-2.0.0/validation_data/expanded/healthcare_s.csv +7 -0
  370. pyqicharts-2.0.0/validation_data/expanded/healthcare_t.csv +5 -0
  371. pyqicharts-2.0.0/validation_data/expanded/healthcare_u.csv +5 -0
  372. pyqicharts-2.0.0/validation_data/expanded/healthcare_u_prime.csv +5 -0
  373. pyqicharts-2.0.0/validation_data/expanded/healthcare_xbar.csv +7 -0
  374. pyqicharts-2.0.0/validation_data/expanded/i_edge.csv +6 -0
  375. pyqicharts-2.0.0/validation_data/expanded/industrial_c_process.csv +10 -0
  376. pyqicharts-2.0.0/validation_data/expanded/industrial_g_process.csv +10 -0
  377. pyqicharts-2.0.0/validation_data/expanded/industrial_i_process.csv +10 -0
  378. pyqicharts-2.0.0/validation_data/expanded/industrial_mr_process.csv +10 -0
  379. pyqicharts-2.0.0/validation_data/expanded/industrial_p_prime_process.csv +10 -0
  380. pyqicharts-2.0.0/validation_data/expanded/industrial_p_process.csv +10 -0
  381. pyqicharts-2.0.0/validation_data/expanded/industrial_pareto_process.csv +7 -0
  382. pyqicharts-2.0.0/validation_data/expanded/industrial_run_process.csv +10 -0
  383. pyqicharts-2.0.0/validation_data/expanded/industrial_s_process.csv +13 -0
  384. pyqicharts-2.0.0/validation_data/expanded/industrial_t_process.csv +10 -0
  385. pyqicharts-2.0.0/validation_data/expanded/industrial_u_prime_process.csv +10 -0
  386. pyqicharts-2.0.0/validation_data/expanded/industrial_u_process.csv +10 -0
  387. pyqicharts-2.0.0/validation_data/expanded/industrial_xbar_process.csv +13 -0
  388. pyqicharts-2.0.0/validation_data/expanded/mr_edge.csv +5 -0
  389. pyqicharts-2.0.0/validation_data/expanded/p_edge.csv +5 -0
  390. pyqicharts-2.0.0/validation_data/expanded/p_prime_edge.csv +4 -0
  391. pyqicharts-2.0.0/validation_data/expanded/pareto_edge.csv +5 -0
  392. pyqicharts-2.0.0/validation_data/expanded/run_edge.csv +6 -0
  393. pyqicharts-2.0.0/validation_data/expanded/s_edge.csv +6 -0
  394. pyqicharts-2.0.0/validation_data/expanded/t_edge.csv +4 -0
  395. pyqicharts-2.0.0/validation_data/expanded/u_edge.csv +5 -0
  396. pyqicharts-2.0.0/validation_data/expanded/u_prime_edge.csv +4 -0
  397. pyqicharts-2.0.0/validation_data/expanded/xbar_edge.csv +6 -0
  398. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/c_edge_expected.csv +4 -0
  399. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/expected_manifest.csv +40 -0
  400. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/g_edge_expected.csv +4 -0
  401. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_c_expected.csv +5 -0
  402. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_g_expected.csv +5 -0
  403. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_i_expected.csv +7 -0
  404. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_mr_expected.csv +5 -0
  405. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_p_expected.csv +5 -0
  406. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_p_prime_expected.csv +5 -0
  407. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_pareto_expected.csv +4 -0
  408. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_run_expected.csv +7 -0
  409. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_s_expected.csv +4 -0
  410. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_t_expected.csv +5 -0
  411. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_u_expected.csv +5 -0
  412. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_u_prime_expected.csv +5 -0
  413. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_xbar_expected.csv +4 -0
  414. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/i_edge_expected.csv +5 -0
  415. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_c_process_expected.csv +10 -0
  416. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_g_process_expected.csv +10 -0
  417. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_i_process_expected.csv +10 -0
  418. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_mr_process_expected.csv +10 -0
  419. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_p_prime_process_expected.csv +10 -0
  420. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_p_process_expected.csv +10 -0
  421. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_pareto_process_expected.csv +4 -0
  422. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_run_process_expected.csv +10 -0
  423. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_s_process_expected.csv +7 -0
  424. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_t_process_expected.csv +10 -0
  425. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_u_prime_process_expected.csv +10 -0
  426. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_u_process_expected.csv +10 -0
  427. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_xbar_process_expected.csv +7 -0
  428. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/mr_edge_expected.csv +4 -0
  429. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/p_edge_expected.csv +3 -0
  430. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/p_prime_edge_expected.csv +4 -0
  431. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/pareto_edge_expected.csv +3 -0
  432. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/run_edge_expected.csv +5 -0
  433. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/s_edge_expected.csv +4 -0
  434. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/t_edge_expected.csv +4 -0
  435. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/u_edge_expected.csv +3 -0
  436. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/u_prime_edge_expected.csv +4 -0
  437. pyqicharts-2.0.0/validation_data/expanded_expected_outputs/xbar_edge_expected.csv +4 -0
  438. pyqicharts-2.0.0/validation_data/expected_outputs/c_expected.csv +9 -0
  439. pyqicharts-2.0.0/validation_data/expected_outputs/g_expected.csv +9 -0
  440. pyqicharts-2.0.0/validation_data/expected_outputs/i_expected.csv +9 -0
  441. pyqicharts-2.0.0/validation_data/expected_outputs/mr_expected.csv +9 -0
  442. pyqicharts-2.0.0/validation_data/expected_outputs/p_expected.csv +9 -0
  443. pyqicharts-2.0.0/validation_data/expected_outputs/p_prime_expected.csv +9 -0
  444. pyqicharts-2.0.0/validation_data/expected_outputs/run_expected.csv +9 -0
  445. pyqicharts-2.0.0/validation_data/expected_outputs/s_expected.csv +7 -0
  446. pyqicharts-2.0.0/validation_data/expected_outputs/t_expected.csv +9 -0
  447. pyqicharts-2.0.0/validation_data/expected_outputs/u_expected.csv +9 -0
  448. pyqicharts-2.0.0/validation_data/expected_outputs/u_prime_expected.csv +9 -0
  449. pyqicharts-2.0.0/validation_data/expected_outputs/xbar_expected.csv +7 -0
  450. pyqicharts-2.0.0/validation_data/inputs/c.csv +9 -0
  451. pyqicharts-2.0.0/validation_data/inputs/g.csv +9 -0
  452. pyqicharts-2.0.0/validation_data/inputs/i.csv +9 -0
  453. pyqicharts-2.0.0/validation_data/inputs/mr.csv +9 -0
  454. pyqicharts-2.0.0/validation_data/inputs/p.csv +9 -0
  455. pyqicharts-2.0.0/validation_data/inputs/p_prime.csv +9 -0
  456. pyqicharts-2.0.0/validation_data/inputs/run.csv +9 -0
  457. pyqicharts-2.0.0/validation_data/inputs/s.csv +25 -0
  458. pyqicharts-2.0.0/validation_data/inputs/t.csv +9 -0
  459. pyqicharts-2.0.0/validation_data/inputs/u.csv +9 -0
  460. pyqicharts-2.0.0/validation_data/inputs/u_prime.csv +9 -0
  461. pyqicharts-2.0.0/validation_data/inputs/xbar.csv +25 -0
  462. pyqicharts-2.0.0/validation_data/segmented_rare_event/g_segmented.csv +13 -0
  463. pyqicharts-2.0.0/validation_data/segmented_rare_event/g_segmented_expected.csv +13 -0
  464. pyqicharts-2.0.0/validation_data/segmented_rare_event/segmented_rare_event_manifest.csv +3 -0
  465. pyqicharts-2.0.0/validation_data/segmented_rare_event/t_segmented.csv +13 -0
  466. pyqicharts-2.0.0/validation_data/segmented_rare_event/t_segmented_expected.csv +13 -0
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a reproducible problem
4
+ title: "[Bug]: "
5
+ labels: bug
6
+ ---
7
+
8
+ ## What happened?
9
+
10
+ ## Minimal example
11
+
12
+ ## Expected behaviour
13
+
14
+ ## Environment
15
+
16
+ - pyqicharts version:
17
+ - Python version:
18
+ - Operating system:
19
+
20
+ ## Validation impact
21
+
22
+ Does this affect calculations, reporting, packaging or documentation?
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an improvement
4
+ title: "[Feature]: "
5
+ labels: enhancement
6
+ ---
7
+
8
+ ## Problem to solve
9
+
10
+ ## Proposed behaviour
11
+
12
+ ## Example usage
13
+
14
+ ## Validation or documentation needed
@@ -0,0 +1,9 @@
1
+ ## Summary
2
+
3
+ ## Public API impact
4
+
5
+ ## Validation impact
6
+
7
+ ## Tests run
8
+
9
+ ## Documentation updated
@@ -0,0 +1,27 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ${{ matrix.os }}
10
+ env:
11
+ MPLBACKEND: Agg
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest, windows-latest, macos-latest]
16
+ python-version: ["3.10", "3.11", "3.12"]
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+ - name: Install
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ python -m pip install -e .[dev]
26
+ - name: Test
27
+ run: pytest --cov=pyqicharts --cov-report=term-missing
@@ -0,0 +1,75 @@
1
+ # API Stability
2
+
3
+ Status: v2.0.0.
4
+
5
+ pyqicharts keeps the simple charting interface central and treats public APIs as additive from this stable production release onward.
6
+
7
+ ## Stable Core APIs
8
+
9
+ - `qic(...)`
10
+ - `qic_table(...)`
11
+ - `pareto_chart(...)`
12
+ - `pareto_table(...)`
13
+ - `paretochart(...)` alias
14
+
15
+ ## Stable Reporting APIs
16
+
17
+ - `export_png(...)`
18
+ - `export_excel(...)`
19
+ - `export_powerpoint(...)`
20
+ - `create_report_bundle(...)`
21
+ - `create_qi_report_pack(...)`
22
+ - `create_report_pack_from_config(...)`
23
+ - `load_chart_config(...)`
24
+ - `run_chart_batch(...)`
25
+
26
+ ## Stable Dashboard And Table APIs
27
+
28
+ - `powerbi_table(...)`
29
+ - `spc_summary_table(...)`
30
+ - `special_cause_summary_table(...)`
31
+ - `signal_table(...)`
32
+ - `kpi_table(...)`
33
+ - `interpretation_table(...)`
34
+ - `improvement_output_table(...)`
35
+ - `improvement_warning_table(...)`
36
+ - `phase_metadata_table(...)`
37
+ - `intervention_metadata_table(...)`
38
+ - `target_metadata_table(...)`
39
+
40
+ ## Stable Sample And Validation APIs
41
+
42
+ - `sample_healthcare_qi_data()`
43
+ - `sample_subgroup_measurements()`
44
+ - `get_sample_data_path(filename)`
45
+ - `validation_manifest()`
46
+ - `validation_summary()`
47
+ - `compare_to_expected(...)`
48
+
49
+ ## Optional Interactive APIs
50
+
51
+ - `qic_plotly(...)`
52
+ - `qic_altair(...)`
53
+ - `qic_widget(...)`
54
+
55
+ ## Education And Exploratory APIs
56
+
57
+ - `simulate_process(...)`
58
+ - `teaching_dataset(...)`
59
+ - `chart_selection_tutorial()`
60
+ - `interpretation_mistakes()`
61
+ - `autocorrelation_diagnostics(...)`
62
+ - `seasonality_diagnostics(...)`
63
+ - `overdispersion_test(...)`
64
+ - `funnel_table(...)`
65
+ - `rare_event_limits(...)`
66
+ - `risk_adjusted_summary(...)`
67
+ - `interactive_signal_review(...)`
68
+
69
+ ## Deprecations
70
+
71
+ No public API is deprecated in v2.0.0. Future removals should be documented for at least one minor release before removal.
72
+
73
+ ## Schema Versioning
74
+
75
+ Power and reporting table schemas are intended to be additive. New columns may be added; existing public columns should not be renamed without a deprecation period.
@@ -0,0 +1,33 @@
1
+ # Changelog
2
+
3
+ ## 2.0.0 - 2026-07-04
4
+
5
+ This stable production release rolls the package forward into a production-readiness phase focused on validation evidence, analyst workflows, governance and maintainability.
6
+
7
+ ### Added
8
+
9
+ - Validation manifest APIs: `validation_manifest()`, `validation_summary()` and `compare_to_expected(...)`.
10
+ - Batch reporting APIs: `load_chart_config(...)`, `run_chart_batch(...)` and `create_report_pack_from_config(...)`.
11
+ - Command-line routes for configured report generation and CSV/config validation.
12
+ - Advanced exploratory helpers for autocorrelation, seasonality, overdispersion, funnel tables, rare-event limits and risk-adjusted summaries.
13
+ - Education helpers for teaching datasets, process simulation, chart selection and interpretation mistakes.
14
+ - Optional notebook widget helper.
15
+ - Plotly, Altair, batch-report and teaching examples.
16
+ - Release governance files for contribution, citation, conduct, security, issues and pull requests.
17
+ - Report metadata schema output for configured report packs.
18
+
19
+ ### Changed
20
+
21
+ - Version metadata updated to `2.0.0`.
22
+ - User-facing error messages now explain missing columns, non-numeric values, invalid denominators, missing expected values, unknown chart types and empty datasets more clearly.
23
+ - Root markdown files have been reduced, with specialist reports moved under `docs/reports/`.
24
+ - Package manifest now includes the new release governance files, examples and notebook assets.
25
+
26
+ ### Validation Notes
27
+
28
+ The stable production release includes internal regression tests and reviewed deterministic examples. It does not claim independent external certification against live third-party outputs.
29
+
30
+ ## 1.7.0 - 2026-07-04
31
+
32
+ - Added compatibility-audit reporting helpers and warning-table coverage.
33
+ - Preserved neutral project naming and independent-project wording.
@@ -0,0 +1,14 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use pyqicharts in published work, please cite the software release."
3
+ title: "pyqicharts: Quality Improvement and Statistical Process Control charts for Python"
4
+ version: "2.0.0"
5
+ date-released: "2026-07-04"
6
+ authors:
7
+ - name: "Assegai Studios Ltd"
8
+ license: "MIT"
9
+ repository-code: "https://github.com/AssegaiStudios/Quality-improvement-charts"
10
+ keywords:
11
+ - quality improvement
12
+ - statistical process control
13
+ - run charts
14
+ - healthcare analytics
@@ -0,0 +1,13 @@
1
+ # Code of Conduct
2
+
3
+ pyqicharts aims to be a constructive, respectful project for analysts, developers, educators and quality-improvement teams.
4
+
5
+ Participants are expected to:
6
+
7
+ - Be respectful and patient.
8
+ - Assume good intent while remaining open to correction.
9
+ - Welcome contributors with different levels of technical or statistical experience.
10
+ - Focus criticism on ideas, evidence and implementation details.
11
+ - Avoid harassment, discriminatory language or personal attacks.
12
+
13
+ Project maintainers may remove comments, issues or contributions that do not meet these expectations.
@@ -0,0 +1,30 @@
1
+ # Contributing
2
+
3
+ Thank you for considering a contribution to pyqicharts.
4
+
5
+ ## Development Setup
6
+
7
+ 1. Create a fresh Python environment.
8
+ 2. Install the package in editable development mode with the development extras:
9
+
10
+ ```bash
11
+ python -m pip install -e .[dev]
12
+ ```
13
+
14
+ 3. Run the tests:
15
+
16
+ ```bash
17
+ python -m pytest --cov=pyqicharts
18
+ ```
19
+
20
+ ## Contribution Expectations
21
+
22
+ - Keep public APIs backwards compatible unless a deprecation has already been documented.
23
+ - Add or update tests for calculation, export, documentation or packaging changes.
24
+ - Keep optional dependencies behind lazy imports or optional extras.
25
+ - Do not add generated cache files, temporary files or local build artefacts.
26
+ - Document validation scope clearly: distinguish internal tests, reviewed examples and external certification.
27
+
28
+ ## Pull Requests
29
+
30
+ Please include a short description of the change, user impact, tests run and any validation evidence affected.
@@ -0,0 +1,15 @@
1
+ # Disclaimer
2
+
3
+ pyqicharts is an independent open-source Python package for Quality Improvement (QI) and Statistical Process Control (SPC) charting.
4
+
5
+ The package is provided by Assegai Studios Ltd as a general analytical and educational tool. It is not produced, commissioned, approved, endorsed, certified or maintained by any government body, public healthcare organisation, health service, regulator, software vendor or standards authority.
6
+
7
+ The methods implemented in pyqicharts draw on widely used QI and SPC principles, published statistical process-control methodology and common healthcare-improvement practice. Any resemblance to established public-sector reporting workflows, spreadsheet tools or dashboard conventions reflects shared statistical concepts and common improvement terminology, not ownership, sponsorship or formal affiliation.
8
+
9
+ Users are responsible for checking that outputs are appropriate for their own data, governance requirements and local decision-making processes. pyqicharts should not be used as the sole basis for clinical, operational, financial, legal or safety-critical decisions without suitable professional review.
10
+
11
+ The package is supplied without warranty. The maintainers do not guarantee that calculations, interpretations, examples, datasets, exports or reports are error-free or suitable for every use case. Validation evidence included with the project supports development and regression testing, but does not replace local assurance, statistical review or organisational approval.
12
+
13
+ Sample and synthetic datasets are included for demonstration and testing. Public-data extracts, where present, are included for reproducible examples and retain their own source provenance. Inclusion of any public-data-derived example does not imply endorsement by the original publisher.
14
+
15
+ Product names, organisation names and trademarks belong to their respective owners. References in documentation are descriptive only.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Assegai Studios Ltd
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,27 @@
1
+ include README.md
2
+ include CHANGELOG.md
3
+ include PARITY_REPORT.md
4
+ include VALIDATION_REPORT.md
5
+ include API_STABILITY.md
6
+ include DISCLAIMER.md
7
+ include ROADMAP.md
8
+ include CITATION.cff
9
+ include CONTRIBUTING.md
10
+ include CODE_OF_CONDUCT.md
11
+ include SECURITY.md
12
+ include LICENSE
13
+ recursive-include docs *.md
14
+ recursive-include datasets *.md *.csv *.xlsx
15
+ recursive-include examples *.py *.xlsx *.json *.ipynb
16
+ recursive-include office_addin *.md *.xml
17
+ recursive-include tests *.py
18
+ recursive-include validation *.md *.csv
19
+ recursive-include validation_data *.md *.csv
20
+ recursive-include sample_data *.csv
21
+ recursive-include src/pyqicharts/sample_data *.csv
22
+ recursive-include excel *.md *.xlsx *.xlsm
23
+ recursive-include .github *.yml *.md
24
+ prune dist
25
+ global-exclude __pycache__
26
+ global-exclude *.py[cod]
27
+ global-exclude .pytest_cache
@@ -0,0 +1,31 @@
1
+ # Parity And Scope Report
2
+
3
+ Release: v2.0.0 stable production release.
4
+
5
+ pyqicharts is now a specification-complete, validation-enhanced parity implementation for practical QI/SPC work in Python.
6
+
7
+ ## Implemented Scope
8
+
9
+ - Run charts and Anhøj-style run chart signals.
10
+ - Individuals and moving range charts.
11
+ - C, P and U attribute charts.
12
+ - Xbar and S subgroup charts.
13
+ - G and T rare-event charts.
14
+ - P-prime and U-prime risk-adjusted charts.
15
+ - Pareto charts.
16
+ - Baselines, recalculation periods, phases, freeze points, break points, exclusions, targets and interventions.
17
+ - Improvement, concern and neutral interpretation fields.
18
+ - Warning and interpretation tables for reporting workflows.
19
+ - Excel, PowerPoint, PNG, dashboard-friendly and batch-report outputs.
20
+ - Optional Plotly, Altair and notebook widget helpers.
21
+ - Sample data, synthetic datasets, teaching helpers and example gallery.
22
+
23
+ ## Validation Scope
24
+
25
+ The package includes reviewed deterministic expected-output examples and automated regression tests. It does not claim external certification against any third-party software or workbook outputs.
26
+
27
+ ## Known Limitations
28
+
29
+ - Optional interactive libraries are not installed with the core package.
30
+ - Rare-event and risk-adjusted charts require local analyst review of assumptions before operational use.
31
+ - External certification packs can be added later without changing the public API.
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyqicharts
3
+ Version: 2.0.0
4
+ Summary: Quality Improvement and Statistical Process Control charts for Python
5
+ Author: Assegai Studios Ltd
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/AssegaiStudios/Quality-improvement-charts
8
+ Project-URL: Repository, https://github.com/AssegaiStudios/Quality-improvement-charts
9
+ Project-URL: Issues, https://github.com/AssegaiStudios/Quality-improvement-charts/issues
10
+ Keywords: quality improvement,statistical process control,spc,run charts,control charts,healthcare analytics,power bi,excel
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Healthcare Industry
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
16
+ Requires-Python: >=3.9
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: numpy>=1.22
20
+ Requires-Dist: pandas>=1.5
21
+ Requires-Dist: matplotlib>=3.5
22
+ Provides-Extra: reporting
23
+ Requires-Dist: openpyxl>=3.1; extra == "reporting"
24
+ Requires-Dist: python-pptx>=0.6.23; extra == "reporting"
25
+ Provides-Extra: excel
26
+ Requires-Dist: xlwings>=0.30; extra == "excel"
27
+ Requires-Dist: openpyxl>=3.1; extra == "excel"
28
+ Requires-Dist: python-pptx>=0.6.23; extra == "excel"
29
+ Provides-Extra: interactive
30
+ Requires-Dist: plotly>=5; extra == "interactive"
31
+ Requires-Dist: altair>=5; extra == "interactive"
32
+ Requires-Dist: ipywidgets>=8; extra == "interactive"
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest>=7; extra == "dev"
35
+ Requires-Dist: pytest-cov>=5; extra == "dev"
36
+ Requires-Dist: build>=1.0; extra == "dev"
37
+ Requires-Dist: twine>=5; extra == "dev"
38
+ Requires-Dist: check-manifest>=0.50; extra == "dev"
39
+ Requires-Dist: openpyxl>=3.1; extra == "dev"
40
+ Requires-Dist: python-pptx>=0.6.23; extra == "dev"
41
+ Requires-Dist: xlwings>=0.30; extra == "dev"
42
+ Requires-Dist: plotly>=5; extra == "dev"
43
+ Requires-Dist: altair>=5; extra == "dev"
44
+ Requires-Dist: ipywidgets>=8; extra == "dev"
45
+ Dynamic: license-file
46
+
47
+ # pyqicharts
48
+
49
+ **2.0.0 stable production release**
50
+
51
+ pyqicharts is a Python package for Quality Improvement and Statistical Process Control charting. It is designed for analysts who need practical run charts, control charts, validation examples, sample data, reporting exports and education material.
52
+
53
+ The package is an independent open-source project by Assegai Studios Ltd. It is influenced by widely used quality-improvement and SPC methods, but it is not an official publication or endorsed implementation of any public body, vendor or external software project.
54
+
55
+ ## Install
56
+
57
+ ```bash
58
+ python -m pip install pyqicharts
59
+ ```
60
+
61
+ For reporting exports:
62
+
63
+ ```bash
64
+ python -m pip install pyqicharts[reporting]
65
+ ```
66
+
67
+ For interactive notebook outputs:
68
+
69
+ ```bash
70
+ python -m pip install pyqicharts[interactive]
71
+ ```
72
+
73
+ For development and test work:
74
+
75
+ ```bash
76
+ python -m pip install -e .[dev]
77
+ python -m pytest --cov=pyqicharts
78
+ ```
79
+
80
+ ## Quick Start
81
+
82
+ ```python
83
+ from pyqicharts import qic, sample_healthcare_qi_data
84
+
85
+ sample = sample_healthcare_qi_data()
86
+ chart = qic(sample, x="month", y="wait_time", chart="i")
87
+ chart.save_png("waiting_times.png")
88
+ ```
89
+
90
+ ## Sample Data
91
+
92
+ ```python
93
+ from pyqicharts import sample_healthcare_qi_data, sample_subgroup_measurements, get_sample_data_path
94
+
95
+ healthcare = sample_healthcare_qi_data()
96
+ subgroups = sample_subgroup_measurements()
97
+ path = get_sample_data_path("sample_healthcare_qi_data.csv")
98
+ ```
99
+
100
+ ## Main Public APIs
101
+
102
+ - `qic(...)` creates a matplotlib chart and returns a `QicResult`.
103
+ - `qic_table(...)` returns the calculation table as a pandas DataFrame.
104
+ - `pareto_chart(...)` and `pareto_table(...)` support Pareto workflows.
105
+ - `export_png(...)`, `export_excel(...)`, `export_powerpoint(...)` and `create_report_bundle(...)` support reporting.
106
+ - `create_report_pack_from_config(...)`, `load_chart_config(...)` and `run_chart_batch(...)` support batch report workflows.
107
+ - `powerbi_table(...)`, `spc_summary_table(...)`, `signal_table(...)` and related helpers support dashboard imports.
108
+ - `validation_manifest(...)`, `validation_summary(...)` and `compare_to_expected(...)` support reviewed validation workflows.
109
+ - `qic_plotly(...)`, `qic_altair(...)` and `qic_widget(...)` provide optional interactive outputs.
110
+
111
+ ## Command Line
112
+
113
+ ```bash
114
+ pyqicharts chart data.csv --x week --y value --chart i --output chart.png
115
+ pyqicharts report config.yml --output report
116
+ pyqicharts validate data.csv --config chart.yml
117
+ ```
118
+
119
+ ## Validation Scope
120
+
121
+ The v2 stable production release distinguishes three kinds of evidence:
122
+
123
+ 1. Internal regression tests: automated tests that guard package behaviour.
124
+ 2. Reviewed examples: deterministic fixtures and expected-output tables reviewed for methodology consistency.
125
+ 3. External certification: independently certified reference outputs. These are not bundled in this stable production release.
126
+
127
+ See `VALIDATION_REPORT.md`, `PARITY_REPORT.md` and `docs/reports/statistical_review.md` for details.
128
+
129
+ ## Governance
130
+
131
+ For high-stakes use, validate local workflows with local subject-matter experts, maintain a record of data definitions, review chart choice, and document any operational decisions made from chart outputs.
@@ -0,0 +1,85 @@
1
+ # pyqicharts
2
+
3
+ **2.0.0 stable production release**
4
+
5
+ pyqicharts is a Python package for Quality Improvement and Statistical Process Control charting. It is designed for analysts who need practical run charts, control charts, validation examples, sample data, reporting exports and education material.
6
+
7
+ The package is an independent open-source project by Assegai Studios Ltd. It is influenced by widely used quality-improvement and SPC methods, but it is not an official publication or endorsed implementation of any public body, vendor or external software project.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ python -m pip install pyqicharts
13
+ ```
14
+
15
+ For reporting exports:
16
+
17
+ ```bash
18
+ python -m pip install pyqicharts[reporting]
19
+ ```
20
+
21
+ For interactive notebook outputs:
22
+
23
+ ```bash
24
+ python -m pip install pyqicharts[interactive]
25
+ ```
26
+
27
+ For development and test work:
28
+
29
+ ```bash
30
+ python -m pip install -e .[dev]
31
+ python -m pytest --cov=pyqicharts
32
+ ```
33
+
34
+ ## Quick Start
35
+
36
+ ```python
37
+ from pyqicharts import qic, sample_healthcare_qi_data
38
+
39
+ sample = sample_healthcare_qi_data()
40
+ chart = qic(sample, x="month", y="wait_time", chart="i")
41
+ chart.save_png("waiting_times.png")
42
+ ```
43
+
44
+ ## Sample Data
45
+
46
+ ```python
47
+ from pyqicharts import sample_healthcare_qi_data, sample_subgroup_measurements, get_sample_data_path
48
+
49
+ healthcare = sample_healthcare_qi_data()
50
+ subgroups = sample_subgroup_measurements()
51
+ path = get_sample_data_path("sample_healthcare_qi_data.csv")
52
+ ```
53
+
54
+ ## Main Public APIs
55
+
56
+ - `qic(...)` creates a matplotlib chart and returns a `QicResult`.
57
+ - `qic_table(...)` returns the calculation table as a pandas DataFrame.
58
+ - `pareto_chart(...)` and `pareto_table(...)` support Pareto workflows.
59
+ - `export_png(...)`, `export_excel(...)`, `export_powerpoint(...)` and `create_report_bundle(...)` support reporting.
60
+ - `create_report_pack_from_config(...)`, `load_chart_config(...)` and `run_chart_batch(...)` support batch report workflows.
61
+ - `powerbi_table(...)`, `spc_summary_table(...)`, `signal_table(...)` and related helpers support dashboard imports.
62
+ - `validation_manifest(...)`, `validation_summary(...)` and `compare_to_expected(...)` support reviewed validation workflows.
63
+ - `qic_plotly(...)`, `qic_altair(...)` and `qic_widget(...)` provide optional interactive outputs.
64
+
65
+ ## Command Line
66
+
67
+ ```bash
68
+ pyqicharts chart data.csv --x week --y value --chart i --output chart.png
69
+ pyqicharts report config.yml --output report
70
+ pyqicharts validate data.csv --config chart.yml
71
+ ```
72
+
73
+ ## Validation Scope
74
+
75
+ The v2 stable production release distinguishes three kinds of evidence:
76
+
77
+ 1. Internal regression tests: automated tests that guard package behaviour.
78
+ 2. Reviewed examples: deterministic fixtures and expected-output tables reviewed for methodology consistency.
79
+ 3. External certification: independently certified reference outputs. These are not bundled in this stable production release.
80
+
81
+ See `VALIDATION_REPORT.md`, `PARITY_REPORT.md` and `docs/reports/statistical_review.md` for details.
82
+
83
+ ## Governance
84
+
85
+ For high-stakes use, validate local workflows with local subject-matter experts, maintain a record of data definitions, review chart choice, and document any operational decisions made from chart outputs.
@@ -0,0 +1,27 @@
1
+ # v2 Release Roadmap
2
+
3
+ ## v2.0.0 - Stable Production Release
4
+
5
+ Focus: polish, validation evidence, governance, documentation, examples, packaging and long-term maintainability.
6
+
7
+ Included:
8
+
9
+ - Validation manifest APIs.
10
+ - Batch report configuration APIs and CLI routes.
11
+ - Expanded example gallery.
12
+ - Optional interactive outputs.
13
+ - Education and training helpers.
14
+ - Governance and contribution files.
15
+ - Cleaner root documentation structure.
16
+ - Improved user-facing errors.
17
+ - Packaging and release checks.
18
+
19
+ ## v2.x Future Work
20
+
21
+ - Add independently certified external validation packs when reviewed outputs are available.
22
+ - Expand workbook templates based on user feedback.
23
+ - Add richer dashboard and notebook workflows.
24
+ - Extend rare-event and risk-adjusted method options.
25
+ - Explore funnel plots and overdispersion workflows further.
26
+ - Add more domain-specific examples while keeping the core API stable.
27
+ - Maintain compatibility with supported Python, pandas and matplotlib versions.
@@ -0,0 +1,18 @@
1
+ # Security Policy
2
+
3
+ pyqicharts is a local Python package for charting, validation examples and reporting outputs.
4
+
5
+ ## Reporting Security Issues
6
+
7
+ Please report suspected security issues privately to the project owner rather than opening a public issue first.
8
+
9
+ Include:
10
+
11
+ - The affected version.
12
+ - The operating system and Python version.
13
+ - A minimal example of the issue.
14
+ - Any relevant files or configuration, with sensitive data removed.
15
+
16
+ ## Data Handling
17
+
18
+ pyqicharts does not require users to upload data to an external service. Users remain responsible for data governance, de-identification and local access controls when using sensitive operational data.
@@ -0,0 +1,44 @@
1
+ # Validation Report
2
+
3
+ Release: v2.0.0 stable production release.
4
+
5
+ ## Evidence Types
6
+
7
+ pyqicharts separates validation evidence into three categories:
8
+
9
+ 1. Internal regression tests: automated tests that protect package behaviour.
10
+ 2. Reviewed examples: deterministic fixture inputs and expected-output tables reviewed against documented calculations.
11
+ 3. External certification: independently certified reference outputs produced outside this project.
12
+
13
+ The v2 stable production release includes the first two categories. It does not bundle independent external certification outputs.
14
+
15
+ ## Validation Manifest
16
+
17
+ Use:
18
+
19
+ ```python
20
+ from pyqicharts import validation_manifest, validation_summary
21
+
22
+ manifest = validation_manifest()
23
+ summary = validation_summary(manifest)
24
+ ```
25
+
26
+ The manifest records source, purpose, chart type, expected fields and review status. It covers run, I, MR, C, P, U, Xbar, S, G, T, P-prime, U-prime and Pareto examples.
27
+
28
+ ## Expected Output Comparison
29
+
30
+ Use `compare_to_expected(actual, expected, columns=None, precision=6)` to compare a calculated table with reviewed expected-output fields. The function returns only mismatches, so an empty table means the selected fields match.
31
+
32
+ ## Governance Checklist
33
+
34
+ - Confirm the data definition and numerator/denominator logic.
35
+ - Confirm the chosen chart type matches the data-generating process.
36
+ - Confirm any baseline, freeze, exclusion or recalculation decisions are documented before interpretation.
37
+ - Review special-cause signals with operational context.
38
+ - Keep a record of package version, configuration and outputs used for decisions.
39
+
40
+ ## Current Release Gate
41
+
42
+ The v2.0.0 verification run completed with 208 tests passing and 95.40 percent coverage. Packaging checks should confirm the source distribution, wheel, sample data and console entry points before publication.
43
+
44
+