Files in this release originate from inconsistent repositories or configurations. View details.
scrutiPy v0.1.12: Scientific error detection in Python
A library for scientific error checking and fraud detection, based on the R Scrutiny library by Lukas Jung. Frontend API in Python 3, backend in Rust with PyO3 bindings.
Currently in early development. Presently available functions include:
grim_scalar(): Implements the GRIM test on single observations.
from scrutipy import grim_scalar
grim_scalar("5.19", 40)
# False
grim_map() Implements the GRIM test on Pandas dataframes. Use the variant grim_map_pl() for Polars dataframes. Both functions require Polars, which can be enabled using pip install scrutipy[polars] or pip install polars.
import pandas as pd
from scrutipy import grim_map
df = pd.read_csv("data/pigs1.csv")
# it may be necessary to explicitly convert your x column to string type in order to avoid losing trailing zeros. In the event that trailing zeros may be lost, the function will throw a warning
df["x"] = df["x"].astype(str)
bools, errors = grim_map(df, 1, 2)
print(bools)
# list([True, False, False, False, False, True, False, True, False, False, True, False])
print(errors)
# None
grimmer() Implements the GRIMMER test on 1d iterables.
from scrutipy import grimmer
results = grimmer(["1.03", "52.13", "9.42375"], ["0.41", "2.26", "3.86"], [40, 30, 59], items = [1, 1, 1])
print(results)
# list(False, True, False)
debit() implements the DEBIT test on 1d iterables (lists and arrays).
from scrutipy import debit
results = debit(["0.36", "0.11", "0.118974"], ["0.11", "0.31", "0.6784"], [20, 40, 100])
print(results)
# list([False, True, False])
debit_map() implements the DEBIT test on Pandas dataframes. Use the variant debit_map_pl() for Polars dataframes. Both functions require Polars, which can be enabled using pip install scrutipy[polars] or pip install polars.
from scrutipy import debit_map
df = pd.read_csv("data/debit_data.csv")
df["xs"] = df["xs"].astype(str) # ensuring that these columns are string types to silence a warning
df["sds"] = df["sds"].astype(str) # it can also be silenced with silence_numeric_warning = True.
results, errors = debit_map(df, 1, 2, 3)
print(bools)
# list([True, True, True, False, True, True, True])
print(errors)
# None
closure(): Implements the CLOSURE algorithm for recovering integer data from summary statistics. Any data which can be represented as integers on a bounded range, such as Likert scores, can be provably reconstructed using the mean, standard deviation, count, and range. This function replaces the CORVIDS algorithm, which relied on more advanced mathematics packages, with a simpler and faster algorithm. Note that even with CLOSURE's performance gains, the necessary time and compute to reconstruct data increases rapidly as range and count increase.
# reconstruct possible datasets with a mean of 3.5, sd of 0.57, n = 100,
# and inclusive range from 0 to 7.
# We set the rounding error for the mean to 0.05 and for sd to 0.005
from scrutipy import closure
results = closure(3.5, 1.2, 50, 0, 7, 0.05, 0.005)
len(results)
# 7980
# indicates there are 7980 possible datasets with these characteristics.
calculate_snspn(): Calculates all possible confusion matries which could be produced from a sample size, and compares the calculated sensitivity and specificity to the input values. It returns a list of dictionaries containing the records for each possibility, as well as a total error and whether the total error is less than a certain tolerance. The dictionaries are ordered from least to greatest total error. For larger sample sizes, it is recommended to use a top_n argument to limit the number of returned values. The return can be trivially turned into a pandas or polars dataframe as seen below. This is based on an application by Rod Whitely.
import pandas as pd
import scrutipy as s
vals = s.calculate_snspn(0.8, 0.70588, 20, top_n=5)
df = pd.DataFrame(vals)
df
TP TN FP FN Calculated_Sensitivity Calculated_Specificity Sensitivity_Error Specificity_Error Total_Error Exact_Match
0 8 7 3 2 0.800000 0.700000 0.000000 0.005880 0.005880 False
1 4 11 4 1 0.800000 0.733333 0.000000 0.027453 0.027453 False
2 10 5 2 3 0.769231 0.714286 0.030769 0.008406 0.039175 False
3 4 10 5 1 0.800000 0.666667 0.000000 0.039213 0.039213 False
4 5 10 4 1 0.833333 0.714286 0.033333 0.008406 0.041739 False
It is also recommended to use the n_positive argument (previously called n_pathology), which limits the search range only to those sets where the number of true positives and false negatives equal the input value, if this information is available.
vals = s.calculate_snspn(0.8, 0.70588, 20, n_positive=10, top_n=5)
df = pd.DataFrame(vals)
df
TP TN FP FN Calculated_Sensitivity Calculated_Specificity Sensitivity_Error Specificity_Error Total_Error Exact_Match
0 8 7 3 2 0.8 0.7 0.0 0.00588 0.00588 False
1 8 8 2 2 0.8 0.8 0.0 0.09412 0.09412 False
2 8 6 4 2 0.8 0.6 0.0 0.10588 0.10588 False
3 9 7 3 1 0.9 0.7 0.1 0.00588 0.10588 False
4 7 7 3 3 0.7 0.7 0.1 0.00588 0.10588 False
calculate_ppvnpv(): Calculates all possible confusion matries which could be produced from a sample size, and compares the calculated PPV and NPV to the input values. See calculate_snspn() above for some other details of recommended use for this family of functions.
>>> import pandas as pd
>>> import scrutipy as s
>>> vals = s.calculate_ppvnpv(0.8, 0.70588, 20, top_n=5)
>>> df = pd.DataFrame(vals)
>>> df
TP TN FP FN Calculated_PPV Calculated_NPV PPV_Error NPV_Error Total_Error Exact_Match
0 8 7 2 3 0.800000 0.700000 0.000000 0.005880 0.005880 False
1 4 11 1 4 0.800000 0.733333 0.000000 0.027453 0.027453 False
2 10 5 3 2 0.769231 0.714286 0.030769 0.008406 0.039175 False
3 4 10 1 5 0.800000 0.666667 0.000000 0.039213 0.039213 False
4 5 10 1 4 0.833333 0.714286 0.033333 0.008406 0.041739 False
calculate_likelihoodratios(): Calculates all possible confusion matries which could be produced from a sample size, and compares the calculated likelihood ratios to the input values. See calculate_snspn() above for some other details of recommended use for this family of functions.
l = s.calculate_likelihoodratios(0.234, 0.687, 56, top_n = 5)
df = pd.DataFrame(l)
df
TP TN FP FN Calculated_PLR Calculated_NLR PLR_Error NLR_Error Total_Error Exact_Match
0 20 9 22 5 0.232258 0.688889 0.001742 0.001889 0.003631 False
1 12 12 29 3 0.234146 0.683333 0.000146 0.003667 0.003813 False
2 4 15 36 1 0.235294 0.680000 0.001294 0.007000 0.008294 False
3 31 5 12 8 0.233786 0.697436 0.000214 0.010436 0.010650 False
4 23 8 19 6 0.234994 0.698276 0.000994 0.011276 0.012269 False
calculate_metrics_from_counts(): Calculates sensitivity, specificity, PPV, NPV, Positive Likelihood Ratio and Negative Likelihood Ratio from input counts of true/false positives/negatives.
import pandas as pd
import scrutipy as s
l = s.calculate_metrics_from_counts(34, 88, 94, 234)
df = pd.DataFrame([l])
Sensitivity Specificity PPV NPV +LR -LR
0 0.126866 0.483516 0.265625 0.273292 0.245634 1.805801
simrank() and simrank_parallel(): outputs sampled rank groups and U-values. Implementation by David Robert Grimes, cf Heathers & Grimes 2026
import scrutipy as s
res = s.simrank(10, 12, 7)
print("Group 1 ranks: ", res[0])
print("Group 2 ranks: ", res[1])
print("U-value: ", res[2])
Roadmap
Expand documentation
Test and document user-side GRIMMER function
Tidy up return types as dataframes
Implicitly maintain x_col as str when appropriate
Implement SPRITE
Acknowledgements
Lukas Jung
Nick Brown
James Heathers
Jordan Anaya
Aurelien Allard
Rod Whitely
David Robert Grimes
Metadata
Release files for scrutipy 0.1.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Inconsistent provenance
These files originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| scrutipy-0.1.12.tar.gz | 60.6 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 52.1 MB
Release files / scrutipy-0.1.12.tar.gz
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12.tar.gz |
|---|---|
| Size | 60.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6408aa9f517450b87bc6e68efc665e9a0b9b64a56faa2a904574d26b8373cdeb
|
|
BLAKE2b-256 checksum How to use checksums |
e9684aa88450f859ffc4e5b930e7b5dc0789cb2e5ab1f461e1c802e4e0baa56c
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp313-cp313-win_amd64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
585421327ece404b758e65c8f9c3a29e1f2de3742ae88c250bff8cb4e19cc40b
|
|
BLAKE2b-256 checksum How to use checksums |
41512691fe90a27bb60aa5d4cae01ab6da82301404d66fb3b6d1e331e1b43a66
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp313-cp313-manylinux_2_28_x86_64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
53fbd02976d58c281a99a4c23fc0356e9559b48dbff03fb7ee0f5614f51afa68
|
|
BLAKE2b-256 checksum How to use checksums |
61e38a27233c5d93a12663e2eacc5e266065333191de991a069e7c190018b84e
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp313-cp313-macosx_11_0_arm64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0a9867dfe8ff05b10874a184632163807779d266f58f3ab2ef438b03447957de
|
|
BLAKE2b-256 checksum How to use checksums |
f2f04a28460039ce8359db5bf56232d2915eee89f002390090f30b6546641d98
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp312-cp312-win_amd64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d174ae8cf027e8ea58542f85db46fa433b3926718ad1983ffd87804dbf4c047c
|
|
BLAKE2b-256 checksum How to use checksums |
ca69371c2f60a025888fbc96f9dca7f1157de1104744afd8f2b2158fb4d96fa3
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp312-cp312-manylinux_2_28_x86_64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d29e179c9e1e978949679816000e9bb94b11fc97fc7656f83c8094f0c7d3a9e
|
|
BLAKE2b-256 checksum How to use checksums |
3a31fd7d0098330726d8a9a1c5d8cb5fd6be3a95aff03c86757c2f0ba17e2fc6
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp312-cp312-macosx_11_0_arm64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
db5b82e8483794434c60e9badc96545c0aea66b2a7f56972e51c0d81842206bb
|
|
BLAKE2b-256 checksum How to use checksums |
4ab6fd89482e88c8536bcf9cc10b65a4808aa6439e40c14880b070b9d401c3df
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp311-cp311-win_amd64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b426dd43eee3ff629f1c7cf64f9ab42a730438b00db9287ffd88eebf2223c059
|
|
BLAKE2b-256 checksum How to use checksums |
2310481efe7108c152bb25c65dd3299c4d8a2699ffdd991961634cb9ca4dcff7
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp311-cp311-manylinux_2_28_x86_64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2416974c0c4159668508c0599ef8a24f2f0ad8d310c8fe7c713d310801e9991b
|
|
BLAKE2b-256 checksum How to use checksums |
0ac5df7fb8c771bc7441078c28b4eb6076bfb5a3efb1e2e85361e4ca3b35ddbd
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp311-cp311-macosx_11_0_arm64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4bc8196b53ed1199a0bccedad922f670b22cf7cde54f1a5d73adbb7e20a6c760
|
|
BLAKE2b-256 checksum How to use checksums |
60a20e60c2293a7fc2fd9bfa696f0f55dd58cf6c45e60fd3e6c79869abfb9510
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp310-cp310-win_amd64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cd8330ea07aee084a23c0c29a0e52d0d4ab754ab2e3b6f7ed23be6b2101d80ec
|
|
BLAKE2b-256 checksum How to use checksums |
0831036b5fcf3ba6e0b1adebf7b6b5dbbf21b49e6820a25a08f14e039fcb6ec1
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp310-cp310-manylinux_2_28_x86_64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a6a05b1402d00400ba537f73057481c4819c08a1e4d8115b6de63b080397035a
|
|
BLAKE2b-256 checksum How to use checksums |
040143b856e89a33897f2c86cb37fcf619ee9d371563b83011af14d84b0204a9
|
| 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 Jan 13, 2026.
Transparency logRelease files / scrutipy-0.1.12-cp310-cp310-macosx_11_0_arm64.whl
Inconsistent provenance
This file belongs to a release with inconsistent provenance: the files in this release originate from different repositories or configurations.
We recommend inspecting each repository and configuration before proceeding. View details.
| Download URL | scrutipy-0.1.12-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
81c4c7d8ae23b8099a46720c51797d0cd608b4bbc7dc41b88a1ca4e43f1e813e
|
|
BLAKE2b-256 checksum How to use checksums |
a8faa394bc42e9831834ad8025051c12fd672fd257bbd926c895068263272d2b
|
| 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 Jan 13, 2026.
Transparency logSecurity for scrutipy 0.1.12
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.
Inconsistent provenance
The release files originate from multiple, inconsistent configurations.
While this could reflect a legitimate choice by the project maintainers, it may also indicate that the release has been compromised.
Configuration
- 5 files mac.yml
- 4 files windows.yml
- 4 files ubuntu.yml
Attestation for scrutipy-0.1.12.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 Jan 13, 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.