primitive 0.2.28__tar.gz → 0.2.30__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 (114) hide show
  1. {primitive-0.2.28 → primitive-0.2.30}/PKG-INFO +1 -1
  2. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/__about__.py +1 -1
  3. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/agent/actions.py +2 -2
  4. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/db/sqlite.py +18 -5
  5. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/monitor/actions.py +19 -2
  6. {primitive-0.2.28 → primitive-0.2.30}/.git-hooks/pre-commit +0 -0
  7. {primitive-0.2.28 → primitive-0.2.30}/.gitattributes +0 -0
  8. {primitive-0.2.28 → primitive-0.2.30}/.github/workflows/lint.yml +0 -0
  9. {primitive-0.2.28 → primitive-0.2.30}/.github/workflows/publish.yml +0 -0
  10. {primitive-0.2.28 → primitive-0.2.30}/.github/workflows/pyright.yml +0 -0
  11. {primitive-0.2.28 → primitive-0.2.30}/.gitignore +0 -0
  12. {primitive-0.2.28 → primitive-0.2.30}/.vscode/extensions.json +0 -0
  13. {primitive-0.2.28 → primitive-0.2.30}/.vscode/settings.json +0 -0
  14. {primitive-0.2.28 → primitive-0.2.30}/LICENSE.txt +0 -0
  15. {primitive-0.2.28 → primitive-0.2.30}/Makefile +0 -0
  16. {primitive-0.2.28 → primitive-0.2.30}/README.md +0 -0
  17. {primitive-0.2.28 → primitive-0.2.30}/linux setup.md +0 -0
  18. {primitive-0.2.28 → primitive-0.2.30}/pyproject.toml +0 -0
  19. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/__init__.py +0 -0
  20. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/agent/__init__.py +0 -0
  21. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/agent/commands.py +0 -0
  22. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/agent/runner.py +0 -0
  23. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/agent/uploader.py +0 -0
  24. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/auth/__init__.py +0 -0
  25. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/auth/actions.py +0 -0
  26. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/auth/commands.py +0 -0
  27. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/auth/graphql/__init__.py +0 -0
  28. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/auth/graphql/queries.py +0 -0
  29. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/cli.py +0 -0
  30. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/client.py +0 -0
  31. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/daemons/__init__.py +0 -0
  32. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/daemons/actions.py +0 -0
  33. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/daemons/commands.py +0 -0
  34. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/daemons/launch_agents.py +0 -0
  35. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/daemons/launch_service.py +0 -0
  36. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/daemons/ui.py +0 -0
  37. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/db/base.py +0 -0
  38. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/db/models.py +0 -0
  39. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/exec/__init__.py +0 -0
  40. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/exec/actions.py +0 -0
  41. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/exec/commands.py +0 -0
  42. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/exec/interactive.py +0 -0
  43. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/__init__.py +0 -0
  44. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/actions.py +0 -0
  45. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/commands.py +0 -0
  46. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/graphql/__init__.py +0 -0
  47. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/graphql/fragments.py +0 -0
  48. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/graphql/mutations.py +0 -0
  49. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/files/graphql/queries.py +0 -0
  50. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/git/__init__.py +0 -0
  51. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/git/actions.py +0 -0
  52. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/git/commands.py +0 -0
  53. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/git/graphql/__init__.py +0 -0
  54. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/git/graphql/queries.py +0 -0
  55. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/graphql/__init__.py +0 -0
  56. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/graphql/relay.py +0 -0
  57. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/graphql/sdk.py +0 -0
  58. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/graphql/utility_fragments.py +0 -0
  59. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/__init__.py +0 -0
  60. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/actions.py +0 -0
  61. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/android.py +0 -0
  62. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/commands.py +0 -0
  63. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/graphql/__init__.py +0 -0
  64. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/graphql/fragments.py +0 -0
  65. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/graphql/mutations.py +0 -0
  66. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/graphql/queries.py +0 -0
  67. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/hardware/ui.py +0 -0
  68. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/__init__.py +0 -0
  69. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/actions.py +0 -0
  70. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/commands.py +0 -0
  71. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/graphql/__init__.py +0 -0
  72. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/graphql/fragments.py +0 -0
  73. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/graphql/mutations.py +0 -0
  74. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/jobs/graphql/queries.py +0 -0
  75. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/monitor/commands.py +0 -0
  76. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/__init__.py +0 -0
  77. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/actions.py +0 -0
  78. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/commands.py +0 -0
  79. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/graphql/__init__.py +0 -0
  80. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/graphql/fragments.py +0 -0
  81. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/graphql/mutations.py +0 -0
  82. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/organizations/graphql/queries.py +0 -0
  83. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/__init__.py +0 -0
  84. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/actions.py +0 -0
  85. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/commands.py +0 -0
  86. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/graphql/__init__.py +0 -0
  87. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/graphql/fragments.py +0 -0
  88. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/graphql/mutations.py +0 -0
  89. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/projects/graphql/queries.py +0 -0
  90. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/provisioning/__init__.py +0 -0
  91. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/provisioning/actions.py +0 -0
  92. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/provisioning/graphql/__init__.py +0 -0
  93. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/provisioning/graphql/queries.py +0 -0
  94. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/__init__.py +0 -0
  95. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/actions.py +0 -0
  96. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/commands.py +0 -0
  97. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/graphql/__init__.py +0 -0
  98. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/graphql/fragments.py +0 -0
  99. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/graphql/mutations.py +0 -0
  100. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/reservations/graphql/queries.py +0 -0
  101. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/__init__.py +0 -0
  102. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/actions.py +0 -0
  103. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/auth.py +0 -0
  104. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/cache.py +0 -0
  105. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/chunk_size.py +0 -0
  106. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/config.py +0 -0
  107. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/daemons.py +0 -0
  108. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/exceptions.py +0 -0
  109. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/memory_size.py +0 -0
  110. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/printer.py +0 -0
  111. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/shell.py +0 -0
  112. {primitive-0.2.28 → primitive-0.2.30}/src/primitive/utils/text.py +0 -0
  113. {primitive-0.2.28 → primitive-0.2.30}/tests/__init__.py +0 -0
  114. {primitive-0.2.28 → primitive-0.2.30}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: primitive
3
- Version: 0.2.28
3
+ Version: 0.2.30
4
4
  Project-URL: Documentation, https://github.com//primitivecorp/primitive-cli#readme
5
5
  Project-URL: Issues, https://github.com//primitivecorp/primitive-cli/issues
6
6
  Project-URL: Source, https://github.com//primitivecorp/primitive-cli
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2024-present Dylan Stein <dylan@primitive.tech>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "0.2.28"
4
+ __version__ = "0.2.30"
@@ -6,8 +6,8 @@ from loguru import logger
6
6
  from primitive.__about__ import __version__
7
7
  from primitive.agent.runner import Runner
8
8
  from primitive.agent.uploader import Uploader
9
- from primitive.db import sqlite
10
9
  from primitive.db.models import JobRun
10
+ from primitive.db.sqlite import wait_for_db
11
11
  from primitive.utils.actions import BaseAction
12
12
 
13
13
 
@@ -27,7 +27,7 @@ class Agent(BaseAction):
27
27
  logger.info(f"Version: {__version__}")
28
28
 
29
29
  # Wait for monitor to make database
30
- sqlite.wait_for_db()
30
+ wait_for_db()
31
31
 
32
32
  # Create uploader
33
33
  uploader = Uploader(primitive=self.primitive)
@@ -2,7 +2,7 @@ from pathlib import Path
2
2
  from time import sleep
3
3
 
4
4
  from loguru import logger
5
- from sqlalchemy import Engine, create_engine
5
+ from sqlalchemy import Engine, create_engine, inspect
6
6
  from sqlalchemy.orm import Session as SQLAlchemySession
7
7
 
8
8
  from primitive.db.base import Base
@@ -39,15 +39,28 @@ def wait_for_db() -> None:
39
39
  logger.debug(
40
40
  f"Waiting for SQLite database to be created... [{current_try} / {max_tries}]"
41
41
  )
42
- db_path.touch()
43
42
  sleep(1)
44
43
  current_try += 1
45
44
  continue
46
45
  if current_try > max_tries:
47
- logger.error(
48
- f"SQLite database was not created after {max_tries} tries. Exiting..."
46
+ message = f"SQLite database was not created after {max_tries} tries. Exiting..."
47
+ logger.error(message)
48
+ raise RuntimeError(message)
49
+
50
+ # check if table exists
51
+ max_tries = 60
52
+ current_try = 1
53
+ while not inspect(engine()).has_table("JobRun") and current_try <= max_tries:
54
+ logger.error("SQLite database is not ready.")
55
+ sleep(1)
56
+ current_try += 1
57
+ continue
58
+ if current_try > max_tries:
59
+ message = (
60
+ f"Database tables were not created after {max_tries} tries. Exiting..."
49
61
  )
50
- raise RuntimeError("SQLite database was not created.")
62
+ logger.error(message)
63
+ raise RuntimeError(message)
51
64
  logger.debug("SQLite database is ready.")
52
65
 
53
66
 
@@ -6,8 +6,8 @@ import psutil
6
6
  from loguru import logger
7
7
 
8
8
  from primitive.__about__ import __version__
9
- from primitive.db import sqlite
10
9
  from primitive.db.models import JobRun
10
+ from primitive.db.sqlite import init, wait_for_db
11
11
  from primitive.utils.actions import BaseAction
12
12
  from primitive.utils.exceptions import P_CLI_100
13
13
 
@@ -45,7 +45,8 @@ class Monitor(BaseAction):
45
45
  sys.exit(1)
46
46
 
47
47
  # Initialize the database
48
- sqlite.init()
48
+ init()
49
+ wait_for_db()
49
50
 
50
51
  try:
51
52
  if job_run_id is not None:
@@ -61,6 +62,22 @@ class Monitor(BaseAction):
61
62
  # FIRST, check for jobs in the database that are running
62
63
  db_job_runs = JobRun.objects.all()
63
64
  for job_run in db_job_runs:
65
+ # first check if the job run completed already
66
+ status = self.primitive.jobs.get_job_status(job_run.job_run_id)
67
+ if status is None or status.data is None:
68
+ logger.error(
69
+ f"Error fetching status of <JobRun {job_run.job_run_id}>."
70
+ )
71
+ continue
72
+
73
+ status_value = status.data["jobRun"]["status"]
74
+ if status_value == "completed":
75
+ logger.debug(
76
+ f"Job run {job_run.job_run_id} is completed. Removing from database."
77
+ )
78
+ JobRun.objects.filter_by(job_run_id=job_run.job_run_id).delete()
79
+ continue
80
+
64
81
  if job_run.pid is None:
65
82
  pid_sleep_amount = 0.1
66
83
  logger.debug(
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes