uk_bin_collection 0.138.0__py3-none-any.whl → 0.139.0__py3-none-any.whl

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 (31) hide show
  1. uk_bin_collection/tests/input.json +28 -0
  2. uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py +2 -1
  3. uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +1 -0
  4. uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py +1 -0
  5. uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +1 -0
  6. uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py +7 -3
  7. uk_bin_collection/uk_bin_collection/councils/CeredigionCountyCouncil.py +157 -0
  8. uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +95 -61
  9. uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +1 -0
  10. uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +4 -1
  11. uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +52 -41
  12. uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py +3 -4
  13. uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.py +11 -9
  14. uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py +13 -4
  15. uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py +5 -1
  16. uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +1 -3
  17. uk_bin_collection/uk_bin_collection/councils/NorthDevonCountyCouncil.py +159 -0
  18. uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +15 -3
  19. uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py +873 -871
  20. uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +1 -1
  21. uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +3 -6
  22. uk_bin_collection/uk_bin_collection/councils/SouthHollandDistrictCouncil.py +136 -0
  23. uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +6 -2
  24. uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +12 -12
  25. uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +6 -3
  26. uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +1 -0
  27. {uk_bin_collection-0.138.0.dist-info → uk_bin_collection-0.139.0.dist-info}/METADATA +1 -1
  28. {uk_bin_collection-0.138.0.dist-info → uk_bin_collection-0.139.0.dist-info}/RECORD +31 -28
  29. {uk_bin_collection-0.138.0.dist-info → uk_bin_collection-0.139.0.dist-info}/LICENSE +0 -0
  30. {uk_bin_collection-0.138.0.dist-info → uk_bin_collection-0.139.0.dist-info}/WHEEL +0 -0
  31. {uk_bin_collection-0.138.0.dist-info → uk_bin_collection-0.139.0.dist-info}/entry_points.txt +0 -0
@@ -69,7 +69,7 @@ class CouncilClass(AbstractGetBinDataClass):
69
69
  for row in table_rows:
70
70
  row_text = row.text.strip().split("\n")
71
71
  bin_text = row_text[0].split(" ")
72
- bin_type = ' '.join(bin_text[1:]).capitalize()
72
+ bin_type = " ".join(bin_text[1:]).capitalize()
73
73
  collections.append(
74
74
  (bin_type, datetime.strptime(row_text[1], "%A %d %b %Y"))
75
75
  )
@@ -9,6 +9,7 @@ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataC
9
9
 
10
10
  import string
11
11
 
12
+
12
13
  # import the wonderful Beautiful Soup and the URL grabber
13
14
  class CouncilClass(AbstractGetBinDataClass):
14
15
  """
@@ -50,9 +51,7 @@ class CouncilClass(AbstractGetBinDataClass):
50
51
 
51
52
  # Wait for the 'Select address' dropdown to be visible and select option matching UPRN
52
53
  dropdown = WebDriverWait(driver, 10).until(
53
- EC.visibility_of_element_located(
54
- (By.ID, "FF3518-list")
55
- )
54
+ EC.visibility_of_element_located((By.ID, "FF3518-list"))
56
55
  )
57
56
 
58
57
  # Create a 'Select' for it, then select the matching URPN option
@@ -76,9 +75,7 @@ class CouncilClass(AbstractGetBinDataClass):
76
75
 
77
76
  # Wait for the confirmation panel to appear
78
77
  conf_div = WebDriverWait(driver, 10).until(
79
- EC.presence_of_element_located(
80
- (By.CLASS_NAME, "ss_confPanel")
81
- )
78
+ EC.presence_of_element_located((By.CLASS_NAME, "ss_confPanel"))
82
79
  )
83
80
 
84
81
  soup = BeautifulSoup(driver.page_source, features="html.parser")
@@ -0,0 +1,136 @@
1
+ import time
2
+
3
+ from bs4 import BeautifulSoup
4
+ from selenium import webdriver
5
+ from selenium.webdriver.common.by import By
6
+ from selenium.webdriver.support import expected_conditions as EC
7
+ from selenium.webdriver.support.ui import Select, 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
+ import re
13
+ from datetime import datetime
14
+
15
+
16
+ # import the wonderful Beautiful Soup and the URL grabber
17
+ class CouncilClass(AbstractGetBinDataClass):
18
+ """
19
+ Concrete classes have to implement all abstract operations of the
20
+ base class. They can also override some operations with a default
21
+ implementation.
22
+ """
23
+
24
+ def parse_data(self, page: str, **kwargs) -> dict:
25
+ try:
26
+ # Make a BS4 object
27
+ data = {"bins": []}
28
+
29
+ user_uprn = kwargs.get("uprn")
30
+ user_postcode = kwargs.get("postcode")
31
+ headless = kwargs.get("headless")
32
+ web_driver = kwargs.get("web_driver")
33
+ driver = create_webdriver(web_driver, headless, None, __name__)
34
+ page = "https://www.sholland.gov.uk/mycollections"
35
+ check_uprn(user_uprn)
36
+ check_postcode(user_postcode)
37
+ driver.get(page)
38
+
39
+ find_address_button = WebDriverWait(driver, timeout=15).until(
40
+ EC.presence_of_element_located(
41
+ (By.ID, "SHDCWASTECOLLECTIONS_PAGE1_FINDADDRESSBUTTON")
42
+ )
43
+ )
44
+ # Wait for the postcode field to appear then populate it
45
+ postcode_input = WebDriverWait(driver, timeout=15).until(
46
+ EC.presence_of_element_located(
47
+ (By.ID, "SHDCWASTECOLLECTIONS_PAGE1_POSTCODENEW")
48
+ )
49
+ )
50
+
51
+ postcode_input.send_keys(user_postcode)
52
+
53
+ find_address_button.click()
54
+
55
+ # Wait until the address list contains an option with the target UPRN
56
+ WebDriverWait(driver, timeout=20).until(
57
+ lambda d: str(user_uprn)
58
+ in [
59
+ option.get_attribute("value")
60
+ for option in Select(
61
+ d.find_element(By.ID, "SHDCWASTECOLLECTIONS_PAGE1_ADDRESSLIST")
62
+ ).options
63
+ ]
64
+ )
65
+
66
+ # Now select the UPRN
67
+ address_selection_menu = Select(
68
+ driver.find_element(By.ID, "SHDCWASTECOLLECTIONS_PAGE1_ADDRESSLIST")
69
+ )
70
+ address_selection_menu.select_by_value(str(user_uprn))
71
+
72
+ next_button = WebDriverWait(driver, timeout=15).until(
73
+ EC.presence_of_element_located(
74
+ (By.ID, "SHDCWASTECOLLECTIONS_PAGE1_CONTINUEBUTTON_NEXT")
75
+ )
76
+ )
77
+
78
+ next_button.click()
79
+
80
+ # Check for text saying "Next collection dates"
81
+ WebDriverWait(driver, 30).until(
82
+ EC.presence_of_element_located(
83
+ (By.XPATH, "//*[contains(text(), 'Check your collection days')]")
84
+ )
85
+ )
86
+
87
+ soup = BeautifulSoup(driver.page_source, "html.parser")
88
+
89
+ # Find the results container
90
+ waste_blocks = soup.select("div.mycollections div.waste")
91
+
92
+ for block in waste_blocks:
93
+ try:
94
+ # Get the bin type
95
+ heading = block.find("h3").get_text(strip=True)
96
+ bin_type = heading.split(":")[0] # e.g., "Refuse"
97
+
98
+ # Find the div with the next collection info
99
+ next_coll_div = block.find("div", class_="nextcoll")
100
+ if not next_coll_div:
101
+ continue
102
+
103
+ text = next_coll_div.get_text(" ", strip=True)
104
+
105
+ # Extract date using regex, e.g. 'Wednesday 9th April 2025'
106
+ match = re.search(
107
+ r"\b(\d{1,2})(?:st|nd|rd|th)?\s+([A-Za-z]+)\s+(\d{4})\b", text
108
+ )
109
+ if match:
110
+ day, month_str, year = match.groups()
111
+
112
+ # Convert to datetime to format as dd/mm/yyyy
113
+ date_obj = datetime.strptime(
114
+ f"{day} {month_str} {year}", "%d %B %Y"
115
+ )
116
+ formatted_date = date_obj.strftime("%d/%m/%Y")
117
+ else:
118
+ formatted_date = "Unknown"
119
+
120
+ data["bins"].append(
121
+ {"type": bin_type, "collectionDate": formatted_date}
122
+ )
123
+
124
+ except Exception as parse_error:
125
+ print(f"Error parsing bin data: {parse_error}")
126
+
127
+ except Exception as e:
128
+ # Here you can log the exception if needed
129
+ print(f"An error occurred: {e}")
130
+ # Optionally, re-raise the exception if you want it to propagate
131
+ raise
132
+ finally:
133
+ # This block ensures that the driver is closed regardless of an exception.
134
+ if driver:
135
+ driver.quit()
136
+ return data
@@ -34,11 +34,15 @@ class CouncilClass(AbstractGetBinDataClass):
34
34
  for item in schedule_links:
35
35
  if "roundname" in item.contents[1]["href"]:
36
36
  # get bin colour
37
- bin_colour = item.contents[1]["href"].split("=")[-1].split("%")[0].upper()
37
+ bin_colour = (
38
+ item.contents[1]["href"].split("=")[-1].split("%")[0].upper()
39
+ )
38
40
  bin_url = "https://cag.walsall.gov.uk" + item.contents[1]["href"]
39
41
  r = requests.get(bin_url, headers=headers)
40
42
  if r.status_code != 200:
41
- print(f"Collection details for {bin_colour.lower()} bin could not be retrieved.")
43
+ print(
44
+ f"Collection details for {bin_colour.lower()} bin could not be retrieved."
45
+ )
42
46
  break
43
47
  soup = BeautifulSoup(r.text, "html.parser")
44
48
  table = soup.findAll("tr")
@@ -5,7 +5,6 @@ from bs4 import BeautifulSoup
5
5
  from selenium.webdriver.common.by import By
6
6
  from selenium.webdriver.common.keys import Keys
7
7
  from selenium.webdriver.support import expected_conditions as EC
8
- from selenium.webdriver.support.ui import Select
9
8
  from selenium.webdriver.support.wait import WebDriverWait
10
9
 
11
10
  from uk_bin_collection.uk_bin_collection.common import *
@@ -26,7 +25,7 @@ class CouncilClass(AbstractGetBinDataClass):
26
25
  page = "https://portal.walthamforest.gov.uk/AchieveForms/?mode=fill&consentMessage=yes&form_uri=sandbox-publish://AF-Process-d62ccdd2-3de9-48eb-a229-8e20cbdd6393/AF-Stage-8bf39bf9-5391-4c24-857f-0dc2025c67f4/definition.json&process=1&process_uri=sandbox-processes://AF-Process-d62ccdd2-3de9-48eb-a229-8e20cbdd6393&process_id=AF-Process-d62ccdd2-3de9-48eb-a229-8e20cbdd6393"
27
26
 
28
27
  user_postcode = kwargs.get("postcode")
29
- user_uprn = kwargs.get("uprn")
28
+ # user_uprn = kwargs.get("uprn")
30
29
  user_paon = kwargs.get("paon")
31
30
  web_driver = kwargs.get("web_driver")
32
31
  headless = kwargs.get("headless")
@@ -71,17 +70,17 @@ class CouncilClass(AbstractGetBinDataClass):
71
70
  )
72
71
 
73
72
  find_ac_button.send_keys(Keys.RETURN)
74
- h4_element = wait.until(
73
+ wait.until(
75
74
  EC.presence_of_element_located(
76
- (By.XPATH, "//h4[contains(text(), 'Your upcoming collections')]")
75
+ (By.XPATH, "//h4[contains(text(), 'Next Collections')]")
77
76
  )
78
77
  )
79
78
 
80
- data_table = WebDriverWait(driver, 10).until(
79
+ WebDriverWait(driver, 10).until(
81
80
  EC.presence_of_element_located(
82
81
  (
83
82
  By.XPATH,
84
- '//div[contains(@class, "repeatable-table-wrapper")]',
83
+ '//div[contains(@class, "fieldContent")]',
85
84
  )
86
85
  )
87
86
  )
@@ -90,15 +89,16 @@ class CouncilClass(AbstractGetBinDataClass):
90
89
 
91
90
  data = {"bins": []}
92
91
 
93
- collection_divs = soup.find_all("tr", {"class": "repeatable-value"})
92
+ collection_divs = soup.find_all("div", {"style": "text-align: center;"})
94
93
 
95
94
  for collection_div in collection_divs:
96
- td_list = collection_div.find_all("td")
97
- bin_type = td_list[1].get_text(strip=True)
98
- collection_date_text = td_list[2].get_text(strip=True)
95
+ h5_tag = collection_div.find("h5")
96
+ p_tag = collection_div.find("p")
97
+
98
+ if h5_tag and p_tag:
99
+ bin_type = h5_tag.get_text(strip=True)
100
+ collection_date_text = p_tag.find("b").get_text(strip=True)
99
101
 
100
- # if collection_date_text is not 'NaN'
101
- if collection_date_text != "NaN":
102
102
  # Extract and format the date
103
103
  date_match = re.search(r"(\d+ \w+)", collection_date_text)
104
104
  if date_match:
@@ -48,7 +48,7 @@ class CouncilClass(AbstractGetBinDataClass):
48
48
  address_x = address_data["Locations"][0]["X"]
49
49
  address_y = address_data["Locations"][0]["Y"]
50
50
 
51
- stage2_url = fr"https://wlnk.statmap.co.uk/map/Cluster.svc/getpage?script=\Cluster\Cluster.AuroraScript$&taskId=bins&format=js&updateOnly=true&query=x%3D{address_x}%3By%3D{address_y}%3Bid%3D{address_id}"
51
+ stage2_url = rf"https://wlnk.statmap.co.uk/map/Cluster.svc/getpage?script=\Cluster\Cluster.AuroraScript$&taskId=bins&format=js&updateOnly=true&query=x%3D{address_x}%3By%3D{address_y}%3Bid%3D{address_id}"
52
52
 
53
53
  bin_query = requests.get(stage2_url).text
54
54
 
@@ -97,7 +97,11 @@ class CouncilClass(AbstractGetBinDataClass):
97
97
  )
98
98
  # If the current month is December and one of the next collections is in January, increment the year
99
99
  if datetime.now().month == 12 and int(split_date[1]) < 12:
100
- full_date = datetime(year=datetime.now().year + 1, month=int(split_date[1]), day=int(split_date[0]))
100
+ full_date = datetime(
101
+ year=datetime.now().year + 1,
102
+ month=int(split_date[1]),
103
+ day=int(split_date[0]),
104
+ )
101
105
 
102
106
  # Since data in unordered, add to a tuple
103
107
  collections.append((bin_type.title(), full_date))
@@ -115,4 +119,3 @@ class CouncilClass(AbstractGetBinDataClass):
115
119
  data["bins"].append(dict_data)
116
120
 
117
121
  return data
118
-
@@ -20,6 +20,7 @@ logging.basicConfig(
20
20
  level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
21
21
  )
22
22
 
23
+
23
24
  class CouncilClass(AbstractGetBinDataClass):
24
25
 
25
26
  def parse_data(self, page: str, **kwargs) -> dict:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uk_bin_collection
3
- Version: 0.138.0
3
+ Version: 0.139.0
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -3,7 +3,7 @@ uk_bin_collection/tests/check_selenium_url_in_input.json.py,sha256=Iecdja0I3XIiY
3
3
  uk_bin_collection/tests/council_feature_input_parity.py,sha256=DO6Mk4ImYgM5ZCZ-cutwz5RoYYWZRLYx2tr6zIs_9Rc,3843
4
4
  uk_bin_collection/tests/features/environment.py,sha256=VQZjJdJI_kZn08M0j5cUgvKT4k3iTw8icJge1DGOkoA,127
5
5
  uk_bin_collection/tests/features/validate_council_outputs.feature,sha256=SJK-Vc737hrf03tssxxbeg_JIvAH-ddB8f6gU1LTbuQ,251
6
- uk_bin_collection/tests/input.json,sha256=acZWzLnjM5obEdPHHCQGqVC6-D01kCHzgtqPro5pj18,118188
6
+ uk_bin_collection/tests/input.json,sha256=FlKli01VYh9oXZ9Fy9I6arVV4kH1-VsNdBN79OKgmFs,119598
7
7
  uk_bin_collection/tests/output.schema,sha256=ZwKQBwYyTDEM4G2hJwfLUVM-5v1vKRvRK9W9SS1sd18,1086
8
8
  uk_bin_collection/tests/step_defs/step_helpers/file_handler.py,sha256=Ygzi4V0S1MIHqbdstUlIqtRIwnynvhu4UtpweJ6-5N8,1474
9
9
  uk_bin_collection/tests/step_defs/test_validate_council.py,sha256=VZ0a81sioJULD7syAYHjvK_-nT_Rd36tUyzPetSA0gk,3475
@@ -13,12 +13,12 @@ uk_bin_collection/tests/test_conftest.py,sha256=qI_zgGjNOnwE9gmZUiuirL1SYz3TFw5y
13
13
  uk_bin_collection/tests/test_get_data.py,sha256=sFJz_Fd6o-1r2gdmzY52JGwVi0Of_mDzvYSoc7a3RUw,7239
14
14
  uk_bin_collection/uk_bin_collection/collect_data.py,sha256=dB7wWXsJX4fm5bIf84lexkvHIcO54CZ3JPxqmS-60YY,4654
15
15
  uk_bin_collection/uk_bin_collection/common.py,sha256=Wj6o2NaxYDE1lkpYzMFDIZiPARX0K3xmt-5bnt2kjSI,10970
16
- uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py,sha256=l8OahAm9w9AG61VjCu0B_i51TrwB4vEl_KO0907uJPE,4197
17
- uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py,sha256=xhAdPFEQrPpQxQQ6Q5JYy2GS0QQ10-_y7nxoC74ARc4,1654
16
+ uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py,sha256=Je8VwVLK9KnYl9vqf2gWJ7ZYDgUq3A7caDiIzk5Xof8,4194
17
+ uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py,sha256=aO1CSdyqa8oAD0fB79y1Q9bikAWCP_JFa7CsyTa2j9s,1655
18
18
  uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py,sha256=ppbrmm-MzB1wOulK--CU_0j4P-djNf3ozMhHnmQFqLo,1511
19
19
  uk_bin_collection/uk_bin_collection/councils/AmberValleyBoroughCouncil.py,sha256=mTeluIIEcuxLxhfDQ95A1fp8RM6AkJT5tRGZPUbYGdk,1853
20
20
  uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py,sha256=Hp5pteaC5RjL5ZqPZ564S9WQ6ZTKLMO6Dl_fxip2TUc,1653
21
- uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py,sha256=E9A5-mKBMHOuh-WJtHzo-mSPYqAsgghvV6SwV889hmA,3823
21
+ uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py,sha256=iMBldxNErgi-ok1o6xpqdNgMvR6qapaNqoTWDTqMeGo,3824
22
22
  uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py,sha256=fJ0UvuSCbzFE9CPoxt1U9CJeFsbTKts_5GRBc3E9Eno,2201
23
23
  uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py,sha256=o9NBbVCTdxKXnpYbP8-zxe1Gh8s57vwfV75Son_sAHE,2863
24
24
  uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py,sha256=yfhthv9nuogP19VOZ3TYQrq51qqjiCZcSel4sXhiKjs,4012
@@ -28,7 +28,7 @@ uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py,sha256=Louq
28
28
  uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py,sha256=W7QBx6Mgso8RYosuXsaYo3GGNAu-tiyBSmuYxr1JSOU,1707
29
29
  uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py,sha256=1eXdST58xFRMdYl8AGNG_EwyQeLa31WSWUe882hQ2ec,6329
30
30
  uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py,sha256=Sd4-pbv0QZsR7soxvXYqsfdOUIqZqS6notyoZthG77s,9182
31
- uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py,sha256=RKuH8HzGc3Q0WtLg-g_xVMn9hUYqdENgfcvvR4Bx5PI,4763
31
+ uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py,sha256=hqzVKEqwYmjcQjCYBletcCt9_pE96qQ3kn7eDroJeNk,4764
32
32
  uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py,sha256=NymPmq5pud0PJ8ePcc2r1SKED4EHQ0EY2l71O-Metxc,3313
33
33
  uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py,sha256=VPWGljnH4C3q8qs5ZmCtqjNjgWQvviALzjk00q3EZeQ,2632
34
34
  uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py,sha256=N_TPiIv8VBzN3rY0p3JtLlxSEru-6k1wW4UNIhN5X1M,3709
@@ -52,7 +52,7 @@ uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py,sha25
52
52
  uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py,sha256=kJmmDJz_kQ45DHmG7ocrUpNJonEn0kuXYEDQyZaf9ks,5576
53
53
  uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py,sha256=dii85JLmYU1uMidCEsWVo3stTcq_QqyC65DxG8u1UmE,4302
54
54
  uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py,sha256=PUfxP8j5Oh9wFHkdjbrJzQli9UzMHZzwrZ2hkThrvhI,1781
55
- uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py,sha256=NR1FoxLF0Ne61cJJmlVJhGfxjZ2sj60aLlOHBWWxtrM,2921
55
+ uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py,sha256=mcRtkFc9g3YNN17OQfhzYJtNYeWrZPP_e7m7goEhz5I,3012
56
56
  uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py,sha256=-Facq-ToQkcWUePpKBwq90LZUFxgUSydNL2sYaLX4yw,4473
57
57
  uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py,sha256=_ELVUM5VLp1nwDxRpvpsp6n8SzLJvp_UyMp-i_MXYuo,4383
58
58
  uk_bin_collection/uk_bin_collection/councils/BurnleyBoroughCouncil.py,sha256=GJf1OPvUVj3vqsR3KjG0DFHZrSBu4ogIz_MJeVV8tNA,3192
@@ -64,11 +64,12 @@ uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py,sha256=Uz7
64
64
  uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py,sha256=_k3sT_WR-gnjjt3tHQ-L2-keP9sdBV0ZeW7gHDzFPYo,7208
65
65
  uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py,sha256=viiZprMos_qcD44dki5_RRVZgGE4cH4zSHAzYRKrjHw,1864
66
66
  uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py,sha256=AjxuIqKxx0tYHMaTBITXTcnN2L-Zrx78uwUkqTjI0xU,3599
67
+ uk_bin_collection/uk_bin_collection/councils/CeredigionCountyCouncil.py,sha256=np9iLnMVWpMYUiHZ4sJaSaU5pOWfmiCLQ8TIrOlY48o,5924
67
68
  uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py,sha256=tXfzMetN6wxahuGGRp2mIyCCDSL4F2aG61HhUxw6COQ,2172
68
69
  uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py,sha256=EB88D0MNJwuDZ2GX1ENc5maGYx17mnHTCtNl6s-v11E,5090
69
- uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py,sha256=fo9n2AuD8a174h3YMa9awa3S4YO2XU1KaInQ4ULz6s4,13686
70
+ uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py,sha256=Su77RQoX4Hw6goAT0f-sfhOf3NFPn0MaPFrNdEEhsMM,14100
70
71
  uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py,sha256=VxTe9qk93MFgtELEgVrEz3W0vYaG_32EpPmky_b4j0k,2590
71
- uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py,sha256=K95UaS67nxGSFzLoyqMSZcLmfhwjDImVXznMZC_bFa4,1680
72
+ uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py,sha256=I7Dj8LzG-Q4yrJ99jLRIwKwW5WQ9he8UksvF_YPzTxI,1681
72
73
  uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py,sha256=5mKZf22NgdyBY-SqV0c2q8b8IJobkoZrsfGEVUcxUyM,3544
73
74
  uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py,sha256=mZiM8Ugm_OP0JkC5pLaQmi4i79mAp4SNNrcIdsREjHw,7198
74
75
  uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py,sha256=HxrLcJves7ZsE8FbooymeecTUmScY4R7Oi71vwCePPo,4118
@@ -78,7 +79,7 @@ uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py,sha256=QcFHTz
78
79
  uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py,sha256=JDtcJFUY47a3Ws4_7pnCYlngw_3p_A-m5MitPLdrv3w,3983
79
80
  uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py,sha256=6zHe_Qu-R9hTB52QRk215rYfO3OocbJ_D62kVWnrve8,2912
80
81
  uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py,sha256=85MPd1idsil3F-0Y6RQGMHKEcP9VS-z9B8l8ITK4BUU,4854
81
- uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py,sha256=QejW440Wp1mpEyRZIy1A0hYPejg_-D0bfHtpC2-VoaI,2050
82
+ uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py,sha256=YjVSEGxuu92-hcfLtNjzh98To_HSiTfjrfZHF3DHChg,2085
82
83
  uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py,sha256=Oaj5INA3zNjtzBRsfLvRTIxZzcd4E4bJfVF1ULWlrL4,4322
83
84
  uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py,sha256=Vxh5ICoaXTAvx0nDOq_95XQ4He9sQKcLdI5keV2uxM4,11384
84
85
  uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py,sha256=bPOmkyzNnHrOtUprbouHdOsgpu7WilUADcaccWTCPFI,2839
@@ -120,13 +121,13 @@ uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py,sha256=sF
120
121
  uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py,sha256=eP_NnHtBLyflRUko9ubi_nxUPb7qg9SbaaSxqWZxNEs,2157
121
122
  uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py,sha256=RvPHhGbzP3mcjgWe2rIQux43UuDH7XofJGIKs7wJRe0,2060
122
123
  uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py,sha256=yKgZhua-2hjMihHshhncXVUBagbTOQBnNbKzdIZkWjw,3114
123
- uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py,sha256=YWT2GM2-bQ3Zh9ps1K14XRZfanuJOlV-zHpOOYMXAXY,4893
124
+ uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py,sha256=wsDHQI2QgrydMaLtOfkJpE95caRKARB9ITxemaS9YcE,5249
124
125
  uk_bin_collection/uk_bin_collection/councils/FyldeCouncil.py,sha256=XkiOx-RAykEB75U2R_u69sKov9r5OMZgnZI61vHnN9Y,3026
125
126
  uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py,sha256=SRCgYhYs6rv_8C1UEDVORHZgXxcJkoZBjzdYS4Lu-ew,4531
126
127
  uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py,sha256=XzfFMCwclh9zAJgsbaj4jywjdiH0wPaFicaVsLrN3ms,2297
127
128
  uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py,sha256=9Rk9KfcglJvRhh4373OfRX-fwywE2xgwx5KejqzV5fE,3399
128
129
  uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=67D8rbhn0t4rsCSJRTXZVtHmph2wT6rJiexNWKOnMok,4625
129
- uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py,sha256=DsheXk3sooWWKctIY3PbHI88HI7GfdgZ7qS-iSVCKYA,1140
130
+ uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py,sha256=oFAfvSA7dH7a9wgse5NAA45J8NJ_ltx4mGoKjDYc7pk,1124
130
131
  uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py,sha256=ueQ9xFiTxMUBTGV9VjtySHA1EFWliTM0AeNePBIG9ho,4568
131
132
  uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py,sha256=9pVrmQhZcK2AD8gX8mNvP--L4L9KaY6L3B822VX6fec,5695
132
133
  uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py,sha256=eK2KkY1NbIxVtBruQYSNPA0J7fuzMik5it02dFbKYV0,1855
@@ -165,7 +166,7 @@ uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py,sha256=6DN
165
166
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py,sha256=UOeiOxGMvVMm2UFaqjmQpm7vxzqJNSSN8LM9lAUjs2c,3021
166
167
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py,sha256=r9D5lHe5kIRStCd5lRIax16yhb4KTFzzfYEFv1bacWw,2009
167
168
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughLewisham.py,sha256=d8rlJDTbY3nj-Zjg6iwvwfe-X13Gq86DGGW6QkQAUW0,5310
168
- uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.py,sha256=F5G_Xu-nilCA72Qbm9N87q77yYZMzyXhiuJaB1tjFFs,3933
169
+ uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.py,sha256=H1ej7Bw1zW3kvxCqz0W1137YIZCdG5AmhAyVK3cvp00,3987
169
170
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py,sha256=A_6Sis5hsF53Th04KeadHRasGbpAm6aoaWJ6X8eC4Y8,6604
170
171
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py,sha256=T0gCjpBQ9k3uNNIiJGphNiSXeh2n6bohflg9RwbL3NA,2565
171
172
  uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py,sha256=vScUi_R8FnBddii2_zLlZBLxuh85mKmCm8nKW3zxky0,2758
@@ -179,20 +180,21 @@ uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py,s
179
180
  uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py,sha256=8MxqGgOJVseMkrTmEMT0EyDW7UMbXMoa5ZcJ2nD55Ew,3367
180
181
  uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py,sha256=h6M-v5jVYe7OlQ47Vf-0pEgECZLOOacK3_XE6zbpsM4,6329
181
182
  uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py,sha256=AZgC9wmDLEjUOtIFvf0ehF5LHturXTH4DkE3ioPSVBA,6254
182
- uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py,sha256=l7amseG4fhyOiPWS3cbwUvE6gZSnS6V8o73vL5kxL_c,4056
183
+ uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py,sha256=BiYexiZj-9PxRnB7sYRy0G-72s3L9jfh2vd1Y2NQwtg,4223
183
184
  uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py,sha256=-VKvdIhrs859-YqxsNMzRWm2alP1avBR1_J8O9gJnYw,6725
184
185
  uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py,sha256=7e2pGBLCw24pNItHeI9jkxQ3rEOZ4WC4zVlbvKYGdXE,2600
185
186
  uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py,sha256=xWR5S0gwQu9gXxjl788Wux1KaC0CT7ZFw0iXuRLZCEM,5599
186
- uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py,sha256=V3R98D3DtCPZK3RNCg8yR2ddoUz_tOzl2YTgWfjdPX0,2468
187
+ uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py,sha256=PC2tui10S-DXmiKUqXZun5MInIgqqQjtT5wII1K_9a0,2532
187
188
  uk_bin_collection/uk_bin_collection/councils/MorayCouncil.py,sha256=jsHCQ_aV_bG0GPfF7h6g5TP84sroplYC5k2M6iEKiTw,2265
188
189
  uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py,sha256=p95UYogx3_WJ_1kgfeH5kGQdrZ3YyEJjVuZ7WOOPAvs,5710
189
- uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py,sha256=LSQu1djVkbp4ous3DuOr9VWg4k9sFyBrQ2ZaJHY5FbA,5374
190
+ uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py,sha256=Vdmv_p75OJwSeltWE5wZhE8wy5XW0CIKIn1cKNvI0pQ,5336
190
191
  uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py,sha256=lAleYfCGUWCKOi7Ye_cjgfpI3pWwTcFctlYmh0hjebM,2140
191
192
  uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py,sha256=eJMX10CG9QO7FRhHSmUDL-jO_44qoK3_1ztNTAXhkbw,2085
192
193
  uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py,sha256=t150wPtF2eEFYNTVj2EnhXt6JJJRiEX8976bh9JBXlg,2328
193
194
  uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py,sha256=klFqr2Km1BuQ4wERmjbXZzOvN1N0jnVmhTGRSVzVOaU,2086
194
195
  uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py,sha256=dAcl5P97bttl2xCPvxof1a18kmqOrMmiElgtn3Ej7zs,8480
195
196
  uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py,sha256=o8zv40Wt19d51mrN5lsgLMCKMokMPmI1cMHBNT5yAho,1976
197
+ uk_bin_collection/uk_bin_collection/councils/NorthDevonCountyCouncil.py,sha256=tgJKIvu7nnCAHu_HImfG5SQABD6ygKFqrZU-ZoC6ObY,6260
196
198
  uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py,sha256=bps_uCFAeUHQla7AE5lZOv6sUkUz1fb6zduZdAcYMuw,4651
197
199
  uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py,sha256=fYf438VZIaOaqPSwdTTWVjFTdrI0jGfFsxVzOc-QdkA,1817
198
200
  uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py,sha256=dFgvZqVKEVEP0zSPeh2s9xIWSCGbhYHpXn2U6Nk0HXM,2847
@@ -206,9 +208,9 @@ uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py,sha256=MHfc
206
208
  uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py,sha256=gJj0dyQc5QUefqusKGk2LLXfWbG5tlEXUOh8KAPh3RI,4584
207
209
  uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py,sha256=rwW6y5yhRiuYk3lVS7YFZxLaY_yfojdcn2dxiWaP4YA,2013
208
210
  uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py,sha256=CF9__v8xOUJ9Ukic9Yg9WnVUojV3Cv6_dHAHJzL6V3o,5106
209
- uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py,sha256=6w5-xKiyxTlJLaCkwUnAWjd5jnohonnNRr0sTlfACvk,2702
211
+ uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py,sha256=hddZD4tv-fw52hvxTm2UjSvRP3MwGchzWZyuhNeNvp0,2970
210
212
  uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py,sha256=panTCjnsBOQ98-TBO9xVZk_jcT_gjMhx3Gg5oWxBRLo,1254
211
- uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py,sha256=KqjQczn214ctkTsm-zimlDSDtgvcLQ23fte3kHiCEsg,19187
213
+ uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py,sha256=PViXaBJ5SeP3inOnqf4PuPahzRCLN06n5Gicqyt3gbM,37781
212
214
  uk_bin_collection/uk_bin_collection/councils/OadbyAndWigstonBoroughCouncil.py,sha256=Kgy5HA0xZ9hR4_cAydPfOfskhGUB4j93AQF2-9Fj-Cg,2179
213
215
  uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py,sha256=9dlesCxNoVXlmQaqZj7QFh00smnJbm1Gnjkr_Uvzurs,1771
214
216
  uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py,sha256=d_bY0cXRDH4kSoWGGCTNN61MNErapSOf2WSTYDJr2r8,2318
@@ -228,9 +230,9 @@ uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py,sha256=rfhD66A9H
228
230
  uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py,sha256=-fdLvtik9ytfwXrrhwWdBxqQOMq2N1pvrIuvShhf8PU,3090
229
231
  uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py,sha256=LtMPM8lj5bfReDR4buHEo-aRC_HTBIeo1nf8GE5-R80,1790
230
232
  uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py,sha256=BZzLmWK_VONOmMpSrLrnKtJaOrrepm6aStfKGVcgf9Y,3487
231
- uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py,sha256=qwyi2K1p1erSawthC1QD1_oYghLfXFlXMdClszZTitU,4190
233
+ uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py,sha256=cuoxb1PdKtGvYUvcp2bcj7MWL3r83cOnc66Jx79M3sE,4190
232
234
  uk_bin_collection/uk_bin_collection/councils/RunnymedeBoroughCouncil.py,sha256=vmTZfijt9b6sKzRdRwROE94lrMVnqs6kn6tg-xi1jR4,1618
233
- uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py,sha256=EZGf0en7lBXv3IOkrObxCXLNC6FFCkqqGlIMNFrQvPw,4296
235
+ uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py,sha256=nWo8xeER71FEbnMTX8W9bcwZNpLEExWzPvgRT7DmcMc,4221
234
236
  uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py,sha256=ZsGnXjoEaOS6U7fI0w7-uqxayAHdNVKsJi2fqIWEls8,3375
235
237
  uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py,sha256=XUGemp2cdzsvkWjnv2m4YKTMcoKDUfIlVy3YucX-_o4,2601
236
238
  uk_bin_collection/uk_bin_collection/councils/SandwellBoroughCouncil.py,sha256=shJhvqDcha2ypDCSfhss59G95jNaWBuMnVIxJiZXcY8,3110
@@ -245,6 +247,7 @@ uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py,sha25
245
247
  uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py,sha256=irqelQSENPsZLlNtYtpt-Z7GwKUyvhp94kKKVIIDjQg,2087
246
248
  uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py,sha256=ytQot0J7i6DTJo6hb9koTB1UpXLATKVeRU4FBF9kHRo,2412
247
249
  uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py,sha256=DiijlLisR8qwPSo-4XSAiNk5G31-fYr7bDHKSFjDT7o,3180
250
+ uk_bin_collection/uk_bin_collection/councils/SouthHollandDistrictCouncil.py,sha256=KU5-d6imNEV89O9WcAP-5WLcXUsouf9A-_mEZNxl-vo,5165
248
251
  uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py,sha256=_26ouWln5VrKiIFcp2b6ZzuwCKpp3aNcS2n5d4-8NsA,6210
249
252
  uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py,sha256=fj-eZI0yrvQVCv8GvhcovZ3b9bV6Xv_ws3IunWjnv4U,3126
250
253
  uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py,sha256=C2qIZjjbl9JnuukX9OH2RbfP0hSdp3uX76APGY33qKs,4622
@@ -287,8 +290,8 @@ uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py,sha256
287
290
  uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py,sha256=dz3zDJsJKYYqUB-Gxf6twvP6kG_wyENaszxXxK4iJn0,5089
288
291
  uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py,sha256=fyskrQ4-osGOeCZuB_8m2TpW8iwHr7lpl52nrR06Xpo,4441
289
292
  uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py,sha256=mdAXKcoSSF-xnXS8boesFftS8RiKyuR76ITHQ9Q5DgM,4916
290
- uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py,sha256=wv-M3zZj0E6EIPoVB9AF_NCg_8XGM9uhqGa-F5yzoc4,2277
291
- uk_bin_collection/uk_bin_collection/councils/WalthamForest.py,sha256=mN-USLAG5bKQcEDAhuVjA-kDLkFWlE8OAwDOUjHdc3g,5028
293
+ uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py,sha256=aniL34mc0ehLl5fDUi8Y_L_TK8HFoE605IJIarb5CSk,2363
294
+ uk_bin_collection/uk_bin_collection/councils/WalthamForest.py,sha256=8Xoi9G8iXJi8uqnyNuqba37RwTqvuvMj9FZxi4NA-n4,4924
292
295
  uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py,sha256=aQoJpC7YkhKewQyZlsv5m4__2IPoKRsOrPxjNH5xRNo,2594
293
296
  uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py,sha256=AB9mrV1v4pKKhfsBS8MpjO8XXBifqojSk53J9Q74Guk,1583
294
297
  uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py,sha256=DAL_f0BcIxFj7Ngkms5Q80kgSGp9y5zB35wRPudayz8,1644
@@ -299,7 +302,7 @@ uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py,sha256=ikUft37dYNJ
299
302
  uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py,sha256=pTNiyR4WoGdRnYPdMhv0T4ArVm5Blz82QBY1pSGh6eI,5513
300
303
  uk_bin_collection/uk_bin_collection/councils/WestDunbartonshireCouncil.py,sha256=I73A8ehWqwowYqanBD8mAMDJH9R0cJnX3RFykrSvf_Y,2648
301
304
  uk_bin_collection/uk_bin_collection/councils/WestLancashireBoroughCouncil.py,sha256=iohI2NZSjsEnCpSGsCPZFC2EQZL5pyzcb9Ng_H0tMUE,4718
302
- uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py,sha256=ip7HWKl2ysHHwGbn4nZMQWfMSwq9eh-5DWO_Hjb7It0,4757
305
+ uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py,sha256=xy6xxqndYm-XMaU9LetRoGd7Uq3DloumyfJaX_lN27s,4851
303
306
  uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py,sha256=dq0jimtARvRkZiGbVFrXXZgY-BODtz3uYZ5UKn0bf64,4114
304
307
  uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py,sha256=jbqV3460rn9D0yTBGWjpSe1IvWWcdGur5pzgj-hJcQ4,2513
305
308
  uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py,sha256=Se3Cfn_6ADjhsUzEJI_JnGkVcIbXxSTferM4ZC6pZ0g,1166
@@ -314,15 +317,15 @@ uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py,sha256=37ig
314
317
  uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py,sha256=H8aFHlacwV07X-6T9RQua4irqDA0cIQrF4O1FfPR7yI,4114
315
318
  uk_bin_collection/uk_bin_collection/councils/WolverhamptonCityCouncil.py,sha256=ncXfu5RHPCFsArczXHy7g0l_HEZa7GC-QA1QRReP_00,1801
316
319
  uk_bin_collection/uk_bin_collection/councils/WorcesterCityCouncil.py,sha256=dKHB2fPSmOGOwyvfpbdR4U8XW2ctBf63gCPxX06kwKA,1867
317
- uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py,sha256=GnNNMe33YMlK6S7rjM3c4BQkBnXelS0DKl2x5V4fb2w,5775
320
+ uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py,sha256=YuZdzEW0CZLwusm1VQcGRIKXAab_UDFLaCnN60itt_E,5776
318
321
  uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py,sha256=QpCkmRSQmJo0RLsjXoCYPDcoxuDzG_00qNV0AHTDmXo,3000
319
322
  uk_bin_collection/uk_bin_collection/councils/WyreForestDistrictCouncil.py,sha256=3b7WzBXdYub6j13sqDL3jlqgICKmNyQaF4KxRxOMHWk,2000
320
323
  uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bIdsvmoSzBjJAvTTi6yPfJa8xjJx1ys2w,1490
321
324
  uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=EQWRhZ2pEejlvm0fPyOTsOHKvUZmPnxEYO_OWRGKTjs,1158
322
325
  uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
323
326
  uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
324
- uk_bin_collection-0.138.0.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
325
- uk_bin_collection-0.138.0.dist-info/METADATA,sha256=eA8Xw5kfi5OhuKXsI165x9eQC4DHuwISQGZlERkTKLI,19851
326
- uk_bin_collection-0.138.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
327
- uk_bin_collection-0.138.0.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
328
- uk_bin_collection-0.138.0.dist-info/RECORD,,
327
+ uk_bin_collection-0.139.0.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
328
+ uk_bin_collection-0.139.0.dist-info/METADATA,sha256=G_dFWc1G250I1qFCLJO74t7HOcIwC2HCitNWkJPrZGg,19851
329
+ uk_bin_collection-0.139.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
330
+ uk_bin_collection-0.139.0.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
331
+ uk_bin_collection-0.139.0.dist-info/RECORD,,