bluer-ugv 7.628.1__py3-none-any.whl → 7.648.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.
@@ -48,8 +48,8 @@ def build(
48
48
  contents[:content_index]
49
49
  + row_of(
50
50
  [
51
- "تصویر",
52
51
  "رديف",
52
+ "تصویر",
53
53
  "نام محصول مشابه",
54
54
  "مشابهت و تفاوت های محصول ما با آنها ",
55
55
  ],
@@ -60,6 +60,7 @@ def build(
60
60
  [
61
61
  row_of(
62
62
  [
63
+ str(index + 1),
63
64
  (
64
65
  '<img src="{}" alt="{}" style="width: 200pt;"/>'.format(
65
66
  assets_url(
@@ -70,8 +71,13 @@ def build(
70
71
  )
71
72
  if ugv.image
72
73
  else ""
74
+ )
75
+ + " ".join(
76
+ [
77
+ f'<p style="color:blue;">🔹 {line}</p>'
78
+ for line in ugv.comments
79
+ ]
73
80
  ),
74
- str(index + 1),
75
81
  ugv.description,
76
82
  reference_ugv.compare(ugv),
77
83
  ]
@@ -17,18 +17,18 @@ from bluer_ugv.README.ugvs.comparison.features.swarm import SwarmFeature
17
17
  from bluer_ugv.README.ugvs.comparison.features.uv_delivery import UVDeliveryFeature
18
18
 
19
19
  list_of_feature_classes: List[Type[Feature]] = [
20
- ConcealmentFeature,
21
- ControlFeature,
22
- CostFeature,
23
- DYIFeature,
24
20
  PayloadFeature,
25
- PSFeature,
21
+ SpeedFeature,
22
+ SizeFeature,
23
+ CostFeature,
24
+ ControlFeature,
26
25
  RangeFeature,
26
+ DYIFeature,
27
27
  SanctionProofFeature,
28
- SizeFeature,
29
- SpeedFeature,
30
- SwarmFeature,
31
28
  UVDeliveryFeature,
29
+ ConcealmentFeature,
30
+ PSFeature,
31
+ SwarmFeature,
32
32
  ]
33
33
 
34
34
  dict_of_feature_classes: Dict[str, Type[Feature]] = {
@@ -2,8 +2,6 @@ from typing import Any
2
2
 
3
3
  from bluer_ugv.README.ugvs.comparison.features.classes import Feature
4
4
 
5
- unlimited_range: int = 999
6
-
7
5
 
8
6
  class RangeFeature(Feature):
9
7
  nickname = "range"
@@ -11,4 +9,4 @@ class RangeFeature(Feature):
11
9
 
12
10
  @property
13
11
  def score_as_str_(self) -> str:
14
- return f"{self.score} کیلومتر" if self.score != unlimited_range else "نامحدود"
12
+ return f"{self.score} کیلومتر"
@@ -16,20 +16,25 @@ class UGV:
16
16
  features: Dict[str, Any],
17
17
  deficiencies: List[str] = [],
18
18
  image: str = "",
19
+ comments: List[str] = [],
19
20
  ):
20
21
  self.nickname = nickname
21
22
  self.name = name
22
23
 
23
24
  self.feature_list: FeatureList = FeatureList()
24
25
 
25
- for feature_name, feature_score in features.items():
26
+ for feature_name in features:
26
27
  if feature_name not in dict_of_feature_classes:
27
28
  logger.error(f"{feature_name}: feature not found.")
28
29
  assert False
29
30
 
31
+ for feature_name in dict_of_feature_classes:
32
+ if feature_name not in features:
33
+ continue
34
+
30
35
  self.feature_list.add(
31
36
  dict_of_feature_classes[feature_name](
32
- score=feature_score,
37
+ score=features[feature_name],
33
38
  )
34
39
  )
35
40
 
@@ -37,6 +42,8 @@ class UGV:
37
42
 
38
43
  self.image = image
39
44
 
45
+ self.comments = comments
46
+
40
47
  def compare(
41
48
  self,
42
49
  ugv: "UGV",
@@ -57,7 +64,12 @@ class UGV:
57
64
  elif comparison == Feature_Comparison.UNKNOWN:
58
65
  pass
59
66
  else:
60
- differences.append(message)
67
+ differences.append(
68
+ '<p style="color:{};">{}</p>'.format(
69
+ "green" if comparison == Feature_Comparison.HIGHER else "red",
70
+ message,
71
+ )
72
+ )
61
73
 
62
74
  return (
63
75
  [
@@ -86,7 +98,9 @@ class UGV:
86
98
  def description(self) -> List[str]:
87
99
  return (
88
100
  [
89
- '<p dir="rtl" style="text-align:right;">{}</p>'.format(self.name),
101
+ '<b><p dir="rtl" style="text-align:right;">{}</p></b>'.format(
102
+ self.name
103
+ ),
90
104
  "<ol>",
91
105
  ]
92
106
  + [
@@ -2,7 +2,6 @@ from bluer_ugv.README.ugvs.comparison.features.control import UGV_Control
2
2
  from bluer_ugv.README.ugvs.comparison.features.cost import UGV_Cost
3
3
  from bluer_ugv.README.ugvs.comparison.features.size import UGV_Size
4
4
  from bluer_ugv.README.ugvs.comparison.ugvs.classes import List_of_UGVs
5
- from bluer_ugv.README.ugvs.comparison.features.range import unlimited_range
6
5
 
7
6
  list_of_ugvs = List_of_UGVs()
8
7
 
@@ -14,7 +13,7 @@ list_of_ugvs.add(
14
13
  "control": UGV_Control.AI,
15
14
  "cost": UGV_Cost.LOW,
16
15
  "payload": 40,
17
- "range": unlimited_range,
16
+ "range": 10,
18
17
  "ps": True,
19
18
  "sanction_proof": True,
20
19
  "size": UGV_Size.SMALL,
@@ -33,6 +32,7 @@ list_of_ugvs.add(
33
32
  "cost": UGV_Cost.MEDIUM,
34
33
  "payload": 700,
35
34
  "range": 4,
35
+ "sanction_proof": True,
36
36
  "size": UGV_Size.MEDIUM,
37
37
  },
38
38
  )
@@ -47,6 +47,7 @@ list_of_ugvs.add(
47
47
  "cost": UGV_Cost.LOW,
48
48
  "payload": 40,
49
49
  "range": 10,
50
+ "sanction_proof": True,
50
51
  "size": UGV_Size.SMALL,
51
52
  "speed": 60,
52
53
  "swarm": True,
@@ -54,6 +55,9 @@ list_of_ugvs.add(
54
55
  deficiencies=[
55
56
  "انتقال قدرت: زنجیر",
56
57
  ],
58
+ comments=[
59
+ "بیشترین تشابه",
60
+ ],
57
61
  )
58
62
 
59
63
 
@@ -64,6 +68,7 @@ list_of_ugvs.add(
64
68
  features={
65
69
  "control": UGV_Control.AI,
66
70
  "cost": UGV_Cost.MEDIUM,
71
+ "sanction_proof": True,
67
72
  "size": UGV_Size.MEDIUM,
68
73
  "speed": 30,
69
74
  "range": 0.5,
@@ -75,7 +80,9 @@ list_of_ugvs.add(
75
80
  name="ربات قاسم",
76
81
  image="qasem.jpg",
77
82
  features={
83
+ "concealment": True,
78
84
  "cost": UGV_Cost.MEDIUM,
85
+ "sanction_proof": True,
79
86
  "size": UGV_Size.MEDIUM,
80
87
  "uv_delivery": True,
81
88
  },
@@ -89,6 +96,7 @@ list_of_ugvs.add(
89
96
  features={
90
97
  "control": UGV_Control.AI,
91
98
  "cost": UGV_Cost.MEDIUM,
99
+ "sanction_proof": True,
92
100
  "size": UGV_Size.MEDIUM,
93
101
  "speed": 50,
94
102
  "uv_delivery": True,
@@ -99,7 +107,9 @@ list_of_ugvs.add(
99
107
  list_of_ugvs.add(
100
108
  nickname="sepah",
101
109
  name="ربات جنگ میدانی سپاه",
102
- features={},
110
+ features={
111
+ "sanction_proof": True,
112
+ },
103
113
  deficiencies=[],
104
114
  )
105
115
 
@@ -111,6 +121,7 @@ list_of_ugvs.add(
111
121
  features={
112
122
  "control": UGV_Control.RC,
113
123
  "cost": UGV_Cost.MEDIUM,
124
+ "sanction_proof": True,
114
125
  "size": UGV_Size.SMALL,
115
126
  },
116
127
  deficiencies=[],
@@ -273,10 +284,12 @@ list_of_ugvs.add(
273
284
  name="tEODor",
274
285
  image="tEODor.png",
275
286
  features={
287
+ "concealment": True,
276
288
  "control": UGV_Control.RC,
277
289
  "cost": UGV_Cost.HIGH,
278
290
  "payload": 100,
279
291
  "size": UGV_Size.MEDIUM,
292
+ "uv_delivery": True,
280
293
  },
281
294
  deficiencies=[],
282
295
  )
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.628.1"
7
+ VERSION = "7.648.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.628.1
3
+ Version: 7.648.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.628.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.648.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=t0vCjpqkj4-a_DfhDPSENWyrCQ56zunYnBc2QihG2as,288
1
+ bluer_ugv/__init__.py,sha256=7h5uF4UN9iOVlN2Q7EKVdCbNUghSJ61W23JwSaD8dvY,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
@@ -108,17 +108,17 @@ bluer_ugv/README/ugvs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
108
108
  bluer_ugv/README/ugvs/db.py,sha256=EzRonSj4Zsk-Nscg1-udVVJZBEAEvo4PaIVCpClj06U,1484
109
109
  bluer_ugv/README/ugvs/docs.py,sha256=Yef40N1hVZP3fEZBQyekFDRfcXJLA_adlMak0jSios8,1920
110
110
  bluer_ugv/README/ugvs/comparison/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- bluer_ugv/README/ugvs/comparison/build.py,sha256=G-XxYptugqZA80HhO9wZ861w9af3iO5xU9jFVjS4HWI,4381
111
+ bluer_ugv/README/ugvs/comparison/build.py,sha256=Dj86jYV0gGHZQrTRH0wZ_Q8eh3yREBx5bgQ1Sw2bahA,4634
112
112
  bluer_ugv/README/ugvs/comparison/features/DYI.py,sha256=ED5Tlc4KcEFpLPHjwfSNGE47guKCeBG7Q84TS0BPJgE,187
113
113
  bluer_ugv/README/ugvs/comparison/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
114
  bluer_ugv/README/ugvs/comparison/features/classes.py,sha256=xAxvmL1ol1pXQ1RHWYePFzIVKD3Guq_tZudjPTz6po8,3603
115
115
  bluer_ugv/README/ugvs/comparison/features/concealment.py,sha256=9o_-eYFaqKR4KcjDmOkE9SVxtdsB4NLnJ_ytWuQLzOY,235
116
116
  bluer_ugv/README/ugvs/comparison/features/control.py,sha256=bDLB0W4ESht-3v0gkQoIgfWDgbkyG7dWtyjdk-lt_yg,668
117
117
  bluer_ugv/README/ugvs/comparison/features/cost.py,sha256=Q7PQ5iXKQcjXf_-w_mcuw1fM3oUzXzvuHu8P1kIcIq4,693
118
- bluer_ugv/README/ugvs/comparison/features/db.py,sha256=BRAvPJhcKrh-5Q70u4jIl7oovYt1M_MfOCqKIaJWKmM,1454
118
+ bluer_ugv/README/ugvs/comparison/features/db.py,sha256=dPCgE2pOJGlhfwvDvGS7tSlWJjp8MYHZ58BONvmbg30,1454
119
119
  bluer_ugv/README/ugvs/comparison/features/payload.py,sha256=tJJ7_tLO0jcJREad5FxaJ7vTEvD4HbCa6TsBI5Q1ljg,501
120
120
  bluer_ugv/README/ugvs/comparison/features/ps.py,sha256=EkWMs7GBPpQhalMlU_OZnm2JuKa8hTcmRRYRXvsxATY,229
121
- bluer_ugv/README/ugvs/comparison/features/range.py,sha256=pfwtOLlFekIERheHll0Lws7LHyIaMWJyAIrGHAu-74Q,383
121
+ bluer_ugv/README/ugvs/comparison/features/range.py,sha256=XbyWRRYzTyA7bxGQj2UcuCugR-unYwF_Xy7idFDrdXw,300
122
122
  bluer_ugv/README/ugvs/comparison/features/sanction_proof.py,sha256=FRCSFmDsM5zuhI7kiwjETez9-ngLZI2rTLsVgv-ibIM,209
123
123
  bluer_ugv/README/ugvs/comparison/features/size.py,sha256=7lkx-6CKpgjKyP2-ABXbrqvl3GvEqc8ORLSZHgwEsa8,704
124
124
  bluer_ugv/README/ugvs/comparison/features/speed.py,sha256=VovKLYNIeLFviJlLlgk93kbmMExwDQ_r03r4FBSuQi8,262
@@ -128,8 +128,8 @@ bluer_ugv/README/ugvs/comparison/references/__init__.py,sha256=AbpHGcgLb-kRsJGnw
128
128
  bluer_ugv/README/ugvs/comparison/references/classes.py,sha256=Ti91K7NqTTAK1nTCpE16kzmB8yxw-Q7Ff1c6l8v-ZpU,530
129
129
  bluer_ugv/README/ugvs/comparison/references/db.py,sha256=_vlhmqdU0O0MHRlSeXH68lso-BDXB5UiUIO_ZvqRZ4Q,10237
130
130
  bluer_ugv/README/ugvs/comparison/ugvs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
- bluer_ugv/README/ugvs/comparison/ugvs/classes.py,sha256=T6Cs2pQqsDLnlDuwXUY3OxuwTzJiLjF0h2xIa26TDlA,3163
132
- bluer_ugv/README/ugvs/comparison/ugvs/db.py,sha256=YkAEq4NuupxpRpxPO3j9ucTnQCyIVoj7vqLO72YAoT4,9039
131
+ bluer_ugv/README/ugvs/comparison/ugvs/classes.py,sha256=Z5l4rgC_QTKeXhKUvCO47CaxEsbhTANubF_iY0ZnptM,3596
132
+ bluer_ugv/README/ugvs/comparison/ugvs/db.py,sha256=cKgxh1oVVeoSYta75uevWcpfEqACLr3rdS-sfE25s2Q,9325
133
133
  bluer_ugv/assets/comparison.html,sha256=UWKlQYww8bnVPfMXaGvIJoIGwvEOjqDmRK8hbuwD2rY,595
134
134
  bluer_ugv/designs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
135
  bluer_ugv/designs/eagle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -213,8 +213,8 @@ bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py,sha256=bVcG8V0P6Sl
213
213
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py,sha256=_iQmec2VSq-ORkTVpXSNJg08hrSz2M1O8LzNZEtoT9U,959
214
214
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py,sha256=En-J8BRTiR8k9p2CBbW0cOUuw8nctD5DOXDm5uhCNO4,3987
215
215
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py,sha256=yj2MY_Jo1FzeXnR_JoFAXsb9eHEVhicDiHEsUa8z03U,1525
216
- bluer_ugv-7.628.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
217
- bluer_ugv-7.628.1.dist-info/METADATA,sha256=tehiduIyC6weNanzJc1LtXJUYI057g5-b-POhqujEF4,5579
218
- bluer_ugv-7.628.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
219
- bluer_ugv-7.628.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
220
- bluer_ugv-7.628.1.dist-info/RECORD,,
216
+ bluer_ugv-7.648.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
217
+ bluer_ugv-7.648.1.dist-info/METADATA,sha256=UbgqhHI_9ZmamrdZ7OujOZMHrIisnrmKefS60TB6k1Q,5579
218
+ bluer_ugv-7.648.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
219
+ bluer_ugv-7.648.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
220
+ bluer_ugv-7.648.1.dist-info/RECORD,,