SDE download/import + offline system & station lookups (#51) #58

Merged
Latte merged 1 commits from feat/sde-import into dev 2026-06-27 19:27:41 +00:00
Owner

Closes #51.

  • familiar sde download [url] — streams + bz2-decompresses the Fuzzwork SQLite SDE into the local store (FAMILIAR_SDE_URL overridable); plus familiar sde status / path.
  • sde.py gains download_sde() (injectable transport for tests) and offline system_by_id/name + station_by_id.
  • universe.get_system / get_station now prefer the SDE when available (no network), falling back to ESI.
  • Tests use a tiny on-disk SDE fixture + a bz2'd download served via mock transport — no real multi-hundred-MB download in CI.

159 tests, coverage 90.8%. Built by a subagent off current dev.

Closes #51. - `familiar sde download [url]` — streams + bz2-decompresses the Fuzzwork SQLite SDE into the local store (`FAMILIAR_SDE_URL` overridable); plus `familiar sde status` / `path`. - `sde.py` gains `download_sde()` (injectable transport for tests) and offline `system_by_id/name` + `station_by_id`. - `universe.get_system` / `get_station` now prefer the SDE when available (no network), falling back to ESI. - Tests use a tiny on-disk SDE fixture + a bz2'd download served via mock transport — no real multi-hundred-MB download in CI. 159 tests, coverage **90.8%**. Built by a subagent off current `dev`.
Latte added 1 commit 2026-06-27 19:25:57 +00:00
feat(sde): bulk-load downloader + offline system/station lookups
CI / lint (pull_request) Successful in 51s
CI / test (pull_request) Successful in 59s
CI / publish (pull_request) Has been skipped
CI / lint (push) Successful in 51s
CI / test (push) Successful in 58s
CI / publish (push) Successful in 51s
463ea84360
Implements issue #51. Adds a Fuzzwork SDE downloader/importer and
expands the offline lookup layer beyond item types.

- sde.py: SDE_URL constant (FAMILIAR_SDE_URL override) and
  async download_sde() that streams + bz2-decompresses the dump
  incrementally to sde_path(), resetting the cached connection.
- sde.py: system_by_id/system_by_name/station_by_id offline lookups,
  all degrading to None when the table/file is missing.
- universe.py: get_system/get_station prefer the SDE when available,
  falling back to ESI otherwise (signatures unchanged).
- __main__.py: `familiar sde download|status|path` subcommands.
- tests: download_sde via injected MockTransport, new lookups + None
  fallbacks, and SDE-vs-ESI fast-path/fallback for get_system/station.
- README: short offline-SDE setup note.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Latte merged commit 463ea84360 into dev 2026-06-27 19:27:41 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Hiddenden/familiar#58