bluer-objects 6.271.1__py3-none-any.whl → 6.288.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/alias.sh +2 -0
- bluer_objects/.abcli/assets/cd.sh +20 -0
- bluer_objects/.abcli/assets/mv.sh +34 -0
- bluer_objects/.abcli/assets/publish.sh +37 -0
- bluer_objects/.abcli/assets.sh +15 -0
- bluer_objects/.abcli/tests/gif.sh +1 -0
- bluer_objects/.abcli/tests/help.sh +5 -0
- bluer_objects/README/__init__.py +22 -11
- bluer_objects/README/consts.py +21 -0
- bluer_objects/README/functions.py +2 -1
- bluer_objects/__init__.py +1 -1
- bluer_objects/assets/__init__.py +0 -0
- bluer_objects/assets/__main__.py +57 -0
- bluer_objects/assets/functions.py +62 -0
- bluer_objects/graphics/__main__.py +7 -0
- bluer_objects/graphics/gif.py +6 -1
- bluer_objects/help/assets.py +96 -0
- bluer_objects/help/functions.py +2 -0
- bluer_objects/help/gif.py +1 -0
- bluer_objects/tests/test_README_assets.py +35 -0
- bluer_objects/tests/test_graphics_gif.py +2 -0
- {bluer_objects-6.271.1.dist-info → bluer_objects-6.288.1.dist-info}/METADATA +3 -2
- {bluer_objects-6.271.1.dist-info → bluer_objects-6.288.1.dist-info}/RECORD +26 -16
- {bluer_objects-6.271.1.dist-info → bluer_objects-6.288.1.dist-info}/WHEEL +0 -0
- {bluer_objects-6.271.1.dist-info → bluer_objects-6.288.1.dist-info}/licenses/LICENSE +0 -0
- {bluer_objects-6.271.1.dist-info → bluer_objects-6.288.1.dist-info}/top_level.txt +0 -0
bluer_objects/.abcli/alias.sh
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_objects_assets_cd() {
|
|
4
|
+
local options=$1
|
|
5
|
+
local do_create=$(bluer_ai_option_int "$options" create 0)
|
|
6
|
+
local volume=$(bluer_ai_option "$options" vol)
|
|
7
|
+
|
|
8
|
+
local path=$2
|
|
9
|
+
path=$abcli_path_git/assets$volume/$path
|
|
10
|
+
|
|
11
|
+
if [[ "$do_create" == 1 ]]; then
|
|
12
|
+
mkdir -pv $path
|
|
13
|
+
[[ $? -ne 0 ]] && return 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
cd $path
|
|
17
|
+
[[ $? -ne 0 ]] && return 1
|
|
18
|
+
|
|
19
|
+
bluer_ai_log "🔗 $path"
|
|
20
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_objects_assets_mv() {
|
|
4
|
+
local options=$1
|
|
5
|
+
local do_create=$(bluer_ai_option_int "$options" create 0)
|
|
6
|
+
local extension=$(bluer_ai_option "$options" extension jpg)
|
|
7
|
+
local volume=$(bluer_ai_option "$options" vol)
|
|
8
|
+
|
|
9
|
+
local path=$2
|
|
10
|
+
path=$abcli_path_git/assets$volume/$path
|
|
11
|
+
|
|
12
|
+
if [[ "$do_create" == 1 ]]; then
|
|
13
|
+
mkdir -pv $path
|
|
14
|
+
[[ $? -ne 0 ]] && return 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
bluer_ai_log "Downloads/.$extension -> assets$volume/path"
|
|
18
|
+
|
|
19
|
+
mv -v \
|
|
20
|
+
$HOME/Downloads/*.$extension \
|
|
21
|
+
$path
|
|
22
|
+
[[ $? -ne 0 ]] && return 1
|
|
23
|
+
|
|
24
|
+
local push_options=$3
|
|
25
|
+
local do_push=$(bluer_ai_option_int "$push_options" push 0)
|
|
26
|
+
[[ "$do_push" == 0 ]] &&
|
|
27
|
+
return 0
|
|
28
|
+
|
|
29
|
+
bluer_ai_git \
|
|
30
|
+
assets$volume \
|
|
31
|
+
push \
|
|
32
|
+
"$path += " \
|
|
33
|
+
$push_options
|
|
34
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_objects_assets_publish() {
|
|
4
|
+
local options=$1
|
|
5
|
+
|
|
6
|
+
local do_download=$(bluer_ai_option_int "$options" download 0)
|
|
7
|
+
local do_pull=$(bluer_ai_option_int "$options" pull 1)
|
|
8
|
+
local do_push=$(bluer_ai_option_int "$options" push 0)
|
|
9
|
+
local extensions=$(bluer_ai_option "$options" extensions png)
|
|
10
|
+
|
|
11
|
+
[[ "$do_pull" == 1 ]] &&
|
|
12
|
+
bluer_ai_git \
|
|
13
|
+
assets \
|
|
14
|
+
pull \
|
|
15
|
+
~all
|
|
16
|
+
|
|
17
|
+
local object_name=$(bluer_ai_clarify_object $2 .)
|
|
18
|
+
|
|
19
|
+
[[ "$do_download" == 1 ]] &&
|
|
20
|
+
bluer_objects_download - $object_name
|
|
21
|
+
|
|
22
|
+
bluer_ai_eval dryrun=$do_dryrun \
|
|
23
|
+
python3 -m bluer_objects.assets \
|
|
24
|
+
publish \
|
|
25
|
+
--object_name $object_name \
|
|
26
|
+
--extensions $extensions \
|
|
27
|
+
"${@:3}"
|
|
28
|
+
[[ $? -ne 0 ]] && return 1
|
|
29
|
+
|
|
30
|
+
[[ "$do_push" == 1 ]] &&
|
|
31
|
+
bluer_ai_git \
|
|
32
|
+
assets \
|
|
33
|
+
push \
|
|
34
|
+
"$object_name update."
|
|
35
|
+
|
|
36
|
+
return 0
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_objects_assets() {
|
|
4
|
+
local task=$1
|
|
5
|
+
|
|
6
|
+
local function_name=bluer_objects_assets_$task
|
|
7
|
+
if [[ $(type -t $function_name) == "function" ]]; then
|
|
8
|
+
$function_name "${@:2}"
|
|
9
|
+
return
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
python3 -m bluer_objects.assets "$@"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
bluer_ai_source_caller_suffix_path /assets
|
bluer_objects/README/__init__.py
CHANGED
|
@@ -30,18 +30,29 @@ def build_me() -> bool:
|
|
|
30
30
|
),
|
|
31
31
|
)
|
|
32
32
|
for path in [
|
|
33
|
+
"../docs/aliases",
|
|
34
|
+
"../docs",
|
|
33
35
|
"../..",
|
|
34
36
|
".",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"../docs/aliases/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
]
|
|
38
|
+
+ [
|
|
39
|
+
f"../docs/aliases/{alias}.md"
|
|
40
|
+
for alias in [
|
|
41
|
+
"assets",
|
|
42
|
+
"clone",
|
|
43
|
+
"download",
|
|
44
|
+
"gif",
|
|
45
|
+
"host",
|
|
46
|
+
"ls",
|
|
47
|
+
"metadata",
|
|
48
|
+
"mlflow",
|
|
49
|
+
"upload",
|
|
50
|
+
]
|
|
51
|
+
]
|
|
52
|
+
+ [
|
|
53
|
+
f"../mlflow/{module_name}"
|
|
54
|
+
for module_name in [
|
|
55
|
+
"lock",
|
|
56
|
+
]
|
|
46
57
|
]
|
|
47
58
|
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from typing import Union
|
|
2
|
+
|
|
3
|
+
github_kamangir = "https://github.com/kamangir"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def asset_volume(volume: Union[str, int] = "") -> str:
|
|
7
|
+
return f"{github_kamangir}/assets{str(volume)}/raw/main"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
assets = asset_volume(volume="")
|
|
11
|
+
assets2 = asset_volume(volume="2")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def assets_path(
|
|
15
|
+
suffix: str,
|
|
16
|
+
volume: Union[str, int] = "",
|
|
17
|
+
) -> str:
|
|
18
|
+
return "{}/{}".format(
|
|
19
|
+
asset_volume(volume=volume),
|
|
20
|
+
suffix,
|
|
21
|
+
)
|
|
@@ -42,6 +42,7 @@ def build(
|
|
|
42
42
|
help_function: Union[Callable[[List[str]], str], None] = None,
|
|
43
43
|
legacy_mode: bool = True,
|
|
44
44
|
assets_repo: str = "kamangir/assets",
|
|
45
|
+
download: bool = True,
|
|
45
46
|
) -> bool:
|
|
46
47
|
if path:
|
|
47
48
|
if path.endswith(".md"):
|
|
@@ -103,7 +104,7 @@ def build(
|
|
|
103
104
|
object_name,
|
|
104
105
|
key,
|
|
105
106
|
{},
|
|
106
|
-
download=
|
|
107
|
+
download=download,
|
|
107
108
|
)
|
|
108
109
|
|
|
109
110
|
logger.info(f"metadata[{object_name_and_key}] = {value}")
|
bluer_objects/__init__.py
CHANGED
|
File without changes
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from blueness import module
|
|
4
|
+
from blueness.argparse.generic import sys_exit
|
|
5
|
+
|
|
6
|
+
from bluer_objects import NAME
|
|
7
|
+
from bluer_objects.assets.functions import publish
|
|
8
|
+
from bluer_objects.logger import logger
|
|
9
|
+
|
|
10
|
+
NAME = module.name(__file__, NAME)
|
|
11
|
+
|
|
12
|
+
parser = argparse.ArgumentParser(NAME)
|
|
13
|
+
parser.add_argument(
|
|
14
|
+
"task",
|
|
15
|
+
type=str,
|
|
16
|
+
help="publish",
|
|
17
|
+
)
|
|
18
|
+
parser.add_argument(
|
|
19
|
+
"--arg",
|
|
20
|
+
type=bool,
|
|
21
|
+
default=0,
|
|
22
|
+
help="0|1",
|
|
23
|
+
)
|
|
24
|
+
parser.add_argument(
|
|
25
|
+
"--object_name",
|
|
26
|
+
type=str,
|
|
27
|
+
)
|
|
28
|
+
parser.add_argument(
|
|
29
|
+
"--extensions",
|
|
30
|
+
type=str,
|
|
31
|
+
default="png",
|
|
32
|
+
help="png+txt",
|
|
33
|
+
)
|
|
34
|
+
parser.add_argument(
|
|
35
|
+
"--prefix",
|
|
36
|
+
type=str,
|
|
37
|
+
default="",
|
|
38
|
+
)
|
|
39
|
+
parser.add_argument(
|
|
40
|
+
"--asset_name",
|
|
41
|
+
type=str,
|
|
42
|
+
default="",
|
|
43
|
+
)
|
|
44
|
+
args = parser.parse_args()
|
|
45
|
+
|
|
46
|
+
success = False
|
|
47
|
+
if args.task == "publish":
|
|
48
|
+
success = publish(
|
|
49
|
+
object_name=args.object_name,
|
|
50
|
+
list_of_extensions=args.extensions.split("+"),
|
|
51
|
+
prefix=args.prefix,
|
|
52
|
+
asset_name=args.asset_name,
|
|
53
|
+
)
|
|
54
|
+
else:
|
|
55
|
+
success = None
|
|
56
|
+
|
|
57
|
+
sys_exit(logger, NAME, args.task, success)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import List
|
|
3
|
+
import glob
|
|
4
|
+
from tqdm import tqdm
|
|
5
|
+
|
|
6
|
+
from blueness import module
|
|
7
|
+
|
|
8
|
+
from bluer_objects import objects, file
|
|
9
|
+
from bluer_objects.env import abcli_path_git
|
|
10
|
+
from bluer_objects import NAME
|
|
11
|
+
from bluer_objects.logger import logger
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
NAME = module.name(__file__, NAME)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def publish(
|
|
18
|
+
object_name: str,
|
|
19
|
+
list_of_extensions: List[str],
|
|
20
|
+
prefix: str = "",
|
|
21
|
+
asset_name: str = "",
|
|
22
|
+
log: bool = True,
|
|
23
|
+
) -> bool:
|
|
24
|
+
if not asset_name:
|
|
25
|
+
asset_name = object_name
|
|
26
|
+
logger.info(
|
|
27
|
+
"{}.publish: {}/{}.* for {} -> {}".format(
|
|
28
|
+
NAME,
|
|
29
|
+
object_name,
|
|
30
|
+
prefix,
|
|
31
|
+
", ".join(list_of_extensions),
|
|
32
|
+
asset_name,
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
for extension in tqdm(list_of_extensions):
|
|
37
|
+
for filename in glob.glob(
|
|
38
|
+
objects.path_of(
|
|
39
|
+
filename=f"{prefix}*.{extension}",
|
|
40
|
+
object_name=object_name,
|
|
41
|
+
)
|
|
42
|
+
):
|
|
43
|
+
published_filename = os.path.join(
|
|
44
|
+
abcli_path_git,
|
|
45
|
+
"assets",
|
|
46
|
+
asset_name,
|
|
47
|
+
file.name_and_extension(filename).replace(
|
|
48
|
+
object_name,
|
|
49
|
+
asset_name,
|
|
50
|
+
),
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
if not file.copy(
|
|
54
|
+
filename,
|
|
55
|
+
published_filename,
|
|
56
|
+
log=log,
|
|
57
|
+
):
|
|
58
|
+
return False
|
|
59
|
+
|
|
60
|
+
logger.info(f"🔗 https://github.com/kamangir/assets/tree/main/{asset_name}")
|
|
61
|
+
|
|
62
|
+
return True
|
|
@@ -34,6 +34,12 @@ parser.add_argument(
|
|
|
34
34
|
type=str,
|
|
35
35
|
help="blank: <object-name>.gif",
|
|
36
36
|
)
|
|
37
|
+
parser.add_argument(
|
|
38
|
+
"--frame_count",
|
|
39
|
+
default=-1,
|
|
40
|
+
type=int,
|
|
41
|
+
help="-1: all",
|
|
42
|
+
)
|
|
37
43
|
parser.add_argument(
|
|
38
44
|
"--frame_duration",
|
|
39
45
|
default=150,
|
|
@@ -72,6 +78,7 @@ if args.task == "generate_animated_gif":
|
|
|
72
78
|
),
|
|
73
79
|
object_name=args.object_name,
|
|
74
80
|
),
|
|
81
|
+
frame_count=args.frame_count,
|
|
75
82
|
frame_duration=args.frame_duration,
|
|
76
83
|
scale=args.scale,
|
|
77
84
|
)
|
bluer_objects/graphics/gif.py
CHANGED
|
@@ -15,6 +15,7 @@ NAME = module.name(__file__, NAME)
|
|
|
15
15
|
def generate_animated_gif(
|
|
16
16
|
list_of_images: List[str],
|
|
17
17
|
output_filename: str,
|
|
18
|
+
frame_count: int = -1,
|
|
18
19
|
frame_duration: int = 150,
|
|
19
20
|
scale: int = 1,
|
|
20
21
|
log: bool = True,
|
|
@@ -22,6 +23,9 @@ def generate_animated_gif(
|
|
|
22
23
|
if not list_of_images:
|
|
23
24
|
return True
|
|
24
25
|
|
|
26
|
+
if frame_count != -1:
|
|
27
|
+
list_of_images = list_of_images[:frame_count]
|
|
28
|
+
|
|
25
29
|
max_width = 0
|
|
26
30
|
max_height = 0
|
|
27
31
|
frames = []
|
|
@@ -67,7 +71,7 @@ def generate_animated_gif(
|
|
|
67
71
|
except Exception:
|
|
68
72
|
success = False
|
|
69
73
|
|
|
70
|
-
message = "{}.generate_animated_gif({}x{}x{}) -scale={}-> {} @ {:.2f}ms".format(
|
|
74
|
+
message = "{}.generate_animated_gif({}x{}x{}) -scale={}-> {} @ {:.2f}ms{}".format(
|
|
71
75
|
NAME,
|
|
72
76
|
len(list_of_images),
|
|
73
77
|
height,
|
|
@@ -75,6 +79,7 @@ def generate_animated_gif(
|
|
|
75
79
|
scale,
|
|
76
80
|
output_filename,
|
|
77
81
|
frame_duration,
|
|
82
|
+
"" if frame_count == -1 else " [{} frame(s)]".format(frame_count),
|
|
78
83
|
)
|
|
79
84
|
|
|
80
85
|
if success:
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from bluer_options.terminal import show_usage, xtra
|
|
4
|
+
from bluer_ai.help.git import push_options
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def help_cd(
|
|
8
|
+
tokens: List[str],
|
|
9
|
+
mono: bool,
|
|
10
|
+
) -> str:
|
|
11
|
+
options = "".join(
|
|
12
|
+
[
|
|
13
|
+
xtra("create,", mono=mono),
|
|
14
|
+
"vol=<2>",
|
|
15
|
+
]
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
return show_usage(
|
|
19
|
+
[
|
|
20
|
+
"@assets",
|
|
21
|
+
"cd",
|
|
22
|
+
f"[{options}]",
|
|
23
|
+
"[<path>]",
|
|
24
|
+
],
|
|
25
|
+
"cd assets volume.",
|
|
26
|
+
mono=mono,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def help_mv(
|
|
31
|
+
tokens: List[str],
|
|
32
|
+
mono: bool,
|
|
33
|
+
) -> str:
|
|
34
|
+
options = "".join(
|
|
35
|
+
[
|
|
36
|
+
xtra("create,", mono=mono),
|
|
37
|
+
"extension=<png>,vol=<2>",
|
|
38
|
+
]
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
return show_usage(
|
|
42
|
+
[
|
|
43
|
+
"@assets",
|
|
44
|
+
"mv",
|
|
45
|
+
f"[{options}]",
|
|
46
|
+
"[<path>]",
|
|
47
|
+
"[push,{}]".format(
|
|
48
|
+
push_options(
|
|
49
|
+
mono=mono,
|
|
50
|
+
uses_actions=False,
|
|
51
|
+
uses_pull_request=False,
|
|
52
|
+
uses_workflows=False,
|
|
53
|
+
)
|
|
54
|
+
),
|
|
55
|
+
],
|
|
56
|
+
"mv assets to volume.",
|
|
57
|
+
mono=mono,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def help_publish(
|
|
62
|
+
tokens: List[str],
|
|
63
|
+
mono: bool,
|
|
64
|
+
) -> str:
|
|
65
|
+
options = "".join(
|
|
66
|
+
[
|
|
67
|
+
xtra("download,", mono=mono),
|
|
68
|
+
"extensions=<png+txt>",
|
|
69
|
+
xtra(",~pull,", mono=mono),
|
|
70
|
+
"push",
|
|
71
|
+
]
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
args = [
|
|
75
|
+
"[--asset_name <other-object-name>]",
|
|
76
|
+
"[--prefix <prefix>]",
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
return show_usage(
|
|
80
|
+
[
|
|
81
|
+
"@assets",
|
|
82
|
+
"publish",
|
|
83
|
+
f"[{options}]",
|
|
84
|
+
"[.|<object-name>]",
|
|
85
|
+
]
|
|
86
|
+
+ args,
|
|
87
|
+
"<object-name>/<prefix> -> assets.",
|
|
88
|
+
mono=mono,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
help_functions = {
|
|
93
|
+
"cd": help_cd,
|
|
94
|
+
"mv": help_mv,
|
|
95
|
+
"publish": help_publish,
|
|
96
|
+
}
|
bluer_objects/help/functions.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from bluer_ai.help.generic import help_functions as generic_help_functions
|
|
2
2
|
|
|
3
3
|
from bluer_objects import ALIAS
|
|
4
|
+
from bluer_objects.help.assets import help_functions as help_assets
|
|
4
5
|
from bluer_objects.help.clone import help_clone
|
|
5
6
|
from bluer_objects.help.create_test_asset import help_create_test_asset
|
|
6
7
|
from bluer_objects.help.download import help_download
|
|
@@ -16,6 +17,7 @@ help_functions = generic_help_functions(plugin_name=ALIAS)
|
|
|
16
17
|
|
|
17
18
|
help_functions.update(
|
|
18
19
|
{
|
|
20
|
+
"assets": help_assets,
|
|
19
21
|
"clone": help_clone,
|
|
20
22
|
"create_test_asset": help_create_test_asset,
|
|
21
23
|
"download": help_download,
|
bluer_objects/help/gif.py
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from bluer_objects.README.consts import assets_path, asset_volume
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize(
|
|
6
|
+
["suffix"],
|
|
7
|
+
[
|
|
8
|
+
["this"],
|
|
9
|
+
["that/which"],
|
|
10
|
+
],
|
|
11
|
+
)
|
|
12
|
+
@pytest.mark.parametrize(
|
|
13
|
+
["volume"],
|
|
14
|
+
[
|
|
15
|
+
[""],
|
|
16
|
+
["2"],
|
|
17
|
+
[2],
|
|
18
|
+
],
|
|
19
|
+
)
|
|
20
|
+
def test_README_assets(
|
|
21
|
+
suffix: str,
|
|
22
|
+
volume: str,
|
|
23
|
+
):
|
|
24
|
+
volume_path = asset_volume(volume=volume)
|
|
25
|
+
assert isinstance(volume_path, str)
|
|
26
|
+
assert volume_path.endswith(volume_path)
|
|
27
|
+
|
|
28
|
+
path = assets_path(
|
|
29
|
+
suffix=suffix,
|
|
30
|
+
volume=volume,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
assert isinstance(path, str)
|
|
34
|
+
assert path.endswith(suffix)
|
|
35
|
+
assert volume_path in path
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.288.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -46,6 +46,7 @@ pip install bluer-objects
|
|
|
46
46
|
|
|
47
47
|
# aliases
|
|
48
48
|
|
|
49
|
+
[@assets](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/assets.md),
|
|
49
50
|
[@clone](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/clone.md),
|
|
50
51
|
[@download](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/download.md),
|
|
51
52
|
[@gif](https://github.com/kamangir/bluer-objects/blob/main/bluer_objects/docs/aliases/gif.md),
|
|
@@ -64,6 +65,6 @@ pip install bluer-objects
|
|
|
64
65
|
|
|
65
66
|
[](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
67
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.
|
|
68
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_objects-6.288.1`](https://github.com/kamangir/bluer-objects).
|
|
68
69
|
|
|
69
70
|
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=K5NWsSc7nqgzcdkWd-IW3BvBd1HO8-DtGyKIo2cvjjQ,315
|
|
2
2
|
bluer_objects/__main__.py,sha256=Yqfov833_hJuRne19WrGhT5DWAPtdffpoMxeSXS7EGw,359
|
|
3
3
|
bluer_objects/config.env,sha256=ReX0OSH_dK2tdD4-zAlp-427BB57yw8uDTS6tLYN4K0,270
|
|
4
4
|
bluer_objects/env.py,sha256=ecwldUVsamxAjOI0a6PmbZPcyhdUZgzJ-nhAPh0CJRo,2085
|
|
@@ -10,7 +10,8 @@ bluer_objects/urls.py,sha256=paHaYlLMQOI46-EYNch5ohu9Q09BMkF2vvJy1QufrVI,19
|
|
|
10
10
|
bluer_objects/.abcli/abcli.sh,sha256=zcqSfpuonb7u9YZCO6jbYeU63pTi0WD5q7lBMSUBXqw,352
|
|
11
11
|
bluer_objects/.abcli/actions.sh,sha256=HZI-X5KUy6bXEHmxywfBN1zbHalU0mcTblTQ2HvIfOE,236
|
|
12
12
|
bluer_objects/.abcli/aka.sh,sha256=odRbw4KZb9Ld7uXny6H2pPi64_5kowKX3s68N6YvRmI,23
|
|
13
|
-
bluer_objects/.abcli/alias.sh,sha256=
|
|
13
|
+
bluer_objects/.abcli/alias.sh,sha256=c0-q9wale9DJ6e8gqIcpgLMG062_GoZ-7QFXUkZI50M,824
|
|
14
|
+
bluer_objects/.abcli/assets.sh,sha256=LFdj9h5Ka16eYZ4EnEx2o6N7htNGKJ2OknnaM0VJfVI,327
|
|
14
15
|
bluer_objects/.abcli/bluer_objects.sh,sha256=x7qf8hSAp3dAl0Hes4J07vL6qP-mWFUkJhvUXzTJC_8,210
|
|
15
16
|
bluer_objects/.abcli/clone.sh,sha256=KqC5d4MAXwo7UZGhKnfCq9k9CCSl3I1dpU1igYs0Yrs,1975
|
|
16
17
|
bluer_objects/.abcli/create_test_asset.sh,sha256=ONIdad_WRjZWdW6V2RalRW2qSJwybEwzU-_KsvaJ9og,245
|
|
@@ -26,6 +27,9 @@ bluer_objects/.abcli/select.sh,sha256=CVcqVRN6bMLtEo0SptZS_QGY90_lT1Su71DlcVyddX
|
|
|
26
27
|
bluer_objects/.abcli/storage.sh,sha256=iYHxdXJI9sGR-WKxDuYKOB06FccSQ0G0-uZn9UJQGnc,321
|
|
27
28
|
bluer_objects/.abcli/upload.sh,sha256=CFw2GkqYDbjOm2dAqg3gmcVEFohjPvjc2ttl15NOmlU,1208
|
|
28
29
|
bluer_objects/.abcli/url.sh,sha256=1YF6XNG109ItH6l3SUvvbRkm4JBojiUoLZ2wJYwM28U,315
|
|
30
|
+
bluer_objects/.abcli/assets/cd.sh,sha256=Lc6ceZAaOsU-yTqyKWmmq3eArOCdYPgVqz0DQ3FUxLw,440
|
|
31
|
+
bluer_objects/.abcli/assets/mv.sh,sha256=o_Ya_2K8CyD8cvoJnZqczqC9BE4vZA5MUF9PAdpJQKI,829
|
|
32
|
+
bluer_objects/.abcli/assets/publish.sh,sha256=nMz2_7pWHGFKy_ADkV5McJ7SPHYfz383Co09beQd868,945
|
|
29
33
|
bluer_objects/.abcli/metadata/get.sh,sha256=6W9x0akZwwozTyOlKCW_0MndYVUAL4v1HSUPxTAsfKA,835
|
|
30
34
|
bluer_objects/.abcli/metadata/post.sh,sha256=UdvZNuRu6_NcyRVvDMFZ9GEwOm3K8rsNqM0FFr9LskA,570
|
|
31
35
|
bluer_objects/.abcli/mlflow/browse.sh,sha256=jPHAKLgG7yDLCdSAW5acVmCOcOltAkZQ8FrttrX401s,1166
|
|
@@ -50,8 +54,8 @@ bluer_objects/.abcli/storage/status.sh,sha256=HRbQq9EhoZ1S-GHXOTeclSOTbV-hrEieGA
|
|
|
50
54
|
bluer_objects/.abcli/tests/README.sh,sha256=gk2KuNLFTuV3qdVgH8BNfJmur3gZoSV8EwLboVjrCgM,150
|
|
51
55
|
bluer_objects/.abcli/tests/clone.sh,sha256=Rl9pHvmRJ4H-y-iMA80q11UdSZFrguNaMTez0LTtJjA,473
|
|
52
56
|
bluer_objects/.abcli/tests/create_test_asset.sh,sha256=onRGc3VjDWA7On3isxKD3J7mxA6n349AVXRj90Z3Jzc,386
|
|
53
|
-
bluer_objects/.abcli/tests/gif.sh,sha256=
|
|
54
|
-
bluer_objects/.abcli/tests/help.sh,sha256=
|
|
57
|
+
bluer_objects/.abcli/tests/gif.sh,sha256=qLbVHcvndl8s3YDHd35T06VR5reAdV-TN7eTXHgTn-s,488
|
|
58
|
+
bluer_objects/.abcli/tests/help.sh,sha256=J8AnCuPcPyMM_eYN5OjqzU3IaTrZVKDqvh2WSm3GfwM,1989
|
|
55
59
|
bluer_objects/.abcli/tests/host.sh,sha256=GBuTLNw1sU3fAb5jS-ew_qAfovVCQ5CLaz5ad04IkoA,144
|
|
56
60
|
bluer_objects/.abcli/tests/ls.sh,sha256=l8t2YW5-XbAFC35sAfX0XjAJQjsoz8i-_RnDaLXN-G8,747
|
|
57
61
|
bluer_objects/.abcli/tests/metadata.sh,sha256=OP1c0h0TSlDycrv0UglKLyBtTQwqh9M0nqVAdQUzkno,1723
|
|
@@ -69,10 +73,14 @@ bluer_objects/.abcli/tests/web_is_accessible.sh,sha256=3R33_LQM9PIfl8Bks4HrPHp4u
|
|
|
69
73
|
bluer_objects/.abcli/tests/web_where_am_ai.sh,sha256=BJ9G_m4id8cx_UB_l_jV2xY6AfQEpG7O4IBsuVjodxk,104
|
|
70
74
|
bluer_objects/.abcli/web/is_accessible.sh,sha256=Luv_6IvpscRYx7f39V0RnkkNEWTRfVGyQVUeij3iqa0,262
|
|
71
75
|
bluer_objects/.abcli/web/where_am_i.sh,sha256=QPBXFo6Ni4pZEoOx0rtuJUxk6tOlp0ESMyAc9YPy9zg,92
|
|
72
|
-
bluer_objects/README/__init__.py,sha256=
|
|
73
|
-
bluer_objects/README/
|
|
76
|
+
bluer_objects/README/__init__.py,sha256=AG9_REFcYVrfMbzK4y02Omie-fCjf6UBP4OnJyNSZ6w,1434
|
|
77
|
+
bluer_objects/README/consts.py,sha256=ElnITE5WYAEDutmjtJKJ59JIvKZUSavVcwpgS-7NItM,428
|
|
78
|
+
bluer_objects/README/functions.py,sha256=PvFawBlJ8IginQn8Kk1QewAyOYRQ4wCuRKpJwr5mUJ8,5844
|
|
74
79
|
bluer_objects/README/items.py,sha256=go4BpNhpdjiRIHf6EHDR5x9YlnboIgkvg7KvCt5rbVU,1508
|
|
75
80
|
bluer_objects/README/utils.py,sha256=WsEm0ad-gpMGMJ6X11W2nXYY5fBokOGPGNFvzjYZc5o,8241
|
|
81
|
+
bluer_objects/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
|
+
bluer_objects/assets/__main__.py,sha256=X1s4ABevs8y5pafPIhZBj5oFX_kMOLWLTMaCFF6_Rio,1064
|
|
83
|
+
bluer_objects/assets/functions.py,sha256=ZxvjbM_XBRJJewAyE8qdzTZdisQTviFdShYL9cVjM_E,1497
|
|
76
84
|
bluer_objects/file/__init__.py,sha256=c_79ipBkKl6OFDimOev0vnaVdpUk-Bl3oJUapOreMXc,681
|
|
77
85
|
bluer_objects/file/__main__.py,sha256=v2IXWvZeh_B2sGYWzv1CiUY-7HWHXXghZM5M4IPjbu4,1277
|
|
78
86
|
bluer_objects/file/classes.py,sha256=TRgeRP2yxInPkBnywhuB4BsoBcBRA3UmQzX1dI43UxU,872
|
|
@@ -80,19 +88,20 @@ bluer_objects/file/functions.py,sha256=YBJFaI5l-bY1LSz8S_hMhbCmym6cULZTF5fzP2W4O
|
|
|
80
88
|
bluer_objects/file/load.py,sha256=1zt5xC95HFr89G9lsi3gCJMSvC4Bt0vVeeUEf3NjpOQ,4281
|
|
81
89
|
bluer_objects/file/save.py,sha256=eXl5pM8Q29Jq8skVkZkU6THoqyMd2FkfFIPgO0-NarM,5056
|
|
82
90
|
bluer_objects/graphics/__init__.py,sha256=Dd0kQqN7Ldvp1N9oyIirPZ6W3IdUtfPj2u21Bf4W_MI,213
|
|
83
|
-
bluer_objects/graphics/__main__.py,sha256=
|
|
91
|
+
bluer_objects/graphics/__main__.py,sha256=5_acfal1MnfzhDrp_pfDbC7oy5uzf6vDiiG3lvgx4VU,2041
|
|
84
92
|
bluer_objects/graphics/frame.py,sha256=WcSn-0oqDw48Akmn_bwcjDC9U_kKqRYRoGWYPoKyFvY,321
|
|
85
|
-
bluer_objects/graphics/gif.py,sha256=
|
|
93
|
+
bluer_objects/graphics/gif.py,sha256=yyMUCYZNt5UmvF2suEeHaKZihuMG36KAm-_IddyZF0s,2188
|
|
86
94
|
bluer_objects/graphics/screen.py,sha256=HF1EqjIsPTLEK4KR-8Rlb2lAVgbHuQNhnu-VL8macOg,1825
|
|
87
95
|
bluer_objects/graphics/signature.py,sha256=JLml1OR3b4uotZyaAjyrOJworUXuPhp8nDHxHXET_Xo,2295
|
|
88
96
|
bluer_objects/graphics/text.py,sha256=nnJrLUD4LIurBntSeUFwBOsbhzALXrzHzfDnBVEcFKA,4382
|
|
89
97
|
bluer_objects/help/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
98
|
bluer_objects/help/__main__.py,sha256=Dxg-JpMOIlYWZklI_J2LyiHnRui5lUwWmfM7FLRzUXA,237
|
|
99
|
+
bluer_objects/help/assets.py,sha256=j_Ur84bQFv25wCA6j-ZFcag88LvqyjQyoJfNEd9Bdc8,1808
|
|
91
100
|
bluer_objects/help/clone.py,sha256=PDnQs7zc4sqmoBHPjVRfX7jIaePiohPGCNA5bxeerik,553
|
|
92
101
|
bluer_objects/help/create_test_asset.py,sha256=oxJORm2qk4b_q7EC6-dEuNu1_pK9Ri60PcHhrE8ruxM,375
|
|
93
102
|
bluer_objects/help/download.py,sha256=9zC_IvH4p2vMXb_qcAS176CBFp5fJe4Z9DFMPdSGBac,751
|
|
94
|
-
bluer_objects/help/functions.py,sha256=
|
|
95
|
-
bluer_objects/help/gif.py,sha256=
|
|
103
|
+
bluer_objects/help/functions.py,sha256=wgHOtkhEv7oQYcRpiTH6J_70lGKqLbxoBOBV4_O8LIU,1213
|
|
104
|
+
bluer_objects/help/gif.py,sha256=0yrTJ0U-vyqc94GH5xstAc_C9Ld0pxptdBusOpnbfzQ,1007
|
|
96
105
|
bluer_objects/help/host.py,sha256=4t4yrPGjTbnFtODcuBjfIzpA5pmmvc5s4QrjIqPPVsM,988
|
|
97
106
|
bluer_objects/help/ls.py,sha256=mD6QyMzR5YLnjmtumudVc7AoCPXkevZRexXyTazekGo,972
|
|
98
107
|
bluer_objects/help/metadata.py,sha256=fk22NasBcZU1ffY4fu6AxrCzMQtTI28p_ghaSVRrrPM,2811
|
|
@@ -139,6 +148,7 @@ bluer_objects/testing/__main__.py,sha256=hhJV9qn0V_8FxzNDcoHCHr4A7zf9UudnNGJCAPk
|
|
|
139
148
|
bluer_objects/testing/functions.py,sha256=AXAfzWLcEPkbSYTehdahshjKJ45C4IJkRs_TgrHOntc,1355
|
|
140
149
|
bluer_objects/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
150
|
bluer_objects/tests/test_README.py,sha256=5D4UV8VcjbeAPThsYVynYtVFuP8gwMAhIjEWuOQZsWs,89
|
|
151
|
+
bluer_objects/tests/test_README_assets.py,sha256=bMR44eBILYs_iPr2Oambvr-xpRXozg9rML3wEDXXYi0,647
|
|
142
152
|
bluer_objects/tests/test_env.py,sha256=HgVCbnHGLIXK8GiaWNWORW9nAHs7fqvIoo6S5Jj29-g,1132
|
|
143
153
|
bluer_objects/tests/test_file_download.py,sha256=1_adHYqgSifkdP-I7TQVW0t8MLCujQ61fvRbcrSkcmg,512
|
|
144
154
|
bluer_objects/tests/test_file_load_save.py,sha256=unqxfiqba6RVhMS95AtHZWsT7Q097jBOKdckAT9PyFU,2390
|
|
@@ -146,7 +156,7 @@ bluer_objects/tests/test_file_load_save_text.py,sha256=3XnBGlv3KZvheHY-RlX1Su6LO
|
|
|
146
156
|
bluer_objects/tests/test_fullname.py,sha256=xWFf9qqzDQ-4RxRyvyR9GWZyU5qNrKxru94UUKMJfPk,80
|
|
147
157
|
bluer_objects/tests/test_graphics.py,sha256=mEuk0rWLwr7b2nv4FH6f-RphwfqP23xe2pkjhWe0HgU,238
|
|
148
158
|
bluer_objects/tests/test_graphics_frame.py,sha256=wRW3MjnfS8edNHiWi_BFJBULoLs1JlJhpFeuCoW5I6A,267
|
|
149
|
-
bluer_objects/tests/test_graphics_gif.py,sha256=
|
|
159
|
+
bluer_objects/tests/test_graphics_gif.py,sha256=5NxBCQWQAzqAcEETdexEaSdZq-pHs1ggK8RZztGYOac,642
|
|
150
160
|
bluer_objects/tests/test_graphics_screen.py,sha256=26GMDxImz57oWb8mFrNBtiGnctfjO0oNpzi1GLaHEro,138
|
|
151
161
|
bluer_objects/tests/test_graphics_signature.py,sha256=CVV257E3A5KBwqEDpRXShN-ful1zFwV9S-z-06oFkxM,1588
|
|
152
162
|
bluer_objects/tests/test_graphics_text.py,sha256=_jLZVuAcQQYlKpATeQCBpPMa8UhKQ__bFYR1bedO5EE,314
|
|
@@ -171,8 +181,8 @@ bluer_objects/tests/test_web_is_accessible.py,sha256=2Y20NAEDMblg0MKnhnqcfw3XVKE
|
|
|
171
181
|
bluer_objects/web/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
172
182
|
bluer_objects/web/__main__.py,sha256=xf2Ob54FI8JEokfGhFmiyOBdD9nBactwqmZvsKsdioU,624
|
|
173
183
|
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.
|
|
184
|
+
bluer_objects-6.288.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
|
|
185
|
+
bluer_objects-6.288.1.dist-info/METADATA,sha256=FGhNUrdTsKZTN2HQ3NiTgxBO7nBGRqb8_8FFPCnzMH0,3780
|
|
186
|
+
bluer_objects-6.288.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
187
|
+
bluer_objects-6.288.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
|
|
188
|
+
bluer_objects-6.288.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|