argus-alm 0.15.3__tar.gz → 0.15.5__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 (405) hide show
  1. {argus_alm-0.15.3 → argus_alm-0.15.5}/.gitignore +1 -0
  2. {argus_alm-0.15.3 → argus_alm-0.15.5}/PKG-INFO +4 -4
  3. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/_version.py +2 -2
  4. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/base.py +14 -8
  5. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/generic/cli.py +3 -2
  6. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/generic/client.py +2 -1
  7. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/sct/client.py +2 -1
  8. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/common/enums.py +16 -0
  9. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/deployment/argusai_event_similarity_processor.service +1 -1
  10. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/event_similarity_processor.py +43 -16
  11. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/pyproject.toml +1 -0
  12. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/utils/event_message_sanitizer.py +33 -0
  13. argus_alm-0.15.5/argusAI/uv.lock +1636 -0
  14. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_alm.egg-info/PKG-INFO +4 -4
  15. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_alm.egg-info/SOURCES.txt +18 -0
  16. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_alm.egg-info/requires.txt +3 -3
  17. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_web.example.yaml +10 -0
  18. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/TestStatus.js +98 -5
  19. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/ViewTypes.js +22 -1
  20. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Github/GithubIssue.svelte +24 -1
  21. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Github/GithubIssues.svelte +4 -4
  22. argus_alm-0.15.5/frontend/Profile/PlannedJob.svelte +56 -0
  23. argus_alm-0.15.5/frontend/Profile/PlannedJobs.svelte +100 -0
  24. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/ProfileJobs.svelte +12 -3
  25. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/AssigneeFilter.svelte +2 -1
  26. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboard.svelte +238 -18
  27. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +2 -3
  28. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +11 -4
  29. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardTest.svelte +2 -3
  30. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +7 -2
  31. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Components/ResultTable.svelte +15 -9
  32. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/EventsTab.svelte +186 -6
  33. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Generic/GenericTestRun.svelte +115 -80
  34. argus_alm-0.15.5/frontend/TestRun/Generic/Subtest.js +17 -0
  35. argus_alm-0.15.5/frontend/TestRun/IssueTab.svelte +74 -0
  36. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/IssueTemplate.svelte +127 -2
  37. argus_alm-0.15.5/frontend/TestRun/Pytest/DtestTab.svelte +22 -0
  38. argus_alm-0.15.5/frontend/TestRun/Pytest/PytestItem.svelte +103 -0
  39. argus_alm-0.15.5/frontend/TestRun/Pytest/PytestRun.svelte +164 -0
  40. argus_alm-0.15.5/frontend/TestRun/Pytest/PytestTab.svelte +22 -0
  41. argus_alm-0.15.5/frontend/TestRun/Pytest/index.js +7 -0
  42. argus_alm-0.15.5/frontend/TestRun/Pytest/types.ts +39 -0
  43. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ResourcesInfo.svelte +21 -0
  44. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ResultsTab.svelte +15 -0
  45. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/StructuredEvent.svelte +83 -9
  46. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/TestRun.svelte +163 -54
  47. argus_alm-0.15.5/frontend/Utils/IntersectionObserver.svelte +58 -0
  48. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/ViewDashboard.svelte +1 -3
  49. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +51 -0
  50. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +30 -0
  51. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +12 -0
  52. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +22 -0
  53. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +138 -0
  54. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +84 -0
  55. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +424 -0
  56. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +23 -4
  57. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/view-dashboard.js +2 -0
  58. {argus_alm-0.15.3 → argus_alm-0.15.5}/package.json +2 -1
  59. {argus_alm-0.15.3 → argus_alm-0.15.5}/pyproject.toml +3 -3
  60. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/pytest_argus_reporter.py +1 -1
  61. argus_alm-0.15.5/scripts/migration/migration_2025-07-18.py +63 -0
  62. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/partials/nav_bar.html.j2 +6 -1
  63. {argus_alm-0.15.3 → argus_alm-0.15.5}/uv.lock +128 -120
  64. argus_alm-0.15.3/argusAI/uv.lock +0 -1412
  65. argus_alm-0.15.3/frontend/TestRun/IssueTab.svelte +0 -22
  66. {argus_alm-0.15.3 → argus_alm-0.15.5}/.dockerignore +0 -0
  67. {argus_alm-0.15.3 → argus_alm-0.15.5}/.envrc +0 -0
  68. {argus_alm-0.15.3 → argus_alm-0.15.5}/.eslintrc.js +0 -0
  69. {argus_alm-0.15.3 → argus_alm-0.15.5}/.github/workflows/.gitkeep +0 -0
  70. {argus_alm-0.15.3 → argus_alm-0.15.5}/.github/workflows/lint.yml +0 -0
  71. {argus_alm-0.15.3 → argus_alm-0.15.5}/.github/workflows/release.yml +0 -0
  72. {argus_alm-0.15.3 → argus_alm-0.15.5}/.github/workflows/test.yml +0 -0
  73. {argus_alm-0.15.3 → argus_alm-0.15.5}/.pre-commit-config.yaml +0 -0
  74. {argus_alm-0.15.3 → argus_alm-0.15.5}/.prettierrc.js +0 -0
  75. {argus_alm-0.15.3 → argus_alm-0.15.5}/Dockerfile +0 -0
  76. {argus_alm-0.15.3 → argus_alm-0.15.5}/LICENSE +0 -0
  77. {argus_alm-0.15.3 → argus_alm-0.15.5}/MANIFEST.in +0 -0
  78. {argus_alm-0.15.3 → argus_alm-0.15.5}/README.md +0 -0
  79. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/__init__.py +0 -0
  80. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/__init__.py +0 -0
  81. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/driver_matrix_tests/cli.py +0 -0
  82. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/driver_matrix_tests/client.py +0 -0
  83. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/generic_result.py +0 -0
  84. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/sct/types.py +0 -0
  85. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/client/sirenada/client.py +0 -0
  86. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/common/__init__.py +0 -0
  87. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/common/sct_types.py +0 -0
  88. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus/common/sirenada_types.py +0 -0
  89. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus.yaml +0 -0
  90. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/README.md +0 -0
  91. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/logs/.gitignore +0 -0
  92. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/utils/__init__.py +0 -0
  93. {argus_alm-0.15.3 → argus_alm-0.15.5}/argusAI/utils/scylla_connection.py +0 -0
  94. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_alm.egg-info/dependency_links.txt +0 -0
  95. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_alm.egg-info/entry_points.txt +0 -0
  96. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_alm.egg-info/top_level.txt +0 -0
  97. {argus_alm-0.15.3 → argus_alm-0.15.5}/argus_backend.py +0 -0
  98. {argus_alm-0.15.3 → argus_alm-0.15.5}/commitlint.config.js +0 -0
  99. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/.gitignore +0 -0
  100. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
  101. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/alpha-config/machine_image_configured +0 -0
  102. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/alpha-config/scylla.yaml +0 -0
  103. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/alpha-data/.gitignore +0 -0
  104. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/docker-compose.yaml +0 -0
  105. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/export_data.py +0 -0
  106. {argus_alm-0.15.3 → argus_alm-0.15.5}/dev-db/import_data.py +0 -0
  107. {argus_alm-0.15.3 → argus_alm-0.15.5}/docker/config/nginx-docker.conf +0 -0
  108. {argus_alm-0.15.3 → argus_alm-0.15.5}/docker/config/supervisord.conf +0 -0
  109. {argus_alm-0.15.3 → argus_alm-0.15.5}/docker-entrypoint.sh +0 -0
  110. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/api_usage.md +0 -0
  111. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/argus_status_page.md +0 -0
  112. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/argus_status_page_diagram.jpg +0 -0
  113. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/config/argus.nginx.conf +0 -0
  114. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/config/argus.service +0 -0
  115. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/dev-setup.md +0 -0
  116. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/generic_results.md +0 -0
  117. {argus_alm-0.15.3 → argus_alm-0.15.5}/docs/pypi-guide.md +0 -0
  118. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/AdminPanel.svelte +0 -0
  119. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
  120. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/BatchTestMover.svelte +0 -0
  121. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/GroupCreator.svelte +0 -0
  122. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseCreator.svelte +0 -0
  123. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +0 -0
  124. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseEditor.svelte +0 -0
  125. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManager.svelte +0 -0
  126. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManagerGroup.svelte +0 -0
  127. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManagerTest.svelte +0 -0
  128. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/TestCreator.svelte +0 -0
  129. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/UserManager.svelte +0 -0
  130. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ViewListItem.svelte +0 -0
  131. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ViewSelectItem.svelte +0 -0
  132. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ViewWidget.svelte +0 -0
  133. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/AdminPanel/ViewsManager.svelte +0 -0
  134. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Alert.js +0 -0
  135. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Alerts/AlertMessage.svelte +0 -0
  136. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Alerts/AlertWidget.svelte +0 -0
  137. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/ApiUtils.js +0 -0
  138. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/ArgusNotification.ts +0 -0
  139. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/AssigneeSelector.svelte +0 -0
  140. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/AssigneeUtils.js +0 -0
  141. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/DateUtils.js +0 -0
  142. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/DriverMatrixTypes.ts +0 -0
  143. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/IssueDestinations.js +0 -0
  144. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/JenkinsSettingsHelp.js +0 -0
  145. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/ModalWindow.svelte +0 -0
  146. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/PluginDispatch.js +0 -0
  147. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/PluginNames.js +0 -0
  148. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/RunUtils.js +0 -0
  149. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/SelectUtils.js +0 -0
  150. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/StateManagement.js +0 -0
  151. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/TextUtils.js +0 -0
  152. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/UserTypes.ts +0 -0
  153. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Common/UserUtils.js +0 -0
  154. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Debug/FlashDebugComponent.svelte +0 -0
  155. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Discussion/Comment.svelte +0 -0
  156. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Discussion/CommentEditor.svelte +0 -0
  157. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Discussion/MarkedMentionExtension.js +0 -0
  158. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Discussion/MentionSelector.svelte +0 -0
  159. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Discussion/UserProfile.svelte +0 -0
  160. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Github/GithubIssuesCopyModal.svelte +0 -0
  161. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/JobsList.svelte +0 -0
  162. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/Login.svelte +0 -0
  163. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/Notification.svelte +0 -0
  164. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/NotificationCommentWrapper.svelte +0 -0
  165. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/NotificationCounter.svelte +0 -0
  166. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/NotificationSender.svelte +0 -0
  167. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/NotificationTestRunWrapper.svelte +0 -0
  168. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/NotificationsReader.svelte +0 -0
  169. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/ProfileJob.svelte +0 -0
  170. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/ProfileJobsTab.svelte +0 -0
  171. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/ProfileSchedules.svelte +0 -0
  172. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/User.svelte +0 -0
  173. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/UserSelection.svelte +0 -0
  174. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Profile/ViewUserResolver.svelte +0 -0
  175. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -0
  176. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -0
  177. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseActivity.svelte +0 -0
  178. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +0 -0
  179. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +0 -0
  180. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +0 -0
  181. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +0 -0
  182. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/CommentTableRow.svelte +0 -0
  183. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/DutyPlanner.svelte +0 -0
  184. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/EntityReplacer.svelte +0 -0
  185. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlan.svelte +0 -0
  186. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +0 -0
  187. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +0 -0
  188. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanTable.svelte +0 -0
  189. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanner.svelte +0 -0
  190. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +0 -0
  191. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleaseScheduler.svelte +0 -0
  192. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/Schedule.svelte +0 -0
  193. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/ScheduleTable.svelte +0 -0
  194. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/ReleasePlanner/SearchBar.svelte +0 -0
  195. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stats/ChartStats.svelte +0 -0
  196. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stats/NumberStats.svelte +0 -0
  197. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stats/ProgressBarStats.svelte +0 -0
  198. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stats/ReleaseStats.svelte +0 -0
  199. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stats/StatsFetcher.svelte +0 -0
  200. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stores/AlertStore.js +0 -0
  201. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stores/AssigneeSubscriber.js +0 -0
  202. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
  203. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stores/TestRunsSubscriber.js +0 -0
  204. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stores/UserlistSubscriber.js +0 -0
  205. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Stores/WorkspaceStore.js +0 -0
  206. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamCreateForm.svelte +0 -0
  207. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamDetail.svelte +0 -0
  208. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamList.svelte +0 -0
  209. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamManager.svelte +0 -0
  210. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamMember.svelte +0 -0
  211. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamShort.svelte +0 -0
  212. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Teams/TeamUtils.ts +0 -0
  213. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ActivityTab.svelte +0 -0
  214. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ArtifactRow.svelte +0 -0
  215. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ArtifactTab.svelte +0 -0
  216. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Components/Cell.svelte +0 -0
  217. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Components/Filters.svelte +0 -0
  218. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Components/GraphFilters.svelte +0 -0
  219. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Components/ScreenshotModal.svelte +0 -0
  220. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixBreakdown.svelte +0 -0
  221. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixRunInfo.svelte +0 -0
  222. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestCollection.svelte +0 -0
  223. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestRun.svelte +0 -0
  224. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestSuites.svelte +0 -0
  225. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +0 -0
  226. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/HeartbeatIndicator.svelte +0 -0
  227. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/Build.js +0 -0
  228. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +0 -0
  229. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +0 -0
  230. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +0 -0
  231. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CheckParam.svelte +0 -0
  232. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -0
  233. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneSuccess.svelte +0 -0
  234. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +0 -0
  235. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -0
  236. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -0
  237. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +0 -0
  238. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +0 -0
  239. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -0
  240. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ModalError.svelte +0 -0
  241. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +0 -0
  242. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ParameterEditor.svelte +0 -0
  243. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +0 -0
  244. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/SelectParam.svelte +0 -0
  245. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/StringParam.svelte +0 -0
  246. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/TextParam.svelte +0 -0
  247. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
  248. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/NemesisData.svelte +0 -0
  249. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/NemesisReason.svelte +0 -0
  250. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/NemesisTable.svelte +0 -0
  251. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/PackagesInfo.svelte +0 -0
  252. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/RawEvent.svelte +0 -0
  253. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ResultsGraph.svelte +0 -0
  254. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/ResultsGraphs.svelte +0 -0
  255. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/RunAssigneeSelector.svelte +0 -0
  256. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/RunInvestigationStatusButton.svelte +0 -0
  257. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/RunStatusButton.svelte +0 -0
  258. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +0 -0
  259. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +0 -0
  260. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +0 -0
  261. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +0 -0
  262. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
  263. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Screenshots.svelte +0 -0
  264. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +0 -0
  265. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +0 -0
  266. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +0 -0
  267. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +0 -0
  268. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/TestRunComments.svelte +0 -0
  269. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/TestRunInfo.svelte +0 -0
  270. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/jUnitChart.svelte +0 -0
  271. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/TestRun/jUnitResults.svelte +0 -0
  272. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/ViewSelect.svelte +0 -0
  273. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +0 -0
  274. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +0 -0
  275. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +0 -0
  276. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +0 -0
  277. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/StringValue.svelte +0 -0
  278. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +0 -0
  279. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +0 -0
  280. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGithubIssues.svelte +0 -0
  281. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +0 -0
  282. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +0 -0
  283. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
  284. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +0 -0
  285. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +0 -0
  286. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +0 -0
  287. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +0 -0
  288. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +0 -0
  289. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +0 -0
  290. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +0 -0
  291. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +0 -0
  292. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats.svelte +0 -0
  293. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +0 -0
  294. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +0 -0
  295. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +0 -0
  296. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +0 -0
  297. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewNemesisStats.svelte +0 -0
  298. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewReleaseStats.svelte +0 -0
  299. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewTestDashboard.svelte +0 -0
  300. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
  301. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/AssigneeList.svelte +0 -0
  302. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/JobConfigureModal.svelte +0 -0
  303. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/RunGroup.svelte +0 -0
  304. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/RunRelease.svelte +0 -0
  305. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/Test.svelte +0 -0
  306. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/TestRunDispatcher.svelte +0 -0
  307. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/TestRuns.svelte +0 -0
  308. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsMessage.svelte +0 -0
  309. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsPanel.svelte +0 -0
  310. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsSelector.svelte +0 -0
  311. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/UnknownTest.svelte +0 -0
  312. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/WorkArea/WorkArea.svelte +0 -0
  313. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/admin-panel.js +0 -0
  314. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/argus.css +0 -0
  315. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/argus.js +0 -0
  316. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/duty-planner.js +0 -0
  317. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/flashDebug.js +0 -0
  318. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/font-awesome.css +0 -0
  319. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/font-awesome.js +0 -0
  320. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Bold.ttf +0 -0
  321. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
  322. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Italic.ttf +0 -0
  323. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Regular.ttf +0 -0
  324. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/fonts/OFL.txt +0 -0
  325. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/fonts/noto.css +0 -0
  326. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/login.js +0 -0
  327. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/markdownOptions.js +0 -0
  328. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/notification-counter.js +0 -0
  329. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/plan.js +0 -0
  330. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/profile-jobs.js +0 -0
  331. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/profile-notifications.js +0 -0
  332. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/profile-schedules.js +0 -0
  333. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/release-dashboard.js +0 -0
  334. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/release-page.js +0 -0
  335. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/release-planner.js +0 -0
  336. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/release-scheduler.js +0 -0
  337. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/run-by-plugin.js +0 -0
  338. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/teams.js +0 -0
  339. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/test-run-details.js +0 -0
  340. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/test-runs-breakout.js +0 -0
  341. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/test-runs-standalone.js +0 -0
  342. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/view-user-resolver.js +0 -0
  343. {argus_alm-0.15.3 → argus_alm-0.15.5}/frontend/work-area.js +0 -0
  344. {argus_alm-0.15.3 → argus_alm-0.15.5}/profile/.gitkeep +0 -0
  345. {argus_alm-0.15.3 → argus_alm-0.15.5}/public/argus.png +0 -0
  346. {argus_alm-0.15.3 → argus_alm-0.15.5}/public/no-user-picture.png +0 -0
  347. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/.envrc +0 -0
  348. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/LICENSE +0 -0
  349. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/MANIFEST.in +0 -0
  350. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/README.md +0 -0
  351. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/noxfile.py +0 -0
  352. {argus_alm-0.15.3 → argus_alm-0.15.5}/pytest-argus-reporter/pyproject.toml +0 -0
  353. {argus_alm-0.15.3 → argus_alm-0.15.5}/run_with_profiler.py +0 -0
  354. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/argus-status-page/index.html +0 -0
  355. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/argus-status-page/js/status.js +0 -0
  356. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/argus-status-page/static/app.css +0 -0
  357. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/argus-status-page/static/argus.png +0 -0
  358. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/argus-status-page/static/scylla.png +0 -0
  359. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/argus-status-page/status.json +0 -0
  360. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/migration/migration_2023-04-07.py +0 -0
  361. {argus_alm-0.15.3 → argus_alm-0.15.5}/scripts/migration/migration_2024-04-14.py +0 -0
  362. {argus_alm-0.15.3 → argus_alm-0.15.5}/setup.cfg +0 -0
  363. {argus_alm-0.15.3 → argus_alm-0.15.5}/start_argus.sh +0 -0
  364. {argus_alm-0.15.3 → argus_alm-0.15.5}/storage/profile_pictures/.gitignore +0 -0
  365. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/admin/base.html.j2 +0 -0
  366. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/admin/index.html.j2 +0 -0
  367. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/auth/login.html.j2 +0 -0
  368. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/auth/register.html.j2 +0 -0
  369. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/base.html.j2 +0 -0
  370. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/dashboard.html.j2 +0 -0
  371. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/duty_planner.html.j2 +0 -0
  372. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/error.html.j2 +0 -0
  373. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/flash_debug.html.j2 +0 -0
  374. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/groups.html.j2 +0 -0
  375. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/home.html.j2 +0 -0
  376. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/assigned.html.j2 +0 -0
  377. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/assigned_email.html.j2 +0 -0
  378. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/email_mention.html.j2 +0 -0
  379. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/mention.html.j2 +0 -0
  380. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
  381. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
  382. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/view_highlight_mention.html.j2 +0 -0
  383. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
  384. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/plan_dashboard.html.j2 +0 -0
  385. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/profile.html.j2 +0 -0
  386. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/profile_jobs.html.j2 +0 -0
  387. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/profile_notifications.html.j2 +0 -0
  388. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/profile_schedules.html.j2 +0 -0
  389. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/release_dashboard.html.j2 +0 -0
  390. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/release_planner.html.j2 +0 -0
  391. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/release_schedule.html.j2 +0 -0
  392. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/releases.html.j2 +0 -0
  393. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/run_view_by_plugin.html.j2 +0 -0
  394. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/runs.html.j2 +0 -0
  395. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/standalone_test_with_runs.html.j2 +0 -0
  396. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/teams.html.j2 +0 -0
  397. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/test_run.html.j2 +0 -0
  398. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/test_runs.html.j2 +0 -0
  399. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/tests.html.j2 +0 -0
  400. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/view_dashboard.html.j2 +0 -0
  401. {argus_alm-0.15.3 → argus_alm-0.15.5}/templates/views.html.j2 +0 -0
  402. {argus_alm-0.15.3 → argus_alm-0.15.5}/tsconfig.json +0 -0
  403. {argus_alm-0.15.3 → argus_alm-0.15.5}/uwsgi.ini +0 -0
  404. {argus_alm-0.15.3 → argus_alm-0.15.5}/webpack.config.js +0 -0
  405. {argus_alm-0.15.3 → argus_alm-0.15.5}/yarn.lock +0 -0
@@ -137,3 +137,4 @@ argus_web.yaml
137
137
  .vscode
138
138
  /profile/*
139
139
  !/profile/.gitkeep
140
+ argus/_version.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.3
3
+ Version: 0.15.5
4
4
  Summary: Argus
5
5
  Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
6
6
  License-Expression: Apache-2.0
@@ -13,16 +13,16 @@ Requires-Dist: requests>=2.26.0
13
13
  Requires-Dist: click>=8.1.3
14
14
  Provides-Extra: web-backend
15
15
  Requires-Dist: PyYAML~=6.0.0; extra == "web-backend"
16
- Requires-Dist: scylla-driver~=3.26.8; extra == "web-backend"
16
+ Requires-Dist: scylla-driver>=3.26.8; extra == "web-backend"
17
17
  Requires-Dist: Flask~=3.0.0; extra == "web-backend"
18
18
  Requires-Dist: Flask-WTF~=1.0.0; extra == "web-backend"
19
19
  Requires-Dist: Flask-Login~=0.5.0; extra == "web-backend"
20
20
  Requires-Dist: humanize~=3.13.1; extra == "web-backend"
21
21
  Requires-Dist: python-magic~=0.4.24; extra == "web-backend"
22
22
  Requires-Dist: uwsgi~=2.0.20; extra == "web-backend"
23
- Requires-Dist: python-jenkins~=1.7.0; extra == "web-backend"
23
+ Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
24
24
  Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
25
- Requires-Dist: pygithub~=2.6.1; extra == "web-backend"
25
+ Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
26
26
  Requires-Dist: boto3~=1.38.9; extra == "web-backend"
27
27
  Provides-Extra: docker-image
28
28
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.15.3'
21
- __version_tuple__ = version_tuple = (0, 15, 3)
20
+ __version__ = version = '0.15.5'
21
+ __version_tuple__ = version_tuple = (0, 15, 5)
@@ -96,14 +96,17 @@ class ArgusClient:
96
96
  }
97
97
 
98
98
  def get(self, endpoint: str, location_params: dict[str, str] = None, params: dict = None) -> requests.Response:
99
+ url = self.get_url_for_endpoint(
100
+ endpoint=endpoint,
101
+ location_params=location_params
102
+ )
103
+ LOGGER.debug("GET Request: %s, params: %s", url, params)
99
104
  response = requests.get(
100
- url=self.get_url_for_endpoint(
101
- endpoint=endpoint,
102
- location_params=location_params
103
- ),
105
+ url=url,
104
106
  params=params,
105
107
  headers=self.request_headers
106
108
  )
109
+ LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
107
110
 
108
111
  return response
109
112
 
@@ -114,15 +117,18 @@ class ArgusClient:
114
117
  params: dict = None,
115
118
  body: dict = None,
116
119
  ) -> requests.Response:
120
+ url = self.get_url_for_endpoint(
121
+ endpoint=endpoint,
122
+ location_params=location_params
123
+ )
124
+ LOGGER.debug("POST Request: %s, params: %s, body: %s", url, params, body)
117
125
  response = requests.post(
118
- url=self.get_url_for_endpoint(
119
- endpoint=endpoint,
120
- location_params=location_params
121
- ),
126
+ url=url,
122
127
  params=params,
123
128
  json=body,
124
129
  headers=self.request_headers,
125
130
  )
131
+ LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
126
132
 
127
133
  return response
128
134
 
@@ -32,13 +32,14 @@ def cli():
32
32
  @click.option("--build-id", required=True, help="Unique job identifier in the build system, e.g. scylla-master/group/job for jenkins (The full path)")
33
33
  @click.option("--build-url", required=True, help="Job URL in the build system")
34
34
  @click.option("--started-by", required=True, help="Username of the user who started the job")
35
+ @click.option("--sub-type", required=False, help="Sub-type of the generic test: pytest, dtest")
35
36
  @click.option("--scylla-version", required=False, default=None, help="Version of Scylla used for this job")
36
37
  @click.option("--extra-headers", default={}, type=click.UNPROCESSED, callback=validate_extra_headers, help="extra headers to pass to argus, should be in json format", envvar='ARGUS_EXTRA_HEADERS')
37
- def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, scylla_version: str = None, extra_headers: dict | None = None):
38
+ def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, sub_type: str = None, scylla_version: str = None, extra_headers: dict | None = None):
38
39
  LOGGER.info("Submitting %s (%s) to Argus...", build_id, id)
39
40
  client = ArgusGenericClient(auth_token=api_key, base_url=base_url, extra_headers=extra_headers)
40
41
  client.submit_generic_run(build_id=build_id, run_id=id, started_by=started_by,
41
- build_url=build_url, scylla_version=scylla_version)
42
+ build_url=build_url, scylla_version=scylla_version, sub_type=sub_type)
42
43
  LOGGER.info("Done.")
43
44
 
44
45
 
@@ -15,12 +15,13 @@ class ArgusGenericClient(ArgusClient):
15
15
  def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
16
16
  super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
17
17
 
18
- def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, scylla_version: str | None = None):
18
+ def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, sub_type: str = None, scylla_version: str | None = None):
19
19
  request_body = {
20
20
  "build_id": build_id,
21
21
  "run_id": run_id,
22
22
  "started_by": started_by,
23
23
  "build_url": build_url,
24
+ "sub_type": sub_type,
24
25
  "scylla_version": scylla_version
25
26
  }
26
27
 
@@ -152,7 +152,7 @@ class ArgusSCTClient(ArgusClient):
152
152
  )
153
153
  self.check_response(response)
154
154
 
155
- def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str,
155
+ def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str, instance_type: str,
156
156
  region: str, provider: str, dc_name: str, rack_name: str, shards_amount: int, state=ResourceState.RUNNING) -> None:
157
157
  """
158
158
  Creates a cloud resource record in argus.
@@ -167,6 +167,7 @@ class ArgusSCTClient(ArgusClient):
167
167
  "state": state,
168
168
  "resource_type": resource_type,
169
169
  "instance_details": {
170
+ "instance_type": instance_type,
170
171
  "provider": provider,
171
172
  "region": region,
172
173
  "dc_name": dc_name,
@@ -22,6 +22,22 @@ class TestStatus(str, Enum):
22
22
  NOT_RUN = "not_run"
23
23
 
24
24
 
25
+ class PytestStatus(str, Enum):
26
+ ERROR = "error"
27
+ PASSED = "passed"
28
+ FAILURE = "failure"
29
+ SKIPPED = "skipped"
30
+ XFAILED = "xfailed"
31
+ XPASS = "xpass"
32
+ # Following statuses reflect test & teardown state
33
+ # Example: passed & error means the test passed
34
+ # but the tearDown stage errored
35
+ PASSED_ERROR = "passed & error"
36
+ FAILURE_ERROR = "failure & error"
37
+ SKIPPED_ERROR = "skipped & error"
38
+ ERROR_ERROR = "error & error"
39
+
40
+
25
41
  class TestInvestigationStatus(str, Enum):
26
42
  NOT_INVESTIGATED = "not_investigated"
27
43
  IN_PROGRESS = "in_progress"
@@ -6,7 +6,7 @@ After=network.target
6
6
  Type=simple
7
7
  User=argus
8
8
  Group=argus
9
- WorkingDirectory=/home/argus/app
9
+ WorkingDirectory=/home/argus/argusAI
10
10
  Environment="PYTHONPATH=."
11
11
  Environment="DAYS_BACK=120"
12
12
  ExecStart=/usr/bin/uv --project argusAI/pyproject.toml run argusAI/event_similarity_processor.py
@@ -1,6 +1,8 @@
1
1
  import os
2
2
  from collections import namedtuple
3
3
  from pathlib import Path
4
+
5
+ import cassandra
4
6
  import chromadb
5
7
  from threading import Thread, Event
6
8
  import time
@@ -9,7 +11,7 @@ import datetime
9
11
  from typing import Dict, Set, List, Tuple, Union
10
12
  import uuid
11
13
 
12
- from chromadb.api.types import IncludeEnum, Embeddings
14
+ from chromadb.api.types import Embeddings
13
15
  from chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2 import ONNXMiniLM_L6_V2
14
16
  from chromadb.config import Settings
15
17
 
@@ -24,6 +26,7 @@ SLEEP_INTERVAL: int = 300 # 5 minutes
24
26
  SIMILARITY_THRESHOLD: float = 0.90
25
27
  MAX_SIMILARS: int = 200
26
28
  DAYS_BACK: int = int(os.getenv("DAYS_BACK", "120"))
29
+ RECREATE_EMBEDDINGS: bool = os.getenv("RECREATE_EMBEDDINGS", "false").lower() in ("true", "1", "yes")
27
30
 
28
31
  logging.basicConfig(
29
32
  level=logging.INFO,
@@ -98,13 +101,22 @@ class EventSimilarityProcessor:
98
101
 
99
102
  LOGGER.info(f"Finding similarities for run_id: {run_id}, event_index: {event_index}, type: {event_type}")
100
103
 
101
- similar: Dict = collection.query(
104
+ similar = collection.query(
102
105
  query_embeddings=[embedding],
103
106
  n_results=max_similars,
104
107
  where={"run_id": {"$ne": str(run_id)}},
105
108
  include=[
106
- IncludeEnum.metadatas,
107
- IncludeEnum.distances,
109
+ "metadatas",
110
+ "distances",
111
+ ],
112
+ )
113
+ duplicate = collection.query(
114
+ query_embeddings=[embedding],
115
+ n_results=100,
116
+ where={"run_id": str(run_id)},
117
+ include=[
118
+ "metadatas",
119
+ "distances",
108
120
  ],
109
121
  )
110
122
 
@@ -117,17 +129,24 @@ class EventSimilarityProcessor:
117
129
  if len(similar_map) >= max_similars:
118
130
  break
119
131
 
132
+ duplicate_list: List[int] = []
133
+ for j, distance in enumerate(duplicate["distances"][0]):
134
+ if 1 - distance >= 0.95 and event_index != duplicate["metadatas"][0][j]["idx"]:
135
+ duplicate_list.append(duplicate["metadatas"][0][j]["idx"])
136
+
120
137
  table = ErrorEventEmbeddings if event_type == EventType.ERROR else CriticalEventEmbeddings
121
138
  try:
122
139
  self._db.execute(
123
- f"UPDATE {table.__table_name__} SET similars_map = ? WHERE run_id = ? AND event_index = ?",
124
- (similar_map, run_id, event_index),
140
+ f"UPDATE {table.__table_name__} SET similars_map = ?, duplicates_list = ? WHERE run_id = ? AND event_index = ?",
141
+ (similar_map, duplicate_list, run_id, event_index),
125
142
  )
126
143
  LOGGER.info(
127
144
  f"Found {len(similar_map)} similar {event_type} events for run_id: {run_id}, event_index: {event_index}"
128
145
  )
129
146
  except Exception as e: # noqa: BLE001
130
- LOGGER.error(f"Failed to update similars_map for run_id: {run_id}, event_index: {event_index}: {e}")
147
+ LOGGER.error(
148
+ f"Failed to update similars_map/duplicates_list for run_id: {run_id}, event_index: {event_index}: {e}"
149
+ )
131
150
 
132
151
  def load_events(
133
152
  self, event_type: str, cutoff_time: datetime.datetime, batch_size: int = 5000
@@ -148,7 +167,9 @@ class EventSimilarityProcessor:
148
167
  collection: chromadb.Collection = self._collections[event_type]
149
168
  table = ErrorEventEmbeddings if event_type == EventType.ERROR else CriticalEventEmbeddings
150
169
  similars_to_update: List[EmbeddingEntry] = []
151
-
170
+ if RECREATE_EMBEDDINGS:
171
+ LOGGER.info(f"Skipping loading of {event_type} events due to RECREATE_EMBEDDINGS setting")
172
+ return processed_runs, similars_to_update
152
173
  LOGGER.info(f"Loading processed {event_type} events...")
153
174
  query: str = f"SELECT * FROM {table.__table_name__} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE"
154
175
  rows = self._db.execute(query, (cutoff_time,))
@@ -168,7 +189,7 @@ class EventSimilarityProcessor:
168
189
  ids.append(f"{emb.run_id}_{emb.event_index}")
169
190
  embeddings_list.append(emb.embedding)
170
191
  metadatas.append({"run_id": str(emb.run_id), "idx": emb.event_index})
171
- if emb.similars_map is None:
192
+ if emb.similars_map is None or emb.duplicates_list is None:
172
193
  similars_to_update.append(
173
194
  EmbeddingEntry(emb.run_id, emb.event_index, emb.embedding, emb.start_time)
174
195
  )
@@ -195,13 +216,19 @@ class EventSimilarityProcessor:
195
216
  new_embeddings: Dict[str, List[EmbeddingEntry]] = similars_to_find
196
217
  while not stop_event.is_set():
197
218
  LOGGER.info(f"Starting event processing cycle; fetching tests since: {cutoff_time}")
198
- tests_to_process_result = self._db.execute(
199
- f"SELECT id, status FROM {SCTTestRun.table_name()} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE",
200
- (cutoff_time,),
201
- )
202
- tests_to_process: Set[uuid.UUID] = {
203
- run.id for run in tests_to_process_result if run.status != TestStatus.PASSED.value
204
- } - processed_runs
219
+ try:
220
+ tests_to_process_result = self._db.execute(
221
+ f"SELECT id, status FROM {SCTTestRun.table_name()} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE",
222
+ (cutoff_time,),
223
+ )
224
+ tests_to_process: Set[uuid.UUID] = {
225
+ run.id for run in tests_to_process_result if run.status != TestStatus.PASSED.value
226
+ } - processed_runs
227
+ except cassandra.ReadTimeout:
228
+ LOGGER.error("Read Timeout while trying to get new events to process - skipping until next iteration")
229
+ stop_event.wait(timeout=SLEEP_INTERVAL)
230
+ continue
231
+
205
232
  LOGGER.info(f"tests to process (including in progress) count: {len(tests_to_process)}")
206
233
  try:
207
234
  stats: Dict[str, int] = {
@@ -6,5 +6,6 @@ readme = "README.md"
6
6
  requires-python = ">=3.12"
7
7
  dependencies = [
8
8
  "chromadb>=0.6.3",
9
+ "flask>=3.1.1",
9
10
  "scylla-driver>=3.28.0",
10
11
  ]
@@ -49,6 +49,7 @@ class MessageSanitizer:
49
49
  r"Machine ID|Hostname|Storage|Size on Disk|Message|Disk Size):.*?(?=\n|$)",
50
50
  re.MULTILINE,
51
51
  )
52
+ self.report_at_pattern: Pattern = re.compile(r"Please report: at .*\n")
52
53
  self.lib_address_pattern: Pattern = re.compile(r"\([^()]+ \+ 0x[0-9a-fA-F]+\)")
53
54
  self.module_pattern: Pattern = re.compile(r"Module [^\n]+ from rpm [^\n]+")
54
55
  self.stack_header_pattern: Pattern = re.compile(r"Stack trace of thread \d+:")
@@ -62,6 +63,17 @@ class MessageSanitizer:
62
63
  self.eol_pattern = re.compile(r"\\n")
63
64
  self.backslashes_pattern = re.compile(r"\\")
64
65
  self.repetitions_pattern = re.compile(r"(\b\w+\b)(?:\s+\1)+")
66
+ self.backtrace_unwanted_lines = {
67
+ "seastar::backtrace",
68
+ "seastar::print_with_backtrace",
69
+ "seastar::install_oneshot_signal_handler",
70
+ "seastar::current_backtrace",
71
+ "seastar::current_tasktrace",
72
+ "seastar::memory::cpu_pages::warn_large_allocation",
73
+ "seastar::memory::allocate_slowpath",
74
+ "at main.cc:",
75
+ " ??:",
76
+ }
65
77
 
66
78
  self.sanitizers: List[Callable[[str], str]] = [
67
79
  self.remove_preface,
@@ -72,8 +84,10 @@ class MessageSanitizer:
72
84
  self.remove_ip_addresses,
73
85
  self.remove_urls,
74
86
  self.remove_metadata,
87
+ self.remove_backtrace_unwanted_lines,
75
88
  self.remove_modules,
76
89
  self.remove_message_prefix,
90
+ self.remove_report_at,
77
91
  self.remove_lib_address,
78
92
  self.remove_process_ids,
79
93
  self.remove_memory_addresses,
@@ -213,3 +227,22 @@ class MessageSanitizer:
213
227
 
214
228
  def remove_repetitions(self, text: str) -> str:
215
229
  return self.repetitions_pattern.sub(r"\1", text)
230
+
231
+ def remove_report_at(self, text: str) -> str:
232
+ return self.report_at_pattern.sub("", text)
233
+
234
+ def _remove_inlined_starting(self, text: str) -> str:
235
+ """Remove inlined starting text that is not useful."""
236
+ if not text.startswith("(inlined by) "):
237
+ return text
238
+ return text.split("(inlined by) ", 1)[-1].strip()
239
+
240
+ def remove_backtrace_unwanted_lines(self, text: str) -> str:
241
+ """Specific lines in backtrace that are not useful and can be removed."""
242
+ if not "backtrace" in text[:1000]:
243
+ return text
244
+ return "\n".join(
245
+ self._remove_inlined_starting(line)
246
+ for line in text.splitlines()
247
+ if not any(problem in line for problem in self.backtrace_unwanted_lines)
248
+ )