uk_bin_collection 0.74.0__tar.gz → 0.74.1__tar.gz

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