uk_bin_collection 0.111.0__py3-none-any.whl → 0.112.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|