bluer-objects 6.255.1__py3-none-any.whl → 6.268.1__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.
Potentially problematic release.
This version of bluer-objects might be problematic. Click here for more details.
- bluer_objects/.abcli/gif.sh +18 -0
- bluer_objects/.abcli/ls.sh +15 -9
- bluer_objects/.abcli/tests/help.sh +1 -4
- bluer_objects/.abcli/tests/ls.sh +5 -1
- bluer_objects/.abcli/tests/open.sh +11 -0
- bluer_objects/.abcli/tests/open_gif_open.sh +14 -0
- bluer_objects/__init__.py +1 -1
- bluer_objects/config.env +3 -1
- bluer_objects/env.py +2 -0
- bluer_objects/help/functions.py +1 -1
- bluer_objects/help/gif.py +24 -0
- bluer_objects/help/ls.py +15 -5
- bluer_objects/metadata/__init__.py +1 -0
- bluer_objects/metadata/flatten.py +27 -0
- bluer_objects/storage/__init__.py +10 -0
- bluer_objects/storage/__main__.py +17 -6
- bluer_objects/storage/base.py +30 -0
- bluer_objects/storage/s3.py +57 -35
- bluer_objects/tests/test_env.py +2 -0
- bluer_objects/tests/test_metadata_flatten.py +109 -0
- {bluer_objects-6.255.1.dist-info → bluer_objects-6.268.1.dist-info}/METADATA +2 -2
- {bluer_objects-6.255.1.dist-info → bluer_objects-6.268.1.dist-info}/RECORD +25 -25
- bluer_objects/.abcli/storage/download_file.sh +0 -9
- bluer_objects/.abcli/storage/exists.sh +0 -8
- bluer_objects/.abcli/storage/list.sh +0 -8
- bluer_objects/.abcli/storage/rm.sh +0 -11
- {bluer_objects-6.255.1.dist-info → bluer_objects-6.268.1.dist-info}/WHEEL +0 -0
- {bluer_objects-6.255.1.dist-info → bluer_objects-6.268.1.dist-info}/licenses/LICENSE +0 -0
- {bluer_objects-6.255.1.dist-info → bluer_objects-6.268.1.dist-info}/top_level.txt +0 -0
bluer_objects/.abcli/gif.sh
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
function bluer_objects_gif() {
|
|
4
4
|
local options=$1
|
|
5
|
+
local do_open=$(bluer_ai_option_int "$options" open 0)
|
|
6
|
+
if [[ "$do_open" == 1 ]]; then
|
|
7
|
+
local options=$2
|
|
8
|
+
local do_download=$(bluer_ai_option_int "$options" download 0)
|
|
9
|
+
|
|
10
|
+
local object_name=$(bluer_ai_clarify_object $3 .)
|
|
11
|
+
local filename=$(bluer_ai_option "$options" filename $object_name.gif)
|
|
12
|
+
|
|
13
|
+
[[ "$do_download" == 1 ]] &&
|
|
14
|
+
bluer_objects_download \
|
|
15
|
+
filename=$filename \
|
|
16
|
+
$object_name
|
|
17
|
+
|
|
18
|
+
bluer_ai_browse $ABCLI_OBJECT_ROOT/$object_name/$filename
|
|
19
|
+
|
|
20
|
+
return
|
|
21
|
+
fi
|
|
22
|
+
|
|
5
23
|
local do_dryrun=$(bluer_ai_option_int "$options" dryrun 0)
|
|
6
24
|
local do_download=$(bluer_ai_option_int "$options" download $(bluer_ai_not $do_dryrun))
|
|
7
25
|
local do_upload=$(bluer_ai_option_int "$options" upload $(bluer_ai_not $do_dryrun))
|
bluer_objects/.abcli/ls.sh
CHANGED
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
function bluer_objects_ls() {
|
|
4
4
|
local options=$1
|
|
5
|
-
local where=$(bluer_ai_option_choice "$options" cloud,local)
|
|
6
|
-
|
|
7
|
-
if [[ -z "$where" ]]; then
|
|
8
|
-
ls -1 "$@"
|
|
9
|
-
else
|
|
10
|
-
local object_name=$(bluer_ai_clarify_object $2 .)
|
|
5
|
+
local where=$(bluer_ai_option_choice "$options" cloud,local local)
|
|
6
|
+
local objects=$(bluer_ai_option_int "$options" objects 0)
|
|
11
7
|
|
|
8
|
+
if [[ "$objects" == 1 ]]; then
|
|
12
9
|
python3 -m bluer_objects.storage \
|
|
13
|
-
|
|
14
|
-
--object_name $object_name \
|
|
10
|
+
ls_objects \
|
|
15
11
|
--where $where \
|
|
16
|
-
"${@:
|
|
12
|
+
"${@:2}"
|
|
13
|
+
|
|
14
|
+
return
|
|
17
15
|
fi
|
|
16
|
+
|
|
17
|
+
local object_name=$(bluer_ai_clarify_object $2 .)
|
|
18
|
+
|
|
19
|
+
python3 -m bluer_objects.storage \
|
|
20
|
+
ls \
|
|
21
|
+
--object_name $object_name \
|
|
22
|
+
--where $where \
|
|
23
|
+
"${@:3}"
|
|
18
24
|
}
|
|
@@ -29,6 +29,7 @@ function test_bluer_objects_help() {
|
|
|
29
29
|
"@download" \
|
|
30
30
|
\
|
|
31
31
|
"@gif" \
|
|
32
|
+
"@gif open" \
|
|
32
33
|
\
|
|
33
34
|
"@ls" \
|
|
34
35
|
\
|
|
@@ -69,10 +70,6 @@ function test_bluer_objects_help() {
|
|
|
69
70
|
\
|
|
70
71
|
"@storage" \
|
|
71
72
|
"@storage clear" \
|
|
72
|
-
"@storage download_file" \
|
|
73
|
-
"@storage exists" \
|
|
74
|
-
"@storage list" \
|
|
75
|
-
"@storage rm" \
|
|
76
73
|
"@storage status" \
|
|
77
74
|
\
|
|
78
75
|
"@upload" \
|
bluer_objects/.abcli/tests/ls.sh
CHANGED
|
@@ -20,5 +20,9 @@ function test_bluer_objects_ls() {
|
|
|
20
20
|
[[ $? -ne 0 ]] && return 1
|
|
21
21
|
bluer_ai_hr
|
|
22
22
|
|
|
23
|
-
bluer_objects_ls
|
|
23
|
+
bluer_objects_ls cloud,objects --prefix 2025-09
|
|
24
|
+
[[ $? -ne 0 ]] && return 1
|
|
25
|
+
bluer_ai_hr
|
|
26
|
+
|
|
27
|
+
bluer_objects_ls local,objects --prefix 2025-09
|
|
24
28
|
}
|
bluer_objects/__init__.py
CHANGED
bluer_objects/config.env
CHANGED
bluer_objects/env.py
CHANGED
|
@@ -61,3 +61,5 @@ MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY = get_env("MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY", 1
|
|
|
61
61
|
WEBDAV_HOSTNAME = get_env("WEBDAV_HOSTNAME")
|
|
62
62
|
WEBDAV_LOGIN = get_env("WEBDAV_LOGIN")
|
|
63
63
|
WEBDAV_PASSWORD = get_env("WEBDAV_PASSWORD")
|
|
64
|
+
|
|
65
|
+
BLUER_OBJECTS_TEST_OBJECT = get_env("BLUER_OBJECTS_TEST_OBJECT")
|
bluer_objects/help/functions.py
CHANGED
|
@@ -4,7 +4,7 @@ from bluer_objects import ALIAS
|
|
|
4
4
|
from bluer_objects.help.clone import help_clone
|
|
5
5
|
from bluer_objects.help.create_test_asset import help_create_test_asset
|
|
6
6
|
from bluer_objects.help.download import help_download
|
|
7
|
-
from bluer_objects.help.gif import help_gif
|
|
7
|
+
from bluer_objects.help.gif import help_functions as help_gif
|
|
8
8
|
from bluer_objects.help.host import help_functions as help_host
|
|
9
9
|
from bluer_objects.help.ls import help_ls
|
|
10
10
|
from bluer_objects.help.metadata import help_functions as help_metadata
|
bluer_objects/help/gif.py
CHANGED
|
@@ -26,3 +26,27 @@ def help_gif(
|
|
|
26
26
|
"generate <object-name>.gif.",
|
|
27
27
|
mono=mono,
|
|
28
28
|
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def help_gif_open(
|
|
32
|
+
tokens: List[str],
|
|
33
|
+
mono: bool,
|
|
34
|
+
) -> str:
|
|
35
|
+
options = xtra("download,filename=<filename.gif>", mono=mono)
|
|
36
|
+
|
|
37
|
+
return show_usage(
|
|
38
|
+
[
|
|
39
|
+
"@gif",
|
|
40
|
+
"open",
|
|
41
|
+
f"[{options}]",
|
|
42
|
+
"[.|<object-name>]",
|
|
43
|
+
],
|
|
44
|
+
"open <object-name>.gif.",
|
|
45
|
+
mono=mono,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
help_functions = {
|
|
50
|
+
"": help_gif,
|
|
51
|
+
"open": help_gif_open,
|
|
52
|
+
}
|
bluer_objects/help/ls.py
CHANGED
|
@@ -15,20 +15,30 @@ def help_ls(
|
|
|
15
15
|
usage_1 = show_usage(
|
|
16
16
|
[
|
|
17
17
|
"@ls",
|
|
18
|
-
"cloud
|
|
19
|
-
"
|
|
18
|
+
"[cloud|local]",
|
|
19
|
+
"[.|<object-name>]",
|
|
20
20
|
]
|
|
21
21
|
+ args,
|
|
22
22
|
"ls <object-name>.",
|
|
23
23
|
mono=mono,
|
|
24
24
|
)
|
|
25
25
|
|
|
26
|
+
# ---
|
|
27
|
+
|
|
28
|
+
args = [
|
|
29
|
+
"[--delim <space>]",
|
|
30
|
+
"[--log <0>]",
|
|
31
|
+
"[--prefix <prefix>]",
|
|
32
|
+
]
|
|
33
|
+
|
|
26
34
|
usage_2 = show_usage(
|
|
27
35
|
[
|
|
28
36
|
"@ls",
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
"[cloud|local]",
|
|
38
|
+
"objects",
|
|
39
|
+
]
|
|
40
|
+
+ args,
|
|
41
|
+
"ls objects.",
|
|
32
42
|
mono=mono,
|
|
33
43
|
)
|
|
34
44
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def flatten(obj: Any) -> Any:
|
|
6
|
+
if isinstance(obj, dict):
|
|
7
|
+
return {k: flatten(v) for k, v in obj.items()}
|
|
8
|
+
|
|
9
|
+
if isinstance(obj, list):
|
|
10
|
+
return [flatten(x) for x in obj]
|
|
11
|
+
|
|
12
|
+
if isinstance(obj, tuple):
|
|
13
|
+
return tuple(flatten(x) for x in obj)
|
|
14
|
+
|
|
15
|
+
if isinstance(obj, np.ndarray):
|
|
16
|
+
return obj.tolist()
|
|
17
|
+
|
|
18
|
+
if hasattr(obj, "__dict__"):
|
|
19
|
+
return flatten(vars(obj))
|
|
20
|
+
|
|
21
|
+
if isinstance(obj, (int, float, str)):
|
|
22
|
+
return obj
|
|
23
|
+
|
|
24
|
+
try:
|
|
25
|
+
return str(obj)
|
|
26
|
+
except:
|
|
27
|
+
return obj.__class__.__name__
|
|
@@ -56,6 +56,16 @@ def ls(
|
|
|
56
56
|
)
|
|
57
57
|
|
|
58
58
|
|
|
59
|
+
def ls_objects(
|
|
60
|
+
prefix: str,
|
|
61
|
+
where: str = "local",
|
|
62
|
+
) -> Tuple[bool, List[str]]:
|
|
63
|
+
return interface.ls_objects(
|
|
64
|
+
prefix=prefix,
|
|
65
|
+
where=where,
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
59
69
|
def upload(
|
|
60
70
|
object_name: str,
|
|
61
71
|
filename: str = "",
|
|
@@ -2,6 +2,7 @@ import argparse
|
|
|
2
2
|
|
|
3
3
|
from blueness import module
|
|
4
4
|
from blueness.argparse.generic import sys_exit
|
|
5
|
+
from bluer_options.logger.config import log_list
|
|
5
6
|
|
|
6
7
|
from bluer_objects import NAME
|
|
7
8
|
from bluer_objects import storage
|
|
@@ -14,7 +15,7 @@ parser = argparse.ArgumentParser(NAME)
|
|
|
14
15
|
parser.add_argument(
|
|
15
16
|
"task",
|
|
16
17
|
type=str,
|
|
17
|
-
help="clear | download | ls | upload",
|
|
18
|
+
help="clear | download | ls | ls_objects | upload",
|
|
18
19
|
)
|
|
19
20
|
parser.add_argument(
|
|
20
21
|
"--object_name",
|
|
@@ -66,6 +67,11 @@ parser.add_argument(
|
|
|
66
67
|
default="none",
|
|
67
68
|
help=" | ".join(sorted([policy.name.lower() for policy in DownloadPolicy])),
|
|
68
69
|
)
|
|
70
|
+
parser.add_argument(
|
|
71
|
+
"--prefix",
|
|
72
|
+
type=str,
|
|
73
|
+
default="",
|
|
74
|
+
)
|
|
69
75
|
args = parser.parse_args()
|
|
70
76
|
|
|
71
77
|
delim = " " if args.delim == "space" else args.delim
|
|
@@ -88,14 +94,19 @@ elif args.task == "ls":
|
|
|
88
94
|
)
|
|
89
95
|
|
|
90
96
|
if args.log:
|
|
91
|
-
logger
|
|
92
|
-
"{:,} file(s).".format(len(list_of_files)),
|
|
93
|
-
)
|
|
94
|
-
for index, filename in enumerate(list_of_files):
|
|
95
|
-
logger.info(f"#{index+1: 4d} - {filename}")
|
|
97
|
+
log_list(logger, "", list_of_files, "file(s)", 999)
|
|
96
98
|
else:
|
|
97
99
|
print(delim.join(list_of_files))
|
|
100
|
+
elif args.task == "ls_objects":
|
|
101
|
+
success, list_of_objects = storage.ls_objects(
|
|
102
|
+
prefix=args.prefix,
|
|
103
|
+
where=args.where,
|
|
104
|
+
)
|
|
98
105
|
|
|
106
|
+
if args.log:
|
|
107
|
+
log_list(logger, "", list_of_objects, "objects(s)", 999)
|
|
108
|
+
else:
|
|
109
|
+
print(delim.join(list_of_objects))
|
|
99
110
|
elif args.task == "upload":
|
|
100
111
|
success = storage.upload(
|
|
101
112
|
object_name=args.object_name,
|
bluer_objects/storage/base.py
CHANGED
|
@@ -3,8 +3,10 @@ import glob
|
|
|
3
3
|
from typing import Tuple, List
|
|
4
4
|
|
|
5
5
|
from bluer_objects import objects
|
|
6
|
+
from bluer_objects import path
|
|
6
7
|
from bluer_objects.storage.policies import DownloadPolicy
|
|
7
8
|
from bluer_objects.logger import logger
|
|
9
|
+
from bluer_objects.env import ABCLI_OBJECT_ROOT
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
class StorageInterface:
|
|
@@ -69,6 +71,34 @@ class StorageInterface:
|
|
|
69
71
|
logger.error(f"Unknown 'where': {where}")
|
|
70
72
|
return False, []
|
|
71
73
|
|
|
74
|
+
def ls_objects(
|
|
75
|
+
self,
|
|
76
|
+
prefix: str,
|
|
77
|
+
where: str = "local",
|
|
78
|
+
) -> Tuple[bool, List[str]]:
|
|
79
|
+
if where == "local":
|
|
80
|
+
return True, sorted(
|
|
81
|
+
[
|
|
82
|
+
os.path.relpath(dirname, start=ABCLI_OBJECT_ROOT)
|
|
83
|
+
for dirname in glob.glob(
|
|
84
|
+
os.path.join(
|
|
85
|
+
ABCLI_OBJECT_ROOT,
|
|
86
|
+
"*",
|
|
87
|
+
),
|
|
88
|
+
recursive=False,
|
|
89
|
+
)
|
|
90
|
+
if not os.path.isfile(dirname)
|
|
91
|
+
and path.name(dirname).startswith(prefix)
|
|
92
|
+
]
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
if where == "cloud":
|
|
96
|
+
logger.error("not implemented")
|
|
97
|
+
return False, []
|
|
98
|
+
|
|
99
|
+
logger.error(f"Unknown 'where': {where}")
|
|
100
|
+
return False, []
|
|
101
|
+
|
|
72
102
|
def upload(
|
|
73
103
|
self,
|
|
74
104
|
object_name: str,
|
bluer_objects/storage/s3.py
CHANGED
|
@@ -31,41 +31,9 @@ class S3Interface(StorageInterface):
|
|
|
31
31
|
)
|
|
32
32
|
)
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
endpoint_url=env.S3_STORAGE_ENDPOINT_URL,
|
|
38
|
-
aws_access_key_id=env.S3_STORAGE_AWS_ACCESS_KEY_ID,
|
|
39
|
-
aws_secret_access_key=env.S3_STORAGE_AWS_SECRET_ACCESS_KEY,
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
paginator = s3.get_paginator("list_objects_v2")
|
|
43
|
-
pages = paginator.paginate(
|
|
44
|
-
Bucket=env.S3_STORAGE_BUCKET,
|
|
45
|
-
Prefix="test",
|
|
46
|
-
)
|
|
47
|
-
except Exception as e:
|
|
48
|
-
logger.error(e)
|
|
49
|
-
return False
|
|
50
|
-
|
|
51
|
-
list_of_objects = sorted(
|
|
52
|
-
list(
|
|
53
|
-
set(
|
|
54
|
-
reduce(
|
|
55
|
-
lambda x, y: x + y,
|
|
56
|
-
[
|
|
57
|
-
[
|
|
58
|
-
obj["Key"].split("/", 1)[0]
|
|
59
|
-
for obj in page.get("Contents", [])
|
|
60
|
-
]
|
|
61
|
-
for page in pages
|
|
62
|
-
],
|
|
63
|
-
[],
|
|
64
|
-
)
|
|
65
|
-
)
|
|
66
|
-
)
|
|
67
|
-
)
|
|
68
|
-
|
|
34
|
+
success, list_of_objects = self.list_of_objects(prefix="test")
|
|
35
|
+
if not success:
|
|
36
|
+
return success
|
|
69
37
|
logger.info(f"{len(list_of_objects)} object(s) to delete.")
|
|
70
38
|
|
|
71
39
|
for object_name in tqdm(list_of_objects):
|
|
@@ -188,6 +156,47 @@ class S3Interface(StorageInterface):
|
|
|
188
156
|
|
|
189
157
|
return True
|
|
190
158
|
|
|
159
|
+
def list_of_objects(
|
|
160
|
+
self,
|
|
161
|
+
prefix: str = "",
|
|
162
|
+
) -> Tuple[bool, List[str]]:
|
|
163
|
+
try:
|
|
164
|
+
s3 = boto3.client(
|
|
165
|
+
"s3",
|
|
166
|
+
endpoint_url=env.S3_STORAGE_ENDPOINT_URL,
|
|
167
|
+
aws_access_key_id=env.S3_STORAGE_AWS_ACCESS_KEY_ID,
|
|
168
|
+
aws_secret_access_key=env.S3_STORAGE_AWS_SECRET_ACCESS_KEY,
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
paginator = s3.get_paginator("list_objects_v2")
|
|
172
|
+
pages = paginator.paginate(
|
|
173
|
+
Bucket=env.S3_STORAGE_BUCKET,
|
|
174
|
+
Prefix=prefix,
|
|
175
|
+
)
|
|
176
|
+
except Exception as e:
|
|
177
|
+
logger.error(e)
|
|
178
|
+
return False, []
|
|
179
|
+
|
|
180
|
+
list_of_objects = sorted(
|
|
181
|
+
list(
|
|
182
|
+
set(
|
|
183
|
+
reduce(
|
|
184
|
+
lambda x, y: x + y,
|
|
185
|
+
[
|
|
186
|
+
[
|
|
187
|
+
obj["Key"].split("/", 1)[0]
|
|
188
|
+
for obj in page.get("Contents", [])
|
|
189
|
+
]
|
|
190
|
+
for page in pages
|
|
191
|
+
],
|
|
192
|
+
[],
|
|
193
|
+
)
|
|
194
|
+
)
|
|
195
|
+
)
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
return True, list_of_objects
|
|
199
|
+
|
|
191
200
|
def ls(
|
|
192
201
|
self,
|
|
193
202
|
object_name: str,
|
|
@@ -232,6 +241,19 @@ class S3Interface(StorageInterface):
|
|
|
232
241
|
where=where,
|
|
233
242
|
)
|
|
234
243
|
|
|
244
|
+
def ls_objects(
|
|
245
|
+
self,
|
|
246
|
+
prefix: str,
|
|
247
|
+
where: str = "local",
|
|
248
|
+
) -> Tuple[bool, List[str]]:
|
|
249
|
+
if where == "cloud":
|
|
250
|
+
return self.list_of_objects(prefix)
|
|
251
|
+
|
|
252
|
+
return super().ls_objects(
|
|
253
|
+
prefix=prefix,
|
|
254
|
+
where=where,
|
|
255
|
+
)
|
|
256
|
+
|
|
235
257
|
def upload(
|
|
236
258
|
self,
|
|
237
259
|
object_name: str,
|
bluer_objects/tests/test_env.py
CHANGED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
from bluer_objects.metadata import flatten
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
test_objects = [
|
|
8
|
+
np.zeros((4, 5)),
|
|
9
|
+
[np.zeros((4, 5)) for _ in range(5)],
|
|
10
|
+
tuple(np.zeros((4, 5)) for _ in range(5)),
|
|
11
|
+
{"this": np.zeros((4, 5))},
|
|
12
|
+
{"this": 1, "that": 2},
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
test_flatten_objects = [
|
|
16
|
+
[
|
|
17
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
18
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
19
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
20
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
21
|
+
],
|
|
22
|
+
[
|
|
23
|
+
[
|
|
24
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
25
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
26
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
27
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
31
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
32
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
33
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
37
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
38
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
39
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
43
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
44
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
45
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
49
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
50
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
51
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
52
|
+
],
|
|
53
|
+
],
|
|
54
|
+
(
|
|
55
|
+
[
|
|
56
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
57
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
58
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
59
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
63
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
64
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
65
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
69
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
70
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
71
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
75
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
76
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
77
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
78
|
+
],
|
|
79
|
+
[
|
|
80
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
81
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
82
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
83
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
84
|
+
],
|
|
85
|
+
),
|
|
86
|
+
{
|
|
87
|
+
"this": [
|
|
88
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
89
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
90
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
91
|
+
[0.0, 0.0, 0.0, 0.0, 0.0],
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
{"this": 1, "that": 2},
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@pytest.mark.parametrize(
|
|
99
|
+
["obj", "flatten_obj"],
|
|
100
|
+
[
|
|
101
|
+
[obj, flatten_obj]
|
|
102
|
+
for obj, flatten_obj in zip(
|
|
103
|
+
test_objects,
|
|
104
|
+
test_flatten_objects,
|
|
105
|
+
)
|
|
106
|
+
],
|
|
107
|
+
)
|
|
108
|
+
def test_metadata_flatten(obj, flatten_obj):
|
|
109
|
+
assert flatten(obj) == flatten_obj
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.268.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -64,6 +64,6 @@ pip install bluer-objects
|
|
|
64
64
|
|
|
65
65
|
[](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-objects/) [](https://pypistats.org/packages/bluer-objects)
|
|
66
66
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.
|
|
67
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.268.1`](https://github.com/kamangir/bluer-objects).
|
|
68
68
|
|
|
69
69
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
bluer_objects/__init__.py,sha256=
|
|
1
|
+
bluer_objects/__init__.py,sha256=1DFWre2PnLmHMPD012t6Lb3WUFwsqYsE4JdhREj6Vlc,315
|
|
2
2
|
bluer_objects/__main__.py,sha256=Yqfov833_hJuRne19WrGhT5DWAPtdffpoMxeSXS7EGw,359
|
|
3
|
-
bluer_objects/config.env,sha256=
|
|
4
|
-
bluer_objects/env.py,sha256=
|
|
3
|
+
bluer_objects/config.env,sha256=ReX0OSH_dK2tdD4-zAlp-427BB57yw8uDTS6tLYN4K0,270
|
|
4
|
+
bluer_objects/env.py,sha256=ecwldUVsamxAjOI0a6PmbZPcyhdUZgzJ-nhAPh0CJRo,2085
|
|
5
5
|
bluer_objects/markdown.py,sha256=23dvQTR0wY_SSeCw4EgYwCBBY0Oe9C1I9njqn0KvcaQ,1000
|
|
6
6
|
bluer_objects/objects.py,sha256=EYzA1vKngY2c_gdMKnUfrKVUcf-5wpFKgBFaVJA4cLE,1626
|
|
7
7
|
bluer_objects/path.py,sha256=9uspZqObI29NerVDF30uILLaouDtloASh0Mywyq2_ew,3946
|
|
@@ -16,9 +16,9 @@ bluer_objects/.abcli/clone.sh,sha256=KqC5d4MAXwo7UZGhKnfCq9k9CCSl3I1dpU1igYs0Yrs
|
|
|
16
16
|
bluer_objects/.abcli/create_test_asset.sh,sha256=ONIdad_WRjZWdW6V2RalRW2qSJwybEwzU-_KsvaJ9og,245
|
|
17
17
|
bluer_objects/.abcli/download.sh,sha256=SKv4JyjcWjOutK95-gurCqbRjpmcrmzxASEEdT23Ob4,650
|
|
18
18
|
bluer_objects/.abcli/file.sh,sha256=djcHSFS8fqlCsoDyZKmimNTzd-jOUnxbOFpL7xq_hGk,150
|
|
19
|
-
bluer_objects/.abcli/gif.sh,sha256=
|
|
19
|
+
bluer_objects/.abcli/gif.sh,sha256=cskDoi_BJq5phOAqgJouxH2biC2z3LlDgd9JHAQqvM0,1363
|
|
20
20
|
bluer_objects/.abcli/host.sh,sha256=N-Gdsk-mR2V2MvFlwlIVwaiGkQyV1DoM5UdhQrpUsls,573
|
|
21
|
-
bluer_objects/.abcli/ls.sh,sha256
|
|
21
|
+
bluer_objects/.abcli/ls.sh,sha256=S1-TGNgxKb8WdKA6rVLZRNqIdAw8VxblQdg4bZ_A1zY,572
|
|
22
22
|
bluer_objects/.abcli/metadata.sh,sha256=EXBB39nn5PRRryIlfetIpR4fPQ-4eDg7Hnee9g1JXrI,377
|
|
23
23
|
bluer_objects/.abcli/mlflow.sh,sha256=7ylwHrQas-QbAJ8SfDJiN3zbuU6ifLUBEAhPRw38Hpc,625
|
|
24
24
|
bluer_objects/.abcli/object.sh,sha256=Zh2ZMFqBSIOHwwwLegCMxJRfaYCbPp1EJMT3LvcFzhE,739
|
|
@@ -46,24 +46,22 @@ bluer_objects/.abcli/mlflow/tags/get.sh,sha256=hsI_zzwJkRmnxvAKlCPdkGlEbn5Ol3eVp
|
|
|
46
46
|
bluer_objects/.abcli/mlflow/tags/search.sh,sha256=kJBLkd7_ACeMUXdRk-zXkBfOoiyDWwO8sUit2NkIhNY,299
|
|
47
47
|
bluer_objects/.abcli/mlflow/tags/set.sh,sha256=-8hYtWAChlGbKIiI502IyaEaTikuACFFwUTdUnGkW7Q,277
|
|
48
48
|
bluer_objects/.abcli/storage/clear.sh,sha256=QgotGPskzCwtTjKobokduCfjfy6vFHqzFZ6t-H9qwN0,1504
|
|
49
|
-
bluer_objects/.abcli/storage/download_file.sh,sha256=2ZQgsxzSYw5Zwcj5XQn-NcHI_MkmzmmZWLM4D1ev1N4,203
|
|
50
|
-
bluer_objects/.abcli/storage/exists.sh,sha256=0b8wgjts1z8GZbE_KeulbrG471hACKORPPcwwqRvYNE,163
|
|
51
|
-
bluer_objects/.abcli/storage/list.sh,sha256=ySUDS31yq9qQ_2q7oXR302hConAzs0LYQ739TWJgQsI,165
|
|
52
|
-
bluer_objects/.abcli/storage/rm.sh,sha256=1r1szcLhzHf_kk46c91Pz-xY7jvqigyZKQGRXWsJg7w,286
|
|
53
49
|
bluer_objects/.abcli/storage/status.sh,sha256=HRbQq9EhoZ1S-GHXOTeclSOTbV-hrEieGAFIKP6ZE8w,383
|
|
54
50
|
bluer_objects/.abcli/tests/README.sh,sha256=gk2KuNLFTuV3qdVgH8BNfJmur3gZoSV8EwLboVjrCgM,150
|
|
55
51
|
bluer_objects/.abcli/tests/clone.sh,sha256=Rl9pHvmRJ4H-y-iMA80q11UdSZFrguNaMTez0LTtJjA,473
|
|
56
52
|
bluer_objects/.abcli/tests/create_test_asset.sh,sha256=onRGc3VjDWA7On3isxKD3J7mxA6n349AVXRj90Z3Jzc,386
|
|
57
53
|
bluer_objects/.abcli/tests/gif.sh,sha256=2FvcomiyYTzJa527a7Wk2EJt5N9_vZt8tmQD1QVetDg,461
|
|
58
|
-
bluer_objects/.abcli/tests/help.sh,sha256=
|
|
54
|
+
bluer_objects/.abcli/tests/help.sh,sha256=y1_iNyS5YQzS7vRV_HpqjBiXihJFAZXHTZEAX7ZRLKU,1885
|
|
59
55
|
bluer_objects/.abcli/tests/host.sh,sha256=GBuTLNw1sU3fAb5jS-ew_qAfovVCQ5CLaz5ad04IkoA,144
|
|
60
|
-
bluer_objects/.abcli/tests/ls.sh,sha256=
|
|
56
|
+
bluer_objects/.abcli/tests/ls.sh,sha256=cwprXK2pBKDMWg71XgooYUgYwP2Ef7cJjbaZi1ggqdk,662
|
|
61
57
|
bluer_objects/.abcli/tests/metadata.sh,sha256=OP1c0h0TSlDycrv0UglKLyBtTQwqh9M0nqVAdQUzkno,1723
|
|
62
58
|
bluer_objects/.abcli/tests/mlflow_cache.sh,sha256=EEAPGasQgN4j6YLp30_IMYAPCTUBxmTgoMzMSpseVbw,388
|
|
63
59
|
bluer_objects/.abcli/tests/mlflow_lock.sh,sha256=TJwp6HbVUOT1HqRfXPS8_zpKAL7-mBee_yyOhmKNzt4,717
|
|
64
60
|
bluer_objects/.abcli/tests/mlflow_logging.sh,sha256=TVzHhk9qRthpP2xdKwu3LwK00S77GqH50io3oVyS2UE,305
|
|
65
61
|
bluer_objects/.abcli/tests/mlflow_tags.sh,sha256=pX4sEK_z2Vrb7a6Bq4qWurFVPZkvjpS10K4MLx3mf64,811
|
|
66
62
|
bluer_objects/.abcli/tests/mlflow_test.sh,sha256=7MXxYq2GgD2MEJbQlpx80qLT2HaaVn_PFFMpSA_hWA4,125
|
|
63
|
+
bluer_objects/.abcli/tests/open.sh,sha256=usVDe2dIcuwIicGxL5y8KiIxPngY04aUgZuYe_5B3xY,211
|
|
64
|
+
bluer_objects/.abcli/tests/open_gif_open.sh,sha256=Hmpkic6IUFT_NvFCzkY8163Ltx25tECRB6NinXgpCXA,247
|
|
67
65
|
bluer_objects/.abcli/tests/storage_public_upload.sh,sha256=qwyUSejxDlV5Q1f7jyOLej_ADZt50HwbuSImFcrMWf8,589
|
|
68
66
|
bluer_objects/.abcli/tests/storage_upload_download.sh,sha256=GvFZgzRzN9zlAGLM7m-_uDlDyATAUo7KQcW2yXYFaKw,1604
|
|
69
67
|
bluer_objects/.abcli/tests/version.sh,sha256=k-lXozSjyFgFR58cTzUYla0Ef-upx3sSK641zI5ynfE,169
|
|
@@ -93,10 +91,10 @@ bluer_objects/help/__main__.py,sha256=Dxg-JpMOIlYWZklI_J2LyiHnRui5lUwWmfM7FLRzUX
|
|
|
93
91
|
bluer_objects/help/clone.py,sha256=PDnQs7zc4sqmoBHPjVRfX7jIaePiohPGCNA5bxeerik,553
|
|
94
92
|
bluer_objects/help/create_test_asset.py,sha256=oxJORm2qk4b_q7EC6-dEuNu1_pK9Ri60PcHhrE8ruxM,375
|
|
95
93
|
bluer_objects/help/download.py,sha256=9zC_IvH4p2vMXb_qcAS176CBFp5fJe4Z9DFMPdSGBac,751
|
|
96
|
-
bluer_objects/help/functions.py,sha256=
|
|
97
|
-
bluer_objects/help/gif.py,sha256=
|
|
94
|
+
bluer_objects/help/functions.py,sha256=PuiRYDIBDbw3TB0d03dqAvDEc-xqC6fRIAZLYzDpg50,1114
|
|
95
|
+
bluer_objects/help/gif.py,sha256=BWxfQoSWeK9ijguUeglZx2wXWZAsnUIxF9LkuimipNA,974
|
|
98
96
|
bluer_objects/help/host.py,sha256=4t4yrPGjTbnFtODcuBjfIzpA5pmmvc5s4QrjIqPPVsM,988
|
|
99
|
-
bluer_objects/help/ls.py,sha256=
|
|
97
|
+
bluer_objects/help/ls.py,sha256=X2QNKMiLj3oXj6lE51HwBoZWaaw9I3JkXNhBTp7sQgA,791
|
|
100
98
|
bluer_objects/help/metadata.py,sha256=fk22NasBcZU1ffY4fu6AxrCzMQtTI28p_ghaSVRrrPM,2811
|
|
101
99
|
bluer_objects/help/upload.py,sha256=kied2p7II-zCdme_GyDs_74n-15iwyS_RMh2SWLkw1I,460
|
|
102
100
|
bluer_objects/help/web.py,sha256=YGxzU0GyoQAA8tqnEoGcC4rABFW_RnI44PhvHvIG5dA,626
|
|
@@ -110,9 +108,10 @@ bluer_objects/host/functions.py,sha256=ADups78hYZDAnC6FlIICQ48WkFd4sPnRMWA0D6X-F
|
|
|
110
108
|
bluer_objects/logger/__init__.py,sha256=2aGNbx-qBXU3IlX9BDqtrFfN25lO_uarEg22cE3-3dU,102
|
|
111
109
|
bluer_objects/logger/image.py,sha256=wHpE6jCqKGmcjXU61vCMKbBeir7DAxH6nKx5kb_1Vv0,2617
|
|
112
110
|
bluer_objects/logger/matrix.py,sha256=cPKQIhd347MH_9LaB-Ym7Mix1pqampG9MIgkeh08KA4,5757
|
|
113
|
-
bluer_objects/metadata/__init__.py,sha256=
|
|
111
|
+
bluer_objects/metadata/__init__.py,sha256=nRFzLb9zMQiVqESThflFFThVOnzC7Aq1ks9_K1OaOg4,311
|
|
114
112
|
bluer_objects/metadata/__main__.py,sha256=UAZBsf3AMUo-OHIgg4gS5_OowDOIO2T_zjismL3AfkI,2272
|
|
115
113
|
bluer_objects/metadata/enums.py,sha256=aMlAZckl_IjPZcGZhpJa7mb9MTDQ-gWuaQtJJQeHlho,759
|
|
114
|
+
bluer_objects/metadata/flatten.py,sha256=Du_mieFw9WGMAGXw7N7zsVJ_A_aMbCpoYjLCC2U3UlE,589
|
|
116
115
|
bluer_objects/metadata/get.py,sha256=1eS1O-GghJ7mYCIiwcQRFwyAd1b3CUafmajAwja9HB8,1803
|
|
117
116
|
bluer_objects/metadata/post.py,sha256=1r0yLmIuEPrKJ_-RfALC5ajpLzmUqEjLYoIQMuI4Jjw,2062
|
|
118
117
|
bluer_objects/mlflow/__init__.py,sha256=GVPXTclqYAyu-iJoLeHSgTaMeoMpVaczFgU4PavS3QA,523
|
|
@@ -130,17 +129,17 @@ bluer_objects/mlflow/lock/functions.py,sha256=MOslqblNAOsRvILzLF4q6m2EAwCk4f4zEW
|
|
|
130
129
|
bluer_objects/storage/WebDAV.py,sha256=UftrpSDzJAtTeMEORNpOTbDhmRYAzgdTNbmrAkgzPTU,3279
|
|
131
130
|
bluer_objects/storage/WebDAVrequest.py,sha256=Wp4rtlWif7sdu4VohxenT8YVmf-tmV9gbBYxuKFDR8M,10279
|
|
132
131
|
bluer_objects/storage/WebDAVzip.py,sha256=EHbERaxnLUQqWSM12dwJYybvXCIqqo66uThvNBE8BHI,4212
|
|
133
|
-
bluer_objects/storage/__init__.py,sha256=
|
|
134
|
-
bluer_objects/storage/__main__.py,sha256=
|
|
135
|
-
bluer_objects/storage/base.py,sha256=
|
|
132
|
+
bluer_objects/storage/__init__.py,sha256=NA1qMF6nIgQ66c9YGVW1LNfN0sKfzcwZqnx9iPhQeso,2039
|
|
133
|
+
bluer_objects/storage/__main__.py,sha256=CLU8a36Kz59iDjFbKGFQvzHuGKoEFLQa-yAGvIQEQH8,2538
|
|
134
|
+
bluer_objects/storage/base.py,sha256=kIBlEnIns--VBccNzNi4JvNh6LNo5p8cl1XdZ2J9p1k,3322
|
|
136
135
|
bluer_objects/storage/policies.py,sha256=xIuIhFjcWH7ptg_jUgfYTNnXqs9xaX4yU5qSOhmmxhI,125
|
|
137
|
-
bluer_objects/storage/s3.py,sha256=
|
|
136
|
+
bluer_objects/storage/s3.py,sha256=_JSdVN_D9yr0r6l69Oh3yCp6CjyTHFAMap71qx-DXAA,10311
|
|
138
137
|
bluer_objects/testing/__init__.py,sha256=DWY5ZtvCnHG_t9BDiqy_ArLOZi-nlyAtPVMLA1PPAMU,62
|
|
139
138
|
bluer_objects/testing/__main__.py,sha256=hhJV9qn0V_8FxzNDcoHCHr4A7zf9UudnNGJCAPkTBGU,750
|
|
140
139
|
bluer_objects/testing/functions.py,sha256=AXAfzWLcEPkbSYTehdahshjKJ45C4IJkRs_TgrHOntc,1355
|
|
141
140
|
bluer_objects/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
141
|
bluer_objects/tests/test_README.py,sha256=5D4UV8VcjbeAPThsYVynYtVFuP8gwMAhIjEWuOQZsWs,89
|
|
143
|
-
bluer_objects/tests/test_env.py,sha256=
|
|
142
|
+
bluer_objects/tests/test_env.py,sha256=HgVCbnHGLIXK8GiaWNWORW9nAHs7fqvIoo6S5Jj29-g,1132
|
|
144
143
|
bluer_objects/tests/test_file_download.py,sha256=1_adHYqgSifkdP-I7TQVW0t8MLCujQ61fvRbcrSkcmg,512
|
|
145
144
|
bluer_objects/tests/test_file_load_save.py,sha256=unqxfiqba6RVhMS95AtHZWsT7Q097jBOKdckAT9PyFU,2390
|
|
146
145
|
bluer_objects/tests/test_file_load_save_text.py,sha256=3XnBGlv3KZvheHY-RlX1Su6LOBkkn57pkf9_dXR81r8,1017
|
|
@@ -156,6 +155,7 @@ bluer_objects/tests/test_logger.py,sha256=DdkZqj8YOErKf6T-SWEPtU21LGfQf_O3GKrCn3
|
|
|
156
155
|
bluer_objects/tests/test_logger_matrix.py,sha256=qedidEDGusMWQM04kgk3mt74yFm4iU3jIyjE4gRi_FQ,1703
|
|
157
156
|
bluer_objects/tests/test_markdown.py,sha256=KtCWKIDs4U1M3qAGFMYhzVpdGiDV2VU8z7dCaU3s3Ec,217
|
|
158
157
|
bluer_objects/tests/test_metadata.py,sha256=Qy-Zp5yFrHmZ5tjujuLNcvI2YEyzNuAFXgy0L7sJOJ0,4389
|
|
158
|
+
bluer_objects/tests/test_metadata_flatten.py,sha256=edBaX0CF7Yte4jMSIMBM04FY6Umo3BpfSXXStqpx8IM,2760
|
|
159
159
|
bluer_objects/tests/test_mlflow.py,sha256=Ee6T7r2qT1fvUv2ommC3Wl5Gwz1olURvMvhoaM0779M,1419
|
|
160
160
|
bluer_objects/tests/test_mlflow_lock.py,sha256=rDNfyWHZu3U88yIIFrPeQPsTneU0GR8n9gSgqpj0q9k,569
|
|
161
161
|
bluer_objects/tests/test_objects.py,sha256=pqdXvnAJ5WPlHvqqaKrd9-vqktrE9GOVxSgqHs8yK8w,1441
|
|
@@ -171,8 +171,8 @@ bluer_objects/tests/test_web_is_accessible.py,sha256=2Y20NAEDMblg0MKnhnqcfw3XVKE
|
|
|
171
171
|
bluer_objects/web/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
172
172
|
bluer_objects/web/__main__.py,sha256=xf2Ob54FI8JEokfGhFmiyOBdD9nBactwqmZvsKsdioU,624
|
|
173
173
|
bluer_objects/web/functions.py,sha256=KNufAFOc6N3BYf83lN2rUpKUdsnzb2anWyp9koFRVUo,172
|
|
174
|
-
bluer_objects-6.
|
|
175
|
-
bluer_objects-6.
|
|
176
|
-
bluer_objects-6.
|
|
177
|
-
bluer_objects-6.
|
|
178
|
-
bluer_objects-6.
|
|
174
|
+
bluer_objects-6.268.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
|
|
175
|
+
bluer_objects-6.268.1.dist-info/METADATA,sha256=o8fZ4ra5JpZdaWbAlT1qrImkGZzP-hk3oEOXQx5vXRE,3678
|
|
176
|
+
bluer_objects-6.268.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
177
|
+
bluer_objects-6.268.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
|
|
178
|
+
bluer_objects-6.268.1.dist-info/RECORD,,
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
#! /usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
function bluer_ai_storage_rm() {
|
|
4
|
-
local options=$1
|
|
5
|
-
local do_dryrun=$(bluer_ai_option_int "$options" dryrun 1)
|
|
6
|
-
|
|
7
|
-
local object_name=$(bluer_ai_clarify_object $2 void)
|
|
8
|
-
|
|
9
|
-
bluer_ai_eval dryrun=$do_dryrun \
|
|
10
|
-
rm -rfv $ABCLI_OBJECT_ROOT/$object_name
|
|
11
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|