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.
Files changed (87) hide show
  1. Barmaja_PyArduino/BARMAJA_PyArduino.ico +0 -0
  2. Barmaja_PyArduino/__init__.py +528 -0
  3. Barmaja_PyArduino/__init__.pyi +331 -0
  4. Barmaja_PyArduino/__main__.py +2 -0
  5. Barmaja_PyArduino/adapters/__init__.py +35 -0
  6. Barmaja_PyArduino/api_registry.py +459 -0
  7. Barmaja_PyArduino/backend/__init__.py +3 -0
  8. Barmaja_PyArduino/backend/uno_cpp.py +1680 -0
  9. Barmaja_PyArduino/board.py +80 -0
  10. Barmaja_PyArduino/cli.py +223 -0
  11. Barmaja_PyArduino/compiler.py +1721 -0
  12. Barmaja_PyArduino/console.py +217 -0
  13. Barmaja_PyArduino/device_packs.py +367 -0
  14. Barmaja_PyArduino/device_packs_builtin/Button/arduino/Barmaja_Button/library.properties +9 -0
  15. Barmaja_PyArduino/device_packs_builtin/Button/arduino/Barmaja_Button/src/Barmaja_Button.h +18 -0
  16. Barmaja_PyArduino/device_packs_builtin/Button/example.py +10 -0
  17. Barmaja_PyArduino/device_packs_builtin/Button/pack.json +40 -0
  18. Barmaja_PyArduino/device_packs_builtin/ClockDS3231/arduino/Barmaja_ClockDS3231/library.properties +9 -0
  19. Barmaja_PyArduino/device_packs_builtin/ClockDS3231/arduino/Barmaja_ClockDS3231/src/Barmaja_ClockDS3231.h +20 -0
  20. Barmaja_PyArduino/device_packs_builtin/ClockDS3231/example.py +8 -0
  21. Barmaja_PyArduino/device_packs_builtin/ClockDS3231/pack.json +136 -0
  22. Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/arduino/Barmaja_DistanceVL53L0X/library.properties +9 -0
  23. Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/arduino/Barmaja_DistanceVL53L0X/src/Barmaja_DistanceVL53L0X.h +12 -0
  24. Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/example.py +8 -0
  25. Barmaja_PyArduino/device_packs_builtin/DistanceVL53L0X/pack.json +48 -0
  26. Barmaja_PyArduino/device_packs_builtin/LCDParallel/arduino/Barmaja_LCDParallel/library.properties +9 -0
  27. Barmaja_PyArduino/device_packs_builtin/LCDParallel/arduino/Barmaja_LCDParallel/src/Barmaja_LCDParallel.h +17 -0
  28. Barmaja_PyArduino/device_packs_builtin/LCDParallel/example.py +10 -0
  29. Barmaja_PyArduino/device_packs_builtin/LCDParallel/pack.json +137 -0
  30. Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/arduino/Barmaja_LoadCellHX711/library.properties +9 -0
  31. Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/arduino/Barmaja_LoadCellHX711/src/Barmaja_LoadCellHX711.h +16 -0
  32. Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/example.py +11 -0
  33. Barmaja_PyArduino/device_packs_builtin/LoadCellHX711/pack.json +74 -0
  34. Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/arduino/Barmaja_NeoPixelStrip/library.properties +9 -0
  35. Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/arduino/Barmaja_NeoPixelStrip/src/Barmaja_NeoPixelStrip.h +15 -0
  36. Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/example.py +13 -0
  37. Barmaja_PyArduino/device_packs_builtin/NeoPixelStrip/pack.json +114 -0
  38. Barmaja_PyArduino/device_packs_builtin/OLEDText/arduino/Barmaja_OLEDText/library.properties +9 -0
  39. Barmaja_PyArduino/device_packs_builtin/OLEDText/arduino/Barmaja_OLEDText/src/Barmaja_OLEDText.h +21 -0
  40. Barmaja_PyArduino/device_packs_builtin/OLEDText/example.py +9 -0
  41. Barmaja_PyArduino/device_packs_builtin/OLEDText/pack.json +103 -0
  42. Barmaja_PyArduino/device_packs_builtin/PressureBMP280/arduino/Barmaja_PressureBMP280/library.properties +9 -0
  43. Barmaja_PyArduino/device_packs_builtin/PressureBMP280/arduino/Barmaja_PressureBMP280/src/Barmaja_PressureBMP280.h +16 -0
  44. Barmaja_PyArduino/device_packs_builtin/PressureBMP280/example.py +8 -0
  45. Barmaja_PyArduino/device_packs_builtin/PressureBMP280/pack.json +92 -0
  46. Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/arduino/Barmaja_RotaryEncoder/library.properties +9 -0
  47. Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/arduino/Barmaja_RotaryEncoder/src/Barmaja_RotaryEncoder.h +18 -0
  48. Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/example.py +10 -0
  49. Barmaja_PyArduino/device_packs_builtin/RotaryEncoder/pack.json +44 -0
  50. Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/arduino/Barmaja_ServoDriverPCA9685/library.properties +9 -0
  51. Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/arduino/Barmaja_ServoDriverPCA9685/src/Barmaja_ServoDriverPCA9685.h +15 -0
  52. Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/example.py +10 -0
  53. Barmaja_PyArduino/device_packs_builtin/ServoDriverPCA9685/pack.json +117 -0
  54. Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/arduino/Barmaja_ShiftRegister595/library.properties +9 -0
  55. Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/arduino/Barmaja_ShiftRegister595/src/Barmaja_ShiftRegister595.h +14 -0
  56. Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/example.py +9 -0
  57. Barmaja_PyArduino/device_packs_builtin/ShiftRegister595/pack.json +83 -0
  58. Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/arduino/Barmaja_TemperatureDS18B20/library.properties +9 -0
  59. Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/arduino/Barmaja_TemperatureDS18B20/src/Barmaja_TemperatureDS18B20.h +16 -0
  60. Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/example.py +8 -0
  61. Barmaja_PyArduino/device_packs_builtin/TemperatureDS18B20/pack.json +63 -0
  62. Barmaja_PyArduino/doctor.py +406 -0
  63. Barmaja_PyArduino/environment.py +595 -0
  64. Barmaja_PyArduino/errors.py +166 -0
  65. Barmaja_PyArduino/flow.py +754 -0
  66. Barmaja_PyArduino/frontend.py +611 -0
  67. Barmaja_PyArduino/installer.py +151 -0
  68. Barmaja_PyArduino/ir.py +660 -0
  69. Barmaja_PyArduino/library_adder.py +440 -0
  70. Barmaja_PyArduino/live.py +859 -0
  71. Barmaja_PyArduino/lowering.py +596 -0
  72. Barmaja_PyArduino/numeric.py +748 -0
  73. Barmaja_PyArduino/pack_builder.py +544 -0
  74. Barmaja_PyArduino/py.typed +0 -0
  75. Barmaja_PyArduino/serial_monitor.py +172 -0
  76. Barmaja_PyArduino/source.py +184 -0
  77. Barmaja_PyArduino/stubgen.py +148 -0
  78. Barmaja_PyArduino/symbols.py +646 -0
  79. Barmaja_PyArduino/target.py +1631 -0
  80. Barmaja_PyArduino/toolchain.py +506 -0
  81. Barmaja_PyArduino/typesys.py +917 -0
  82. Barmaja_PyArduino/workflow.py +213 -0
  83. barmaja_pyarduino-2.0.0.dist-info/METADATA +39 -0
  84. barmaja_pyarduino-2.0.0.dist-info/RECORD +87 -0
  85. barmaja_pyarduino-2.0.0.dist-info/WHEEL +5 -0
  86. barmaja_pyarduino-2.0.0.dist-info/licenses/LICENSE.txt +7 -0
  87. 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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -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