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', salt=42)
('员工P-83811,身份证ID-03292,电话138****5678',
 {'P-83811': '张三', 'ID-03292': '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):

text = "员工张三,身份证110101199003074610,电话13812345678"
redact(
    text,
    lang="zh",
    salt=42,
    unified_prefix="R",
    config={
        "phone": {"strategy": "remove"},   # mask types must opt in to participate
        "email": {"strategy": "remove"},
    },
)
# → "员工R-83811,身份证R-03292,电话R-68060"

<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 (measured at v0.7.16 — Layer-1 detection has changed since; see benchmark-report for currency)

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.15) Next milestone
Protected 78 PII types, L1-L3. In the PRvL reference suite (24 cases, 42 PII instances per model; v0.7.16 run), 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 pseudonym codes and masks (P-83811, 138****5678) — clear and reversible for audit, but the realistic surface is gone, which can break downstream LLM reasoning. 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.15.tar.gz (809.9 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.15-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

argus_redact-0.8.15-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.15.tar.gz.

File metadata

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

File hashes

Hashes for argus_redact-0.8.15.tar.gz
Algorithm Hash digest
SHA256 762b5dc0f2a837abe24fb5b3dd4199c74d8bd8dd2a6c57fabe8679a804fde2d1
MD5 9349e6f2c7ad13d20324da2a73f3b382
BLAKE2b-256 a99f8b2da84a2079506da47d6e7df28eb37d811f6bdd660d74cf26ab45d54de9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ca1d64294df323b0665e698a744ae4aa76cf48f711c44a7f2599943cdc4ac9d8
MD5 5d67b1a62cfe128ccdeba77a88fe66e1
BLAKE2b-256 f09ba1e793778898ceb37a5e590bb64becf57178dc6a6dedabea18809d12ea9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5093ca74aba34df7e2d73a678013597360dcf80aa581366df4668212c0539307
MD5 c61e06a9ea81ee8c176dd9f8c9550272
BLAKE2b-256 851af60b0f2ae3917dbe8ab6be156b6ddbcd22b10f28d4e31f76e08a2f6771d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 045e1464fd41e11f2690cc6a7ecaa8110e8011640ba5cf55024d5758197f0de1
MD5 dcf2fc94cb3596cd47dfe37903c5bf2a
BLAKE2b-256 b3a8fec630a370faebef62fdb4c883849d5d6cabf09a407e5ab5e766e5fb29c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2508eaf746ebb39ee985bae25d1e04bf427cf33d485ad002829462368c7c409d
MD5 16340d09d88e5733d287b48c2fbb5f89
BLAKE2b-256 9fae9bdde8e5baa975dc7da591e697151107bce0887494444a6352f44a4b451f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ef90740949193d4824ff9943eaa313bf445150c7f7cfd96665c052d1e75981a9
MD5 f9824381d6f633c918318c10a0f0c406
BLAKE2b-256 97d1dd6d33dfc76575ff01b3736df050e4298464e9740368cf3573a641b7a99a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f832bc9bb124572062dda35635b7bb23396367195f36c091eee22dbf3253bc89
MD5 437db49d4a862edd4387af8bcf2a4597
BLAKE2b-256 b3eb794e362bad7fd0a5d0e6a512cb272011df7c952c30a6e74c2f8162dbce1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6af454fedbc7f864a8b47fb6bf1995e176c23ebb91366a86c5a8f45982dde49c
MD5 9ea4b76a49c336b2d2600969a8f1a5fc
BLAKE2b-256 6faa520ef610ed33a3fc00078285c1be78d2f29fa5837d25f4ec99bfdf6be17f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7fa1befa231159cca44cdbdea0117f5cb32443e978b3a83b08f5bc0cbd3e5bdf
MD5 b112767d31a115153e72780bd09f8733
BLAKE2b-256 afec4fbb7ea8a9ed0d7b977ad9bd67d1597aed945915db12bf329f79b5456bc4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5eab5e70dc6ad298a0cf89b96d9c6b0de4be9b4ec485e18b46ce93bbc3754cc5
MD5 3c0c702b08a8cdfb13b8e61862812978
BLAKE2b-256 d2a393cd462c76a851e06a87c046100cd78c9a7a6011a0940d5119c04e416412

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5f9341d795225ba1a972501ae48af7acce83c26ebfe05da6f885bc471e17f9fb
MD5 9e3112e591471ec6a882a0922c81668e
BLAKE2b-256 6245d53fb51c90d2c6ad2bf2e848b272f63e118ebab97962a54b2337f6915e20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05d1a6e7bcbe6848dc2eefad4a06e39babcba4bba90ebb6171a740b1ec350477
MD5 c9c560effe1a0dd2b5eb5e866b3a0230
BLAKE2b-256 4d02d805554bffa0b2c78f74592af2f65d7554673e9f5a22d05b8a45fac18f95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 787284e911bf9030266dafde868d7e7380874cb472c45ebdef53343a5587333b
MD5 65d461d01510f6e3f696412b78a70928
BLAKE2b-256 90523bb199f850d99d12d39cc72dc221b9faa5e30399c072def1ff3ae14d318e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b8688de4372282354661c54f1254bb758f633ea103e02c76431f493d099b928
MD5 c4f8aa673d55a0500d0f1e516c865c10
BLAKE2b-256 e7f203a182d483bb8507888913772c19136f623fffdb586ea688093b011046c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8fcfd109872792b430a42c7c84a4650381c4253259d7e05ac67bc0d4a8eb07e1
MD5 047b78ec389fd207425109dacc02c97a
BLAKE2b-256 d49093cdfa7d24b5208d7d2caf69033b2de5fa295201e1ebc480f7a9119bfc6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4f8cd90c1e7b8d2cb677d0c068c98081e5e9c5aaa3c7edcb49d4af2d4f2a649b
MD5 5e5ce7bcbfbdfc06457b0641c64fa633
BLAKE2b-256 0df762d31b83d5c9d1f30edfaa0d5c09acd2b7178da4bd276073cec5b4ff298d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5a014b77ed70395096e67c34fbeee094a247b326d7c77f4cd857ee7ee4826807
MD5 7fb531cef2712c3e534b669a0199d1cf
BLAKE2b-256 d351cb20c87803ab737615cdb375bd3578b2b12aeba89c20e693e809e9e6f70e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 69292e3024f4bb9987264036295af1b1818c5759abec7b0aa26efe80639d090b
MD5 76c32d3c8a13849c3a89fdfbe7a76ceb
BLAKE2b-256 c173ef55276df1f57d8c69f01f358ea6de30a2ec8222282f5bd111bd56b3fea2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 97c326b3a3afc237f8a8bdf16f546a21b06373b73e909c4bbcc9d06c867b25c8
MD5 c7bb17e24aeef1da42abbfa8d7d4367c
BLAKE2b-256 6b2193fd06f958ab47d0653293606cc0f0ed83028059733c884db7a987310d6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eab3cf72296504e1591cb57076eb876b812fea2eb872fa8ef06d52d4079e567a
MD5 b4ce7d2cf1da515e67f104af51687ad9
BLAKE2b-256 2b5efafb5948ae637f9cd1ad084007b38da46798bdf35d4a780bd6b4f3e6ee50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f7903bba41eecf74a9a7af73bb65a0e35c55bd9ebc2f1390c01b68268889b771
MD5 d014ea17a91dab618e5dc05f88b29932
BLAKE2b-256 5d76ca7e4c4ff3d212a4853e8915063108a3aa979071df32d4166cf3a6dd2826

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c5a72d3f386998c58b5a07dc69c0876d1332ef5b17304c1c3555b4a1b216e61
MD5 6c6e22948943e9885629b259a307b1f2
BLAKE2b-256 b721281e86b834aa1d6b8de4fb1d9ed2eb28f19f8290f99ae37c1fd4276123d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2a36e7785c002235a342c408b52d87bfa3b87f0061bebb24636c8d80b930a105
MD5 3b78f4356868bde82caef226aea56f69
BLAKE2b-256 0049ff1ae4e7da28632fe6b4f5c49922d45215ccb6ad323287b18d2f35d1c708

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7bc1817c81fa5692052bc2780871357acf7c6d0d2622bbc4860043b016f9ae02
MD5 ba416a77108c3422613a3b166609c73a
BLAKE2b-256 28ba62cb01f5ccfa1fb2c48b6873497158a7f1ffa08149becdaedd729405d886

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e5ac104f1bb156e52ad71ea337722086d85c20fc3b1e9ffb1af4db4cece3c4dc
MD5 09ea43f2ea34e9db0050ca5188610382
BLAKE2b-256 760512bbf24f7e8432733eb74e3cb459f7b1aa14db85866cf573ca63c9c27786

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df159a928c977315748b19c450a1bcc16eac00a836d22346517e6ac57eb42e07
MD5 402788fe2f9a7f8215a203c0a8358611
BLAKE2b-256 d3c2e0c40da6d2be86943614bcd001ff3115ad76aade9288801479dc556d6696

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 553d4762ae4474540199375294c5b5b269d8b107dd53cce41a9285439e13aa9e
MD5 190099256c65e406e298e0f5532727c8
BLAKE2b-256 6c4ba4050414fa687278e2acba38509cecc493631eaa6d38c7d783e5d0a11411

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1ebb115ee3c4cf12874c829bc97a8c3b6fd50f9b9f46e269de94791fede83b1
MD5 67d23819373c2a49cd70368bcaf15934
BLAKE2b-256 f0a5efd313152f140c2a2e265418de9bcb9418f657cd6b0322bf242aa8381615

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for argus_redact-0.8.15-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 39112f5a0ccc381b3c225dd11b5582b960235da2e70144e57c9523880172c2d4
MD5 2bcf09acaeda53cd9181a4c058bcd183
BLAKE2b-256 c495c4a1560f1bb174e284d4676dc25efbbacf1d7c897df8c8d4894deebf55c0

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.16

29 files

This release

0.8.15 This release

29 files

0.8.14

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