uk_bin_collection 0.151.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 (44) hide show
  1. uk_bin_collection/tests/input.json +137 -66
  2. uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +69 -24
  3. uk_bin_collection/uk_bin_collection/councils/AngusCouncil.py +149 -0
  4. uk_bin_collection/uk_bin_collection/councils/BarkingDagenham.py +11 -2
  5. uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +24 -47
  6. uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +11 -2
  7. uk_bin_collection/uk_bin_collection/councils/BroadlandDistrictCouncil.py +21 -6
  8. uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +14 -3
  9. uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py +12 -12
  10. uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +24 -2
  11. uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +105 -53
  12. uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +4 -0
  13. uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +114 -261
  14. uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +13 -0
  15. uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +17 -2
  16. uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +14 -1
  17. uk_bin_collection/uk_bin_collection/councils/EastbourneBoroughCouncil.py +76 -0
  18. uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +59 -45
  19. uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +2 -0
  20. uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +47 -15
  21. uk_bin_collection/uk_bin_collection/councils/FermanaghOmaghDistrictCouncil.py +102 -0
  22. uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +13 -1
  23. uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +2 -3
  24. uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py +13 -2
  25. uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +18 -4
  26. uk_bin_collection/uk_bin_collection/councils/LewesDistrictCouncil.py +76 -0
  27. uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +16 -4
  28. uk_bin_collection/uk_bin_collection/councils/MaidstoneBoroughCouncil.py +42 -47
  29. uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +13 -6
  30. uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +61 -39
  31. uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +14 -9
  32. uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +2 -2
  33. uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +50 -14
  34. uk_bin_collection/uk_bin_collection/councils/SloughBoroughCouncil.py +140 -0
  35. uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +115 -65
  36. uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +10 -5
  37. uk_bin_collection/uk_bin_collection/councils/TewkesburyBoroughCouncil.py +40 -0
  38. uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +1 -3
  39. uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +3 -0
  40. {uk_bin_collection-0.151.0.dist-info → uk_bin_collection-0.152.1.dist-info}/METADATA +1 -1
  41. {uk_bin_collection-0.151.0.dist-info → uk_bin_collection-0.152.1.dist-info}/RECORD +44 -38
  42. {uk_bin_collection-0.151.0.dist-info → uk_bin_collection-0.152.1.dist-info}/LICENSE +0 -0
  43. {uk_bin_collection-0.151.0.dist-info → uk_bin_collection-0.152.1.dist-info}/WHEEL +0 -0
  44. {uk_bin_collection-0.151.0.dist-info → uk_bin_collection-0.152.1.dist-info}/entry_points.txt +0 -0
@@ -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
 
@@ -0,0 +1,40 @@
1
+ import json
2
+ import requests
3
+ from datetime import datetime
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
+ class CouncilClass(AbstractGetBinDataClass):
9
+ def parse_data(self, page: str, **kwargs) -> dict:
10
+ user_uprn = kwargs.get("uprn")
11
+ check_uprn(user_uprn)
12
+
13
+ url = f"https://api-2.tewkesbury.gov.uk/incab/rounds/{user_uprn}/next-collection"
14
+ response = requests.get(url)
15
+ response.raise_for_status()
16
+
17
+ json_data = response.json()
18
+
19
+ data = {"bins": []}
20
+
21
+ if json_data.get("status") == "OK" and "body" in json_data:
22
+ for entry in json_data["body"]:
23
+ bin_type = entry.get("collectionType")
24
+ date_str = entry.get("NextCollection")
25
+
26
+ if bin_type and date_str:
27
+ try:
28
+ collection_date = datetime.strptime(date_str, "%Y-%m-%d")
29
+ data["bins"].append({
30
+ "type": bin_type,
31
+ "collectionDate": collection_date.strftime(date_format)
32
+ })
33
+ except ValueError:
34
+ continue
35
+
36
+ # Sort by date
37
+ data["bins"].sort(key=lambda x: x["collectionDate"])
38
+
39
+ print(json.dumps(data, indent=2))
40
+ return data
@@ -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.151.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=1E27u-92jfA9sMw0AzxCP-emvGQNq3GD8GWGbZjnPCQ,131840
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,8 +19,9 @@ 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
+ uk_bin_collection/uk_bin_collection/councils/AngusCouncil.py,sha256=YlhAnxkRAAvrwbUvleNKUuLROcwMTps2eMHElpuctm4,5894
24
25
  uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py,sha256=Hp5pteaC5RjL5ZqPZ564S9WQ6ZTKLMO6Dl_fxip2TUc,1653
25
26
  uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py,sha256=iMBldxNErgi-ok1o6xpqdNgMvR6qapaNqoTWDTqMeGo,3824
26
27
  uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py,sha256=NBeXjzv0bOblkS5xjSy5D0DdW9vtx_TGMLVP0FP1JqA,5073
@@ -31,7 +32,7 @@ uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py,sha256=kuL
31
32
  uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py,sha256=LouqjspEMt1TkOGqWHs2zkxwOETIy3n7p64uKIlAgUg,2401
32
33
  uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py,sha256=W7QBx6Mgso8RYosuXsaYo3GGNAu-tiyBSmuYxr1JSOU,1707
33
34
  uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py,sha256=1eXdST58xFRMdYl8AGNG_EwyQeLa31WSWUe882hQ2ec,6329
34
- uk_bin_collection/uk_bin_collection/councils/BarkingDagenham.py,sha256=8lYnRazbh_iOcmciSOJIhF44e8z3ZFlTZ0vnZKEfwJI,5973
35
+ uk_bin_collection/uk_bin_collection/councils/BarkingDagenham.py,sha256=fgbaD8jsUBJrnUWKbcjSdJHDVRAh9KRUsG6JwB31NYA,6263
35
36
  uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py,sha256=Sd4-pbv0QZsR7soxvXYqsfdOUIqZqS6notyoZthG77s,9182
36
37
  uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py,sha256=hqzVKEqwYmjcQjCYBletcCt9_pE96qQ3kn7eDroJeNk,4764
37
38
  uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py,sha256=NymPmq5pud0PJ8ePcc2r1SKED4EHQ0EY2l71O-Metxc,3313
@@ -40,7 +41,7 @@ uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py,
40
41
  uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py,sha256=CvGB7w9HMn7XyEtwfd9MWZE_HlZ75pDcaKMsQJz0xhk,1669
41
42
  uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py,sha256=U1HOr9YLMAlFoZysfw5n04E0bVuCliO5Yj1FMiiwcHA,2549
42
43
  uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py,sha256=SGOv9mm3fByyR3TQDyNcSLeidX_7FlHelkxnh-NUTcY,4327
43
- 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
44
45
  uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py,sha256=now2xgpfshYM33UWC18j6xa6BuBydO5Sl7OrDQOo6b0,4687
45
46
  uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py,sha256=xqWkQz3HDLkP5TgxQqVJziHJF2yl-q9PcV3Rv-38xDU,1941
46
47
  uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py,sha256=ZLA2V3qPsJTom7SeQdGDhF4tJSfgIV5Qi202QvGKJZ0,4477
@@ -53,9 +54,9 @@ uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py,sha256=BEWS2c62cOsf2
53
54
  uk_bin_collection/uk_bin_collection/councils/BraintreeDistrictCouncil.py,sha256=2vYHilpI8mSwC2Ykdr1gxYAN3excDWqF6AwtGbkwbTw,2441
54
55
  uk_bin_collection/uk_bin_collection/councils/BrecklandCouncil.py,sha256=PX6A_pDvaN109aSNWmEhm88GFKfkClIkmbwGURWvsks,1744
55
56
  uk_bin_collection/uk_bin_collection/councils/BrentCouncil.py,sha256=BsP7V0vezteX0WAxcxqMf3g6ro-J78W6hubefALRMyg,5222
56
- uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py,sha256=k6qt4cds-Ejd97Z-__pw2BYvGVbFdc9SUfF73PPrTNA,5823
57
+ uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py,sha256=trTCVrSwQ8EuKe30V1vShkkCSw5fEG1kg0DimnsZqdM,6133
57
58
  uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py,sha256=nQeRBKrDcZE2m_EzjUBr9dJ5tcUdGcUuA5FcnLkbLr4,5575
58
- uk_bin_collection/uk_bin_collection/councils/BroadlandDistrictCouncil.py,sha256=aelqhh503dx6O2EEmC3AT5tnY39Dc53qcouH8T-mek8,7613
59
+ uk_bin_collection/uk_bin_collection/councils/BroadlandDistrictCouncil.py,sha256=YhzP8zar_oSSkBOA3mdMAehnMTrcTBmGO0RfC4UBzvM,8236
59
60
  uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py,sha256=dii85JLmYU1uMidCEsWVo3stTcq_QqyC65DxG8u1UmE,4302
60
61
  uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py,sha256=PUfxP8j5Oh9wFHkdjbrJzQli9UzMHZzwrZ2hkThrvhI,1781
61
62
  uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py,sha256=mcRtkFc9g3YNN17OQfhzYJtNYeWrZPP_e7m7goEhz5I,3012
@@ -71,15 +72,15 @@ uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py,sha256=_k3sT_WR-g
71
72
  uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py,sha256=viiZprMos_qcD44dki5_RRVZgGE4cH4zSHAzYRKrjHw,1864
72
73
  uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py,sha256=AjxuIqKxx0tYHMaTBITXTcnN2L-Zrx78uwUkqTjI0xU,3599
73
74
  uk_bin_collection/uk_bin_collection/councils/CeredigionCountyCouncil.py,sha256=np9iLnMVWpMYUiHZ4sJaSaU5pOWfmiCLQ8TIrOlY48o,5924
74
- 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
75
76
  uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py,sha256=EB88D0MNJwuDZ2GX1ENc5maGYx17mnHTCtNl6s-v11E,5090
76
- 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
77
78
  uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py,sha256=VxTe9qk93MFgtELEgVrEz3W0vYaG_32EpPmky_b4j0k,2590
78
- 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
79
80
  uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py,sha256=5mKZf22NgdyBY-SqV0c2q8b8IJobkoZrsfGEVUcxUyM,3544
80
81
  uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py,sha256=mZiM8Ugm_OP0JkC5pLaQmi4i79mAp4SNNrcIdsREjHw,7198
81
- uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py,sha256=HxrLcJves7ZsE8FbooymeecTUmScY4R7Oi71vwCePPo,4118
82
- uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py,sha256=M7HjuUaFq8aSnOf_9m1QS4MmPPMmPhF3mLHSrfDPtV0,5194
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=JDp0BQIeyERsXdCgZQ4E8dR0E6yeq42DY0Q0yxYOSvo,5336
83
84
  uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py,sha256=Mny-q2rQkWe2Tj1gINwEM1L4AkqQl1EDMAaKY0-deD4,3968
84
85
  uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py,sha256=QcFHTzW7Q1jYyHWq6thpA6fhO8w38eCOpUPk9EfjGIA,1291
85
86
  uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py,sha256=JDtcJFUY47a3Ws4_7pnCYlngw_3p_A-m5MitPLdrv3w,3983
@@ -87,24 +88,24 @@ uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py,sha256=6zHe_Qu-R
87
88
  uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py,sha256=85MPd1idsil3F-0Y6RQGMHKEcP9VS-z9B8l8ITK4BUU,4854
88
89
  uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py,sha256=YjVSEGxuu92-hcfLtNjzh98To_HSiTfjrfZHF3DHChg,2085
89
90
  uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py,sha256=Oaj5INA3zNjtzBRsfLvRTIxZzcd4E4bJfVF1ULWlrL4,4322
90
- 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
91
92
  uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py,sha256=bPOmkyzNnHrOtUprbouHdOsgpu7WilUADcaccWTCPFI,2839
92
93
  uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py,sha256=hM0SUXW4k_queqVH0hEx-dmuBHQs0Ds1LEjlsJ8EiCY,3231
93
94
  uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py,sha256=Tm_6pvBPj-6qStbe6-02LXaoCOlnnDvVXAAocGVvf_E,3970
94
- 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
95
96
  uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py,sha256=FtG0LMTY21RBQiBpeX4FihdMCEZ1knpARYyMfyCn9ng,2103
96
97
  uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py,sha256=M8FGLhZn9wdRCq1W6z_yqJQqeba3EKyba3vhM22MzB4,1883
97
98
  uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py,sha256=ZFmDeVINbBk2UlZtuOpNkdLmWgkMSumEMMp4WacIiwA,4111
98
99
  uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py,sha256=b7pxoToXu6dBBYXsXmlwfPXE8BjHxt0hjCOBNlNgvX8,3118
99
100
  uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py,sha256=XUWH5BzkjPSFBLczo-Vo-Wly2JMoabm9WtI6_Mf-pO4,1523
100
- 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
101
102
  uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py,sha256=tDGfBWD5AVEzHt-XowD4qmmDcdlOLKC0oON8jkARRAI,3134
102
103
  uk_bin_collection/uk_bin_collection/councils/DundeeCityCouncil.py,sha256=CzzPZ3FJW36ojW3wHIwEYXhMP1LlTKBJQEpnrLr5Lds,1285
103
104
  uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py,sha256=6O8bNsQVYQbrCYQE9Rp0c_rtkcXuxR3s9J6jn4MK4_s,1695
104
105
  uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py,sha256=UhNXGi-_6NYZu50988VEvOzmAVunxOoyJ6mz0OEaUz4,1321
105
106
  uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py,sha256=i3AcWkeAnk7rD59nOm0QCSH7AggqjUAdwsXuSIC8ZJE,1614
106
107
  uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py,sha256=aYUVE5QqTxdj8FHhCB4EiFVDJahWJD9Pq0d1upBEvXg,1501
107
- 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
108
109
  uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py,sha256=FsHfejTGPjRUByDz157690LTD8JpqGplD_XVb7pTe3A,4862
109
110
  uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py,sha256=Laf-j0LLr7M4xmKhk8kjPNTtt66oXKYWm0ppxdUX3F0,4326
110
111
  uk_bin_collection/uk_bin_collection/councils/EastLothianCouncil.py,sha256=zTp-GDWYeUIlFaqfkqGvo7XMtxJd0VbxdGgqaAwRACk,2792
@@ -112,18 +113,20 @@ uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py,sha256=5
112
113
  uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py,sha256=oL-NqriLVy_NChGASNh8qTqeakLn4iP_XzoMC6VlPGM,5216
113
114
  uk_bin_collection/uk_bin_collection/councils/EastStaffordshireBoroughCouncil.py,sha256=s13zlAN9Rac-RVHNFLIjIY0X8C6sPTNS37EL2t6vXw8,3692
114
115
  uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py,sha256=qQ0oOfGd0sWcczse_B22YoeL9uj3og8v3UJLt_Sx29c,4353
115
- 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
116
118
  uk_bin_collection/uk_bin_collection/councils/EdinburghCityCouncil.py,sha256=YRjNgevnCxfaAIU8BV9dkqG17NiT6S-hp7l-1rdLVgQ,3150
117
119
  uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py,sha256=TgBOaReHWBbm0avV7HqRf0x7cxDe9cacTUcP9TFFprs,3005
118
120
  uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py,sha256=2yR5p-kdApOm1gHiynNECP0jQDvaYHOiT6MAQJAvunE,6144
119
- uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py,sha256=R0Y94nEn2G4JgzJ3PKkUXP6a0fPpjaunpRxbfMLKT4s,2135
120
- 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
121
123
  uk_bin_collection/uk_bin_collection/councils/EpsomandEwellBoroughCouncil.py,sha256=B0uxaXeiWZfy07X1UDiM_CfAXPZguE8xqlZV-2KeaHo,2831
122
124
  uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py,sha256=QTQA6NjZtTL2baDeerIQW1SQpawwu6kGDMGdVvYQRRo,2501
123
125
  uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py,sha256=FPNyBuQFYGFECZfCemgeHr27bXJFVvadinw43h-G8qs,1623
124
126
  uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py,sha256=C3OA9PEhBsCYPzwsSdqVi_SbF8uiB186i2XfHWKd3VI,1694
125
127
  uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py,sha256=25QxeN5q3ad1Wwexs2d-B7ooH0ru6pOUx58413FOTY4,2352
126
128
  uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py,sha256=sFrnKzIE2tIcz0YrC6A9HcevzgNdf6E6_HLGMWDKtGw,2513
129
+ uk_bin_collection/uk_bin_collection/councils/FermanaghOmaghDistrictCouncil.py,sha256=om9bdOv3_n16DMNX3-ndRwBEAlddhY1BB8z6doXrDfo,3317
127
130
  uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py,sha256=eP_NnHtBLyflRUko9ubi_nxUPb7qg9SbaaSxqWZxNEs,2157
128
131
  uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py,sha256=RvPHhGbzP3mcjgWe2rIQux43UuDH7XofJGIKs7wJRe0,2060
129
132
  uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py,sha256=yKgZhua-2hjMihHshhncXVUBagbTOQBnNbKzdIZkWjw,3114
@@ -131,12 +134,12 @@ uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py,sha2
131
134
  uk_bin_collection/uk_bin_collection/councils/FyldeCouncil.py,sha256=XkiOx-RAykEB75U2R_u69sKov9r5OMZgnZI61vHnN9Y,3026
132
135
  uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py,sha256=SRCgYhYs6rv_8C1UEDVORHZgXxcJkoZBjzdYS4Lu-ew,4531
133
136
  uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py,sha256=XzfFMCwclh9zAJgsbaj4jywjdiH0wPaFicaVsLrN3ms,2297
134
- 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
135
138
  uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=67D8rbhn0t4rsCSJRTXZVtHmph2wT6rJiexNWKOnMok,4625
136
139
  uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py,sha256=1YLxRgiAyOi6ekPYUMJ_F8dKsx62lAeOi1NmT47E8zo,1216
137
140
  uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py,sha256=ueQ9xFiTxMUBTGV9VjtySHA1EFWliTM0AeNePBIG9ho,4568
138
141
  uk_bin_collection/uk_bin_collection/councils/GreatYarmouthBoroughCouncil.py,sha256=eEbelGZz_L9KhiBGWr-LqesDvsuwfBdHH8gHMaizRWc,5465
139
- 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
140
143
  uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py,sha256=eK2KkY1NbIxVtBruQYSNPA0J7fuzMik5it02dFbKYV0,1855
141
144
  uk_bin_collection/uk_bin_collection/councils/HackneyCouncil.py,sha256=vO3ugk5fcdkYTslXNKmpJC84-ZHqrdFqW8zfX7TSiTQ,3104
142
145
  uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py,sha256=gq_CPqi6qM2oNiHhKKF1lZC86fyKL4lPhh_DN9pJZ04,5971
@@ -146,7 +149,7 @@ uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py,sha256=a
146
149
  uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py,sha256=_llxT4JYYlwm20ZtS3fXwtDs6mwJyLTZBP2wBhvEpWk,2342
147
150
  uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py,sha256=MUT1A24iZShT2p55rXEvgYwGUuw3W05Z4ZQAveehv-s,2842
148
151
  uk_bin_collection/uk_bin_collection/councils/HastingsBoroughCouncil.py,sha256=9MCuit4awXSZTbZCXWBsQGX2tp2mHZ1eP1wENZdMvgA,1806
149
- 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
150
153
  uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py,sha256=ZbSsmqHStd2JtTMAq1Bhcvsj1BYp6ijELyOjZFX2GSw,6435
151
154
  uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py,sha256=x7dfy8mdt2iGl8qJxHb-uBh4u0knmi9MJ6irOJw9WYA,4805
152
155
  uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py,sha256=GNxDU65QuZHV5va2IrKtcJ6TQoDdwmV03JvkVqOauP4,3291
@@ -154,7 +157,7 @@ uk_bin_collection/uk_bin_collection/councils/Hillingdon.py,sha256=2OUp0iYO1YeZuT
154
157
  uk_bin_collection/uk_bin_collection/councils/HinckleyandBosworthBoroughCouncil.py,sha256=51vXTKrstfJhb7cLCcrsvA9qKCsptyNMZvy7ML9DasM,2344
155
158
  uk_bin_collection/uk_bin_collection/councils/HorshamDistrictCouncil.py,sha256=U8WelJiHivT7CS3meUVcLURWOLRKes1pKZ81tcqKarM,4446
156
159
  uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py,sha256=UHcesBoctFVcXDYuwfag43KbcJcopkEDzJ-54NxtK0Q,1851
157
- 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
158
161
  uk_bin_collection/uk_bin_collection/councils/HyndburnBoroughCouncil.py,sha256=_lJ__EMcUBbE4QZvH-c1nCGeKxZTn5hhcpjVAYBbJZc,5403
159
162
  uk_bin_collection/uk_bin_collection/councils/IpswichBoroughCouncil.py,sha256=57lmDl_FprG68gUhKQYpOa1M2pudyb1utfoMhUXNwzs,2802
160
163
  uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py,sha256=xavzL6ZIU9DG8Xro3vN0CEnYmNU31OGnOvnq78wgpQc,1258
@@ -165,10 +168,11 @@ uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py,sha256=PDC907d
165
168
  uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py,sha256=FmHT6oyD4BwWuhxA80PHnGA7HPrLuyjP_54Cg8hT6k4,2537
166
169
  uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py,sha256=VWdhw6qvCTj3EhFHf046xPWgc6szeFW2Xbt6W2J0e6w,4371
167
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
168
172
  uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py,sha256=l3zgTWuKOW8fgb8PmXv0OTI6HaiGBPndefNQk8MM4oY,1810
169
173
  uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py,sha256=aUCqjHuk0sLtx83a-2agcLIMgEbfqjltXRCBRXT9J-8,3733
170
174
  uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py,sha256=vSOzdEwp9ZeUhed7E3eVv9ReD-2XgbSkpyAbVnfc-Gk,3309
171
- 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
172
176
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py,sha256=QDx2Izr-6hUSFMi4UWqsgo3p6U8aRZ9d_Cu9cBSp2rY,1653
173
177
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py,sha256=kzKwbjDBCbJXF6JdvTZWdXK0fpZxuH1CQF9GGyVMAus,1408
174
178
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughHavering.py,sha256=6DNX6IShdoEG4FjoyrzrY_HLEu9R2Bgl6PN0bSCbhow,2436
@@ -179,7 +183,7 @@ uk_bin_collection/uk_bin_collection/councils/LondonBoroughOfRichmondUponThames.p
179
183
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py,sha256=A_6Sis5hsF53Th04KeadHRasGbpAm6aoaWJ6X8eC4Y8,6604
180
184
  uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py,sha256=T0gCjpBQ9k3uNNIiJGphNiSXeh2n6bohflg9RwbL3NA,2565
181
185
  uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py,sha256=vScUi_R8FnBddii2_zLlZBLxuh85mKmCm8nKW3zxky0,2758
182
- 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
183
187
  uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py,sha256=PMVt2XFggttPmbWyrBrHJ-W6R_6-0ux1BkY1kj1IKzg,1997
184
188
  uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py,sha256=iQG0EkX2npBicvsGKQRYyBGSBvKVUbKvUvvwrC9xV1A,2100
185
189
  uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py,sha256=RY301_82z3-xInGai5ocT7rzoV75ATbf0N7uxn8Z9LE,3110
@@ -203,11 +207,11 @@ uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py,sha256=Vdmv_p75
203
207
  uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py,sha256=lAleYfCGUWCKOi7Ye_cjgfpI3pWwTcFctlYmh0hjebM,2140
204
208
  uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py,sha256=eJMX10CG9QO7FRhHSmUDL-jO_44qoK3_1ztNTAXhkbw,2085
205
209
  uk_bin_collection/uk_bin_collection/councils/NewcastleUnderLymeCouncil.py,sha256=t150wPtF2eEFYNTVj2EnhXt6JJJRiEX8976bh9JBXlg,2328
206
- 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
207
211
  uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py,sha256=dAcl5P97bttl2xCPvxof1a18kmqOrMmiElgtn3Ej7zs,8480
208
212
  uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py,sha256=o8zv40Wt19d51mrN5lsgLMCKMokMPmI1cMHBNT5yAho,1976
209
213
  uk_bin_collection/uk_bin_collection/councils/NorthDevonCountyCouncil.py,sha256=tgJKIvu7nnCAHu_HImfG5SQABD6ygKFqrZU-ZoC6ObY,6260
210
- uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py,sha256=bps_uCFAeUHQla7AE5lZOv6sUkUz1fb6zduZdAcYMuw,4651
214
+ uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py,sha256=BfNpYcjG3z0Yz8OYN6NkfzvZ5k1FI-80D-rv211kPPU,5449
211
215
  uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py,sha256=fYf438VZIaOaqPSwdTTWVjFTdrI0jGfFsxVzOc-QdkA,1817
212
216
  uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py,sha256=dFgvZqVKEVEP0zSPeh2s9xIWSCGbhYHpXn2U6Nk0HXM,2847
213
217
  uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py,sha256=vYOCerJXr9LTP6F2wm4vpYNYbQaWNZ6yfHEQ33N_hTw,1681
@@ -215,11 +219,11 @@ uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py,sha256=n
215
219
  uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py,sha256=kCT82SU-etoGBehoIbbzGw_XS2YHllTw7lCCbdQj7UE,2467
216
220
  uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py,sha256=VV_zqVZYv8ekXcUHhrBlTX_W5qLYE9IA3mT2xmrZqoI,4315
217
221
  uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py,sha256=kcMN-5GBjYDM9F1BKfHoYeydub8SuDxHamJbSvJRZ68,2337
218
- uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py,sha256=EbFVnPYZIOkru5_Y75kjljM3Cr3HIJgP-SU6hxgf6tk,2754
219
- 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
220
224
  uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py,sha256=gJj0dyQc5QUefqusKGk2LLXfWbG5tlEXUOh8KAPh3RI,4584
221
225
  uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py,sha256=rwW6y5yhRiuYk3lVS7YFZxLaY_yfojdcn2dxiWaP4YA,2013
222
- 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
223
227
  uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py,sha256=hddZD4tv-fw52hvxTm2UjSvRP3MwGchzWZyuhNeNvp0,2970
224
228
  uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py,sha256=panTCjnsBOQ98-TBO9xVZk_jcT_gjMhx3Gg5oWxBRLo,1254
225
229
  uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py,sha256=PViXaBJ5SeP3inOnqf4PuPahzRCLN06n5Gicqyt3gbM,37781
@@ -254,6 +258,7 @@ uk_bin_collection/uk_bin_collection/councils/SeftonCouncil.py,sha256=XUEz2li0oHr
254
258
  uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py,sha256=qqrrRaSVm9CYAtm0rB2ZnyH_nLwaReuacoUxZpo597k,4260
255
259
  uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py,sha256=9g9AeiackoWyej9EVlKUzywzAtMuBVD0f93ZryAUha8,2016
256
260
  uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py,sha256=6OIEhJmv-zLJiEo8WaJePA7JuhNRGkh2WohFLhzN8Kk,1477
261
+ uk_bin_collection/uk_bin_collection/councils/SloughBoroughCouncil.py,sha256=B6ksHUgcPns9fRUrPpyTkGGAwqn1DH0rQfS3Ma6Gzrs,5987
257
262
  uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py,sha256=gbTHjbdV46evGfLfF8rxVMQIgNZD-XPHgZeuyje7kGY,1609
258
263
  uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py,sha256=CZJnkCGn4-yH31HH5_ix-8V2_vsjGuKYxgzAPGZdSAw,8480
259
264
  uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py,sha256=03eapeXwxneKI4ccKPSHoviIbhmV1m90I-0WQ_s3KsY,2722
@@ -266,7 +271,7 @@ uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py,sha
266
271
  uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py,sha256=fj-eZI0yrvQVCv8GvhcovZ3b9bV6Xv_ws3IunWjnv4U,3126
267
272
  uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py,sha256=C2qIZjjbl9JnuukX9OH2RbfP0hSdp3uX76APGY33qKs,4622
268
273
  uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py,sha256=f9d2YDGv5hnN7Ul-u_I63h_BbpBU7CJFdgv-lOviRGc,4031
269
- 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
270
275
  uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py,sha256=ACQMHWyamnj1ag3gNF-8Jhp-DKUok1GhFdnzH4nCzwU,3201
271
276
  uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py,sha256=dxXGrJfg_fn2IPTBgq6Duwy0WY8GYLafMuisaCjOnbs,3426
272
277
  uk_bin_collection/uk_bin_collection/councils/SouthamptonCityCouncil.py,sha256=exNoI-Vun_C5FowCYhZ_600MBUe_OPR7MdGZEMNLL0I,1542
@@ -280,7 +285,7 @@ uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py,sha256=E
280
285
  uk_bin_collection/uk_bin_collection/councils/StirlingCouncil.py,sha256=QaUw5oP_mmFAXo98EdHhI6lWo4OjF2E8zY2M7HQo2bk,6308
281
286
  uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py,sha256=v0HmioNVRoU1-9OnLJl2V3M5pVR1aVu1BgOLHFR1Sf4,1429
282
287
  uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py,sha256=obaBgsmIJ95Ah7KaTNWdU107tZDPVuuJox0mGUoGjNk,6070
283
- 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
284
289
  uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py,sha256=DMTAcXT_lay8Cl1hBbzf_LN7-GwTDGxT3Ug9QJkaF9Y,3936
285
290
  uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py,sha256=Akx80Ve7D8RVdIW1vkWLYp80VrhL6Qc3dMMKnbFWUhY,3653
286
291
  uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py,sha256=Eyaer--n2JQmGNaEdDbOhgIIGA6mDu72N8ph2wPIZy4,4027
@@ -294,17 +299,18 @@ uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py,sha256=-NowMN
294
299
  uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py,sha256=p1ZS5R4EGxbEWlRBrkGXgKwE_lkyBT-R60yKFFhVObc,1844
295
300
  uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py,sha256=1_CkpWPTfRUEP5YJ9R4_dJRLtb-O9i83hfWJc1shw_c,4283
296
301
  uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py,sha256=Dtfkyrwt795W7gqFJxVGRR8t3R5WMNQZwTWJckLpZWE,8480
302
+ uk_bin_collection/uk_bin_collection/councils/TewkesburyBoroughCouncil.py,sha256=cSULCQBddk4tfaJZHv7mrNwM4sZkOYJpmlQXlvrZvPk,1396
297
303
  uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py,sha256=Cxrf0tUryDL-wFclPH5yovVt8i7Sc7g-ZFrU9_wg6KY,2717
298
304
  uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py,sha256=RHt3e9oeKzwxjjY-M8aC0nk-ZXhHIoyC81JzxkPVxsE,5531
299
305
  uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py,sha256=vAZMm6mcsdEcOkP15xwxWy9gdXpmLYQFH7qRifurNoY,2935
300
306
  uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py,sha256=UlgnHDoi8ecav2H5-HqKNDpqW1J3RN-c___5c08_Q7I,4859
301
- 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
302
308
  uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py,sha256=qyxzMFaQp4ymDsnvoySqmJonQ_MLo4jYBbKmREECur4,4777
303
309
  uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py,sha256=s8Nm9Ef-4561mEXPa0ylYHrXyYIulgCcNV2uAnrXyZk,2846
304
310
  uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py,sha256=GSELWbSn5jtznv6FSLIMxK6CyQ27MW9FoY_m5jhTEBA,4175
305
311
  uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py,sha256=dz3zDJsJKYYqUB-Gxf6twvP6kG_wyENaszxXxK4iJn0,5089
306
312
  uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py,sha256=fyskrQ4-osGOeCZuB_8m2TpW8iwHr7lpl52nrR06Xpo,4441
307
- 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
308
314
  uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py,sha256=aniL34mc0ehLl5fDUi8Y_L_TK8HFoE605IJIarb5CSk,2363
309
315
  uk_bin_collection/uk_bin_collection/councils/WalthamForest.py,sha256=8Xoi9G8iXJi8uqnyNuqba37RwTqvuvMj9FZxi4NA-n4,4924
310
316
  uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py,sha256=aQoJpC7YkhKewQyZlsv5m4__2IPoKRsOrPxjNH5xRNo,2594
@@ -340,8 +346,8 @@ uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bId
340
346
  uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=QD4v4xpsEE0QheR_fGaNOIRMc2FatcUfKkkhAhseyVU,1159
341
347
  uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
342
348
  uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
343
- uk_bin_collection-0.151.0.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
344
- uk_bin_collection-0.151.0.dist-info/METADATA,sha256=5SIksvWnLyMwc7YNjzyWRTDxFdUbCbpspDeRWeahvVs,20914
345
- uk_bin_collection-0.151.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
346
- uk_bin_collection-0.151.0.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
347
- uk_bin_collection-0.151.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,,