petal-qc 0.0.3__py3-none-any.whl → 0.0.4__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.

Potentially problematic release.


This version of petal-qc might be problematic. Click here for more details.

petal_qc/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  """petal_qc python module."""
2
- __version__ = "0.0.3"
2
+ __version__ = "0.0.4"
3
3
 
4
4
 
5
5
  def coreMetrology():
@@ -130,7 +130,7 @@ def petal_metrology(ifile, options):
130
130
  if options.desy:
131
131
  flatness_data = DataFile.read(ifile, "PetalPlane")
132
132
  else:
133
- flatness_data = DataFile.read(ifile, r"Punto[-|Vision-]\w", "Punto")
133
+ flatness_data = DataFile.read(ifile, r"Punto(-|(Vision-))\d", "Punto")
134
134
  Fmean = np.mean(flatness_data[:, 2])
135
135
  flatness_data[:, 2] -= Fmean
136
136
 
@@ -170,10 +170,10 @@ def petal_metrology(ifile, options):
170
170
  if key == "COPLANARITY_LOCATORS" and not check_spec(val, 0.1):
171
171
  dbOut["comments"].append(
172
172
  "Coplanarity of locators: {:.3f} mm".format(val))
173
- elif key == "PARALLELISM" and not check_spec(abs(val), 0.1):
173
+ elif key == "PARALLELISM" and not check_spec(abs(val), 0.2):
174
174
  dbOut["defects"].append({
175
175
  "name": key,
176
- "description": "Paralelism of locators is {:.3f} mm > 0.100 mm".format(val)
176
+ "description": "Paralelism of locators is {:.3f} mm > 0.200 mm".format(val)
177
177
  })
178
178
  elif key == "OFFSET" and not check_spec(abs(val), 0.100):
179
179
  dbOut["comments"].append("Offset of locator plane w.r.t BT is {:.3f} mm".format(val))
@@ -11,19 +11,53 @@ import matplotlib.pyplot as plt
11
11
 
12
12
 
13
13
  def get_value(data, value_path):
14
- """Get the value."""
14
+ """Get the value from the path given."""
15
15
  a = data
16
16
  for k in value_path.split('/'):
17
17
  a = a[k]
18
18
 
19
19
  return a
20
20
 
21
+ def save_figure(fig, fnam, prefix=None, dpi=192):
22
+ """Saves the figure
21
23
 
22
- def main(options):
24
+ Args:
25
+ fig (Figure): The figure to save
26
+ fnam (str): The name of the output file
27
+ dpi (int, optional): The Dots por Inch. Defaults to 300.
28
+ """
29
+ if fnam is not None:
30
+ if prefix:
31
+ P = Path(fnam).expanduser().resolve()
32
+ name = prefix + P.name
33
+ out = P.parent / name
34
+ fnam = out
35
+
36
+ print("out: {}".format(fnam))
37
+ fig.savefig(fnam, dpi=dpi)
38
+
39
+
40
+ def read_data_files(options):
41
+ """Read the data files.
42
+
43
+ It assumes the data file names are in the format:
44
+
45
+ <AlternativeID>-<side>.json
46
+
47
+ AlternativeID is PPC.nnn side is either front or back.
48
+
49
+ Returns the values for front and back petal tests.
50
+
51
+ The results are a dictionary with the file label as key and the requested
52
+ value, which can be a number of an array.
53
+
54
+ the file labels are also returned.
55
+
56
+ """
23
57
  labels = []
24
58
  front = {}
25
59
  back = {}
26
-
60
+
27
61
  for fnam in options.files:
28
62
  ifile = Path(fnam).expanduser().resolve()
29
63
  print(ifile.name)
@@ -43,16 +77,119 @@ def main(options):
43
77
  label = tmp[0]
44
78
  if not label in labels:
45
79
  labels.append(label)
46
-
47
- is_front = False
48
- if "front" in tmp[1].lower():
49
- is_front = True
50
-
80
+
51
81
  val = get_value(data, options.value)
52
- if is_front:
82
+ if "front" in tmp[1].lower():
53
83
  front[label] = val
54
84
  else:
55
85
  back[label] = val
86
+
87
+ labels.sort()
88
+
89
+ return front, back, labels
90
+
91
+ def draw_deltas(data, keys, fnam=None, title="Front"):
92
+ """Plot the position deltas."""
93
+ key_table = {"Bot.": "PL01", "Slot": "PL02", "Top": "PL03",
94
+ "Bot-FD01": "PL01-FD01", "Bot-FD02": "PL01-FD02", "FD01-FD02": "FD01-FD02" }
95
+ nfiles = len(data)
96
+
97
+ P = [np.zeros([nfiles, 2]),
98
+ np.zeros([nfiles, 2]),
99
+ np.zeros([nfiles, 2])]
100
+
101
+ fig_width = 12.0
102
+ fig_height = 1.2*fig_width/3.0
103
+ fig, ax = plt.subplots(nrows=1, ncols=3, tight_layout=True, figsize=(fig_width, fig_height))
104
+ fig.suptitle(title)
105
+ for i in range(3):
106
+ ax[i].set_title(keys[i])
107
+ ax[i].set_aspect('equal', adjustable='box')
108
+ ax[i].set_xlim(-100, 100)
109
+ ax[i].set_ylim(-100, 100)
110
+ circle = plt.Circle((0,0), 50, color="red", alpha=0.25)
111
+ ax[i].add_patch(circle)
112
+ circle = plt.Circle((0,0), 25, color="green", alpha=0.25)
113
+ ax[i].add_patch(circle)
114
+
115
+ ax[i].set_xlabel("X (µm)")
116
+ ax[i].set_ylabel("Y (µm)")
117
+ ax[i].grid()
118
+
119
+ for j, v in enumerate(data.items()):
120
+ label, values = v
121
+ for k in range(3):
122
+ ky = key_table[keys[k]]
123
+ P[k][j, :] = 1000*np.array(values[ky])
124
+
125
+ ax[i].scatter(P[i][:,0], P[i][:,1])
126
+
127
+ save_figure(fig, fnam, prefix=title)
128
+
129
+
130
+ def show_positions(options):
131
+ """Make position plots."""
132
+
133
+ if "LOCATION" in options.value:
134
+ keys = ["Bot.", "Slot", "Top"]
135
+ elif "REL_POS" in options.value:
136
+ keys = ["Bot-FD01", "Bot-FD02", "FD01-FD02"]
137
+ else:
138
+ print("Invalid value")
139
+ return
140
+
141
+ front, back, labels = read_data_files(options)
142
+ val_name = options.value.split('/')[-1]
143
+ draw_deltas(front, keys, fnam=options.out, title="{} - Front".format(val_name))
144
+ draw_deltas(back, keys, fnam=options.out, title="{} - Back".format(val_name))
145
+
146
+ plt.show()
147
+
148
+ def show_flatness(options):
149
+ """Show flatness plots."""
150
+ tick_labels = ["R0", "R1", "R2", "R3S0", "R3S1", "R4S0", "R4S1", "R5S0", "R5S1"]
151
+ cindx = ["Front", "Back"]
152
+
153
+ front, back, labels = read_data_files(options)
154
+ nfiles = len(labels)
155
+ npts = len(tick_labels)
156
+ X = np.array([float(x) for x in range(npts)])
157
+
158
+
159
+ fig, ax = plt.subplots(nrows=1, ncols=2, tight_layout=True, figsize=(9., 5.))
160
+ fig.suptitle(options.value)
161
+
162
+ P = [ np.zeros([nfiles, npts]), np.zeros([nfiles, npts]) ]
163
+ y_lim = []
164
+ for i, V in enumerate([front, back]):
165
+ ax[i].set_title(cindx[i])
166
+ ax[i].set_xticks(range(npts), labels=tick_labels)
167
+ ax[i].grid()
168
+
169
+ for lbl in labels:
170
+ ax[i].plot(X, V[lbl], '-', label=lbl)
171
+
172
+ y_lim.append(ax[i].get_ylim())
173
+
174
+ for a in ax:
175
+ a.set_ylim(0, 1.2*max(y_lim[0][1], y_lim[1][1]))
176
+ a.legend(ncol=3, fontsize="x-small")
177
+
178
+ save_figure(fig, options.out, prefix="zzz-")
179
+
180
+ def main(options):
181
+ """Main entry."""
182
+
183
+ if "LOCATION" in options.value or "REL_POS" in options.value:
184
+ show_positions(options)
185
+ return
186
+
187
+ if "FLATNESS_LOCAL" in options.value:
188
+ show_flatness(options)
189
+ return
190
+
191
+
192
+ front, back, labels = read_data_files(options)
56
193
 
57
194
  labels.sort()
58
195
  X = np.arange(0, len(labels))
@@ -60,18 +197,17 @@ def main(options):
60
197
  fig.suptitle(options.value)
61
198
  ax.set_xticks(range(len(labels)), labels=labels)
62
199
  ax.grid()
63
-
200
+
64
201
  vfront = [front[x] for x in labels]
65
202
  vback = [back[x] for x in labels]
66
203
  ax.plot(X, vfront, '*', label="Front")
67
204
  ax.plot(X, vback, 'o', label="Back")
68
205
  ax.legend()
69
-
70
- if options.out:
71
- fig.savefig(options.out, dpi=300)
206
+
207
+ save_figure(fig, options.out)
72
208
 
73
209
  plt.show()
74
-
210
+
75
211
 
76
212
  if __name__ == "__main__":
77
213
  # Argument parser
@@ -80,17 +216,17 @@ if __name__ == "__main__":
80
216
  parser.add_argument("--value", default=None, help="Value to plot")
81
217
  parser.add_argument("--out", default=None, help="File to store the figure.")
82
218
 
83
- options = parser.parse_args()
84
- if len(options.files) == 0:
219
+ opts = parser.parse_args()
220
+ if len(opts.files) == 0:
85
221
  print("I need at least one input file")
86
222
  sys.exit()
87
223
 
88
- if len(options.files) == 1:
89
- xxx = any(elem in options.files[0] for elem in r"*?")
224
+ if len(opts.files) == 1:
225
+ xxx = any(elem in opts.files[0] for elem in r"*?")
90
226
  if xxx:
91
- options.files = glob.glob(options.files[0])
227
+ opts.files = glob.glob(opts.files[0])
92
228
 
93
- if options.value[0] == '/':
94
- options.value = options.value[1:]
95
- options.value = "results/METROLOGY/" + options.value
96
- main(options)
229
+ if opts.value[0] == '/':
230
+ opts.value = opts.value[1:]
231
+ opts.value = "results/METROLOGY/" + opts.value
232
+ main(opts)
@@ -162,7 +162,12 @@ def petal_flatness(orig_data, options, document=None):
162
162
  flatness_func = flatness_LSPL
163
163
  F = {}
164
164
  for key, val in sensors.items():
165
- F[key] = flatness_func(val)
165
+ try:
166
+ F[key] = flatness_func(val)
167
+ except ValueError as E:
168
+ print("*** Error: Petal flatnes: key {}\n{}".format(key, E))
169
+ print(val)
170
+ return TM, avg, Zmean, [-9999, -9999]
166
171
 
167
172
  flatness_all_sensor_area = flatness_func(all_data)
168
173
 
@@ -182,7 +187,7 @@ def petal_flatness(orig_data, options, document=None):
182
187
  outF.extend(values)
183
188
  print("{}: {:.3f} {}: {:.3f}".format(lbls[0], values[0], lbls[1], values[1]))
184
189
 
185
- print("All sensor area: {:.3f}".format(flatness_all_sensor_area))
190
+ print("All sensor area: {:.3f}".format(1000*flatness_all_sensor_area))
186
191
 
187
192
  # Add table in document
188
193
  if document:
@@ -133,7 +133,8 @@ class IRDataIFIC(IRDataGetter):
133
133
  super().__init__()
134
134
  self.analysis_frame = None
135
135
  if HAS_GRAPHANA:
136
- self.DB = ReadGraphana("localhost")
136
+ #self.DB = ReadGraphana("localhost")
137
+ self.DB = ReadGraphana()
137
138
  else:
138
139
  self.DB = None
139
140
 
@@ -156,9 +157,10 @@ class IRDataIFIC(IRDataGetter):
156
157
  """
157
158
  irbf.set_concatenate(True)
158
159
  frame = self.get_analysis_frame(irbf)
159
- i_min = self.indx
160
+ i_min = self.indx[-1]
160
161
  min_T = np.min(frame[0].image)
161
- return min_T, i_min, frame
162
+ values = self.get_IR_data(frame[0])
163
+ return min_T, i_min, [values, ]
162
164
 
163
165
  # if len(args) == 0:
164
166
  # T_min = -22.0
@@ -551,7 +551,7 @@ def get_T_profile(data, A, B, npts=10, do_fit=False, npdim=7, debug=False):
551
551
  fmin.success = True
552
552
  break
553
553
 
554
- # If the re is aclear minimum within the segment
554
+ # If there is a clear minimum within the segment
555
555
  if fmin.success and fmin.x[0] > 0 and fmin.x[0] < mx_dist:
556
556
  # This should no happen. if minimize returns we should have found
557
557
  # at least a valid root.
@@ -167,7 +167,8 @@ class CoreThermal(itkdb_gtk.dbGtkUtils.ITkDBWindow):
167
167
  self.irbfile = PSF
168
168
  self.param.files =[PSF,]
169
169
 
170
- DB = ReadGraphana("localhost")
170
+ #DB = ReadGraphana("localhost")
171
+ DB = ReadGraphana()
171
172
  irbf = IRBFile.open_file(self.irbfile)
172
173
  getter = IRDataGetter.factory(self.param.institute, self.param)
173
174
  frames = getter.get_analysis_frame(irbf)
@@ -75,9 +75,11 @@ def clean_figures():
75
75
  def get_inlet_temp(irbf, param):
76
76
  """Gets the value of the inlet temperature from Graphana."""
77
77
 
78
+ print("# Getting the Inlet temperature. Contacting Graphana...")
78
79
  out = -9999
79
80
  getter = IRDataGetter.factory(param.institute, param)
80
- DB = ReadGraphana("localhost")
81
+ #DB = ReadGraphana("localhost")
82
+ DB = ReadGraphana()
81
83
  frames = getter.get_analysis_frame(irbf)
82
84
  the_time = frames[0].timestamp
83
85
  try:
@@ -113,14 +115,14 @@ def create_IR_core(options):
113
115
  if irbf is None:
114
116
  print("Could not fine input file: {}".format(options.files))
115
117
  return
116
-
118
+
117
119
  if options.tco2 <= -999:
118
120
  out = get_inlet_temp(irbf, options)
119
121
  if out <= -999:
120
122
  print("### Cannot get Tcos. Setting to default.")
121
123
  P = IRPetalParam()
122
124
  out = P.tco2
123
-
125
+
124
126
  options.tco2 = out
125
127
 
126
128
  # Set parameters from command line
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: petal_qc
3
- Version: 0.0.3
3
+ Version: 0.0.4
4
4
  Summary: A collection of scripts for Petal CORE QC.
5
5
  Author-email: Carlos Lacasta <carlos.lacasta@cern.ch>
6
6
  Project-URL: Homepage, https://gitlab.cern.ch/atlas-itk/sw/db/itk-pdb-gtk-gui-utils
@@ -1,16 +1,16 @@
1
- petal_qc/__init__.py,sha256=T6LHv2FfNKEZoPz6lXy-NcguLXFG0cYPK7I-NCR2Ng4,472
1
+ petal_qc/__init__.py,sha256=VpC-IsQnxbgzAmtAY_kKTvTlAtU1gruWo2LAL5oOFY0,472
2
2
  petal_qc/dashBoard.py,sha256=aPugRYhCcAzEBPrCyh8A8QKYaB4Q-_T1q3r5A3J2eog,553
3
3
  petal_qc/BTreport/CheckBTtests.py,sha256=4hNP1V-zcFBN5UvWVbx9nAmittF8Jmb5J17L33t68Eg,9086
4
4
  petal_qc/BTreport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  petal_qc/BTreport/bustapeReport.py,sha256=c5VERxPm6BOgW_yN9O_bEPmCYpuwZ_Yt_I2sMVAp0-I,6895
6
6
  petal_qc/metrology/Cluster.py,sha256=UtZ5q1EFb8f3qC0hEYBbhRg2pPbW_28aJX2EEMu00Ho,2105
7
7
  petal_qc/metrology/DataFile.py,sha256=PbFqy3-WSj69epV5EjhHc1GKhA8I74FmJYOXUjN0V20,1367
8
- petal_qc/metrology/PetalMetrology.py,sha256=H4MwuQ2QxP_Td9KtMly_-osXT1owigzC7QlmRub7oRo,11886
8
+ petal_qc/metrology/PetalMetrology.py,sha256=dzy--gvmF-xzTFI_MGn2oJWNaVMsBLBSwoZ1dLnAHfc,11888
9
9
  petal_qc/metrology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  petal_qc/metrology/all2csv.py,sha256=KTgEGaediylwkGN7gyWyQqUjU0f9FOa3xF4z1W38EcU,1569
11
11
  petal_qc/metrology/analyze_locking_points.py,sha256=FjLte9VgxVMfR-b1DlViWDsa2vl3ZKfCCptyibEjBUY,20519
12
12
  petal_qc/metrology/cold_noise.py,sha256=PuTaQ73WrQCJdE9ezS4UFmA3atwCuvM0ZsUOYu1ZIBw,3106
13
- petal_qc/metrology/compare_Cores.py,sha256=IKJ7lGHfF2NyYasXqMF-IzBLknA2Qp4qFzBVxJbKOX8,2415
13
+ petal_qc/metrology/compare_Cores.py,sha256=A3_Zqd7K5G93bShWFA7NK0Xob3Zin9WSwfGUMpCitNY,6485
14
14
  petal_qc/metrology/comparisonTable.py,sha256=6Zmh-x0ahs28ZJQuHMrIiRcblUmTN1_-1otFSRNMPds,1743
15
15
  petal_qc/metrology/convert_mitutoyo.py,sha256=HdXQzFL5y7r8qXDzti91VItDQ-y6D9rEAYknn4yHwBs,5449
16
16
  petal_qc/metrology/convert_smartscope.py,sha256=es3PoUd5d5rpHebgwsS9nrc3uuy9uFKOQ00ZdU5XHQ0,3836
@@ -19,16 +19,18 @@ petal_qc/metrology/data2csv.py,sha256=2ttMSmfGLPIaOqZGima2dH6sdnSRAFTHlEbSOfW5eb
19
19
  petal_qc/metrology/do_Metrology.py,sha256=zPryMgu46fmCyuAGtRGs2yqh0OSxnkSo9bsJMxQ80PU,4107
20
20
  petal_qc/metrology/flatness4nigel.py,sha256=SUHwn6pCEUWQV_62-_9-VKrmUdL4gVQcSA3aTtYq958,4071
21
21
  petal_qc/metrology/gtkutils.py,sha256=1pOTxiE2EZR9zNNNT5cOetga_4NG9DzLaqQPI4c1EzE,3372
22
- petal_qc/metrology/petal_flatness.py,sha256=MH3ZlSildLokYnjERQG28qqLg3LL8C6rFLT8VbEI_BA,11190
22
+ petal_qc/metrology/petal_flatness.py,sha256=-TuCndiCTwvIKaSb9oIMmtyy2qVv_WCY3Arq5qRxegk,11390
23
23
  petal_qc/metrology/show_data_file.py,sha256=yZPcmMy-1EWWySiBBx0hNB3tPVh19bTr0PDaXSyIF4c,4057
24
24
  petal_qc/metrology/testSummary.py,sha256=0BhcEd1BPz2Mbonzi8nyZOzNSzpUqowBFNl5cVutqsk,994
25
25
  petal_qc/metrology/test_paralelism.py,sha256=_j__OdUwdXWM494_9HpGPuPHixMwwVphCcvHEfzWi_k,1981
26
+ petal_qc/test/test_Graphana.py,sha256=fXcqHzgrfZGjSF-WoMLl96G97XjXVnynHYC-5rKw_-c,1032
27
+ petal_qc/test/test_coreThermal.py,sha256=YRPK3DGG7Tz66K4Kka3euXgUDzW_JlIqSYicMBhb96E,1516
26
28
  petal_qc/thermal/CSVImage.py,sha256=Vt2kYmUsZWkQvxcF8fDda3HO1Rb29kPQHnEoHFCqWYo,2038
27
29
  petal_qc/thermal/DebugPlot.py,sha256=OmREFwNDAKgoObDmcgHrB4d8m3bf2znfsKVGsb5rBGQ,2119
28
30
  petal_qc/thermal/IRBFile.py,sha256=yScjQrAeB9dnNNO-6_8S34vzrtme0F6y3kwYahMKDxc,22271
29
31
  petal_qc/thermal/IRCore.py,sha256=y79YEQrq4q2hSdmYbOF7jjEA-wy50Qun0g_AmrRUmls,3056
30
- petal_qc/thermal/IRDataGetter.py,sha256=L7uX6JF0c253bq_NLt7_ddbjnrOCoLDblfIxE_9YL1o,10834
31
- petal_qc/thermal/IRPetal.py,sha256=8H1ltpahzJavM65De8OTSedvilXQkr3LkV8mRnTDhLQ,38334
32
+ petal_qc/thermal/IRDataGetter.py,sha256=5z9kUo5is-D6Cc2B7w8e588RzhUaRsDRRBRvz9ggqh4,10925
33
+ petal_qc/thermal/IRPetal.py,sha256=5QGGnfxt7QTqEmtqF6o8Kgvtu_FB4wGNH3CVSU4TlIk,38334
32
34
  petal_qc/thermal/IRPetalParam.py,sha256=hrQ9FevzWctvBVHeQ71G0WzllVEa5rYkJom2ezfFYHc,3674
33
35
  petal_qc/thermal/PetalColorMaps.py,sha256=6CvJHzRdojLHu3BROYSekHw8g_BJ1lJ_edyhovTIydU,3831
34
36
  petal_qc/thermal/Petal_IR_Analysis.py,sha256=8Deh_bJ5B7DdaUV18saboF7fXZ_8Bt1vkUlsk5RqVeo,3910
@@ -36,15 +38,13 @@ petal_qc/thermal/PipeFit.py,sha256=bipXxJGxrwlgbrFv8WJA1Ds7Kj4oUwEyqTIswpgni9o,1
36
38
  petal_qc/thermal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
39
  petal_qc/thermal/analyze_IRCore.py,sha256=lJsADO4ZisESpJLA97MR9oIbdMKzwlZj9vD6WWj64pg,19577
38
40
  petal_qc/thermal/contours.py,sha256=ampCKm4byZYKb_4eJFjIkdFIl2bqVXD2mV13d2XUWlw,8244
39
- petal_qc/thermal/coreThermal.py,sha256=veZLvsDXlJdcLz1bFM4Rd9rG2u_UNtpv2l-DirR9Y2M,12765
40
- petal_qc/thermal/create_IRCore.py,sha256=xLHTyfY0VHHA21ES2b_Ix3JKIyiRQpS1qQBGeLt0Z9Q,7233
41
+ petal_qc/thermal/coreThermal.py,sha256=e7LLuRU5hhPWMTowNlID7A2JmB7hszclX4POlfCND9s,12794
42
+ petal_qc/thermal/create_IRCore.py,sha256=mnAmDTF_t3AMOA7Wv19yXT1IX4oFCgfHwHpdnamZvmI,7311
41
43
  petal_qc/thermal/create_core_report.py,sha256=zCZtTR6ouHRVZQAen_PutCvvDwHE5aSwq95sIv-8htM,4325
42
44
  petal_qc/thermal/pipe_back.npz,sha256=yooZuVYtHU541HcV6Gh_5B0BqdYAVEvYAuVvMMSY7Jc,3632
43
45
  petal_qc/thermal/pipe_front.npz,sha256=DuwruG9C2Z1rLigqWMApY4Orsf1SGUQGKy0Yan8Bk8A,3697
44
46
  petal_qc/thermal/pipe_read.py,sha256=HrAtEbf8pMhJDETzkevodiTbuprIOh4yHv6PzpRoz7Q,5040
45
47
  petal_qc/thermal/show_IR_petal.py,sha256=vKb8wm9Y7erAdCb93ODREv2qfSexNMfJpV-67wfOhBw,13159
46
- petal_qc/thermal/test_Graphana.py,sha256=fXcqHzgrfZGjSF-WoMLl96G97XjXVnynHYC-5rKw_-c,1032
47
- petal_qc/thermal/test_coreThermal.py,sha256=YRPK3DGG7Tz66K4Kka3euXgUDzW_JlIqSYicMBhb96E,1516
48
48
  petal_qc/utils/Geometry.py,sha256=XwA_aojk880N-jC1_bnMYFK0bcD-L96JPS81NUerJf0,19765
49
49
  petal_qc/utils/Progress.py,sha256=gCti4n2xfCcOTlAff5GchabGE5BCwavvDZYYKdbEsXU,4064
50
50
  petal_qc/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -53,8 +53,8 @@ petal_qc/utils/docx_utils.py,sha256=Eye16PF8W0mPBVdQvgFKWxPYV7-hzBgANPDZtUEjzf8,
53
53
  petal_qc/utils/fit_utils.py,sha256=3KUGWpBMV-bVDkQHWBigXot8chOpjAVBJ5H5b5dbdjk,5349
54
54
  petal_qc/utils/readGraphana.py,sha256=Ljr3PSkkTw-A8SRfMa77n7RO7ogLewwDy9dkflzKh2M,1869
55
55
  petal_qc/utils/utils.py,sha256=CqCsNIcEg6FQb3DN70tmqeLVLlQqsRfDzhfGevlnfBc,4035
56
- petal_qc-0.0.3.dist-info/METADATA,sha256=4lvnUeqnwBOTiGqowWZZjowXYKI6Dn_5MD9laVn4Uao,943
57
- petal_qc-0.0.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
58
- petal_qc-0.0.3.dist-info/entry_points.txt,sha256=tkGC458t1_yVr9OHFE1KtJmGQ2wqsbK8WkPWxru4jFk,127
59
- petal_qc-0.0.3.dist-info/top_level.txt,sha256=CCo1Xe6kLS79PruhsB6bk2CuL9VFtNdNpgJjYUs4jk4,9
60
- petal_qc-0.0.3.dist-info/RECORD,,
56
+ petal_qc-0.0.4.dist-info/METADATA,sha256=j4X7tTTdxbyK1rzZIo9GMcHCjFSm08Ec8wH3rnvVe7I,943
57
+ petal_qc-0.0.4.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
58
+ petal_qc-0.0.4.dist-info/entry_points.txt,sha256=tkGC458t1_yVr9OHFE1KtJmGQ2wqsbK8WkPWxru4jFk,127
59
+ petal_qc-0.0.4.dist-info/top_level.txt,sha256=CCo1Xe6kLS79PruhsB6bk2CuL9VFtNdNpgJjYUs4jk4,9
60
+ petal_qc-0.0.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes
File without changes