]> Nutra Git (v1) - gamesguru/getmyancestors.git/commit
Major refactor: Typer CLI, comprehensive tests, and CI improvements
authorShane Jaroch <chown_tee@proton.me>
Thu, 22 Jan 2026 22:01:33 +0000 (17:01 -0500)
committerShane Jaroch <chown_tee@proton.me>
Thu, 22 Jan 2026 22:04:34 +0000 (17:04 -0500)
commitd7b494250a78248dc82e92a2d4f958d741a6a45c
tree174333ca3870905e162ceff16d8a7097f9898e77
parent8a584885736fc66a37514a08bb6450be6767d016
Major refactor: Typer CLI, comprehensive tests, and CI improvements

- Migrate CLI to Typer for tab completion and better argument handling
- Split tree.py into modular tree/ package (core, records, elements, utils)
- Add comprehensive test suite with merge idempotency, session caching, etc.
- Add offline test fixtures via git submodule (res/testdata)
- Set up GitHub Actions CI with Coveralls integration
- Add git-sqlite-filter for reproducible SQLite fixture handling
- Improve merge deduplication for names, facts, notes, and sources
- Fix session cookie/caching and rate limiting
- Add Makefile for common dev tasks

Modernizes the tool with a new CLI, faster and safer networking, and a refactored tree/session architecture to improve reliability and performance. Adds CI and tests, and consolidates packaging for easier development.

- **New Features**
  - New CLI with exclude list and distance options; UTF‑8-safe output.
  - HTTP caching (requests-cache), optional cache-control, and request rate limiting; persistent cookie cache.
  - Offline mode to use cached data without logging in.
  - Place enrichment via Geonames/geocoder with structured Place objects.
  - Clear GUI Tkinter error; first‑run license prompt stored locally.
  - Immigration fact mapping and contributor attribution from change logs.

- **Refactors**
  - New GMASession with cached session; switched to FS IDs; tree split into elements/records; legacy getmyancestors.py removed; entry points updated.
  - Added unit/integration tests and GitHub Actions (Linux/macOS/Windows); Makefile targets; linting/formatting gates.
  - Dependencies consolidated in pyproject; added requests-cache, requests-ratelimiter, geocoder; removed requirements.txt.
  - Fixed merge duplication; idempotent merges via set-based dedup in mergemyanc.
47 files changed:
.envrc [new file with mode: 0644]
.geminiignore [new file with mode: 0644]
.gitattributes [new file with mode: 0644]
.github/ISSUE_TEMPLATE.md
.github/workflows/test.yml [new file with mode: 0644]
.gitignore
.gitmodules [new file with mode: 0644]
.mailmap [new file with mode: 0644]
Makefile [new file with mode: 0644]
README.md
getmyancestors/__init__.py
getmyancestors/__main__.py
getmyancestors/classes/constants.py
getmyancestors/classes/gedcom.py
getmyancestors/classes/gui.py
getmyancestors/classes/session.py
getmyancestors/classes/translation.py
getmyancestors/classes/tree.py [deleted file]
getmyancestors/classes/tree/__init__.py [new file with mode: 0644]
getmyancestors/classes/tree/core.py [new file with mode: 0644]
getmyancestors/classes/tree/elements.py [new file with mode: 0644]
getmyancestors/classes/tree/records.py [new file with mode: 0644]
getmyancestors/classes/tree/utils.py [new file with mode: 0644]
getmyancestors/fstogedcom.py
getmyancestors/getmyanc.py [new file with mode: 0755]
getmyancestors/getmyancestors.py [deleted file]
getmyancestors/mergemyanc.py [new file with mode: 0755]
getmyancestors/mergemyancestors.py [deleted file]
getmyancestors/tests/__init__.py [new file with mode: 0644]
getmyancestors/tests/conftest.py [new file with mode: 0644]
getmyancestors/tests/test_cache_concurrency.py [new file with mode: 0644]
getmyancestors/tests/test_cli.py [new file with mode: 0644]
getmyancestors/tests/test_fork_features.py [new file with mode: 0644]
getmyancestors/tests/test_gedcom_logic.py [new file with mode: 0644]
getmyancestors/tests/test_integration.py [new file with mode: 0644]
getmyancestors/tests/test_main.py [new file with mode: 0644]
getmyancestors/tests/test_merge_idempotency.py [new file with mode: 0644]
getmyancestors/tests/test_session.py [new file with mode: 0644]
getmyancestors/tests/test_session_caching.py [new file with mode: 0644]
getmyancestors/tests/test_tree.py [new file with mode: 0644]
main.py [deleted file]
pyproject.toml
requirements.txt [deleted file]
res/testdata [new submodule]
tests/fixtures.env [new file with mode: 0644]
tests/offline_test.py [new file with mode: 0644]
tests/test_installation.py [new file with mode: 0644]