uk_bin_collection 0.134.1__py3-none-any.whl → 0.135.2__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 (24) hide show
  1. uk_bin_collection/tests/check_selenium_url_in_input.json.py +209 -0
  2. uk_bin_collection/tests/input.json +55 -5
  3. uk_bin_collection/uk_bin_collection/councils/AmberValleyBoroughCouncil.py +60 -0
  4. uk_bin_collection/uk_bin_collection/councils/BolsoverCouncil.py +298 -0
  5. uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py +75 -0
  6. uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +11 -3
  7. uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py +3 -5
  8. uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +54 -50
  9. uk_bin_collection/uk_bin_collection/councils/EpsomandEwellBoroughCouncil.py +86 -0
  10. uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +1 -1
  11. uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +2 -1
  12. uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py +100 -0
  13. uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +2 -0
  14. uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +17 -15
  15. uk_bin_collection/uk_bin_collection/councils/RedcarandClevelandCouncil.py +108 -0
  16. uk_bin_collection/uk_bin_collection/councils/RunnymedeBoroughCouncil.py +54 -0
  17. uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +21 -15
  18. uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +1 -1
  19. uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +1 -35
  20. {uk_bin_collection-0.134.1.dist-info → uk_bin_collection-0.135.2.dist-info}/METADATA +1 -1
  21. {uk_bin_collection-0.134.1.dist-info → uk_bin_collection-0.135.2.dist-info}/RECORD +24 -16
  22. {uk_bin_collection-0.134.1.dist-info → uk_bin_collection-0.135.2.dist-info}/LICENSE +0 -0
  23. {uk_bin_collection-0.134.1.dist-info → uk_bin_collection-0.135.2.dist-info}/WHEEL +0 -0
  24. {uk_bin_collection-0.134.1.dist-info → uk_bin_collection-0.135.2.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,100 @@
1
+ import time
2
+ from datetime import datetime
3
+
4
+ from bs4 import BeautifulSoup
5
+ from selenium import webdriver
6
+ from selenium.webdriver.common.by import By
7
+ from selenium.webdriver.support import expected_conditions as EC
8
+ from selenium.webdriver.support.ui import Select, WebDriverWait
9
+
10
+ from uk_bin_collection.uk_bin_collection.common import *
11
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
12
+
13
+ import re
14
+
15
+ class CouncilClass(AbstractGetBinDataClass):
16
+ def parse_data(self, page: str, **kwargs) -> dict:
17
+ try:
18
+ data = {"bins": []}
19
+
20
+ user_paon = kwargs.get("paon")
21
+ headless = kwargs.get("headless")
22
+ web_driver = kwargs.get("web_driver")
23
+ driver = create_webdriver(web_driver, headless, None, __name__)
24
+
25
+ page = "https://www.middlesbrough.gov.uk/recycling-and-rubbish/bin-collection-dates/"
26
+ driver.get(page)
27
+
28
+ address_box = WebDriverWait(driver, timeout=15).until(
29
+ EC.presence_of_element_located((By.ID, "row-input-0"))
30
+ )
31
+ address_box.click()
32
+ address_box.send_keys(user_paon)
33
+
34
+ search_button = WebDriverWait(driver, timeout=15).until(
35
+ EC.presence_of_element_located((By.ID, "rCbtn-search"))
36
+ )
37
+ search_button.click()
38
+
39
+ iframe_presense = WebDriverWait(driver, 30).until(
40
+ EC.presence_of_element_located((By.ID, "recollect-frame"))
41
+ )
42
+ driver.switch_to.frame(iframe_presense)
43
+
44
+ results = WebDriverWait(driver, timeout=15).until(
45
+ EC.presence_of_element_located((By.ID, "rCpage-place_calendar"))
46
+ )
47
+
48
+ html_content = driver.page_source
49
+ soup = BeautifulSoup(html_content, "html.parser")
50
+
51
+ calendar_section = soup.find("section", {"id": "alt-calendar-list"})
52
+ if not calendar_section:
53
+ raise ValueError("Calendar section not found in the HTML.")
54
+
55
+ date_headers = calendar_section.find_all("h3")
56
+ collection_lists = calendar_section.find_all("ul")
57
+
58
+ current_month = datetime.now().month
59
+ current_year = datetime.now().year
60
+
61
+ for date_header, collection_list in zip(date_headers, collection_lists):
62
+ raw_date = date_header.text.strip()
63
+
64
+ # **Regex to match "Wednesday, February 19" format**
65
+ match = re.match(r"([A-Za-z]+), ([A-Za-z]+) (\d{1,2})", raw_date)
66
+
67
+ if match:
68
+ day_name, month_name, day_number = match.groups() # Extract components
69
+ extracted_month = datetime.strptime(month_name, "%B").month
70
+ extracted_day = int(day_number)
71
+
72
+ # Handle Dec-Jan rollover: If month is before the current month, assume next year
73
+ inferred_year = current_year + 1 if extracted_month < current_month else current_year
74
+
75
+ # **Correct the raw_date format before parsing**
76
+ raw_date = f"{day_name}, {month_name} {day_number}, {inferred_year}"
77
+
78
+ print(f"DEBUG: Final raw_date before parsing -> {raw_date}") # Debugging output
79
+
80
+ # Convert to required format (%d/%m/%Y)
81
+ try:
82
+ parsed_date = datetime.strptime(raw_date, "%A, %B %d, %Y")
83
+ formatted_date = parsed_date.strftime(date_format)
84
+ except ValueError:
85
+ raise ValueError(f"Date format error after inference: {raw_date}")
86
+
87
+ for li in collection_list.find_all("li"):
88
+ bin_type = li.get_text(strip=True).split(".")[0]
89
+ data["bins"].append(
90
+ {"type": bin_type, "collectionDate": formatted_date}
91
+ )
92
+
93
+ except Exception as e:
94
+ print(f"An error occurred: {e}")
95
+ raise
96
+ finally:
97
+ if driver:
98
+ driver.quit()
99
+
100
+ return data
@@ -100,6 +100,8 @@ class CouncilClass(AbstractGetBinDataClass):
100
100
  {"id": "contentInner"},
101
101
  )
102
102
 
103
+ soup = soup.find("div", class_="umb-block-grid__layout-item")
104
+
103
105
  # Get the dates
104
106
  for date in soup.find_all("h2"):
105
107
  if date.get_text(strip=True) != "Bank Holidays":
@@ -1,22 +1,19 @@
1
+ from datetime import datetime
2
+
3
+ import requests
1
4
  from bs4 import BeautifulSoup
5
+
2
6
  from uk_bin_collection.uk_bin_collection.common import *
3
7
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
4
8
 
5
9
 
6
10
  class CouncilClass(AbstractGetBinDataClass):
7
- """
8
- Concrete classes have to implement all abstract operations of the
9
- base class. They can also override some operations with a default
10
- implementation.
11
- """
12
-
13
11
  def parse_data(self, page: str, **kwargs) -> dict:
14
12
  uprn = kwargs.get("uprn")
15
13
  check_uprn(uprn)
16
14
 
17
15
  # Figure bin data URL from UPRN
18
16
  url = "https://www.northyorks.gov.uk/bin-calendar/lookup"
19
-
20
17
  payload = {
21
18
  "selected_address": uprn,
22
19
  "submit": "Continue",
@@ -42,17 +39,22 @@ class CouncilClass(AbstractGetBinDataClass):
42
39
  rows = table.find_all("tr")
43
40
 
44
41
  data = {"bins": []}
42
+
45
43
  for row in rows:
46
44
  cols = row.find_all("td")
47
45
  # First column is date
48
46
  bin_date = datetime.strptime(cols[0].text.strip(), "%d %B %Y")
49
- # Third column is type
50
- bin_type = cols[2].text.strip()
51
- # This bin
52
- this_bin = {
53
- "type": bin_type,
54
- "collectionDate": bin_date.strftime(date_format),
55
- }
56
- data["bins"].append(this_bin)
47
+
48
+ # Third column may contain multiple bin types separated by line breaks
49
+ # .stripped_strings yields a generator over all non-whitespace text segments
50
+ bin_types = [txt for txt in cols[2].stripped_strings]
51
+
52
+ for sub_bin in bin_types:
53
+ data["bins"].append(
54
+ {
55
+ "type": sub_bin,
56
+ "collectionDate": bin_date.strftime(date_format),
57
+ }
58
+ )
57
59
 
58
60
  return data
@@ -0,0 +1,108 @@
1
+ import time
2
+
3
+ import requests
4
+
5
+ from uk_bin_collection.uk_bin_collection.common import *
6
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
7
+
8
+
9
+ # import the wonderful Beautiful Soup and the URL grabber
10
+ class CouncilClass(AbstractGetBinDataClass):
11
+ """
12
+ Concrete classes have to implement all abstract operations of the
13
+ base class. They can also override some operations with a default
14
+ implementation.
15
+ """
16
+
17
+ def parse_data(self, page: str, **kwargs) -> dict:
18
+
19
+ user_postcode = kwargs.get("postcode")
20
+ user_paon = kwargs.get("paon")
21
+ check_postcode(user_postcode)
22
+ check_paon(user_paon)
23
+ bindata = {"bins": []}
24
+
25
+ URI = "https://api.eu.recollect.net/api/areas/RedcarandClevelandUK/services/50006/address-suggest"
26
+
27
+ params = {
28
+ "q": user_postcode,
29
+ "locale": "en-GB",
30
+ "_": str(int(time.time() * 1000)),
31
+ }
32
+
33
+ # print(params)
34
+
35
+ # Send GET request
36
+ response = requests.get(URI, params=params)
37
+
38
+ addresses = response.json()
39
+
40
+ place_id = next(
41
+ (
42
+ item["place_id"]
43
+ for item in addresses
44
+ if item.get("name", "").startswith(user_paon)
45
+ ),
46
+ None,
47
+ )
48
+
49
+ # print(addresses)
50
+ # print(place_id)
51
+
52
+ URI = (
53
+ f"https://api.eu.recollect.net/api/places/{place_id}/services/50006/events"
54
+ )
55
+
56
+ after = datetime.today()
57
+ before = after + timedelta(days=30)
58
+
59
+ after = after.strftime("%Y-%m-%d")
60
+ before = before.strftime("%Y-%m-%d")
61
+
62
+ # print(after)
63
+ # print(before)
64
+
65
+ params = {
66
+ "nomerge": 1,
67
+ "hide": "reminder_only",
68
+ "after": after,
69
+ "before": before,
70
+ "locale": "en-GB",
71
+ "include_message": "email",
72
+ "_": str(int(time.time() * 1000)),
73
+ }
74
+
75
+ # print(params)
76
+
77
+ # Send GET request
78
+ response = requests.get(URI, params=params)
79
+
80
+ response = response.json()
81
+
82
+ bin_collection = response["events"]
83
+
84
+ # print(bin_collection)
85
+
86
+ # Extract "end_day" and "name"
87
+ events = [
88
+ (event["end_day"], flag["name"])
89
+ for event in bin_collection
90
+ for flag in event.get("flags", [])
91
+ ]
92
+
93
+ # Print results
94
+ for end_day, bin_type in events:
95
+
96
+ date = datetime.strptime(end_day, "%Y-%m-%d")
97
+
98
+ dict_data = {
99
+ "type": bin_type,
100
+ "collectionDate": date.strftime(date_format),
101
+ }
102
+ bindata["bins"].append(dict_data)
103
+
104
+ bindata["bins"].sort(
105
+ key=lambda x: datetime.strptime(x.get("collectionDate"), date_format)
106
+ )
107
+
108
+ return bindata
@@ -0,0 +1,54 @@
1
+ from datetime import datetime, timedelta
2
+
3
+ import requests
4
+ from bs4 import BeautifulSoup
5
+
6
+ from uk_bin_collection.uk_bin_collection.common import *
7
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
8
+
9
+
10
+ # import the wonderful Beautiful Soup and the URL grabber
11
+ class CouncilClass(AbstractGetBinDataClass):
12
+ """
13
+ Concrete classes have to implement all abstract operations of the
14
+ base class. They can also override some operations with a default
15
+ implementation.
16
+ """
17
+
18
+ def parse_data(self, page: str, **kwargs) -> dict:
19
+
20
+ user_uprn = kwargs.get("uprn")
21
+ check_uprn(user_uprn)
22
+ bindata = {"bins": []}
23
+
24
+ URI = f"https://www.runnymede.gov.uk/homepage/150/check-your-bin-collection-day?address={user_uprn}"
25
+
26
+ # Make the GET request
27
+ response = requests.get(URI)
28
+
29
+ soup = BeautifulSoup(response.text, "html.parser")
30
+
31
+ div = soup.find("div", class_="widget-bin-collection")
32
+
33
+ table = div.find("table")
34
+
35
+ tbody = table.find("tbody")
36
+
37
+ for tr in tbody.find_all("tr"):
38
+ tds = tr.find_all("td")
39
+ bin_type = tds[0].text.strip()
40
+ date_text = tds[1].text.strip()
41
+
42
+ dict_data = {
43
+ "type": bin_type,
44
+ "collectionDate": (
45
+ datetime.strptime(date_text, "%A, %d %B %Y")
46
+ ).strftime(date_format),
47
+ }
48
+ bindata["bins"].append(dict_data)
49
+
50
+ bindata["bins"].sort(
51
+ key=lambda x: datetime.strptime(x.get("collectionDate"), date_format)
52
+ )
53
+
54
+ return bindata
@@ -62,21 +62,27 @@ class CouncilClass(AbstractGetBinDataClass):
62
62
  soup = BeautifulSoup(driver.page_source, features="html.parser")
63
63
  soup.prettify()
64
64
 
65
- household_bin_date = datetime.strptime(
66
- soup.find("span", {"id": "ContentPlaceHolder1_LabelHouse"}).get_text(
67
- strip=True
68
- ),
69
- "%A %d %B %Y",
70
- )
71
- collections.append(("Household bin", household_bin_date))
72
-
73
- recycling_bin_date = datetime.strptime(
74
- soup.find("span", {"id": "ContentPlaceHolder1_LabelRecycle"}).get_text(
75
- strip=True
76
- ),
77
- "%A %d %B %Y",
78
- )
79
- collections.append(("Recycling bin", recycling_bin_date))
65
+ try:
66
+ household_bin_date = datetime.strptime(
67
+ soup.find(
68
+ "span", {"id": "ContentPlaceHolder1_LabelHouse"}
69
+ ).get_text(strip=True),
70
+ "%A %d %B %Y",
71
+ )
72
+ collections.append(("Household bin", household_bin_date))
73
+ except AttributeError:
74
+ pass
75
+
76
+ try:
77
+ recycling_bin_date = datetime.strptime(
78
+ soup.find(
79
+ "span", {"id": "ContentPlaceHolder1_LabelRecycle"}
80
+ ).get_text(strip=True),
81
+ "%A %d %B %Y",
82
+ )
83
+ collections.append(("Recycling bin", recycling_bin_date))
84
+ except AttributeError:
85
+ pass
80
86
 
81
87
  ordered_data = sorted(collections, key=lambda x: x[1])
82
88
  for item in ordered_data:
@@ -84,7 +84,7 @@ class CouncilClass(AbstractGetBinDataClass):
84
84
  if bin:
85
85
  if bin[1].get_text(strip=True) != "":
86
86
  bin_date = datetime.strptime(
87
- bin[1].get_text(strip=True), "%d/%m/%Y"
87
+ bin[1].get_text(strip=True), "%d/%m/%Y %H:%M:%S"
88
88
  )
89
89
  dict_data = {
90
90
  "type": re.sub(
@@ -1,6 +1,7 @@
1
1
  from xml.etree import ElementTree
2
2
 
3
3
  from bs4 import BeautifulSoup
4
+
4
5
  from uk_bin_collection.uk_bin_collection.common import *
5
6
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
6
7
 
@@ -13,41 +14,6 @@ class CouncilClass(AbstractGetBinDataClass):
13
14
  operations with a default implementation.
14
15
  """
15
16
 
16
- def get_data(cls, **kwargs) -> str:
17
- """This method makes the request to the council
18
-
19
- Keyword arguments:
20
- url -- the url to get the data from
21
- """
22
- # Set a user agent so we look like a browser ;-)
23
- user_agent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"
24
- headers = {"User-Agent": user_agent, "Content-Type": "text/xml"}
25
-
26
- uprn = kwargs.get("uprn")
27
- try:
28
- if uprn is None or uprn == "":
29
- raise ValueError("Invalid UPRN")
30
- except Exception as ex:
31
- print(f"Exception encountered: {ex}")
32
- print(
33
- "Please check the provided UPRN. If this error continues, please first trying setting the "
34
- "UPRN manually on line 115 before raising an issue."
35
- )
36
-
37
- # Make the Request - change the URL - find out your property number
38
- # URL
39
- url = "https://collections-torridge.azurewebsites.net/WebService2.asmx"
40
- # Post data
41
- post_data = (
42
- '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><getRoundCalendarForUPRN xmlns="http://tempuri2.org/"><council>TOR</council><UPRN>'
43
- + uprn
44
- + "</UPRN><PW>wax01653</PW></getRoundCalendarForUPRN></soap:Body></soap:Envelope>"
45
- )
46
- requests.packages.urllib3.disable_warnings()
47
- full_page = requests.post(url, headers=headers, data=post_data)
48
-
49
- return full_page
50
-
51
17
  def parse_data(self, page, **kwargs) -> dict:
52
18
  """This method makes the request to the council
53
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uk_bin_collection
3
- Version: 0.134.1
3
+ Version: 0.135.2
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -1,8 +1,9 @@
1
1
  uk_bin_collection/README.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ uk_bin_collection/tests/check_selenium_url_in_input.json.py,sha256=Iecdja0I3XIiY76qmwPgcBqNgYv7n1-b5mg85JpMjg8,7817
2
3
  uk_bin_collection/tests/council_feature_input_parity.py,sha256=DO6Mk4ImYgM5ZCZ-cutwz5RoYYWZRLYx2tr6zIs_9Rc,3843
3
4
  uk_bin_collection/tests/features/environment.py,sha256=VQZjJdJI_kZn08M0j5cUgvKT4k3iTw8icJge1DGOkoA,127
4
5
  uk_bin_collection/tests/features/validate_council_outputs.feature,sha256=SJK-Vc737hrf03tssxxbeg_JIvAH-ddB8f6gU1LTbuQ,251
5
- uk_bin_collection/tests/input.json,sha256=7LWKgJPhsPTdZmsGYuwCCAacIqJvxeG8LeZzqMiyTyk,114074
6
+ uk_bin_collection/tests/input.json,sha256=YgUI7DkX6n4vwsFvYEmHwkS3yn6Td5QZWFAva8Bj5PY,116367
6
7
  uk_bin_collection/tests/output.schema,sha256=ZwKQBwYyTDEM4G2hJwfLUVM-5v1vKRvRK9W9SS1sd18,1086
7
8
  uk_bin_collection/tests/step_defs/step_helpers/file_handler.py,sha256=Ygzi4V0S1MIHqbdstUlIqtRIwnynvhu4UtpweJ6-5N8,1474
8
9
  uk_bin_collection/tests/step_defs/test_validate_council.py,sha256=VZ0a81sioJULD7syAYHjvK_-nT_Rd36tUyzPetSA0gk,3475
@@ -15,6 +16,7 @@ uk_bin_collection/uk_bin_collection/common.py,sha256=Wj6o2NaxYDE1lkpYzMFDIZiPARX
15
16
  uk_bin_collection/uk_bin_collection/councils/AberdeenCityCouncil.py,sha256=l8OahAm9w9AG61VjCu0B_i51TrwB4vEl_KO0907uJPE,4197
16
17
  uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py,sha256=xhAdPFEQrPpQxQQ6Q5JYy2GS0QQ10-_y7nxoC74ARc4,1654
17
18
  uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py,sha256=ppbrmm-MzB1wOulK--CU_0j4P-djNf3ozMhHnmQFqLo,1511
19
+ uk_bin_collection/uk_bin_collection/councils/AmberValleyBoroughCouncil.py,sha256=mTeluIIEcuxLxhfDQ95A1fp8RM6AkJT5tRGZPUbYGdk,1853
18
20
  uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py,sha256=Hp5pteaC5RjL5ZqPZ564S9WQ6ZTKLMO6Dl_fxip2TUc,1653
19
21
  uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py,sha256=E9A5-mKBMHOuh-WJtHzo-mSPYqAsgghvV6SwV889hmA,3823
20
22
  uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py,sha256=fJ0UvuSCbzFE9CPoxt1U9CJeFsbTKts_5GRBc3E9Eno,2201
@@ -38,6 +40,7 @@ uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py,sha256=now
38
40
  uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py,sha256=xqWkQz3HDLkP5TgxQqVJziHJF2yl-q9PcV3Rv-38xDU,1941
39
41
  uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py,sha256=ZLA2V3qPsJTom7SeQdGDhF4tJSfgIV5Qi202QvGKJZ0,4477
40
42
  uk_bin_collection/uk_bin_collection/councils/BlaenauGwentCountyBoroughCouncil.py,sha256=C5Fi19t5HJcrOHhWnt_6pttgRL2IWIYnwYlF9MdSPR0,4330
43
+ uk_bin_collection/uk_bin_collection/councils/BolsoverCouncil.py,sha256=_NZuSvSblS0NlxIhrzqbB9GNnY0xjT4SrIBi9bQ6UC8,10354
41
44
  uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py,sha256=WI68r8jB0IHPUT4CgmZMtng899AAMFTxkyTdPg9yLF8,4117
42
45
  uk_bin_collection/uk_bin_collection/councils/BostonBoroughCouncil.py,sha256=8xv6FMNj8Qgwn5K0nMdB5X8hkcNFzhcJ48DMordflJY,5631
43
46
  uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py,sha256=Llo1rULaAZ8rChVYZqXFFLo7CN6vbT0ULUJD6ActouY,9015
@@ -63,16 +66,17 @@ uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py,sha25
63
66
  uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py,sha256=tXfzMetN6wxahuGGRp2mIyCCDSL4F2aG61HhUxw6COQ,2172
64
67
  uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py,sha256=EB88D0MNJwuDZ2GX1ENc5maGYx17mnHTCtNl6s-v11E,5090
65
68
  uk_bin_collection/uk_bin_collection/councils/CheltenhamBoroughCouncil.py,sha256=fo9n2AuD8a174h3YMa9awa3S4YO2XU1KaInQ4ULz6s4,13686
69
+ uk_bin_collection/uk_bin_collection/councils/CherwellDistrictCouncil.py,sha256=VxTe9qk93MFgtELEgVrEz3W0vYaG_32EpPmky_b4j0k,2590
66
70
  uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py,sha256=K95UaS67nxGSFzLoyqMSZcLmfhwjDImVXznMZC_bFa4,1680
67
71
  uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py,sha256=5mKZf22NgdyBY-SqV0c2q8b8IJobkoZrsfGEVUcxUyM,3544
68
72
  uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py,sha256=mZiM8Ugm_OP0JkC5pLaQmi4i79mAp4SNNrcIdsREjHw,7198
69
73
  uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py,sha256=HxrLcJves7ZsE8FbooymeecTUmScY4R7Oi71vwCePPo,4118
70
74
  uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py,sha256=M7HjuUaFq8aSnOf_9m1QS4MmPPMmPhF3mLHSrfDPtV0,5194
71
75
  uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py,sha256=Mny-q2rQkWe2Tj1gINwEM1L4AkqQl1EDMAaKY0-deD4,3968
72
- uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py,sha256=el75qv2QyfWZBU09tJLvD8vLQZ9pCg73u1NBFs6ybo8,1034
76
+ uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py,sha256=QcFHTzW7Q1jYyHWq6thpA6fhO8w38eCOpUPk9EfjGIA,1291
73
77
  uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py,sha256=JDtcJFUY47a3Ws4_7pnCYlngw_3p_A-m5MitPLdrv3w,3983
74
78
  uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py,sha256=6zHe_Qu-R9hTB52QRk215rYfO3OocbJ_D62kVWnrve8,2912
75
- uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py,sha256=Y2yvduT6XTy54bDYX17-dltjd7L36cc7GDjlx0xWskA,4896
79
+ uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py,sha256=85MPd1idsil3F-0Y6RQGMHKEcP9VS-z9B8l8ITK4BUU,4854
76
80
  uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py,sha256=QejW440Wp1mpEyRZIy1A0hYPejg_-D0bfHtpC2-VoaI,2050
77
81
  uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py,sha256=Oaj5INA3zNjtzBRsfLvRTIxZzcd4E4bJfVF1ULWlrL4,4322
78
82
  uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py,sha256=Vxh5ICoaXTAvx0nDOq_95XQ4He9sQKcLdI5keV2uxM4,11384
@@ -82,7 +86,7 @@ uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py,sha256=Tm_
82
86
  uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py,sha256=SPirUUoweMwX5Txtsr0ocdcFtKxCQ9LhzTTJN20tM4w,1550
83
87
  uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py,sha256=FtG0LMTY21RBQiBpeX4FihdMCEZ1knpARYyMfyCn9ng,2103
84
88
  uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py,sha256=M8FGLhZn9wdRCq1W6z_yqJQqeba3EKyba3vhM22MzB4,1883
85
- uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py,sha256=MQC1-jXezXczrxTcvPQvkpGgyyAbzSKlX38WsmftHak,4007
89
+ uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py,sha256=ZFmDeVINbBk2UlZtuOpNkdLmWgkMSumEMMp4WacIiwA,4111
86
90
  uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py,sha256=b7pxoToXu6dBBYXsXmlwfPXE8BjHxt0hjCOBNlNgvX8,3118
87
91
  uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py,sha256=XUWH5BzkjPSFBLczo-Vo-Wly2JMoabm9WtI6_Mf-pO4,1523
88
92
  uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py,sha256=3Zgap6kaVpDXtRfBKEL1Ms6eb0iFIipYKNtOq3Hrdd4,1891
@@ -106,6 +110,7 @@ uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py,sha256=T
106
110
  uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py,sha256=2yR5p-kdApOm1gHiynNECP0jQDvaYHOiT6MAQJAvunE,6144
107
111
  uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py,sha256=R0Y94nEn2G4JgzJ3PKkUXP6a0fPpjaunpRxbfMLKT4s,2135
108
112
  uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py,sha256=cKFllQ4zt6MGkwiz_HedZvw3iL1kRMLA6Ct2spUE5og,2085
113
+ uk_bin_collection/uk_bin_collection/councils/EpsomandEwellBoroughCouncil.py,sha256=B0uxaXeiWZfy07X1UDiM_CfAXPZguE8xqlZV-2KeaHo,2831
109
114
  uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py,sha256=QTQA6NjZtTL2baDeerIQW1SQpawwu6kGDMGdVvYQRRo,2501
110
115
  uk_bin_collection/uk_bin_collection/councils/ExeterCityCouncil.py,sha256=FPNyBuQFYGFECZfCemgeHr27bXJFVvadinw43h-G8qs,1623
111
116
  uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py,sha256=C3OA9PEhBsCYPzwsSdqVi_SbF8uiB186i2XfHWKd3VI,1694
@@ -118,7 +123,7 @@ uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py,sha2
118
123
  uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py,sha256=SRCgYhYs6rv_8C1UEDVORHZgXxcJkoZBjzdYS4Lu-ew,4531
119
124
  uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py,sha256=XzfFMCwclh9zAJgsbaj4jywjdiH0wPaFicaVsLrN3ms,2297
120
125
  uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py,sha256=9Rk9KfcglJvRhh4373OfRX-fwywE2xgwx5KejqzV5fE,3399
121
- uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=8Wjvmdvg5blHVrREaEnhhWZaWhYVP4v_KdDVPLIUxaU,4889
126
+ uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=iMIlZMoBE4TG-ygw89zynvu-TlC4bWJ7g0vNH92JzHs,4890
122
127
  uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py,sha256=ueQ9xFiTxMUBTGV9VjtySHA1EFWliTM0AeNePBIG9ho,4568
123
128
  uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py,sha256=9pVrmQhZcK2AD8gX8mNvP--L4L9KaY6L3B822VX6fec,5695
124
129
  uk_bin_collection/uk_bin_collection/councils/GwyneddCouncil.py,sha256=eK2KkY1NbIxVtBruQYSNPA0J7fuzMik5it02dFbKYV0,1855
@@ -144,7 +149,7 @@ uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py,sha256
144
149
  uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py,sha256=WPM7koIqK5Wz-iT9Mds6AptihGZtl4KZhkVTcT9cx_c,2762
145
150
  uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py,sha256=VdlWDESoHfr_X0r8-UMaLMUQhKZOa2BnpVPkX-1u3EQ,5605
146
151
  uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py,sha256=FmHT6oyD4BwWuhxA80PHnGA7HPrLuyjP_54Cg8hT6k4,2537
147
- uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py,sha256=iSZApZ9oSfSatQ6dAxmykSfti91jGuY6n2BwEkVMOiU,5144
152
+ uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py,sha256=t4nUxHJ_UKLyLHqJkngTiSodJcYalfw_Jr4WU0uMMc0,5134
148
153
  uk_bin_collection/uk_bin_collection/councils/LeicesterCityCouncil.py,sha256=o3kE8sjThQa4_AvSK5NH8VH7jWFO9MMPgoqLOTjyh0w,1851
149
154
  uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py,sha256=l3zgTWuKOW8fgb8PmXv0OTI6HaiGBPndefNQk8MM4oY,1810
150
155
  uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py,sha256=aUCqjHuk0sLtx83a-2agcLIMgEbfqjltXRCBRXT9J-8,3733
@@ -170,12 +175,13 @@ uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py,s
170
175
  uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py,sha256=RjBZ7R3_Pax9p1d2DCygqryjV1RP4BYvqb-rT_KyOEg,3322
171
176
  uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py,sha256=h6M-v5jVYe7OlQ47Vf-0pEgECZLOOacK3_XE6zbpsM4,6329
172
177
  uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py,sha256=AZgC9wmDLEjUOtIFvf0ehF5LHturXTH4DkE3ioPSVBA,6254
178
+ uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py,sha256=l7amseG4fhyOiPWS3cbwUvE6gZSnS6V8o73vL5kxL_c,4056
173
179
  uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py,sha256=-VKvdIhrs859-YqxsNMzRWm2alP1avBR1_J8O9gJnYw,6725
174
180
  uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py,sha256=7e2pGBLCw24pNItHeI9jkxQ3rEOZ4WC4zVlbvKYGdXE,2600
175
181
  uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py,sha256=xWR5S0gwQu9gXxjl788Wux1KaC0CT7ZFw0iXuRLZCEM,5599
176
182
  uk_bin_collection/uk_bin_collection/councils/MonmouthshireCountyCouncil.py,sha256=V3R98D3DtCPZK3RNCg8yR2ddoUz_tOzl2YTgWfjdPX0,2468
177
183
  uk_bin_collection/uk_bin_collection/councils/MorayCouncil.py,sha256=jsHCQ_aV_bG0GPfF7h6g5TP84sroplYC5k2M6iEKiTw,2265
178
- uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py,sha256=ychYR2nsyk2UIb8tjWaKrLUT4hxSsHN558l3RqZ0mjw,5635
184
+ uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py,sha256=p95UYogx3_WJ_1kgfeH5kGQdrZ3YyEJjVuZ7WOOPAvs,5710
179
185
  uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py,sha256=LSQu1djVkbp4ous3DuOr9VWg4k9sFyBrQ2ZaJHY5FbA,5374
180
186
  uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py,sha256=lAleYfCGUWCKOi7Ye_cjgfpI3pWwTcFctlYmh0hjebM,2140
181
187
  uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py,sha256=eJMX10CG9QO7FRhHSmUDL-jO_44qoK3_1ztNTAXhkbw,2085
@@ -194,7 +200,7 @@ uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py,sha
194
200
  uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py,sha256=EbFVnPYZIOkru5_Y75kjljM3Cr3HIJgP-SU6hxgf6tk,2754
195
201
  uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py,sha256=MHfcSrfWBIiWwVnhOqUrOkr0Ahguu_oU4pHrv_vSa-Y,5929
196
202
  uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py,sha256=gJj0dyQc5QUefqusKGk2LLXfWbG5tlEXUOh8KAPh3RI,4584
197
- uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py,sha256=2wTrr3VrZDp9-YtDPmWd649gXeWH4hbm2-Hw8Vau5Xs,1933
203
+ uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py,sha256=rwW6y5yhRiuYk3lVS7YFZxLaY_yfojdcn2dxiWaP4YA,2013
198
204
  uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py,sha256=CF9__v8xOUJ9Ukic9Yg9WnVUojV3Cv6_dHAHJzL6V3o,5106
199
205
  uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py,sha256=6w5-xKiyxTlJLaCkwUnAWjd5jnohonnNRr0sTlfACvk,2702
200
206
  uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py,sha256=panTCjnsBOQ98-TBO9xVZk_jcT_gjMhx3Gg5oWxBRLo,1254
@@ -208,6 +214,7 @@ uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py,sha256=xog
208
214
  uk_bin_collection/uk_bin_collection/councils/PowysCouncil.py,sha256=db3Y5FJz-LFDqmVZqPdzcBxh0Q26OFPrbUxlQ7r4vsQ,5896
209
215
  uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py,sha256=3Nuin2hQsiEsbJR_kHldtzRhzmnPFctH7C7MFG7thj8,3838
210
216
  uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py,sha256=ZlQjU0IeKylGE9VlivSMh4XKwoLgntESPiylSOYkuD4,1009
217
+ uk_bin_collection/uk_bin_collection/councils/RedcarandClevelandCouncil.py,sha256=MV8CD1sj8fiy6PAVrIHO4TyTHodn45nDZp0rQfs7PiM,2829
211
218
  uk_bin_collection/uk_bin_collection/councils/RedditchBoroughCouncil.py,sha256=8QmcpStCT7c-CLhmiQ8ZeEyvtysU110VDiMQdfQTErk,2469
212
219
  uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py,sha256=HMLKdRUO5DdMJe1d1X5qtKtQsf6d5TAPViIZpMzAfes,3251
213
220
  uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py,sha256=VlWm-w4d-UchoENe_hCTCGlfSHiMlS4wNEeMvxuNR2U,5109
@@ -218,6 +225,7 @@ uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py,sha256=-fd
218
225
  uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py,sha256=LtMPM8lj5bfReDR4buHEo-aRC_HTBIeo1nf8GE5-R80,1790
219
226
  uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py,sha256=BZzLmWK_VONOmMpSrLrnKtJaOrrepm6aStfKGVcgf9Y,3487
220
227
  uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py,sha256=qwyi2K1p1erSawthC1QD1_oYghLfXFlXMdClszZTitU,4190
228
+ uk_bin_collection/uk_bin_collection/councils/RunnymedeBoroughCouncil.py,sha256=vmTZfijt9b6sKzRdRwROE94lrMVnqs6kn6tg-xi1jR4,1618
221
229
  uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py,sha256=EZGf0en7lBXv3IOkrObxCXLNC6FFCkqqGlIMNFrQvPw,4296
222
230
  uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py,sha256=ZsGnXjoEaOS6U7fI0w7-uqxayAHdNVKsJi2fqIWEls8,3375
223
231
  uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py,sha256=XUGemp2cdzsvkWjnv2m4YKTMcoKDUfIlVy3YucX-_o4,2601
@@ -251,7 +259,7 @@ uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py,sha256=oba
251
259
  uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py,sha256=KM0EgWeO7mk8lkozX0RCTfMchXdjrfBqIjCiOtB09aM,2884
252
260
  uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py,sha256=DMTAcXT_lay8Cl1hBbzf_LN7-GwTDGxT3Ug9QJkaF9Y,3936
253
261
  uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py,sha256=Akx80Ve7D8RVdIW1vkWLYp80VrhL6Qc3dMMKnbFWUhY,3653
254
- uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py,sha256=4DnKyyu56_AwuchD6_oL1dvpDStMvkkxQtYN79rUKOs,3825
262
+ uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py,sha256=Eyaer--n2JQmGNaEdDbOhgIIGA6mDu72N8ph2wPIZy4,4027
255
263
  uk_bin_collection/uk_bin_collection/councils/SurreyHeathBoroughCouncil.py,sha256=MROVvf7RSRYYjM2ZDD83rAEwf8BSnqXVrasgBiJC92A,5220
256
264
  uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py,sha256=pAGzj9CUDaU1w0wMEbJIl1fxcW0kWIzvzsU7oYMdgWE,5001
257
265
  uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py,sha256=nmVPoPhnFgVi--vczX2i4Sf3bqM5RWJuwfhioRUr5XE,2303
@@ -260,14 +268,14 @@ uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py,sha256=k2TAAZG
260
268
  uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py,sha256=KLVvM2NNq_DQylVe5dwO2l7qPahLHg08jJGLCv1MBQ4,2324
261
269
  uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py,sha256=-NowMNcxsnktzUxTk-XUfzFJgXKSSerCmdZ7cN4cE1s,2703
262
270
  uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py,sha256=p1ZS5R4EGxbEWlRBrkGXgKwE_lkyBT-R60yKFFhVObc,1844
263
- uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py,sha256=DJbYI8m6lIISDrK5h8V5Jo-9kGG7kr9dz7GD8St4nc8,4274
271
+ uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py,sha256=1_CkpWPTfRUEP5YJ9R4_dJRLtb-O9i83hfWJc1shw_c,4283
264
272
  uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py,sha256=Dtfkyrwt795W7gqFJxVGRR8t3R5WMNQZwTWJckLpZWE,8480
265
273
  uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py,sha256=-opmZG9GzjB_NvmWpN6nFZ7rlkSoaRrQICU5E8T0DEQ,1659
266
274
  uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py,sha256=RHt3e9oeKzwxjjY-M8aC0nk-ZXhHIoyC81JzxkPVxsE,5531
267
275
  uk_bin_collection/uk_bin_collection/councils/ThurrockCouncil.py,sha256=vAZMm6mcsdEcOkP15xwxWy9gdXpmLYQFH7qRifurNoY,2935
268
276
  uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py,sha256=UlgnHDoi8ecav2H5-HqKNDpqW1J3RN-c___5c08_Q7I,4859
269
277
  uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py,sha256=JW_BS7wkfxFsmx6taQtPAQWdBp1AfLrxs0XRQ2XZcSw,2029
270
- uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py,sha256=6gOO02pYU0cbj3LAHiBVNG4zkFMyIGbkE2jAye3KcGM,6386
278
+ uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py,sha256=qyxzMFaQp4ymDsnvoySqmJonQ_MLo4jYBbKmREECur4,4777
271
279
  uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py,sha256=s8Nm9Ef-4561mEXPa0ylYHrXyYIulgCcNV2uAnrXyZk,2846
272
280
  uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py,sha256=GSELWbSn5jtznv6FSLIMxK6CyQ27MW9FoY_m5jhTEBA,4175
273
281
  uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py,sha256=dz3zDJsJKYYqUB-Gxf6twvP6kG_wyENaszxXxK4iJn0,5089
@@ -307,8 +315,8 @@ uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bId
307
315
  uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=EQWRhZ2pEejlvm0fPyOTsOHKvUZmPnxEYO_OWRGKTjs,1158
308
316
  uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
309
317
  uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
310
- uk_bin_collection-0.134.1.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
311
- uk_bin_collection-0.134.1.dist-info/METADATA,sha256=IgmMDM585uMNPTg4sKSnpBGwbEF_fUxEf-E7_tYlkM0,19741
312
- uk_bin_collection-0.134.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
313
- uk_bin_collection-0.134.1.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
314
- uk_bin_collection-0.134.1.dist-info/RECORD,,
318
+ uk_bin_collection-0.135.2.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
319
+ uk_bin_collection-0.135.2.dist-info/METADATA,sha256=_v_hk1QRPn82WelIckPmXCYlSRyCpKvcXv9S8fFmduE,19741
320
+ uk_bin_collection-0.135.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
321
+ uk_bin_collection-0.135.2.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
322
+ uk_bin_collection-0.135.2.dist-info/RECORD,,