uk_bin_collection 0.74.0__tar.gz → 0.74.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/PKG-INFO +1 -1
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/pyproject.toml +1 -1
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/input.json +3 -2
- uk_bin_collection-0.74.1/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +100 -0
- uk_bin_collection-0.74.0/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -125
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/LICENSE +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/README.md +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/README.rst +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/features/environment.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/output.schema +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/test_collect_data.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/test_common_functions.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/common.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
- {uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -207,8 +207,9 @@
|
|
207
207
|
"wiki_note": "Both the UPRN and a one-line address are passed in the URL, which needs to be wrapped in double quotes. The one-line address is made up of the house number, street name and postcode.\nUse the form [here](https://online.cheshireeast.gov.uk/mycollectionday/) to find them, then take the first line and post code and replace all spaces with `%20`."
|
208
208
|
},
|
209
209
|
"CheshireWestAndChesterCouncil": {
|
210
|
-
"house_number": "
|
211
|
-
"postcode": "
|
210
|
+
"house_number": "Hill View House",
|
211
|
+
"postcode": "CH3 9ER",
|
212
|
+
"uprn": "100012346655",
|
212
213
|
"skip_get_url": true,
|
213
214
|
"url": "https://www.cheshirewestandchester.gov.uk/residents/waste-and-recycling/your-bin-collection/collection-day",
|
214
215
|
"web_driver": "http://selenium:4444",
|
@@ -0,0 +1,100 @@
|
|
1
|
+
import time
|
2
|
+
import logging
|
3
|
+
from bs4 import BeautifulSoup
|
4
|
+
from selenium.webdriver.common.by import By
|
5
|
+
from selenium.webdriver.support import expected_conditions as EC
|
6
|
+
from selenium.webdriver.support.ui import Select
|
7
|
+
from selenium.webdriver.support.wait import WebDriverWait
|
8
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
9
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
10
|
+
|
11
|
+
# Set up logging
|
12
|
+
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
13
|
+
|
14
|
+
class CouncilClass(AbstractGetBinDataClass):
|
15
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
16
|
+
driver = None
|
17
|
+
try:
|
18
|
+
data = {"bins": []}
|
19
|
+
collections = []
|
20
|
+
user_uprn = kwargs.get("uprn")
|
21
|
+
user_paon = kwargs.get("paon")
|
22
|
+
user_postcode = kwargs.get("postcode")
|
23
|
+
web_driver = kwargs.get("web_driver")
|
24
|
+
headless = kwargs.get("headless")
|
25
|
+
check_paon(user_paon)
|
26
|
+
check_postcode(user_postcode)
|
27
|
+
|
28
|
+
# Create Selenium webdriver
|
29
|
+
driver = create_webdriver(web_driver, headless)
|
30
|
+
if headless:
|
31
|
+
driver.set_window_size(1920, 1080)
|
32
|
+
|
33
|
+
driver.get("https://www.cheshirewestandchester.gov.uk/residents/waste-and-recycling/your-bin-collection/collection-day")
|
34
|
+
wait = WebDriverWait(driver, 60)
|
35
|
+
|
36
|
+
def click_element(by, value):
|
37
|
+
element = wait.until(EC.element_to_be_clickable((by, value)))
|
38
|
+
driver.execute_script("arguments[0].scrollIntoView();", element)
|
39
|
+
element.click()
|
40
|
+
|
41
|
+
logging.info("Accepting cookies")
|
42
|
+
click_element(By.ID, "ccc-close")
|
43
|
+
|
44
|
+
logging.info("Finding collection day")
|
45
|
+
click_element(By.LINK_TEXT, "Find your collection day")
|
46
|
+
|
47
|
+
logging.info("Switching to iframe")
|
48
|
+
iframe_presence = wait.until(EC.presence_of_element_located((By.ID, "fillform-frame-1")))
|
49
|
+
driver.switch_to.frame(iframe_presence)
|
50
|
+
|
51
|
+
logging.info("Entering postcode")
|
52
|
+
input_element_postcode = wait.until(EC.presence_of_element_located((By.XPATH, '//input[@id="postcode_search"]')))
|
53
|
+
input_element_postcode.send_keys(user_postcode)
|
54
|
+
|
55
|
+
pcsearch_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='postcode_search']")))
|
56
|
+
click_element(By.XPATH, "//input[@id='postcode_search']")
|
57
|
+
|
58
|
+
logging.info("Selecting address")
|
59
|
+
dropdown = wait.until(EC.element_to_be_clickable((By.ID, "Choose_Address")))
|
60
|
+
dropdown_options = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "lookup-option")))
|
61
|
+
drop_down_values = Select(dropdown)
|
62
|
+
option_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, f'option.lookup-option[value="{str(user_uprn)}"]')))
|
63
|
+
driver.execute_script("arguments[0].scrollIntoView();", option_element)
|
64
|
+
drop_down_values.select_by_value(str(user_uprn))
|
65
|
+
|
66
|
+
logging.info("Waiting for bin schedule")
|
67
|
+
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'bin-schedule-content-bin-card')))
|
68
|
+
|
69
|
+
logging.info("Extracting bin collection data")
|
70
|
+
soup = BeautifulSoup(driver.page_source, features="html.parser")
|
71
|
+
bin_cards = soup.find_all("div", {"class": "bin-schedule-content-bin-card"})
|
72
|
+
collections = []
|
73
|
+
|
74
|
+
for card in bin_cards:
|
75
|
+
bin_info = card.find("div", {"class": "bin-schedule-content-info"})
|
76
|
+
bin_name = bin_info.find_all("p")[0].text.strip() + " bin"
|
77
|
+
bin_date_str = bin_info.find_all("p")[1].text.split(":")[1].strip()
|
78
|
+
bin_date = datetime.strptime(bin_date_str, "%A, %B %d, %Y")
|
79
|
+
collections.append((bin_name, bin_date))
|
80
|
+
|
81
|
+
ordered_data = sorted(collections, key=lambda x: x[1])
|
82
|
+
|
83
|
+
for item in ordered_data:
|
84
|
+
dict_data = {
|
85
|
+
"type": item[0].capitalize(),
|
86
|
+
"collectionDate": item[1].strftime(date_format),
|
87
|
+
}
|
88
|
+
data["bins"].append(dict_data)
|
89
|
+
|
90
|
+
logging.info("Data extraction complete")
|
91
|
+
return data
|
92
|
+
|
93
|
+
except Exception as e:
|
94
|
+
logging.error(f"An error occurred: {e}")
|
95
|
+
raise
|
96
|
+
|
97
|
+
finally:
|
98
|
+
if driver:
|
99
|
+
driver.quit()
|
100
|
+
|
@@ -1,125 +0,0 @@
|
|
1
|
-
import time
|
2
|
-
|
3
|
-
from bs4 import BeautifulSoup
|
4
|
-
from selenium.webdriver.common.by import By
|
5
|
-
from selenium.webdriver.support import expected_conditions as EC
|
6
|
-
from selenium.webdriver.support.ui import Select
|
7
|
-
from selenium.webdriver.support.wait import WebDriverWait
|
8
|
-
|
9
|
-
from uk_bin_collection.uk_bin_collection.common import *
|
10
|
-
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
11
|
-
|
12
|
-
|
13
|
-
# import the wonderful Beautiful Soup and the URL grabber
|
14
|
-
class CouncilClass(AbstractGetBinDataClass):
|
15
|
-
"""
|
16
|
-
Concrete classes have to implement all abstract operations of the
|
17
|
-
base class. They can also override some operations with a default
|
18
|
-
implementation.
|
19
|
-
"""
|
20
|
-
|
21
|
-
def parse_data(self, page: str, **kwargs) -> dict:
|
22
|
-
driver = None
|
23
|
-
try:
|
24
|
-
data = {"bins": []}
|
25
|
-
collections = []
|
26
|
-
|
27
|
-
user_paon = kwargs.get("paon")
|
28
|
-
user_postcode = kwargs.get("postcode")
|
29
|
-
web_driver = kwargs.get("web_driver")
|
30
|
-
headless = kwargs.get("headless")
|
31
|
-
check_paon(user_paon)
|
32
|
-
check_postcode(user_postcode)
|
33
|
-
|
34
|
-
# Create Selenium webdriver
|
35
|
-
driver = create_webdriver(web_driver, headless)
|
36
|
-
driver.get(
|
37
|
-
"https://www.cheshirewestandchester.gov.uk/residents/waste-and-recycling/your-bin-collection/collection-day"
|
38
|
-
)
|
39
|
-
|
40
|
-
time.sleep(5)
|
41
|
-
|
42
|
-
cookie_close_button = WebDriverWait(driver, timeout=15).until(
|
43
|
-
EC.presence_of_element_located((By.ID, "ccc-close"))
|
44
|
-
)
|
45
|
-
cookie_close_button.click()
|
46
|
-
|
47
|
-
find_collection_button = WebDriverWait(driver, timeout=10).until(
|
48
|
-
EC.presence_of_element_located(
|
49
|
-
(By.LINK_TEXT, "Find your collection day")
|
50
|
-
)
|
51
|
-
)
|
52
|
-
find_collection_button.click()
|
53
|
-
|
54
|
-
banner_close_button = WebDriverWait(driver, timeout=30).until(
|
55
|
-
EC.presence_of_element_located((By.ID, "close-cookie-message"))
|
56
|
-
)
|
57
|
-
banner_close_button.click()
|
58
|
-
|
59
|
-
time.sleep(5)
|
60
|
-
|
61
|
-
frame = driver.find_element(
|
62
|
-
By.XPATH, "/html/body/div[4]/section/div/div[2]/div[2]/div/iframe"
|
63
|
-
)
|
64
|
-
driver.switch_to.frame(frame)
|
65
|
-
|
66
|
-
# Wait for the postcode field to appear then populate it
|
67
|
-
inputElement_postcode = WebDriverWait(driver, 30).until(
|
68
|
-
EC.presence_of_element_located((By.NAME, "postcode_search"))
|
69
|
-
)
|
70
|
-
inputElement_postcode.send_keys(user_postcode)
|
71
|
-
|
72
|
-
address_box_text = WebDriverWait(driver, 30).until(
|
73
|
-
EC.presence_of_element_located((By.ID, "label_Choose_Address"))
|
74
|
-
)
|
75
|
-
address_box_text.click()
|
76
|
-
time.sleep(2)
|
77
|
-
|
78
|
-
address_selection_menu = Select(
|
79
|
-
driver.find_element(By.ID, "Choose_Address")
|
80
|
-
)
|
81
|
-
for idx, addr_option in enumerate(address_selection_menu.options):
|
82
|
-
option_name = addr_option.text[0 : len(user_paon)]
|
83
|
-
if option_name == user_paon:
|
84
|
-
selected_address = addr_option
|
85
|
-
break
|
86
|
-
address_selection_menu.select_by_visible_text(selected_address.text)
|
87
|
-
|
88
|
-
WebDriverWait(driver, 30).until(
|
89
|
-
EC.presence_of_element_located(
|
90
|
-
(By.XPATH, '//*[@id="bin-schedule-content"]/div/h3')
|
91
|
-
)
|
92
|
-
)
|
93
|
-
|
94
|
-
soup = BeautifulSoup(driver.page_source, features="html.parser")
|
95
|
-
soup.prettify()
|
96
|
-
|
97
|
-
# Get collections
|
98
|
-
bin_cards = soup.find_all("div", {"class": "bin-schedule-content-info"})
|
99
|
-
for card in bin_cards:
|
100
|
-
bin_name = card.contents[0].text.strip() + " bin"
|
101
|
-
bin_date = datetime.strptime(
|
102
|
-
card.contents[1].text.split(":")[1].strip(), "%A, %d %B %Y"
|
103
|
-
)
|
104
|
-
collections.append((bin_name, bin_date))
|
105
|
-
|
106
|
-
ordered_data = sorted(collections, key=lambda x: x[1])
|
107
|
-
for item in ordered_data:
|
108
|
-
dict_data = {
|
109
|
-
"type": item[0].capitalize(),
|
110
|
-
"collectionDate": item[1].strftime(date_format),
|
111
|
-
}
|
112
|
-
data["bins"].append(dict_data)
|
113
|
-
|
114
|
-
except Exception as e:
|
115
|
-
# Here you can log the exception if needed
|
116
|
-
print(f"An error occurred: {e}")
|
117
|
-
# Optionally, re-raise the exception if you want it to propagate
|
118
|
-
raise
|
119
|
-
|
120
|
-
finally:
|
121
|
-
# This block ensures that the driver is closed regardless of an exception
|
122
|
-
if driver:
|
123
|
-
driver.quit()
|
124
|
-
|
125
|
-
return data
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/tests/test_collect_data.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.74.0 → uk_bin_collection-0.74.1}/uk_bin_collection/uk_bin_collection/common.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|