wolfhece 2.2.1__py3-none-any.whl → 2.2.2__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
@@ -9704,7 +9704,7 @@ class WolfMapViewer(wx.Frame):
9704
9704
  with open(filename,'r') as f:
9705
9705
  text=f.read().splitlines()
9706
9706
  tmphead=''
9707
- for i in range(4):
9707
+ for i in range(min(4, len(text))):
9708
9708
  tmphead += text[i].replace('\t','\\t') +'\n'
9709
9709
 
9710
9710
  dlg = wx.MessageDialog(None,_('Is there a file header (one upper line containing column names)?') + '\n\n' + tmphead,style=wx.YES_NO|wx.NO_DEFAULT)
wolfhece/PyHydrographs.py CHANGED
@@ -55,14 +55,13 @@ class Hydrograph(pd.Series):
55
55
  dtype=None,
56
56
  name='Discharge',
57
57
  copy=None,
58
- file_path:str ='',
59
- fastpath=False) -> None:
58
+ file_path:str ='') -> None:
60
59
  if file_path != '':
61
60
  data =self.read_from_wolf_file(file_path)
62
61
  elif isinstance(data, str):
63
62
  data = self.read_from_wolf_file(data)
64
63
 
65
- super().__init__(data,index,dtype, name, copy, fastpath)
64
+ super().__init__(data,index,dtype, name, copy)
66
65
 
67
66
  def write_as_wolf_file(self,
68
67
  file_path:str,
wolfhece/PyParams.py CHANGED
@@ -721,15 +721,14 @@ class Wolf_Param(wx.Frame):
721
721
  #essai pour voir si le groupe existe ou non dans les params actifs
722
722
  if not self.is_in_active(groupname):
723
723
  page_active.Append(pg.PropertyCategory(groupname))
724
+ self.myparams[groupname] = {}
724
725
 
725
726
  #teste si param existe
726
727
  activeprop = self.prop.GetPropertyByName(groupname + paramname)
727
728
  if activeprop is None:
728
729
  #si non existant --> on ajoute, si existant --> rien à faire
729
730
  self._insert_elem_to_page(page_active, groupname, param_def)
730
- # if not self.is_in_active(groupname, paramname):
731
- # #si non existant --> on ajoute, si existant --> rien à faire
732
- # self._add_elem_to_page(page_active, groupname, param_def)
731
+ self.myparams[groupname][paramname] = param_def.copy()
733
732
 
734
733
  else:
735
734
  #recopiage de la valeur par défaut
wolfhece/PyVertex.py CHANGED
@@ -630,12 +630,12 @@ class cloud_vertices(Element_To_Draw):
630
630
  elif ';' in curhead:
631
631
  # séparateur tabulation
632
632
  sep = ';'
633
- elif ' ' in curhead:
634
- # séparateur espace
635
- sep = ' '
636
633
  elif ',' in curhead:
637
634
  # séparateur espace
638
635
  sep = ','
636
+ elif ' ' in curhead:
637
+ # séparateur espace
638
+ sep = ' '
639
639
  headers = curhead.split(sep)
640
640
  nbcols = len(headers)
641
641
  else:
@@ -647,14 +647,14 @@ class cloud_vertices(Element_To_Draw):
647
647
  elif ';' in curline:
648
648
  # séparateur point-virgule
649
649
  sep = ';'
650
- elif ' ' in curline:
651
- # séparateur espace
652
- sep = ' '
653
- curline = re.sub(' +', ' ', curline)
654
650
  elif ',' in curline:
655
651
  # séparateur virgule
656
652
  sep = ','
657
653
  curline = re.sub(' +', ' ', curline)
654
+ elif ' ' in curline:
655
+ # séparateur espace
656
+ sep = ' '
657
+ curline = re.sub(' +', ' ', curline)
658
658
 
659
659
  curval = curline.split(sep)
660
660
  nbcols = len(curval)
@@ -1229,6 +1229,7 @@ class vector:
1229
1229
 
1230
1230
  if inplace:
1231
1231
  self.import_shapelyobj(buffered)
1232
+ self.reset_linestring()
1232
1233
  return self
1233
1234
  else:
1234
1235
  newvec = vector(fromshapely=buffered, name=self.myname)
@@ -15,14 +15,14 @@ from functools import partial
15
15
  import os
16
16
  from pathlib import Path
17
17
 
18
- def parallel_gpd_clip(layer:list[str],
19
- file_path:str,
20
- Study_Area:str,
21
- output_dir:str,
18
+ def parallel_gpd_clip(layer:list[str],
19
+ file_path:str,
20
+ Study_Area:str,
21
+ output_dir:str,
22
22
  number_procs:int = 1):
23
- """
23
+ """
24
24
  Clip the layers to the study area.
25
-
25
+
26
26
  Process the layers in parallel.
27
27
 
28
28
  FIXME: The GPKG driver is it totally parallel compliant?
@@ -50,13 +50,15 @@ def parallel_gpd_clip(layer:list[str],
50
50
  Study_Area=Study_Area,
51
51
  output_dir=output_dir)
52
52
  result_list = pool.map(prod_x, layer)
53
+ pool.close()
54
+ pool.join()
53
55
 
54
56
  def parallel_v2r(manager:Accept_Manager,
55
- attribute:str,
57
+ attribute:str,
56
58
  pixel:float,
57
59
  number_procs:int = 1,
58
60
  convert_to_sparse:bool = False):
59
- """
61
+ """
60
62
  Convert the vector layers to raster.
61
63
 
62
64
  Process the layers in parallel.
@@ -69,7 +71,7 @@ def parallel_v2r(manager:Accept_Manager,
69
71
  :param number_procs: The number of processors to use
70
72
 
71
73
  """
72
-
74
+
73
75
  attribute = str(attribute)
74
76
  layers = manager.get_layers_in_codevulne()
75
77
 
@@ -81,18 +83,20 @@ def parallel_v2r(manager:Accept_Manager,
81
83
  else:
82
84
  pool = multiprocessing.Pool(processes=number_procs)
83
85
  prod_x=partial(vector_to_raster,
84
- manager=manager,
85
- attribute=attribute,
86
+ manager=manager,
87
+ attribute=attribute,
86
88
  pixel_size=pixel,
87
- convert_to_sparse=convert_to_sparse)
88
-
89
+ convert_to_sparse=convert_to_sparse)
90
+
89
91
  result_list = pool.map(prod_x, layers)
92
+ pool.close()
93
+ pool.join()
90
94
 
91
- def parallel_datamod(manager:Accept_Manager,
95
+ def parallel_datamod(manager:Accept_Manager,
92
96
  picc:gpd.GeoDataFrame,
93
97
  capa:gpd.GeoDataFrame,
94
98
  number_procs:int = 1):
95
- """
99
+ """
96
100
  Apply the data modification to the layers.
97
101
 
98
102
  Process the layers in parallel.
@@ -103,7 +107,7 @@ def parallel_datamod(manager:Accept_Manager,
103
107
  :param number_procs: The number of processors to use
104
108
 
105
109
  """
106
-
110
+
107
111
  layers = manager.get_layers_in_clipgdb()
108
112
 
109
113
  if number_procs == 1:
@@ -113,8 +117,10 @@ def parallel_datamod(manager:Accept_Manager,
113
117
  pool = multiprocessing.Pool(processes=number_procs)
114
118
  prod_x=partial(data_modification,
115
119
  manager=manager,
116
- picc=picc,
117
- capa=capa)
118
-
120
+ picc=picc,
121
+ capa=capa)
122
+
119
123
  result_list = pool.map(prod_x, layers)
124
+ pool.close()
125
+ pool.join()
120
126
 
@@ -60,6 +60,9 @@ def read_export_z_bin(fn_read, fn_write, fn_laststep):
60
60
  wd.array = wd.array + top.array
61
61
  fn_write = fn_write.with_suffix('.bin')
62
62
  wd.write_all(fn_write)
63
+ fn_write = fn_write.with_suffix('.tif')
64
+ wd.write_all(fn_write)
65
+ top.write_all(fn_write.parent / fn_write.stem / "_dem.tif")
63
66
  shutil.rmtree(fn_temp)
64
67
 
65
68
  def riverbed_trace(fn_read_simu, fn_output, threshold):
@@ -964,6 +967,8 @@ class AcceptabilityGui(wx.Frame):
964
967
  logging.error('No hydraulic scenario selected.')
965
968
  else:
966
969
  logging.error('No folder found / selected. Please try again.')
970
+ return
971
+
967
972
  self._check_listbox.Clear()
968
973
  self.sims = {}
969
974
  for subdir in hydraulic_scen.iterdir():
@@ -1077,6 +1082,7 @@ class AcceptabilityGui(wx.Frame):
1077
1082
  LAST_STEP_EXTRACTED using the fast marching
1078
1083
  interpolation routine holes.exe, by creating a batch file
1079
1084
  while performing multiple checks on the required input files."""
1085
+
1080
1086
  if not hasattr(self, 'file_paths'):
1081
1087
  with wx.MessageDialog(self,
1082
1088
  f"Please, first load gpu simulations via the previous button.",
@@ -1170,49 +1176,72 @@ class AcceptabilityGui(wx.Frame):
1170
1176
  os.remove(path_bat_file)
1171
1177
  path_code = os.path.join(self._manager.IN_WATER_DEPTH, "holes.exe")
1172
1178
 
1173
- A=[]
1174
- for path in checked_paths:
1175
- parts = path.name.split("sim_")
1176
- A.extend([os.path.join(path_LastSteps, g) for g in os.listdir(path_LastSteps) if g.endswith(f"{parts[1]}.bin")])
1177
- B = [os.path.join(path_Interp, os.path.splitext(os.path.basename(f))[0]) for f in A]
1178
- if not A or not B or not C or not D:
1179
- logging.info("Missing files.")
1180
- with wx.MessageDialog(self, f"The interpolation cannot go on, as some files are missing (see logs): please check the DEM_FILES or the EXTRACTED_LAST_STEP_WD folders.",
1181
- "Missing files.", wx.OK | wx.ICON_INFORMATION) as dlg:
1182
- dlg.ShowModal()
1183
- with open(path_bat_file, "w") as bat_file:
1184
- for a, b in zip(A, B):
1185
- line = f'"{path_code}" filling in="{a}" out="{b}" mask="{C}" dem="{D} avoid_last=1"\n'
1186
- bat_file.write(line)
1187
- logging.info(message_info)
1188
-
1189
- empty_folder(self._manager.IN_SA_INTERP)
1190
- path_bat_file = os.path.join(self._manager.IN_SCEN_DIR, "process_files.bat")
1191
1179
 
1180
+ renamed_files = []
1192
1181
  if True:
1182
+ A=[]
1183
+ for path in checked_paths:
1184
+ parts = path.name.split("sim_")
1185
+ A.extend([os.path.join(path_LastSteps, g) for g in os.listdir(path_LastSteps) if g.endswith(f"{parts[1]}.bin")])
1186
+ B = [os.path.join(path_Interp, os.path.splitext(os.path.basename(f))[0]) for f in A]
1187
+ if not A or not B or not C or not D:
1188
+ logging.info("Missing files.")
1189
+ with wx.MessageDialog(self, f"The interpolation cannot go on, as some files are missing (see logs): please check the DEM_FILES or the EXTRACTED_LAST_STEP_WD folders.",
1190
+ "Missing files.", wx.OK | wx.ICON_INFORMATION) as dlg:
1191
+ dlg.ShowModal()
1192
+ with open(path_bat_file, "w") as bat_file:
1193
+ for a, b in zip(A, B):
1194
+ line = f'"{path_code}" filling in="{a}" out="{b}" mask="{C}" dem="{D} avoid_last=1"\n'
1195
+ bat_file.write(line)
1196
+ logging.info(message_info)
1197
+
1198
+ empty_folder(self._manager.IN_SA_INTERP)
1199
+ path_bat_file = os.path.join(self._manager.IN_SCEN_DIR, "process_files.bat")
1200
+
1193
1201
  # FORTRAN HOLES.EXE
1194
1202
  subprocess.run([path_bat_file], check=True)
1203
+ path_fichier=self._manager.IN_SA_INTERP
1204
+ for file in path_fichier.glob("*.tif"):
1205
+ if "_h" in file.name:
1206
+ new_name = file.stem.split("_h")[0].replace(".bin", "") + ".tif"
1207
+ file.rename(file.with_name(new_name))
1208
+ renamed_files.append(new_name)
1209
+ #deleting the other
1210
+ for file in path_fichier.glob("*.tif"):
1211
+ if "_combl" in file.name or file.name not in renamed_files:
1212
+ file.unlink()
1195
1213
  else:
1196
1214
  #Python eikonal model
1197
1215
  from ..eikonal import inpaint_array, inpaint_waterlevel
1198
- for a, b in zip(A, B):
1216
+
1217
+ dtm = WolfArray(D)
1218
+
1219
+ A=[]
1220
+ for path in checked_paths:
1221
+ parts = path.name.split("sim_")
1222
+ A.extend([os.path.join(path_LastSteps, g) for g in os.listdir(path_LastSteps) if g.endswith(f"{parts[1]}.tif")])
1223
+ if not A or not C or not D:
1224
+ logging.info("Missing files.")
1225
+ with wx.MessageDialog(self, f"The interpolation cannot go on, as some files are missing (see logs): please check the DEM_FILES or the EXTRACTED_LAST_STEP_WD folders.",
1226
+ "Missing files.", wx.OK | wx.ICON_INFORMATION) as dlg:
1227
+ dlg.ShowModal()
1228
+
1229
+ empty_folder(self._manager.IN_SA_INTERP)
1230
+
1231
+ for a in A:
1232
+ a = Path(a)
1199
1233
  in_wa = WolfArray(a)
1200
- mask_wa = WolfArray(C)
1201
- dem_wa = WolfArray(D)
1202
- inpaint_array(in_wa.array, mask_wa.array, dem_wa.array, avoid_last=1)
1203
- in_wa.write_all(b)
1234
+ dem_wa = WolfArray(a.parent / a.stem / "_dem.tif")
1235
+ _t, _wse, _wd = inpaint_waterlevel(in_wa.array, dem_wa.array.data, dtm.array.data, ignore_last_patches=1)
1204
1236
 
1205
- renamed_files = []
1206
- path_fichier=self._manager.IN_SA_INTERP
1207
- for file in path_fichier.glob("*.tif"):
1208
- if "_h" in file.name:
1209
- new_name = file.stem.split("_h")[0].replace(".bin", "") + ".tif"
1210
- file.rename(file.with_name(new_name))
1237
+ b = os.path.join(path_Interp, os.path.splitext(os.path.basename(a))[0])
1238
+ new_name = Path(b).with_suffix('.tif')
1211
1239
  renamed_files.append(new_name)
1212
- #deleting the other
1213
- for file in path_fichier.glob("*.tif"):
1214
- if "_combl" in file.name or file.name not in renamed_files:
1215
- file.unlink()
1240
+
1241
+ in_wa.array.data[:,:] = _wd
1242
+ in_wa.array.mask[:,:] = _wd == 0.
1243
+ in_wa.write_all(new_name)
1244
+
1216
1245
  logging.info("Filling completed.")
1217
1246
  with wx.MessageDialog(self, f"Filling completed. Created files : {renamed_files}",
1218
1247
  "Redirecting", wx.OK | wx.ICON_INFORMATION) as dlg:
@@ -982,14 +982,18 @@ class Accept_Manager():
982
982
 
983
983
  def check_nodata(self, name, path_baseline):
984
984
  """ Check nodata in a path """
985
+ from ..wolf_array import WOLF_ARRAY_FULL_INTEGER8
985
986
  list_tif = Accept_Manager.select_name_tif(self, path_baseline, self.IN_CH_SA_SC, name)
986
987
  for cur_lst in list_tif:
987
988
  curarray:WolfArray = WolfArray(cur_lst)
988
- if curarray.nullvalue != 99999.:
989
- curarray.nullvalue = 99999.
990
- curarray.set_nullvalue_in_mask()
991
- curarray.write_all()
992
- logging.warning(_('nodata changed in favor of 99999. value for file {} !'.format(cur_lst)))
989
+ if curarray.wolftype != WOLF_ARRAY_FULL_INTEGER8:
990
+ if curarray.nullvalue != 99999.:
991
+ curarray.nullvalue = 99999.
992
+ curarray.set_nullvalue_in_mask()
993
+ curarray.write_all()
994
+ logging.warning(_('nodata changed in favor of 99999. value for file {} !'.format(cur_lst)))
995
+ else:
996
+ logging.info(_('nodata value is {} for file {} !'.format(curarray.nullvalue, cur_lst)))
993
997
 
994
998
  def create_vrtIfExists(self, fn_baseline, fn_scenario, fn_vrt, name):
995
999
  """ Create a vrt file from a path """
@@ -1569,6 +1573,8 @@ def compute_acceptability(manager:Accept_Manager,
1569
1573
  points_accept["h-1"][idx_pts],
1570
1574
  points_accept["h-2.5"][idx_pts]]
1571
1575
 
1576
+ accept_pts = list(accept_pts).copy()
1577
+
1572
1578
  update_accept(accept, model_h, ij, bounds, accept_pts)
1573
1579
 
1574
1580
  if save_to_file:
wolfhece/apps/version.py CHANGED
@@ -5,7 +5,7 @@ class WolfVersion():
5
5
 
6
6
  self.major = 2
7
7
  self.minor = 2
8
- self.patch = 1
8
+ self.patch = 2
9
9
 
10
10
  def __str__(self):
11
11
 
wolfhece/wolf_array.py CHANGED
@@ -10,13 +10,15 @@ copying or distribution of this file, via any medium, is strictly prohibited.
10
10
 
11
11
  import os
12
12
  import sys
13
+
14
+ import numpy as np
15
+ import numpy.ma as ma
16
+
13
17
  from typing import Union, Literal
14
18
  from matplotlib.axis import Axis
15
19
  from matplotlib.figure import Figure
16
20
  import matplotlib.pyplot as plt
17
21
  from matplotlib.colors import Colormap
18
- import numpy as np
19
- import numpy.ma as ma
20
22
  import math as m
21
23
  import logging
22
24
  import json
@@ -40,7 +42,6 @@ import re
40
42
  import wx
41
43
  from scipy.interpolate import interp2d, griddata
42
44
  from scipy.ndimage import laplace, label, sum_labels
43
- import pygltflib
44
45
  from shapely.geometry import Point, LineString, MultiLineString, Polygon, MultiPolygon, MultiPoint
45
46
  from shapely.ops import linemerge, substring, polygonize_full
46
47
  from shapely import contains, contains_properly, contains_xy, touches, prepare, destroy_prepared, is_prepared
@@ -56,12 +57,6 @@ except ImportError as e:
56
57
  print(e)
57
58
  raise Exception(_('Error importing modules'))
58
59
 
59
- try:
60
- from osgeo import gdal
61
- except ImportError as e:
62
- print(e)
63
- raise Exception(_('Error importing GDAL library'))
64
-
65
60
  try:
66
61
  from .Coordinates_operations import reproject_and_resample_raster
67
62
  except ImportError as e:
@@ -132,6 +127,13 @@ VERSION_RGB = 3
132
127
 
133
128
  from numba import jit
134
129
 
130
+ try:
131
+ from osgeo import gdal, osr
132
+ gdal.UseExceptions()
133
+ except ImportError as e:
134
+ print(e)
135
+ raise Exception(_('Error importing GDAL library'))
136
+
135
137
  @jit(nopython=True)
136
138
  def custom_gradient(array: np.ndarray):
137
139
  """ Calculate the gradient manually """
@@ -878,7 +880,7 @@ class header_wolf():
878
880
  locpath = Path(filename)
879
881
 
880
882
  if filename.endswith('.tif') or filename.endswith('.tiff') :
881
- from osgeo import gdal
883
+ # from osgeo import gdal
882
884
 
883
885
  raster:gdal.Dataset
884
886
  raster = gdal.Open(filename)
@@ -932,7 +934,7 @@ class header_wolf():
932
934
 
933
935
  elif filename.endswith('.vrt'):
934
936
  # Virtual raster
935
- from osgeo import gdal
937
+ # from osgeo import gdal
936
938
 
937
939
  raster:gdal.Dataset
938
940
  raster = gdal.Open(filename)
@@ -6099,7 +6101,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6099
6101
  :param extent: suffix to add to the filename before the extension '.tif' (only if outdir is provided)
6100
6102
  :param EPSG: EPSG code, by default 31370 (Lambert 72)
6101
6103
  """
6102
- from osgeo import gdal, osr, gdalconst
6104
+ # from osgeo import gdal, osr, gdalconst
6103
6105
 
6104
6106
  outdir = str(outdir)
6105
6107
  extent = str(extent)
@@ -6378,7 +6380,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6378
6380
  :param which: band to import
6379
6381
  :param crop: crop the data - [xmin, xmax, ymin, ymax]
6380
6382
  """
6381
- from osgeo import gdal, osr, gdalconst
6383
+ # from osgeo import gdal, osr, gdalconst
6382
6384
 
6383
6385
  if fn !='':
6384
6386
  pass
@@ -7831,9 +7833,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7831
7833
 
7832
7834
  if type(other) == float:
7833
7835
  if other != 0.:
7834
- newArray.array = np.ma.masked_array(self.array + other, self.array.mask)
7836
+ newArray.array = np.ma.masked_array(self.array + other, self.array.mask, dtype=self.array.dtype)
7835
7837
  else:
7836
- newArray.array = np.ma.masked_array(self.array + other.array, self.array.mask)
7838
+ newArray.array = np.ma.masked_array(self.array + other.array, self.array.mask, dtype=self.array.dtype)
7837
7839
  newArray.count()
7838
7840
 
7839
7841
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7860,9 +7862,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7860
7862
 
7861
7863
  if type(other) == float:
7862
7864
  if other != 0.:
7863
- newArray.array = np.ma.masked_array(self.array * other, self.array.mask)
7865
+ newArray.array = np.ma.masked_array(self.array * other, self.array.mask, dtype=self.array.dtype)
7864
7866
  else:
7865
- newArray.array = np.ma.masked_array(self.array * other.array, self.array.mask)
7867
+ newArray.array = np.ma.masked_array(self.array * other.array, self.array.mask, dtype=self.array.dtype)
7866
7868
  newArray.count()
7867
7869
 
7868
7870
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7889,9 +7891,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7889
7891
 
7890
7892
  if type(other) == float:
7891
7893
  if other != 0.:
7892
- newArray.array = np.ma.masked_array(self.array - other, self.array.mask)
7894
+ newArray.array = np.ma.masked_array(self.array - other, self.array.mask, dtype=self.array.dtype)
7893
7895
  else:
7894
- newArray.array = np.ma.masked_array(self.array - other.array, self.array.mask)
7896
+ newArray.array = np.ma.masked_array(self.array - other.array, self.array.mask, dtype=self.array.dtype)
7895
7897
  newArray.count()
7896
7898
 
7897
7899
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7916,7 +7918,7 @@ class WolfArray(Element_To_Draw, header_wolf):
7916
7918
  newArray.origz = self.origz
7917
7919
  newArray.translz = self.translz
7918
7920
 
7919
- newArray.array = np.ma.masked_array(self.array ** other, self.array.mask)
7921
+ newArray.array = np.ma.masked_array(self.array ** other, self.array.mask, dtype=self.array.dtype)
7920
7922
  newArray.count()
7921
7923
 
7922
7924
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7943,9 +7945,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7943
7945
 
7944
7946
  if type(other) == float:
7945
7947
  if other != 0.:
7946
- newArray.array = np.ma.masked_array(self.array / other, self.array.mask)
7948
+ newArray.array = np.ma.masked_array(self.array / other, self.array.mask, dtype=self.array.dtype)
7947
7949
  else:
7948
- newArray.array = np.ma.masked_array(np.where(other == 0., 0., self.array / other.array), self.array.mask)
7950
+ newArray.array = np.ma.masked_array(np.where(other == 0., 0., self.array / other.array), self.array.mask, dtype=self.array.dtype)
7949
7951
  newArray.count()
7950
7952
 
7951
7953
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wolfhece
3
- Version: 2.2.1
3
+ Version: 2.2.2
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  Project-URL: Homepage, https://uee.uliege.be/hece
6
6
  Project-URL: Issues, https://uee.uliege.be/hece
@@ -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=sSCWZhBSakxp34ifrSyB_Oz57xCm6b-x6_J1Jd87jtY,603334
10
+ wolfhece/PyDraw.py,sha256=wmBEYPkPiuk5sywCpKS1frEEirHDryVpF8P1G9wwuJA,603350
11
11
  wolfhece/PyGui.py,sha256=B7-pAQ0tOkXVIb_3BSjNVROFF9s23lGCSBaQD5NxvOQ,145093
12
12
  wolfhece/PyGuiHydrology.py,sha256=sKafpOopBg50L5llZCI_fZtbebVTDtxvoRI6-osUwhg,14745
13
- wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
13
+ wolfhece/PyHydrographs.py,sha256=1P5XAURNqCvtSsMQXhOn1ihjTpr725sRsZdlCEhhk6M,3730
14
14
  wolfhece/PyPalette.py,sha256=mTknZlfioRGX7iJVoKG1Yc0pQooZA_KYyFsAzvLY4Rk,34344
15
- wolfhece/PyParams.py,sha256=wVgzJC5Bs8rfx6NdUdcFDtnsaPBYJgRn3A-rROk49MQ,99525
15
+ wolfhece/PyParams.py,sha256=Dh9C_WYICMjo3m9roRySsu8ZgFzzYhSr6RpbaXZni0M,99423
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=qFf8UPvkbwumRRfjpBcgZmqpHtcEtIEoUh30rWFF-lQ,45205
19
- wolfhece/PyVertexvectors.py,sha256=2kjtKwdYiGif-NVok8rS9T7Ok8jYMGN4tzy6zXoTxh8,325764
18
+ wolfhece/PyVertex.py,sha256=PDKpLFPqE1ORzfi36xKIjuKsxR8DR0iNMsLhAGw11rY,45205
19
+ wolfhece/PyVertexvectors.py,sha256=0lt0YyHIz_IxgXqdqPlTDruDwjeP6L1Dw6B2Q35a8kQ,325801
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
@@ -55,7 +55,7 @@ wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
55
55
  wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
56
56
  wolfhece/tools2d_dll.py,sha256=oU0m9XYAf4CZsMoB68IuKeE6SQh-AqY7O5NVED8r9uw,13125
57
57
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
58
- wolfhece/wolf_array.py,sha256=RcyJHpoTBudR-dkG5NjS4-X0CgyfHVflZACJAXPBOts,485378
58
+ wolfhece/wolf_array.py,sha256=Q5dXKhs3gtQXGHFUaN9AfJnc0FpAUJTLKnpbjB7CcQo,485619
59
59
  wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
60
60
  wolfhece/wolf_texture.py,sha256=ecoXXmmcLuyG1oPqU2dB_k03qMTCLTVQoSq1xi1EalU,17359
61
61
  wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
@@ -63,13 +63,13 @@ wolfhece/wolf_vrt.py,sha256=wbxXVN7TL9zgdyF79S-4e3pje6wJEAgBEfF_Y8kkzxs,14271
63
63
  wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
64
64
  wolfhece/wolfresults_2D.py,sha256=5Ser0lcfoGbsHLASx_1UtxmanYDGSuOCMgaadSNTHzs,218154
65
65
  wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
66
- wolfhece/acceptability/Parallels.py,sha256=njrJFH_tTdQUg2px-QqQR6VdhImP1TEujLhpM3JEKNo,4001
66
+ wolfhece/acceptability/Parallels.py,sha256=2wVkfJYor4yl7VYiAZiGGTFwtAab2z66ZfRtBliVweE,4088
67
67
  wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
68
68
  wolfhece/acceptability/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
69
69
  wolfhece/acceptability/acceptability.py,sha256=dLsYVwPiYH33M7y2vVzlLVd9q8dLgDIeTuJ8f20L4ig,28006
70
- wolfhece/acceptability/acceptability_gui.py,sha256=EWM-WfLWKTzMguZHWgRfRQARxb1xINwx0G9VOzmOn5k,74493
70
+ wolfhece/acceptability/acceptability_gui.py,sha256=z_g1Ip7-H67KawR_EA_QeVtFXpMaoGKIKSmujVRz3Q0,75899
71
71
  wolfhece/acceptability/cli.py,sha256=ul_GmDnSgKSgA7z5ZIzeA_MlS2uqo-Xi48bqmWUS-Qk,19141
72
- wolfhece/acceptability/func.py,sha256=Aj85M01b09ENb9vN3q6isnJO5a2wNlNfiwhHbguhg_w,68263
72
+ wolfhece/acceptability/func.py,sha256=NHUoYPxQg-WP6K1uOAoXrwofVZfn4VX-jSl9fHt07qM,68593
73
73
  wolfhece/apps/ManageParams.py,sha256=9okXHGHKEayA9iKTnv8jsVYCP2up5kr6hDaKO_fMCaQ,748
74
74
  wolfhece/apps/Optimisation_hydro.py,sha256=ySIaVsFNEx4PaHFLlT2QW9BiwChVcTNd2TBnW1aICsI,810
75
75
  wolfhece/apps/WolfPython.png,sha256=K3dcbeZUiJCFNwOAAlGMaRGLJ56yM8WD2I_0bk0xT1g,104622
@@ -83,7 +83,7 @@ wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVz
83
83
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
84
84
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
85
85
  wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
86
- wolfhece/apps/version.py,sha256=E_lGl4BWE12swHHPwJTWvzfUAgEj2g4eoDA_PFNSTYA,387
86
+ wolfhece/apps/version.py,sha256=pfJCxRPgSHvPoFtUBh1y_UjYF4wpkW6f7GnMs9a_h9g,387
87
87
  wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
88
88
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
89
89
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -305,8 +305,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
305
305
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
306
306
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
307
307
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
308
- wolfhece-2.2.1.dist-info/METADATA,sha256=YHBhMrSW-_ghRKpHukFs1j-NKs4iHqfDKgIcjsBhJkA,2694
309
- wolfhece-2.2.1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
310
- wolfhece-2.2.1.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
311
- wolfhece-2.2.1.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
312
- wolfhece-2.2.1.dist-info/RECORD,,
308
+ wolfhece-2.2.2.dist-info/METADATA,sha256=rzjoOd8XS0mz80a0NdAokfYYiKOC5R2btg6qXj-4-ZE,2694
309
+ wolfhece-2.2.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
310
+ wolfhece-2.2.2.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
311
+ wolfhece-2.2.2.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
312
+ wolfhece-2.2.2.dist-info/RECORD,,