yellowdog-python-examples 8.3.1__tar.gz → 8.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/PKG-INFO +3 -3
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/README.md +1 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/requirements.txt +2 -2
- yellowdog_python_examples-8.4.1/yellowdog_cli/__init__.py +1 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/follow.py +5 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/show.py +26 -1
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/submit.py +6 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/args.py +14 -1
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/config_types.py +1 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/csv_data.py +2 -2
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/entity_utils.py +14 -9
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/load_config.py +5 -4
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/property_names.py +2 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/settings.py +1 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/variables.py +9 -2
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_python_examples.egg-info/PKG-INFO +3 -3
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_python_examples.egg-info/requires.txt +2 -2
- yellowdog_python_examples-8.3.1/yellowdog_cli/__init__.py +0 -1
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/LICENSE +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/PYPI_README.md +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/pyproject.toml +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/setup.cfg +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_create_remove.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_demos.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_dryruns.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_entrypoints.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_gui.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_list.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_objects.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_variable_processing.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/abort.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/admin.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/application.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/boost.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/cancel.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/cloudwizard.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/compare.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/create.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/delete.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/download.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/finish.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/format_json.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/hold.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/instantiate.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/jsonnet2json.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/list.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/provision.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/remove.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/resize.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/shutdown.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/start.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/terminate.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/upload.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/__init__.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/check_imports.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/cloudwizard_aws.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/cloudwizard_aws_types.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/cloudwizard_azure.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/cloudwizard_common.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/cloudwizard_gcp.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/compact_json.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/follow_utils.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/interactive.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/items.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/load_resources.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/misc_utils.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/printing.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/provision_utils.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/rich_console_input_fixed.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/start_hold_common.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/submit_utils.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/type_check.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/upload_utils.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/validate_properties.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/wrapper.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/ydid_utils.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/version.py +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_python_examples.egg-info/SOURCES.txt +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_python_examples.egg-info/dependency_links.txt +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_python_examples.egg-info/entry_points.txt +0 -0
- {yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_python_examples.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yellowdog-python-examples
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.4.1
|
|
4
4
|
Summary: Python CLI commands using the YellowDog Python SDK
|
|
5
5
|
Author-email: YellowDog Limited <support@yellowdog.co>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -25,8 +25,8 @@ Requires-Dist: python-dotenv
|
|
|
25
25
|
Requires-Dist: requests
|
|
26
26
|
Requires-Dist: rich==13.9.4
|
|
27
27
|
Requires-Dist: tabulate>=0.9.0
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist: yellowdog-sdk>=
|
|
28
|
+
Requires-Dist: tomli>=2.4.0
|
|
29
|
+
Requires-Dist: yellowdog-sdk>=13.1.0
|
|
30
30
|
Provides-Extra: jsonnet
|
|
31
31
|
Requires-Dist: jsonnet; extra == "jsonnet"
|
|
32
32
|
Provides-Extra: cloudwizard
|
|
@@ -622,6 +622,7 @@ All properties are optional except for **`taskType`** (or **`taskTypes`**).
|
|
|
622
622
|
| `csvFiles` | A list of CSV files used to derive Task data. E.g. `["file.csv", "file_2.csv:2]`. | Yes | | | |
|
|
623
623
|
| `dependencies` | The names of other Task Groups within the same Work Requirement that must be successfully completed before the Task Group is started. E.g. `["task_group_1", "task_group_2"]`. | | | Yes | |
|
|
624
624
|
| `dependentOn` | [Deprecated in favour of `dependencies`] The name of another Task Group within the same Work Requirement that must be successfully completed before the Task Group is started. E.g. `"task_group_1"`. | | | Yes | |
|
|
625
|
+
| `disablePreallocation` | If `true`, tasks are only allocated to nodes as workers become idle and are not queued on the node. Default: `false`. | Yes | Yes | Yes | |
|
|
625
626
|
| `dockerEnvironment` | The environment to be passed to a Docker container. Only used by the `docker` Task Type. E.g., JSON: `{"VAR_1": "abc"}`, TOML: `{VAR_1 = "abc", VAR_2 = "def"}`. | Yes | Yes | Yes | Yes |
|
|
626
627
|
| `dockerOptions` | Additional options to be passed to the docker run command. Only used by the `docker` Task Type. E.g.,`["--runtime nvidia, "--gpus all"]`. | Yes | Yes | Yes | Yes |
|
|
627
628
|
| `dockerPassword` | The password for the Docker container registry; only used by the `docker` Task Type. E,g., `"my_password"`. | Yes | Yes | Yes | Yes |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "8.4.1"
|
|
@@ -5,11 +5,16 @@ A script to follow event streams.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from yellowdog_cli.utils.follow_utils import follow_ids
|
|
8
|
+
from yellowdog_cli.utils.printing import print_info
|
|
8
9
|
from yellowdog_cli.utils.wrapper import ARGS_PARSER, main_wrapper
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
@main_wrapper
|
|
12
13
|
def main():
|
|
14
|
+
if len(ARGS_PARSER.yellowdog_ids) == 0:
|
|
15
|
+
print_info("No YellowDog IDs to follow")
|
|
16
|
+
return
|
|
17
|
+
|
|
13
18
|
follow_ids(ARGS_PARSER.yellowdog_ids, ARGS_PARSER.auto_cr)
|
|
14
19
|
|
|
15
20
|
|
|
@@ -16,6 +16,7 @@ from yellowdog_cli.utils.entity_utils import (
|
|
|
16
16
|
from yellowdog_cli.utils.printing import (
|
|
17
17
|
print_error,
|
|
18
18
|
print_info,
|
|
19
|
+
print_json,
|
|
19
20
|
print_to_file,
|
|
20
21
|
print_yd_object,
|
|
21
22
|
)
|
|
@@ -32,13 +33,37 @@ from yellowdog_cli.utils.settings import (
|
|
|
32
33
|
RN_ROLE,
|
|
33
34
|
RN_SOURCE_TEMPLATE,
|
|
34
35
|
)
|
|
35
|
-
from yellowdog_cli.utils.
|
|
36
|
+
from yellowdog_cli.utils.variables import get_user_variable
|
|
37
|
+
from yellowdog_cli.utils.wrapper import ARGS_PARSER, CLIENT, CONFIG_COMMON, main_wrapper
|
|
36
38
|
from yellowdog_cli.utils.ydid_utils import YDIDType, get_ydid_type
|
|
37
39
|
|
|
38
40
|
|
|
39
41
|
@main_wrapper
|
|
40
42
|
def main():
|
|
41
43
|
|
|
44
|
+
if ARGS_PARSER.parse_config:
|
|
45
|
+
username = get_user_variable("username")
|
|
46
|
+
if ARGS_PARSER.quiet:
|
|
47
|
+
# Output properties in JSON format
|
|
48
|
+
print_json(
|
|
49
|
+
{
|
|
50
|
+
"namespace": CONFIG_COMMON.namespace,
|
|
51
|
+
"tag": CONFIG_COMMON.name_tag,
|
|
52
|
+
"username": username,
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
else:
|
|
56
|
+
# Print properties inline
|
|
57
|
+
print_info("Showing configuration values:")
|
|
58
|
+
print(f" namespace = {CONFIG_COMMON.namespace}")
|
|
59
|
+
print(f" tag = {CONFIG_COMMON.name_tag}")
|
|
60
|
+
print(f" username = {username}")
|
|
61
|
+
return
|
|
62
|
+
|
|
63
|
+
if len(ARGS_PARSER.yellowdog_ids) == 0:
|
|
64
|
+
print_info("No YellowDog IDs to show")
|
|
65
|
+
return
|
|
66
|
+
|
|
42
67
|
# Generate a JSON list of resources if there are multiple YDIDs
|
|
43
68
|
# and the 'quiet' option is enabled
|
|
44
69
|
generate_json_list = len(ARGS_PARSER.yellowdog_ids) > 1 and ARGS_PARSER.quiet
|
|
@@ -544,6 +544,12 @@ def create_task_group(
|
|
|
544
544
|
retryableErrors=generate_task_error_matchers_list(
|
|
545
545
|
config_wr, wr_data, task_group_data
|
|
546
546
|
),
|
|
547
|
+
disablePreallocation=check_bool(
|
|
548
|
+
task_group_data.get(
|
|
549
|
+
DISABLE_PREALLOCATION,
|
|
550
|
+
wr_data.get(DISABLE_PREALLOCATION, config_wr.disable_prealloaction),
|
|
551
|
+
)
|
|
552
|
+
),
|
|
547
553
|
)
|
|
548
554
|
ctttl_data = check_float_or_int(
|
|
549
555
|
task_group_data.get(
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/args.py
RENAMED
|
@@ -994,13 +994,21 @@ class CLIParser:
|
|
|
994
994
|
verb = "follow" if "follow" in sys.argv[0] else "show"
|
|
995
995
|
parser.add_argument(
|
|
996
996
|
"yellowdog_ids",
|
|
997
|
-
nargs="
|
|
997
|
+
nargs="*",
|
|
998
998
|
default=[],
|
|
999
999
|
metavar="<yellowdog-id>",
|
|
1000
1000
|
type=str,
|
|
1001
1001
|
help=f"the YellowDog ID(s) of the item(s) to {verb}",
|
|
1002
1002
|
)
|
|
1003
1003
|
|
|
1004
|
+
if any(module in sys.argv[0] for module in ["show"]):
|
|
1005
|
+
parser.add_argument(
|
|
1006
|
+
"--parse-config",
|
|
1007
|
+
action="store_true",
|
|
1008
|
+
required=False,
|
|
1009
|
+
help="parse the config and return namespace, tag, username, then exit",
|
|
1010
|
+
)
|
|
1011
|
+
|
|
1004
1012
|
if any(
|
|
1005
1013
|
module in sys.argv[0]
|
|
1006
1014
|
for module in ["upload", "submit", "provision", "instantiate"]
|
|
@@ -1311,6 +1319,11 @@ class CLIParser:
|
|
|
1311
1319
|
def print_pid(self) -> Optional[bool]:
|
|
1312
1320
|
return self.args.print_pid
|
|
1313
1321
|
|
|
1322
|
+
@property
|
|
1323
|
+
@allow_missing_attribute
|
|
1324
|
+
def parse_config(self) -> Optional[bool]:
|
|
1325
|
+
return self.args.parse_config
|
|
1326
|
+
|
|
1314
1327
|
@property
|
|
1315
1328
|
@allow_missing_attribute
|
|
1316
1329
|
def no_config(self) -> Optional[bool]:
|
|
@@ -26,6 +26,7 @@ class ConfigWorkRequirement:
|
|
|
26
26
|
batch_allocation: Optional[bool] = None
|
|
27
27
|
completed_task_ttl: Optional[float] = None # In minutes
|
|
28
28
|
csv_files: Optional[List[str]] = None
|
|
29
|
+
disable_prealloaction: Optional[bool] = None
|
|
29
30
|
docker_env: Optional[Dict] = None
|
|
30
31
|
docker_options: Optional[List] = None
|
|
31
32
|
docker_password: Optional[str] = None
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/csv_data.py
RENAMED
|
@@ -10,7 +10,7 @@ from json import load as json_load
|
|
|
10
10
|
from os.path import relpath
|
|
11
11
|
from typing import Dict, List, Optional, Tuple
|
|
12
12
|
|
|
13
|
-
from
|
|
13
|
+
from tomli import load as toml_load
|
|
14
14
|
|
|
15
15
|
from yellowdog_cli.utils.args import ARGS_PARSER
|
|
16
16
|
from yellowdog_cli.utils.config_types import ConfigWorkRequirement
|
|
@@ -165,7 +165,7 @@ def load_toml_file_with_csv_task_expansion(
|
|
|
165
165
|
data.
|
|
166
166
|
"""
|
|
167
167
|
|
|
168
|
-
with open(resolve_filename(files_directory, toml_file), "
|
|
168
|
+
with open(resolve_filename(files_directory, toml_file), "rb") as f:
|
|
169
169
|
wr_data = toml_load(f)
|
|
170
170
|
|
|
171
171
|
return perform_csv_task_expansion(wr_data, csv_files, files_directory)
|
|
@@ -921,7 +921,7 @@ def get_application_id_by_name(client: PlatformClient, app_name: str) -> Optiona
|
|
|
921
921
|
@lru_cache
|
|
922
922
|
def get_application_details(client: PlatformClient) -> ApplicationDetails:
|
|
923
923
|
"""
|
|
924
|
-
Load and cache the Application's details
|
|
924
|
+
Load and cache the Application's details.
|
|
925
925
|
"""
|
|
926
926
|
return client.application_client.get_application_details()
|
|
927
927
|
|
|
@@ -952,23 +952,28 @@ def get_all_roles_and_namespaces_for_application(
|
|
|
952
952
|
client: PlatformClient, application_id: str
|
|
953
953
|
) -> Dict:
|
|
954
954
|
"""
|
|
955
|
-
Get a list of roles and the namespaces to which they apply, for a given
|
|
955
|
+
Get a list of roles and the namespaces to which they apply, for a given
|
|
956
|
+
application.
|
|
957
|
+
|
|
956
958
|
Returns {role_name: [namespace, ...]}, sorted by role name.
|
|
957
959
|
"""
|
|
958
|
-
# Iterate through groups, roles, accumulate namespaces
|
|
960
|
+
# Iterate through groups, roles, accumulate unique namespaces
|
|
959
961
|
roles = dict()
|
|
960
962
|
for group in get_application_groups(client, application_id):
|
|
961
963
|
for role in group.roles:
|
|
962
964
|
if roles.get(role.role.name) is None:
|
|
963
|
-
|
|
965
|
+
# Set of namespaces to suppress duplicates
|
|
966
|
+
roles[role.role.name] = set()
|
|
964
967
|
if role.scope.global_:
|
|
965
|
-
roles[role.role.name]
|
|
968
|
+
roles[role.role.name].update(["GLOBAL"])
|
|
966
969
|
else:
|
|
967
|
-
roles[role.role.name]
|
|
968
|
-
namespace.namespace for namespace in role.scope.namespaces
|
|
969
|
-
|
|
970
|
+
roles[role.role.name].update(
|
|
971
|
+
[namespace.namespace for namespace in role.scope.namespaces]
|
|
972
|
+
)
|
|
970
973
|
|
|
971
|
-
return {
|
|
974
|
+
return {
|
|
975
|
+
role: sorted(list(namespaces)) for role, namespaces in sorted(roles.items())
|
|
976
|
+
}
|
|
972
977
|
|
|
973
978
|
|
|
974
979
|
def clear_application_caches():
|
|
@@ -9,7 +9,7 @@ from pathlib import Path
|
|
|
9
9
|
from sys import exit
|
|
10
10
|
from typing import Dict
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from tomli import TOMLDecodeError
|
|
13
13
|
|
|
14
14
|
from yellowdog_cli.utils.args import ARGS_PARSER
|
|
15
15
|
from yellowdog_cli.utils.config_types import (
|
|
@@ -102,7 +102,7 @@ else:
|
|
|
102
102
|
CONFIG_TOML = {COMMON_SECTION: {}}
|
|
103
103
|
CONFIG_FILE_DIR = os.getcwd()
|
|
104
104
|
|
|
105
|
-
except (PermissionError,
|
|
105
|
+
except (PermissionError, TOMLDecodeError) as e:
|
|
106
106
|
print_error(
|
|
107
107
|
f"Unable to load configuration data from '{CONFIG_FILE}': {e}",
|
|
108
108
|
)
|
|
@@ -196,7 +196,7 @@ def load_config_common() -> ConfigCommon:
|
|
|
196
196
|
print_info(
|
|
197
197
|
f"Setting environment variable '{requests_ca_bundle}' to '{certificates}'"
|
|
198
198
|
)
|
|
199
|
-
os.environ[
|
|
199
|
+
os.environ[requests_ca_bundle] = certificates
|
|
200
200
|
|
|
201
201
|
return ConfigCommon(
|
|
202
202
|
# Required
|
|
@@ -222,7 +222,7 @@ def import_toml(filename: str) -> Dict:
|
|
|
222
222
|
try:
|
|
223
223
|
common_config: Dict = load_toml_file_with_variable_substitutions(filename)
|
|
224
224
|
return common_config[COMMON_SECTION]
|
|
225
|
-
except (FileNotFoundError, PermissionError,
|
|
225
|
+
except (FileNotFoundError, PermissionError, TOMLDecodeError) as e:
|
|
226
226
|
print_error(f"Unable to load imported common configuration data: {e}")
|
|
227
227
|
exit(1)
|
|
228
228
|
|
|
@@ -313,6 +313,7 @@ def load_config_work_requirement() -> ConfigWorkRequirement:
|
|
|
313
313
|
upload_taskoutput=wr_section.get(UPLOAD_TASKOUTPUT, False),
|
|
314
314
|
completed_task_ttl=wr_section.get(COMPLETED_TASK_TTL, None),
|
|
315
315
|
csv_files=csv_files,
|
|
316
|
+
disable_prealloaction=wr_section.get(DISABLE_PREALLOCATION, None),
|
|
316
317
|
docker_env=wr_section.get(DOCKER_ENV, None),
|
|
317
318
|
docker_options=wr_section.get(DOCKER_OPTIONS, None),
|
|
318
319
|
docker_password=wr_section.get(DOCKER_PASSWORD, None),
|
|
@@ -15,6 +15,7 @@ COMPUTE_REQUIREMENT_SECTION = "computeRequirement" # No value
|
|
|
15
15
|
CR_TAG = "requirementTag" # String
|
|
16
16
|
CSV_FILE = "csvFile" # String
|
|
17
17
|
CSV_FILES = "csvFiles" # List of Strings
|
|
18
|
+
DISABLE_PREALLOCATION = "disablePreallocation"
|
|
18
19
|
DEPENDENCIES = "dependencies" # List of Strings
|
|
19
20
|
DEPENDENT_ON = "dependentOn" # String (Deprecated)
|
|
20
21
|
DIRECTORY_NAME = "directoryName" # String
|
|
@@ -130,6 +131,7 @@ ALL_KEYS = [
|
|
|
130
131
|
CR_TAG,
|
|
131
132
|
CSV_FILE,
|
|
132
133
|
CSV_FILES,
|
|
134
|
+
DISABLE_PREALLOCATION,
|
|
133
135
|
DEPENDENCIES,
|
|
134
136
|
DEPENDENT_ON,
|
|
135
137
|
DIRECTORY_NAME,
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/variables.py
RENAMED
|
@@ -12,7 +12,7 @@ from json import loads as json_loads
|
|
|
12
12
|
from random import randint
|
|
13
13
|
from typing import Dict, List, Optional, Union
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from tomli import load as toml_load
|
|
16
16
|
|
|
17
17
|
from yellowdog_cli.utils.args import ARGS_PARSER
|
|
18
18
|
from yellowdog_cli.utils.check_imports import check_jsonnet_import
|
|
@@ -130,6 +130,13 @@ def add_or_update_substitution(key: str, value: str):
|
|
|
130
130
|
VARIABLE_SUBSTITUTIONS[key] = str(value)
|
|
131
131
|
|
|
132
132
|
|
|
133
|
+
def get_user_variable(variable_name: str) -> Optional[str]:
|
|
134
|
+
"""
|
|
135
|
+
Get the value of a variable.
|
|
136
|
+
"""
|
|
137
|
+
return VARIABLE_SUBSTITUTIONS.get(variable_name)
|
|
138
|
+
|
|
139
|
+
|
|
133
140
|
def process_variable_substitutions_insitu(
|
|
134
141
|
data: Union[Dict, List], prefix: str = "", postfix: str = ""
|
|
135
142
|
) -> Union[Dict, List]:
|
|
@@ -493,7 +500,7 @@ def load_toml_file_with_variable_substitutions(
|
|
|
493
500
|
Takes a TOML filename and returns a dictionary with its variable
|
|
494
501
|
substitutions processed.
|
|
495
502
|
"""
|
|
496
|
-
with open(resolve_filename(files_directory, filename), "
|
|
503
|
+
with open(resolve_filename(files_directory, filename), "rb") as f:
|
|
497
504
|
config = toml_load(f)
|
|
498
505
|
|
|
499
506
|
# Add any variable substitutions in the TOML file before processing the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yellowdog-python-examples
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.4.1
|
|
4
4
|
Summary: Python CLI commands using the YellowDog Python SDK
|
|
5
5
|
Author-email: YellowDog Limited <support@yellowdog.co>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -25,8 +25,8 @@ Requires-Dist: python-dotenv
|
|
|
25
25
|
Requires-Dist: requests
|
|
26
26
|
Requires-Dist: rich==13.9.4
|
|
27
27
|
Requires-Dist: tabulate>=0.9.0
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist: yellowdog-sdk>=
|
|
28
|
+
Requires-Dist: tomli>=2.4.0
|
|
29
|
+
Requires-Dist: yellowdog-sdk>=13.1.0
|
|
30
30
|
Provides-Extra: jsonnet
|
|
31
31
|
Requires-Dist: jsonnet; extra == "jsonnet"
|
|
32
32
|
Provides-Extra: cloudwizard
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "8.3.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_create_remove.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/tests/test_entrypoints.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/application.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/cloudwizard.py
RENAMED
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/compare.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/download.py
RENAMED
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/format_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/instantiate.py
RENAMED
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/jsonnet2json.py
RENAMED
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/provision.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/shutdown.py
RENAMED
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/terminate.py
RENAMED
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/__init__.py
RENAMED
|
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
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/items.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/printing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/utils/wrapper.py
RENAMED
|
File without changes
|
|
File without changes
|
{yellowdog_python_examples-8.3.1 → yellowdog_python_examples-8.4.1}/yellowdog_cli/version.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|