bluer-sbc 8.155.1__tar.gz → 8.162.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.

Files changed (108) hide show
  1. bluer_sbc-8.162.1/PKG-INFO +60 -0
  2. bluer_sbc-8.162.1/README.md +33 -0
  3. bluer_sbc-8.162.1/bluer_sbc/README.py +62 -0
  4. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/__init__.py +1 -1
  5. bluer_sbc-8.162.1/bluer_sbc/designs/cheshmak.py +23 -0
  6. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/camera.py +3 -6
  7. bluer_sbc-8.162.1/bluer_sbc.egg-info/PKG-INFO +60 -0
  8. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc.egg-info/SOURCES.txt +1 -0
  9. bluer_sbc-8.155.1/PKG-INFO +0 -56
  10. bluer_sbc-8.155.1/README.md +0 -49
  11. bluer_sbc-8.155.1/bluer_sbc/README.py +0 -33
  12. bluer_sbc-8.155.1/bluer_sbc.egg-info/PKG-INFO +0 -56
  13. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/LICENSE +0 -0
  14. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/MANIFEST.in +0 -0
  15. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/abcli.sh +0 -0
  16. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/actions.sh +0 -0
  17. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/adafruit_rgb_matrix.sh +0 -0
  18. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/alias.sh +0 -0
  19. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/blue_sbc.sh +0 -0
  20. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/camera.sh +0 -0
  21. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/grove.sh +0 -0
  22. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/hat.sh +0 -0
  23. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/adafruit_rgb_matrix.sh +0 -0
  24. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/grove.sh +0 -0
  25. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/lepton.sh +0 -0
  26. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/scroll_phat_hd.sh +0 -0
  27. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/sparkfun_top_phat.sh +0 -0
  28. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/template.sh +0 -0
  29. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/install/unicorn_16x16.sh +0 -0
  30. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/lepton.sh +0 -0
  31. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/scroll_phat_hd.sh +0 -0
  32. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed/headless_rpi.sh +0 -0
  33. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed/headless_rpi_64_bit.sh +0 -0
  34. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed/headless_ubuntu_rpi.sh +0 -0
  35. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed/jetson.sh +0 -0
  36. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed/rpi.sh +0 -0
  37. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed/swallow_raspbian.sh +0 -0
  38. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/seed.sh +0 -0
  39. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/session.sh +0 -0
  40. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/sparkfun_top_phat.sh +0 -0
  41. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/tests/README.sh +0 -0
  42. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/tests/camera.sh +0 -0
  43. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/tests/help.sh +0 -0
  44. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/tests/seed.sh +0 -0
  45. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/tests/version.sh +0 -0
  46. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/.abcli/unicorn_16x16.sh +0 -0
  47. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/ROS/__init__.py +0 -0
  48. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/__main__.py +0 -0
  49. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/algo/__init__.py +0 -0
  50. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/algo/diff.py +0 -0
  51. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/config.env +0 -0
  52. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/designs/__init__.py +0 -0
  53. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/designs/blue_bracket.py +0 -0
  54. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/designs/bluer_swallow.py +0 -0
  55. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/designs/bryce.py +0 -0
  56. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/env.py +0 -0
  57. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/__init__.py +0 -0
  58. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/adafruit_rgb_matrix.py +0 -0
  59. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/display.py +0 -0
  60. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/grove.py +0 -0
  61. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/hardware.py +0 -0
  62. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/hat/__init__.py +0 -0
  63. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/hat/__main__.py +0 -0
  64. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/hat/abstract.py +0 -0
  65. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/hat/prototype.py +0 -0
  66. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/screen.py +0 -0
  67. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/scroll_phat_hd.py +0 -0
  68. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/sparkfun_top_phat/__init__.py +0 -0
  69. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/sparkfun_top_phat/__main__.py +0 -0
  70. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/sparkfun_top_phat/classes.py +0 -0
  71. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/hardware/unicorn_16x16.py +0 -0
  72. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/__init__.py +0 -0
  73. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/__main__.py +0 -0
  74. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/adafruit_rgb_matrix.py +0 -0
  75. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/functions.py +0 -0
  76. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/grove.py +0 -0
  77. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/hat.py +0 -0
  78. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/lepton.py +0 -0
  79. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/scroll_phat_hd.py +0 -0
  80. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/sparkfun_top_phat.py +0 -0
  81. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/help/unicorn_16x16.py +0 -0
  82. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/host.py +0 -0
  83. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/__init__.py +0 -0
  84. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/camera/__init__.py +0 -0
  85. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/camera/__main__.py +0 -0
  86. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/camera/constants.py +0 -0
  87. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/camera/generic.py +0 -0
  88. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/camera/rpi.py +0 -0
  89. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/camera/rpi_64_bit.py +0 -0
  90. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/classes.py +0 -0
  91. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/lepton/__init__.py +0 -0
  92. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/lepton/__main__.py +0 -0
  93. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/lepton/classes.py +0 -0
  94. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/imager/lepton/python2.py +0 -0
  95. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/logger.py +0 -0
  96. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/sample.env +0 -0
  97. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/session/__init__.py +0 -0
  98. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/session/__main__.py +0 -0
  99. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/session/classes.py +0 -0
  100. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/session/functions.py +0 -0
  101. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc/urls.py +0 -0
  102. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc.egg-info/dependency_links.txt +0 -0
  103. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc.egg-info/requires.txt +0 -0
  104. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/bluer_sbc.egg-info/top_level.txt +0 -0
  105. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/pyproject.toml +0 -0
  106. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/requirements.txt +0 -0
  107. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/setup.cfg +0 -0
  108. {bluer_sbc-8.155.1 → bluer_sbc-8.162.1}/setup.py +0 -0
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.4
2
+ Name: bluer_sbc
3
+ Version: 8.162.1
4
+ Summary: 🌀 AI for single board computers.
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
+ ```bash
31
+ pip install bluer_sbc
32
+
33
+ # @env dot list
34
+ @env dot cp <env-name> local
35
+ ```
36
+
37
+ | | | |
38
+ | --- | --- | --- |
39
+ | [`cheshmak`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) [![image](https://github.com/kamangir/assets2/blob/main/cheshmak/01.png?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) | [`bluer-swallow`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/bluer-swallow/design/06.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) |
40
+ | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) |
41
+ | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) | | |
42
+
43
+ # aliases
44
+
45
+ [@camera](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/camera.md),
46
+ [@sbc <hardware>](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/hardware.md).
47
+
48
+ ---
49
+
50
+ > 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
51
+
52
+ ---
53
+
54
+
55
+ [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
56
+
57
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-8.162.1`](https://github.com/kamangir/bluer-sbc).
58
+
59
+
60
+ built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -0,0 +1,33 @@
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
+ ```bash
6
+ pip install bluer_sbc
7
+
8
+ # @env dot list
9
+ @env dot cp <env-name> local
10
+ ```
11
+
12
+ | | | |
13
+ | --- | --- | --- |
14
+ | [`cheshmak`](./bluer_sbc/docs/cheshmak.md) [![image](https://github.com/kamangir/assets2/blob/main/cheshmak/01.png?raw=true)](./bluer_sbc/docs/cheshmak.md) | [`bluer-swallow`](./bluer_sbc/docs/bluer-swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/bluer-swallow/design/06.jpg?raw=true)](./bluer_sbc/docs/bluer-swallow.md) | [`bryce`](./bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](./bluer_sbc/docs/bryce.md) |
15
+ | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) |
16
+ | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) | | |
17
+
18
+ # aliases
19
+
20
+ [@camera](./bluer_sbc/docs/aliases/camera.md),
21
+ [@sbc <hardware>](./bluer_sbc/docs/aliases/hardware.md).
22
+
23
+ ---
24
+
25
+ > 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
26
+
27
+ ---
28
+
29
+
30
+ [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
31
+
32
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-8.162.1`](https://github.com/kamangir/bluer-sbc).
33
+
@@ -0,0 +1,62 @@
1
+ import os
2
+ from typing import List
3
+
4
+ from bluer_options.help.functions import get_help
5
+ from bluer_objects import file, README
6
+
7
+ from bluer_sbc import NAME, VERSION, ICON, REPO_NAME
8
+ from bluer_sbc.designs.cheshmak import items as cheshmak_items
9
+ from bluer_sbc.designs.cheshmak import marquee as cheshmak_marquee
10
+ from bluer_sbc.designs.blue_bracket import items as blue_bracket_items
11
+ from bluer_sbc.designs.bluer_swallow import items as bluer_swallow_items
12
+ from bluer_sbc.designs.bluer_swallow import marquee as bluer_swallow_marquee
13
+ from bluer_sbc.designs.bryce import items as bryce_items
14
+ from bluer_sbc.designs.bryce import marquee as bryce_marquee
15
+ from bluer_sbc.help.functions import help_functions
16
+
17
+
18
+ def build():
19
+ return all(
20
+ README.build(
21
+ items=readme.get("items", []),
22
+ cols=readme.get("cols", 3),
23
+ path=os.path.join(file.path(__file__), readme["path"]),
24
+ ICON=ICON,
25
+ NAME=NAME,
26
+ VERSION=VERSION,
27
+ REPO_NAME=REPO_NAME,
28
+ help_function=lambda tokens: get_help(
29
+ tokens,
30
+ help_functions,
31
+ mono=True,
32
+ ),
33
+ )
34
+ for readme in [
35
+ {
36
+ "items": cheshmak_marquee
37
+ + bluer_swallow_marquee
38
+ + bryce_marquee
39
+ + blue_bracket_items,
40
+ "path": "..",
41
+ },
42
+ {
43
+ "items": cheshmak_items,
44
+ "path": "./docs/cheshmak.md",
45
+ },
46
+ {
47
+ "items": bluer_swallow_items,
48
+ "path": "./docs/bluer-swallow.md",
49
+ },
50
+ {
51
+ "items": bryce_items,
52
+ "path": "./docs/bryce.md",
53
+ },
54
+ ]
55
+ + [
56
+ {"path": f"./docs/aliases/{item}.md"}
57
+ for item in [
58
+ "camera",
59
+ "hardware",
60
+ ]
61
+ ]
62
+ )
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI for single board computers."
6
6
 
7
- VERSION = "8.155.1"
7
+ VERSION = "8.162.1"
8
8
 
9
9
  REPO_NAME = "bluer-sbc"
10
10
 
@@ -0,0 +1,23 @@
1
+ from bluer_objects import README
2
+
3
+ image_template = "https://github.com/kamangir/assets2/blob/main/cheshmak/{}?raw=true"
4
+
5
+ marquee = README.Items(
6
+ [
7
+ {
8
+ "name": "cheshmak",
9
+ "marquee": image_template.format("01.png"),
10
+ "url": "./bluer_sbc/docs/cheshmak.md",
11
+ }
12
+ ]
13
+ )
14
+
15
+ items = README.Items(
16
+ [
17
+ {
18
+ "marquee": image_template.format(f"{index+1:02}.png"),
19
+ "name": "",
20
+ }
21
+ for index in range(1)
22
+ ]
23
+ )
@@ -9,8 +9,7 @@ def help_capture_image(
9
9
  ) -> str:
10
10
  return show_usage(
11
11
  [
12
- "@sbc",
13
- "camera",
12
+ "@camera",
14
13
  "capture",
15
14
  "image",
16
15
  ],
@@ -30,8 +29,7 @@ def help_capture_video(
30
29
 
31
30
  return show_usage(
32
31
  [
33
- "@sbc",
34
- "camera",
32
+ "@camera",
35
33
  "capture",
36
34
  "video",
37
35
  ]
@@ -51,8 +49,7 @@ def help_preview(
51
49
 
52
50
  return show_usage(
53
51
  [
54
- "@sbc",
55
- "camera",
52
+ "@camera",
56
53
  "preview",
57
54
  "[-]",
58
55
  ]
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.4
2
+ Name: bluer_sbc
3
+ Version: 8.162.1
4
+ Summary: 🌀 AI for single board computers.
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
+ ```bash
31
+ pip install bluer_sbc
32
+
33
+ # @env dot list
34
+ @env dot cp <env-name> local
35
+ ```
36
+
37
+ | | | |
38
+ | --- | --- | --- |
39
+ | [`cheshmak`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) [![image](https://github.com/kamangir/assets2/blob/main/cheshmak/01.png?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) | [`bluer-swallow`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/bluer-swallow/design/06.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) |
40
+ | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) |
41
+ | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) | | |
42
+
43
+ # aliases
44
+
45
+ [@camera](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/camera.md),
46
+ [@sbc <hardware>](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/aliases/hardware.md).
47
+
48
+ ---
49
+
50
+ > 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
51
+
52
+ ---
53
+
54
+
55
+ [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
56
+
57
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-8.162.1`](https://github.com/kamangir/bluer-sbc).
58
+
59
+
60
+ built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -57,6 +57,7 @@ bluer_sbc/designs/__init__.py
57
57
  bluer_sbc/designs/blue_bracket.py
58
58
  bluer_sbc/designs/bluer_swallow.py
59
59
  bluer_sbc/designs/bryce.py
60
+ bluer_sbc/designs/cheshmak.py
60
61
  bluer_sbc/hardware/__init__.py
61
62
  bluer_sbc/hardware/adafruit_rgb_matrix.py
62
63
  bluer_sbc/hardware/display.py
@@ -1,56 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: bluer_sbc
3
- Version: 8.155.1
4
- Summary: 🌀 AI for single board computers.
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
- ```bash
31
- pip install bluer_sbc
32
-
33
- # @env dot list
34
- @env dot cp <env-name> local
35
- ```
36
-
37
- | | | |
38
- | --- | --- | --- |
39
- | [`bluer-swallow`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/bluer-swallow/design/06.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) |
40
- | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](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) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) |
41
-
42
-
43
-
44
- ---
45
-
46
- > 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
47
-
48
- ---
49
-
50
-
51
- [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
52
-
53
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-8.155.1`](https://github.com/kamangir/bluer-sbc).
54
-
55
-
56
- built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -1,49 +0,0 @@
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
- ```bash
6
- pip install bluer_sbc
7
-
8
- # @env dot list
9
- @env dot cp <env-name> local
10
- ```
11
-
12
- | | | |
13
- | --- | --- | --- |
14
- | [`bluer-swallow`](./bluer_sbc/docs/bluer-swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/bluer-swallow/design/06.jpg?raw=true)](./bluer_sbc/docs/bluer-swallow.md) | [`bryce`](./bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](./bluer_sbc/docs/bryce.md) | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) |
15
- | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](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) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) |
16
-
17
- ```mermaid
18
- graph LR
19
- camera["@sbc<br>&lt;camera&gt;<br>capture|preview<br>image|video"]
20
-
21
- hardware_validate["@sbc<br>&lt;hardware&gt;<br>validate<br>&lt;options&gt;"]
22
-
23
- object["📂 object"]:::folder
24
- camera_hardware["👁️‍🗨️ camera"]:::folder
25
- hardware["🖱️ hardware"]:::folder
26
- UI["💻 UI"]:::folder
27
-
28
- camera_hardware --> camera
29
- camera --> object
30
- camera --> UI
31
-
32
- hardware --> hardware_validate
33
- hardware_validate --> hardware
34
- hardware_validate --> UI
35
-
36
- classDef folder fill:#999,stroke:#333,stroke-width:2px;
37
- ```
38
-
39
- ---
40
-
41
- > 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
42
-
43
- ---
44
-
45
-
46
- [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
47
-
48
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-8.155.1`](https://github.com/kamangir/bluer-sbc).
49
-
@@ -1,33 +0,0 @@
1
- import os
2
- from typing import List
3
-
4
- from bluer_objects import file, README
5
-
6
- from bluer_sbc import NAME, VERSION, ICON, REPO_NAME
7
- from bluer_sbc.designs.blue_bracket import items as blue_bracket_items
8
- from bluer_sbc.designs.bluer_swallow import items as bluer_swallow_items
9
- from bluer_sbc.designs.bryce import items as bryce_items
10
- from bluer_sbc.designs.bluer_swallow import marquee as bluer_swallow_marquee
11
- from bluer_sbc.designs.bryce import marquee as bryce_marquee
12
-
13
-
14
- def build():
15
- return all(
16
- README.build(
17
- items=readme.get("items", []),
18
- cols=readme.get("cols", 3),
19
- path=os.path.join(file.path(__file__), readme["path"]),
20
- ICON=ICON,
21
- NAME=NAME,
22
- VERSION=VERSION,
23
- REPO_NAME=REPO_NAME,
24
- )
25
- for readme in [
26
- {
27
- "items": bluer_swallow_marquee + bryce_marquee + blue_bracket_items,
28
- "path": "..",
29
- },
30
- {"items": bluer_swallow_items, "path": "./docs/bluer-swallow.md"},
31
- {"items": bryce_items, "path": "./docs/bryce.md"},
32
- ]
33
- )
@@ -1,56 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: bluer_sbc
3
- Version: 8.155.1
4
- Summary: 🌀 AI for single board computers.
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
- ```bash
31
- pip install bluer_sbc
32
-
33
- # @env dot list
34
- @env dot cp <env-name> local
35
- ```
36
-
37
- | | | |
38
- | --- | --- | --- |
39
- | [`bluer-swallow`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/bluer-swallow/design/06.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bluer-swallow.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) |
40
- | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](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) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) |
41
-
42
-
43
-
44
- ---
45
-
46
- > 🌀 [`blue-sbc`](https://github.com/kamangir/blue-sbc) for the [Global South](https://github.com/kamangir/bluer-south).
47
-
48
- ---
49
-
50
-
51
- [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
52
-
53
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-8.155.1`](https://github.com/kamangir/bluer-sbc).
54
-
55
-
56
- built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
File without changes
File without changes
File without changes
File without changes
File without changes