uk_bin_collection 0.152.0__py3-none-any.whl → 0.152.1__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 (35) hide show
  1. uk_bin_collection/tests/input.json +92 -58
  2. uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +69 -24
  3. uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +24 -47
  4. uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +14 -3
  5. uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +12 -12
  6. uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +24 -2
  7. uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +4 -0
  8. uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +114 -261
  9. uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +13 -0
  10. uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +17 -2
  11. uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +14 -1
  12. uk_bin_collection/uk_bin_collection/councils/EastbourneBoroughCouncil.py +76 -0
  13. uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +59 -45
  14. uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +2 -0
  15. uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +47 -15
  16. uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +13 -1
  17. uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +2 -3
  18. uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py +13 -2
  19. uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +18 -4
  20. uk_bin_collection/uk_bin_collection/councils/LewesDistrictCouncil.py +76 -0
  21. uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +16 -4
  22. uk_bin_collection/uk_bin_collection/councils/MaidstoneBoroughCouncil.py +42 -47
  23. uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +13 -6
  24. uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +14 -9
  25. uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +2 -2
  26. uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +50 -14
  27. uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +115 -65
  28. uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +10 -5
  29. uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +1 -3
  30. uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +3 -0
  31. {uk_bin_collection-0.152.0.dist-info → uk_bin_collection-0.152.1.dist-info}/METADATA +1 -1
  32. {uk_bin_collection-0.152.0.dist-info → uk_bin_collection-0.152.1.dist-info}/RECORD +35 -33
  33. {uk_bin_collection-0.152.0.dist-info → uk_bin_collection-0.152.1.dist-info}/LICENSE +0 -0
  34. {uk_bin_collection-0.152.0.dist-info → uk_bin_collection-0.152.1.dist-info}/WHEEL +0 -0
  35. {uk_bin_collection-0.152.0.dist-info → uk_bin_collection-0.152.1.dist-info}/entry_points.txt +0 -0
@@ -1,7 +1,10 @@
1
1
  import time
2
2
 
3
3
  from bs4 import BeautifulSoup
4
+ from selenium.common.exceptions import TimeoutException
4
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 WebDriverWait
5
8
 
6
9
  from uk_bin_collection.uk_bin_collection.common import *
7
10
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
@@ -42,28 +45,61 @@ class CouncilClass(AbstractGetBinDataClass):
42
45
  driver = create_webdriver(web_driver, headless, None, __name__)
43
46
  driver.get(page)
44
47
 
45
- time.sleep(1)
48
+ # Create wait object
49
+ wait = WebDriverWait(driver, 20)
46
50
 
47
- # Press the cookie accept - wait is to let the JS load it up
48
- driver.find_element(By.ID, "ccc-notify-accept").click()
49
-
50
- inputElement_hn = driver.find_element(
51
- By.ID,
52
- "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_NCCAddressLookup_txtHouse",
51
+ # Wait for and click cookie button
52
+ cookie_button = wait.until(
53
+ EC.element_to_be_clickable((By.ID, "ccc-notify-accept"))
54
+ )
55
+ cookie_button.click()
56
+
57
+ # Wait for and find house number input
58
+ inputElement_hn = wait.until(
59
+ EC.presence_of_element_located(
60
+ (
61
+ By.ID,
62
+ "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_NCCAddressLookup_txtHouse",
63
+ )
64
+ )
53
65
  )
54
- inputElement_pc = driver.find_element(
55
- By.ID,
56
- "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_NCCAddressLookup_txtPostcode",
66
+
67
+ # Wait for and find postcode input
68
+ inputElement_pc = wait.until(
69
+ EC.presence_of_element_located(
70
+ (
71
+ By.ID,
72
+ "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_NCCAddressLookup_txtPostcode",
73
+ )
74
+ )
57
75
  )
58
76
 
77
+ # Enter details
59
78
  inputElement_pc.send_keys(user_postcode)
60
79
  inputElement_hn.send_keys(user_paon)
61
80
 
62
- driver.find_element(
63
- By.ID,
64
- "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_NCCAddressLookup_butLookup",
65
- ).click()
81
+ # Click lookup button and wait for results
82
+ lookup_button = wait.until(
83
+ EC.element_to_be_clickable(
84
+ (
85
+ By.ID,
86
+ "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_NCCAddressLookup_butLookup",
87
+ )
88
+ )
89
+ )
90
+ lookup_button.click()
91
+
92
+ # Wait for results to load
93
+ route_summary = wait.until(
94
+ EC.presence_of_element_located(
95
+ (
96
+ By.ID,
97
+ "p_lt_ctl04_pageplaceholder_p_lt_ctl02_WasteCollectionCalendars_spanRouteSummary",
98
+ )
99
+ )
100
+ )
66
101
 
102
+ # Get page source after everything has loaded
67
103
  soup = BeautifulSoup(driver.page_source, features="html.parser")
68
104
 
69
105
  # Work out which bins can be collected for this address. Glass bins are only on some houses due to pilot programme.
@@ -1,12 +1,29 @@
1
- import time
2
-
1
+ from typing import Dict, List, Any, Optional
2
+ from bs4 import BeautifulSoup
3
+ from dateutil.relativedelta import relativedelta
3
4
  import requests
4
-
5
+ import logging
6
+ import re
7
+ from datetime import datetime
5
8
  from uk_bin_collection.uk_bin_collection.common import *
9
+ from dateutil.parser import parse
10
+
11
+ from uk_bin_collection.uk_bin_collection.common import check_uprn, check_postcode
6
12
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
7
13
 
8
14
 
9
- # import the wonderful Beautiful Soup and the URL grabber
15
+ def get_token(page) -> str:
16
+ """
17
+ Get a __token to include in the form data
18
+ :param page: Page html
19
+ :return: Form __token
20
+ """
21
+ soup = BeautifulSoup(page.text, features="html.parser")
22
+ soup.prettify()
23
+ token = soup.find("input", {"name": "__token"}).get("value")
24
+ return token
25
+
26
+
10
27
  class CouncilClass(AbstractGetBinDataClass):
11
28
  """
12
29
  Concrete classes have to implement all abstract operations of the
@@ -14,70 +31,103 @@ class CouncilClass(AbstractGetBinDataClass):
14
31
  implementation.
15
32
  """
16
33
 
17
- def parse_data(self, page: str, **kwargs) -> dict:
34
+ def get_data(self, url: str) -> str:
35
+ """This method makes the request to the council
18
36
 
19
- user_uprn = kwargs.get("uprn")
20
- check_uprn(user_uprn)
21
- bindata = {"bins": []}
37
+ Keyword arguments:
38
+ url -- the url to get the data from
39
+ """
40
+ # Set a user agent so we look like a browser ;-)
41
+ user_agent = (
42
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
43
+ "Chrome/108.0.0.0 Safari/537.36"
44
+ )
45
+ headers = {"User-Agent": user_agent}
46
+ requests.packages.urllib3.disable_warnings()
22
47
 
23
- SESSION_URL = "https://southribble-ss.achieveservice.com/authapi/isauthenticated?uri=https%253A%252F%252Fsouthribble-ss.achieveservice.com%252FAchieveForms%252F%253Fmode%253Dfill%2526form_uri%253Dsandbox-publish%25253A%252F%252FAF-Process-d3971054-2e93-4a74-8375-494347dd13fd%252FAF-Stage-2693df73-8a5f-4e24-86b8-456ef81dd4a1%252Fdefinition.json%2526process%253D1%2526process_uri%253Dsandbox-processes%25253A%252F%252FAF-Process-d3971054-2e93-4a74-8375-494347dd13fd%2526process_id%253DAF-Process-d3971054-2e93-4a74-8375-494347dd13fd%2526accept%253Dyes%2526consentMessageIds%25255B%25255D%253D3%2526accept%253Dyes%2526consentMessageIds%255B%255D%253D3&hostname=southribble-ss.achieveservice.com&withCredentials=true"
48
+ # Make the Request - change the URL - find out your property number
49
+ try:
50
+ session = requests.Session()
51
+ session.headers.update(headers)
52
+ full_page = session.get(url)
53
+ return full_page
54
+ except requests.exceptions.HTTPError as errh:
55
+ logging.error(f"Http Error: {errh}")
56
+ raise
57
+ except requests.exceptions.ConnectionError as errc:
58
+ logging.error(f"Error Connecting: {errc}")
59
+ raise
60
+ except requests.exceptions.Timeout as errt:
61
+ logging.error(f"Timeout Error: {errt}")
62
+ raise
63
+ except requests.exceptions.RequestException as err:
64
+ logging.error(f"Oops: Something Else {err}")
65
+ raise
24
66
 
25
- API_URL = "https://southribble-ss.achieveservice.com/apibroker/runLookup"
67
+ def parse_data(self, page: str, **kwargs: Any) -> Dict[str, List[Dict[str, str]]]:
68
+ uprn: Optional[str] = kwargs.get("uprn")
69
+ postcode: Optional[str] = kwargs.get("postcode")
26
70
 
27
- data = {
28
- "formValues": {
29
- "Your Collections": {
30
- "PickupDate": {"value": datetime.now().strftime("%Y-%m-%d")},
31
- },
32
- "Your details": {
33
- "LLPGUPRN": {"value": user_uprn},
34
- },
35
- },
36
- }
71
+ if uprn is None:
72
+ raise ValueError("UPRN is required and must be a non-empty string.")
73
+ if postcode is None:
74
+ raise ValueError("Postcode is required and must be a non-empty string.")
37
75
 
38
- headers = {
39
- "Content-Type": "application/json",
40
- "Accept": "application/json",
41
- "User-Agent": "Mozilla/5.0",
42
- "X-Requested-With": "XMLHttpRequest",
43
- "Referer": "https://southribble-ss.achieveservice.com/fillform/?iframe_id=fillform-frame-1&db_id=",
44
- }
45
- s = requests.session()
46
- r = s.get(SESSION_URL)
47
- r.raise_for_status()
48
- session_data = r.json()
49
- sid = session_data["auth-session"]
50
- params = {
51
- "id": "58ab44ef078bd",
52
- "repeat_against": "",
53
- "noRetry": "false",
54
- "getOnlyTokens": "undefined",
55
- "log_id": "",
56
- "app_name": "AF-Renderer::Self",
57
- # unix_timestamp
58
- "_": str(int(time.time() * 1000)),
59
- "sid": sid,
76
+ check_uprn(uprn)
77
+ check_postcode(postcode)
78
+
79
+ values = {
80
+ "__token": get_token(page),
81
+ "page": "491",
82
+ "locale": "en_GB",
83
+ "q1f8ccce1d1e2f58649b4069712be6879a839233f_0_0": postcode,
84
+ "q1f8ccce1d1e2f58649b4069712be6879a839233f_1_0": uprn,
85
+ "next": "Next",
60
86
  }
61
- r = s.post(API_URL, json=data, headers=headers, params=params)
62
- r.raise_for_status()
63
- data = r.json()
64
- rows_data = data["integration"]["transformed"]["rows_data"]["0"]
65
- if not isinstance(rows_data, dict):
66
- raise ValueError("Invalid data returned from API")
67
- BIN_TYPES = [
68
- ("RCNextCollectionDate", "Household Waste (Non-Recyclable Waste)"),
69
- ("RENextCollectionDate", "Blue/Green Recyclable Waste"),
70
- ("GWNextCollectionDate", "Garden Waste Collection"),
71
- ("FWNextCollectionDate", "Food Waste"),
72
- ]
73
- bin_type_dict = dict(BIN_TYPES)
74
-
75
- for row in rows_data.items():
76
- if row[0].endswith("NextCollectionDate"):
77
- if row[1]:
78
- bin_type = bin_type_dict.get(row[0], row[0])
79
- collection_date = row[1]
80
- dict_data = {"type": bin_type, "collectionDate": collection_date}
81
- bindata["bins"].append(dict_data)
82
-
83
- return bindata
87
+ headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"}
88
+ requests.packages.urllib3.disable_warnings()
89
+ response = requests.request(
90
+ "POST",
91
+ "https://forms.chorleysouthribble.gov.uk/xfp/form/70",
92
+ headers=headers,
93
+ data=values,
94
+ )
95
+
96
+ soup = BeautifulSoup(response.text, features="html.parser")
97
+
98
+ rows = soup.find("table").find_all("tr")
99
+
100
+ # Form a JSON wrapper
101
+ data: Dict[str, List[Dict[str, str]]] = {"bins": []}
102
+
103
+ # Loops the Rows
104
+ for row in rows:
105
+ cells = row.find_all("td")
106
+ if cells:
107
+ bin_type = cells[0].get_text(strip=True)
108
+ collection_next = cells[1].get_text(strip=True)
109
+
110
+ collection_date = re.findall(r"\(.*?\)", collection_next)
111
+
112
+ if len(collection_date) != 1:
113
+ continue
114
+
115
+ collection_date_obj = parse(
116
+ re.sub(r"[()]", "", collection_date[0])
117
+ ).date()
118
+
119
+ # since we only have the next collection day, if the parsed date is in the past,
120
+ # assume the day is instead next month
121
+ if collection_date_obj < datetime.now().date():
122
+ collection_date_obj += relativedelta(months=1)
123
+
124
+ # Make each Bin element in the JSON
125
+ dict_data = {
126
+ "type": bin_type,
127
+ "collectionDate": collection_date_obj.strftime(date_format),
128
+ }
129
+
130
+ # Add data to the main JSON Wrapper
131
+ data["bins"].append(dict_data)
132
+
133
+ return data
@@ -54,14 +54,19 @@ class CouncilClass(AbstractGetBinDataClass):
54
54
  bin_type = bin_types.get(
55
55
  item.find_next("Bin").text.replace("EMPTY BINS", "").strip()
56
56
  )
57
- bin_date = datetime.strptime(
58
- item.find_next("DateTime").text, "%d/%m/%Y %H:%M:%S"
59
- )
57
+ date_text = item.find_next("DateTime").text.strip()
58
+
59
+ # Handle inconsistent date formats
60
+ if " " in date_text: # Date and time present
61
+ bin_date = datetime.strptime(date_text, "%d/%m/%Y %H:%M:%S")
62
+ else: # Only date present
63
+ bin_date = datetime.strptime(date_text, "%d/%m/%Y")
64
+
60
65
  if bin_date >= datetime.now():
61
66
  collections.append((bin_type, bin_date))
62
- except:
67
+ except Exception as e:
63
68
  raise SystemError(
64
- "Error has been encountered parsing API. Please try again later and if the issue "
69
+ f"Error has been encountered parsing API: {e}. Please try again later and if the issue "
65
70
  "persists, open a GitHub ticket!"
66
71
  )
67
72
 
@@ -1,5 +1,3 @@
1
- # This script pulls bin collection data from Barking and Dagenham Council
2
- # Example URL: https://www.lbbd.gov.uk/rubbish-recycling/household-bin-collection/check-your-bin-collection-days
3
1
  import time
4
2
 
5
3
  from bs4 import BeautifulSoup
@@ -39,7 +37,7 @@ class CouncilClass(AbstractGetBinDataClass):
39
37
 
40
38
  driver = create_webdriver(web_driver, headless, None, __name__)
41
39
  print(f"Navigating to URL: {url}")
42
- driver.get(url)
40
+ driver.get("https://www.torbay.gov.uk/recycling/bin-collections/")
43
41
  print("Successfully loaded the page")
44
42
 
45
43
  driver.maximize_window()
@@ -21,6 +21,9 @@ class CouncilClass(AbstractGetBinDataClass):
21
21
  )
22
22
  driver.get(kwargs.get("url"))
23
23
 
24
+ # This URL format also works:
25
+ # https://www.wakefield.gov.uk/where-i-live?a=115%20Elizabeth%20Drive
26
+
24
27
  # Make a BS4 object
25
28
  soup = BeautifulSoup(driver.page_source, features="html.parser")
26
29
  soup.prettify()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uk_bin_collection
3
- Version: 0.152.0
3
+ Version: 0.152.1
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -7,7 +7,7 @@ uk_bin_collection/tests/council_feature_input_parity.py,sha256=DO6Mk4ImYgM5ZCZ-c
7
7
  uk_bin_collection/tests/features/environment.py,sha256=VQZjJdJI_kZn08M0j5cUgvKT4k3iTw8icJge1DGOkoA,127
8
8
  uk_bin_collection/tests/features/validate_council_outputs.feature,sha256=SJK-Vc737hrf03tssxxbeg_JIvAH-ddB8f6gU1LTbuQ,251
9
9
  uk_bin_collection/tests/generate_map_test_results.py,sha256=CKnGK2ZgiSXomRGkomX90DitgMP-X7wkHhyKORDcL2E,1144
10
- uk_bin_collection/tests/input.json,sha256=pwAeJYV_DJ4zMkXDYolTi5e-v9g_0gd-AMv_VCeJsyE,133191
10
+ uk_bin_collection/tests/input.json,sha256=f8Jq_9vzVy3LFAZJ1nRZSwmJ34lOhqG53ee0_LJu5HI,132470
11
11
  uk_bin_collection/tests/output.schema,sha256=ZwKQBwYyTDEM4G2hJwfLUVM-5v1vKRvRK9W9SS1sd18,1086
12
12
  uk_bin_collection/tests/step_defs/step_helpers/file_handler.py,sha256=Ygzi4V0S1MIHqbdstUlIqtRIwnynvhu4UtpweJ6-5N8,1474
13
13
  uk_bin_collection/tests/step_defs/test_validate_council.py,sha256=VZ0a81sioJULD7syAYHjvK_-nT_Rd36tUyzPetSA0gk,3475
@@ -19,7 +19,7 @@ uk_bin_collection/uk_bin_collection/collect_data.py,sha256=dB7wWXsJX4fm5bIf84lex
19
19
  uk_bin_collection/uk_bin_collection/common.py,sha256=izotgwavB08pUWisNL3wqcBrE9E1-bdrq-v6YKyriDE,11034
20
20
  uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py,sha256=Je8VwVLK9KnYl9vqf2gWJ7ZYDgUq3A7caDiIzk5Xof8,4194
21
21
  uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py,sha256=aO1CSdyqa8oAD0fB79y1Q9bikAWCP_JFa7CsyTa2j9s,1655
22
- uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py,sha256=ppbrmm-MzB1wOulK--CU_0j4P-djNf3ozMhHnmQFqLo,1511
22
+ uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py,sha256=mLbfq8a2jilFfnNs0ujj49V8to2bNERgJp_4Ugbro-g,3418
23
23
  uk_bin_collection/uk_bin_collection/councils/AmberValleyBoroughCouncil.py,sha256=mTeluIIEcuxLxhfDQ95A1fp8RM6AkJT5tRGZPUbYGdk,1853
24
24
  uk_bin_collection/uk_bin_collection/councils/AngusCouncil.py,sha256=YlhAnxkRAAvrwbUvleNKUuLROcwMTps2eMHElpuctm4,5894
25
25
  uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py,sha256=Hp5pteaC5RjL5ZqPZ564S9WQ6ZTKLMO6Dl_fxip2TUc,1653
@@ -41,7 +41,7 @@ uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py,
41
41
  uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py,sha256=CvGB7w9HMn7XyEtwfd9MWZE_HlZ75pDcaKMsQJz0xhk,1669
42
42
  uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py,sha256=U1HOr9YLMAlFoZysfw5n04E0bVuCliO5Yj1FMiiwcHA,2549
43
43
  uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py,sha256=SGOv9mm3fByyR3TQDyNcSLeidX_7FlHelkxnh-NUTcY,4327
44
- uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py,sha256=wqqCQZzu_q_pJrxTTlTrGGDgPB5EYgd4RiBy7nKnSHc,5835
44
+ uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py,sha256=WXrrlMYxvYWtKUiLV6ZxJy4RRCIr1CCETfrJTdq3faQ,5306
45
45
  uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py,sha256=now2xgpfshYM33UWC18j6xa6BuBydO5Sl7OrDQOo6b0,4687
46
46
  uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py,sha256=xqWkQz3HDLkP5TgxQqVJziHJF2yl-q9PcV3Rv-38xDU,1941
47
47
  uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py,sha256=ZLA2V3qPsJTom7SeQdGDhF4tJSfgIV5Qi202QvGKJZ0,4477
@@ -72,15 +72,15 @@ uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py,sha256=_k3sT_WR-g
72
72
  uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py,sha256=viiZprMos_qcD44dki5_RRVZgGE4cH4zSHAzYRKrjHw,1864
73
73
  uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py,sha256=AjxuIqKxx0tYHMaTBITXTcnN2L-Zrx78uwUkqTjI0xU,3599
74
74
  uk_bin_collection/uk_bin_collection/councils/CeredigionCountyCouncil.py,sha256=np9iLnMVWpMYUiHZ4sJaSaU5pOWfmiCLQ8TIrOlY48o,5924
75
- uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py,sha256=tXfzMetN6wxahuGGRp2mIyCCDSL4F2aG61HhUxw6COQ,2172
75
+ uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py,sha256=FC8jftZFfMnqV-Of_eQAYBcUiCIJDSNFO2DMZbtDy6E,2569
76
76
  uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py,sha256=EB88D0MNJwuDZ2GX1ENc5maGYx17mnHTCtNl6s-v11E,5090
77
- uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py,sha256=B7OgyFKlbvu8SowAALLI8j2EnKlmbXEj65XtB27rCWI,16357
77
+ uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py,sha256=bGxfMO4PpTd6ZTfm1hA9tmNUFDKGt20CMJolZ3K_CeM,16411
78
78
  uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py,sha256=VxTe9qk93MFgtELEgVrEz3W0vYaG_32EpPmky_b4j0k,2590
79
- uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py,sha256=I7Dj8LzG-Q4yrJ99jLRIwKwW5WQ9he8UksvF_YPzTxI,1681
79
+ uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py,sha256=wGklkIdrhcS8OH9QjrMnyjsrUzNr3Nb1WE0oacgEr78,2496
80
80
  uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py,sha256=5mKZf22NgdyBY-SqV0c2q8b8IJobkoZrsfGEVUcxUyM,3544
81
81
  uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py,sha256=mZiM8Ugm_OP0JkC5pLaQmi4i79mAp4SNNrcIdsREjHw,7198
82
82
  uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py,sha256=bvtqXSZN64jSND0NxwzJ-WA9H49FwARQMGS3PlUSiUg,6311
83
- uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py,sha256=M7HjuUaFq8aSnOf_9m1QS4MmPPMmPhF3mLHSrfDPtV0,5194
83
+ uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py,sha256=JDp0BQIeyERsXdCgZQ4E8dR0E6yeq42DY0Q0yxYOSvo,5336
84
84
  uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py,sha256=Mny-q2rQkWe2Tj1gINwEM1L4AkqQl1EDMAaKY0-deD4,3968
85
85
  uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py,sha256=QcFHTzW7Q1jYyHWq6thpA6fhO8w38eCOpUPk9EfjGIA,1291
86
86
  uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py,sha256=JDtcJFUY47a3Ws4_7pnCYlngw_3p_A-m5MitPLdrv3w,3983
@@ -88,24 +88,24 @@ uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py,sha256=6zHe_Qu-R
88
88
  uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py,sha256=85MPd1idsil3F-0Y6RQGMHKEcP9VS-z9B8l8ITK4BUU,4854
89
89
  uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py,sha256=YjVSEGxuu92-hcfLtNjzh98To_HSiTfjrfZHF3DHChg,2085
90
90
  uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py,sha256=Oaj5INA3zNjtzBRsfLvRTIxZzcd4E4bJfVF1ULWlrL4,4322
91
- uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py,sha256=Vxh5ICoaXTAvx0nDOq_95XQ4He9sQKcLdI5keV2uxM4,11384
91
+ uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py,sha256=s6zTA-A4lHTkJrB5hEtgsXsMXIX6NNUM8kDP_kVAWj4,5475
92
92
  uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py,sha256=bPOmkyzNnHrOtUprbouHdOsgpu7WilUADcaccWTCPFI,2839
93
93
  uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py,sha256=hM0SUXW4k_queqVH0hEx-dmuBHQs0Ds1LEjlsJ8EiCY,3231
94
94
  uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py,sha256=Tm_6pvBPj-6qStbe6-02LXaoCOlnnDvVXAAocGVvf_E,3970
95
- uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py,sha256=SPirUUoweMwX5Txtsr0ocdcFtKxCQ9LhzTTJN20tM4w,1550
95
+ uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py,sha256=3vuXYhoK3ZkFGtxIDJXCTeY8_kbaXDcKn0C2yk5g1kI,2056
96
96
  uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py,sha256=FtG0LMTY21RBQiBpeX4FihdMCEZ1knpARYyMfyCn9ng,2103
97
97
  uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py,sha256=M8FGLhZn9wdRCq1W6z_yqJQqeba3EKyba3vhM22MzB4,1883
98
98
  uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py,sha256=ZFmDeVINbBk2UlZtuOpNkdLmWgkMSumEMMp4WacIiwA,4111
99
99
  uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py,sha256=b7pxoToXu6dBBYXsXmlwfPXE8BjHxt0hjCOBNlNgvX8,3118
100
100
  uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py,sha256=XUWH5BzkjPSFBLczo-Vo-Wly2JMoabm9WtI6_Mf-pO4,1523
101
- uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py,sha256=3Zgap6kaVpDXtRfBKEL1Ms6eb0iFIipYKNtOq3Hrdd4,1891
101
+ uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py,sha256=1M2BU-DTwJXBXI8oWf3qLwmGuqeACv8jhxJxy5202AE,2404
102
102
  uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py,sha256=tDGfBWD5AVEzHt-XowD4qmmDcdlOLKC0oON8jkARRAI,3134
103
103
  uk_bin_collection/uk_bin_collection/councils/DundeeCityCouncil.py,sha256=CzzPZ3FJW36ojW3wHIwEYXhMP1LlTKBJQEpnrLr5Lds,1285
104
104
  uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py,sha256=6O8bNsQVYQbrCYQE9Rp0c_rtkcXuxR3s9J6jn4MK4_s,1695
105
105
  uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py,sha256=UhNXGi-_6NYZu50988VEvOzmAVunxOoyJ6mz0OEaUz4,1321
106
106
  uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py,sha256=i3AcWkeAnk7rD59nOm0QCSH7AggqjUAdwsXuSIC8ZJE,1614
107
107
  uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py,sha256=aYUVE5QqTxdj8FHhCB4EiFVDJahWJD9Pq0d1upBEvXg,1501
108
- uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py,sha256=U0VwSNIldMv5nUoiXtFgjbE0m6Kb-8W2WZQGVCNF_WI,3261
108
+ uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py,sha256=5aZ4C2t-RBuygtqTRdcpGutjqJ2udrpKbW4F8RQ9r3M,3825
109
109
  uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py,sha256=FsHfejTGPjRUByDz157690LTD8JpqGplD_XVb7pTe3A,4862
110
110
  uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py,sha256=Laf-j0LLr7M4xmKhk8kjPNTtt66oXKYWm0ppxdUX3F0,4326
111
111
  uk_bin_collection/uk_bin_collection/councils/EastLothianCouncil.py,sha256=zTp-GDWYeUIlFaqfkqGvo7XMtxJd0VbxdGgqaAwRACk,2792
@@ -113,12 +113,13 @@ uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py,sha256=5
113
113
  uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py,sha256=oL-NqriLVy_NChGASNh8qTqeakLn4iP_XzoMC6VlPGM,5216
114
114
  uk_bin_collection/uk_bin_collection/councils/EastStaffordshireBoroughCouncil.py,sha256=s13zlAN9Rac-RVHNFLIjIY0X8C6sPTNS37EL2t6vXw8,3692
115
115
  uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py,sha256=qQ0oOfGd0sWcczse_B22YoeL9uj3og8v3UJLt_Sx29c,4353
116
- uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py,sha256=V4Vso4DvawFiezKlmXbTlJEK9Sjhz9nA8WeYjwtO2e4,2310
116
+ uk_bin_collection/uk_bin_collection/councils/EastbourneBoroughCouncil.py,sha256=t2-Ri58feN4BHZ-yZx83QjmWuxlCkF7iu9UvXJ2rVp8,2669
117
+ uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py,sha256=45oT8K8OoTx47FVHYqSl5sw8b-NQj8PJ11ugZTgf4Bg,3171
117
118
  uk_bin_collection/uk_bin_collection/councils/EdinburghCityCouncil.py,sha256=YRjNgevnCxfaAIU8BV9dkqG17NiT6S-hp7l-1rdLVgQ,3150
118
119
  uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py,sha256=TgBOaReHWBbm0avV7HqRf0x7cxDe9cacTUcP9TFFprs,3005
119
120
  uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py,sha256=2yR5p-kdApOm1gHiynNECP0jQDvaYHOiT6MAQJAvunE,6144
120
- uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py,sha256=R0Y94nEn2G4JgzJ3PKkUXP6a0fPpjaunpRxbfMLKT4s,2135
121
- uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py,sha256=cKFllQ4zt6MGkwiz_HedZvw3iL1kRMLA6Ct2spUE5og,2085
121
+ uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py,sha256=-9RvlEXawdLT5qgfoKCwHmLXPfkGV25vdr67H5j15Ho,2185
122
+ uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py,sha256=9P6nahJSBPaFwsJUsqXQ87cG4kuhqCdcI2qCjw606fo,3336
122
123
  uk_bin_collection/uk_bin_collection/councils/EpsomandEwellBoroughCouncil.py,sha256=B0uxaXeiWZfy07X1UDiM_CfAXPZguE8xqlZV-2KeaHo,2831
123
124
  uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py,sha256=QTQA6NjZtTL2baDeerIQW1SQpawwu6kGDMGdVvYQRRo,2501
124
125
  uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py,sha256=FPNyBuQFYGFECZfCemgeHr27bXJFVvadinw43h-G8qs,1623
@@ -133,12 +134,12 @@ uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py,sha2
133
134
  uk_bin_collection/uk_bin_collection/councils/FyldeCouncil.py,sha256=XkiOx-RAykEB75U2R_u69sKov9r5OMZgnZI61vHnN9Y,3026
134
135
  uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py,sha256=SRCgYhYs6rv_8C1UEDVORHZgXxcJkoZBjzdYS4Lu-ew,4531
135
136
  uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py,sha256=XzfFMCwclh9zAJgsbaj4jywjdiH0wPaFicaVsLrN3ms,2297
136
- uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py,sha256=9Rk9KfcglJvRhh4373OfRX-fwywE2xgwx5KejqzV5fE,3399
137
+ uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py,sha256=Ox1MeK583PJLVwst5GKqXeGoPeMO_iMVWsxLB7qt0zE,3964
137
138
  uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=67D8rbhn0t4rsCSJRTXZVtHmph2wT6rJiexNWKOnMok,4625
138
139
  uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py,sha256=1YLxRgiAyOi6ekPYUMJ_F8dKsx62lAeOi1NmT47E8zo,1216
139
140
  uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py,sha256=ueQ9xFiTxMUBTGV9VjtySHA1EFWliTM0AeNePBIG9ho,4568
140
141
  uk_bin_collection/uk_bin_collection/councils/GreatYarmouthBoroughCouncil.py,sha256=eEbelGZz_L9KhiBGWr-LqesDvsuwfBdHH8gHMaizRWc,5465
141
- uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py,sha256=9pVrmQhZcK2AD8gX8mNvP--L4L9KaY6L3B822VX6fec,5695
142
+ uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py,sha256=MjoYiW9qIF4KOepYAVoaYhbeXxKtZJJljKXEc2nSeww,5657
142
143
  uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py,sha256=eK2KkY1NbIxVtBruQYSNPA0J7fuzMik5it02dFbKYV0,1855
143
144
  uk_bin_collection/uk_bin_collection/councils/HackneyCouncil.py,sha256=vO3ugk5fcdkYTslXNKmpJC84-ZHqrdFqW8zfX7TSiTQ,3104
144
145
  uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py,sha256=gq_CPqi6qM2oNiHhKKF1lZC86fyKL4lPhh_DN9pJZ04,5971
@@ -148,7 +149,7 @@ uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py,sha256=a
148
149
  uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py,sha256=_llxT4JYYlwm20ZtS3fXwtDs6mwJyLTZBP2wBhvEpWk,2342
149
150
  uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py,sha256=MUT1A24iZShT2p55rXEvgYwGUuw3W05Z4ZQAveehv-s,2842
150
151
  uk_bin_collection/uk_bin_collection/councils/HastingsBoroughCouncil.py,sha256=9MCuit4awXSZTbZCXWBsQGX2tp2mHZ1eP1wENZdMvgA,1806
151
- uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py,sha256=JpQhkWM6Jeuzf1W7r0HqvtVnEqNi18nhwJX70YucdsI,1848
152
+ uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py,sha256=2fS_KfNiffXZdoqjJJhdYupajbpwN79Vit-BTv3WTXI,2363
152
153
  uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py,sha256=ZbSsmqHStd2JtTMAq1Bhcvsj1BYp6ijELyOjZFX2GSw,6435
153
154
  uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py,sha256=x7dfy8mdt2iGl8qJxHb-uBh4u0knmi9MJ6irOJw9WYA,4805
154
155
  uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py,sha256=GNxDU65QuZHV5va2IrKtcJ6TQoDdwmV03JvkVqOauP4,3291
@@ -156,7 +157,7 @@ uk_bin_collection/uk_bin_collection/councils/Hillingdon.py,sha256=2OUp0iYO1YeZuT
156
157
  uk_bin_collection/uk_bin_collection/councils/HinckleyandBosworthBoroughCouncil.py,sha256=51vXTKrstfJhb7cLCcrsvA9qKCsptyNMZvy7ML9DasM,2344
157
158
  uk_bin_collection/uk_bin_collection/councils/HorshamDistrictCouncil.py,sha256=U8WelJiHivT7CS3meUVcLURWOLRKes1pKZ81tcqKarM,4446
158
159
  uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py,sha256=UHcesBoctFVcXDYuwfag43KbcJcopkEDzJ-54NxtK0Q,1851
159
- uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py,sha256=dGyhhG6HRjQ2SPeiRwUPTGlk9dPIslagV2k0GjEOn1s,1587
160
+ uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py,sha256=TXDIlVvYMwWECiXXBmzUjm36L5Pmn3GHciUuRaKmfF0,2059
160
161
  uk_bin_collection/uk_bin_collection/councils/HyndburnBoroughCouncil.py,sha256=_lJ__EMcUBbE4QZvH-c1nCGeKxZTn5hhcpjVAYBbJZc,5403
161
162
  uk_bin_collection/uk_bin_collection/councils/IpswichBoroughCouncil.py,sha256=57lmDl_FprG68gUhKQYpOa1M2pudyb1utfoMhUXNwzs,2802
162
163
  uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py,sha256=xavzL6ZIU9DG8Xro3vN0CEnYmNU31OGnOvnq78wgpQc,1258
@@ -167,10 +168,11 @@ uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py,sha256=PDC907d
167
168
  uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py,sha256=FmHT6oyD4BwWuhxA80PHnGA7HPrLuyjP_54Cg8hT6k4,2537
168
169
  uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py,sha256=VWdhw6qvCTj3EhFHf046xPWgc6szeFW2Xbt6W2J0e6w,4371
169
170
  uk_bin_collection/uk_bin_collection/councils/LeicesterCityCouncil.py,sha256=o3kE8sjThQa4_AvSK5NH8VH7jWFO9MMPgoqLOTjyh0w,1851
171
+ uk_bin_collection/uk_bin_collection/councils/LewesDistrictCouncil.py,sha256=WZAxQ6TOGqQYYsRiL5SdzKdRA4k3GH5ygbKnau5KtDA,2658
170
172
  uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py,sha256=l3zgTWuKOW8fgb8PmXv0OTI6HaiGBPndefNQk8MM4oY,1810
171
173
  uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py,sha256=aUCqjHuk0sLtx83a-2agcLIMgEbfqjltXRCBRXT9J-8,3733
172
174
  uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py,sha256=vSOzdEwp9ZeUhed7E3eVv9ReD-2XgbSkpyAbVnfc-Gk,3309
173
- uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py,sha256=n17OqZrCGrPrnxGUfHc-RGkb4oJ9Bx6uUWiLdzxfQlY,2587
175
+ uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py,sha256=qo02eDHHSFSCN7xqKjLoKNZo-RjZPSUy3TVyJNpfg2Q,3069
174
176
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py,sha256=QDx2Izr-6hUSFMi4UWqsgo3p6U8aRZ9d_Cu9cBSp2rY,1653
175
177
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py,sha256=kzKwbjDBCbJXF6JdvTZWdXK0fpZxuH1CQF9GGyVMAus,1408
176
178
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py,sha256=6DNX6IShdoEG4FjoyrzrY_HLEu9R2Bgl6PN0bSCbhow,2436
@@ -181,7 +183,7 @@ uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.p
181
183
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py,sha256=A_6Sis5hsF53Th04KeadHRasGbpAm6aoaWJ6X8eC4Y8,6604
182
184
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py,sha256=T0gCjpBQ9k3uNNIiJGphNiSXeh2n6bohflg9RwbL3NA,2565
183
185
  uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py,sha256=vScUi_R8FnBddii2_zLlZBLxuh85mKmCm8nKW3zxky0,2758
184
- uk_bin_collection/uk_bin_collection/councils/MaidstoneBoroughCouncil.py,sha256=1YZIliUEX3_gaNJDbdCybxNPwkSz0A58gDAl9kSIHsE,4439
186
+ uk_bin_collection/uk_bin_collection/councils/MaidstoneBoroughCouncil.py,sha256=T9R1_ciKitxGhGUcNu2UnSZszvUBuLVKReRA1rIlRIg,4280
185
187
  uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py,sha256=PMVt2XFggttPmbWyrBrHJ-W6R_6-0ux1BkY1kj1IKzg,1997
186
188
  uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py,sha256=iQG0EkX2npBicvsGKQRYyBGSBvKVUbKvUvvwrC9xV1A,2100
187
189
  uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py,sha256=RY301_82z3-xInGai5ocT7rzoV75ATbf0N7uxn8Z9LE,3110
@@ -205,7 +207,7 @@ uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py,sha256=Vdmv_p75
205
207
  uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py,sha256=lAleYfCGUWCKOi7Ye_cjgfpI3pWwTcFctlYmh0hjebM,2140
206
208
  uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py,sha256=eJMX10CG9QO7FRhHSmUDL-jO_44qoK3_1ztNTAXhkbw,2085
207
209
  uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py,sha256=t150wPtF2eEFYNTVj2EnhXt6JJJRiEX8976bh9JBXlg,2328
208
- uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py,sha256=-UTgDseUtAGy1YPZ9zz6MbNeRoRCY6geBqnHzF14xrY,1934
210
+ uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py,sha256=zlkKm28E6zIRknAbyLeSd5LNeRctqlZ-2MIrAsdaqHg,2260
209
211
  uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py,sha256=dAcl5P97bttl2xCPvxof1a18kmqOrMmiElgtn3Ej7zs,8480
210
212
  uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py,sha256=o8zv40Wt19d51mrN5lsgLMCKMokMPmI1cMHBNT5yAho,1976
211
213
  uk_bin_collection/uk_bin_collection/councils/NorthDevonCountyCouncil.py,sha256=tgJKIvu7nnCAHu_HImfG5SQABD6ygKFqrZU-ZoC6ObY,6260
@@ -217,11 +219,11 @@ uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py,sha256=n
217
219
  uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py,sha256=kCT82SU-etoGBehoIbbzGw_XS2YHllTw7lCCbdQj7UE,2467
218
220
  uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py,sha256=VV_zqVZYv8ekXcUHhrBlTX_W5qLYE9IA3mT2xmrZqoI,4315
219
221
  uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py,sha256=kcMN-5GBjYDM9F1BKfHoYeydub8SuDxHamJbSvJRZ68,2337
220
- uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py,sha256=EbFVnPYZIOkru5_Y75kjljM3Cr3HIJgP-SU6hxgf6tk,2754
221
- uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py,sha256=MHfcSrfWBIiWwVnhOqUrOkr0Ahguu_oU4pHrv_vSa-Y,5929
222
+ uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py,sha256=RNfvvmsBCTJ4GpkvuueF6d9UdJOhp5zzlhzTg2bTO_M,2937
223
+ uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py,sha256=yqycVcGZ3oT0FOu7Dx6BzbO_VFRABdyjKBPF-uRlI2s,5929
222
224
  uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py,sha256=gJj0dyQc5QUefqusKGk2LLXfWbG5tlEXUOh8KAPh3RI,4584
223
225
  uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py,sha256=rwW6y5yhRiuYk3lVS7YFZxLaY_yfojdcn2dxiWaP4YA,2013
224
- uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py,sha256=CF9__v8xOUJ9Ukic9Yg9WnVUojV3Cv6_dHAHJzL6V3o,5106
226
+ uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py,sha256=7kCoBqLkt4UmLQNOnuC6jWrSgJLwavzgfJTR6EWINQU,6409
225
227
  uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py,sha256=hddZD4tv-fw52hvxTm2UjSvRP3MwGchzWZyuhNeNvp0,2970
226
228
  uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py,sha256=panTCjnsBOQ98-TBO9xVZk_jcT_gjMhx3Gg5oWxBRLo,1254
227
229
  uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py,sha256=PViXaBJ5SeP3inOnqf4PuPahzRCLN06n5Gicqyt3gbM,37781
@@ -269,7 +271,7 @@ uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py,sha
269
271
  uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py,sha256=fj-eZI0yrvQVCv8GvhcovZ3b9bV6Xv_ws3IunWjnv4U,3126
270
272
  uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py,sha256=C2qIZjjbl9JnuukX9OH2RbfP0hSdp3uX76APGY33qKs,4622
271
273
  uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py,sha256=f9d2YDGv5hnN7Ul-u_I63h_BbpBU7CJFdgv-lOviRGc,4031
272
- uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py,sha256=OdexbeiI5WsCfjlsnHjAce8oGF5fW-n7q2XOuxcpHzw,3604
274
+ uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py,sha256=QujJYORfiQmfBBUPt3Vnb0ryJy1XUiJtli-jLlUt5fs,4695
273
275
  uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py,sha256=ACQMHWyamnj1ag3gNF-8Jhp-DKUok1GhFdnzH4nCzwU,3201
274
276
  uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py,sha256=dxXGrJfg_fn2IPTBgq6Duwy0WY8GYLafMuisaCjOnbs,3426
275
277
  uk_bin_collection/uk_bin_collection/councils/SouthamptonCityCouncil.py,sha256=exNoI-Vun_C5FowCYhZ_600MBUe_OPR7MdGZEMNLL0I,1542
@@ -283,7 +285,7 @@ uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py,sha256=E
283
285
  uk_bin_collection/uk_bin_collection/councils/StirlingCouncil.py,sha256=QaUw5oP_mmFAXo98EdHhI6lWo4OjF2E8zY2M7HQo2bk,6308
284
286
  uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py,sha256=v0HmioNVRoU1-9OnLJl2V3M5pVR1aVu1BgOLHFR1Sf4,1429
285
287
  uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py,sha256=obaBgsmIJ95Ah7KaTNWdU107tZDPVuuJox0mGUoGjNk,6070
286
- uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py,sha256=KM0EgWeO7mk8lkozX0RCTfMchXdjrfBqIjCiOtB09aM,2884
288
+ uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py,sha256=XDOz4oQGr_4AYpvebc2_WxQPUBYUeptrervcVWK4Qok,3147
287
289
  uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py,sha256=DMTAcXT_lay8Cl1hBbzf_LN7-GwTDGxT3Ug9QJkaF9Y,3936
288
290
  uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py,sha256=Akx80Ve7D8RVdIW1vkWLYp80VrhL6Qc3dMMKnbFWUhY,3653
289
291
  uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py,sha256=Eyaer--n2JQmGNaEdDbOhgIIGA6mDu72N8ph2wPIZy4,4027
@@ -302,13 +304,13 @@ uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py,sha256=Cxr
302
304
  uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py,sha256=RHt3e9oeKzwxjjY-M8aC0nk-ZXhHIoyC81JzxkPVxsE,5531
303
305
  uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py,sha256=vAZMm6mcsdEcOkP15xwxWy9gdXpmLYQFH7qRifurNoY,2935
304
306
  uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py,sha256=UlgnHDoi8ecav2H5-HqKNDpqW1J3RN-c___5c08_Q7I,4859
305
- uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py,sha256=fpyr5f5x8JSsusdMaEH248HINPl6yQv14McD1-xLnqk,9269
307
+ uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py,sha256=wUrfKlEV-V7e2TLC3UELo4_4pxWGQxNfZsB0E0WiRvI,9133
306
308
  uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py,sha256=qyxzMFaQp4ymDsnvoySqmJonQ_MLo4jYBbKmREECur4,4777
307
309
  uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py,sha256=s8Nm9Ef-4561mEXPa0ylYHrXyYIulgCcNV2uAnrXyZk,2846
308
310
  uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py,sha256=GSELWbSn5jtznv6FSLIMxK6CyQ27MW9FoY_m5jhTEBA,4175
309
311
  uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py,sha256=dz3zDJsJKYYqUB-Gxf6twvP6kG_wyENaszxXxK4iJn0,5089
310
312
  uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py,sha256=fyskrQ4-osGOeCZuB_8m2TpW8iwHr7lpl52nrR06Xpo,4441
311
- uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py,sha256=mdAXKcoSSF-xnXS8boesFftS8RiKyuR76ITHQ9Q5DgM,4916
313
+ uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py,sha256=Vakjua_3KIfCyBmYRbUXocAzb-ua0yJNBvWJeLmQrsw,5041
312
314
  uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py,sha256=aniL34mc0ehLl5fDUi8Y_L_TK8HFoE605IJIarb5CSk,2363
313
315
  uk_bin_collection/uk_bin_collection/councils/WalthamForest.py,sha256=8Xoi9G8iXJi8uqnyNuqba37RwTqvuvMj9FZxi4NA-n4,4924
314
316
  uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py,sha256=aQoJpC7YkhKewQyZlsv5m4__2IPoKRsOrPxjNH5xRNo,2594
@@ -344,8 +346,8 @@ uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bId
344
346
  uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=QD4v4xpsEE0QheR_fGaNOIRMc2FatcUfKkkhAhseyVU,1159
345
347
  uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
346
348
  uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
347
- uk_bin_collection-0.152.0.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
348
- uk_bin_collection-0.152.0.dist-info/METADATA,sha256=2gnhvjy_Hu9moRYLw5s6ogGMDh1dYkitouNtc5DOOM4,20914
349
- uk_bin_collection-0.152.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
350
- uk_bin_collection-0.152.0.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
351
- uk_bin_collection-0.152.0.dist-info/RECORD,,
349
+ uk_bin_collection-0.152.1.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
350
+ uk_bin_collection-0.152.1.dist-info/METADATA,sha256=xnLFeqyv9EVCTF0Dlt3Sm4bkJvVr9LB-yljHL4f_xto,20914
351
+ uk_bin_collection-0.152.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
352
+ uk_bin_collection-0.152.1.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
353
+ uk_bin_collection-0.152.1.dist-info/RECORD,,