uk_bin_collection 0.134.3__tar.gz → 0.135.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 (322) hide show
  1. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/PKG-INFO +1 -1
  2. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/pyproject.toml +1 -1
  3. uk_bin_collection-0.135.0/uk_bin_collection/tests/check_selenium_url_in_input.json.py +209 -0
  4. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/input.json +49 -4
  5. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/AmberValleyBoroughCouncil.py +60 -0
  6. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/BolsoverCouncil.py +298 -0
  7. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py +75 -0
  8. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +11 -3
  9. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py +3 -5
  10. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +104 -0
  11. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/EpsomandEwellBoroughCouncil.py +86 -0
  12. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +1 -1
  13. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +2 -1
  14. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py +100 -0
  15. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +2 -0
  16. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/RedcarandClevelandCouncil.py +108 -0
  17. uk_bin_collection-0.135.0/uk_bin_collection/uk_bin_collection/councils/RunnymedeBoroughCouncil.py +54 -0
  18. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +21 -15
  19. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +1 -1
  20. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +1 -35
  21. uk_bin_collection-0.134.3/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -100
  22. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/LICENSE +0 -0
  23. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/README.md +0 -0
  24. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/README.rst +0 -0
  25. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
  26. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/features/environment.py +0 -0
  27. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
  28. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/output.schema +0 -0
  29. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
  30. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
  31. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
  32. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
  33. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/test_conftest.py +0 -0
  34. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/tests/test_get_data.py +0 -0
  35. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
  36. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
  37. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py +0 -0
  38. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +0 -0
  39. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
  40. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py +0 -0
  41. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py +0 -0
  42. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py +0 -0
  43. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
  44. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
  45. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AshfieldDistrictCouncil.py +0 -0
  46. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py +0 -0
  47. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
  48. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
  49. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py +0 -0
  50. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
  51. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
  52. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
  53. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
  54. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
  55. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
  56. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
  57. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
  58. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
  59. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
  60. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py +0 -0
  61. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
  62. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BlaenauGwentCountyBoroughCouncil.py +0 -0
  63. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
  64. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BostonBoroughCouncil.py +0 -0
  65. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
  66. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
  67. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BraintreeDistrictCouncil.py +0 -0
  68. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BrecklandCouncil.py +0 -0
  69. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BrentCouncil.py +0 -0
  70. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
  71. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
  72. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
  73. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py +0 -0
  74. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py +0 -0
  75. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
  76. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
  77. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BurnleyBoroughCouncil.py +0 -0
  78. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
  79. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
  80. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
  81. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py +0 -0
  82. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
  83. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py +0 -0
  84. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
  85. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
  86. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
  87. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +0 -0
  88. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
  89. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
  90. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py +0 -0
  91. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
  92. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
  93. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
  94. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py +0 -0
  95. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
  96. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +0 -0
  97. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
  98. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
  99. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py +0 -0
  100. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py +0 -0
  101. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
  102. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
  103. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py +0 -0
  104. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py +0 -0
  105. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
  106. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
  107. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
  108. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py +0 -0
  109. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DundeeCityCouncil.py +0 -0
  110. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
  111. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
  112. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py +0 -0
  113. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
  114. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
  115. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py +0 -0
  116. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
  117. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastLothianCouncil.py +0 -0
  118. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
  119. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
  120. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastStaffordshireBoroughCouncil.py +0 -0
  121. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
  122. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
  123. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EdinburghCityCouncil.py +0 -0
  124. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
  125. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
  126. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
  127. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
  128. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
  129. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py +0 -0
  130. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
  131. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
  132. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
  133. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py +0 -0
  134. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py +0 -0
  135. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py +0 -0
  136. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
  137. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
  138. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
  139. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
  140. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py +0 -0
  141. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
  142. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py +0 -0
  143. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HackneyCouncil.py +0 -0
  144. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
  145. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py +0 -0
  146. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
  147. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
  148. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py +0 -0
  149. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py +0 -0
  150. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py +0 -0
  151. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py +0 -0
  152. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
  153. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
  154. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HinckleyandBosworthBoroughCouncil.py +0 -0
  155. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
  156. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
  157. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
  158. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/IpswichBoroughCouncil.py +0 -0
  159. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
  160. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/KingsLynnandWestNorfolkBC.py +0 -0
  161. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
  162. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
  163. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
  164. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
  165. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LeicesterCityCouncil.py +0 -0
  166. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
  167. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py +0 -0
  168. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
  169. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
  170. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
  171. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
  172. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py +0 -0
  173. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
  174. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
  175. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLewisham.py +0 -0
  176. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.py +0 -0
  177. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
  178. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py +0 -0
  179. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py +0 -0
  180. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
  181. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
  182. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
  183. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
  184. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MedwayCouncil.py +0 -0
  185. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
  186. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
  187. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py +0 -0
  188. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py +0 -0
  189. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
  190. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py +0 -0
  191. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
  192. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
  193. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py +0 -0
  194. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/MorayCouncil.py +0 -0
  195. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
  196. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
  197. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
  198. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py +0 -0
  199. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
  200. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
  201. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
  202. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
  203. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
  204. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py +0 -0
  205. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
  206. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
  207. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
  208. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
  209. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
  210. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
  211. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
  212. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
  213. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
  214. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
  215. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +0 -0
  216. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
  217. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py +0 -0
  218. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/OadbyAndWigstonBoroughCouncil.py +0 -0
  219. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
  220. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py +0 -0
  221. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py +0 -0
  222. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/PlymouthCouncil.py +0 -0
  223. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
  224. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/PowysCouncil.py +0 -0
  225. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
  226. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
  227. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RedditchBoroughCouncil.py +0 -0
  228. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
  229. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
  230. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
  231. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
  232. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
  233. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py +0 -0
  234. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
  235. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py +0 -0
  236. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
  237. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
  238. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
  239. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
  240. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SandwellBoroughCouncil.py +0 -0
  241. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SeftonCouncil.py +0 -0
  242. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
  243. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
  244. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
  245. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
  246. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
  247. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
  248. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
  249. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
  250. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
  251. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py +0 -0
  252. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
  253. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
  254. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
  255. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
  256. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +0 -0
  257. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py +0 -0
  258. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
  259. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
  260. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
  261. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
  262. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
  263. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
  264. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py +0 -0
  265. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
  266. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py +0 -0
  267. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
  268. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
  269. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
  270. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SurreyHeathBoroughCouncil.py +0 -0
  271. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
  272. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
  273. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/SwindonBoroughCouncil.py +0 -0
  274. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
  275. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
  276. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py +0 -0
  277. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
  278. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
  279. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py +0 -0
  280. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
  281. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py +0 -0
  282. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
  283. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
  284. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py +0 -0
  285. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
  286. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
  287. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
  288. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
  289. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
  290. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
  291. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py +0 -0
  292. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py +0 -0
  293. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
  294. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py +0 -0
  295. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
  296. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
  297. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
  298. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
  299. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestDunbartonshireCouncil.py +0 -0
  300. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestLancashireBoroughCouncil.py +0 -0
  301. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
  302. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
  303. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
  304. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
  305. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py +0 -0
  306. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
  307. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
  308. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
  309. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
  310. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
  311. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
  312. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
  313. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
  314. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WolverhamptonCityCouncil.py +0 -0
  315. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WorcesterCityCouncil.py +0 -0
  316. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
  317. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
  318. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/WyreForestDistrictCouncil.py +0 -0
  319. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
  320. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
  321. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
  322. {uk_bin_collection-0.134.3 → uk_bin_collection-0.135.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.134.3
3
+ Version: 0.135.0
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.134.3"
3
+ version = "0.135.0"
4
4
  description = "Python Lib to collect UK Bin Data"
5
5
  readme = "README.md"
6
6
  authors = ["Robert Bradley <robbrad182@gmail.com>"]
@@ -0,0 +1,209 @@
1
+ import json
2
+ import requests
3
+ import sys
4
+ import base64
5
+ from tabulate import tabulate
6
+
7
+
8
+ def get_council_files(repo, branch):
9
+ """
10
+ Get a list of all .py council files in the 'councils' directory
11
+ from the GitHub repo (via API), plus a mapping from council name
12
+ to the file's GitHub 'download_url' or 'contents_url'.
13
+ """
14
+ url = f"https://api.github.com/repos/{repo}/contents/uk_bin_collection/uk_bin_collection/councils?ref={branch}"
15
+ print(f"Fetching council files from: {url}")
16
+ response = requests.get(url, headers={"Accept": "application/vnd.github.v3+json"})
17
+ if response.status_code == 200:
18
+ data = response.json()
19
+ # data should be a list of items in that folder
20
+ if isinstance(data, list):
21
+ councils = {}
22
+ for item in data:
23
+ name = item["name"]
24
+ if name.endswith(".py"):
25
+ council_name = name.replace(".py", "")
26
+ councils[council_name] = item["url"] # 'url' gives API-based content URL
27
+ return councils
28
+ else:
29
+ raise ValueError("Expected a list from the GitHub response but got something else.")
30
+ else:
31
+ print(f"Failed to fetch councils from files: {response.content}")
32
+ return {}
33
+
34
+
35
+ def get_council_file_content(api_url):
36
+ """
37
+ Given the API URL for a file in GitHub, fetch its content (decoded).
38
+ The 'download_url' is direct raw, but the 'url' is the API URL for the content.
39
+ We'll use the latter, decode base64, and return the text.
40
+ """
41
+ # Example: https://api.github.com/repos/robbrad/UKBinCollectionData/contents/...
42
+ response = requests.get(api_url, headers={"Accept": "application/vnd.github.v3+json"})
43
+ if response.status_code == 200:
44
+ file_json = response.json()
45
+ # file_json["content"] is base64-encoded
46
+ content = file_json.get("content", "")
47
+ decoded = base64.b64decode(content).decode("utf-8")
48
+ return decoded
49
+ else:
50
+ print(f"Failed to fetch file content: {response.content}")
51
+ return ""
52
+
53
+
54
+ def get_input_json_data(repo, branch):
55
+ """
56
+ Fetch the entire input.json from GitHub and return it as a Python dict.
57
+ """
58
+ url = f"https://api.github.com/repos/{repo}/contents/uk_bin_collection/tests/input.json?ref={branch}"
59
+ print(f"Fetching input JSON from: {url}")
60
+ response = requests.get(url, headers={"Accept": "application/vnd.github.v3+json"})
61
+ if response.status_code == 200:
62
+ try:
63
+ file_json = response.json()
64
+ content = file_json.get("content", "")
65
+ decoded = base64.b64decode(content).decode("utf-8")
66
+ data = json.loads(decoded)
67
+ return data
68
+ except json.JSONDecodeError as e:
69
+ print(f"JSON decoding error: {e}")
70
+ raise
71
+ else:
72
+ print(f"Failed to fetch input JSON: {response.content}")
73
+ return {}
74
+
75
+
76
+ def council_needs_update(council_name, json_data, council_file_content):
77
+ """
78
+ Check if the given council needs an update:
79
+ - We say 'needs update' if 'web_driver' is missing in the JSON,
80
+ BUT the script uses 'create_webdriver' in code.
81
+ """
82
+ # If the council isn't in the JSON at all, we can't do the check
83
+ # (or we assume no JSON data => no web_driver?).
84
+ council_data = json_data.get(council_name, {})
85
+ web_driver_missing = ("web_driver" not in council_data)
86
+ create_webdriver_present = ("create_webdriver" in council_file_content)
87
+
88
+ return web_driver_missing and create_webdriver_present
89
+
90
+
91
+ def compare_councils(file_council_dict, json_data):
92
+ """
93
+ Compare councils in files vs councils in JSON, check for needs_update,
94
+ and gather everything for final tabulation.
95
+
96
+ Returns:
97
+ - all_councils_data: dict keyed by council name:
98
+ {
99
+ "in_files": bool,
100
+ "in_json": bool,
101
+ "discrepancies_count": int,
102
+ "needs_update": bool
103
+ }
104
+ - any_discrepancies_found: bool (if any differences in in_files vs in_json)
105
+ - any_updates_needed: bool (if any council needs update)
106
+ """
107
+ file_councils = set(file_council_dict.keys())
108
+ json_councils = set(json_data.keys())
109
+
110
+ all_councils = file_councils.union(json_councils)
111
+ all_council_data = {}
112
+
113
+ any_discrepancies_found = False
114
+ any_updates_needed = False
115
+
116
+ for council in all_councils:
117
+ in_files = council in file_councils
118
+ in_json = council in json_councils
119
+ # Count how many are False
120
+ discrepancies_count = [in_files, in_json].count(False)
121
+
122
+ # If the file is in the repo, fetch its content for checking
123
+ content = ""
124
+ if in_files:
125
+ file_api_url = file_council_dict[council]
126
+ content = get_council_file_content(file_api_url)
127
+
128
+ # Evaluate "needs_update" only if the file is in place
129
+ # (If there's no file, you might consider it "False" by default)
130
+ needs_update = False
131
+ if in_files:
132
+ needs_update = council_needs_update(council, json_data, content)
133
+
134
+ if discrepancies_count > 0:
135
+ any_discrepancies_found = True
136
+ if needs_update:
137
+ any_updates_needed = True
138
+
139
+ all_council_data[council] = {
140
+ "in_files": in_files,
141
+ "in_json": in_json,
142
+ "discrepancies_count": discrepancies_count,
143
+ "needs_update": needs_update,
144
+ }
145
+
146
+ return all_council_data, any_discrepancies_found, any_updates_needed
147
+
148
+
149
+ def main(repo="robbrad/UKBinCollectionData", branch="master"):
150
+ print(f"Starting comparison for repo: {repo}, branch: {branch}")
151
+
152
+ # 1) Get council file data (dict: { council_name: content_api_url, ... })
153
+ file_council_dict = get_council_files(repo, branch)
154
+
155
+ # 2) Get the entire JSON data
156
+ json_data = get_input_json_data(repo, branch)
157
+
158
+ # 3) Compare
159
+ (
160
+ all_councils_data,
161
+ discrepancies_found,
162
+ updates_needed,
163
+ ) = compare_councils(file_council_dict, json_data)
164
+
165
+ # 4) Print results
166
+ table_data = []
167
+ headers = ["Council Name", "In Files", "In JSON", "Needs Update?", "Discrepancies"]
168
+ # Sort councils so that ones with the highest discrepancy or update appear first
169
+ # Then alphabetical if tie:
170
+ def sort_key(item):
171
+ # item is (council_name, data_dict)
172
+ return (
173
+ item[1]["needs_update"], # sort by needs_update (False < True)
174
+ item[1]["discrepancies_count"], # then by discrepancies
175
+ item[0], # then by name
176
+ )
177
+
178
+ # We'll sort descending for "needs_update", so invert the boolean or reverse later
179
+ sorted_councils = sorted(
180
+ all_councils_data.items(),
181
+ key=lambda x: (not x[1]["needs_update"], x[1]["discrepancies_count"], x[0])
182
+ )
183
+
184
+ for council, presence in sorted_councils:
185
+ row = [
186
+ council,
187
+ "✔" if presence["in_files"] else "✘",
188
+ "✔" if presence["in_json"] else "✘",
189
+ "Yes" if presence["needs_update"] else "No",
190
+ presence["discrepancies_count"],
191
+ ]
192
+ table_data.append(row)
193
+
194
+ print(tabulate(table_data, headers=headers, tablefmt="grid"))
195
+
196
+ # 5) Determine exit code:
197
+ # If any discrepancies OR any council needs updates -> fail
198
+ if discrepancies_found or updates_needed:
199
+ print("Some discrepancies found or updates are needed. Failing workflow.")
200
+ sys.exit(1)
201
+ else:
202
+ print("No discrepancies found and no updates needed. Workflow successful.")
203
+
204
+
205
+ if __name__ == "__main__":
206
+ # Optional CLI args: python script.py <repo> <branch>
207
+ repo_arg = sys.argv[1] if len(sys.argv) > 1 else "robbrad/UKBinCollectionData"
208
+ branch_arg = sys.argv[2] if len(sys.argv) > 2 else "master"
209
+ main(repo_arg, branch_arg)
@@ -18,6 +18,12 @@
18
18
  "wiki_name": "Adur and Worthing Councils",
19
19
  "wiki_note": "Replace XXXXXXXX with your UPRN. You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find it."
20
20
  },
21
+ "AmberValleyBoroughCouncil": {
22
+ "url": "https://ambervalley.gov.uk",
23
+ "uprn": "100030026621",
24
+ "wiki_name": "Amber Valley Borough Council",
25
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
26
+ },
21
27
  "AntrimAndNewtonabbeyCouncil": {
22
28
  "url": "https://antrimandnewtownabbey.gov.uk/residents/bins-recycling/bins-schedule/?Id=643",
23
29
  "wiki_command_url_override": "https://antrimandnewtownabbey.gov.uk/residents/bins-recycling/bins-schedule/?Id=XXXX",
@@ -197,6 +203,12 @@
197
203
  "wiki_name": "Blaenau Gwent County Borough Council",
198
204
  "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
199
205
  },
206
+ "BolsoverCouncil": {
207
+ "url": "https://bolsover.gov.uk",
208
+ "uprn": "100030066827",
209
+ "wiki_name": "Bolsover Council",
210
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
211
+ },
200
212
  "BoltonCouncil": {
201
213
  "postcode": "BL1 5PQ",
202
214
  "skip_get_url": true,
@@ -391,6 +403,12 @@
391
403
  "wiki_name": "Cheltenham Borough Council",
392
404
  "wiki_note": "Pass the UPRN. You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search)."
393
405
  },
406
+ "CherwellDistrictCouncil": {
407
+ "uprn": "100121292407",
408
+ "url": "https://www.cherwell.gov.uk",
409
+ "wiki_name": "Cherwell District Council",
410
+ "wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
411
+ },
394
412
  "CheshireEastCouncil": {
395
413
  "url": "https://online.cheshireeast.gov.uk/MyCollectionDay/SearchByAjax/GetBartecJobList?uprn=100012791226&onelineaddress=3%20COBBLERS%20YARD,%20SK9%207DZ&_=1689413260149",
396
414
  "wiki_command_url_override": "https://online.cheshireeast.gov.uk/MyCollectionDay/SearchByAjax/GetBartecJobList?uprn=XXXXXXXX&onelineaddress=XXXXXXXX&_=1689413260149",
@@ -440,11 +458,10 @@
440
458
  "wiki_note": "Pass the house name/number in the house number parameter, wrapped in double quotes."
441
459
  },
442
460
  "ConwyCountyBorough": {
443
- "postcode": "LL30 2DF",
444
461
  "uprn": "100100429249",
445
- "url": "https://www.conwy.gov.uk/Contensis-Forms/erf/collection-result-soap-xmas.asp?ilangid=1&uprn=100100429249",
462
+ "url": "https://www.conwy.gov.uk",
446
463
  "wiki_name": "Conwy County Borough Council",
447
- "wiki_note": "Conwy County Borough Council uses a straight UPRN in the URL, e.g., `&uprn=XXXXXXXXXXXXX`."
464
+ "wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
448
465
  },
449
466
  "CopelandBoroughCouncil": {
450
467
  "uprn": "100110734613",
@@ -535,7 +552,6 @@
535
552
  "skip_get_url": true,
536
553
  "uprn": "10070102161",
537
554
  "url": "https://www.derbyshiredales.gov.uk/",
538
- "web_driver": "http://selenium:4444",
539
555
  "wiki_name": "Derbyshire Dales District Council",
540
556
  "wiki_note": "Pass the UPRN and postcode. To get the UPRN, you can use [FindMyAddress](https://www.findmyaddress.co.uk/search)."
541
557
  },
@@ -709,6 +725,12 @@
709
725
  "wiki_name": "Epping Forest District Council",
710
726
  "wiki_note": "Replace the postcode in the URL with your own."
711
727
  },
728
+ "EpsomandEwellBoroughCouncil": {
729
+ "uprn": "100061349083",
730
+ "url": "https://www.epsom-ewell.gov.uk",
731
+ "wiki_name": "Epsom and Ewell Borough Council",
732
+ "wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
733
+ },
712
734
  "ErewashBoroughCouncil": {
713
735
  "skip_get_url": true,
714
736
  "uprn": "10003582028",
@@ -1162,6 +1184,14 @@
1162
1184
  "wiki_name": "Mid Devon Council",
1163
1185
  "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
1164
1186
  },
1187
+ "MiddlesbroughCouncil": {
1188
+ "house_number": "12 Constantine Court Park Road North, Middlesbrough",
1189
+ "skip_get_url": true,
1190
+ "url": "https://www.midsussex.gov.uk/waste-recycling/bin-collection/",
1191
+ "web_driver": "http://selenium:4444",
1192
+ "wiki_name": "Middlesbrough Council",
1193
+ "wiki_note": "Pass the entire address without postcode as it appears when you type it on the website. This parser requires a Selenium webdriver."
1194
+ },
1165
1195
  "MidSuffolkDistrictCouncil": {
1166
1196
  "house_number": "Monday",
1167
1197
  "postcode": "Week 2",
@@ -1457,6 +1487,14 @@
1457
1487
  "wiki_name": "Reading Borough Council",
1458
1488
  "wiki_note": "Replace XXXXXXXX with your property's UPRN."
1459
1489
  },
1490
+ "RedcarandClevelandCouncil": {
1491
+ "house_number": "11",
1492
+ "postcode": "TS10 2RE",
1493
+ "skip_get_url": true,
1494
+ "url": "https://www.redcar-cleveland.gov.uk",
1495
+ "wiki_name": "Redcar and Cleveland Council",
1496
+ "wiki_note": "Pass the house name/number and postcode in their respective parameters"
1497
+ },
1460
1498
  "RedditchBoroughCouncil": {
1461
1499
  "uprn": "10094557691",
1462
1500
  "url": "https://redditchbc.gov.uk",
@@ -1531,6 +1569,13 @@
1531
1569
  "wiki_name": "Rugby Borough Council",
1532
1570
  "wiki_note": "Provide your UPRN and postcode. You can find your UPRN using [FindMyAddress](https://www.findmyaddress.co.uk/search)."
1533
1571
  },
1572
+ "RunnymedeBoroughCouncil": {
1573
+ "skip_get_url": true,
1574
+ "uprn": "100061483636",
1575
+ "url": "https://www.runnymede.gov.uk/",
1576
+ "wiki_name": "Runnymede Borough Council",
1577
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
1578
+ },
1534
1579
  "RushcliffeBoroughCouncil": {
1535
1580
  "postcode": "NG13 8TZ",
1536
1581
  "skip_get_url": true,
@@ -0,0 +1,60 @@
1
+ from datetime import datetime
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
+ WASTE_TYPES_DATE_KEY = {
24
+ "REFUSE": "refuseNextDate",
25
+ "RECYCLING": "recyclingNextDate",
26
+ "GREEN": "greenNextDate",
27
+ "COMMUNAL REFUSE": "communalRefNextDate",
28
+ "COMMUNAL RECYCLING": "communalRycNextDate",
29
+ }
30
+
31
+ URI = f"https://info.ambervalley.gov.uk/WebServices/AVBCFeeds/WasteCollectionJSON.asmx/GetCollectionDetailsByUPRN?uprn={user_uprn}"
32
+
33
+ # Make the GET request
34
+ response = requests.get(URI)
35
+
36
+ # Parse the JSON response
37
+ bin_collection = response.json()
38
+
39
+ # print(bin_collection)
40
+
41
+ for bin, datge_key in WASTE_TYPES_DATE_KEY.items():
42
+ date_ = datetime.strptime(
43
+ bin_collection[datge_key], "%Y-%m-%dT%H:%M:%S"
44
+ ).strftime(date_format)
45
+ if date_ == "01/01/1":
46
+ continue
47
+ elif date_ == "01/01/1900":
48
+ continue
49
+
50
+ dict_data = {
51
+ "type": bin,
52
+ "collectionDate": date_,
53
+ }
54
+ bindata["bins"].append(dict_data)
55
+
56
+ bindata["bins"].sort(
57
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
58
+ )
59
+
60
+ return bindata