module-qc-database-tools 2.9.0__tar.gz → 2.10.0__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.
Files changed (161) hide show
  1. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.pre-commit-config.yaml +1 -0
  2. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.zenodo.json +3 -3
  3. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/CITATION.cff +2 -2
  4. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/PKG-INFO +4 -4
  5. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/README.md +1 -1
  6. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/history.md +12 -0
  7. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/install.md +2 -2
  8. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/pyproject.toml +8 -4
  9. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/_version.py +2 -2
  10. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/globals.py +3 -3
  11. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/localdbtool_upload.py +4 -8
  12. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/run_full_qc.py +159 -155
  13. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/ls.py +43 -13
  14. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/show_qc_pipeline.py +4 -1
  15. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/iv/__init__.py +15 -2
  16. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/utils.py +4 -0
  17. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/register.py +2 -1
  18. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/tbump.toml +3 -3
  19. module_qc_database_tools-2.10.0/tests/test_iv.py +75 -0
  20. module_qc_database_tools-2.9.0/tests/test_iv.py +0 -34
  21. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.env.template +0 -0
  22. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.gitattributes +0 -0
  23. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.gitignore +0 -0
  24. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.gitlab-ci.yml +0 -0
  25. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/.linkcheckerrc +0 -0
  26. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/LICENSE +0 -0
  27. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/ci/pre-commit-update.sh +0 -0
  28. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/.gitkeep +0 -0
  29. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/.overrides/main.html +0 -0
  30. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/.snippets/abbrs.txt +0 -0
  31. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/.snippets/links.txt +0 -0
  32. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/assets/css/custom.css +0 -0
  33. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/config.md +0 -0
  34. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/development.md +0 -0
  35. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/dynamic_docstring.py +0 -0
  36. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/index.md +0 -0
  37. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/iref_trim.md +0 -0
  38. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/meta/authors.md +0 -0
  39. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/reference/cli.md +0 -0
  40. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/reference/gen_ref_nav.py +0 -0
  41. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 +0 -0
  42. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 +0 -0
  43. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 +0 -0
  44. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 +0 -0
  45. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 +0 -0
  46. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 +0 -0
  47. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 +0 -0
  48. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 +0 -0
  49. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 +0 -0
  50. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 +0 -0
  51. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 +0 -0
  52. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 +0 -0
  53. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 +0 -0
  54. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 +0 -0
  55. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 +0 -0
  56. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 +0 -0
  57. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 +0 -0
  58. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 +0 -0
  59. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xIIzI.woff2 +0 -0
  60. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 +0 -0
  61. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 +0 -0
  62. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 +0 -0
  63. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 +0 -0
  64. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 +0 -0
  65. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 +0 -0
  66. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 +0 -0
  67. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 +0 -0
  68. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 +0 -0
  69. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 +0 -0
  70. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 +0 -0
  71. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 +0 -0
  72. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 +0 -0
  73. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 +0 -0
  74. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 +0 -0
  75. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 +0 -0
  76. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 +0 -0
  77. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 +0 -0
  78. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 +0 -0
  79. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 +0 -0
  80. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 +0 -0
  81. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 +0 -0
  82. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 +0 -0
  83. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 +0 -0
  84. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 +0 -0
  85. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 +0 -0
  86. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 +0 -0
  87. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 +0 -0
  88. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 +0 -0
  89. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 +0 -0
  90. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 +0 -0
  91. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 +0 -0
  92. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 +0 -0
  93. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 +0 -0
  94. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 +0 -0
  95. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/fonts.css +0 -0
  96. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/stylesheets/readme.txt +0 -0
  97. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/docs/yarr.md +0 -0
  98. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/mkdocs.yml +0 -0
  99. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/__init__.py +0 -0
  100. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/chip_config_api.py +0 -0
  101. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/__init__.py +0 -0
  102. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/__main__.py +0 -0
  103. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/assign_tag.py +0 -0
  104. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/download_component.py +0 -0
  105. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/fetch_reference_ivs.py +0 -0
  106. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/generate_yarr_config.py +0 -0
  107. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/get_bom_info.py +0 -0
  108. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/get_vfd_info.py +0 -0
  109. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/influxdbtool_retrieve.py +0 -0
  110. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/localdbtool_retrieve.py +0 -0
  111. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/main.py +0 -0
  112. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/pull_component.py +0 -0
  113. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/recycle_analysis.py +0 -0
  114. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/recycle_esummary.py +0 -0
  115. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/register_component.py +0 -0
  116. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/review_component.py +0 -0
  117. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/sync_component_stages.py +0 -0
  118. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/upload_measurement.py +0 -0
  119. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/cli/utils.py +0 -0
  120. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/core.py +0 -0
  121. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/data/YARR/chip_template.json +0 -0
  122. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/data/componentConfigs.json +0 -0
  123. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/__init__.py +0 -0
  124. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/local.py +0 -0
  125. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/prod.py +0 -0
  126. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/show_qc_status.py +0 -0
  127. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/show_test.py +0 -0
  128. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/db/upload_test.py +0 -0
  129. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/exceptions.py +0 -0
  130. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/iv/localdb.py +0 -0
  131. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/iv/proddb.py +0 -0
  132. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/models.py +0 -0
  133. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/recycle.py +0 -0
  134. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/review/__init__.py +0 -0
  135. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/review/checks.py +0 -0
  136. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/review/helpers.py +0 -0
  137. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/sync_component_stages/__init__.py +0 -0
  138. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/typing_compat.py +0 -0
  139. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/README.md +0 -0
  140. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/__init__.py +0 -0
  141. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/common.py +0 -0
  142. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/configs/influxdb_connectivity.json +0 -0
  143. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/db_logging.py +0 -0
  144. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/direct.py +0 -0
  145. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/indirect.py +0 -0
  146. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/localdb.py +0 -0
  147. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/login_mongodb.sh +0 -0
  148. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/database.json +0 -0
  149. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/dcs.dat +0 -0
  150. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/dcs_info.json +0 -0
  151. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/register_component_fei4b.json +0 -0
  152. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/register_component_rd53a.json +0 -0
  153. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/site.json +0 -0
  154. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/default/user.json +0 -0
  155. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/requirements-pip.txt +0 -0
  156. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setting/requirements-yum.txt +0 -0
  157. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/src/module_qc_database_tools/yarr/setup_db.sh +0 -0
  158. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/tests/test_cli.py +0 -0
  159. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/tests/test_config_api.py +0 -0
  160. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/tests/test_package.py +0 -0
  161. {module_qc_database_tools-2.9.0 → module_qc_database_tools-2.10.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,7 @@
1
1
  ci:
2
2
  autoupdate_commit_msg: "chore: update pre-commit hooks"
3
3
  autofix_commit_msg: "style: pre-commit fixes"
4
+ autoupdate_schedule: "monthly"
4
5
 
5
6
  exclude: |
6
7
  (?x)^(
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "description": " general python tool for interfacing with databases during module QC tests for the ATLAS ITk project",
3
3
  "license": "MIT",
4
- "title": "atlas-itk-pixel-modules/mqdbt: v2.9.0",
5
- "version": "v2.9.0",
4
+ "title": "atlas-itk-pixel-modules/mqdbt: v2.10.0",
5
+ "version": "v2.10.0",
6
6
  "upload_type": "software",
7
7
  "creators": [
8
8
  {
@@ -80,7 +80,7 @@
80
80
  "related_identifiers": [
81
81
  {
82
82
  "scheme": "url",
83
- "identifier": "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools/-/tree/v2.9.0",
83
+ "identifier": "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools/-/tree/v2.10.0",
84
84
  "relation": "isSupplementTo"
85
85
  }
86
86
  ]
@@ -54,6 +54,6 @@ keywords:
54
54
  license:
55
55
  - mit
56
56
  message: If you use this software, please cite it using the metadata from this file.
57
- title: 'atlas-itk-pixel-modules/mqdbt: v2.9.0'
57
+ title: 'atlas-itk-pixel-modules/mqdbt: v2.10.0'
58
58
  type: software
59
- version: v2.9.0
59
+ version: v2.10.0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: module-qc-database-tools
3
- Version: 2.9.0
3
+ Version: 2.10.0
4
4
  Summary: Python wrapper to interface with LocalDB and Production DB for common tasks for pixel modules.
5
5
  Project-URL: Homepage, https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools
6
6
  Project-URL: Bug Tracker, https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools/issues
7
7
  Project-URL: Source, https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools
8
- Project-URL: Documentation, https://atlas-itk-pixel-mqdbt.docs.cern.ch/2.9/
8
+ Project-URL: Documentation, https://atlas-itk-pixel-mqdbt.docs.cern.ch/v2.10/
9
9
  Author-email: Jay Chan <jay.chan@cern.ch>
10
10
  Maintainer-email: Giordon Stark <kratsg@gmail.com>, Elisabetta Pianori <elisabetta.pianori@cern.ch>, Lingxin Meng <lingxin.meng@cern.ch>
11
11
  License: Copyright (c) 2022 ATLAS ITk Pixel Modules
@@ -50,7 +50,7 @@ Requires-Dist: itkdb>=0.6.17
50
50
  Requires-Dist: itksn>=0.4.2
51
51
  Requires-Dist: jsbeautifier
52
52
  Requires-Dist: jsondiff
53
- Requires-Dist: module-qc-data-tools>=1.4.0
53
+ Requires-Dist: module-qc-data-tools>=1.5.0
54
54
  Requires-Dist: packaging
55
55
  Requires-Dist: pandas
56
56
  Requires-Dist: pyarrow
@@ -61,7 +61,7 @@ Requires-Dist: typing-extensions>=4.0; python_version < '3.10'
61
61
  Requires-Dist: urllib3<2,>=1.26.20; 'el7.x86_64' in platform_release
62
62
  Description-Content-Type: text/markdown
63
63
 
64
- # Module QC Database Tools v2.9.0
64
+ # Module QC Database Tools v2.10.0
65
65
 
66
66
  The package to regisiter ITkPixV1.1 modules, and generate YARR configs from ITk
67
67
  production database using `itkdb` API.
@@ -1,4 +1,4 @@
1
- # Module QC Database Tools v2.9.0
1
+ # Module QC Database Tools v2.10.0
2
2
 
3
3
  The package to regisiter ITkPixV1.1 modules, and generate YARR configs from ITk
4
4
  production database using `itkdb` API.
@@ -12,8 +12,20 @@ and this project adheres to
12
12
 
13
13
  **_Changed:_**
14
14
 
15
+ - increase mqdt version to v1.5.0 and use centralised cold/warm stage lists
16
+ (!148)
17
+ - update `run-full-qc` (!146)
18
+ - use typer everywhere for better self-documentation, remove argparse
19
+ - only use controller config provided by hw config, remove the `-r` option
20
+ - get LDB config from hw config
21
+ - consistent long options using double-dash
22
+
15
23
  **_Added:_**
16
24
 
25
+ - extend `fetch-reference-iv` to HV groups (!151)
26
+ - add an option `-c` in `ls` so that it can list the current location of
27
+ components (!149)
28
+
17
29
  **_Fixed:_**
18
30
 
19
31
  ## [2.9.0](https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools/-/tags/v2.9.0) - 2025-10-29 ## {: #mqdbt-v2.9.0 }
@@ -90,7 +90,7 @@ package.
90
90
  $ python -m venv venv
91
91
  $ source venv/bin/activate
92
92
  $ python -m pip install -U pip
93
- $ python -m pip install -U pip module-qc-database-tools==2.9.0
93
+ $ python -m pip install -U pip module-qc-database-tools==2.10.0
94
94
  ```
95
95
 
96
96
  ### via uv
@@ -99,7 +99,7 @@ $ python -m pip install -U pip module-qc-database-tools==2.9.0
99
99
  $ python -m venv venv
100
100
  $ source venv/bin/activate
101
101
  $ python -m pip install uv
102
- $ uv pip install module-qc-database-tools==2.9.0
102
+ $ uv pip install module-qc-database-tools==2.10.0
103
103
  ```
104
104
 
105
105
  # Usage
@@ -35,7 +35,7 @@ dependencies = [
35
35
  "arrow",
36
36
  "packaging",
37
37
  "typing_extensions >=4.0; python_version<'3.10'",
38
- "module_qc_data_tools>=1.4.0",
38
+ "module_qc_data_tools>=1.5.0",
39
39
  ]
40
40
  classifiers = [
41
41
  "License :: OSI Approved :: MIT License",
@@ -60,7 +60,7 @@ classifiers = [
60
60
  Homepage = "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools"
61
61
  "Bug Tracker" = "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools/issues"
62
62
  Source = "https://gitlab.cern.ch/atlas-itk/pixel/module/module-qc-database-tools"
63
- "Documentation" = "https://atlas-itk-pixel-mqdbt.docs.cern.ch/2.9/"
63
+ "Documentation" = "https://atlas-itk-pixel-mqdbt.docs.cern.ch/v2.10/"
64
64
 
65
65
  [project.scripts]
66
66
  module-qc-database-tools = "module_qc_database_tools.cli:app"
@@ -70,7 +70,11 @@ registerComponent = "module_qc_database_tools.cli.register_component:app"
70
70
  influxdbtool-retrieve = "module_qc_database_tools.cli.influxdbtool_retrieve:main"
71
71
  localdbtool-retrieve = "module_qc_database_tools.cli.localdbtool_retrieve:main"
72
72
  localdbtool-upload = "module_qc_database_tools.cli.localdbtool_upload:main"
73
- run-full-qc = "module_qc_database_tools.cli.run_full_qc:main"
73
+ run-full-qc = "module_qc_database_tools.cli.run_full_qc:app"
74
+
75
+ [dependency-groups]
76
+ dev = [ { include-group = "test" } ]
77
+ test = [ "pytest" ]
74
78
 
75
79
  [tool.hatch.version]
76
80
  source = "vcs"
@@ -247,9 +251,9 @@ filterwarnings = [
247
251
  "error",
248
252
  'ignore:unclosed file:ResourceWarning', # itkdb
249
253
  ]
250
-
251
254
  testpaths = ["tests"]
252
255
  log_cli_level = "INFO"
256
+ log_level = "INFO"
253
257
 
254
258
  [tool.repo-review]
255
259
  ignore = [
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '2.9.0'
32
- __version_tuple__ = version_tuple = (2, 9, 0)
31
+ __version__ = version = '2.10.0'
32
+ __version_tuple__ = version_tuple = (2, 10, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -206,14 +206,14 @@ OPTIONS["serial_number"]: str = typer.Option(
206
206
  ...,
207
207
  "--sn",
208
208
  "--serial-number",
209
- help="Module serial number",
209
+ help="Component serial number",
210
210
  callback=sn_callback,
211
211
  )
212
212
  OPTIONS["serial_numbers"]: list[str] = typer.Option(
213
213
  ...,
214
214
  "--sns",
215
215
  "--serial-numbers",
216
- help="Module serial numbers. Example for list of SNs: --sns SN1 --sns SN2 --sns SN3....",
216
+ help="Component serial numbers. Example for list of SNs: --sns SN1 --sns SN2 --sns SN3....",
217
217
  callback=sns_callback,
218
218
  )
219
219
  OPTIONS["stage"]: str = typer.Option(..., "-stage", "--stage", help="Stage to use")
@@ -305,7 +305,7 @@ OPTIONS_serial_number = Annotated[
305
305
  typer.Option(
306
306
  "--sn",
307
307
  "--serial-number",
308
- help="Module serial number",
308
+ help="Component serial number",
309
309
  callback=sn_callback,
310
310
  ),
311
311
  ]
@@ -19,7 +19,9 @@ from datetime import datetime, timezone
19
19
  from pathlib import Path
20
20
 
21
21
  from module_qc_data_tools.utils import (
22
+ cold_stages,
22
23
  get_chip_type_from_config,
24
+ warm_stages,
23
25
  )
24
26
 
25
27
  from module_qc_database_tools import exceptions, yarr
@@ -513,14 +515,8 @@ def writeScan(self, i_dir):
513
515
  stage = conn_json.get("stage")
514
516
 
515
517
  branch = "default"
516
- warm_list = [
517
- "WARM",
518
- "PARYLENE_UNMASKING",
519
- "WIREBOND_PROTECTION",
520
- "THERMAL_CYCLES",
521
- "LONG_TERM_STABILITY_TEST",
522
- ]
523
- cold_list = ["COLD"]
518
+ warm_list = warm_stages
519
+ cold_list = cold_stages
524
520
 
525
521
  if any(phrase in stage for phrase in warm_list):
526
522
  branch = "warm"
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import argparse
4
3
  import json
5
4
  import logging
6
5
  import os
@@ -9,6 +8,7 @@ import subprocess
9
8
  import sys
10
9
  from datetime import datetime
11
10
  from pathlib import Path
11
+ from typing import Optional
12
12
 
13
13
  # from typing import Optional
14
14
  import itksn
@@ -19,7 +19,10 @@ from module_qc_data_tools.utils import (
19
19
  get_layer_from_sn,
20
20
  )
21
21
 
22
- # app = typer.Typer(context_settings=CONTEXT_SETTINGS)
22
+ from module_qc_database_tools.cli.globals import CONTEXT_SETTINGS, OPTIONS, Protocol
23
+ from module_qc_database_tools.cli.utils import load_localdb_config_from_hw
24
+
25
+ app = typer.Typer(context_settings=CONTEXT_SETTINGS)
23
26
 
24
27
  # Logging
25
28
  logger = logging.getLogger(__name__)
@@ -38,20 +41,23 @@ class FullQCConf:
38
41
  ## commandline
39
42
  self.BASEDIR = Path.home()
40
43
  self.MODULESN = ""
41
- self.LDBHOST = "localhost"
42
- self.LDBPORT = "5000"
43
- self.PROTOCOL = "http"
44
+ ## required
44
45
  self.CONNECTIVITY = (
45
46
  self.BASEDIR / self.MODULESN / f"{self.MODULESN}_{self.TYPE}.json"
46
47
  )
47
- self.CONTROLLER = "configs/controller/specCfg-rd53b-16x1.json"
48
48
  self.CONFIG = self.BASEDIR / "configs" / "new_hw_config.json"
49
+ ## optional
49
50
  self.MEASCONFIG = ""
50
51
  self.OUTPUT = self.BASEDIR / self.MODULESN
52
+ self.LDBHOST = "localhost"
53
+ self.LDBPORT = 5000
54
+ self.PROTOCOL = "http"
55
+ self.TAGS = []
51
56
 
52
57
  ## fixed
53
58
  ## will be overwritten from HW config
54
59
  self.YARR = self.BASEDIR / "Yarr"
60
+ self.CONTROLLER = Path("configs/controller/specCfg-rd53b-16x1.json")
55
61
  ## will be overwritten from module connectivity file path
56
62
  self.MODULEDIR = self.BASEDIR / self.MODULESN
57
63
  ## will be overwritten depending on module SN
@@ -86,7 +92,7 @@ class FullQCConf:
86
92
  str(self.OUTPUT),
87
93
  ]
88
94
  if self.MEASCONFIG:
89
- cmd.extend(["-cm", self.MEASCONFIG])
95
+ cmd.extend(["--cm", self.MEASCONFIG])
90
96
 
91
97
  subprocess.run(cmd, check=True)
92
98
 
@@ -113,21 +119,24 @@ class FullQCConf:
113
119
 
114
120
  # Upload measurements and generate analysis results
115
121
  ana_results = ana_dir / f"{self.MODULESN}.json"
122
+ cmd = [
123
+ "mqdbt",
124
+ "upload-measurement",
125
+ "--path",
126
+ str(last_meas_path),
127
+ "--host",
128
+ self.LDBHOST,
129
+ "--port",
130
+ str(self.LDBPORT),
131
+ "--protocol",
132
+ self.PROTOCOL,
133
+ "--out",
134
+ str(ana_results),
135
+ ]
136
+ tags = [f"--tag {item}" for item in self.TAGS]
137
+ cmd.extend(tags)
116
138
  subprocess.run(
117
- [
118
- "mqdbt",
119
- "upload-measurement",
120
- "--path",
121
- str(last_meas_path),
122
- "--host",
123
- self.LDBHOST,
124
- "--port",
125
- self.LDBPORT,
126
- "--protocol",
127
- self.PROTOCOL,
128
- "--out",
129
- str(ana_results),
130
- ],
139
+ cmd,
131
140
  check=True,
132
141
  )
133
142
 
@@ -164,74 +173,6 @@ class FullQCConf:
164
173
 
165
174
  return 0
166
175
 
167
- def get_args(self):
168
- """
169
- Function using argparse to parse commandline arguments.
170
- """
171
- parser = argparse.ArgumentParser()
172
- parser.add_argument(
173
- "-b", "--basedir", type=Path, default=self.BASEDIR, help="Base directory."
174
- )
175
- parser.add_argument("-sn", "--modulesn", type=str, help="Module serial number.")
176
- parser.add_argument(
177
- "-m",
178
- "--module-connectivity",
179
- default=self.CONNECTIVITY,
180
- type=Path,
181
- help="Path to module connectivity file.",
182
- )
183
- parser.add_argument(
184
- "-r",
185
- "--controller",
186
- type=Path,
187
- default=self.CONTROLLER,
188
- help="Path to module connectivity file.",
189
- )
190
- parser.add_argument(
191
- "-c",
192
- "--config",
193
- type=Path,
194
- required=True,
195
- help="Path to hardware config file",
196
- )
197
- parser.add_argument(
198
- "-cm", "--measconfig", type=Path, help="Path to measurement config file"
199
- )
200
- parser.add_argument(
201
- "-o",
202
- "--output",
203
- type=Path,
204
- default=self.OUTPUT,
205
- help="Path to output directory",
206
- )
207
- parser.add_argument("--port", type=str, default=self.LDBPORT, help="LDB port")
208
- parser.add_argument("--host", type=str, default=self.LDBHOST, help="LDB host")
209
- parser.add_argument(
210
- "--protocol",
211
- type=str,
212
- default=self.PROTOCOL,
213
- help="Protocol - http or https.",
214
- )
215
-
216
- tests = parser.add_argument_group("tests")
217
- tests.add_argument(
218
- "-iv",
219
- action="store_true",
220
- help="Run sensor leakage current vs bias voltage.",
221
- )
222
- tests.add_argument(
223
- "-cal", action="store_true", help="Run CALibration measurements."
224
- )
225
- tests.add_argument("-mht", action="store_true", help="Run Minimum Health Test.")
226
- tests.add_argument("-tun", action="store_true", help="Run TUNing.")
227
- tests.add_argument(
228
- "-pfa", action="store_true", help="Run Pixel Failure Analysis."
229
- )
230
- args = parser.parse_args()
231
-
232
- logger.info(args)
233
- return parser, args
234
-
235
176
  def run_scan(self, scan_name, scan_output, tag):
236
177
  """
237
178
  Function to concatenate commands and run YARR scan
@@ -411,27 +352,90 @@ class FullQCConf:
411
352
  return 0
412
353
 
413
354
 
355
+ @app.command()
414
356
  def main(
415
357
  # MODULESN: Optional[str] = OPTIONS["serial_number"],
416
- # OUTPUT: Optional[Path] = typer.Option(
417
- # None,
418
- # "-o",
419
- # "--outdir",
420
- # help="Path to output directory.",
421
- # exists=False,
422
- # writable=True,
423
- # ),
424
- # LDBHOST: str = OPTIONS["host"],
425
- # LDBPORT: int = OPTIONS["port"],
426
- # PROTOCOL: str = OPTIONS["protocol"],
358
+ CONNECTIVITY: Path = typer.Option(
359
+ ...,
360
+ "-m",
361
+ "--module-connectivity",
362
+ help="path to the module connectivity. Used also to identify the module SN, and to set the default output directory",
363
+ exists=True,
364
+ file_okay=True,
365
+ readable=True,
366
+ writable=True,
367
+ resolve_path=True,
368
+ ),
369
+ CONFIG: Path = typer.Option(
370
+ ...,
371
+ "-c",
372
+ "--config",
373
+ help="Hardware Config file path",
374
+ exists=True,
375
+ file_okay=True,
376
+ readable=True,
377
+ resolve_path=True,
378
+ is_eager=True, # must be eagerly evaluated first so we can check it in config_callback()
379
+ ),
380
+ MODULESN: Optional[str] = typer.Option( # noqa: UP045
381
+ None,
382
+ "--sn",
383
+ "--serial-number",
384
+ help="Module serial number",
385
+ ),
386
+ BASEDIR: Optional[Path] = OPTIONS["base_dir"], # noqa: UP045
387
+ OUTPUT: Optional[Path] = typer.Option( # noqa: UP045
388
+ None,
389
+ "-o",
390
+ "--output",
391
+ help="Path to output directory.",
392
+ exists=False,
393
+ writable=True,
394
+ ),
395
+ MEASCONFIG: Optional[Path] = typer.Option( # noqa: UP045
396
+ None,
397
+ "--cm",
398
+ "--measconfig",
399
+ help="Path to measurement config file.",
400
+ exists=True,
401
+ file_okay=True,
402
+ readable=True,
403
+ ),
404
+ LDBHOST: str = OPTIONS["host"],
405
+ LDBPORT: int = OPTIONS["port"],
406
+ PROTOCOL: Protocol = OPTIONS["protocol"],
407
+ TAGS: list[str] = OPTIONS["tags"],
408
+ iv: bool = typer.Option(
409
+ False,
410
+ "--iv",
411
+ help="Measure sensor leakage current vs bias voltage.",
412
+ ),
413
+ cal: bool = typer.Option(
414
+ False,
415
+ "--cal",
416
+ help="Run calibration measurements, e.g. ADC calibration, analog readback, SLDO, Vcal calibration and injection capacitance.",
417
+ ),
418
+ mht: bool = typer.Option(
419
+ False,
420
+ "--mht",
421
+ help="Run scans required for Minimum Health Test.",
422
+ ),
423
+ tun: bool = typer.Option(
424
+ False,
425
+ "--tun",
426
+ help="Run scans required for Tuning.",
427
+ ),
428
+ pfa: bool = typer.Option(
429
+ False,
430
+ "--pfa",
431
+ help="Run scans required for Pixel Failure Analysis.",
432
+ ),
427
433
  # dry_run: bool = OPTIONS["dry_run"],
428
- # CONTROLLER: Optional[Path] = OPTIONS["controller_config"],
429
- # CONNECTIVITY: Path = OPTIONS["module_connectivity"],
430
- # CONFIG: Path = OPTIONS["config_hw"],
431
434
  # _verbosity: LogLevel = OPTIONS["verbosity"]
432
435
  ):
433
436
  """
434
- Main function to execute all QC scans.
437
+ Execute all QC scans if no test is specified.
438
+ If any tests are specified, only those are run.
435
439
 
436
440
  For instructions in case of core column issues, see https://codimd.web.cern.ch/s/iTKWoRkuP .
437
441
 
@@ -447,69 +451,64 @@ def main(
447
451
 
448
452
  qc = FullQCConf()
449
453
 
450
- parser, args = qc.get_args()
451
-
452
- if args.module_connectivity:
453
- qc.CONNECTIVITY = args.module_connectivity
454
-
455
- if args.config:
456
- qc.CONFIG = args.config
457
- with Path.open(qc.CONFIG, encoding="utf-8") as _hwconf:
458
- qc.YARR = json.load(_hwconf)["yarr"]["run_dir"]
459
-
460
- check_existence = [qc.CONNECTIVITY, qc.CONFIG]
461
-
462
- for item in check_existence:
463
- if not Path.exists(item):
464
- logger.error("Path does not exist: %s!", item)
465
- sys.exit(2)
466
-
467
- if args.modulesn:
468
- qc.MODULESN = args.modulesn
469
-
470
- if args.basedir:
471
- qc.BASEDIR = args.basedir
472
-
473
- if args.controller:
474
- qc.CONTROLLER = args.controller
475
-
476
- if args.output:
477
- qc.OUTPUT = args.output
478
-
479
- if args.port:
480
- qc.LDBPORT = args.port
481
-
482
- if args.host:
483
- qc.LDBHOST = args.host
484
-
485
- if args.protocol:
486
- qc.PROTOCOL = args.protocol
454
+ qc.CONNECTIVITY = CONNECTIVITY or qc.CONNECTIVITY
455
+ qc.CONFIG = CONFIG or qc.CONFIG
456
+ with Path.open(qc.CONFIG, encoding="utf-8") as _hwconf:
457
+ config_hw = json.load(_hwconf)
458
+ qc.YARR = Path(config_hw["yarr"]["run_dir"])
459
+ qc.CONTROLLER = Path(config_hw["yarr"]["controller"])
460
+
461
+ qc.MODULESN = MODULESN
462
+ qc.BASEDIR = BASEDIR or qc.BASEDIR
463
+ qc.MEASCONFIG = MEASCONFIG
464
+ qc.OUTPUT = OUTPUT or qc.OUTPUT
465
+
466
+ # Load hardware config and override parameters if provided
467
+ hw_config_data = load_localdb_config_from_hw(qc.CONFIG)
468
+ host = hw_config_data.get("host", LDBHOST)
469
+ port = hw_config_data.get("port", LDBPORT)
470
+ protocol = Protocol(hw_config_data.get("protocol", PROTOCOL.value))
471
+ # Merge tags from config with CLI tags
472
+ config_tags = hw_config_data.get("tags", [])
473
+
474
+ qc.LDBPORT = port or LDBPORT
475
+ qc.LDBHOST = host or LDBHOST
476
+ qc.PROTOCOL = protocol or PROTOCOL.value
477
+ qc.TAGS = list(set(TAGS + config_tags))
487
478
 
488
479
  if not qc.MODULESN:
489
480
  qc.MODULESN = (
490
481
  str(qc.CONNECTIVITY).rsplit("/", maxsplit=1)[-1].split("_", maxsplit=1)[0]
491
482
  )
492
-
493
483
  qc.CHIPTYPE = get_chip_type_from_serial_number(qc.MODULESN).lower()
494
484
  qc.TYPE = get_config_type_from_connectivity_path(qc.CONNECTIVITY)
495
485
  qc.LPTYPE = "_".join([qc.TYPE.split("_", maxsplit=1)[0], "LP"])
496
486
  qc.MODULEDIR = qc.CONNECTIVITY.parent
497
487
 
498
- _tests = [group for group in parser._action_groups if "tests" in group.title] # pylint: disable=protected-access
499
- _tests = _tests[0] ## type <class 'argparse._ArgumentGroup'>
500
- logger.debug(_tests)
488
+ _tests = []
489
+ if iv:
490
+ _tests.append("iv")
491
+ if cal:
492
+ _tests.append("cal")
493
+ if mht:
494
+ _tests.append("mht")
495
+ if tun:
496
+ _tests.append("tun")
497
+ if pfa:
498
+ _tests.append("pfa")
501
499
 
502
500
  logger.info("Hardware config: %s", qc.CONFIG)
503
501
  logger.info("Module connectivity: %s", qc.CONNECTIVITY)
504
502
  logger.info("Output directory: %s", qc.OUTPUT)
505
-
503
+ logger.debug(locals())
506
504
  try:
507
505
  _cmd = ["analysis-check-kshunt-in-chip-config", "-c", qc.MODULEDIR]
508
506
  subprocess.run(_cmd, check=True)
509
507
  except Exception as e: # pylint: disable=broad-exception-caught
510
508
  logger.warning("!!! Not able to update k-factors in the chip config %s !!!", e)
511
509
 
512
- if not any(getattr(args, item.dest) for item in _tests._group_actions): # pylint: disable=protected-access
510
+ ## if no test specified, then run full QC
511
+ if not any([iv, cal, mht, tun, pfa]):
513
512
  logger.info("No single tests specified, running full QC.")
514
513
  ## if not digital, run measure(IV)
515
514
  info = itksn.parse(qc.MODULESN.encode("utf-8"))
@@ -533,12 +532,9 @@ def main(
533
532
  qc.pfa()
534
533
  logger.info("Script completed successfully.")
535
534
  else:
536
- for item in _tests._group_actions: # pylint: disable=protected-access
537
- ## e.g. _StoreTrueAction(option_strings=['-iv'], dest='iv', nargs=0, const=True, default=False, type=None, choices=None, required=False, help='Run sensor leakage current vs bias voltage.', metavar=None)
538
- logger.debug(item)
539
- logger.debug(type(item))
540
-
541
- if getattr(args, item.dest):
535
+ for _index, item in enumerate(_tests):
536
+ # Run eye diagram only if the test is not IV
537
+ if item != "iv":
542
538
  # Run eye diagram
543
539
  subprocess.run(
544
540
  [
@@ -551,8 +547,16 @@ def main(
551
547
  cwd=qc.YARR,
552
548
  check=True,
553
549
  )
554
- exec(f"qc.{item.dest}()") # pylint: disable=exec-used
550
+ else:
551
+ # Skip IV if digital module
552
+ info = itksn.parse(qc.MODULESN.encode("utf-8"))
553
+ if "digital" in info.component_code.title().lower():
554
+ logger.warning(
555
+ "%s is a digital module, will not run IV.", qc.MODULESN
556
+ )
557
+ continue
558
+ exec(f"qc.{item}()") # pylint: disable=exec-used
555
559
 
556
560
 
557
561
  if __name__ == "__main__":
558
- main()
562
+ typer.run(main)