uk_bin_collection 0.137.0__py3-none-any.whl → 0.138.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.
@@ -800,6 +800,13 @@
800
800
  "wiki_name": "Forest of Dean District Council",
801
801
  "wiki_note": "Pass the full address in the house number and postcode parameters. This parser requires a Selenium webdriver."
802
802
  },
803
+ "FyldeCouncil": {
804
+ "uprn": "100010402452",
805
+ "url": "https://www.fylde.gov.uk",
806
+ "wiki_command_url_override": "https://www.fylde.gov.uk",
807
+ "wiki_name": "Fylde Council",
808
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
809
+ },
803
810
  "GatesheadCouncil": {
804
811
  "house_number": "Bracken Cottage",
805
812
  "postcode": "NE16 5LQ",
@@ -911,6 +918,13 @@
911
918
  "wiki_name": "Hartlepool Borough Council",
912
919
  "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
913
920
  },
921
+ "HastingsBoroughCouncil": {
922
+ "uprn": "100060038877",
923
+ "url": "https://www.hastings.gov.uk",
924
+ "wiki_command_url_override": "https://www.hastings.gov.uk",
925
+ "wiki_name": "Hastings Borough Council",
926
+ "wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
927
+ },
914
928
  "HerefordshireCouncil": {
915
929
  "url": "https://www.herefordshire.gov.uk/rubbish-recycling/check-bin-collection-day?blpu_uprn=10096232662",
916
930
  "wiki_command_url_override": "https://www.herefordshire.gov.uk/rubbish-recycling/check-bin-collection-day?blpu_uprn=XXXXXXXXXXXX",
@@ -0,0 +1,92 @@
1
+ import re
2
+ import urllib.parse
3
+
4
+ import requests
5
+ from bs4 import BeautifulSoup, Tag
6
+
7
+ from uk_bin_collection.uk_bin_collection.common import *
8
+ from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
9
+
10
+
11
+ # import the wonderful Beautiful Soup and the URL grabber
12
+ class CouncilClass(AbstractGetBinDataClass):
13
+ """
14
+ Concrete classes have to implement all abstract operations of the
15
+ base class. They can also override some operations with a default
16
+ implementation.
17
+ """
18
+
19
+ def parse_data(self, page: str, **kwargs) -> dict:
20
+
21
+ user_uprn = kwargs.get("uprn")
22
+ check_uprn(user_uprn)
23
+ bindata = {"bins": []}
24
+
25
+ URI = "https://fylde.gov.uk/resident/bins-recycling-and-rubbish/bin-collection-day"
26
+
27
+ # Make the GET request
28
+ session = requests.Session()
29
+ response = session.get(URI)
30
+ response.raise_for_status()
31
+
32
+ soup: BeautifulSoup = BeautifulSoup(response.text, "html.parser")
33
+ iframe = soup.find("iframe", id="bartec-iframe")
34
+ if not iframe or not isinstance(iframe, Tag):
35
+ raise Exception("Unexpected response from fylde.gov.uk")
36
+
37
+ search_res = re.search(r"(?<=Token=)(.*?)(?=&|$)", str(iframe["src"]))
38
+ if search_res is None:
39
+ raise Exception("Token could not be extracted from fylde.gov.uk")
40
+ token = search_res.group(1)
41
+
42
+ if not token:
43
+ raise Exception("Token could not be extracted from fylde.gov.uk")
44
+
45
+ token = urllib.parse.unquote(token)
46
+
47
+ parameters = {
48
+ "Method": "calendareventsfromtoken",
49
+ "Token": token,
50
+ "UPRN": user_uprn,
51
+ }
52
+
53
+ API_URL = "https://collectiveview.bartec-systems.com/R152"
54
+ API_METHOD = "GetData.ashx"
55
+
56
+ response = session.get(f"{API_URL}/{API_METHOD}", params=parameters)
57
+ response.raise_for_status()
58
+
59
+ # Parse the JSON response
60
+ bin_collection = response.json()
61
+ if not (len(bin_collection) > 0 and "title" in bin_collection[0]):
62
+ raise Exception("Unexpected response from fylde.gov.uk API")
63
+
64
+ today = datetime.now()
65
+
66
+ REGEX_JOB_NAME = r"(?i)Empty Bin\s+(?P<bin_type>\S+(?:\s+\S+)?)"
67
+ # Loop through each collection in bin_collection
68
+ for collection in bin_collection:
69
+ bin_type = (
70
+ re.search(REGEX_JOB_NAME, collection["title"])
71
+ .group("bin_type")
72
+ .strip()
73
+ .title()
74
+ )
75
+ collection_date = datetime.fromtimestamp(
76
+ int(collection["start"][6:-2]) / 1000
77
+ )
78
+
79
+ if collection_date < today:
80
+ continue
81
+
82
+ dict_data = {
83
+ "type": bin_type,
84
+ "collectionDate": collection_date.strftime("%d/%m/%Y"),
85
+ }
86
+ bindata["bins"].append(dict_data)
87
+
88
+ bindata["bins"].sort(
89
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
90
+ )
91
+
92
+ return bindata
@@ -42,13 +42,6 @@ class CouncilClass(AbstractGetBinDataClass):
42
42
  )
43
43
  cookies_button.click()
44
44
 
45
- without_login_button = WebDriverWait(driver, timeout=15).until(
46
- EC.presence_of_element_located(
47
- (By.LINK_TEXT, "or, Continue with no account")
48
- )
49
- )
50
- without_login_button.click()
51
-
52
45
  iframe_presense = WebDriverWait(driver, 30).until(
53
46
  EC.presence_of_element_located((By.ID, "fillform-frame-1"))
54
47
  )
@@ -0,0 +1,53 @@
1
+ from datetime import datetime, timedelta
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_uprn = kwargs.get("uprn")
20
+ check_uprn(user_uprn)
21
+ bindata = {"bins": []}
22
+
23
+ URI = "https://el.hastings.gov.uk/MyArea/CollectionDays.asmx/LookupCollectionDaysByService"
24
+
25
+ payload = {"Uprn": user_uprn}
26
+
27
+ # Make the GET request
28
+ response = requests.post(URI, json=payload, verify=False)
29
+ response.raise_for_status()
30
+
31
+ # Parse the JSON response
32
+ bin_collection = response.json()["d"]
33
+
34
+ # Loop through each collection in bin_collection
35
+ for collection in bin_collection:
36
+ bin_type = collection["Service"].removesuffix("collection service").strip()
37
+ for collection_date in collection["Dates"]:
38
+ collection_date = datetime.fromtimestamp(
39
+ int(collection_date.strip("/").removeprefix("Date").strip("()"))
40
+ / 1000
41
+ ) + timedelta(hours=1)
42
+
43
+ dict_data = {
44
+ "type": bin_type,
45
+ "collectionDate": collection_date.strftime("%d/%m/%Y"),
46
+ }
47
+ bindata["bins"].append(dict_data)
48
+
49
+ bindata["bins"].sort(
50
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
51
+ )
52
+
53
+ return bindata
@@ -18,6 +18,7 @@ class CouncilClass(AbstractGetBinDataClass):
18
18
 
19
19
  user_uprn = kwargs.get("uprn")
20
20
  check_uprn(user_uprn)
21
+ user_uprn = str(user_uprn).zfill(12)
21
22
  bindata = {"bins": []}
22
23
 
23
24
  SESSION_URL = "https://my.middevon.gov.uk/authapi/isauthenticated?uri=https%253A%252F%252Fmy.middevon.gov.uk%252Fen%252FAchieveForms%252F%253Fform_uri%253Dsandbox-publish%253A%252F%252FAF-Process-2289dd06-9a12-4202-ba09-857fe756f6bd%252FAF-Stage-eb382015-001c-415d-beda-84f796dbb167%252Fdefinition.json%2526redirectlink%253D%25252Fen%2526cancelRedirectLink%253D%25252Fen%2526consentMessage%253Dyes&hostname=my.middevon.gov.uk&withCredentials=true"
@@ -5,7 +5,6 @@ from bs4 import BeautifulSoup
5
5
  from selenium.webdriver.common.by import By
6
6
  from selenium.webdriver.common.keys import Keys
7
7
  from selenium.webdriver.support import expected_conditions as EC
8
- from selenium.webdriver.support.ui import Select
9
8
  from selenium.webdriver.support.wait import WebDriverWait
10
9
 
11
10
  from uk_bin_collection.uk_bin_collection.common import *
@@ -26,7 +25,7 @@ class CouncilClass(AbstractGetBinDataClass):
26
25
  page = "https://portal.walthamforest.gov.uk/AchieveForms/?mode=fill&consentMessage=yes&form_uri=sandbox-publish://AF-Process-d62ccdd2-3de9-48eb-a229-8e20cbdd6393/AF-Stage-8bf39bf9-5391-4c24-857f-0dc2025c67f4/definition.json&process=1&process_uri=sandbox-processes://AF-Process-d62ccdd2-3de9-48eb-a229-8e20cbdd6393&process_id=AF-Process-d62ccdd2-3de9-48eb-a229-8e20cbdd6393"
27
26
 
28
27
  user_postcode = kwargs.get("postcode")
29
- user_uprn = kwargs.get("uprn")
28
+ # user_uprn = kwargs.get("uprn")
30
29
  user_paon = kwargs.get("paon")
31
30
  web_driver = kwargs.get("web_driver")
32
31
  headless = kwargs.get("headless")
@@ -71,17 +70,17 @@ class CouncilClass(AbstractGetBinDataClass):
71
70
  )
72
71
 
73
72
  find_ac_button.send_keys(Keys.RETURN)
74
- h4_element = wait.until(
73
+ wait.until(
75
74
  EC.presence_of_element_located(
76
- (By.XPATH, "//h4[contains(text(), 'Your upcoming collections')]")
75
+ (By.XPATH, "//h4[contains(text(), 'Next Collections')]")
77
76
  )
78
77
  )
79
78
 
80
- data_table = WebDriverWait(driver, 10).until(
79
+ WebDriverWait(driver, 10).until(
81
80
  EC.presence_of_element_located(
82
81
  (
83
82
  By.XPATH,
84
- '//div[contains(@class, "repeatable-table-wrapper")]',
83
+ '//div[contains(@class, "fieldContent")]',
85
84
  )
86
85
  )
87
86
  )
@@ -90,15 +89,16 @@ class CouncilClass(AbstractGetBinDataClass):
90
89
 
91
90
  data = {"bins": []}
92
91
 
93
- collection_divs = soup.find_all("tr", {"class": "repeatable-value"})
92
+ collection_divs = soup.find_all("div", {"style": "text-align: center;"})
94
93
 
95
94
  for collection_div in collection_divs:
96
- td_list = collection_div.find_all("td")
97
- bin_type = td_list[1].get_text(strip=True)
98
- collection_date_text = td_list[2].get_text(strip=True)
95
+ h5_tag = collection_div.find("h5")
96
+ p_tag = collection_div.find("p")
97
+
98
+ if h5_tag and p_tag:
99
+ bin_type = h5_tag.get_text(strip=True)
100
+ collection_date_text = p_tag.find("b").get_text(strip=True)
99
101
 
100
- # if collection_date_text is not 'NaN'
101
- if collection_date_text != "NaN":
102
102
  # Extract and format the date
103
103
  date_match = re.search(r"(\d+ \w+)", collection_date_text)
104
104
  if date_match:
@@ -123,4 +123,4 @@ class CouncilClass(AbstractGetBinDataClass):
123
123
  # This block ensures that the driver is closed regardless of an exception
124
124
  if driver:
125
125
  driver.quit()
126
- return data
126
+ return data
@@ -42,22 +42,21 @@ class CouncilClass(AbstractGetBinDataClass):
42
42
  wait = WebDriverWait(driver, 60)
43
43
  address_entry_field = wait.until(
44
44
  EC.presence_of_element_located(
45
- (By.XPATH, '//*[@id="combobox-input-20"]')
45
+ (By.XPATH, '//*[@id="combobox-input-22"]')
46
46
  )
47
47
  )
48
48
 
49
- address_entry_field.send_keys(str(full_address))
50
-
51
49
  address_entry_field = wait.until(
52
- EC.element_to_be_clickable((By.XPATH, '//*[@id="combobox-input-20"]'))
50
+ EC.element_to_be_clickable((By.XPATH, '//*[@id="combobox-input-22"]'))
53
51
  )
54
52
  address_entry_field.click()
53
+ address_entry_field.send_keys(str(full_address))
55
54
  address_entry_field.send_keys(Keys.BACKSPACE)
56
55
  address_entry_field.send_keys(str(full_address[len(full_address) - 1]))
57
56
 
58
57
  first_found_address = wait.until(
59
58
  EC.element_to_be_clickable(
60
- (By.XPATH, '//*[@id="dropdown-element-20"]/ul')
59
+ (By.XPATH, '//*[@id="dropdown-element-22"]/ul')
61
60
  )
62
61
  )
63
62
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uk_bin_collection
3
- Version: 0.137.0
3
+ Version: 0.138.1
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -3,7 +3,7 @@ uk_bin_collection/tests/check_selenium_url_in_input.json.py,sha256=Iecdja0I3XIiY
3
3
  uk_bin_collection/tests/council_feature_input_parity.py,sha256=DO6Mk4ImYgM5ZCZ-cutwz5RoYYWZRLYx2tr6zIs_9Rc,3843
4
4
  uk_bin_collection/tests/features/environment.py,sha256=VQZjJdJI_kZn08M0j5cUgvKT4k3iTw8icJge1DGOkoA,127
5
5
  uk_bin_collection/tests/features/validate_council_outputs.feature,sha256=SJK-Vc737hrf03tssxxbeg_JIvAH-ddB8f6gU1LTbuQ,251
6
- uk_bin_collection/tests/input.json,sha256=z7WZPptXZTQ49n322hbxD5wa6lpCz4y0WC0cCCkGsHQ,117511
6
+ uk_bin_collection/tests/input.json,sha256=acZWzLnjM5obEdPHHCQGqVC6-D01kCHzgtqPro5pj18,118188
7
7
  uk_bin_collection/tests/output.schema,sha256=ZwKQBwYyTDEM4G2hJwfLUVM-5v1vKRvRK9W9SS1sd18,1086
8
8
  uk_bin_collection/tests/step_defs/step_helpers/file_handler.py,sha256=Ygzi4V0S1MIHqbdstUlIqtRIwnynvhu4UtpweJ6-5N8,1474
9
9
  uk_bin_collection/tests/step_defs/test_validate_council.py,sha256=VZ0a81sioJULD7syAYHjvK_-nT_Rd36tUyzPetSA0gk,3475
@@ -121,10 +121,11 @@ uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py,sha256=eP_NnHtBLyflR
121
121
  uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py,sha256=RvPHhGbzP3mcjgWe2rIQux43UuDH7XofJGIKs7wJRe0,2060
122
122
  uk_bin_collection/uk_bin_collection/councils/FolkstoneandHytheDistrictCouncil.py,sha256=yKgZhua-2hjMihHshhncXVUBagbTOQBnNbKzdIZkWjw,3114
123
123
  uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py,sha256=YWT2GM2-bQ3Zh9ps1K14XRZfanuJOlV-zHpOOYMXAXY,4893
124
+ uk_bin_collection/uk_bin_collection/councils/FyldeCouncil.py,sha256=XkiOx-RAykEB75U2R_u69sKov9r5OMZgnZI61vHnN9Y,3026
124
125
  uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py,sha256=SRCgYhYs6rv_8C1UEDVORHZgXxcJkoZBjzdYS4Lu-ew,4531
125
126
  uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py,sha256=XzfFMCwclh9zAJgsbaj4jywjdiH0wPaFicaVsLrN3ms,2297
126
127
  uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py,sha256=9Rk9KfcglJvRhh4373OfRX-fwywE2xgwx5KejqzV5fE,3399
127
- uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=iMIlZMoBE4TG-ygw89zynvu-TlC4bWJ7g0vNH92JzHs,4890
128
+ uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py,sha256=67D8rbhn0t4rsCSJRTXZVtHmph2wT6rJiexNWKOnMok,4625
128
129
  uk_bin_collection/uk_bin_collection/councils/GooglePublicCalendarCouncil.py,sha256=DsheXk3sooWWKctIY3PbHI88HI7GfdgZ7qS-iSVCKYA,1140
129
130
  uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py,sha256=ueQ9xFiTxMUBTGV9VjtySHA1EFWliTM0AeNePBIG9ho,4568
130
131
  uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py,sha256=9pVrmQhZcK2AD8gX8mNvP--L4L9KaY6L3B822VX6fec,5695
@@ -136,6 +137,7 @@ uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py,sha256=t_6AkAu4w
136
137
  uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py,sha256=_g3fP5Nq-OUjgNrfRf4UEyFKzq0x8QK-4enh5RP1efA,2050
137
138
  uk_bin_collection/uk_bin_collection/councils/HartDistrictCouncil.py,sha256=_llxT4JYYlwm20ZtS3fXwtDs6mwJyLTZBP2wBhvEpWk,2342
138
139
  uk_bin_collection/uk_bin_collection/councils/HartlepoolBoroughCouncil.py,sha256=MUT1A24iZShT2p55rXEvgYwGUuw3W05Z4ZQAveehv-s,2842
140
+ uk_bin_collection/uk_bin_collection/councils/HastingsBoroughCouncil.py,sha256=9MCuit4awXSZTbZCXWBsQGX2tp2mHZ1eP1wENZdMvgA,1806
139
141
  uk_bin_collection/uk_bin_collection/councils/HerefordshireCouncil.py,sha256=JpQhkWM6Jeuzf1W7r0HqvtVnEqNi18nhwJX70YucdsI,1848
140
142
  uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py,sha256=-ThSG6NIJP_wf2GmGL7SAvxbOujdhanZ8ECP4VSQCBs,5415
141
143
  uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py,sha256=x7dfy8mdt2iGl8qJxHb-uBh4u0knmi9MJ6irOJw9WYA,4805
@@ -174,7 +176,7 @@ uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py,sha256=
174
176
  uk_bin_collection/uk_bin_collection/councils/MedwayCouncil.py,sha256=nBJSv09OUOascrfNu1ek1wNzE9ONu5ZkrBU-1qwDHJ0,1278
175
177
  uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py,sha256=xsOSX4KCcUHHo4BHB5JhFC9r5Q-h586Vk-5-X2VAJl0,2809
176
178
  uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py,sha256=oOWwU5FSgGej2Mv7FQ66N-EzS5nZgmGsd0WnfLWUc1I,5238
177
- uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py,sha256=RjBZ7R3_Pax9p1d2DCygqryjV1RP4BYvqb-rT_KyOEg,3322
179
+ uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py,sha256=8MxqGgOJVseMkrTmEMT0EyDW7UMbXMoa5ZcJ2nD55Ew,3367
178
180
  uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py,sha256=h6M-v5jVYe7OlQ47Vf-0pEgECZLOOacK3_XE6zbpsM4,6329
179
181
  uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py,sha256=AZgC9wmDLEjUOtIFvf0ehF5LHturXTH4DkE3ioPSVBA,6254
180
182
  uk_bin_collection/uk_bin_collection/councils/MiddlesbroughCouncil.py,sha256=l7amseG4fhyOiPWS3cbwUvE6gZSnS6V8o73vL5kxL_c,4056
@@ -286,7 +288,7 @@ uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py,sha256=dz
286
288
  uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py,sha256=fyskrQ4-osGOeCZuB_8m2TpW8iwHr7lpl52nrR06Xpo,4441
287
289
  uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py,sha256=mdAXKcoSSF-xnXS8boesFftS8RiKyuR76ITHQ9Q5DgM,4916
288
290
  uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py,sha256=wv-M3zZj0E6EIPoVB9AF_NCg_8XGM9uhqGa-F5yzoc4,2277
289
- uk_bin_collection/uk_bin_collection/councils/WalthamForest.py,sha256=mN-USLAG5bKQcEDAhuVjA-kDLkFWlE8OAwDOUjHdc3g,5028
291
+ uk_bin_collection/uk_bin_collection/councils/WalthamForest.py,sha256=0z7TmlnSNKP42Etk0FusbIo-NzA_Y-zqOJa4P8HykVk,4923
290
292
  uk_bin_collection/uk_bin_collection/councils/WandsworthCouncil.py,sha256=aQoJpC7YkhKewQyZlsv5m4__2IPoKRsOrPxjNH5xRNo,2594
291
293
  uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py,sha256=AB9mrV1v4pKKhfsBS8MpjO8XXBifqojSk53J9Q74Guk,1583
292
294
  uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py,sha256=DAL_f0BcIxFj7Ngkms5Q80kgSGp9y5zB35wRPudayz8,1644
@@ -301,7 +303,7 @@ uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py,sha25
301
303
  uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py,sha256=dq0jimtARvRkZiGbVFrXXZgY-BODtz3uYZ5UKn0bf64,4114
302
304
  uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py,sha256=jbqV3460rn9D0yTBGWjpSe1IvWWcdGur5pzgj-hJcQ4,2513
303
305
  uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py,sha256=Se3Cfn_6ADjhsUzEJI_JnGkVcIbXxSTferM4ZC6pZ0g,1166
304
- uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py,sha256=EaKP1djwJCBb3R_rBkKv1GUphdg7U09xpb58yNgsfHs,4859
306
+ uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py,sha256=Cicz5ywn7YD-g4yiRxp5TGLuJFPBatw6y4mS_pBkblo,4858
305
307
  uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py,sha256=9i8AQHh-qIRPZ_5Ad97_h04-qgyLQDPV064obBzab1Y,2587
306
308
  uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py,sha256=3gqFA4-BVx_In6QOu3KUNqPN4Fkn9iMlZTeopMK9p6A,3746
307
309
  uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py,sha256=Q0ooHTQb9ynMXpSNBPk7XXEjI7zcHst3id4wxGdmVx4,5698
@@ -319,8 +321,8 @@ uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bId
319
321
  uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=EQWRhZ2pEejlvm0fPyOTsOHKvUZmPnxEYO_OWRGKTjs,1158
320
322
  uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
321
323
  uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
322
- uk_bin_collection-0.137.0.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
323
- uk_bin_collection-0.137.0.dist-info/METADATA,sha256=_mc1mfVauQD8RLPBsVM1F9aYNhddWsEzYC-KRiQhZkE,19851
324
- uk_bin_collection-0.137.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
325
- uk_bin_collection-0.137.0.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
326
- uk_bin_collection-0.137.0.dist-info/RECORD,,
324
+ uk_bin_collection-0.138.1.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
325
+ uk_bin_collection-0.138.1.dist-info/METADATA,sha256=Ou6pY68sx1H_I3oRWLDjb1hx0XCDGAX5jecP9tO0pYQ,19851
326
+ uk_bin_collection-0.138.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
327
+ uk_bin_collection-0.138.1.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
328
+ uk_bin_collection-0.138.1.dist-info/RECORD,,