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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.5-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.5.tar.gz.

File metadata

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

File hashes

Hashes for argus_redact-0.8.5.tar.gz
Algorithm Hash digest
SHA256 06aa6357a4f55d7ef8fcd8272d970397881b1ab7e198ef18516d6c5ffd9fda39
MD5 43c6a1e598035614f12abf4cf5f47acb
BLAKE2b-256 1fecf25f30252f05f19e1c242d5a9106606044f58f2972a4ea5fadefb54a9461

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e6281ee265cf1f21693eea8f4907a276d5dec5ab9bd6eefd878bda9794da092f
MD5 fbaaa4e7b734afcd0a7fcafcfebc71cd
BLAKE2b-256 eedd142285d3d309da76c83bb3ce58a5d1bde25c02f6912b6c3f0e8fa4e52e96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 77c89e6188f6d0cc9b34f78a5024b9c9ff68fbad93ecc3c29a99a8e88089d8c0
MD5 d0126bd48c514319459374ede1e14003
BLAKE2b-256 58fa40747d0536692e247234618aa81063251f906bd6b7724586e8000624e813

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e6c7803e3a38f0c8be3d10319430be06196a2fa90843816b5c130f38bd6113d4
MD5 aba73ad20a9d21a7cafe434496766bc0
BLAKE2b-256 a7f0b4b7f2f984dda8667ccb4004a8e0f6ad0e52a878a96c360ff03fa8386598

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f6408f4ba6c7dbacf7b1d8d0528ee4517242ca1e3968235ccea7088ad38cf8a
MD5 531255f93c1f45b4e67f3b230946ce80
BLAKE2b-256 990dc0f2e8cc995a79a500e753b5c61eb118e713981596a9820bb4d11b87ca3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a2ae6db9e712a7aa1a4588af1eb24592808d430b38f447ee1155fbeeb896f608
MD5 78bc4869930a9e0198016727e332d976
BLAKE2b-256 59198e4bda181bca1e682ce5574c0f9ae9cfdba69fba707154348c1d0bcebc59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3584c68b559e208c37cac5b14fcb35a584db5da5c297babf83ff97d6239bc3f0
MD5 e7722359148415b1dce8af9638e9a8d0
BLAKE2b-256 194e45dde8c8c4b884ba6e3541097f0361425e63cdd5305207a5633b0d166abc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 15af031ca1fcc22315981773db5d1ebde246078ef9f46f260d7dbef45a3100d9
MD5 b0c7a85f79b70108e0339e167ee91ada
BLAKE2b-256 a56cac12973a7996f00efee1a69306657fe92af0c0e2fd26da0cce9f393ee82c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6441dc6cc30f1cd99f70b2d56210a9f1453c0d55505349cc95fefc958f8a863b
MD5 45619d1e3b69528a6fc8670eae423bd6
BLAKE2b-256 1c8ed3ed5ba315aa7c4b395c07dd5326664812b5b63a7f1faf23697799ccb02b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 112b518dc1c5c0567a3a95bd3918749ffce89a1e9550529f1cff9fcb9d7a1c09
MD5 225b4443b2d384c6e17fde4c557c5eb6
BLAKE2b-256 21233b3d7fdb348fcda6dcc29e142e08083bc5ff70b0845cad2dc9e57192ea87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dc12548999c286e4c9810b0c4a6bceef72be141d3a453c823cb6bc975f6e7d4c
MD5 0e524ed680e3a6084e5a4c3ae1565f1b
BLAKE2b-256 ca1171712983d1bf0b0351841502143f3397e2a50177b37cf4f7716d03aaa910

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5afc5fe74e7e20d9cb3a7c61198fa28042856f75657cdbe5f7c4d6dad6f94bf
MD5 46862618e081e0c63ebd414cab8c6056
BLAKE2b-256 5c5d242816d68af773971663a61d04b0e739278e8eb4e4e719b7f6685b87e8b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 57e38c4dcdc6739548a4a88e03dd93dcd73f4a9d16b8db893f75233cfa57608d
MD5 8c1e3941a082aecb0faf9246718e7423
BLAKE2b-256 4989e1bae3fd4e12cc4812511036efe10bb10f8206dbd5fa51f2f53f70573995

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9974a3f0ce58be35bb80b4aabcbed7b9136e710efb014ba68a93c451c83b648e
MD5 9a5eb60dea7d7131750fd600dd3e8bd6
BLAKE2b-256 f17f277af642af35be66be846f9156541d571fefe172d166f8e0c9872e31a05a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b460d3b984491c70adb1514c638deb0c7431cf630234160f27aa641c95386d0c
MD5 26395960f1282e6ec01e729cf1b178e8
BLAKE2b-256 232feb9130d9cd461c6594ff8a478e5d5472c9e4adfb8c34d7c84d73a7992542

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1877dfa20b705439f01274f83be939a029cb55b5d562aa4e1225cdce4881c34a
MD5 c79f4d32bf85db4f6c1f0753b698c588
BLAKE2b-256 74537e55ac1b16806cd7f0242592df083f527ee47ff2e6e423147a34cfe37ae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4edcbb4b2a86e5a8c95a4839eb864b1fe2ba89d27faeb1666620d5abbb3dbbc2
MD5 89594e4cb2c3737cb411fa89ddc5eac8
BLAKE2b-256 afb0073303a8ef79f17a9c211f238430a90516d4f0c5979b78306d0868e9cfe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 85f14e9024eee3d4cd84316273424cf8bd97b04a46b5ba4bdbe008bc96e80791
MD5 27332df8d4b5c397869d67d144cbc557
BLAKE2b-256 5280482964a75a2d652191d2dd64bb5bf9a59008decc93b4887f0358dc8d6dee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0694385ecbabdcda3f53996fbd36aef3f10c4bba443c63f607ac15d64dbe6df8
MD5 4e3978ebd4a3ffaf46f2b361fa71e70e
BLAKE2b-256 7be4f6e8044585d81829cad0300799e5aa8088190766186a24c0b98bb5ee785b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f3aa2367d7866ce9935c18d52ef99dd9cb33fd85a021660b381cc7c5e397ddd
MD5 98e9aebd5a8bd80d15f2e8922a6ee754
BLAKE2b-256 7e08d5558c79ac9b9f32e590316898e2da4bc886525e01ae8e74e63fe36e36b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 872e45fc18a4f4500936e359908f1e6b455f2fca60ef6e6b3beca23ec1e0887d
MD5 326858d3323ba50fb5363a04caf6293e
BLAKE2b-256 0fe08a9140f405695d1d183d2c1bee178038d2327c1c557f3d008e3dba25c39d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c3a84cb2ca23cc1f407f403f737a1634e0da90a7d191b069a14f3aa4a0071187
MD5 b64802eb9bda99e11cfced4c239088aa
BLAKE2b-256 905f5761e256e93eb534d6a9c1b71c06ac150ba02dfdf536cb7e516bd8ed1a22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fd70a9e636cbe8f90012a5c63e9dcd0140f88060a6d92fb80a04e1aa77696b7c
MD5 2fa832ea77730ad3b3119a93e1f72a49
BLAKE2b-256 b2be5bec08b30df4291add258becaf8eada79d0f432a6308264dcfa561ecabe9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 292f34208a857e0b70db6022283b512ca6536b6ee21a70c43b9b920d5b3f1353
MD5 9780e44853d0d2421d654559c13aa1b8
BLAKE2b-256 82283db5550c9ee91c34a7012776799a5ae29328f6926269523bc09cb9e18b77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 94d6727483fb441f7d4c6f7cec49c145e29c80013b6f54aae072f48ebd45bb7d
MD5 70ef2d785c0668009b54b371031c87c9
BLAKE2b-256 818a2969c626478e010b302e0a5f94eabfe6e6f983715d4ff0ba0d4456dd54f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 756830a8bf16fc79ec645184d9b2d0d1effa6187aa1a1b2910e17cf74236e547
MD5 9a387774e2532d3ef43f4d2b8b963be3
BLAKE2b-256 8bd9c185c68bd8e130bb915127ff3493ccc251ab45db0ce1a743a6ca98d4e6b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 69b8e0896e0a1a402b850f2fffea05fe005b1e0c2b6cc1731bc4520b1405332b
MD5 2391ce002f7b76f3b9b933ccd3dac98c
BLAKE2b-256 3385c9703c6f05aeb7a32f08cf7cd810591d7e25e3ae50fbe108b6005f779e18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f2fe5d6814e49f927614f48264868433a4d0abd8486a69ee9380cd06838affb
MD5 93a6ce1394f3495c37ab18fe726b4c91
BLAKE2b-256 2703d5b270bbd07e8be14baf4fc91ad6aae89b2e02437288d82c4cb3998f9866

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.5-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a93314862c8825959cb4eb616e6cc41002f30f04d36bd03d35da0f2e5edad660
MD5 da891b3580d5075d405dc9a5f2c297e0
BLAKE2b-256 94ab615b40e9461a1f65977f5e256e69a60c73a1baedb48d3473ef2eb2d3d70e

See more details on using hashes here.

Release history Release notifications | RSS feed

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