Barmaja-PyArduino 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Barmaja_PyArduino/BARMAJA_PyArduino.ico +0 -0
- Barmaja_PyArduino/__init__.py +528 -0
- Barmaja_PyArduino/__init__.pyi +331 -0
- Barmaja_PyArduino/__main__.py +2 -0
- Barmaja_PyArduino/adapters/__init__.py +35 -0
- Barmaja_PyArduino/api_registry.py +459 -0
- Barmaja_PyArduino/backend/__init__.py +3 -0
- Barmaja_PyArduino/backend/uno_cpp.py +1680 -0
- Barmaja_PyArduino/board.py +80 -0
- Barmaja_PyArduino/cli.py +223 -0
- Barmaja_PyArduino/compiler.py +1721 -0
- Barmaja_PyArduino/console.py +217 -0
- Barmaja_PyArduino/device_packs.py +367 -0
- Barmaja_PyArduino/device_packs_builtin/Button/arduino/Barmaja_Button/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/Button/arduino/Barmaja_Button/src/Barmaja_Button.h +18 -0
- Barmaja_PyArduino/device_packs_builtin/Button/example.py +10 -0
- Barmaja_PyArduino/device_packs_builtin/Button/pack.json +40 -0
- Barmaja_PyArduino/device_packs_builtin/ClockDS3231/arduino/Barmaja_ClockDS3231/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/ClockDS3231/arduino/Barmaja_ClockDS3231/src/Barmaja_ClockDS3231.h +20 -0
- Barmaja_PyArduino/device_packs_builtin/ClockDS3231/example.py +8 -0
- Barmaja_PyArduino/device_packs_builtin/ClockDS3231/pack.json +136 -0
- Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/arduino/Barmaja_DistanceVL53L0X/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/arduino/Barmaja_DistanceVL53L0X/src/Barmaja_DistanceVL53L0X.h +12 -0
- Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/example.py +8 -0
- Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/pack.json +48 -0
- Barmaja_PyArduino/device_packs_builtin/LCDParallel/arduino/Barmaja_LCDParallel/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/LCDParallel/arduino/Barmaja_LCDParallel/src/Barmaja_LCDParallel.h +17 -0
- Barmaja_PyArduino/device_packs_builtin/LCDParallel/example.py +10 -0
- Barmaja_PyArduino/device_packs_builtin/LCDParallel/pack.json +137 -0
- Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/arduino/Barmaja_LoadCellHX711/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/arduino/Barmaja_LoadCellHX711/src/Barmaja_LoadCellHX711.h +16 -0
- Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/example.py +11 -0
- Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/pack.json +74 -0
- Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/arduino/Barmaja_NeoPixelStrip/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/arduino/Barmaja_NeoPixelStrip/src/Barmaja_NeoPixelStrip.h +15 -0
- Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/example.py +13 -0
- Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/pack.json +114 -0
- Barmaja_PyArduino/device_packs_builtin/OLEDText/arduino/Barmaja_OLEDText/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/OLEDText/arduino/Barmaja_OLEDText/src/Barmaja_OLEDText.h +21 -0
- Barmaja_PyArduino/device_packs_builtin/OLEDText/example.py +9 -0
- Barmaja_PyArduino/device_packs_builtin/OLEDText/pack.json +103 -0
- Barmaja_PyArduino/device_packs_builtin/PressureBMP280/arduino/Barmaja_PressureBMP280/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/PressureBMP280/arduino/Barmaja_PressureBMP280/src/Barmaja_PressureBMP280.h +16 -0
- Barmaja_PyArduino/device_packs_builtin/PressureBMP280/example.py +8 -0
- Barmaja_PyArduino/device_packs_builtin/PressureBMP280/pack.json +92 -0
- Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/arduino/Barmaja_RotaryEncoder/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/arduino/Barmaja_RotaryEncoder/src/Barmaja_RotaryEncoder.h +18 -0
- Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/example.py +10 -0
- Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/pack.json +44 -0
- Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/arduino/Barmaja_ServoDriverPCA9685/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/arduino/Barmaja_ServoDriverPCA9685/src/Barmaja_ServoDriverPCA9685.h +15 -0
- Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/example.py +10 -0
- Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/pack.json +117 -0
- Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/arduino/Barmaja_ShiftRegister595/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/arduino/Barmaja_ShiftRegister595/src/Barmaja_ShiftRegister595.h +14 -0
- Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/example.py +9 -0
- Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/pack.json +83 -0
- Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/arduino/Barmaja_TemperatureDS18B20/library.properties +9 -0
- Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/arduino/Barmaja_TemperatureDS18B20/src/Barmaja_TemperatureDS18B20.h +16 -0
- Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/example.py +8 -0
- Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/pack.json +63 -0
- Barmaja_PyArduino/doctor.py +406 -0
- Barmaja_PyArduino/environment.py +595 -0
- Barmaja_PyArduino/errors.py +166 -0
- Barmaja_PyArduino/flow.py +754 -0
- Barmaja_PyArduino/frontend.py +611 -0
- Barmaja_PyArduino/installer.py +151 -0
- Barmaja_PyArduino/ir.py +660 -0
- Barmaja_PyArduino/library_adder.py +440 -0
- Barmaja_PyArduino/live.py +859 -0
- Barmaja_PyArduino/lowering.py +596 -0
- Barmaja_PyArduino/numeric.py +748 -0
- Barmaja_PyArduino/pack_builder.py +544 -0
- Barmaja_PyArduino/py.typed +0 -0
- Barmaja_PyArduino/serial_monitor.py +172 -0
- Barmaja_PyArduino/source.py +184 -0
- Barmaja_PyArduino/stubgen.py +148 -0
- Barmaja_PyArduino/symbols.py +646 -0
- Barmaja_PyArduino/target.py +1631 -0
- Barmaja_PyArduino/toolchain.py +506 -0
- Barmaja_PyArduino/typesys.py +917 -0
- Barmaja_PyArduino/workflow.py +213 -0
- barmaja_pyarduino-2.0.0.dist-info/METADATA +39 -0
- barmaja_pyarduino-2.0.0.dist-info/RECORD +87 -0
- barmaja_pyarduino-2.0.0.dist-info/WHEEL +5 -0
- barmaja_pyarduino-2.0.0.dist-info/licenses/LICENSE.txt +7 -0
- barmaja_pyarduino-2.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"""PC-side Verify / Upload / View-Code workflow usable from inside a program.
|
|
2
|
+
|
|
3
|
+
PictoBlox (mandatory V1 host) has no terminal, so the same package exposes the
|
|
4
|
+
workflow as ordinary functions. A student writes::
|
|
5
|
+
|
|
6
|
+
from Barmaja_PyArduino import *
|
|
7
|
+
upload()
|
|
8
|
+
|
|
9
|
+
led = 13
|
|
10
|
+
...
|
|
11
|
+
|
|
12
|
+
and presses Run. ``upload()`` compiles the file it is written in, uploads it to
|
|
13
|
+
the Arduino Uno, prints the result, and then stops the desktop run so the rest
|
|
14
|
+
of the program is not executed on the PC. The compiler removes the ``upload()``
|
|
15
|
+
line from the Arduino program.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import os
|
|
21
|
+
import sys
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
__all__ = ["upload", "verify", "show_code"]
|
|
25
|
+
|
|
26
|
+
_ACTIONS = {"upload", "verify", "show_code"}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _caller_file(depth: int) -> Path | None:
|
|
30
|
+
try:
|
|
31
|
+
frame = sys._getframe(depth)
|
|
32
|
+
except ValueError:
|
|
33
|
+
return None
|
|
34
|
+
candidates = [frame.f_globals.get("__file__"), frame.f_code.co_filename]
|
|
35
|
+
for raw in candidates:
|
|
36
|
+
if not raw or not isinstance(raw, str) or raw.startswith("<"):
|
|
37
|
+
continue
|
|
38
|
+
path = Path(raw)
|
|
39
|
+
if path.suffix.lower() == ".py" and path.is_file():
|
|
40
|
+
return path.resolve()
|
|
41
|
+
return None
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _say(text: str, *, error: bool = False, style: str | None = None) -> None:
|
|
45
|
+
from .console import write_styled
|
|
46
|
+
|
|
47
|
+
stream = sys.stderr if error else sys.stdout
|
|
48
|
+
write_styled(stream, text, style=style)
|
|
49
|
+
try:
|
|
50
|
+
stream.flush()
|
|
51
|
+
except Exception:
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _say_lines(lines, *, success_first: bool = False) -> None:
|
|
56
|
+
for index, line in enumerate(lines):
|
|
57
|
+
_say(line, style="success" if success_first and index == 0 else None)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def _no_board_message(exc) -> None:
|
|
61
|
+
ports = ", ".join(getattr(exc, "ports", ()) or ()) or "none"
|
|
62
|
+
# Keep the entire no-board notice together as an alert. In GUI hosts such
|
|
63
|
+
# as IDLE, stderr also receives the host's normal error highlighting.
|
|
64
|
+
_say("", error=True)
|
|
65
|
+
_say("Arduino Uno not detected.", error=True, style="error")
|
|
66
|
+
_say(f"Ports found: {ports}", error=True, style="error")
|
|
67
|
+
_say("", error=True)
|
|
68
|
+
_say("Connect the Arduino Uno by USB, wait a few seconds,", error=True, style="error")
|
|
69
|
+
_say("then run the program again.", error=True, style="error")
|
|
70
|
+
_say("", error=True)
|
|
71
|
+
_say("Compilation completed successfully.", error=True, style="error")
|
|
72
|
+
_say("Upload was not attempted.", error=True, style="error")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _board_detection_problem_message(exc) -> None:
|
|
76
|
+
reason = getattr(exc, "reason", None)
|
|
77
|
+
ports = tuple(getattr(exc, "ports", ()) or ())
|
|
78
|
+
|
|
79
|
+
_say("", error=True)
|
|
80
|
+
if reason == "multiple":
|
|
81
|
+
_say("More than one Arduino Uno / Uno-compatible board was detected.", error=True, style="error")
|
|
82
|
+
if ports:
|
|
83
|
+
_say(f"Ports found: {', '.join(ports)}", error=True, style="error")
|
|
84
|
+
_say("", error=True)
|
|
85
|
+
_say(f'Choose one in your Python program, for example: upload(port="{ports[0]}")', error=True, style="error")
|
|
86
|
+
elif reason in {"list-failed", "unreadable"}:
|
|
87
|
+
_say("Barmaja could not scan the USB ports correctly.", error=True, style="error")
|
|
88
|
+
_say(str(exc), error=True, style="error")
|
|
89
|
+
_say("", error=True)
|
|
90
|
+
_say("Close and reconnect the Arduino, then run the program again.", error=True, style="error")
|
|
91
|
+
_say("If the problem continues, run Smart Doctor or reinstall the Full Offline package.", error=True, style="error")
|
|
92
|
+
else:
|
|
93
|
+
_say(str(exc), error=True, style="error")
|
|
94
|
+
_say("", error=True)
|
|
95
|
+
_say("Compilation completed successfully.", error=True, style="error")
|
|
96
|
+
_say("Upload was not attempted.", error=True, style="error")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def _run(action: str, path: str | os.PathLike | None, port: str | None, caller: Path | None,
|
|
100
|
+
monitor: bool | None = None) -> None:
|
|
101
|
+
from .compiler import Transpiler
|
|
102
|
+
from .errors import BarmajaError, BoardDetectionError, InternalCompilerError, format_error
|
|
103
|
+
|
|
104
|
+
if action not in _ACTIONS:
|
|
105
|
+
raise ValueError(action)
|
|
106
|
+
source = Path(path).expanduser().resolve() if path else caller
|
|
107
|
+
stop_after = path is None or (caller is not None and source == caller)
|
|
108
|
+
if source is None:
|
|
109
|
+
_say(
|
|
110
|
+
"Barmaja PyArduino could not find this program's .py file. Save the program as a .py file "
|
|
111
|
+
"and run it again, or give the file explicitly, for example: upload(r\"C:\\Projects\\blink.py\")",
|
|
112
|
+
error=True,
|
|
113
|
+
style="error",
|
|
114
|
+
)
|
|
115
|
+
raise SystemExit(2)
|
|
116
|
+
|
|
117
|
+
code = 0
|
|
118
|
+
try:
|
|
119
|
+
result = Transpiler().compile_file(source)
|
|
120
|
+
for warning in result.warnings:
|
|
121
|
+
_say(f"Warning: {warning.message}", error=True)
|
|
122
|
+
if action == "show_code":
|
|
123
|
+
_say(result.cpp)
|
|
124
|
+
elif action == "verify":
|
|
125
|
+
from .console import compilation_summary_lines
|
|
126
|
+
from .toolchain import compile_sketch
|
|
127
|
+
_say("Compiling sketch...")
|
|
128
|
+
artifact = compile_sketch(result.cpp)
|
|
129
|
+
_say("")
|
|
130
|
+
_say_lines(compilation_summary_lines(artifact.memory), success_first=True)
|
|
131
|
+
else:
|
|
132
|
+
from .console import compilation_summary_lines
|
|
133
|
+
from .toolchain import board_for_port, compile_sketch, detect_board, upload_compiled
|
|
134
|
+
|
|
135
|
+
_say("Compiling sketch...")
|
|
136
|
+
artifact = compile_sketch(result.cpp)
|
|
137
|
+
_say("")
|
|
138
|
+
_say_lines(compilation_summary_lines(artifact.memory), success_first=True)
|
|
139
|
+
_say("")
|
|
140
|
+
_say("Searching for Arduino Uno...")
|
|
141
|
+
|
|
142
|
+
chosen = port or os.environ.get("BARMAJA_PORT")
|
|
143
|
+
try:
|
|
144
|
+
board = board_for_port(chosen) if chosen else detect_board()
|
|
145
|
+
except BoardDetectionError as exc:
|
|
146
|
+
if getattr(exc, "reason", None) == "not-found":
|
|
147
|
+
_no_board_message(exc)
|
|
148
|
+
code = 2
|
|
149
|
+
elif getattr(exc, "reason", None) in {"multiple", "list-failed", "unreadable"}:
|
|
150
|
+
_board_detection_problem_message(exc)
|
|
151
|
+
code = 2
|
|
152
|
+
else:
|
|
153
|
+
raise
|
|
154
|
+
else:
|
|
155
|
+
if chosen:
|
|
156
|
+
_say(f"Arduino Uno selected on {board.port}.")
|
|
157
|
+
else:
|
|
158
|
+
_say(f"Arduino Uno detected on {board.port}.")
|
|
159
|
+
_say("")
|
|
160
|
+
_say("Uploading...")
|
|
161
|
+
upload_compiled(artifact, board)
|
|
162
|
+
_say("Upload completed successfully.", style="success")
|
|
163
|
+
_say("")
|
|
164
|
+
_say("The Arduino program is now running standalone.", style="success")
|
|
165
|
+
# PC-side Serial viewer: only AFTER upload released the COM port, only
|
|
166
|
+
# for sketches that print, and only when this program is the one being
|
|
167
|
+
# uploaded (stop_after). upload("other.py") from a developer tool must
|
|
168
|
+
# return to its caller instead of blocking in a viewer.
|
|
169
|
+
from .serial_monitor import monitor_baud, monitor_enabled, stream_serial_output
|
|
170
|
+
baud = monitor_baud(result)
|
|
171
|
+
if baud is not None and stop_after:
|
|
172
|
+
if monitor_enabled(monitor):
|
|
173
|
+
_say("")
|
|
174
|
+
stream_serial_output(board.port, baud, announce=_say)
|
|
175
|
+
else:
|
|
176
|
+
_say("Serial viewing is off (monitor disabled). Open a Serial Monitor to see output.")
|
|
177
|
+
except BarmajaError as exc:
|
|
178
|
+
_say(format_error(exc, details=os.environ.get("BARMAJA_DEBUG") == "1"), error=True, style="error")
|
|
179
|
+
code = 3 if isinstance(exc, InternalCompilerError) else 2
|
|
180
|
+
except OSError as exc:
|
|
181
|
+
_say(f"Barmaja PyArduino: {exc}", error=True, style="error")
|
|
182
|
+
code = 2
|
|
183
|
+
except Exception as exc: # never show a raw traceback to students
|
|
184
|
+
wrapped = InternalCompilerError("An internal Barmaja PyArduino error occurred.", details=f"{type(exc).__name__}: {exc}")
|
|
185
|
+
_say(format_error(wrapped, details=os.environ.get("BARMAJA_DEBUG") == "1"), error=True, style="error")
|
|
186
|
+
code = 3
|
|
187
|
+
|
|
188
|
+
if stop_after:
|
|
189
|
+
# The program was sent to the Arduino (or checked); do not also run it on the PC.
|
|
190
|
+
raise SystemExit(code)
|
|
191
|
+
if code:
|
|
192
|
+
raise SystemExit(code)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def upload(path: str | os.PathLike | None = None, *, port: str | None = None,
|
|
196
|
+
monitor: bool | None = None) -> None:
|
|
197
|
+
"""Compile this program and upload it to the connected Arduino Uno.
|
|
198
|
+
|
|
199
|
+
Programs that print (``print()``, ``Serial.print()``, ``Serial.println()``)
|
|
200
|
+
are shown automatically in this Python console after the upload.
|
|
201
|
+
``monitor=False`` (or environment ``BARMAJA_SERIAL_MONITOR=off``) disables it.
|
|
202
|
+
"""
|
|
203
|
+
_run("upload", path, port, _caller_file(2), monitor)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def verify(path: str | os.PathLike | None = None) -> None:
|
|
207
|
+
"""Compile this program for the Arduino Uno without uploading."""
|
|
208
|
+
_run("verify", path, None, _caller_file(2))
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def show_code(path: str | os.PathLike | None = None) -> None:
|
|
212
|
+
"""Print the generated Arduino C++ for this program."""
|
|
213
|
+
_run("show_code", path, None, _caller_file(2))
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Barmaja-PyArduino
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: Write Arduino Uno programs in simple Python: checks, converts to Arduino C++ and uploads.
|
|
5
|
+
Author: BARMAJA Education & IT Solutions
|
|
6
|
+
License-Expression: LicenseRef-Proprietary
|
|
7
|
+
Keywords: arduino,python,education,stem,uno
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Education
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
17
|
+
Classifier: Topic :: Education
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE.txt
|
|
21
|
+
Requires-Dist: pyserial>=3.5
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# Barmaja PyArduino
|
|
25
|
+
|
|
26
|
+
Write Arduino programs in simple Python. BARMAJA PyArduino checks a small, readable subset of Python and turns it into Arduino C++ for the Arduino Uno, then uploads it.
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
pip install barmaja-pyarduino
|
|
30
|
+
python -m Barmaja_PyArduino doctor --details
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Status: early public release (2.0.0)
|
|
34
|
+
- Python 3.10 or newer. Built and tested on Windows.
|
|
35
|
+
- The Python-to-C++ compiler and the Uno test compile are checked by automated tests. **Tests on real Arduino boards and sensors are still in progress.**
|
|
36
|
+
- Uploading needs the Arduino command-line tools and the Uno core. On Windows, the BARMAJA V2 Setup program installs them for you (offline). `doctor` tells you what is missing.
|
|
37
|
+
- **This release is upload-only.** `LiveRun()` (control the board live from the PC) is not part of the pip release yet; it will come in a later version with BARMAJA's own live-control system.
|
|
38
|
+
|
|
39
|
+
Made by BARMAJA Education & IT Solutions.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
Barmaja_PyArduino/BARMAJA_PyArduino.ico,sha256=OP7clafs9tazVbvv_IE1PUDerutjuHA1Jqz4p13A5R0,131662
|
|
2
|
+
Barmaja_PyArduino/__init__.py,sha256=dXwyCtv6WVstr8W9FYHXt-UH2r2fGvSQgSnHv3JZvDQ,19953
|
|
3
|
+
Barmaja_PyArduino/__init__.pyi,sha256=A65O-sSSrNTceJiYVqUT2LYTGTEUIoRHIH8btGBwoCw,12483
|
|
4
|
+
Barmaja_PyArduino/__main__.py,sha256=ee5vE0xcUZM3fPmxicvcw-IJXkm6nOwxARREHBWpF8Q,47
|
|
5
|
+
Barmaja_PyArduino/api_registry.py,sha256=BiPsr_2X98lER46n14P1__1J5P4LoLokNYWsUf327BE,27873
|
|
6
|
+
Barmaja_PyArduino/board.py,sha256=b6pjW_RBsI1sovgLuLTInE3yWeGLwv6c8kQFRYuX9Ro,2212
|
|
7
|
+
Barmaja_PyArduino/cli.py,sha256=IzhyJ2JlUvQHlEa5kjwzLBrq06B_aesjVT1hWvYQXzo,10641
|
|
8
|
+
Barmaja_PyArduino/compiler.py,sha256=L_NtB38V3ElKy4FxBH39vxVJYnLBtEIcTgqq67tX-9g,89496
|
|
9
|
+
Barmaja_PyArduino/console.py,sha256=XmqyTgHHy2YVSBiabhWPJYJjh0zFH3NR_trDYtehHmE,7059
|
|
10
|
+
Barmaja_PyArduino/device_packs.py,sha256=qVAKtxvXhaYHf4pTU0sFA7PAhM_clBD2pFbSW00jjo4,17130
|
|
11
|
+
Barmaja_PyArduino/doctor.py,sha256=t0yi2ll2CWtQWyZNC0C_qtyTUAn1czkI6bQ36GoP9vo,18035
|
|
12
|
+
Barmaja_PyArduino/environment.py,sha256=X4yZPLO__o7PgrffG4VuVJ-dGbBH4ubZAHdIzj7CSTE,22259
|
|
13
|
+
Barmaja_PyArduino/errors.py,sha256=0bK7Q79o9Hr35JuKKkO4WoeiPKW8d8OwZZiTy1PtGz8,4216
|
|
14
|
+
Barmaja_PyArduino/flow.py,sha256=Ff46IwDo4wEtrCZc1_mLO_U3cRpGNQx5EYnXQ7d5AmU,33263
|
|
15
|
+
Barmaja_PyArduino/frontend.py,sha256=7X1PVsTyS29Jnb7pCl60miRPQESdLWaBuc7j3sHrtvU,31793
|
|
16
|
+
Barmaja_PyArduino/installer.py,sha256=efikVcZ1XfexYs9cW5zXPMJiezqjABOeOdG8glrJztU,5463
|
|
17
|
+
Barmaja_PyArduino/ir.py,sha256=sDzER-gLUKV-g9Ce0lGAYB2SXstY7yC3EJEjQ7o_LjU,25743
|
|
18
|
+
Barmaja_PyArduino/library_adder.py,sha256=bKYa9O34AGhj-e8VCKS8-9qXRo3VYiMYZOyljinNTdo,21580
|
|
19
|
+
Barmaja_PyArduino/live.py,sha256=eXicMvlAeoz2B0WpxdTiHgAP_4jLsI8VmgwQwVRl_jk,33396
|
|
20
|
+
Barmaja_PyArduino/lowering.py,sha256=ek5Xl7xX536aRq3GhOY_kyl0bKVdH81wXw80ioSBCKQ,26431
|
|
21
|
+
Barmaja_PyArduino/numeric.py,sha256=NlryRTahtyVm4EwkQvSn8mijIw-ltDnb0RXjC-ogw_s,35891
|
|
22
|
+
Barmaja_PyArduino/pack_builder.py,sha256=hZWz0mZpqniUdjTWY218OzScQHSD8ACcR5w1JbKs3Rw,26378
|
|
23
|
+
Barmaja_PyArduino/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
Barmaja_PyArduino/serial_monitor.py,sha256=2LsaOMc5BAbCURLWCQPfFNO1tC3aoLLJhFXTzSDjQLE,7044
|
|
25
|
+
Barmaja_PyArduino/source.py,sha256=PspQhlNdoiwOarEAS9mWQvTWqo3_FA2RWn_2NNGn8cE,7311
|
|
26
|
+
Barmaja_PyArduino/stubgen.py,sha256=x7BT4w2tRyqDEhsXqm9WsKyl831qGXengckzmUtIuYQ,5718
|
|
27
|
+
Barmaja_PyArduino/symbols.py,sha256=53U2JWpMPbrdasDQvrlllAN1IHdbgsFr9jBpz_qwkAQ,27855
|
|
28
|
+
Barmaja_PyArduino/target.py,sha256=YePeTzJSIBpsRC1pAc2xcxnfcmH4E5dJP6UYw4KB0oM,93243
|
|
29
|
+
Barmaja_PyArduino/toolchain.py,sha256=yG7115TlQA8iBHZOAjptQSxBu54bWPoQauFmFb0E0QY,22274
|
|
30
|
+
Barmaja_PyArduino/typesys.py,sha256=e44AP6xI-9evJgfXBAT7Qd6Z_8qUpXa8RaAm82wHWos,46950
|
|
31
|
+
Barmaja_PyArduino/workflow.py,sha256=Gs3dht1pLzMI0Khvuc2EHkENocLGm_VJI-4Zvk8Lns0,9060
|
|
32
|
+
Barmaja_PyArduino/adapters/__init__.py,sha256=V9XNG6USLhBT05DO9LzL0Qq8ESszEMzkcJ5TXBdiCeo,1309
|
|
33
|
+
Barmaja_PyArduino/backend/__init__.py,sha256=be3OUfPUKxnwkxkUrhgLD7y66-Yd7yQVSmxw8hQpomI,172
|
|
34
|
+
Barmaja_PyArduino/backend/uno_cpp.py,sha256=mEqz_GHGad63mIX2bZmzg7c6OsLsnMrFQHCOvstXvwY,100391
|
|
35
|
+
Barmaja_PyArduino/device_packs_builtin/Button/example.py,sha256=8VbM8PITayF8b25rByGgDumOj2NAmsTupyILWrc__IY,202
|
|
36
|
+
Barmaja_PyArduino/device_packs_builtin/Button/pack.json,sha256=NImFm0pKdsTw9LO2jtBI1yOSAtQHp6o7ZJ1cVtMRJaY,985
|
|
37
|
+
Barmaja_PyArduino/device_packs_builtin/Button/arduino/Barmaja_Button/library.properties,sha256=8h_0JR88x8jAl7LUiJIKC2Y4EhlwIExsX4JS4vy2gGI,242
|
|
38
|
+
Barmaja_PyArduino/device_packs_builtin/Button/arduino/Barmaja_Button/src/Barmaja_Button.h,sha256=a7JSgA58L9jEDAC0SORkpxnrHz35uwa4kZevpQ8s4nI,686
|
|
39
|
+
Barmaja_PyArduino/device_packs_builtin/ClockDS3231/example.py,sha256=uHQG7f0ENr35rNxQKgewgfyM3DjJz4fF0l3N3NaaeF0,169
|
|
40
|
+
Barmaja_PyArduino/device_packs_builtin/ClockDS3231/pack.json,sha256=6GUi8VmJvsSJ6twRf9xzCDrbgZizn-Pnudcjwp77ziI,2749
|
|
41
|
+
Barmaja_PyArduino/device_packs_builtin/ClockDS3231/arduino/Barmaja_ClockDS3231/library.properties,sha256=KSVSZR0gXVRtTCJm2slyVkcapfQE5Ll98FunY8oA_hk,215
|
|
42
|
+
Barmaja_PyArduino/device_packs_builtin/ClockDS3231/arduino/Barmaja_ClockDS3231/src/Barmaja_ClockDS3231.h,sha256=Y7v9goPR6HoHNB74SHJC-DxYG6Z2_PPnXtN-JFLKry0,727
|
|
43
|
+
Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/example.py,sha256=frIpcgXvH-Rfc5hVzCH3GXBkzDuXqm_4naW89UqO3-A,164
|
|
44
|
+
Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/pack.json,sha256=bqsgxv2RwNuX5EDjY69w7HBjkoQ7b6rWMAa1l-HHric,1160
|
|
45
|
+
Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/arduino/Barmaja_DistanceVL53L0X/library.properties,sha256=cCCcwOc0FaQfFjwn2fUJkDzLx-qkQFIsxui08zmCg8M,248
|
|
46
|
+
Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/arduino/Barmaja_DistanceVL53L0X/src/Barmaja_DistanceVL53L0X.h,sha256=WZnDspcdk1qci3T7hUAh9NyGZ-i0ux_yXoeH_vT8jDs,407
|
|
47
|
+
Barmaja_PyArduino/device_packs_builtin/LCDParallel/example.py,sha256=7va1mpzRBzUz8CwGYvg_rEnkWm1cBcYMxULCxyaVHE0,220
|
|
48
|
+
Barmaja_PyArduino/device_packs_builtin/LCDParallel/pack.json,sha256=0eOAglsM1mdQn99x09hQUCaWGTtUyrb1Hmc2wBXrDwY,2748
|
|
49
|
+
Barmaja_PyArduino/device_packs_builtin/LCDParallel/arduino/Barmaja_LCDParallel/library.properties,sha256=RfgCNbltmZgOnHMmiGAw8go7Z2N3taVsq_GvWwCmZas,252
|
|
50
|
+
Barmaja_PyArduino/device_packs_builtin/LCDParallel/arduino/Barmaja_LCDParallel/src/Barmaja_LCDParallel.h,sha256=TXdMU2u6q9v4mlx-iWM2A5y3Y7DTr19aX7mFKvY37jA,683
|
|
51
|
+
Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/example.py,sha256=wNFvZLCFcFtbATb-DhLjQk1OXCEPVc9budJ00tGCSao,220
|
|
52
|
+
Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/pack.json,sha256=wvgw-0oWGST_5KoBBTeH_8R_WHmqOzw-EPbz4URYIAQ,1619
|
|
53
|
+
Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/arduino/Barmaja_LoadCellHX711/library.properties,sha256=BQzu68abljjN69pXYo_3h_RkBrW_nVdfJcQWZpuAH-E,230
|
|
54
|
+
Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/arduino/Barmaja_LoadCellHX711/src/Barmaja_LoadCellHX711.h,sha256=DbACvRhW5pKKX9a7txU7bi2N0CGGgfNQoG-It0yA2vY,518
|
|
55
|
+
Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/example.py,sha256=BVo-HApBjn52qZMBkkvmGEHT5-r4EegPk0TNlANDft0,225
|
|
56
|
+
Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/pack.json,sha256=CjJknuWqkus-slwp7qHZIBqmbLhtSi91yxVSjP13JRI,2384
|
|
57
|
+
Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/arduino/Barmaja_NeoPixelStrip/library.properties,sha256=LxctJax11hai5xhXo6C72VaP6bclH8MPm_Ohl1GsRoU,221
|
|
58
|
+
Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/arduino/Barmaja_NeoPixelStrip/src/Barmaja_NeoPixelStrip.h,sha256=RFrIibdhmc1X5f4v2icdPuCYIPO8jt7oawBlWtBxhzw,615
|
|
59
|
+
Barmaja_PyArduino/device_packs_builtin/OLEDText/example.py,sha256=3-Fo-9jI3jnehf9LbBn8pjMA8A4VwSt8K2ZXhwtUtlQ,183
|
|
60
|
+
Barmaja_PyArduino/device_packs_builtin/OLEDText/pack.json,sha256=ViWrd8mNUgdXB_gIkMUtDCgwlo-6eGgEsksxLq5iXHU,2002
|
|
61
|
+
Barmaja_PyArduino/device_packs_builtin/OLEDText/arduino/Barmaja_OLEDText/library.properties,sha256=fgvIVIMkDWmp30xXPMFm6mfQ5XoUWHgda7Q-owJcTzU,232
|
|
62
|
+
Barmaja_PyArduino/device_packs_builtin/OLEDText/arduino/Barmaja_OLEDText/src/Barmaja_OLEDText.h,sha256=aLfPc12ulHyZh1RvvOQcS6u0pQqv19E-VhKnJ1f4BtU,898
|
|
63
|
+
Barmaja_PyArduino/device_packs_builtin/PressureBMP280/example.py,sha256=mM9RgcsAAiYrP5hC5sa8GgZkm2BMpZ58vrGPEfp3w4Y,186
|
|
64
|
+
Barmaja_PyArduino/device_packs_builtin/PressureBMP280/pack.json,sha256=sQ8aRzL7xKdIdnVKGOh1TfHP5J6gCIq6rDBVrhhOQh8,2197
|
|
65
|
+
Barmaja_PyArduino/device_packs_builtin/PressureBMP280/arduino/Barmaja_PressureBMP280/library.properties,sha256=2B4vDC0CxjkX0zx2xdQPFanXlL2m3_XwKUJvkcyEFGQ,240
|
|
66
|
+
Barmaja_PyArduino/device_packs_builtin/PressureBMP280/arduino/Barmaja_PressureBMP280/src/Barmaja_PressureBMP280.h,sha256=9LadW9Ol-iBq3D73T9l4T9ikxhwlcyAuEQl69o2uODs,595
|
|
67
|
+
Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/example.py,sha256=wVSU30NCfdx9mFaZSZ4NxL2O56916--GIK1Px4ItVhk,179
|
|
68
|
+
Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/pack.json,sha256=Cs1UGpTw9QmXKwJ3MTJgnk65mermk4PN22S1O9c1Vh0,1041
|
|
69
|
+
Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/arduino/Barmaja_RotaryEncoder/library.properties,sha256=qeLJw3lS1L8a0j-SmvPdRYKDfaoAcANQOZc-lJ20J9Y,232
|
|
70
|
+
Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/arduino/Barmaja_RotaryEncoder/src/Barmaja_RotaryEncoder.h,sha256=8MQ9BK3SCHRi-hUh6JOQjvli9e1VwkNEqqUdfQjLwwo,648
|
|
71
|
+
Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/example.py,sha256=1pXoTWZDYo-xyXw16bmFYjaVrS-ZjUAG-NYbuM2xmuo,171
|
|
72
|
+
Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/pack.json,sha256=0aYCyXy6UKHHdUqL9P7JcpWAJqFL-zk7UyizCrPrAgE,2532
|
|
73
|
+
Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/arduino/Barmaja_ServoDriverPCA9685/library.properties,sha256=9dwXWsX2N-MOWn8a7lJt_2EH0XnxzasEKR7wAc5anbU,230
|
|
74
|
+
Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/arduino/Barmaja_ServoDriverPCA9685/src/Barmaja_ServoDriverPCA9685.h,sha256=I3uTEgnyCpJwh32NvLGv2vPDoMypLOx08OPbRb4lkAM,697
|
|
75
|
+
Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/example.py,sha256=NIQAAUufQkwUMlCLl7NSjW36NpXNBHkrXXdqKQXlPCw,181
|
|
76
|
+
Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/pack.json,sha256=ZLG-qarQQfG9VFSqyAPL0X3keg943M2Hb9cvSUvcgJo,1647
|
|
77
|
+
Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/arduino/Barmaja_ShiftRegister595/library.properties,sha256=5TDUYKCzJdlU-XFhYrwe__ubt4zzt-w2t6mqII3Ta7A,237
|
|
78
|
+
Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/arduino/Barmaja_ShiftRegister595/src/Barmaja_ShiftRegister595.h,sha256=9KPAqFxfTWNXuXCUPKPS19MxuO9Puw99cA7MnQoeOsA,768
|
|
79
|
+
Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/example.py,sha256=KbPCq62sfch4yRzdWD3XBs087kQsgJJAkv3WGe0pA4w,164
|
|
80
|
+
Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/pack.json,sha256=JV0CakOcwfnFSaG-ETtU5NsrhqfOJUqNqa33iGYgiqI,1616
|
|
81
|
+
Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/arduino/Barmaja_TemperatureDS18B20/library.properties,sha256=QqBw3wp_dl_AVVjZvoxdbNIe9V0DpSBOocHlJQanUdY,232
|
|
82
|
+
Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/arduino/Barmaja_TemperatureDS18B20/src/Barmaja_TemperatureDS18B20.h,sha256=27Z7NzdDfw8BM3dGG0613viQA6jNQTXpqrs6ZuJZ4g8,610
|
|
83
|
+
barmaja_pyarduino-2.0.0.dist-info/licenses/LICENSE.txt,sha256=AWhdlaUJyKE-pmGljWTyHe61wIGc68hgBOuzB2qFUJ4,411
|
|
84
|
+
barmaja_pyarduino-2.0.0.dist-info/METADATA,sha256=rwXERs0y0TXkPK4vyiQ0DAhZPRG_ar516IRjif32AI8,1842
|
|
85
|
+
barmaja_pyarduino-2.0.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
86
|
+
barmaja_pyarduino-2.0.0.dist-info/top_level.txt,sha256=w0zKzS95cKquf7Hsv_oF4hNUrRX6JolvwU4g9toD7FQ,18
|
|
87
|
+
barmaja_pyarduino-2.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright (c) 2026 BARMAJA Education & IT Solutions. All rights reserved.
|
|
2
|
+
|
|
3
|
+
You may install and use this software for personal, classroom and educational purposes, free of charge.
|
|
4
|
+
You may not redistribute, sell, or publish modified copies without written permission from BARMAJA.
|
|
5
|
+
The software is provided "as is", without warranty of any kind.
|
|
6
|
+
|
|
7
|
+
(Draft wording for the owner to review before wider distribution.)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Barmaja_PyArduino
|