uk_bin_collection 0.92.0__tar.gz → 0.94.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 (204) hide show
  1. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/PKG-INFO +17 -12
  2. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/README.md +16 -11
  3. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/pyproject.toml +1 -1
  4. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/input.json +45 -7
  5. uk_bin_collection-0.94.0/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +81 -0
  6. uk_bin_collection-0.94.0/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +115 -0
  7. uk_bin_collection-0.94.0/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +102 -0
  8. uk_bin_collection-0.94.0/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +54 -0
  9. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +38 -32
  10. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +2 -1
  11. uk_bin_collection-0.94.0/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +114 -0
  12. uk_bin_collection-0.94.0/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +99 -0
  13. uk_bin_collection-0.92.0/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -98
  14. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/LICENSE +0 -0
  15. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/README.rst +0 -0
  16. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
  17. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/features/environment.py +0 -0
  18. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
  19. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/output.schema +0 -0
  20. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
  21. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
  22. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
  23. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
  24. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/test_conftest.py +0 -0
  25. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/tests/test_get_data.py +0 -0
  26. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
  27. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
  28. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
  29. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
  30. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
  31. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
  32. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
  33. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
  34. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
  35. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
  36. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
  37. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
  38. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
  39. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
  40. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
  41. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
  42. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
  43. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
  44. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
  45. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
  46. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
  47. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
  48. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
  49. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
  50. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
  51. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
  52. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
  53. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
  54. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
  55. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
  56. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
  57. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
  58. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
  59. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
  60. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
  61. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
  62. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
  63. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
  64. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
  65. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
  66. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
  67. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
  68. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
  69. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
  70. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
  71. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
  72. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
  73. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
  74. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
  75. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
  76. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
  77. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
  78. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
  79. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
  80. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
  81. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
  82. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
  83. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
  84. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
  85. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
  86. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
  87. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
  88. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
  89. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
  90. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
  91. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
  92. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
  93. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
  94. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
  95. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
  96. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
  97. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
  98. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
  99. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
  100. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
  101. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
  102. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
  103. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
  104. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
  105. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
  106. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
  107. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
  108. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
  109. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
  110. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
  111. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
  112. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
  113. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
  114. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
  115. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
  116. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
  117. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
  118. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
  119. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
  120. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
  121. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
  122. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
  123. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
  124. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
  125. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
  126. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
  127. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
  128. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
  129. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
  130. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
  131. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
  132. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
  133. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
  134. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
  135. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
  136. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
  137. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
  138. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
  139. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
  140. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
  141. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
  142. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
  143. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
  144. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
  145. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
  146. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
  147. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
  148. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
  149. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
  150. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
  151. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
  152. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
  153. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
  154. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
  155. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
  156. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
  157. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
  158. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
  159. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
  160. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
  161. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
  162. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
  163. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
  164. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
  165. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
  166. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
  167. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
  168. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
  169. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
  170. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
  171. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
  172. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
  173. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
  174. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
  175. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
  176. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
  177. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
  178. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
  179. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
  180. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
  181. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
  182. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
  183. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
  184. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
  185. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
  186. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
  187. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
  188. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
  189. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
  190. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
  191. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
  192. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
  193. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
  194. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
  195. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
  196. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
  197. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
  198. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
  199. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
  200. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
  201. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
  202. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
  203. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
  204. {uk_bin_collection-0.92.0 → uk_bin_collection-0.94.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.92.0
3
+ Version: 0.94.0
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -53,6 +53,21 @@ Most scripts make use of [Beautiful Soup 4](https://pypi.org/project/beautifulso
53
53
 
54
54
  ---
55
55
 
56
+ ## Requesting your council
57
+ > :warning: Please check that a request for your council has not already been made. You can do this by searching on the [Issues](https://github.com/robbrad/UKBinCollectionData/issues) page.
58
+
59
+ If an issue already exists, please comment on that issue to express your interest. Please do not open a new issue, as it will be closed as a duplicate.
60
+
61
+ If an issue does not already exist, please fill in a new [Council Request](https://github.com/robbrad/UKBinCollectionData/issues/new/choose) form, including as much information as possible, including:
62
+ - Name of the council
63
+ - URL to bin collections
64
+ - An example postcode and/or UPRN (whichever is relevant)
65
+ - Any further information
66
+
67
+ Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council will get added.
68
+
69
+ ---
70
+
56
71
  ## Home Assistant Usage
57
72
 
58
73
  ### Install with HACS (recommended)
@@ -255,17 +270,6 @@ docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name seleniu
255
270
 
256
271
  ---
257
272
 
258
- ## Requesting your council
259
- To make a request for your council, first check the [Issues](https://github.com/robbrad/UKBinCollectionData/issues) page to make sure it has not already been requested. If not, please fill in a new [Council Request](https://github.com/robbrad/UKBinCollectionData/issues/new/choose) form, including as much information as possible, including:
260
- - Name of the council
261
- - URL to bin collections
262
- - An example postcode and/or UPRN (whichever is relevant)
263
- - Any further information
264
-
265
- Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council will get a script.
266
-
267
- ---
268
-
269
273
  ## Reports
270
274
 
271
275
  - [3.11](https://robbrad.github.io/UKBinCollectionData/3.11/)
@@ -371,3 +375,4 @@ Contributions are always welcome! See ```CONTRIBUTING.md``` to get started. Plea
371
375
  <img src="https://contrib.rocks/image?repo=robbrad/UKBinCollectionData" alt="Image of contributors"/>
372
376
  </a>
373
377
 
378
+
@@ -30,6 +30,21 @@ Most scripts make use of [Beautiful Soup 4](https://pypi.org/project/beautifulso
30
30
 
31
31
  ---
32
32
 
33
+ ## Requesting your council
34
+ > :warning: Please check that a request for your council has not already been made. You can do this by searching on the [Issues](https://github.com/robbrad/UKBinCollectionData/issues) page.
35
+
36
+ If an issue already exists, please comment on that issue to express your interest. Please do not open a new issue, as it will be closed as a duplicate.
37
+
38
+ If an issue does not already exist, please fill in a new [Council Request](https://github.com/robbrad/UKBinCollectionData/issues/new/choose) form, including as much information as possible, including:
39
+ - Name of the council
40
+ - URL to bin collections
41
+ - An example postcode and/or UPRN (whichever is relevant)
42
+ - Any further information
43
+
44
+ Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council will get added.
45
+
46
+ ---
47
+
33
48
  ## Home Assistant Usage
34
49
 
35
50
  ### Install with HACS (recommended)
@@ -232,17 +247,6 @@ docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name seleniu
232
247
 
233
248
  ---
234
249
 
235
- ## Requesting your council
236
- To make a request for your council, first check the [Issues](https://github.com/robbrad/UKBinCollectionData/issues) page to make sure it has not already been requested. If not, please fill in a new [Council Request](https://github.com/robbrad/UKBinCollectionData/issues/new/choose) form, including as much information as possible, including:
237
- - Name of the council
238
- - URL to bin collections
239
- - An example postcode and/or UPRN (whichever is relevant)
240
- - Any further information
241
-
242
- Please be aware that this project is run by volunteer contributors and completion depends on numerous factors - even with a request, we cannot guarantee if/when your council will get a script.
243
-
244
- ---
245
-
246
250
  ## Reports
247
251
 
248
252
  - [3.11](https://robbrad.github.io/UKBinCollectionData/3.11/)
@@ -347,3 +351,4 @@ Contributions are always welcome! See ```CONTRIBUTING.md``` to get started. Plea
347
351
  <a href="https://github.com/robbrad/UKBinCollectionData/graphs/contributors">
348
352
  <img src="https://contrib.rocks/image?repo=robbrad/UKBinCollectionData" alt="Image of contributors"/>
349
353
  </a>
354
+
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uk_bin_collection"
3
- version = "0.92.0"
3
+ version = "0.94.0"
4
4
  description = "Python Lib to collect UK Bin Data"
5
5
  readme = "README.md"
6
6
  authors = ["Robert Bradley <robbrad182@gmail.com>"]
@@ -42,7 +42,13 @@
42
42
  "wiki_name": "Barnsley Metropolitan Borough Council",
43
43
  "wiki_note": "To get the UPRN, you will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search)."
44
44
  },
45
- "BasingstokeCouncil": {
45
+ "BasildonCouncil": {
46
+ "skip_get_url": true,
47
+ "uprn": "10013350430",
48
+ "url": "https://basildonportal.azurewebsites.net/api/getPropertyRefuseInformation",
49
+ "wiki_name": "Basildon Council"
50
+ },
51
+ "BasingstokeCouncil": {
46
52
  "skip_get_url": true,
47
53
  "uprn": "100060220926",
48
54
  "url": "https://www.basingstoke.gov.uk/bincollection",
@@ -109,6 +115,7 @@
109
115
  "wiki_note": "To get the UPRN, you will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search). Previously required single field that was UPRN and full address, now requires UPRN and postcode as separate fields."
110
116
  },
111
117
  "BracknellForestCouncil": {
118
+ "house_number": "57",
112
119
  "paon": "57",
113
120
  "postcode": "GU47 9BS",
114
121
  "skip_get_url": true,
@@ -155,10 +162,10 @@
155
162
  "wiki_name": "Broxtowe Borough Council"
156
163
  },
157
164
  "BuckinghamshireCouncil": {
158
- "house_number": "HUGHENDEN MANOR, MANOR ROAD, HUGHENDEN VALLEY, HIGH WYCOMBE",
159
- "postcode": "HP14 4LA",
165
+ "house_number": "2",
166
+ "postcode": "HP13 7BA",
160
167
  "skip_get_url": true,
161
- "url": "https://chiltern.gov.uk/collection-dates",
168
+ "url": "https://iapp.itouchvision.com/iappcollectionday/collection-day/?uuid=FA353FC74600CBE61BE409534D00A8EC09BDA3AC&lang=en",
162
169
  "web_driver": "http://selenium:4444",
163
170
  "wiki_name": "Buckinghamshire Council (Chiltern, South Bucks, Wycombe)",
164
171
  "wiki_note": "Pass the name of the street with the house number parameter, wrapped in double quotes"
@@ -286,6 +293,14 @@
286
293
  "url": "https://service.croydon.gov.uk/wasteservices/w/webpage/bin-day-enter-address",
287
294
  "wiki_name": "Croydon Council"
288
295
  },
296
+ "DacorumBoroughCouncil": {
297
+ "house_number": "13",
298
+ "postcode": "HP3 9JY",
299
+ "skip_get_url": true,
300
+ "web_driver": "http://selenium:4444",
301
+ "url": "https://webapps.dacorum.gov.uk/bincollections/",
302
+ "wiki_name": "Dacorum Borough Council"
303
+ },
289
304
  "DartfordBoroughCouncil": {
290
305
  "uprn": "010094157511",
291
306
  "url": "https://windmz.dartford.gov.uk/ufs/WS_CHECK_COLLECTIONS.eb?UPRN=010094157511",
@@ -337,8 +352,8 @@
337
352
  "wiki_name": "East Cambridgeshire Council"
338
353
  },
339
354
  "EastDevonDC": {
340
- "url": "https://eastdevon.gov.uk/recycling-and-waste/recycling-and-waste-information/when-is-my-bin-collected/future-collections-calendar/?UPRN=010090909915",
341
- "wiki_command_url_override": "https://eastdevon.gov.uk/recycling-and-waste/recycling-and-waste-information/when-is-my-bin-collected/future-collections-calendar/?UPRN=XXXXXXXX",
355
+ "url": "https://eastdevon.gov.uk/recycling-and-waste/recycling-waste-information/when-is-my-bin-collected/future-collections-calendar/?UPRN=010090909915",
356
+ "wiki_command_url_override": "https://eastdevon.gov.uk/recycling-waste/recycling-and-waste-information/when-is-my-bin-collected/future-collections-calendar/?UPRN=XXXXXXXX",
342
357
  "wiki_name": "East Devon District Council",
343
358
  "wiki_note": "Replace XXXXXXXX with UPRN."
344
359
  },
@@ -589,6 +604,12 @@
589
604
  "url": "https://www.hounslow.gov.uk/homepage/86/recycling_and_waste_collection_day_finder",
590
605
  "wiki_name": "London Borough Hounslow"
591
606
  },
607
+ "LondonBoroughLambeth": {
608
+ "skip_get_url": true,
609
+ "uprn": "100021881738",
610
+ "url": "https://wasteservice.lambeth.gov.uk/WhitespaceComms/GetServicesByUprn",
611
+ "wiki_name": "London Borough Lambeth"
612
+ },
592
613
  "LondonBoroughRedbridge": {
593
614
  "postcode": "IG2 6LQ",
594
615
  "uprn": "10023770353",
@@ -659,9 +680,9 @@
659
680
  "wiki_note": "UPRN can only be parsed with a valid postcode."
660
681
  },
661
682
  "NeathPortTalbotCouncil": {
683
+ "house_number": "2",
662
684
  "postcode": "SA13 3BA",
663
685
  "skip_get_url": true,
664
- "uprn": "10023947752",
665
686
  "url": "https://www.npt.gov.uk",
666
687
  "web_driver": "http://selenium:4444",
667
688
  "wiki_name": "Neath Port Talbot Council"
@@ -1229,6 +1250,16 @@
1229
1250
  "url": "https://ilambassadorformsprod.azurewebsites.net/wastecollectiondays/index",
1230
1251
  "wiki_name": "Wiltshire Council"
1231
1252
  },
1253
+ "WinchesterCityCouncil": {
1254
+ "house_number": "12",
1255
+ "paon": "12",
1256
+ "postcode": "SO23 7GA",
1257
+ "skip_get_url": false,
1258
+ "url": "https://iportal.itouchvision.com/icollectionday/collection-day",
1259
+ "web_driver": "http://selenium:4444",
1260
+ "wiki_name": "Winchester City Council",
1261
+ "wiki_note": "Pass the house name/number in the house number parameter, wrapped in double quotes"
1262
+ },
1232
1263
  "WindsorAndMaidenheadCouncil": {
1233
1264
  "web_driver": "http://selenium:4444",
1234
1265
  "uprn": "100080371082",
@@ -1244,6 +1275,13 @@
1244
1275
  "wiki_name": "Woking Borough Council/Joint Waste Solutions",
1245
1276
  "wiki_note": "Works with all collection areas that use Joint Waste Solutions. Just use the correct URL."
1246
1277
  },
1278
+ "WokinghamBoroughCouncil": {
1279
+ "house_number": "90",
1280
+ "postcode": "RG40 2HR",
1281
+ "skip_get_url": true,
1282
+ "url": "https://www.wokingham.gov.uk/rubbish-and-recycling/waste-collection/find-your-bin-collection-day",
1283
+ "wiki_name": "Wokingham Borough Council"
1284
+ },
1247
1285
  "WychavonDistrictCouncil": {
1248
1286
  "postcode": "WR3 7RU",
1249
1287
  "skip_get_url": true,
@@ -0,0 +1,81 @@
1
+ from uk_bin_collection.uk_bin_collection.common import *
2
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
3
+
4
+
5
+ # import the wonderful Beautiful Soup and the URL grabber
6
+ class CouncilClass(AbstractGetBinDataClass):
7
+ """
8
+ Concrete classes have to implement all abstract operations of the
9
+ base class. They can also override some operations with a default
10
+ implementation.
11
+ """
12
+
13
+ def parse_data(self, page: str, **kwargs) -> dict:
14
+ url_base = "https://basildonportal.azurewebsites.net/api/getPropertyRefuseInformation"
15
+
16
+ uprn = kwargs.get("uprn")
17
+ # Check the UPRN is valid
18
+ check_uprn(uprn)
19
+
20
+ payload = {
21
+ # Add your payload details here (replace this with the actual payload structure if required)
22
+ "uprn": uprn
23
+ }
24
+
25
+ # Headers for the request
26
+ headers = {
27
+ "Content-Type": "application/json"
28
+ }
29
+
30
+ response = requests.post(url_base, data=json.dumps(payload), headers=headers)
31
+
32
+ # Ensure the request was successful
33
+ if response.status_code == 200:
34
+ data = response.json()
35
+
36
+ # Initialize an empty list to store the bin collection details
37
+
38
+ bins = []
39
+
40
+ # Function to add collection details to bins list
41
+ def add_collection(service_name, collection_data):
42
+ bins.append({
43
+ "type": service_name,
44
+ "collectionDate": collection_data.get("current_collection_date")
45
+ })
46
+
47
+ # Extract refuse information
48
+ available_services = data["refuse"]["available_services"]
49
+
50
+ for service_name, service_data in available_services.items():
51
+ # Append the service name and current collection date to the "bins" list
52
+ match service_data["container"]:
53
+ case "Green Wheelie Bin":
54
+ subscription_status = service_data["subscription"]["active"] if service_data["subscription"] else False
55
+ type_descr = f"Green Wheelie Bin ({"Active" if subscription_status else "Expired"})"
56
+ case "N/A":
57
+ type_descr = service_data["name"]
58
+ case _:
59
+ type_descr = service_data["container"]
60
+
61
+
62
+ date_str = service_data.get("current_collection_date")
63
+ # Parse the date string into a datetime object
64
+ date_obj = datetime.strptime(date_str, "%Y-%m-%d")
65
+
66
+ # Convert the datetime object to the desired format
67
+ formatted_date = date_obj.strftime(date_format)
68
+
69
+ bins.append({
70
+ "type": type_descr, # Use service name from the data
71
+ "collectionDate": formatted_date
72
+ })
73
+
74
+ else:
75
+ print(f"Failed to fetch data. Status code: {response.status_code}")
76
+
77
+ data = {
78
+ "bins": bins
79
+ }
80
+
81
+ return data
@@ -0,0 +1,115 @@
1
+ from bs4 import BeautifulSoup
2
+ from selenium.webdriver.common.by import By
3
+ from selenium.webdriver.support import expected_conditions as EC
4
+ from selenium.webdriver.support.wait import WebDriverWait
5
+
6
+ from uk_bin_collection.uk_bin_collection.common import *
7
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
8
+
9
+
10
+ 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
+ driver = None
19
+ try:
20
+ data = {"bins": []}
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, None, __name__)
30
+ driver.get(
31
+ "https://iapp.itouchvision.com/iappcollectionday/collection-day/?uuid=FA353FC74600CBE61BE409534D00A8EC09BDA3AC&lang=en"
32
+ )
33
+
34
+ # Wait for the postcode field to appear then populate it
35
+ inputElement_postcode = WebDriverWait(driver, 10).until(
36
+ EC.presence_of_element_located((By.ID, "postcodeSearch"))
37
+ )
38
+ inputElement_postcode.send_keys(user_postcode)
39
+
40
+ # Click search button
41
+ findAddress = WebDriverWait(driver, 10).until(
42
+ EC.presence_of_element_located(
43
+ (By.XPATH, '//button[@class="govuk-button mt-4"]')
44
+ )
45
+ )
46
+ findAddress.click()
47
+
48
+ # Wait for the 'Select address' dropdown to appear and select option matching the house name/number
49
+ WebDriverWait(driver, 10).until(
50
+ EC.element_to_be_clickable(
51
+ (
52
+ By.XPATH,
53
+ "//select[@id='addressSelect']//option[contains(., '"
54
+ + user_paon
55
+ + "')]",
56
+ )
57
+ )
58
+ ).click()
59
+
60
+ # Wait for the collections table to appear
61
+ WebDriverWait(driver, 10).until(
62
+ EC.presence_of_element_located(
63
+ (
64
+ By.XPATH,
65
+ '//div[@class="ant-row d-flex justify-content-between mb-4 mt-2 css-2rgkd4"]',
66
+ )
67
+ )
68
+ )
69
+
70
+ soup = BeautifulSoup(driver.page_source, features="html.parser")
71
+
72
+ recyclingcalendar = soup.find(
73
+ "div",
74
+ {
75
+ "class": "ant-row d-flex justify-content-between mb-4 mt-2 css-2rgkd4"
76
+ },
77
+ )
78
+
79
+ rows = recyclingcalendar.find_all(
80
+ "div",
81
+ {
82
+ "class": "ant-col ant-col-xs-12 ant-col-sm-12 ant-col-md-12 ant-col-lg-12 ant-col-xl-12 css-2rgkd4"
83
+ },
84
+ )
85
+
86
+ current_year = datetime.now().year
87
+ current_month = datetime.now().month
88
+
89
+ for row in rows:
90
+ BinType = row.find("h3").text
91
+ collectiondate = datetime.strptime(
92
+ row.find("div", {"class": "text-white fw-bold"}).text,
93
+ "%A %d %B",
94
+ )
95
+ if (current_month > 10) and (collectiondate.month < 3):
96
+ collectiondate = collectiondate.replace(year=(current_year + 1))
97
+ else:
98
+ collectiondate = collectiondate.replace(year=current_year)
99
+
100
+ dict_data = {
101
+ "type": BinType,
102
+ "collectionDate": collectiondate.strftime("%d/%m/%Y"),
103
+ }
104
+ data["bins"].append(dict_data)
105
+
106
+ except Exception as e:
107
+ # Here you can log the exception if needed
108
+ print(f"An error occurred: {e}")
109
+ # Optionally, re-raise the exception if you want it to propagate
110
+ raise
111
+ finally:
112
+ # This block ensures that the driver is closed regardless of an exception
113
+ if driver:
114
+ driver.quit()
115
+ return data
@@ -0,0 +1,102 @@
1
+ from bs4 import BeautifulSoup
2
+ from selenium.webdriver.common.by import By
3
+ from selenium.webdriver.support import expected_conditions as EC
4
+ from selenium.webdriver.support.wait import WebDriverWait
5
+
6
+ from uk_bin_collection.uk_bin_collection.common import *
7
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
8
+
9
+
10
+ # import the wonderful Beautiful Soup and the URL grabber
11
+ class CouncilClass(AbstractGetBinDataClass):
12
+ """
13
+ Concrete classes have to implement all abstract operations of the
14
+ base class. They can also override some operations with a default
15
+ implementation.
16
+ """
17
+
18
+ def parse_data(self, page: str, **kwargs) -> dict:
19
+ driver = None
20
+ try:
21
+ data = {"bins": []}
22
+ user_paon = kwargs.get("paon")
23
+ user_postcode = kwargs.get("postcode")
24
+ web_driver = kwargs.get("web_driver")
25
+ headless = kwargs.get("headless")
26
+ check_paon(user_paon)
27
+ check_postcode(user_postcode)
28
+
29
+ # Create Selenium webdriver
30
+ driver = create_webdriver(web_driver, headless, None, __name__)
31
+ driver.get("https://webapps.dacorum.gov.uk/bincollections/")
32
+
33
+ # Wait for the postcode field to appear then populate it
34
+ inputElement_postcode = WebDriverWait(driver, 30).until(
35
+ EC.presence_of_element_located((By.ID, "txtBxPCode"))
36
+ )
37
+ inputElement_postcode.send_keys(user_postcode)
38
+
39
+ # Click search button
40
+ findAddress = WebDriverWait(driver, 10).until(
41
+ EC.presence_of_element_located((By.ID, "btnFindAddr"))
42
+ )
43
+ findAddress.click()
44
+
45
+ # Wait for the 'Select address' dropdown to appear and select option matching the house name/number
46
+ WebDriverWait(driver, 10).until(
47
+ EC.element_to_be_clickable(
48
+ (
49
+ By.XPATH,
50
+ "//select[@id='lstBxAddrList']//option[contains(., '"
51
+ + user_paon
52
+ + "')]",
53
+ )
54
+ )
55
+ ).click()
56
+
57
+ # Click search button
58
+ findDates = WebDriverWait(driver, 10).until(
59
+ EC.presence_of_element_located((By.ID, "MainContent_btnGetSchedules"))
60
+ )
61
+ findDates.click()
62
+
63
+ # Wait for the collections table to appear
64
+ WebDriverWait(driver, 30).until(
65
+ EC.presence_of_element_located((By.ID, "lblSelectedAddr"))
66
+ )
67
+
68
+ soup = BeautifulSoup(driver.page_source, features="html.parser")
69
+ soup.prettify()
70
+
71
+ # Get collections div
72
+ BinCollectionSchedule = soup.find("div", {"id": "MainContent_updPnl"})
73
+
74
+ NextCollections = BinCollectionSchedule.find_all(
75
+ "div", {"style": " margin:5px;"}
76
+ )
77
+
78
+ for Collection in NextCollections:
79
+ BinType = Collection.find("strong").text.strip()
80
+ if BinType:
81
+ CollectionDate = datetime.strptime(
82
+ Collection.find_all("div", {"style": "display:table-cell;"})[1]
83
+ .get_text()
84
+ .strip(),
85
+ "%a, %d %b %Y",
86
+ )
87
+ dict_data = {
88
+ "type": BinType,
89
+ "collectionDate": CollectionDate.strftime("%d/%m/%Y"),
90
+ }
91
+ data["bins"].append(dict_data)
92
+
93
+ except Exception as e:
94
+ # Here you can log the exception if needed
95
+ print(f"An error occurred: {e}")
96
+ # Optionally, re-raise the exception if you want it to propagate
97
+ raise
98
+ finally:
99
+ # This block ensures that the driver is closed regardless of an exception
100
+ if driver:
101
+ driver.quit()
102
+ return data
@@ -0,0 +1,54 @@
1
+ import requests
2
+ from requests.structures import CaseInsensitiveDict
3
+
4
+ from uk_bin_collection.uk_bin_collection.common import *
5
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
6
+
7
+
8
+ # import the wonderful Beautiful Soup and the URL grabber
9
+ class CouncilClass(AbstractGetBinDataClass):
10
+ """
11
+ Concrete classes have to implement all abstract operations of the
12
+ base class. They can also override some operations with a default
13
+ implementation.
14
+ """
15
+
16
+ def parse_data(self, page: str, **kwargs) -> dict:
17
+
18
+ user_uprn = kwargs.get("uprn")
19
+ check_uprn(user_uprn)
20
+ data = {"bins": []}
21
+
22
+ url = "https://wasteservice.lambeth.gov.uk/WhitespaceComms/GetServicesByUprn"
23
+
24
+ headers = CaseInsensitiveDict()
25
+ headers["Content-Type"] = "application/json"
26
+
27
+ body = {"uprn": user_uprn, "includeEventTypes": False, "includeFlags": True}
28
+ json_data = json.dumps(body)
29
+
30
+ res = requests.post(url, headers=headers, data=json_data)
31
+
32
+ if res.status_code != 200:
33
+ raise ConnectionRefusedError("Cannot connect to API!")
34
+
35
+ json_data = res.json()
36
+
37
+ if "SiteServices" in json_data:
38
+ SiteServices = json_data["SiteServices"]
39
+ for service in SiteServices:
40
+ if "NextCollectionDate" in service:
41
+ NextCollectionDate = service["NextCollectionDate"]
42
+ if NextCollectionDate:
43
+ Container = service["Container"]
44
+ if Container:
45
+ Bin_Type = Container["DisplayPhrase"]
46
+ dict_data = {
47
+ "type": Bin_Type,
48
+ "collectionDate": datetime.strptime(
49
+ NextCollectionDate, "%d/%m/%Y"
50
+ ).strftime(date_format),
51
+ }
52
+ data["bins"].append(dict_data)
53
+
54
+ return data