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.11) 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.11.tar.gz (768.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

argus_redact-0.8.11-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

argus_redact-0.8.11-cp313-cp313-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

argus_redact-0.8.11-cp312-cp312-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

argus_redact-0.8.11-cp312-cp312-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

argus_redact-0.8.11-cp311-cp311-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

argus_redact-0.8.11-cp311-cp311-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

argus_redact-0.8.11-cp310-cp310-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.11-cp310-cp310-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for argus_redact-0.8.11.tar.gz
Algorithm Hash digest
SHA256 3d57add56535c306f2747499c6d11834bfcfc6a969f4b04dfe7494875f386ca2
MD5 573648d3c4dbed95ac48b5b8a3f8ee1d
BLAKE2b-256 43bcdc952146968a14fba0d1f170f55d2597613e98b48385be1ece83b31e5eee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a0655a28580999bc8c7f2498a1681166355ecd277cda560038a0d1bf50d3c650
MD5 8c1f7c8ca35925e91b025639b927d23c
BLAKE2b-256 ab6dc5203777b7f9b3a4c8350d14bb11ca26cd1feea8794ff929682997adc592

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ebd11638f3ec1ff81b32a867fdfd64011cdc73421fa6ba3b8dc0375cbf096596
MD5 88a6dd7c7e8a55b6f296838e18712371
BLAKE2b-256 bd8b8ee0e0897e4583e1cf962b8a343c3d22cd45f15ff294357d4477feb209e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b19fb3a6f1457556d6234fe723f2bced24982be8a272d10d042a639dcc7764bc
MD5 33e07cdc73d8e58f3ef013094bcc592b
BLAKE2b-256 4abfd18ce0d5a605f88ee334a92c018aacfdc47307a9497c09739ffd5252aa4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 828c93995602a825d6d877235d3423b9619b31ef65232923207fb8b38ce33b5d
MD5 1c93fed5887e1e1472677c5112d877f6
BLAKE2b-256 0e70c2962bbf50f66aef7f991e79a114b146bb00e8d0725652e3f5101c8f022d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8d93dc56e1f4ddabb5c8ad7a4571171e00a458269848619bccd33a71b3868e90
MD5 89ceac62658eee9dd291e1ee8af98d45
BLAKE2b-256 55c654299c0b70cbae34a2129760e560457639433670d4c97c0cb7f12a064375

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7684205f4b18da30a0576e0d2906257fb37cf64eded2df281bcf17e89d24f969
MD5 afd6eedebc7aba48149ffd7ae0d7e974
BLAKE2b-256 6932baaea1ddba984f7e4efe06ad4cc4f34ffb472214de9cc10f78d419dd3c3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3a751160e3e20c8430c53ba8c029dfcf608cc3ab836d4341ed8558f77c390756
MD5 9c6b7d41294b5a2a85fd7d86789e0898
BLAKE2b-256 d2d12b2a3c8ff332d249dd093b6f98866e7ced09765df65da1e6267a123ca31d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6c694cab1b9981b11e6c0c9adbfa6d997aca20725ff05b7b856c72c80f0d7425
MD5 6e31bc722eccee552fa5610b8e116f9f
BLAKE2b-256 8bb3c7039934015e97c352f305df0afe1d4a79e317da14215ea2cf801dd8e18d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 90564bf7b14ceb8241876ed7a111d982668aae7ff8c5a7a806b2875a6fa7fdf2
MD5 c60147b9efd62b38e494f9575d3a601e
BLAKE2b-256 7a471004e01a98cf785b63483aac28768957ba1fb6efe607a22327bac722fe2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 46aaf8f9d001e41a8e6ce4e5ecbef24ae3c8d4a4b9f3b1bec134fe3c0ee88a01
MD5 d4a45ceadafb5403da920a2897ff5b49
BLAKE2b-256 0e7fb0a16fc4c4d57834c9743dacf0871a898882d6102af3fbebaf3f2f508bc5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ab932d486908a6bf84f61bbad06d65c3a9a8e0f220e484a1cd392c41473d3ac7
MD5 79ac835ecc54ae4435656f73afd23b04
BLAKE2b-256 17ed21cf176689e90d167aee08614e30c56ba0745ebd7f0c3fb155029c72a454

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c9063e57d19143255c6117532dca801a958ff781ffd91385e47a17becf10a83a
MD5 8da9e34959e643dfdaabe246421c8e3d
BLAKE2b-256 c8e1d738ecb512ab802e3c7a8deb816b46007eaa14ac31a3775a60de8287e202

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b9e75af15fe1ca12d517f709c43d6b89e25d1006499e58a1cfbc1990d2db755
MD5 1f01c1185e610831dc7d03a4e0efda18
BLAKE2b-256 a027de3f94e3fc015e40057402ed649c3bd99845aea45f9e6214543e812c2e0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5948e0a333a98c012be4f5637a5bb1d730ba60b288b531ebac0e47b5153b50ef
MD5 928b21b0fda31bee73649645e567f335
BLAKE2b-256 323f832b92d29fe0737cd3d9ed8bfa98ad8509f987c20f91b33705d068b51acf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3d07f43669ea9f10e60b4281bdb0e72c6fc48e5aca09b9e480fe3956bf28b1bf
MD5 3985f12cd6b74dfa3c3eb6aa744ee7c9
BLAKE2b-256 013adfca5a60ee08c664fff0c6e2457123e9ef0e0b61a7610359b324c1f34f1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4fecb2a56dc498a965f237fac2949cdce21dceca36595dc2bb3b26ce8ffa7ed3
MD5 4929445764e56f4a2b4f4d5bd04e34ca
BLAKE2b-256 ed6ff14ce5a167fc67d699372d8783d2cb42aa0861726f58d295ebb36cfbb295

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 059c0bad0d9fe6c9b07c10412b4d467596e2dea754b455ebf61004eebd6e0f3e
MD5 08e737f99acb054eab12efbe97255e43
BLAKE2b-256 1ed28060b51a505ee5d90e9c5ef0f663a433bd85bfa518985728bc6bea81ee98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ab1b5a411a7a9cf50d6da9c25a22ca4bd51885a40bf28b36bbb5fcc94d2e766b
MD5 acee26316592fed57146b60f00136ca5
BLAKE2b-256 ded58edd231e18f2e6ba9f835600757a4957e21f6ef1d1d36154ddb72544aac5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d1e7f4653d9444a5f72ca79a4b20c129e2759b68c62070e07a655b55f15e8c93
MD5 32eba510fcc1463f2aa5ed731c48e98e
BLAKE2b-256 2096c65e15b9112034661b137215b5f6ce49fbc12b01f0dca4367309c7618c2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfeec328b2ef9dc8b235b94f0308572a267eb157c7ee5bfa219938aa5b84363c
MD5 0f44abe839fd357294ddccaaa825a87c
BLAKE2b-256 95a9cef45f76470706879d33405a4354255c4c62439278bb30491cef3d5b7002

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 19dc7bf30f7b10e24ed14f6bb8c9b5dbe65f37ee17455c8bcc0bb5db63faa5f4
MD5 c97ec2bc9931a11c5d11d507592ada62
BLAKE2b-256 c93c5176d0cd2b9fd2471b01cf0d3b23bd0af12a00aad28f9e4f1de9cc15c5f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 216e9aa58525eda3ef5f7b565a9a5fddd1ee9a6393637742d89380dc878dc96a
MD5 b09cf39f9b42ae23eda52b44f43a3b03
BLAKE2b-256 3c743aba58f2a29ce4505bbe53a8e1f38ecc8c8797c7ce0f90744d2d548eabcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1622abc60fab04491581e33dcbeb86193df2fab188582146c80686c95089d672
MD5 1b62049e5834eb2badd3f467f4b16d74
BLAKE2b-256 652d2346aa48e5a973955324177ea02380a0f9ac2834fdd66aae76506069fa9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 44b3fe905a37219b922550f95bfb3d0411192ea1b7d02448380dc199e324bc6e
MD5 b0e2670eb3c78bdb274d644b0cbbac6a
BLAKE2b-256 89934e37e77900bc0353532e4f3e900666e127771d985115bbd4d266472ceac1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 819f1e2401e6a5c5a23f3002be870f64e7711c9809120ba9bd5739fb2c2d5316
MD5 2645348ba225368c47e1b5556c810f56
BLAKE2b-256 b18d3fdc3a206abdd6ce49bf16a0bc79c6e352b74a6c176ec75b60c6bc992985

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 74350855eafd87c4f842caf6b01385d856721c7d39db800e75b741d73712bb79
MD5 03b6b4744516049ee4011b62b09bad5c
BLAKE2b-256 0216d9d0fee55f8a172c88e266e50a589ab4c8c292cac92f0f1fd34430817b0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d5982e95b41c0e4e1c56934a86a3efc874928d6d1baa83c4b422d412e4e60b0f
MD5 5d148a1832cf02acafa801467fbdbfa7
BLAKE2b-256 85651aad82cb9b80e067b31bbc52b4f021cf7d94496ac8efd7885b77ef3227be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.11-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 760ea58b11a2073492e7c2b0443c484c8d27c50bac27990123483bc8185fb97d
MD5 3d4e88b21758dfe5c18005313915be2b
BLAKE2b-256 5b4cfa414a27fd8991b02d5ff663026407030edc1668c453afa7b34a6094904d

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.16

29 files

0.8.15

29 files

0.8.14

29 files

0.8.13

29 files

0.8.12

29 files

This release

0.8.11 This release

29 files

0.8.10

29 files

0.8.9

29 files

0.8.8

29 files

0.8.7

29 files

0.8.6

29 files

0.8.5

29 files

0.8.4

29 files

0.8.3

29 files

0.8.2

29 files

0.8.1

29 files

0.8.0

29 files

0.7.20

29 files

0.7.19

29 files

0.7.18

29 files

0.7.17

29 files

0.7.16

29 files

0.7.15

29 files

0.7.14

29 files

0.7.13

29 files

0.7.12

29 files

0.7.11

29 files

0.7.10

29 files

0.7.9

29 files

0.7.8

29 files

0.7.7

29 files

0.7.6

29 files

0.7.5

29 files

0.7.3

29 files

0.7.2

29 files

0.7.1

29 files

0.7.0

29 files

0.6.12

29 files

0.6.11

29 files

0.6.10

29 files

0.6.9

29 files

0.6.8

29 files

0.6.7

29 files

0.6.6

29 files

0.6.5

29 files

0.6.4

29 files

0.6.3

29 files

0.6.2

29 files

0.6.1

29 files

0.6.0

29 files

0.5.10

29 files

0.5.9

29 files

0.5.8

29 files

0.5.7

29 files

0.5.6

29 files

0.5.5

29 files

0.5.4

29 files

0.5.3

29 files

0.5.2

29 files

0.5.1

29 files

0.5.0

29 files

0.4.16

29 files

0.4.15

29 files

0.4.14

29 files

0.4.13

29 files

0.4.12

29 files

0.4.11

29 files

0.4.10

29 files

0.4.9

29 files

0.4.8

29 files

0.4.7

29 files

0.4.6

29 files

0.4.5

29 files

0.4.4

29 files

0.4.3

29 files

0.4.2

29 files

0.4.1

29 files

0.4.0

29 files

0.3.10

29 files

0.3.9

29 files

0.3.8

17 files

0.3.7

5 files

0.3.6

5 files

0.3.3

4 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page