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.14) 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.14.tar.gz (810.1 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.14-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

argus_redact-0.8.14-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.14-cp312-cp312-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

argus_redact-0.8.14-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.14-cp311-cp311-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

argus_redact-0.8.14-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.14-cp310-cp310-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.14-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.14.tar.gz.

File metadata

  • Download URL: argus_redact-0.8.14.tar.gz
  • Upload date:
  • Size: 810.1 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.14.tar.gz
Algorithm Hash digest
SHA256 b8a6e5155ce4c354df549da1d97a6bb618ceb94dd9c934fb8a3b958f0c40c819
MD5 408a4e7451f5af0ddfed22ffffe0b71d
BLAKE2b-256 ce2532a10cfbb048636906eb3baebeb721158fcb015d9ed38a2c60aaeb766ae5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4098c500ab8d3c828a659c72387d28fd03ef01327a3abbbe65a2c26e0cf33038
MD5 2221febe29284074ef151380a177a369
BLAKE2b-256 1c212852fb939cfd97dcd906f7c186dccf2d65972397b32d29a8602ea921b4ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f916a857ca59bd3cc2a524c323d764b0b0a29d67c7381d33dc5ad48292547e7b
MD5 5206c01e861313b51fabdd59dbc49776
BLAKE2b-256 da5a6a6b1d48b876d0737160e21d3d574cfef8d7b4fd920ebfabbe65e58c54e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2e27527f4eb59018a2a0b36ac9ec7c3183b1274d2a78c26d03ae88ae5bad2cb2
MD5 f2804f000b62dbd7724e0b97899c115b
BLAKE2b-256 c7295439d4a0571b1c80c9d4f91faa87a31cdfb7c7d54afcf70277c668824bd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a102534dd314d965cc443e02e57dcae1d1059327024f50b060f92bc9304a9e74
MD5 9acdb93def94d5de84f75d91f649fd60
BLAKE2b-256 e87a83cde52a1dcb341d1f117f3b838681bb558331f6482c50e0298a868ff47b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ce6939fc68789f60a972d02b7441095925b8c9a7f3d571519ac6ac57e385987
MD5 46a12aae75b15703f630d50824625151
BLAKE2b-256 d34bd171008121d0f36313952fa88b8a85aa30a2d82e629efefac007d0bcdcbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 602ef87c3a5c209effa307d1cc65520ec609b19ca57b08267b3531fbbf4457ca
MD5 3bbc3f6f9a6e42a33f3d6543b3f60227
BLAKE2b-256 388432b9010e72cc00909ed0ff89e76e0291ca7fe8b646bcb4fe237f42996046

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4a95253079d78248609efb4545d5b61c9be300f702b86d3e2a7afa8c1b1b1edd
MD5 f626c086e7134307ce676c6296747e73
BLAKE2b-256 a41dcf0000cef9bc56fdd124fcf80b97a2acf7f517238cc872ca0048c9a29f07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1368b542732e2d99a91b7a94a8b254666c3f91e983987b4e736b7f49fb40165b
MD5 ae3306af291809c2823c403384e7cef4
BLAKE2b-256 bc8f5754e4410d042c4e23d8e0d99b84f71b2ad5d0987a3a1b0537ca9df81aa2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 643e467df97c4664dc734313ce3b0ca3a4439b9f244822917a749234a51e9528
MD5 e0d13c12c88cc614208263fc29982a26
BLAKE2b-256 e69c013e6f614d958fbf9ebc83c0be796bdba2a5bad96885c0761585ede09bb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c52931680d4b72ed5a2d3c6fed44d068de748244b08e3f4e60f4db8f0dd2a5cd
MD5 5d8d90d72853088751a5d4247dc9a0c0
BLAKE2b-256 5ddc9d872b410f436f6fb2aa1f10268c16d764861522f6c575d921a3c5e209ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2595849c3f2cda18c47ecd17c3a27f7e5f8af4338dd25bee2bd1ca766fe7d05
MD5 6e4c87d9616aa376ed0beb4f33c3afa4
BLAKE2b-256 c3f8d584b3141c771e7b20841c7230ee62775cfc32aca682b12da46df24f7f04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 435f8f38b3b944c1e5dd0abe16ca691d7e31b06c744d0919ce2bc4b9371dd716
MD5 485db9686dcddd517687f550ecd45481
BLAKE2b-256 79eb23232873d0bdc490a052da4c270f33af80adcabe7d0facdc92f19d4b2154

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 908b715e0dbf5812607af99f66458fee1cddfc82309c8de2df9313a0034796da
MD5 7d59bb989336bbc6149efc8154b947d2
BLAKE2b-256 79b0f164329b262ec588122cb395cf32e885bb75f509f99c6d020353b3b34bc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0f41c481a21713e6bbcbe8a042c1bd7b1ac9ba8588aa0bfbc4768868c18b3127
MD5 502f84587b496b60e468eae630e06fb3
BLAKE2b-256 9687fc51118355dd51493aed3e219f8f5f0eb32ea7898b4a7a6204c31cb37d0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c8d0e650fc2f00c078cfc832a29b315dd7b7a372eb7b700a179815590a55ac33
MD5 ab96ed61e49164f6ee523a2eee78e368
BLAKE2b-256 b813be17c8d757764dec48af4cc32e92bae86da26a60d3b5fdd0ced7ff132b3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 64294bbfc5a2d80be5ee6bac377d915ff655576f71d42b01d1b4ff37d72c69f2
MD5 4f193cb2606aa7f153473c36352576cd
BLAKE2b-256 f5c90f8dad6aa0c4919a600148e9b51b15549874ee51ae624b1632e456ce8a7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f427b14e5ab1939c4a3454ef6c065d819727a1d9da687495de85d27a4a24206e
MD5 5990536a2110ff0af63a66f8ad1242d7
BLAKE2b-256 bcfd3ce727ca934656df2d7cf4a2e19c45894c0bdd9e528039f207b30cb9fa4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7988513d08621d41e1cee382e13f12c91b98a5a2982ab22594d2873edcfac8ea
MD5 681b2eeb909e2865b459ce535ffbf30e
BLAKE2b-256 6af59a24814c5ebbb80a2609a2589cdc5763fa347e31f6a1805b70c306a38d94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff110a0d2d7a863c4f5387cff62415a9946ebfb87ad5124162a1eb0c43ff23cd
MD5 369994705a1cef7336d6085b143420cc
BLAKE2b-256 9a3ca6fedc384585498f673a02da73615105c832751c2cc4ae34ab9fbde11a46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 397bfe663c9806ea92c68eb4973648336214ef6554a96d6af2aaf77a1e22df87
MD5 a6584c9be95ae0056941a04ab077c19f
BLAKE2b-256 55983ec3b91f14fddd2824ea4b1ebccd18d6e60dc46e8f1731da4ffbdf114def

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dd05d59703fdedf0a7e98a3e1e94ca0ef0c952dc54c1db1e8bcac31dd8ff56ad
MD5 1e8ba8e9e649a46c70260f59ad03d305
BLAKE2b-256 7198654a846279fdc83e988a2fa99a1b81e85724e37d9265b71ae44da3aefab3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 16b7dffea13407ffbcec58db007e007168e11c1733e4b5de3362ef04e53f5e38
MD5 cb448eeaa7f5316cfcbcd82b27808105
BLAKE2b-256 a8f7245335b1d242c1039d54e724c44563dd004b57c6abd930c078830b777d9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3910979e23fffab1662fda1ad83aa46be9507509ab4f7a2664114e69ba411980
MD5 e3bc1c4593413fdf28b7b3e0717a3ab1
BLAKE2b-256 b1f129b980fe1ef5edcd075140cedc7c6fe4ed709453eacd46ec07656dcfa08f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b0c8106541fe849291ba350dad34ef3f8b8ee7839fc8e306624440aa25f84085
MD5 be058e6ee113bb95f0df81e7c8fee1d2
BLAKE2b-256 76f3d0e768c279629b42d6d6d77bc7b49b794db773b1ced3ddda122b05e8239a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a3b20d8c550cb11fef760bf336f3b1b468df942151f07388dc8b95a70d08b03
MD5 cd2e6711cb2df7039d4fc37d9508da18
BLAKE2b-256 6815b7dd29414e42345a93c7000656ce7883f8a2e89841b2807b8b17a635be78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bfa96018d599185d10abaae83409251aa8ea792a6729acb159db7bc98d1d26d1
MD5 6bac0c0f07171710d805d3f201bd14f8
BLAKE2b-256 0df22335a7fe0c8cfe976a275f625dbac52e0fd1ad2919e5516d9e8411769a62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 514c1453d430a12f746747c55e1752f557d03aea0b8722bd406ce199e78a51ff
MD5 4e3de99c893a0817daeb20b9536035f5
BLAKE2b-256 a62521b4ffb38b173a270f246b4a6240a79d4d9a97ce2edf4a438a448baf2e40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.14-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bec7eaa8cb5a9982237896ec72679c816c25f757296c60ddd40383ec42da75a8
MD5 ad252101c207d43b00491ea59bd0c9dd
BLAKE2b-256 a97aaad292b18b10c9dddf7eba98bce0a6b43bcf92d1c42f4298a1379037d22c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.16

29 files

0.8.15

29 files

This release

0.8.14 This release

29 files

0.8.13

29 files

0.8.12

29 files

0.8.11

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