uk_bin_collection 0.128.5__tar.gz → 0.129.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of uk_bin_collection might be problematic. Click here for more details.
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/PKG-INFO +1 -1
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/pyproject.toml +1 -1
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/input.json +31 -30
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py +0 -1
- uk_bin_collection-0.129.0/uk_bin_collection/uk_bin_collection/councils/BostonBoroughCouncil.py +149 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +1 -0
- uk_bin_collection-0.129.0/uk_bin_collection/uk_bin_collection/councils/EastLothianCouncil.py +83 -0
- uk_bin_collection-0.129.0/uk_bin_collection/uk_bin_collection/councils/EastStaffordshireBoroughCouncil.py +86 -0
- uk_bin_collection-0.129.0/uk_bin_collection/uk_bin_collection/councils/LeicesterCityCouncil.py +62 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py +24 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +17 -6
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/LICENSE +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/README.md +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/README.rst +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/features/environment.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/output.schema +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_conftest.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_get_data.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AshfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BlaenauGwentCountyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BraintreeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BrecklandCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BrentCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BurnleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DundeeCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EdinburghCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HackneyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HinckleyandBosworthBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/KingsLynnandWestNorfolkBC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLewisham.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MedwayCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/MorayCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/OadbyAndWigstonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/PlymouthCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/PowysCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RedditchBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SandwellBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SeftonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SurreyHeathBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/SwindonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestDunbartonshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestLancashireBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WolverhamptonCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WorcesterCityCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/WyreForestDistrictCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
- {uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -31,13 +31,6 @@
|
|
31
31
|
"wiki_name": "Ards and North Down Council",
|
32
32
|
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
33
33
|
},
|
34
|
-
"ArdsAndNorthDownCouncil": {
|
35
|
-
"url": "https://www.ardsandnorthdown.gov.uk",
|
36
|
-
"wiki_command_url_override": "https://www.ardsandnorthdown.gov.uk",
|
37
|
-
"uprn": "187136177",
|
38
|
-
"wiki_name": "Ards and North Down Council",
|
39
|
-
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
40
|
-
},
|
41
34
|
"ArgyllandButeCouncil": {
|
42
35
|
"uprn": "125061759",
|
43
36
|
"skip_get_url": true,
|
@@ -212,6 +205,15 @@
|
|
212
205
|
"wiki_name": "Bolton Council",
|
213
206
|
"wiki_note": "To get the UPRN, you will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search). Previously required a single field that was UPRN and full address; now requires UPRN and postcode as separate fields."
|
214
207
|
},
|
208
|
+
"BostonBoroughCouncil": {
|
209
|
+
"postcode": "PE20 1AY",
|
210
|
+
"skip_get_url": true,
|
211
|
+
"house_number": "CEDAR",
|
212
|
+
"web_driver": "http://selenium:4444",
|
213
|
+
"url": "https://www.boston.gov.uk/findwastecollections",
|
214
|
+
"wiki_name": "Boston Borough Council",
|
215
|
+
"wiki_note": "Provide your house number in the `house_number` parameter and postcode in the `postcode` parameter."
|
216
|
+
},
|
215
217
|
"BracknellForestCouncil": {
|
216
218
|
"house_number": "57",
|
217
219
|
"paon": "57",
|
@@ -348,7 +350,7 @@
|
|
348
350
|
"CardiffCouncil": {
|
349
351
|
"skip_get_url": true,
|
350
352
|
"uprn": "100100112419",
|
351
|
-
"url": "https://www.
|
353
|
+
"url": "https://www.gov.uk",
|
352
354
|
"wiki_name": "Cardiff Council",
|
353
355
|
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
354
356
|
},
|
@@ -611,13 +613,6 @@
|
|
611
613
|
"wiki_name": "East Herts Council",
|
612
614
|
"wiki_note": "Pass the house number and postcode in their respective parameters."
|
613
615
|
},
|
614
|
-
"EastHertsCouncil": {
|
615
|
-
"house_number": "1",
|
616
|
-
"postcode": "CM20 2FZ",
|
617
|
-
"skip_get_url": true,
|
618
|
-
"url": "https://www.eastherts.gov.uk",
|
619
|
-
"wiki_name": "East Herts Council"
|
620
|
-
},
|
621
616
|
"EastLindseyDistrictCouncil": {
|
622
617
|
"house_number": "1",
|
623
618
|
"postcode": "PE22 0YD",
|
@@ -627,6 +622,14 @@
|
|
627
622
|
"wiki_name": "East Lindsey District Council",
|
628
623
|
"wiki_note": "Pass the house name/number and postcode in their respective parameters. This parser requires a Selenium webdriver."
|
629
624
|
},
|
625
|
+
"EastLothianCouncil": {
|
626
|
+
"house_number": "Flat 1",
|
627
|
+
"postcode": "EH21 6QA",
|
628
|
+
"skip_get_url": true,
|
629
|
+
"url": "https://eastlothian.gov.uk",
|
630
|
+
"wiki_name": "East Lothian Council",
|
631
|
+
"wiki_note": "Pass the house number and postcode in their respective parameters"
|
632
|
+
},
|
630
633
|
"EastRenfrewshireCouncil": {
|
631
634
|
"house_number": "23",
|
632
635
|
"postcode": "G46 6RG",
|
@@ -645,6 +648,12 @@
|
|
645
648
|
"wiki_name": "East Riding Council",
|
646
649
|
"wiki_note": "Put the full address as it displays on the council website dropdown when you do the check manually."
|
647
650
|
},
|
651
|
+
"EastStaffordshireBoroughCouncil": {
|
652
|
+
"url": "https://www.eaststaffsbc.gov.uk/bins-rubbish-recycling/collection-dates/68382",
|
653
|
+
"wiki_command_url_override": "https://www.eaststaffsbc.gov.uk/bins-rubbish-recycling/collection-dates/XXXXX",
|
654
|
+
"wiki_name": "East Staffordshire Borough Council",
|
655
|
+
"wiki_note": "Replace `XXXXX` with your property's ID when selecting from https://www.eaststaffsbc.gov.uk/bins-rubbish-recycling/collection-dates."
|
656
|
+
},
|
648
657
|
"EastSuffolkCouncil": {
|
649
658
|
"postcode": "IP11 9FJ",
|
650
659
|
"skip_get_url": true,
|
@@ -745,20 +754,6 @@
|
|
745
754
|
"wiki_name": "Flintshire County Council",
|
746
755
|
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
747
756
|
},
|
748
|
-
"FifeCouncil": {
|
749
|
-
"url": "https://www.fife.gov.uk",
|
750
|
-
"wiki_command_url_override": "https://www.fife.gov.uk",
|
751
|
-
"uprn": "320203521",
|
752
|
-
"wiki_name": "Fife Council",
|
753
|
-
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
754
|
-
},
|
755
|
-
"FlintshireCountyCouncil": {
|
756
|
-
"url": "https://digital.flintshire.gov.uk",
|
757
|
-
"wiki_command_url_override": "https://digital.flintshire.gov.uk",
|
758
|
-
"uprn": "100100213710",
|
759
|
-
"wiki_name": "Flintshire County Council",
|
760
|
-
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
761
|
-
},
|
762
757
|
"FolkstoneandHytheDistrictCouncil": {
|
763
758
|
"skip_get_url": true,
|
764
759
|
"uprn": "50032097",
|
@@ -994,6 +989,12 @@
|
|
994
989
|
"wiki_name": "Leeds City Council",
|
995
990
|
"wiki_note": "Pass the house number, postcode, and UPRN. This parser requires a Selenium webdriver."
|
996
991
|
},
|
992
|
+
"LeicesterCityCouncil": {
|
993
|
+
"url": "https://biffaleicester.co.uk",
|
994
|
+
"uprn": "2465027976",
|
995
|
+
"wiki_name": "Leicester City Council",
|
996
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
997
|
+
},
|
997
998
|
"LichfieldDistrictCouncil": {
|
998
999
|
"url": "https://www.lichfielddc.gov.uk",
|
999
1000
|
"wiki_command_url_override": "https://www.lichfielddc.gov.uk",
|
@@ -1231,7 +1232,7 @@
|
|
1231
1232
|
"url": "https://community.newcastle.gov.uk/my-neighbourhood/ajax/getBinsNew.php?uprn=004510730634",
|
1232
1233
|
"wiki_command_url_override": "https://community.newcastle.gov.uk/my-neighbourhood/ajax/getBinsNew.php?uprn=XXXXXXXX",
|
1233
1234
|
"wiki_name": "Newcastle City Council",
|
1234
|
-
"wiki_note": "Replace XXXXXXXX with your UPRN."
|
1235
|
+
"wiki_note": "Replace XXXXXXXX with your UPRN. UPRNs need to be 12 digits long so please pad the left hand side with 0s if your UPRN is not long enough"
|
1235
1236
|
},
|
1236
1237
|
"NewcastleUnderLymeCouncil": {
|
1237
1238
|
"url": "https://www.newcastle-staffs.gov.uk",
|
uk_bin_collection-0.129.0/uk_bin_collection/uk_bin_collection/councils/BostonBoroughCouncil.py
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
from bs4 import BeautifulSoup
|
2
|
+
from selenium.webdriver.common.by import By
|
3
|
+
from selenium.webdriver.support import expected_conditions as EC
|
4
|
+
from selenium.webdriver.support.ui import Select
|
5
|
+
from selenium.webdriver.support.wait import WebDriverWait
|
6
|
+
|
7
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
8
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
9
|
+
|
10
|
+
|
11
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
12
|
+
class CouncilClass(AbstractGetBinDataClass):
|
13
|
+
"""
|
14
|
+
Concrete classes have to implement all abstract operations of the
|
15
|
+
base class. They can also override some operations with a default
|
16
|
+
implementation.
|
17
|
+
"""
|
18
|
+
|
19
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
20
|
+
driver = None
|
21
|
+
try:
|
22
|
+
data = {"bins": []}
|
23
|
+
user_paon = kwargs.get("paon")
|
24
|
+
user_postcode = kwargs.get("postcode")
|
25
|
+
web_driver = kwargs.get("web_driver")
|
26
|
+
headless = kwargs.get("headless")
|
27
|
+
check_paon(user_paon)
|
28
|
+
check_postcode(user_postcode)
|
29
|
+
|
30
|
+
# Create Selenium webdriver
|
31
|
+
driver = create_webdriver(web_driver, headless, None, __name__)
|
32
|
+
driver.get("https://www.boston.gov.uk/findwastecollections")
|
33
|
+
|
34
|
+
accept_button = WebDriverWait(driver, timeout=30).until(
|
35
|
+
EC.element_to_be_clickable((By.NAME, "acceptall"))
|
36
|
+
)
|
37
|
+
accept_button.click()
|
38
|
+
|
39
|
+
# Wait for the postcode field to appear then populate it
|
40
|
+
inputElement_postcode = WebDriverWait(driver, 30).until(
|
41
|
+
EC.presence_of_element_located(
|
42
|
+
(By.ID, "BBCWASTECOLLECTIONS_START_SEARCHPOSTCODE")
|
43
|
+
)
|
44
|
+
)
|
45
|
+
inputElement_postcode.send_keys(user_postcode)
|
46
|
+
|
47
|
+
# Click search button
|
48
|
+
findAddress = WebDriverWait(driver, 10).until(
|
49
|
+
EC.presence_of_element_located(
|
50
|
+
(By.ID, "BBCWASTECOLLECTIONS_START_START10_NEXT")
|
51
|
+
)
|
52
|
+
)
|
53
|
+
findAddress.click()
|
54
|
+
|
55
|
+
# Wait for the custom dropdown container to be visible
|
56
|
+
WebDriverWait(driver, 10).until(
|
57
|
+
EC.element_to_be_clickable(
|
58
|
+
(By.ID, "BBCWASTECOLLECTIONS_COLLECTIONADDRESS_INCIDENTUPRN_chosen")
|
59
|
+
)
|
60
|
+
)
|
61
|
+
|
62
|
+
# Click on the dropdown to open it
|
63
|
+
dropdown = driver.find_element(
|
64
|
+
By.ID, "BBCWASTECOLLECTIONS_COLLECTIONADDRESS_INCIDENTUPRN_chosen"
|
65
|
+
)
|
66
|
+
dropdown.click()
|
67
|
+
|
68
|
+
# Wait for the dropdown options to be visible
|
69
|
+
WebDriverWait(driver, 10).until(
|
70
|
+
EC.visibility_of_element_located((By.CLASS_NAME, "chosen-results"))
|
71
|
+
)
|
72
|
+
|
73
|
+
# Locate the desired option using its text
|
74
|
+
desired_option = driver.find_element(
|
75
|
+
By.XPATH,
|
76
|
+
"//li[@class='active-result' and contains(text(), '"
|
77
|
+
+ user_paon
|
78
|
+
+ "')]",
|
79
|
+
)
|
80
|
+
|
81
|
+
# Click on the desired option
|
82
|
+
desired_option.click()
|
83
|
+
|
84
|
+
# dropdown.select_by_visible_text(user_paon)
|
85
|
+
|
86
|
+
# Click search button
|
87
|
+
findAddress = WebDriverWait(driver, 10).until(
|
88
|
+
EC.presence_of_element_located(
|
89
|
+
(By.ID, "BBCWASTECOLLECTIONS_COLLECTIONADDRESS_NEXT3_NEXT")
|
90
|
+
)
|
91
|
+
)
|
92
|
+
findAddress.click()
|
93
|
+
|
94
|
+
# Wait for the collections table to appear
|
95
|
+
WebDriverWait(driver, 10).until(
|
96
|
+
EC.presence_of_element_located(
|
97
|
+
(By.ID, "BBCWASTECOLLECTIONS_SERVICE_FIELD859_OUTER")
|
98
|
+
)
|
99
|
+
)
|
100
|
+
|
101
|
+
soup = BeautifulSoup(driver.page_source, features="html.parser")
|
102
|
+
|
103
|
+
# Find the container with the bin information
|
104
|
+
bins = soup.find_all(
|
105
|
+
"div", class_="grid__cell grid__cell--listitem grid__cell--cols1"
|
106
|
+
)
|
107
|
+
|
108
|
+
current_year = datetime.now().year
|
109
|
+
next_year = current_year + 1
|
110
|
+
|
111
|
+
# Loop through each bin container to extract the details
|
112
|
+
for bin_div in bins:
|
113
|
+
# Find the bin type (title text)
|
114
|
+
bin_type = bin_div.find("h2", class_="item__title").text.strip()
|
115
|
+
|
116
|
+
# Find the next collection date
|
117
|
+
next_collection = (
|
118
|
+
bin_div.find("div", class_="item__content")
|
119
|
+
.find("div")
|
120
|
+
.text.strip()
|
121
|
+
.replace("Next: ", "")
|
122
|
+
)
|
123
|
+
|
124
|
+
next_collection = datetime.strptime(
|
125
|
+
remove_ordinal_indicator_from_date_string(next_collection),
|
126
|
+
"%A %d %B",
|
127
|
+
)
|
128
|
+
|
129
|
+
if (datetime.now().month == 12) and (next_collection.month == 1):
|
130
|
+
next_collection = next_collection.replace(year=next_year)
|
131
|
+
else:
|
132
|
+
next_collection = next_collection.replace(year=current_year)
|
133
|
+
|
134
|
+
dict_data = {
|
135
|
+
"type": bin_type,
|
136
|
+
"collectionDate": next_collection.strftime(date_format),
|
137
|
+
}
|
138
|
+
data["bins"].append(dict_data)
|
139
|
+
|
140
|
+
except Exception as e:
|
141
|
+
# Here you can log the exception if needed
|
142
|
+
print(f"An error occurred: {e}")
|
143
|
+
# Optionally, re-raise the exception if you want it to propagate
|
144
|
+
raise
|
145
|
+
finally:
|
146
|
+
# This block ensures that the driver is closed regardless of an exception
|
147
|
+
if driver:
|
148
|
+
driver.quit()
|
149
|
+
return data
|
@@ -10,6 +10,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
10
10
|
"""
|
11
11
|
A class to fetch and parse bin collection data for Cheshire East Council.
|
12
12
|
"""
|
13
|
+
|
13
14
|
def parse_data(self, page: Any, **kwargs: Any) -> Dict[str, Any]:
|
14
15
|
soup = BeautifulSoup(page.text, features="html.parser")
|
15
16
|
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
|
4
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
5
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
6
|
+
|
7
|
+
|
8
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
9
|
+
class CouncilClass(AbstractGetBinDataClass):
|
10
|
+
"""
|
11
|
+
Concrete classes have to implement all abstract operations of the
|
12
|
+
base class. They can also override some operations with a default
|
13
|
+
implementation.
|
14
|
+
"""
|
15
|
+
|
16
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
17
|
+
|
18
|
+
user_postcode = kwargs.get("postcode")
|
19
|
+
user_paon = kwargs.get("paon")
|
20
|
+
check_postcode(user_postcode)
|
21
|
+
check_paon(user_paon)
|
22
|
+
bindata = {"bins": []}
|
23
|
+
|
24
|
+
URI = "http://collectiondates.eastlothian.gov.uk/ajax/your-calendar/load-streets-spring-2024.asp"
|
25
|
+
|
26
|
+
payload = {
|
27
|
+
"postcode": user_postcode,
|
28
|
+
}
|
29
|
+
|
30
|
+
headers = {
|
31
|
+
"Referer": "http://collectiondates.eastlothian.gov.uk/your-calendar",
|
32
|
+
"User-Agent": "Mozilla/5.0",
|
33
|
+
}
|
34
|
+
|
35
|
+
# Make the GET request
|
36
|
+
response = requests.get(URI, headers=headers, params=payload)
|
37
|
+
|
38
|
+
# Parse the HTML with BeautifulSoup
|
39
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
40
|
+
|
41
|
+
# Find the select dropdown
|
42
|
+
select = soup.find("select", id="SelectStreet")
|
43
|
+
|
44
|
+
# Find the option that contains "Flat 1"
|
45
|
+
address = select.find("option", string=lambda text: text and user_paon in text)
|
46
|
+
|
47
|
+
URI = "http://collectiondates.eastlothian.gov.uk/ajax/your-calendar/load-recycling-summer-2024.asp"
|
48
|
+
|
49
|
+
payload = {
|
50
|
+
"id": address["value"],
|
51
|
+
}
|
52
|
+
|
53
|
+
# Make the GET request
|
54
|
+
response = requests.get(URI, headers=headers, params=payload)
|
55
|
+
|
56
|
+
# Parse the HTML with BeautifulSoup
|
57
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
58
|
+
|
59
|
+
# Extract collection details
|
60
|
+
calendar_items = soup.find_all("div", class_="calendar-item")
|
61
|
+
for item in calendar_items:
|
62
|
+
waste_label = item.find("div", class_="waste-label").text.strip()
|
63
|
+
waste_value = item.find("div", class_="waste-value").find("h4").text.strip()
|
64
|
+
|
65
|
+
try:
|
66
|
+
collection_date = datetime.strptime(
|
67
|
+
remove_ordinal_indicator_from_date_string(waste_value),
|
68
|
+
"%A %d %B %Y",
|
69
|
+
)
|
70
|
+
except ValueError:
|
71
|
+
continue
|
72
|
+
|
73
|
+
dict_data = {
|
74
|
+
"type": waste_label.replace(" is:", ""),
|
75
|
+
"collectionDate": collection_date.strftime(date_format),
|
76
|
+
}
|
77
|
+
bindata["bins"].append(dict_data)
|
78
|
+
|
79
|
+
bindata["bins"].sort(
|
80
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), date_format)
|
81
|
+
)
|
82
|
+
|
83
|
+
return bindata
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
from selenium.webdriver.common.by import By
|
4
|
+
from selenium.webdriver.support import expected_conditions as EC
|
5
|
+
from selenium.webdriver.support.ui import Select
|
6
|
+
from selenium.webdriver.support.wait import WebDriverWait
|
7
|
+
|
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
|
+
|
12
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
13
|
+
class CouncilClass(AbstractGetBinDataClass):
|
14
|
+
"""
|
15
|
+
Concrete classes have to implement all abstract operations of the
|
16
|
+
base class. They can also override some operations with a default
|
17
|
+
implementation.
|
18
|
+
"""
|
19
|
+
|
20
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
21
|
+
|
22
|
+
bindata = {"bins": []}
|
23
|
+
|
24
|
+
soup = BeautifulSoup(page.text, features="html.parser")
|
25
|
+
|
26
|
+
current_year = datetime.now().year
|
27
|
+
next_year = current_year + 1
|
28
|
+
|
29
|
+
# Extract next collection
|
30
|
+
next_collection_section = soup.find("div", class_="collection-next")
|
31
|
+
if next_collection_section:
|
32
|
+
next_collection_text = next_collection_section.find("h2").text.strip()
|
33
|
+
date_match = re.search(
|
34
|
+
r"(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d+)(?:st|nd|rd|th)? (\w+)",
|
35
|
+
next_collection_text,
|
36
|
+
)
|
37
|
+
if date_match:
|
38
|
+
collection_date = f"{date_match.group(1)} {remove_ordinal_indicator_from_date_string(date_match.group(2))} {date_match.group(3)}"
|
39
|
+
|
40
|
+
collection_date = datetime.strptime(collection_date, "%A %d %B")
|
41
|
+
|
42
|
+
if (datetime.now().month == 12) and (collection_date.month == 1):
|
43
|
+
collection_date = collection_date.replace(year=next_year)
|
44
|
+
else:
|
45
|
+
collection_date = collection_date.replace(year=current_year)
|
46
|
+
|
47
|
+
# Get bin types
|
48
|
+
bins = next_collection_section.find_all("div", class_="field__item")
|
49
|
+
for bin_type in bins:
|
50
|
+
dict_data = {
|
51
|
+
"type": bin_type.text.strip(),
|
52
|
+
"collectionDate": collection_date.strftime(date_format),
|
53
|
+
}
|
54
|
+
bindata["bins"].append(dict_data)
|
55
|
+
|
56
|
+
# Extract other collections
|
57
|
+
other_collections = soup.find_all("li")
|
58
|
+
for collection in other_collections:
|
59
|
+
date_text = collection.contents[0].strip()
|
60
|
+
date_match = re.search(
|
61
|
+
r"(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d+)(?:st|nd|rd|th)? (\w+)",
|
62
|
+
date_text,
|
63
|
+
)
|
64
|
+
if date_match:
|
65
|
+
collection_date = f"{date_match.group(1)} {remove_ordinal_indicator_from_date_string(date_match.group(2))} {date_match.group(3)}"
|
66
|
+
collection_date = datetime.strptime(collection_date, "%A %d %B")
|
67
|
+
|
68
|
+
if (datetime.now().month == 12) and (collection_date.month == 1):
|
69
|
+
collection_date = collection_date.replace(year=next_year)
|
70
|
+
else:
|
71
|
+
collection_date = collection_date.replace(year=current_year)
|
72
|
+
|
73
|
+
# Get bin types
|
74
|
+
bins = collection.find_all("div", class_="field__item")
|
75
|
+
for bin_type in bins:
|
76
|
+
dict_data = {
|
77
|
+
"type": bin_type.text.strip(),
|
78
|
+
"collectionDate": collection_date.strftime(date_format),
|
79
|
+
}
|
80
|
+
bindata["bins"].append(dict_data)
|
81
|
+
|
82
|
+
bindata["bins"].sort(
|
83
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), date_format)
|
84
|
+
)
|
85
|
+
|
86
|
+
return bindata
|
uk_bin_collection-0.129.0/uk_bin_collection/uk_bin_collection/councils/LeicesterCityCouncil.py
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
import time
|
2
|
+
|
3
|
+
import requests
|
4
|
+
|
5
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
6
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
7
|
+
|
8
|
+
|
9
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
10
|
+
class CouncilClass(AbstractGetBinDataClass):
|
11
|
+
"""
|
12
|
+
Concrete classes have to implement all abstract operations of the
|
13
|
+
base class. They can also override some operations with a default
|
14
|
+
implementation.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
18
|
+
|
19
|
+
user_uprn = kwargs.get("uprn")
|
20
|
+
check_uprn(user_uprn)
|
21
|
+
bindata = {"bins": []}
|
22
|
+
|
23
|
+
user_uprn = str(user_uprn).zfill(12)
|
24
|
+
|
25
|
+
URI = "https://biffaleicester.co.uk/wp-admin/admin-ajax.php"
|
26
|
+
|
27
|
+
payload = {
|
28
|
+
"action": "get_details_api",
|
29
|
+
"uprn": user_uprn,
|
30
|
+
}
|
31
|
+
|
32
|
+
headers = {
|
33
|
+
"Origin": "https://biffaleicester.co.uk",
|
34
|
+
"Referer": "https://biffaleicester.co.uk/services/waste-collection-days/",
|
35
|
+
"User-Agent": "Mozilla/5.0",
|
36
|
+
}
|
37
|
+
|
38
|
+
# Make the GET request
|
39
|
+
response = requests.post(URI, headers=headers, data=payload)
|
40
|
+
|
41
|
+
# Parse the JSON response
|
42
|
+
bin_collection = response.json()
|
43
|
+
|
44
|
+
# Loop through each collection in bin_collection
|
45
|
+
for collection in bin_collection["anyType"]:
|
46
|
+
bin_type = collection["ServiceModeDesc"]
|
47
|
+
date = collection["ServiceDueDate"]
|
48
|
+
|
49
|
+
dict_data = {
|
50
|
+
"type": bin_type,
|
51
|
+
"collectionDate": datetime.strptime(
|
52
|
+
date,
|
53
|
+
"%d/%m/%y",
|
54
|
+
).strftime(date_format),
|
55
|
+
}
|
56
|
+
bindata["bins"].append(dict_data)
|
57
|
+
|
58
|
+
bindata["bins"].sort(
|
59
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), date_format)
|
60
|
+
)
|
61
|
+
|
62
|
+
return bindata
|
@@ -82,6 +82,30 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
82
82
|
if pattern.match(link_text):
|
83
83
|
return address_link
|
84
84
|
|
85
|
+
try:
|
86
|
+
print("Finding next page link not found.")
|
87
|
+
# Find the 'Next page' link
|
88
|
+
next_page_link = soup.find("a", class_="button float-right")
|
89
|
+
|
90
|
+
# Ensure the link exists
|
91
|
+
if next_page_link:
|
92
|
+
# Extract the href attribute
|
93
|
+
next_page_url = next_page_link["href"]
|
94
|
+
|
95
|
+
# Send a GET request to the next page
|
96
|
+
next_response = requests.get(next_page_url)
|
97
|
+
next_response.raise_for_status() # Raise an exception for HTTP errors
|
98
|
+
|
99
|
+
# Parse the HTML content of the next page
|
100
|
+
soup = BeautifulSoup(next_response.text, "html.parser")
|
101
|
+
address_link = self._get_result_by_identifier(soup, identifier)
|
102
|
+
return address_link
|
103
|
+
else:
|
104
|
+
print("Next page link not found.")
|
105
|
+
except AttributeError as e:
|
106
|
+
print(f"Warning: Could not find the search results. Error: {e}")
|
107
|
+
return None # Return None if no result found
|
108
|
+
|
85
109
|
print(f"Warning: No results found for identifier '{identifier}'.")
|
86
110
|
return None # Return None if no match is found
|
87
111
|
|
@@ -19,6 +19,7 @@ def parse_collection_date(date_string) -> datetime:
|
|
19
19
|
|
20
20
|
return parsed_date
|
21
21
|
|
22
|
+
|
22
23
|
class CouncilClass(AbstractGetBinDataClass):
|
23
24
|
"""
|
24
25
|
Concrete classes have to implement all abstract operations of the
|
@@ -84,6 +85,9 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
84
85
|
|
85
86
|
data = {"bins": []}
|
86
87
|
|
88
|
+
current_year = datetime.now().year
|
89
|
+
next_year = current_year + 1
|
90
|
+
|
87
91
|
next_collection_date = soup.find(
|
88
92
|
"strong", id="SBC-YBD-collectionDate"
|
89
93
|
).text.strip()
|
@@ -104,20 +108,27 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
104
108
|
future_bins = [li.text.strip() for li in soup.select("#FirstFutureBins li")]
|
105
109
|
|
106
110
|
for bin in next_bins:
|
111
|
+
collection_date = datetime.strptime(next_collection_date, "%A, %d %B")
|
112
|
+
if (datetime.now().month == 12) and (collection_date.month == 1):
|
113
|
+
collection_date = collection_date.replace(year=next_year)
|
114
|
+
else:
|
115
|
+
collection_date = collection_date.replace(year=current_year)
|
116
|
+
|
107
117
|
dict_data = {
|
108
118
|
"type": bin,
|
109
|
-
"collectionDate":
|
110
|
-
next_collection_date, "%A, %d %B"
|
111
|
-
).strftime(date_format),
|
119
|
+
"collectionDate": collection_date.strftime(date_format),
|
112
120
|
}
|
113
121
|
data["bins"].append(dict_data)
|
114
122
|
|
115
123
|
for bin in future_bins:
|
124
|
+
collection_date = datetime.strptime(future_collection_date, "%A, %d %B")
|
125
|
+
if (datetime.now().month == 12) and (collection_date.month == 1):
|
126
|
+
collection_date = collection_date.replace(year=next_year)
|
127
|
+
else:
|
128
|
+
collection_date = collection_date.replace(year=current_year)
|
116
129
|
dict_data = {
|
117
130
|
"type": bin,
|
118
|
-
"collectionDate":
|
119
|
-
future_collection_date, "%A, %d %B"
|
120
|
-
).strftime(date_format),
|
131
|
+
"collectionDate": collection_date.strftime(date_format),
|
121
132
|
}
|
122
133
|
data["bins"].append(dict_data)
|
123
134
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/output.schema
RENAMED
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_collect_data.py
RENAMED
File without changes
|
File without changes
|
{uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_conftest.py
RENAMED
File without changes
|
{uk_bin_collection-0.128.5 → uk_bin_collection-0.129.0}/uk_bin_collection/tests/test_get_data.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|