Add Syndicat Emeraude (France-95) source#6775
Conversation
bbr111
left a comment
There was a problem hiding this comment.
Thanks for the detailed work here — the rule engine and per-commune tables are clearly a lot of effort, and the doc + full TEST_CASES coverage are appreciated.
Unfortunately I can't merge this in its current form. The source doesn't fetch any live data: fetch() generates all dates from the hardcoded RULES tables, and DATA_URL is never actually requested. The project doesn't accept hardcoded schedules (see the "What NOT to do" section of CONTRIBUTING) — sources must pull from a live API, ICS feed, or webpage. The concern is real-world drift: as soon as the syndicate shifts a round for a holiday or changes the seasonal green-waste window, a static table is silently wrong with no way to self-correct.
Could you look at whether https://www.syndicat-emeraude.fr/collecte exposes the schedule data dynamically (an API/JSON/ICS endpoint, or HTML that can be parsed per commune/sector)? A quick check shows the page returns 403 to a plain request, so you'll likely need curl_cffi with impersonate="chrome" (see east_renfrewshire_gov_uk.py / south_ayrshire_gov_uk.py for the Cloudflare pattern). If the underlying data endpoint can be found and consumed at fetch time, I'd be happy to re-review.
Everything else — structure, COUNTRY, icons enum, translations, doc file, lint — looks good, so once the data is fetched live this should be close.
Summary
Add Syndicat Emeraude (French) source
Type of change
Checklist
python -m pytest tests/test_source_components.py -qpassesruff check --fixandruff formatrun on changed source filesdoc/source/syndicat_emeraude_fr.mdcreated for new sources