bluer-sbc 8.233.1__tar.gz → 9.31.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.
Potentially problematic release.
This version of bluer-sbc might be problematic. Click here for more details.
- bluer_sbc-9.31.1/PKG-INFO +72 -0
- bluer_sbc-9.31.1/README.md +45 -0
- bluer_sbc-8.233.1/bluer_sbc/.abcli/blue_sbc.sh → bluer_sbc-9.31.1/bluer_sbc/.abcli/bluer_sbc.sh +2 -0
- bluer_sbc-9.31.1/bluer_sbc/.abcli/sbc/parts/adjust.sh +12 -0
- bluer_sbc-9.31.1/bluer_sbc/.abcli/sbc/parts/cd.sh +5 -0
- bluer_sbc-9.31.1/bluer_sbc/.abcli/sbc/parts.sh +15 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/tests/help.sh +4 -0
- bluer_sbc-9.31.1/bluer_sbc/.abcli/tests/parts_adjust.sh +13 -0
- bluer_sbc-9.31.1/bluer_sbc/README/aliases.py +11 -0
- bluer_sbc-9.31.1/bluer_sbc/README/build.py +29 -0
- bluer_sbc-9.31.1/bluer_sbc/README/design.py +32 -0
- bluer_sbc-9.31.1/bluer_sbc/README/designs/__init__.py +54 -0
- bluer_sbc-9.31.1/bluer_sbc/README/designs/battery_bus.py +26 -0
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/bryce.py +1 -1
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/cheshmak.py +1 -1
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/nafha.py +1 -1
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/shelter.py +3 -3
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/swallow.py +1 -1
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/swallow_head.py +2 -2
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/ultrasonic_sensor_tester.py +1 -1
- bluer_sbc-9.31.1/bluer_sbc/README/designs/x.py +26 -0
- bluer_sbc-9.31.1/bluer_sbc/README/parts.py +15 -0
- bluer_sbc-9.31.1/bluer_sbc/README/root.py +30 -0
- bluer_sbc-9.31.1/bluer_sbc/README/shortcuts.py +17 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/__init__.py +2 -2
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/__main__.py +3 -2
- bluer_sbc-9.31.1/bluer_sbc/designs/swallow/parts.py +3 -0
- bluer_sbc-9.31.1/bluer_sbc/designs/swallow_head/parts.py +15 -0
- bluer_sbc-9.31.1/bluer_sbc/hardware/sparkfun_top_phat/__init__.py +0 -0
- bluer_sbc-9.31.1/bluer_sbc/help/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/functions.py +2 -0
- bluer_sbc-9.31.1/bluer_sbc/help/parts.py +49 -0
- bluer_sbc-9.31.1/bluer_sbc/parts/__init__.py +0 -0
- bluer_sbc-9.31.1/bluer_sbc/parts/__main__.py +41 -0
- bluer_sbc-9.31.1/bluer_sbc/parts/classes/db.py +208 -0
- bluer_sbc-9.31.1/bluer_sbc/parts/classes/part.py +96 -0
- bluer_sbc-9.31.1/bluer_sbc/parts/db.py +381 -0
- bluer_sbc-9.31.1/bluer_sbc/session/__init__.py +0 -0
- bluer_sbc-9.31.1/bluer_sbc.egg-info/PKG-INFO +72 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc.egg-info/SOURCES.txt +34 -10
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/setup.py +6 -0
- bluer_sbc-8.233.1/PKG-INFO +0 -64
- bluer_sbc-8.233.1/README.md +0 -37
- bluer_sbc-8.233.1/bluer_sbc.egg-info/PKG-INFO +0 -64
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/LICENSE +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/MANIFEST.in +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/abcli.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/actions.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/adafruit_rgb_matrix.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/alias.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/camera.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/grove.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/hat.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/adafruit_rgb_matrix.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/grove.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/lepton.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/scroll_phat_hd.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/sparkfun_top_phat.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/template.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/install/unicorn_16x16.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/lepton.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/rpi/fake_display.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/rpi.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/scroll_phat_hd.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed/headless_rpi.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed/headless_rpi_64_bit.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed/headless_ubuntu_rpi.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed/jetson.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed/rpi.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed/swallow_raspbian.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/seed.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/session.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/sparkfun_top_phat.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/tests/README.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/tests/camera.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/tests/seed.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/tests/version.sh +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/.abcli/unicorn_16x16.sh +0 -0
- {bluer_sbc-8.233.1/bluer_sbc/algo → bluer_sbc-9.31.1/bluer_sbc/README}/__init__.py +0 -0
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/blue_bracket.py +0 -0
- {bluer_sbc-8.233.1/bluer_sbc → bluer_sbc-9.31.1/bluer_sbc/README}/designs/consts.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/ROS/__init__.py +0 -0
- {bluer_sbc-8.233.1/bluer_sbc/designs → bluer_sbc-9.31.1/bluer_sbc/algo}/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/algo/diff.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/config.env +0 -0
- {bluer_sbc-8.233.1/bluer_sbc/hardware/hat → bluer_sbc-9.31.1/bluer_sbc/designs}/__init__.py +0 -0
- {bluer_sbc-8.233.1/bluer_sbc/hardware/sparkfun_top_phat → bluer_sbc-9.31.1/bluer_sbc/designs/swallow}/__init__.py +0 -0
- {bluer_sbc-8.233.1/bluer_sbc/help → bluer_sbc-9.31.1/bluer_sbc/designs/swallow_head}/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/env.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/adafruit_rgb_matrix.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/display.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/grove.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/hardware.py +0 -0
- {bluer_sbc-8.233.1/bluer_sbc/session → bluer_sbc-9.31.1/bluer_sbc/hardware/hat}/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/hat/__main__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/hat/abstract.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/hat/prototype.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/screen.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/scroll_phat_hd.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/sparkfun_top_phat/__main__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/sparkfun_top_phat/classes.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/hardware/unicorn_16x16.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/__main__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/adafruit_rgb_matrix.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/camera.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/grove.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/hat.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/lepton.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/rpi.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/scroll_phat_hd.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/sparkfun_top_phat.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/help/unicorn_16x16.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/host.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/camera/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/camera/__main__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/camera/constants.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/camera/generic.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/camera/rpi.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/camera/rpi_64_bit.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/classes.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/lepton/__init__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/lepton/__main__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/lepton/classes.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/imager/lepton/python2.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/logger.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/sample.env +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/session/__main__.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/session/classes.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/session/functions.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc/urls.py +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc.egg-info/dependency_links.txt +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc.egg-info/requires.txt +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/bluer_sbc.egg-info/top_level.txt +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/pyproject.toml +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/requirements.txt +0 -0
- {bluer_sbc-8.233.1 → bluer_sbc-9.31.1}/setup.cfg +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bluer_sbc
|
|
3
|
+
Version: 9.31.1
|
|
4
|
+
Summary: 🌀 AI for single board computers and related designs.
|
|
5
|
+
Home-page: https://github.com/kamangir/bluer-sbc
|
|
6
|
+
Author: Arash Abadpour (Kamangir)
|
|
7
|
+
Author-email: arash.abadpour@gmail.com
|
|
8
|
+
License: CC0-1.0
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Unix Shell
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: bluer_ai
|
|
15
|
+
Dynamic: author
|
|
16
|
+
Dynamic: author-email
|
|
17
|
+
Dynamic: classifier
|
|
18
|
+
Dynamic: description
|
|
19
|
+
Dynamic: description-content-type
|
|
20
|
+
Dynamic: home-page
|
|
21
|
+
Dynamic: license
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
Dynamic: requires-dist
|
|
24
|
+
Dynamic: summary
|
|
25
|
+
|
|
26
|
+
# 🌀 bluer-sbc
|
|
27
|
+
|
|
28
|
+
🌀 `bluer-sbc` is a [`bluer-ai`](https://github.com/kamangir/bluer-ai) plugin for edge computing on [single board computers](https://github.com/kamangir/blue-bracket).
|
|
29
|
+
|
|
30
|
+
## installation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install bluer_sbc
|
|
34
|
+
|
|
35
|
+
# @env dot list
|
|
36
|
+
@env dot cp <env-name> local
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## aliases
|
|
40
|
+
|
|
41
|
+
[@camera](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/camera.md),
|
|
42
|
+
[@sbc rpi](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/sbc.md),
|
|
43
|
+
[@sbc <hardware>](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/hardware.md).
|
|
44
|
+
|
|
45
|
+
## designs
|
|
46
|
+
|
|
47
|
+
| | | |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| [`battery bus`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/battery-bus.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/battery-bus.md) | [`swallow`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow.md) | [`swallow head`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow-head.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow-head.md) |
|
|
50
|
+
| [`ultrasonic-sensor-tester`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/ultrasonic-sensor-tester.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/ultrasonic-sensor-tester.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) | [`cheshmak`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) |
|
|
51
|
+
| [`nafha`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/nafha.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/nafha.md) | [`shelter`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/shelter.md) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/shelter.md) | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) |
|
|
52
|
+
| [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) |
|
|
53
|
+
|
|
54
|
+
## shortcuts
|
|
55
|
+
|
|
56
|
+
| |
|
|
57
|
+
| --- |
|
|
58
|
+
| [`parts`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/parts) [](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/parts) |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
> 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
[](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-sbc/) [](https://pypistats.org/packages/bluer-sbc)
|
|
68
|
+
|
|
69
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-9.31.1`](https://github.com/kamangir/bluer-sbc).
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 🌀 bluer-sbc
|
|
2
|
+
|
|
3
|
+
🌀 `bluer-sbc` is a [`bluer-ai`](https://github.com/kamangir/bluer-ai) plugin for edge computing on [single board computers](https://github.com/kamangir/blue-bracket).
|
|
4
|
+
|
|
5
|
+
## installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install bluer_sbc
|
|
9
|
+
|
|
10
|
+
# @env dot list
|
|
11
|
+
@env dot cp <env-name> local
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## aliases
|
|
15
|
+
|
|
16
|
+
[@camera](./bluer_sbc/docs/aliases/camera.md),
|
|
17
|
+
[@sbc rpi](./bluer_sbc/docs/aliases/sbc.md),
|
|
18
|
+
[@sbc <hardware>](./bluer_sbc/docs/aliases/hardware.md).
|
|
19
|
+
|
|
20
|
+
## designs
|
|
21
|
+
|
|
22
|
+
| | | |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| [`battery bus`](./bluer_sbc/docs/battery-bus.md) [](./bluer_sbc/docs/battery-bus.md) | [`swallow`](./bluer_sbc/docs/swallow.md) [](./bluer_sbc/docs/swallow.md) | [`swallow head`](./bluer_sbc/docs/swallow-head.md) [](./bluer_sbc/docs/swallow-head.md) |
|
|
25
|
+
| [`ultrasonic-sensor-tester`](./bluer_sbc/docs/ultrasonic-sensor-tester.md) [](./bluer_sbc/docs/ultrasonic-sensor-tester.md) | [`bryce`](./bluer_sbc/docs/bryce.md) [](./bluer_sbc/docs/bryce.md) | [`cheshmak`](./bluer_sbc/docs/cheshmak.md) [](./bluer_sbc/docs/cheshmak.md) |
|
|
26
|
+
| [`nafha`](./bluer_sbc/docs/nafha.md) [](./bluer_sbc/docs/nafha.md) | [`shelter`](./bluer_sbc/docs/shelter.md) [](./bluer_sbc/docs/shelter.md) | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) |
|
|
27
|
+
| [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) |
|
|
28
|
+
|
|
29
|
+
## shortcuts
|
|
30
|
+
|
|
31
|
+
| |
|
|
32
|
+
| --- |
|
|
33
|
+
| [`parts`](./bluer_sbc/docs/parts) [](./bluer_sbc/docs/parts) |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
> 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
[](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-sbc/) [](https://pypistats.org/packages/bluer-sbc)
|
|
43
|
+
|
|
44
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-9.31.1`](https://github.com/kamangir/bluer-sbc).
|
|
45
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_sbc_parts() {
|
|
4
|
+
local task=$1
|
|
5
|
+
|
|
6
|
+
local function_name=bluer_sbc_parts_$task
|
|
7
|
+
if [[ $(type -t $function_name) == "function" ]]; then
|
|
8
|
+
$function_name "${@:2}"
|
|
9
|
+
return
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
python3 -m bluer_sbc.parts "$@"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
bluer_ai_source_caller_suffix_path /parts
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from bluer_options.help.functions import get_help
|
|
4
|
+
from bluer_objects import file, README
|
|
5
|
+
|
|
6
|
+
from bluer_sbc import NAME, VERSION, ICON, REPO_NAME
|
|
7
|
+
from bluer_sbc.help.functions import help_functions
|
|
8
|
+
from bluer_sbc.README import aliases, designs, parts, root
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def build():
|
|
12
|
+
return all(
|
|
13
|
+
README.build(
|
|
14
|
+
items=readme.get("items", []),
|
|
15
|
+
cols=readme.get("cols", 3),
|
|
16
|
+
path=os.path.join(file.path(__file__), readme["path"]),
|
|
17
|
+
ICON=ICON,
|
|
18
|
+
NAME=NAME,
|
|
19
|
+
VERSION=VERSION,
|
|
20
|
+
REPO_NAME=REPO_NAME,
|
|
21
|
+
help_function=lambda tokens: get_help(
|
|
22
|
+
tokens,
|
|
23
|
+
help_functions,
|
|
24
|
+
mono=True,
|
|
25
|
+
),
|
|
26
|
+
macros=readme.get("macros", {}),
|
|
27
|
+
)
|
|
28
|
+
for readme in root.docs + parts.docs + designs.docs + aliases.docs
|
|
29
|
+
)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from typing import List, Dict
|
|
2
|
+
|
|
3
|
+
from bluer_objects import markdown
|
|
4
|
+
|
|
5
|
+
from bluer_sbc.parts.db import db_of_parts
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def design(
|
|
9
|
+
items: List[str],
|
|
10
|
+
dict_of_parts: Dict = {},
|
|
11
|
+
) -> Dict:
|
|
12
|
+
output = {
|
|
13
|
+
"items": items,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if dict_of_parts:
|
|
17
|
+
output["macros"] = {
|
|
18
|
+
"parts_images:::": markdown.generate_table(
|
|
19
|
+
db_of_parts.as_images(
|
|
20
|
+
dict_of_parts,
|
|
21
|
+
reference="../../../parts",
|
|
22
|
+
),
|
|
23
|
+
cols=10,
|
|
24
|
+
),
|
|
25
|
+
"parts_list:::": db_of_parts.as_list(
|
|
26
|
+
dict_of_parts,
|
|
27
|
+
reference="../../../parts",
|
|
28
|
+
log=False,
|
|
29
|
+
),
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return output
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from bluer_sbc.README.design import design
|
|
2
|
+
from bluer_sbc.README.designs.cheshmak import items as cheshmak_items
|
|
3
|
+
from bluer_sbc.README.designs.battery_bus import items as battery_bus_items
|
|
4
|
+
from bluer_sbc.README.designs.swallow import items as swallow_items
|
|
5
|
+
from bluer_sbc.README.designs.swallow_head import items as swallow_head_items
|
|
6
|
+
from bluer_sbc.README.designs.bryce import items as bryce_items
|
|
7
|
+
from bluer_sbc.README.designs.nafha import items as nafha_items
|
|
8
|
+
from bluer_sbc.README.designs.shelter import items as shelter_items
|
|
9
|
+
from bluer_sbc.README.designs.x import items as x_items
|
|
10
|
+
from bluer_sbc.README.designs.ultrasonic_sensor_tester import (
|
|
11
|
+
items as ultrasonic_sensor_tester_items,
|
|
12
|
+
)
|
|
13
|
+
from bluer_sbc.designs.swallow.parts import dict_of_parts as swallow_parts
|
|
14
|
+
from bluer_sbc.designs.swallow_head.parts import dict_of_parts as swallow_head_parts
|
|
15
|
+
|
|
16
|
+
docs = [
|
|
17
|
+
{
|
|
18
|
+
"cols": 4,
|
|
19
|
+
"items": design_info["items"],
|
|
20
|
+
"path": f"../docs/{design_name}.md",
|
|
21
|
+
"macros": design_info.get("macros", {}),
|
|
22
|
+
}
|
|
23
|
+
for design_name, design_info in {
|
|
24
|
+
"battery-bus": design(
|
|
25
|
+
battery_bus_items,
|
|
26
|
+
),
|
|
27
|
+
"bryce": design(
|
|
28
|
+
bryce_items,
|
|
29
|
+
),
|
|
30
|
+
"cheshmak": design(
|
|
31
|
+
cheshmak_items,
|
|
32
|
+
),
|
|
33
|
+
"nafha": design(
|
|
34
|
+
nafha_items,
|
|
35
|
+
),
|
|
36
|
+
"shelter": design(
|
|
37
|
+
shelter_items,
|
|
38
|
+
),
|
|
39
|
+
"swallow-head": design(
|
|
40
|
+
swallow_head_items,
|
|
41
|
+
swallow_head_parts,
|
|
42
|
+
),
|
|
43
|
+
"swallow": design(
|
|
44
|
+
swallow_items,
|
|
45
|
+
swallow_parts,
|
|
46
|
+
),
|
|
47
|
+
"ultrasonic-sensor-tester": design(
|
|
48
|
+
ultrasonic_sensor_tester_items,
|
|
49
|
+
),
|
|
50
|
+
"x": design(
|
|
51
|
+
x_items,
|
|
52
|
+
),
|
|
53
|
+
}.items()
|
|
54
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from bluer_objects import README
|
|
2
|
+
from bluer_objects.README.items import ImageItems
|
|
3
|
+
from bluer_objects.README.consts import assets_url
|
|
4
|
+
|
|
5
|
+
from bluer_sbc.README.designs.consts import assets2
|
|
6
|
+
|
|
7
|
+
assets2_battery_bus = assets_url(
|
|
8
|
+
suffix="battery-bus",
|
|
9
|
+
volume=2,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
marquee = README.Items(
|
|
13
|
+
[
|
|
14
|
+
{
|
|
15
|
+
"name": "battery bus",
|
|
16
|
+
"marquee": f"{assets2_battery_bus}/concept.png",
|
|
17
|
+
"url": "./bluer_sbc/docs/battery-bus.md",
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
items = ImageItems(
|
|
23
|
+
{
|
|
24
|
+
f"{assets2_battery_bus}/concept.png": "",
|
|
25
|
+
}
|
|
26
|
+
)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from bluer_objects import README
|
|
2
2
|
from bluer_objects.README.items import ImageItems
|
|
3
|
-
from bluer_objects.README.consts import
|
|
3
|
+
from bluer_objects.README.consts import assets_url
|
|
4
4
|
|
|
5
|
-
from bluer_sbc.designs.consts import assets2
|
|
5
|
+
from bluer_sbc.README.designs.consts import assets2
|
|
6
6
|
|
|
7
7
|
image_template = assets2 + "shelter/{}?raw=true"
|
|
8
8
|
|
|
9
|
-
assets2_shelter =
|
|
9
|
+
assets2_shelter = assets_url(
|
|
10
10
|
suffix="shelter",
|
|
11
11
|
volume=2,
|
|
12
12
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from bluer_objects import README
|
|
2
2
|
from bluer_objects.README.items import ImageItems
|
|
3
3
|
|
|
4
|
-
from bluer_sbc.designs.consts import assets2
|
|
4
|
+
from bluer_sbc.README.designs.consts import assets2
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
image_template = assets2 + "swallow/design/head-v1/{}?raw=true"
|
|
@@ -17,5 +17,5 @@ marquee = README.Items(
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
items = ImageItems(
|
|
20
|
-
{
|
|
20
|
+
{image_template.format(f"{index+1:02}.jpg"): "" for index in range(6)}
|
|
21
21
|
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from bluer_objects import README
|
|
2
|
+
from bluer_objects.README.items import ImageItems
|
|
3
|
+
from bluer_objects.README.consts import assets_url
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
assets2_x = assets_url(
|
|
7
|
+
suffix="x",
|
|
8
|
+
volume=2,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
marquee = README.Items(
|
|
12
|
+
[
|
|
13
|
+
{
|
|
14
|
+
"name": "x",
|
|
15
|
+
"marquee": f"{assets2_x}/TBA.jpg",
|
|
16
|
+
"url": "./bluer_sbc/docs/x.md",
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
items = ImageItems(
|
|
22
|
+
{
|
|
23
|
+
f"{assets2_x}/TBA.jpg": "",
|
|
24
|
+
f"{assets2_x}/TBA.jpg": "",
|
|
25
|
+
}
|
|
26
|
+
)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from bluer_sbc.parts.db import db_of_parts
|
|
2
|
+
|
|
3
|
+
docs = [
|
|
4
|
+
{
|
|
5
|
+
"path": "../docs/parts",
|
|
6
|
+
"macros": {"list:::": db_of_parts.README},
|
|
7
|
+
}
|
|
8
|
+
] + [
|
|
9
|
+
{
|
|
10
|
+
"path": part.filename(create=True),
|
|
11
|
+
"macros": {"info:::": part.README(db_of_parts.url_prefix)},
|
|
12
|
+
}
|
|
13
|
+
for part_name, part in db_of_parts.items()
|
|
14
|
+
if part_name != "template"
|
|
15
|
+
]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from bluer_sbc.README.designs.cheshmak import marquee as cheshmak_marquee
|
|
2
|
+
from bluer_sbc.README.designs.blue_bracket import items as blue_bracket_items
|
|
3
|
+
from bluer_sbc.README.designs.swallow import marquee as swallow_marquee
|
|
4
|
+
from bluer_sbc.README.designs.swallow_head import marquee as swallow_head_marquee
|
|
5
|
+
from bluer_sbc.README.designs.bryce import marquee as bryce_marquee
|
|
6
|
+
from bluer_sbc.README.designs.nafha import marquee as nafha_marquee
|
|
7
|
+
from bluer_sbc.README.designs.shelter import marquee as shelter_marquee
|
|
8
|
+
from bluer_sbc.README.designs.battery_bus import marquee as battery_bus_marquee
|
|
9
|
+
from bluer_sbc.README.designs.ultrasonic_sensor_tester import (
|
|
10
|
+
marquee as ultrasonic_sensor_tester_marquee,
|
|
11
|
+
)
|
|
12
|
+
from bluer_sbc.README.shortcuts import items as shortcuts_items
|
|
13
|
+
|
|
14
|
+
docs = [
|
|
15
|
+
{
|
|
16
|
+
"items": battery_bus_marquee
|
|
17
|
+
+ swallow_marquee
|
|
18
|
+
+ swallow_head_marquee
|
|
19
|
+
+ ultrasonic_sensor_tester_marquee
|
|
20
|
+
+ bryce_marquee
|
|
21
|
+
+ cheshmak_marquee
|
|
22
|
+
+ nafha_marquee
|
|
23
|
+
+ shelter_marquee
|
|
24
|
+
+ blue_bracket_items,
|
|
25
|
+
"path": "../..",
|
|
26
|
+
"macros": {
|
|
27
|
+
"shortcuts:::": shortcuts_items,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from bluer_objects.README.items import Items
|
|
2
|
+
from bluer_objects import markdown
|
|
3
|
+
|
|
4
|
+
from bluer_sbc.parts.db import db_of_parts
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
items = markdown.generate_table(
|
|
8
|
+
Items(
|
|
9
|
+
[
|
|
10
|
+
{
|
|
11
|
+
"name": "parts",
|
|
12
|
+
"url": "./bluer_sbc/docs/parts",
|
|
13
|
+
"marquee": f"{db_of_parts.url_prefix}/XL4015.png",
|
|
14
|
+
},
|
|
15
|
+
]
|
|
16
|
+
),
|
|
17
|
+
)
|
|
@@ -2,9 +2,9 @@ NAME = "bluer_sbc"
|
|
|
2
2
|
|
|
3
3
|
ICON = "🌀"
|
|
4
4
|
|
|
5
|
-
DESCRIPTION = f"{ICON} AI for single board computers and
|
|
5
|
+
DESCRIPTION = f"{ICON} AI for single board computers and related designs."
|
|
6
6
|
|
|
7
|
-
VERSION = "
|
|
7
|
+
VERSION = "9.31.1"
|
|
8
8
|
|
|
9
9
|
REPO_NAME = "bluer-sbc"
|
|
10
10
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from blueness.argparse.generic import main
|
|
2
2
|
|
|
3
|
-
from bluer_sbc import NAME, VERSION, DESCRIPTION, ICON
|
|
3
|
+
from bluer_sbc import NAME, VERSION, DESCRIPTION, ICON
|
|
4
|
+
from bluer_sbc.README.build import build
|
|
4
5
|
from bluer_sbc.logger import logger
|
|
5
6
|
|
|
6
7
|
main(
|
|
@@ -10,7 +11,7 @@ main(
|
|
|
10
11
|
VERSION=VERSION,
|
|
11
12
|
main_filename=__file__,
|
|
12
13
|
tasks={
|
|
13
|
-
"build_README": lambda _:
|
|
14
|
+
"build_README": lambda _: build(),
|
|
14
15
|
},
|
|
15
16
|
logger=logger,
|
|
16
17
|
)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
dict_of_parts = {
|
|
2
|
+
"rpi3bp": "",
|
|
3
|
+
"XL4015": "",
|
|
4
|
+
"470-mF": "",
|
|
5
|
+
"Polyfuse": "optional",
|
|
6
|
+
"TVS-diode": "",
|
|
7
|
+
"resistor": "7 x 330-470 Ω + N x 2.2 kΩ + N x 3.3 kΩ",
|
|
8
|
+
"LED": "green + red + yellow + 4 x blue",
|
|
9
|
+
"rpi-camera": "",
|
|
10
|
+
"PCB-single-14x9_5": "2 x",
|
|
11
|
+
"PCB-double-9x7": "2 x",
|
|
12
|
+
"pushbutton": "",
|
|
13
|
+
"ultrasonic-sensor": "4 x",
|
|
14
|
+
"connector": "3 pairs",
|
|
15
|
+
}
|
|
File without changes
|
|
File without changes
|
|
@@ -10,6 +10,7 @@ from bluer_sbc.help.camera import help_functions as help_camera
|
|
|
10
10
|
from bluer_sbc.help.grove import help_functions as help_grove
|
|
11
11
|
from bluer_sbc.help.hat import help_functions as help_hat
|
|
12
12
|
from bluer_sbc.help.lepton import help_functions as help_lepton
|
|
13
|
+
from bluer_sbc.help.parts import help_functions as help_parts
|
|
13
14
|
from bluer_sbc.help.rpi import help_functions as help_rpi
|
|
14
15
|
from bluer_sbc.help.scroll_phat_hd import help_functions as help_scroll_phat_hd
|
|
15
16
|
from bluer_sbc.help.sparkfun_top_phat import help_functions as help_sparkfun_top_phat
|
|
@@ -26,6 +27,7 @@ help_functions.update(
|
|
|
26
27
|
"grove": help_grove,
|
|
27
28
|
"hat": help_hat,
|
|
28
29
|
"lepton": help_lepton,
|
|
30
|
+
"parts": help_parts,
|
|
29
31
|
"rpi": help_rpi,
|
|
30
32
|
"scroll_phat_hd": help_scroll_phat_hd,
|
|
31
33
|
"sparkfun_top_phat": help_sparkfun_top_phat,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from bluer_options.terminal import show_usage
|
|
4
|
+
|
|
5
|
+
from bluer_sbc import ALIAS
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def help_cd(
|
|
9
|
+
tokens: List[str],
|
|
10
|
+
mono: bool,
|
|
11
|
+
) -> str:
|
|
12
|
+
return show_usage(
|
|
13
|
+
[
|
|
14
|
+
"@sbc",
|
|
15
|
+
"parts",
|
|
16
|
+
"cd",
|
|
17
|
+
],
|
|
18
|
+
"cd to part images.",
|
|
19
|
+
mono=mono,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def help_adjust(
|
|
24
|
+
tokens: List[str],
|
|
25
|
+
mono: bool,
|
|
26
|
+
) -> str:
|
|
27
|
+
options = "dryrun"
|
|
28
|
+
|
|
29
|
+
args = [
|
|
30
|
+
"[--verbose 1]",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
return show_usage(
|
|
34
|
+
[
|
|
35
|
+
"@sbc",
|
|
36
|
+
"parts",
|
|
37
|
+
"adjust",
|
|
38
|
+
f"[{options}]",
|
|
39
|
+
]
|
|
40
|
+
+ args,
|
|
41
|
+
"adjust part images.",
|
|
42
|
+
mono=mono,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
help_functions = {
|
|
47
|
+
"adjust": help_adjust,
|
|
48
|
+
"cd": help_cd,
|
|
49
|
+
}
|