bluer-ugv 7.489.1__py3-none-any.whl → 7.506.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.
@@ -4,30 +4,43 @@ from bluer_ugv.README.rangin.consts import rangin_mechanical_design
4
4
 
5
5
  dict_of_ugvs = {
6
6
  "swallow": {
7
+ "order": 1,
7
8
  "items": [
8
9
  f"{swallow_assets2}/20250701_2206342_1.gif",
9
10
  f"{swallow_assets2}/20250913_203635~2_1.gif",
10
- ]
11
+ ],
11
12
  },
12
13
  "arzhang": {
14
+ "order": 2,
13
15
  "items": [
14
16
  f"{arzhang_assets2}/20251106_111750.jpg",
15
17
  ],
16
18
  },
17
19
  "arzhang2": {
20
+ "order": 3,
18
21
  "items": [
19
22
  f"{arzhang_assets2}/20251106_111750.jpg",
20
23
  ],
21
24
  },
22
25
  "arzhang3": {
23
- "items": [
24
- f"{arzhang_assets}/20251107_175506.jpg",
25
- f"{arzhang_assets2}/20251128_175614.jpg",
26
- ],
26
+ "order": 4,
27
+ "items": sorted(
28
+ [
29
+ f"{arzhang_assets}/20251107_175506.jpg",
30
+ f"{arzhang_assets2}/20251128_175614.jpg",
31
+ f"{arzhang_assets2}/20251202_100317.jpg",
32
+ f"{arzhang_assets2}/20251202_101031.jpg",
33
+ f"{arzhang_assets2}/20251128_113314.jpg",
34
+ f"{arzhang_assets2}/20251128_151952.jpg",
35
+ f"{arzhang_assets2}/20251128_155616.jpg",
36
+ f"{arzhang_assets2}/20251130_140103.jpg",
37
+ ]
38
+ ),
27
39
  },
28
40
  "rangin": {
41
+ "order": 5,
29
42
  "items": [
30
43
  f"{rangin_mechanical_design}/robot.png",
31
- ]
44
+ ],
32
45
  },
33
46
  }
@@ -1,4 +1,4 @@
1
- from bluer_objects.README.items import ImageItems
1
+ from bluer_objects.README.items import ImageItems, Items
2
2
 
3
3
  from bluer_ugv.README.ugvs.db import dict_of_ugvs
4
4
  from bluer_ugv.README.validations.db import dict_of_validations
@@ -6,6 +6,7 @@ from bluer_ugv.README.validations.db import dict_of_validations
6
6
  docs = [
7
7
  {
8
8
  "path": f"../docs/UGVs/{ugv_name}.md",
9
+ "cols": info.get("cols", 3),
9
10
  "items": ImageItems({item: "" for item in info.get("items", [])}),
10
11
  "macros": {
11
12
  "validations:::": [
@@ -27,4 +28,31 @@ docs = [
27
28
  },
28
29
  }
29
30
  for ugv_name, info in dict_of_ugvs.items()
31
+ ] + [
32
+ {
33
+ "path": "../docs/UGVs",
34
+ "items": Items(
35
+ [
36
+ {
37
+ "name": ugv_name,
38
+ "marquee": (
39
+ lambda url: (
40
+ url if url.endswith("?raw=true") else f"{url}/?raw=true"
41
+ )
42
+ )(info["items"][-1]),
43
+ "url": f"./{ugv_name}.md",
44
+ }
45
+ for ugv_name, info in dict_of_ugvs.items()
46
+ ]
47
+ ),
48
+ "macros": {
49
+ "list": [
50
+ f"- [{ugv_name}](./{ugv_name}.md)"
51
+ for ugv_name in sorted(
52
+ dict_of_ugvs.keys(),
53
+ key=lambda ugv_name: dict_of_ugvs[ugv_name]["order"],
54
+ )
55
+ ],
56
+ },
57
+ }
30
58
  ]
bluer_ugv/__init__.py CHANGED
@@ -4,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.489.1"
7
+ VERSION = "7.506.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -16,7 +16,8 @@ class ClassicalScreen:
16
16
 
17
17
  def cleanup(self):
18
18
  logger.info(f"{self.__class__.__name__}.cleanup")
19
- self.video_player.stop()
19
+ if self.video_player is not None:
20
+ self.video_player.stop()
20
21
 
21
22
  def initialize(self) -> bool:
22
23
  if self.video_player is None:
@@ -138,7 +138,7 @@ class ClassicalSession:
138
138
 
139
139
  self.timing.calculate()
140
140
  loop_frequency = round(
141
- 1 / self.timing.stats["session.update"]["average"],
141
+ 1 / self.timing.stats["session.update"].get("average", -1),
142
142
  2,
143
143
  )
144
144
  self.timing.log()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.489.1
3
+ Version: 7.506.1
4
4
  Summary: 🐬 AI x UGV.
5
5
  Home-page: https://github.com/kamangir/bluer-ugv
6
6
  Author: Arash Abadpour (Kamangir)
@@ -64,7 +64,7 @@ pip install bluer_ugv
64
64
 
65
65
  [![pylint](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-ugv.svg)](https://pypi.org/project/bluer-ugv/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-ugv)](https://pypistats.org/packages/bluer-ugv)
66
66
 
67
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.489.1`](https://github.com/kamangir/bluer-ugv).
67
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.506.1`](https://github.com/kamangir/bluer-ugv).
68
68
 
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -1,4 +1,4 @@
1
- bluer_ugv/__init__.py,sha256=_SLq9C8pMwxS-oEUjZ1FRYxDg2cio1fA8nBvnjfIQhE,288
1
+ bluer_ugv/__init__.py,sha256=ZoFQOyjZByDR7ed6a3wIWJkszKUSK2guMXFwwVYyIHM,288
2
2
  bluer_ugv/__main__.py,sha256=77TquqyMca7qHk0XtCixGVyzfW3_9ywnl5oXEPERlls,374
3
3
  bluer_ugv/config.env,sha256=I718Cfy1GaGqVI80vb7iYsoJ0P7SKLW8USaBYb2sub4,1055
4
4
  bluer_ugv/env.py,sha256=oEJiyKf1cCJ9kgZqgwnWemT0U_cO2RmCN3MRSS2vitY,1875
@@ -96,8 +96,8 @@ bluer_ugv/README/swallow/digital/design/__init__.py,sha256=9ScXJn0UdHYVYiWyTV0Uz
96
96
  bluer_ugv/README/swallow/digital/design/mechanical.py,sha256=OwgMrFIpRA-RR9CwurXaif09GCd6_i3zGuAfkH0jtsM,983
97
97
  bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py,sha256=VefIdTUXnsxVj3rmjsguV7N2BD9tPRiiaHjjRl84QUM,1517
98
98
  bluer_ugv/README/ugvs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- bluer_ugv/README/ugvs/db.py,sha256=FpQeoTe7K3jPNvHDSHWD3BSSaGiJkJFQVBY53dHjZ14,876
100
- bluer_ugv/README/ugvs/docs.py,sha256=WDdt404j-ZIlwfgHRd34nIN2DaQXO6Uw7EaV3S87zSA,1067
99
+ bluer_ugv/README/ugvs/db.py,sha256=Y1SG-VpV1K92u6XxkyMutyu7Ahh3BOmSgjqOrP1ohrM,1368
100
+ bluer_ugv/README/ugvs/docs.py,sha256=Yef40N1hVZP3fEZBQyekFDRfcXJLA_adlMak0jSios8,1920
101
101
  bluer_ugv/README/ugvs/comparison/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
102
  bluer_ugv/README/ugvs/comparison/build.py,sha256=xN1u7LyB92VYZgctAdWVjVWimpkDZFBhfG44fO7EKMg,3784
103
103
  bluer_ugv/README/ugvs/comparison/features/DYI.py,sha256=ED5Tlc4KcEFpLPHjwfSNGE47guKCeBG7Q84TS0BPJgE,187
@@ -164,7 +164,7 @@ bluer_ugv/swallow/session/classical/mode.py,sha256=6rFe1IIpfijuI7Xd-wcGKhYQ7EdQx
164
164
  bluer_ugv/swallow/session/classical/mousepad.py,sha256=LI7yvmtrZZaGUgPGpxNU7zcPkW8D5ykHlY_O-4H2STs,1871
165
165
  bluer_ugv/swallow/session/classical/position.py,sha256=gNeNzNpUG8zkDrcwibxaYStPNKUN1_DV5RjHu_pHMIg,913
166
166
  bluer_ugv/swallow/session/classical/push_button.py,sha256=s8sPart_dECjLK-gfsJi0UorRYcFYf3ofLqjmG8PoA8,2397
167
- bluer_ugv/swallow/session/classical/session.py,sha256=n3Q9G3Qdbw8Cb12yaEj5HLfuyJm70kZi_DVJqxItD8E,5532
167
+ bluer_ugv/swallow/session/classical/session.py,sha256=qtVnnXT7mpO7y0uXssL3ZHuP9xfXJyBtD1e7ZcwFEiI,5540
168
168
  bluer_ugv/swallow/session/classical/camera/__init__.py,sha256=KOehn6qHKj3EMbV5uGXKIfN_v4D5-E2xH9aCWqbNlAI,375
169
169
  bluer_ugv/swallow/session/classical/camera/generic.py,sha256=xmztClNYkosYo2TcIS2Ax4Bessc8lx4hlt9LnMcobfU,1216
170
170
  bluer_ugv/swallow/session/classical/camera/navigation.py,sha256=HoeTlifGEfnedb6o8P-O0TcP1bNDRJ0M7vWupQh1pL4,6790
@@ -182,7 +182,7 @@ bluer_ugv/swallow/session/classical/motor/rear.py,sha256=mIBpUxBeiw1me5WY3jbtMya
182
182
  bluer_ugv/swallow/session/classical/motor/right.py,sha256=3BwCXA6VxxyRBG3rsnRXGviS5gIda14UCqaELGMOJNk,539
183
183
  bluer_ugv/swallow/session/classical/motor/steering.py,sha256=-_-6C9cGYFgt_WH3hwTSV8jL5I_qkxc2O45Ck8SlFCo,545
184
184
  bluer_ugv/swallow/session/classical/screen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
- bluer_ugv/swallow/session/classical/screen/classes.py,sha256=5lS7vtDk2YeEPEd6ywowgiPgE2iYz9WIWoyBsCcUbGM,1156
185
+ bluer_ugv/swallow/session/classical/screen/classes.py,sha256=LeQOY_UeNfy5JJSMmlLvAdN-Ob0pChrdQRzm8Z0XexU,1202
186
186
  bluer_ugv/swallow/session/classical/screen/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
187
  bluer_ugv/swallow/session/classical/screen/video/__main__.py,sha256=2uyKoxnZ9LwYWlEP_KDEyvIrwRL31SjK7I-xvM-eZpI,2190
188
188
  bluer_ugv/swallow/session/classical/screen/video/engine.py,sha256=-P_VSdqBjP2KBooMzcc-izWP-GMfl4q07t4Fyc6CQH4,3752
@@ -202,8 +202,8 @@ bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py,sha256=bVcG8V0P6Sl
202
202
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py,sha256=_iQmec2VSq-ORkTVpXSNJg08hrSz2M1O8LzNZEtoT9U,959
203
203
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py,sha256=En-J8BRTiR8k9p2CBbW0cOUuw8nctD5DOXDm5uhCNO4,3987
204
204
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py,sha256=yj2MY_Jo1FzeXnR_JoFAXsb9eHEVhicDiHEsUa8z03U,1525
205
- bluer_ugv-7.489.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
206
- bluer_ugv-7.489.1.dist-info/METADATA,sha256=iOgn3xfKF-v7A3H_gB3Wc-zo7FZ_CYpL0BXIDekrae0,5579
207
- bluer_ugv-7.489.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
208
- bluer_ugv-7.489.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
209
- bluer_ugv-7.489.1.dist-info/RECORD,,
205
+ bluer_ugv-7.506.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
206
+ bluer_ugv-7.506.1.dist-info/METADATA,sha256=kifmNhTFLdLrJuqi-0bNqbpGOQioAlFHrxdRTbYVNUk,5579
207
+ bluer_ugv-7.506.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
208
+ bluer_ugv-7.506.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
209
+ bluer_ugv-7.506.1.dist-info/RECORD,,