Skip to main content

argus-redact

English · 中文说明

PyPI crates.io Tests codecov Demo

Encrypt PII, not meaning. Locally.

The privacy layer between you and AI. Your identity stays on your device — AI gets the meaning, not you.

Rated PRvL-Gold (default profile) on the project's own PRvL reference suite — see the spec for what it measures and the full per-profile matrix.

from argus_redact import redact

redacted, key = redact("张三的电话是13812345678,身份证号110101199003074610", names=["张三"], lang="zh", salt=42)
print(redacted)
# expected: P-83811的电话是138****5678,身份证号ID-03292

print(sorted(key.items()))
# expected: [('138****5678', '13812345678'), ('ID-03292', '110101199003074610'), ('P-83811', '张三')]
pip install argus-redact

Three Promises

Promise How
🛡️ Protected — your PII never leaves your device 3-layer local detection: regex → NER → local LLM
🧠 Usable — AI can still understand and help you Pseudonym replacement preserves meaning and context
🔄 Reversible — substring-level inverse via per-message key One-line restore() for verbatim LLM echoes; paraphrase / coref handled by compose layer, best-effort

Other tools shred your PII — it's gone forever. argus-redact encrypts it with a different key every time. ETH Zurich research shows LLMs can deanonymize users for $1-4/person when pseudonyms are fixed. We generate fresh random keys per call — the cloud sees unrelated pseudonyms every time.

Default redaction output

redact() emits per-type pseudonym codes, not Chinese label literals:

>>> redact("员工张三,身份证110101199003074610,电话13812345678", mode='fast', lang='zh', salt=42)
('员工P-83811,身份证ID-03292,电话138****5678',
 {'P-83811': '张三', 'ID-03292': '110101199003074610', '138****5678': '13812345678'})
Type group Default output Strategy Reversible
person / organization P-NNNNN / O-NNNNN pseudonym
phone / email / bank_card 138****5678 (partial digits visible) mask
id_number / medical / ssn / ... ID-NNNNN / MED-NNNNN / SSN-NNNNN remove → per-type code
self_reference / 我妈 (kept verbatim) keep

To unify all reversible types under one prefix (hides PII type from the LLM):

text = "员工张三,身份证110101199003074610,电话13812345678"
redact(
    text,
    lang="zh",
    salt=42,
    unified_prefix="R",
    config={
        "phone": {"strategy": "remove"},   # mask types must opt in to participate
        "email": {"strategy": "remove"},
    },
)
# → "员工R-83811,身份证R-03292,电话R-68060"

<TYPE_N> 1-based sequential token style is on the future-release candidate list (no committed timeline). See docs/configuration.md for the current strategy reference.

Privacy Levels

argus-redact evaluates your text from your perspective, not a regulator's:

🟢 Safe      — nothing about you is exposed
🟡 Caution   — contains personal info, not dangerous alone
🟠 Danger    — can narrow down to you specifically
🔴 Exposed   — directly identifies you
from argus_redact import redact

report = redact("身份证110101199003074610,手机13812345678,确诊糖尿病", report=True)
report.risk.level    # "critical"
report.risk.score    # 1.0
report.risk.reasons  # ("id_number (critical)", "phone (high)", "medical (critical)", ...)

This is what compliance frameworks don't tell you: how dangerous is it to share this specific text with AI?

Three Layers, Collaborative

Layer 1  Rust+Regex   phone, ID, bank card, email, self-reference, ...    <0.2ms
             │
         produce_hints() → text_intent, pii_density, self_reference_tier
             │
Layer 2  NER ← hints   locations, organizations, standalone names         10-100ms
Layer 3  Local LLM      implicit PII — symptoms→disease, behavior→belief  ~20s

Layers are not independent — L1 passes hints to L2, enabling collaborative detection. Instruction text ("帮我看看这段代码") skips NER entirely. High PII density lowers NER thresholds. Cross-layer agreement boosts confidence.

Unicode-hardened: NFKC normalization, zero-width stripping, Cyrillic/Greek confusable defense, Chinese digit detection (一三八零零一三八零零零 → detected as phone).

Core engine (regex matching, entity merging, restore, pseudonym generation) is written in Rust via PyO3 for maximum performance. Python handles orchestration, NER models, and LLM integration.

78 PII types across 3 layers — from phone numbers to medical diagnoses, religious beliefs, political opinions. Default is mode="fast" (Layer 1 only, zero deps, sub-ms). Opt in: mode="ner" (+ NER models) → mode="auto" (all three layers).

Telemetry: ARGUS_PERF_LOG=perf.jsonl for per-call timing breakdown. Details →

Deployment fit — modes have very different latency budgets; pick by where you sit in the request path:

Mode Latency (per doc) Suitable as
fast <1ms Inline gateway plugin / hot LLM proxy path
ner 10–100ms Sidecar / pre-flight middleware
auto ~20s (LLM-bound) Async batch / offline review queue

Don't put auto in front of an interactive LLM call. Use fast inline + auto in a parallel audit lane.

Limitations & When NOT to Rely on This

argus-redact is a PII data minimization aid, not an anonymization or compliance certification:

  • L1 fast (regex) matches well-defined formats. Novel or obfuscated variants, cross-field inference attacks pass through.

  • L2 NER is statistical inference; out-of-distribution text (informal, typo-heavy, minority names) has higher miss rate. See benchmark results for measured numbers.

  • No guarantee against adversarial inputs — attackers can craft text that evades detection.

  • Removing explicit PII ≠ anonymity. LLM agents can re-identify individuals by combining residual, individually-non-identifying cues with public data — even on redacted text, even during benign tasks (Ko et al. 2026). Reversible substitution protects explicit identifiers and preserves LLM utility; it does not defend against inference-based re-identification, which a per-document redactor cannot fully prevent — the residual comes from combinations of quasi-identifiers, not single fields (why coarsening one field doesn't fix it; and why detecting more English quasi-identifiers didn't reduce re-id either).

  • Not a GDPR / PIPL anonymization framework — anonymization is a compliance process decision, not a single-library output.

  • Restore is a substitution pass, not an authorization check. An unguarded restore (guard=False) substitutes originals into any text carrying the right pseudonyms — including a reply an attacker steered the model into producing. As of v0.8.0 the default is guard=True, which fails closed without a valid anchor; use the guarded round-trip to bind a restore to the exchange that produced the key.

When to use argus-redact: reversible pseudonymization for LLM pipelines where you need redact() → LLM → guarded_restore() with zero PII crossing the network boundary.

When to consider alternatives: if you need one-way English PII masking with a single model call, OpenAI Privacy Filter and similar model-based maskers may fit better. argus-redact's strongest suit is reversible pseudonymization with per-message keys; Chinese has the deepest support (HanLP + native validators), and six of the other seven (en, ja, ko, de, uk, in) add regex + spaCy NER coverage — br is regex-only, with no NER adapter. Pick by the workload, not by exclusivity.

Combine argus-redact with audit logging, rate limiting, and upstream policy — no single layer is sufficient.

8 Languages

zh en ja ko de uk in br
Phone
National ID MOD11-2 + 15位旧版 SSN My Number RRN Tax ID NINO Aadhaar CPF/CNPJ
Bank/Card Luhn Luhn IBAN PAN
Person names HanLP spaCy spaCy spaCy spaCy spaCy spaCy
Email

Mix freely: lang=["zh", "en", "de"]. Pass known names: names=["王一", "张三"].

Benchmark scope: only zh and en have committed recall benchmarks. The other six packs (de, uk, br, in, ja, ko) ship L1 patterns — all but br also ship a NER adapter — but have no measured recall — treat them as best-effort and reach them with an explicit lang="…". They are not auto-selected under lang="auto", whose script-only detection resolves all Latin-script text to en. See language-packs.md.

Performance

Rust core (PyO3), mode="fast"redact() p50 over 500 iterations, Apple M1 Max, Python 3.11. Reproduce with python tests/benchmark/perf_profile.py:

Document en zh
Short (141 B en / 175 B zh) 0.22 ms · ~4,500 docs/sec 0.34 ms · ~2,900 docs/sec
~1 KB (846 B / 1.4 KB) 0.97 ms · ~1,030 docs/sec 2.03 ms · ~490 docs/sec
Long (8.5 KB / 14 KB) 9.4 ms · ~106 docs/sec 20.3 ms · ~49 docs/sec

Throughput depends heavily on document size and language, so the workload sizes are stated rather than a single headline number. Committed run: perf_profile_0.7.16.json.

Pre-built wheels for all major platforms — no Rust toolchain needed to install:

✓ Linux x86_64 (glibc + musl/Alpine)
✓ Linux aarch64 (Raspberry Pi + Alpine ARM)
✓ macOS (Apple Silicon + Intel)
✓ Windows x64
× Python 3.10 / 3.11 / 3.12 / 3.13

Detection accuracy (measured at v0.7.16 — Layer-1 detection has changed since; see benchmark-report for currency)

Mode Precision Recall F1
fast (regex) 81.6% 31.9% 45.8%
ner (+ spaCy) 74.8% 42.9% 54.5%
auto (+ Ollama 32B) skipped this run

ai4privacy en, 500 samples, v0.7.16 run (tests/benchmark/results/ai4privacy_0.7.16.json). auto mode skipped on the maintainer's hardware — see benchmark-report.md for full matrix + reproduction commands.

For context: fast mode is high-precision / low-recall by design — it only emits formats it can validate (Luhn, MOD11-2, etc.). Recall comes from ner and auto at the cost of latency. Pick the mode for your deployment shape (see Deployment fit above). Full benchmarks → | Performance →

North Star

Dimension Current (v0.8.16) Next milestone
Protected 78 PII types, L1-L3. In the PRvL reference suite (24 cases, 42 PII instances per model; v0.7.16 run), the default profile leaked nothing across all four models — GPT-5, Claude-Opus-4.5, Gemini-2.5-Pro, GLM-4.6. The reversible profiles are not clean: pseudonym leaked 1 of 42 on both Claude-Opus-4.5 and GLM-4.6, and realistic leaked 1 of 42 on Claude-Opus-4.5. A reference suite is not a guarantee against adversarial input — see prvl-standard.md for the full matrix. Cross-layer hints in 8 langs (zh/en/ja/ko/de/uk/in/br). SHAKE-256 derivation + full-salt entropy + faker identity-pass guard. State export omits salt by default; HTTP server refuses no-auth start; CLI writes O_NOFOLLOW + key files mode 0600; MCP token store TTL+LRU (v0.6.2). Windows CI + property-tested invariants + mutation-tested core (v0.6.3) + perf budget CI gate (v0.6.4) + session-isolation in integrations (v0.6.6) + README pinned-to-doctest + version-sync CI guard (v0.6.6) + compose namespace + pure-layer purity guard (v0.6.7) + seed→salt API rename + PIITypeDef SSOT + Presidio bridge through public redact + 3 new types (v0.6.8) + compose helpers shipped (v0.6.9) + Layer 1 freeze guards + KDF replay vectors + dead code subtract + manylinux digest pin (v0.6.10) + Adapter authoring surface (compose.register_pii_type / PIITypeDef / PatternMatch) + KDF replay edge cases (full-FF salt fix) + Layer 2 signature snapshot (v0.6.11) + HK/Macao travel permits + housing-fund zh L1 coverage (v0.6.12). v0.7.x — 100% Rust core SSOT: argus-redact-core crate + crates.io publish, with patterns/validators/normalization/replace+restore/fakers/person-scoring + the full L1 redact/restore engine ported to Rust (v0.7.0–v0.7.8) + fail-closed hardening & detection-correctness (v0.7.9–v0.7.10) + in-browser wasm build (v0.7.11). v0.7.12 — quasi-identifier detection breadth: evidence-gated zh bare-region, occupation, medical condition/allergy, and hobby (new type) detection via a shared evidence_detector framework, plus a re-identification eval (PRvL+ X-axis); the unreleased generalize strategy removed. v0.7.18–v0.7.20 — guarded restore: restore() gained a deterministic guard (per-call provenance nonce + scope-binding), closing the window where an injected pseudonym in LLM output would silently restore (v0.7.18); a Luhn-valid card PAN that passed through mode="fast" verbatim in six of the eight language packs (ja/ko/de/uk/in/br — those with no native card pattern) is now detected regardless of surrounding script (v0.7.19); the whole flow is one public guarded_restore() that all five integrations wrap (v0.7.20). v0.8.0 (breaking)guard=True is now the default (a bare restore fails closed without an anchor); residual_personal_data reports honestly for mask configs; a unified_prefix pseudonym-collision that could misattribute a restore is fixed. v0.8.4 — the in-browser wasm build now runs the restore guard client-side (restore_guarded, no server round-trip); the person cross-layer merge keeps the higher-layer span and re-inserts the trimmed remainder instead of dropping it, raising person recall 88.0%→95.6% on the pii_bench_zh reference suite with no regression on other types; bulk restore_json/restore_csv/StreamingRestorer now compile the substitution pattern once per call instead of per item (~555x on a measured fixture, not a universal speedup claim). v0.8.5 — doc-drift corrections, dead-code removal, and CI gates that actually bind. v0.8.6 (security patch) — a filter running after the entity merge could return PII the merge had already absorbed, in plaintext (three live leaks); closed across four detection pipelines with one shared post-merge coverage invariant. v0.8.7RedactReport.coverage (CoverageAdvisory) declares what the (lang, mode) configuration could not have detected, present even when nothing was found. v0.8.8 — a wire-face contract records, per report face, each RedactReport field as emitted-under-a-key or withheld-with-a-reason, and two security events stopped carrying input-derived text. v0.8.9 — obfuscated-number recall (circled / superscript / CJK-homograph / invisible-character digits now detected); a scoped restore no longer splices one identity's text into another's placeholder; a partial NER load is reported (layer_2_status="partial") rather than assumed healthy; the restore-safety scan fails loud on oversized input; the HTTP server stays responsive under load; malformed requests return 400 not 500; and streaming restore is byte-identical to batch restore at any chunk boundary. Adversarial testing
Usable PRvL U=100%. Pseudonym codes + realistic mode (zh + en + RFC shared) + per-call strategy overrides + keep strategy (whitelisted) + resumable streaming sessions + incremental streaming default + cross-language alias restore (zh ↔ en) Task-aware guidance
Reversible PRvL R by task: reference 100%, extract 50%, creative 0% (by design). Cross-language LLM rewrites (张三Zhang San) auto-restored via result.aliases + restore(text, key, aliases=...) Task-aware guidance
Compliance Covers PIPL Art.28 sensitive PII categories; ships risk assessment + compliance profiles PIPL/GDPR/HIPAA (byproduct)
Coverage 8 langs, 4 LLMs benchmarked, 6 frameworks Browser extension

Risk Assessment

# Assess risk before sending to AI
report = redact(text, report=True)
report.risk.level         # "critical"
report.risk.pipl_articles # ("PIPL Art.13", "PIPL Art.28", "PIPL Art.51", ...)
report.entities           # detected PII details
report.stats              # per-layer timing
# CLI
argus-redact assess <<< "身份证110101199003074610"

Compliance profiles: redact(text, profile="pipl") / "gdpr" / "hipaa". These are strategy-override presets, not coverage guarantees — they change how detected types are redacted, not which types are detected, and don't by themselves make a pipeline compliant. Details → Type filtering: redact(text, types=["phone", "id_number"]) / types_exclude=["address"].

Realistic Redaction (pseudonym-llm profile)

Default redaction emits pseudonym codes and masks (P-83811, 138****5678) — clear and reversible for audit, but the realistic surface is gone, which can break downstream LLM reasoning. The pseudonym-llm profile replaces PII with realistic-looking but reserved-range fake values (e.g., 19999... mobile, 999... ID, 999999... bank card). LLMs reason correctly; humans can still tell it's synthetic if they know the convention.

Each call returns three text forms sharing one key dict:

Form Example Use for
audit_text 请拨打 [TEL-79329] 联系 P-164 Compliance archive — placeholder labels are auditable
downstream_text 请拨打 19999123456 联系张明 LLM input — semantic structure preserved
display_text 请拨打 19999123456ⓕ 联系张明ⓕ UI rendering — visible marker prevents confusion

The realistic strategy needs an explicit salt (salt=42 below keeps the output reproducible; use a real secret in production).

from argus_redact import redact_pseudonym_llm, restore

# Chinese
zh = redact_pseudonym_llm("请拨打 13912345678 联系王建国", lang="zh", salt=42)
zh.downstream_text  # "请拨打 19999946823 联系毕马温"    → LLM
zh.display_text     # "请拨打 19999946823ⓕ 联系毕马温ⓕ" → UI

# English
en = redact_pseudonym_llm("Call (415) 555-1234, SSN 123-45-6789", lang="en", salt=42)
en.downstream_text  # "Call (555) 555-0123, SSN 999-47-9373" → LLM
en.audit_text       # "Call PHON-68060, SSN SSN-54474"       → audit

# Mixed (auto-detect)
mx = redact_pseudonym_llm("客户Wang at user@company.com", lang="auto", salt=42)

# Round-trip works on any of the three forms, in any language.
# guard=False here: this restores the library's own output, not an LLM
# reply — see "Restoring LLM output safely" for the guarded path a real
# LLM round-trip needs.
print(restore(zh.downstream_text, zh.key, guard=False))
# expected: 请拨打 13912345678 联系王建国
print(restore(en.downstream_text, en.key, guard=False))
# expected: Call (415) 555-1234, SSN 123-45-6789
print(restore(mx.downstream_text, mx.key, guard=False))
# expected: 客户Wang at user@company.com
# CLI emits all three forms as JSON
echo "Call (415) 555-1234" | \
  argus-redact redact -k key.json --profile pseudonym-llm -l en | \
  jq .downstream_text
# "Call (555) 555-0142"

Reserved ranges:

  • zh: 199-99-XXXXXX mobile (sub-segment unassigned by 工信部), 099- landline (no such area code), 999XXX ID address code (GB/T 2260 unassigned), 999999 bank BIN (银联 unassigned), 滨海市 fictional city.
  • en: (555) 555-01XX phone (FCC permanent fictional reservation), 999-XX-XXXX SSN (SSA never assigns 9XX), 999999 credit card BIN, John Doe / Jane Roe person, 1313 Mockingbird Lane address.
  • shared (RFC): example.com / .org / .net email (RFC 2606), 192.0.2.0/24 / 198.51.100.0/24 / 203.0.113.0/24 IPv4 (RFC 5737), 2001:db8::/32 IPv6 (RFC 3849), 00:00:5E:00:53:xx MAC (RFC 7042).

Argus Gateway integration: response headers should include X-Argus-Redact-Profile: pseudonym-llm; UI clients render display_text, LLM clients consume downstream_text. Storage of downstream_text as business truth is unsafe — it's synthetic by design.

Real users named like canonical fakes (e.g., a real customer named 张三 or John Doe): pass reserved_names={"person_zh": ()} (or person_en) to disable that locale's canonical-name pollution detection so the real user's name flows through normal redaction.

Streaming

For chat sessions or long-form input where text arrives in chunks, use StreamingRedactor (input side) and StreamingRestorer (output side). Both require complete logical units per chunk (sentence / paragraph / turn) — entities split across chunk boundaries are not handled.

from argus_redact.streaming import StreamingRedactor, StreamingRestorer

# Input side: redact each chunk; same original value across chunks → same fake
r = StreamingRedactor(salt=b"my-secret-salt", lang="zh")
for chunk in input_stream:                  # one sentence/paragraph/turn each
    res = r.feed(chunk)
    send_to_llm(res.downstream_text)

# Output side: restore LLM output stream at sentence boundaries
restorer = StreamingRestorer(r.aggregate_key())
for chunk in llm_output_stream:
    restored = restorer.feed(chunk)
    if restored:
        print(restored, end="")
print(restorer.flush(), end="")

True byte-level streaming (entities crossing chunk boundaries) needs full incremental detection and is roadmapped for a later release.

⚠️ Realistic-mode output must not be re-redacted (it would corrupt the key dict). redact_pseudonym_llm will raise PseudonymPollutionError if called on already-faked input — call restore() first.

Full API → · Design constraints →

Integrations

Install
LangChain / LlamaIndex / FastAPI core
Presidio bridge pip install argus-redact[presidio]
MCP Server (Claude Desktop / Cursor) pip install argus-redact[mcp]
HTTP API Server pip install argus-redact[serve]
Structured data (JSON / CSV) core
Streaming restore core
Docker slim 157MB / full 5GB

Security

PII never leaves your device. Per-message keys prevent cross-request profiling. Full security model →

Guarded round-trip. guarded_restore() binds a restore to the exchange that produced the key. Two deterministic checks: the reply must echo a per-call nonce (provenance), and only the pseudonyms this call emitted are substituted (scope). Both fail closed — pseudonyms are returned unchanged, with a SecurityWarning, rather than PII being substituted into an attacker-shaped reply. A supplementary injection heuristic is advisory by default.

from argus_redact import redact, guarded_restore, make_anchor
from argus_redact.compose import prompt_anchor

redacted, key = redact("张三的电话是13812345678", names=["张三"], lang="zh")
anchor = make_anchor(key)          # per-call nonce + the pseudonym scope of this call

system = prompt_anchor(key, lang="zh", anchor=anchor)   # asks the model to echo the nonce
reply = call_llm(redacted, system=system)

restored = guarded_restore(reply, key, redacted=redacted, anchor=anchor)
# strict=True raises RestoreGuardError instead of returning un-restored text

As of v0.8.0, restore(text, key) defaults to guard=True and fails closed without a valid anchor; pass guard=False for the legacy unguarded substitution, or use the guarded round-trip with an anchor. Guarded restore →

Provides the local de-identification layer that PIPL cross-border transfer, GDPR Art.25 data minimization, and HIPAA de-identification workflows call for — a technical control, not a certification. Details →

Documentation

Getting Started Install, first redact/restore, key management
API Reference All parameters, return types, streaming, structured data
CLI Reference Commands, flags, serve, MCP server
Configuration Per-type strategies, enterprise mask rules, false positive reduction
Sensitive Info Taxonomy, privacy levels, roadmap
PII Type Catalog All PII types — strategy, sensitivity, PIPL/GDPR/HIPAA mapping (auto-generated)
Architecture Three-layer engine, cross-layer hints, pure/impure separation
Language Packs Adding new languages
Security Model Threat model, compliance, per-message keys
PRvL Standard Open evaluation standard: Privacy × Reversibility × Language
Layer 3 Benchmark LLM model comparison, prompt design, regulatory analysis
Benchmarks Evaluation against 9 public PII datasets
Performance Latency, throughput, benchmark results

Contributing

CONTRIBUTING.md — language packs, test scenarios, framework integrations welcome.

Contributors

Who Contribution
@aiedwardyi Brazilian Portuguese language pack (CPF, CNPJ, phone)

License

Apache 2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argus_redact-0.8.16.tar.gz (811.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

argus_redact-0.8.16-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

argus_redact-0.8.16-cp313-cp313-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

argus_redact-0.8.16-cp313-cp313-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

argus_redact-0.8.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

argus_redact-0.8.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

argus_redact-0.8.16-cp313-cp313-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

argus_redact-0.8.16-cp313-cp313-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

argus_redact-0.8.16-cp312-cp312-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.12Windows x86-64

argus_redact-0.8.16-cp312-cp312-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

argus_redact-0.8.16-cp312-cp312-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

argus_redact-0.8.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

argus_redact-0.8.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

argus_redact-0.8.16-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

argus_redact-0.8.16-cp312-cp312-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

argus_redact-0.8.16-cp311-cp311-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.11Windows x86-64

argus_redact-0.8.16-cp311-cp311-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

argus_redact-0.8.16-cp311-cp311-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

argus_redact-0.8.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

argus_redact-0.8.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

argus_redact-0.8.16-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

argus_redact-0.8.16-cp311-cp311-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

argus_redact-0.8.16-cp310-cp310-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.10Windows x86-64

argus_redact-0.8.16-cp310-cp310-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

argus_redact-0.8.16-cp310-cp310-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

argus_redact-0.8.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

argus_redact-0.8.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

argus_redact-0.8.16-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.16-cp310-cp310-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file argus_redact-0.8.16.tar.gz.

File metadata

  • Download URL: argus_redact-0.8.16.tar.gz
  • Upload date:
  • Size: 811.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for argus_redact-0.8.16.tar.gz
Algorithm Hash digest
SHA256 ff354773198c7e84a00c36794ec28cea135e467d801d4ea52a6e4945a5c3bf61
MD5 1d94f5de371e6e47182a08d3be212cf0
BLAKE2b-256 04eee179cee02f633466bffbf44f8972c8e3580aec63fe052414232503f86a54

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2b3f7cf001deab8f382ccb9124d0d7091ca6bf31135153b29b60aba8545e9b87
MD5 e6215c35002662b9e2c642f226971ba8
BLAKE2b-256 a9b66d2fa0e34fca33a9c25ea01f89b115cbd7b24e4dcb5b279695cee6ed38ca

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35189a12b567ce02471a865d1c66bc4b02178a399821429209669500e0fd983a
MD5 d1ac5c8b4f4d96fc8657de0d4909b34b
BLAKE2b-256 1d136cdcf29f6303271f77e2e4186b58a6c27792269bc38045c639443404c497

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a310b0676ccad9bf922e99be97c4c5a9fb440be6f72c98136330b95ee2b9cc17
MD5 8648a13121f9043eda33bb2a4c7707b9
BLAKE2b-256 e474d5216f26a3b581a40fe502561768bf09b82311e953da8f121e40790ede2e

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a0d5f7b676beaabb8fe9cf683ff33442fa401c58b4d83bde52002ab09140440
MD5 9c8b668eba4eb8ac5599d050dacc358c
BLAKE2b-256 a02ef841a2ff78b4be6d598cc1741e2878acb7544fdf4a96ba7712d5bd3332ae

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 45156f7a66add53f7bac8d23aa744059c4204cb5852c687292125ec286cb16ba
MD5 790fe337fa7c910ddc41bf08c758635b
BLAKE2b-256 f8b0fea5da737c18b5863ede0c95ed3f275cfbc7bb03b79e307c186bd7e9a187

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65fd86a315871b15cdd69895c38278bd587d0b8b9facd2da68dd646a8e018772
MD5 8628aa445dfee366fbfa0600fcf9157a
BLAKE2b-256 808626b80eae12f1ca0a998df61f7d1cb14146d24f3279ac84df099d90e2beed

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9d05f31c5d179ac4b9aa0728e878c853ec1aea5f102f5bbd16f9ffb17a5ed77c
MD5 e3e1b972c5f9d22de53d332ad829fa04
BLAKE2b-256 f594fb27d2690a66f318feecf35486776fb63398f841f57f8b46a4f3a5abe058

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4d07dcffa10767110f0c22885ebad14dd49563f772775e9bb216bcf5166a0129
MD5 c638aac0df2b699f220431205c48a9c0
BLAKE2b-256 e1705b1d6e0b63039db272c347201d00ca1b7c0dbe7001005f2d17379f834b9f

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 27f7494d64132360bc18e46f40836f3e32a623e4a6b4606ae9f19a66c6b887f6
MD5 73b57d4fc44ef7f99d4d2539d30b705f
BLAKE2b-256 ec1d1851f2269919fe95d308e864b017513affca594cc2bb29d9e4bb42d92d67

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6a4d4035de8918f0c478c834c898632ca94dbf57fc1cc2baf2db9b75ae947993
MD5 e9453a8c538bf95f797dbc368f11e342
BLAKE2b-256 d6bcca1cfe68bbf5117058fbbe0f4d4f19004f1ee283acf3bb4f2abc9124614c

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 890dbb098dda37258700af130cd43695a0b36443847af2db745251046d0e0104
MD5 fef84720eaea2c1b5cef3b76bfec6ba3
BLAKE2b-256 501cfeec22ade23742cb573e61fa4e442a3dde48592d90f6f9e0da3191c11c46

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eb5745b33a154dcd064bdf7bf6a0795b286ff1ffd072f61f6b33a26f663d62e7
MD5 442c73e81446f81ea14f3c29f5eb7f02
BLAKE2b-256 ed444c1d350a92a0e1c20a701410725df649041b8ec6d054a3af0270ec272e13

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa1864650c17db8e6bd2dea3586b0a5b5b96e7c51ede8a2e1804f092589f5616
MD5 1380fa3f219651269b4d6c6e42f4677f
BLAKE2b-256 74ff810a1a5984fbf565577d1ae7fe6b15bc0a2cc7320deeb7fa47b1a5b62861

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4c2c9abbe37e6552b318cc0c785892a6c805fd73d77be7668592806e042585da
MD5 a0b3fd50ab555843885a8ac18838ddc4
BLAKE2b-256 6aace4b19918e69a2e09a77ddcd4d565f4cda58cfda5f9d16507b8116e622a74

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 babc02ba21c1a24673e4d59a53ba47b26901b804103491dc14daf377fc6c9976
MD5 bd283cbf778c97950e02a1c559527e4b
BLAKE2b-256 747e34906032cd9b988299afa84d55980fabc6edbf82f8a0925dbc357c8ffdaa

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 07140fe9202beb3f23d4e935d801b6acad0e19a58991becf9443368290c4b886
MD5 41bbf8577086219afdfbf2fefeb326d2
BLAKE2b-256 318245beb25a511591e6c46314e9a272b3ef72e6f550eaf99e9294805671d4be

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6a5d35ebd29d7837c2576408b7c6db3a735aebd68321cb3ebec922a80896246c
MD5 e57dc0609b03530c5b3568591ffa92b6
BLAKE2b-256 0d71028fec606676acab7757dbecc9e471cfb26333a264edca6b7bf5ea0f91cf

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1b44eb5471bb4281b4206a9347015d9fadba401a4dc9739b450b43038919d917
MD5 8165a9d5e9908c0aaebfb0da68fcb388
BLAKE2b-256 0903b15bebf0eb549d661fb8ee418af2707437a038b62e7c88fdfe631d51a788

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 166fba030d6dfda80f7c5b635a7a1061b1e6c90e4dde276d780341216917e225
MD5 e9f536d639800ec0adb6dd0a55eaba41
BLAKE2b-256 8a9303a6072932f378b088993a359cbd9d433312c87835d01f9893b64ea9f19d

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f204fbba07fe0b1bfa3ae0921671003588f8fba56f97c85a01aa444ea27f721
MD5 c28bcc0f1fc110a2752677615dd74b48
BLAKE2b-256 a3280fa1a65eb9103999420df7f2486e7e65ee921c5f62436d2f0cd536142f80

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e9e77fd24c523398f54dc3fccca9a152c904af544373455f096d736f65bb65db
MD5 df828272a12e4c80fb772ac1bcdfcb3c
BLAKE2b-256 7db92bf2b8151a862375645bbe1c90b85a4cf6d4abb1e2748e3491bf287ee6f2

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cedff800c4dc3086f5d8ea04501f96f00ec78e8b2da8d0f52b8c52390171d7d8
MD5 feff6301f2f0630da6ceb94e6c36ca99
BLAKE2b-256 54b8ce8e07a8d2f51836f37513a6e1d231992c93968a355fbfdcda719d3655f7

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c90848e80f4aa6d4d3e2d58da780dd865e06812c8f9e06c629759c1f0425e72c
MD5 92f0eae7fb74d196e2228cf1c82a180c
BLAKE2b-256 4c1e3fe17f70e259ddee2e3f684c0f17f433456b00aa3028be3c121dbda4d7dc

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 77d4386e781b1bd8fefab551dff1bda645f41e6ed93ccfc1fc617e2de8f707b7
MD5 66501190eca84b01b8340c398d33c96a
BLAKE2b-256 324b9f84c48aa0fcba9e7af2f7756c8fbda185c24a413ffec5aaa48a692666a8

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 852be87e2aa229cda41097c4207a653a523772f31b1b27d1ba5b749eb4055d66
MD5 32f05466f3a4e0702450e8a7451142ca
BLAKE2b-256 29a6cc26496a428b1909ccadc9fd02c67e79e05846c9ecdb81934f9d4e419dae

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b492ed7f29cb6977211ed70414b898b29f983d48081b795877109d4bd4e2a6b0
MD5 4e54bd3f7a572d82dc2dd1b981801d5d
BLAKE2b-256 243923c2740a0d9af0b5e7342206dab9e4556a9947b2cbde401387a0f024198c

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 840a66ebf4506cb6564aa39ccdf2aac1ca76021fcef3603b887d9f879ca519b3
MD5 edbe27d0da476007a68b07332c0db7f7
BLAKE2b-256 815a202026aeb04a2c956426e232f36f7cb613d09b18b89797299879c8645c0d

See more details on using hashes here.

File details

Details for the file argus_redact-0.8.16-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for argus_redact-0.8.16-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2fbffa95e8d54c333c178839c7a5b660f36037327aaa7e9603c835ee55e3059a
MD5 6c4500478e1897730308e2a80864b9d5
BLAKE2b-256 544fb6270003bed141899bd46356d7117d3ea8f4bbb9a5c4bd9c0a6409c63f7e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.16 This release

29 files

0.8.15

29 files

0.8.14

29 files

0.8.13

29 files

0.8.12

29 files

0.8.11

29 files

0.8.10

29 files

0.8.9

29 files

0.8.8

29 files

0.8.7

29 files

0.8.6

29 files

0.8.5

29 files

0.8.4

29 files

0.8.3

29 files

0.8.2

29 files

0.8.1

29 files

0.8.0

29 files

0.7.20

29 files

0.7.19

29 files

0.7.18

29 files

0.7.17

29 files

0.7.16

29 files

0.7.15

29 files

0.7.14

29 files

0.7.13

29 files

0.7.12

29 files

0.7.11

29 files

0.7.10

29 files

0.7.9

29 files

0.7.8

29 files

0.7.7

29 files

0.7.6

29 files

0.7.5

29 files

0.7.3

29 files

0.7.2

29 files

0.7.1

29 files

0.7.0

29 files

0.6.12

29 files

0.6.11

29 files

0.6.10

29 files

0.6.9

29 files

0.6.8

29 files

0.6.7

29 files

0.6.6

29 files

0.6.5

29 files

0.6.4

29 files

0.6.3

29 files

0.6.2

29 files

0.6.1

29 files

0.6.0

29 files

0.5.10

29 files

0.5.9

29 files

0.5.8

29 files

0.5.7

29 files

0.5.6

29 files

0.5.5

29 files

0.5.4

29 files

0.5.3

29 files

0.5.2

29 files

0.5.1

29 files

0.5.0

29 files

0.4.16

29 files

0.4.15

29 files

0.4.14

29 files

0.4.13

29 files

0.4.12

29 files

0.4.11

29 files

0.4.10

29 files

0.4.9

29 files

0.4.8

29 files

0.4.7

29 files

0.4.6

29 files

0.4.5

29 files

0.4.4

29 files

0.4.3

29 files

0.4.2

29 files

0.4.1

29 files

0.4.0

29 files

0.3.10

29 files

0.3.9

29 files

0.3.8

17 files

0.3.7

5 files

0.3.6

5 files

0.3.3

4 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 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