wolfhece 2.1.9__py3-none-any.whl → 2.1.10__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.
wolfhece/PyDraw.py CHANGED
@@ -2055,7 +2055,8 @@ class WolfMapViewer(wx.Frame):
2055
2055
  """
2056
2056
  Récupère un graphique matplotlib sur base de la fenêtre OpenGL et de la palette de la matrice active
2057
2057
  """
2058
- self.zoom_on(center=center, width=width, height= height, canvas_height=self.canvasheight)
2058
+ self.zoom_on(center=center, width=width, height= height, canvas_height=self.canvasheight, forceupdate=True)
2059
+
2059
2060
 
2060
2061
  fig,axes = plt.subplots(1,2, gridspec_kw={'width_ratios': [20, 1]})
2061
2062
  self.display_canvasogl(fig=fig,ax=axes[0])
@@ -2188,7 +2189,7 @@ class WolfMapViewer(wx.Frame):
2188
2189
  ax=ax[0],
2189
2190
  title=_('Current time {:0>8} s'.format(el_time)))
2190
2191
 
2191
- def get_canvas_as_impage(self) -> Image.Image:
2192
+ def get_canvas_as_image(self) -> Image.Image:
2192
2193
  """
2193
2194
  Récupère la fenêtre OpenGL sous forme d'image
2194
2195
  """
@@ -3326,7 +3327,7 @@ class WolfMapViewer(wx.Frame):
3326
3327
  for cur in self.linkedList:
3327
3328
  if cur is not self:
3328
3329
  cur.update()
3329
-
3330
+
3330
3331
  def zoom_on_active_profile(self, size:float=500., forceupdate:bool=True):
3331
3332
  """ Zoom on active profile """
3332
3333
 
@@ -8515,7 +8516,8 @@ class WolfMapViewer(wx.Frame):
8515
8516
  curarray.updatepalette(onzoom=[self.xmin, self.xmax, self.ymin, self.ymax])
8516
8517
  curarray.delete_lists()
8517
8518
 
8518
- self.Refresh()
8519
+ self.Paint()
8520
+ # self.Refresh()
8519
8521
 
8520
8522
  def _plotting(self, drawing_type: draw_type, checked_state: bool = True):
8521
8523
  """ Drawing objets on canvas"""
@@ -8875,7 +8877,7 @@ class WolfMapViewer(wx.Frame):
8875
8877
  curobj.uncheck_plot()
8876
8878
 
8877
8879
  curitem = self.gettreeitem(curobj)
8878
- self.treelist.CheckItem(curitem, False)
8880
+ self.treelist.UncheckItem(curitem)
8879
8881
 
8880
8882
  def get_current_zoom(self):
8881
8883
  """
wolfhece/PyParams.py CHANGED
@@ -1029,6 +1029,9 @@ class Wolf_Param(wx.Frame):
1029
1029
  page.Append(pg.FontProperty(label = param_name, name = locname, value = locvalue))
1030
1030
 
1031
1031
  else:
1032
+ if locvalue is None:
1033
+ locvalue = ""
1034
+
1032
1035
  page.Append(pg.StringProperty(label = param_name, name = locname, value = locvalue))
1033
1036
 
1034
1037
  def _add_elem_to_page(self, page:pg.PropertyGridPage, group:str, param:dict, param_def:dict = None, prefix:str=''):
wolfhece/apps/version.py CHANGED
@@ -5,7 +5,7 @@ class WolfVersion():
5
5
 
6
6
  self.major = 2
7
7
  self.minor = 1
8
- self.patch = 9
8
+ self.patch = 10
9
9
 
10
10
  def __str__(self):
11
11
 
wolfhece/multiprojects.py CHANGED
@@ -26,8 +26,21 @@ class Project(Wolf_Param):
26
26
  Il s'agit d'une surcharge d'un objet Wolf_Param qui est organisé en groupes de paramètres
27
27
  Chaque paramètre peut être défini par une clé, une valeur et un commentaire (+ éventuellement une chaîne JSON)
28
28
  """
29
- def __init__(self, wdir='', parent=None, title="Default Title", w=500, h=800, ontop=False, to_read=True, filename='', withbuttons=True, DestroyAtClosing=True, toShow=True):
30
- super().__init__(parent, title, w, h, ontop, to_read, filename, withbuttons, DestroyAtClosing, toShow)
29
+ def __init__(self,
30
+ wdir='',
31
+ parent=None,
32
+ title="Default Title",
33
+ w=500, h=800,
34
+ ontop=False,
35
+ to_read=True,
36
+ filename='',
37
+ withbuttons=True,
38
+ DestroyAtClosing=True,
39
+ toShow=True,
40
+ init_GUI:bool = False,
41
+ force_even_if_same_default:bool = False):
42
+
43
+ super().__init__(parent, title, w, h, ontop, to_read, filename, withbuttons, DestroyAtClosing, toShow, init_GUI, force_even_if_same_default)
31
44
  self.wdir = wdir
32
45
 
33
46
  class Wolf2D_Project(Project):
@@ -73,6 +86,7 @@ class Wolf2D_Project(Project):
73
86
  super().__init__(wdir, parent, title, w, h, ontop, to_read, filename, withbuttons, DestroyAtClosing, toShow)
74
87
 
75
88
  self.mysims:dict[str,Union[Wolfresults_2D, wolfres2DGPU]]={}
89
+
76
90
  self.mycontours={}
77
91
  self.mycolormaps={}
78
92
  self.epsilon=5e-4
@@ -17,6 +17,7 @@ from datetime import datetime
17
17
  import os
18
18
  import socket
19
19
  import hashlib
20
+ import re
20
21
 
21
22
  from gettext import gettext as _
22
23
 
@@ -61,24 +62,22 @@ class RapidReport:
61
62
 
62
63
  def __init__(self, main_title:str, author:str):
63
64
 
64
- self._main_title = None
65
- self._author = None
65
+ self._main_title = main_title
66
+ self._author = author
66
67
  self._date = None
67
68
 
68
69
  self._content = []
69
- self._document = Document()
70
+ self._document = None
70
71
 
71
72
  self._filename = None
72
73
 
73
74
  self._idx_figure = 0
74
75
 
75
76
  self._styles={}
76
- self.define_default_styles()
77
77
 
78
78
  self._has_first_page = False
79
- self.fill_first_page(main_title, author)
80
79
 
81
- def define_default_styles(self):
80
+ def _define_default_styles(self):
82
81
 
83
82
  # Définir le style de titre
84
83
  self._title_style = self._document.styles.add_style('TitleStyle', 1)
@@ -90,7 +89,7 @@ class RapidReport:
90
89
  # Définir le style de légende
91
90
  self._caption_style = self._document.styles.add_style('CaptionStyle', 1)
92
91
  self._caption_style.font.name = 'Arial'
93
- self._caption_style.font.size = Pt(10)
92
+ self._caption_style.font.size = Pt(9)
94
93
  self._caption_style.font.italic = True
95
94
  self._caption_style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Arial')
96
95
  self._caption_style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
@@ -98,26 +97,27 @@ class RapidReport:
98
97
  # Définir le style de corps de texte
99
98
  self._body_text_style = self._document.styles.add_style('BodyTextStyle', 1)
100
99
  self._body_text_style.font.name = 'Arial'
101
- self._body_text_style.font.size = Pt(12)
100
+ self._body_text_style.font.size = Pt(11)
102
101
  self._body_text_style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Arial')
102
+ self._body_text_style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
103
103
 
104
104
  # Définir le style de liste à puce
105
105
  self._bullet_list_style = self._document.styles.add_style('BulletListStyle', 1)
106
106
  self._bullet_list_style.font.name = 'Arial'
107
- self._bullet_list_style.font.size = Pt(12)
107
+ self._bullet_list_style.font.size = Pt(9)
108
108
  self._bullet_list_style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Arial')
109
109
  self._bullet_list_style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
110
110
  self._bullet_list_style.paragraph_format.left_indent = Inches(0.25)
111
111
 
112
112
  self._table_grid_style = self._document.styles.add_style('TableGrid', 3)
113
113
  self._table_grid_style.font.name = 'Arial'
114
- self._table_grid_style.font.size = Pt(10)
114
+ self._table_grid_style.font.size = Pt(9)
115
115
  self._table_grid_style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Arial')
116
116
  self._table_grid_style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
117
117
 
118
118
  self._figure_style = self._document.styles.add_style('FigureStyle', 1)
119
119
  self._figure_style.font.name = 'Arial'
120
- self._figure_style.font.size = Pt(10)
120
+ self._figure_style.font.size = Pt(9)
121
121
  self._figure_style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Arial')
122
122
  self._figure_style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
123
123
 
@@ -142,6 +142,8 @@ class RapidReport:
142
142
  Ajouter le titre, l'auteur et la date.
143
143
 
144
144
  """
145
+ if self._has_first_page:
146
+ return
145
147
 
146
148
  # Récupérer le nom de l'utilisateur
147
149
  user_name = os.getlogin()
@@ -155,17 +157,17 @@ class RapidReport:
155
157
  self._author = author
156
158
  self._date = datetime.now().strftime('%d/%m/%Y')
157
159
 
158
- self._document.add_heading(self._main_title, level=0)
159
- self.add_figure(logo_path,caption=None, width=2.0)
160
+ self._insert_title(self._main_title, level=0, index=0)
161
+ self._insert_figure(logo_path,caption=None, width=2.0, index=1)
160
162
 
161
- self.add_paragraph('Ce document a été généré automatiquement par le paquet Python "wolfhece".')
162
- self.add_paragraph(' ')
163
- self.add_paragraph(f'Auteur : {self._author}')
164
- self.add_paragraph(f'Date : {self._date}')
165
- self.add_paragraph(' ')
166
- self.add_paragraph(f'Utilisateur : {user_name}')
167
- self.add_paragraph(f'Ordinateur : {computer_name}')
168
- self.add_paragraph(' ')
163
+ self._insert_paragraph('Ce document a été généré automatiquement par le paquet Python "wolfhece".', index =2)
164
+ self._insert_paragraph(' ', index=3)
165
+ self._insert_paragraph(f'Auteur : {self._author}', index=4)
166
+ self._insert_paragraph(f'Date : {self._date}', index=5)
167
+ self._insert_paragraph(' ', index=6)
168
+ self._insert_paragraph(f'Utilisateur : {user_name}', index=7)
169
+ self._insert_paragraph(f'Ordinateur : {computer_name}', index=8)
170
+ self._insert_paragraph(' ', index=9)
169
171
 
170
172
  chain_hash = hashlib.md5(self._main_title.encode() +
171
173
  self._author.encode() +
@@ -173,14 +175,29 @@ class RapidReport:
173
175
  computer_name.encode()+
174
176
  self._date.encode()).hexdigest()
175
177
 
176
- self.add_paragraph('Hash du document : ' + chain_hash)
178
+ self._insert_paragraph('Hash du document : ' + chain_hash, index=10)
177
179
 
178
- self.add_new_page()
180
+ self._insert_new_page(index=11)
179
181
 
180
- self.add_paragraph('summary')
182
+ self._insert_paragraph('summary', index=12)
181
183
 
182
184
  self._has_first_page = True
183
185
 
186
+ def _insert_title(self, title:str, level:int=1, index:int = 0):
187
+ """ Insère un titre dans le document. """
188
+
189
+ self._content.insert(index, ('title', title, level))
190
+
191
+ def _insert_paragraph(self, paragraph_text:str, style:str='BodyTextStyle', index:int = 0):
192
+ """ Insère un paragraphe dans le document. """
193
+
194
+ self._content.insert(index, ('paragraph', paragraph_text, style))
195
+
196
+ def _insert_figure(self, image_path:Union[str, Path, Image.Image, Figure], caption:str, width:float=7.0, index:int = 0):
197
+ """ Insère une figure dans le document. """
198
+
199
+ self._content.insert(index, ('figure', image_path, caption, width, self._idx_figure))
200
+
184
201
  def add_title(self, title:str, level:int=1):
185
202
  """ Ajoute un titre au document. """
186
203
 
@@ -271,7 +288,7 @@ class RapidReport:
271
288
 
272
289
  return self
273
290
 
274
- def add_figure(self, image_path:Union[str,Path,Image.Image], caption:str, width:float=7.0):
291
+ def add_figure(self, image_path:Union[str, Path, Image.Image, Figure], caption:str, width:float=7.0):
275
292
  """ Ajoute une figure au document avec une légende. """
276
293
 
277
294
  if caption:
@@ -289,6 +306,11 @@ class RapidReport:
289
306
  """ Ajoute une nouvelle page au document. """
290
307
 
291
308
  self._content.append(('newpage', '', None))
309
+
310
+ def _insert_new_page(self, index:int = 0):
311
+ """ Insère une nouvelle page au document. """
312
+
313
+ self._content.insert(index, ('newpage', '', None))
292
314
 
293
315
  def add_table_from_listoflists(self, data:List[List[str]], style:str='TableGrid'):
294
316
  """
@@ -353,6 +375,10 @@ class RapidReport:
353
375
  def _apply_text_styles(self, paragraph, text):
354
376
  """ Search for bold and italic styles in the text and apply them."""
355
377
 
378
+ text = text.replace('\n\n', 'DOUBLE_NEWLINE')
379
+ text = text.replace('\n', ' ')
380
+ text = text.replace('DOUBLE_NEWLINE', '\n')
381
+
356
382
  def split_bold(text):
357
383
  return text.split('**')
358
384
 
@@ -408,6 +434,11 @@ class RapidReport:
408
434
  elif isinstance(item[1], Path):
409
435
  tmp_name = str(item[1])
410
436
 
437
+ elif isinstance(item[1], Figure):
438
+ item[1].tight_layout()
439
+ tmp_name = NamedTemporaryFile(suffix='.png').name
440
+ item[1].savefig(tmp_name)
441
+
411
442
  if Path(tmp_name).exists():
412
443
  self._document.add_picture(tmp_name, width=Inches(item[3]) if item[3] else Inches(7.0))
413
444
  self._document.paragraphs[-1].style = 'FigureStyle'
@@ -444,6 +475,12 @@ class RapidReport:
444
475
 
445
476
  if file_path is None:
446
477
  raise ValueError("Le chemin du fichier n'a pas été spécifié.")
478
+
479
+ self._document = Document()
480
+
481
+ self._define_default_styles()
482
+
483
+ self.fill_first_page(self._main_title, self._author)
447
484
 
448
485
  self.parse_content()
449
486
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.1.9
3
+ Version: 2.1.10
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  License: AGPL-v3 License
6
6
  Project-URL: Homepage, https://uee.uliege.be/hece
@@ -6,12 +6,12 @@ wolfhece/ManageParams.py,sha256=Wgt5Zh7QBtyiwTAltPHunSLqt4XuVuRH76GTUrXabS4,219
6
6
  wolfhece/Model1D.py,sha256=-cMz-ePSYzrKVVDidiDOz6cojEZ3y6u9gIb7RPwT6Y8,476593
7
7
  wolfhece/PyConfig.py,sha256=oGSL1WsLM9uinlNP4zGBLK3uHPmBfduUi7R-VtWuRFA,8034
8
8
  wolfhece/PyCrosssections.py,sha256=f4dNYRUGZKePruaaBiTcn5vlrw8TFTj9XwTDrdiF_uU,112450
9
- wolfhece/PyDraw.py,sha256=WJDGhaD7N6udY5WUynS9f-26FQ6Uj0bJZFM2gxkzuWU,378354
9
+ wolfhece/PyDraw.py,sha256=eYv0X1NFCWlgOgiRaIjW0SPlR_uVLdZhFpztY1jX6Lo,378408
10
10
  wolfhece/PyGui.py,sha256=VKE785z9XLIWNbxqpyEceLK_wtmPJyq6A_M_qX_94Lg,104772
11
11
  wolfhece/PyGuiHydrology.py,sha256=wKhR-KthPRyzJ887NmsozmUpm2CIQIwO3IbYORCYjrE,7290
12
12
  wolfhece/PyHydrographs.py,sha256=GKK8U0byI45H9O_e4LAOOi7Aw0Tg7Q0Lx322stPg5IQ,3453
13
13
  wolfhece/PyPalette.py,sha256=_Nm2Lc4UxYlZgK8ifZDioG8a0at8oiteYC0x_4XugFc,24384
14
- wolfhece/PyParams.py,sha256=963fkDSEadlLLxe7WM4Nl6nLOeZsOWSFmfg7hIsWPU4,96785
14
+ wolfhece/PyParams.py,sha256=xUmtwna4rhTCqa3-fpq7bG5pxMpoa4PFRi5hEjxOxPw,96868
15
15
  wolfhece/PyPictures.py,sha256=-mJB0JL2YYiEK3D7_ssDkvYiMWK4ve9kXhozQXNeSx8,2216
16
16
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
17
17
  wolfhece/PyVertex.py,sha256=dHTjyYYTn0F_NWerlAOBKHV79RUzEEtMJMldQtVc1Cs,40092
@@ -34,7 +34,7 @@ wolfhece/import_ascfiles.py,sha256=jg4urcLdSgFS1Knvh7AVGJqM44qc_uYDNrR568tMh-A,4
34
34
  wolfhece/ins.py,sha256=0aU1mo4tYbw64Gwzrqbh-NCTH1tukmk0mpPHjRPHZXU,12661
35
35
  wolfhece/irm_qdf.py,sha256=749SlAXiN1oXp5tfBJoPNJWxydQlY55K0qvIM5YexlM,15436
36
36
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
37
- wolfhece/multiprojects.py,sha256=tHrAdOBoEEsuNS8hV7udbvduOZLj_NqF3ee5hSDBhN8,20903
37
+ wolfhece/multiprojects.py,sha256=K40kM09xNkQSjiwANTsA4CpaW7KEkawpBkpoiehk9yo,21251
38
38
  wolfhece/picc.py,sha256=KKPNk1BEe7QBzo2icIsdsxUopJ1LXYTomfdfeG2gCeA,7419
39
39
  wolfhece/pyGui1D.py,sha256=pzLWXQ_w3Y_yI846w1GklFO9h5lWZOqiUzg1BUPkuRI,121616
40
40
  wolfhece/pybridges.py,sha256=4PRSsWngDmQnlVuN2tJj0C_HT1h47ExH9QTUPs_Wxlg,57215
@@ -66,7 +66,7 @@ wolfhece/apps/check_install.py,sha256=jrKR-njqnpIh6ZJqvP6KbDUPVCfwTNQj4glQhcyzs9
66
66
  wolfhece/apps/curvedigitizer.py,sha256=avWERHuVxPnJBOD_ibczwW_XG4vAenqWS8W1zjhBox8,4898
67
67
  wolfhece/apps/isocurrent.py,sha256=4XnNWPa8mYUK7V4zdDRFrHFIXNG2AN2og3TqWKKcqjY,3811
68
68
  wolfhece/apps/splashscreen.py,sha256=LkEVMK0eCc84NeCWD3CGja7fuQ_k1PrZdyqD3GQk_8c,2118
69
- wolfhece/apps/version.py,sha256=FOnRXwi0LTd0u8m3r5Ap-8eX-pLzJQIG3E9iImOCttA,387
69
+ wolfhece/apps/version.py,sha256=p7F6qFk_CdXhKrAOXaQdIRVqeFmOEFL0SsGEAojsQgo,388
70
70
  wolfhece/apps/wolf.py,sha256=gqfm-ZaUJqNsfCzmdtemSeqLw-GVdSVix-evg5WArJI,293
71
71
  wolfhece/apps/wolf2D.py,sha256=gWD9ee2-1pw_nUxjgRaJMuSe4kUT-RWhOeoTt_Lh1mM,267
72
72
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -242,7 +242,7 @@ wolfhece/rem/REMMaker.py,sha256=kffClHHpf8P4ruZpEb9EB__HBzg9rFAkiVCh-GFtIHU,3079
242
242
  wolfhece/rem/RasterViz.py,sha256=TDhWyMppcYBL71HfhpZuMgYKhz7faZg-MEOQJo_3Ivo,29128
243
243
  wolfhece/rem/__init__.py,sha256=S2-J5uEGK_VaMFjRUYFIdSScJjZyuXH4RmMmnG3OG7I,19
244
244
  wolfhece/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
- wolfhece/report/reporting.py,sha256=ptsObq4hrVc1b_cfu2ISL6oesSsBphk03QtFnr8E9hc,17565
245
+ wolfhece/report/reporting.py,sha256=LrOUI7j1vPefsGhqag1f2KpKRXR-5cH7SyGIsf6nOG0,19196
246
246
  wolfhece/report/wolf_report.png,sha256=NoSV58LSwb-oxCcZScRiJno-kxDwRdm_bK-fiMsKJdA,592485
247
247
  wolfhece/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
248
  wolfhece/scenario/check_scenario.py,sha256=nFiCscEGHyz1YvjmZoKlYrfmW03-nLiDTDdRoeE6MUs,4619
@@ -267,8 +267,8 @@ wolfhece/sounds/sonsw2.wav,sha256=pFLVt6By0_EPQNt_3KfEZ9a1uSuYTgQSX1I_Zurv9Rc,11
267
267
  wolfhece/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
268
  wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=yGbU_JsF56jsmms0gh7mxa7tbNQ_SxqhpAZxhm-mTy4,14860
269
269
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=wCxGRnE3kzEkWlWA6-3X8ADOFux_B0a5QWJ2GnXTgJw,4709
270
- wolfhece-2.1.9.dist-info/METADATA,sha256=kTZzCdCRgXrjJ2HsS_7YS8fXP8zYlxvXNigdrYepDqg,2281
271
- wolfhece-2.1.9.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
272
- wolfhece-2.1.9.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
273
- wolfhece-2.1.9.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
274
- wolfhece-2.1.9.dist-info/RECORD,,
270
+ wolfhece-2.1.10.dist-info/METADATA,sha256=Zzg2Nmd6IpZTLHVQohBtHfLxq6TwzEOzad-ue6QTJJk,2282
271
+ wolfhece-2.1.10.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
272
+ wolfhece-2.1.10.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
273
+ wolfhece-2.1.10.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
274
+ wolfhece-2.1.10.dist-info/RECORD,,