chellow 1733390302.0.0__py3-none-any.whl → 1734005435.0.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.

Potentially problematic release.


This version of chellow might be problematic. Click here for more details.

Files changed (49) hide show
  1. chellow/__init__.py +0 -1
  2. chellow/e/bill_parsers/mm.py +27 -5
  3. chellow/e/computer.py +1 -7
  4. chellow/e/views.py +126 -10
  5. chellow/gas/engine.py +1 -3
  6. chellow/gas/views.py +3 -2
  7. chellow/reports/report_109.py +2 -3
  8. chellow/reports/report_111.py +2 -3
  9. chellow/reports/report_169.py +2 -3
  10. chellow/reports/report_181.py +2 -3
  11. chellow/reports/report_183.py +3 -4
  12. chellow/reports/report_187.py +2 -3
  13. chellow/reports/report_219.py +2 -3
  14. chellow/reports/report_231.py +2 -3
  15. chellow/reports/report_233.py +2 -3
  16. chellow/reports/report_241.py +2 -3
  17. chellow/reports/report_247.py +2 -3
  18. chellow/reports/report_29.py +2 -3
  19. chellow/reports/report_291.py +2 -3
  20. chellow/reports/report_33.py +2 -3
  21. chellow/reports/report_387.py +2 -3
  22. chellow/reports/report_41.py +2 -3
  23. chellow/reports/report_429.py +2 -3
  24. chellow/reports/report_59.py +2 -3
  25. chellow/reports/report_81.py +2 -3
  26. chellow/reports/report_87.py +3 -7
  27. chellow/reports/report_asset_comparison.py +2 -3
  28. chellow/reports/report_batches.py +2 -3
  29. chellow/reports/report_bills.py +4 -3
  30. chellow/reports/report_csv_llfcs.py +2 -3
  31. chellow/reports/report_csv_site_hh_data.py +2 -3
  32. chellow/reports/report_csv_site_snags.py +2 -3
  33. chellow/reports/report_ecoes_comparison.py +2 -3
  34. chellow/reports/report_g_monthly_duration.py +2 -3
  35. chellow/reports/report_g_supplies_snapshot.py +2 -3
  36. chellow/reports/report_g_supply_virtual_bill.py +2 -3
  37. chellow/reports/report_g_virtual_bills.py +2 -3
  38. chellow/reports/report_g_virtual_bills_hh.py +2 -3
  39. chellow/reports/report_sscs.py +2 -3
  40. chellow/reports/report_supply_contacts.py +2 -3
  41. chellow/templates/e/dc_contract_properties_edit.html +10 -10
  42. chellow/templates/e/site_hh_data.html +73 -49
  43. chellow/templates/site.html +1 -1
  44. chellow/utils.py +0 -2
  45. chellow/views.py +33 -167
  46. {chellow-1733390302.0.0.dist-info → chellow-1734005435.0.0.dist-info}/METADATA +1 -1
  47. {chellow-1733390302.0.0.dist-info → chellow-1734005435.0.0.dist-info}/RECORD +48 -49
  48. chellow/templates/site_hh_data.html +0 -75
  49. {chellow-1733390302.0.0.dist-info → chellow-1734005435.0.0.dist-info}/WHEEL +0 -0
chellow/views.py CHANGED
@@ -10,7 +10,6 @@ import traceback
10
10
  import types
11
11
  from collections import OrderedDict
12
12
  from datetime import datetime as Datetime
13
- from decimal import Decimal
14
13
  from functools import wraps
15
14
  from importlib import import_module
16
15
  from io import DEFAULT_BUFFER_SIZE, StringIO
@@ -50,7 +49,6 @@ from sqlalchemy import (
50
49
  true,
51
50
  )
52
51
  from sqlalchemy.exc import IntegrityError
53
- from sqlalchemy.orm import joinedload
54
52
  from sqlalchemy.orm.attributes import flag_modified
55
53
 
56
54
  from werkzeug.exceptions import BadRequest, Forbidden
@@ -135,19 +133,9 @@ from chellow.utils import (
135
133
  home = Blueprint("home", __name__, url_prefix="", template_folder="templates")
136
134
 
137
135
 
138
- def chellow_redirect(path, code=None):
139
- location = chellow.utils.url_root + path
140
- if code is None:
141
- res = redirect(location)
142
- else:
143
- res = redirect(location, code)
144
-
145
- return res
146
-
147
-
148
136
  def hx_redirect(path, status=None):
149
137
  res = Response(status=status)
150
- res.headers["HX-Redirect"] = chellow.utils.url_root + path
138
+ res.headers["HX-Redirect"] = path
151
139
  return res
152
140
 
153
141
 
@@ -165,7 +153,7 @@ def requires_editor(f):
165
153
  @home.route("/configuration", methods=["GET"])
166
154
  def configuration():
167
155
  config = Contract.get_non_core_by_name(g.sess, "configuration")
168
- return chellow_redirect(f"/non_core_contracts/{config.id}")
156
+ return redirect(f"/non_core_contracts/{config.id}")
169
157
 
170
158
 
171
159
  @home.route("/health")
@@ -215,7 +203,7 @@ def local_reports_post():
215
203
  return Response("There's already a report with that name.", status=400)
216
204
  else:
217
205
  raise
218
- return chellow_redirect(f"/local_reports/{report.id}", 303)
206
+ return redirect(f"/local_reports/{report.id}", 303)
219
207
 
220
208
 
221
209
  @home.route("/local_reports/<int:report_id>")
@@ -229,7 +217,7 @@ def local_report_post(report_id):
229
217
  report = Report.get_by_id(g.sess, report_id)
230
218
  if "delete" in request.values:
231
219
  g.sess.delete(report)
232
- return chellow_redirect("/local_reports", 303)
220
+ return redirect("/local_reports", 303)
233
221
 
234
222
  else:
235
223
  name = req_str("name")
@@ -243,7 +231,7 @@ def local_report_post(report_id):
243
231
  return Response("There's already a report with that name.", status=400)
244
232
  else:
245
233
  raise
246
- return chellow_redirect(f"/local_reports/{report.id}", 303)
234
+ return redirect(f"/local_reports/{report.id}", 303)
247
235
 
248
236
 
249
237
  @home.route("/scenarios")
@@ -259,7 +247,7 @@ def scenario_add_post():
259
247
  properties = req_zish("properties")
260
248
  scenario = Scenario.insert(g.sess, name, properties)
261
249
  g.sess.commit()
262
- return chellow_redirect(f"/scenarios/{scenario.id}", 303)
250
+ return redirect(f"/scenarios/{scenario.id}", 303)
263
251
  except BadRequest as e:
264
252
  g.sess.rollback()
265
253
  flash(e.description)
@@ -352,16 +340,13 @@ def scenario_edit_post(scenario_id):
352
340
  properties = req_zish("properties")
353
341
  scenario.update(name, properties)
354
342
  g.sess.commit()
355
- return chellow_redirect(f"/scenarios/{scenario.id}", 303)
343
+ return redirect(f"/scenarios/{scenario.id}", 303)
356
344
  except BadRequest as e:
357
345
  g.sess.rollback()
358
346
  description = e.description
359
347
  flash(description)
360
348
  return make_response(
361
- render_template(
362
- "scenario_edit.html",
363
- scenario=scenario,
364
- ),
349
+ render_template("scenario_edit.html", scenario=scenario),
365
350
  400,
366
351
  )
367
352
 
@@ -372,9 +357,7 @@ def scenario_edit_delete(scenario_id):
372
357
  scenario = Scenario.get_by_id(g.sess, scenario_id)
373
358
  scenario.delete(g.sess)
374
359
  g.sess.commit()
375
- res = make_response()
376
- res.headers["HX-Redirect"] = f"{chellow.utils.url_root}/e/scenarios"
377
- return res
360
+ return hx_redirect("/scenarios")
378
361
  except BadRequest as e:
379
362
  g.sess.rollback()
380
363
  flash(e.description)
@@ -633,7 +616,7 @@ def users_post():
633
616
  party = g.sess.query(Party).get(party_id)
634
617
  user = User.insert(g.sess, email_address, password, role, party)
635
618
  g.sess.commit()
636
- return chellow_redirect("/users/" + str(user.id), 303)
619
+ return redirect("/users/" + str(user.id), 303)
637
620
  except BadRequest as e:
638
621
  g.sess.rollback()
639
622
  flash(e.description)
@@ -669,11 +652,11 @@ def user_post(user_id):
669
652
  raise BadRequest("The password must be at least 6 characters long.")
670
653
  user.set_password(new_password)
671
654
  g.sess.commit()
672
- return chellow_redirect("/users/" + str(user.id), 303)
655
+ return redirect("/users/" + str(user.id), 303)
673
656
  elif "delete" in request.values:
674
657
  g.sess.delete(user)
675
658
  g.sess.commit()
676
- return chellow_redirect("/users", 303)
659
+ return redirect("/users", 303)
677
660
  else:
678
661
  email_address = req_str("email_address")
679
662
  user_role_code = req_str("user_role_code")
@@ -684,7 +667,7 @@ def user_post(user_id):
684
667
  party = Party.get_by_id(g.sess, party_id)
685
668
  user.update(email_address, user_role, party)
686
669
  g.sess.commit()
687
- return chellow_redirect("/users/" + str(user.id), 303)
670
+ return redirect("/users/" + str(user.id), 303)
688
671
  except BadRequest as e:
689
672
  flash(e.description)
690
673
  parties = (
@@ -743,7 +726,7 @@ def general_imports_post():
743
726
  )
744
727
  f.seek(0)
745
728
  proc_id = chellow.general_import.start_process(f)
746
- return chellow_redirect("/general_imports/" + str(proc_id), 303)
729
+ return redirect(f"/general_imports/{proc_id}", 303)
747
730
  except BadRequest as e:
748
731
  flash(e.description)
749
732
  return render_template(
@@ -921,7 +904,7 @@ def site_edit_post(site_id):
921
904
  site.delete(g.sess)
922
905
  g.sess.commit()
923
906
  flash("Site deleted successfully.")
924
- return chellow_redirect("/sites", 303)
907
+ return redirect("/sites", 303)
925
908
 
926
909
  elif "update" in request.form:
927
910
  code = req_str("code")
@@ -929,7 +912,7 @@ def site_edit_post(site_id):
929
912
  site.update(code, name)
930
913
  g.sess.commit()
931
914
  flash("Site updated successfully.")
932
- return chellow_redirect(f"/sites/{site.id}", 303)
915
+ return redirect(f"/sites/{site.id}", 303)
933
916
 
934
917
  elif "insert_gas" in request.form:
935
918
  name = req_str("name")
@@ -967,7 +950,7 @@ def site_edit_post(site_id):
967
950
  soq,
968
951
  )
969
952
  g.sess.commit()
970
- return chellow_redirect(f"/g/supplies/{g_supply.id}", 303)
953
+ return redirect(f"/g/supplies/{g_supply.id}", 303)
971
954
  else:
972
955
  raise BadRequest(
973
956
  "The request must contain one of the following parameter names: "
@@ -1049,7 +1032,7 @@ def site_add_post():
1049
1032
  name = req_str("name")
1050
1033
  site = Site.insert(g.sess, code, name)
1051
1034
  g.sess.commit()
1052
- return chellow_redirect("/sites/" + str(site.id), 303)
1035
+ return redirect(f"/sites/{site.id}", 303)
1053
1036
  except BadRequest as e:
1054
1037
  flash(e.description)
1055
1038
  return render_template("site_add.html")
@@ -1079,7 +1062,7 @@ def sites_get():
1079
1062
  )
1080
1063
 
1081
1064
  if len(sites) == 1:
1082
- return chellow_redirect(f"/sites/{sites[0].id}")
1065
+ return redirect(f"/sites/{sites[0].id}")
1083
1066
  else:
1084
1067
  return render_template("sites.html", sites=sites, limit=LIMIT)
1085
1068
  else:
@@ -1147,9 +1130,9 @@ limit :max_results"""
1147
1130
  )
1148
1131
 
1149
1132
  if len(e_eras) == 1 and len(g_eras) == 0:
1150
- return chellow_redirect(f"/e/supplies/{e_eras[0].supply.id}", 307)
1133
+ return redirect(f"/e/supplies/{e_eras[0].supply.id}", 307)
1151
1134
  elif len(e_eras) == 0 and len(g_eras) == 1:
1152
- return chellow_redirect(f"/g/supplies/{g_eras[0].g_supply.id}", 307)
1135
+ return redirect(f"/g/supplies/{g_eras[0].g_supply.id}", 307)
1153
1136
  else:
1154
1137
  return render_template(
1155
1138
  "supplies.html", e_eras=e_eras, g_eras=g_eras, max_results=max_results
@@ -1170,123 +1153,6 @@ def report_post(report_id):
1170
1153
  return report_module.do_post(g.sess)
1171
1154
 
1172
1155
 
1173
- @home.route("/sites/<int:site_id>/hh_data")
1174
- def site_hh_data_get(site_id):
1175
- caches = {}
1176
- site = Site.get_by_id(g.sess, site_id)
1177
-
1178
- year = req_int("year")
1179
- month = req_int("month")
1180
- start_date, finish_date = next(
1181
- c_months_u(start_year=year, start_month=month, months=1)
1182
- )
1183
-
1184
- supplies = (
1185
- g.sess.query(Supply)
1186
- .join(Era)
1187
- .join(SiteEra)
1188
- .join(Source)
1189
- .filter(
1190
- SiteEra.site == site,
1191
- SiteEra.is_physical == true(),
1192
- Era.start_date <= finish_date,
1193
- or_(Era.finish_date == null(), Era.finish_date >= start_date),
1194
- Source.code != "sub",
1195
- )
1196
- .order_by(Supply.id)
1197
- .distinct()
1198
- .options(joinedload(Supply.source), joinedload(Supply.generator_type))
1199
- .all()
1200
- )
1201
-
1202
- data = iter(
1203
- g.sess.query(HhDatum)
1204
- .join(Channel)
1205
- .join(Era)
1206
- .filter(
1207
- Channel.channel_type == "ACTIVE",
1208
- Era.supply_id.in_([s.id for s in supplies]),
1209
- HhDatum.start_date >= start_date,
1210
- HhDatum.start_date <= finish_date,
1211
- )
1212
- .order_by(HhDatum.start_date, Era.supply_id)
1213
- .options(
1214
- joinedload(HhDatum.channel)
1215
- .joinedload(Channel.era)
1216
- .joinedload(Era.supply)
1217
- .joinedload(Supply.source)
1218
- )
1219
- )
1220
- datum = next(data, None)
1221
-
1222
- hh_data = []
1223
- for hh_date in hh_range(caches, start_date, finish_date):
1224
- sups = []
1225
- hh_dict = {
1226
- "start_date": hh_date,
1227
- "supplies": sups,
1228
- "export_kwh": Decimal(0),
1229
- "import_kwh": Decimal(0),
1230
- "parasitic_kwh": Decimal(0),
1231
- "generated_kwh": Decimal(0),
1232
- "third_party_import_kwh": Decimal(0),
1233
- "third_party_export_kwh": Decimal(0),
1234
- }
1235
- hh_data.append(hh_dict)
1236
- for supply in supplies:
1237
- sup_hh = {}
1238
- sups.append(sup_hh)
1239
- while (
1240
- datum is not None
1241
- and datum.start_date == hh_date
1242
- and datum.channel.era.supply_id == supply.id
1243
- ):
1244
- channel = datum.channel
1245
- imp_related = channel.imp_related
1246
- source_code = channel.era.supply.source.code
1247
-
1248
- prefix = "import_" if imp_related else "export_"
1249
- sup_hh[f"{prefix}kwh"] = datum.value
1250
- sup_hh[f"{prefix}status"] = datum.status
1251
-
1252
- if not imp_related and source_code in ("grid", "gen-grid"):
1253
- hh_dict["export_kwh"] += datum.value
1254
- if imp_related and source_code in ("grid", "gen-grid"):
1255
- hh_dict["import_kwh"] += datum.value
1256
- if (imp_related and source_code == "gen") or (
1257
- not imp_related and source_code == "gen-grid"
1258
- ):
1259
- hh_dict["generated_kwh"] += datum.value
1260
- if (not imp_related and source_code == "gen") or (
1261
- imp_related and source_code == "gen-grid"
1262
- ):
1263
- hh_dict["parasitic_kwh"] += datum.value
1264
- if (imp_related and source_code == "3rd-party") or (
1265
- not imp_related and source_code == "3rd-party-reverse"
1266
- ):
1267
- hh_dict["third_party_import_kwh"] += datum.value
1268
- if (not imp_related and source_code == "3rd-party") or (
1269
- imp_related and source_code == "3rd-party-reverse"
1270
- ):
1271
- hh_dict["third_party_export_kwh"] += datum.value
1272
- datum = next(data, None)
1273
-
1274
- hh_dict["displaced_kwh"] = (
1275
- hh_dict["generated_kwh"] - hh_dict["export_kwh"] - hh_dict["parasitic_kwh"]
1276
- )
1277
- hh_dict["used_kwh"] = sum(
1278
- (
1279
- hh_dict["import_kwh"],
1280
- hh_dict["displaced_kwh"],
1281
- hh_dict["third_party_import_kwh"] - hh_dict["third_party_export_kwh"],
1282
- )
1283
- )
1284
-
1285
- return render_template(
1286
- "site_hh_data.html", site=site, supplies=supplies, hh_data=hh_data
1287
- )
1288
-
1289
-
1290
1156
  @home.route("/sites/<int:site_id>")
1291
1157
  def site_get(site_id):
1292
1158
  configuration_contract = Contract.get_non_core_by_name(g.sess, "configuration")
@@ -1595,7 +1461,7 @@ def report_run_post(run_id):
1595
1461
  run = g.sess.query(ReportRun).filter(ReportRun.id == run_id).one()
1596
1462
  run.delete(g.sess)
1597
1463
  g.sess.commit()
1598
- return chellow_redirect("/report_runs", 303)
1464
+ return redirect("/report_runs", 303)
1599
1465
 
1600
1466
 
1601
1467
  @home.route("/report_runs/<int:run_id>/spreadsheet")
@@ -1705,7 +1571,7 @@ def report_run_row_post(row_id):
1705
1571
  g.sess.commit()
1706
1572
  flash("Update successful")
1707
1573
 
1708
- return chellow_redirect(f"/report_run_rows/{row_id}", 303)
1574
+ return redirect(f"/report_run_rows/{row_id}", 303)
1709
1575
 
1710
1576
 
1711
1577
  @home.route("/non_core_contracts")
@@ -1905,17 +1771,17 @@ def non_core_contract_edit_post(contract_id):
1905
1771
  if "delete" in request.values:
1906
1772
  contract.delete(g.sess)
1907
1773
  g.sess.commit()
1908
- return chellow_redirect("/non_core_contracts", 303)
1774
+ return redirect("/non_core_contracts", 303)
1909
1775
  if "update_state" in request.values:
1910
1776
  state = req_zish("state")
1911
1777
  contract.update_state(state)
1912
1778
  g.sess.commit()
1913
- return chellow_redirect(f"/non_core_contracts/{contract.id}", 303)
1779
+ return redirect(f"/non_core_contracts/{contract.id}", 303)
1914
1780
  else:
1915
1781
  properties = req_zish("properties")
1916
1782
  contract.update_properties(properties)
1917
1783
  g.sess.commit()
1918
- return chellow_redirect(f"/non_core_contracts/{contract.id}", 303)
1784
+ return redirect(f"/non_core_contracts/{contract.id}", 303)
1919
1785
  except BadRequest as e:
1920
1786
  flash(e.description)
1921
1787
  return make_response(
@@ -2014,7 +1880,7 @@ def national_grid_get():
2014
1880
  def national_grid_post():
2015
1881
  importer = chellow.national_grid.importer
2016
1882
  importer.go()
2017
- return chellow_redirect("/national_grid", 303)
1883
+ return redirect("/national_grid", 303)
2018
1884
 
2019
1885
 
2020
1886
  @home.route("/non_core_contracts/<int:contract_id>/add_rate_script")
@@ -2037,7 +1903,7 @@ def non_core_rate_script_add_post(contract_id):
2037
1903
  start_date = req_date("start")
2038
1904
  rate_script = contract.insert_rate_script(g.sess, start_date, {})
2039
1905
  g.sess.commit()
2040
- return chellow_redirect("/non_core_rate_scripts/" + str(rate_script.id), 303)
1906
+ return redirect(f"/non_core_rate_scripts/{rate_script.id}", 303)
2041
1907
  except BadRequest as e:
2042
1908
  flash(e.description)
2043
1909
  now = utc_datetime_now()
@@ -2109,7 +1975,7 @@ def non_core_rate_script_edit_post(rs_id):
2109
1975
  if "delete" in request.values:
2110
1976
  contract.delete_rate_script(g.sess, rate_script)
2111
1977
  g.sess.commit()
2112
- return chellow_redirect(f"/non_core_contracts/{contract.id}", 303)
1978
+ return redirect(f"/non_core_contracts/{contract.id}", 303)
2113
1979
  else:
2114
1980
  script = req_zish("script")
2115
1981
  start_date = req_hh_date("start")
@@ -2121,7 +1987,7 @@ def non_core_rate_script_edit_post(rs_id):
2121
1987
  g.sess, rate_script, start_date, finish_date, script
2122
1988
  )
2123
1989
  g.sess.commit()
2124
- return chellow_redirect(f"/non_core_rate_scripts/{rate_script.id}", 303)
1990
+ return redirect(f"/non_core_rate_scripts/{rate_script.id}", 303)
2125
1991
  except BadRequest as e:
2126
1992
  g.sess.rollback()
2127
1993
  flash(e.description)
@@ -2152,7 +2018,7 @@ def non_core_auto_importer_post(contract_id):
2152
2018
  except ModuleNotFoundError:
2153
2019
  importer = import_module(f"chellow.e.{contract.name}").get_importer()
2154
2020
  importer.go()
2155
- return chellow_redirect(f"/non_core_contracts/{contract.id}/auto_importer", 303)
2021
+ return redirect(f"/non_core_contracts/{contract.id}/auto_importer", 303)
2156
2022
  except BadRequest as e:
2157
2023
  g.sess.rollback()
2158
2024
  flash(e.description)
@@ -2262,7 +2128,7 @@ def rate_server_get():
2262
2128
  def rate_server_post():
2263
2129
  importer = chellow.rate_server.importer
2264
2130
  importer.go()
2265
- return chellow_redirect("/rate_server", 303)
2131
+ return redirect("/rate_server", 303)
2266
2132
 
2267
2133
 
2268
2134
  @home.route("/tester")
@@ -2275,7 +2141,7 @@ def tester_get():
2275
2141
  def tester_post():
2276
2142
  tester = chellow.testing.tester
2277
2143
  tester.go()
2278
- return chellow_redirect("/tester", 303)
2144
+ return redirect("/tester", 303)
2279
2145
 
2280
2146
 
2281
2147
  @home.route("/user_roles")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: chellow
3
- Version: 1733390302.0.0
3
+ Version: 1734005435.0.0
4
4
  Summary: Web Application for checking UK energy bills.
5
5
  Project-URL: Homepage, https://github.com/WessexWater/chellow
6
6
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
@@ -1,4 +1,4 @@
1
- chellow/__init__.py,sha256=ML9TeTCsCbEEjXLwe9BjeSe9WDj9VVgfdfW-D74oxVU,9785
1
+ chellow/__init__.py,sha256=S1IjQChkEMA_MfzE5F1pPP-54bz_CRH4KE9X6SgX8bI,9722
2
2
  chellow/api.py,sha256=mk17TfweR76DPFC8lX2SArTjai6y6YshASxqO1w-_-s,11036
3
3
  chellow/bank_holidays.py,sha256=T_utYMwe_g1dz5X-aOTdIPryg49SvB7QsWM1yphlqG8,4423
4
4
  chellow/commands.py,sha256=ESBe9ZWj1c3vdZgqMZ9gFvYAB3hRag2R1PzOwuw9yFo,1302
@@ -11,8 +11,8 @@ chellow/proxy.py,sha256=cVXIktPlX3tQ1BYcwxq0nJXKE6r3DtFTtfFHPq55HaM,1351
11
11
  chellow/rate_server.py,sha256=fg-Pf_9Hk3bXmC9riPQNGQxBvLvBa_WtNYdwDCjnCSg,5678
12
12
  chellow/rrun.py,sha256=1Kt2q_K9UoDG_nsZz-Q6XJiMNKroWqlqFdxn2M6Q8CA,2088
13
13
  chellow/testing.py,sha256=Od4HHH6pZrhJ_De118_F55RJEKmAvhUH2S24QE9qFQk,3635
14
- chellow/utils.py,sha256=32qPWEGzCPKPhSM7ztpzcR6ZG74sVZanScDIdK50Rq4,19308
15
- chellow/views.py,sha256=qJrvhVjb3KL_sHDQl5dLhi0aqUe_IUYhrjiPjdk4lQI,84317
14
+ chellow/utils.py,sha256=Ej7dsbQ6Ee8X2aZ7B2Vs-hUFCsMABioAdOV1DJjwY-0,19293
15
+ chellow/views.py,sha256=OlNGtFB9OatQPMzHiXTjBoGOSnFT7cC38GA2x7rtcFg,79490
16
16
  chellow/e/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  chellow/e/aahedc.py,sha256=d2usudp7KYWpU6Pk3fal5EQ47EbvkvKeaFGylnb3NWw,606
18
18
  chellow/e/bill_importer.py,sha256=7UcnqNlKbJc2GhW9gy8sDp9GuqambJVpZLvbafOZztA,7411
@@ -20,7 +20,7 @@ chellow/e/bmarketidx.py,sha256=C0BaHn2RxIuWH2QzA-OmSP0fbUGvW9tqEUhLnzOEdmA,7968
20
20
  chellow/e/bsuos.py,sha256=hdP9vnOJSuZl46OAkJeUg1XJYvYIBj4J6Sqce1Hy9Vs,15542
21
21
  chellow/e/ccl.py,sha256=30dh_SvlgzsTQPPAJNZWILaMvbeDsv9-P-S1JxS5_SQ,3184
22
22
  chellow/e/cfd.py,sha256=Gm435c42LFwZx1n-1UY1Tdx6mL1is7E0vRLWQe8RPOo,14184
23
- chellow/e/computer.py,sha256=jslEeLsSHbu4l95WDIHCytL2Fced-kLtyxZtvm2WEtg,67597
23
+ chellow/e/computer.py,sha256=Fq4SpEvCLArZHOGgSGqvm7mdAVLiswnNWspuuft4h70,67460
24
24
  chellow/e/dno_rate_parser.py,sha256=A5TP6KjyfT5lVWh7dX4SiXRi6wnf2lGv-H_T4Sod8CI,21731
25
25
  chellow/e/duos.py,sha256=nwviRjz-qIt3GxIMHk0hItIT4dtKsxOWq9TUC1z-hO8,30864
26
26
  chellow/e/elexon.py,sha256=ALhXS9Es7PV0z9ukPbIramn3cf3iLyFi-PMWPSm5iOs,5487
@@ -43,7 +43,7 @@ chellow/e/system_price.py,sha256=6w5J7bzwFAZubE2zdOFRiS8IIrVP8hkoIOaG2yCt-Ic,623
43
43
  chellow/e/tlms.py,sha256=M33D6YpMixu2KkwSCzDRM3kThLgShg8exp63Obo75l8,8905
44
44
  chellow/e/tnuos.py,sha256=NBmc-f3oezrl4gviAKobljHfICTpBKxxxEGBGJi_lRk,4927
45
45
  chellow/e/triad.py,sha256=lIQj7EdUrcFwEqleuHZXYU_bfzIwNOqUVVxB3NPQt4A,13710
46
- chellow/e/views.py,sha256=ZISAhDQZHM8j0VKdMOqfNBtwSLTE9c0OtnsGVCaT0kE,216706
46
+ chellow/e/views.py,sha256=VkoB3-jgydp-2RMdlYVvSL4UVUmt7wMnCJpHSBdf1jM,220753
47
47
  chellow/e/bill_parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  chellow/e/bill_parsers/activity_mop_stark_xlsx.py,sha256=UgWXDPzQkQghyj_lfgBqoSJpHB-t-qOdSaB8qY6GLog,4071
49
49
  chellow/e/bill_parsers/annual_mop_stark_xlsx.py,sha256=-HMoIfa_utXYKA44RuC0Xqv3vd2HLeQU_4P0iBUd3WA,4219
@@ -58,7 +58,7 @@ chellow/e/bill_parsers/gdf_csv.py,sha256=ZfK3Oc6oP28p_P9DIevLNB_zW2WLcEJ3Lvb1gL3
58
58
  chellow/e/bill_parsers/haven_csv.py,sha256=0uENq8IgVNqdxfBQMBxLTSZWCOuDHXZC0xzk52SbfyE,13652
59
59
  chellow/e/bill_parsers/haven_edi.py,sha256=YGPHRxPOhje9s32jqPHHELni2tooOYj3cMC_qaZVPq4,16107
60
60
  chellow/e/bill_parsers/haven_edi_tprs.py,sha256=ZVX9CCqUybsot_Z0BEOJPvl9x5kSr7fEWyuJXvZDcz4,11841
61
- chellow/e/bill_parsers/mm.py,sha256=jFy5KlUnqfO0dsGgLMCEYAw0LPBIMBa9NDa-5ob2GwM,10033
61
+ chellow/e/bill_parsers/mm.py,sha256=CdYVV3OI-BCtpd9PohOPkY3127dhz0wOCtXOLCDRVsw,10724
62
62
  chellow/e/bill_parsers/nonsettlement_dc_stark_xlsx.py,sha256=yogXTuQHGRL7IiqvRWr2C9V24ez1j9Yx0128UygPE_k,4723
63
63
  chellow/e/bill_parsers/settlement_dc_stark_xlsx.py,sha256=PlEqCZuJ9DfQXeeYQ64jtf3ML7sUt_tt61QOOTnkE5c,6380
64
64
  chellow/e/bill_parsers/sse_edi.py,sha256=L85DOfNkqexeEIEr8pCBn_2sHJI-zEaw6cogpE3YyYM,15204
@@ -70,44 +70,44 @@ chellow/gas/bill_parser_total_edi.py,sha256=bMAeIkzHwNhv0qdKYXtRl-tzUUYtjNkbM3PM
70
70
  chellow/gas/ccl.py,sha256=DMlcPUELZi00CaDekVJINYk3GgH5apFrImVdmkbyba0,2913
71
71
  chellow/gas/cv.py,sha256=4cdYYQ8Qak6NeYdBCB4YaQ0jX8-UkaydIIdibCQuXxM,7344
72
72
  chellow/gas/dn_rate_parser.py,sha256=Mq8rAcUEUxIQOks59bsCKl8GrefvoHbrTCHqon9N0z0,11340
73
- chellow/gas/engine.py,sha256=NR96BtZKVYQ8hnZVb5oZelb8IhaxupyovNWoHK5ZhTk,25355
73
+ chellow/gas/engine.py,sha256=d2rR1y8b3u2QhmfqyFwwLu_loeZxY_3WwwtDyGJfam0,25282
74
74
  chellow/gas/transportation.py,sha256=Bkg8TWOs-v0ES-4qqwbleiOhqbE_t2KauUx9JYMZELM,5300
75
- chellow/gas/views.py,sha256=R4Ky8syioWSQJLTuSKVLsc266eDv8a6WEo_e60u_4ug,59021
75
+ chellow/gas/views.py,sha256=1_bPHA6i0BlQmQ6YhQaGSMnIm-81dO3ksHW5uL2n2NE,59003
76
76
  chellow/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- chellow/reports/report_109.py,sha256=FmRWG8wQC97cj0nqQH7mrfbYesRIKWXQLh6ERHvtHrU,11212
78
- chellow/reports/report_111.py,sha256=MBXMABwHonjH2cvkqFYC0Vx7rU7LB2mJxXsEjI0RvTU,28828
79
- chellow/reports/report_169.py,sha256=tnTiHmhigcgZ7E8rUSfgzsVYUCW947xBZZq04-KqfK8,9287
80
- chellow/reports/report_181.py,sha256=mCL6vXfrj8r0kL-LilDS0SnSu5tJOzCq7eMJVx9zpEw,4999
81
- chellow/reports/report_183.py,sha256=DZX-hHJPl_Tbgkt31C_cuLZg_5L2b6iCPQ5foOZizR0,8817
82
- chellow/reports/report_187.py,sha256=UvpaYHjyJFNV5puYq8_KxfzoBtVrwFgIGUOmC5oGA9A,9956
83
- chellow/reports/report_219.py,sha256=cA0lfJKnJg41Zc4_gZB1KUXZ9JeJo0TiTlu5jm1bdDM,7158
84
- chellow/reports/report_231.py,sha256=uhO1algP7sibpZVaniqGs56HOCPCQeDO-Y-UfvFQwnI,5311
85
- chellow/reports/report_233.py,sha256=HJRn4wH7RsYIduD2MNZYjFTbgb5LIu8_-jmUuRc0Q6Y,5016
86
- chellow/reports/report_241.py,sha256=AlFmSHnfG2HWv_ICmWX7fNpPwLHjq7mo1QtOTjSKO3k,5384
87
- chellow/reports/report_247.py,sha256=eQurEZB51uucdpvBRZ8riOTRs55px4hMo1r3BBeo4Uw,44550
88
- chellow/reports/report_29.py,sha256=KDFjgrLBv4WbG9efCdu_geMR7gT_QV9N97Wfdt7aDc4,2736
89
- chellow/reports/report_291.py,sha256=rqBXy6s7hMeYWw-yNX6w_L5t2yz6rNEeos_4xO7wf90,7519
90
- chellow/reports/report_33.py,sha256=laVz-itDbJTdvC6LxLEeuY0eKpYx43Un4adiExPTEEE,16730
91
- chellow/reports/report_387.py,sha256=kmBZopb0AOivcowO2nPjRj6LnV0_QjCDXLwqPL7IGVE,5672
92
- chellow/reports/report_41.py,sha256=QQeTshA1Og7N3wPaoZ8ynJzwsvZ1mgSFc7DDkVqIZoM,7447
93
- chellow/reports/report_429.py,sha256=8WlLqyfMyvIF5Kc6CE0MKwcT5xwmR_Ao99Ef72yAOVc,12668
94
- chellow/reports/report_59.py,sha256=3N5I9U-nqNGKz39IdBTyDMlb_-srwpo_0kwn9viQnYs,42262
95
- chellow/reports/report_81.py,sha256=NkT6dZeMo7Z0AkJemD_Xv8Ut5PIZ9vn8Ia1Q_DS9v54,5611
96
- chellow/reports/report_87.py,sha256=j2gdBOapaVY1ZnlNlw14RPx58_k8eUkc3oRSnKuCsNA,7057
97
- chellow/reports/report_asset_comparison.py,sha256=UN298MHuzyUDUiiZr7F_Ua6SrdVOlFLjgKjnIbrA-14,6118
98
- chellow/reports/report_batches.py,sha256=7O5TcB9W1sPKS0LQMsC6sUDzx73X5iyoZE0O3zK91zs,4798
99
- chellow/reports/report_bills.py,sha256=AHW6tiZAOE0gXDfencPvemE4zqK6eTqfN8_bWQ4RT5o,3323
100
- chellow/reports/report_csv_llfcs.py,sha256=OHSbP64lQ6dlAMcQYgvdANlA4lQyF0iBlwk7V9c9nuo,1944
101
- chellow/reports/report_csv_site_hh_data.py,sha256=yWhEoGGyg_ctM8T55raksTPRJ5ycVO6lVfUx5tRBzTQ,4372
102
- chellow/reports/report_csv_site_snags.py,sha256=gG2sYQrLoIBwCoMUC8rhmAL7Kffh_rvNb9UOX7cYDko,2668
103
- chellow/reports/report_ecoes_comparison.py,sha256=CaeMCpLifP-kh2O9MZPs0EYf4UqksL-xFjwki41DTRA,21444
104
- chellow/reports/report_g_monthly_duration.py,sha256=I1MsLr-VD6VczRB8YrDGuTXVXv_iKpBZiCA7DLqZQQc,18305
105
- chellow/reports/report_g_supplies_snapshot.py,sha256=0M0x_0o0985Hu45gUJJJwzfx0DDOAuXBJ1UVUDbQ36g,4718
106
- chellow/reports/report_g_supply_virtual_bill.py,sha256=x_KtQ02dwgmXvAEUXJ1poK0BRwqxa-GcbJ5pddEina0,3694
107
- chellow/reports/report_g_virtual_bills.py,sha256=t3hmTiURk1E_mPucIboCdPBlSLapDIUdHYRpVTFtJgw,4569
108
- chellow/reports/report_g_virtual_bills_hh.py,sha256=5crgu7oUrOSR9GAA1uhb8lJNn4gCUSBAaXci1gOuohE,3457
109
- chellow/reports/report_sscs.py,sha256=beCzKpaQaeeiyMGpX6o-gbl1tCS6ArdF1o4GeIQE67s,3255
110
- chellow/reports/report_supply_contacts.py,sha256=vyA3mLWqYISwOuRhzRIYQIWmvWXS1Vv_rJClq2IFBiw,3640
77
+ chellow/reports/report_109.py,sha256=Exb-FQ5f70-ier_h15CgHGysQ7vJ7k3gFZ1001zM3iM,11171
78
+ chellow/reports/report_111.py,sha256=o_wWyrtmxpTnmT9DVlsG5h5wdm3JqojirRlx_7W5_kQ,28787
79
+ chellow/reports/report_169.py,sha256=wortJyvgXTrnjjXhLzqwaksKKu63K5IgdzU5f4SkHMI,9246
80
+ chellow/reports/report_181.py,sha256=ypfYWYVNC1X2fMlJyDzwNiNTTRrpPW49DirXE_xDKa0,4958
81
+ chellow/reports/report_183.py,sha256=fGONpKEIXTqIT_3dE5jZKBIesWPgLq-chHO6X22dIv0,8768
82
+ chellow/reports/report_187.py,sha256=RCvxDnkfRu7ocKUPEX0qtVphGOBEl9RULy790uteXcQ,9915
83
+ chellow/reports/report_219.py,sha256=3Zs16ka6dWWY_lCDoA-ZFrlPb4vHk1LQoa2yrlTMntA,7117
84
+ chellow/reports/report_231.py,sha256=WARLztV2HzBFSi5_xvY_DTXVyuBBbBYiU0RazfjKw-Y,5270
85
+ chellow/reports/report_233.py,sha256=qJdPFuBgQAWD24BsljgGJ44L_RGdHOA1RqsxGjTWhFc,4975
86
+ chellow/reports/report_241.py,sha256=lfivElRkV_CZAhck0rxAuhqzgponj3aWwmwGMNQvUxg,5343
87
+ chellow/reports/report_247.py,sha256=Hhhk0XcDdS3SaA-BJxw6BtN7mOhdKjBdtBNV7zqqaAI,44509
88
+ chellow/reports/report_29.py,sha256=ZXnq6Kg5on-IPquUsH4bn46mBVESY_WhwqDWZPXOJwo,2695
89
+ chellow/reports/report_291.py,sha256=BnWtxe0eWN2QKKWpwjs5-RI5LbReBKL119QbkrkNhV8,7478
90
+ chellow/reports/report_33.py,sha256=lt1EN_LNx6u-AgdaS3YRkPMZA33JgMcELolHF4oJUMw,16689
91
+ chellow/reports/report_387.py,sha256=bBqtnGGDWIXzXe2zVm9yeDRZKNgkUaOS3XTX6k09f18,5631
92
+ chellow/reports/report_41.py,sha256=8xUIN9D5dtT0Dn1RmbnWsLRmM-QbGA5xGhWCK3ljAzA,7406
93
+ chellow/reports/report_429.py,sha256=bpnz_SAiWFoHN7UF3rS0-LupbDyE_AnGI-XOphGXyPc,12627
94
+ chellow/reports/report_59.py,sha256=PkdRA6ctvDGWTQd5vb9cQH6MG920TxcD6aHh268zrj8,42221
95
+ chellow/reports/report_81.py,sha256=bBpV6MtvKGtoLiqzZoK2h21KDs4vfDwy-etpfL9oiEI,5570
96
+ chellow/reports/report_87.py,sha256=udzbCuXcckWD-OHmfJCT6bwg_paYhm4vfDWlL8WM-jA,6933
97
+ chellow/reports/report_asset_comparison.py,sha256=Cl2NgvbclqhOVvKuUu3sajTVO2JupMfzK3bV0_K8eNs,6077
98
+ chellow/reports/report_batches.py,sha256=MoCv2dE-JgaJzaMjMA-kZrPkYR13uDoXer5UuF12OYc,4757
99
+ chellow/reports/report_bills.py,sha256=cxhrheJggBcP0BHmbNKCPG25KxgBSFr5NOZ_XCIek1M,3344
100
+ chellow/reports/report_csv_llfcs.py,sha256=mMB06b6Jems5kcQU4H4Le_fyKgVr8THP8BCx3pkvg5E,1903
101
+ chellow/reports/report_csv_site_hh_data.py,sha256=ik0OkGVo1bfTXLdcT3gPUHnxSkSdorzZheP3qgnOR5c,4331
102
+ chellow/reports/report_csv_site_snags.py,sha256=AuAy6vjL0g7vwPPAZhBqxOyITL9_jnyFj012MnUcxxk,2627
103
+ chellow/reports/report_ecoes_comparison.py,sha256=wEwJrFMOz74CidONkTmgWD1Ghhgo9DT0V7Vddkspkqg,21403
104
+ chellow/reports/report_g_monthly_duration.py,sha256=VQq5xTLvdu9Z_vqrgWNP2S4xm2uCSSZA9HVNiQv9Dus,18264
105
+ chellow/reports/report_g_supplies_snapshot.py,sha256=f6yuds1_X3j3domC1lCyA788RdxCgFZSee-4L7BhwU8,4677
106
+ chellow/reports/report_g_supply_virtual_bill.py,sha256=EaYrB8PHJIXrUuhiZ7dwUlbNBkuyJebQHrdc308_z1o,3653
107
+ chellow/reports/report_g_virtual_bills.py,sha256=20vHa5LGQwOAlJlaGJaGszZrrbT0PMOZJf6hSxU2hIQ,4528
108
+ chellow/reports/report_g_virtual_bills_hh.py,sha256=gaiLEmKTpq6JsfZ1p0SdCDuPvzvigXp6z88gHRCA63w,3416
109
+ chellow/reports/report_sscs.py,sha256=fQWyVG-gdg37DyNHgpNARpSxIwTl7mCn20fDLwx9oHg,3214
110
+ chellow/reports/report_supply_contacts.py,sha256=pvwlInaPYV_pa9MMK6vh854plHFwv3m5zo5xulR1g5I,3599
111
111
  chellow/static/css/chellow.css,sha256=mcLjqKMo0qtdQWY7AnXEL8Bvx2B-Pu8kcGO58bUXOpY,5372
112
112
  chellow/static/images/favicon.svg,sha256=ySFHoVJYmr-xU93QrE-jLYn-ZNythh2vsemnR8dkvg0,2339
113
113
  chellow/static/images/favicon_test.svg,sha256=HnLS_BjNt8M0Ikko5Z-f_E2aed7y6RRU6j3K6XADciE,2346
@@ -152,11 +152,10 @@ chellow/templates/scenario_add.html,sha256=xFTb9CaA-qV2iwnVqcS44vD8JlYatBQet8Rat
152
152
  chellow/templates/scenario_docs.html,sha256=0YP_h8GYkqCFLBoCj2w4PE4Js15DT_WoxYlK9nRSMlA,6949
153
153
  chellow/templates/scenario_edit.html,sha256=x2Eicq_eFs7ax2EtL4GrD73qKF-LhN41OQdPFbDivrc,1060
154
154
  chellow/templates/scenarios.html,sha256=FIDOSWs9VO_3bJkQoNHh-DdRzVfUyJGK9WbdEHRxxdM,841
155
- chellow/templates/site.html,sha256=dj0VgcmjaKJHuTOZDESO2E2MOyluYJtx4YaSOaWOkwU,10024
155
+ chellow/templates/site.html,sha256=rvK4VnSsiSswyYTPJrKn4iKpT_-t1nfH-4yCPF7OKQc,10038
156
156
  chellow/templates/site_add.html,sha256=NxYmOIZQH6X8EBOuJUbhUJ8IYB3t0BukjR1yVRhnJhM,422
157
157
  chellow/templates/site_edit.html,sha256=TJ_ZDDkodj-uDB3GPP9Cel3FGZY2oP42KCzHOydPWVc,2909
158
158
  chellow/templates/site_gen_graph.html,sha256=LXkD4n_aC_sFm9JJTCmBRrczpyTn2UUEgBToFiM5RPo,3468
159
- chellow/templates/site_hh_data.html,sha256=xmSJ5h_DvI1-bnV7FdBodDUvDCU0-q-UHYj2MuyLOTg,1907
160
159
  chellow/templates/site_months.html,sha256=ToqH42dym82Q4ihFIT3St-EwPlhDAfwskNMh4cZ2EsM,6572
161
160
  chellow/templates/site_used_graph.html,sha256=NXuQYcPXnk2mHb2O4mxVPZ1R-X-MWPwneUV-J6z285w,3094
162
161
  chellow/templates/sites.html,sha256=4ouJ5xYqYHjXCv3cDucTjgbOd_whReFPPHopLBdW6Go,621
@@ -202,7 +201,7 @@ chellow/templates/e/dc_contract_edit.html,sha256=IObmbHQmeZ_LSpnYgabmhoSNUR3aPmm
202
201
  chellow/templates/e/dc_contract_hh_import.html,sha256=JncR3L6cOK4jghsGyr-itEqlIemXBXt3kL09wpqnQSE,856
203
202
  chellow/templates/e/dc_contract_hh_imports.html,sha256=eXFDGyzSgag4JRism81_p5yTzQOjCIXaVkQ8tl3dDcM,8172
204
203
  chellow/templates/e/dc_contract_properties.html,sha256=2EmA91gYWZcTOHQ3PxXQrpTOb8dm0OGjwRWsW6qNI9s,455
205
- chellow/templates/e/dc_contract_properties_edit.html,sha256=YWmG0dnzD6hf2kAFWCAjQWkHDPVRDi0jaUdLSLw-tfw,1901
204
+ chellow/templates/e/dc_contract_properties_edit.html,sha256=t7X7Exht6ZMqmiEnuhv9kAFNfjchyJdD_2pZEORqUD8,1925
206
205
  chellow/templates/e/dc_contracts.html,sha256=FPZUM7fkw-R6sRELHZCQTUkKSRqad8HOLHnyyYhQEEw,1819
207
206
  chellow/templates/e/dc_contracts_add.html,sha256=2lrGrNqAoKp16OiMoNDNlJxBMW3QdSPfgEFheSg826s,710
208
207
  chellow/templates/e/dc_rate_script.html,sha256=gfKUHV2IMsTQT-cYfjl4aiEBqGEWSj3uW22UZpoyGq4,1219
@@ -291,7 +290,7 @@ chellow/templates/e/scenario_edit.html,sha256=Uf64v_qsBP0BxaFEIz214CC_dZXlvro4zv
291
290
  chellow/templates/e/scenarios.html,sha256=zlNhZvQEcuwLgHObVHS-4THur5Lz9Jf1G6xD98-jamI,847
292
291
  chellow/templates/e/site_add_e_supply.html,sha256=_gi1ejI4TMTMX9vCW7z2kToR2XKR6qoVh67qp_VrDsM,2731
293
292
  chellow/templates/e/site_add_e_supply_form.html,sha256=q5LfSmp_eamph4FLKslMrxKGOtGCkSFRe9I5AVn-hgM,5553
294
- chellow/templates/e/site_hh_data.html,sha256=1Ld5IIM3G84tVCAwtlJNGJTnrASS7d84AgaPwwHNEMI,1413
293
+ chellow/templates/e/site_hh_data.html,sha256=qCmqQcPKWhNiZ7eSVs8NhMIiBXJHVHF5OAzjEdppyjM,1982
295
294
  chellow/templates/e/site_site_snags.html,sha256=vWpsFyxZj7GOrMXQz2rKq9zOQdVsqeUVtdBzehp9J5w,847
296
295
  chellow/templates/e/site_snag.html,sha256=eZt1H-t-hsoKZBteU9ILpKqKLD0Pf0Uybp8pPQYuTAc,924
297
296
  chellow/templates/e/site_snag_edit.html,sha256=O-m95S-ig9sXmFFkQmjfNnF9zJkgSIuPizuF7ieNi7s,1436
@@ -377,6 +376,6 @@ chellow/templates/g/supply_note_edit.html,sha256=b8mB6_ucBwoljp03iy6AgVaZUhGw3-1
377
376
  chellow/templates/g/supply_notes.html,sha256=6epNmZ3NKdXZz27fvmRUGeffg_oc1kmwuBeyRzQe3Rg,854
378
377
  chellow/templates/g/unit.html,sha256=KouNVU0-i84afANkLQ_heJ0uDfJ9H5A05PuLqb8iCN8,438
379
378
  chellow/templates/g/units.html,sha256=p5Nd-lAIboKPEOO6N451hx1bcKxMg4BDODnZ-43MmJc,441
380
- chellow-1733390302.0.0.dist-info/METADATA,sha256=gaYBOwq3UhXxTCphDMWhGc0rFvubI80XXISsocq3EK0,12204
381
- chellow-1733390302.0.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
382
- chellow-1733390302.0.0.dist-info/RECORD,,
379
+ chellow-1734005435.0.0.dist-info/METADATA,sha256=rikcxSjkW6hkiNWM_zQJBT9tqQUz1C0JhNytTqShEdk,12204
380
+ chellow-1734005435.0.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
381
+ chellow-1734005435.0.0.dist-info/RECORD,,