Skip to content

Releases: domfahey/dex-python

v0.3.0 - CLI, Migrations, and Pydantic Hardening

28 Dec 03:17

Choose a tag to compare

What's New

Unified CLI

New dex command-line interface using Typer:

  • dex sync incremental - Incremental sync preserving dedup metadata
  • dex sync full - Full sync (destructive)
  • dex duplicate analyze - Generate duplicate analysis report
  • dex duplicate flag - Flag duplicate candidates
  • dex duplicate review - Interactive duplicate review
  • dex duplicate resolve - Merge confirmed duplicates
  • dex enrichment backfill - Parse job titles for company/role
  • dex enrichment push - Push enrichment data to API

SQLAlchemy + Alembic Migrations

  • SQLAlchemy ORM models matching existing schema
  • Alembic migration infrastructure with SQLite batch mode support
  • Session management utilities

International Phone Normalization (E.164)

  • normalize_phone_e164() - Full international phone parsing
  • format_phone() - Format phones as E.164, national, or international

LinkedIn URL Normalization

  • normalize_linkedin() - Canonicalize LinkedIn profile URLs
  • find_linkedin_duplicates() - Find contacts sharing LinkedIn profiles

Pydantic Best Practices Audit

  • 50 new test cases for model validation coverage
  • Field validators for birthday_year and due_at_date
  • Type hardening with Literal and Field constraints
  • __all__ export list for all public models

Performance

  • Database indexes for duplicate_group_id, linkedin, and website
  • Optimized deduplication helper functions

Dependencies Added

  • typer>=0.12.0 for unified CLI
  • sqlalchemy>=2.0.0 for ORM models
  • alembic>=1.14.0 for database migrations
  • phonenumbers>=8.13.0 for international phone parsing
  • unidecode>=1.3.0 for unicode→ASCII normalization

Full Changelog: v0.2.0...v0.3.0