GeoLinear
Boosted piecewise-linear models on cooperative geometry partitions.
What is GeoLinear?
GeoLinear discovers cooperative geometry regimes in your data — groups of observations where features interact in similar ways — and fits an interpretable linear model inside each regime. Predictions are accumulated across boosting rounds.
The key insight is that many real-world relationships are piecewise-linear in cooperative geometry. A global linear model averages over regimes and loses the regime-specific signal. GeoLinear finds the regimes automatically (via HVRT) and lets the coefficients vary across them.
Round 1: HVRT partitions X → {cooperative, competitive, mixed} regimes
Ridge fits within each partition on residuals
Round 2: New partitioning on updated residuals → new local Ridge models
...
Final prediction = Σ (learning_rate × stage_predictions) + intercept
Each partition's Ridge coefficients are directly interpretable as local relativities — exactly the quantities actuaries file with regulators.
Why it matters for actuaries
Insurance pricing models must be both accurate and interpretable. Regulators require filed relativities; black-box models are inadmissible. The usual compromise — vanilla GLM — leaves accuracy on the table when the true relationship is regime-switching.
GeoLinear bridges this gap:
- Fit GeoLinear on the training portfolio. Each partition's Ridge coefficients are the relativities for that cooperative geometry segment.
- File a meta-GLM: fit
OLS(X → ŷ_GL)to compress the ensemble into a single interpretable GLM. The compression loss is typically small (R² drop < 2%). - Audit trail: every prediction can be traced to a specific partition and its local coefficient vector.
See examples/insurance_pricing_demo.py for a worked actuarial example including
relativities tables and the GLM bridge.
Installation
pip install geolinear
Requires a C++17 compiler and CMake (automatically satisfied on most systems; the
cmake PyPI package is a reliable fallback).
For the examples:
pip install geolinear[examples] # adds xgboost, optuna, matplotlib
Quick start
Regression
from geolinear import GeoLinear
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
X, y = fetch_california_housing(return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=0)
model = GeoLinear(n_rounds=20, learning_rate=0.1, alpha=1.0)
model.fit(X_tr, y_tr)
print(r2_score(y_te, model.predict(X_te))) # ~0.72 default params
Classification
from geolinear import GeoLinearClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score
X, y = load_breast_cancer(return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=0)
clf = GeoLinearClassifier(n_rounds=20, alpha=1.0)
clf.fit(X_tr, y_tr)
print(roc_auc_score(y_te, clf.predict_proba(X_te)[:, 1])) # ~0.993
Pipeline + GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV
from geolinear import GeoLinear
pipe = Pipeline([("scaler", StandardScaler()), ("gl", GeoLinear())])
grid = GridSearchCV(pipe, {"gl__alpha": [0.1, 1.0, 10.0], "gl__n_rounds": [10, 20]}, cv=5)
grid.fit(X_tr, y_tr)
Optuna HPO
import optuna
from geolinear import GeoLinear
from sklearn.model_selection import cross_val_score
def objective(trial):
model = GeoLinear(
n_rounds=trial.suggest_int("n_rounds", 10, 100),
learning_rate=trial.suggest_float("learning_rate", 0.01, 0.3, log=True),
alpha=trial.suggest_float("alpha", 0.01, 20.0, log=True),
y_weight=trial.suggest_float("y_weight", 0.1, 1.0),
base_learner=trial.suggest_categorical("base_learner", ["ridge", "lasso"]),
hvrt_n_partitions=trial.suggest_int("hvrt_n_partitions", 3, 14),
min_samples_partition=trial.suggest_int("min_samples_partition", 3, 25),
hvrt_model=trial.suggest_categorical("hvrt_model", ["hvrt", "pyramid_hart", "fast_hvrt"]),
use_t_feature=trial.suggest_categorical("use_t_feature", [False, True]),
refit_interval=trial.suggest_categorical("refit_interval", [0, 1, 2]),
)
return cross_val_score(model, X_tr, y_tr, cv=5, scoring="r2").mean()
study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=60)
Ecosystem: which tool to use?
GeoLinear is part of a family of cooperative-geometry libraries. The right choice depends on what "interpretable" means in your domain and the structure of your data.
| Domain | Primary need | Recommended |
|---|---|---|
| Insurance pricing | Filed relativities; regulator-auditable linear tariff | GeoLinear |
| Credit risk / scoring | Scorecard linearity; SR 11-7 model risk compliance | GeoLinear |
| Utility rate-setting | Filed tariff schedules with linear rate factors | GeoLinear |
| Healthcare / clinical | XGBoost-level performance with fully deterministic, auditable predictions | GeoXGB |
| Ecology / environmental | Nonlinear regime detection; richer explanation than SHAP via 100% determinism | GeoXGB |
| Public policy | Algorithmic accountability without linearity constraints | GeoXGB |
| Personalised interventions | Per-entity longitudinal data; individual treatment trajectories | AutoITE |
Rule of thumb: if your regulator or ethics board requires a linear equation you can file or defend, use GeoLinear. If you need XGBoost-class accuracy with fully deterministic predictions that provide richer interpretability than SHAP, use GeoXGB. If you have repeated observations per individual and want to model how treatment effects evolve over time for each entity, use AutoITE.
Benchmark results
80-trial Optuna HPO, GeoLinear (v0.3.0) vs XGBoost. use_t_feature included in GeoLinear's
HPO search space so the optimizer can exploit cooperative geometry when it exists.
Regression R² — v0.3.0 (80-trial HPO)
| DGP | GL-HPO | use_t |
XGB-HPO | Gap |
|---|---|---|---|---|
| T-regime | 0.569 | ✓ | 0.296 | +0.273 GL wins |
| 3-regime | 0.358 | ✓ | 0.329 | +0.029 GL wins |
| Friedman1 | 0.984 | — | 0.988 | −0.003 (tie) |
| Linear | 0.965 | — | 0.957 | +0.008 GL wins |
| CalHousing | 0.584 | ✓ | 0.856 | −0.271 XGB wins |
Score: 3 wins · 1 tie · 1 loss.
use_t_feature is selected by HPO whenever the data has cooperative structure (T-regime,
3-regime). On smooth or axis-aligned DGPs (Friedman1, Linear) HPO correctly opts out.
CalHousing remains XGBoost territory: spatial autocorrelation and threshold effects are
better captured by axis-aligned splits than by pairwise cooperative geometry.
Classification AUC
| Dataset | GL-Ridge (default) | GL-HPO | XGB-HPO |
|---|---|---|---|
| Synthetic | 0.940 | 0.957 | 0.981 |
| BreastCancer | 0.993 | 0.972 | 0.993 |
Default-parameter GL-Ridge matches XGBoost-HPO on BreastCancer (AUC 0.993 each).
API reference
GeoLinear (regressor)
| Parameter | Type | Default | Description |
|---|---|---|---|
n_rounds |
int | 20 | Boosting rounds |
learning_rate |
float | 0.1 | Shrinkage per round |
y_weight |
float | 0.5 | HVRT outcome-blend (0 = geometry-only, 1 = y-driven) |
base_learner |
str | "ridge" |
"ridge", "ols", or "lasso" |
alpha |
float | 1.0 | L2 regularisation within each partition |
min_samples_partition |
int | 5 | Minimum samples to fit a partition model |
hvrt_n_partitions |
int|None | None | Target partitions (None = HVRT auto-tune) |
hvrt_min_samples_leaf |
int|None | None | HVRT min leaf size |
hvrt_inner_rounds |
int | 1 | HVRT T-residual inner rounds per stage |
partition_inner_rounds |
int | 1 | Base-learner rounds within each partition |
refit_interval |
int | 0 | 0 = fresh HVRT each round; k>0 = refit every k rounds (faster) |
use_t_feature |
bool | False | Append per-sample T-statistic (S²−Q) as an extra linear feature |
use_coop_weights |
bool | False | Scale features by |corr(z_k, S−z_k)|² before linear fit |
random_state |
int | 42 | Seed (incremented per round for diverse partitionings) |
GeoLinearClassifier accepts the same parameters.
Key methods
model.fit(X, y) # fit
model.predict(X) # regression predictions
clf.predict_proba(X) # class probabilities, shape (n, 2)
model.feature_importances(feature_names) # weighted mean |coef| across partitions/stages
model.stages_ # list of (None, dict[partition_id, RidgeModel])
License
GNU Affero General Public License v3.0 or later. See LICENSE.
Metadata
Release files for geolinear 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| geolinear-0.3.0.tar.gz | 109.6 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 3.8 MB
Release files / geolinear-0.3.0.tar.gz
| Download URL | geolinear-0.3.0.tar.gz |
|---|---|
| Size | 109.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66d00994a41e70cac785b7b982a000dcc6571bc9eedf8f39c891d5ff33ffe5ca
|
|
BLAKE2b-256 checksum How to use checksums |
edca348b3cc28f85f43ec24e31e8a1b0ba39ab945f97a12168cb133d9a2a95cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp313-cp313-win_amd64.whl
| Download URL | geolinear-0.3.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 268.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a16eb5f36f4be9728bb76f29c984e1629a5b452a4a32f74e0d090dc2b2130b63
|
|
BLAKE2b-256 checksum How to use checksums |
fded95e31a949fe8df04f94acc44997adc576043f192929554d6cacf2aa38e1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | geolinear-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 352.7 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9365369f30917da18f043f6ef778ff6fde003e5238ee43da00e145f29a1ed9fe
|
|
BLAKE2b-256 checksum How to use checksums |
cd601a60c1565e72d3e3716a906eb67084f9674acb78cb342a0764d6260fd3b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | geolinear-0.3.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 293.2 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8577db311fe79a1d6442786e176bc2e90e609448ca153221ac091c6742ded993
|
|
BLAKE2b-256 checksum How to use checksums |
eaacc50dd3d6c11efff8f0f72a7e023ed764d923332801d4506124de5d6936f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp312-cp312-win_amd64.whl
| Download URL | geolinear-0.3.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 268.4 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b9af4adfddf5726b15f898491caad454207d48f3eb1c6420b9a9393e3675f416
|
|
BLAKE2b-256 checksum How to use checksums |
12d46612a09ddbec0a2b9df86686816e191daf261dab4fcae0a49ce3448315b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | geolinear-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 352.8 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6aabf724931cdf6fd8348a1596a51910d5446524636ef65fe23abd28447de151
|
|
BLAKE2b-256 checksum How to use checksums |
dc68e57d5a97afee05168b7cf542c502d555c721bd9507fac385a95f796acf66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | geolinear-0.3.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 293.2 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7fa82d891f9477aa68429b23b95f0995e6a86b1c9cf3796fac32dc2fcaa5b4d7
|
|
BLAKE2b-256 checksum How to use checksums |
156a34686c12bee8643cb7bb2811057488f43eba5d6d615d427c65db21bd3e54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp311-cp311-win_amd64.whl
| Download URL | geolinear-0.3.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 267.1 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
015720004547eabcb9753a45e2ccc9894b4d7fa5700935e593579996c341dd46
|
|
BLAKE2b-256 checksum How to use checksums |
bf36b6426cb423dece306725f345d4bedfb7b3b8c90150c529fa39e7069fd017
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | geolinear-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 351.9 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
035f751bff92bc4809ae000f40b91c0e971d72053c795f5ec12e899b5dd4193f
|
|
BLAKE2b-256 checksum How to use checksums |
f09c626873dee56757630d99e0bebc270211ed959638b8c4dcaec81656ca78ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | geolinear-0.3.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 291.7 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d568f5b1bfa9bfe09161f1cb83b6b19480a18d259a44102125e3bb73b34ab9d4
|
|
BLAKE2b-256 checksum How to use checksums |
0a43a6a8706f56119be866fc9d98aeb05640332b5be6c87e6f9fd7a0b5ec4fa1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp310-cp310-win_amd64.whl
| Download URL | geolinear-0.3.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 266.5 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7e07c0ee9cb091005a898f82cc66fc3f8071ccf323fe9222a038a6791468539f
|
|
BLAKE2b-256 checksum How to use checksums |
52df6d5a254ba5bbc638de436cdef94cc1ff7d2b03f385d4cf2e0a9f0c437c24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | geolinear-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 351.1 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
df0e3be903128ce44127482836e6858c594bb91ac1c6cce45e88626c33584bcd
|
|
BLAKE2b-256 checksum How to use checksums |
eab246747a7be899038501843a6578c8a292f5d4ee71a2498920aeb21ba2a7a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / geolinear-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | geolinear-0.3.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 290.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6bb8d124a01f3f8c70cc2fb37627f96973a7169838e16b7c7d738c15607036f6
|
|
BLAKE2b-256 checksum How to use checksums |
b7c07267d5e3eb1647cf74eeeff1d97c01afb566a5e8a66a2160b7200a3da0fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logSecurity for geolinear 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 13 files in this release have been uploaded with provenance metadata.
Attestation for geolinear-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.