chellow 1724868336.0.0__py3-none-any.whl → 1725528079.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.

chellow/e/mdd_importer.py CHANGED
@@ -247,8 +247,6 @@ def _import_Market_Participant_Role(sess, rows, ctx):
247
247
  name = values[4]
248
248
  dno_code_str = values[14]
249
249
  dno_code = None if len(dno_code_str) == 0 else dno_code_str
250
- if dno_code == "99":
251
- continue
252
250
 
253
251
  if party is None:
254
252
  participant.insert_party(
@@ -324,7 +322,7 @@ def _import_Meter_Timeswitch_Class(sess, rows, ctx):
324
322
  has_comms_str = values[8] # MTC Communication Indicator
325
323
  has_comms = parse_bool(has_comms_str)
326
324
  is_hh_str = values[9] # MTC Type Indicator
327
- is_hh = parse_bool(is_hh_str)
325
+ is_hh = is_hh_str == "H"
328
326
  tpr_count_str = values[10] # TPR Count
329
327
  tpr_count = None if tpr_count_str == "" else int(tpr_count_str)
330
328
 
@@ -837,7 +835,101 @@ def _import_Valid_MTC_LLFC_SSC_PC_Combination(sess, rows, ctx):
837
835
  )
838
836
 
839
837
 
840
- def rate_server_import(sess, log, set_progress, s, paths):
838
+ def add_88_99(sess, ctx):
839
+ rows = [
840
+ [
841
+ "CIDC",
842
+ "R",
843
+ "01/01/2000",
844
+ "",
845
+ "Virtual",
846
+ "",
847
+ "",
848
+ "",
849
+ "",
850
+ "",
851
+ "",
852
+ "",
853
+ "",
854
+ "",
855
+ "88",
856
+ ],
857
+ [
858
+ "CROW",
859
+ "R",
860
+ "01/04/1996",
861
+ "",
862
+ "Non-settlement",
863
+ "",
864
+ "",
865
+ "",
866
+ "",
867
+ "",
868
+ "",
869
+ "",
870
+ "",
871
+ "",
872
+ "99",
873
+ ],
874
+ ]
875
+ _import_Market_Participant_Role(sess, rows, ctx)
876
+ rows = [
877
+ ["845", "01/04/1996", "CIDC", "01/04/1996", ""],
878
+ ["845", "01/04/1996", "CROW", "01/04/1996", ""],
879
+ ]
880
+ _import_MTC_in_PES_Area(sess, rows, ctx)
881
+ rows = [
882
+ ["CIDC", "", "", "005", "01/04/2010", "EG_HV_Intermittent", "C", ""],
883
+ ["CIDC", "", "", "006", "01/04/2010", "EG_HV_Non_Intermittent", "C", ""],
884
+ ["CIDC", "", "", "110", "01/01/2000", "Profile 3 Unrestricted", "A", ""],
885
+ ["CIDC", "", "", "210", "01/01/2000", "Profile 4 Economy 7", "A", ""],
886
+ ["CIDC", "", "", "510", "01/01/2000", "PC 5-8 & HH HV", "A", ""],
887
+ ["CIDC", "", "", "521", "01/01/2000", "Export (HV)", "C", ""],
888
+ [
889
+ "CIDC",
890
+ "",
891
+ "",
892
+ "524",
893
+ "01/04/2010",
894
+ "HV Generation Non intermittent",
895
+ "C",
896
+ "",
897
+ ],
898
+ ["CIDC", "", "", "570", "01/01/2000", "PC 5-8 & HH LV", "A", ""],
899
+ ["CIDC", "", "", "581", "01/01/2000", "Export (LV)", "C", ""],
900
+ ["CIDC", "", "", "658", "01/04/1996", "HV HH metered", "A", ""],
901
+ ["CROW", "", "", "510", "01/04/1996", "PC 5-8 & HH HV", "A", ""],
902
+ ["CROW", "", "", "521", "01/04/1996", "Export (HV)", "C", ""],
903
+ ["CROW", "", "", "570", "01/04/1996", "PC 5-8 & HH LV", "A", ""],
904
+ ["CROW", "", "", "581", "01/04/1996", "Export (LV)", "C", ""],
905
+ ]
906
+
907
+ _import_Line_Loss_Factor_Class(sess, rows, ctx)
908
+ rows = [
909
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "005", "01/04/2010", ""],
910
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "006", "01/04/2010", ""],
911
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "110", "01/01/2000", ""],
912
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "210", "01/01/2000", ""],
913
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "510", "01/01/2000", ""],
914
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "521", "01/01/2000", ""],
915
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "524", "01/04/2010", ""],
916
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "570", "01/01/2000", ""],
917
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "581", "01/01/2000", ""],
918
+ ["845", "01/04/1996", "CIDC", "01/04/1996", "658", "01/01/2000", ""],
919
+ ["845", "01/04/1996", "CROW", "01/04/1996", "510", "01/04/1996", ""],
920
+ ["845", "01/04/1996", "CROW", "01/04/1996", "521", "01/04/1996", ""],
921
+ ["845", "01/04/1996", "CROW", "01/04/1996", "570", "01/04/1996", ""],
922
+ ["845", "01/04/1996", "CROW", "01/04/1996", "581", "01/04/1996", ""],
923
+ ]
924
+ _import_Valid_MTC_LLFC_Combination(sess, rows, ctx)
925
+
926
+
927
+ def _get_csv_reader(s, url):
928
+ csv_file = StringIO(download(s, url).decode("utf8"))
929
+ return csv.reader(csv_file)
930
+
931
+
932
+ def rate_server_import(sess, log, set_progress, s, paths, with_88_99=True):
841
933
  log("Starting to check for a new MDD version")
842
934
  mdd_entries = {}
843
935
  for path, url in paths:
@@ -872,8 +964,7 @@ def rate_server_import(sess, log, set_progress, s, paths):
872
964
  version = None
873
965
 
874
966
  for file_name, url in fl_entries.items():
875
- csv_file = StringIO(download(s, url).decode("utf8"))
876
- csv_reader = iter(csv.reader(csv_file))
967
+ csv_reader = iter(_get_csv_reader(s, url))
877
968
  next(csv_reader) # Skip titles
878
969
 
879
970
  table_name_elements = file_name.split("_")
@@ -929,7 +1020,10 @@ def rate_server_import(sess, log, set_progress, s, paths):
929
1020
  func(sess, gnames[tname], ctx)
930
1021
  else:
931
1022
  raise BadRequest(f"Can't find {tname} on the rate server.")
932
-
1023
+ if with_88_99:
1024
+ log("Starting to add MDD data for 88 and 99 DNOs")
1025
+ add_88_99(sess, ctx)
1026
+ log("Finished adding MDD data for 88 and 99 DNOs")
933
1027
  config = Contract.get_non_core_by_name(sess, "configuration")
934
1028
  state = config.make_state()
935
1029
  state["mdd_version"] = version
chellow/e/views.py CHANGED
@@ -4354,29 +4354,15 @@ def site_add_e_supply_form_get(site_id):
4354
4354
  EnergisationStatus.code
4355
4355
  )
4356
4356
  default_energisation_status = EnergisationStatus.get_by_code(g.sess, "E")
4357
-
4357
+ gsp_groups_q = select(GspGroup).order_by(GspGroup.code)
4358
+ gsp_groups = g.sess.scalars(gsp_groups_q)
4359
+ RateScriptAliasStart = aliased(RateScript)
4360
+ RateScriptAliasFinish = aliased(RateScript)
4358
4361
  if "start_year" in request.values:
4359
4362
  start_date = req_date("start")
4360
4363
  else:
4361
4364
  start_date = to_utc(ct_datetime(ct_now.year, ct_now.month, ct_now.day))
4362
4365
 
4363
- site = Site.get_by_id(g.sess, site_id)
4364
- sources = g.sess.scalars(select(Source).order_by(Source.code))
4365
- source_id = req_int_none("source_id")
4366
- if source_id is None:
4367
- source = Source.get_by_code(g.sess, "grid")
4368
- else:
4369
- source = Source.get_by_id(g.sess, source_id)
4370
- generator_types = g.sess.query(GeneratorType).order_by(GeneratorType.code)
4371
- gsp_groups = g.sess.query(GspGroup).order_by(GspGroup.code)
4372
- eras = (
4373
- g.sess.query(Era)
4374
- .join(SiteEra)
4375
- .filter(SiteEra.site == site)
4376
- .order_by(Era.start_date.desc())
4377
- )
4378
- RateScriptAliasStart = aliased(RateScript)
4379
- RateScriptAliasFinish = aliased(RateScript)
4380
4366
  mop_contracts = g.sess.scalars(
4381
4367
  select(Contract)
4382
4368
  .join(MarketRole)
@@ -4431,12 +4417,15 @@ def site_add_e_supply_form_get(site_id):
4431
4417
  )
4432
4418
  .order_by(Contract.name)
4433
4419
  ).all()
4434
- pcs = g.sess.query(Pc).order_by(Pc.code)
4435
- pc_id = req_int_none("pc_id")
4436
- if pc_id is None:
4437
- pc = Pc.get_by_code(g.sess, "00")
4420
+
4421
+ site = Site.get_by_id(g.sess, site_id)
4422
+ sources = g.sess.scalars(select(Source).order_by(Source.code))
4423
+ source_id = req_int_none("source_id")
4424
+ if source_id is None:
4425
+ source = Source.get_by_code(g.sess, "grid")
4438
4426
  else:
4439
- pc = Pc.get_by_id(g.sess, pc_id)
4427
+ source = Source.get_by_id(g.sess, source_id)
4428
+ generator_types = g.sess.query(GeneratorType).order_by(GeneratorType.code)
4440
4429
 
4441
4430
  dnos = g.sess.scalars(
4442
4431
  select(Party)
@@ -4444,12 +4433,36 @@ def site_add_e_supply_form_get(site_id):
4444
4433
  .where(MarketRole.code == "R")
4445
4434
  .order_by(Party.dno_code)
4446
4435
  ).all()
4436
+ pcs = g.sess.query(Pc).order_by(Pc.code)
4447
4437
  dno_id = req_int_none("dno_id")
4448
4438
  if dno_id is None:
4449
4439
  dno = dnos[0]
4450
4440
  else:
4451
4441
  dno = Party.get_by_id(g.sess, dno_id)
4452
4442
 
4443
+ dno_contract = Contract.get_dno_by_name(g.sess, dno.dno_code)
4444
+ dno_rate_script = dno_contract.find_rate_script_at(g.sess, start_date)
4445
+ dno_props = dno_rate_script.make_script()
4446
+ allowed_gsp_group_codes = list(dno_props.keys())
4447
+
4448
+ gsp_groups = g.sess.scalars(
4449
+ select(GspGroup)
4450
+ .where(GspGroup.code.in_(allowed_gsp_group_codes))
4451
+ .order_by(GspGroup.code)
4452
+ )
4453
+
4454
+ eras = (
4455
+ g.sess.query(Era)
4456
+ .join(SiteEra)
4457
+ .filter(SiteEra.site == site)
4458
+ .order_by(Era.start_date.desc())
4459
+ )
4460
+ pc_id = req_int_none("pc_id")
4461
+ if pc_id is None:
4462
+ pc = Pc.get_by_code(g.sess, "00")
4463
+ else:
4464
+ pc = Pc.get_by_id(g.sess, pc_id)
4465
+
4453
4466
  participant = dno.participant
4454
4467
 
4455
4468
  if pc.code == "00":
chellow/models.py CHANGED
@@ -1598,15 +1598,13 @@ class Contract(Base, PersistentClass):
1598
1598
  sess.delete(self)
1599
1599
 
1600
1600
  def find_rate_script_at(self, sess, date):
1601
- return (
1602
- sess.query(RateScript)
1603
- .filter(
1601
+ return sess.scalars(
1602
+ select(RateScript).where(
1604
1603
  RateScript.contract == self,
1605
1604
  RateScript.start_date <= date,
1606
1605
  or_(RateScript.finish_date == null(), RateScript.finish_date >= date),
1607
1606
  )
1608
- .first()
1609
- )
1607
+ ).first()
1610
1608
 
1611
1609
  def start_date(self):
1612
1610
  return self.start_rate_script.start_date
@@ -28,12 +28,12 @@
28
28
  </td>
29
29
  </tr>
30
30
  <tr>
31
- <td>Start Date</td>
32
- <td>{{dno_contract.start_rate_script.start_date|hh_format }}</td>
31
+ <td>Valid From</td>
32
+ <td>{{dno.valid_from|hh_format }}</td>
33
33
  </tr>
34
34
  <tr>
35
- <td>Finish Date</td>
36
- <td>{{dno_contract.finish_rate_script.finish_date|hh_format }}</td>
35
+ <td>Valid To</td>
36
+ <td>{{dno.valid_to|hh_format }}</td>
37
37
  </tr>
38
38
  <tr>
39
39
  <td>Custom Reports</td>
@@ -32,6 +32,14 @@
32
32
  </select>
33
33
  {% endif %}
34
34
  <label>Meter Serial Number</label> {{input_text('msn')}}
35
+
36
+ <label>DNO</label>
37
+ <select name="dno_id">
38
+ {% for dno in dnos %}
39
+ {{input_option( 'dno_id', dno.id, dno.dno_code + ' ' + dno.name)}}
40
+ {% endfor %}
41
+ </select>
42
+
35
43
  <label>GSP Group</label>
36
44
  <select name="gsp_group_id">
37
45
  {% for gsp_group in gsp_groups %}
@@ -90,13 +98,6 @@
90
98
  {% endfor %}
91
99
  </select>
92
100
 
93
- <label>DNO</label>
94
- <select name="dno_id">
95
- {% for dno in dnos %}
96
- {{input_option( 'dno_id', dno.id, dno.dno_code + ' ' + dno.name)}}
97
- {% endfor %}
98
- </select>
99
-
100
101
  {% if pc.code == '00' %}
101
102
  <input type="hidden" name="ssc_id" value="">
102
103
  {% else %}
@@ -1,24 +1,23 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: chellow
3
- Version: 1724868336.0.0
3
+ Version: 1725528079.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)
7
7
  Classifier: Operating System :: OS Independent
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Requires-Python: >=3.9
10
- Requires-Dist: cryptography==42.0.8
11
10
  Requires-Dist: flask-restx==1.2.0
12
11
  Requires-Dist: flask==2.3.3
13
12
  Requires-Dist: odio==0.0.23
14
13
  Requires-Dist: openpyxl==3.1.2
15
- Requires-Dist: paramiko==3.4.0
14
+ Requires-Dist: paramiko==3.4.1
16
15
  Requires-Dist: pep3143daemon==0.0.6
17
16
  Requires-Dist: pg8000==1.31.1
18
17
  Requires-Dist: pip>=9.0.1
19
18
  Requires-Dist: psutil==5.9.5
20
19
  Requires-Dist: pympler==1.0.1
21
- Requires-Dist: pypdf==3.17.0
20
+ Requires-Dist: pypdf==4.3.1
22
21
  Requires-Dist: python-dateutil==2.8.2
23
22
  Requires-Dist: pytz==2022.6
24
23
  Requires-Dist: requests==2.32.2
@@ -5,7 +5,7 @@ chellow/commands.py,sha256=ESBe9ZWj1c3vdZgqMZ9gFvYAB3hRag2R1PzOwuw9yFo,1302
5
5
  chellow/dloads.py,sha256=dixp-O0MF2_mlwrnKx3D9DH09Qu05BjTo0rZfigTjR4,5534
6
6
  chellow/edi_lib.py,sha256=alu20x9ZX06iPfnNI9dEJzuP6RIf4We3Y_M_bl7RrcY,51789
7
7
  chellow/general_import.py,sha256=l3EHq9zG9Vfl5Ee6XTVrC1nusXo4YGGB4VBmZ_JaJR8,65798
8
- chellow/models.py,sha256=YtU1lnJWdNKB4z5shDsNXSHJROpiuuJ5K5UUH-X22to,243510
8
+ chellow/models.py,sha256=pBaFnTUIyThyg7iGIrbh4v8MW3LuEAwe1-4LAF4G7Q4,243491
9
9
  chellow/national_grid.py,sha256=czwIZqzJndSGhEMQ5YzI6hRBhvjkM6VRVYXybf4_KXg,4377
10
10
  chellow/proxy.py,sha256=cVXIktPlX3tQ1BYcwxq0nJXKE6r3DtFTtfFHPq55HaM,1351
11
11
  chellow/rate_server.py,sha256=fg-Pf_9Hk3bXmC9riPQNGQxBvLvBa_WtNYdwDCjnCSg,5678
@@ -30,7 +30,7 @@ chellow/e/hh_parser_df2.py,sha256=7gaVidyIqeqprm3zYPtHvRLLn08nph04N0cKlveNTV0,42
30
30
  chellow/e/hh_parser_simple_csv.py,sha256=RN4QOLvTQeoPrpvXvQ9hkOBZnR5piybLfjCiSJdjpjs,2112
31
31
  chellow/e/laf_import.py,sha256=aqkcbjnvfBPszBLSNg6getP7iW1uWiTVHy6N5Z5x39U,5514
32
32
  chellow/e/lcc.py,sha256=OkpynN8_iAdHRlu-yyU6BhRUqYYOZsUnl0HbHULYo_4,4670
33
- chellow/e/mdd_importer.py,sha256=n9YMR1XD8Wm_5vHo-pydpoLJKRhUds_TcqELGxujcvg,32184
33
+ chellow/e/mdd_importer.py,sha256=wq5Fw-MSe17WNuPzeWdCmJvX0NKV3Y501t6z2tqd92Q,35638
34
34
  chellow/e/rcrc.py,sha256=92CA1uIotIHd1epQ_jEPdJKzXqDFV-AoJOJeRO6MEyA,4274
35
35
  chellow/e/ro.py,sha256=dZKZv_9wXSWuwcb3jiKavoD_9ot-PZseNVeEEe0siLo,596
36
36
  chellow/e/scenario.py,sha256=fBDZVOdrI1I3XQG-RdpB0-lDF9VYENBu_9bBXJxmvWk,23362
@@ -38,7 +38,7 @@ chellow/e/system_price.py,sha256=6w5J7bzwFAZubE2zdOFRiS8IIrVP8hkoIOaG2yCt-Ic,623
38
38
  chellow/e/tlms.py,sha256=M33D6YpMixu2KkwSCzDRM3kThLgShg8exp63Obo75l8,8905
39
39
  chellow/e/tnuos.py,sha256=XseYztPUsQXNKuBmystO2kzzwAG9ehCZgpGBTdgSk-A,4313
40
40
  chellow/e/triad.py,sha256=lIQj7EdUrcFwEqleuHZXYU_bfzIwNOqUVVxB3NPQt4A,13710
41
- chellow/e/views.py,sha256=-0Ys7XVdBgFYaWWnKfRRwcVeQ7YyrHNS1HVXuFNk8wY,216190
41
+ chellow/e/views.py,sha256=Ue11tdJSjXni4sFobzlvnrTI5evSja_qUuTQ_JusPdU,216671
42
42
  chellow/e/bill_parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  chellow/e/bill_parsers/activity_mop_stark_xlsx.py,sha256=UgWXDPzQkQghyj_lfgBqoSJpHB-t-qOdSaB8qY6GLog,4071
44
44
  chellow/e/bill_parsers/annual_mop_stark_xlsx.py,sha256=-HMoIfa_utXYKA44RuC0Xqv3vd2HLeQU_4P0iBUd3WA,4219
@@ -196,7 +196,7 @@ chellow/templates/e/dc_contracts_add.html,sha256=2lrGrNqAoKp16OiMoNDNlJxBMW3QdSP
196
196
  chellow/templates/e/dc_rate_script.html,sha256=gfKUHV2IMsTQT-cYfjl4aiEBqGEWSj3uW22UZpoyGq4,1219
197
197
  chellow/templates/e/dc_rate_script_add.html,sha256=5MlE4r5eLww3xI9qZRlu8hE8bU7RVwyDJcr20-0e4uY,644
198
198
  chellow/templates/e/dc_rate_script_edit.html,sha256=RytAio6WbORye2iEETorC_80lyo7ZqY7qbulmRPo9m8,1955
199
- chellow/templates/e/dno.html,sha256=dMIkSPkYF81wWBO0OxEBX0xf7uWyk_AtdEQu_TuE6gs,2515
199
+ chellow/templates/e/dno.html,sha256=dex343gChjoB8HOM3h4rUm-Gn8_Q_fDeAQT1pNWe-H0,2454
200
200
  chellow/templates/e/dno_rate_script.html,sha256=8wK2GqDyPAPxLsK3waEuGwqerGtWPCu-RQdg-XCJw2o,753
201
201
  chellow/templates/e/dno_rate_script_add.html,sha256=LRHN86z1oBceQLtzVbLs9rrcav8DfcDrPYzyvvc7cQA,559
202
202
  chellow/templates/e/dno_rate_script_edit.html,sha256=5hNwZWMdesZywOiUAS_OIAapT8jjebc9qp_U9pkXUgs,1275
@@ -278,7 +278,7 @@ chellow/templates/e/scenario_docs.html,sha256=hOg6hrrnOcvdk7jXRsMrk1wtwK7K0IpqcB
278
278
  chellow/templates/e/scenario_edit.html,sha256=Uf64v_qsBP0BxaFEIz214CC_dZXlvro4zvQXH_towhA,1070
279
279
  chellow/templates/e/scenarios.html,sha256=zlNhZvQEcuwLgHObVHS-4THur5Lz9Jf1G6xD98-jamI,847
280
280
  chellow/templates/e/site_add_e_supply.html,sha256=_gi1ejI4TMTMX9vCW7z2kToR2XKR6qoVh67qp_VrDsM,2731
281
- chellow/templates/e/site_add_e_supply_form.html,sha256=e6jovPUzquy5E-jsdGD1zt_-62NAgc1rhmbP2M5FoM0,5552
281
+ chellow/templates/e/site_add_e_supply_form.html,sha256=q5LfSmp_eamph4FLKslMrxKGOtGCkSFRe9I5AVn-hgM,5553
282
282
  chellow/templates/e/site_hh_data.html,sha256=1Ld5IIM3G84tVCAwtlJNGJTnrASS7d84AgaPwwHNEMI,1413
283
283
  chellow/templates/e/site_site_snags.html,sha256=vWpsFyxZj7GOrMXQz2rKq9zOQdVsqeUVtdBzehp9J5w,847
284
284
  chellow/templates/e/site_snag.html,sha256=eZt1H-t-hsoKZBteU9ILpKqKLD0Pf0Uybp8pPQYuTAc,924
@@ -365,6 +365,6 @@ chellow/templates/g/supply_note_edit.html,sha256=b8mB6_ucBwoljp03iy6AgVaZUhGw3-1
365
365
  chellow/templates/g/supply_notes.html,sha256=6epNmZ3NKdXZz27fvmRUGeffg_oc1kmwuBeyRzQe3Rg,854
366
366
  chellow/templates/g/unit.html,sha256=KouNVU0-i84afANkLQ_heJ0uDfJ9H5A05PuLqb8iCN8,438
367
367
  chellow/templates/g/units.html,sha256=p5Nd-lAIboKPEOO6N451hx1bcKxMg4BDODnZ-43MmJc,441
368
- chellow-1724868336.0.0.dist-info/METADATA,sha256=tSIH1BFEVhIB3kTzEPeIrYlTSVM5bdKcwDmURrsSKH4,12241
369
- chellow-1724868336.0.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
370
- chellow-1724868336.0.0.dist-info/RECORD,,
368
+ chellow-1725528079.0.0.dist-info/METADATA,sha256=T1o-2gNx1BoRjojAEb0dP7MAPEAnrewUDUWM_s0ol1A,12204
369
+ chellow-1725528079.0.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
370
+ chellow-1725528079.0.0.dist-info/RECORD,,