bluer-objects 6.191.1__py3-none-any.whl → 6.201.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/tests/storage_public_upload.sh +7 -0
- bluer_objects/.abcli/tests/storage_upload_download.sh +8 -1
- bluer_objects/.abcli/upload.sh +22 -0
- bluer_objects/README/functions.py +4 -3
- bluer_objects/__init__.py +1 -1
- bluer_objects/help/upload.py +1 -1
- bluer_objects/logger/image.py +91 -0
- bluer_objects/storage/WebDAV.py +4 -2
- bluer_objects/storage/WebDAVrequest.py +4 -2
- bluer_objects/storage/WebDAVzip.py +4 -2
- bluer_objects/storage/__init__.py +2 -0
- bluer_objects/storage/__main__.py +7 -0
- bluer_objects/storage/base.py +2 -1
- bluer_objects/storage/s3.py +22 -9
- bluer_objects/tests/test_log_image_grid.py +29 -0
- {bluer_objects-6.191.1.dist-info → bluer_objects-6.201.1.dist-info}/METADATA +2 -2
- {bluer_objects-6.191.1.dist-info → bluer_objects-6.201.1.dist-info}/RECORD +20 -18
- {bluer_objects-6.191.1.dist-info → bluer_objects-6.201.1.dist-info}/WHEEL +0 -0
- {bluer_objects-6.191.1.dist-info → bluer_objects-6.201.1.dist-info}/licenses/LICENSE +0 -0
- {bluer_objects-6.191.1.dist-info → bluer_objects-6.201.1.dist-info}/top_level.txt +0 -0
|
@@ -11,8 +11,15 @@ function test_bluer_objects_storage_public_upload() {
|
|
|
11
11
|
$object_name \
|
|
12
12
|
--depth 1
|
|
13
13
|
[[ $? -ne 0 ]] && return 1
|
|
14
|
+
bluer_ai_hr
|
|
14
15
|
|
|
15
16
|
bluer_objects_upload \
|
|
16
17
|
public \
|
|
17
18
|
$object_name
|
|
19
|
+
[[ $? -ne 0 ]] && return 1
|
|
20
|
+
bluer_ai_hr
|
|
21
|
+
|
|
22
|
+
bluer_objects_upload \
|
|
23
|
+
public,zip \
|
|
24
|
+
$object_name
|
|
18
25
|
}
|
|
@@ -8,7 +8,8 @@ function test_bluer_objects_storage_upload_download() {
|
|
|
8
8
|
mkdir -pv $object_path
|
|
9
9
|
|
|
10
10
|
bluer_objects_create_test_asset \
|
|
11
|
-
$object_name
|
|
11
|
+
$object_name \
|
|
12
|
+
--depth 1
|
|
12
13
|
[[ $? -ne 0 ]] && return 1
|
|
13
14
|
bluer_ai_hr
|
|
14
15
|
|
|
@@ -59,4 +60,10 @@ function test_bluer_objects_storage_upload_download() {
|
|
|
59
60
|
bluer_objects_download \
|
|
60
61
|
- \
|
|
61
62
|
$object_name
|
|
63
|
+
[[ $? -ne 0 ]] && return 1
|
|
64
|
+
bluer_ai_hr
|
|
65
|
+
|
|
66
|
+
bluer_objects_upload \
|
|
67
|
+
zip \
|
|
68
|
+
$object_name
|
|
62
69
|
}
|
bluer_objects/.abcli/upload.sh
CHANGED
|
@@ -4,12 +4,34 @@ function bluer_objects_upload() {
|
|
|
4
4
|
local options=$1
|
|
5
5
|
local filename=$(bluer_ai_option "$options" filename)
|
|
6
6
|
local public=$(bluer_ai_option_int "$options" public 0)
|
|
7
|
+
local do_zip=$(bluer_ai_option_int "$options" zip 0)
|
|
7
8
|
|
|
8
9
|
local object_name=$(bluer_ai_clarify_object $2 .)
|
|
9
10
|
local object_path=$ABCLI_OBJECT_ROOT/$object_name
|
|
10
11
|
|
|
11
12
|
rm -rf $object_path/auxiliary
|
|
12
13
|
|
|
14
|
+
if [[ "$do_zip" == 1 ]]; then
|
|
15
|
+
local zip_filename=$ABCLI_OBJECT_ROOT/$object_name.tar.gz
|
|
16
|
+
|
|
17
|
+
[[ -f "$zip_filename" ]] &&
|
|
18
|
+
rm -v $zip_filename
|
|
19
|
+
|
|
20
|
+
bluer_ai_eval - \
|
|
21
|
+
tar -czvf \
|
|
22
|
+
$zip_filename \
|
|
23
|
+
-C $ABCLI_OBJECT_ROOT $object_name
|
|
24
|
+
[[ $? -ne 0 ]] && return 1
|
|
25
|
+
|
|
26
|
+
python3 -m bluer_objects.storage \
|
|
27
|
+
upload \
|
|
28
|
+
--object_name $object_name \
|
|
29
|
+
--zip 1 \
|
|
30
|
+
--public $public
|
|
31
|
+
|
|
32
|
+
return
|
|
33
|
+
fi
|
|
34
|
+
|
|
13
35
|
python3 -m bluer_objects.storage \
|
|
14
36
|
upload \
|
|
15
37
|
--object_name $object_name \
|
|
@@ -6,7 +6,7 @@ from blueness import module
|
|
|
6
6
|
|
|
7
7
|
from bluer_objects import NAME as MY_NAME, ICON as MY_ICON
|
|
8
8
|
from bluer_objects.metadata import get_from_object
|
|
9
|
-
from bluer_objects import file
|
|
9
|
+
from bluer_objects import file, env
|
|
10
10
|
from bluer_objects import markdown
|
|
11
11
|
from bluer_objects.logger import logger
|
|
12
12
|
|
|
@@ -148,9 +148,10 @@ def build(
|
|
|
148
148
|
template_line = " ".join(
|
|
149
149
|
[
|
|
150
150
|
(
|
|
151
|
-
"[{}]({}/{}.tar.gz)".format(
|
|
151
|
+
"[{}](https://{}.{}/{}.tar.gz)".format(
|
|
152
152
|
token.split(":::")[1].strip(),
|
|
153
|
-
|
|
153
|
+
env.S3_PUBLIC_STORAGE_BUCKET,
|
|
154
|
+
env.S3_STORAGE_ENDPOINT_URL.split("https://", 1)[1],
|
|
154
155
|
token.split(":::")[1].strip(),
|
|
155
156
|
)
|
|
156
157
|
if token.startswith("object:::")
|
bluer_objects/__init__.py
CHANGED
bluer_objects/help/upload.py
CHANGED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import matplotlib.pyplot as plt
|
|
2
|
+
from typing import Dict, Any, Union, List
|
|
3
|
+
import pandas as pd
|
|
4
|
+
import random
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
from bluer_objects import file, objects
|
|
8
|
+
from bluer_objects.graphics.signature import sign_filename
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def log_image_grid(
|
|
12
|
+
items: Union[
|
|
13
|
+
Dict[str, Dict[str, Any]],
|
|
14
|
+
pd.DataFrame,
|
|
15
|
+
],
|
|
16
|
+
filename: str,
|
|
17
|
+
rows: int = 3,
|
|
18
|
+
cols: int = 5,
|
|
19
|
+
log: bool = True,
|
|
20
|
+
scale: int = 2,
|
|
21
|
+
shuffle: bool = False,
|
|
22
|
+
header: List[str] = [],
|
|
23
|
+
footer: List[str] = [],
|
|
24
|
+
relative_path: bool = False,
|
|
25
|
+
) -> bool:
|
|
26
|
+
if isinstance(items, pd.DataFrame):
|
|
27
|
+
items = items.to_dict("records")
|
|
28
|
+
|
|
29
|
+
while len(items) < rows * cols:
|
|
30
|
+
items += [{"pass": True}]
|
|
31
|
+
if shuffle:
|
|
32
|
+
random.shuffle(items)
|
|
33
|
+
items = items[: rows * cols]
|
|
34
|
+
|
|
35
|
+
if relative_path:
|
|
36
|
+
root_path = file.path(filename)
|
|
37
|
+
for item in items:
|
|
38
|
+
if item.get("filename", ""):
|
|
39
|
+
item["filename"] = os.path.join(
|
|
40
|
+
root_path,
|
|
41
|
+
item["filename"],
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
_, axes = plt.subplots(
|
|
45
|
+
rows,
|
|
46
|
+
cols,
|
|
47
|
+
figsize=(
|
|
48
|
+
scale * cols,
|
|
49
|
+
scale * rows,
|
|
50
|
+
),
|
|
51
|
+
)
|
|
52
|
+
axes = axes.flatten()
|
|
53
|
+
|
|
54
|
+
for i, item in enumerate(items):
|
|
55
|
+
if item.get("pass", False):
|
|
56
|
+
axes[i].axis("off")
|
|
57
|
+
continue
|
|
58
|
+
|
|
59
|
+
if item.get("filename", ""):
|
|
60
|
+
success, item["image"] = file.load_image(
|
|
61
|
+
item.get("filename", ""),
|
|
62
|
+
log=log,
|
|
63
|
+
)
|
|
64
|
+
if not success:
|
|
65
|
+
return False
|
|
66
|
+
|
|
67
|
+
ax = axes[i]
|
|
68
|
+
image = item["image"]
|
|
69
|
+
ax.imshow(
|
|
70
|
+
image,
|
|
71
|
+
cmap="gray" if image.ndim == 2 else None,
|
|
72
|
+
)
|
|
73
|
+
ax.set_title(
|
|
74
|
+
item.get("title", f"#{i}"),
|
|
75
|
+
fontsize=10,
|
|
76
|
+
)
|
|
77
|
+
ax.axis("off")
|
|
78
|
+
|
|
79
|
+
plt.tight_layout()
|
|
80
|
+
|
|
81
|
+
if not file.save_fig(
|
|
82
|
+
filename,
|
|
83
|
+
log=log,
|
|
84
|
+
):
|
|
85
|
+
return False
|
|
86
|
+
|
|
87
|
+
return sign_filename(
|
|
88
|
+
filename,
|
|
89
|
+
[" | ".join(objects.signature("grid.png") + header)],
|
|
90
|
+
[" | ".join(footer)],
|
|
91
|
+
)
|
bluer_objects/storage/WebDAV.py
CHANGED
|
@@ -87,10 +87,11 @@ class WebDAVInterface(StorageInterface):
|
|
|
87
87
|
object_name: str,
|
|
88
88
|
filename: str = "",
|
|
89
89
|
public: bool = False,
|
|
90
|
+
zip: bool = False,
|
|
90
91
|
log: bool = True,
|
|
91
92
|
) -> bool:
|
|
92
|
-
if public:
|
|
93
|
-
logger.error("public not supported.")
|
|
93
|
+
if public or zip:
|
|
94
|
+
logger.error("public/zip upload not supported.")
|
|
94
95
|
return False
|
|
95
96
|
|
|
96
97
|
if filename:
|
|
@@ -117,5 +118,6 @@ class WebDAVInterface(StorageInterface):
|
|
|
117
118
|
object_name=object_name,
|
|
118
119
|
filename=filename,
|
|
119
120
|
public=public,
|
|
121
|
+
zip=zip,
|
|
120
122
|
log=log,
|
|
121
123
|
)
|
|
@@ -279,10 +279,11 @@ class WebDAVRequestInterface(StorageInterface):
|
|
|
279
279
|
object_name: str,
|
|
280
280
|
filename: str = "",
|
|
281
281
|
public: bool = False,
|
|
282
|
+
zip: bool = False,
|
|
282
283
|
log: bool = True,
|
|
283
284
|
) -> bool:
|
|
284
|
-
if public:
|
|
285
|
-
logger.error("public not supported.")
|
|
285
|
+
if public or zip:
|
|
286
|
+
logger.error("public/zip upload not supported.")
|
|
286
287
|
return False
|
|
287
288
|
|
|
288
289
|
if filename:
|
|
@@ -321,6 +322,7 @@ class WebDAVRequestInterface(StorageInterface):
|
|
|
321
322
|
object_name=object_name,
|
|
322
323
|
filename=filename,
|
|
323
324
|
public=public,
|
|
325
|
+
zip=zip,
|
|
324
326
|
log=log,
|
|
325
327
|
)
|
|
326
328
|
|
|
@@ -126,10 +126,11 @@ class WebDAVzipInterface(StorageInterface):
|
|
|
126
126
|
object_name: str,
|
|
127
127
|
filename: str = "",
|
|
128
128
|
public: bool = False,
|
|
129
|
+
zip: bool = False,
|
|
129
130
|
log: bool = True,
|
|
130
131
|
) -> bool:
|
|
131
|
-
if public:
|
|
132
|
-
logger.error("public not supported.")
|
|
132
|
+
if public or zip:
|
|
133
|
+
logger.error("public/zip upload not supported.")
|
|
133
134
|
return False
|
|
134
135
|
|
|
135
136
|
object_path = objects.object_path(object_name=object_name)
|
|
@@ -155,5 +156,6 @@ class WebDAVzipInterface(StorageInterface):
|
|
|
155
156
|
return super().upload(
|
|
156
157
|
object_name=object_name,
|
|
157
158
|
public=public,
|
|
159
|
+
zip=zip,
|
|
158
160
|
log=log,
|
|
159
161
|
)
|
|
@@ -57,11 +57,13 @@ def upload(
|
|
|
57
57
|
object_name: str,
|
|
58
58
|
filename: str = "",
|
|
59
59
|
public: bool = False,
|
|
60
|
+
zip: bool = False,
|
|
60
61
|
log: bool = True,
|
|
61
62
|
) -> bool:
|
|
62
63
|
return interface.upload(
|
|
63
64
|
object_name=object_name,
|
|
64
65
|
filename=filename,
|
|
65
66
|
public=public,
|
|
67
|
+
zip=zip,
|
|
66
68
|
log=log,
|
|
67
69
|
)
|
|
@@ -30,6 +30,12 @@ parser.add_argument(
|
|
|
30
30
|
default=0,
|
|
31
31
|
help="0 | 1",
|
|
32
32
|
)
|
|
33
|
+
parser.add_argument(
|
|
34
|
+
"--zip",
|
|
35
|
+
type=int,
|
|
36
|
+
default=0,
|
|
37
|
+
help="0 | 1",
|
|
38
|
+
)
|
|
33
39
|
parser.add_argument(
|
|
34
40
|
"--where",
|
|
35
41
|
type=str,
|
|
@@ -86,6 +92,7 @@ elif args.task == "upload":
|
|
|
86
92
|
success = storage.upload(
|
|
87
93
|
object_name=args.object_name,
|
|
88
94
|
filename=args.filename,
|
|
95
|
+
zip=args.zip == 1,
|
|
89
96
|
public=args.public == 1,
|
|
90
97
|
)
|
|
91
98
|
else:
|
bluer_objects/storage/base.py
CHANGED
|
@@ -67,6 +67,7 @@ class StorageInterface:
|
|
|
67
67
|
object_name: str,
|
|
68
68
|
filename: str = "",
|
|
69
69
|
public: bool = False,
|
|
70
|
+
zip: bool = False,
|
|
70
71
|
log: bool = True,
|
|
71
72
|
) -> bool:
|
|
72
73
|
if log:
|
|
@@ -74,7 +75,7 @@ class StorageInterface:
|
|
|
74
75
|
"{}.upload {}{}{}".format(
|
|
75
76
|
self.__class__.__name__,
|
|
76
77
|
object_name,
|
|
77
|
-
f"/{filename}" if filename else "",
|
|
78
|
+
".tar.gz" if zip else f"/{filename}" if filename else "",
|
|
78
79
|
" [public]" if public else "",
|
|
79
80
|
)
|
|
80
81
|
)
|
bluer_objects/storage/s3.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import boto3
|
|
2
|
+
import os
|
|
2
3
|
from botocore.exceptions import ClientError
|
|
3
4
|
import glob
|
|
4
5
|
from typing import Tuple, List
|
|
@@ -7,6 +8,7 @@ from tqdm import tqdm
|
|
|
7
8
|
from functools import reduce
|
|
8
9
|
|
|
9
10
|
from bluer_objects.storage.base import StorageInterface
|
|
11
|
+
from bluer_objects.env import ABCLI_OBJECT_ROOT
|
|
10
12
|
from bluer_objects import env, file, path
|
|
11
13
|
from bluer_objects import objects
|
|
12
14
|
from bluer_objects.logger import logger
|
|
@@ -226,12 +228,20 @@ class S3Interface(StorageInterface):
|
|
|
226
228
|
object_name: str,
|
|
227
229
|
filename: str = "",
|
|
228
230
|
public: bool = False,
|
|
231
|
+
zip: bool = False,
|
|
229
232
|
log: bool = True,
|
|
230
233
|
) -> bool:
|
|
231
|
-
if filename:
|
|
232
|
-
local_path =
|
|
233
|
-
|
|
234
|
-
|
|
234
|
+
if filename or zip:
|
|
235
|
+
local_path = (
|
|
236
|
+
os.path.join(
|
|
237
|
+
ABCLI_OBJECT_ROOT,
|
|
238
|
+
f"{object_name}.tar.gz",
|
|
239
|
+
)
|
|
240
|
+
if zip
|
|
241
|
+
else objects.path_of(
|
|
242
|
+
object_name=object_name,
|
|
243
|
+
filename=filename,
|
|
244
|
+
)
|
|
235
245
|
)
|
|
236
246
|
|
|
237
247
|
bucket_name = (
|
|
@@ -252,20 +262,22 @@ class S3Interface(StorageInterface):
|
|
|
252
262
|
bucket.put_object(
|
|
253
263
|
ACL="public-read" if public else "private",
|
|
254
264
|
Body=fp,
|
|
255
|
-
Key=
|
|
265
|
+
Key=(
|
|
266
|
+
f"{object_name}.tar.gz"
|
|
267
|
+
if zip
|
|
268
|
+
else f"{object_name}/{filename}"
|
|
269
|
+
),
|
|
256
270
|
)
|
|
257
271
|
except ClientError as e:
|
|
258
272
|
logger.error(e)
|
|
259
273
|
return False
|
|
260
274
|
|
|
261
275
|
if public:
|
|
262
|
-
|
|
263
276
|
logger.info(
|
|
264
|
-
"🔗 https://{}.{}/{}
|
|
277
|
+
"🔗 https://{}.{}/{}".format(
|
|
265
278
|
bucket_name,
|
|
266
279
|
env.S3_STORAGE_ENDPOINT_URL.split("https://", 1)[1],
|
|
267
|
-
object_name,
|
|
268
|
-
filename,
|
|
280
|
+
f"{object_name}.tar.gz" if zip else f"{object_name}/{filename}",
|
|
269
281
|
)
|
|
270
282
|
)
|
|
271
283
|
|
|
@@ -273,6 +285,7 @@ class S3Interface(StorageInterface):
|
|
|
273
285
|
object_name=object_name,
|
|
274
286
|
filename=filename,
|
|
275
287
|
public=public,
|
|
288
|
+
zip=zip,
|
|
276
289
|
log=log,
|
|
277
290
|
)
|
|
278
291
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from bluer_objects import objects
|
|
2
|
+
from bluer_objects.testing import create_test_asset
|
|
3
|
+
from bluer_objects.logger.image import log_image_grid
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def test_log_image_grid():
|
|
7
|
+
object_name = objects.unique_object("test_log_image_grid")
|
|
8
|
+
|
|
9
|
+
depth = 10
|
|
10
|
+
|
|
11
|
+
assert create_test_asset(
|
|
12
|
+
object_name=object_name,
|
|
13
|
+
depth=depth,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
assert log_image_grid(
|
|
17
|
+
[
|
|
18
|
+
{
|
|
19
|
+
"filename": objects.path_of(
|
|
20
|
+
object_name=object_name,
|
|
21
|
+
filename=f"test-{suffix:02d}.png",
|
|
22
|
+
)
|
|
23
|
+
for suffix in range(depth)
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
objects.path_of(object_name=object_name, filename="image_grid.png"),
|
|
27
|
+
rows=2,
|
|
28
|
+
cols=5,
|
|
29
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.201.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.201.1`](https://github.com/kamangir/bluer-objects).
|
|
68
68
|
|
|
69
69
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
bluer_objects/__init__.py,sha256=
|
|
1
|
+
bluer_objects/__init__.py,sha256=l5ODVDozyMyvmJSdeSoiuT8z0Du3tazCJX9oWS5GlhI,315
|
|
2
2
|
bluer_objects/__main__.py,sha256=Yqfov833_hJuRne19WrGhT5DWAPtdffpoMxeSXS7EGw,359
|
|
3
3
|
bluer_objects/config.env,sha256=RjcpnbKfRqNyGLRB4z7M_OG9z2pOM032ck__53JqXqo,216
|
|
4
4
|
bluer_objects/env.py,sha256=iw4QvaImqnavlsHwfkUScNHc7afDEJQKJSsHTtVJE78,2019
|
|
@@ -24,7 +24,7 @@ bluer_objects/.abcli/mlflow.sh,sha256=7ylwHrQas-QbAJ8SfDJiN3zbuU6ifLUBEAhPRw38Hp
|
|
|
24
24
|
bluer_objects/.abcli/object.sh,sha256=Zh2ZMFqBSIOHwwwLegCMxJRfaYCbPp1EJMT3LvcFzhE,739
|
|
25
25
|
bluer_objects/.abcli/select.sh,sha256=CVcqVRN6bMLtEo0SptZS_QGY90_lT1Su71DlcVyddXo,878
|
|
26
26
|
bluer_objects/.abcli/storage.sh,sha256=iYHxdXJI9sGR-WKxDuYKOB06FccSQ0G0-uZn9UJQGnc,321
|
|
27
|
-
bluer_objects/.abcli/upload.sh,sha256=
|
|
27
|
+
bluer_objects/.abcli/upload.sh,sha256=CFw2GkqYDbjOm2dAqg3gmcVEFohjPvjc2ttl15NOmlU,1208
|
|
28
28
|
bluer_objects/.abcli/url.sh,sha256=1YF6XNG109ItH6l3SUvvbRkm4JBojiUoLZ2wJYwM28U,315
|
|
29
29
|
bluer_objects/.abcli/metadata/get.sh,sha256=6W9x0akZwwozTyOlKCW_0MndYVUAL4v1HSUPxTAsfKA,835
|
|
30
30
|
bluer_objects/.abcli/metadata/post.sh,sha256=UdvZNuRu6_NcyRVvDMFZ9GEwOm3K8rsNqM0FFr9LskA,570
|
|
@@ -64,15 +64,15 @@ bluer_objects/.abcli/tests/mlflow_lock.sh,sha256=TJwp6HbVUOT1HqRfXPS8_zpKAL7-mBe
|
|
|
64
64
|
bluer_objects/.abcli/tests/mlflow_logging.sh,sha256=TVzHhk9qRthpP2xdKwu3LwK00S77GqH50io3oVyS2UE,305
|
|
65
65
|
bluer_objects/.abcli/tests/mlflow_tags.sh,sha256=pX4sEK_z2Vrb7a6Bq4qWurFVPZkvjpS10K4MLx3mf64,811
|
|
66
66
|
bluer_objects/.abcli/tests/mlflow_test.sh,sha256=7MXxYq2GgD2MEJbQlpx80qLT2HaaVn_PFFMpSA_hWA4,125
|
|
67
|
-
bluer_objects/.abcli/tests/storage_public_upload.sh,sha256=
|
|
68
|
-
bluer_objects/.abcli/tests/storage_upload_download.sh,sha256=
|
|
67
|
+
bluer_objects/.abcli/tests/storage_public_upload.sh,sha256=qwyUSejxDlV5Q1f7jyOLej_ADZt50HwbuSImFcrMWf8,589
|
|
68
|
+
bluer_objects/.abcli/tests/storage_upload_download.sh,sha256=l5EO0TwyHw7zVBrJV8xmJub8RburdAiyg80WEH3VjrQ,1476
|
|
69
69
|
bluer_objects/.abcli/tests/version.sh,sha256=k-lXozSjyFgFR58cTzUYla0Ef-upx3sSK641zI5ynfE,169
|
|
70
70
|
bluer_objects/.abcli/tests/web_is_accessible.sh,sha256=3R33_LQM9PIfl8Bks4HrPHp4ug8cGv9X6LaDscsznEs,405
|
|
71
71
|
bluer_objects/.abcli/tests/web_where_am_ai.sh,sha256=BJ9G_m4id8cx_UB_l_jV2xY6AfQEpG7O4IBsuVjodxk,104
|
|
72
72
|
bluer_objects/.abcli/web/is_accessible.sh,sha256=Luv_6IvpscRYx7f39V0RnkkNEWTRfVGyQVUeij3iqa0,262
|
|
73
73
|
bluer_objects/.abcli/web/where_am_i.sh,sha256=QPBXFo6Ni4pZEoOx0rtuJUxk6tOlp0ESMyAc9YPy9zg,92
|
|
74
74
|
bluer_objects/README/__init__.py,sha256=JwxdTVAK3LeUaw7rMJujOFIXZA59HaLCtxpsR1C-vpo,1311
|
|
75
|
-
bluer_objects/README/functions.py,sha256=
|
|
75
|
+
bluer_objects/README/functions.py,sha256=WXa-reSe1QxyT8UuA2m1fCYXAKpv2dg9EqiS8IB2ufA,10876
|
|
76
76
|
bluer_objects/README/items.py,sha256=-XaNCr5b_NGRkZVfIQ6hBFgJw5GIVcMJdktT3hWoam4,755
|
|
77
77
|
bluer_objects/file/__init__.py,sha256=c_79ipBkKl6OFDimOev0vnaVdpUk-Bl3oJUapOreMXc,681
|
|
78
78
|
bluer_objects/file/__main__.py,sha256=v2IXWvZeh_B2sGYWzv1CiUY-7HWHXXghZM5M4IPjbu4,1277
|
|
@@ -97,7 +97,7 @@ bluer_objects/help/gif.py,sha256=gKV6vNT4bEC2Ch3QIb3Yc5DqzAH_UvAVCsuvzXeF1Sc,564
|
|
|
97
97
|
bluer_objects/help/host.py,sha256=4t4yrPGjTbnFtODcuBjfIzpA5pmmvc5s4QrjIqPPVsM,988
|
|
98
98
|
bluer_objects/help/ls.py,sha256=acvRLDxjJOzQ1a9ZQ4Mn9aBZ8Vf17IDHcAxC2O3R33Y,627
|
|
99
99
|
bluer_objects/help/metadata.py,sha256=fk22NasBcZU1ffY4fu6AxrCzMQtTI28p_ghaSVRrrPM,2811
|
|
100
|
-
bluer_objects/help/upload.py,sha256=
|
|
100
|
+
bluer_objects/help/upload.py,sha256=kied2p7II-zCdme_GyDs_74n-15iwyS_RMh2SWLkw1I,460
|
|
101
101
|
bluer_objects/help/web.py,sha256=YGxzU0GyoQAA8tqnEoGcC4rABFW_RnI44PhvHvIG5dA,626
|
|
102
102
|
bluer_objects/help/mlflow/__init__.py,sha256=fvnGg8l24oGWKd7lbVm32GHyrE3eBlholj4RFrjFNuw,4427
|
|
103
103
|
bluer_objects/help/mlflow/cache.py,sha256=O8O1oaiq1e1z2HCi8fRe4hjSNimzvCaCAIu-u2GDHkE,704
|
|
@@ -107,6 +107,7 @@ bluer_objects/host/__init__.py,sha256=Ko43SWnZNsGKuIPU_l0w17pYrxCgVHQx3_zEoUNaHZ
|
|
|
107
107
|
bluer_objects/host/__main__.py,sha256=J0MO2sUzrI_t_X4VVYyM6n41ND0yhhSXOmZSkDAC4rg,1751
|
|
108
108
|
bluer_objects/host/functions.py,sha256=ADups78hYZDAnC6FlIICQ48WkFd4sPnRMWA0D6X-FV4,1663
|
|
109
109
|
bluer_objects/logger/__init__.py,sha256=2aGNbx-qBXU3IlX9BDqtrFfN25lO_uarEg22cE3-3dU,102
|
|
110
|
+
bluer_objects/logger/image.py,sha256=plwpVIgMlfhDR-fVxvgviO0vCwxe0C6ZFdBaiRUgzws,2104
|
|
110
111
|
bluer_objects/logger/matrix.py,sha256=cPKQIhd347MH_9LaB-Ym7Mix1pqampG9MIgkeh08KA4,5757
|
|
111
112
|
bluer_objects/metadata/__init__.py,sha256=B8cmMOMMO53mTwD2LJUFbSjvangSkpLqhR3oVIBsoBI,260
|
|
112
113
|
bluer_objects/metadata/__main__.py,sha256=UAZBsf3AMUo-OHIgg4gS5_OowDOIO2T_zjismL3AfkI,2272
|
|
@@ -125,13 +126,13 @@ bluer_objects/mlflow/testing.py,sha256=cJH5Ki02fJN_Xos1j9yvwQChXvMkOa9i12vtDKmkb
|
|
|
125
126
|
bluer_objects/mlflow/lock/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
126
127
|
bluer_objects/mlflow/lock/__main__.py,sha256=xF_xq2UqAsEohSOHjxaFXaw9KopOEDg6LRDM5a4VAPQ,1138
|
|
127
128
|
bluer_objects/mlflow/lock/functions.py,sha256=MOslqblNAOsRvILzLF4q6m2EAwCk4f4zEWQpsy8lVnM,3045
|
|
128
|
-
bluer_objects/storage/WebDAV.py,sha256=
|
|
129
|
-
bluer_objects/storage/WebDAVrequest.py,sha256=
|
|
130
|
-
bluer_objects/storage/WebDAVzip.py,sha256=
|
|
131
|
-
bluer_objects/storage/__init__.py,sha256=
|
|
132
|
-
bluer_objects/storage/__main__.py,sha256=
|
|
133
|
-
bluer_objects/storage/base.py,sha256=
|
|
134
|
-
bluer_objects/storage/s3.py,sha256=
|
|
129
|
+
bluer_objects/storage/WebDAV.py,sha256=s0KI5JIfvYcRfrroxsZdEjfnxX_8CiPC-fQ3f0Lrkjw,3140
|
|
130
|
+
bluer_objects/storage/WebDAVrequest.py,sha256=H9GIVPQPjP1j-URZrxJ15Jxnf8qPgQx-dShaxaeAj1U,10101
|
|
131
|
+
bluer_objects/storage/WebDAVzip.py,sha256=vfjk-7HF5EpQ9ad-ZGfPR_qOK57RQzAPXlWc3tIsq8A,4090
|
|
132
|
+
bluer_objects/storage/__init__.py,sha256=CFo0m1ftBGFKBdUAy4FAilJCpXwKvVdXCrBMkmeTW1E,1735
|
|
133
|
+
bluer_objects/storage/__main__.py,sha256=6T4gltrJ-3lihce2fm43UeWB1y09VInXHrVBnAAa_R4,2005
|
|
134
|
+
bluer_objects/storage/base.py,sha256=CPMBGi7koKnEBVLJOeIq9T05xxfKFRg-BHjyWidlCKw,2081
|
|
135
|
+
bluer_objects/storage/s3.py,sha256=kSvm68POErGaqSWZ0ds8zB0Fd5q4WJUZ95kQZSp3n7w,9395
|
|
135
136
|
bluer_objects/testing/__init__.py,sha256=DWY5ZtvCnHG_t9BDiqy_ArLOZi-nlyAtPVMLA1PPAMU,62
|
|
136
137
|
bluer_objects/testing/__main__.py,sha256=hhJV9qn0V_8FxzNDcoHCHr4A7zf9UudnNGJCAPkTBGU,750
|
|
137
138
|
bluer_objects/testing/functions.py,sha256=AXAfzWLcEPkbSYTehdahshjKJ45C4IJkRs_TgrHOntc,1355
|
|
@@ -148,6 +149,7 @@ bluer_objects/tests/test_graphics_gif.py,sha256=5vIRJiu1XZ7sjQ2R1VpdiqZszPx4DoZn
|
|
|
148
149
|
bluer_objects/tests/test_graphics_screen.py,sha256=26GMDxImz57oWb8mFrNBtiGnctfjO0oNpzi1GLaHEro,138
|
|
149
150
|
bluer_objects/tests/test_graphics_signature.py,sha256=CVV257E3A5KBwqEDpRXShN-ful1zFwV9S-z-06oFkxM,1588
|
|
150
151
|
bluer_objects/tests/test_graphics_text.py,sha256=_jLZVuAcQQYlKpATeQCBpPMa8UhKQ__bFYR1bedO5EE,314
|
|
152
|
+
bluer_objects/tests/test_log_image_grid.py,sha256=qjSRMwY5jnJd9S3XZ3FDeoIsSJ9aFJ3yDhth1sV0A5g,737
|
|
151
153
|
bluer_objects/tests/test_logger.py,sha256=DdkZqj8YOErKf6T-SWEPtU21LGfQf_O3GKrCn3H0Ujs,88
|
|
152
154
|
bluer_objects/tests/test_logger_matrix.py,sha256=qedidEDGusMWQM04kgk3mt74yFm4iU3jIyjE4gRi_FQ,1703
|
|
153
155
|
bluer_objects/tests/test_markdown.py,sha256=KtCWKIDs4U1M3qAGFMYhzVpdGiDV2VU8z7dCaU3s3Ec,217
|
|
@@ -167,8 +169,8 @@ bluer_objects/tests/test_web_is_accessible.py,sha256=2Y20NAEDMblg0MKnhnqcfw3XVKE
|
|
|
167
169
|
bluer_objects/web/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
168
170
|
bluer_objects/web/__main__.py,sha256=xf2Ob54FI8JEokfGhFmiyOBdD9nBactwqmZvsKsdioU,624
|
|
169
171
|
bluer_objects/web/functions.py,sha256=KNufAFOc6N3BYf83lN2rUpKUdsnzb2anWyp9koFRVUo,172
|
|
170
|
-
bluer_objects-6.
|
|
171
|
-
bluer_objects-6.
|
|
172
|
-
bluer_objects-6.
|
|
173
|
-
bluer_objects-6.
|
|
174
|
-
bluer_objects-6.
|
|
172
|
+
bluer_objects-6.201.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
|
|
173
|
+
bluer_objects-6.201.1.dist-info/METADATA,sha256=qNe30ZRwFJjiC5-KHrrcDrJSH9kzRIaHutxlweaz4xw,3678
|
|
174
|
+
bluer_objects-6.201.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
175
|
+
bluer_objects-6.201.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
|
|
176
|
+
bluer_objects-6.201.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|