primitive 0.1.58__py3-none-any.whl → 0.1.60__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- primitive/__about__.py +1 -1
- primitive/agent/__init__.py +0 -0
- primitive/agent/actions.py +8 -4
- primitive/agent/process.py +2 -2
- primitive/agent/provision.py +2 -8
- primitive/agent/runner.py +22 -12
- primitive/agent/uploader.py +78 -49
- primitive/auth/actions.py +5 -12
- primitive/auth/graphql/__init__.py +0 -0
- primitive/auth/graphql/queries.py +13 -0
- primitive/cli.py +11 -5
- primitive/client.py +4 -0
- primitive/daemons/__init__.py +0 -0
- primitive/exec/__init__.py +0 -0
- primitive/exec/actions.py +50 -0
- primitive/exec/commands.py +22 -0
- primitive/files/__init__.py +0 -0
- primitive/files/actions.py +9 -16
- primitive/files/graphql/__init__.py +0 -0
- primitive/files/graphql/mutations.py +11 -0
- primitive/git/actions.py +11 -11
- primitive/git/commands.py +7 -6
- primitive/git/graphql/__init__.py +0 -0
- primitive/git/graphql/queries.py +7 -0
- primitive/graphql/relay.py +32 -0
- primitive/graphql/utility_fragments.py +19 -0
- primitive/hardware/__init__.py +0 -0
- primitive/hardware/actions.py +74 -121
- primitive/hardware/commands.py +15 -5
- primitive/hardware/graphql/__init__.py +0 -0
- primitive/hardware/graphql/fragments.py +22 -0
- primitive/hardware/graphql/mutations.py +45 -0
- primitive/hardware/graphql/queries.py +31 -0
- primitive/jobs/__init__.py +0 -0
- primitive/jobs/actions.py +32 -201
- primitive/jobs/graphql/__init__.py +0 -0
- primitive/jobs/graphql/fragments.py +47 -0
- primitive/jobs/graphql/mutations.py +11 -0
- primitive/jobs/graphql/queries.py +100 -0
- primitive/lint/__init__.py +0 -0
- primitive/organizations/__init__.py +0 -0
- primitive/organizations/actions.py +4 -49
- primitive/organizations/graphql/__init__.py +0 -0
- primitive/organizations/graphql/fragments.py +10 -0
- primitive/organizations/graphql/mutations.py +0 -0
- primitive/organizations/graphql/queries.py +38 -0
- primitive/projects/actions.py +5 -47
- primitive/projects/graphql/__init__.py +0 -0
- primitive/projects/graphql/fragments.py +10 -0
- primitive/projects/graphql/mutations.py +0 -0
- primitive/projects/graphql/queries.py +36 -0
- primitive/reservations/__init__.py +0 -0
- primitive/reservations/actions.py +134 -0
- primitive/reservations/commands.py +67 -0
- primitive/reservations/graphql/__init__.py +0 -0
- primitive/reservations/graphql/fragments.py +40 -0
- primitive/reservations/graphql/mutations.py +29 -0
- primitive/reservations/graphql/queries.py +47 -0
- primitive/sim/actions.py +12 -9
- primitive/utils/__init__.py +0 -0
- primitive/utils/cache.py +14 -0
- primitive/utils/shell.py +25 -0
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/METADATA +1 -1
- primitive-0.1.60.dist-info/RECORD +95 -0
- primitive-0.1.58.dist-info/RECORD +0 -53
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/WHEEL +0 -0
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/entry_points.txt +0 -0
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,134 @@
|
|
1
|
+
import typing
|
2
|
+
from time import sleep
|
3
|
+
|
4
|
+
from primitive.graphql.relay import from_base64
|
5
|
+
|
6
|
+
if typing.TYPE_CHECKING:
|
7
|
+
pass
|
8
|
+
|
9
|
+
from typing import List, Optional
|
10
|
+
|
11
|
+
from gql import gql
|
12
|
+
|
13
|
+
from primitive.utils.actions import BaseAction
|
14
|
+
|
15
|
+
from ..utils.auth import guard
|
16
|
+
from .graphql.mutations import reservation_create_mutation, reservation_release_mutation
|
17
|
+
from .graphql.queries import reservation_query, reservations_query
|
18
|
+
|
19
|
+
|
20
|
+
class Reservations(BaseAction):
|
21
|
+
def __init__(self, *args, **kwargs) -> None:
|
22
|
+
super().__init__(*args, **kwargs)
|
23
|
+
|
24
|
+
@guard
|
25
|
+
def get_reservations(
|
26
|
+
self,
|
27
|
+
status: str = "in_progress",
|
28
|
+
):
|
29
|
+
query = gql(reservations_query)
|
30
|
+
|
31
|
+
filters = {}
|
32
|
+
if status:
|
33
|
+
filters["status"] = {"exact": status}
|
34
|
+
|
35
|
+
variables = {
|
36
|
+
"filters": filters,
|
37
|
+
}
|
38
|
+
result = self.primitive.session.execute(
|
39
|
+
query, variable_values=variables, get_execution_result=True
|
40
|
+
)
|
41
|
+
return result
|
42
|
+
|
43
|
+
@guard
|
44
|
+
def get_reservation(self, reservation_id: str):
|
45
|
+
query = gql(reservation_query)
|
46
|
+
|
47
|
+
variables = {
|
48
|
+
"id": reservation_id,
|
49
|
+
}
|
50
|
+
|
51
|
+
result = self.primitive.session.execute(
|
52
|
+
query, variable_values=variables, get_execution_result=True
|
53
|
+
)
|
54
|
+
return result
|
55
|
+
|
56
|
+
@guard
|
57
|
+
def create_reservation(
|
58
|
+
self,
|
59
|
+
reason: str,
|
60
|
+
requested_hardware_ids: Optional[List[str]] = None,
|
61
|
+
organization_id: Optional[str] = None,
|
62
|
+
hardware_identifier: Optional[str] = None,
|
63
|
+
):
|
64
|
+
mutation = gql(reservation_create_mutation)
|
65
|
+
|
66
|
+
if hardware_identifier and not requested_hardware_ids:
|
67
|
+
hardware = self.primitive.hardware.get_hardware_from_slug_or_id(
|
68
|
+
hardware_identifier=hardware_identifier
|
69
|
+
)
|
70
|
+
requested_hardware_ids = [hardware["id"]]
|
71
|
+
|
72
|
+
if not organization_id:
|
73
|
+
whoami_result = self.primitive.auth.whoami()
|
74
|
+
default_organization = whoami_result.data["whoami"]["defaultOrganization"]
|
75
|
+
organization_id = default_organization["id"]
|
76
|
+
|
77
|
+
input = {
|
78
|
+
"requestedHardwareIds": requested_hardware_ids,
|
79
|
+
"reason": reason,
|
80
|
+
"organizationId": organization_id,
|
81
|
+
}
|
82
|
+
|
83
|
+
variables = {"input": input}
|
84
|
+
result = self.primitive.session.execute(
|
85
|
+
mutation, variable_values=variables, get_execution_result=True
|
86
|
+
)
|
87
|
+
return result
|
88
|
+
|
89
|
+
@guard
|
90
|
+
def release_reservation(self, reservation_or_hardware_identifier: str):
|
91
|
+
mutation = gql(reservation_release_mutation)
|
92
|
+
try:
|
93
|
+
# check if it is a base64 encoded id
|
94
|
+
type_name, _id = from_base64(reservation_or_hardware_identifier)
|
95
|
+
if type_name == "Reservation":
|
96
|
+
reservation_id = reservation_or_hardware_identifier
|
97
|
+
elif type_name == "Hardware":
|
98
|
+
hardware = self.primitive.hardware.get_hardware_from_slug_or_id(
|
99
|
+
hardware_identifier=reservation_or_hardware_identifier
|
100
|
+
)
|
101
|
+
reservation_id = hardware["activeReservation"]["id"]
|
102
|
+
except ValueError:
|
103
|
+
# if not, its a string and check for it here
|
104
|
+
hardware = self.primitive.hardware.get_hardware_from_slug_or_id(
|
105
|
+
hardware_identifier=reservation_or_hardware_identifier
|
106
|
+
)
|
107
|
+
reservation_id = hardware["activeReservation"]["id"]
|
108
|
+
|
109
|
+
input = {
|
110
|
+
"reservationId": reservation_id,
|
111
|
+
}
|
112
|
+
variables = {"input": input}
|
113
|
+
result = self.primitive.session.execute(
|
114
|
+
mutation, variable_values=variables, get_execution_result=True
|
115
|
+
)
|
116
|
+
return result
|
117
|
+
|
118
|
+
@guard
|
119
|
+
def wait_for_reservation_status(self, reservation_id: str, desired_status: str):
|
120
|
+
reservation_result = self.get_reservation(reservation_id=reservation_id)
|
121
|
+
reservation = reservation_result.data["reservation"]
|
122
|
+
current_status = reservation["status"]
|
123
|
+
|
124
|
+
sleep_amount = 1
|
125
|
+
while current_status != desired_status:
|
126
|
+
reservation_result = self.get_reservation(reservation_id=reservation_id)
|
127
|
+
reservation = reservation_result.data["reservation"]
|
128
|
+
current_status = reservation["status"]
|
129
|
+
if current_status == desired_status:
|
130
|
+
break
|
131
|
+
sleep(sleep_amount)
|
132
|
+
sleep_amount += 1
|
133
|
+
|
134
|
+
return reservation
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import typing
|
2
|
+
|
3
|
+
import click
|
4
|
+
|
5
|
+
if typing.TYPE_CHECKING:
|
6
|
+
from ..client import Primitive
|
7
|
+
from typing import Optional
|
8
|
+
|
9
|
+
from ..utils.printer import print_result
|
10
|
+
|
11
|
+
|
12
|
+
@click.group()
|
13
|
+
@click.pass_context
|
14
|
+
def cli(context):
|
15
|
+
"""Reservations"""
|
16
|
+
pass
|
17
|
+
|
18
|
+
|
19
|
+
@cli.command("list")
|
20
|
+
@click.pass_context
|
21
|
+
@click.option("--status", default="in_progress", type=str, help="Filter by status")
|
22
|
+
def list(context, status: Optional[str] = "in_progress"):
|
23
|
+
"""List reservations"""
|
24
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
25
|
+
get_reservations_result = primitive.reservations.get_reservations(status=status)
|
26
|
+
message = get_reservations_result.data
|
27
|
+
print_result(message=message, context=context)
|
28
|
+
|
29
|
+
|
30
|
+
@cli.command("get")
|
31
|
+
@click.pass_context
|
32
|
+
@click.argument("reservation_id", type=str)
|
33
|
+
def get(context, reservation_id: str):
|
34
|
+
"""Get a reservation"""
|
35
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
36
|
+
get_reservation_result = primitive.reservations.get_reservation(
|
37
|
+
reservation_id=reservation_id
|
38
|
+
)
|
39
|
+
message = get_reservation_result.data
|
40
|
+
print_result(message=message, context=context)
|
41
|
+
|
42
|
+
|
43
|
+
@cli.command("create")
|
44
|
+
@click.pass_context
|
45
|
+
@click.argument("hardware_identifier", type=str)
|
46
|
+
@click.argument("reason", type=str)
|
47
|
+
def create_reservation(context, hardware_identifier: str, reason: str):
|
48
|
+
"""Crate a reservation by a Hardware's ID or Slug"""
|
49
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
50
|
+
create_reservation_result = primitive.reservations.create_reservation(
|
51
|
+
hardware_identifier=hardware_identifier, reason=reason
|
52
|
+
)
|
53
|
+
message = create_reservation_result.data
|
54
|
+
print_result(message=message, context=context)
|
55
|
+
|
56
|
+
|
57
|
+
@cli.command("release")
|
58
|
+
@click.pass_context
|
59
|
+
@click.argument("reservation_or_hardware_identifier", type=str)
|
60
|
+
def release_reservation(context, reservation_or_hardware_identifier: str):
|
61
|
+
"""Release a reservation by Reservation ID, Hardware ID or Hardware Slug"""
|
62
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
63
|
+
release_reservation_result = primitive.reservations.release_reservation(
|
64
|
+
reservation_or_hardware_identifier=reservation_or_hardware_identifier
|
65
|
+
)
|
66
|
+
message = release_reservation_result.data
|
67
|
+
print_result(message=message, context=context)
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
reservation_fragment = """
|
2
|
+
fragment ReservationFragment on Reservation {
|
3
|
+
id
|
4
|
+
pk
|
5
|
+
createdAt
|
6
|
+
updatedAt
|
7
|
+
createdBy {
|
8
|
+
id
|
9
|
+
pk
|
10
|
+
email
|
11
|
+
username
|
12
|
+
displayName
|
13
|
+
}
|
14
|
+
hardware {
|
15
|
+
id
|
16
|
+
pk
|
17
|
+
name
|
18
|
+
slug
|
19
|
+
createdAt
|
20
|
+
updatedAt
|
21
|
+
isAvailable
|
22
|
+
isOnline
|
23
|
+
isQuarantined
|
24
|
+
isHealthy
|
25
|
+
capabilities {
|
26
|
+
id
|
27
|
+
pk
|
28
|
+
slug
|
29
|
+
name
|
30
|
+
}
|
31
|
+
}
|
32
|
+
reason
|
33
|
+
startedAt
|
34
|
+
endedAt
|
35
|
+
elapsedTime
|
36
|
+
status
|
37
|
+
conclusion
|
38
|
+
conclusionMessage
|
39
|
+
}
|
40
|
+
"""
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from primitive.graphql.utility_fragments import operation_info_fragment
|
2
|
+
|
3
|
+
from .fragments import reservation_fragment
|
4
|
+
|
5
|
+
reservation_create_mutation = (
|
6
|
+
operation_info_fragment
|
7
|
+
+ reservation_fragment
|
8
|
+
+ """
|
9
|
+
mutation reservationCreate($input: ReservationCreateInput!) {
|
10
|
+
reservationCreate(input: $input) {
|
11
|
+
...ReservationFragment
|
12
|
+
...OperationInfoFragment
|
13
|
+
}
|
14
|
+
}
|
15
|
+
"""
|
16
|
+
)
|
17
|
+
|
18
|
+
reservation_release_mutation = (
|
19
|
+
operation_info_fragment
|
20
|
+
+ reservation_fragment
|
21
|
+
+ """
|
22
|
+
mutation reservationRelease($input: ReservationReleaseInput!) {
|
23
|
+
reservationRelease(input: $input) {
|
24
|
+
...ReservationFragment
|
25
|
+
...OperationInfoFragment
|
26
|
+
}
|
27
|
+
}
|
28
|
+
"""
|
29
|
+
)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from primitive.graphql.utility_fragments import page_info_fragment
|
2
|
+
|
3
|
+
from .fragments import reservation_fragment
|
4
|
+
|
5
|
+
reservations_query = (
|
6
|
+
page_info_fragment
|
7
|
+
+ reservation_fragment
|
8
|
+
+ """
|
9
|
+
query reservations(
|
10
|
+
$before: String
|
11
|
+
$after: String
|
12
|
+
$first: Int
|
13
|
+
$last: Int
|
14
|
+
$filters: ReservationFilters
|
15
|
+
) {
|
16
|
+
reservations(
|
17
|
+
before: $before
|
18
|
+
after: $after
|
19
|
+
first: $first
|
20
|
+
last: $last
|
21
|
+
filters: $filters
|
22
|
+
) {
|
23
|
+
totalCount
|
24
|
+
pageInfo {
|
25
|
+
...PageInfoFragment
|
26
|
+
}
|
27
|
+
edges {
|
28
|
+
cursor
|
29
|
+
node {
|
30
|
+
...ReservationFragment
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
"""
|
36
|
+
)
|
37
|
+
|
38
|
+
reservation_query = (
|
39
|
+
reservation_fragment
|
40
|
+
+ """
|
41
|
+
query reservation($id: GlobalID!) {
|
42
|
+
reservation(id: $id) {
|
43
|
+
...ReservationFragment
|
44
|
+
}
|
45
|
+
}
|
46
|
+
"""
|
47
|
+
)
|
primitive/sim/actions.py
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
-
from pathlib import Path, PurePath
|
2
|
-
from primitive.utils.actions import BaseAction
|
3
|
-
from loguru import logger
|
4
|
-
import subprocess
|
5
|
-
from typing import Tuple
|
6
|
-
from ..utils.files import find_files_for_extension
|
7
|
-
import os
|
8
1
|
import json
|
2
|
+
import os
|
3
|
+
import subprocess
|
9
4
|
import xml.etree.ElementTree as ET
|
5
|
+
from pathlib import Path, PurePath
|
6
|
+
from typing import Tuple
|
7
|
+
|
8
|
+
from loguru import logger
|
10
9
|
from primitive_pal import process_vcd
|
11
10
|
|
11
|
+
from primitive.utils.actions import BaseAction
|
12
|
+
|
13
|
+
from ..utils.files import find_files_for_extension
|
14
|
+
|
12
15
|
|
13
16
|
class Sim(BaseAction):
|
14
17
|
def execute(
|
@@ -80,10 +83,10 @@ class Sim(BaseAction):
|
|
80
83
|
|
81
84
|
logger.debug("Updating job run...")
|
82
85
|
if len(file_ids) > 0:
|
83
|
-
|
86
|
+
job_run_update_result = self.primitive.jobs.job_run_update(
|
84
87
|
id=job_run_id, file_ids=file_ids
|
85
88
|
)
|
86
|
-
logger.success(
|
89
|
+
logger.success(job_run_update_result.data)
|
87
90
|
|
88
91
|
def parse_xml(self, path: Path) -> None:
|
89
92
|
results = ET.parse(path)
|
File without changes
|
primitive/utils/cache.py
CHANGED
@@ -44,6 +44,20 @@ def get_artifacts_cache(cache_id: str = None) -> Path:
|
|
44
44
|
return artifacts_dir
|
45
45
|
|
46
46
|
|
47
|
+
def get_logs_cache(cache_id: str = None) -> Path:
|
48
|
+
cache_dir = get_cache_dir()
|
49
|
+
|
50
|
+
logs_dir = cache_dir / "logs"
|
51
|
+
|
52
|
+
if cache_id:
|
53
|
+
logs_dir = logs_dir / cache_id
|
54
|
+
|
55
|
+
if not logs_dir.exists():
|
56
|
+
logs_dir.mkdir(parents=True, exist_ok=True)
|
57
|
+
|
58
|
+
return logs_dir
|
59
|
+
|
60
|
+
|
47
61
|
def get_deps_cache() -> Path:
|
48
62
|
cache_dir = get_cache_dir()
|
49
63
|
|
primitive/utils/shell.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from pathlib import Path
|
2
2
|
import subprocess
|
3
|
+
from typing import Dict
|
3
4
|
|
4
5
|
|
5
6
|
def add_path_to_shell(path: Path):
|
@@ -31,3 +32,27 @@ def add_path_to_shell(path: Path):
|
|
31
32
|
file.write(f"export PATH={path}:$PATH\n")
|
32
33
|
|
33
34
|
return True
|
35
|
+
|
36
|
+
|
37
|
+
def env_string_to_dict(env_str: str) -> Dict:
|
38
|
+
lines = env_str.splitlines()
|
39
|
+
|
40
|
+
current_key = None
|
41
|
+
current_value = []
|
42
|
+
env_dict = {}
|
43
|
+
for line in lines:
|
44
|
+
if "=" in line:
|
45
|
+
if current_key is not None:
|
46
|
+
env_dict[current_key] = "\n".join(current_value)
|
47
|
+
|
48
|
+
key, value = line.split("=", 1)
|
49
|
+
|
50
|
+
current_key = key
|
51
|
+
current_value = [value]
|
52
|
+
else:
|
53
|
+
current_value.append(line)
|
54
|
+
|
55
|
+
if current_key is not None:
|
56
|
+
env_dict[current_key] = "\n".join(current_value)
|
57
|
+
|
58
|
+
return env_dict
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: primitive
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.60
|
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
|
@@ -0,0 +1,95 @@
|
|
1
|
+
primitive/__about__.py,sha256=ltk-zb4IMmLsM4NDisEz2bXWrL5uUzzqsV5yJM95Caw,130
|
2
|
+
primitive/__init__.py,sha256=bwKdgggKNVssJFVPfKSxqFMz4IxSr54WWbmiZqTMPNI,106
|
3
|
+
primitive/cli.py,sha256=CGmWiqqCLMHtHGOUPuf3tVO6VvChBZ1VdSwCCglnBgA,2582
|
4
|
+
primitive/client.py,sha256=p-5z1iGM8ZydIrkYf4R6b7Yna73oszlGdXim9-Zsbyk,2364
|
5
|
+
primitive/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
primitive/agent/actions.py,sha256=B7d2oNMjtjUP2RhD-QnNDWNl3jHwjUDk5KLWQ2OnNQ4,5883
|
7
|
+
primitive/agent/commands.py,sha256=-dVDilELfkGfbZB7qfEPs77Dm1oT62qJj4tsIk4KoxI,254
|
8
|
+
primitive/agent/process.py,sha256=LVI-RB4a0YEuXUTYMXKL5Xi9euNwUI2nxj00mv8EFOg,2253
|
9
|
+
primitive/agent/provision.py,sha256=rmwnro1K5F8mwtd45XAq7RVQmpDWnbBCQ8X_qgWhm3M,1546
|
10
|
+
primitive/agent/runner.py,sha256=pX1KgYNxSxkSIDydsQa60C4zV2EvNaVXA9rQlG17wc8,7129
|
11
|
+
primitive/agent/uploader.py,sha256=La33T2csENWKRsNagog3ELYe6110jufMnb7owmrPsIk,3150
|
12
|
+
primitive/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
primitive/auth/actions.py,sha256=MPsG9LcKcOPwA7gZ9Ewk0PZJhTQvIrGfODdz4GxSzgA,999
|
14
|
+
primitive/auth/commands.py,sha256=JahUq0E2e7Xa-FX1WEUv7TgM6ieDvNH4VwRRtxAW7HE,2340
|
15
|
+
primitive/auth/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
+
primitive/auth/graphql/queries.py,sha256=jhrr_VFzHIn8vcVprMIzUx7V4kkWYdR6CKMKPoVFv60,180
|
17
|
+
primitive/daemons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
+
primitive/daemons/actions.py,sha256=Nt3yNtbBhen0jK4sRsH_N7AP3UBuyL48VaUhtC7wYq8,2015
|
19
|
+
primitive/daemons/commands.py,sha256=-Muh-6ib4uAVtPn_67AcMrDwuCwYlCnRQozCi2Xurmk,1726
|
20
|
+
primitive/daemons/launch_agents.py,sha256=qovt32gwpjGDd82z_SY5EGCUjaUyNA49pZFajZsw3eE,4796
|
21
|
+
primitive/daemons/launch_service.py,sha256=FPB9qKEjhllRfEpct0ng2L9lpIaGJbQwn1JdFT8uBA8,5600
|
22
|
+
primitive/exec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
+
primitive/exec/actions.py,sha256=GdqoVbD65JuDCzdelmygMVuA5a8V-RZHdhxuAqrFzaA,1907
|
24
|
+
primitive/exec/commands.py,sha256=iX8SP_9vwyy-R2unk5HaesLIdUAbhXCqCSWOOdFCtY0,509
|
25
|
+
primitive/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
+
primitive/files/actions.py,sha256=AYh2o2BY4-glySkILoHZia9nVADKaAFM0z9Pe3GH2EM,2686
|
27
|
+
primitive/files/commands.py,sha256=DDizo3xJnU3KLUBTMeeM72viVpnJinLwxs84tmqKhqo,810
|
28
|
+
primitive/files/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
+
primitive/files/graphql/mutations.py,sha256=iVolIhWu8-QktsdavBghr7VxomkxOV4de75BnovP9JM,215
|
30
|
+
primitive/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
|
+
primitive/git/actions.py,sha256=0KHeHViZZqIhF6-Eqvhs0g_UmglqyWrOQKElQCm6jVw,1506
|
32
|
+
primitive/git/commands.py,sha256=sCeSjkRgSEjCEsB5seXgB_h6xfk0KpvMvzMKoRfUbRA,1177
|
33
|
+
primitive/git/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
+
primitive/git/graphql/queries.py,sha256=I1HGlqBb1lHIAWVSsC8tVY9JdsQ8DJVqs4nqSTcL30M,98
|
35
|
+
primitive/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
+
primitive/graphql/relay.py,sha256=bmij2AjdpURQ6GGVCxwWhauF-r_SxuAU2oJ4sDbLxpI,726
|
37
|
+
primitive/graphql/sdk.py,sha256=BhCGmDtc4sNnH8CxbQSJyFwOZ-ZSqMtjsxMB3JRBhPw,1456
|
38
|
+
primitive/graphql/utility_fragments.py,sha256=uIjwILC4QtWNyO5vu77VjQf_p0jvP3A9q_6zRq91zqs,303
|
39
|
+
primitive/hardware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
+
primitive/hardware/actions.py,sha256=KPRlpGbmeOKViAPWb_nzX6BMyMAjBHjdEz_lyBKqod0,18601
|
41
|
+
primitive/hardware/commands.py,sha256=_HaWOdRQSkhnA1xZZHZWgadSQ9Gijxtnzg2vc_IDSMA,1854
|
42
|
+
primitive/hardware/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
|
+
primitive/hardware/graphql/fragments.py,sha256=2uI0_WIhJISgd9Yx8tAdM7EUuAXEeQMUIXTIfkbZc2Q,246
|
44
|
+
primitive/hardware/graphql/mutations.py,sha256=Zd6HxnIgTJ9mJQAfKJkdeDfstcPAal6Bj38pnKb_RuI,904
|
45
|
+
primitive/hardware/graphql/queries.py,sha256=dhihQwr4O7zxDNRjeNWhkAXaSDOBsK-uqIczEGy1XLI,430
|
46
|
+
primitive/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
+
primitive/jobs/actions.py,sha256=CtyO-Z9614TgIoXJJX1QGsoll0fgpBIjG9PJH5JwCQs,4901
|
48
|
+
primitive/jobs/commands.py,sha256=MxPCkBEYW_eLNqgCRYeyj7ZcLOFAWfpVZlqDR2Y_S0o,830
|
49
|
+
primitive/jobs/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
+
primitive/jobs/graphql/fragments.py,sha256=xtT168P-ChEj3UhSXxFiYPgYuMDyey9bXYkk-TtM3a4,542
|
51
|
+
primitive/jobs/graphql/mutations.py,sha256=8ASvCmwQh7cMeeiykOdYaYVryG8FRIuVF6v_J8JJZuw,219
|
52
|
+
primitive/jobs/graphql/queries.py,sha256=BrU_GnLjK0bTAmWsLSmGEUea7EM8MqTKxN1Qp6sSjwc,1597
|
53
|
+
primitive/lint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
+
primitive/lint/actions.py,sha256=tWsrht1dowGprcZjEUtjCJzozEQmh9sv2_C2__YHIOI,2825
|
55
|
+
primitive/lint/commands.py,sha256=3CZvkOEMpJspJWmaQzA5bpPKx0_VCijQIXA9l-eTnZE,487
|
56
|
+
primitive/organizations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
|
+
primitive/organizations/actions.py,sha256=o7WnTONtH-WI0kzn71Uq-kF0CRjDS8Xb9YA7DIjYnwY,1085
|
58
|
+
primitive/organizations/commands.py,sha256=_dwgVEJCqMa5VgB_7P1wLPFc0AuT1p9dtyR9JRr4kpw,487
|
59
|
+
primitive/organizations/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
|
+
primitive/organizations/graphql/fragments.py,sha256=a1qKq4FZB5qze0XTo1fOUeGAscIasjn_Ig4gA2_vStY,142
|
61
|
+
primitive/organizations/graphql/mutations.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
|
+
primitive/organizations/graphql/queries.py,sha256=8sLpByh4dKk-wKpqpNwiv_P0_B2pAeb7FoQ8sePErB0,733
|
63
|
+
primitive/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
|
+
primitive/projects/actions.py,sha256=liYIWaCstPWjvrqAordwye-LEsSmoOQHB_EuBE13SKg,975
|
65
|
+
primitive/projects/commands.py,sha256=Fqqgpi4cm6zOgkHK--0F0hiiIj32BmgZ-h1MydmWwdE,464
|
66
|
+
primitive/projects/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
67
|
+
primitive/projects/graphql/fragments.py,sha256=02F5nyI8i-ML_bV5FFHUgFWM5bBBfjmz_tkP-4QOXjU,127
|
68
|
+
primitive/projects/graphql/mutations.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
+
primitive/projects/graphql/queries.py,sha256=nFaVf6YOHA2L_FTgIUdRK-80hYTmv1a1X5ac7QPMp1k,646
|
70
|
+
primitive/reservations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
+
primitive/reservations/actions.py,sha256=XjjF0UJAgKryuSJqakLMAWshZIbuM-DkTmdU95cANs4,4434
|
72
|
+
primitive/reservations/commands.py,sha256=OwWWE9DrvtrVBcBki0bKTOqCzCQk090c0rPIAt89JLY,2243
|
73
|
+
primitive/reservations/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
|
+
primitive/reservations/graphql/fragments.py,sha256=OPh8ylJR2kxfArBJ4IYIBLvWJyms3A2jVNNFLkTroRM,474
|
75
|
+
primitive/reservations/graphql/mutations.py,sha256=IqzwQL7OclN7RpIcidrTQo9cGYofY7wqoBOdnY0pwN8,651
|
76
|
+
primitive/reservations/graphql/queries.py,sha256=x31wTRelskX2fc0fx2qrY7XT1q74nvzLv_Xef3o9weg,746
|
77
|
+
primitive/sim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
|
+
primitive/sim/actions.py,sha256=8eGOL7_sRj-7aW4TfPDH6gX5bYvxSIJkUxzRvPb7rjo,4904
|
79
|
+
primitive/sim/commands.py,sha256=8PaOfL1MO6qxTn7mNVRnBU1X2wa3gk_mlbAhBW6MnI0,591
|
80
|
+
primitive/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
|
+
primitive/utils/actions.py,sha256=HOFrmM3-0A_A3NS84MqrZ6JmQEiiPSoDqEeuu6b_qfQ,196
|
82
|
+
primitive/utils/auth.py,sha256=TtJKTR6tLmNrtWbOjJI-KJh4ZSJ1uG7ApE9GcY63m00,836
|
83
|
+
primitive/utils/cache.py,sha256=FHGmVWYLJFQOazpXXcEwI0YJEZbdkgG39nOLdOv6VNk,1575
|
84
|
+
primitive/utils/config.py,sha256=DlFM5Nglo22WPtbpZSVtH7NX-PTMaKYlcrUE7GPRG4c,1058
|
85
|
+
primitive/utils/files.py,sha256=Yv__bQes3YIlzhOT9kVxtYhoA5CmUjPSvphl9PZ41k4,867
|
86
|
+
primitive/utils/git.py,sha256=1qNOu8X-33CavmrD580BmrFhD_WVO9PGWHUUboXJR_g,663
|
87
|
+
primitive/utils/memory_size.py,sha256=4xfha21kW82nFvOTtDFx9Jk2ZQoEhkfXii-PGNTpIUk,3058
|
88
|
+
primitive/utils/printer.py,sha256=f1XUpqi5dkTL3GWvYRUGlSwtj2IxU1q745T4Fxo7Tn4,370
|
89
|
+
primitive/utils/shell.py,sha256=j7E1YwgNWw57dFHVfEbqRNVcPHX0xDefX2vFSNgeI_8,1648
|
90
|
+
primitive/utils/verible.py,sha256=r7c_hfqvL0UicMmIzK3Cy_BfZI1ZpcfBeLqKEWFWqJo,2252
|
91
|
+
primitive-0.1.60.dist-info/METADATA,sha256=Ehe8DxemJilg_9uewSTTCQE9vobsu-P4EmSIKexXNLo,3782
|
92
|
+
primitive-0.1.60.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
93
|
+
primitive-0.1.60.dist-info/entry_points.txt,sha256=p1K8DMCWka5FqLlqP1sPek5Uovy9jq8u51gUsP-z334,48
|
94
|
+
primitive-0.1.60.dist-info/licenses/LICENSE.txt,sha256=B8kmQMJ2sxYygjCLBk770uacaMci4mPSoJJ8WoDBY_c,1098
|
95
|
+
primitive-0.1.60.dist-info/RECORD,,
|
@@ -1,53 +0,0 @@
|
|
1
|
-
primitive/__about__.py,sha256=S0YUSrE8kYLnnrDEf3Zg8iyjiV8CQb2jsfZ4uoquTtc,130
|
2
|
-
primitive/__init__.py,sha256=bwKdgggKNVssJFVPfKSxqFMz4IxSr54WWbmiZqTMPNI,106
|
3
|
-
primitive/cli.py,sha256=VQPSewC6ouGdEG9W1gllawGJTydpOY0Lzg7LURXcqQg,2374
|
4
|
-
primitive/client.py,sha256=vSJkifx450czuLvu0f2o-viSCC0p2f1UicA-2P5cJAw,2188
|
5
|
-
primitive/agent/actions.py,sha256=BnGHzh63R4ST_EqEB_hYEOzVwbzEaGKOZTaZo0vb6Vg,5818
|
6
|
-
primitive/agent/commands.py,sha256=-dVDilELfkGfbZB7qfEPs77Dm1oT62qJj4tsIk4KoxI,254
|
7
|
-
primitive/agent/process.py,sha256=2ZY3YoJHvoukrsCAZIt-AF2YKY4HEO5_jWji5K3W9fM,2267
|
8
|
-
primitive/agent/provision.py,sha256=3EEzOV-ria6zf-pvfNddad1lzzd1QmfKInTIjmwX71Y,1673
|
9
|
-
primitive/agent/runner.py,sha256=wkvXjXxD7dg0XeZIvatpI12RSifYzRYUIL9NX42oRus,6876
|
10
|
-
primitive/agent/uploader.py,sha256=5ZxonvRlMGRVBYx3hPEaWiPio5lMPi_zhtxz64V5S-A,2379
|
11
|
-
primitive/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
-
primitive/auth/actions.py,sha256=2vZEC3LLAXj6eBBmt_2OEDEcBIb3uLkkNjgbZTIaQsY,1095
|
13
|
-
primitive/auth/commands.py,sha256=JahUq0E2e7Xa-FX1WEUv7TgM6ieDvNH4VwRRtxAW7HE,2340
|
14
|
-
primitive/daemons/actions.py,sha256=Nt3yNtbBhen0jK4sRsH_N7AP3UBuyL48VaUhtC7wYq8,2015
|
15
|
-
primitive/daemons/commands.py,sha256=-Muh-6ib4uAVtPn_67AcMrDwuCwYlCnRQozCi2Xurmk,1726
|
16
|
-
primitive/daemons/launch_agents.py,sha256=qovt32gwpjGDd82z_SY5EGCUjaUyNA49pZFajZsw3eE,4796
|
17
|
-
primitive/daemons/launch_service.py,sha256=FPB9qKEjhllRfEpct0ng2L9lpIaGJbQwn1JdFT8uBA8,5600
|
18
|
-
primitive/files/actions.py,sha256=3AOGLEUeplNlkKkyi1QajzxMc93Adh5jRQ8SQHFlJeU,2889
|
19
|
-
primitive/files/commands.py,sha256=DDizo3xJnU3KLUBTMeeM72viVpnJinLwxs84tmqKhqo,810
|
20
|
-
primitive/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
-
primitive/git/actions.py,sha256=OTuGRXfjop9u1LtNaBen87mEU6ROeoa_MDgBbB2l6ig,1428
|
22
|
-
primitive/git/commands.py,sha256=64B2STTOn0dwVDmJHqEwekmIqKMfSyBBFwKg29Wt8Aw,1230
|
23
|
-
primitive/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
-
primitive/graphql/sdk.py,sha256=BhCGmDtc4sNnH8CxbQSJyFwOZ-ZSqMtjsxMB3JRBhPw,1456
|
25
|
-
primitive/hardware/actions.py,sha256=QwVElFCrGbA27qagapHRxVpf0vkpKu6bNcqCQyYpQkY,18968
|
26
|
-
primitive/hardware/commands.py,sha256=QE7LLeFdfOqlvz3JwdwJJRZAY3fHI1zB9kYmmDajpq0,1477
|
27
|
-
primitive/jobs/actions.py,sha256=xg5-ALJEAtculnUIp-avYYJ5hONkl9fWFL83orAs6IQ,8194
|
28
|
-
primitive/jobs/commands.py,sha256=MxPCkBEYW_eLNqgCRYeyj7ZcLOFAWfpVZlqDR2Y_S0o,830
|
29
|
-
primitive/lint/actions.py,sha256=tWsrht1dowGprcZjEUtjCJzozEQmh9sv2_C2__YHIOI,2825
|
30
|
-
primitive/lint/commands.py,sha256=3CZvkOEMpJspJWmaQzA5bpPKx0_VCijQIXA9l-eTnZE,487
|
31
|
-
primitive/organizations/actions.py,sha256=fNVR0qx9opzMpzGn6lHBy5BqLhIwid1ZepxdtpelZwo,2310
|
32
|
-
primitive/organizations/commands.py,sha256=_dwgVEJCqMa5VgB_7P1wLPFc0AuT1p9dtyR9JRr4kpw,487
|
33
|
-
primitive/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
primitive/projects/actions.py,sha256=wkQRMbMWRca0wnMKv6Cqh4t6BRCwIorS5ZpS7rMlSbU,2103
|
35
|
-
primitive/projects/commands.py,sha256=Fqqgpi4cm6zOgkHK--0F0hiiIj32BmgZ-h1MydmWwdE,464
|
36
|
-
primitive/sim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
-
primitive/sim/actions.py,sha256=MkhiAH5QvF2jbnpgWL29HeSrTYiSW0UJpql2wZ4q18w,4900
|
38
|
-
primitive/sim/commands.py,sha256=8PaOfL1MO6qxTn7mNVRnBU1X2wa3gk_mlbAhBW6MnI0,591
|
39
|
-
primitive/utils/actions.py,sha256=HOFrmM3-0A_A3NS84MqrZ6JmQEiiPSoDqEeuu6b_qfQ,196
|
40
|
-
primitive/utils/auth.py,sha256=TtJKTR6tLmNrtWbOjJI-KJh4ZSJ1uG7ApE9GcY63m00,836
|
41
|
-
primitive/utils/cache.py,sha256=hDVpEL2TePrWOH6q7Me_Oi-DH_viFrRxrVta-z4wBhM,1295
|
42
|
-
primitive/utils/config.py,sha256=DlFM5Nglo22WPtbpZSVtH7NX-PTMaKYlcrUE7GPRG4c,1058
|
43
|
-
primitive/utils/files.py,sha256=Yv__bQes3YIlzhOT9kVxtYhoA5CmUjPSvphl9PZ41k4,867
|
44
|
-
primitive/utils/git.py,sha256=1qNOu8X-33CavmrD580BmrFhD_WVO9PGWHUUboXJR_g,663
|
45
|
-
primitive/utils/memory_size.py,sha256=4xfha21kW82nFvOTtDFx9Jk2ZQoEhkfXii-PGNTpIUk,3058
|
46
|
-
primitive/utils/printer.py,sha256=f1XUpqi5dkTL3GWvYRUGlSwtj2IxU1q745T4Fxo7Tn4,370
|
47
|
-
primitive/utils/shell.py,sha256=-7UjQaBqSGHzEEyX8pNjeYFFP0P3lVnDV0OkgPz1qHU,1050
|
48
|
-
primitive/utils/verible.py,sha256=r7c_hfqvL0UicMmIzK3Cy_BfZI1ZpcfBeLqKEWFWqJo,2252
|
49
|
-
primitive-0.1.58.dist-info/METADATA,sha256=3QDuLyoZeKRlghEHBplLVLthic-a3o64edGzI3XHmzE,3782
|
50
|
-
primitive-0.1.58.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
51
|
-
primitive-0.1.58.dist-info/entry_points.txt,sha256=p1K8DMCWka5FqLlqP1sPek5Uovy9jq8u51gUsP-z334,48
|
52
|
-
primitive-0.1.58.dist-info/licenses/LICENSE.txt,sha256=B8kmQMJ2sxYygjCLBk770uacaMci4mPSoJJ8WoDBY_c,1098
|
53
|
-
primitive-0.1.58.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|