PaIRS-UniNa 0.2.6__cp313-cp313-win_amd64.whl → 0.2.7__cp313-cp313-win_amd64.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.

Potentially problematic release.


This version of PaIRS-UniNa might be problematic. Click here for more details.

PaIRS_UniNa/Changes.txt CHANGED
@@ -1,3 +1,16 @@
1
+ ********* Changes in version 0.2.7 (2025.10.13) **********
2
+ Bug fixes:
3
+ - resolved an issue related to visulazion of streamlines when the image is shown in pixel units and a custom resolution is specified (in previous versions, streamlines were always represented in physical units);
4
+ - corrected the update of reprojection errors in CalVi when the control point grid is expanded after a calibration. Each new control point now has its error recalculated and plotted, providing a correct view of the extrapolation error;
5
+ - fixed the automatic resize/reshape behavior specified in the Output tab: when an image transformation is assigned, it is now preserved even if the automatic reshape button is active.
6
+
7
+ User-interface enhancements:
8
+ - changed the behavior of the Vis button for restricting view on the interrogation window area: clicking it now opens a popup menu that allows users to select the desired interrogation-window size to focus on among all iterations of the process;
9
+ - names of processes duplicated in the process tree are now automatically updated to avoid conflicts: if a name already exists, the new one is appended with an incremental suffix;
10
+ - improved interaction with editable input fields: when hovering the highlighted style is displayed correctly, the text cursor now appears exactly where clicked and the background color is properly restored when leaving the field.
11
+
12
+
13
+
1
14
  ********* Changes in version 0.2.6 (2025.09.06) **********
2
15
  Bug fixes:
3
16
  - fixed bugs related to process tree management.
PaIRS_UniNa/Explorer.py CHANGED
@@ -1859,11 +1859,20 @@ class ProcessTree(PaIRSTree):
1859
1859
  if not self.FlagCutted and not FlagPasteDeleted:
1860
1860
  self.cutItems(new_items)
1861
1861
  self.pasteLists(row,FlagPasteDeleted)
1862
- for k in indexes:
1863
- item=self.topLevelItem(k)
1864
- ITEs=self.itemList[0][k]
1865
- self.setProcessItemWidget(item,ITEs[0]) # Set the widget container as the
1866
- self.setStepItemWidgets(item,ITEs[0].ind[2])
1862
+ name_list=[i[0].name for i in self.itemList[0]]
1863
+ for pos,k in enumerate(indexes):
1864
+ item=self.topLevelItem(k)
1865
+ ITE=self.itemList[0][k][0]
1866
+ tail=set(indexes[pos:]);
1867
+ forbidden={name_list[j] for j in range(len(name_list)) if j not in tail}
1868
+ if ITE.name in forbidden:
1869
+ base=ITE.name
1870
+ n=1
1871
+ while f"{base} ({n})" in forbidden: n+=1
1872
+ ITE.name=f"{base} ({n})"
1873
+ name_list[k]=ITE.name
1874
+ self.setProcessItemWidget(item,ITE)
1875
+ self.setStepItemWidgets(item,ITE.ind[2])
1867
1876
 
1868
1877
  self.scrollToItem(firstItemToScroll)
1869
1878
  self.scrollToItem(lastItemToScroll)
@@ -1942,6 +1951,9 @@ class ProcessTree(PaIRSTree):
1942
1951
 
1943
1952
  TABname=self.gui.w_Input.TABname
1944
1953
  self.gui.bridge(TABname,ind_new)
1954
+
1955
+ FlagSettingPar=TABpar.FlagSettingPar
1956
+ TABpar.FlagSettingPar=True
1945
1957
  for w in self.gui.tabWidgets:
1946
1958
  w:gPaIRS_Tab
1947
1959
  if w!=self.gui.w_Input:
@@ -1953,6 +1965,7 @@ class ProcessTree(PaIRSTree):
1953
1965
  w.adjustTABparInd()
1954
1966
  w.TABpar.copyfrom(currpar)
1955
1967
  self.gui.bridge(w.TABname,ind_new)
1968
+ TABpar.FlagSettingPar=FlagSettingPar
1956
1969
  #item_child=item.child(j)
1957
1970
  #item_child.setSelected(True)
1958
1971
  #self.setCurrentItem(item_child)
PaIRS_UniNa/Input_Tab.py CHANGED
@@ -102,9 +102,9 @@ class INPpar(TABpar):
102
102
  self.frame_2 = [-1]
103
103
  self.inp_ncam = 3 if Process==ProcessTypes.tpiv else 2 if Process==ProcessTypes.spiv else 1
104
104
  self.inp_cam = 1
105
- self.ind_in = -1
105
+ self.ind_in = 0
106
106
  self.npairs = 0
107
- self.step = 1
107
+ self.step = 0
108
108
  self.FlagTR_Import = False
109
109
 
110
110
  self.nExImTree = 3
@@ -37,7 +37,7 @@ class INPpar_CalVi(TABpar):
37
37
  def __init__(self,Process=ProcessTypes.null,Step=StepTypes.null):
38
38
  self.setup(Process,Step)
39
39
  super().__init__('INPpar_CalVi','Input_CalVi')
40
- self.unchecked_fields+=['OptionValidPath','OptionValidPathOut','OptionValidRootOut','row','col','rows','cols']
40
+ self.unchecked_fields+=['OptionValidPath','OptionValidPathOut','OptionValidRootOut','row','col','rows','cols','pathCompleter']
41
41
 
42
42
  def setup(self,Process,Step):
43
43
  self.Process = Process
@@ -18,11 +18,11 @@ class ImageSet(TABpar):
18
18
  self.lists=[f for f,v in self.__dict__.items() if type(v)==list]
19
19
  self.supported_exts = exts
20
20
  super().__init__('ImageSet','Input')
21
- self.unchecked_fields+=['signals','fname','fnumb']
21
+ self.unchecked_fields+=['signals','fname','fnumb','outFiles']
22
22
  if path: self.scanPath(path)
23
23
 
24
24
  def setup(self):
25
- self.path = ''
25
+ self.path = './'
26
26
  self.count = 0
27
27
  self.pattern = []
28
28
  self.pa = []
PaIRS_UniNa/Output_Tab.py CHANGED
@@ -379,7 +379,7 @@ class Output_Tab(gPaIRS_Tab):
379
379
  self.OUTpar.root=myStandardRoot(self.OUTpar.root)
380
380
 
381
381
  if self.OUTpar.imageFile: self.OUTpar.W,self.OUTpar.H=self.get_image_dimensions(self.OUTpar.inputPath+self.OUTpar.imageFile)
382
- if (self.OUTpar_old.imageFile is None and self.OUTpar.W>0 and self.OUTpar.H>0) or (self.OUTpar.isDifferentFrom(self.OUTpar_old,fields=['W','H','inputPath']) and OUTpar.FlagAutoReshape):
382
+ if (self.OUTpar.isDifferentFrom(self.OUTpar_old,fields=['W','H','inputPath']) and self.OUTpar.ind[:-1]==self.OUTpar_old.ind[:-1] and OUTpar.FlagAutoReshape) or (self.OUTpar_old.imageFile is None and self.OUTpar.W>0 and self.OUTpar.H>0):
383
383
  self.button_resize_action()
384
384
  self.button_reset_rot_flip_action()
385
385
 
PaIRS_UniNa/Vis_Tab.py CHANGED
@@ -1311,6 +1311,33 @@ class Vis_Tab(gPaIRS_Tab):
1311
1311
  self.VISpar.size[self.VISpar.type][3]+=dy
1312
1312
 
1313
1313
  def button_FocusIW_action(self):
1314
+ """
1315
+ Show a popup menu with options 'H x W' and return the selected index (int) or None.
1316
+ Labels are formatted as f"{Vect[2][i]} x {Vect[0][i]}".
1317
+ """
1318
+ FlagDisp=self.VISpar.variableKey is self.namesPIV.dispMap
1319
+ if FlagDisp: it=-1
1320
+ else:
1321
+ # Ensure consistent length between lists 0 (width values) and 2 (height values)
1322
+ ve=self.VISpar.Pro.Vect if isinstance(self.VISpar.Pro.Vect[0],list) else [[v] for v in self.VISpar.Pro.Vect]
1323
+ Vect = [[val for val in v] for v in ve]
1324
+ n = min(len(Vect[0]), len(Vect[2]))
1325
+ if n == 0:
1326
+ return None
1327
+
1328
+ # Create a context menu and populate it with the available sizes
1329
+ menu = QMenu(self)
1330
+ for i in range(n):
1331
+ label = f"{Vect[2][i]} x {Vect[0][i]}"
1332
+ act = menu.addAction(label)
1333
+ act.setData(i)
1334
+
1335
+ # Display the menu at the current cursor position and wait for user selection
1336
+ chosen = menu.exec(QCursor.pos())
1337
+ it = None if chosen is None else chosen.data()
1338
+ if it is not None: self.FocusIW_it(it)
1339
+
1340
+ def FocusIW_it(self,it=-1):
1314
1341
  ve=self.VISpar.Pro.Vect if isinstance(self.VISpar.Pro.Vect[0],list) else [[v] for v in self.VISpar.Pro.Vect]
1315
1342
  Vect = [[val for val in v] for v in ve]
1316
1343
  if self.VISpar.unit[self.VISpar.type] and self.VISpar.type!=0:
@@ -1318,20 +1345,20 @@ class Vis_Tab(gPaIRS_Tab):
1318
1345
  for k in range(2): Vect[k]=[val/self.VISpar.Out.xres for val in Vect[k]]
1319
1346
  for k in range(2,4): Vect[k]=[val/yres for val in Vect[k]]
1320
1347
  else: yres=1.0
1321
- W=Vect[2][-1]
1348
+ W=Vect[2][it]
1322
1349
  FlagDisp=self.VISpar.variableKey is self.namesPIV.dispMap
1323
1350
  if FlagDisp:
1324
1351
  H=self.gui.w_Process_Disp.PROpar.SemiWidth_Epipolar*2+1
1325
1352
  H/=yres
1326
1353
  FlagBordo=False
1327
1354
  else:
1328
- H=Vect[0][-1]
1355
+ H=Vect[0][it]
1329
1356
  FlagBordo=self.VISpar.Pro.FlagBordo
1330
1357
  if abs(self.VISpar.size[self.VISpar.type][1]-self.VISpar.size[self.VISpar.type][0]-W)<1 and abs(self.VISpar.size[self.VISpar.type][3]-self.VISpar.size[self.VISpar.type][2]-H)<1:
1331
- dW=W if FlagDisp else Vect[3][-1]
1358
+ dW=W if FlagDisp else Vect[3][it]
1332
1359
  boundDist=W/2 if not FlagBordo else dW
1333
1360
  x0=int((self.VISpar.size[self.VISpar.type][0]-boundDist+W/2)/dW)*dW+boundDist-W/2 if self.VISpar.size[self.VISpar.type][0]>boundDist else boundDist-W/2
1334
- dH=H if FlagDisp else Vect[1][-1]
1361
+ dH=H if FlagDisp else Vect[1][it]
1335
1362
  boundDist=H/2 if not FlagBordo else dH
1336
1363
  y0=int((self.VISpar.size[self.VISpar.type][2]-boundDist+H/2)/dH)*dH+boundDist-H/2 if self.VISpar.size[self.VISpar.type][2]>boundDist else boundDist-H/2
1337
1364
  self.VISpar.size[self.VISpar.type][0]=x0
@@ -1725,6 +1752,8 @@ class Vis_Tab(gPaIRS_Tab):
1725
1752
  size_pixels=np.shape(U)
1726
1753
  Up,_,_,_,_=self.calcMap(U,size_pixels=size_pixels)
1727
1754
  Vp,Xp,Yp,_,_=self.calcMap(V,size_pixels=size_pixels)
1755
+ Xp=Xp*xres
1756
+ Yp=Yp*yres
1728
1757
  self.stream=self.ui.plot.axes.streamplot(Xp,Yp,Up,Vp,color=VIS_VectorColors[self.VISpar.vectorColor],density=self.VISpar.streamdens,zorder=10)
1729
1758
 
1730
1759
  def cleanAxes(self,FlagAxis=True):
Binary file
PaIRS_UniNa/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
- __version__="0.2.6"
1
+ __version__="0.2.7"
2
2
  __subversion__="0"
3
3
  __year__='2025'
4
- __date__='2025.09.06'
4
+ __date__='2025.10.13'
5
5
  __mail__='etfd@unina.it'
6
- __website__='https://pairs.unina.it'
6
+ __website__='https://pairs.unina.it'
@@ -8,6 +8,7 @@ InitCheck=True #False=Collap closed, True=opened
8
8
  #fonts
9
9
  font_italic=True
10
10
  font_weight=QFont.DemiBold
11
+ backgroundcolor_none=" background-color: none;"
11
12
  backgroundcolor_changing=" background-color: rgb(255,230,230);"
12
13
  color_changing="color: rgb(33,33,255); "+backgroundcolor_changing
13
14
  color_changing_black="color: rgb(0,0,0); "+backgroundcolor_changing
@@ -63,7 +64,7 @@ class MyQLineEdit(QtWidgets.QLineEdit):
63
64
  if hasStyleFlag:
64
65
  if b.styleFlag: continue
65
66
  b.flagS=True
66
- b.initialStyle=b.styleSheet()
67
+ b.initialStyle=b.styleSheet()+" "+backgroundcolor_none
67
68
  b.setEnabled(False)
68
69
  b.disabledStyle=b.styleSheet()
69
70
  b.setEnabled(True)
@@ -97,24 +98,32 @@ class MyQLineEdit(QtWidgets.QLineEdit):
97
98
  super().mouseReleaseEvent(event) #to preserve classical behaviour before adding the below
98
99
  self.setCompleterList()
99
100
 
101
+ def enterEvent(self, event):
102
+ super().enterEvent(event)
103
+ if not self.font()==self.font_changing and not self.hasFocus():
104
+ self.setFont(self.font_changing)
105
+
106
+ def leaveEvent(self, event):
107
+ super().leaveEvent(event)
108
+ if self.font()==self.font_changing and not self.hasFocus():
109
+ self.setFont(self.initialFont)
110
+
100
111
  def focusInEvent(self, event):
101
112
  super().focusInEvent(event)
102
113
  for f in self.addfuncin:
103
114
  self.addfuncin[f]()
104
115
  self.focusInFun()
105
-
116
+
106
117
  def setFocus(self):
107
118
  super().setFocus()
108
119
  self.focusInFun()
109
120
 
110
121
  def focusInFun(self):
111
- #self.setCompleterList()
112
- if not self.font()==self.font_changing:
113
- self.setStyleSheet(setSS(self,self.initialStyle+" "+color_changing))
114
- self.setFont(self.font_changing)
115
- for b in self.bros:
116
- if (not b==self) and b.flagS:
117
- b.setStyleSheet(b.initialStyle+" "+color_changing_black)
122
+ self.setStyleSheet(setSS(self,self.initialStyle+" "+color_changing))
123
+ self.setFont(self.font_changing)
124
+ for b in self.bros:
125
+ if (not b==self) and b.flagS:
126
+ b.setStyleSheet(b.initialStyle+" "+color_changing_black)
118
127
 
119
128
  def focusOutEvent(self, event):
120
129
  super().focusOutEvent(event) #to preserve classical behaviour before adding the below
@@ -127,15 +136,14 @@ class MyQLineEdit(QtWidgets.QLineEdit):
127
136
  self.focusOutFun()
128
137
 
129
138
  def focusOutFun(self):
130
- if self.font()==self.font_changing:
131
- for b in self.bros:
132
- if b.flagS:
133
- if hasattr(b,'default_stylesheet'):
134
- b.setStyleSheet(b.default_stylesheet)
135
- else:
136
- b.setStyleSheet(setSS(b,b.initialStyle))
137
- if b.flagF:
138
- b.setFont(b.initialFont)
139
+ for b in self.bros:
140
+ if b.flagS:
141
+ if hasattr(b,'default_stylesheet'):
142
+ b.setStyleSheet(b.default_stylesheet)
143
+ else:
144
+ b.setStyleSheet(setSS(b,b.initialStyle))
145
+ if b.flagF:
146
+ b.setFont(b.initialFont)
139
147
  #self.addlab.clear()
140
148
 
141
149
  def showCompleter(self):
@@ -188,7 +196,7 @@ class MyQSpin(QtWidgets.QSpinBox):
188
196
  self.bros=[self]+self.addwid
189
197
  for b in self.bros:
190
198
  if b.styleFlag: continue
191
- b.initialStyle=b.styleSheet()
199
+ b.initialStyle=b.styleSheet()+" "+backgroundcolor_none
192
200
  b.initialFont=b.font()
193
201
  b.font_changing=font_changing
194
202
  b.styleFlag=True
@@ -282,7 +290,7 @@ class MyQDoubleSpin(QtWidgets.QDoubleSpinBox):
282
290
  self.bros=[self]+self.addwid
283
291
  for b in self.bros:
284
292
  if self.styleFlag: continue
285
- b.initialStyle=b.styleSheet()
293
+ b.initialStyle=b.styleSheet()+" "+backgroundcolor_none
286
294
  b.initialFont=b.font()
287
295
  b.font_changing=font_changing
288
296
  b.styleFlag=True
PaIRS_UniNa/calibView.py CHANGED
@@ -729,6 +729,13 @@ class CalibView(QLabel):
729
729
  else:
730
730
  calVect.remPointsDo[p]=Off
731
731
  self.calib.cal.removeBulk()
732
+ if self.calib.cal.flagCalibrated:
733
+ self.calib.cal.checkCalibration() #needed because use the main thread and may exit with an exception
734
+ strPriCalib=self.calib.prettyPrintCalib()
735
+ strPriErrCalib=self.calib.prettyPrintErrCalib()
736
+ pri.Process.blue (strPriErrCalib)
737
+
738
+ self.calib.signals.textFromCalib.emit(strPriErrCalib+'\n'+strPriCalib)
732
739
  self.plotPlane(self.calib.plane)
733
740
 
734
741
  @Slot(int)
PaIRS_UniNa/gPaIRS.py CHANGED
@@ -941,7 +941,11 @@ class gPaIRS(QMainWindow):
941
941
  for w in self.tabWidgets:
942
942
  if not w.TABpar.FlagNone:
943
943
  w:gPaIRS_Tab
944
- if FlagAdjustPar: w.adjustTABpar()
944
+ if FlagAdjustPar:
945
+ FlagSettingPar=TABpar.FlagSettingPar
946
+ TABpar.FlagSettingPar=True
947
+ w.adjustTABpar()
948
+ TABpar.FlagSettingPar=FlagSettingPar
945
949
  if FlagBridge: self.bridge(w.TABname)
946
950
  FlagAdjustPar=False
947
951
  FlagBridge=False
@@ -1059,12 +1063,15 @@ class gPaIRS(QMainWindow):
1059
1063
  TABname=tab.TABname
1060
1064
  self.bridge(TABname)
1061
1065
  if FlagAdjustPar:
1066
+ FlagSettingPar=TABpar.FlagSettingPar
1067
+ TABpar.FlagSettingPar=True
1062
1068
  for w in self.tabWidgets:
1063
1069
  if w.TABpar.FlagNone: continue
1064
1070
  w:gPaIRS_Tab
1065
1071
  if w!=tab:
1066
1072
  w.adjustTABpar()
1067
1073
  self.bridge(w.TABname)
1074
+ TABpar.FlagSettingPar=FlagSettingPar
1068
1075
  FlagAdjustPar=False
1069
1076
  FlagBridge=False
1070
1077
  FlagDisplayControls=False
PaIRS_UniNa/procTools.py CHANGED
@@ -328,7 +328,7 @@ class dataTreePar(TABpar):
328
328
 
329
329
  def setCompleteLog(self):
330
330
  warn1=self.headerSection('WARNINGS',self.warnings[1],'!')
331
- if self.flagRun:
331
+ if self.flagRun not in (0,-10):
332
332
  warn0=''
333
333
  self.createLogProc()
334
334
  LogProc = self.headerSection('OUTPUT',self.procLog[0])
@@ -338,7 +338,10 @@ class dataTreePar(TABpar):
338
338
  if self.warnings[0]: warn0='*Further information:\n'+self.warnings[0]+'\n'
339
339
  self.Log=self.createLogHeader()+procLog+warn0+warn1
340
340
  else:
341
- self.Log=self.createLogHeader()+warn1
341
+ if self.flagRun:
342
+ self.Log=self.createLogHeader()
343
+ else:
344
+ self.Log=self.createLogHeader()+warn1
342
345
 
343
346
  def createWarningLog(self,warning):
344
347
  warn1=self.headerSection('WARNINGS',warning,'!')
PaIRS_UniNa/whatsnew.txt CHANGED
@@ -1,5 +1,5 @@
1
- % <br>Fixed bugs related to process tree management.<br><br>
2
- * Release check is now secured with SSL for improved reliability.<br><br>
1
+ % Fixed bugs on streamline visualization in pixel units when a custom resolution is set.<br><br>Fixed incorrect update of reprojection errors in CalVi when enlarging the control point grid.<br><br>Corrected automatic resize/reshape behavior specified in the Output Tab.<br><br>
2
+ * Changed behavior of button for restricting view on interrogation-window area for improved usability.<br><br>Process names copied within the process tree are now automatically updated to avoid conflicts.<br><br>Improved selection behavior in editable input fields.<br><br>
3
3
  § PaIRS now ships with executables! Download them from the <a href="https://www.pairs.unina.it/#download">PaIRS website</a>.<br>
4
4
 
5
5
  # !=critical issue, %=bugfix, &=announcement, *=improvement, £=bold font without icon, §=python distribution
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PaIRS_UniNa
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: PaIRS - Particle Image Reconstruction Software
5
5
  Home-page: https://pairs.unina.it/
6
6
  Author: Gerardo Paolillo and Tommaso Astarita
@@ -48,19 +48,23 @@ PaIRS-UniNa is supported by Python 3.10+ and is compatible with all the operatin
48
48
 
49
49
  For further information, please visit the [PaIRS website](https://www.pairs.unina.it/).
50
50
 
51
- ## What's new in PaIRS-UniNa 0.2.6
51
+ ## What's new in PaIRS-UniNa 0.2.7
52
52
 
53
53
  ### Bug fixes:
54
- - fixed bugs related to process tree management.
54
+ - Fixed incorrect streamline visualization when viewing images in pixel units.
55
+ - Reprojection errors in CalVi are now correctly recalculated and plotted when expanding the control-point grid.
56
+ - Image transformations are now preserved even with automatic reshape/resize option enabled in the Output tab.
55
57
 
56
58
  ### User-interface enhancements:
57
- - enhanced release check using SSL for reliable retrieval of the latest version.
59
+ - The button for restricting the view on the interrogation-window area now opens a popup menu to select which interrogation-window size to display across process iterations.
60
+ - Duplicated process names are automatically updated to avoid conflicts.
61
+ - Improved behavior of editable fields: accurate cursor positioning, proper highlighting and background restoration.
58
62
 
59
63
  ### Distribution:
60
64
  - ready-to-use executables of PaIRS are now available!
61
65
 
62
66
  ## Portable executable
63
- Download a prepackaged, portable build of PaIRS_UniNa from the [PaIRS website](https://www.pairs.unina.it/#download).
67
+ Download the standalone PaIRS_UniNa executable from the [PaIRS website](https://www.pairs.unina.it/#download).
64
68
 
65
69
  ## Installation in Python
66
70
  All PaIRS-UniNa wheels are distributed under LGPLv3+ licences. The installation can be performed with:
@@ -1,13 +1,13 @@
1
1
  PaIRS_UniNa/Calibration_Tab.py,sha256=76K506LD4XskIcmp0YutfSDVcpNccDXGfLztV57D4bo,13133
2
- PaIRS_UniNa/Changes.txt,sha256=xm0svllG7tI_38bWD7NQNyKXXVFtYbnGhb6vcfQfGmQ,9040
2
+ PaIRS_UniNa/Changes.txt,sha256=Gcr2QgLRo6tonBqiz7dw0CmrDubMZHGyp8-qsANGS4k,10449
3
3
  PaIRS_UniNa/Custom_Top.py,sha256=lBF8_GmJYauWSuhOUH0R-kllv7_gBLIcVZruarVe6kg,11943
4
- PaIRS_UniNa/Explorer.py,sha256=mRPT0G_TfrGavSQT2jokh4Lm39-GRFnCBiqO3eMQpp4,137452
4
+ PaIRS_UniNa/Explorer.py,sha256=3Sa2AOFRKCsrsafMLK0ePDPq2P8HHOCPPCMXWG22A_g,138025
5
5
  PaIRS_UniNa/FolderLoop.py,sha256=5NSzQQHc1ek3Jj_3nwAJ6dVaRGmE_BXCc7o8-6QGHXQ,16237
6
- PaIRS_UniNa/Input_Tab.py,sha256=1MqK7ptfvZMKFzdRaO8maDFg5EsPv_6DKWaNk5d-b0k,33292
7
- PaIRS_UniNa/Input_Tab_CalVi.py,sha256=t3dciKLyVtk08wVWlj00AGlCRPY_ZVuS5TDwdKcLKoA,34461
8
- PaIRS_UniNa/Input_Tab_tools.py,sha256=uxEWoUwGMbAa-yojSLIn1dh974-j3xtvwivf_NpRjQQ,123995
6
+ PaIRS_UniNa/Input_Tab.py,sha256=7mJsvE2v0vq2Dwig1jBzYjToSa9XxOiQj51GvD7KQLM,33291
7
+ PaIRS_UniNa/Input_Tab_CalVi.py,sha256=0Wxm3D541A48k3zgeHY1WE9VgP3YCnRijZQNYbB1jbw,34477
8
+ PaIRS_UniNa/Input_Tab_tools.py,sha256=eVWFxIoYrEXCumbvSxTx6EqLcPzWZP6zzFzahPoyNQk,124008
9
9
  PaIRS_UniNa/Log_Tab.py,sha256=beiXlmPlIpt1VMl10ZxFGK6mTpWmm8Jy4d2ckNsQigs,3603
10
- PaIRS_UniNa/Output_Tab.py,sha256=WekNy-R6i1tLY-zHwyrsbN8dIt8ts_xRseO5nwMj1Zw,41093
10
+ PaIRS_UniNa/Output_Tab.py,sha256=BUYJVELC__OC0nfDaWV0tEkWTdzqbZ0weihkQq7yTmc,41144
11
11
  PaIRS_UniNa/PaIRS.py,sha256=paXrJMdEqwjH18suV1GREZi5VNo1x--Bam2JT1kpoBs,347
12
12
  PaIRS_UniNa/PaIRS_PIV.py,sha256=ROaCHUP7QWyy4CqHOH0mYWp-IiOCvuayn2mJGUQ0ewY,47077
13
13
  PaIRS_UniNa/PaIRS_pypacks.py,sha256=ugVcj454eYcirIHeXA55ZiO9IJJKYXe-Np7GUt3Ey-c,60071
@@ -18,16 +18,16 @@ PaIRS_UniNa/Process_Tab_Min.py,sha256=RCP11E7aKoP_wU6yhktUN6N9rD5SwYZhfCGGldq7tY
18
18
  PaIRS_UniNa/ResizePopup.py,sha256=XvS5VFDE_s3sNv6pcWIt4rodSk5I_oFl3S9tRK90evg,1804
19
19
  PaIRS_UniNa/Saving_tools.py,sha256=_ku71sU7tTRiNahJjLumagw4mclqFVPJDsweluc34C0,11150
20
20
  PaIRS_UniNa/TabTools.py,sha256=_geVIsK2yVy2BoxKGDmLCO55y6SoSsRvBAMLylaP4n8,54484
21
- PaIRS_UniNa/Vis_Tab.py,sha256=b238PUb-Bok_5KyANvs5AEA0VtbRbHijHB2ce0j7leY,95280
21
+ PaIRS_UniNa/Vis_Tab.py,sha256=UyCBltsgf4yDC06NDc_J24-6PuwEo-jJQgOyat_svqE,96562
22
22
  PaIRS_UniNa/Vis_Tab_CalVi.py,sha256=w9eI_MfFiIp3puk74g3gyPw0vzI1wajKYH15IxwKFg8,42803
23
23
  PaIRS_UniNa/Whatsnew.py,sha256=F1ysfb67HWdTpUrmBIFrmHRXGh38KwsggqsRp0xTExc,5682
24
- PaIRS_UniNa/_PaIRS_PIV.pyd,sha256=vPaVjSjdwNM7LrH8G_KPCnHSzGF4R2S-LeQ8PcCmcOs,3561984
25
- PaIRS_UniNa/__init__.py,sha256=eKRblMPAp0V_i7M5Z3szC2j39V2hSsM3KZRM8MMJ3_4,145
24
+ PaIRS_UniNa/_PaIRS_PIV.pyd,sha256=lvioIebuXPaMzkIZicGFTtWGChA_CgMBueloK6F2FIg,3561984
25
+ PaIRS_UniNa/__init__.py,sha256=8xjLzYEMav_W1q57ZciEHJaSr74kVLePaL9anR9HO9M,143
26
26
  PaIRS_UniNa/__main__.py,sha256=639RU4DJEr8cAWbT8BOikjT_hd6Vxvo5xgWxyo54GAI,1369
27
- PaIRS_UniNa/addwidgets_ps.py,sha256=QHsyI9_f7QYheZktdbHub3KE5ObrxtaDHM8AGbifibw,42694
27
+ PaIRS_UniNa/addwidgets_ps.py,sha256=2KvIs_GkeN9w77vinEDLa67eVRrmqNGCIGMuUSvHhdE,43021
28
28
  PaIRS_UniNa/calib.py,sha256=njCPx4qMcOrpJBLQjQXVKneqo-svl4gjGWoNIAB2jgk,66036
29
- PaIRS_UniNa/calibView.py,sha256=eklj90Uuh8oUf9FJCygkq9gv1DASvzgPDctW32WePnk,33984
30
- PaIRS_UniNa/gPaIRS.py,sha256=yaDfPD9LkhGyrZco2gCucNj86HUbpQ7gp8EtN82-l3s,181537
29
+ PaIRS_UniNa/calibView.py,sha256=jzOw-rHko87Cl11GnOH5zZzko3Ri86T9fIwgmU2JZig,34366
30
+ PaIRS_UniNa/gPaIRS.py,sha256=9LaIylzqUsr0Beyj8CpLz8L2AvMX5WijPhWPTUUVOLM,181891
31
31
  PaIRS_UniNa/gPalette.py,sha256=UcGqKO1OlaunCNIrGjUAKQRbZkwJnUn1-lT-ojZMbdU,17390
32
32
  PaIRS_UniNa/listLib.py,sha256=eyWTLZiIG4B60L87tcTZtRfNwJOMTkd_3_d0gHvU20Q,12135
33
33
  PaIRS_UniNa/mtfPIV.py,sha256=z8MrMUIEG934TM7O0MX1IYcT7dnW35NumVkthm7YUlI,8051
@@ -36,7 +36,7 @@ PaIRS_UniNa/parForWorkers.py,sha256=W_4A5A4GtRQ0GLlPw5nkW5xs3hmgv9FH2LuU6HixhL0,
36
36
  PaIRS_UniNa/pivParFor.py,sha256=oQX0Pz9EJh2Yf2KKGtM9RQ5wNpM452lWxkrilWJ6v4s,11153
37
37
  PaIRS_UniNa/plt_util.py,sha256=fqVCrAptE55qpFPPiKHUfFa3S4jUUETPRrB6w6CoWbs,3327
38
38
  PaIRS_UniNa/preProcParFor.py,sha256=XqigjWdcTWtYlEcdINx6YY_jE9BE3gw5ET_hITAMxJc,7474
39
- PaIRS_UniNa/procTools.py,sha256=IUh0Tac5nOklgoxShcHtCu7PmqpqOKMd17A94MP6EwU,65748
39
+ PaIRS_UniNa/procTools.py,sha256=N3n1B8xdC6Mx66iM33AOwTjNMlRRgovh4eRD967f38k,65862
40
40
  PaIRS_UniNa/readcfg.py,sha256=RBbQNVNfChA8O-ZEWJliuu7T4xOS7PRxFE08TlJKekc,2122
41
41
  PaIRS_UniNa/rqrdpckgs.txt,sha256=3m2BSs46Z_l4rDFF2xvSGfGTUMNn1m0Xgmc4UD9U8jE,219
42
42
  PaIRS_UniNa/stereoPivParFor.py,sha256=_5_9_G2F52FLmYcX_UDLBj_CN-7r17vKUcZavAxB53c,11248
@@ -58,7 +58,7 @@ PaIRS_UniNa/ui_Vis_Tab_CalVi.py,sha256=-YpyQgycMVP_AzLdreNshprk1n_lNDxCtoeVgwmBE
58
58
  PaIRS_UniNa/ui_Whatsnew.py,sha256=mQkGMzgHQeQqAftF3icu7GvczazFDLMX8BCTem_27ss,5776
59
59
  PaIRS_UniNa/ui_gPairs.py,sha256=QKzIIp8Ogfb09pSAKH3gBq3F7Sfl75EBfsmFM6lVH2g,46026
60
60
  PaIRS_UniNa/ui_infoPaIRS.py,sha256=AhJ8YUfH9zj6OEIec351cSAUFhpkHdzLWPOG1V0yj4M,37835
61
- PaIRS_UniNa/whatsnew.txt,sha256=FucJCNti1fnLhx6d_3yGE3uz1SbXYBFNDSuLFZRds10,380
61
+ PaIRS_UniNa/whatsnew.txt,sha256=KDLUkgPgG5qoW2hmTVv5c2jPwrrU4hkSj5VqtZ05xeo,797
62
62
  PaIRS_UniNa/icons/abort.png,sha256=gdSz0VMk5BgZRPthvUgH_ZE5MmyOdOrE3jf2FG5qe2U,79115
63
63
  PaIRS_UniNa/icons/about.png,sha256=svhha0azUto_21uljl1BEdhtSfvm7AyOBcjGMvgms2o,15523
64
64
  PaIRS_UniNa/icons/align_all.png,sha256=rAzKfmsg6zI3CGmvAj8A5XhFsltsofdK5zYWLFezkDc,20200
@@ -319,7 +319,7 @@ PaIRS_UniNa/icons/colormaps/viridis.png,sha256=AYaCSf5zUaSiyfuC1aGnMxawTUTqVl-81
319
319
  PaIRS_UniNa/icons/colormaps/whiteVector.png,sha256=-TPqm1S9e4OQ4Ee-9piT3bFfXg6TWEw20lvrmeCrnKY,350
320
320
  PaIRS_UniNa/icons/colormaps/winter.png,sha256=ANqoViwtVfvAULokJaAp21xx8sjQJ1jEzYjAVo5WPtM,250
321
321
  PaIRS_UniNa/icons/colormaps/yellowVector.png,sha256=RQJhq_Ft9GxpiH5Mac0E0KXJlfGtPdP5M4kn0qsrFz4,353
322
- pairs_unina-0.2.6.dist-info/METADATA,sha256=8FPXHmv_mq77UzicYMi_-vKihdWjfeWXfUDHzlf9Hh0,8204
323
- pairs_unina-0.2.6.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
324
- pairs_unina-0.2.6.dist-info/top_level.txt,sha256=zxMsZBZRcjIXsv4CLSJ6RV0GhzeX89lx-JMfCCMkkYE,23
325
- pairs_unina-0.2.6.dist-info/RECORD,,
322
+ pairs_unina-0.2.7.dist-info/METADATA,sha256=eWo-FkP2XRRFWAntdbgZM3-TNDZKseEgS0_h4qOEvDc,8750
323
+ pairs_unina-0.2.7.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
324
+ pairs_unina-0.2.7.dist-info/top_level.txt,sha256=zxMsZBZRcjIXsv4CLSJ6RV0GhzeX89lx-JMfCCMkkYE,23
325
+ pairs_unina-0.2.7.dist-info/RECORD,,