uk_bin_collection 0.136.0__tar.gz → 0.137.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/PKG-INFO +35 -36
  2. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/README.md +33 -35
  3. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/pyproject.toml +2 -1
  4. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/input.json +7 -1
  5. uk_bin_collection-0.137.0/uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py +38 -0
  6. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +8 -9
  7. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/LICENSE +0 -0
  8. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/README.rst +0 -0
  9. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/check_selenium_url_in_input.json.py +0 -0
  10. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
  11. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/features/environment.py +0 -0
  12. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
  13. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/output.schema +0 -0
  14. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
  15. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
  16. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
  17. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
  18. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/test_conftest.py +0 -0
  19. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/tests/test_get_data.py +0 -0
  20. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
  21. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
  22. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py +0 -0
  23. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +0 -0
  24. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
  25. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AmberValleyBoroughCouncil.py +0 -0
  26. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py +0 -0
  27. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py +0 -0
  28. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py +0 -0
  29. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
  30. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
  31. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AshfieldDistrictCouncil.py +0 -0
  32. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py +0 -0
  33. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
  34. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
  35. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py +0 -0
  36. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
  37. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
  38. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
  39. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
  40. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
  41. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
  42. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
  43. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
  44. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
  45. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
  46. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py +0 -0
  47. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
  48. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BlaenauGwentCountyBoroughCouncil.py +0 -0
  49. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BolsoverCouncil.py +0 -0
  50. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
  51. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BostonBoroughCouncil.py +0 -0
  52. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
  53. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
  54. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BraintreeDistrictCouncil.py +0 -0
  55. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BrecklandCouncil.py +0 -0
  56. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BrentCouncil.py +0 -0
  57. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
  58. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
  59. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
  60. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py +0 -0
  61. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py +0 -0
  62. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
  63. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
  64. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BurnleyBoroughCouncil.py +0 -0
  65. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
  66. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
  67. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CambridgeCityCouncil.py +0 -0
  68. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
  69. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py +0 -0
  70. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
  71. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py +0 -0
  72. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
  73. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
  74. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
  75. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +0 -0
  76. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py +0 -0
  77. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
  78. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
  79. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py +0 -0
  80. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
  81. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
  82. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
  83. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
  84. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py +0 -0
  85. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
  86. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py +0 -0
  87. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +0 -0
  88. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
  89. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
  90. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py +0 -0
  91. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py +0 -0
  92. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
  93. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
  94. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py +0 -0
  95. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py +0 -0
  96. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
  97. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
  98. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
  99. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
  100. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py +0 -0
  101. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DundeeCityCouncil.py +0 -0
  102. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
  103. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
  104. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py +0 -0
  105. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
  106. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
  107. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py +0 -0
  108. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
  109. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastLothianCouncil.py +0 -0
  110. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
  111. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
  112. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastStaffordshireBoroughCouncil.py +0 -0
  113. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
  114. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
  115. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EdinburghCityCouncil.py +0 -0
  116. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
  117. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
  118. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
  119. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
  120. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/EpsomandEwellBoroughCouncil.py +0 -0
  121. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
  122. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py +0 -0
  123. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
  124. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
  125. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
  126. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py +0 -0
  127. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py +0 -0
  128. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py +0 -0
  129. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
  130. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
  131. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
  132. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
  133. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
  134. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py +0 -0
  135. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
  136. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py +0 -0
  137. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HackneyCouncil.py +0 -0
  138. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
  139. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py +0 -0
  140. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
  141. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
  142. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py +0 -0
  143. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py +0 -0
  144. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py +0 -0
  145. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py +0 -0
  146. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
  147. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
  148. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HinckleyandBosworthBoroughCouncil.py +0 -0
  149. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
  150. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
  151. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
  152. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/IpswichBoroughCouncil.py +0 -0
  153. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
  154. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/KingsLynnandWestNorfolkBC.py +0 -0
  155. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
  156. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
  157. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
  158. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
  159. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
  160. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LeicesterCityCouncil.py +0 -0
  161. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
  162. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py +0 -0
  163. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
  164. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
  165. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
  166. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
  167. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py +0 -0
  168. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
  169. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
  170. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLewisham.py +0 -0
  171. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.py +0 -0
  172. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
  173. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py +0 -0
  174. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py +0 -0
  175. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
  176. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
  177. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
  178. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
  179. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MedwayCouncil.py +0 -0
  180. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
  181. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
  182. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py +0 -0
  183. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py +0 -0
  184. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
  185. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py +0 -0
  186. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py +0 -0
  187. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
  188. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
  189. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py +0 -0
  190. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/MorayCouncil.py +0 -0
  191. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
  192. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
  193. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
  194. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
  195. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py +0 -0
  196. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
  197. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
  198. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
  199. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
  200. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
  201. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py +0 -0
  202. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
  203. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
  204. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
  205. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
  206. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
  207. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
  208. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
  209. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
  210. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
  211. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
  212. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +0 -0
  213. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
  214. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py +0 -0
  215. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/OadbyAndWigstonBoroughCouncil.py +0 -0
  216. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
  217. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py +0 -0
  218. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py +0 -0
  219. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/PlymouthCouncil.py +0 -0
  220. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
  221. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/PowysCouncil.py +0 -0
  222. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
  223. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
  224. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RedcarandClevelandCouncil.py +0 -0
  225. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RedditchBoroughCouncil.py +0 -0
  226. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
  227. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
  228. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
  229. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
  230. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
  231. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py +0 -0
  232. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
  233. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py +0 -0
  234. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
  235. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RunnymedeBoroughCouncil.py +0 -0
  236. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
  237. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
  238. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
  239. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SandwellBoroughCouncil.py +0 -0
  240. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SeftonCouncil.py +0 -0
  241. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
  242. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
  243. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
  244. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
  245. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
  246. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
  247. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
  248. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
  249. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
  250. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py +0 -0
  251. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
  252. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
  253. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
  254. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
  255. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +0 -0
  256. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py +0 -0
  257. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
  258. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthamptonCityCouncil.py +0 -0
  259. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
  260. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SpelthorneBoroughCouncil.py +0 -0
  261. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
  262. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
  263. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
  264. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
  265. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py +0 -0
  266. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
  267. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py +0 -0
  268. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
  269. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
  270. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
  271. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
  272. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SurreyHeathBoroughCouncil.py +0 -0
  273. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
  274. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
  275. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/SwindonBoroughCouncil.py +0 -0
  276. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
  277. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
  278. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py +0 -0
  279. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
  280. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
  281. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
  282. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py +0 -0
  283. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
  284. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py +0 -0
  285. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
  286. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
  287. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
  288. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py +0 -0
  289. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
  290. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
  291. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
  292. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
  293. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
  294. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py +0 -0
  295. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py +0 -0
  296. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
  297. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py +0 -0
  298. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
  299. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
  300. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
  301. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
  302. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestDunbartonshireCouncil.py +0 -0
  303. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestLancashireBoroughCouncil.py +0 -0
  304. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
  305. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
  306. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
  307. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
  308. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py +0 -0
  309. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
  310. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
  311. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
  312. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
  313. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
  314. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
  315. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
  316. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
  317. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WolverhamptonCityCouncil.py +0 -0
  318. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WorcesterCityCouncil.py +0 -0
  319. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
  320. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
  321. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/WyreForestDistrictCouncil.py +0 -0
  322. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
  323. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
  324. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
  325. {uk_bin_collection-0.136.0 → uk_bin_collection-0.137.0}/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.136.0
3
+ Version: 0.137.0
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -10,6 +10,7 @@ Classifier: Programming Language :: Python :: 3.12
10
10
  Classifier: Programming Language :: Python :: 3.13
11
11
  Requires-Dist: bs4
12
12
  Requires-Dist: holidays
13
+ Requires-Dist: ics (>=0.7.2,<0.8.0)
13
14
  Requires-Dist: lxml
14
15
  Requires-Dist: pandas
15
16
  Requires-Dist: python-dateutil
@@ -41,10 +42,10 @@ Description-Content-Type: text/markdown
41
42
  # UK Bin Collection Data (UKBCD)
42
43
  This project aims to provide a neat and standard way of providing bin collection data in JSON format from UK councils that have no API to do so.
43
44
 
44
- Why do this?
45
- You might want to use this in a Home Automation - for example say you had an LED bar that lit up on the day of bin collection to the colour of the bin you want to take out, then this repo provides the data for that.
45
+ Why would you want to do this?
46
+ You might want to use this in Home Automationfor example, say you had an LED bar that lit up on the day of bin collection to the colour of the bin you want to take out; then this repo provides the data for that.
46
47
 
47
- **PLEASE respect a councils infrastructure / usage policy and only collect data for your own personal use on a suitable frequency to your collection schedule.**
48
+ **PLEASE respect a councils' infrastructure / usage policy and only collect data for your own personal use on a suitable frequency to your collection schedule.**
48
49
 
49
50
  Most scripts make use of [Beautiful Soup 4](https://pypi.org/project/beautifulsoup4/) to scrape data, although others use different approaches, such as emulating web browser behaviour, or reading data from CSV files.
50
51
 
@@ -59,12 +60,12 @@ Most scripts make use of [Beautiful Soup 4](https://pypi.org/project/beautifulso
59
60
  If an issue already exists, please comment on that issue to express your interest. Please do not open a new issue, as it will be closed as a duplicate.
60
61
 
61
62
  If an issue does not already exist, please fill in a new [Council Request](https://github.com/robbrad/UKBinCollectionData/issues/new/choose) form, including as much information as possible, including:
62
- - Name of the council
63
- - URL to bin collections
64
- - An example postcode and/or UPRN (whichever is relevant)
65
- - Any further information
63
+ - Name of the council.
64
+ - URL to bin collections.
65
+ - An example postcode and/or [UPRN](https://uprn.uk/) (whichever is relevant).
66
+ - Any further information.
66
67
 
67
- Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council will get added.
68
+ Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council is added to this integration.
68
69
 
69
70
  ---
70
71
 
@@ -80,7 +81,7 @@ This integration can be installed directly via HACS. To install:
80
81
  * [Add the repository](https://my.home-assistant.io/redirect/hacs_repository/?owner=robbrad&repository=UKBinCollectionData&category=integration) to your HACS installation
81
82
  * Click `Download`
82
83
 
83
- For details how setup the custom component integration see the [this documentation](https://github.com/robbrad/UKBinCollectionData/tree/master/custom_components/uk_bin_collection).
84
+ For details on how to setup the custom component integration, see the [documentation](https://github.com/robbrad/UKBinCollectionData/tree/master/custom_components/uk_bin_collection).
84
85
 
85
86
  #### Manual
86
87
  1. Ensure you have [HACS](https://hacs.xyz/) installed
@@ -90,7 +91,7 @@ For details how setup the custom component integration see the [this documentati
90
91
  1. Click `+ Add Integration` and search for and select `UK Bin Collection Data` then click `Download`.
91
92
  1. Restart your Home Assistant.
92
93
  1. In the Home Assistant UI go to `Settings` > `Devices & Services` click `+ Add Integration` and search for `UK Bin Collection Data`.
93
- 1. If your see a "URL of the remote Selenium web driver to use" field when setting up your council, you'll need to provide the URL to a web driver you've set up seperately such as [standalone-chrome](https://hub.docker.com/r/selenium/standalone-chrome).
94
+ 1. If you see a "URL of the remote Selenium web driver to use" field when setting up your council, you'll need to provide the URL to a web driver you've set up separately such as [standalone-chrome](https://hub.docker.com/r/selenium/standalone-chrome).
94
95
 
95
96
  ### Install manually
96
97
 
@@ -101,15 +102,15 @@ For details how setup the custom component integration see the [this documentati
101
102
  1. In the Home Assistant UI go to `Settings` > `Devices & Services` click `+ Add Integration` and search for `UK Bin Collection Data`.
102
103
 
103
104
  ### Overriding the Bin Icon and Bin Colour
104
- We realise it is difficult to set a colour from the councils text for the Bin Type and to keep the integration generic we dont capture colour from a council(not all councils supply this as a field), only bin type and next collection date.
105
+ We realise it is difficult to set a colour from the councils text for the Bin Type and to keep the integration generic, we don't capture colour from a council (not all councils supply this as a field), only bin type and next collection date.
105
106
 
106
- When you configure the componenent on the first screen you can set a JSON string to map the bin type to the colour and icon
107
+ When you configure the component on the first screen, you can set a JSON string to map the bin type to the colour and icon
107
108
 
108
109
  Here is an example to set the colour and icon for the type `Empty Standard General Waste`. This type is the type returned from the council for the bin. You can do this for multiple bins.
109
110
 
110
- If you miss this on the first setup you can reconfigure it.
111
+ If you miss this on the first setup, you can reconfigure it.
111
112
 
112
- ```
113
+ ```json
113
114
  {
114
115
  "Empty Standard General Waste":
115
116
  {
@@ -147,7 +148,7 @@ where ```council_name``` is the name of the council's .py script (without the .p
147
148
  The help documentation refers to these as "module" and "URL", respectively. Supported council scripts can be found in the `uk_bin_collection/uk_bin_collection/councils` folder.
148
149
 
149
150
  Some scripts require additional parameters, for example, when a UPRN is not passed in a URL, or when the script is not scraping a web page.
150
- For example, the Leeds City Council script needs two additional parameters - a postcode, and a house number. This is done like so:
151
+ For example, the Leeds City Council script needs two additional parametersa postcode, and a house number. This is done like so:
151
152
 
152
153
  ```commandline
153
154
  python collect_data.py LeedsCityCouncil https://www.leeds.gov.uk/residents/bins-and-recycling/check-your-bin-day -p "LS1 2JG" -n 41
@@ -161,9 +162,8 @@ To check the parameters needed for your council's script, please check the [proj
161
162
 
162
163
 
163
164
  ### Project dependencies
164
- Some scripts rely on external packages to function. A list of required scripts for both development and execution can be found in the project's [PROJECT_TOML](https://github.com/robbrad/UKBinCollectionData/blob/feature/%2353_integration_tests/pyproject.toml)
165
- Install can be done via
166
- `poetry install` from within the root of the repo.
165
+ Some scripts rely on external packages to function. A list of required scripts for both development and execution can be found in the project's [PROJECT_TOML](https://github.com/robbrad/UKBinCollectionData/blob/feature/%2353_integration_tests/pyproject.toml).
166
+ Install can be done via `poetry install` from within the root of the repo.
167
167
 
168
168
  ---
169
169
 
@@ -172,7 +172,7 @@ Some councils make use of the UPRN (Unique property reference number) to identif
172
172
 
173
173
  ---
174
174
  ## Selenium
175
- Some councils need Selenium to run the scrape on behalf of Home Assistant. The easiest way to do this is run Selenium as in a Docker container. However you do this the Home Assistant server must be able to reach the Selenium server
175
+ Some councils need Selenium to run the scrape on behalf of Home Assistant. The easiest way to do this is run Selenium as in a Docker container. However that you do this, the Home Assistant server must be able to reach the Selenium server.
176
176
 
177
177
  ### Instructions for Windows, Linux, and Mac
178
178
 
@@ -182,7 +182,7 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
182
182
 
183
183
  1. **Download Docker Desktop for Windows:**
184
184
 
185
- * Go to the Docker website: Docker Desktop for Windows
185
+ * Go to the Docker website: Docker Desktop for Windows.
186
186
  * Download and install Docker Desktop.
187
187
  2. **Run Docker Desktop:**
188
188
 
@@ -235,7 +235,7 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
235
235
 
236
236
  1. **Download Docker Desktop for Mac:**
237
237
 
238
- * Go to the Docker website: Docker Desktop for Mac
238
+ * Go to the Docker website: Docker Desktop for Mac.
239
239
  * Download and install Docker Desktop.
240
240
  2. **Run Docker Desktop:**
241
241
 
@@ -253,7 +253,7 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
253
253
  docker pull selenium/standalone-chrome
254
254
  ```
255
255
 
256
- 4. **Run the Selenium Standalone Chrome container:**
256
+ 3. **Run the Selenium Standalone Chrome container:**
257
257
 
258
258
  ```bash
259
259
  docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
@@ -262,17 +262,17 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
262
262
  #### Step 3: Test the Selenium Server
263
263
 
264
264
  1. **Navigate to the Selenium server URL in your web browser:**
265
- * Open a web browser and go to `http://localhost:4444`
265
+ * Open a web browser and go to `http://localhost:4444`.
266
266
  * You should see the Selenium Grid console.
267
267
 
268
268
  #### Step 4: Supply the Selenium Server URL to UKBinCollectionData
269
269
 
270
270
  1. **Find the `UKBinCollectionData` project:**
271
271
 
272
- * Go to the GitHub repository: [UKBinCollectionData](https://github.com/robbrad/UKBinCollectionData)
272
+ * Go to the GitHub repository: [UKBinCollectionData](https://github.com/robbrad/UKBinCollectionData).
273
273
  2. **Supply the Selenium Server URL:**
274
274
 
275
- * Typically, the URL will be `http://localhost:4444/wd/hub`
275
+ * Typically, the URL will be `http://localhost:4444/wd/hub`.
276
276
  * You might need to update a configuration file or environment variable in the project to use this URL. Check the project's documentation for specific instructions.
277
277
 
278
278
  ### Summary of Commands
@@ -297,7 +297,7 @@ This guide is based on a Raspberry Pi 4. Instructions for other systems may vary
297
297
 
298
298
  #### Prerequisites
299
299
  1. Install **Portainer** from Alex Belgium's add-on repository:
300
- [github.com/alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons)
300
+ [alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons)
301
301
 
302
302
  ---
303
303
 
@@ -367,13 +367,13 @@ We have created an API for this located under [uk_bin_collection_api_server](htt
367
367
 
368
368
  ### Prerequisites
369
369
 
370
- - Docker installed on your machine
371
- - Python (if you plan to run the API locally without Docker)
370
+ - Docker installed on your machine.
371
+ - Python (if you plan to run the API locally without Docker).
372
372
 
373
373
  ### Running the API with Docker
374
374
 
375
375
  1. Clone this repository.
376
- 2. Navigate to the uk_bin_collection_api_server directory of the project.
376
+ 2. Navigate to the `uk_bin_collection_api_server` directory of the project.
377
377
 
378
378
  #### Build the Docker Container
379
379
 
@@ -401,7 +401,7 @@ The API documentation can be accessed via the Swagger UI. Use the Swagger UI to
401
401
  #### API Endpoints
402
402
  `GET /bin_collection/{council}`
403
403
 
404
- Description: Retrieves information about bin collection for the specified council.
404
+ Description: Retrieves information about bin collections for the specified council.
405
405
 
406
406
  Parameters:
407
407
 
@@ -415,9 +415,9 @@ curl -X GET "http://localhost:8080/api/bin_collection/{council}" -H "accept: app
415
415
  ```
416
416
 
417
417
  ## Docker Compose
418
- This includes the Selenium standalone-chrome for Selenium based councils
418
+ This includes the Selenium standalone-chrome for Selenium-based councils.
419
419
 
420
- ```
420
+ ```yaml
421
421
  version: '3'
422
422
 
423
423
  services:
@@ -447,8 +447,8 @@ docker-compose up
447
447
  ---
448
448
 
449
449
  ## FAQ
450
- #### I've got an issue/support question - what do I do?
451
- Please post in the [HomeAssistant thread](https://community.home-assistant.io/t/bin-waste-collection/55451) or raise a new (non council request) [issue](https://github.com/robbrad/UKBinCollectionData/issues/new).
450
+ #### I've got an issue/support questionwhat do I do?
451
+ Please post in the [HomeAssistant thread](https://community.home-assistant.io/t/bin-waste-collection/55451) or raise a new (non-council request) [issue](https://github.com/robbrad/UKBinCollectionData/issues/new).
452
452
 
453
453
  #### I'd like to contribute, where do I start?
454
454
  Contributions are always welcome! See ```CONTRIBUTING.md``` to get started. Please adhere to the project's [code of conduct](https://github.com/robbrad/UKBinCollectionData/blob/master/CODE_OF_CONDUCT.md).
@@ -461,4 +461,3 @@ Contributions are always welcome! See ```CONTRIBUTING.md``` to get started. Plea
461
461
  <img src="https://contrib.rocks/image?repo=robbrad/UKBinCollectionData" alt="Image of contributors"/>
462
462
  </a>
463
463
 
464
-
@@ -18,10 +18,10 @@
18
18
  # UK Bin Collection Data (UKBCD)
19
19
  This project aims to provide a neat and standard way of providing bin collection data in JSON format from UK councils that have no API to do so.
20
20
 
21
- Why do this?
22
- You might want to use this in a Home Automation - for example say you had an LED bar that lit up on the day of bin collection to the colour of the bin you want to take out, then this repo provides the data for that.
21
+ Why would you want to do this?
22
+ You might want to use this in Home Automationfor example, say you had an LED bar that lit up on the day of bin collection to the colour of the bin you want to take out; then this repo provides the data for that.
23
23
 
24
- **PLEASE respect a councils infrastructure / usage policy and only collect data for your own personal use on a suitable frequency to your collection schedule.**
24
+ **PLEASE respect a councils' infrastructure / usage policy and only collect data for your own personal use on a suitable frequency to your collection schedule.**
25
25
 
26
26
  Most scripts make use of [Beautiful Soup 4](https://pypi.org/project/beautifulsoup4/) to scrape data, although others use different approaches, such as emulating web browser behaviour, or reading data from CSV files.
27
27
 
@@ -36,12 +36,12 @@ Most scripts make use of [Beautiful Soup 4](https://pypi.org/project/beautifulso
36
36
  If an issue already exists, please comment on that issue to express your interest. Please do not open a new issue, as it will be closed as a duplicate.
37
37
 
38
38
  If an issue does not already exist, please fill in a new [Council Request](https://github.com/robbrad/UKBinCollectionData/issues/new/choose) form, including as much information as possible, including:
39
- - Name of the council
40
- - URL to bin collections
41
- - An example postcode and/or UPRN (whichever is relevant)
42
- - Any further information
39
+ - Name of the council.
40
+ - URL to bin collections.
41
+ - An example postcode and/or [UPRN](https://uprn.uk/) (whichever is relevant).
42
+ - Any further information.
43
43
 
44
- Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council will get added.
44
+ Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council is added to this integration.
45
45
 
46
46
  ---
47
47
 
@@ -57,7 +57,7 @@ This integration can be installed directly via HACS. To install:
57
57
  * [Add the repository](https://my.home-assistant.io/redirect/hacs_repository/?owner=robbrad&repository=UKBinCollectionData&category=integration) to your HACS installation
58
58
  * Click `Download`
59
59
 
60
- For details how setup the custom component integration see the [this documentation](https://github.com/robbrad/UKBinCollectionData/tree/master/custom_components/uk_bin_collection).
60
+ For details on how to setup the custom component integration, see the [documentation](https://github.com/robbrad/UKBinCollectionData/tree/master/custom_components/uk_bin_collection).
61
61
 
62
62
  #### Manual
63
63
  1. Ensure you have [HACS](https://hacs.xyz/) installed
@@ -67,7 +67,7 @@ For details how setup the custom component integration see the [this documentati
67
67
  1. Click `+ Add Integration` and search for and select `UK Bin Collection Data` then click `Download`.
68
68
  1. Restart your Home Assistant.
69
69
  1. In the Home Assistant UI go to `Settings` > `Devices & Services` click `+ Add Integration` and search for `UK Bin Collection Data`.
70
- 1. If your see a "URL of the remote Selenium web driver to use" field when setting up your council, you'll need to provide the URL to a web driver you've set up seperately such as [standalone-chrome](https://hub.docker.com/r/selenium/standalone-chrome).
70
+ 1. If you see a "URL of the remote Selenium web driver to use" field when setting up your council, you'll need to provide the URL to a web driver you've set up separately such as [standalone-chrome](https://hub.docker.com/r/selenium/standalone-chrome).
71
71
 
72
72
  ### Install manually
73
73
 
@@ -78,15 +78,15 @@ For details how setup the custom component integration see the [this documentati
78
78
  1. In the Home Assistant UI go to `Settings` > `Devices & Services` click `+ Add Integration` and search for `UK Bin Collection Data`.
79
79
 
80
80
  ### Overriding the Bin Icon and Bin Colour
81
- We realise it is difficult to set a colour from the councils text for the Bin Type and to keep the integration generic we dont capture colour from a council(not all councils supply this as a field), only bin type and next collection date.
81
+ We realise it is difficult to set a colour from the councils text for the Bin Type and to keep the integration generic, we don't capture colour from a council (not all councils supply this as a field), only bin type and next collection date.
82
82
 
83
- When you configure the componenent on the first screen you can set a JSON string to map the bin type to the colour and icon
83
+ When you configure the component on the first screen, you can set a JSON string to map the bin type to the colour and icon
84
84
 
85
85
  Here is an example to set the colour and icon for the type `Empty Standard General Waste`. This type is the type returned from the council for the bin. You can do this for multiple bins.
86
86
 
87
- If you miss this on the first setup you can reconfigure it.
87
+ If you miss this on the first setup, you can reconfigure it.
88
88
 
89
- ```
89
+ ```json
90
90
  {
91
91
  "Empty Standard General Waste":
92
92
  {
@@ -124,7 +124,7 @@ where ```council_name``` is the name of the council's .py script (without the .p
124
124
  The help documentation refers to these as "module" and "URL", respectively. Supported council scripts can be found in the `uk_bin_collection/uk_bin_collection/councils` folder.
125
125
 
126
126
  Some scripts require additional parameters, for example, when a UPRN is not passed in a URL, or when the script is not scraping a web page.
127
- For example, the Leeds City Council script needs two additional parameters - a postcode, and a house number. This is done like so:
127
+ For example, the Leeds City Council script needs two additional parametersa postcode, and a house number. This is done like so:
128
128
 
129
129
  ```commandline
130
130
  python collect_data.py LeedsCityCouncil https://www.leeds.gov.uk/residents/bins-and-recycling/check-your-bin-day -p "LS1 2JG" -n 41
@@ -138,9 +138,8 @@ To check the parameters needed for your council's script, please check the [proj
138
138
 
139
139
 
140
140
  ### Project dependencies
141
- Some scripts rely on external packages to function. A list of required scripts for both development and execution can be found in the project's [PROJECT_TOML](https://github.com/robbrad/UKBinCollectionData/blob/feature/%2353_integration_tests/pyproject.toml)
142
- Install can be done via
143
- `poetry install` from within the root of the repo.
141
+ Some scripts rely on external packages to function. A list of required scripts for both development and execution can be found in the project's [PROJECT_TOML](https://github.com/robbrad/UKBinCollectionData/blob/feature/%2353_integration_tests/pyproject.toml).
142
+ Install can be done via `poetry install` from within the root of the repo.
144
143
 
145
144
  ---
146
145
 
@@ -149,7 +148,7 @@ Some councils make use of the UPRN (Unique property reference number) to identif
149
148
 
150
149
  ---
151
150
  ## Selenium
152
- Some councils need Selenium to run the scrape on behalf of Home Assistant. The easiest way to do this is run Selenium as in a Docker container. However you do this the Home Assistant server must be able to reach the Selenium server
151
+ Some councils need Selenium to run the scrape on behalf of Home Assistant. The easiest way to do this is run Selenium as in a Docker container. However that you do this, the Home Assistant server must be able to reach the Selenium server.
153
152
 
154
153
  ### Instructions for Windows, Linux, and Mac
155
154
 
@@ -159,7 +158,7 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
159
158
 
160
159
  1. **Download Docker Desktop for Windows:**
161
160
 
162
- * Go to the Docker website: Docker Desktop for Windows
161
+ * Go to the Docker website: Docker Desktop for Windows.
163
162
  * Download and install Docker Desktop.
164
163
  2. **Run Docker Desktop:**
165
164
 
@@ -212,7 +211,7 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
212
211
 
213
212
  1. **Download Docker Desktop for Mac:**
214
213
 
215
- * Go to the Docker website: Docker Desktop for Mac
214
+ * Go to the Docker website: Docker Desktop for Mac.
216
215
  * Download and install Docker Desktop.
217
216
  2. **Run Docker Desktop:**
218
217
 
@@ -230,7 +229,7 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
230
229
  docker pull selenium/standalone-chrome
231
230
  ```
232
231
 
233
- 4. **Run the Selenium Standalone Chrome container:**
232
+ 3. **Run the Selenium Standalone Chrome container:**
234
233
 
235
234
  ```bash
236
235
  docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
@@ -239,17 +238,17 @@ Some councils need Selenium to run the scrape on behalf of Home Assistant. The e
239
238
  #### Step 3: Test the Selenium Server
240
239
 
241
240
  1. **Navigate to the Selenium server URL in your web browser:**
242
- * Open a web browser and go to `http://localhost:4444`
241
+ * Open a web browser and go to `http://localhost:4444`.
243
242
  * You should see the Selenium Grid console.
244
243
 
245
244
  #### Step 4: Supply the Selenium Server URL to UKBinCollectionData
246
245
 
247
246
  1. **Find the `UKBinCollectionData` project:**
248
247
 
249
- * Go to the GitHub repository: [UKBinCollectionData](https://github.com/robbrad/UKBinCollectionData)
248
+ * Go to the GitHub repository: [UKBinCollectionData](https://github.com/robbrad/UKBinCollectionData).
250
249
  2. **Supply the Selenium Server URL:**
251
250
 
252
- * Typically, the URL will be `http://localhost:4444/wd/hub`
251
+ * Typically, the URL will be `http://localhost:4444/wd/hub`.
253
252
  * You might need to update a configuration file or environment variable in the project to use this URL. Check the project's documentation for specific instructions.
254
253
 
255
254
  ### Summary of Commands
@@ -274,7 +273,7 @@ This guide is based on a Raspberry Pi 4. Instructions for other systems may vary
274
273
 
275
274
  #### Prerequisites
276
275
  1. Install **Portainer** from Alex Belgium's add-on repository:
277
- [github.com/alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons)
276
+ [alexbelgium/hassio-addons](https://github.com/alexbelgium/hassio-addons)
278
277
 
279
278
  ---
280
279
 
@@ -344,13 +343,13 @@ We have created an API for this located under [uk_bin_collection_api_server](htt
344
343
 
345
344
  ### Prerequisites
346
345
 
347
- - Docker installed on your machine
348
- - Python (if you plan to run the API locally without Docker)
346
+ - Docker installed on your machine.
347
+ - Python (if you plan to run the API locally without Docker).
349
348
 
350
349
  ### Running the API with Docker
351
350
 
352
351
  1. Clone this repository.
353
- 2. Navigate to the uk_bin_collection_api_server directory of the project.
352
+ 2. Navigate to the `uk_bin_collection_api_server` directory of the project.
354
353
 
355
354
  #### Build the Docker Container
356
355
 
@@ -378,7 +377,7 @@ The API documentation can be accessed via the Swagger UI. Use the Swagger UI to
378
377
  #### API Endpoints
379
378
  `GET /bin_collection/{council}`
380
379
 
381
- Description: Retrieves information about bin collection for the specified council.
380
+ Description: Retrieves information about bin collections for the specified council.
382
381
 
383
382
  Parameters:
384
383
 
@@ -392,9 +391,9 @@ curl -X GET "http://localhost:8080/api/bin_collection/{council}" -H "accept: app
392
391
  ```
393
392
 
394
393
  ## Docker Compose
395
- This includes the Selenium standalone-chrome for Selenium based councils
394
+ This includes the Selenium standalone-chrome for Selenium-based councils.
396
395
 
397
- ```
396
+ ```yaml
398
397
  version: '3'
399
398
 
400
399
  services:
@@ -424,8 +423,8 @@ docker-compose up
424
423
  ---
425
424
 
426
425
  ## FAQ
427
- #### I've got an issue/support question - what do I do?
428
- Please post in the [HomeAssistant thread](https://community.home-assistant.io/t/bin-waste-collection/55451) or raise a new (non council request) [issue](https://github.com/robbrad/UKBinCollectionData/issues/new).
426
+ #### I've got an issue/support questionwhat do I do?
427
+ Please post in the [HomeAssistant thread](https://community.home-assistant.io/t/bin-waste-collection/55451) or raise a new (non-council request) [issue](https://github.com/robbrad/UKBinCollectionData/issues/new).
429
428
 
430
429
  #### I'd like to contribute, where do I start?
431
430
  Contributions are always welcome! See ```CONTRIBUTING.md``` to get started. Please adhere to the project's [code of conduct](https://github.com/robbrad/UKBinCollectionData/blob/master/CODE_OF_CONDUCT.md).
@@ -437,4 +436,3 @@ Contributions are always welcome! See ```CONTRIBUTING.md``` to get started. Plea
437
436
  <a href="https://github.com/robbrad/UKBinCollectionData/graphs/contributors">
438
437
  <img src="https://contrib.rocks/image?repo=robbrad/UKBinCollectionData" alt="Image of contributors"/>
439
438
  </a>
440
-
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uk_bin_collection"
3
- version = "0.136.0"
3
+ version = "0.137.0"
4
4
  description = "Python Lib to collect UK Bin Data"
5
5
  readme = "README.md"
6
6
  authors = ["Robert Bradley <robbrad182@gmail.com>"]
@@ -62,6 +62,7 @@ lxml = "*"
62
62
  urllib3 = "*"
63
63
  webdriver-manager = "^4.0.1"
64
64
  tabulate = "^0.9.0"
65
+ ics = "^0.7.2"
65
66
 
66
67
  [tool.commitizen]
67
68
  major_version_zero = true
@@ -832,7 +832,13 @@
832
832
  "wiki_name": "Gloucester City Council",
833
833
  "wiki_note": "Pass the house number, postcode, and UPRN in their respective parameters. This parser requires a Selenium webdriver."
834
834
  },
835
- "GraveshamBoroughCouncil": {
835
+ "GooglePublicCalendarCouncil": {
836
+ "wiki_name": "Google Calendar (Public)",
837
+ "url": "https://calendar.google.com/calendar/ical/c_bca6c975545213622b3958bddab567e1e7398709c63e377b6fe9a9140bd1caf8%40group.calendar.google.com/public/basic.ics",
838
+ "skip_get_url": true,
839
+ "wiki_note": "The URL should be the public ics file URL for the public Google calendar. See https://support.google.com/calendar/answer/37083?sjid=7202815583021446882-EU. Councils that currently need this are Trafford."
840
+ },
841
+ "GraveshamBoroughCouncil": {
836
842
  "skip_get_url": true,
837
843
  "uprn": "100060927046",
838
844
  "url": "https://www.gravesham.gov.uk",
@@ -0,0 +1,38 @@
1
+ from datetime import datetime
2
+ from typing import Any
3
+ import requests
4
+ from ics import Calendar
5
+
6
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
7
+ from uk_bin_collection.uk_bin_collection.common import date_format
8
+
9
+
10
+ class CouncilClass(AbstractGetBinDataClass):
11
+ def parse_data(self, page: str, **kwargs: Any) -> dict:
12
+ ics_url: str = kwargs.get("url")
13
+
14
+ if not ics_url:
15
+ raise ValueError("Missing required argument: google_calendar_ics_url")
16
+
17
+ response = requests.get(ics_url)
18
+ response.raise_for_status()
19
+
20
+ calendar = Calendar(response.text)
21
+ bindata = {"bins": []}
22
+
23
+ for event in calendar.events:
24
+ if not event.name or not event.begin:
25
+ continue
26
+
27
+ try:
28
+ # .begin is a datetime-like object (Arrow)
29
+ collection_date = event.begin.date().strftime(date_format)
30
+ except Exception:
31
+ continue
32
+
33
+ bindata["bins"].append({
34
+ "type": event.name,
35
+ "collectionDate": collection_date
36
+ })
37
+
38
+ return bindata
@@ -73,7 +73,7 @@ class CouncilClass(AbstractGetBinDataClass):
73
73
  find_ac_button.send_keys(Keys.RETURN)
74
74
  h4_element = wait.until(
75
75
  EC.presence_of_element_located(
76
- (By.XPATH, "//h4[contains(text(), 'Next Collections')]")
76
+ (By.XPATH, "//h4[contains(text(), 'Your upcoming collections')]")
77
77
  )
78
78
  )
79
79
 
@@ -81,7 +81,7 @@ class CouncilClass(AbstractGetBinDataClass):
81
81
  EC.presence_of_element_located(
82
82
  (
83
83
  By.XPATH,
84
- '//div[contains(@class, "fieldContent")]',
84
+ '//div[contains(@class, "repeatable-table-wrapper")]',
85
85
  )
86
86
  )
87
87
  )
@@ -90,16 +90,15 @@ class CouncilClass(AbstractGetBinDataClass):
90
90
 
91
91
  data = {"bins": []}
92
92
 
93
- collection_divs = soup.find_all("div", {"style": "text-align: center;"})
93
+ collection_divs = soup.find_all("tr", {"class": "repeatable-value"})
94
94
 
95
95
  for collection_div in collection_divs:
96
- h5_tag = collection_div.find("h5")
97
- p_tag = collection_div.find("p")
98
-
99
- if h5_tag and p_tag:
100
- bin_type = h5_tag.get_text(strip=True)
101
- collection_date_text = p_tag.find("b").get_text(strip=True)
96
+ td_list = collection_div.find_all("td")
97
+ bin_type = td_list[1].get_text(strip=True)
98
+ collection_date_text = td_list[2].get_text(strip=True)
102
99
 
100
+ # if collection_date_text is not 'NaN'
101
+ if collection_date_text != "NaN":
103
102
  # Extract and format the date
104
103
  date_match = re.search(r"(\d+ \w+)", collection_date_text)
105
104
  if date_match: