bluer-ugv 7.628.1__tar.gz → 7.645.1__tar.gz

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.
Files changed (228) hide show
  1. {bluer_ugv-7.628.1/bluer_ugv.egg-info → bluer_ugv-7.645.1}/PKG-INFO +2 -2
  2. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/README.md +1 -1
  3. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/build.py +8 -2
  4. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/range.py +1 -3
  5. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +18 -4
  6. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +16 -3
  7. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/__init__.py +1 -1
  8. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1/bluer_ugv.egg-info}/PKG-INFO +2 -2
  9. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/LICENSE +0 -0
  10. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/MANIFEST.in +0 -0
  11. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/abcli.sh +0 -0
  12. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/actions.sh +0 -0
  13. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/aka.sh +0 -0
  14. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/alias.sh +0 -0
  15. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
  16. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
  17. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
  18. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
  19. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
  20. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
  21. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
  22. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
  23. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
  24. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
  25. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
  26. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
  27. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/git/rm_keys.sh +0 -0
  28. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/git.sh +0 -0
  29. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
  30. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
  31. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
  32. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
  33. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
  34. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
  35. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
  36. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/play.sh +0 -0
  37. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/cat.sh +0 -0
  38. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/download.sh +0 -0
  39. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/edit.sh +0 -0
  40. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/upload.sh +0 -0
  41. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist.sh +0 -0
  42. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video.sh +0 -0
  43. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow.sh +0 -0
  44. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
  45. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
  46. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
  47. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
  48. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
  49. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
  50. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
  51. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
  52. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_video_play.sh +0 -0
  53. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_video_playlist.sh +0 -0
  54. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
  55. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
  56. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
  57. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/__init__.py +0 -0
  58. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/alias.py +0 -0
  59. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
  60. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/algo.py +0 -0
  61. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/consts.py +0 -0
  62. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/design.py +0 -0
  63. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/flag.py +0 -0
  64. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/items.py +0 -0
  65. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/beast.py +0 -0
  66. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/build.py +0 -0
  67. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/__init__.py +0 -0
  68. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/box.py +0 -0
  69. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/docs.py +0 -0
  70. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/power.py +0 -0
  71. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/schematics.py +0 -0
  72. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/__init__.py +0 -0
  73. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/docs.py +0 -0
  74. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/testing.py +0 -0
  75. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/v1.py +0 -0
  76. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/v2.py +0 -0
  77. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/testing.py +0 -0
  78. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/consts.py +0 -0
  79. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/eagle/__init__.py +0 -0
  80. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/eagle/consts.py +0 -0
  81. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/eagle/items.py +0 -0
  82. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/fire/__init__.py +0 -0
  83. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/fire/consts.py +0 -0
  84. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/fire/items.py +0 -0
  85. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/items.py +0 -0
  86. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/rangin/__init__.py +0 -0
  87. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/rangin/consts.py +0 -0
  88. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/rangin/items.py +0 -0
  89. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ravin/__init__.py +0 -0
  90. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ravin/consts.py +0 -0
  91. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ravin/items.py +0 -0
  92. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/releases.py +0 -0
  93. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/root.py +0 -0
  94. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/shortcuts.py +0 -0
  95. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/__init__.py +0 -0
  96. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/analog.py +0 -0
  97. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/consts.py +0 -0
  98. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
  99. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
  100. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/driving.py +0 -0
  101. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
  102. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/tracking.py +0 -0
  103. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
  104. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
  105. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
  106. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/parts.py +0 -0
  107. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
  108. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/items.py +0 -0
  109. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/__init__.py +0 -0
  110. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/__init__.py +0 -0
  111. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
  112. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/__init__.py +0 -0
  113. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
  114. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
  115. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
  116. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
  117. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/db.py +8 -8
  118. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
  119. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +0 -0
  120. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
  121. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/size.py +0 -0
  122. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
  123. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
  124. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
  125. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
  126. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
  127. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
  128. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/ugvs/__init__.py +0 -0
  129. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/db.py +0 -0
  130. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/docs.py +0 -0
  131. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/__main__.py +0 -0
  132. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/assets/comparison.html +0 -0
  133. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/config.env +0 -0
  134. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/__init__.py +0 -0
  135. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
  136. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/eagle/parts.py +0 -0
  137. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/fire/__init__.py +0 -0
  138. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/fire/parts.py +0 -0
  139. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
  140. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/rangin/parts.py +0 -0
  141. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
  142. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
  143. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
  144. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
  145. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
  146. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/env.py +0 -0
  147. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/__init__.py +0 -0
  148. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/__main__.py +0 -0
  149. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/functions.py +0 -0
  150. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/git.py +0 -0
  151. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/__init__.py +0 -0
  152. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/dataset.py +0 -0
  153. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/debug.py +0 -0
  154. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/env.py +0 -0
  155. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/git.py +0 -0
  156. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
  157. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/select_target.py +0 -0
  158. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
  159. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/video/__init__.py +0 -0
  160. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/video/functions.py +0 -0
  161. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/video/playlist.py +0 -0
  162. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/host.py +0 -0
  163. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/logger.py +0 -0
  164. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/sample.env +0 -0
  165. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/__init__.py +0 -0
  166. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/__main__.py +0 -0
  167. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
  168. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
  169. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
  170. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/debug.py +0 -0
  171. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/__init__.py +0 -0
  172. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/__main__.py +0 -0
  173. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
  174. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
  175. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/generic.py +0 -0
  176. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
  177. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
  178. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/void.py +0 -0
  179. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +0 -0
  180. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/__init__.py +0 -0
  181. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
  182. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +0 -0
  183. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
  184. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
  185. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
  186. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
  187. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
  188. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
  189. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
  190. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
  191. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
  192. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
  193. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
  194. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
  195. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
  196. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/__init__.py +0 -0
  197. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/classes.py +0 -0
  198. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/__init__.py +0 -0
  199. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/__main__.py +0 -0
  200. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/engine.py +0 -0
  201. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/player.py +0 -0
  202. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/playlist.py +0 -0
  203. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
  204. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
  205. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
  206. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
  207. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
  208. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
  209. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
  210. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
  211. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
  212. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +0 -0
  213. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
  214. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
  215. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
  216. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
  217. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
  218. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/functions.py +0 -0
  219. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/targeting.py +0 -0
  220. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv/urls.py +0 -0
  221. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/SOURCES.txt +0 -0
  222. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
  223. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/requires.txt +0 -0
  224. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/top_level.txt +0 -0
  225. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/pyproject.toml +0 -0
  226. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/requirements.txt +0 -0
  227. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/setup.cfg +0 -0
  228. {bluer_ugv-7.628.1 → bluer_ugv-7.645.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.628.1
3
+ Version: 7.645.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.645.1`](https://github.com/kamangir/bluer-ugv).
68
68
 
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -35,5 +35,5 @@ pip install bluer_ugv
35
35
 
36
36
  [![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)
37
37
 
38
- 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).
38
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.645.1`](https://github.com/kamangir/bluer-ugv).
39
39
 
@@ -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
  ]
@@ -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": 100,
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
  )
@@ -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.645.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.645.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.645.1`](https://github.com/kamangir/bluer-ugv).
68
68
 
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
File without changes
File without changes
@@ -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]] = {