Skip to main content

pytauargus

Statistical disclosure control (SDC) for tabular data, as a Python package and a headless tauargus command. Protect tables directly from DataFrames with protect(), or run supported legacy Tau-Argus .arb batches without the GUI. The 4.1 manual is the batch/file-format reference, not a complete feature compatibility guarantee. The engine solves with the open-source HiGHS solver. Part of tauargus-engine.

Supported workflows and validation

  • OPT, MOD and RND are implemented and regression-tested.
  • CKM has a dispatch path, but no dedicated end-to-end CKM regression suite.
  • GH, NET and CTA are rejected by the headless engine, even though the parser/generators accept their legacy syntax.
  • Suppression audit runs in-process and has known-interval contract tests.

Regression tests do not establish comprehensive numerical equivalence with original Tau-Argus. Compare protection requirements, realised audit intervals, information loss and failure behaviour on representative tables before adopting a workflow; solver changes can produce different valid suppression patterns. Audit is explicit: engine.audit(tab) checks the supplied table's suppression constraints. TableResult.safe() masks cells; it does not run the audit.

Run independent jobs in separate processes and working/output directories. The native solver retains process-global state, and concurrent engine calls in the same process are not validated. OPT/MOD limits are in minutes (0: no limit); the positive-limit tests do not cover deadline expiry or partial results.

See Compatibility and validation for the project scope and the distinction between diagnostics and publication.

Install

pip install --upgrade pytauargus
tauargus --version

These commands install the current release. To keep a specific version, use pytauargus==<version> from PyPI.

Wheels bundle HiGHS and the native engine; no other installation is needed. Available for Python 3.10-3.15 on macOS arm64, Linux x86_64 and aarch64 (manylinux_2_28) and Windows x64. Other platforms: build from source (see the repository).

Cloud native

It runs unattended in containers, CI and batch services:

  • Headless: no GUI, no display, no interactive prompts.
  • Self-contained: one pip install; the solver (HiGHS) and native libraries are bundled in the wheel. No licensed solver, license server, system packages or Windows registry.
  • Stateless: input and output are plain files in the working directory; scratch files go to the system temp directory.
  • Scriptable: success is exit code 0; errors go to stderr with a non-zero exit code.
  • Portable: wheels for Linux (manylinux_2_28, so any glibc 2.28+ image such as python:3.x-slim), macOS arm64 and Windows x64.

A ready-made image is published to GitHub Container Registry with each release (linux/amd64 and linux/arm64):

docker run --pull=always --rm -v "$PWD":/work ghcr.io/trygu/tauargus-engine:latest run batch.arb

latest is updated with each release; --pull=always checks for an updated image before running. To keep a specific release, choose a version from Releases and use ghcr.io/trygu/tauargus-engine:<version> (without the release tag's py-v prefix).

To build your own image:

FROM python:3.12-slim
RUN pip install --no-cache-dir pytauargus
WORKDIR /work
ENTRYPOINT ["tauargus"]

What problem it solves

Publishing a table can disclose information about individual respondents: a cell with few contributors, or one dominated by a single contributor. Such primary cells are suppressed, but totals would still reveal them, so secondary cells are suppressed as well, chosen to minimise information loss. Alternatively the table can be controlled-rounded. tauargus does this from a batch file.

Quick start

From a DataFrame

protect() is available from version 0.3.0. Install with pip install --upgrade "pytauargus[dataframe]>=0.3.0" to include pandas support. For a source checkout, follow the source-build instructions, then run uv sync --extra dataframe here.

import pandas as pd
from pytauargus import protect

micro = pd.DataFrame({
    "Region": ["North"] * 6 + ["South"] * 6,
    "Sector": ["Retail"] * 3 + ["Services"] * 3
              + ["Retail"] * 3 + ["Services"] * 3,
    "Turnover": [100., 5., 5., 10., 10., 10., 20., 20., 20., 30., 30., 30.],
})
result = protect(
    micro, ["Region", "Sector"], response="Turnover",
    safety_rules="NK(2,75)", suppress="OPT(1)", workdir="tauargus_run",
)
table = result.tables[0]
publication = table.dataframe()[["Region", "Sector"]].copy()
publication["Turnover"] = table.safe()
publication.to_csv("protected.csv", index=False)
print(publication)

Each row is one respondent. NK(2,75) flags cells whose two largest contributors exceed 75% of the response. The engine computes the crossing and totals, identifies primary unsafe cells, and adds secondary suppression. protect() coordinates microdata, metadata, batch generation and result parsing.

Pandas is optional for the core API: column dicts, lists of row dicts and polars DataFrames are accepted too. dataframe() returns a pandas DataFrame when available, otherwise polars, otherwise a list of row dicts. Column labels become strings and must remain unique after conversion. Column dicts require equal lengths; row dicts use the ordered union of all keys, with missing fields represented by None.

Parquet files and cloud URLs

Install the optional dependency with pip install "pytauargus[parquet]" (pyarrow). Then protect() also accepts a path to a .parquet file, or an s3://, gs:// or https:// URL to one, instead of a DataFrame:

result = protect("s3://bucket/microdata.parquet",
                 ["Region", "Sector"], response="Turnover",
                 safety_rules="NK(2,75)", suppress="OPT(1)")
result.tables[0].to_parquet("s3://bucket/protected.parquet")

to_parquet writes the published table: the explanatory columns plus the response, with suppressed cells (U and M status) as null. Cloud credentials come from the environment, as pyarrow requires them. The same inputs and outputs work from the command line (protect verb below).

A runnable example lives in data/examples/parquet/: micro.parquet holds eight records crossing Sector and Geo, and

tauargus protect data/examples/parquet/micro.parquet \
    --tables 'Sector,Geo' --response Value \
    --safety 'NK(1,80)' --suppress 'OPT(1)' --out protected.parquet

protects it. The output protected.parquet keeps every published value and writes the unsafe (Alpha, East) cell, plus the cells OPT suppresses to hide it, as null.

Existing batch files

Put the data (.asc), its metadata (.rda) and a batch file in one folder. Paths in a batch file are relative to the working directory.

<OPENMICRODATA> "tau_testW.asc"
<OPENMETADATA>  "tau_testW.rda"
<SPECIFYTABLE>  "Size""Region"|"Var2"||
<SAFETYRULE>    NK(2,75)|NK(0,0)
<READMICRODATA>
<SUPPRESS>      MOD(1)
<WRITETABLE>    (1,3,AS-,"safe-table.txt")
tauargus run demo.arb

This reads the microdata, builds the Size x Region table of Var2, flags cells failing the dominance rule NK(2,75) (two largest contributors may not make up more than 75 %), applies secondary suppression with the modular method, and writes the protected table as code/value pairs, with suppressed values masked. The sample inputs are in the repository's data/ folder.

Batch file commands

Command Purpose
<OPENMICRODATA> / <OPENTABLEDATA> Input data file (microdata or a ready table)
<OPENMETADATA> .rda metadata describing the file layout and variables
<SPECIFYTABLE> Explanatory variables, response, shadow and cost variables
<SAFETYRULE> Sensitivity rules, e.g. P(p,n), NK(n,k), FREQ(min,safety)
<READMICRODATA> / <READTABLE> Build or read the tables
<RECODE> Recode a variable, e.g. via a .grc file
<SUPPRESS> Protection method: GH, MOD, OPT, NET, RND (rounding), CTA
<WRITETABLE> Export: (TabNo,Type,Options,"file"); types 1 CSV, 2 pivot CSV, 3 code/value, 4 SBS, 5 intermediate, 6 JJ
<SOLVER> Accepted for compatibility; only HiGHS is used. Other names log a warning
<LOGBOOK> Write a log file

The grammar and parameters follow the legacy Tau-Argus 4.1 manual.

Command line

tauargus run      batch.arb   # execute the whole batch
tauargus explore  batch.arb   # load data + metadata, list variables
tauargus compute  batch.arb   # table computation only
tauargus suppress batch.arb   # compute, then apply suppression
tauargus round    batch.arb   # compute, then round
tauargus audit    batch.arb   # feasibility intervals of suppressed cells
tauargus save     batch.arb   # compute, then write tables
tauargus tables   batch.arb   # print a table summary
tauargus protect  micro.parquet --tables 'Region,Sector' --response Turnover
version

protect runs the whole pipeline on microdata without a batch file: it specifies the tables, applies the safety rules and the suppression method, and writes the protected table. --out names the output; a .parquet suffix writes a masked Parquet file (requires the parquet extra), any other name writes the published CSV. --tables is repeated for multiple tables; --safety and --suppress take the same rule bodies as the batch file. The microdata argument is a .parquet path or a cloud URL (s3://, gs://, https://).

tauargus protect micro.parquet --tables 'Region,Sector' --response Turnover \
    --safety 'NK(2,75)' --suppress 'OPT(1)' --out protected.parquet

Exit code is 0 on success and non-zero on an error, with a message on stderr, so it fits into scripts and pipelines.

Audit (Intervalle)

A suppressed cell has a range of values it could take while staying consistent with the published totals, its realized lower/upper bounds, the feasibility interval. Protection requires sufficient uncertainty to meet the configured protection requirements. A narrow interval can reveal the original value or constrain it too closely; interval width alone does not establish protection. The audit checks for insufficient protection.

In legacy Tau-Argus this ran in a separate intervalle.exe (standalone Delphi/Pascal executable); Tau-Argus wrote a .JJ file, launched it externally and read the intervals back. The rewrite ports that logic into the engine (TauAuditJj in the csp module), so it runs in-process over a temporary .JJ file with nothing external to install:

from pytauargus.engine import run_batch

engine = run_batch("demo.arb")
rows = engine.audit(0)   # one dict per suppressed cell:
# {"cell", "min", "max", "value", "status", "unsafe"}

The realized bounds are stored on the table (readable via get_table_cell). tauargus save demo.arb --audit --format intermediate writes the legacy INTERMEDIATE (type-5) audit file with the realized-interval columns.

Python API

DataFrame protection

from pytauargus import protect, ProtectResult, TableResult

# Multiple tables; scalar options are recycled across them.
result = protect(
    micro, [["Region", "Sector"], ["Region"]], response="Turnover",
    safety_rules="NK(2,75)", suppress="OPT(1)", workdir="multi_table_run",
)
assert isinstance(result, ProtectResult)
assert all(isinstance(table, TableResult) for table in result.tables)
Argument Meaning
tables A flat list of explanatory names for one table; a nested list for several
response Required numeric response column; a scalar or one name per table
safety_rules A rule string or per-table list; None supplies no rules
suppress Default "OPT(1)"; use "MOD(1)" for modular suppression. A single string gets each table's correct number
run=False Write .asc, .rda, .arb and return planned output paths without running the engine
workdir Retained directory, resolved from the caller's working directory; returned paths are absolute. Defaults to a new temporary directory

Explanatory and response names must be unique within each table. The magnitude result reserves freq, cost, status, lower and upper for diagnostics; rename colliding source columns before calling protect(). Invalid names and suppression sequences whose length is neither 1 nor the table count raise ValueError before any input files are written.

Metadata and table options include weight_var, weighted, holding_var, decimals, hrc, totcode, missing and codelist; see help(protect). The high-level API requires a numeric response column; frequency-only tables using the batch <freq> response use the lower-level API.

ProtectResult contains .tables in input order, .engine after the batch, .files (asc, rda, arb, tab1, …) and .workdir. With run=False, .tables is empty and .engine is None; the planned .tab files are not created by that call. Files persist so callers can inspect them and choose when to remove them.

TableResult accessor Returns
safe(unsafe_marker="x") Response values with primary U and secondary M cells masked
status() One S, U, P, M or E symbol per cell
unsafe() Original, unmasked responses for analysis
dataframe() Full diagnostic rows, including original responses
to_parquet(path) Write the published table to Parquet, suppressed cells as null (needs the parquet extra)
n_cells, columns, rows, response, path Result shape, rows and response name

Use the explanatory columns plus safe() to construct the publication table, as in the quickstart. dataframe() does not mask the response automatically. safe(None) uses missing values instead of x.

Audit is explicit and engine indices are zero-based:

rows = result.engine.audit(0)  # realized min/max and insufficient-protection flag
result.engine.write_intermediate_table(0, "audit.tab", with_audit=True)

The lower / upper columns in the default result are protection levels; realized bounds are returned by audit(). TableResult is a parsed snapshot and does not refresh when the engine is audited or modified. Raw intermediates and audit reports contain original values and belong with analyst artifacts. The list-of-dicts fallback from dataframe() is a defensive copy, so editing it does not change the result's subsequent safe() or status() values.

Existing batches and individual commands

from pytauargus.engine import run_batch

engine = run_batch("demo.arb")   # parse and execute; returns the Engine

Lower-level pieces: pytauargus.batch.parse_batch(path) returns the parsed command list, and pytauargus.engine.Engine executes commands one at a time.

Generating batch inputs

pytauargus also generates the batch inputs. The generator is a port of rtauargus, so it emits the exact formats the engine reads:

from pytauargus.arb import micro_arb

micro_arb(
    asc_filename="donnees.asc",
    explanatory_vars=[["REGION"], ["SEXE"]],
    response_var="CA",
    safety_rules=["NK(1,85)", "FREQ(3,10)"],
    suppress="OPT(.)",
    output_names=["tab1.csv", "tab2.csv"],
    output_type="1",  # CSV; the generator default is SBS/type 4
)

pytauargus.micro.micro_asc_rda writes the fixed-width .asc file and its .rda metadata. micro_arb references those files and writes a .arb batch. pytauargus.hrc.write_hrc writes .hrc hierarchy files; the separate pytauargus.rda.write_rda writer handles metadata text. protect() coordinates these steps automatically; protect(..., run=False) previews the complete generated pipeline without running it.

Example notebooks

notebooks/ contains three executed, output-saved notebooks that double as API documentation (every code cell runs against the verified public API):

Notebook Covers
01_quickstart A DataFrame through protect() to a TableResult, a masked CSV, then metadata and existing batches
02_protection_and_audit OPT/MOD DataFrame protection, explicit audit and masked export; batch OPT/MOD/RND
03_generators run=False file preview, multiple tables, individual writers and custom batch round-trip

Run them interactively, or headless (the same command CI could use). The notebooks extra includes pandas for the DataFrame examples:

# interactive
uv sync --extra notebooks
uv run --with jupyterlab jupyter lab notebooks/

# headless: execute every notebook and re-save its outputs
uv run --with nbclient --with nbformat --with ipykernel python notebooks/_run.py

uv run --with nbclient --with nbformat --with ipykernel pytest -k notebooks executes them as tests too (the test skips when nbclient is absent, so the default uv run pytest gate stays dependency-free).

Protection regression tests

uv run pytest tests/test_protection_e2e.py runs OPT and MOD on two cases. The ex1 tabular case checks the legacy 20% manual protection margin, confirms that the original cell is recoverable before secondary suppression, and checks its realised lower and upper protection after suppression. The microdata case adapts the basic dominance example from GaussSuppression's magnitude-table vignette, by Statistics Norway. Contributions are scaled by ten to give integer input; each row is treated as an independent contribution, without company IDs or hierarchies. It checks the four cells selected by the 80% dominance rule.

Both cases run the feasibility audit and read back a CSV containing only dimensions and masked publication values. Primary and secondary suppressed values must be masked, and unmasked values must be retained. The tests do not require a particular secondary suppression pattern and do not compare results against the Gauss algorithm. They cover these two examples, not singleton knowledge, linked-table disclosure or general statistical safety.

Acknowledgements

This project builds on Tau-Argus, its statistical methods and native libraries, and the R and Python tools around it, developed by the people named below.

Original Tau-Argus and native libraries

The original Tau-Argus authors and contributors include Statistics Netherlands (CBS), Peter-Paul de Wolf, Anco Hundepool, Sarah Giessing (GHMITER and audit), Juan José Salazar González (optimisation methods), and Jordi Castro (network solutions and CTA).

Component Authors and contributors
libtauargus (core) Statistics Netherlands and Peter-Paul de Wolf.
CSP (cell suppression) Matteo Fischetti, Juan José Salazar González, and M. D. Montes de Oca.
CRP (controlled rounding) Juan José Salazar González.
tauhitas (modular suppression) Statistics Netherlands and Peter-Paul de Wolf.
taurounder (rounding interface) Statistics Netherlands and Peter-Paul de Wolf.

The engine uses HiGHS as its open-source LP/MIP solver.

R and Python interfaces

rtauargus is developed at INSEE / InseeFrLab by Pierre-Yves Berrard, Julien Jamme, Nathanaël Rastout, Jeanne Pointet, Félix Beroud, André-Raymond Socard, Wistan Pomel, Clara Baudry, and contributors. Its metadata, batch and hierarchy generation logic was ported to pytauargus; its micro_rtauargus() workflow also informed the high-level protect() pipeline.

PiArgus (piargus), by Laurent Verweijen (lverweijen) and contributors, inspired the DataFrame-to-table workflow and TableResult with its safe(), status(), unsafe() and dataframe() accessors.

GaussSuppression is developed at Statistics Norway by Øyvind Langsrud, Daniel Lupp, Hege Bøvelstad and contributors. The protection regression tests adapt the dominance example from its magnitude-table vignette.

License

EUPL-1.2. Tau-Argus is (c) Statistics Netherlands.

Metadata

Release files for pytauargus 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pytauargus 0.5.2
File
pytauargus-0.5.2-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
pytauargus-0.5.2-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pytauargus-0.5.2-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
pytauargus-0.5.2-cp315-cp315-macosx_14_0_arm64.whl CPython 3.15 CPython 3.15 macOS 14.0+ ARM64 Details
pytauargus-0.5.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pytauargus-0.5.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pytauargus-0.5.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
pytauargus-0.5.2-cp314-cp314-macosx_14_0_arm64.whl CPython 3.14 CPython 3.14 macOS 14.0+ ARM64 Details
pytauargus-0.5.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pytauargus-0.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pytauargus-0.5.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details
pytauargus-0.5.2-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
pytauargus-0.5.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pytauargus-0.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pytauargus-0.5.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
pytauargus-0.5.2-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pytauargus-0.5.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pytauargus-0.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
pytauargus-0.5.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details
pytauargus-0.5.2-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pytauargus-0.5.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pytauargus-0.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
pytauargus-0.5.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details
pytauargus-0.5.2-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 104.4 MB

Release files / pytauargus-0.5.2-cp315-cp315-win_amd64.whl

Download URL pytauargus-0.5.2-cp315-cp315-win_amd64.whl
Size 8.7 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
c5e4e2afe3b2fbc5c6c070a44114443828bc27e7e5ccb2bb6239ed6d46541f05
BLAKE2b-256 checksum
How to use checksums
e0b1300b067f5d66f2f3140f9b0041427b57847ace2897403341cfffd402ab34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pytauargus-0.5.2-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.15 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cef76fbf76f39db82196c2a7b55bf78ccce77cdfcb63657629355b0165d142e4
BLAKE2b-256 checksum
How to use checksums
51f3d026c1651ab00675761633db7dd4ad85cddf9cc70318c5ec9d35238e10f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pytauargus-0.5.2-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 3.0 MB
Tags CPython 3.15 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9e455b47767a6ed13ebac643d56cdb185c524973e32d5cfbb8589c492623b669
BLAKE2b-256 checksum
How to use checksums
a8156454a7f1018ee53130dffeab27dba90596b61a99ed31f2586b3266f29955
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp315-cp315-macosx_14_0_arm64.whl

Download URL pytauargus-0.5.2-cp315-cp315-macosx_14_0_arm64.whl
Size 2.7 MB
Tags CPython 3.15 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
d8ac92b8a25d05165993b5f137144643b5ed8408c0f68305db3871b8a8e687a8
BLAKE2b-256 checksum
How to use checksums
c43d7414046a360f13da67f18ffae570646f81fa2d053ddca33931a8287dcd30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp314-cp314-win_amd64.whl

Download URL pytauargus-0.5.2-cp314-cp314-win_amd64.whl
Size 8.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
7b03f200c61f999ab07864571437dad53b978b48ee88ccbdfad79efbd7824daf
BLAKE2b-256 checksum
How to use checksums
3b5c5a1857903a350f66ddaefa447aafcf72822d0aca81faf18d93092405bf86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pytauargus-0.5.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
78f02eb7d3e3b75dfba4310da46a63a0e5e386896e1b8d2d253dc81f005887f8
BLAKE2b-256 checksum
How to use checksums
e23a60b2cf859a56e86e0c1a220632bfe40f114604ea51e61f1ffbeb9ce6f34c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pytauargus-0.5.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 3.0 MB
Tags CPython 3.14 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1429827c4c8c414c2f5954d29c6bd373111e9480ff5043b2edfc7b37686765af
BLAKE2b-256 checksum
How to use checksums
2d833131d10dc630e6b1152ec41b4fc6694373bf47859234b1f058fa4aa6624d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp314-cp314-macosx_14_0_arm64.whl

Download URL pytauargus-0.5.2-cp314-cp314-macosx_14_0_arm64.whl
Size 2.7 MB
Tags CPython 3.14 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
3803cc0dfccf75162303582411386a3856b40da67ee271af7d20686c4a1836b4
BLAKE2b-256 checksum
How to use checksums
10027ac29877951749fcb58b71b117477b5fde11e16d4099b559e36a896942c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp313-cp313-win_amd64.whl

Download URL pytauargus-0.5.2-cp313-cp313-win_amd64.whl
Size 8.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
7ca3bf153e8d08f3b5f9f9c81275045db7c1421004e5427640e43f1e5d92c55a
BLAKE2b-256 checksum
How to use checksums
f2fe4a7404aaa5e59ddb735e01b361a39f0eb38d9964ac4476dc50be87d59284
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pytauargus-0.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2a80e227153e6c19c508186c3dd46039c6a8183ab161bb11f11c0624196d905b
BLAKE2b-256 checksum
How to use checksums
c427b94a12115c59353adf8a7f58bbfcf58a92b0e9f516693917a16d13675add
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pytauargus-0.5.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 3.0 MB
Tags CPython 3.13 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
51e8c74db483d84204686e05b397bcf8ed28fb20f04940605dcf22a399d8da6e
BLAKE2b-256 checksum
How to use checksums
19e870d13136b560fb36381dd2c60e8541a3c7c7e4a3c07fa70a59acc467886a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp313-cp313-macosx_14_0_arm64.whl

Download URL pytauargus-0.5.2-cp313-cp313-macosx_14_0_arm64.whl
Size 2.7 MB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
72a27ddae15385dd03ba982bf928a7c7bfbbc00d05fe29d6530e5bd1208e42c2
BLAKE2b-256 checksum
How to use checksums
ab6567ed93893a582ce6b0b716f27da704b889208b4739ba93afd07327ced1db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp312-cp312-win_amd64.whl

Download URL pytauargus-0.5.2-cp312-cp312-win_amd64.whl
Size 8.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
e60e1c8fca2d2ecf82c4322c98f25d94a75b85c40393e415b354e9363d430e61
BLAKE2b-256 checksum
How to use checksums
e2c64b06d938ec867d5e96e58a67f268c84ded010e7d0fb68bd4dc4fa15f49e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pytauargus-0.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d16ace9dea9d39275651dc988ad728b41600849399c80753aede00ba6ae4b51b
BLAKE2b-256 checksum
How to use checksums
a52121b9f21cf887e8ee74d416c5a533222066f2ffb96bc149187ca409bb12e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pytauargus-0.5.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 3.0 MB
Tags CPython 3.12 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1895064d1f8a0a63cd2cbc75274a44a686a012126a7b3f5e89655491e03c4a8a
BLAKE2b-256 checksum
How to use checksums
3bfd7c79fd388f78d1632d0947f5aa7a40c51e81ad26639de5d32a66a668fb18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp312-cp312-macosx_14_0_arm64.whl

Download URL pytauargus-0.5.2-cp312-cp312-macosx_14_0_arm64.whl
Size 2.7 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
296cc492d580bc2510266bd2b508c63e9f2c8ad6768b4b31350143b6952cb71c
BLAKE2b-256 checksum
How to use checksums
99dac0d9536cee9a1719e3f32719f52b9cb133c64a32e7914c579dd144cf1307
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp311-cp311-win_amd64.whl

Download URL pytauargus-0.5.2-cp311-cp311-win_amd64.whl
Size 8.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
59918c18b2f5ef9a0b972f4178a10f56ee0b9d10be2af41e12a0487888ed00ae
BLAKE2b-256 checksum
How to use checksums
0590fdc6a44be7fd45e19a02bd3a55b8a686a66f0ed2e66058b09734efdfc76f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pytauargus-0.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
48adee1b43cf1daea443d208cb3f1d33db466a110e0416112c8b632e2bab2fa1
BLAKE2b-256 checksum
How to use checksums
8b238f580b7075006c597f3c9ac26bd355906b137049470fae6e867f61ec1f3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pytauargus-0.5.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 3.0 MB
Tags CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dacd05d6ae1b863436fcb894105fa4502e8b2b594bab602844a78676627f67ba
BLAKE2b-256 checksum
How to use checksums
355a58acd1bd3ea43c44f3d9ce317d104e24be36bfe57e6e615d9d7e2d7aac8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp311-cp311-macosx_14_0_arm64.whl

Download URL pytauargus-0.5.2-cp311-cp311-macosx_14_0_arm64.whl
Size 2.7 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
b58b3d4bb648b24db535735b74199a53266fd3c9df28d258dd6e370c4843723a
BLAKE2b-256 checksum
How to use checksums
b418b67349791a95c56c98e0a201e7e603de550e1f5f507471207de58a35e288
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp310-cp310-win_amd64.whl

Download URL pytauargus-0.5.2-cp310-cp310-win_amd64.whl
Size 8.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
2b585e30282360834aebda0701753898ff09ed126069b9e6313c5625c3ddd276
BLAKE2b-256 checksum
How to use checksums
3e849bfa5ca1db0c3d076a694bc92dfca0ab97b3760a77309e17a5ca1c4045ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL pytauargus-0.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7c661b8437934b14626fac2f0d391c93f07c640bfc963348d34409a46ca0aead
BLAKE2b-256 checksum
How to use checksums
0ec454afaaf44a5de8a5767c504034d21900488f18052122bbd23ad81d84610f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL pytauargus-0.5.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 3.0 MB
Tags CPython 3.10 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
bb3c15dc55c1573948f4dbcff8024d0d70b379d46df05a9a014af6d83f355c46
BLAKE2b-256 checksum
How to use checksums
d471506bc6e46c45f19bf9b7a82b0387fac94f97a2dab514dbeb578cd131eb5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / pytauargus-0.5.2-cp310-cp310-macosx_14_0_arm64.whl

Download URL pytauargus-0.5.2-cp310-cp310-macosx_14_0_arm64.whl
Size 2.7 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
cc7ae8692e5ae71ea4e9623e86e2a10f0bf4f108de550774de687c7da9eb9cb3
BLAKE2b-256 checksum
How to use checksums
cff0b9c1569f203e3ff9dedcc8bf058ccc185181d1675c48340519951ba13420
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.5

24 release files

0.5.4

24 release files

0.5.3

24 release files

This release

0.5.2 This release

24 release files

0.5.1

16 release files

0.5.0

16 release files

0.4.0

16 release files

0.3.4

16 release files

0.3.3

16 release files

0.3.2

16 release files

0.3.1

16 release files

0.3.0

16 release files

0.2.1

16 release files

0.2.0

16 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page