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.6) 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.6.tar.gz (672.5 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.6-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

argus_redact-0.8.6-cp313-cp313-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

argus_redact-0.8.6-cp313-cp313-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

argus_redact-0.8.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

argus_redact-0.8.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

argus_redact-0.8.6-cp313-cp313-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

argus_redact-0.8.6-cp312-cp312-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

argus_redact-0.8.6-cp312-cp312-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

argus_redact-0.8.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

argus_redact-0.8.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

argus_redact-0.8.6-cp312-cp312-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

argus_redact-0.8.6-cp311-cp311-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

argus_redact-0.8.6-cp311-cp311-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

argus_redact-0.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

argus_redact-0.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

argus_redact-0.8.6-cp311-cp311-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

argus_redact-0.8.6-cp310-cp310-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

argus_redact-0.8.6-cp310-cp310-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

argus_redact-0.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

argus_redact-0.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

argus_redact-0.8.6-cp310-cp310-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.6-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.6.tar.gz.

File metadata

  • Download URL: argus_redact-0.8.6.tar.gz
  • Upload date:
  • Size: 672.5 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.6.tar.gz
Algorithm Hash digest
SHA256 f9c0bc66bee0582f83f8469ce90cf931f28e298dda569a6665481e974d19f167
MD5 2b460eb2c09d54ade9da60ce4682b4bd
BLAKE2b-256 d7680b2c7e11e2cd797dfdea1c14682719e0e9c7971af9e051c07b72e91ebd4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cdb2189c72205b085edb9f084f0dc89160294aac34bbab8605cfe0dbf58e107e
MD5 b46b1ad4f227184630ce915bc640d508
BLAKE2b-256 c143eeafdc32c457c25257c42c837e6d27172654a18b0923c91dc08a5b7cdacf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8f262bd8f5462bbcf3841e4d551c93d725dfca797331e23e00c857801370410
MD5 6f89b74775c3320b510402ce7526f02f
BLAKE2b-256 d771e1d7c4bd6f4c6147fa711cc2318d90b6ab37ab44073d6fc311e91cecdc9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 de6917290671e8bec9bc3cfa1bdc6a110672f3a401ce27d4abd948e49dfbb12b
MD5 87ec03251749ef264a12b4966de14b53
BLAKE2b-256 f78166754bb18c95ba599ded68235445a6f3567b61c08e92280b45350f051aad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 59c09d6a5af09ab347dfca92afad036cf9f3562043199a8a24365d09f0eb0085
MD5 fcae9a29eb3372593cddb9a64677f703
BLAKE2b-256 811fa62d376d9b0b2d0fb82f56b808db7c7678d63dbd757266eea5bcc343a230

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4cd49657b1807bcf643e38068106e01aa1ec1044968a93d53fb92affba7b457f
MD5 a5bf1515fa0085a6a0a976ccbaf9bd81
BLAKE2b-256 e7eb9204756412c883bfe86d62b485bcafdab307b678ec76d06b6a1b74167fa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a4e899a80253be2f084cfab8329c2750ab58bebe46d01123a60615fde8e6a38
MD5 b6bd9083c8abd721cc1fb8c8d8121ef2
BLAKE2b-256 877019c5f61c2ddab6ae269ebc7f7fec9d863163a5b213285a49f385a0cbbbf8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 47c4a981d8ce5e031468557b01bc8bbde0661b218e9f6b0cf151226023a449c9
MD5 de46c2028316d7f884af5d775dbc98cb
BLAKE2b-256 297e0db46220fa6e368f559bb6807178dc5f4014b8c7f6790583c705b6304f63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7538a7ec68b77dc181406181e6c614e15be1e7c88df29f6c3cc6ed473f579b0a
MD5 392a0fce4b00ec80739b520a482f5c6b
BLAKE2b-256 1ec4ad968b38e99d82244f096804adeb69a5c2fefadb20c1633126d0aab30190

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a4c40d16479134b7d9f3f9f77c5ecddc2be4d2dd6343f98a9b3612e4563a878
MD5 fa793a5e06339177bbe6b59d26a303a7
BLAKE2b-256 afb853a577ab794953e2985537b04f93421cdc4a4e10a4b6af7e5de182e8ae5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 76ab3f69593b255ad3e794b00867211f1dbea5a1ee9e263a1c03b96b51cb41bd
MD5 cde8c8ab673c88fdafec3e25dccea1f7
BLAKE2b-256 30cec83f3851c4109a148f82a2af4e7fb46e02dc94ae1031fc166be15690fd66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2680874afdb6b6b198d2cd4833e7e5134528a62180c92c1b060d7ed0f576bf2
MD5 788baaca1d5d6631309472e14f8f0534
BLAKE2b-256 3b4ef528d19cc4475820b055c751f74f1bbf3451f123a7d17a33c39bccc7cbd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e3aa9c5c5ecf8988bb2cb07d9815e69ae1b3d2d91217a3f4e3d41c34bce23dd0
MD5 2a81dcf9dfb205c2c3e5471235158e8a
BLAKE2b-256 1d156a1217ebd689b844a686ca39198b2129947b5317bafd675b1f53ba9f7173

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bef1fc831ed99fdacaa62874e0d5c1e2891ca6a5fc36d9f38c9f4d1fac2bb0bf
MD5 34fdfd25f57d58bf5fca0c261974441c
BLAKE2b-256 bfca6a454ea0e9823c023e8352d612ec81d0cc3e5a89e3b715eeb6f616f93377

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 57aab1d84e7d78b2b8dbe820df294d73e00e169c0f89ee3751b047bd2d9cbfbb
MD5 54b36c914339903bd94ae6b7e2030982
BLAKE2b-256 68bb7926f650e1efd5b4fb350b2745951c174d49a58c9ced350e6bd48ec928bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 de9b312d1e70f182baf181a02c2e8c434942c95fe38fff1600a4874216214fc1
MD5 07934f397a163bb99071e44c139896fb
BLAKE2b-256 9b1f647649817827ce77cc6f436fb1f277d3da536ce06a475e86a159cfdb73ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9c36b70c1cc0bc94a5a7a7f387572cff18b67a099a01b70bad52f849714b91fd
MD5 85ceaa4c9819293036ee051ea7cb3322
BLAKE2b-256 aba3d39c81d352936c751bb8e84f038a59283db421477e936f5c81d6ceca157e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3cd3b4d0dd8a47a5e83fc21336ba51c3b5dfd98896b8af323e42fd19c0bf1c62
MD5 3cda0c5d138cc51324cba5f7b67f83f4
BLAKE2b-256 c182117e48a8ea113c6ee8fc8e891fde7377ddb6115b3f7d0b6dbb477e15fa8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 12f6cd240506d71517698955556d19c8c030006b90845c8116c952b1c861fd06
MD5 a3ae7771ac764ea8accf5be306aed7cc
BLAKE2b-256 1ea391978458f70d97d6fa92f9f981ed2fd47e167659a8c55e15150c70596194

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7ed4ca493058a851a2e68af79e5b757ae6b72d0127b04c1e7701715fe7c36eb0
MD5 2da983c2e726976194215ea7df7334ab
BLAKE2b-256 d2de0e0d9fdaf31e66ce648d934093232e84703777985b92fff9b7d29ff62986

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d95c4f1358bff6d51f054aaeedb5a943530385a6a36d52b50f87704b6b4e78a
MD5 64b1e64162d8d8c8df9fcd4f83f4fce6
BLAKE2b-256 53e08fa8ce65f3074bfac807349c320ecbf4f0be78210c3127ad5d0929bb32c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 41e73a042aad5ef10e510c10bd06bf46619bc138ef975394dca93dbc44aa613a
MD5 4cb4b0b6b3def3f62bc4cadef8cef932
BLAKE2b-256 c4178928d7696c1d5d19bebb6837493500d4dff488d0f2cb6e993563445d9482

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 439918ba6ae6a9b4b6409b1e3fc66b24bc3334b71e75e41ca33d52d7f499dbcb
MD5 fc0ee19472118473764834ce32d7dd12
BLAKE2b-256 17bab6f7c26a219f4c8cbe769ae8c28b66395f26d702c8f52ff9f4556b698246

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a4007a9830e39438212c8500938f2513832ff3ef77e18ab833fa5eab002c827c
MD5 77cc2d7c8cf5cda32e9b98c7b4be6516
BLAKE2b-256 c9f64fb541e4ac9c0a1003bf9c94efda364cc362fd5844c74fa2b0d1d435fa58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d9031c7cc40ff782b164a0de0cfdfbc62f7841041e1927a9311c174bea55bf74
MD5 35699ef2f6e9a975a47159cc585a86f6
BLAKE2b-256 eb5634c2626c3ef7e1972c9a24f6913c2d060c54a9842db0283dd5e1b0b65999

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7b83f18acb57d18f34f50c695030f8e8809f024981f89d74e8a90b43abcf9fc
MD5 1b3666c90bf616d0d0430069c4112fc0
BLAKE2b-256 52e1e63f44c8972dd277c01b3f047229525efb1b821a2a701e1698a475bad650

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3cd1323fd8868ffa58446433dd3a0cc1a6ea5c396327732025e68636a288e3be
MD5 3397bfb6638520f93030cfdb2ca2ae50
BLAKE2b-256 2a584627650771f755c920093d67a8edeeb0ccc3f7df3832d81da7f6d2fde523

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1cb2b9b9996030b18da592d72fa199893e7e8dbf8d03e42394cb3ff7ca031ba9
MD5 6d67dd408042c552290cf4ec8aea9a23
BLAKE2b-256 24a3cc4f63e6c8f67653f9be1d2a425f3fc61c3ca9107175b0488699c65b7559

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.6-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3c39b132034f2eaadf85bbb799b57ac066b6560b8481aadf718da261de376620
MD5 a0d9a284fcb3dac9664b4011476f01af
BLAKE2b-256 78157b1f97d3d0b3f5bfc29d932471db3de03a287662cf8224ad2ca7bb0d2fa0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.6

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