PyMetaAnalysis 0.2.0__tar.gz → 0.2.1__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.
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/CHANGELOG.md +7 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/CITATION.cff +2 -2
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/PKG-INFO +25 -19
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/README.md +24 -18
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/index.md +5 -4
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/limitations.md +1 -1
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/_version.py +1 -1
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_documentation.py +10 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/.github/workflows/ci.yml +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/.github/workflows/pages.yml +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/.github/workflows/release.yml +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/.gitignore +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/CONTRIBUTING.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/LICENSE +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/SECURITY.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/benchmarks/README.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/benchmarks/benchmark_core.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/adr/0001-optional-matplotlib.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/adr/0002-statistical-policy.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/citation.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/development.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/getting-started.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/binary-outcomes.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/continuous-outcomes.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/generic-effects.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/input-data.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/method-selection.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/plotting.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/provenance-reporting.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/r-interoperability.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/sensitivity-analysis.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/guides/zero-events.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/installation.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/methods/statistical-methods.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/reference/api.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/reference/report-schema.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/reference/results.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/releasing.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/stylesheets/extra.css +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/docs/validation.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/examples/README.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/examples/quickstart.ipynb +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/mkdocs.yml +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/pyproject.toml +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/__init__.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/api.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/binary_api.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/config.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/continuous_api.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/data.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/effect_sizes/__init__.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/effect_sizes/binary.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/effect_sizes/continuous.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/estimators/__init__.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/estimators/inverse_variance.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/estimators/mantel_haenszel.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/estimators/tau2.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/exceptions.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/heterogeneity.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/plotting/__init__.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/plotting/_utils.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/plotting/forest.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/plotting/funnel.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/plotting/subgroup_forest.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/provenance.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/py.typed +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/reporting.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/results.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/sensitivity.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/subgroups.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/README.md +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/binary_input.csv +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/binary_metafor.json +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/binary_sparse_input.csv +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/continuous_input.csv +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/continuous_metafor.json +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/generate_binary_metafor.R +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/generate_continuous_metafor.R +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/generate_generic_metafor.R +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/generate_workflow_metafor.R +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/generic_input.csv +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/generic_metafor.json +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/workflow_input.csv +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/reference/workflow_metafor.json +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_api.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_binary.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_continuous.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_estimators.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_funnel_plot.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_numerical_stability.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_plotting.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_properties.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_r_references.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_reference_results.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_release_readiness.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_reporting.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_sensitivity.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tests/test_subgroups.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tools/check_release.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tools/execute_notebooks.py +0 -0
- {pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/tools/inspect_distribution.py +0 -0
|
@@ -6,6 +6,13 @@ Changes planned for the next release accumulate under `Unreleased`.
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 0.2.1 - 2026-07-17
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- README documentation and repository links use absolute URLs so they resolve
|
|
14
|
+
correctly when the project description is rendered on PyPI.
|
|
15
|
+
|
|
9
16
|
## 0.2.0 - 2026-07-16
|
|
10
17
|
|
|
11
18
|
### Added
|
|
@@ -8,8 +8,8 @@ authors:
|
|
|
8
8
|
- family-names: Ding
|
|
9
9
|
given-names: Zhaobo
|
|
10
10
|
email: ding.zb@yahoo.com
|
|
11
|
-
version: 0.2.
|
|
12
|
-
date-released: 2026-07-
|
|
11
|
+
version: 0.2.1
|
|
12
|
+
date-released: 2026-07-17
|
|
13
13
|
repository-code: https://github.com/ZhaoboDing/PyMetaAnalysis
|
|
14
14
|
url: https://zhaoboding.github.io/PyMetaAnalysis/
|
|
15
15
|
license: MIT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyMetaAnalysis
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A pandas-first, auditable meta-analysis library for Python
|
|
5
5
|
Project-URL: Documentation, https://zhaoboding.github.io/PyMetaAnalysis/
|
|
6
6
|
Project-URL: Source, https://github.com/ZhaoboDing/PyMetaAnalysis
|
|
@@ -51,7 +51,7 @@ Description-Content-Type: text/markdown
|
|
|
51
51
|
|
|
52
52
|
[](https://github.com/ZhaoboDing/PyMetaAnalysis/actions/workflows/ci.yml)
|
|
53
53
|
[](https://zhaoboding.github.io/PyMetaAnalysis/)
|
|
54
|
-
[](LICENSE)
|
|
54
|
+
[](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/LICENSE)
|
|
55
55
|
|
|
56
56
|
PyMetaAnalysis is an early-stage, pandas-first Python library for conventional
|
|
57
57
|
study-level meta-analysis. It accepts DataFrames, NumPy arrays, and ordinary
|
|
@@ -178,18 +178,18 @@ are descriptive small-study-effect diagnostics, not proof of publication bias.
|
|
|
178
178
|
The complete documentation is published at
|
|
179
179
|
[zhaoboding.github.io/PyMetaAnalysis](https://zhaoboding.github.io/PyMetaAnalysis/).
|
|
180
180
|
|
|
181
|
-
- [Installation](
|
|
182
|
-
- [Getting started](
|
|
183
|
-
- [Input data and row decisions](
|
|
184
|
-
- [Generic](
|
|
185
|
-
- [Choosing methods](
|
|
186
|
-
- [Sensitivity analysis](
|
|
187
|
-
- [Public API](
|
|
188
|
-
- [Validation strategy](
|
|
189
|
-
- [Citation guidance](
|
|
190
|
-
- [R `meta`/`metafor` mapping](
|
|
191
|
-
|
|
192
|
-
An executable [end-to-end notebook](examples/quickstart.ipynb) uses synthetic
|
|
181
|
+
- [Installation](https://zhaoboding.github.io/PyMetaAnalysis/installation/)
|
|
182
|
+
- [Getting started](https://zhaoboding.github.io/PyMetaAnalysis/getting-started/)
|
|
183
|
+
- [Input data and row decisions](https://zhaoboding.github.io/PyMetaAnalysis/guides/input-data/)
|
|
184
|
+
- [Generic](https://zhaoboding.github.io/PyMetaAnalysis/guides/generic-effects/), [binary](https://zhaoboding.github.io/PyMetaAnalysis/guides/binary-outcomes/), and [continuous](https://zhaoboding.github.io/PyMetaAnalysis/guides/continuous-outcomes/) guides
|
|
185
|
+
- [Choosing methods](https://zhaoboding.github.io/PyMetaAnalysis/guides/method-selection/) and [statistical formulas](https://zhaoboding.github.io/PyMetaAnalysis/methods/statistical-methods/)
|
|
186
|
+
- [Sensitivity analysis](https://zhaoboding.github.io/PyMetaAnalysis/guides/sensitivity-analysis/) and [plotting](https://zhaoboding.github.io/PyMetaAnalysis/guides/plotting/)
|
|
187
|
+
- [Public API](https://zhaoboding.github.io/PyMetaAnalysis/reference/api/), [result objects](https://zhaoboding.github.io/PyMetaAnalysis/reference/results/), and [report schema](https://zhaoboding.github.io/PyMetaAnalysis/reference/report-schema/)
|
|
188
|
+
- [Validation strategy](https://zhaoboding.github.io/PyMetaAnalysis/validation/) and [scope/limitations](https://zhaoboding.github.io/PyMetaAnalysis/limitations/)
|
|
189
|
+
- [Citation guidance](https://zhaoboding.github.io/PyMetaAnalysis/citation/)
|
|
190
|
+
- [R `meta`/`metafor` mapping](https://zhaoboding.github.io/PyMetaAnalysis/guides/r-interoperability/)
|
|
191
|
+
|
|
192
|
+
An executable [end-to-end notebook](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/examples/quickstart.ipynb) uses synthetic
|
|
193
193
|
data to demonstrate analysis, provenance, reporting, sensitivity, and plotting.
|
|
194
194
|
|
|
195
195
|
Build the complete site locally with:
|
|
@@ -207,16 +207,22 @@ edge cases, and committed R `metafor` reference fixtures. CI covers Python
|
|
|
207
207
|
distribution builds.
|
|
208
208
|
|
|
209
209
|
This is independent cross-software validation, not a formal external
|
|
210
|
-
statistical audit. See
|
|
210
|
+
statistical audit. See
|
|
211
|
+
[validation](https://zhaoboding.github.io/PyMetaAnalysis/validation/) for exact
|
|
212
|
+
coverage.
|
|
211
213
|
|
|
212
214
|
## Contributing
|
|
213
215
|
|
|
214
|
-
See
|
|
215
|
-
[
|
|
216
|
+
See
|
|
217
|
+
[CONTRIBUTING.md](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/CONTRIBUTING.md)
|
|
218
|
+
and the full
|
|
219
|
+
[development guide](https://zhaoboding.github.io/PyMetaAnalysis/development/).
|
|
220
|
+
Statistical changes require formula
|
|
216
221
|
documentation, boundary tests, and an independent comparison where available.
|
|
217
222
|
|
|
218
|
-
Security-sensitive reports should follow
|
|
223
|
+
Security-sensitive reports should follow
|
|
224
|
+
[SECURITY.md](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/SECURITY.md).
|
|
219
225
|
|
|
220
226
|
## License
|
|
221
227
|
|
|
222
|
-
[MIT](LICENSE)
|
|
228
|
+
[MIT](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/LICENSE)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/ZhaoboDing/PyMetaAnalysis/actions/workflows/ci.yml)
|
|
4
4
|
[](https://zhaoboding.github.io/PyMetaAnalysis/)
|
|
5
|
-
[](LICENSE)
|
|
5
|
+
[](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/LICENSE)
|
|
6
6
|
|
|
7
7
|
PyMetaAnalysis is an early-stage, pandas-first Python library for conventional
|
|
8
8
|
study-level meta-analysis. It accepts DataFrames, NumPy arrays, and ordinary
|
|
@@ -129,18 +129,18 @@ are descriptive small-study-effect diagnostics, not proof of publication bias.
|
|
|
129
129
|
The complete documentation is published at
|
|
130
130
|
[zhaoboding.github.io/PyMetaAnalysis](https://zhaoboding.github.io/PyMetaAnalysis/).
|
|
131
131
|
|
|
132
|
-
- [Installation](
|
|
133
|
-
- [Getting started](
|
|
134
|
-
- [Input data and row decisions](
|
|
135
|
-
- [Generic](
|
|
136
|
-
- [Choosing methods](
|
|
137
|
-
- [Sensitivity analysis](
|
|
138
|
-
- [Public API](
|
|
139
|
-
- [Validation strategy](
|
|
140
|
-
- [Citation guidance](
|
|
141
|
-
- [R `meta`/`metafor` mapping](
|
|
142
|
-
|
|
143
|
-
An executable [end-to-end notebook](examples/quickstart.ipynb) uses synthetic
|
|
132
|
+
- [Installation](https://zhaoboding.github.io/PyMetaAnalysis/installation/)
|
|
133
|
+
- [Getting started](https://zhaoboding.github.io/PyMetaAnalysis/getting-started/)
|
|
134
|
+
- [Input data and row decisions](https://zhaoboding.github.io/PyMetaAnalysis/guides/input-data/)
|
|
135
|
+
- [Generic](https://zhaoboding.github.io/PyMetaAnalysis/guides/generic-effects/), [binary](https://zhaoboding.github.io/PyMetaAnalysis/guides/binary-outcomes/), and [continuous](https://zhaoboding.github.io/PyMetaAnalysis/guides/continuous-outcomes/) guides
|
|
136
|
+
- [Choosing methods](https://zhaoboding.github.io/PyMetaAnalysis/guides/method-selection/) and [statistical formulas](https://zhaoboding.github.io/PyMetaAnalysis/methods/statistical-methods/)
|
|
137
|
+
- [Sensitivity analysis](https://zhaoboding.github.io/PyMetaAnalysis/guides/sensitivity-analysis/) and [plotting](https://zhaoboding.github.io/PyMetaAnalysis/guides/plotting/)
|
|
138
|
+
- [Public API](https://zhaoboding.github.io/PyMetaAnalysis/reference/api/), [result objects](https://zhaoboding.github.io/PyMetaAnalysis/reference/results/), and [report schema](https://zhaoboding.github.io/PyMetaAnalysis/reference/report-schema/)
|
|
139
|
+
- [Validation strategy](https://zhaoboding.github.io/PyMetaAnalysis/validation/) and [scope/limitations](https://zhaoboding.github.io/PyMetaAnalysis/limitations/)
|
|
140
|
+
- [Citation guidance](https://zhaoboding.github.io/PyMetaAnalysis/citation/)
|
|
141
|
+
- [R `meta`/`metafor` mapping](https://zhaoboding.github.io/PyMetaAnalysis/guides/r-interoperability/)
|
|
142
|
+
|
|
143
|
+
An executable [end-to-end notebook](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/examples/quickstart.ipynb) uses synthetic
|
|
144
144
|
data to demonstrate analysis, provenance, reporting, sensitivity, and plotting.
|
|
145
145
|
|
|
146
146
|
Build the complete site locally with:
|
|
@@ -158,16 +158,22 @@ edge cases, and committed R `metafor` reference fixtures. CI covers Python
|
|
|
158
158
|
distribution builds.
|
|
159
159
|
|
|
160
160
|
This is independent cross-software validation, not a formal external
|
|
161
|
-
statistical audit. See
|
|
161
|
+
statistical audit. See
|
|
162
|
+
[validation](https://zhaoboding.github.io/PyMetaAnalysis/validation/) for exact
|
|
163
|
+
coverage.
|
|
162
164
|
|
|
163
165
|
## Contributing
|
|
164
166
|
|
|
165
|
-
See
|
|
166
|
-
[
|
|
167
|
+
See
|
|
168
|
+
[CONTRIBUTING.md](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/CONTRIBUTING.md)
|
|
169
|
+
and the full
|
|
170
|
+
[development guide](https://zhaoboding.github.io/PyMetaAnalysis/development/).
|
|
171
|
+
Statistical changes require formula
|
|
167
172
|
documentation, boundary tests, and an independent comparison where available.
|
|
168
173
|
|
|
169
|
-
Security-sensitive reports should follow
|
|
174
|
+
Security-sensitive reports should follow
|
|
175
|
+
[SECURITY.md](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/SECURITY.md).
|
|
170
176
|
|
|
171
177
|
## License
|
|
172
178
|
|
|
173
|
-
[MIT](LICENSE)
|
|
179
|
+
[MIT](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/LICENSE)
|
|
@@ -82,10 +82,11 @@ lists unsupported methods explicitly.
|
|
|
82
82
|
|
|
83
83
|
## Project status
|
|
84
84
|
|
|
85
|
-
PyMetaAnalysis 0.2.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
PyMetaAnalysis 0.2.1 fixes documentation and repository links in the PyPI
|
|
86
|
+
project description. Version 0.2.0 added direct generic standard-error input
|
|
87
|
+
to the initial public analysis scope. The project has not undergone a formal
|
|
88
|
+
external statistical audit. Pin the package version for consequential work
|
|
89
|
+
and independently check important analyses. See the repository
|
|
89
90
|
[changelog](https://github.com/ZhaoboDing/PyMetaAnalysis/blob/main/CHANGELOG.md)
|
|
90
91
|
and [contribution guide](development.md). For manuscripts and archived
|
|
91
92
|
analyses, see [citing PyMetaAnalysis](citation.md).
|
|
@@ -69,7 +69,7 @@ workflow must version those artifacts separately.
|
|
|
69
69
|
|
|
70
70
|
## Stability and review status
|
|
71
71
|
|
|
72
|
-
The package version is currently `0.2.
|
|
72
|
+
The package version is currently `0.2.1`. Public APIs and serialized schemas
|
|
73
73
|
may change during the 0.x series. Pin versions in analysis environments and
|
|
74
74
|
inspect changelog/schema updates before upgrading.
|
|
75
75
|
|
|
@@ -51,3 +51,13 @@ def test_relative_markdown_links_resolve(path: Path) -> None:
|
|
|
51
51
|
assert (path.parent / relative).exists(), (
|
|
52
52
|
f"Broken relative link {target!r} in {path.relative_to(ROOT)}"
|
|
53
53
|
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_pypi_readme_links_are_absolute() -> None:
|
|
57
|
+
"""PyPI resolves relative long-description links against its project URL."""
|
|
58
|
+
pattern = re.compile(r"\]\(([^)]+)\)")
|
|
59
|
+
for raw_target in pattern.findall((ROOT / "README.md").read_text(encoding="utf-8")):
|
|
60
|
+
target = raw_target.split(maxsplit=1)[0].strip("<>")
|
|
61
|
+
assert target.startswith(("https://", "http://", "#", "mailto:")), (
|
|
62
|
+
f"README link {target!r} must be absolute so it works on PyPI"
|
|
63
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/estimators/inverse_variance.py
RENAMED
|
File without changes
|
{pymetaanalysis-0.2.0 → pymetaanalysis-0.2.1}/src/meta_analyze/estimators/mantel_haenszel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|