wolfhece 2.1.127__py3-none-any.whl → 2.1.129__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.
@@ -24,6 +24,9 @@ import logging
24
24
  from tqdm import tqdm
25
25
  from datetime import datetime as dt, timedelta
26
26
 
27
+ from shapely import contains, contains_xy, prepare, destroy_prepared, is_prepared
28
+ from shapely.geometry import Point, Polygon
29
+
27
30
  try:
28
31
  from OpenGL.GL import *
29
32
  except:
@@ -3401,7 +3404,7 @@ class Wolfresults_2D(Element_To_Draw):
3401
3404
 
3402
3405
  return self.head_blocks[getkeyblock(which_block,False)]
3403
3406
 
3404
- def get_xy_infootprint_vect(self, myvect: vector, which_block=1) -> tuple[np.ndarray,np.ndarray]:
3407
+ def get_xy_infootprint_vect(self, myvect: vector | Polygon, which_block=1) -> tuple[np.ndarray,np.ndarray]:
3405
3408
 
3406
3409
  """
3407
3410
  :return numpy array content les coordonnées (x,y) des mailles dans l'empreinte du vecteur
@@ -3417,19 +3420,27 @@ class Wolfresults_2D(Element_To_Draw):
3417
3420
 
3418
3421
  return mypts,myptsij
3419
3422
 
3420
- def get_ij_infootprint_vect(self, myvect: vector, which_block=1) -> np.ndarray:
3423
+ def get_ij_infootprint_vect(self, myvect: vector | Polygon, which_block=1) -> np.ndarray:
3421
3424
 
3422
3425
  """
3423
3426
  Returns:
3424
3427
  numpy array content les indices ij des mailles dans l'empreinte du vecteur
3425
3428
  """
3426
3429
 
3430
+ if isinstance(myvect, Polygon):
3431
+ xmin, ymin, xmax, ymax = myvect.bounds
3432
+ elif isinstance(myvect, vector):
3433
+ xmin, ymin, xmax, ymax = myvect.xmin, myvect.ymin, myvect.xmax, myvect.ymax
3434
+ else:
3435
+ logging.error(_('The object must be a vector or a Polygon'))
3436
+ return np.array([])
3437
+
3427
3438
  lochead = self.get_header_block(which_block)
3428
3439
  nbx = lochead.nbx
3429
3440
  nby = lochead.nby
3430
3441
 
3431
- i1, j1 = self.get_ij_from_xy(myvect.xmin, myvect.ymin, which_block)
3432
- i2, j2 = self.get_ij_from_xy(myvect.xmax, myvect.ymax, which_block)
3442
+ i1, j1 = self.get_ij_from_xy(xmin, ymin, which_block)
3443
+ i2, j2 = self.get_ij_from_xy(xmax, ymax, which_block)
3433
3444
  i1 = max(i1,0)
3434
3445
  j1 = max(j1,0)
3435
3446
  i2 = min(i2,nbx-1)
@@ -3439,17 +3450,39 @@ class Wolfresults_2D(Element_To_Draw):
3439
3450
 
3440
3451
  return mypts
3441
3452
 
3442
- def get_xy_inside_polygon(self, myvect: vector, usemask=True):
3453
+ def get_xy_inside_polygon(self, myvect: vector | Polygon,
3454
+ usemask:bool=True, method:Literal['mpl','shapely']='shapely'):
3443
3455
  """
3444
3456
  Obtention des coordonnées contenues dans un polygone
3445
- usemask = restreint les éléments aux éléments non masqués de la matrice
3457
+
3458
+ :param myvect: polygone
3459
+ :param usemask: restreint les éléments aux éléments non masqués de la matrice
3460
+ :param method: méthode de calcul ('mpl' == Matplotlib ou 'shapely')
3446
3461
  """
3447
3462
 
3448
- myvect.find_minmax()
3463
+ if method=='mpl':
3464
+ return self.get_xy_inside_polygon_mpl(myvect, usemask)
3465
+ elif method=='shapely':
3466
+ return self.get_xy_inside_polygon_shapely(myvect, usemask)
3467
+
3468
+
3469
+ def get_xy_inside_polygon_mpl(self, myvect: vector | Polygon, usemask:bool=True):
3470
+ """
3471
+ Obtention des coordonnées contenues dans un polygone
3472
+
3473
+ :param myvect: polygone
3474
+ :param usemask: restreint les éléments aux éléments non masqués de la matrice
3475
+ """
3476
+
3477
+ if isinstance(myvect, vector):
3478
+ # force la mise à jour des min/max
3479
+ myvect.find_minmax()
3480
+ myvert = myvect.asnparray()
3481
+ elif isinstance(myvect, Polygon):
3482
+ myvert = myvect.exterior.coords
3449
3483
 
3450
3484
  mypointsxy={}
3451
3485
 
3452
- myvert = myvect.asnparray()
3453
3486
  path = mpltPath.Path(myvert)
3454
3487
 
3455
3488
  for curblock in range(self.nb_blocks):
@@ -3467,6 +3500,56 @@ class Wolfresults_2D(Element_To_Draw):
3467
3500
 
3468
3501
  return mypointsxy
3469
3502
 
3503
+ def get_xy_inside_polygon_shapely(self, myvect: vector | Polygon,
3504
+ usemask:bool=True, strictly:bool=False):
3505
+ """
3506
+ Obtention des coordonnées contenues dans un polygone
3507
+
3508
+ :param usemask: restreint les éléments aux éléments non masqués de la matrice
3509
+ :param strictly: si True, les points sur le bord du polygone ne sont pas considérés comme à l'intérieur
3510
+ """
3511
+
3512
+ if isinstance(myvect, vector):
3513
+ # force la mise à jour des min/max
3514
+ myvect.find_minmax()
3515
+ polygon = myvect.polygon
3516
+ elif isinstance(myvect, Polygon):
3517
+ polygon = myvect
3518
+
3519
+ mypointsxy={}
3520
+
3521
+ if not is_prepared(polygon):
3522
+ prepare(polygon) # Prepare the polygon for **faster** contains check -- VERY IMPORTANT
3523
+ to_destroy = True
3524
+ else:
3525
+ to_destroy = False
3526
+
3527
+ for curblock in range(self.nb_blocks):
3528
+ locpointsxy,locpointsij = self.get_xy_infootprint_vect(myvect,curblock+1)
3529
+
3530
+ if strictly:
3531
+ inside = contains_xy(polygon, mypointsxy[:,0], mypointsxy[:,1])
3532
+ else:
3533
+ points= np.array([Point(x,y) for x,y in mypointsxy])
3534
+ boundary = polygon.boundary
3535
+ inside = contains(polygon, points)
3536
+ on_border = list(map(lambda point: boundary.contains(point), points))
3537
+ inside = np.logical_or(inside, on_border)
3538
+
3539
+ if usemask and len(locpointsxy)>0:
3540
+ locpointsij = locpointsij[np.where(inside)]
3541
+ mymask = np.logical_not(self.myblocks[getkeyblock(curblock)].current.array.mask[locpointsij[:, 0], locpointsij[:, 1]])
3542
+ locpointsxy = locpointsxy[np.where(mymask)]
3543
+
3544
+ locpointsxy = locpointsxy[np.where(inside)]
3545
+ mypointsxy[getkeyblock(curblock)]=locpointsxy
3546
+
3547
+ if to_destroy:
3548
+ destroy_prepared(polygon) # Release the prepared polygon
3549
+
3550
+ return mypointsxy
3551
+
3552
+
3470
3553
  def get_xy_under_polyline(self, myvect: vector) -> dict[str, (int,int)]:
3471
3554
  """
3472
3555
  Obtention des coordonnées (x,y) sous une polyligne avec séparation des points par bloc
@@ -3487,7 +3570,9 @@ class Wolfresults_2D(Element_To_Draw):
3487
3570
 
3488
3571
  return mypoints
3489
3572
 
3490
- def get_values_insidepoly(self, myvect:vector, usemask:bool=True, agglo:bool=True, getxy:bool=False):
3573
+ def get_values_insidepoly(self, myvect:vector | Polygon,
3574
+ usemask:bool=True, agglo:bool=True, getxy:bool=False,
3575
+ method:Literal['mpl','shapely']='mpl'):
3491
3576
  """
3492
3577
  Retourne les valeurs des mailles contenues dans un polygone
3493
3578
  Traite la matrice courante et l'altitude de fond si on est en vue 'views_2D.WATERLEVEL'
@@ -3502,7 +3587,7 @@ class Wolfresults_2D(Element_To_Draw):
3502
3587
  """
3503
3588
  myvalues={}
3504
3589
  myvaluesel={}
3505
- mypoints = self.get_xy_inside_polygon(myvect, usemask)
3590
+ mypoints = self.get_xy_inside_polygon(myvect, usemask, method=method)
3506
3591
 
3507
3592
  for curblock in range(self.nb_blocks):
3508
3593
  curkey = getkeyblock(curblock)
@@ -3535,7 +3620,9 @@ class Wolfresults_2D(Element_To_Draw):
3535
3620
  else:
3536
3621
  return myvalues,None
3537
3622
 
3538
- def get_all_values_insidepoly(self, myvect:vector, usemask:bool= True, agglo:bool= True, getxy:bool= False):
3623
+ def get_all_values_insidepoly(self, myvect:vector, usemask:bool= True,
3624
+ agglo:bool= True, getxy:bool= False,
3625
+ method:Literal['mpl','shapely']='mpl'):
3539
3626
  """
3540
3627
  Récupération de toutes les valeurs dans un polygone
3541
3628
 
@@ -3548,7 +3635,7 @@ class Wolfresults_2D(Element_To_Draw):
3548
3635
  """
3549
3636
 
3550
3637
  myvalues={}
3551
- mypoints = self.get_xy_inside_polygon(myvect, usemask)
3638
+ mypoints = self.get_xy_inside_polygon(myvect, usemask, method=method)
3552
3639
 
3553
3640
  for curblock in range(self.nb_blocks):
3554
3641
  if len(mypoints[getkeyblock(curblock)])>0:
@@ -4876,6 +4963,7 @@ class Wolfresults_2D(Element_To_Draw):
4876
4963
  :param start: start time step - 0-based
4877
4964
  :param end: end time step - 0-based
4878
4965
  :param every: step interval
4966
+ :param callback: optional callback to update progress
4879
4967
 
4880
4968
  :return : tuple of WolfArray or WolfArrayMB - H, U_norm, Q_norm, Z, Head
4881
4969
  """
@@ -5296,4 +5384,107 @@ class Wolfresults_2D(Element_To_Draw):
5296
5384
  band.WriteArray(arr.array.transpose())
5297
5385
  band.FlushCache()
5298
5386
  band.ComputeStatistics(True)
5299
- out_ds = None
5387
+ out_ds = None
5388
+
5389
+ def get_time_averaged_results(self, start:int=0, end:int=-1, every:int=1, time_averaging:bool=True, callback=None) -> Union[tuple[WolfArray, WolfArray, WolfArray], tuple[WolfArrayMB, WolfArrayMB, WolfArrayMB]]:
5390
+ """
5391
+ Get time averaged results (or simply, average over all saved indicies)
5392
+
5393
+ :param start: start time step - 0-based
5394
+ :param end: end time step - 0-based
5395
+ :param every: step interval
5396
+ :param time_averaging: True -> Time-averaging, False -> Average over all saved indicies
5397
+ :param callback: optional callback to update progress
5398
+
5399
+ :return : WolfArray - h, qx, qy
5400
+ """
5401
+
5402
+ number_of_time_steps = self.get_nbresults()
5403
+ if end ==-1:
5404
+ end = number_of_time_steps
5405
+
5406
+ assert start>=0, 'Start index must be greater or equal to 0'
5407
+ assert end>0, 'End index must be greater than 0 (or -1 to use all time steps)'
5408
+ assert every>0, 'Step interval must be greater than 0'
5409
+ assert start<end, 'Start index must be less than end index'
5410
+
5411
+ if (end-start)%every != 0:
5412
+ logging.warning('The difference between start and end indices is not a multiple of the step interval. The last time step will not be included in the averaging.')
5413
+
5414
+ if time_averaging:
5415
+ deltaTot = self.times[end-1] - self.times[start]
5416
+ else:
5417
+ deltaTot = (end - start)//every
5418
+
5419
+ # Initialise time-averaged matrices based on results type
5420
+ # If only one block --> WolfArray
5421
+ # If only multiple blocks --> WolfArrayMB
5422
+ h_avg = self.as_WolfArray(copyarray=True)
5423
+ qx_avg = self.as_WolfArray(copyarray=True)
5424
+ qy_avg = self.as_WolfArray(copyarray=True)
5425
+
5426
+ averaged = [h_avg, qx_avg, qy_avg]
5427
+
5428
+ for curavg in averaged:
5429
+ curavg.nullvalue = 0.
5430
+ curavg.reset()
5431
+ curavg.mask_reset()
5432
+
5433
+ for time_step in tqdm(range(start, end, every)):
5434
+
5435
+ if callback is not None:
5436
+ callback(time_step, "Step {} / {}".format(time_step+1, end))
5437
+
5438
+ self.read_oneresult(time_step+1)
5439
+
5440
+ if time_averaging:
5441
+ # Weight for time averaging. At the last time step, the weight is the same as the previous one.
5442
+ if time_step<end-every:
5443
+ delta = self.times[time_step+every] - self.times[time_step]
5444
+ else:
5445
+ delta = 1
5446
+
5447
+ if self.nb_blocks>1:
5448
+ for curblock in self.myblocks.keys():
5449
+
5450
+ # Get WolfArray
5451
+ wd = self.get_h_for_block(curblock)
5452
+ qx = self.get_qx_for_block(curblock)
5453
+ qy = self.get_qy_for_block(curblock)
5454
+
5455
+ # Add the values to the corresponding block in the time-averaged matrix
5456
+ h_avg[curblock].array += wd.array * delta
5457
+ qx_avg[curblock].array += qx.array * delta
5458
+ qy_avg[curblock].array += qy.array * delta
5459
+
5460
+ else:
5461
+ curblock = getkeyblock(0)
5462
+
5463
+ # Get WolfArray
5464
+ wd = self.get_h_for_block(curblock)
5465
+ qx = self.get_qx_for_block(curblock)
5466
+ qy = self.get_qy_for_block(curblock)
5467
+
5468
+ # Add the values to the corresponding block in the time-averaged matrix
5469
+ h_avg[curblock].array += wd.array * delta
5470
+ qx_avg[curblock].array += qx.array * delta
5471
+ qy_avg[curblock].array += qy.array * delta
5472
+
5473
+ # Calculate the average
5474
+ for curavg in averaged:
5475
+ if self.nb_blocks>1:
5476
+ for i in range(self.nb_blocks):
5477
+ curavg[i].array /= deltaTot
5478
+ else:
5479
+ curblock = getkeyblock(0)
5480
+ curavg[curblock].array /= deltaTot
5481
+
5482
+ if self.nb_blocks>1:
5483
+ for i in range(self.nb_blocks):
5484
+ qx_avg[i].array.mask[:,:] = h_avg[i].array.mask[:,:]
5485
+ qy_avg[i].array.mask[:,:] = h_avg[i].array.mask[:,:]
5486
+ else:
5487
+ qx_avg.array.mask[:,:] = h_avg.array.mask[:,:]
5488
+ qy_avg.array.mask[:,:] = h_avg.array.mask[:,:]
5489
+
5490
+ return h_avg, qx_avg, qy_avg
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: wolfhece
3
- Version: 2.1.127
3
+ Version: 2.1.129
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
- License: Copyright (c) 2024 University of Liege. All rights reserved.
6
5
  Project-URL: Homepage, https://uee.uliege.be/hece
7
6
  Project-URL: Issues, https://uee.uliege.be/hece
8
7
  Classifier: Programming Language :: Python :: 3.10
@@ -40,7 +39,7 @@ Requires-Dist: notebook
40
39
  Requires-Dist: matplotlib
41
40
  Requires-Dist: mkl
42
41
  Requires-Dist: python-gettext
43
- Requires-Dist: shapely
42
+ Requires-Dist: shapely==2.0.7
44
43
  Requires-Dist: openpyxl
45
44
  Requires-Dist: xlrd
46
45
  Requires-Dist: openkmi
@@ -59,7 +58,7 @@ Requires-Dist: numba==0.58.*
59
58
  Requires-Dist: xmltodict
60
59
  Requires-Dist: opencv-python
61
60
  Requires-Dist: xarray
62
- Requires-Dist: rasterio
61
+ Requires-Dist: rasterio==1.3.11
63
62
  Requires-Dist: h5py
64
63
  Requires-Dist: exif
65
64
  Requires-Dist: pyglm
@@ -70,6 +69,7 @@ Requires-Dist: autograd
70
69
  Requires-Dist: plyfile
71
70
  Requires-Dist: tabulate
72
71
  Requires-Dist: ipympl
72
+ Requires-Dist: contextily
73
73
 
74
74
  Ce paquet contient l'interface graphique Python du logiciel WOLF (HECE - ULiège) de même que plusieurs outils de traitements topographique, hydraulique et hydrologique.
75
75
 
@@ -7,16 +7,16 @@ wolfhece/ManageParams.py,sha256=EeuUI5Vvh9ixCvYf8YShMC1s1Yacc7OxOCN7q81gqiQ,517
7
7
  wolfhece/Model1D.py,sha256=SI4oNF_J3MdjiWZoizS8kuRXLMVyymX9dYfYJNVCQVI,476989
8
8
  wolfhece/PyConfig.py,sha256=Y0wtSIFpAMYa7IByh7hbW-WEOVjNsQEduq7vhIYdZQw,16716
9
9
  wolfhece/PyCrosssections.py,sha256=igU_ELrg5VrHU6RNbF5tHxPyVImpR3xdpfopJYc7haw,114711
10
- wolfhece/PyDraw.py,sha256=hh_iBS9lNtJrNNwrLcL7mgFIvfzVFEt2XP7ekaFNU04,597283
10
+ wolfhece/PyDraw.py,sha256=igUjT6PZfXW0PpZti-Xo4S2vDnIyFxab-jpVdkmrX9c,600006
11
11
  wolfhece/PyGui.py,sha256=5ANCUmsBwsx_h-GWqV9xwnSQyGJ16mSObOm-h3_7LIQ,144708
12
12
  wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
13
13
  wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
14
- wolfhece/PyPalette.py,sha256=Ayz0lqOPfUgjPpqvxragBSd7v47Z79roEy7thwVlH7M,32370
15
- wolfhece/PyParams.py,sha256=u_yGvrUqgLLkytZ7lGCIFi-7rQC0H2vRDw-MtmdvKPQ,99394
14
+ wolfhece/PyPalette.py,sha256=cwoiYMQW8SMgtUvQwXhIYKJ2NNhAfiemKE8npIu4eqc,33724
15
+ wolfhece/PyParams.py,sha256=wVgzJC5Bs8rfx6NdUdcFDtnsaPBYJgRn3A-rROk49MQ,99525
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=qFf8UPvkbwumRRfjpBcgZmqpHtcEtIEoUh30rWFF-lQ,45205
19
- wolfhece/PyVertexvectors.py,sha256=-12nKF7OZxMbwzilr0thhZiCsq0xjgn2MfkVe2gXq0M,307022
19
+ wolfhece/PyVertexvectors.py,sha256=2kjtKwdYiGif-NVok8rS9T7Ok8jYMGN4tzy6zXoTxh8,325764
20
20
  wolfhece/PyWMS.py,sha256=WmOzHP02wVcB5RGJAlENL_NzF9rYfvLxslRFyxaEt1Q,6615
21
21
  wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
22
22
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
@@ -29,7 +29,7 @@ wolfhece/analyze_vect.py,sha256=3lkMwaQ4KRddBVRvlP9PcM66wZwwC0eCmypP91AW-os,6015
29
29
  wolfhece/cli.py,sha256=U8D7e_OezfrRfgMsa4TyQ7rI4voLKSY3RK-c8fb6rrw,3156
30
30
  wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
31
31
  wolfhece/drawing_obj.py,sha256=7vY04B6r08nurTTFmBXHyR5tVIF1YzAEw_uz4pqTDIw,4233
32
- wolfhece/eikonal.py,sha256=5UuCtzcLb3oIhBzuTYxQ6z2qo8iL8xMG1m2J-r-PukI,22891
32
+ wolfhece/eikonal.py,sha256=bIlLBJkE3fYGRwDDO6OV9Zjmi2-O3Z6oTSqTOjfm0VU,23189
33
33
  wolfhece/flow_SPWMI.py,sha256=XDAelwAY-3rYOR0WKW3fgYJ_r8DU4IP6Y5xULW421tk,20956
34
34
  wolfhece/friction_law.py,sha256=MtZJLo-pTj3-Fw-w12z1LSgSIDrH-JGR0iD9wer_fpQ,5498
35
35
  wolfhece/gpuview.py,sha256=Jql8pLZ0PpvZ_ScT-U4jsXANZ9j4-m_RWhsLA2HISuQ,24544
@@ -38,28 +38,29 @@ wolfhece/import_ascfiles.py,sha256=6Zl8qBR9c6VtyziookQ8YE9KC0GtW_J9WFt5ubyGp-s,4
38
38
  wolfhece/ins.py,sha256=uUeLMS1n3GPnfJhxl0Z2l-UXpmPUgthuwct282OOEzk,36184
39
39
  wolfhece/irm_qdf.py,sha256=DMdDEAYbgYxApObm6w-dZbBmA8ec6PghBLXR2lUEZLc,27457
40
40
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
41
+ wolfhece/lagrange_multiplier.py,sha256=0G-M7b2tGzLx9v0oNYYq4_tLAiHcs_39B4o4W3TUVWM,6567
41
42
  wolfhece/matplotlib_fig.py,sha256=vnFI6sghw9N9jKhR8X1Z4aWli_5fPNylZQtFuujFJDY,84075
42
43
  wolfhece/multiprojects.py,sha256=Sd6Bl6YP33jlR79A6rvSLu23vq8sqbFYL8lWuVPkEpE,21549
43
44
  wolfhece/picc.py,sha256=0X_pzhSBoVxgtTfJ37pkOQO3Vbr9yurPaD1nVeurx8k,8531
44
45
  wolfhece/pidcontroller.py,sha256=PHYenOdzfyPK2pXAhyRolCxMSMRd2AFza0eVMafpPHk,5205
45
46
  wolfhece/pyGui1D.py,sha256=9g7OS3YiKsqy--6y0cBD7x2gaqTTYFXWkxImpgnTA20,121937
46
- wolfhece/pybridges.py,sha256=rundKU9sMiPNeBAPg9LqU_L5BW8gwyXwyu7KVVThDiA,65964
47
+ wolfhece/pybridges.py,sha256=bFAqjL4ColeJtwvyCPGQ8VllWoq1RbVWXxFrdfrvqm8,65954
47
48
  wolfhece/pydike.py,sha256=hPBQsmSTW4QAp1wcOzb-TL3L7eet2WT1sJx2q-WNQ-Q,2241
48
49
  wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
49
- wolfhece/pypolygons_scen.py,sha256=vMfAKXKrW6vKR7l9Fl2hEt-jihLwIiMur7qNTNfwRg4,46101
50
+ wolfhece/pypolygons_scen.py,sha256=WubNPQEk4fC--4qIHZK6mJqQnRs4mAWUpmjRL8q33Sw,46069
50
51
  wolfhece/pyshields.py,sha256=6YncgmcA6QvbyIl4jbFRf24uJVjhiSplQKWtZH42lXI,24108
51
52
  wolfhece/pyviews.py,sha256=5Hqqo9MRw1eiomYkmc7QywNu1KmEkytLJG-wH_aG38Y,13748
52
53
  wolfhece/pywalous.py,sha256=mWB7UxlYMIbPxNUDlONQEjcOOy9VSaRU9aYWZ5IFLu8,19164
53
54
  wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
54
55
  wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
55
56
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
56
- wolfhece/wolf_array.py,sha256=_Bim7x1c9kg9MBVuabCCYfq2azduJ3DNeYt5iaJRnGQ,449995
57
+ wolfhece/wolf_array.py,sha256=R8P1xlVFR2D9DG_5TGZcsC_gEwVM_9vmeWfKwQ2aFG0,485301
57
58
  wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
58
59
  wolfhece/wolf_texture.py,sha256=ecoXXmmcLuyG1oPqU2dB_k03qMTCLTVQoSq1xi1EalU,17359
59
60
  wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
60
61
  wolfhece/wolf_vrt.py,sha256=wbxXVN7TL9zgdyF79S-4e3pje6wJEAgBEfF_Y8kkzxs,14271
61
62
  wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
62
- wolfhece/wolfresults_2D.py,sha256=R5KyM_m6g3h5mOXo3Fci8jfttSO0tS8oPwk1MiaJaZ0,204004
63
+ wolfhece/wolfresults_2D.py,sha256=X8Dsu9FTqKwgnYOQPD95XDLfRzr4a4uFQ9XKGALew5E,212066
63
64
  wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
64
65
  wolfhece/acceptability/Parallels.py,sha256=njrJFH_tTdQUg2px-QqQR6VdhImP1TEujLhpM3JEKNo,4001
65
66
  wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
@@ -81,7 +82,7 @@ wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVz
81
82
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
82
83
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
83
84
  wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
84
- wolfhece/apps/version.py,sha256=TteRO85B5WMJKYbXiSKkK2SnPGY1celHFBzcAcXnb-A,389
85
+ wolfhece/apps/version.py,sha256=bTot2RdHq2MShlNmumJbDtXhE0SckmKwrhnLgJVMixc,389
85
86
  wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
86
87
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
87
88
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -104,7 +105,7 @@ wolfhece/blender/quads.py,sha256=2XwQqm-K2tvekP1qpYOMi2yz7IThU0CZnn0UaTwDJv0,120
104
105
  wolfhece/clientserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
106
  wolfhece/clientserver/clientserver.py,sha256=sNJ8STw0kqUjCB4AerqZNbzCtl5WRe_JRvhe7whNoSE,2798
106
107
  wolfhece/coupling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- wolfhece/coupling/hydrology_2d.py,sha256=0zonCPwOLbC1Zs9koKqueEo4InIq5VWlNIb24rLzfXM,48561
108
+ wolfhece/coupling/hydrology_2d.py,sha256=QBIcgujfOX1xX3ARF2PQz6Uqwu3j6EaRw0QlGjG_H7k,53090
108
109
  wolfhece/eva/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
110
  wolfhece/eva/bootstrap.py,sha256=Ys4xTDIvG_QtxCKWLYzb3_XAZU441jGX7fHIbd9Mvr0,840
110
111
  wolfhece/eva/hydrogramme_mono.py,sha256=uZFIgJJ-JogMFzt7D7OnyVaHvgxCQJPZz9W9FgnuthA,8138
@@ -117,22 +118,22 @@ wolfhece/fonts/helvetica.ttf,sha256=X4Zd3zdUmuRGMLE6UB-BMIbirpdK3Ia5czfNnuSx5P8,
117
118
  wolfhece/fonts/sanserif.ttf,sha256=Nvv5eMgTl5-bWgV37B7E1-vZpAZPNJwjtJSzMNDrl9A,42696
118
119
  wolfhece/ftp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
120
  wolfhece/ftp/downloader.py,sha256=NANzxSzdcp25dFMYin5QA9UnFexNe6-W2AqqTzUE4f4,5223
120
- wolfhece/hydrology/Catchment.py,sha256=uBNzw2Um3_2TZTo2nlMeKmq50IVTf5GPt-SLwRaEOpA,139369
121
- wolfhece/hydrology/Comparison.py,sha256=_2YU9P-AHKnP67sVJWCc6HpnZw9cYBHKjuUGULggICo,84277
121
+ wolfhece/hydrology/Catchment.py,sha256=gyj4GtbTbs0L_bBFoQvX1fCdSxfPWBt8hsV46c-lUsM,144461
122
+ wolfhece/hydrology/Comparison.py,sha256=WBG-NbbtNYgNmCCl9SPTcHf-2XtjRVY-9ohpC2XGkaI,84480
122
123
  wolfhece/hydrology/Dumping.py,sha256=SHGYXr30nMOGPSLArMvAzVxGyLywLf4i267166oUHhQ,2403
123
- wolfhece/hydrology/Optimisation.py,sha256=GJj0VfG_AVNmyrzyML-FadQg8GAiCh3Mnm9UQMZI-Mg,142538
124
+ wolfhece/hydrology/Optimisation.py,sha256=soT2TsM443uzqUFYOVDhj2oyLPF6Ob5YhRefSQLKkUM,149243
124
125
  wolfhece/hydrology/Outlet.py,sha256=jdjYN2gIolQJ5prf1wVfxm7cp_YguwQ0JMRsC9ks-Tg,10519
125
- wolfhece/hydrology/PostProcessHydrology.py,sha256=3vXOG4FyVBHCQjgIzMz0vQHbP4jKnAO9J-fAarsoU5g,7262
126
- wolfhece/hydrology/PyWatershed.py,sha256=Sloe_shGw0IuEfg18Z3gyy3k3a7N-CJSYhHKtbewdDE,98246
127
- wolfhece/hydrology/RetentionBasin.py,sha256=l73gofdFSdQcGHMM7fkM7e8b9wzd-MnNmVeJDsX21c4,82923
128
- wolfhece/hydrology/SubBasin.py,sha256=w7xp4lpu5gVX6E873PNtn5zSkGRw2FAJB6-pK3pntfs,171477
126
+ wolfhece/hydrology/PostProcessHydrology.py,sha256=GS2dm9ahDb856apXvTM-oyusTn0xj-ySNpKbHa_jQdw,7419
127
+ wolfhece/hydrology/PyWatershed.py,sha256=a26M6tVe4hrQ-a8FyAx7H9-RZcVCU5BBzFff4_YT0UU,97665
128
+ wolfhece/hydrology/RetentionBasin.py,sha256=vFvpnomo5h8ZWq3Hq-YlxRnyqyQqHrojABMKzu3RP6E,83358
129
+ wolfhece/hydrology/SubBasin.py,sha256=wFPehJ0vbZM9nZjEdttuch3Dmt8LzDtRVsF5E8pxM4E,178326
129
130
  wolfhece/hydrology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- wolfhece/hydrology/constant.py,sha256=dFsLm_9k3PLItdzUfbWwEMfJo9Q1wS8-e6_jmfSOZHc,1545
131
- wolfhece/hydrology/cst_exchanges.py,sha256=tGJTEf2swhrflF4fmopdNyyE3O-K-gsq6-BXBdsW3TQ,17887
131
+ wolfhece/hydrology/constant.py,sha256=0o6l8zwLESlW6G9vYNFlUJV4YhcDq6_jnCN28DNchmU,1634
132
+ wolfhece/hydrology/cst_exchanges.py,sha256=w83FyI1gOQ5EjTWb9usLfakQAJwv52u8_Hap2Nih570,39593
132
133
  wolfhece/hydrology/data_treatment.py,sha256=vHNtEvXHJOdGHjaNjbTTvVoFQjVee-AdspJEesxVNuQ,34967
133
134
  wolfhece/hydrology/forcedexchanges.py,sha256=MrzMqKISX6G6t3XwkyFQa6tVFfTTC8ifm_nSvrOy5-8,2259
134
- wolfhece/hydrology/plot_hydrology.py,sha256=14XrnJD-2VDfAPRWOrRL88vFyYVQubBaiO5oWv60HcM,34922
135
- wolfhece/hydrology/read.py,sha256=itMat6MMn4Y14C3SMU_9JMBtpXFjG4mLNMfXXd5U6Ns,9328
135
+ wolfhece/hydrology/plot_hydrology.py,sha256=nIOPPa_91z6wllCRC8BsEijK_4XMzC7lZHy_OvzesNc,35704
136
+ wolfhece/hydrology/read.py,sha256=BaaIp1x44wPQz2LkWtzu7ZNKx3Gw_WDtAw-B4y_C2IU,9553
136
137
  wolfhece/hydrology/slope_manager.py,sha256=vlek0z8qcqB61eleiksyOe3QR1vpbtwfeowy6ms7_Fg,5580
137
138
  wolfhece/hydrology/wolfMap_treatment.py,sha256=eAxr24zJGwmDof1aZpcxewVvv_bWDvoO8t9Wwf99Mlo,10606
138
139
  wolfhece/hydrometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -185,7 +186,7 @@ wolfhece/lazviewer/viewer/qt.conf,sha256=uzoy7MmKYo_uTrNsfMuQ84LgBI5pVOeWXK_rXYM
185
186
  wolfhece/lazviewer/viewer/viewer.exe,sha256=pF5nwE8vMWlEzkk-SOekae9zpOsPhTWhZbqaJntumJc,202240
186
187
  wolfhece/lazviewer/viewer/viewer.py,sha256=5igxFDFZMnnnhF3oFbEHKLfgiK4TUgXEZHsgOJbtNY4,25319
187
188
  wolfhece/libs/MSVCP140.dll,sha256=2GrBWBI6JFuSdZLIDMAg_qKcjErdwURGbEYloAypx3o,565640
188
- wolfhece/libs/WolfDll.dll,sha256=E8SeV0AHVXW5ikAQuVtijqIvaYx7UIMeqvnnsmTMCT8,132934144
189
+ wolfhece/libs/WolfDll.dll,sha256=iGTdK8Hb4OKxh3xCOuYrK2KCfDlUJGl50FGUP160ddQ,134159360
189
190
  wolfhece/libs/__init__.py,sha256=x7QvPd7hjL-Xl7RjlA8y6rcvKCkYu3JpFE3YnzUJeCY,3326
190
191
  wolfhece/libs/api-ms-win-crt-heap-l1-1-0.dll,sha256=r0euvgZa8vBFoZ8g7H5Upuc8DD6aUQimMJWnIyt1OBo,19720
191
192
  wolfhece/libs/api-ms-win-crt-math-l1-1-0.dll,sha256=ol0GVN6wzqGu8Ym6IXTQ8TvfUvCY06nsNtFeS_swxJk,27912
@@ -224,7 +225,7 @@ wolfhece/mar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
225
  wolfhece/mar/commontools.py,sha256=SiSxpv5BFYEBCEydsE4ZmBuot3KTy0UYMx2aa-4fbuQ,52549
225
226
  wolfhece/mar/interface_MAR_WOLF.py,sha256=MWeXaHLDT4Eo9jZOAvz013lmpgGYT1v9VUYGAgBgSRU,21454
226
227
  wolfhece/math_parser/__init__.py,sha256=Mi7YTrlJtcflyrRdZHHgE-uNPUFfOWmsf8FsOwKBRPI,27961
227
- wolfhece/math_parser/calculator.py,sha256=e9KVemvVqYofWYEwu_wgMhu4EhmcL6dY790DOwDdxTs,7448
228
+ wolfhece/math_parser/calculator.py,sha256=Avyx-ikIwsficqd-Q4erX6U0zGQ3cAWfADyq6_uHpB0,7493
228
229
  wolfhece/mesh2d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
230
  wolfhece/mesh2d/bc_manager.py,sha256=fKED0RhUjCmd0xd0lcOeZqiga5Glqs1ag1boYhXlq0k,54232
230
231
  wolfhece/mesh2d/cell_tracker.py,sha256=mPmnD5lEf3gLPuLqtAIo-Gp-ipAwQdPxzjWOGt0b7jM,8958
@@ -264,7 +265,7 @@ wolfhece/pythonfortran/example_makendarray.py,sha256=FNPp6lsU9Mv0O8VLN3JHWk5Qn1z
264
265
  wolfhece/pythonfortran/example_numpy_memory.py,sha256=o3hzJDw7YtE4v0FXI3-l2VzupCk5xF7-uqlb_Ay8FUQ,3660
265
266
  wolfhece/pythonfortran/tools.py,sha256=oYh9MguRYEGNGKVbHqQW2V9okZJLs3n4Qs-vLWPmBe4,2462
266
267
  wolfhece/radar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
267
- wolfhece/radar/wolfradar.py,sha256=mvsVf6-4KCqVF6kWsKfPuM7KPqRdYHuIZAbb8kzXAZU,10032
268
+ wolfhece/radar/wolfradar.py,sha256=LM2jfdlclBN5fycL6i1wI2ipIsTfG6wor1A5IwE7JPs,12983
268
269
  wolfhece/rem/REMMaker.py,sha256=zkiAo36MmusPhgv1qJmpDgtoTWbh_eJ6qJqtCfeC1M8,31480
269
270
  wolfhece/rem/RasterViz.py,sha256=fnyMfAJZDoS-rjagsNRGLndS-UYNUzMY4DgenjD3Y_4,29068
270
271
  wolfhece/rem/__init__.py,sha256=S2-J5uEGK_VaMFjRUYFIdSScJjZyuXH4RmMmnG3OG7I,19
@@ -287,6 +288,8 @@ wolfhece/shaders/simple_vertex_shader.glsl,sha256=crJlvIx-nNcUpKyK4KpJWR789xG-Rq
287
288
  wolfhece/shaders/simple_vertex_shader_mvp.glsl,sha256=4uMy9GFutnVkdwrfe9BdoPVAaFjdKwcX4eKVakug3zg,229
288
289
  wolfhece/shaders/simple_vertex_shader_wo_mvp.glsl,sha256=CT5dr1s0kdL90MtZi22DelFzFVns-w0XcrVbPan6yOc,122
289
290
  wolfhece/shaders/vertex_shader_texture.glsl,sha256=8CmklD7-H57iPWhf5nQpGpqIW1uXvcz2kTBVZh-1F8Q,214
291
+ wolfhece/shapes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
292
+ wolfhece/shapes/circle.py,sha256=UNCgSX-Xa_s64gJdWyouaiXCd2q-7WXvL-GbXAIRKQE,10136
290
293
  wolfhece/sigmoid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
291
294
  wolfhece/sigmoid/circle_jax.py,sha256=3CrOViLTvt6ZtQPY_1rOe0Qp_AgwdOKhWwpbG5vBki0,4305
292
295
  wolfhece/sigmoid/circle_jax_copilot.py,sha256=fF8vwY_q_i8_u-anGpVXJ5aZEdx3KC3kuYsZZlaGZwE,5952
@@ -300,8 +303,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
300
303
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
301
304
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
305
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
303
- wolfhece-2.1.127.dist-info/METADATA,sha256=-Jot_0JOTpm62mVxzR7ly0uucGGknPoR5CfbEF1DfOQ,2587
304
- wolfhece-2.1.127.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
305
- wolfhece-2.1.127.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
306
- wolfhece-2.1.127.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
307
- wolfhece-2.1.127.dist-info/RECORD,,
306
+ wolfhece-2.1.129.dist-info/METADATA,sha256=RFHPYSX_-2KsN3-nviEAZbMzvwmC2z1aXOjGR1E24BA,2558
307
+ wolfhece-2.1.129.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
308
+ wolfhece-2.1.129.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
309
+ wolfhece-2.1.129.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
310
+ wolfhece-2.1.129.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5