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.
- pyqicharts-2.0.0/.github/ISSUE_TEMPLATE/bug_report.md +22 -0
- pyqicharts-2.0.0/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- pyqicharts-2.0.0/.github/pull_request_template.md +9 -0
- pyqicharts-2.0.0/.github/workflows/tests.yml +27 -0
- pyqicharts-2.0.0/API_STABILITY.md +75 -0
- pyqicharts-2.0.0/CHANGELOG.md +33 -0
- pyqicharts-2.0.0/CITATION.cff +14 -0
- pyqicharts-2.0.0/CODE_OF_CONDUCT.md +13 -0
- pyqicharts-2.0.0/CONTRIBUTING.md +30 -0
- pyqicharts-2.0.0/DISCLAIMER.md +15 -0
- pyqicharts-2.0.0/LICENSE +21 -0
- pyqicharts-2.0.0/MANIFEST.in +27 -0
- pyqicharts-2.0.0/PARITY_REPORT.md +31 -0
- pyqicharts-2.0.0/PKG-INFO +131 -0
- pyqicharts-2.0.0/README.md +85 -0
- pyqicharts-2.0.0/ROADMAP.md +27 -0
- pyqicharts-2.0.0/SECURITY.md +18 -0
- pyqicharts-2.0.0/VALIDATION_REPORT.md +44 -0
- pyqicharts-2.0.0/datasets/DATASET_MANIFEST.csv +154 -0
- pyqicharts-2.0.0/datasets/README.md +17 -0
- pyqicharts-2.0.0/datasets/sample/sample_healthcare_qi_data.csv +13 -0
- pyqicharts-2.0.0/datasets/sample/sample_subgroup_measurements.csv +25 -0
- pyqicharts-2.0.0/datasets/synthetic/finance/fraud_investigations.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/finance/invoice_processing.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/finance/payment_errors.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/dnas.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/emergency_department_waiting_times.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/falls.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/friends_and_family_test.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/length_of_stay.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/pressure_ulcers.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/healthcare/theatre_utilisation.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/manufacturing/defect_counts.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/manufacturing/machine_downtime.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/manufacturing/production_throughput.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/service_industries/call_centre_response_times.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/service_industries/customer_complaints.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/service_industries/helpdesk_tickets.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/service_industries/website_latency.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/cyclical_variation.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/gradual_trend.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/increasing_variation.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/multiple_special_causes.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/process_shift.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/seasonal_variation.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/single_special_cause.csv +73 -0
- pyqicharts-2.0.0/datasets/synthetic/teaching/stable_process.csv +73 -0
- pyqicharts-2.0.0/datasets/validation_external/README.md +14 -0
- pyqicharts-2.0.0/datasets/validation_external/curated/naif_inpatient_falls_trust_rates_2022.csv +122 -0
- pyqicharts-2.0.0/datasets/validation_external/curated/ons_deaths_registered_england_wales_1838_2024.csv +188 -0
- pyqicharts-2.0.0/datasets/validation_external/curated/ons_live_births_england_wales_1938_2025.csv +89 -0
- pyqicharts-2.0.0/datasets/validation_external/curated/wlmds_waiting_list_72_weeks.csv +73 -0
- pyqicharts-2.0.0/datasets/validation_external/expected_outputs/external_expected_manifest.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_external/expected_outputs/naif_inpatient_falls_trust_rates_2022_expected.csv +122 -0
- pyqicharts-2.0.0/datasets/validation_external/expected_outputs/ons_deaths_registered_england_wales_1838_2024_expected.csv +188 -0
- pyqicharts-2.0.0/datasets/validation_external/expected_outputs/ons_live_births_england_wales_1938_2025_expected.csv +89 -0
- pyqicharts-2.0.0/datasets/validation_external/expected_outputs/wlmds_waiting_list_72_weeks_expected.csv +73 -0
- pyqicharts-2.0.0/datasets/validation_external/external_sources.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_external/raw/WLMDS-Summary-to-26-Apr-2026.xlsx +0 -0
- pyqicharts-2.0.0/datasets/validation_external/raw/annualdeaths2024.xlsx +0 -0
- pyqicharts-2.0.0/datasets/validation_external/raw/live-births-england-and-wales-1938-2025.csv +89 -0
- pyqicharts-2.0.0/datasets/validation_external/raw/phase-4-naif-facilities-audit-2022-annual-report-data.csv +185 -0
- pyqicharts-2.0.0/datasets/validation_external/validation_external_plan.md +13 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/README.md +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/c_edge.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/fixture_manifest.csv +14 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/g_edge.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_c.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_g.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_i.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_mr.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_p.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_p_prime.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_pareto.csv +6 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_run.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_s.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_t.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_u.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_u_prime.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/healthcare_xbar.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/i_edge.csv +6 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_c_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_g_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_i_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_mr_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_p_prime_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_p_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_pareto_process.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_run_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_s_process.csv +13 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_t_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_u_prime_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_u_process.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/industrial_xbar_process.csv +13 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/mr_edge.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/p_edge.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/p_prime_edge.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/pareto_edge.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/run_edge.csv +6 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/s_edge.csv +6 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/t_edge.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/u_edge.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/u_prime_edge.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded/xbar_edge.csv +6 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/c_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/expected_manifest.csv +40 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/g_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_c_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_g_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_i_expected.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_mr_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_p_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_p_prime_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_pareto_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_run_expected.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_s_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_t_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_u_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_u_prime_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/healthcare_xbar_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/i_edge_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_c_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_g_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_i_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_mr_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_p_prime_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_p_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_pareto_process_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_run_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_s_process_expected.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_t_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_u_prime_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_u_process_expected.csv +10 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/industrial_xbar_process_expected.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/mr_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/p_edge_expected.csv +3 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/p_prime_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/pareto_edge_expected.csv +3 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/run_edge_expected.csv +5 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/s_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/t_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/u_edge_expected.csv +3 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/u_prime_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expanded_expected_outputs/xbar_edge_expected.csv +4 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/c_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/g_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/i_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/mr_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/p_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/p_prime_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/run_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/s_expected.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/t_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/u_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/u_prime_expected.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/expected_outputs/xbar_expected.csv +7 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/c.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/g.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/i.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/mr.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/p.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/p_prime.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/run.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/s.csv +25 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/t.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/u.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/u_prime.csv +9 -0
- pyqicharts-2.0.0/datasets/validation_internal/inputs/xbar.csv +25 -0
- pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/g_segmented.csv +13 -0
- pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/g_segmented_expected.csv +13 -0
- pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/segmented_rare_event_manifest.csv +3 -0
- pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/t_segmented.csv +13 -0
- pyqicharts-2.0.0/datasets/validation_internal/segmented_rare_event/t_segmented_expected.csv +13 -0
- pyqicharts-2.0.0/docs/analyst_workflow.md +64 -0
- pyqicharts-2.0.0/docs/api_reference.md +69 -0
- pyqicharts-2.0.0/docs/attribute_charts.md +9 -0
- pyqicharts-2.0.0/docs/calculation_assumptions.md +35 -0
- pyqicharts-2.0.0/docs/education_and_training.md +14 -0
- pyqicharts-2.0.0/docs/example_gallery.md +44 -0
- pyqicharts-2.0.0/docs/excel_companion.md +38 -0
- pyqicharts-2.0.0/docs/excel_guide.md +17 -0
- pyqicharts-2.0.0/docs/excel_setup.md +36 -0
- pyqicharts-2.0.0/docs/excel_troubleshooting.md +26 -0
- pyqicharts-2.0.0/docs/excel_user_guide.md +31 -0
- pyqicharts-2.0.0/docs/github-release-v0.3.0.md +20 -0
- pyqicharts-2.0.0/docs/github-release-v0.4.0.md +25 -0
- pyqicharts-2.0.0/docs/github-release-v0.5.0.md +26 -0
- pyqicharts-2.0.0/docs/github-release-v0.6.0.md +29 -0
- pyqicharts-2.0.0/docs/github-release-v0.7.0.md +31 -0
- pyqicharts-2.0.0/docs/github-release-v0.8.0.md +32 -0
- pyqicharts-2.0.0/docs/github-release-v0.9.0.md +25 -0
- pyqicharts-2.0.0/docs/github-release-v1.0.0.md +32 -0
- pyqicharts-2.0.0/docs/github-release-v1.1.0.md +16 -0
- pyqicharts-2.0.0/docs/healthcare_qi_guide.md +10 -0
- pyqicharts-2.0.0/docs/individuals_charts.md +21 -0
- pyqicharts-2.0.0/docs/installation.md +22 -0
- pyqicharts-2.0.0/docs/interactive_outputs.md +19 -0
- pyqicharts-2.0.0/docs/interpretation_table.md +60 -0
- pyqicharts-2.0.0/docs/localization.md +19 -0
- pyqicharts-2.0.0/docs/methodology_limitations.md +9 -0
- pyqicharts-2.0.0/docs/migration_qicharts2.md +12 -0
- pyqicharts-2.0.0/docs/powerbi.md +39 -0
- pyqicharts-2.0.0/docs/powerbi_template_pattern.md +25 -0
- pyqicharts-2.0.0/docs/powerpoint_guide.md +17 -0
- pyqicharts-2.0.0/docs/quickstart.md +14 -0
- pyqicharts-2.0.0/docs/rare_event_charts.md +12 -0
- pyqicharts-2.0.0/docs/rare_event_spc.md +45 -0
- pyqicharts-2.0.0/docs/real_world_validation.md +22 -0
- pyqicharts-2.0.0/docs/release-notes-v0.3.0.md +26 -0
- pyqicharts-2.0.0/docs/release-notes-v0.4.0.md +38 -0
- pyqicharts-2.0.0/docs/release-notes-v0.5.0.md +54 -0
- pyqicharts-2.0.0/docs/release-notes-v0.6.0.md +44 -0
- pyqicharts-2.0.0/docs/release-notes-v0.7.0.md +54 -0
- pyqicharts-2.0.0/docs/release-notes-v0.8.0.md +55 -0
- pyqicharts-2.0.0/docs/release-notes-v0.9.0.md +20 -0
- pyqicharts-2.0.0/docs/release-notes-v1.0.0.md +36 -0
- pyqicharts-2.0.0/docs/release-notes-v1.1.0.md +18 -0
- pyqicharts-2.0.0/docs/release-notes-v1.2.0.md +14 -0
- pyqicharts-2.0.0/docs/release-notes-v1.2.1.md +18 -0
- pyqicharts-2.0.0/docs/release-notes-v1.3.0.md +13 -0
- pyqicharts-2.0.0/docs/release-notes-v1.3.1.md +20 -0
- pyqicharts-2.0.0/docs/release-notes-v1.3.2.md +23 -0
- pyqicharts-2.0.0/docs/release-notes-v1.3.3.md +21 -0
- pyqicharts-2.0.0/docs/release-notes-v1.3.4.md +22 -0
- pyqicharts-2.0.0/docs/release-notes-v1.4.0.md +24 -0
- pyqicharts-2.0.0/docs/release-notes-v1.5.0.md +16 -0
- pyqicharts-2.0.0/docs/release-notes-v1.6.0.md +19 -0
- pyqicharts-2.0.0/docs/release-notes-v1.7.0.md +25 -0
- pyqicharts-2.0.0/docs/release-notes-v2.0.0.md +15 -0
- pyqicharts-2.0.0/docs/release-notes.md +9 -0
- pyqicharts-2.0.0/docs/report_metadata_schema.md +12 -0
- pyqicharts-2.0.0/docs/reporting.md +83 -0
- pyqicharts-2.0.0/docs/reports/excel_companion_report.md +42 -0
- pyqicharts-2.0.0/docs/reports/qi_spc_compatibility_report.md +23 -0
- pyqicharts-2.0.0/docs/reports/statistical_review.md +252 -0
- pyqicharts-2.0.0/docs/risk_adjusted_charts.md +10 -0
- pyqicharts-2.0.0/docs/risk_adjusted_spc.md +51 -0
- pyqicharts-2.0.0/docs/run_charts.md +9 -0
- pyqicharts-2.0.0/docs/statistical_reference.md +205 -0
- pyqicharts-2.0.0/docs/user_guide.md +113 -0
- pyqicharts-2.0.0/docs/validation.md +9 -0
- pyqicharts-2.0.0/docs/worked_examples.md +99 -0
- pyqicharts-2.0.0/examples/altair_example.py +11 -0
- pyqicharts-2.0.0/examples/batch_report.py +8 -0
- pyqicharts-2.0.0/examples/batch_report_config.json +21 -0
- pyqicharts-2.0.0/examples/c_chart.py +9 -0
- pyqicharts-2.0.0/examples/education_simulation.py +7 -0
- pyqicharts-2.0.0/examples/excel_export.py +10 -0
- pyqicharts-2.0.0/examples/excel_gallery/healthcare_naif_falls_rates.xlsx +0 -0
- pyqicharts-2.0.0/examples/excel_gallery/healthcare_wlmds_waiting_times.xlsx +0 -0
- pyqicharts-2.0.0/examples/excel_gallery/manufacturing_defects.xlsx +0 -0
- pyqicharts-2.0.0/examples/excel_gallery/teaching_process_shift.xlsx +0 -0
- pyqicharts-2.0.0/examples/excel_table_output.py +7 -0
- pyqicharts-2.0.0/examples/g_chart.py +15 -0
- pyqicharts-2.0.0/examples/linkedin_demo_chart.py +12 -0
- pyqicharts-2.0.0/examples/notebooks/qi_spc_exercise.ipynb +39 -0
- pyqicharts-2.0.0/examples/p_chart.py +9 -0
- pyqicharts-2.0.0/examples/p_prime_chart.py +16 -0
- pyqicharts-2.0.0/examples/plotly_example.py +11 -0
- pyqicharts-2.0.0/examples/powerbi_attribute_chart.py +10 -0
- pyqicharts-2.0.0/examples/powerbi_export.py +11 -0
- pyqicharts-2.0.0/examples/powerbi_python_visual.py +10 -0
- pyqicharts-2.0.0/examples/powerpoint_export.py +10 -0
- pyqicharts-2.0.0/examples/quick_start.py +20 -0
- pyqicharts-2.0.0/examples/run_chart.py +9 -0
- pyqicharts-2.0.0/examples/s_chart.py +8 -0
- pyqicharts-2.0.0/examples/t_chart.py +15 -0
- pyqicharts-2.0.0/examples/u_chart.py +9 -0
- pyqicharts-2.0.0/examples/u_prime_chart.py +16 -0
- pyqicharts-2.0.0/examples/xbar_chart.py +8 -0
- pyqicharts-2.0.0/examples/xmr_chart.py +9 -0
- pyqicharts-2.0.0/excel/README_excel.md +5 -0
- pyqicharts-2.0.0/excel/pyqicharts_excel_template.xlsm +0 -0
- pyqicharts-2.0.0/excel/pyqicharts_excel_template.xlsx +0 -0
- pyqicharts-2.0.0/office_addin/README.md +15 -0
- pyqicharts-2.0.0/office_addin/governance_checklist.md +11 -0
- pyqicharts-2.0.0/office_addin/manifest.xml +18 -0
- pyqicharts-2.0.0/pyproject.toml +54 -0
- pyqicharts-2.0.0/sample_data/sample_healthcare_qi_data.csv +13 -0
- pyqicharts-2.0.0/sample_data/sample_subgroup_measurements.csv +25 -0
- pyqicharts-2.0.0/setup.cfg +4 -0
- pyqicharts-2.0.0/src/pyqicharts/__init__.py +51 -0
- pyqicharts-2.0.0/src/pyqicharts/advanced.py +150 -0
- pyqicharts-2.0.0/src/pyqicharts/chart_selector.py +55 -0
- pyqicharts-2.0.0/src/pyqicharts/cli.py +106 -0
- pyqicharts-2.0.0/src/pyqicharts/core.py +204 -0
- pyqicharts-2.0.0/src/pyqicharts/datasets.py +96 -0
- pyqicharts-2.0.0/src/pyqicharts/education.py +87 -0
- pyqicharts-2.0.0/src/pyqicharts/export.py +177 -0
- pyqicharts-2.0.0/src/pyqicharts/interactive.py +58 -0
- pyqicharts-2.0.0/src/pyqicharts/localization.py +58 -0
- pyqicharts-2.0.0/src/pyqicharts/nelson.py +157 -0
- pyqicharts-2.0.0/src/pyqicharts/pareto.py +38 -0
- pyqicharts-2.0.0/src/pyqicharts/powerbi.py +370 -0
- pyqicharts-2.0.0/src/pyqicharts/presets.py +51 -0
- pyqicharts-2.0.0/src/pyqicharts/reporting.py +231 -0
- pyqicharts-2.0.0/src/pyqicharts/rules.py +193 -0
- pyqicharts-2.0.0/src/pyqicharts/sample_data/sample_healthcare_qi_data.csv +13 -0
- pyqicharts-2.0.0/src/pyqicharts/sample_data/sample_subgroup_measurements.csv +25 -0
- pyqicharts-2.0.0/src/pyqicharts/signals.py +97 -0
- pyqicharts-2.0.0/src/pyqicharts/tables.py +686 -0
- pyqicharts-2.0.0/src/pyqicharts/themes.py +39 -0
- pyqicharts-2.0.0/src/pyqicharts/validation.py +149 -0
- pyqicharts-2.0.0/src/pyqicharts/xmr_rules.py +276 -0
- pyqicharts-2.0.0/src/pyqicharts.egg-info/PKG-INFO +131 -0
- pyqicharts-2.0.0/src/pyqicharts.egg-info/SOURCES.txt +464 -0
- pyqicharts-2.0.0/src/pyqicharts.egg-info/dependency_links.txt +1 -0
- pyqicharts-2.0.0/src/pyqicharts.egg-info/entry_points.txt +3 -0
- pyqicharts-2.0.0/src/pyqicharts.egg-info/requires.txt +30 -0
- pyqicharts-2.0.0/src/pyqicharts.egg-info/top_level.txt +2 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/__init__.py +35 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/config.py +235 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/examples.py +20 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/excel_io.py +265 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/outputs.py +166 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/ribbon.py +36 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/runner.py +218 -0
- pyqicharts-2.0.0/src/pyqicharts_excel/validation.py +81 -0
- pyqicharts-2.0.0/tests/conftest.py +12 -0
- pyqicharts-2.0.0/tests/test_excel_config.py +126 -0
- pyqicharts-2.0.0/tests/test_excel_helpers.py +89 -0
- pyqicharts-2.0.0/tests/test_excel_io.py +36 -0
- pyqicharts-2.0.0/tests/test_excel_outputs.py +67 -0
- pyqicharts-2.0.0/tests/test_excel_runner.py +167 -0
- pyqicharts-2.0.0/tests/test_process_features.py +70 -0
- pyqicharts-2.0.0/tests/test_qic.py +41 -0
- pyqicharts-2.0.0/tests/test_rare_event_charts.py +93 -0
- pyqicharts-2.0.0/tests/test_reporting.py +121 -0
- pyqicharts-2.0.0/tests/test_risk_adjusted_charts.py +57 -0
- pyqicharts-2.0.0/tests/test_rules.py +7 -0
- pyqicharts-2.0.0/tests/test_segment_validation_audit.py +110 -0
- pyqicharts-2.0.0/tests/test_tables.py +30 -0
- pyqicharts-2.0.0/tests/test_themes.py +9 -0
- pyqicharts-2.0.0/tests/test_v1_1_parity_features.py +85 -0
- pyqicharts-2.0.0/tests/test_v1_2_completion.py +123 -0
- pyqicharts-2.0.0/tests/test_v1_4_cleanup_release.py +69 -0
- pyqicharts-2.0.0/tests/test_v1_5_realdata_release.py +84 -0
- pyqicharts-2.0.0/tests/test_v1_6_sample_data_api.py +59 -0
- pyqicharts-2.0.0/tests/test_v1_7_qi_compatibility.py +153 -0
- pyqicharts-2.0.0/tests/test_v1_release.py +77 -0
- pyqicharts-2.0.0/tests/test_v2_release_candidate.py +355 -0
- pyqicharts-2.0.0/tests/test_validation_fixture_expansion.py +80 -0
- pyqicharts-2.0.0/tests/test_validation_release.py +59 -0
- pyqicharts-2.0.0/tests/test_xmr_rules.py +68 -0
- pyqicharts-2.0.0/tests/validation/test_chart_validation_data.py +55 -0
- pyqicharts-2.0.0/validation/README.md +7 -0
- pyqicharts-2.0.0/validation/acceptance_checklist.md +8 -0
- pyqicharts-2.0.0/validation/datasets/g_chart.csv +7 -0
- pyqicharts-2.0.0/validation/datasets/p_prime.csv +7 -0
- pyqicharts-2.0.0/validation/datasets/t_chart.csv +7 -0
- pyqicharts-2.0.0/validation/datasets/xmr.csv +7 -0
- pyqicharts-2.0.0/validation/expected_outputs/g_chart_expected.csv +7 -0
- pyqicharts-2.0.0/validation/expected_outputs/p_prime_expected.csv +7 -0
- pyqicharts-2.0.0/validation/expected_outputs/t_chart_expected.csv +7 -0
- pyqicharts-2.0.0/validation/expected_outputs/xmr_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/README.md +14 -0
- pyqicharts-2.0.0/validation_data/expanded/README.md +9 -0
- pyqicharts-2.0.0/validation_data/expanded/c_edge.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/fixture_manifest.csv +14 -0
- pyqicharts-2.0.0/validation_data/expanded/g_edge.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_c.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_g.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_i.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_mr.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_p.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_p_prime.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_pareto.csv +6 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_run.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_s.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_t.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_u.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_u_prime.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/healthcare_xbar.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded/i_edge.csv +6 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_c_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_g_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_i_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_mr_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_p_prime_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_p_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_pareto_process.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_run_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_s_process.csv +13 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_t_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_u_prime_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_u_process.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded/industrial_xbar_process.csv +13 -0
- pyqicharts-2.0.0/validation_data/expanded/mr_edge.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/p_edge.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/p_prime_edge.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded/pareto_edge.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/run_edge.csv +6 -0
- pyqicharts-2.0.0/validation_data/expanded/s_edge.csv +6 -0
- pyqicharts-2.0.0/validation_data/expanded/t_edge.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded/u_edge.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded/u_prime_edge.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded/xbar_edge.csv +6 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/c_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/expected_manifest.csv +40 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/g_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_c_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_g_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_i_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_mr_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_p_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_p_prime_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_pareto_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_run_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_s_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_t_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_u_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_u_prime_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/healthcare_xbar_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/i_edge_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_c_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_g_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_i_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_mr_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_p_prime_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_p_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_pareto_process_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_run_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_s_process_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_t_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_u_prime_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_u_process_expected.csv +10 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/industrial_xbar_process_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/mr_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/p_edge_expected.csv +3 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/p_prime_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/pareto_edge_expected.csv +3 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/run_edge_expected.csv +5 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/s_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/t_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/u_edge_expected.csv +3 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/u_prime_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expanded_expected_outputs/xbar_edge_expected.csv +4 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/c_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/g_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/i_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/mr_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/p_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/p_prime_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/run_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/s_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/t_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/u_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/u_prime_expected.csv +9 -0
- pyqicharts-2.0.0/validation_data/expected_outputs/xbar_expected.csv +7 -0
- pyqicharts-2.0.0/validation_data/inputs/c.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/g.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/i.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/mr.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/p.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/p_prime.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/run.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/s.csv +25 -0
- pyqicharts-2.0.0/validation_data/inputs/t.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/u.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/u_prime.csv +9 -0
- pyqicharts-2.0.0/validation_data/inputs/xbar.csv +25 -0
- pyqicharts-2.0.0/validation_data/segmented_rare_event/g_segmented.csv +13 -0
- pyqicharts-2.0.0/validation_data/segmented_rare_event/g_segmented_expected.csv +13 -0
- pyqicharts-2.0.0/validation_data/segmented_rare_event/segmented_rare_event_manifest.csv +3 -0
- pyqicharts-2.0.0/validation_data/segmented_rare_event/t_segmented.csv +13 -0
- 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,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.
|
pyqicharts-2.0.0/LICENSE
ADDED
|
@@ -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
|
+
|