Skip to main content

argus-redact

English · 中文说明

PyPI crates.io Tests codecov Demo

Encrypt PII, not meaning. Locally.

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

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

from argus_redact import redact

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

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

Three Promises

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

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

Default redaction output

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

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

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

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

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

Privacy Levels

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

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

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

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

Three Layers, Collaborative

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

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

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

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

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

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

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

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

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

Limitations & When NOT to Rely on This

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

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

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

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

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

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

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

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

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

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

8 Languages

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

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

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

Performance

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

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

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

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

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

Detection accuracy

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

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

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

North Star

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

Risk Assessment

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

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

Realistic Redaction (pseudonym-llm profile)

Default redaction emits placeholder labels ([TEL-79329], P-164) — clear for audit, but breaks downstream LLM reasoning because the message structure is gone. The pseudonym-llm profile replaces PII with realistic-looking but reserved-range fake values (e.g., 19999... mobile, 999... ID, 999999... bank card). LLMs reason correctly; humans can still tell it's synthetic if they know the convention.

Each call returns three text forms sharing one key dict:

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

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

from argus_redact import redact_pseudonym_llm, restore

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

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

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

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

Reserved ranges:

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

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

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

Streaming

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

from argus_redact.streaming import StreamingRedactor, StreamingRestorer

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

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

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

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

Full API → · Design constraints →

Integrations

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

Security

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

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

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

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

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

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

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

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

Documentation

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

Contributing

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

Contributors

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

License

Apache 2.0

Download files

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

Source Distribution

argus_redact-0.8.10.tar.gz (750.7 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.10-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.10-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.10.tar.gz.

File metadata

  • Download URL: argus_redact-0.8.10.tar.gz
  • Upload date:
  • Size: 750.7 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.10.tar.gz
Algorithm Hash digest
SHA256 5c7754e762f7e8330ea0bb18133b19c5bcf1f87323c9487f9a30121d1255d5b4
MD5 a1ca6dd076aadc653da41371f76e7b71
BLAKE2b-256 f5a4683daac9a6473173aaa9d53e6a0eff3bac0640d8e5d4e23fb136c133ace8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 181aee559ccc0b99822ca650a7267ae73fadc0b4165194d32d71f5fda776e35d
MD5 d84c3bb08b76a6aab69f1074a2ea7b70
BLAKE2b-256 323dfeb4f8f3c6c2c2e18a5bdd6bcd475525c39a0daeb4f4b7d4f71c9ce4894c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 24e3e166d80864fdb8830a9eae7cebdccf74a914ed8bdf90a16b70b819c26afe
MD5 9de438d2dfc4aef595b0ac3a2e8baddf
BLAKE2b-256 d735dd9d82c2e15b6786ce1226c4b7aa88378d6720daee3ac51e67577f757de7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d19f6f1f07ac770ddc358c6bd14e111c712c510b94e3f18c791a9360763ac08a
MD5 800ba8b005f5085e41e08cf1a2a33be7
BLAKE2b-256 ad2d21da79655c6c055ca88651f5eaa9d1e717ce88bb0e2c18d575c27fc4fac2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc3c5218a9375ea9c76013bd9fb9dae0b34b75d197089835bdd0389ded1a0fcb
MD5 37fd0dcef3a0b819f976e933bceb9d1e
BLAKE2b-256 cdbf152160f71d04446a50c2e1920b12df4b8a8389abb24464f9add2fa2a0453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8ed6e4b9645e333b3ea346a6c663de049c414c8462a10158d3ee96c51d6c44e8
MD5 6535b90692f3b55af398c53732b9aa9c
BLAKE2b-256 447e8e6bfeeddff39ac04e2cb77277a97a88c928a889382d4ac6766308e50b87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d15773352e7eec9f105ee74020c1626cceebecaa34a2c173f8a99434f5f933aa
MD5 33b1070600957ac8a5e138c65eb8e34f
BLAKE2b-256 85a09cea3116f8f08df708b566b3728766f708deca47eefcf523b813d4db5e25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fcfc4ba4f31f357ea637e7d87c5f217e9d1faf4bfe42c577f03812302cde4fd5
MD5 9aa464b54c4f58f36d5349dd3bbccaa3
BLAKE2b-256 06ad478d58be0711a89d098a569770d52c402b94e3f30790e85a0877f9d5c129

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d57d1adeb687b2a689607043676699bbe5f64b6aa721894a222d444a0615df7b
MD5 456d5d82b049e7dc7845762027d7b0ac
BLAKE2b-256 70bd68ba6b523fc512f744c3cf2db19fc1328bbe2b170fd1f2baafdaa66722b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f4c55704d4da75f743cea12f5f5335a0c779b026e2b316c662400eaddb4a6748
MD5 8dcd963634e3bd2aef3d1c06cfb79f3c
BLAKE2b-256 1e551ca9bdf70d877735e10d0c4526f754217c0fc6c86b9a95f9a594d5bc0d7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 59594074a4cff792282059f529b8b66b22b4cb065a598d2fe82446ea47e03335
MD5 a59fb6b57ae596ea247dcae0627aee81
BLAKE2b-256 391021d63f53c0d16c7cb992b90ebe9cf216c57cdacc3099a3d64f970e4e04e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf3de171aacc790036ea6a67ec8884a8c27f4b22a2c8e3273fe468ca0895a7cc
MD5 079cf753ca7530ed9217e10705e71a5c
BLAKE2b-256 fcd432a5e85d7b0d1ee573969cfe36cafed0ebe40900159037087aa168b4dc2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d16bbdeb1238846eafd6c8c6b8cb069660b283c8f474ac8763a4a3762ea204fd
MD5 150e9d108757abcdd62350ad554fee5c
BLAKE2b-256 f14d8b622ebca4b50447bc4fb72f878f87e9db411c33f4f3d06c2772bd1c4cc2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c242d312eb6496e17eb54531d35657218a1c85b23f06b9a3810c18b87b55cc0
MD5 35f9586405b0a57edaace6ca2dcb0ff7
BLAKE2b-256 fd1caec0b0775b8cdbf74a95b5ab012955611e7517309b73c20c066eddee341c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 12a386868614783f7f25b600ef6f9bf499f417779cd6279393cd486c6cb5434c
MD5 5f5c562de3e65861146e44bfe08b87cf
BLAKE2b-256 45dd3c92fb534e0496ce56693c792ffe0031c8cb3112aaa0e1e087e313aaf446

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d2c58c769213bf8485d9e5ff502ac3e2c92f8827e72ecce1cd21dafcab4c68aa
MD5 5949ea6a70ec794ccd9f70e9f7ecfb08
BLAKE2b-256 4d8225df322173608fe46cd60df836ff1ade391f7051328a1911b7746af0a333

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 84838e584e91e6ce2ba63b4d61ff134cd6cc3239768eb5714b5dc219daf3ca40
MD5 e4b5fb676b3ab0af39dfaa1d6b3fe87f
BLAKE2b-256 606d16cde80a923e62d410b996e83fc2d369cdc614a7b89aaad8c2bac798744b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 83888459731865d67d6d6b44674d76b345a5c616200a331e7155bbc729e5e938
MD5 971dfafe146779ee0e9bacbb6e011694
BLAKE2b-256 961ae7e0210aed7539b8d5fed78cd7c1ecece7a18d100abfd0cab1c016866f52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ecac9a948f836e509dd6fd86e92e140f7cf53b21a2995617e4b694bc6366aac
MD5 10e07df22051923d0cbb1b600568551c
BLAKE2b-256 8a0e1c522d44d1e353dc6e5fa57ba28e3b071723de2e6e1df51d2d94a3e556fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d4ef13ae3ecf9bb6aa174da9e43a2a7fd4d56a390d246cf81d79757a78dd9317
MD5 b067622de00ec2b3b822cad12ea19420
BLAKE2b-256 6bb61f073e95a6571123c938c6806b84981a7f8967994e1cff6a42e9e95554c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68a2f92dd3b3fb6afa0eb6abf0236ebdd71bb6afd4a8fc1a7808b3c4ab872023
MD5 eccb4e4157afbbbdd98ac9c7d42aae9f
BLAKE2b-256 c8ca5e01b51c3a9297bc2aa0fff29b2806a919afab18ad5f812da2587abef5b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 432a5cd252b37056dcdba16e6bbd18744b76e8f3391589eb535495ac89120c66
MD5 b01c3979acdce43c29b3be278a80bd93
BLAKE2b-256 04afb2002e4c2f08fe8c99bc1babbf11ee697aebdcb922b936084b2d49b5e731

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c43bef7b9b48f64a41dfc8eaf5bbd260f71cfb9bea8083843df891855b030e70
MD5 6eeafbe942677b6313cc7dfa25d51b19
BLAKE2b-256 1e6b5d9991c0f4c0b2c1fb7a15a903106ecaeb36c2aaeb4aa0e7a0acb77aea35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 38ee1435bb9e7e4a5b368cfe2d8635fc2b5ff06396090b3fff825effd16204a8
MD5 f656a79ada59067aaa3a2cb3773ca948
BLAKE2b-256 0e47e2c642f96bec4bd5b438951650a75ef0e95f14327711f18b1e0b71a2ff43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 32122693f0ee4d9fc414cc64a1a219decab95e2b3c0a3c312a88946fe63d3d5e
MD5 7fc14e6f848f0849582647f44755d0bd
BLAKE2b-256 fe04014b6b3dce3cc7d163d1bf5052c8c7457c53865592304c60859d591c410d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 067696f44f8ef10bba98a69008b405a1ebdc642f1f605c5f257cf8b0543243b3
MD5 b3415c6f8176b7da1e7f91b3851e92e4
BLAKE2b-256 2b8da694b66858c1161d2dab88bbb032529708ead14d53ed6e31f1df718ac584

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9986852573f2109be20f042a94c99e13f52245d77a791efbc46043614113df08
MD5 6103f0165ef9bc57e40830d3dd185eff
BLAKE2b-256 d0968f6180315b82719e093b079e560657356b76a8b105cc57fb07a129021941

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4192f1ccfd3b9b4bd158a1845df157d95bd13e3b2b7c123b5ef7af5e75abafd3
MD5 0ed27483f5e4796ecf9e261535305cca
BLAKE2b-256 9de6dd32b51e12e85bdb3a0ea2064ded2912f8b3a84a5415e682a70631e78824

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.10-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 39a969b472d2d725952013485aed828a7fb82e5a248f05e23ef099cb03d15271
MD5 2c7b1ef48751483de0a3ce3a85073a3b
BLAKE2b-256 44791aeae796e7be0d40bb64f5911af58ffce3ea579594e22199c87a02e003ce

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