wolfhece 2.1.86__py3-none-any.whl → 2.1.87__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.
@@ -1842,7 +1842,7 @@ class vector:
1842
1842
 
1843
1843
  return s3d
1844
1844
 
1845
- def get_sz(self,cumul=True):
1845
+ def get_sz(self, cumul=True):
1846
1846
  """
1847
1847
  Calcule et retourne la distance horizontale cumulée ou non
1848
1848
  de chaque point vis-à-vis du premier point
@@ -2306,7 +2306,7 @@ class vector:
2306
2306
 
2307
2307
  return fig,ax
2308
2308
 
2309
- def deepcopy_vector(self, name: str = None, parentzone = None):
2309
+ def deepcopy_vector(self, name: str = None, parentzone = None) -> 'vector':
2310
2310
  """
2311
2311
  Return a deep copy of the vector.
2312
2312
  """
@@ -2323,6 +2323,13 @@ class vector:
2323
2323
 
2324
2324
  return copied_vector
2325
2325
 
2326
+ def deepcopy(self, name: str = None, parentzone = None) -> 'vector':
2327
+ """
2328
+ Return a deep copy of the vector.
2329
+ """
2330
+
2331
+ return self.deepcopy_vector(name, parentzone)
2332
+
2326
2333
  def set_legend_to_centroid(self, text:str='', visible:bool=True):
2327
2334
  """
2328
2335
  Positionne la légende au centre du vecteur
@@ -2387,10 +2394,18 @@ class vector:
2387
2394
  def sz(self):
2388
2395
  return self.get_sz()
2389
2396
 
2397
+ @property
2398
+ def s(self):
2399
+ sz = self.get_sz()
2400
+ return sz[0]
2401
+
2390
2402
  @x.setter
2391
- def x(self, new_x:np.ndarray):
2403
+ def x(self, new_x:np.ndarray | list):
2392
2404
  """ Set the x values of the vertices """
2393
2405
 
2406
+ if isinstance(new_x, list):
2407
+ new_x = np.array(new_x)
2408
+
2394
2409
  if len(new_x) != self.nbvertices:
2395
2410
  logging.warning(_('New x values have not the same length as the number of vertices'))
2396
2411
  return
@@ -2401,9 +2416,12 @@ class vector:
2401
2416
  self._reset_listogl()
2402
2417
 
2403
2418
  @y.setter
2404
- def y(self, new_y:np.ndarray):
2419
+ def y(self, new_y:np.ndarray | list):
2405
2420
  """ Set the y values of the vertices """
2406
2421
 
2422
+ if isinstance(new_y, list):
2423
+ new_y = np.array(new_y)
2424
+
2407
2425
  if len(new_y) != self.nbvertices:
2408
2426
  logging.warning(_('New y values have not the same length as the number of vertices'))
2409
2427
  return
@@ -2414,9 +2432,15 @@ class vector:
2414
2432
  self._reset_listogl()
2415
2433
 
2416
2434
  @z.setter
2417
- def z(self, new_z:np.ndarray):
2435
+ def z(self, new_z:np.ndarray | float | list):
2418
2436
  """ Set the z values of the vertices """
2419
2437
 
2438
+ if isinstance(new_z, (int, float)):
2439
+ new_z = np.full(self.nbvertices, new_z, dtype=float)
2440
+
2441
+ if isinstance(new_z, list):
2442
+ new_z = np.array(new_z)
2443
+
2420
2444
  if len(new_z) != self.nbvertices:
2421
2445
  logging.warning(_('New z values have not the same length as the number of vertices'))
2422
2446
  return
@@ -2431,9 +2455,12 @@ class vector:
2431
2455
  self._reset_listogl()
2432
2456
 
2433
2457
  @xyz.setter
2434
- def xyz(self, new_xyz:np.ndarray):
2458
+ def xyz(self, new_xyz:np.ndarray | list):
2435
2459
  """ Set the x, y, z values of the vertices """
2436
2460
 
2461
+ if isinstance(new_xyz, list):
2462
+ new_xyz = np.array(new_xyz)
2463
+
2437
2464
  if len(new_xyz) != self.nbvertices:
2438
2465
  logging.warning(_('New xyz values have not the same length as the number of vertices'))
2439
2466
  return
@@ -2452,9 +2479,12 @@ class vector:
2452
2479
  self._reset_listogl()
2453
2480
 
2454
2481
  @xy.setter
2455
- def xy(self, new_xy:np.ndarray):
2482
+ def xy(self, new_xy:np.ndarray | list):
2456
2483
  """ Set the x, y values of the vertices """
2457
2484
 
2485
+ if isinstance(new_xy, list):
2486
+ new_xy = np.array(new_xy)
2487
+
2458
2488
  if len(new_xy) != self.nbvertices:
2459
2489
  logging.warning(_('New xy values have not the same length as the number of vertices'))
2460
2490
  return
@@ -2466,9 +2496,12 @@ class vector:
2466
2496
  self._reset_listogl()
2467
2497
 
2468
2498
  @xz.setter
2469
- def xz(self, new_xz:np.ndarray):
2499
+ def xz(self, new_xz:np.ndarray | list):
2470
2500
  """ Set the x, z values of the vertices """
2471
2501
 
2502
+ if isinstance(new_xz, list):
2503
+ new_xz = np.array(new_xz)
2504
+
2472
2505
  if len(new_xz) != self.nbvertices:
2473
2506
  logging.warning(_('New xz values have not the same length as the number of vertices'))
2474
2507
  return
@@ -2485,9 +2518,12 @@ class vector:
2485
2518
  self._reset_listogl()
2486
2519
 
2487
2520
  @xyzi.setter
2488
- def xyzi(self, new_xyzi:np.ndarray):
2521
+ def xyzi(self, new_xyzi:np.ndarray | list):
2489
2522
  """ Set the x, y, z, in_use values of the vertices """
2490
2523
 
2524
+ if isinstance(new_xyzi, list):
2525
+ new_xyzi = np.array(new_xyzi)
2526
+
2491
2527
  if len(new_xyzi) != self.nbvertices:
2492
2528
  logging.warning(_('New xyzi values have not the same length as the number of vertices'))
2493
2529
  return
@@ -2501,9 +2537,12 @@ class vector:
2501
2537
  self._reset_listogl()
2502
2538
 
2503
2539
  @xyi.setter
2504
- def xyi(self, new_xyi:np.ndarray):
2540
+ def xyi(self, new_xyi:np.ndarray | list):
2505
2541
  """ Set the x, y, in_use values of the vertices """
2506
2542
 
2543
+ if isinstance(new_xyi, list):
2544
+ new_xyi = np.array(new_xyi)
2545
+
2507
2546
  if len(new_xyi) != self.nbvertices:
2508
2547
  logging.warning(_('New xyi values have not the same length as the number of vertices'))
2509
2548
  return
@@ -2516,9 +2555,12 @@ class vector:
2516
2555
  self._reset_listogl()
2517
2556
 
2518
2557
  @i.setter
2519
- def i(self, new_i:np.ndarray):
2558
+ def i(self, new_i:np.ndarray | list):
2520
2559
  """ Set the in_use values of the vertices """
2521
2560
 
2561
+ if isinstance(new_i, list):
2562
+ new_i = np.array(new_i)
2563
+
2522
2564
  if len(new_i) != self.nbvertices:
2523
2565
  logging.warning(_('New i values have not the same length as the number of vertices'))
2524
2566
  return
@@ -4128,22 +4170,28 @@ class zone:
4128
4170
  glDeleteLists(self.idgllist,1)
4129
4171
  self.idgllist=-99999
4130
4172
 
4131
- def deepcopy_zone(self, name: str =None, parent: str= None):
4173
+ def deepcopy_zone(self, name: str =None, parent: str= None) -> "zone":
4132
4174
  """ Return a deep copy of the zone"""
4133
4175
 
4134
4176
  if name is None:
4135
4177
  name = self.myname + '_copy'
4136
- if parent:
4137
- copied_zone = zone(name=name, parent=parent)
4138
- else:
4139
- copied_zone = zone(name=name)
4140
- copied_zone.myvectors = []
4141
- for vec in self.myvectors:
4142
- copied_vec = vec.deepcopy_vector(parentzone = copied_zone)
4143
- copied_zone.add_vector(copied_vec)
4144
- # copied_zone.myvectors.append(copied_vec)
4145
- # copied_zone.nbvectors = len(copied_zone.myvectors) FIXME not needed anymore
4146
- return copied_zone
4178
+
4179
+ if parent is not None:
4180
+ copied_zone = zone(name=name, parent=parent)
4181
+ else:
4182
+ copied_zone = zone(name=name)
4183
+
4184
+ copied_zone.myvectors = []
4185
+ for vec in self.myvectors:
4186
+ copied_vec = vec.deepcopy_vector(parentzone = copied_zone)
4187
+ copied_zone.add_vector(copied_vec, forceparent=True)
4188
+
4189
+ return copied_zone
4190
+
4191
+ def deepcopy(self, name: str =None, parent: str= None) -> "zone":
4192
+ """ Return a deep copy of the zone"""
4193
+
4194
+ return self.deepcopy_zone(name, parent)
4147
4195
 
4148
4196
  def show_properties(self):
4149
4197
  """ Show properties of the zone --> will be applied to all vectors int he zone """
@@ -6638,18 +6686,25 @@ class Zones(wx.Frame, Element_To_Draw):
6638
6686
  dlg.Destroy()
6639
6687
  return
6640
6688
 
6641
- def deepcopy_zones(self, name:str = None):
6689
+ def deepcopy_zones(self, name:str = None) -> "Zones":
6642
6690
  """
6643
6691
  Return the deep copy of the current
6644
6692
  Zones (a new object).
6645
6693
  """
6646
- copied_Zones = Zones()
6694
+ copied_Zones = Zones(idx=name)
6647
6695
  for zne in self.myzones:
6648
6696
  new_zne = zne.deepcopy_zone(parent= copied_Zones)
6649
6697
  copied_Zones.add_zone(new_zne,forceparent=True)
6650
6698
  copied_Zones.find_minmax(True)
6651
6699
  return copied_Zones
6652
6700
 
6701
+ def deepcopy(self, name:str = None) -> "Zones":
6702
+ """
6703
+ Return the deep copy of the current
6704
+ Zones (a new object).
6705
+ """
6706
+ return self.deepcopy_zones(name=name)
6707
+
6653
6708
  class Grid(Zones):
6654
6709
  """
6655
6710
  Grid to draw on the mapviewer.
@@ -0,0 +1,49 @@
1
+ import pkg_resources
2
+
3
+ from .version import WolfVersion
4
+
5
+ def validate_version(expected_version:str):
6
+
7
+ # Test de la version afin de s'assurer que les dernières fonctionnalités sont présentes
8
+ major, minor, patch = str(WolfVersion()).split('.')
9
+ major = int(major)
10
+ minor = int(minor)
11
+ patch = int(patch)
12
+
13
+ major_expected, minor_expected, patch_expected = expected_version.split('.')
14
+ major_expected = int(major_expected)
15
+ minor_expected = int(minor_expected)
16
+ patch_expected = int(patch_expected)
17
+
18
+ test = major == major_expected and minor == minor_expected and patch >= patch_expected
19
+
20
+ if test:
21
+ return 'Version correcte'
22
+ else:
23
+ return 'Version incorrecte'
24
+
25
+ def validate_package_version(expected_version:str):
26
+ # Test de la version afin de s'assurer que les dernières fonctionnalités sont présentes
27
+ # Obtenir la version du paquet 'wolfhece' dans l'espace de
28
+ # stockage des paquets de l'environnement Python actif.
29
+ # Potentiellement différente de la version accessible via le PATH
30
+ # en fonction de la amchine utilisée.
31
+ pkg_wolfhece = pkg_resources.get_distribution('wolfhece')
32
+ locversion_pkg = pkg_wolfhece.version
33
+ major, minor, patch = str(locversion_pkg).split('.')
34
+ major = int(major)
35
+ minor = int(minor)
36
+ patch = int(patch)
37
+
38
+ major_expected, minor_expected, patch_expected = expected_version.split('.')
39
+ major_expected = int(major_expected)
40
+ minor_expected = int(minor_expected)
41
+ patch_expected = int(patch_expected)
42
+
43
+ test = major == major_expected and minor == minor_expected and patch >= patch_expected
44
+
45
+ if test:
46
+ return 'Version correcte'
47
+ else:
48
+ return 'Version incorrecte'
49
+
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 = 86
8
+ self.patch = 87
9
9
 
10
10
  def __str__(self):
11
11
 
@@ -110,9 +110,18 @@ def import_files(module_files:Union[list[Path],list[str]]) -> list[types.ModuleT
110
110
  if isinstance(py_file, str):
111
111
  py_file = Path(py_file)
112
112
 
113
+ olddir = os.getcwd()
113
114
  sys.path.insert(0, str(py_file.parent.absolute()))
114
- module = importlib.import_module(str(py_file.name.replace('.py','')))
115
+ os.chdir(py_file.parent)
116
+
117
+ mod_name = py_file.name.replace('.py','')
118
+ if mod_name in sys.modules:
119
+ del sys.modules[mod_name]
120
+
121
+ module = importlib.import_module(mod_name)
122
+ # sys.modules.get('update_top_mann_scen')
115
123
  sys.path.pop(0)
124
+ os.chdir(olddir)
116
125
 
117
126
  modules.append(module)
118
127
 
@@ -788,26 +788,46 @@ class Config_Manager_2D_GPU:
788
788
  def _import_scripts_topo_manning(self, from_path:Path) -> list[types.ModuleType]:
789
789
  """ find all scripts from/up a path """
790
790
 
791
+ # tous les fichiers .py
792
+ # import des modules
793
+ imported_modules = import_files(from_path.glob('*.py'))
794
+
795
+ return imported_modules
796
+
797
+ def _list_modules(self, from_path:Path):
798
+ """ List all modules in structure """
799
+ import shutil
800
+
791
801
  curtree = self.get_tree(from_path)
792
802
  curdicts = self.get_dicts(curtree)
793
803
 
794
804
  # tous les fichiers .py -> list of lists
795
805
  all_py = [curpy for curdict in curdicts for curpy in curdict[GPU_2D_file_extensions.PY.value][WOLF_UPDATE]]
796
806
 
797
- # import des modules
798
- imported_modules = import_files(all_py)
807
+ # make a copy in the cache folder
808
+ cache_dir = from_path / '.cache_tmi'
809
+ cache_dir.mkdir(exist_ok=True)
799
810
 
800
- return imported_modules
811
+ # delete all file in the cache folder
812
+ for curfile in cache_dir.glob('*.py'):
813
+ curfile.unlink()
801
814
 
815
+ # make a copy of all files in the cache folder
816
+ for idx, cur_py in enumerate(all_py):
817
+ shutil.copy(cur_py, cache_dir / f'{idx}.py')
818
+
819
+ return self._import_scripts_topo_manning(cache_dir)
802
820
 
803
821
  def _apply_scripts_update_topo_maning_inf(self,
804
- modules:list[types.ModuleType],
822
+ dir_modules:Path,
805
823
  array_bat:WolfArray,
806
824
  array_mann:WolfArray,
807
825
  array_inf:WolfArray):
808
826
  """ Apply all scripts from a list of modules """
809
827
 
810
- for curmod in modules:
828
+ all_py = self._list_modules(dir_modules)
829
+
830
+ for curmod in all_py:
811
831
  instmod = curmod.Update_Sim_Scenario()
812
832
  instmod.update_topobathy(array_bat)
813
833
  instmod.update_manning(array_mann)
@@ -815,6 +835,7 @@ class Config_Manager_2D_GPU:
815
835
 
816
836
  def _import_scripts_bc(self, from_path:Path) -> list[types.ModuleType]:
817
837
  """ find all scripts from/up a path """
838
+ import shutil
818
839
 
819
840
  curtree = self.get_tree(from_path)
820
841
  curdicts = self.get_dicts(curtree)
@@ -822,8 +843,21 @@ class Config_Manager_2D_GPU:
822
843
  # tous les fichiers .py -> list of lists
823
844
  all_py = [curpy for curdict in curdicts for curpy in curdict[GPU_2D_file_extensions.PY.value][WOLF_BC]]
824
845
 
846
+ cache_dir = from_path / '.cache_bc'
847
+ cache_dir.mkdir(exist_ok=True)
848
+
849
+ # delete all file in the cache folder
850
+ for curfile in cache_dir.glob('*.py'):
851
+ curfile.unlink()
852
+
853
+ # make a copy of all files in the cache folder
854
+ cache_py = []
855
+ for idx, cur_py in enumerate(all_py):
856
+ shutil.copy(cur_py, cache_dir / f'{idx}.py')
857
+ cache_py.append(cache_dir / f'{idx}.py')
858
+
825
859
  # import des modules
826
- imported_modules = import_files(all_py)
860
+ imported_modules = import_files(cache_py)
827
861
 
828
862
  return imported_modules
829
863
 
@@ -1014,7 +1048,8 @@ class Config_Manager_2D_GPU:
1014
1048
  infiltration.array.data[:,:] = 0
1015
1049
 
1016
1050
  # applying Python scrpitps on ARRAYS
1017
- self._apply_scripts_update_topo_maning_inf(self._import_scripts_topo_manning(dir), bat, man, infiltration)
1051
+ # self._apply_scripts_update_topo_maning_inf(self._import_scripts_topo_manning(dir), bat, man, infiltration)
1052
+ self._apply_scripts_update_topo_maning_inf(dir, bat, man, infiltration)
1018
1053
 
1019
1054
  # save arrays on disk
1020
1055
  bat.write_all(str(dir / '__bathymetry_after_scripts.tif'))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.1.86
3
+ Version: 2.1.87
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  License: Copyright (c) 2024 University of Liege. All rights reserved.
6
6
  Project-URL: Homepage, https://uee.uliege.be/hece
@@ -16,7 +16,7 @@ wolfhece/PyParams.py,sha256=LGt9uBFRVeS0F_kObJw8bPkWFqYSzf5pUTscxVU5Mxo,97725
16
16
  wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
17
17
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
18
18
  wolfhece/PyVertex.py,sha256=MtZVjIWIi62QX_oqNosb56xPgjhOGVeGz-XsD82tsNg,40614
19
- wolfhece/PyVertexvectors.py,sha256=T1MU1AHJgRISm-euZdFRyLU8u9citTA_PuuT8c6Ilug,248217
19
+ wolfhece/PyVertexvectors.py,sha256=mKwu_gMHMPTayfBNscbXEvi4cEVU3TUMz4ZBwfTSflo,249665
20
20
  wolfhece/PyWMS.py,sha256=fyyzm2HFwq8aRwVYHKiBatcZOeKnFi6DWhv4nfscySQ,4602
21
21
  wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
22
22
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
@@ -70,11 +70,12 @@ wolfhece/apps/WolfPython3.png,sha256=3G84zx14HnlB9YXMY4VUAO7IB3eu7JFvi4Kpmc_4zBE
70
70
  wolfhece/apps/__init__.py,sha256=OzzKItATWV0mDkz_LC2L3w5sgT2rt8ExXXCbR_FwvlY,24
71
71
  wolfhece/apps/acceptability.py,sha256=hMIxTRNQARTTWJJaakb6kEK9udNh-w64VDgxxezVk3k,790
72
72
  wolfhece/apps/check_install.py,sha256=Xoi_d8MzKzNAy2xqEpERdsqgRPu0hbBWukI0WkIYzD0,1701
73
+ wolfhece/apps/check_version.py,sha256=Zze7ltzcM2ZzIGMwkcASIjapCG8CEzzW9kwNscA3NhM,1768
73
74
  wolfhece/apps/curvedigitizer.py,sha256=Yps4bcayzbsz0AoVc_dkSk35dEhhn_esIBy1Ziefgmk,5334
74
75
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
75
76
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
76
77
  wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
77
- wolfhece/apps/version.py,sha256=Arx6OoAjqWy_AcCfcpM6PlGGFut5JIMc0Mz3pV3n9Tk,388
78
+ wolfhece/apps/version.py,sha256=W5dXUE8GFyOo5XU-puzJWyW83xPeYE1ki3o6TPwugMw,388
78
79
  wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
79
80
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
80
81
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -260,8 +261,8 @@ wolfhece/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
261
  wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,19494
261
262
  wolfhece/report/wolf_report.png,sha256=NoSV58LSwb-oxCcZScRiJno-kxDwRdm_bK-fiMsKJdA,592485
262
263
  wolfhece/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
- wolfhece/scenario/check_scenario.py,sha256=w7_SST4n_uec-MUBK36gbJzz2KC8qT_bVJ_VNyp7cMo,4917
264
- wolfhece/scenario/config_manager.py,sha256=aZLfOdKCGva2lXVDAVQrn4nd9ONXHQ_ZNDcUcEIbkCo,85621
264
+ wolfhece/scenario/check_scenario.py,sha256=VVjtxfcLAgq_Pf8VSqRq6BJ-y4Zi24CntJpZWxAv3n8,5162
265
+ wolfhece/scenario/config_manager.py,sha256=0B_ZtMkcbZRwzkXHwT6jSC3-Lq85P2oBiq1Qxjkfh2w,86869
265
266
  wolfhece/scenario/imposebc_void.py,sha256=PqA_99hKcaqK5zsK6IRIc5Exgg3WVpgWU8xpwNL49zQ,5571
266
267
  wolfhece/scenario/update_void.py,sha256=ay8C_FxfXN627Hx46waaAO6F3ovYmOCTxseUumKAY7c,7474
267
268
  wolfhece/shaders/fragment_shader_texture.glsl,sha256=w6h8d5mJqFaGbao0LGmjRcFFdcEQ3ICIl9JpuT71K5k,177
@@ -284,8 +285,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
284
285
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
285
286
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
287
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
287
- wolfhece-2.1.86.dist-info/METADATA,sha256=0_BloYphumWtR3mQkEDD1h8Qi4SHPWB8h9GLNit7ejg,2570
288
- wolfhece-2.1.86.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
289
- wolfhece-2.1.86.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
290
- wolfhece-2.1.86.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
291
- wolfhece-2.1.86.dist-info/RECORD,,
288
+ wolfhece-2.1.87.dist-info/METADATA,sha256=0XES9NJJEV_c5J9SqwgKEn5iDnaVZZZk3jLNkIaqJTo,2570
289
+ wolfhece-2.1.87.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
290
+ wolfhece-2.1.87.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
291
+ wolfhece-2.1.87.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
292
+ wolfhece-2.1.87.dist-info/RECORD,,