uk_bin_collection 0.111.0__py3-none-any.whl → 0.112.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- uk_bin_collection/tests/input.json +391 -199
- uk_bin_collection/tests/test_collect_data.py +0 -1
- uk_bin_collection/tests/test_common_functions.py +4 -2
- uk_bin_collection/tests/test_conftest.py +13 -2
- uk_bin_collection/tests/test_get_data.py +34 -19
- uk_bin_collection/uk_bin_collection/common.py +1 -0
- uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +6 -5
- uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +11 -6
- uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py +49 -36
- {uk_bin_collection-0.111.0.dist-info → uk_bin_collection-0.112.0.dist-info}/METADATA +1 -1
- {uk_bin_collection-0.111.0.dist-info → uk_bin_collection-0.112.0.dist-info}/RECORD +14 -14
- {uk_bin_collection-0.111.0.dist-info → uk_bin_collection-0.112.0.dist-info}/LICENSE +0 -0
- {uk_bin_collection-0.111.0.dist-info → uk_bin_collection-0.112.0.dist-info}/WHEEL +0 -0
- {uk_bin_collection-0.111.0.dist-info → uk_bin_collection-0.112.0.dist-info}/entry_points.txt +0 -0
@@ -430,8 +430,10 @@ def test_string_with_whitespace_and_numbers():
|
|
430
430
|
)
|
431
431
|
def test_get_next_day_of_week(today_str, day_name, expected):
|
432
432
|
mock_today = datetime.strptime(today_str, "%Y-%m-%d")
|
433
|
-
with patch(
|
433
|
+
with patch(
|
434
|
+
"uk_bin_collection.common.datetime"
|
435
|
+
) as mock_datetime: # replace 'your_module' with the actual module name
|
434
436
|
mock_datetime.now.return_value = mock_today
|
435
437
|
mock_datetime.side_effect = lambda *args, **kw: datetime(*args, **kw)
|
436
438
|
result = get_next_day_of_week(day_name, date_format="%m/%d/%Y")
|
437
|
-
assert result == expected
|
439
|
+
assert result == expected
|
@@ -2,26 +2,37 @@ import pytest
|
|
2
2
|
|
3
3
|
# Test the command-line options
|
4
4
|
|
5
|
+
|
5
6
|
def test_headless_mode(pytestconfig):
|
6
7
|
# Simulate pytest command-line option
|
7
8
|
headless_mode_value = pytestconfig.getoption("--headless")
|
8
9
|
assert headless_mode_value == "True" # This should match the default value
|
9
10
|
|
11
|
+
|
10
12
|
def test_local_browser(pytestconfig):
|
11
13
|
local_browser_value = pytestconfig.getoption("--local_browser")
|
12
14
|
assert local_browser_value == "False" # This should match the default value
|
13
15
|
|
16
|
+
|
14
17
|
def test_selenium_url(pytestconfig):
|
15
18
|
selenium_url_value = pytestconfig.getoption("--selenium_url")
|
16
|
-
assert
|
19
|
+
assert (
|
20
|
+
selenium_url_value == "http://localhost:4444"
|
21
|
+
) # This should match the default value
|
22
|
+
|
17
23
|
|
18
24
|
# Test the fixtures
|
19
25
|
|
26
|
+
|
20
27
|
def test_headless_mode_fixture(headless_mode):
|
21
28
|
assert headless_mode == "True" # This should match the default value
|
22
29
|
|
30
|
+
|
23
31
|
def test_local_browser_fixture(local_browser):
|
24
32
|
assert local_browser == "False" # This should match the default value
|
25
33
|
|
34
|
+
|
26
35
|
def test_selenium_url_fixture(selenium_url):
|
27
|
-
assert
|
36
|
+
assert (
|
37
|
+
selenium_url == "http://localhost:4444"
|
38
|
+
) # This should match the default value
|
@@ -105,8 +105,10 @@ def test_output_json():
|
|
105
105
|
assert type(output) == str
|
106
106
|
assert output == '{\n "bin": ""\n}'
|
107
107
|
|
108
|
+
|
108
109
|
class ConcreteGetBinDataClass(agbdc):
|
109
110
|
"""Concrete implementation of the abstract class to test abstract methods."""
|
111
|
+
|
110
112
|
def parse_data(self, page: str, **kwargs) -> dict:
|
111
113
|
return {"mock_key": "mock_value"}
|
112
114
|
|
@@ -114,33 +116,46 @@ class ConcreteGetBinDataClass(agbdc):
|
|
114
116
|
# You can implement the method or delegate it to the abstract class's method
|
115
117
|
super().update_dev_mode_data(council_module_str, this_url, **kwargs)
|
116
118
|
|
119
|
+
|
117
120
|
@pytest.fixture
|
118
121
|
def concrete_class_instance():
|
119
122
|
return ConcreteGetBinDataClass()
|
120
123
|
|
124
|
+
|
121
125
|
def test_get_and_parse_data_no_skip_get_url(concrete_class_instance):
|
122
126
|
mock_page = "mocked page content"
|
123
127
|
mock_parsed_data = {"mock_key": "mock_value"}
|
124
128
|
|
125
|
-
with mock.patch.object(
|
126
|
-
|
127
|
-
|
129
|
+
with mock.patch.object(
|
130
|
+
concrete_class_instance, "get_data", return_value=mock_page
|
131
|
+
) as mock_get_data, mock.patch.object(
|
132
|
+
concrete_class_instance, "parse_data", return_value=mock_parsed_data
|
133
|
+
) as mock_parse_data:
|
134
|
+
|
128
135
|
result = concrete_class_instance.get_and_parse_data("http://example.com")
|
129
136
|
|
130
137
|
mock_get_data.assert_called_once_with("http://example.com")
|
131
138
|
mock_parse_data.assert_called_once_with(mock_page, url="http://example.com")
|
132
139
|
assert result == mock_parsed_data
|
133
140
|
|
141
|
+
|
134
142
|
def test_get_and_parse_data_skip_get_url(concrete_class_instance):
|
135
143
|
mock_parsed_data = {"mock_key": "mock_value"}
|
136
144
|
|
137
|
-
with mock.patch.object(
|
138
|
-
|
139
|
-
|
145
|
+
with mock.patch.object(
|
146
|
+
concrete_class_instance, "parse_data", return_value=mock_parsed_data
|
147
|
+
) as mock_parse_data:
|
148
|
+
|
149
|
+
result = concrete_class_instance.get_and_parse_data(
|
150
|
+
"http://example.com", skip_get_url=True
|
151
|
+
)
|
140
152
|
|
141
|
-
mock_parse_data.assert_called_once_with(
|
153
|
+
mock_parse_data.assert_called_once_with(
|
154
|
+
"", url="http://example.com", skip_get_url=True
|
155
|
+
)
|
142
156
|
assert result == mock_parsed_data
|
143
|
-
|
157
|
+
|
158
|
+
|
144
159
|
@pytest.fixture
|
145
160
|
def setup_test_update_dev_mode_data():
|
146
161
|
"""Fixture to set up and tear down the environment for test_update_dev_mode_data"""
|
@@ -148,7 +163,7 @@ def setup_test_update_dev_mode_data():
|
|
148
163
|
test_dir = tempfile.TemporaryDirectory()
|
149
164
|
|
150
165
|
# Patch os.getcwd() to return the temporary directory
|
151
|
-
cwd_patch = patch(
|
166
|
+
cwd_patch = patch("os.getcwd", return_value=test_dir.name)
|
152
167
|
mock_getcwd = cwd_patch.start()
|
153
168
|
|
154
169
|
# Ensure the nested directory structure exists
|
@@ -171,15 +186,15 @@ def test_update_dev_mode_data(setup_test_update_dev_mode_data):
|
|
171
186
|
obj = ConcreteGetBinDataClass()
|
172
187
|
|
173
188
|
# Define input arguments for the method
|
174
|
-
council_module_str =
|
175
|
-
this_url =
|
189
|
+
council_module_str = "test_council_module"
|
190
|
+
this_url = "https://example.com"
|
176
191
|
kwargs = {
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
192
|
+
"postcode": "12345",
|
193
|
+
"paon": "1A",
|
194
|
+
"uprn": "100012345",
|
195
|
+
"usrn": "200012345",
|
196
|
+
"web_driver": "mocked_web_driver",
|
197
|
+
"skip_get_url": True,
|
183
198
|
}
|
184
199
|
|
185
200
|
# Call the method being tested on the instance
|
@@ -190,8 +205,8 @@ def test_update_dev_mode_data(setup_test_update_dev_mode_data):
|
|
190
205
|
assert os.path.exists(input_file_path)
|
191
206
|
|
192
207
|
# Read the contents of the file and make necessary assertions
|
193
|
-
with open(input_file_path,
|
208
|
+
with open(input_file_path, "r") as f:
|
194
209
|
file_content = f.read()
|
195
210
|
|
196
211
|
# Example assertion - check if certain values exist in the file content (based on your actual file format)
|
197
|
-
assert
|
212
|
+
assert "100012345" in file_content # Checking UPRN as an example
|
@@ -27,13 +27,14 @@ def parse_bin_text(bin_type_str: str, bin_date_str: str) -> List[Dict[str, str]]
|
|
27
27
|
bin_date = datetime.strptime(bin_date_str, "%A, %B %d, %Y")
|
28
28
|
|
29
29
|
for bin_type in bin_type_str.split(", "):
|
30
|
-
bins.append(
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
bins.append(
|
31
|
+
{
|
32
|
+
"type": bin_type.strip() + " bin",
|
33
|
+
"collectionDate": bin_date.strftime(date_format),
|
34
|
+
}
|
35
|
+
)
|
34
36
|
|
35
37
|
return bins
|
36
|
-
|
37
38
|
|
38
39
|
class CouncilClass(AbstractGetBinDataClass):
|
39
40
|
"""
|
@@ -1,7 +1,10 @@
|
|
1
1
|
import requests
|
2
2
|
import json
|
3
3
|
from datetime import datetime
|
4
|
-
from uk_bin_collection.uk_bin_collection.common import
|
4
|
+
from uk_bin_collection.uk_bin_collection.common import (
|
5
|
+
check_uprn,
|
6
|
+
date_format as DATE_FORMAT,
|
7
|
+
)
|
5
8
|
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
6
9
|
|
7
10
|
|
@@ -11,15 +14,15 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
11
14
|
"""
|
12
15
|
|
13
16
|
def parse_data(self, page: str, **kwargs) -> dict:
|
14
|
-
url_base =
|
17
|
+
url_base = (
|
18
|
+
"https://basildonportal.azurewebsites.net/api/getPropertyRefuseInformation"
|
19
|
+
)
|
15
20
|
|
16
21
|
uprn = kwargs.get("uprn")
|
17
22
|
# Check the UPRN is valid
|
18
23
|
check_uprn(uprn)
|
19
24
|
|
20
|
-
payload = {
|
21
|
-
"uprn": uprn
|
22
|
-
}
|
25
|
+
payload = {"uprn": uprn}
|
23
26
|
|
24
27
|
headers = {"Content-Type": "application/json"}
|
25
28
|
|
@@ -36,7 +39,9 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
36
39
|
bins.append(
|
37
40
|
{
|
38
41
|
"type": service_name,
|
39
|
-
"collectionDate": collection_data.get(
|
42
|
+
"collectionDate": collection_data.get(
|
43
|
+
"current_collection_date"
|
44
|
+
),
|
40
45
|
}
|
41
46
|
)
|
42
47
|
|
@@ -15,6 +15,7 @@ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
15
15
|
|
16
16
|
_LOGGER = logging.getLogger(__name__)
|
17
17
|
|
18
|
+
|
18
19
|
class CouncilClass(AbstractGetBinDataClass):
|
19
20
|
"""
|
20
21
|
Implementation for Chesterfield Borough Council waste collection data retrieval.
|
@@ -56,7 +57,9 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
56
57
|
session.get(API_URLS["session"], headers=HEADERS, verify=False)
|
57
58
|
|
58
59
|
# Step 2: Get fwuid
|
59
|
-
fwuid_response = session.get(
|
60
|
+
fwuid_response = session.get(
|
61
|
+
API_URLS["fwuid"], headers=HEADERS, verify=False
|
62
|
+
)
|
60
63
|
fwuid_data = fwuid_response.json()
|
61
64
|
fwuid = fwuid_data.get("auraConfig", {}).get("context", {}).get("fwuid")
|
62
65
|
|
@@ -66,50 +69,58 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
66
69
|
|
67
70
|
# Step 3: Prepare payload for UPRN search
|
68
71
|
payload = {
|
69
|
-
"message": json.dumps(
|
70
|
-
|
71
|
-
"
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
72
|
+
"message": json.dumps(
|
73
|
+
{
|
74
|
+
"actions": [
|
75
|
+
{
|
76
|
+
"id": "4;a",
|
77
|
+
"descriptor": "aura://ApexActionController/ACTION$execute",
|
78
|
+
"callingDescriptor": "UNKNOWN",
|
79
|
+
"params": {
|
80
|
+
"namespace": "",
|
81
|
+
"classname": "CBC_VE_CollectionDays",
|
82
|
+
"method": "getServicesByUPRN",
|
83
|
+
"params": {
|
84
|
+
"propertyUprn": user_uprn,
|
85
|
+
"executedFrom": "Main Website",
|
86
|
+
},
|
87
|
+
"cacheable": False,
|
88
|
+
"isContinuation": False,
|
89
|
+
},
|
90
|
+
}
|
91
|
+
]
|
92
|
+
}
|
93
|
+
),
|
94
|
+
"aura.context": json.dumps(
|
95
|
+
{
|
96
|
+
"mode": "PROD",
|
97
|
+
"fwuid": fwuid,
|
98
|
+
"app": "c:cbc_VE_CollectionDaysLO",
|
99
|
+
"loaded": {
|
100
|
+
"APPLICATION@markup://c:cbc_VE_CollectionDaysLO": "pqeNg7kPWCbx1pO8sIjdLA"
|
101
|
+
},
|
102
|
+
"dn": [],
|
103
|
+
"globals": {},
|
104
|
+
"uad": True,
|
105
|
+
}
|
106
|
+
),
|
98
107
|
"aura.pageURI": "/bins-and-recycling/bin-collections/check-bin-collections.aspx",
|
99
108
|
"aura.token": "null",
|
100
109
|
}
|
101
110
|
|
102
111
|
# Step 4: Make POST request to fetch collection data
|
103
112
|
search_response = session.post(
|
104
|
-
API_URLS["search"],
|
105
|
-
data=payload,
|
106
|
-
headers=HEADERS,
|
107
|
-
verify=False
|
113
|
+
API_URLS["search"], data=payload, headers=HEADERS, verify=False
|
108
114
|
)
|
109
115
|
search_data = search_response.json()
|
110
116
|
|
111
117
|
# Step 5: Extract service units
|
112
|
-
service_units =
|
118
|
+
service_units = (
|
119
|
+
search_data.get("actions", [])[0]
|
120
|
+
.get("returnValue", {})
|
121
|
+
.get("returnValue", {})
|
122
|
+
.get("serviceUnits", [])
|
123
|
+
)
|
113
124
|
|
114
125
|
if not service_units:
|
115
126
|
_LOGGER.warning("No service units found for the given UPRN.")
|
@@ -141,7 +152,9 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
141
152
|
|
142
153
|
# Extract the next scheduled date
|
143
154
|
try:
|
144
|
-
dt_zulu = item["serviceTasks"][0]["serviceTaskSchedules"][0][
|
155
|
+
dt_zulu = item["serviceTasks"][0]["serviceTaskSchedules"][0][
|
156
|
+
"nextInstance"
|
157
|
+
]["currentScheduledDate"]
|
145
158
|
dt_utc = datetime.strptime(dt_zulu, "%Y-%m-%dT%H:%M:%S.%f%z")
|
146
159
|
dt_local = dt_utc.astimezone(None)
|
147
160
|
collection_date = dt_local.date()
|
@@ -2,16 +2,16 @@ uk_bin_collection/README.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
2
2
|
uk_bin_collection/tests/council_feature_input_parity.py,sha256=DO6Mk4ImYgM5ZCZ-cutwz5RoYYWZRLYx2tr6zIs_9Rc,3843
|
3
3
|
uk_bin_collection/tests/features/environment.py,sha256=VQZjJdJI_kZn08M0j5cUgvKT4k3iTw8icJge1DGOkoA,127
|
4
4
|
uk_bin_collection/tests/features/validate_council_outputs.feature,sha256=SJK-Vc737hrf03tssxxbeg_JIvAH-ddB8f6gU1LTbuQ,251
|
5
|
-
uk_bin_collection/tests/input.json,sha256=
|
5
|
+
uk_bin_collection/tests/input.json,sha256=MzVqGem8V4TCIPWSIDQy5r8er_SRhBQcxGoBEzmETHY,98036
|
6
6
|
uk_bin_collection/tests/output.schema,sha256=ZwKQBwYyTDEM4G2hJwfLUVM-5v1vKRvRK9W9SS1sd18,1086
|
7
7
|
uk_bin_collection/tests/step_defs/step_helpers/file_handler.py,sha256=Ygzi4V0S1MIHqbdstUlIqtRIwnynvhu4UtpweJ6-5N8,1474
|
8
8
|
uk_bin_collection/tests/step_defs/test_validate_council.py,sha256=VZ0a81sioJULD7syAYHjvK_-nT_Rd36tUyzPetSA0gk,3475
|
9
|
-
uk_bin_collection/tests/test_collect_data.py,sha256=
|
10
|
-
uk_bin_collection/tests/test_common_functions.py,sha256=
|
11
|
-
uk_bin_collection/tests/test_conftest.py,sha256=
|
12
|
-
uk_bin_collection/tests/test_get_data.py,sha256=
|
9
|
+
uk_bin_collection/tests/test_collect_data.py,sha256=zmj15cb3BWc_ehPqkfzBSa6GZr0txvWumgbAk3Lyyf0,2252
|
10
|
+
uk_bin_collection/tests/test_common_functions.py,sha256=xvG9_ZihGSwHHAqfXZ6aKSEnoQXhjef7evhcPkBlHeI,14099
|
11
|
+
uk_bin_collection/tests/test_conftest.py,sha256=qI_zgGjNOnwE9gmZUiuirL1SYz3TFw5yfGFgT4T3aG4,1100
|
12
|
+
uk_bin_collection/tests/test_get_data.py,sha256=sFJz_Fd6o-1r2gdmzY52JGwVi0Of_mDzvYSoc7a3RUw,7239
|
13
13
|
uk_bin_collection/uk_bin_collection/collect_data.py,sha256=dB7wWXsJX4fm5bIf84lexkvHIcO54CZ3JPxqmS-60YY,4654
|
14
|
-
uk_bin_collection/uk_bin_collection/common.py,sha256=
|
14
|
+
uk_bin_collection/uk_bin_collection/common.py,sha256=fJG9ruqsCYOaYm-fzRb_l5kTeeB7i9k7qphWt3t7kks,10107
|
15
15
|
uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py,sha256=aO1CSdyqa8oAD0fB79y1Q9bikAWCP_JFa7CsyTa2j9s,1655
|
16
16
|
uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py,sha256=ppbrmm-MzB1wOulK--CU_0j4P-djNf3ozMhHnmQFqLo,1511
|
17
17
|
uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py,sha256=iMBldxNErgi-ok1o6xpqdNgMvR6qapaNqoTWDTqMeGo,3824
|
@@ -21,8 +21,8 @@ uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py,sha256=yC-
|
|
21
21
|
uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py,sha256=LouqjspEMt1TkOGqWHs2zkxwOETIy3n7p64uKIlAgUg,2401
|
22
22
|
uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py,sha256=W7QBx6Mgso8RYosuXsaYo3GGNAu-tiyBSmuYxr1JSOU,1707
|
23
23
|
uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py,sha256=Sd4-pbv0QZsR7soxvXYqsfdOUIqZqS6notyoZthG77s,9182
|
24
|
-
uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py,sha256=
|
25
|
-
uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py,sha256=
|
24
|
+
uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py,sha256=RKuH8HzGc3Q0WtLg-g_xVMn9hUYqdENgfcvvR4Bx5PI,4763
|
25
|
+
uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py,sha256=NymPmq5pud0PJ8ePcc2r1SKED4EHQ0EY2l71O-Metxc,3313
|
26
26
|
uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py,sha256=VPWGljnH4C3q8qs5ZmCtqjNjgWQvviALzjk00q3EZeQ,2632
|
27
27
|
uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py,sha256=N_TPiIv8VBzN3rY0p3JtLlxSEru-6k1wW4UNIhN5X1M,3709
|
28
28
|
uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py,sha256=CvGB7w9HMn7XyEtwfd9MWZE_HlZ75pDcaKMsQJz0xhk,1669
|
@@ -53,7 +53,7 @@ uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py,sha256=t
|
|
53
53
|
uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py,sha256=EB88D0MNJwuDZ2GX1ENc5maGYx17mnHTCtNl6s-v11E,5090
|
54
54
|
uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py,sha256=aMqT5sy1Z1gklFO5Xl893OgeBmpf19OwpizWEKWQ3hg,1680
|
55
55
|
uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py,sha256=xsJcx-Dcds0ZcX2vZ-xHVkCg-faQRvbhrJzRDY6Lguw,4779
|
56
|
-
uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py,sha256=
|
56
|
+
uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py,sha256=mZiM8Ugm_OP0JkC5pLaQmi4i79mAp4SNNrcIdsREjHw,7198
|
57
57
|
uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py,sha256=HxrLcJves7ZsE8FbooymeecTUmScY4R7Oi71vwCePPo,4118
|
58
58
|
uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py,sha256=M7HjuUaFq8aSnOf_9m1QS4MmPPMmPhF3mLHSrfDPtV0,5194
|
59
59
|
uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py,sha256=Mny-q2rQkWe2Tj1gINwEM1L4AkqQl1EDMAaKY0-deD4,3968
|
@@ -246,8 +246,8 @@ uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bId
|
|
246
246
|
uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=EQWRhZ2pEejlvm0fPyOTsOHKvUZmPnxEYO_OWRGKTjs,1158
|
247
247
|
uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
|
248
248
|
uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
|
249
|
-
uk_bin_collection-0.
|
250
|
-
uk_bin_collection-0.
|
251
|
-
uk_bin_collection-0.
|
252
|
-
uk_bin_collection-0.
|
253
|
-
uk_bin_collection-0.
|
249
|
+
uk_bin_collection-0.112.0.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
|
250
|
+
uk_bin_collection-0.112.0.dist-info/METADATA,sha256=At6TmeZOHQNeiAMHiLqAzbHou791eqks5d1WNk-B0wQ,17574
|
251
|
+
uk_bin_collection-0.112.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
252
|
+
uk_bin_collection-0.112.0.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
|
253
|
+
uk_bin_collection-0.112.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{uk_bin_collection-0.111.0.dist-info → uk_bin_collection-0.112.0.dist-info}/entry_points.txt
RENAMED
File without changes
|