Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: Oaklight/zerodep

v2026.6.13

13 Jun 04:09
@github-actions github-actions

Choose a tag to compare

New Modules

  • jsonx (v1.0.0): renamed from jsonc, now an extended JSON parser supporting JSONC (comments + trailing commas) and JSONL/NDJSON. New API: loads_lines, load_lines, dumps_lines, dump_lines. Batch fast-path matches ndjson speed on clean JSONL. (#95, #99)

New Features

  • readability (v0.2.0): Expose best-candidate score in ReadabilityResult (#97). Extended score propagation from 2 to 4 ancestor levels for deeply nested SPA pages (#98).

Enhancements

  • config: updated internal dependency from jsonc to jsonx with backward-compatible fallback to legacy jsonc module.
  • CLI: added replaced_by mechanism — zerodep add jsonc now installs jsonx with a migration notice; zerodep outdated detects local jsonc.py and suggests upgrading.
  • CLI: new modules now start at version 0.0.0 (sentinel); version-check --strict blocks release if any module is unbumped.

Bug Fixes

  • httpserver: use chunked transfer encoding for SSE streaming responses (#101).
  • CLI: fixed cmd_bump crash when no modules were bumped (empty rows in table formatting).

Performance

  • jsonx: loads_lines uses batch parsing (join lines into JSON array, single json.loads call) for clean JSONL, achieving ndjson-level performance (10 lines: 5.1 μs vs ndjson 6.6 μs). Falls back to per-line JSONC processing when comments are present.

Infrastructure

  • Release workflow: replaced auto-bump with version-check --strict gate — releases are blocked if any module has content changes without a version bump.
  • Sync Readability Patterns workflow: fixed to use master branch (readability module is no longer on a feature branch).

Migration

Downstream repos using jsonc module should update:

  • _vendor/jsonc.py_vendor/jsonx.py
  • from jsonc import loadsfrom jsonx import loads
  • Or simply run zerodep add jsonc — it now installs jsonx automatically with a migration notice.

Full Changelog: v2026.6.1...v2026.6.13

Assets 2
Loading

v2026.6.1

01 Jun 19:18
@github-actions github-actions

Choose a tag to compare

What's Changed

  • bench: add real-world fixture data for parser modules (#83) by @Oaklight in #88
  • feat(bench): expose min/max/stddev/P95 in benchmark reports by @Oaklight in #89
  • feat(bench): add tracemalloc memory benchmarks for parser modules by @Oaklight in #90
  • feat(bench): geometric scale curves for yaml/soup/protobuf/multipart by @Oaklight in #91
  • fix(bench): pair scale-curve tests by matching parametrize suffix by @Oaklight in #92
  • fix(httpclient): URL-encode dict data without files by @Oaklight in #94

Full Changelog: v2026.5.17...v2026.6.1

Contributors

Oaklight
Loading

v2026.5.17

17 May 03:51
@github-actions github-actions

Choose a tag to compare

New Modules

  • multipart: zero-dependency multipart/form-data parser and encoder (RFC 7578 / RFC 2046). parse_multipart(), encode_multipart(), extract_boundary() with Part dataclass. Boundary-split algorithm using bytes.find() for C-level performance — 3-7x faster than python-multipart. Robust boundary detection, Content-Transfer-Encoding (base64/quoted-printable), RFC 5987 filename* support. Security limits: max_part_size (10 MB), max_parts (1000). 57 correctness tests + 11 benchmarks.

Bug Fixes

  • httpclient: Remove redundant global asyncio.Lock() / threading.Lock() from AsyncClient / Client that serialized concurrent requests and could cause deadlocks. Connection pools already provide internal fine-grained locking. (#76)

Infrastructure

  • Added docs/changelog update workflow guidance to AGENTS.md.

Full Changelog: v2026.5.5.3...v2026.5.17

Loading

v2026.5.5.3

10 May 17:25
@github-actions github-actions

Choose a tag to compare

jsonschema: Generic JSON Pointer $ref Resolution (RFC 6901)

resolve_refs() now handles any local JSON Pointer fragment, not just #/$defs/ and #/definitions/. This enables resolving OpenAPI-style references like #/components/schemas/XXX, making it a drop-in replacement for jsonref.replace_refs().

Also adds circular reference protection to prevent infinite recursion on self-referencing schemas.

Module Version Bumps

Module Version
jsonschema 0.1.0 → 0.2.0

Full Changelog: v2026.5.5.2...v2026.5.5.3

Loading

v2026.5.5.2

05 May 06:10
@github-actions github-actions

Choose a tag to compare

Module Version Bumps

Module Version
validate 0.4.3 → 0.5.0

Corrects the version for the FieldValidator and model_validator addition — new feature warrants a minor bump, not patch.

Full Changelog: v2026.5.5.1...v2026.5.5.2

Loading

v2026.5.5.1

04 May 19:24
@github-actions github-actions

Choose a tag to compare

Highlights

httpclient: SOCKS5 Proxy Support (#72)

Native SOCKS5 proxy support (RFC 1928) with username/password authentication (RFC 1929), implemented directly in the module with zero external dependencies.

from httpclient import get, Client
# SOCKS5 proxy
r = get("https://api.example.com/data", proxy="socks5://proxy:1080")
# With authentication
r = get("https://api.example.com/data", proxy="socks5://user:pass@proxy:1080")
# Session-level
with Client(proxy="socks5://proxy:1080") as c:
 r = c.get("https://api.example.com/data")
  • Both sync (Client) and async (AsyncClient) supported
  • HTTPS over SOCKS5 tunnel works out of the box
  • Streaming responses work through SOCKS5
  • ~6-15x faster than httpx[socks] in benchmarks

CLI Bug Fixes

  • _list_release_tags() now filters legacy project-level SemVer tags (v0.x.y) that overlap with per-module SemVer and caused false content-hash comparisons in _find_changed_modules().
  • Version-change detection uses != instead of > so that intentional version reverts are not misclassified as "modified".

Module Version Bumps

Module Version
httpclient 0.3.1 → 0.4.0

What's Changed

  • feat(httpclient): add SOCKS5 proxy support by @Oaklight in #73

Full Changelog: v2026.5.2.1...v2026.5.5.1

Contributors

Oaklight
Loading

v2026.5.2.1

02 May 09:57
@Oaklight Oaklight

Choose a tag to compare

Hotfix for v2026.5.2.

Fixes

  • CLI: version-check and bump no longer incorrectly auto-bump brand-new modules that have no prior release tag. New modules now show "new (initial release)" instead of "new (needs version bump)".
  • Module versions: Reverted incorrect version bump on 5 new modules — httpserver (0.1.0), websocket (0.1.0), cdp (0.1.0), useragent (0.1.0), synctex (0.2.0).
Loading

v2026.5.2

02 May 09:29
@Oaklight Oaklight

Choose a tag to compare

New Modules

  • websocket (0.1.0) — Zero-dependency RFC 6455 WebSocket client with sync + async support. WebSocketClient and AsyncWebSocketClient for ws:// and wss:// connections. Full protocol: upgrade handshake, text frame encoding/decoding with client-side masking, ping/pong auto-response, close frame exchange. TLS with optional cert verification. ~1000 lines, stdlib only. 27 correctness tests + 8 benchmarks (vs websockets).
  • cdp (0.1.0) — Zero-dependency Chrome DevTools Protocol client for headless browser automation. High-level API: get_rendered_text() / get_rendered_html() for one-call SPA content extraction. Low-level API: target management, navigation, JS evaluation, user-agent spoofing. Auto-discovers browser debugger WebSocket URL. Depends on sibling websocket module. ~900 lines, stdlib only. 18 correctness tests + 10 benchmarks.
  • httpserver (0.1.0) — Zero-dependency async HTTP server with Flask/Microdot-compatible decorator routing. @app.route(), @app.get(), @app.post() etc. Path parameters with type conversion. Return value coercion (dict → JSON, str → text, tuple → status/headers). StreamingResponse for SSE, FileResponse for static files. Middleware hooks, graceful shutdown. ~1000 lines, stdlib only. 58 correctness tests + 26 benchmarks (vs Flask, microdot, bottle).
  • useragent (0.1.0) — Lightweight Chrome/Edge User-Agent string generator with Client Hints headers. Realistic UA strings for Windows, macOS, Linux (desktop) and Android (mobile). Deterministic output via random.seed(). ~470 lines. 47 correctness tests + 8 benchmarks (2-3x faster than ua-generator).
  • synctex (0.2.0) — Zero-dependency SyncTeX bidirectional search parser (PDF ↔ source mapping). parse_synctex(), inverse_search(), forward_search(). Supports configurable path prefix stripping for Docker/remote builds. 29 correctness tests.

Enhancements

  • CLI: zerodep new --from FILE — create modules from existing Python source files with automatic frontmatter injection
  • sparse_search benchmarks: Added bm25s comparison and Zipf-distributed scale tests
  • httpserver benchmarks: Concurrent serving (10 simultaneous requests), sync vs async handler overhead, large payload (~30KB JSON); Flask added as 4th benchmark target

Infrastructure

  • Automated PyPI publish workflow on GitHub Release
  • AGENTS.md for unified AI coding assistant instructions (Claude Code, Codex, Cursor, Copilot, Gemini CLI)
  • Live benchmark dashboard badge added to README and docs

Full changelog: https://zerodep.readthedocs.io/en/latest/changelog/

Loading

v2026.4.27

27 Apr 19:31
@github-actions github-actions

Choose a tag to compare

Highlights

New Modules

  • llmstxtllms.txt parser and markdown URL candidate finder, with discover() for site-level probing
  • png — PNG/BMP image codec with matrix compression API

New Features

  • markdown 0.4.0 — GFM strikethrough (~~text~~), task lists (- [ ] / - [x]), extended autolinks
  • qr 0.3.2 — qr_to_png() and qr_to_svg() image output (depends on new png module)
  • validate 0.4.2 — FieldValidator for transform+validate, model_validator for cross-field validation
  • sparse_search 0.4.0 — RRF (Reciprocal Rank Fusion) and MMR (Maximal Marginal Relevance) post-retrieval re-ranking
  • soup 0.6.0 — CSS pseudo-selector support
  • protobuf 0.4.3 — byte_size() method for size calculation without serialization

Performance

  • protobuf — varint fast-paths, write-to-buffer encoders, _is_default_value specialization, encoder dispatch binding, map entry type caching
  • png — optimized BMP codec, PNG filters, and mode conversion

Infrastructure

  • Refine module categories from 7 to 12 fine-grained groups: network, protocol, serialization, validation, text, config, terminal, crypto, image, process, storage, devtools
  • Rename scripts/_scripts/ (internal convention)
  • Auto-generate modules/index.md during docs build from manifest.json + config
  • Fix version-check false positives from old project-level SemVer tag collisions and wrong primary file selection

What's Changed

  • perf(protobuf): optimize encode and decode hot paths by @Oaklight in #53
  • perf(protobuf): optimize encode/decode hot paths and add byte_size() by @Oaklight in #54
  • feat(soup): add CSS pseudo-selector support by @Oaklight in #55
  • feat(markdown): add GFM strikethrough, task lists, and extended autolinks by @Oaklight in #56
  • feat(png): add PNG/BMP image codec with matrix compression API by @Oaklight in #57
  • perf(png): optimize BMP codec, PNG filters, and mode conversion by @Oaklight in #58
  • feat(qr): add PNG and SVG image output by @Oaklight in #59
  • feat(validate): add FieldValidator and model_validator by @Oaklight in #60
  • feat(sparse_search): add RRF and MMR post-retrieval re-ranking by @Oaklight in #61
  • feat(llmstxt): add llms.txt parser and markdown URL candidate finder by @Oaklight in #63
  • feat(llmstxt): add discover() for site-level llms.txt probing by @Oaklight in #64

Full Changelog: v2026.4.25...v2026.4.27

Contributors

Oaklight
Loading

v2026.4.25

25 Apr 06:24
@Oaklight Oaklight

Choose a tag to compare

New Modules

  • JSON Schema module: zero-dependency JSON Schema flattening & sanitization. flatten_schema() resolves $ref, merges allOf (deep-merge with type intersection, numeric constraint tightening, required union), simplifies anyOf/oneOf (nullable detection, single-variant unwrap), and strips unsupported keywords. Each phase is independently callable: resolve_refs, merge_allof, simplify_unions, sanitize. Benchmarked against allof-merge (JS) across 5 complexity tiers — 1.7-5.3x faster. 57 unit tests + 13 cross-implementation correctness tests.
  • Readability module: zero-dependency article content extractor ported from Mozilla Readability.js. extract() performs full article extraction with metadata (title, author, excerpt, published_time, site_name, lang, dir). is_probably_readable() provides a quick readability heuristic check. Supports JSON-LD and OpenGraph metadata extraction. 2-level retry (ruthless on/off) for robust extraction. 18 Mozilla Readability.js test fixtures for cross-validation. Three-way benchmark: zerodep vs readability-lxml vs Mozilla JS. Depends on soup module (no pip dependencies).

Enhancements

  • Soup module: extended with tree mutation and serialization APIs — append(), insert(), extract(), replace_with(), unwrap() for tree manipulation; to_html() / __str__() for HTML serialization; __setitem__ / __delitem__ for attribute setting/deletion; Soup.new_tag() factory method for creating detached Tag nodes.

Performance

  • A2A module: optimized serialization and deserialization paths — serialization is now 2.2-2.6x faster than a2a-protocol (previously 1.4-2.1x slower). Deserialization narrowed from 1.8-4.1x slower to 1.1-1.7x slower. JSON round-trip is now 1.4-1.5x faster end-to-end.
  • Cache module: optimized TypedKey construction, decorator wrapper path, and LFU eviction. LRU decorator overhead is now 1.2x faster than cachetools. LFU eviction now ~equal (previously 1.4x slower).
  • PersistDict module: optimized SQLite write performance — PRAGMA synchronous=NORMAL, commit_every parameter for batched writes.
  • QR module: optimized encoding path — short inputs now only 1.1x slower (previously 2.1x). Medium/long inputs now 1.1-1.2x faster (previously 1.7-1.9x slower).
  • Readability module: optimized scoring and tree-walking — small pages 2.1x faster, medium pages now 1.2x faster (previously 2x slower). Large pages improved from 2x slower to 1.4x slower vs readability-lxml.
  • Semver module: optimized parse, comparison, and property access. Parse ~1.3x faster, sort ~1.4x faster, compare ~1.4x faster, property access ~4.5x faster.

Bug Fixes

  • Docs: fixed ReadTheDocs build failure caused by searchsparse_search module rename.
  • zerodep CLI: fixed bump command double-bumping modules whose version was already incremented before tagging.

Full Changelog: v2026.4.15.1...v2026.4.25

Loading
Previous 1
Previous

AltStyle によって変換されたページ (->オリジナル) /