wolfhece 2.1.48__py3-none-any.whl → 2.1.50__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
@@ -6543,6 +6543,8 @@ class WolfMapViewer(wx.Frame):
6543
6543
  if myobj in curlist:
6544
6544
  curlist.pop(curlist.index(myobj))
6545
6545
 
6546
+ myobj.hide_properties()
6547
+
6546
6548
  def upobj(self):
6547
6549
 
6548
6550
  """Up selected item into general tree"""
wolfhece/PyVertex.py CHANGED
@@ -750,7 +750,7 @@ class cloud_vertices(Element_To_Draw):
750
750
  import geopandas as gpd
751
751
 
752
752
  # read data
753
- gdf = gpd.read_file(fn, bbox=bbox)
753
+ gdf:gpd.GeoDataFrame = gpd.read_file(fn, bbox=bbox)
754
754
 
755
755
  # Bouclage sur les éléments du Shapefile
756
756
  if targetcolumn in gdf.columns:
@@ -768,15 +768,17 @@ class cloud_vertices(Element_To_Draw):
768
768
 
769
769
  elif 'geometry' in gdf.columns:
770
770
 
771
- k=0
772
- for index, row in gdf.iterrows():
771
+ try:
772
+ for k, (xx,yy) in enumerate(zip(gdf.get_coordinates()['x'], gdf.get_coordinates()['y'])):
773
773
 
774
- point = row['geometry']
775
- curvert = wolfvertex(point.x, point.y)
776
- curdict = self.myvertices[k] = {}
777
- curdict['vertex'] = curvert
778
- k += 1
774
+ curvert = wolfvertex(xx, yy)
775
+ curdict = self.myvertices[k] = {}
776
+ curdict['vertex'] = curvert
779
777
 
778
+ except Exception as e:
779
+ logging.error(_('Geometry not found (MultiPoint or Point) -- Please check your shapefile : ')+fn)
780
+ logging.error(e)
781
+ return
780
782
 
781
783
  else:
782
784
 
@@ -885,6 +885,21 @@ if :\n \
885
885
  self.myprops.SetSizeHints(500,800)
886
886
  self.myprops.Show()
887
887
 
888
+ self.myprops.SetTitle(_('Vector properties - {}'.format(self.parent.myname)))
889
+ self.myprops.Center()
890
+ self.myprops.Raise()
891
+
892
+ def show_properties(self):
893
+ """ Show the properties -- alias of show() """
894
+
895
+ self.show()
896
+
897
+ def hide_properties(self):
898
+ """ Hide the properties """
899
+
900
+ if self.myprops is not None:
901
+ self.myprops.Hide()
902
+
888
903
  def _convert_fontname2int(self, fontname:str) -> int:
889
904
 
890
905
  if fontname.lower() in 'arial.ttf':
@@ -1002,6 +1017,18 @@ class vector:
1002
1017
  if fromshapely is not None:
1003
1018
  self.import_shapelyobj(fromshapely)
1004
1019
 
1020
+ def show_properties(self):
1021
+ """ Show the properties """
1022
+
1023
+ if self.myprop is not None:
1024
+ self.myprop.show()
1025
+
1026
+ def hide_properties(self):
1027
+ """ Hide the properties """
1028
+
1029
+ if self.myprop is not None:
1030
+ self.myprop.hide_properties()
1031
+
1005
1032
  def get_mapviewer(self):
1006
1033
  """ Return the mapviewer """
1007
1034
 
@@ -1652,7 +1679,7 @@ class vector:
1652
1679
  logging.warning(_('No mapviewer available for legend plot'))
1653
1680
  return
1654
1681
 
1655
- if self.myprop.legendvisible:
1682
+ if self.myprop.legendvisible and self.myprop.used:
1656
1683
 
1657
1684
  self.textimage = Text_Image_Texture(self.myprop.legendtext,
1658
1685
  self.get_mapviewer(), # mapviewer de l'instance Zones qui contient le vecteur
@@ -1671,7 +1698,7 @@ class vector:
1671
1698
  logging.warning(_('No mapviewer available for image plot'))
1672
1699
  return
1673
1700
 
1674
- if self.myprop.imagevisible:
1701
+ if self.myprop.imagevisible and self.myprop.used:
1675
1702
 
1676
1703
  if self.myprop.textureimage is None:
1677
1704
  self.myprop.load_unload_image()
@@ -2325,7 +2352,9 @@ class zone:
2325
2352
  is2D:bool=True,
2326
2353
  fromshapely:Union[LineString,Polygon,MultiLineString, MultiPolygon]=None) -> None:
2327
2354
 
2355
+ self.myprop = None
2328
2356
  self.myprops = None
2357
+
2329
2358
  self.myname = '' # name of the zone
2330
2359
  self.idgllist = -99999 # id of the zone in the gllist
2331
2360
  self.active_vector=None # current active vector
@@ -3526,6 +3555,7 @@ class zone:
3526
3555
  """
3527
3556
  Compute statistics on values dict resulting from 'get_values_linked_polygons'
3528
3557
  """
3558
+
3529
3559
  for curpol in vals.values():
3530
3560
  medianlist =curpol['median'] = []
3531
3561
  meanlist = curpol['mean'] = []
@@ -3570,7 +3600,10 @@ class zone:
3570
3600
  p95.append(None)
3571
3601
  p5.append(None)
3572
3602
 
3573
- def plot_linked_polygons(self, fig:Figure, ax:Axes, linked_arrays:dict, linked_vec:dict[str,"Zones"]=None, linestyle:str='-', onlymedian:bool=False, withtopography:bool = True, ds:float = None):
3603
+ def plot_linked_polygons(self, fig:Figure, ax:Axes,
3604
+ linked_arrays:dict, linked_vec:dict[str,"Zones"]=None,
3605
+ linestyle:str='-', onlymedian:bool=False,
3606
+ withtopography:bool = True, ds:float = None):
3574
3607
  """
3575
3608
  Création d'un graphique sur base des polygones
3576
3609
 
@@ -3591,6 +3624,7 @@ class zone:
3591
3624
  :param ds: pas spatial le long de l'axe
3592
3625
 
3593
3626
  """
3627
+
3594
3628
  colors=['red','blue','green','darkviolet','fuchsia','lime']
3595
3629
 
3596
3630
  #Vérifie qu'au moins une matrice liée est fournie, sinon rien à faire
@@ -3790,16 +3824,19 @@ class zone:
3790
3824
 
3791
3825
  def reset_listogl(self):
3792
3826
  """
3793
- Reset des liste OpenGL
3827
+ Reset OpenGL lists.
3828
+
3829
+ Force deletion of the OpenGL list.
3830
+ If the object is newly plotted, the lists will be recreated.
3794
3831
  """
3832
+
3795
3833
  if self.idgllist!=-99999:
3796
3834
  glDeleteLists(self.idgllist,1)
3797
3835
  self.idgllist=-99999
3798
3836
 
3799
3837
  def deepcopy_zone(self, name: str =None, parent: str= None):
3800
- """
3801
- Return a deep copy of the zone.
3802
- """
3838
+ """ Return a deep copy of the zone"""
3839
+
3803
3840
  if name is None:
3804
3841
  name = self.myname + '_copy'
3805
3842
  if parent:
@@ -3817,9 +3854,10 @@ class zone:
3817
3854
  def show_properties(self):
3818
3855
  """ Show properties of the zone --> will be applied to all vectors int he zone """
3819
3856
 
3820
- locvec = vector()
3821
- locvec.myprop.show()
3822
- self.myprops = locvec.myprop.myprops
3857
+ if self.myprops is None:
3858
+ locvec = vector()
3859
+ locvec.show_properties()
3860
+ self.myprops = locvec.myprop.myprops
3823
3861
 
3824
3862
  self.myprops[('Legend','X')] = 99999.
3825
3863
  self.myprops[('Legend','Y')] = 99999.
@@ -3827,11 +3865,31 @@ class zone:
3827
3865
  self.myprops.Populate()
3828
3866
  self.myprops.set_callbacks(self._callback_prop, self._callback_destroy_props)
3829
3867
 
3868
+ self.myprops.SetTitle(_('Zone properties - {}'.format(self.myname)))
3869
+ self.myprops.Center()
3870
+ self.myprops.Raise()
3871
+
3872
+ def hide_properties(self):
3873
+ """ Hide the properties window """
3874
+
3875
+ if self.myprops is not None:
3876
+ # window for general properties
3877
+ self.myprops.Hide()
3878
+
3879
+ for curvect in self.myvectors:
3880
+ curvect.hide_properties()
3881
+
3882
+
3830
3883
  def _callback_destroy_props(self):
3884
+ """ Callback to destroy the properties window """
3885
+
3886
+ if self.myprops is not None:
3887
+ self.myprops.Destroy()
3831
3888
 
3832
3889
  self.myprops = None
3833
3890
 
3834
3891
  def _callback_prop(self):
3892
+ """ Callback to update properties """
3835
3893
 
3836
3894
  if self.myprops is None:
3837
3895
  logging.warning(_('No properties available'))
@@ -3848,6 +3906,7 @@ class zone:
3848
3906
  """
3849
3907
  Set the legend to the centroid of the zone
3850
3908
  """
3909
+
3851
3910
  for curvec in self.myvectors:
3852
3911
  curvec.set_legend_to_centroid()
3853
3912
 
@@ -3914,6 +3973,8 @@ class Zones(wx.Frame, Element_To_Draw):
3914
3973
 
3915
3974
  Element_To_Draw.__init__(self, idx, plotted, mapviewer, need_for_wx)
3916
3975
 
3976
+ self._myprops = None # common properties of all zones
3977
+
3917
3978
  self.loaded=True
3918
3979
 
3919
3980
  self.active_vector:vector = None
@@ -4521,7 +4582,18 @@ class Zones(wx.Frame, Element_To_Draw):
4521
4582
  si parent est d'un autre type, il faut s'assurer que les options/actions sont consistantes
4522
4583
 
4523
4584
  """
4524
- self.showstructure(parent,forceupdate)
4585
+ self.showstructure(parent, forceupdate)
4586
+
4587
+ def hide_properties(self):
4588
+ """ Hide the properties window """
4589
+
4590
+ self.Hide()
4591
+
4592
+ if self._myprops is not None:
4593
+ self._myprops.Hide()
4594
+
4595
+ for curzone in self.myzones:
4596
+ curzone.hide_properties()
4525
4597
 
4526
4598
  def showstructure(self, parent=None, forceupdate=False):
4527
4599
  """
@@ -4547,6 +4619,8 @@ class Zones(wx.Frame, Element_To_Draw):
4547
4619
  self.init_ui()
4548
4620
 
4549
4621
  self.Show()
4622
+ self.Center()
4623
+ self.Raise()
4550
4624
 
4551
4625
  def init_ui(self):
4552
4626
  """
@@ -6056,10 +6130,11 @@ class Zones(wx.Frame, Element_To_Draw):
6056
6130
  def _edit_all_properties(self):
6057
6131
  """ Show properties of the zone --> will be applied to all vectors int he zone """
6058
6132
 
6059
- locvec = vector()
6060
- locvec.myprop.show()
6133
+ if self._myprops is None:
6134
+ locvec = vector()
6135
+ locvec.show_properties()
6061
6136
 
6062
- self._myprops = locvec.myprop.myprops
6137
+ self._myprops = locvec.myprop.myprops
6063
6138
 
6064
6139
  self._myprops[('Legend','X')] = 99999.
6065
6140
  self._myprops[('Legend','Y')] = 99999.
@@ -6067,6 +6142,10 @@ class Zones(wx.Frame, Element_To_Draw):
6067
6142
  self._myprops.Populate()
6068
6143
  self._myprops.set_callbacks(self._callback_prop, self._callback_destroy_props)
6069
6144
 
6145
+ self._myprops.SetTitle(_('Properties for all vectors in {}'.format(self.myname)))
6146
+ self._myprops.Center()
6147
+ self._myprops.Raise()
6148
+
6070
6149
 
6071
6150
  def OnRDown(self, event:TreeListEvent):
6072
6151
  """
@@ -6080,7 +6159,7 @@ class Zones(wx.Frame, Element_To_Draw):
6080
6159
  self._edit_all_properties()
6081
6160
 
6082
6161
  elif isinstance(self.last_active, vector):
6083
- self.active_vector.myprop.show()
6162
+ self.active_vector.show_properties()
6084
6163
 
6085
6164
  elif isinstance(self.last_active, zone):
6086
6165
  self.active_zone.show_properties()
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 = 48
8
+ self.patch = 50
9
9
 
10
10
  def __str__(self):
11
11
 
wolfhece/drawing_obj.py CHANGED
@@ -92,6 +92,13 @@ class Element_To_Draw:
92
92
  logging.warning('No properties to show for this object !')
93
93
  pass
94
94
 
95
+ def hide_properties(self):
96
+ """
97
+ Generic function to hide properties of the object
98
+ """
99
+ logging.warning('No properties to hide for this object !')
100
+ pass
101
+
95
102
  def plot(self, sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None):
96
103
  """
97
104
  Plot data in OpenGL context
@@ -126,5 +133,5 @@ class Element_To_Draw:
126
133
  """
127
134
  if self.mapviewer is None:
128
135
  return False
129
-
136
+
130
137
  return self.mapviewer.SetCurrentContext()
wolfhece/wolf_array.py CHANGED
@@ -2321,6 +2321,15 @@ class Ops_Array(wx.Frame):
2321
2321
 
2322
2322
  self.myzones.showstructure()
2323
2323
 
2324
+ def hide_properties(self):
2325
+ """ Hide the properties panel """
2326
+
2327
+ try:
2328
+ self.myzones.hide_properties()
2329
+ self.Hide()
2330
+ except Exception as e:
2331
+ logging.error('Error in hide_properties : %s' % e)
2332
+
2324
2333
  def OnLoadvec(self, event:wx.MouseEvent):
2325
2334
  """ Load vector file """
2326
2335
 
@@ -4545,6 +4554,15 @@ class WolfArray(Element_To_Draw, header_wolf):
4545
4554
  self.myops.SetTitle(_('Operations on array: ') + self.idx)
4546
4555
  self.myops.Show()
4547
4556
 
4557
+ self.myops.Center()
4558
+ self.myops.Raise()
4559
+
4560
+ def hide_properties(self):
4561
+ """ Hide the properties window """
4562
+
4563
+ if self.wx_exists and self.myops is not None:
4564
+ self.myops.hide_properties()
4565
+
4548
4566
  @property
4549
4567
  def nullvalue(self) -> float:
4550
4568
  """ Return the null value """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.1.48
3
+ Version: 2.1.50
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
@@ -7,7 +7,7 @@ wolfhece/ManageParams.py,sha256=EeuUI5Vvh9ixCvYf8YShMC1s1Yacc7OxOCN7q81gqiQ,517
7
7
  wolfhece/Model1D.py,sha256=uL1DJVmDI2xVSE7H6n3icn3QbsPtTHeg8E-6wkDloKw,476914
8
8
  wolfhece/PyConfig.py,sha256=FB8u0belXOXTb03Ln6RdVWvMgjzi3oGPCmw2dWa3lNg,8332
9
9
  wolfhece/PyCrosssections.py,sha256=FnmM9DWY_SAF2EDH9Gu2PojXNtSTRF4-aYQuAAJXBh4,112771
10
- wolfhece/PyDraw.py,sha256=t3U7YQwBA5OYh-Pf0tffZCv9Ha9SH3S-XAhFXVOpeBs,390808
10
+ wolfhece/PyDraw.py,sha256=_Rfx59LMopR0Cx00d1RRF5Gb-WNxfA2v2RjkOfm84Yo,390847
11
11
  wolfhece/PyGui.py,sha256=aRWv9tBpRl7sKEd2gHWj8Bss0ZOKbGlUYIehWHFm8WY,105008
12
12
  wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
13
13
  wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
@@ -15,8 +15,8 @@ wolfhece/PyPalette.py,sha256=5TvXF5wWDxP4e70zO9B0UMgVP9c0oAzerM28aoJ1CTg,27982
15
15
  wolfhece/PyParams.py,sha256=wwgmP-_7wiiPLTcyX8a5jR6FyC1D2c4oBPc1VWQqtSA,97383
16
16
  wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
17
17
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
18
- wolfhece/PyVertex.py,sha256=vJ-NbnhPiTuFvDfAF7wfrEzVmladx5Ts0zKsyfySV3Q,40390
19
- wolfhece/PyVertexvectors.py,sha256=9MT7Qa37dnItmL4ml9O0NUY4SAee2SMWLd2FfL1oMTg,233710
18
+ wolfhece/PyVertex.py,sha256=MtZVjIWIi62QX_oqNosb56xPgjhOGVeGz-XsD82tsNg,40614
19
+ wolfhece/PyVertexvectors.py,sha256=KMXJB_zFi54I73jk_fGtSTxqTQhnCwngeEjJyLdgGDo,235914
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
@@ -27,7 +27,7 @@ wolfhece/__init__.py,sha256=FRDE8PiJAWxX9PMXsShRMZ8YADAY4WIgKMRh52rmhiw,23
27
27
  wolfhece/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
28
28
  wolfhece/cli.py,sha256=3S1Hbp2tOl51LwLcloAm1DqV9QuUWJx_Ui_vdKNtGxo,2915
29
29
  wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
30
- wolfhece/drawing_obj.py,sha256=znIQY8dkYhnmoq3mEsVkVzd-hSKDbFY6i8TV-Tf37jM,4040
30
+ wolfhece/drawing_obj.py,sha256=7vY04B6r08nurTTFmBXHyR5tVIF1YzAEw_uz4pqTDIw,4233
31
31
  wolfhece/flow_SPWMI.py,sha256=XDAelwAY-3rYOR0WKW3fgYJ_r8DU4IP6Y5xULW421tk,20956
32
32
  wolfhece/friction_law.py,sha256=MtZJLo-pTj3-Fw-w12z1LSgSIDrH-JGR0iD9wer_fpQ,5498
33
33
  wolfhece/gpuview.py,sha256=0Ld8glEijx5OhMEfcwqvUFEQ5ryRXLnzey3Dff_sn-k,24110
@@ -48,7 +48,7 @@ wolfhece/pywalous.py,sha256=yRaWJjKckXef1d9D5devP0yFHC9uc6kRV4G5x9PNq9k,18972
48
48
  wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
49
49
  wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
50
50
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
51
- wolfhece/wolf_array.py,sha256=cWkTaA4nY9I8-FLNlXBwn0xkvaN1EXw6M9NYUYnTqf8,368492
51
+ wolfhece/wolf_array.py,sha256=HnrviXNSps9LFDERXyeZmI0L2ovFYY4rBHInPBZLRGw,368994
52
52
  wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
53
53
  wolfhece/wolf_texture.py,sha256=DS5eobLxrq9ljyebYfpMSQPn8shkUAZZVfqrOKN_QUU,16951
54
54
  wolfhece/wolf_tiles.py,sha256=2Ho2I20rHRY81KXxjgLOYISdF4OkJ2d6omeY4shDoGI,10386
@@ -72,7 +72,7 @@ wolfhece/apps/check_install.py,sha256=SG024u18G7VRLKynbp7DKD1jImtHwuWwN4bJWHm-YH
72
72
  wolfhece/apps/curvedigitizer.py,sha256=_hRR2PWow7PU7rTHIbc6ykZ08tCXcK9uy7RFrb4EKkE,5196
73
73
  wolfhece/apps/isocurrent.py,sha256=MuwTodHxdc6PrqNpphR2ntYf1NLL2n9klTPndGrOHDQ,4109
74
74
  wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
75
- wolfhece/apps/version.py,sha256=1j6FkD-S6lKIU8cwsITdvdCE6HZVOxDK9aVtSrdT5Vw,388
75
+ wolfhece/apps/version.py,sha256=3OLK8XkmHW4Hi1ttOxzIDZZILVtXKvYakGuhqG-0N4U,388
76
76
  wolfhece/apps/wolf.py,sha256=mM6Tyi4DlKQILmO49cDUCip9fYVy-hLXkY3YhZgIeUQ,591
77
77
  wolfhece/apps/wolf2D.py,sha256=yPQGee7fsegoQ8GfWKrWEjX1Az_ApL-UWlBiqPvaIyY,565
78
78
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -278,8 +278,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
278
278
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
279
279
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
280
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
281
- wolfhece-2.1.48.dist-info/METADATA,sha256=2S8MGX7bCP41sSY7a9scSmcsfKj2w8uiaMzIY5bIY9k,2548
282
- wolfhece-2.1.48.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
283
- wolfhece-2.1.48.dist-info/entry_points.txt,sha256=Q5JuIWV4odeIJI3qc6fV9MwRoz0ezqPVlFC1Ppm_vdQ,395
284
- wolfhece-2.1.48.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
285
- wolfhece-2.1.48.dist-info/RECORD,,
281
+ wolfhece-2.1.50.dist-info/METADATA,sha256=hDyP3-DlayT9vmBCHDj-deR_EczWlyXfofxjPknApok,2548
282
+ wolfhece-2.1.50.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
283
+ wolfhece-2.1.50.dist-info/entry_points.txt,sha256=Q5JuIWV4odeIJI3qc6fV9MwRoz0ezqPVlFC1Ppm_vdQ,395
284
+ wolfhece-2.1.50.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
285
+ wolfhece-2.1.50.dist-info/RECORD,,