veridist 1.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 (49) hide show
  1. veridist-1.0.0/CHANGELOG.md +106 -0
  2. veridist-1.0.0/KNOWN_LIMITS.de.md +38 -0
  3. veridist-1.0.0/KNOWN_LIMITS.fa.md +34 -0
  4. veridist-1.0.0/KNOWN_LIMITS.md +35 -0
  5. veridist-1.0.0/LICENSE +45 -0
  6. veridist-1.0.0/MANIFEST.in +9 -0
  7. veridist-1.0.0/PKG-INFO +143 -0
  8. veridist-1.0.0/README.de.md +115 -0
  9. veridist-1.0.0/README.fa.md +123 -0
  10. veridist-1.0.0/README.md +109 -0
  11. veridist-1.0.0/pyproject.toml +110 -0
  12. veridist-1.0.0/setup.cfg +4 -0
  13. veridist-1.0.0/src/veridist/__init__.py +32 -0
  14. veridist-1.0.0/src/veridist/adapters/__init__.py +1 -0
  15. veridist-1.0.0/src/veridist/adapters/csv_lifetimes.py +587 -0
  16. veridist-1.0.0/src/veridist/domain/__init__.py +5 -0
  17. veridist-1.0.0/src/veridist/domain/lifetimes.py +47 -0
  18. veridist-1.0.0/src/veridist/engine/__init__.py +176 -0
  19. veridist-1.0.0/src/veridist/engine/checkpoint.py +470 -0
  20. veridist-1.0.0/src/veridist/engine/data_source.py +224 -0
  21. veridist-1.0.0/src/veridist/engine/delivery.py +492 -0
  22. veridist-1.0.0/src/veridist/engine/errors.py +141 -0
  23. veridist-1.0.0/src/veridist/engine/outcome.py +292 -0
  24. veridist-1.0.0/src/veridist/engine/pass_budget.py +106 -0
  25. veridist-1.0.0/src/veridist/engine/provenance.py +619 -0
  26. veridist-1.0.0/src/veridist/engine/resume.py +150 -0
  27. veridist-1.0.0/src/veridist/engine/retry.py +304 -0
  28. veridist-1.0.0/src/veridist/engine/streaming.py +101 -0
  29. veridist-1.0.0/src/veridist/execution.py +413 -0
  30. veridist-1.0.0/src/veridist/families/__init__.py +45 -0
  31. veridist-1.0.0/src/veridist/families/_reliability.py +75 -0
  32. veridist-1.0.0/src/veridist/families/exponential.py +257 -0
  33. veridist-1.0.0/src/veridist/families/lognormal.py +156 -0
  34. veridist-1.0.0/src/veridist/families/registry.py +297 -0
  35. veridist-1.0.0/src/veridist/families/weibull.py +127 -0
  36. veridist-1.0.0/src/veridist/inference.py +239 -0
  37. veridist-1.0.0/src/veridist/py.typed +1 -0
  38. veridist-1.0.0/src/veridist/reporting/__init__.py +5 -0
  39. veridist-1.0.0/src/veridist/reporting/exponential.py +303 -0
  40. veridist-1.0.0/src/veridist/statistics/__init__.py +27 -0
  41. veridist-1.0.0/src/veridist/statistics/distributions.py +256 -0
  42. veridist-1.0.0/src/veridist/statistics/exponential.py +199 -0
  43. veridist-1.0.0/src/veridist/statistics/log_density.py +363 -0
  44. veridist-1.0.0/src/veridist/statistics/log_likelihood.py +344 -0
  45. veridist-1.0.0/src/veridist.egg-info/PKG-INFO +143 -0
  46. veridist-1.0.0/src/veridist.egg-info/SOURCES.txt +47 -0
  47. veridist-1.0.0/src/veridist.egg-info/dependency_links.txt +1 -0
  48. veridist-1.0.0/src/veridist.egg-info/requires.txt +24 -0
  49. veridist-1.0.0/src/veridist.egg-info/top_level.txt +1 -0
@@ -0,0 +1,106 @@
1
+ # Veridist changelog
2
+
3
+ This changelog covers only the nested `veridist` package. The repository-root
4
+ legacy changelog describes the frozen `distfit_pro` history and is not a
5
+ Veridist release record.
6
+
7
+ ## [1.0.0] - 2026-09-11
8
+
9
+ ### Added
10
+
11
+ - Candidate-bound execution evidence for complete, retry-resume, and
12
+ cancellation scenarios at 10k, 100k, and 1m rows on Linux, macOS, and
13
+ Windows. The release gate validates all 27 collected cells and their source
14
+ and result digests.
15
+ - Reproducible release validation that builds artifacts twice, canonicalizes
16
+ archive metadata, verifies byte equality, and retains the validated wheel
17
+ and source distribution.
18
+ - Isolated PyPI Trusted Publishing through GitHub OIDC and the protected
19
+ `pypi` environment. Published GitHub Release assets are the only artifacts
20
+ eligible for upload.
21
+
22
+ ### Changed
23
+
24
+ - Checkpointed CSV execution persists bounded adapter chunks in one
25
+ transaction and retains a committed prefix on cancellation for nonzero-
26
+ cursor resume.
27
+
28
+ ### Quality
29
+
30
+ - Python 3.11 through 3.14, documentation, RTL browser, package, 95%
31
+ coverage, and fail-closed mutation gates remain release requirements.
32
+
33
+ ## [0.9.1] - 2026-09-11
34
+
35
+ ### Changed
36
+
37
+ - Checkpointed CSV execution commits bounded adapter chunks instead of opening
38
+ a SQLite transaction for every row. Cancellation persists the completed
39
+ prefix for nonzero-cursor resume.
40
+ - Candidate-bound 1.0 evidence collection verifies complete, resumed, and
41
+ cancelled 10k, 100k, and 1m-row runs on Linux, macOS, and Windows and rejects
42
+ digest drift.
43
+ - Citation File Format, Zenodo, and conda-forge release metadata is
44
+ version-aligned and validated in CI.
45
+
46
+ ### Quality
47
+
48
+ - The 95% global line and branch coverage contract remains enforced; the
49
+ execution-module denominator is frozen at 179 statements and 70 branches.
50
+ - Competitive source-lock validation remains outside the package release gate
51
+ while ADR-0014 is Proposed; competitive drafts remain non-publishable.
52
+
53
+ ## [0.9.0] - 2026-09-11
54
+
55
+ ### Added
56
+
57
+ - Durable local SQLite checkpoints with generation-based compare-and-swap,
58
+ corruption detection, source-revision checks, and resumable exponential CSV
59
+ and canonical-chunk execution.
60
+ - Fixed-location Weibull-minimum and lognormal MLE cells for exact and
61
+ independently right-censored lifetimes, including typed failures and
62
+ frequency-weight contracts.
63
+ - Scalar CDF, survival, quantile, and caller-owned RNG sampling operations for
64
+ the declared continuous-family registry.
65
+ - AIC/BIC, adequacy-gated model selection, and refit Monte Carlo KS, AD, and
66
+ CvM goodness-of-fit for the uncensored exponential cell. Monte Carlo output
67
+ reports requested, successful, and failed refits plus sampling uncertainty.
68
+
69
+ ### Quality
70
+
71
+ - Python 3.11 through 3.14 CI, package, documentation, RTL browser, coverage,
72
+ and fail-closed mutation gates pass on the release line.
73
+ - The inference module is registered with 129 statements and 46 branches and
74
+ is fully exercised by its contract and calibration tests.
75
+
76
+ ### Known limits
77
+
78
+ See [Known limits](KNOWN_LIMITS.md). Inference remains limited to uncensored
79
+ exponential samples, checkpoints remain local SQLite, operations are scalar,
80
+ and no general performance, RSS, or universal best-fit claim is made.
81
+
82
+ ## [0.5.0] - 2026-09-10
83
+
84
+ ### Available in the candidate scope
85
+
86
+ - A strict UTF-8 CSV adapter for fixed-location, rate-only exponential MLE
87
+ with exact and independently right-censored lifetimes.
88
+ - Scalar log-density evaluation for normal, gamma, Weibull-minimum,
89
+ lognormal, and right-Gumbel families.
90
+ - Exact-state streaming log-likelihood reduction through the public
91
+ `IterableDataSource` contract.
92
+ - Bounded delivery that charges queued payload and active consumer leases.
93
+ - English, Persian, and German package documentation with Persian RTL checks.
94
+ - Candidate-bound coverage, mutation, scale-evidence, and release-validation
95
+ workflows.
96
+
97
+ ### Release status
98
+
99
+ The package version is `0.5.0`. Its candidate-specific ADR-0020 gates passed
100
+ on the exact release candidate; retained CI and scale artifacts bind to that
101
+ candidate SHA.
102
+
103
+ ### Known limits
104
+
105
+ See [Known limits](KNOWN_LIMITS.md). These limits are part of the release
106
+ contract and constrain every public 0.5 claim.
@@ -0,0 +1,38 @@
1
+ # Bekannte Grenzen von Veridist 0.9
2
+
3
+ Dieses Dokument definiert die Release-Grenze 0.9 für Paketversion `1.0.0`.
4
+
5
+ - `FIT-CSV-EXP`: Der strikte CSV-Pfad passt nur ein Exponentialmodell mit
6
+ festem Ort und Rate für exakte und unabhängig rechtszensierte Lebensdauern
7
+ an. Weibull-Minimum und Lognormal sind über typisierte Lebensdauerobjekte,
8
+ nicht über eine allgemeine Datei-API, verfügbar. Analytische Gewichte,
9
+ Kovariaten, Trunkierung, Links- und Intervallzensierung sowie freie
10
+ Ortsparameter bleiben nicht unterstützt.
11
+ - `CSV-STRICT`: Der mitgelieferte Dateiadapter akzeptiert nur UTF-8-CSV mit
12
+ exakt `time,event_observed`; `1` bezeichnet ein exaktes Ereignis und `0`
13
+ unabhängige Rechtszensierung. Er ist kein allgemeiner CSV- oder
14
+ Tabellenkalkulationsleser.
15
+ - `SCALAR-FAMILIES`: Normal-, Gamma-, Weibull-Minimum-, Lognormal- und
16
+ Rechts-Gumbel-Familien bieten skalare Log-Dichte-, CDF-, Survival-, Quantil-
17
+ und Sampling-Operationen. Arrays, eine einheitliche Fit-API und Inferenz für
18
+ jede registrierte Familie fehlen.
19
+ - `STREAM-SOURCE`: `IterableDataSource` adaptiert Chunk-Iterables des Aufrufers.
20
+ Das Paket enthält keinen Parquet-, Arrow-, Dataframe-, Datenbank- oder
21
+ Netzwerkadapter. Dauerhafte Fortsetzung ist auf den strikten Lebensdauer-CSV-
22
+ Pfad und lokales SQLite begrenzt; ein verteilter Checkpoint-Store fehlt.
23
+ - `INFERENCE-EXP`: Refit-Monte-Carlo-KS/AD/CvM und adequacy-gesteuerte Auswahl
24
+ gelten nur für endliche positive unzensierte Exponentialstichproben. Es gibt
25
+ keine Bootstrap-Auswahlstabilität oder Kalibrierungsbehauptung außerhalb des
26
+ geprüften Gitters.
27
+ - `MEMORY-BOUND`: Die Liefergrenze umfasst Nutzdaten in der Warteschlange und
28
+ aktive Verbraucher-Leases bis zur ausdrücklichen Freigabe. Sie ist eine
29
+ logische Grenze für gehaltene Nutzdaten, keine portable RSS-Obergrenze.
30
+ - `SCALE-EVIDENCE`: Messungen gelten nur für den exakten Adapter, die Familie,
31
+ Arbeitslast, Plattform, Python-Version, Chunk-Grenze und Kandidaten-SHA. Sie
32
+ belegen weder universellen Durchsatz noch allgemeine Big-Data-Unterstützung
33
+ oder eine breite Out-of-Core-Fähigkeit.
34
+ - `LICENSE`: Das Paket verwendet BUSL-1.1 mit der in `LICENSE` beschriebenen
35
+ zusätzlichen Apache-2.0-Nutzungserlaubnis und wechselt am 2030-09-05 zu
36
+ Apache-2.0.
37
+
38
+ [English](KNOWN_LIMITS.md) | [فارسی](KNOWN_LIMITS.fa.md)
@@ -0,0 +1,34 @@
1
+ # محدودیت‌های شناخته‌شدهٔ Veridist 0.9
2
+
3
+ این سند مرز انتشار 0.9 برای نسخهٔ بستهٔ `1.0.0` را تعریف می‌کند.
4
+
5
+ - `FIT-CSV-EXP`: مسیر CSV فقط مدل نمایی با مکان ثابت و پارامتر نرخ را برای
6
+ طول‌عمرهای دقیق و مستقلِ راست‌سانسورشده برازش می‌دهد. برازش Weibull-minimum
7
+ و Lognormal با اشیای طول‌عمر نوع‌دار قابل‌فراخوانی است و API عمومی فایل نیست.
8
+ وزن تحلیلی، متغیر کمکی، truncation، چپ‌سانسوری، سانسور بازه‌ای و مکان آزاد
9
+ پشتیبانی نمی‌شوند.
10
+ - `CSV-STRICT`: adapter فایل همراه بسته فقط CSV با UTF-8 و دقیقاً دو ستون
11
+ `time,event_observed` را می‌پذیرد؛ `1` رخداد دقیق و `0` راست‌سانسوری مستقل
12
+ است. این یک CSV reader یا spreadsheet reader عمومی نیست.
13
+ - `SCALAR-FAMILIES`: خانواده‌های normal، gamma، Weibull-minimum، lognormal و
14
+ right-Gumbel عملیات اسکالر log-density، CDF، survival، quantile و sampling
15
+ دارند. ارزیابی array، API یکنواخت برازش و استنباط برای همهٔ خانواده‌ها ارائه
16
+ نمی‌شود.
17
+ - `STREAM-SOURCE`: `IterableDataSource`، iterableهای chunk متعلق به فراخواننده
18
+ را سازگار می‌کند. adapter برای Parquet، Arrow، dataframe، database یا network
19
+ همراه بسته نیست. ادامهٔ پایدار به مسیر CSV طول‌عمر سخت‌گیرانه و SQLite محلی
20
+ محدود است و checkpoint توزیع‌شده نیست.
21
+ - `INFERENCE-EXP`: آزمون‌های KS/AD/CvM با Monte Carlo و refit و انتخاب
22
+ adequacy-gated فقط برای نمونه‌های نمایی مثبت، متناهی و بدون سانسور هستند.
23
+ ثبات انتخاب bootstrap یا calibration بیرون از grid آزموده‌شده ادعا نمی‌شود.
24
+ - `MEMORY-BOUND`: کران delivery، payload صف و lease فعال مصرف‌کننده را تا
25
+ release صریح محاسبه می‌کند. این کران منطقی payload نگه‌داری‌شده است، نه سقف
26
+ قابل‌حمل RSS.
27
+ - `SCALE-EVIDENCE`: اندازه‌گیری فقط برای adapter، خانواده، workload، platform،
28
+ نسخهٔ Python، حد chunk و SHA همان candidate معتبر است. این شواهد throughput
29
+ همگانی، پشتیبانی generic big-data یا قابلیت گستردهٔ out-of-core را ثابت
30
+ نمی‌کنند.
31
+ - `LICENSE`: مجوز بسته BUSL-1.1 با مجوز استفادهٔ اضافی Apache-2.0 مندرج در
32
+ `LICENSE` است و در 2030-09-05 به Apache-2.0 تغییر می‌کند.
33
+
34
+ [English](KNOWN_LIMITS.md) | [Deutsch](KNOWN_LIMITS.de.md)
@@ -0,0 +1,35 @@
1
+ # Known limits for Veridist 0.9
2
+
3
+ This document defines the 0.9 release boundary for package version `1.0.0`.
4
+
5
+ - `FIT-CSV-EXP`: the strict CSV path fits only a fixed-location, rate-only
6
+ exponential model over exact and independently right-censored lifetimes.
7
+ Weibull-minimum and lognormal fits are callable over typed lifetime objects,
8
+ not through a general file-fitting API. Analytic weights, covariates,
9
+ truncation, left censoring, interval censoring, and free location parameters
10
+ remain unsupported.
11
+ - `CSV-STRICT`: the bundled file adapter accepts only UTF-8 CSV with exactly
12
+ `time,event_observed`, where `1` is an exact event and `0` is independent
13
+ right censoring. It is not a general CSV or spreadsheet reader.
14
+ - `SCALAR-FAMILIES`: normal, gamma, Weibull-minimum, lognormal, and
15
+ right-Gumbel expose scalar log-density, CDF, survival, quantile, and sampling
16
+ operations. They do not expose array evaluation, a uniform fitting API, or
17
+ inference for every registered family.
18
+ - `STREAM-SOURCE`: `IterableDataSource` adapts caller-owned chunk iterables.
19
+ The package bundles no Parquet, Arrow, dataframe, database, or network
20
+ adapter. Durable resume is limited to the strict lifetime CSV path and local
21
+ SQLite; it is not a distributed checkpoint store.
22
+ - `INFERENCE-EXP`: refit Monte Carlo KS/AD/CvM and adequacy-gated selection are
23
+ limited to finite positive uncensored exponential samples. There is no
24
+ bootstrap selection stability or calibration claim outside the tested grid.
25
+ - `MEMORY-BOUND`: the delivery bound covers queued payload and active consumer
26
+ leases until explicit release. It is a logical retained-payload bound, not a
27
+ portable RSS ceiling.
28
+ - `SCALE-EVIDENCE`: measurements apply only to their exact adapter, family,
29
+ workload, platform, Python version, chunk limit, and candidate SHA. They do
30
+ not establish universal throughput, generic big-data support, or a broad
31
+ out-of-core capability.
32
+ - `LICENSE`: the package uses BUSL-1.1 with the Apache-2.0 additional-use grant
33
+ stated in `LICENSE`; it changes to Apache-2.0 on 2030-09-05.
34
+
35
+ [فارسی](KNOWN_LIMITS.fa.md) | [Deutsch](KNOWN_LIMITS.de.md)
veridist-1.0.0/LICENSE ADDED
@@ -0,0 +1,45 @@
1
+ Business Source License 1.1
2
+
3
+ Parameters:
4
+
5
+ Licensor: Ali Sadeghi Aghili
6
+ Licensed Work: py-distfit-pro
7
+ Additional Use Grant: You may make production use of the Licensed Work under the terms of the Apache License, Version 2.0, provided Your use is for personal, non-commercial purposes only.
8
+ "Personal, non-commercial purposes" means: (a) academic research and education; (b) internal business analytics not offered as a service to third parties; (c) personal projects and experimentation; (d) non-profit and open-source community work.
9
+ If Your use includes offering the Licensed Work to third parties on a hosted or embedded basis in order to compete with the Licensor's paid version of the Licensed Work, the Apache-2.0 grant does not apply and You must obtain a separate commercial license from the Licensor.
10
+ Change Date: 2030-09-05
11
+ Change License: Apache License, Version 2.0
12
+
13
+
14
+ Terms
15
+
16
+ The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work.
17
+
18
+ The Licensor grants you the rights set forth in the Additional Use Grant.
19
+
20
+ If You breach any of the terms in this License, Your rights under this License shall terminate immediately.
21
+
22
+ If You have properly taken all steps required to comply with this License, the Licensor grants you the rights set forth in the Additional Use Grant.
23
+
24
+ The Licensed Work is protected by copyright and other intellectual property laws. The Licensor reserves all rights not expressly granted in this License.
25
+
26
+ The Licensed Work is provided "AS IS" without warranty of any kind, express or implied. The Licensor is not liable for any damages or claims arising out of the use of the Licensed Work.
27
+
28
+ This License is governed by the laws of the jurisdiction in which the Licensor is located, without regard to conflict of law principles.
29
+
30
+ For the avoidance of doubt, this License does not grant any rights under patent, trademark, or other intellectual property rights that may be applicable to the Licensed Work.
31
+
32
+ The Change Date is the date on which the Licensed Work will become available under the terms of the Change License.
33
+
34
+ The Change License is the license that will apply to the Licensed Work on the Change Date.
35
+
36
+ On the Change Date, this License will be automatically replaced by the Change License.
37
+
38
+
39
+ Notice
40
+
41
+ Business Source License 1.1 is a template license published by MariaDB plc. The parameters above are set by the Licensor.
42
+
43
+ For more information, see https://mariadb.com/bsl11/
44
+
45
+ SPDX-License-Identifier: BUSL-1.1
@@ -0,0 +1,9 @@
1
+ include LICENSE
2
+ include README.md
3
+ include README.fa.md
4
+ include README.de.md
5
+ include CHANGELOG.md
6
+ include KNOWN_LIMITS.md
7
+ include KNOWN_LIMITS.fa.md
8
+ include KNOWN_LIMITS.de.md
9
+ include src/veridist/py.typed
@@ -0,0 +1,143 @@
1
+ Metadata-Version: 2.4
2
+ Name: veridist
3
+ Version: 1.0.0
4
+ Summary: Evidence-first distribution fitting with explicit execution contracts
5
+ Author-email: Ali Sadeghi Aghili <alisadeghiaghili@gmail.com>
6
+ License-Expression: BUSL-1.1
7
+ Project-URL: Homepage, https://github.com/alisadeghiaghili/veridist
8
+ Project-URL: Documentation, https://github.com/alisadeghiaghili/veridist/tree/main/python/docs
9
+ Project-URL: Repository, https://github.com/alisadeghiaghili/veridist
10
+ Project-URL: Issues, https://github.com/alisadeghiaghili/veridist/issues
11
+ Requires-Python: >=3.11
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: numpy<3,>=1.26
15
+ Provides-Extra: test
16
+ Requires-Dist: coverage[toml]>=7.6; extra == "test"
17
+ Requires-Dist: mpmath==1.3.0; extra == "test"
18
+ Requires-Dist: PyYAML<7,>=6; extra == "test"
19
+ Requires-Dist: pytest>=8.3; extra == "test"
20
+ Requires-Dist: pytest-cov<8,>=6; extra == "test"
21
+ Provides-Extra: mutation
22
+ Requires-Dist: mutmut==3.7.0; extra == "mutation"
23
+ Requires-Dist: pytest>=8.3; extra == "mutation"
24
+ Provides-Extra: browser
25
+ Requires-Dist: playwright==1.62.0; extra == "browser"
26
+ Provides-Extra: lint
27
+ Requires-Dist: mypy>=1.13; extra == "lint"
28
+ Requires-Dist: ruff>=0.8; extra == "lint"
29
+ Provides-Extra: docs
30
+ Requires-Dist: Sphinx<9,>=8.2; extra == "docs"
31
+ Requires-Dist: myst-parser<5,>=4; extra == "docs"
32
+ Requires-Dist: sphinx-intl<3,>=2.3; extra == "docs"
33
+ Dynamic: license-file
34
+
35
+ # veridist
36
+
37
+ [English](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.md) | [فارسی](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.fa.md) | [Deutsch](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.de.md)
38
+
39
+ ## Status
40
+
41
+ `veridist` 1.0.0 is an evidence-backed public contract release.
42
+ It specifies and tests bounded delivery, replayability, pass budgets,
43
+ transactional retry, checkpoint compatibility, typed failures, execution
44
+ outcomes, and redacted provenance.
45
+
46
+ This build includes fixed-location Exponential, Weibull-minimum, and Lognormal
47
+ MLE cells for exact and independently right-censored lifetimes. They provide
48
+ point estimates when finite solutions exist and typed failures otherwise.
49
+ The uncensored exponential cell also has refit Monte Carlo KS, AD, and CvM
50
+ goodness-of-fit, AIC/BIC, calibration summaries, and adequacy-gated selection.
51
+ Inference is restricted to that declared cell and requires a caller-owned NumPy
52
+ generator.
53
+ Its public CSV path is strict: UTF-8 CSV with exactly `time,event_observed`,
54
+ event token `1`, and right-censoring token `0`. It executes one iterator pass
55
+ with a declared logical retained-payload chunk budget and returns a closed,
56
+ typed execution result. This is not a generic CSV reader or a portable RSS,
57
+ throughput, cancellation, retry, checkpoint, or broad out-of-core claim.
58
+ Retained evidence establishes bounded internal payload only for the measured
59
+ 10k/100k/1m by 32KiB/64KiB/128KiB matrix; it does not establish a general
60
+ big-data or high-throughput capability.
61
+
62
+ `IterableDataSource` is the reusable public stream adapter for caller-owned
63
+ chunk iterables. Its immutable metadata explicitly declares one-pass or
64
+ replayable acquisition: a single-pass source fails with a typed pass-budget
65
+ error if acquired twice, while a replayable source requires an iterator
66
+ factory. `BoundedChunkBuffer` charges queued and consumer-held chunks until
67
+ `BufferedChunk.release()`; callers must release received chunks, normally in
68
+ `finally`. The only shipped file adapter remains the strict CSV lifetime
69
+ adapter—this does not add generic CSV, Parquet, Arrow, dataframe, database,
70
+ or broad out-of-core adapters.
71
+
72
+ For a sequential pure reducer, `veridist.engine.SQLiteCheckpointStore` provides
73
+ durable local checkpoint state with generation-based compare-and-swap and
74
+ cross-process SQLite locking. It is limited to one host and a local filesystem;
75
+ `fit_exponential_checkpointed_csv` supports explicit source-revision-bound
76
+ resume for the strict lifetime CSV path.
77
+
78
+ The separate scalar surface exposes immutable `FAMILY_REGISTRY` metadata for
79
+ normal, gamma, Weibull-minimum, lognormal, and right-Gumbel; scalar
80
+ `evaluate_log_density`, CDF, survival, quantile, and caller-owned RNG sampling
81
+ operations; and
82
+ exact-state `reduce_log_likelihood_chunks`. These operations are scalar and the
83
+ fit/inference capability matrix remains narrower than the operation registry.
84
+ The reducer represents successful binary64 terms exactly and rounds
85
+ the final total once; its unsigned-64 count cap implies a 2162-bit exact-total
86
+ bound. Its retained 10k/100k/1m evidence is scoped to tested normal streams.
87
+
88
+ Candidate scale measurement is deliberately manual: the `veridist-scale-evidence`
89
+ workflow first binds a clean, full candidate SHA and runs the evidence contracts,
90
+ then measures the public iterable likelihood and strict CSV/exponential paths on
91
+ Linux and Windows. It retains artifacts only after their own fail-closed SHA and
92
+ schema validation. Merely having this workflow, or a historical artifact, is not
93
+ evidence for a new candidate and is not a throughput or RSS claim.
94
+
95
+ ## Install an evaluation build
96
+
97
+ Install from the nested source project after cloning the repository:
98
+
99
+ ```console
100
+ git clone https://github.com/alisadeghiaghili/veridist.git
101
+ cd veridist/python
102
+ python -m pip install .
103
+ ```
104
+
105
+ Or install a wheel that you built or obtained from a specific verified run:
106
+
107
+ ```console
108
+ python -m pip install /path/to/veridist-1.0.0-py3-none-any.whl
109
+ ```
110
+
111
+ The project does not direct users to install an unreleased package name from a
112
+ public index.
113
+
114
+ ## Try the experimental vertical
115
+
116
+ ```python
117
+ from pathlib import Path
118
+ from tempfile import TemporaryDirectory
119
+ from veridist import CsvLifetimeLimits, CsvLifetimeSchema, PublicSourceId, fit_exponential_csv
120
+ from veridist.families import ExponentialFitSuccess
121
+
122
+ with TemporaryDirectory() as directory:
123
+ path = Path(directory) / "lifetimes.csv"
124
+ path.write_text("time,event_observed\n1,1\n1,0\n", encoding="utf-8")
125
+ fit = fit_exponential_csv(
126
+ path, schema=CsvLifetimeSchema("time", "event_observed"),
127
+ source_id=PublicSourceId("src_0123456789abcdef0123456789abcdef"),
128
+ limits=CsvLifetimeLimits(32768, 32768),
129
+ ).fit
130
+ assert isinstance(fit, ExponentialFitSuccess)
131
+ assert fit.rate == 0.5
132
+ assert fit.inference == "not_provided"
133
+ assert fit.censoring_assumption == "independent_right_censoring"
134
+ ```
135
+
136
+ See the [documentation toolchain](docs/README.md) and the repository's
137
+ [evidence ledger](../docs/v1-readiness.md) for implemented checks and explicit
138
+ limits.
139
+
140
+ ## License
141
+
142
+ BUSL-1.1 with an Apache-2.0 additional-use grant for personal,
143
+ non-commercial use; see [LICENSE](LICENSE).
@@ -0,0 +1,115 @@
1
+ # veridist
2
+
3
+ [English](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.md) | [فارسی](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.fa.md) | [Deutsch](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.de.md)
4
+
5
+ ## Status
6
+
7
+ `veridist` 1.0.0 ist eine öffentlich dokumentierte Vertragsversion mit überprüfbaren Nachweisen.
8
+ Der aktuelle Stand spezifiziert und testet begrenzte Datenlieferung,
9
+ Wiederholbarkeit, Pass-Budgets, transaktionale Wiederholungen,
10
+ Checkpoint-Kompatibilität, typisierte Fehler, Ausführungsergebnisse und
11
+ redigierte Provenienz.
12
+
13
+ Dieser Stand enthält Exponential-, Weibull-Minimum- und Lognormal-MLE-Zellen mit
14
+ festem Ort für exakte und unabhängig rechtszensierte Lebensdauern. Wenn eine
15
+ endliche Lösung existiert, wird eine Punktschätzung zurückgegeben; andernfalls
16
+ entstehen typisierte Fehlschläge. Für die unzensierte Exponentialzelle gibt es
17
+ außerdem Refit-Monte-Carlo-KS-, AD- und CvM-Tests, AIC/BIC,
18
+ Kalibrierungszusammenfassungen und adequacy-gesteuerte Auswahl. Diese Inferenz
19
+ ist auf diese deklarierte Zelle und einen aufruferseitigen Generator begrenzt.
20
+ Der öffentliche CSV-Pfad ist strikt: UTF-8-CSV mit exakt
21
+ `time,event_observed`, Ereignis-Token `1` und Rechtszensur-Token `0`. Er führt
22
+ einen Iterator-Durchlauf mit einem deklarierten logischen Budget für behaltene
23
+ Payloads aus und gibt ein geschlossenes, typisiertes Ausführungsergebnis zurück.
24
+ Dies ist keine Behauptung über allgemeines CSV, portable RSS-Grenzen,
25
+ Durchsatz, Abbruch, Retry, Checkpoints oder breite Out-of-Core-Unterstützung.
26
+ Die hinterlegte Evidenz belegt begrenzte interne Payload nur für die gemessene
27
+ Matrix aus 10k/100k/1m Zeilen und 32KiB/64KiB/128KiB; daraus folgt keine
28
+ allgemeine Big-Data- oder Hochdurchsatzfähigkeit.
29
+
30
+ `IterableDataSource` ist der wiederverwendbare öffentliche Stream-Adapter für
31
+ aufruferseitige Chunk-Iterables. Seine unveränderlichen Metadaten erklären
32
+ Einmaligkeit oder Wiederholbarkeit ausdrücklich: Eine zweite Akquisition einer
33
+ Einmalquelle schlägt mit einem typisierten Pass-Budget-Fehler fehl; eine
34
+ wiederholbare Quelle benötigt eine Iterator-Factory. `BoundedChunkBuffer`
35
+ berechnet Bytes für eingereihte und vom Consumer gehaltene Chunks bis
36
+ `BufferedChunk.release()`; empfangene Chunks müssen, üblicherweise in
37
+ `finally`, freigegeben werden. Der einzige ausgelieferte Datei-Adapter bleibt
38
+ der strikte CSV-Lebensdauer-Adapter. Dies ergänzt weder allgemeines CSV noch
39
+ Parquet-, Arrow-, Dataframe-, Datenbank- oder breite Out-of-Core-Adapter.
40
+
41
+ Die separate skalare Oberfläche bietet unveränderliche `FAMILY_REGISTRY`-
42
+ Metadaten für Normal-, Gamma-, Weibull-Minimum-, Lognormal- und Rechts-Gumbel-
43
+ Familien, die skalare `evaluate_log_density` und die exakte Zustandsreduktion
44
+ `reduce_log_likelihood_chunks`. Sie ist keine generische Anpassungs-,
45
+ Inferenz-, Anpassungsgüte-, Ranking-, Array- oder Zensierungs-API.
46
+ Erfolgreiche binary64-Terme werden exakt repräsentiert; die Endsumme wird
47
+ einmal gerundet. Die unsigned-64-Zählgrenze ergibt eine 2162-Bit-Grenze für die
48
+ exakte Summe. Die Evidenz für 10k/100k/1m gilt nur für getestete Normalströme.
49
+
50
+ Die Scale-Messung eines Kandidaten ist bewusst manuell: Der Workflow
51
+ `veridist-scale-evidence` bindet zunächst den vollständigen SHA eines sauberen
52
+ Kandidaten und führt die Evidenzverträge aus. Erst dann misst er den öffentlichen
53
+ Iterable-Likelihood-Pfad und den strikten CSV/Exponential-Pfad unter Linux und
54
+ Windows. Artefakte werden erst nach ihrer eigenen fail-closed SHA- und
55
+ Schema-Validierung aufbewahrt. Das bloße Vorhandensein dieses Workflows oder eines
56
+ historischen Artefakts ist kein Beleg für einen neuen Kandidaten und keine
57
+ Durchsatz- oder RSS-Behauptung.
58
+
59
+ ## Evaluierungsstand installieren
60
+
61
+ Nach dem Klonen wird das verschachtelte Python-Projekt installiert:
62
+
63
+ ```console
64
+ git clone https://github.com/alisadeghiaghili/veridist.git
65
+ cd veridist/python
66
+ python -m pip install .
67
+ ```
68
+
69
+ Alternativ kann ein selbst gebautes oder aus einem bestimmten geprüften Lauf
70
+ bezogenes Wheel installiert werden:
71
+
72
+ ```console
73
+ python -m pip install /path/to/veridist-1.0.0-py3-none-any.whl
74
+ ```
75
+
76
+ Das Projekt fordert nicht zur Installation eines unveröffentlichten
77
+ Paketnamens aus einem öffentlichen Index auf.
78
+
79
+ ## Experimentelle Vertikale ausprobieren
80
+
81
+ ```python
82
+ from pathlib import Path
83
+ from tempfile import TemporaryDirectory
84
+ from veridist import CsvLifetimeLimits, CsvLifetimeSchema, PublicSourceId, fit_exponential_csv
85
+ from veridist.families import ExponentialFitSuccess
86
+
87
+ with TemporaryDirectory() as directory:
88
+ path = Path(directory) / "lifetimes.csv"
89
+ path.write_text("time,event_observed\n1,1\n1,0\n", encoding="utf-8")
90
+ fit = fit_exponential_csv(
91
+ path, schema=CsvLifetimeSchema("time", "event_observed"),
92
+ source_id=PublicSourceId("src_0123456789abcdef0123456789abcdef"),
93
+ limits=CsvLifetimeLimits(32768, 32768),
94
+ ).fit
95
+ assert isinstance(fit, ExponentialFitSuccess)
96
+ assert fit.rate == 0.5
97
+ assert fit.inference == "not_provided"
98
+ assert fit.censoring_assumption == "independent_right_censoring"
99
+ ```
100
+
101
+ Weitere Einzelheiten stehen in der
102
+ [Dokumentations-Toolchain](docs/README.md) und im
103
+ [Evidenzregister](../docs/v1-readiness.md). Dort werden implementierte Prüfungen
104
+ und ausdrückliche Grenzen getrennt ausgewiesen.
105
+
106
+ ## Lizenz
107
+
108
+ BUSL-1.1 mit einer zusätzlichen Apache-2.0-Nutzungserlaubnis für persönliche,
109
+ nicht-kommerzielle Nutzung; siehe [LICENSE](LICENSE).
110
+ Für einen sequentiellen, nebenwirkungsfreien Reducer bietet
111
+ `veridist.engine.SQLiteCheckpointStore` dauerhaften lokalen Checkpoint-Zustand
112
+ mit generationsbasiertem Compare-and-Swap und SQLite-Sperren zwischen
113
+ Prozessen. Der Umfang ist auf einen Rechner und ein lokales Dateisystem
114
+ beschränkt; der strikte CSV-Adapter verspricht noch kein automatisches
115
+ Checkpoint-Replay.
@@ -0,0 +1,123 @@
1
+ # veridist
2
+
3
+ [English](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.md) | [فارسی](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.fa.md) | [Deutsch](https://github.com/alisadeghiaghili/veridist/blob/main/python/README.de.md)
4
+
5
+ <div lang="fa" dir="rtl">
6
+
7
+ ## وضعیت
8
+
9
+ `veridist` با نسخهٔ 1.0.0 یک انتشار عمومی با شواهد قابل‌بازبینی است.
10
+ این نسخه قراردادهای تحویل کران‌دار، بازپخش‌پذیری، بودجهٔ گذر، تلاش مجدد
11
+ تراکنشی، سازگاری checkpoint، شکست‌های نوع‌دار، پیامدهای اجرا و منشأ دادهٔ
12
+ پالایش‌شده از اطلاعات حساس را تعریف و آزمایش می‌کند.
13
+
14
+ این نسخه سلول‌های MLE نمایی، Weibull-minimum و Lognormal با مکان ثابت برای
15
+ طول عمرهای دقیق و راست‌سانسورشدهٔ مستقل دارد. هرگاه راه‌حل متناهی وجود داشته
16
+ باشد، برآورد نقطه‌ای برمی‌گرداند و در غیر این صورت شکست‌های نوع‌دار می‌دهد.
17
+ برای سلول نمایی بدون سانسور، آزمون‌های KS، AD و CvM با Monte Carlo و refit،
18
+ AIC/BIC، خلاصهٔ calibration و انتخاب مدل adequacy-gated نیز ارائه می‌شود؛ این
19
+ استنباط به همین سلول اعلام‌شده و generator متعلق به فراخواننده محدود است.
20
+ مسیر CSV عمومی آن سخت‌گیرانه است: CSV با UTF-8 و دقیقاً سرستون‌های
21
+ `time,event_observed`، توکن رخداد `1` و توکن راست‌سانسوری `0`. این مسیر یک
22
+ گذر از iterator با بودجهٔ منطقی payload نگه‌داشته‌شده اجرا و نتیجهٔ اجرایی
23
+ بسته و نوع‌دار برمی‌گرداند. شواهد نگه‌داری‌شده فقط payload داخلی کران‌دار را
24
+ برای ماتریس اندازه‌گیری‌شدهٔ 10k/100k/1m ردیف و بودجه‌های
25
+ 32KiB/64KiB/128KiB نشان می‌دهند؛ از آن‌ها پشتیبانی عمومی از دادهٔ بزرگ یا
26
+ توان عملیاتی بالا نتیجه نمی‌شود. این ادعای سقف RSS قابل‌حمل، لغو، retry،
27
+ checkpoint یا برون‌حافظه‌ای عمومی هم نیست.
28
+
29
+ `IterableDataSource` آداپتور عمومیِ قابل‌استفاده‌مجدد برای iterableهای chunk
30
+ متعلق به فراخواننده است. فرادادهٔ تغییرناپذیر آن تک‌گذر یا بازپخش‌پذیر بودن را
31
+ صریح اعلام می‌کند: دریافت دوبارهٔ منبع تک‌گذر با خطای نوع‌دار بودجهٔ گذر شکست
32
+ می‌خورد و منبع بازپخش‌پذیر به iterator factory نیاز دارد. `BoundedChunkBuffer`
33
+ بایت‌های chunkهای صف‌شده و در اختیار مصرف‌کننده را تا `BufferedChunk.release()`
34
+ حساب می‌کند؛ فراخواننده باید chunk دریافت‌شده را، معمولاً در `finally`، آزاد کند.
35
+ تنها آداپتور فایلِ ارائه‌شده همچنان آداپتور سخت‌گیرانهٔ طول‌عمر CSV است؛ این
36
+ قابلیت آداپتورهای عمومی CSV، Parquet، Arrow، dataframe یا out-of-core نیست.
37
+
38
+ برای یک reducer خالص و ترتیبی، `veridist.engine.SQLiteCheckpointStore` وضعیت
39
+ checkpoint محلی پایدار را با compare-and-swap نسلی و قفل‌گذاری SQLite بین
40
+ فرایندها فراهم می‌کند. این قابلیت فقط برای یک میزبان و filesystem محلی است؛
41
+ `fit_exponential_checkpointed_csv` ادامهٔ صریح و وابسته به source revision را
42
+ برای مسیر CSV طول‌عمر سخت‌گیرانه فراهم می‌کند.
43
+ این کار ادعای CSV عمومی، Parquet، Arrow، dataframe، پایگاه‌داده یا out-of-core
44
+ گسترده ایجاد نمی‌کند.
45
+
46
+ سطح اسکالر جداگانه فراداده‌های تغییرناپذیر `FAMILY_REGISTRY` را برای پنج خانوادهٔ `normal`، `gamma`، `weibull_min`، `lognormal` و `gumbel_right`، عملیات `evaluate_log_density`، CDF، survival، quantile و نمونه‌گیری با RNG متعلق به فراخواننده و کاهش‌دهندهٔ حالتِ دقیق `reduce_log_likelihood_chunks` دارد. عملیات آرایه‌ای نیستند و ماتریس برازش و استنباط از registry محدودتر است. هر چگالیِ لگاریتمی binary64 موفق متناهی است؛ کاهش‌دهنده آن را به‌صورت تعداد صحیحِ دقیقِ واحدهای زیرنرمال انباشته می‌کند و فقط مجموع نهایی را یک‌بار به binary64 گرد می‌کند. کران شمارش unsigned-64 به کران ۲۱۶۲ بیت برای مجموع صحیحِ دقیق می‌انجامد. شواهد ۱۰k/۱۰۰k/۱m فقط مخصوص جریان‌های `normal` آزمایش‌شده است.
47
+
48
+ اندازه‌گیری scale برای candidate عمداً دستی است: workflow با نام
49
+ `veridist-scale-evidence` ابتدا SHA کامل و checkout تمیزِ candidate را bind و
50
+ قراردادهای شواهد را اجرا می‌کند؛ سپس مسیر likelihood با iterable عمومی و مسیر
51
+ سخت‌گیرانهٔ CSV/نمایی را روی Linux و Windows اندازه می‌گیرد. artifact فقط پس از
52
+ اعتبارسنجی fail-closedِ SHA و schema خود نگه‌داری می‌شود. وجود این workflow یا
53
+ artifact تاریخی به‌تنهایی شاهد یک candidate تازه نیست و ادعای throughput یا RSS
54
+ ایجاد نمی‌کند.
55
+
56
+ </div>
57
+
58
+ <div lang="fa" dir="rtl">
59
+
60
+ ## نصب نسخهٔ ارزیابی
61
+
62
+ پس از clone کردن مخزن، پروژهٔ تو‌در‌توی Python را نصب کنید:
63
+
64
+ </div>
65
+
66
+ ```console
67
+ git clone https://github.com/alisadeghiaghili/veridist.git
68
+ cd veridist/python
69
+ python -m pip install .
70
+ ```
71
+
72
+ <div lang="fa" dir="rtl">
73
+
74
+ یا wheel مشخصی را که خودتان ساخته‌اید یا از یک اجرای تأییدشده گرفته‌اید نصب
75
+ کنید:
76
+
77
+ </div>
78
+
79
+ ```console
80
+ python -m pip install /path/to/veridist-1.0.0-py3-none-any.whl
81
+ ```
82
+
83
+ <div lang="fa" dir="rtl">
84
+
85
+ این پروژه کاربران را به نصب نام یک بستهٔ منتشرنشده از public index هدایت
86
+ نمی‌کند.
87
+
88
+ ## آزمودن عمودی آزمایشی
89
+
90
+ </div>
91
+
92
+ ```python
93
+ from pathlib import Path
94
+ from tempfile import TemporaryDirectory
95
+ from veridist import CsvLifetimeLimits, CsvLifetimeSchema, PublicSourceId, fit_exponential_csv
96
+ from veridist.families import ExponentialFitSuccess
97
+
98
+ with TemporaryDirectory() as directory:
99
+ path = Path(directory) / "lifetimes.csv"
100
+ path.write_text("time,event_observed\n1,1\n1,0\n", encoding="utf-8")
101
+ fit = fit_exponential_csv(
102
+ path, schema=CsvLifetimeSchema("time", "event_observed"),
103
+ source_id=PublicSourceId("src_0123456789abcdef0123456789abcdef"),
104
+ limits=CsvLifetimeLimits(32768, 32768),
105
+ ).fit
106
+ assert isinstance(fit, ExponentialFitSuccess)
107
+ assert fit.rate == 0.5
108
+ assert fit.inference == "not_provided"
109
+ assert fit.censoring_assumption == "independent_right_censoring"
110
+ ```
111
+
112
+ <div lang="fa" dir="rtl">
113
+
114
+ برای جزئیات، [زنجیرهٔ مستندسازی](docs/README.md) و
115
+ [دفتر شواهد](../docs/v1-readiness.md) را ببینید؛ قابلیت‌های پیاده‌شده و
116
+ محدودیت‌ها در آن‌ها جدا شده‌اند.
117
+
118
+ ## مجوز
119
+
120
+ BUSL-1.1 با مجوز استفادهٔ اضافی Apache-2.0 برای استفادهٔ شخصی و غیرتجاری؛
121
+ متن کامل در [LICENSE](LICENSE) است.
122
+
123
+ </div>