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.

@@ -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))
@@ -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
- ls \
14
- --object_name $object_name \
10
+ ls_objects \
15
11
  --where $where \
16
- "${@:3}"
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" \
@@ -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 $abcli_path_bash/tests/
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
  }
@@ -0,0 +1,11 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_open() {
4
+ local options=$1
5
+
6
+ bluer_ai_eval ,$options \
7
+ bluer_ai_open \
8
+ ,$options \
9
+ $BLUER_OBJECTS_TEST_OBJECT \
10
+ "${@:2}"
11
+ }
@@ -0,0 +1,14 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function test_bluer_objects_gif_open() {
4
+ local options=$1
5
+
6
+ bluer_ai_eval ,$options \
7
+ bluer_objects_gif \
8
+ open \
9
+ download \
10
+ $BLUER_OBJECTS_TEST_OBJECT \
11
+ "${@:2}"
12
+
13
+ return 0
14
+ }
bluer_objects/__init__.py CHANGED
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} Object management in Bash."
6
6
 
7
- VERSION = "6.255.1"
7
+ VERSION = "6.268.1"
8
8
 
9
9
  REPO_NAME = "bluer-objects"
10
10
 
bluer_objects/config.env CHANGED
@@ -6,4 +6,6 @@ MLFLOW_LOCK_WAIT_FOR_EXCLUSIVITY=1
6
6
  S3_STORAGE_BUCKET=kamangir
7
7
  S3_PUBLIC_STORAGE_BUCKET=kamangir-public
8
8
 
9
- BLUER_OBJECTS_STORAGE_INTERFACE=s3
9
+ BLUER_OBJECTS_STORAGE_INTERFACE=s3
10
+
11
+ BLUER_OBJECTS_TEST_OBJECT=2025-09-22-13-11-08-cjbb3q
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")
@@ -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 | local",
19
- "<object-name>",
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
- "<path>",
30
- ],
31
- "ls <path>.",
37
+ "[cloud|local]",
38
+ "objects",
39
+ ]
40
+ + args,
41
+ "ls objects.",
32
42
  mono=mono,
33
43
  )
34
44
 
@@ -5,4 +5,5 @@ from bluer_objects.metadata.get import (
5
5
  get_from_object,
6
6
  get_from_path,
7
7
  )
8
+ from bluer_objects.metadata.flatten import flatten
8
9
  from bluer_objects.metadata.post import post, post_to_file, post_to_object, post_to_path
@@ -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.info(
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,
@@ -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,
@@ -31,41 +31,9 @@ class S3Interface(StorageInterface):
31
31
  )
32
32
  )
33
33
 
34
- try:
35
- s3 = boto3.client(
36
- "s3",
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,
@@ -41,3 +41,5 @@ def test_bluer_objects_env():
41
41
  assert env.WEBDAV_HOSTNAME
42
42
  assert env.WEBDAV_LOGIN
43
43
  assert env.WEBDAV_PASSWORD
44
+
45
+ assert env.BLUER_OBJECTS_TEST_OBJECT
@@ -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.255.1
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
  [![pylint](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-objects/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-objects.svg)](https://pypi.org/project/bluer-objects/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/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.255.1`](https://github.com/kamangir/bluer-objects).
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=Z4iwLgZZkCeP0QTdzqmBxPs8N-mob7qU0OmO_OcQ0TQ,315
1
+ bluer_objects/__init__.py,sha256=1DFWre2PnLmHMPD012t6Lb3WUFwsqYsE4JdhREj6Vlc,315
2
2
  bluer_objects/__main__.py,sha256=Yqfov833_hJuRne19WrGhT5DWAPtdffpoMxeSXS7EGw,359
3
- bluer_objects/config.env,sha256=RjcpnbKfRqNyGLRB4z7M_OG9z2pOM032ck__53JqXqo,216
4
- bluer_objects/env.py,sha256=iw4QvaImqnavlsHwfkUScNHc7afDEJQKJSsHTtVJE78,2019
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=sZZZWAvwR7bTf6gF70b0l_1tw4-HOswh93iwUAQilEI,803
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=-jkT5anPqnTMTzvJZXujmXE705YprYCUbxOQTNFCTrc,417
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=demhv051Sv_aT3K2fSzbhz4yIFBONfWAfB1H7t1O6d4,1976
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=oOvcnEQZgnNlwCK4SvkdAjCBs2_z0qBOhgFLsXDBSXM,555
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=ghCXmHHMVgdPDkqPHWIK7L64wb--oLYhdfJdZyboZKM,1096
97
- bluer_objects/help/gif.py,sha256=gKV6vNT4bEC2Ch3QIb3Yc5DqzAH_UvAVCsuvzXeF1Sc,564
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=acvRLDxjJOzQ1a9ZQ4Mn9aBZ8Vf17IDHcAxC2O3R33Y,627
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=B8cmMOMMO53mTwD2LJUFbSjvangSkpLqhR3oVIBsoBI,260
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=LY3pxxflaZ0KUSJJzlh0GEFH-HpshBntn5qs62uk0WQ,1866
134
- bluer_objects/storage/__main__.py,sha256=GlUQjonf1K0SFdivRntJEdFFRwtF4eP1WtmNEJe5LY4,2269
135
- bluer_objects/storage/base.py,sha256=35G51iTsU99N_JQwUS2oatbACudAsiOrQ0E6fIz2cic,2396
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=30i9bqj5gGZQZ9YRAqcF5piThlFilsmYqI0eFXnJ3M8,9755
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=vjaNwfsLodw8jpTEKYBsjKwpxcwcNOtsWHqS4iyH4oQ,1090
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.255.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
175
- bluer_objects-6.255.1.dist-info/METADATA,sha256=rB31zp3kzAZbxvQkZ1nmWEPD1F2xi3BDyPlDZAOkx5c,3678
176
- bluer_objects-6.255.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
177
- bluer_objects-6.255.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
178
- bluer_objects-6.255.1.dist-info/RECORD,,
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,9 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_download_file() {
4
- python3 -m bluer_objects.storage \
5
- download_file \
6
- --object_name "$1" \
7
- --filename "$2" \
8
- "${@:3}"
9
- }
@@ -1,8 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_exists() {
4
- python3 -m bluer_objects.storage \
5
- exists \
6
- --object_name "$1" \
7
- "${@:2}"
8
- }
@@ -1,8 +0,0 @@
1
- #! /usr/bin/env bash
2
-
3
- function bluer_ai_storage_list() {
4
- python3 -m bluer_objects.storage \
5
- list_of_objects \
6
- --prefix "$1" \
7
- "${@:2}"
8
- }
@@ -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
- }