bluer-objects 6.292.1__py3-none-any.whl → 6.299.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/README/consts.py +21 -8
- bluer_objects/README/items.py +33 -0
- bluer_objects/__init__.py +1 -1
- bluer_objects/tests/test_README_consts.py +24 -8
- bluer_objects/tests/test_README_items.py +120 -0
- {bluer_objects-6.292.1.dist-info → bluer_objects-6.299.1.dist-info}/METADATA +2 -2
- {bluer_objects-6.292.1.dist-info → bluer_objects-6.299.1.dist-info}/RECORD +10 -9
- {bluer_objects-6.292.1.dist-info → bluer_objects-6.299.1.dist-info}/WHEEL +0 -0
- {bluer_objects-6.292.1.dist-info → bluer_objects-6.299.1.dist-info}/licenses/LICENSE +0 -0
- {bluer_objects-6.292.1.dist-info → bluer_objects-6.299.1.dist-info}/top_level.txt +0 -0
bluer_objects/README/consts.py
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import os
|
|
1
2
|
from typing import Union
|
|
2
3
|
|
|
4
|
+
from bluer_objects.env import abcli_path_git
|
|
5
|
+
|
|
3
6
|
github_kamangir = "https://github.com/kamangir"
|
|
4
7
|
designs_repo = f"{github_kamangir}/bluer-designs/"
|
|
5
8
|
|
|
@@ -8,19 +11,29 @@ def designs_url(suffix: str) -> str:
|
|
|
8
11
|
return f"{designs_repo}/blob/main/{suffix}"
|
|
9
12
|
|
|
10
13
|
|
|
11
|
-
def
|
|
12
|
-
|
|
14
|
+
def assets_url(
|
|
15
|
+
suffix: str = "",
|
|
16
|
+
volume: Union[str, int] = "",
|
|
17
|
+
) -> str:
|
|
18
|
+
return "{}/assets{}/raw/main{}".format(
|
|
19
|
+
github_kamangir,
|
|
20
|
+
str(volume),
|
|
21
|
+
f"/{suffix}" if suffix else "",
|
|
22
|
+
)
|
|
13
23
|
|
|
14
24
|
|
|
15
|
-
assets =
|
|
16
|
-
assets2 =
|
|
25
|
+
assets = assets_url(volume="")
|
|
26
|
+
assets2 = assets_url(volume="2")
|
|
17
27
|
|
|
18
28
|
|
|
19
29
|
def assets_path(
|
|
20
|
-
suffix: str,
|
|
30
|
+
suffix: str = "",
|
|
21
31
|
volume: Union[str, int] = "",
|
|
22
32
|
) -> str:
|
|
23
|
-
return
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
return os.path.join(
|
|
34
|
+
abcli_path_git,
|
|
35
|
+
"assets{}{}".format(
|
|
36
|
+
str(volume),
|
|
37
|
+
f"/{suffix}" if suffix else "",
|
|
38
|
+
),
|
|
26
39
|
)
|
bluer_objects/README/items.py
CHANGED
|
@@ -59,3 +59,36 @@ def Items(
|
|
|
59
59
|
output = sorted(output)
|
|
60
60
|
|
|
61
61
|
return output
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# dict of {name, url, marquee, description}
|
|
65
|
+
def Items_of_dict(
|
|
66
|
+
dict_of_things: Dict[str, Dict],
|
|
67
|
+
) -> List[str]:
|
|
68
|
+
return Items(
|
|
69
|
+
sorted(
|
|
70
|
+
[
|
|
71
|
+
{
|
|
72
|
+
"name": thing_name,
|
|
73
|
+
"marquee": info.get("marquee", ""),
|
|
74
|
+
"url": f"./{thing_name}.md",
|
|
75
|
+
}
|
|
76
|
+
for thing_name, info in dict_of_things.items()
|
|
77
|
+
if thing_name != "template"
|
|
78
|
+
],
|
|
79
|
+
key=lambda x: x["name"],
|
|
80
|
+
)
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# dict of {name, url, marquee, description}
|
|
85
|
+
def list_of_dict(
|
|
86
|
+
dict_of_things: Dict[str, Dict],
|
|
87
|
+
) -> List[str]:
|
|
88
|
+
return sorted(
|
|
89
|
+
[
|
|
90
|
+
f"- [{thing_name}](./{thing_name}.md)"
|
|
91
|
+
for thing_name in dict_of_things
|
|
92
|
+
if thing_name != "template"
|
|
93
|
+
]
|
|
94
|
+
)
|
bluer_objects/__init__.py
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import pytest
|
|
2
|
+
|
|
3
|
+
from bluer_objects.env import abcli_path_git
|
|
2
4
|
from bluer_objects.README.consts import (
|
|
3
5
|
assets_path,
|
|
4
|
-
|
|
6
|
+
assets_url,
|
|
5
7
|
designs_repo,
|
|
6
8
|
designs_url,
|
|
9
|
+
github_kamangir,
|
|
7
10
|
)
|
|
8
11
|
|
|
9
12
|
|
|
@@ -26,18 +29,31 @@ def test_README_assets(
|
|
|
26
29
|
suffix: str,
|
|
27
30
|
volume: str,
|
|
28
31
|
):
|
|
29
|
-
|
|
30
|
-
assert isinstance(
|
|
31
|
-
assert
|
|
32
|
+
volume_url = assets_url(volume=volume)
|
|
33
|
+
assert isinstance(volume_url, str)
|
|
34
|
+
assert volume_url.startswith(github_kamangir)
|
|
35
|
+
|
|
36
|
+
# ---
|
|
37
|
+
|
|
38
|
+
suffix_url = assets_url(
|
|
39
|
+
suffix=suffix,
|
|
40
|
+
volume=volume,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
assert isinstance(suffix_url, str)
|
|
44
|
+
assert suffix_url.endswith(suffix)
|
|
45
|
+
assert volume_url in suffix_url
|
|
46
|
+
|
|
47
|
+
# ---
|
|
32
48
|
|
|
33
|
-
|
|
49
|
+
suffix_path = assets_path(
|
|
34
50
|
suffix=suffix,
|
|
35
51
|
volume=volume,
|
|
36
52
|
)
|
|
37
53
|
|
|
38
|
-
assert isinstance(
|
|
39
|
-
assert
|
|
40
|
-
assert
|
|
54
|
+
assert isinstance(suffix_url, str)
|
|
55
|
+
assert suffix_path.endswith(suffix)
|
|
56
|
+
assert abcli_path_git in suffix_path
|
|
41
57
|
|
|
42
58
|
|
|
43
59
|
@pytest.mark.parametrize(
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems, Items, Items_of_dict, list_of_dict
|
|
2
|
+
from bluer_objects.README.consts import assets, assets2
|
|
3
|
+
from bluer_objects import markdown
|
|
4
|
+
from bluer_objects import env
|
|
5
|
+
|
|
6
|
+
dict_of_validations = dict_of_validations = {
|
|
7
|
+
"village-1": {
|
|
8
|
+
"ugv_name": "arzhang",
|
|
9
|
+
"items": ImageItems(
|
|
10
|
+
{
|
|
11
|
+
f"{assets2}/arzhang/20250905_120526.jpg": "",
|
|
12
|
+
f"{assets2}/arzhang/20250905_120808.jpg": "",
|
|
13
|
+
f"{assets2}/arzhang/20250905_121030.jpg": "",
|
|
14
|
+
f"{assets2}/arzhang/20250905_121032.jpg": "",
|
|
15
|
+
f"{assets2}/arzhang/20250905_121702.jpg": "",
|
|
16
|
+
f"{assets2}/arzhang/20250905_121711.jpg": "",
|
|
17
|
+
}
|
|
18
|
+
),
|
|
19
|
+
"marquee": f"{assets}/2025-09-05-11-48-27-d56azo/VID-20250905-WA0014_1.gif",
|
|
20
|
+
},
|
|
21
|
+
"village-2": {
|
|
22
|
+
"ugv_name": "arzhang",
|
|
23
|
+
"items": ImageItems(
|
|
24
|
+
{
|
|
25
|
+
f"{assets2}/arzhang/20250922_094548.jpg": "",
|
|
26
|
+
f"{assets2}/arzhang/20250922_101156.jpg": "",
|
|
27
|
+
f"{assets2}/arzhang/20250922_101409.jpg": "",
|
|
28
|
+
f"{assets2}/arzhang/20250922_101557.jpg": "",
|
|
29
|
+
f"{assets2}/arzhang/20250922_101653.jpg": "",
|
|
30
|
+
f"{assets2}/arzhang/20250922_102822.jpg": "",
|
|
31
|
+
}
|
|
32
|
+
),
|
|
33
|
+
"macros": {
|
|
34
|
+
"debug_objects": markdown.generate_table(
|
|
35
|
+
Items(
|
|
36
|
+
[
|
|
37
|
+
{
|
|
38
|
+
"name": object_name,
|
|
39
|
+
"url": "https://{}.{}/{}".format(
|
|
40
|
+
env.S3_PUBLIC_STORAGE_BUCKET,
|
|
41
|
+
env.S3_STORAGE_ENDPOINT_URL.split("https://", 1)[1],
|
|
42
|
+
f"{object_name}.tar.gz",
|
|
43
|
+
),
|
|
44
|
+
"marquee": f"{assets}/{object_name}/{object_name}.gif",
|
|
45
|
+
}
|
|
46
|
+
for object_name in [
|
|
47
|
+
"swallow-debug-2025-09-22-09-47-32-85hag3",
|
|
48
|
+
"swallow-debug-2025-09-22-09-59-29-emj29v",
|
|
49
|
+
"swallow-debug-2025-09-22-10-01-01-uzray6",
|
|
50
|
+
"swallow-debug-2025-09-22-10-06-19-hcyl1v",
|
|
51
|
+
"swallow-debug-2025-09-22-10-09-44-z6q9kn",
|
|
52
|
+
"swallow-debug-2025-09-22-10-19-35-mobajm",
|
|
53
|
+
]
|
|
54
|
+
]
|
|
55
|
+
),
|
|
56
|
+
cols=3,
|
|
57
|
+
log=False,
|
|
58
|
+
),
|
|
59
|
+
},
|
|
60
|
+
"marquee": f"{assets}/arzhang/20250922_101202_1.gif",
|
|
61
|
+
},
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_ImageItems():
|
|
66
|
+
items = ImageItems(
|
|
67
|
+
{
|
|
68
|
+
f"{assets2}/swallow/20250701_2206342_1.gif": "",
|
|
69
|
+
f"{assets2}/swallow/20250913_203635~2_1.gif": "",
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
assert isinstance(items, list)
|
|
74
|
+
for item in items:
|
|
75
|
+
assert isinstance(item, str)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_Items():
|
|
79
|
+
items = Items(
|
|
80
|
+
[
|
|
81
|
+
{
|
|
82
|
+
"name": "yolo",
|
|
83
|
+
"description": "a yolo interface.",
|
|
84
|
+
"marquee": "https://github.com/kamangir/assets/raw/main/swallow-debug-2025-09-16-19-53-19-4yzsp8/swallow-debug-2025-09-16-19-53-19-4yzsp8-2.gif?raw=true",
|
|
85
|
+
"url": "./bluer_algo/docs/yolo",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "tracker",
|
|
89
|
+
"marquee": "https://github.com/kamangir/assets/raw/main/tracker-camshift-2025-07-16-11-07-52-4u3nu4/tracker.gif?raw=true",
|
|
90
|
+
"description": "a visual tracker.",
|
|
91
|
+
"url": "./bluer_algo/docs/tracker",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "image classifier",
|
|
95
|
+
"marquee": "https://github.com/kamangir/assets/raw/main/swallow-model-2025-07-11-15-04-03-2glcch/evaluation.png?raw=true",
|
|
96
|
+
"description": "an image classifier.",
|
|
97
|
+
"url": "./bluer_algo/docs/image_classifier",
|
|
98
|
+
},
|
|
99
|
+
]
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
assert isinstance(items, list)
|
|
103
|
+
for item in items:
|
|
104
|
+
assert isinstance(item, str)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def test_Items_of_dict():
|
|
108
|
+
items = Items_of_dict(dict_of_validations)
|
|
109
|
+
|
|
110
|
+
assert isinstance(items, list)
|
|
111
|
+
for item in items:
|
|
112
|
+
assert isinstance(item, str)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def test_list_of_dict():
|
|
116
|
+
items = list_of_dict(dict_of_validations)
|
|
117
|
+
|
|
118
|
+
assert isinstance(items, list)
|
|
119
|
+
for item in items:
|
|
120
|
+
assert isinstance(item, str)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_objects
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.299.1
|
|
4
4
|
Summary: 🌀 Object management in Bash.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-objects
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -65,6 +65,6 @@ pip install bluer-objects
|
|
|
65
65
|
|
|
66
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)
|
|
67
67
|
|
|
68
|
-
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.299.1`](https://github.com/kamangir/bluer-objects).
|
|
69
69
|
|
|
70
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=sqJ1EoYw9xYt3IVvH_jIOJzCZ4UOdyXpiyZL7AVSWS8,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
|
|
@@ -74,9 +74,9 @@ bluer_objects/.abcli/tests/web_where_am_ai.sh,sha256=BJ9G_m4id8cx_UB_l_jV2xY6AfQ
|
|
|
74
74
|
bluer_objects/.abcli/web/is_accessible.sh,sha256=Luv_6IvpscRYx7f39V0RnkkNEWTRfVGyQVUeij3iqa0,262
|
|
75
75
|
bluer_objects/.abcli/web/where_am_i.sh,sha256=QPBXFo6Ni4pZEoOx0rtuJUxk6tOlp0ESMyAc9YPy9zg,92
|
|
76
76
|
bluer_objects/README/__init__.py,sha256=AG9_REFcYVrfMbzK4y02Omie-fCjf6UBP4OnJyNSZ6w,1434
|
|
77
|
-
bluer_objects/README/consts.py,sha256=
|
|
77
|
+
bluer_objects/README/consts.py,sha256=GYQ8EikslsUfr8JcrXoU0w4eMIGWpIiNmlchTQbSYV0,803
|
|
78
78
|
bluer_objects/README/functions.py,sha256=PvFawBlJ8IginQn8Kk1QewAyOYRQ4wCuRKpJwr5mUJ8,5844
|
|
79
|
-
bluer_objects/README/items.py,sha256=
|
|
79
|
+
bluer_objects/README/items.py,sha256=yWMGI_znoYaF2wQRC9Qn96ybtn-OzN5yOzxKoVL73Xc,2328
|
|
80
80
|
bluer_objects/README/utils.py,sha256=WsEm0ad-gpMGMJ6X11W2nXYY5fBokOGPGNFvzjYZc5o,8241
|
|
81
81
|
bluer_objects/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
82
|
bluer_objects/assets/__main__.py,sha256=X1s4ABevs8y5pafPIhZBj5oFX_kMOLWLTMaCFF6_Rio,1064
|
|
@@ -148,7 +148,8 @@ bluer_objects/testing/__main__.py,sha256=hhJV9qn0V_8FxzNDcoHCHr4A7zf9UudnNGJCAPk
|
|
|
148
148
|
bluer_objects/testing/functions.py,sha256=AXAfzWLcEPkbSYTehdahshjKJ45C4IJkRs_TgrHOntc,1355
|
|
149
149
|
bluer_objects/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
150
|
bluer_objects/tests/test_README.py,sha256=5D4UV8VcjbeAPThsYVynYtVFuP8gwMAhIjEWuOQZsWs,89
|
|
151
|
-
bluer_objects/tests/test_README_consts.py,sha256=
|
|
151
|
+
bluer_objects/tests/test_README_consts.py,sha256=fBDNjmPrQN0WhF0AtrTVRcEDQMW02MfLFQPgI3U2PcI,1290
|
|
152
|
+
bluer_objects/tests/test_README_items.py,sha256=K_tRZcifZUpV5WqWaf10mYG2Wi1FouMHQGXtCQxYYkk,4382
|
|
152
153
|
bluer_objects/tests/test_env.py,sha256=HgVCbnHGLIXK8GiaWNWORW9nAHs7fqvIoo6S5Jj29-g,1132
|
|
153
154
|
bluer_objects/tests/test_file_download.py,sha256=1_adHYqgSifkdP-I7TQVW0t8MLCujQ61fvRbcrSkcmg,512
|
|
154
155
|
bluer_objects/tests/test_file_load_save.py,sha256=unqxfiqba6RVhMS95AtHZWsT7Q097jBOKdckAT9PyFU,2390
|
|
@@ -181,8 +182,8 @@ bluer_objects/tests/test_web_is_accessible.py,sha256=2Y20NAEDMblg0MKnhnqcfw3XVKE
|
|
|
181
182
|
bluer_objects/web/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
182
183
|
bluer_objects/web/__main__.py,sha256=xf2Ob54FI8JEokfGhFmiyOBdD9nBactwqmZvsKsdioU,624
|
|
183
184
|
bluer_objects/web/functions.py,sha256=KNufAFOc6N3BYf83lN2rUpKUdsnzb2anWyp9koFRVUo,172
|
|
184
|
-
bluer_objects-6.
|
|
185
|
-
bluer_objects-6.
|
|
186
|
-
bluer_objects-6.
|
|
187
|
-
bluer_objects-6.
|
|
188
|
-
bluer_objects-6.
|
|
185
|
+
bluer_objects-6.299.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
|
|
186
|
+
bluer_objects-6.299.1.dist-info/METADATA,sha256=TDGDtXKcNnE_7CgTtPdYTSM5FYJDLOcX_ieOs6m7XKY,3780
|
|
187
|
+
bluer_objects-6.299.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
188
|
+
bluer_objects-6.299.1.dist-info/top_level.txt,sha256=RX2TpddbnRkurda3G_pAdyeTztP2IhhRPx949GlEvQo,14
|
|
189
|
+
bluer_objects-6.299.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|