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.

74 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 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.9) Next milestone
Protected 74 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) 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.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.9.tar.gz (721.8 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.9-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

argus_redact-0.8.9-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.9-cp313-cp313-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

argus_redact-0.8.9-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.9-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.9-cp313-cp313-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

argus_redact-0.8.9-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.9-cp312-cp312-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.12Windows x86-64

argus_redact-0.8.9-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.9-cp312-cp312-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

argus_redact-0.8.9-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.9-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.9-cp312-cp312-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

argus_redact-0.8.9-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.9-cp311-cp311-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.11Windows x86-64

argus_redact-0.8.9-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.9-cp311-cp311-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

argus_redact-0.8.9-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.9-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.9-cp311-cp311-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

argus_redact-0.8.9-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.9-cp310-cp310-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.10Windows x86-64

argus_redact-0.8.9-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.9-cp310-cp310-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

argus_redact-0.8.9-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.9-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.9-cp310-cp310-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.9-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.9.tar.gz.

File metadata

  • Download URL: argus_redact-0.8.9.tar.gz
  • Upload date:
  • Size: 721.8 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.9.tar.gz
Algorithm Hash digest
SHA256 6682428268c6882a20b65c406a817ced9af721fdf3e2312c025817959416fef7
MD5 d226426b3d0ebf7d3701d51b76b504c7
BLAKE2b-256 7f610c8c52e290c7470b4ac02960937ffcf3c7803c57c471a973ee659c89c362

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 027499bd5de2e8496b94186eb2b3024e786e0862199c3ef3d703f62b342e9ef3
MD5 9d8f22e0385d8f46ad885a58f55d66f4
BLAKE2b-256 1b2d95a05b75a3875b5fea4315b7f37f91883f96a800116b7746df88536c89c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a069fd579c2193c5b93143c59ce002fa17811981c924034a80367c4b5a4a47a9
MD5 5993ee1902adff792634bf0aabc2b06e
BLAKE2b-256 71de173823adac26b415ecaa05cd938eb8f8be38c7ffd419d6cc79b00faa2802

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 db3b96b66a1f830be66ea21b4c43bb9cb20335bd05b411bd70c2b0843cba5e4a
MD5 fad5c5f4e42bb9a3efdbc7c2c9b95f23
BLAKE2b-256 daa2f2a58f01ef5ded1f9f67659d7a60bc75ec2ec62ba4a8388fdcf82a6745d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2570b8aae32aad8727e15a3bea61be6785d71565b8d3b0f0506a0c838295f6ba
MD5 d832c73c637bee1900548feb6b90b3e5
BLAKE2b-256 84deb96e55af9d8c982f886b26bfd4f6c67a6034a6c9dd28bdc3619ca8247767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 59a1f4ed69680c94dd2e406b3c7f3da5138343e4ce33ce9bb39ee06a8c382944
MD5 5cbcd4bfc4ab071b178b74b3a313be9c
BLAKE2b-256 ecfd6544884dad1cfe4cd5e54e52ff0f4e56f75d342698f45147ffc9cc56f723

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86c9113c7d2d141f73cfb85511dbd9312ecd60bf4e70181b0c941c97f3d9a0f0
MD5 2884ec9a1c7081864f2ee016f3ebbdd3
BLAKE2b-256 f27bf3252d20c3f3bedcb550c2f4f59000797d7f23b685ed837ef42ad34bf930

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e0211cc0afc51099be09254e97e9199756707eefc97ef68cbe83ab15e2e18499
MD5 eab81f202d35c1be5363ba5fab4d086f
BLAKE2b-256 408841771a974ac9785fc5118f82031f59cd83903febaf60f0c3ee4fdcd55ff3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d02dcaaa949bc3858ed37ca8bcc78ab0ab7d96d9dfefbab773ff86e7fac5ca25
MD5 481eeedf42d3bbd483ef9fda274bda7f
BLAKE2b-256 3cf1c5b2795e66ac3955e90f3ba549b88e5342331ecec2933836591d8a42dcc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8a24d9c58d34980aca506b26d56a3f7765bf7637cf4f8c449ac2bbfb7a1a6914
MD5 cf8dfa44e53bbee2d61e6a1465bf50ee
BLAKE2b-256 de55b8102b12775423750bf90dfde40ee9e6ad78a34b8b57317f02184479ac87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0d68820d3a0ffa21fc1af587498284b52680b6e49b8af1882cefb3574a490452
MD5 59dfd7618273617657635c84ecc270c9
BLAKE2b-256 70d351f287d64ebec434147874255655e6e7607e3415e8ff1732e93125709a49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a1baad98ba29d1ff9aa79cfc79f4d75dc6b8bd9194cea938c94b7417c2867192
MD5 ed0243c93046993e55bae8a2f029c0a1
BLAKE2b-256 7699ed7072e99a059f3c67ff75d0dbcd3b55f537d26a894db1e976a9cfa3900e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 87cbf53977f0449d4e9f9a5624e2869bd79b200986111e9f517271087d6f0e36
MD5 4ddf8ababc89839e8a59aa14371bce64
BLAKE2b-256 7fe2bfaec5fe5986e15dcd0aa74764488cec6fb87fa9f6ec9de353c6721a0ae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 800bf02ab81eb4f7c8438abd501f2ff2ebb377a6aa518b6a99a4babd45b003af
MD5 37f686a3e4743780cb6a011f0bb2f19e
BLAKE2b-256 59095b1216372e5222027bb0ffb66f22f57e0d6da40d02dbb565419f031f82cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cfeacf383affb826e005b87631187128e86d28bbe95fa430c5b637a5a064ce18
MD5 c132260b40e1f60523e74713ac151e49
BLAKE2b-256 597b6bbcf68afcaa33b575535443e833594074862ef7186625f87984779d35f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a271ad4b2d8f8499b324df0e91676608944b4b66591cea2d5b47ee6b78fa49b4
MD5 0705fbe4a4579a7ce2a768eefdd15a76
BLAKE2b-256 ffb97dc15d76e018afcc5d72e3f5d0a346c946e002491a63dad0d6e20b527b58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d963568ed547ceb9c29531714fe6c35645921ceb7eb7f1524f3f0e0085e920c9
MD5 b85ff46a6f52259fbd4f1dce5c30a324
BLAKE2b-256 b29f08d2745ec69cb28d334d4186987b2268b32351cc78b3635c37d8893a0131

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 075c0bd400323aed2c36d421d3e80f2ee289f1c6d3a693680d3c31af2ff505fa
MD5 a54de3bcbe494a9afccc7bd59d7aca70
BLAKE2b-256 041e2386eeb3c530e5b3b118eda85c4f63f082f1579dafb623576054ec2a7cd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d1fd4fc9d0e8a6eb9aa749952deb70edce0ce3d007277e59aaf1b3482ca6801
MD5 13c710ce5c9a62a0196bf13d83224e5e
BLAKE2b-256 e0aa12f8d861d9969487e0f9fe523b7fb7445d47bb2e2f8a8d29eaad78282e3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7d89e2c1f13cf87b7642c7d74d44f13a096439dc35b7120955b7fd5dff205524
MD5 28a111ec84411edf051882320c357b45
BLAKE2b-256 72ec2182666804e3d8439301d4d783c722abd7fc4cf994aa0ab7b6bb39f99ed7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b2639388aeec096008669d1212731930ce42252737ddca06bb518cbcfc7dffc
MD5 9ebcb46fce491df04f9a77b6cdb1ac6d
BLAKE2b-256 8e677b487cb06e1677a85e4e95904603c1a648450a5cc5c4c9d731f3a94fd825

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7a2cd7728f4d1cca053ea147c595f6d1a8bcd4011e2b000610566a1544febb36
MD5 f517d996dfeec9d73defb01705fa188b
BLAKE2b-256 8e41b543f01a2ea900f553da2b3372c84dbba285adf462a38fad190309992aba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 95496183fd87c54905c283f3f52ab8b9d4f06181dd58b5d324d27d631f81a1ad
MD5 c8d10aad2f405c09044ac1e5d10f1239
BLAKE2b-256 b64f19b300a58da2dbcdd8258bb383d4f4c0daaa840b80eac0da43e99c2c36d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5ad2239421350ab8d873f07af9d4020a5ce0072c34742d3f81878da753a9b0e0
MD5 bf846b8005b097ff7c9d7fe5cf238c02
BLAKE2b-256 021bd7772e8b91954e18462e5640819f2db82e77d3016382ec0d8aa3d7982d94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 850ea00770e5f66d70a395d8e77f13d0a04c60290702c7c0c3bb76257f40ef75
MD5 79a4c01a4617b4cb0623bfde8248aa13
BLAKE2b-256 8f5559a0e831ec0e5e33c4105ecfe2f9cb05f73c701f0e1ed7c4ab00b3495a8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0724e42478f57d4a6d5b09fdb3d4a00a3613ec95c13da0445ecb347f1960f19c
MD5 a9da8c03bcd121c4015da10eb6cf5bc6
BLAKE2b-256 61fffc68e9b266c889e76c5846eff2b60e41b236bcd2d12620f09eecc40f4e91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 293c2eb9a976abfc6593e2769b4e72ace5a96119f9aff035096d27afa21c8516
MD5 f5fbfd634d9ff9972784876cabb313a0
BLAKE2b-256 bf19dda5347bf0dc31130b571f99f32764db6e81134dbeed7acf40e9af136776

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9d2391db57e0eeddcb78324641f3943615bc3397ce31d4b631f626815df89d4
MD5 2827f68c57ac64786538a8abe955bb93
BLAKE2b-256 df8fa4c290af347faf22ce3009cb516e7042aa281a6745007f8c384b0fe0870c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.9-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 13e7870840f1c4b1965511767c7ab758d5130e4ac2d1c7e94f7f8631d45300c5
MD5 56d9619a7d1483ef1e9960a5143d58ff
BLAKE2b-256 44690b20e04076c9fb8823457d2beab392fdc0d6fb9d893604bfd75e0ab32ed9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.9

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page