Changelog¶
All notable changes to HypoTestX are documented here. Versions follow Semantic Versioning.
v1.0.6 — Released (current)¶
Routing transparency and documentation release.
warn_fallbackparameter —analyze()now acceptswarn_fallback=True(default). Emits aUserWarningwhen the built-in regex fallback is used, directing users to a real LLM backend for better accuracy. Suppress withwarn_fallback=False.routing_confidencefield —HypoResultnow exposesrouting_confidence(float 0–1;1.0for LLM,0.6for fallback) androuting_source("llm"or"fallback").Fallback warning in
summary()— whenrouting_source == "fallback",result.summary()appends a ⚠ notice advising the user to verify the selected test.routing_sourcefield onRoutingResult— the internal dataclass now carriesrouting_sourcealongsideconfidence.ReadTheDocs documentation — full Sphinx/furo documentation site with quickstart, user guide, API reference, and contributing guide. Published at https://hypotestx.readthedocs.io
pyproject.tomldocs extras updated tosphinx>=7.0,furo>=2024.1.29,myst-parser>=2.0.README: fixed roadmap versioning (linear v0.1.0 → v0.2.0 → v1.0.0 sequence); added “Why HypoTestX?” comparison table; added
routing_confidenceandrouting_sourceto the HypoResult reference.
v0.1.0 — Released¶
Initial public release.
Complete parametric test suite: one-sample t-test, two-sample t-test, Welch’s t-test, paired t-test, one-way ANOVA
Non-parametric tests: Mann-Whitney U, Wilcoxon signed-rank, Kruskal-Wallis
Categorical tests: chi-square (independence + goodness-of-fit), Fisher’s exact
Correlation tests: Pearson, Spearman, point-biserial
Pure Python math core: distributions, special functions, numerical integration — zero mandatory dependencies
Assumption checking: Shapiro-Wilk, Levene, Bartlett, Jarque-Bera
Power analysis: sample size calculation, post-hoc power for two-sample t-tests
Bootstrap and permutation tests
APA-style reporting via
apa_report()Structured
HypoResultwith statistic, p-value, effect size, CI, interpretation
v0.2.0 — Released¶
LLM-powered natural-language interface.
analyze()function — single entry-point natural-language interfacePlug-in LLM backend system — swap any backend with one keyword arg
FallbackBackend— built-in regex router (zero deps, offline, always works)OllamaBackend— local Ollama (free, offline)GeminiBackend— Google Gemini free tier (1 500 req/day)OpenAICompatBackend— OpenAI, Groq, Together AI, Mistral, PerplexityHuggingFaceBackend— HuggingFace Inference API + localtransformersCallableBackend— wraps anycallable(messages) -> strLLMBackendABC — subclass to integrate any custom LLM
RoutingResultstructured dataclass for intent extractionSchemaInfoDataFrame summary passed to LLMs as contextRegex fallback pattern table covering all test types
483 tests passing
v1.0.0 — Released¶
Production-ready release with domain packages, reporting, and visualization.
Domain-specific packages:
hypotestx.domains— clinical/medical, A/B testing, finance, survey analysisHTML / PDF reporting:
generate_report(),export_html(),export_pdf()(PDF requiresweasyprint)Visualization:
result.plot(),plot_result(),plot_distributions(),plot_p_value()— requires optionalmatplotlibAzure OpenAI backend:
backend="azure"with correct deployment URL,api-keyheader, andapi_versionparameterRouting confidence warnings:
routing_confidenceandrouting_sourcefields onHypoResult;UserWarningemitted when fallback is usedRouting validation: explicit column checks per test type with actionable error messages before dispatch
Structured logging:
logging.getLogger("hypotestx")throughoutDuck-typed backends: any object exposing
.route()accepted byget_backend()Division-by-zero fix: Welch/Student t-tests guard against zero-variance groups
532 tests passing
v1.1.0 — Planned¶
Two-way ANOVA and repeated-measures ANOVA
Regression-based tests (linear, logistic)
Automatic assumption-driven test selection
Streaming LLM responses for verbose mode
analyze()result explains why a test was chosen
v1.2.0 — Planned¶
Bayesian alternatives (Bayesian t-test, Bayes factor)
Time series stationarity and change-point tests
Meta-analysis tools
Interactive Jupyter widgets for results