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')
('员工P-83811,身份证ID-89732,电话138****5678',
 {'P-83811': '张三', 'ID-89732': '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):

redact(
    text,
    unified_prefix="R",
    config={
        "phone": {"strategy": "remove"},   # mask types must opt in to participate
        "email": {"strategy": "remove"},
    },
)
# → "员工R-83811,身份证R-89732,电话R-12345"

<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

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.12) Next milestone
Protected 78 PII types, L1-L3. In the PRvL reference suite (24 cases, 42 PII instances per model), 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 placeholder labels ([TEL-79329], P-164) — clear for audit, but breaks downstream LLM reasoning because the message structure is gone. 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.12.tar.gz (774.9 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.12-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

argus_redact-0.8.12-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.12-cp313-cp313-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

argus_redact-0.8.12-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.12-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.12-cp313-cp313-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

argus_redact-0.8.12-cp313-cp313-macosx_10_12_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

argus_redact-0.8.12-cp312-cp312-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.12Windows x86-64

argus_redact-0.8.12-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.12-cp312-cp312-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

argus_redact-0.8.12-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.12-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.12-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

argus_redact-0.8.12-cp312-cp312-macosx_10_12_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

argus_redact-0.8.12-cp311-cp311-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.11Windows x86-64

argus_redact-0.8.12-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.12-cp311-cp311-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

argus_redact-0.8.12-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.12-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.12-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

argus_redact-0.8.12-cp311-cp311-macosx_10_12_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

argus_redact-0.8.12-cp310-cp310-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.10Windows x86-64

argus_redact-0.8.12-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.12-cp310-cp310-musllinux_1_2_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

argus_redact-0.8.12-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.12-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.12-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.12-cp310-cp310-macosx_10_12_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for argus_redact-0.8.12.tar.gz
Algorithm Hash digest
SHA256 1f75989d0ba5faa775c3056e1dcba4d16f5b004530301634e3126d6f14a53a35
MD5 10bb0f1d98ecf331ed9876b99ab269a6
BLAKE2b-256 901788e61cb95cc2d49b4da3de2223a205c21bf3d78d1be6bc7f5469e034108c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8d5e8ab4b956363df40291cd369e07e018e34028d42465d61565e6bf2381b1f8
MD5 c2c061ad7ce00c25189d0bf37f75936b
BLAKE2b-256 6d7703d0c7cb1598e22e794f869677f62be490a6ae4312740441dedf8881eabc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1dec1323ee91e15c1eb063d8f8a4def8b4f845a095d638faa4aca587e7052991
MD5 f3872e5223941b98b687dad75b991d13
BLAKE2b-256 79e74830d5a305d327375447f83cb1fbae82e98a0487a0472dd28c5dca0fcb82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 47baadb1fde9938330ddf4706507582913132fc218ee5da45590015c0e19b14f
MD5 85a53e7adff31f639ee9033ee2e486a5
BLAKE2b-256 979e3404f6c3ea820256fb6d787790c131c319721f9000203d11350baf7c95a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36f5245784d7eec382ed04addd6c2f7f593d280e9d3a31b700826b991d0d9232
MD5 96a7c6e1cc5e6072c66ed544bfe74b58
BLAKE2b-256 6ab3e768fa20cf2b7a47501660770dc24eb1b12c2c29272aebc679319eff9d79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ab344d24760a7f98819ebea9848339d5e3a22d4db7709e8d3748da13c16b8b9d
MD5 c17e61e479fe936abd400919037ca76a
BLAKE2b-256 8c81c85a23a9bfbfc6aa98598e1f99533de767827658fb526f59e8152e718782

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f69b5e32cabe30ddc7677fafede58822638be5ba54b1c09ed538d3a54ae87dd
MD5 4ce3626be6b10b8d3b67a62163b8aea7
BLAKE2b-256 f977d0a71d688f559cc31eea8741879e58c005e29fb07a211d44e7e0ad19d1ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 880819098e543b33ad04bedf8f942c349431d6f65638e6f47473868402c309b3
MD5 89b8a874a77ee91358dfab30ca307a66
BLAKE2b-256 e61dd4c6e7855860c4abca730c7a6aacef8f0ed684fbc86cedc7aea4d7ab59b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6c86a8a89df40e3fd27fdf94ccd89db092b2f4c073cf129f83a53b8b91ad1223
MD5 fbd214fa0a9131f42606ae1d09bf8954
BLAKE2b-256 fa9a2e420f6c6cbcf59c1fac32501362617a91fddbdaa31ad9201352a5d58a0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 095b11b69d4e1500aa71cdc63ba86115a1c74699be23155a1794115b5ef6f1f3
MD5 b1ec157464f9d8b710b4eba257e5751e
BLAKE2b-256 93a0e8d7a6aa681efcc92138e3e033d72ca89c382bb79a8d0be7d6b3d16ba6ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c4687e11d5d42729f2fbbc3f7b97ecad43026034b4a42a0d96b13c4ed78c894b
MD5 3bf389413adea0359b0c87374afc0de4
BLAKE2b-256 4148f84e8b1f9aea41b9e4fba04c2be1fe71e84167ea64ca2078ad0015e0298b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 127d8391a44ccebbe171ffebd5b31847401ae7f1a864c6c9ce784286668bea64
MD5 7e8158fefa19cc54c2b4afd8575c4365
BLAKE2b-256 905ea1ce50fa3487ed96685f70db83d155811191472e256111c1bb50eba46e92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 acd9a61069274759d70776077b1c3c4b81e1ab2371b7788ac64f9177415c37ae
MD5 878b35590022cede3b6679579d80f939
BLAKE2b-256 502f137c2f51807c617f161871694f3d22922b29e6bb77810dd245dded991549

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bce89d14cd1eb9c4cf90f5efc71f274d40b54463f287e7d4c08bb388a250d794
MD5 a0a93cd16000cebd9f21c7c7bb511e49
BLAKE2b-256 446cb28c942db14d177027e21e0d2f23739720211efd2bf9d5e12c5770bf4217

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8e8f9a363b7b1e26e876c03b0bb5ff056284e9bd0c806cd63a9e989762af6f20
MD5 ce511057236b996a464de4423921f5dc
BLAKE2b-256 4a9a4d390a804826a8a2b0a615ab0be2c61ce9160cb1e8a1417da5db6e059ab8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9d010f36659ca2d0bc6d492d5ed90fb6ae2a7f6af7f03b7525d6d161484cb3a2
MD5 5b8c06da231fb84e86a2d75ec7180987
BLAKE2b-256 ff8ada4472571eac9cdfc26a8b58ae5e140eba8135002ed9d455981f07a90071

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 424b60eac747d08f01987851b178509d887c753fc40373c64d5043a1cb957095
MD5 96840e035e9779d677cc8216ea877289
BLAKE2b-256 11ff30cff0d4f3a9c205cc8c1d019e4dfabc203338928eed973905f1f741995c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 25f1d42b5445d0c7d2656064e54a140eac4124085f5277213987433afed54e35
MD5 9ddcdd6cf91a126ba8429442737fd33b
BLAKE2b-256 36627a394a30a55480498c0ae256d429757e5e3a120f554a673c991fcd7b06f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b009467a56527824db201667d165302ade0ac26ba7ffbd3a7866d3881470049
MD5 a19e3eaa81bfc0b028896a5aacd4bd03
BLAKE2b-256 bff37c5ed1fbf11727938106eb2e84da055896a272bb0d9cf5eec254f284697a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 db150a105d82f4a2235b1c1e196635462fd9021049acdd235d98d4a77e78fe43
MD5 98d39f4dd432ab971fb8d661299a6449
BLAKE2b-256 aedd671788fcdb54c1f5d35bd34685c9797e0ec80734065ac3631a9e00f9f607

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8365b1e149553dfd090e6b6951e9168056d6e8426e3db5a0f96ef95ae3bc3404
MD5 1901ffef805d0d684d1660a0d23739a6
BLAKE2b-256 a10af03f19cd566ca74304162e2a7d8f79e9bb2da1016dae167fae77b87218f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ef0d42710bb2acb64af2a054eedaa0d46ed2b26f491562147b4986e39a6c0226
MD5 d31af0831a07949e85fa381aa8593fc5
BLAKE2b-256 53b82d45f631b0f584b986cc2826f78c79dff8bc7d1711285a2483099845cccb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fbd00454debcf470b821ba3490283aecf1ffdde5990c30e220b59668bb6abf9f
MD5 60ff4ad2279113f8c61fee76eaf49e0a
BLAKE2b-256 8cada4877ba2d15870a1d86ffd49bd875de314c6145619a2229147eac8bd613e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b840030adc2ffb55aa5fbfd938e4ec67dba97f37204ce34763fc38e7bcb890a
MD5 edb7ccf5f1fe33871d951c08256e6223
BLAKE2b-256 37cd7df821041fc1b569b1941f5856df59a4c9aa299745d2f5c01ab0e6ff38ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f435d7d106d760d63c0868c4a0c01783a74f87891df3e836104b25d8beae209b
MD5 6d30f7211c5137ad8f18ccb2b708668b
BLAKE2b-256 983e5c172c482e70b794634296a7d3c6835af9437a94dfe2f70f54cef4dc6fda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21c42b5a41ef9cb50828f48c3f7fb3cc3de5e6cf3c55fb61f5a9e960e9ce2213
MD5 cb04de804438d57b38040bb9fafd21cd
BLAKE2b-256 15d1003206ca6070473b908fbc9bdc6023394dda44aa501e0800c21cda32038b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f01d841488d6f230d67746e511fc200ad8a1b4b7dcfa7446cfd04b35441987c1
MD5 f6fab54ca2ca6805850cef45c2b8a068
BLAKE2b-256 15bf559141bcc61ec50618ecdee52652afccf7583ea23bdd7ab82f964c21c495

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2ca232c456c17f79d773ed943efea6d128aba25c2276ee5dc566975944dd3dd
MD5 01bc5d7e77d8b861491e9cdfa1432f7c
BLAKE2b-256 45498b8c75965fd77e8f2799d298bb81c5c5025b6d50741e1dd1c78d28830605

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.12-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 937d20690e01a926e19f158c24ca9da199ba4a018ac7184863f36378f66112a3
MD5 c5e88b4eb7e2427c800f02f900e2429f
BLAKE2b-256 96ae2c1ade50155d85cea31d37b1c78c1c2edf3f655d42c724cb40bef14d5ac7

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.16

29 files

0.8.15

29 files

0.8.14

29 files

0.8.13

29 files

This release

0.8.12 This release

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