Skip to content
View nripankadas07's full-sized avatar

Block or report nripankadas07

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nripankadas07/README.md

Hi, I'm Nripanka πŸ‘‹

I build small, sharp, dependency-free libraries β€” the kind of thing you reach for when you don't want to pull in a 200-package transitive tree to do one obvious job.

This profile is the home of a 60-night portfolio sprint: two new open-source projects every night, each shipped with rigorous tests, full type coverage, and a real README. So far: 62 / 120 projects, all built to the same bar.


The bar

Every repository on this profile satisfies the same checklist:

  • TDD-built β€” failing tests first, then minimum code to pass, then refactor.
  • 100% line coverage as a default, 100% branch coverage for everything since Night 27. (No "this branch is unreachable" excuses β€” if it's truly unreachable, it gets deleted.)
  • mypy --strict / tsc --strict clean β€” every public symbol typed, no any leaks, py.typed marker shipped on every Python package.
  • Functions ≀ 30 lines, nesting ≀ 3 levels β€” verified by an AST walk before each push.
  • Zero runtime dependencies unless absolutely required. Pure Python (or pure TypeScript) wherever possible.
  • MIT licensed. README with install / quick start / API reference / running tests for every repo.

The portfolio (62 repos)

Parsing, codecs, and wire formats

tomlmini β€” Zero-dep TOML v1.0 common-subset parser; values, tables, AoTs, inline tables, datetimes; rejects ambiguous dotted-key edge cases.

iniparse β€” Zero-dep INI / config parser with section inheritance and ${...} interpolation.

dotenv-mini β€” Strict, predictable .env reader/writer; no $VAR interpolation, full quoting/escape round-trip.

querystring β€” Stable encoder-configurable form-encoding with parse / serialize / merge / pick / omit.

urltemplate β€” RFC 6570 URI Template expansion (levels 1-3), zero deps.

mimedet β€” Pure-Python MIME-type detection from magic bytes (40+ formats), no libmagic.

mimedb β€” MIME-type ↔ extension lookup (~190 baked-in types) with category classification, type/subtype parsing, runtime-extensible registry.

csvquote β€” RFC-4180 CSV field quoting/unquoting + single-line split_row, strict/lenient.

csvtable β€” Pretty-print CSV/TSV (or any rows) as aligned ASCII / Unicode / Markdown / plain tables β€” column-width inference, per-column align, 3-mode truncation, wide-char width.

csvtail β€” Streaming last-N rows of a CSV/TSV in constant memory; hand-rolled state-machine parser handles embedded newlines and CR/LF/CRLF.

csvinfer β€” Infer CSV dialect (delimiter, quote, header) from raw text without csv.Sniffer.

mdtable β€” Render GFM Markdown tables from headers + rows with strict pipe escaping and per-column alignment.

bencode β€” Strict, dependency-free BitTorrent-style bencode encoder/decoder. Round-trips are exact: rejects every non-canonical encoding.

morse β€” International Morse Code encoder/decoder with prosigns and Farnsworth timing. Includes the classical PARIS-derived inter-letter / inter-word gap formula.

Encoding and binary

hexdump β€” Format bytes as canonical hexdump output; round-trip parse back to bytes.

hexstr β€” Pack/unpack ints & bytes into hex strings with prefixes, widths, sign modes, byte order.

base62-ts β€” Base62 encoder/decoder for non-negative integers and byte arrays, custom alphabets. (TypeScript)

uuidgen β€” UUID v4/v5 batch generator with base62 short form, strict parse, named namespace tables.

Numbers, ranges, and time

humanint β€” Parse and format human-readable integers (1.5k, 2M, 3.2B).

numparse β€” Forgiving parser for loose numeric strings ($1,234.56, 1.5k, 2 MiB, 1h30m, 12.5%).

numfmt β€” Locale-free number formatter (currency, percent, scientific).

durfmt β€” Format timedeltas and numeric seconds as human durations (1h 30m 12s, 01:30:12), zero deps.

timeago β€” Human-readable relative time formatting (3 hours ago, in 2 days).

chronoparse β€” Natural-language date/time parser, zero deps.

crontab-lite β€” Parse and evaluate standard cron expressions, zero deps.

unitcalc β€” Simple unit conversion library (length, mass, temperature, time).

semverlite β€” Strict semver parsing and comparison.

rangeset β€” Manage non-overlapping integer ranges with set operations.

randpick β€” Weighted random sampling β€” Vose's alias method (O(1) per pick), cumulative-bisect, and Efraimidis-Spirakis A-Res for sampling without replacement.

colourdist β€” CIE colour- difference metrics (CIE76, CIE94, CIEDE2000) plus sRGB ↔ XYZ ↔ Lab conversions, pure Python.

Strings, search, and text

stringcase β€” Convert strings between snake / camel / pascal / kebab / constant / dot / title / path cases.

slugify-x β€” Unicode-aware URL slug generator.

levendist β€” String distance metrics: Levenshtein, Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, LCS.

wordwrap β€” ANSI-aware paragraph wrap / fill / shorten with hanging indents and wide-character support.

expand β€” GNU-style tab-to-space expansion + unexpand, custom tab stops, leading-only / all modes.

globmatch β€” fnmatch- compatible matcher with extglob, POSIX classes, ** globstar, AST + backtracking interpreter.

pathmask β€” Glob-style path matcher with negation and brace expansion.

shell-quote β€” Zero-dependency POSIX shell quoting, splitting, and safety checks.

markdownlint β€” Validate Markdown against common style rules.

pigeon β€” POSIX gettext-style Plural-Forms parser/evaluator with built-in locale tables.

Network and telephony

cidrcalc β€” IPv4 CIDR arithmetic β€” parse, network/broadcast, membership, subnets, aggregate. No ipaddress dep.

phonenumber-mini β€” E.164 phone-number normalisation, zero deps, 50+ ITU country codes, no phonenumbers dep.

Data structures and iteration

bitvec β€” Compact bit vector with set operations, slicing, and efficient storage.

trie β€” Trie (prefix tree) with fast prefix search and autocomplete.

ringbuf β€” Fixed-capacity ring buffer with O(1) append, overwrite-oldest, indexable, reversible.

flatdict β€” Flatten / unflatten nested dicts with dotted keys.

strtable β€” Format tabular data as aligned ASCII/Unicode tables.

dotpath β€” Dotted-key get/set/has/del over nested dicts and lists, like jq's path syntax minus the language.

chunkby β€” Iterator helpers β€” chunk by size, sliding windows, batch by predicate, partition, pairwise, take/drop/nth, flatten.

Caching, retry, async control

tinycache β€” Thread-safe LRU + TTL cache decorator.

retryback β€” Tiny retry decorator with exponential backoff and jitter.

tokenring-ts β€” Token-bucket + leaky-bucket rate limiters with FIFO async consume and an injectable clock for deterministic tests. (TypeScript)

tsmemo β€” Type-safe memoize for sync and async functions with TTL, LRU eviction, custom keys, and in-flight call de-duplication. (TypeScript)

emitter-ts β€” Strict typed event emitter with sync/async dispatch, once/off, and listener-error isolation. (TypeScript)

Validation and decoding

decoder-ts β€” Type-safe runtime JSON validators built from composable decoder combinators. (TypeScript)

Diff, patch, and colours

diffstat β€” Compute unified diff statistics (additions, deletions, changes).

envdiff β€” Compare two .env files and report drift.

jsonpatch-lite β€” Minimal RFC-6902 JSON patch implementation.

colortool β€” Convert and manipulate colors across HEX / RGB / HSL.

TypeScript developer experience

tsparser β€” Tiny TypeScript tokenizer/parser for a subset of expressions.

parseopts-ts β€” Zero-dep argv parser: typed options, aliases, negatable booleans, arrays, choices, -- terminator, stop-at-positional.

argv-strict β€” Strict typed argv parser β€” every option has a typed schema; booleans never coerced from strings.


How to read these repos

Pick any project. The README opens with one sentence telling you what it does. The next paragraph tells you what it doesn't do β€” the non-goals matter as much as the surface area. Then quick start, then API reference, then running tests.

Tests aren't an afterthought. Every public function has a happy-path test, an edge-case test, and an error test. Coverage is reported in the README. The type-checker (mypy --strict for Python, tsc --strict for TypeScript) is part of the test gate.

If you're a recruiter or maintainer evaluating my work, the densest reads are:


What's next

Nights 36-60 of the sprint will fill out the remaining 58 projects. Themes on the upcoming list: a few more parsers (a TS-side bencode sibling, a JSON-Patch generator that pairs with jsonpatch-lite, a strict ULID/KSUID generator), a runtime number-theory library, a streaming-friendly JSON streaming reader, and the flagship β€” microbpe, a from-scratch tokenizer trainer with byte-pair-encoding semantics.

Build log lives in forge-builds/ (private). State files (SOUL.md, MEMORY.md, BUILD-LOG.md, CHRONICLE.md) track every commit night by night.


Built nightly. Tested ruthlessly. MIT licensed.

Pinned Loading

  1. agent-framework agent-framework Public

    Lightweight agent orchestration with tool registration, memory, and ReAct planning loops

    Python

  2. rag-pipeline rag-pipeline Public

    Production RAG pipeline with pluggable chunking, vector stores, and retrieval evaluation

    Python

  3. bencode bencode Public

    Strict, dependency-free BitTorrent-style bencode encoder/decoder. Round-trips are exact: rejects every non-canonical encoding.

    Python

  4. decoder-ts decoder-ts Public

    Type-safe runtime JSON validators built from composable decoder combinators.

    TypeScript

  5. globmatch globmatch Public

    Zero-dependency fnmatch-compatible Python glob matcher with extglob, POSIX character classes, and ** globstar.

    Python

  6. randpick randpick Public

    Weighted random-sampling helpers β€” Vose's alias method, cumulative-bisect, Efraimidis-Spirakis A-Res. Zero dependencies.

    Python