Skip to content

Releases: rxradar/israeli-prices

v0.2.0 — Compare products across chains (GTIN helpers)

Choose a tag to compare

@sashaboulouds sashaboulouds released this 01 Sep 14:24
aaac0d1

Compare across chains

Barcoded products share the same GTIN barcode everywhere, so it is the natural key for lining the same SKU up across chains.

  • group_by_gtin({"super-pharm": sp, "shufersal": sh}, min_sources=2) — join the same product across chains, canonicalizing UPC-12 / EAN-13 to GTIN-14 so encoding differences don't split one product in two.
  • item.gtin (canonical GTIN-14, or None) and item.is_barcoded on every price/promotion row. gtin rides along in model_dump() / to_df() / JSON as the join key.
  • to_gtin14() / is_valid_gtin() as standalone helpers.

item_code stays raw and faithful to the source; loose/weighted goods (fresh produce, deli — no shared barcode) resolve to None by design.

Thanks to the PyWeb-IL community for the nudge.

v0.1.1

Choose a tag to compare

@sashaboulouds sashaboulouds released this 27 Aug 19:32

Full Changelog: v0.1.0...v0.1.1

israeli-prices 0.1.0

Choose a tag to compare

@sashaboulouds sashaboulouds released this 25 Aug 13:31

Initial release.

  • 31 of the 32 chains on the government price-transparency roster, every one verified live end to end (the last one's portal is down).
  • Five portal families: self-hosted (Shufersal, Super-Pharm, Wolt, Carrefour, Hatzi Hinam), Cerberus (13 chains), Bina (10 chains), Laib (3 chains).
  • Typed models (pydantic) for prices, promotions and stores; grouped and flat promotion dialects normalized; Decimal prices, Hebrew preserved.
  • Handles the wild: UTF-16 and BOM'd files, ZIP archives under .gz names, expiring signed URLs, session expiry re-login, placeholder NULL files, legacy file-name timestamps.
  • Nightly automated per-chain health check: docs/health.md
  • Optional pandas export (.to_df()), proxy support for the five geo-restricted portals.
pip install israeli-prices