itkdb-gtk 0.10.0__tar.gz → 0.10.1__tar.gz

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 itkdb-gtk might be problematic. Click here for more details.

Files changed (37) hide show
  1. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/PKG-INFO +1 -1
  2. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/GetShipments.py +1 -1
  3. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/UploadTest.py +5 -5
  4. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/WireBondGui.py +85 -45
  5. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/__init__.py +1 -1
  6. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/dashBoard.py +36 -2
  7. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk.egg-info/PKG-INFO +1 -1
  8. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/pyproject.toml +1 -1
  9. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/README.md +0 -0
  10. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/CreateShipments.py +0 -0
  11. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/GlueWeight.py +0 -0
  12. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ITkDB.desktop +0 -0
  13. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ITkDB.svg +0 -0
  14. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ITkDBlogin.py +0 -0
  15. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ITkDButils.py +0 -0
  16. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/PanelVisualInspection.py +0 -0
  17. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/PetalReceptionTests.py +0 -0
  18. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/SensorUtils.py +0 -0
  19. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ShowAttachments.py +0 -0
  20. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ShowComments.py +0 -0
  21. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/ShowDefects.py +0 -0
  22. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/UploadModuleIV.py +0 -0
  23. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/UploadMultipleTests.py +0 -0
  24. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/UploadPetalInformation.py +0 -0
  25. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/dbGtkUtils.py +0 -0
  26. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/readAVSdata.py +0 -0
  27. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/readGoogleSheet.py +0 -0
  28. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk/untrash_component.py +0 -0
  29. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk.egg-info/SOURCES.txt +0 -0
  30. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk.egg-info/dependency_links.txt +0 -0
  31. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk.egg-info/entry_points.txt +0 -0
  32. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk.egg-info/requires.txt +0 -0
  33. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/itkdb_gtk.egg-info/top_level.txt +0 -0
  34. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/setup.cfg +0 -0
  35. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/test/testAnimated.py +0 -0
  36. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/test/testComponent.py +0 -0
  37. {itkdb_gtk-0.10.0 → itkdb_gtk-0.10.1}/test/test_holes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: itkdb_gtk
3
- Version: 0.10.0
3
+ Version: 0.10.1
4
4
  Summary: A collection of Gtk based GUI to access ITkDB.
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
@@ -43,7 +43,7 @@ class ReceiveShipments(dbGtkUtils.ITkDBWindow):
43
43
  global gtk_runs
44
44
  if gtk_runs:
45
45
  super().__init__(session=session, title="Upload AVS Data",
46
- show_search="Cliick to search shipments",
46
+ show_search="Click to search shipments",
47
47
  gtk_runs=gtk_runs, help=help)
48
48
 
49
49
  self.init_window()
@@ -331,7 +331,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
331
331
  self.find_attachments()
332
332
  self.find_comments()
333
333
  self.find_defects()
334
-
334
+
335
335
  self.entrySN.set_text(self.data["component"] if self.data["component"] else "")
336
336
  self.entryTest.set_text(self.data["testType"])
337
337
  self.comments = self.data.get("comments", [])
@@ -365,7 +365,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
365
365
  continue
366
366
  else:
367
367
  the_path = Path(A["path"]).expanduser().resolve()
368
-
368
+
369
369
  self.attachments.append(ITkDButils.Attachment(the_path, A["title"], A["description"]))
370
370
 
371
371
  if len(self.attachments) > 0:
@@ -390,7 +390,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
390
390
  if "comments" in self.data:
391
391
  for C in self.data["comments"]:
392
392
  self.comments.append(C)
393
-
393
+
394
394
  if len(self.comments) > 0:
395
395
  self.btn_comments.set_label("Comments ({})".format(len(self.comments)))
396
396
 
@@ -414,7 +414,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
414
414
  if "defects" in self.data:
415
415
  for D in self.data["defects"]:
416
416
  self.defects.append(D)
417
-
417
+
418
418
  if len(self.defects) > 0:
419
419
  self.btn_defects.set_label("Defects ({})".format(len(self.defects)))
420
420
 
@@ -443,7 +443,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
443
443
 
444
444
  self.data["comments"] = self.comments
445
445
  self.data["defects"] = self.defects
446
-
446
+
447
447
  rc = ITkDButils.upload_test(self.session, self.data, self.attachments)
448
448
  if rc:
449
449
  ipos = rc.find("The following details may help:")
@@ -13,8 +13,9 @@ try:
13
13
 
14
14
  except ImportError:
15
15
  from pathlib import Path
16
- cwd = Path(sys.argv[0]).parent.parent
16
+ cwd = Path(__file__).parent.parent
17
17
  sys.path.append(cwd.as_posix())
18
+ import itkdb_gtk
18
19
 
19
20
  from itkdb_gtk import dbGtkUtils
20
21
  from itkdb_gtk import ITkDBlogin, ITkDButils, UploadTest
@@ -410,24 +411,24 @@ def get_module_param(SN):
410
411
  return param
411
412
 
412
413
 
413
- class WireBond(Gtk.Window):
414
+ class WireBond(dbGtkUtils.ITkDBWindow):
414
415
  """Main window."""
415
416
 
416
- def __init__(self, session=None, title=""):
417
+ def __init__(self, session, title="", help=None):
417
418
  """Initialization."""
418
- super().__init__(title=title)
419
+ super().__init__(title=title, session=session, help=help)
419
420
  self.pdb = None
420
- self.session = session
421
421
  self.models = {}
422
422
  self.holes = {}
423
- self.prepare_window()
423
+ self.institute = "IFIC"
424
+ self.inst_combo = None
425
+ self.module_SN = None
426
+ self.alternativeID = None
427
+ self.init_window()
424
428
 
425
- def prepare_window(self):
429
+ def init_window(self):
426
430
  """Creates the GUI."""
427
- self.hb = Gtk.HeaderBar()
428
- self.hb.set_show_close_button(True)
429
431
  self.hb.props.title = "Wire Bond"
430
- self.set_titlebar(self.hb)
431
432
 
432
433
  # Button to upload
433
434
  button = Gtk.Button()
@@ -455,31 +456,41 @@ class WireBond(Gtk.Window):
455
456
  button.connect("clicked", self.read_file)
456
457
  self.hb.pack_end(button)
457
458
 
458
- # Create the main box and add it to the window
459
- self.mainBox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
460
- self.mainBox.set_property("margin-left", 6)
461
- self.mainBox.set_property("margin-right", 6)
462
- self.add(self.mainBox)
463
-
464
459
  # Data panel
465
460
  grid = Gtk.Grid(column_spacing=5, row_spacing=1)
461
+
462
+ # The shipment receiver
463
+ institute = self.create_institute_combo()
464
+ institute.connect("changed", self.on_institute)
465
+ institute.set_tooltip_text("Select the Institute.")
466
+ dbGtkUtils.set_combo_iter(institute, self.institute)
467
+ grid.attach(Gtk.Label(label="Institute"), 0, 0, 1, 1)
468
+ grid.attach(institute, 1, 0, 1, 1)
469
+ self.inst_combo = institute
470
+
471
+
466
472
  for i, tit in enumerate(["Operator", "Bond Machine", "Wire Batch", "SN", "Date"]):
467
473
  lbl = Gtk.Label(label=tit)
468
474
  lbl.set_xalign(0)
469
- grid.attach(lbl, 0, i, 1, 1)
475
+ grid.attach(lbl, 0, i+1, 1, 1)
470
476
 
471
477
  self.operator = dbGtkUtils.new_small_text_entry()
472
478
  self.machine = dbGtkUtils.new_small_text_entry()
473
479
  self.batch = dbGtkUtils.new_small_text_entry()
474
- self.SN = dbGtkUtils.new_small_text_entry()
480
+ #self.SN = dbGtkUtils.new_small_text_entry()
481
+
482
+ self.SN = itkdb_gtk.dbGtkUtils.TextEntry(small=True)
483
+ self.SN.connect("text-changed", self.on_SN_changed)
484
+
485
+
475
486
  self.date = dbGtkUtils.TextEntry(small=True)
476
487
  self.date.connect("text_changed", self.new_date)
477
488
 
478
- grid.attach(self.operator, 1, 0, 1, 1)
479
- grid.attach(self.machine, 1, 1, 1, 1)
480
- grid.attach(self.batch, 1, 2, 1, 1)
481
- grid.attach(self.SN, 1, 3, 1, 1)
482
- grid.attach(self.date.widget, 1, 4, 1, 1)
489
+ grid.attach(self.operator, 1, 1, 1, 1)
490
+ grid.attach(self.machine, 1, 2, 1, 1)
491
+ grid.attach(self.batch, 1, 3, 1, 1)
492
+ grid.attach(self.SN.entry, 1, 4, 1, 1)
493
+ grid.attach(self.date.widget, 1, 5, 1, 1)
483
494
 
484
495
  self.mainBox.pack_start(grid, True, True, 0)
485
496
 
@@ -504,19 +515,28 @@ class WireBond(Gtk.Window):
504
515
  #
505
516
  # The text view and buffer
506
517
  #
507
- self.message_panel = dbGtkUtils.MessagePanel(size=100)
508
518
  self.mainBox.pack_start(self.message_panel.frame, True, True, 0)
509
519
  self.write_message("wirebond GUI\n")
510
520
 
511
- # The button box
512
- btnBox = Gtk.ButtonBox(orientation=Gtk.Orientation.HORIZONTAL)
521
+ def on_institute(self, combo):
522
+ """Institute changed."""
523
+ name = self.get_institute_from_combo(combo)
524
+ if name:
525
+ self.institute = name
526
+
527
+ def on_SN_changed(self, entry, value):
528
+ """New SN given. Ask in PDB,"""
529
+ if len(value) <= 0:
530
+ return None
531
+
513
532
 
514
- btn = Gtk.Button(label="Quit")
515
- btn.connect("clicked", self.quit)
516
- btnBox.add(btn)
533
+ obj = itkdb_gtk.ITkDButils.get_DB_component(self.session, value)
534
+ if obj is not None:
535
+ entry.set_text(obj["serialNumber"])
536
+ self.alternativeID = obj["alternativeIdentifier"]
517
537
 
518
- self.mainBox.pack_end(btnBox, False, True, 0)
519
- self.show_all()
538
+ else:
539
+ itkdb_gtk.dbGtkUtils.complain("Invalid SN", value)
520
540
 
521
541
  def on_name_combo_changed(self, combo):
522
542
  """Change model in TreeView."""
@@ -627,13 +647,13 @@ class WireBond(Gtk.Window):
627
647
  self.hide()
628
648
  self.destroy()
629
649
 
630
- def write_message(self, text):
631
- """Writes text to Text Viewer."""
632
- self.message_panel.write_message(text)
633
-
634
650
  def compute_unconnected(self):
635
651
  """Compute number of unconnected."""
636
- param = get_module_param(self.SN.get_text())
652
+ try:
653
+ param = get_module_param(self.SN.get_text())
654
+ except ValueError as E:
655
+ dbGtkUtils.complain("Wrong SN number", str(E))
656
+
637
657
  M = ModuleHoles(param=param)
638
658
 
639
659
  for test in test_parameters.values():
@@ -728,6 +748,7 @@ class WireBond(Gtk.Window):
728
748
 
729
749
  def parse(self, data):
730
750
  """Parses a JSon dictionary."""
751
+ dbGtkUtils.set_combo_iter(self.inst_combo, data["institution"])
731
752
  self.operator.set_text(data["properties"]["OPERATOR"])
732
753
  self.machine.set_text(data["properties"]["BOND_MACHINE"])
733
754
  self.batch.set_text(data["properties"]["BONDWIRE_BATCH"])
@@ -775,7 +796,7 @@ class WireBond(Gtk.Window):
775
796
  if response == Gtk.ResponseType.OK:
776
797
  ofile = dialog.get_filename()
777
798
  data = self.get_test_data()
778
- with open(ofile, 'w') as of:
799
+ with open(ofile, 'w', encoding="UTF-8") as of:
779
800
  json.dump(data, of, indent=3)
780
801
 
781
802
  dialog.hide()
@@ -784,6 +805,7 @@ class WireBond(Gtk.Window):
784
805
  def get_test_data(self):
785
806
  """Get the test data."""
786
807
  data = {
808
+ "institution": self.institute,
787
809
  "date": ITkDButils.get_db_date(),
788
810
  "properties": {},
789
811
  "results": {},
@@ -805,21 +827,27 @@ class WireBond(Gtk.Window):
805
827
  SN = dbGtkUtils.get_a_value("Module Serial Number",
806
828
  "Module serial Number is missing")
807
829
 
808
- if len(operator) == 0 or len(machine) == 0 or len(batch) == 0:
830
+ if len(operator) == 0 or len(machine) == 0:
809
831
  values = dbGtkUtils.get_a_list_of_values(
810
832
  "Missing Values",
811
- ["SN", "Operator", "Wire Bonder", "Wire Batch"],
812
- defaults=[SN, operator, machine, batch],
833
+ ["SN", "Operator", "Wire Bonder"],
834
+ defaults=[SN, operator, machine],
813
835
  )
814
836
  if len(values) == 4:
815
- SN, operator, machine, batch = values
837
+ SN, operator, machine = values
816
838
  else:
817
- self.write_message("Something went wrong whilerequesting missing information.")
839
+ self.write_message("Something went wrong while requesting missing information.")
818
840
 
819
841
  data["component"] = SN
820
842
  data["properties"]["OPERATOR"] = operator
821
843
  data["properties"]["BOND_MACHINE"] = machine
822
844
  data["properties"]["BONDWIRE_BATCH"] = batch
845
+ data["institution"] = self.institute
846
+ if data["runNumber"] == "-1":
847
+ data["runNumber"] = "1"
848
+
849
+ data["date"] = self.date.get_text()
850
+
823
851
 
824
852
 
825
853
  def upload_test(self, *args):
@@ -835,7 +863,7 @@ class WireBond(Gtk.Window):
835
863
  self.session = client
836
864
 
837
865
  defaults = {
838
- "institution": "IFIC",
866
+ "institution": self.institute,
839
867
  "runNumber": "1",
840
868
  "date": ITkDButils.get_db_date()
841
869
  }
@@ -851,14 +879,26 @@ class WireBond(Gtk.Window):
851
879
 
852
880
  def main():
853
881
  """Main entry."""
854
- win = WireBond(title="WireBond")
882
+ dlg = ITkDBlogin.ITkDBlogin()
883
+ client = dlg.get_client()
884
+ if client is None:
885
+ print("Could not connect to DB with provided credentials.")
886
+ dlg.die()
887
+ sys.exit()
888
+
889
+ client.user_gui = dlg
890
+
891
+
892
+ win = WireBond(client, title="WireBond")
855
893
  win.connect("destroy", Gtk.main_quit)
894
+ win.show_all()
856
895
  try:
857
896
  Gtk.main()
858
897
 
859
898
  except KeyboardInterrupt:
860
899
  print("Arrrgggg!!!")
861
900
 
862
-
901
+ dlg.die()
902
+
863
903
  if __name__ == "__main__":
864
904
  main()
@@ -1,6 +1,6 @@
1
1
  """ itkdb-gtk python module
2
2
  """
3
- __version__ = "0.10.0"
3
+ __version__ = "0.10.1"
4
4
 
5
5
 
6
6
  def dash_board():
@@ -7,7 +7,7 @@ try:
7
7
 
8
8
  except ImportError:
9
9
  from pathlib import Path
10
- cwd = Path(sys.argv[0]).parent.parent
10
+ cwd = Path(__file__).parent.parent
11
11
  sys.path.append(cwd.as_posix())
12
12
 
13
13
 
@@ -22,6 +22,15 @@ from itkdb_gtk import GlueWeight
22
22
  from itkdb_gtk import UploadModuleIV
23
23
  from itkdb_gtk import WireBondGui
24
24
 
25
+
26
+ HAS_PETALQC=False
27
+ try:
28
+ from petal_qc.metrology.coreMetrology import CoreMetrology, CoreMetrologyOptions
29
+ HAS_PETALQC = True
30
+ except ImportError as E:
31
+ HAS_PETALQC = False
32
+
33
+
25
34
  import gi
26
35
 
27
36
  gi.require_version("Gtk", "3.0")
@@ -39,6 +48,8 @@ class DashWindow(dbGtkUtils.ITkDBWindow):
39
48
  GLUE_WEIGHT = 6
40
49
  MOD_IV = 7
41
50
  WIRE_BOND = 8
51
+ PETAL_CORE_METRO=9
52
+ PETAL_CORE_THERMAL=10
42
53
 
43
54
  def __init__(self, session):
44
55
  """Initialization."""
@@ -88,7 +99,12 @@ class DashWindow(dbGtkUtils.ITkDBWindow):
88
99
  btnWireBond = Gtk.Button(label="Wire Bond")
89
100
  btnWireBond.connect("clicked", self.wire_bond)
90
101
  grid.attach(btnWireBond, 1, irow, 1, 1)
91
-
102
+
103
+ if HAS_PETALQC:
104
+ irow +=1
105
+ btnPetalMetrology = Gtk.Button(label="Petal Core Metrology")
106
+ btnPetalMetrology.connect("clicked", self.petal_metrology)
107
+ grid.attach(btnPetalMetrology, 0, irow, 1, 1)
92
108
 
93
109
 
94
110
  irow += 1
@@ -200,6 +216,24 @@ class DashWindow(dbGtkUtils.ITkDBWindow):
200
216
  self.mask |= bt
201
217
  W = WireBondGui.WireBond(session=self.session, title="Wirebond", help=HELP_LINK)
202
218
  W.connect("destroy", self.app_closed, bitn)
219
+ W.show_all()
220
+
221
+ def petal_metrology(self, *args):
222
+ """Do petal metrology"""
223
+ if not HAS_PETALQC:
224
+ return
225
+
226
+ bitn = DashWindow.PETAL_CORE_METRO
227
+ bt = 1 << bitn
228
+ if self.mask & bt:
229
+ return
230
+
231
+ self.mask |= bt
232
+ opts = CoreMetrologyOptions()
233
+ W = CoreMetrology(opts, session=self.session, title="Petal Core Metrology")
234
+ W.connect("destroy", self.app_closed, bitn)
235
+ W.show_all()
236
+
203
237
 
204
238
  def app_closed(self, *args):
205
239
  """Application window closed. Clear mask."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: itkdb_gtk
3
- Version: 0.10.0
3
+ Version: 0.10.1
4
4
  Summary: A collection of Gtk based GUI to access ITkDB.
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "itkdb_gtk"
7
- version = "0.10.0"
7
+ version = "0.10.1"
8
8
  authors = [
9
9
  { name="Carlos Lacasta", email="carlos.lacasta@cern.ch" },
10
10
  ]
File without changes
File without changes