Skip to content

Commit eb8ab1c

Browse files
Technologicatclaude
andcommitted
CHANGELOG: final tally — 29 modules annotated, cleanups documented
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8c690e9 commit eb8ab1c

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@
2929
- `unpythonic.net.client`: `connect()` is now a thin public shim over a private `_connect(..., _input=None)`. The `_input` seam lets tests drive the REPL loop without monkey-patching `builtins.input` globally. Public API unchanged.
3030
- `unpythonic.net.client`: `import readline` moved from module top into `connect()`, with a three-tier fallback (`readline``pyreadline3` → graceful degradation). POSIX behaviour unchanged; the module is now importable on Windows.
3131
- `unpythonic.net.tests.fixtures.nettest`: binds on port 0 (kernel-assigned), removed a `sleep(0.05)` race-condition bandage, and re-raises worker-thread exceptions instead of swallowing them.
32-
- Type annotations added to public API signatures across 12 modules: `regutil`, `symbol`, `assignonce`, `numutil`, `misc`, `excutil`, `fup`, `fix`, `environ`, `fun`, `it`, `funutil`/`lazyutil`. Convention: `F = TypeVar('F', bound=Callable)` for callable parameters, `T = TypeVar('T')` for data values. Covers ~110 functions; the deeply dynamic parts (`curry`, `compose`, `flatten`, TCO, continuations) are left for a future pass.
32+
- Type annotations added to public API signatures (and private helpers/closures) across 29 modules: `regutil`, `symbol`, `assignonce`, `numutil`, `misc`, `excutil`, `fup`, `fix`, `environ`, `fun`, `it`, `fold`, `funutil`, `lazyutil`, `ec`, `singleton`, `env`, `gtco`, `amb`, `tco`, `slicing`, `dynassign`, `gmemo`, `llist`, `fploop`, `let`, `lispylet`, `seq`, `collections`. Convention: `F = TypeVar('F', bound=Callable)` for callable parameters, `T = TypeVar('T')` for data values. Remaining unannotated: `conditions`, `dispatch`, `mathseq`, `typecheck`, `arity` (hard tier — deeply dynamic or inspect-heavy).
33+
- `amb`: `Assignment` renamed to `Choice`; internal `env` class renamed to `Scope`; `MonadicList` constructor standardized to accept a single iterable (like `list`/`tuple`); `Sequence` methods added (`__reversed__`, `__contains__`, `index`, `count`); registered as `Container`/`Iterable`/`Sized`/`Sequence` ABC.
34+
- `slicing`: new `Sliced` and `FupTarget`/`Fuppable` tag types with abstract methods, replacing bare `Any` return types on `islice` and `fup`. Exported in `__all__`.
35+
- `collections`: `_StrReprEqMixin` renamed to `_SequenceReprEqMixin`; `__eq__` now requires `Sequence` and raises `TypeError` for incompatible types (latent bug: previously crashed on non-`Sized` input). `roview._cache` attribute now declared in `__init__`. `_make_negidx_converter.convert` now has explicit `return None` for passthrough path.
36+
- Bare `object()` sentinels replaced with `sym`/`gensym` for debug readability: `ec.py` (`gensym("anchor")`), `llist.py` (`gensym("fill")`, module-level), `fold.py` (`sym("_uselast")`), `test_conditions.py`, `test_collections.py`.
3337

3438

3539
---

0 commit comments

Comments
 (0)