uk_bin_collection 0.126.2__tar.gz → 0.127.1__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (305) hide show
  1. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/PKG-INFO +1 -1
  2. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/pyproject.toml +1 -1
  3. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/input.json +47 -6
  4. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/BrentCouncil.py +115 -0
  5. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +9 -4
  6. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py +96 -0
  7. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py +66 -0
  8. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/DundeeCityCouncil.py +44 -0
  9. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py +54 -0
  10. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +76 -0
  11. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py +1 -1
  12. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +4 -2
  13. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/OadbyAndWigstonBoroughCouncil.py +65 -0
  14. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +29 -13
  15. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +2 -2
  16. uk_bin_collection-0.127.1/uk_bin_collection/uk_bin_collection/councils/WestDunbartonshireCouncil.py +66 -0
  17. uk_bin_collection-0.126.2/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -143
  18. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/LICENSE +0 -0
  19. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/README.md +0 -0
  20. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/README.rst +0 -0
  21. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
  22. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/features/environment.py +0 -0
  23. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
  24. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/output.schema +0 -0
  25. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
  26. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
  27. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/test_collect_data.py +0 -0
  28. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/test_common_functions.py +0 -0
  29. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/test_conftest.py +0 -0
  30. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/tests/test_get_data.py +0 -0
  31. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
  32. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/common.py +0 -0
  33. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py +0 -0
  34. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +0 -0
  35. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
  36. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py +0 -0
  37. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py +0 -0
  38. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py +0 -0
  39. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
  40. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
  41. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AshfieldDistrictCouncil.py +0 -0
  42. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py +0 -0
  43. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
  44. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
  45. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py +0 -0
  46. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
  47. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
  48. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
  49. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
  50. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
  51. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
  52. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
  53. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
  54. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
  55. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
  56. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py +0 -0
  57. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
  58. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BlaenauGwentCountyBoroughCouncil.py +0 -0
  59. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
  60. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
  61. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
  62. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BraintreeDistrictCouncil.py +0 -0
  63. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BrecklandCouncil.py +0 -0
  64. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
  65. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
  66. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
  67. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py +0 -0
  68. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py +0 -0
  69. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
  70. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
  71. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BurnleyBoroughCouncil.py +0 -0
  72. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
  73. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
  74. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
  75. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py +0 -0
  76. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
  77. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py +0 -0
  78. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
  79. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
  80. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
  81. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +0 -0
  82. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
  83. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
  84. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py +0 -0
  85. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
  86. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
  87. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
  88. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
  89. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py +0 -0
  90. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py +0 -0
  91. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +0 -0
  92. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
  93. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
  94. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py +0 -0
  95. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
  96. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
  97. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py +0 -0
  98. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
  99. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
  100. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
  101. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
  102. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py +0 -0
  103. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
  104. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
  105. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py +0 -0
  106. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
  107. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
  108. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py +0 -0
  109. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
  110. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
  111. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
  112. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
  113. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
  114. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EdinburghCityCouncil.py +0 -0
  115. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
  116. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
  117. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
  118. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
  119. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
  120. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py +0 -0
  121. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
  122. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
  123. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
  124. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py +0 -0
  125. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py +0 -0
  126. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py +0 -0
  127. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
  128. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
  129. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
  130. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
  131. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
  132. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py +0 -0
  133. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
  134. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HackneyCouncil.py +0 -0
  135. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
  136. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py +0 -0
  137. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
  138. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
  139. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py +0 -0
  140. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py +0 -0
  141. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py +0 -0
  142. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
  143. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
  144. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HinckleyandBosworthBoroughCouncil.py +0 -0
  145. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
  146. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
  147. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
  148. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
  149. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/KingsLynnandWestNorfolkBC.py +0 -0
  150. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
  151. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
  152. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
  153. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
  154. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
  155. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py +0 -0
  156. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
  157. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
  158. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
  159. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
  160. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py +0 -0
  161. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
  162. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
  163. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLewisham.py +0 -0
  164. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
  165. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py +0 -0
  166. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
  167. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
  168. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
  169. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
  170. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
  171. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
  172. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py +0 -0
  173. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py +0 -0
  174. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
  175. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py +0 -0
  176. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
  177. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
  178. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py +0 -0
  179. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/MorayCouncil.py +0 -0
  180. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
  181. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
  182. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
  183. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
  184. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py +0 -0
  185. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
  186. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
  187. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
  188. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
  189. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
  190. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py +0 -0
  191. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
  192. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
  193. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
  194. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
  195. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
  196. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
  197. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
  198. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
  199. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
  200. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +0 -0
  201. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
  202. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py +0 -0
  203. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
  204. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py +0 -0
  205. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py +0 -0
  206. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/PlymouthCouncil.py +0 -0
  207. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
  208. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/PowysCouncil.py +0 -0
  209. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
  210. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
  211. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RedditchBoroughCouncil.py +0 -0
  212. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
  213. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
  214. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
  215. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
  216. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
  217. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py +0 -0
  218. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
  219. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py +0 -0
  220. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
  221. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
  222. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
  223. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SandwellBoroughCouncil.py +0 -0
  224. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SeftonCouncil.py +0 -0
  225. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
  226. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
  227. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
  228. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
  229. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
  230. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
  231. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
  232. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
  233. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
  234. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py +0 -0
  235. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
  236. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
  237. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
  238. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
  239. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +0 -0
  240. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py +0 -0
  241. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
  242. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
  243. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
  244. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
  245. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
  246. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
  247. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py +0 -0
  248. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
  249. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py +0 -0
  250. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
  251. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
  252. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
  253. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
  254. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
  255. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
  256. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/SwindonBoroughCouncil.py +0 -0
  257. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
  258. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
  259. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py +0 -0
  260. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
  261. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
  262. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
  263. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py +0 -0
  264. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
  265. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py +0 -0
  266. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
  267. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
  268. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
  269. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py +0 -0
  270. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
  271. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
  272. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
  273. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
  274. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
  275. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py +0 -0
  276. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py +0 -0
  277. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
  278. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py +0 -0
  279. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
  280. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
  281. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
  282. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
  283. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestLancashireBoroughCouncil.py +0 -0
  284. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
  285. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
  286. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
  287. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
  288. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py +0 -0
  289. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
  290. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
  291. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
  292. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
  293. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
  294. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
  295. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
  296. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
  297. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WolverhamptonCityCouncil.py +0 -0
  298. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WorcesterCityCouncil.py +0 -0
  299. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
  300. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
  301. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/WyreForestDistrictCouncil.py +0 -0
  302. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
  303. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
  304. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
  305. {uk_bin_collection-0.126.2 → uk_bin_collection-0.127.1}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uk_bin_collection
3
- Version: 0.126.2
3
+ Version: 0.127.1
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uk_bin_collection"
3
- version = "0.126.2"
3
+ version = "0.127.1"
4
4
  description = "Python Lib to collect UK Bin Data"
5
5
  readme = "README.md"
6
6
  authors = ["Robert Bradley <robbrad182@gmail.com>"]
@@ -244,6 +244,13 @@
244
244
  "wiki_name": "Breckland Council",
245
245
  "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
246
246
  },
247
+ "BrentCouncil": {
248
+ "house_number": "25",
249
+ "postcode": "HA3 0QU",
250
+ "url": "https://recyclingservices.brent.gov.uk/waste",
251
+ "wiki_name": "Brent Council",
252
+ "wiki_note": "Pass the house number and postcode in their respective parameters."
253
+ },
247
254
  "BrightonandHoveCityCouncil": {
248
255
  "house_number": "44 Carden Avenue, Brighton, BN1 8NE",
249
256
  "postcode": "BN1 8NE",
@@ -440,7 +447,7 @@
440
447
  "uprn": "100110734613",
441
448
  "url": "https://www.copeland.gov.uk",
442
449
  "wiki_name": "Copeland Borough Council",
443
- "wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
450
+ "wiki_note": "*****This has now been replaced by Cumberland Council****"
444
451
  },
445
452
  "CornwallCouncil": {
446
453
  "skip_get_url": true,
@@ -480,6 +487,12 @@
480
487
  "wiki_name": "Croydon Council",
481
488
  "wiki_note": "Pass the house number and postcode in their respective parameters."
482
489
  },
490
+ "CumberlandCouncil": {
491
+ "uprn": "100110734613",
492
+ "url": "https://waste.cumberland.gov.uk",
493
+ "wiki_name": "Cumberland Borough Council",
494
+ "wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
495
+ },
483
496
  "CumberlandAllerdaleCouncil": {
484
497
  "house_number": "2",
485
498
  "postcode": "CA13 0DE",
@@ -502,6 +515,12 @@
502
515
  "wiki_name": "Dartford Borough Council",
503
516
  "wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
504
517
  },
518
+ "DenbighshireCouncil": {
519
+ "url": "https://www.denbighshire.gov.uk/",
520
+ "uprn": "200004299351",
521
+ "wiki_name": "Denbighshire Council",
522
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
523
+ },
505
524
  "DerbyCityCouncil": {
506
525
  "url": "https://www.derby.gov.uk",
507
526
  "uprn": "10010684240",
@@ -544,6 +563,12 @@
544
563
  "wiki_name": "Dudley Council",
545
564
  "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
546
565
  },
566
+ "DundeeCityCouncil": {
567
+ "url": "https://www.dundeecity.gov.uk/",
568
+ "uprn": "9059043390",
569
+ "wiki_name": "Dundee City Council",
570
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
571
+ },
547
572
  "DurhamCouncil": {
548
573
  "skip_get_url": true,
549
574
  "uprn": "200003218818",
@@ -799,6 +824,12 @@
799
824
  "wiki_name": "Guildford Council",
800
825
  "wiki_note": "If the bin day is 'today' then the collectionDate will only show today's date if before 7 AM; else the date will be in 'previousCollectionDate'. To get the UPRN, you will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search)."
801
826
  },
827
+ "GwyneddCouncil": {
828
+ "url": "https://diogel.gwynedd.llyw.cymru",
829
+ "uprn": "10070350463",
830
+ "wiki_name": "Gwynedd Council",
831
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
832
+ },
802
833
  "HackneyCouncil": {
803
834
  "house_number": "101",
804
835
  "postcode": "N16 9AS",
@@ -930,13 +961,11 @@
930
961
  "wiki_note": "Follow the instructions [here](https://waste-services.kingston.gov.uk/waste) until the \"Your bin days\" page, then copy the URL and replace the URL in the command."
931
962
  },
932
963
  "KirkleesCouncil": {
933
- "house_number": "24",
934
- "postcode": "HD7 5DX",
964
+ "uprn": "83002937",
935
965
  "skip_get_url": true,
936
966
  "url": "https://www.kirklees.gov.uk/beta/your-property-bins-recycling/your-bins",
937
- "web_driver": "http://selenium:4444",
938
967
  "wiki_name": "Kirklees Council",
939
- "wiki_note": "Pass the house number and postcode in their respective parameters. This parser requires a Selenium webdriver."
968
+ "wiki_note": "Provide your UPRN. Find your UPRN using [FindMyAddress](https://www.findmyaddress.co.uk/search)."
940
969
  },
941
970
  "KnowsleyMBCouncil": {
942
971
  "house_number": "22",
@@ -1319,7 +1348,7 @@
1319
1348
  "house_number": "22",
1320
1349
  "postcode": "NE46 1UQ",
1321
1350
  "skip_get_url": true,
1322
- "url": "https://www.northumberland.gov.uk/Waste/Bins/Bin-Calendars.aspx",
1351
+ "url": "https://www.northumberland.gov.uk/Waste/Household-waste/Household-bin-collections/Bin-Calendars.aspx",
1323
1352
  "web_driver": "http://selenium:4444",
1324
1353
  "wiki_name": "Northumberland Council",
1325
1354
  "wiki_note": "Pass the house number and postcode in their respective parameters. This parser requires a Selenium webdriver."
@@ -1338,6 +1367,12 @@
1338
1367
  "house_number": "Newdigate Road",
1339
1368
  "wiki_note": "Pass the name of the street ONLY in the house number parameter, wrapped in double quotes. Street name must match exactly as it appears on the council's website."
1340
1369
  },
1370
+ "OadbyAndWigstonBoroughCouncil": {
1371
+ "url": "https://my.oadby-wigston.gov.uk",
1372
+ "uprn": "10010149102",
1373
+ "wiki_name": "Oadby & Wigston Borough Council",
1374
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
1375
+ },
1341
1376
  "OldhamCouncil": {
1342
1377
  "url": "https://portal.oldham.gov.uk/bincollectiondates/details?uprn=422000033556",
1343
1378
  "wiki_name": "Oldham Council",
@@ -1979,6 +2014,12 @@
1979
2014
  "wiki_name": "West Berkshire Council",
1980
2015
  "wiki_note": "Provide your house number in the `house_number` parameter and postcode in the `postcode` parameter."
1981
2016
  },
2017
+ "WestDunbartonshireCouncil": {
2018
+ "url": "https://www.west-dunbarton.gov.uk/",
2019
+ "uprn": "129001383",
2020
+ "wiki_name": "West Dunbartonshire Council",
2021
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
2022
+ },
1982
2023
  "WestLancashireBoroughCouncil": {
1983
2024
  "url": "https://www.westlancs.gov.uk",
1984
2025
  "uprn": "10012343339",
@@ -0,0 +1,115 @@
1
+ from time import sleep
2
+
3
+ import requests
4
+ from bs4 import BeautifulSoup
5
+
6
+ from uk_bin_collection.uk_bin_collection.common import *
7
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
8
+
9
+
10
+ # import the wonderful Beautiful Soup and the URL grabber
11
+ class CouncilClass(AbstractGetBinDataClass):
12
+ """
13
+ Concrete classes have to implement all abstract operations of the
14
+ base class. They can also override some operations with a default
15
+ implementation.
16
+ """
17
+
18
+ def parse_data(self, page: str, **kwargs) -> dict:
19
+ data = {"bins": []}
20
+ user_postcode = kwargs.get("postcode")
21
+ user_paon = kwargs.get("paon")
22
+ check_postcode(user_postcode)
23
+ check_paon(user_paon)
24
+
25
+ URI = "https://recyclingservices.brent.gov.uk/waste"
26
+
27
+ payload = {"postcode": user_postcode}
28
+
29
+ s = requests.Session()
30
+
31
+ # Make the POST request
32
+ response = s.post(URI, data=payload)
33
+
34
+ # Make a BS4 object
35
+ soup = BeautifulSoup(response.content, features="html.parser")
36
+
37
+ address_list = soup.find_all("option")
38
+
39
+ current_year = datetime.now().year
40
+ next_year = current_year + 1
41
+
42
+ for address in address_list:
43
+ if user_paon in (address.text):
44
+ address_id = address.get("value")
45
+ URI = f"https://recyclingservices.brent.gov.uk/waste/{address_id}"
46
+
47
+ counter = 0
48
+ r = s.get(URI)
49
+ while "Loading your bin days..." in r.text:
50
+ counter = counter + 1
51
+ if counter == 20:
52
+ return data
53
+ sleep(2)
54
+ r = s.get(URI)
55
+
56
+ r.raise_for_status()
57
+
58
+ soup = BeautifulSoup(r.content, features="html.parser")
59
+
60
+ wastecollections = soup.find("div", {"class": "waste__collections"})
61
+
62
+ # Find all waste service sections
63
+ waste_services = wastecollections.find_all(
64
+ "h3", class_="govuk-heading-m waste-service-name"
65
+ )
66
+
67
+ for service in waste_services:
68
+ # Get the collection type (e.g., Rubbish, Recycling)
69
+ collection_type = (service.get_text(strip=True)).split("\n")[0]
70
+
71
+ # Find the sibling container holding details
72
+ service_details = service.find_next(
73
+ "dl", class_="govuk-summary-list"
74
+ )
75
+
76
+ if service_details:
77
+
78
+ # Extract next collection date
79
+ next_collection_row = service_details.find(
80
+ "dt", string="Next collection"
81
+ )
82
+ next_collection = (
83
+ next_collection_row.find_next_sibling("dd").get_text(
84
+ strip=True
85
+ )
86
+ if next_collection_row
87
+ else "Unknown"
88
+ )
89
+
90
+ # Parse dates into standard dd/mm/yyyy format
91
+ next_collection_date = datetime.strptime(
92
+ remove_ordinal_indicator_from_date_string(next_collection),
93
+ "%A, %d %B",
94
+ )
95
+
96
+ if (datetime.now().month == 12) and (
97
+ next_collection.month == 1
98
+ ):
99
+ next_collection_date = next_collection_date.replace(
100
+ year=next_year
101
+ )
102
+ else:
103
+ next_collection_date = next_collection_date.replace(
104
+ year=current_year
105
+ )
106
+
107
+ dict_data = {
108
+ "type": collection_type.strip(),
109
+ "collectionDate": next_collection_date.strftime(
110
+ date_format
111
+ ),
112
+ }
113
+ data["bins"].append(dict_data)
114
+
115
+ return data
@@ -1,7 +1,8 @@
1
1
  from bs4 import BeautifulSoup
2
+ from dateutil.relativedelta import relativedelta
3
+
2
4
  from uk_bin_collection.uk_bin_collection.common import *
3
5
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
4
- from dateutil.relativedelta import relativedelta
5
6
 
6
7
 
7
8
  # import the wonderful Beautiful Soup and the URL grabber
@@ -52,9 +53,13 @@ class CouncilClass(AbstractGetBinDataClass):
52
53
 
53
54
  for item in soup.find_all("div", class_="collection text-center service"):
54
55
  bin_type = item.contents[1].text + " bin"
55
- collection_date = datetime.strptime(item.contents[5].text, "%d %b").replace(
56
- year=curr_date.year
57
- )
56
+ try:
57
+ collection_date = datetime.strptime(
58
+ item.contents[5].text, "%d %b"
59
+ ).replace(year=curr_date.year)
60
+ except:
61
+ continue
62
+
58
63
  if curr_date.month == 12 and collection_date.month == 1:
59
64
  collection_date = collection_date + relativedelta(years=1)
60
65
  collections.append((bin_type, collection_date))
@@ -0,0 +1,96 @@
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_uprn = kwargs.get("uprn")
19
+ check_uprn(user_uprn)
20
+ bindata = {"bins": []}
21
+
22
+ URI = "https://waste.cumberland.gov.uk/renderform?t=25&k=E43CEB1FB59F859833EF2D52B16F3F4EBE1CAB6A"
23
+
24
+ s = requests.Session()
25
+
26
+ # Make the GET request
27
+ response = s.get(URI)
28
+
29
+ # Make a BS4 object
30
+ soup = BeautifulSoup(response.content, features="html.parser")
31
+
32
+ # print(soup)
33
+
34
+ token = (soup.find("input", {"name": "__RequestVerificationToken"})).get(
35
+ "value"
36
+ )
37
+
38
+ formguid = (soup.find("input", {"name": "FormGuid"})).get("value")
39
+
40
+ # print(token)
41
+ # print(formguid)
42
+
43
+ headers = {
44
+ "Content-Type": "application/x-www-form-urlencoded",
45
+ "Origin": "https://waste.cumberland.gov.uk",
46
+ "Referer": "https://waste.cumberland.gov.uk/renderform?t=25&k=E43CEB1FB59F859833EF2D52B16F3F4EBE1CAB6A",
47
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 OPR/98.0.0.0",
48
+ "X-Requested-With": "XMLHttpRequest",
49
+ }
50
+
51
+ payload = {
52
+ "__RequestVerificationToken": token,
53
+ "FormGuid": formguid,
54
+ "ObjectTemplateID": "25",
55
+ "Trigger": "submit",
56
+ "CurrentSectionID": "33",
57
+ "TriggerCtl": "",
58
+ "FF265": f"U{user_uprn}",
59
+ "FF265lbltxt": "Please select your address",
60
+ }
61
+
62
+ # print(payload)
63
+
64
+ response = s.post(
65
+ "https://waste.cumberland.gov.uk/renderform/Form",
66
+ headers=headers,
67
+ data=payload,
68
+ )
69
+
70
+ soup = BeautifulSoup(response.content, features="html.parser")
71
+ for row in soup.find_all("div", class_="resirow"):
72
+ # Extract the type of collection (e.g., Recycling, Refuse)
73
+ collection_type_div = row.find("div", class_="col")
74
+ collection_type = (
75
+ collection_type_div.get("class")[1]
76
+ if collection_type_div
77
+ else "Unknown"
78
+ )
79
+
80
+ # Extract the collection date
81
+ date_div = row.find("div", style="width:360px;")
82
+ collection_date = date_div.text.strip() if date_div else "Unknown"
83
+
84
+ dict_data = {
85
+ "type": collection_type,
86
+ "collectionDate": datetime.strptime(
87
+ collection_date, "%A %d %B %Y"
88
+ ).strftime(date_format),
89
+ }
90
+ bindata["bins"].append(dict_data)
91
+
92
+ bindata["bins"].sort(
93
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
94
+ )
95
+
96
+ return bindata
@@ -0,0 +1,66 @@
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
+ URI = "https://refusecalendarapi.denbighshire.gov.uk/Csrf/token"
24
+
25
+ token = requests.get(URI)
26
+
27
+ token_data = token.json()
28
+
29
+ URI = f"https://refusecalendarapi.denbighshire.gov.uk/Calendar/{user_uprn}"
30
+
31
+ headers = {
32
+ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
33
+ "content-type": "application/json",
34
+ "dnt": "1",
35
+ "host": "refusecalendarapi.denbighshire.gov.uk",
36
+ "referer": "https://refusecalendarapi.denbighshire.gov.uk/",
37
+ "x-csrf-token": token_data["token"],
38
+ }
39
+
40
+ # Make the GET request
41
+ response = requests.get(URI, headers=headers)
42
+
43
+ # Parse the JSON response
44
+ json_data = response.json()
45
+
46
+ bin_types = {
47
+ "refuseDate": "Refuse",
48
+ "recyclingDate": "Recycling",
49
+ "gardenDate": "Garden Waste",
50
+ "ahpDate": "AHP (Assisted Household Pickup)",
51
+ "tradeDate": "Trade Waste",
52
+ "tradeRefuseDate": "Trade Refuse",
53
+ "tradeRecyclingDate": "Trade Recycling",
54
+ }
55
+
56
+ bindata["bins"] = [
57
+ {"type": label, "collectionDate": json_data[key]}
58
+ for key, label in bin_types.items()
59
+ if json_data.get(key)
60
+ ]
61
+
62
+ bindata["bins"].sort(
63
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
64
+ )
65
+
66
+ return bindata
@@ -0,0 +1,44 @@
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
+ URI = f"https://www.dundee-mybins.co.uk/get_calendar.php?rn={user_uprn}"
24
+
25
+ # Make the GET request
26
+ response = requests.get(URI)
27
+
28
+ # Parse the JSON response
29
+ bin_collection = response.json()
30
+
31
+ for item in bin_collection:
32
+ dict_data = {
33
+ "type": item["title"],
34
+ "collectionDate": datetime.strptime(item["start"], "%Y-%m-%d").strftime(
35
+ date_format
36
+ ),
37
+ }
38
+ bindata["bins"].append(dict_data)
39
+
40
+ bindata["bins"].sort(
41
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
42
+ )
43
+
44
+ return bindata
@@ -0,0 +1,54 @@
1
+ import requests
2
+ from bs4 import BeautifulSoup, Tag
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_uprn = kwargs.get("uprn")
19
+ check_uprn(user_uprn)
20
+ bindata = {"bins": []}
21
+
22
+ URI = f"https://diogel.gwynedd.llyw.cymru/Daearyddol/en/LleDwinByw/Index/{user_uprn}"
23
+
24
+ # Make the GET request
25
+ response = requests.get(URI)
26
+
27
+ soup = BeautifulSoup(response.text, "html.parser")
28
+ collections_headline = soup.find("h6", text="Next collection dates:")
29
+ if not isinstance(collections_headline, Tag):
30
+ raise Exception("Could not find collections")
31
+ collections = collections_headline.find_next("ul").find_all("li")
32
+
33
+ for collection in collections:
34
+ if not isinstance(collection, Tag):
35
+ continue
36
+ for p in collection.find_all("p"):
37
+ p.extract()
38
+
39
+ bin_type, date_str = collection.text.strip().split(":")[:2]
40
+ bin_type, date_str = bin_type.strip(), date_str.strip()
41
+
42
+ dict_data = {
43
+ "type": bin_type,
44
+ "collectionDate": datetime.strptime(date_str, "%A %d/%m/%Y").strftime(
45
+ date_format
46
+ ),
47
+ }
48
+ bindata["bins"].append(dict_data)
49
+
50
+ bindata["bins"].sort(
51
+ key=lambda x: datetime.strptime(x.get("collectionDate"), date_format)
52
+ )
53
+
54
+ return bindata
@@ -0,0 +1,76 @@
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
+ SESSION_URL = "https://my.kirklees.gov.uk/authapi/isauthenticated?uri=https%253A%252F%252Fmy.kirklees.gov.uk%252Fservice%252FBins_and_recycling___Manage_your_bins&hostname=my.kirklees.gov.uk&withCredentials=true"
24
+
25
+ API_URL = "https://my.kirklees.gov.uk/apibroker/runLookup"
26
+
27
+ data = {
28
+ "formValues": {"Search": {"validatedUPRN": {"value": user_uprn}}},
29
+ }
30
+ headers = {
31
+ "Content-Type": "application/json",
32
+ "Accept": "application/json",
33
+ "User-Agent": "Mozilla/5.0",
34
+ "X-Requested-With": "XMLHttpRequest",
35
+ "Referer": "https://my.kirklees.gov.uk/fillform/?iframe_id=fillform-frame-1&db_id=",
36
+ }
37
+ s = requests.session()
38
+ r = s.get(SESSION_URL)
39
+ r.raise_for_status()
40
+ session_data = r.json()
41
+ sid = session_data["auth-session"]
42
+ params = {
43
+ "id": "65e08e60b299d",
44
+ "repeat_against": "",
45
+ "noRetry": "false",
46
+ "getOnlyTokens": "undefined",
47
+ "log_id": "",
48
+ "app_name": "AF-Renderer::Self",
49
+ # unix_timestamp
50
+ "_": str(int(time.time() * 1000)),
51
+ "sid": sid,
52
+ }
53
+
54
+ r = s.post(API_URL, json=data, headers=headers, params=params)
55
+ r.raise_for_status()
56
+
57
+ data = r.json()
58
+ rows_data = data["integration"]["transformed"]["rows_data"]
59
+ if not isinstance(rows_data, dict):
60
+ raise ValueError("Invalid data returned from API")
61
+
62
+ for bin_id, bin_info in rows_data.items():
63
+ label = bin_info.get("label", "Unknown")
64
+ next_collection_date = bin_info.get("NextCollectionDate", "Unknown")
65
+ # Convert the date string into a readable format
66
+ try:
67
+ formatted_date = datetime.strptime(
68
+ next_collection_date, "%Y-%m-%dT%H:%M:%S"
69
+ ).strftime(date_format)
70
+ except ValueError:
71
+ formatted_date = "Unknown"
72
+
73
+ dict_data = {"type": label, "collectionDate": formatted_date}
74
+ bindata["bins"].append(dict_data)
75
+
76
+ return bindata
@@ -61,7 +61,7 @@ class CouncilClass(AbstractGetBinDataClass):
61
61
  "%A, %d %B",
62
62
  )
63
63
 
64
- if next_collection.month == 1:
64
+ if (datetime.now().month == 12) and (next_collection.month == 1):
65
65
  next_collection = next_collection.replace(year=next_year)
66
66
  else:
67
67
  next_collection = next_collection.replace(year=current_year)
@@ -27,7 +27,7 @@ class CouncilClass(AbstractGetBinDataClass):
27
27
  def parse_data(self, page: str, **kwargs) -> dict:
28
28
  driver = None
29
29
  try:
30
- page = "https://www.northumberland.gov.uk/Waste/Bins/Bin-Calendars.aspx"
30
+ page = "https://www.northumberland.gov.uk/Waste/Household-waste/Household-bin-collections/Bin-Calendars.aspx"
31
31
 
32
32
  data = {"bins": []}
33
33
 
@@ -74,7 +74,7 @@ class CouncilClass(AbstractGetBinDataClass):
74
74
  "span",
75
75
  id="p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_spanRouteSummary",
76
76
  )
77
- .string.replace("Routes found: ", "")
77
+ .text.replace("Routes found: ", "")
78
78
  .split(","),
79
79
  )
80
80
  )
@@ -82,6 +82,8 @@ class CouncilClass(AbstractGetBinDataClass):
82
82
  # Get the background colour for each of them...
83
83
  bins_by_colours = dict()
84
84
  for bin in bins_collected:
85
+ if "(but no dates found)" in bin:
86
+ continue
85
87
  style_str = soup.find("span", string=bin)["style"]
86
88
  bin_colour = self.extract_styles(style_str)["background-color"].upper()
87
89
  bins_by_colours[bin_colour] = bin