micrOSDevToolKit 2.26.0__tar.gz → 2.26.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. {microsdevtoolkit-2.26.0/micrOSDevToolKit.egg-info → microsdevtoolkit-2.26.2}/PKG-INFO +3 -4
  2. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/README.md +2 -3
  3. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +20 -20
  4. microsdevtoolkit-2.26.2/micrOS/source/Auth.py +63 -0
  5. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Hooks.py +2 -1
  6. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Shell.py +2 -3
  7. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Web.py +1 -1
  8. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_OV2640.py +4 -2
  9. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_fileserver.py +12 -2
  10. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_pacman.py +5 -7
  11. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_robustness.py +18 -1
  12. {microsdevtoolkit-2.26.0/toolkit/workspace/precompiled → microsdevtoolkit-2.26.2/micrOS/source}/web/filesui.js +40 -28
  13. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2/micrOSDevToolKit.egg-info}/PKG-INFO +3 -4
  14. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOSDevToolKit.egg-info/SOURCES.txt +2 -6
  15. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/setup.py +1 -1
  16. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/micrOSlint.py +2 -2
  17. microsdevtoolkit-2.26.2/toolkit/simulator_lib/node_config.json +6 -0
  18. microsdevtoolkit-2.26.2/toolkit/workspace/precompiled/Auth.mpy +0 -0
  19. microsdevtoolkit-2.26.2/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  20. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  21. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  22. microsdevtoolkit-2.26.2/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  23. microsdevtoolkit-2.26.2/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  24. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_robustness.py +18 -1
  25. {microsdevtoolkit-2.26.0/micrOS/source → microsdevtoolkit-2.26.2/toolkit/workspace/precompiled}/web/filesui.js +40 -28
  26. microsdevtoolkit-2.26.0/micrOS/source/modules/IO_s3matrix.py +0 -21
  27. microsdevtoolkit-2.26.0/micrOS/source/modules/LM_neomatrix.py +0 -426
  28. microsdevtoolkit-2.26.0/micrOS/source/web/matrix_draw.html +0 -390
  29. microsdevtoolkit-2.26.0/toolkit/simulator_lib/node_config.json +0 -6
  30. microsdevtoolkit-2.26.0/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  31. microsdevtoolkit-2.26.0/toolkit/workspace/precompiled/modules/IO_s3matrix.mpy +0 -0
  32. microsdevtoolkit-2.26.0/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  33. microsdevtoolkit-2.26.0/toolkit/workspace/precompiled/modules/LM_neomatrix.mpy +0 -0
  34. microsdevtoolkit-2.26.0/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  35. microsdevtoolkit-2.26.0/toolkit/workspace/precompiled/web/matrix_draw.html +0 -390
  36. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/LICENSE +0 -0
  37. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/MANIFEST.in +0 -0
  38. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/devToolKit.py +0 -0
  39. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/__init__.py +0 -0
  40. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/.DS_Store +0 -0
  41. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  42. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  43. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  44. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  45. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  46. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  47. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  48. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  49. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  50. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  51. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  52. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  53. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  54. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/media/__init__.py +0 -0
  55. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/media/dnd.png +0 -0
  56. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/media/logo.png +0 -0
  57. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/media/logo_mini.png +0 -0
  58. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/media/usb_port_icon.png +0 -0
  59. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/media/wifi_icon.png +0 -0
  60. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/__init__.py +0 -0
  61. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  62. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  63. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  64. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  65. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  66. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  67. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  68. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  69. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  70. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  71. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  72. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/.DS_Store +0 -0
  73. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Common.py +0 -0
  74. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Config.py +0 -0
  75. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Debug.py +0 -0
  76. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Espnow.py +0 -0
  77. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Files.py +0 -0
  78. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/InterConnect.py +0 -0
  79. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Interrupts.py +0 -0
  80. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Logger.py +0 -0
  81. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Network.py +0 -0
  82. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Notify.py +0 -0
  83. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Pacman.py +0 -0
  84. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Scheduler.py +0 -0
  85. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Server.py +0 -0
  86. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Tasks.py +0 -0
  87. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Time.py +0 -0
  88. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/Types.py +0 -0
  89. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  90. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  91. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  92. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  93. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  94. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  95. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  96. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  97. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/config/_git.keep +0 -0
  98. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/helpers.py +0 -0
  99. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/main.py +0 -0
  100. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/micrOS.py +0 -0
  101. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/micrOSloader.py +0 -0
  102. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/microIO.py +0 -0
  103. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_esp32.py +0 -0
  104. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_esp32c3.py +0 -0
  105. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_esp32c6.py +0 -0
  106. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_esp32s2.py +0 -0
  107. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_esp32s3.py +0 -0
  108. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_m5stamp.py +0 -0
  109. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_qtpy.py +0 -0
  110. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_rp2.py +0 -0
  111. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/IO_tinypico.py +0 -0
  112. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_L298N.py +0 -0
  113. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
  114. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_VL53L0X.py +0 -0
  115. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_aht10.py +0 -0
  116. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_bme280.py +0 -0
  117. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_buzzer.py +0 -0
  118. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_cct.py +0 -0
  119. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_cluster.py +0 -0
  120. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_co2.py +0 -0
  121. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_dht11.py +0 -0
  122. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_dht22.py +0 -0
  123. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_dimmer.py +0 -0
  124. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_distance.py +0 -0
  125. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_ds18.py +0 -0
  126. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_esp32.py +0 -0
  127. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_espnow.py +0 -0
  128. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  129. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_genIO.py +0 -0
  130. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_haptic.py +0 -0
  131. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_i2c.py +0 -0
  132. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  133. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_ld2410.py +0 -0
  134. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_light_sensor.py +0 -0
  135. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_mh_z19c.py +0 -0
  136. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_neoeffects.py +0 -0
  137. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_neopixel.py +0 -0
  138. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_oled.py +0 -0
  139. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  140. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_oled_ui.py +0 -0
  141. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_presence.py +0 -0
  142. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_qmi8658.py +0 -0
  143. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_rencoder.py +0 -0
  144. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_rest.py +0 -0
  145. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_rgb.py +0 -0
  146. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_rgbcct.py +0 -0
  147. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_roboarm.py +0 -0
  148. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_rp2w.py +0 -0
  149. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_sdcard.py +0 -0
  150. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_servo.py +0 -0
  151. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_sound_event.py +0 -0
  152. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_stepper.py +0 -0
  153. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_switch.py +0 -0
  154. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_system.py +0 -0
  155. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_tcs3472.py +0 -0
  156. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_telegram.py +0 -0
  157. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  158. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_trackball.py +0 -0
  159. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_veml7700.py +0 -0
  160. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/modules/LM_web.py +0 -0
  161. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/urequests.py +0 -0
  162. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/dashboard.html +0 -0
  163. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/editor.js +0 -0
  164. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/filesui.html +0 -0
  165. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/index.html +0 -0
  166. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/uapi.js +0 -0
  167. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/udashboard.js +0 -0
  168. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/ustyle.css +0 -0
  169. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/uwidgets.js +0 -0
  170. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/source/web/uwidgets_pro.js +0 -0
  171. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/utests/__init__.py +0 -0
  172. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOS/utests/test_scheduler.py +0 -0
  173. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  174. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  175. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  176. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/setup.cfg +0 -0
  177. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/DevEnvCompile.py +0 -0
  178. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/DevEnvOTA.py +0 -0
  179. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/DevEnvUSB.py +0 -0
  180. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/Gateway.py +0 -0
  181. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/LM_to_compile.dat +0 -0
  182. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/MicrOSDevEnv.py +0 -0
  183. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/WebRepl.py +0 -0
  184. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/__init__.py +0 -0
  185. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  186. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  187. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/CCTTest.py +0 -0
  188. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/CamStream.py +0 -0
  189. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/CatGame.py +0 -0
  190. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/Dimmer.py +0 -0
  191. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/GetVersion.py +0 -0
  192. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  193. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  194. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  195. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  196. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  197. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/RGBTest.py +0 -0
  198. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/RoboArm.py +0 -0
  199. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/SED_test.py +0 -0
  200. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  201. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/SystemTest.py +0 -0
  202. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/Template_app.py +0 -0
  203. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/__init__.py +0 -0
  204. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/_app_base.py +0 -0
  205. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/_capture.py +0 -0
  206. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  207. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  208. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  209. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  210. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/img_stream.html +0 -0
  211. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/index.html +0 -0
  212. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/LocalMachine.py +0 -0
  213. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/MicrosFiles.py +0 -0
  214. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/Repository.py +0 -0
  215. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/SafeInput.py +0 -0
  216. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/SearchDevices.py +0 -0
  217. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/SerialDriverHandler.py +0 -0
  218. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/TerminalColors.py +0 -0
  219. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/__init__.py +0 -0
  220. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/macroScript.py +0 -0
  221. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/micrOSClient.py +0 -0
  222. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/micrOSClientHistory.py +0 -0
  223. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/lib/pip_package_installer.py +0 -0
  224. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/micrOSdashboard.py +0 -0
  225. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/.DS_Store +0 -0
  226. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/IO_darwin.py +0 -0
  227. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  228. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  229. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  230. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  231. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  232. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  233. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  234. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  235. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  236. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  237. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  238. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  239. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  240. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  241. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  242. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  243. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  244. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  245. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  246. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  247. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  248. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  249. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  250. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  251. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  252. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  253. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  254. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  255. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  256. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  257. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  258. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  259. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  260. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  261. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  262. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  263. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  264. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  265. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  266. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  267. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  268. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  269. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  270. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  271. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  272. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  273. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  274. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  275. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  276. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  277. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  278. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  279. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  280. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  281. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  282. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  283. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  284. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  285. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  286. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/aioespnow.py +0 -0
  287. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/camera.py +0 -0
  288. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/dht.py +0 -0
  289. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/dotstar.py +0 -0
  290. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/ds18x20.py +0 -0
  291. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/esp32.py +0 -0
  292. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/framebuf.py +0 -0
  293. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/machine.py +0 -0
  294. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/micropython.py +0 -0
  295. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/mip.py +0 -0
  296. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/neopixel.py +0 -0
  297. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/network.py +0 -0
  298. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/ntptime.py +0 -0
  299. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/onewire.py +0 -0
  300. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/sim_common.py +0 -0
  301. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/simgc.py +0 -0
  302. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/simulator.py +0 -0
  303. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/tinypico.py +0 -0
  304. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/uasyncio.py +0 -0
  305. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/uos.py +0 -0
  306. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/urandom.py +0 -0
  307. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/usocket.py +0 -0
  308. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/ussl.py +0 -0
  309. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/ustruct.py +0 -0
  310. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/utime.py +0 -0
  311. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/view01.jpg +0 -0
  312. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/view02.jpg +0 -0
  313. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/simulator_lib/webrepl.py +0 -0
  314. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/socketClient.py +0 -0
  315. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/user_data/.include +0 -0
  316. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/user_data/webhooks/generic.py +0 -0
  317. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/user_data/webhooks/macro.py +0 -0
  318. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/user_data/webhooks/template.macro +0 -0
  319. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/user_data/webhooks/template.py +0 -0
  320. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/__init__.py +0 -0
  321. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Common.mpy +0 -0
  322. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Config.mpy +0 -0
  323. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  324. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Espnow.mpy +0 -0
  325. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Files.mpy +0 -0
  326. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  327. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  328. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  329. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Network.mpy +0 -0
  330. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  331. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  332. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  333. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Server.mpy +0 -0
  334. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  335. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Time.mpy +0 -0
  336. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Types.mpy +0 -0
  337. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/Web.mpy +0 -0
  338. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/_mpy.version +0 -0
  339. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  340. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  341. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/main.py +0 -0
  342. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  343. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  344. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  345. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  346. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  347. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  348. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  349. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  350. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  351. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  352. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  353. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  354. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  355. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
  356. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_VL53L0X.py +0 -0
  357. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  358. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  359. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  360. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  361. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  362. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
  363. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  364. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  365. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  366. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  367. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  368. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  369. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  370. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  371. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  372. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
  373. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  374. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  375. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
  376. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  377. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_mh_z19c.py +0 -0
  378. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  379. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  380. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  381. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  382. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  383. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  384. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
  385. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  386. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  387. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  388. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  389. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  390. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  391. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
  392. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  393. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
  394. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  395. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  396. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  397. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_tcs3472.py +0 -0
  398. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  399. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  400. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
  401. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  402. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  403. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  404. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
  405. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/editor.js +0 -0
  406. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/filesui.html +0 -0
  407. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/index.html +0 -0
  408. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  409. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
  410. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
  411. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
  412. {microsdevtoolkit-2.26.0 → microsdevtoolkit-2.26.2}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 2.26.0
3
+ Version: 2.26.2
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -628,12 +628,11 @@ Version **3.0.0-0** `micrOS-Autonomous`
628
628
  - mount pathes write access handlig
629
629
  - mount pathes read (+visibility) access handlig
630
630
 
631
- - (11) [TODO][CONCEPT] @Common.RequireSudo decorator
632
- - When node_config["auth"] == True
631
+ - (11) [DONE] @Auth.sudo decorator
633
632
  - Require pwd="<password>" parameter
634
633
  - Two modes:
635
634
  - Always require
636
- - Require when force=True (_when_force=True)
635
+ - Require when force=True (_force_only=(True, 0))
637
636
  - Apply this to:
638
637
  - pacman rm
639
638
  - pacman rmdir
@@ -590,12 +590,11 @@ Version **3.0.0-0** `micrOS-Autonomous`
590
590
  - mount pathes write access handlig
591
591
  - mount pathes read (+visibility) access handlig
592
592
 
593
- - (11) [TODO][CONCEPT] @Common.RequireSudo decorator
594
- - When node_config["auth"] == True
593
+ - (11) [DONE] @Auth.sudo decorator
595
594
  - Require pwd="<password>" parameter
596
595
  - Two modes:
597
596
  - Always require
598
- - Require when force=True (_when_force=True)
597
+ - Require when force=True (_force_only=(True, 0))
599
598
  - Apply this to:
600
599
  - pacman rm
601
600
  - pacman rmdir
@@ -1,5 +1,9 @@
1
1
  {
2
2
  "files": {
3
+ "Auth.py": [
4
+ 9.5,
5
+ 4
6
+ ],
3
7
  "Time.py": [
4
8
  9.34,
5
9
  5
@@ -17,7 +21,7 @@
17
21
  1
18
22
  ],
19
23
  "Hooks.py": [
20
- 9.62,
24
+ 9.63,
21
25
  1
22
26
  ],
23
27
  "Server.py": [
@@ -34,10 +38,10 @@
34
38
  ],
35
39
  "Config.py": [
36
40
  9.44,
37
- 16
41
+ 17
38
42
  ],
39
43
  "Shell.py": [
40
- 9.37,
44
+ 9.36,
41
45
  2
42
46
  ],
43
47
  "Notify.py": [
@@ -46,7 +50,7 @@
46
50
  ],
47
51
  "Types.py": [
48
52
  9.21,
49
- 29
53
+ 28
50
54
  ],
51
55
  "Logger.py": [
52
56
  8.84,
@@ -54,7 +58,7 @@
54
58
  ],
55
59
  "Common.py": [
56
60
  9.85,
57
- 34
61
+ 33
58
62
  ],
59
63
  "InterConnect.py": [
60
64
  9.63,
@@ -78,7 +82,7 @@
78
82
  ],
79
83
  "microIO.py": [
80
84
  9.35,
81
- 44
85
+ 43
82
86
  ],
83
87
  "micrOS.py": [
84
88
  9.3,
@@ -113,7 +117,7 @@
113
117
  0
114
118
  ],
115
119
  "modules/LM_pacman.py": [
116
- 7.7,
120
+ 7.68,
117
121
  0
118
122
  ],
119
123
  "modules/LM_web.py": [
@@ -133,7 +137,7 @@
133
137
  0
134
138
  ],
135
139
  "modules/LM_robustness.py": [
136
- 8.33,
140
+ 8.47,
137
141
  0
138
142
  ],
139
143
  "modules/LM_qmi8658.py": [
@@ -257,7 +261,7 @@
257
261
  0
258
262
  ],
259
263
  "modules/LM_OV2640.py": [
260
- 9.28,
264
+ 9.29,
261
265
  0
262
266
  ],
263
267
  "modules/LM_rgb.py": [
@@ -311,20 +315,16 @@
311
315
  "modules/LM_fileserver.py": [
312
316
  9.41,
313
317
  0
314
- ],
315
- "modules/LM_neomatrix.py": [
316
- 8.75,
317
- 0
318
318
  ]
319
319
  },
320
320
  "summary": {
321
321
  "core": [
322
- 4700,
323
- 25
322
+ 4734,
323
+ 26
324
324
  ],
325
325
  "load": [
326
- 9093,
327
- 54
326
+ 8777,
327
+ 53
328
328
  ],
329
329
  "core_dep": [
330
330
  true,
@@ -334,8 +334,8 @@
334
334
  true,
335
335
  3
336
336
  ],
337
- "core_score": 9.27,
338
- "load_score": 8.44,
339
- "version": "2.26.0-0"
337
+ "core_score": 9.28,
338
+ "load_score": 8.43,
339
+ "version": "2.26.1-0"
340
340
  }
341
341
  }
@@ -0,0 +1,63 @@
1
+ """
2
+ micrOS Load Module Authentication features
3
+ Designed by Marcell Ban aka BxNxM
4
+ """
5
+ from Config import cfgget as __cfgget
6
+ PWD_KEY = "pwd"
7
+
8
+ def sudo(_f=None, *, _when_true=None):
9
+ """
10
+ Decorator for password-protected functions.
11
+ his decorator can be used with or without arguments:
12
+ @sudo
13
+ def fn(...): ...
14
+
15
+ @sudo(_when_true=("flag", 0))
16
+ def fn(flag, ...): ...
17
+
18
+ :param _f: Internal use only.
19
+ The decorated function when the decorator is used without parentheses.
20
+ If None, the decorator is being configured and will return a wrapper.
21
+ :param _when_true: optional pwd check
22
+ - _when_true=None: always require pwd
23
+ - _when_true=(keyword:str, position:int): require pwd only when keyword/position is True
24
+ Password check:
25
+ - pwd is checked against node_config appwd value, and is not passed to the decorated function
26
+ """
27
+
28
+ def deco(f):
29
+ wt_kw = wt_idx = None
30
+ if _when_true is not None:
31
+ wt_kw, wt_idx = _when_true
32
+
33
+ def w(*a, **k):
34
+ # Decide if password is required
35
+ require = True
36
+ if wt_kw is not None or wt_idx is not None:
37
+ require = False
38
+ # Keyword-based condition
39
+ if wt_kw is not None and k.get(wt_kw, False):
40
+ require = True
41
+ # Positional-based condition
42
+ if wt_idx is not None and 0 <= wt_idx < len(a):
43
+ if a[wt_idx]:
44
+ require = True
45
+
46
+ # Password check
47
+ if require and k.get(PWD_KEY) != __cfgget("appwd"):
48
+ raise Exception("Access denied, wrong password ({})".format(PWD_KEY))
49
+ # Remove password before calling function
50
+ k.pop(PWD_KEY, None)
51
+ return f(*a, **k)
52
+ return w
53
+ return deco if _f is None else deco(_f)
54
+
55
+
56
+ def resolve_secret(commands:str):
57
+ """
58
+ Resolve secret: $pwd in boothook
59
+ """
60
+ placeholder = f"${PWD_KEY}"
61
+ if placeholder in commands:
62
+ commands = commands.replace(placeholder, f"'{__cfgget("appwd")}'")
63
+ return commands
@@ -21,6 +21,7 @@ from Config import cfgget, cfgput
21
21
  from microIO import detect_platform
22
22
  from Debug import console_write, syslog
23
23
  from Tasks import exec_lm_pipe
24
+ from Auth import resolve_secret
24
25
  from micropython import mem_info
25
26
  from machine import freq
26
27
  try:
@@ -46,7 +47,7 @@ def bootup():
46
47
  bootasks = cfgget('boothook')
47
48
  if bootasks is not None and bootasks.lower() != 'n/a':
48
49
  console_write(f"|-[BOOT] TASKS: {bootasks}")
49
- if exec_lm_pipe(bootasks):
50
+ if exec_lm_pipe(resolve_secret(bootasks)):
50
51
  console_write("|-[BOOT] DONE")
51
52
  else:
52
53
  console_write("|-[BOOT] ERROR")
@@ -25,7 +25,7 @@ from Debug import syslog
25
25
 
26
26
  class Shell:
27
27
  __slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
28
- MICROS_VERSION = '2.26.0-0'
28
+ MICROS_VERSION = '2.26.2-0'
29
29
 
30
30
  def __init__(self):
31
31
  """
@@ -72,8 +72,7 @@ class Shell:
72
72
  # Set user auth state
73
73
  if self.__auth_mode and not self.__auth_ok:
74
74
  # check password
75
- usrpwd = cfgget('appwd')
76
- if usrpwd == msg_list[0].strip():
75
+ if cfgget('appwd') == msg_list[0].strip():
77
76
  self.__auth_ok = True
78
77
  await self.a_send("AuthOk")
79
78
  return True, []
@@ -250,7 +250,7 @@ class WebEngine:
250
250
  resp_schema = {'result': {}, 'state': False}
251
251
  cmd = url.replace('/rest', '')
252
252
  if len(cmd) > 1:
253
- # REST sub-parameter handling (rest commands)
253
+ # REST sub-parameter handling (rest commands) TODO: create url_decode helper for: " ' >
254
254
  cmd = (cmd.replace('/', ' ').replace('-', ' ').replace("%3E", ">")
255
255
  .replace('%22', '"').replace('%E2%80%9C', '"').replace('%E2%80%9D', '"')
256
256
  .strip().split())
@@ -190,7 +190,8 @@ def photo(name='photo.jpeg'):
190
190
  # Create file name with time stamp
191
191
  photo_path = f"{path}/{ts}-{name}"
192
192
  # Take a Photo
193
- buf = capture()
193
+ _ = capture() # Dump current cached image
194
+ buf = capture() # Create new image
194
195
  # Save the Photo
195
196
  with open(photo_path, 'wb') as f:
196
197
  if buf:
@@ -200,7 +201,8 @@ def photo(name='photo.jpeg'):
200
201
 
201
202
 
202
203
  def _snapshot_clb():
203
- image = capture()
204
+ _ = capture() # Dump current cached image
205
+ image = capture() # Take new image
204
206
  if image is not None:
205
207
  return 'image/jpeg', image
206
208
  return 'text/plain', f'capture error: {image}'
@@ -9,6 +9,7 @@ from uos import stat, rename, mkdir, statvfs
9
9
  from Common import web_endpoint, web_mounts, web_dir, syslog
10
10
  from Files import path_join, is_dir, remove_dir, remove_file, OSPath, abs_path, ilist_fs
11
11
  from Web import url_path_resolve
12
+ from Auth import sudo
12
13
 
13
14
 
14
15
  class Shared:
@@ -174,13 +175,21 @@ def load(web_data_dir:str=None):
174
175
  base_dir = current_dir
175
176
 
176
177
  # Register endpoints
178
+ # [GET] List shared directories
177
179
  web_endpoint('fs/dirs', lambda: ('application/json', dumps(get_shared_dirs())))
180
+ # [GET] List help message
178
181
  web_endpoint('fs/list', lambda: ('text/plain', 'USE THIS AS POST Endpoint, select dir in http body'))
182
+ # [POST] List selected directory content
179
183
  web_endpoint('fs/list', _list_file_paths_clb, 'POST')
180
- web_endpoint('fs/files', lambda: ('text/plain', "USE THIS AS POST / DELETE Endpoint, select file in http body"))
184
+ # [GET] Files - list user files
185
+ web_endpoint('fs/files', _list_file_paths_clb)
186
+ # [DELETE] Files - delete selected file
181
187
  web_endpoint('fs/files', _delete_file_clb, 'DELETE')
188
+ # [POST] Upload file to the selected path (in filename)
182
189
  web_endpoint('fs/files', _upload_file_clb, 'POST')
190
+ # [GET] Show internal flash storage usage
183
191
  web_endpoint('fs/usage', _disk_usage_clb)
192
+ # [GET] Fileserver homepage UI
184
193
  web_endpoint('fs', 'filesui.html')
185
194
 
186
195
  return "Fileserver was initialized, endpoints: /fs, /fs/files, /fs/dirs, /fs/usage"
@@ -220,7 +229,7 @@ def get_user_dir():
220
229
  Getter for user configured shared dir
221
230
  - used by other load modules
222
231
  """
223
- return Shared.ROOT_DIR.replace(web_dir(), "")
232
+ return Shared.ROOT_DIR
224
233
 
225
234
 
226
235
  def extend_mounts(modules:bool=None, data:bool=None, logs:bool=None):
@@ -233,6 +242,7 @@ def extend_mounts(modules:bool=None, data:bool=None, logs:bool=None):
233
242
  return web_mounts(modules, data, logs)
234
243
 
235
244
 
245
+ @sudo
236
246
  def mounts_write_access(modules:bool=None, data:bool=None, logs:bool=None):
237
247
  if modules is not None:
238
248
  Shared.MOUNTS_WRITE_ACCESS["$modules"] = modules
@@ -1,6 +1,7 @@
1
1
  from sys import modules
2
2
  from Common import socket_stream
3
3
  from Files import list_fs, ilist_fs, remove_file, remove_dir, OSPath, path_join, is_protected
4
+ from Auth import sudo
4
5
 
5
6
 
6
7
  #############################################
@@ -31,6 +32,7 @@ def ls(path="/", content='*', raw=False, select='*', core=False):
31
32
  return lines
32
33
 
33
34
 
35
+ @sudo(_when_true=("force", 1))
34
36
  def rm(path, force=False):
35
37
  """
36
38
  Linux like rm command - delete app resources and folders
@@ -40,6 +42,7 @@ def rm(path, force=False):
40
42
  return remove_file(path, force)
41
43
 
42
44
 
45
+ @sudo(_when_true=("force", 1))
43
46
  def rmdir(path, force=False):
44
47
  """
45
48
  Linux like rmdir command for directory deletion
@@ -75,13 +78,6 @@ def cat(path):
75
78
  return content
76
79
 
77
80
 
78
- def download(ref=None):
79
- """
80
- OBSOLETED interface
81
- """
82
- return install(ref)
83
-
84
-
85
81
  def install(ref=None):
86
82
  """
87
83
  Unified mip-based installer for micrOS.
@@ -104,6 +100,7 @@ def install(ref=None):
104
100
  return pm_install(ref)
105
101
 
106
102
 
103
+ @sudo
107
104
  def uninstall(name=None):
108
105
  """
109
106
  Delete package by name from /lib
@@ -267,6 +264,7 @@ def listmods(msgobj=None):
267
264
  return msg_buf if len(msg_buf) > 0 else ''
268
265
 
269
266
 
267
+ @sudo
270
268
  def delmod(mod):
271
269
  """
272
270
  Module package manager
@@ -1,5 +1,6 @@
1
1
  from LM_system import memory_usage
2
2
  from Common import socket_stream, syslog, micro_task
3
+ from Auth import sudo
3
4
 
4
5
 
5
6
  @socket_stream
@@ -105,6 +106,22 @@ async def mytask(tag, period_ms=30):
105
106
  await my_task.feed(sleep_ms=period_ms)
106
107
  # [i] feed same as "await asyncio.sleep_ms(period_ms)" with micrOS features (WDT)
107
108
 
109
+
110
+ @sudo
111
+ def func_sudo():
112
+ """
113
+ Function execution requires pwd=<...>
114
+ """
115
+ return "Access granted"
116
+
117
+
118
+ @sudo(_when_true=("opt", 0))
119
+ def func_sudo_opt(opt=False):
120
+ """
121
+ Function requires pwd=<...> when force=True
122
+ """
123
+ return f"Access granted, opt flag: {opt}"
124
+
108
125
  ##############################################################################
109
126
 
110
127
  def help(widgets=False):
@@ -116,5 +133,5 @@ def help(widgets=False):
116
133
  """
117
134
  return 'NOTE: This is a test module to validate system robustness', \
118
135
  'raise_error', 'memory_leak cnt=160', 'recursion_limit cnt=14', \
119
- 'create_task', 'mytask'
136
+ 'create_task', 'mytask', "func_sudo", "func_sudo_opt opt=False"
120
137
 
@@ -76,34 +76,46 @@ function loadFiles() {
76
76
  })
77
77
  .then(r => r.json())
78
78
  .then(files => {
79
- list.innerHTML = '';
80
- clearSelection();
81
-
82
- files.forEach(f => {
83
- const name = f.path.split('/').pop();
84
- const d = document.createElement('div');
85
- d.className = 'file-item';
86
- d.textContent = `${name} ${f.size}B`;
87
-
88
- d.onclick = (e) => {
89
- e.stopPropagation();
90
-
91
- if (selectedEl === d) {
92
- clearSelection();
93
- return;
94
- }
95
-
96
- clearSelection();
97
- d.className = 'file-item sel';
98
- selected = name;
99
- selectedEl = d;
100
- };
101
-
102
- list.appendChild(d);
103
- });
104
-
105
- console.info("Files loaded");
106
- })
79
+ list.innerHTML = '';
80
+ clearSelection();
81
+ // 🔹 Empty folder placeholder
82
+ if (!Array.isArray(files) || files.length === 0) {
83
+ const d = document.createElement('div');
84
+ d.className = 'file-item placeholder';
85
+ d.textContent = '.empty';
86
+ d.style.opacity = '0.5';
87
+ d.style.pointerEvents = 'none'; // 🔹 non-clickable
88
+ list.appendChild(d);
89
+
90
+ console.info("Files loaded (empty folder)");
91
+ return;
92
+ }
93
+ // 🔹 Files listing
94
+ files.forEach(f => {
95
+ const name = f.path.split('/').pop();
96
+ const d = document.createElement('div');
97
+ d.className = 'file-item';
98
+ d.textContent = `${name} ${f.size}B`;
99
+
100
+ d.onclick = (e) => {
101
+ e.stopPropagation();
102
+
103
+ if (selectedEl === d) {
104
+ clearSelection();
105
+ return;
106
+ }
107
+
108
+ clearSelection();
109
+ d.className = 'file-item sel';
110
+ selected = name;
111
+ selectedEl = d;
112
+ };
113
+
114
+ list.appendChild(d);
115
+ });
116
+
117
+ console.info("Files loaded");
118
+ })
107
119
  .catch(err => {
108
120
  console.error("load failed:", err);
109
121
  popUpMsg("Failed to load files: " + err.message);
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 2.26.0
3
+ Version: 2.26.2
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -628,12 +628,11 @@ Version **3.0.0-0** `micrOS-Autonomous`
628
628
  - mount pathes write access handlig
629
629
  - mount pathes read (+visibility) access handlig
630
630
 
631
- - (11) [TODO][CONCEPT] @Common.RequireSudo decorator
632
- - When node_config["auth"] == True
631
+ - (11) [DONE] @Auth.sudo decorator
633
632
  - Require pwd="<password>" parameter
634
633
  - Two modes:
635
634
  - Always require
636
- - Require when force=True (_when_force=True)
635
+ - Require when force=True (_force_only=(True, 0))
637
636
  - Apply this to:
638
637
  - pacman rm
639
638
  - pacman rmdir
@@ -38,6 +38,7 @@ micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2
38
38
  micrOS/micropython/tinypico-20251209-v1.27.0.bin
39
39
  micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json
40
40
  micrOS/source/.DS_Store
41
+ micrOS/source/Auth.py
41
42
  micrOS/source/Common.py
42
43
  micrOS/source/Config.py
43
44
  micrOS/source/Debug.py
@@ -80,7 +81,6 @@ micrOS/source/modules/IO_esp32s3.py
80
81
  micrOS/source/modules/IO_m5stamp.py
81
82
  micrOS/source/modules/IO_qtpy.py
82
83
  micrOS/source/modules/IO_rp2.py
83
- micrOS/source/modules/IO_s3matrix.py
84
84
  micrOS/source/modules/IO_tinypico.py
85
85
  micrOS/source/modules/LM_L298N.py
86
86
  micrOS/source/modules/LM_L9110_DCmotor.py
@@ -109,7 +109,6 @@ micrOS/source/modules/LM_ld2410.py
109
109
  micrOS/source/modules/LM_light_sensor.py
110
110
  micrOS/source/modules/LM_mh_z19c.py
111
111
  micrOS/source/modules/LM_neoeffects.py
112
- micrOS/source/modules/LM_neomatrix.py
113
112
  micrOS/source/modules/LM_neopixel.py
114
113
  micrOS/source/modules/LM_oled.py
115
114
  micrOS/source/modules/LM_oled_sh1106.py
@@ -141,7 +140,6 @@ micrOS/source/web/editor.js
141
140
  micrOS/source/web/filesui.html
142
141
  micrOS/source/web/filesui.js
143
142
  micrOS/source/web/index.html
144
- micrOS/source/web/matrix_draw.html
145
143
  micrOS/source/web/uapi.js
146
144
  micrOS/source/web/udashboard.js
147
145
  micrOS/source/web/ustyle.css
@@ -300,6 +298,7 @@ toolkit/user_data/webhooks/macro.py
300
298
  toolkit/user_data/webhooks/template.macro
301
299
  toolkit/user_data/webhooks/template.py
302
300
  toolkit/workspace/__init__.py
301
+ toolkit/workspace/precompiled/Auth.mpy
303
302
  toolkit/workspace/precompiled/Common.mpy
304
303
  toolkit/workspace/precompiled/Config.mpy
305
304
  toolkit/workspace/precompiled/Debug.mpy
@@ -335,7 +334,6 @@ toolkit/workspace/precompiled/modules/IO_esp32s3.mpy
335
334
  toolkit/workspace/precompiled/modules/IO_m5stamp.mpy
336
335
  toolkit/workspace/precompiled/modules/IO_qtpy.mpy
337
336
  toolkit/workspace/precompiled/modules/IO_rp2.mpy
338
- toolkit/workspace/precompiled/modules/IO_s3matrix.mpy
339
337
  toolkit/workspace/precompiled/modules/IO_tinypico.mpy
340
338
  toolkit/workspace/precompiled/modules/LM_L298N.mpy
341
339
  toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py
@@ -364,7 +362,6 @@ toolkit/workspace/precompiled/modules/LM_ld2410.mpy
364
362
  toolkit/workspace/precompiled/modules/LM_light_sensor.mpy
365
363
  toolkit/workspace/precompiled/modules/LM_mh_z19c.py
366
364
  toolkit/workspace/precompiled/modules/LM_neoeffects.mpy
367
- toolkit/workspace/precompiled/modules/LM_neomatrix.mpy
368
365
  toolkit/workspace/precompiled/modules/LM_neopixel.mpy
369
366
  toolkit/workspace/precompiled/modules/LM_oled.mpy
370
367
  toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy
@@ -396,7 +393,6 @@ toolkit/workspace/precompiled/web/editor.js
396
393
  toolkit/workspace/precompiled/web/filesui.html
397
394
  toolkit/workspace/precompiled/web/filesui.js
398
395
  toolkit/workspace/precompiled/web/index.html
399
- toolkit/workspace/precompiled/web/matrix_draw.html
400
396
  toolkit/workspace/precompiled/web/uapi.js
401
397
  toolkit/workspace/precompiled/web/udashboard.js
402
398
  toolkit/workspace/precompiled/web/ustyle.css
@@ -17,7 +17,7 @@ dependencies = ['adafruit-ampy', 'mpremote', 'esptool', 'ipaddress', 'netaddr',
17
17
 
18
18
  setuptools.setup(
19
19
  name='micrOSDevToolKit',
20
- version='2.26.0',
20
+ version='2.26.2',
21
21
  author='Marcell Ban',
22
22
  author_email='miros.framework@gmail.com',
23
23
  description='Development and deployment environment for micrOS, the diy micropython automation OS (IoT)',
@@ -18,7 +18,7 @@ MICROS_SOURCE_DIR = os.path.join(MYPATH, '../micrOS/source')
18
18
  RELEASE_INFO_PATH = os.path.join(MYPATH, '../micrOS/release_info/micrOS_ReleaseInfo')
19
19
 
20
20
  # MICROS LINTER CONFIG
21
- ALLOWED_LM_DEP_WARNS = 5 # ALLOWED NUMBER OF LM CORE DEPENDENCY (less is better)
21
+ ALLOWED_LM_DEP_WARNS = 3 # ALLOWED NUMBER OF LM CORE DEPENDENCY (less is better)
22
22
 
23
23
  def parse_micros_file_categories(verbose=True):
24
24
  """
@@ -178,7 +178,7 @@ def core_dep_checker(categories, verbose=True):
178
178
  def load_module_checker(categories, verbose=True):
179
179
 
180
180
  def _is_allowed(_relation):
181
- _allowed_whitelist = ['Common', 'microIO', 'Types', 'urequests']
181
+ _allowed_whitelist = ['Common', 'microIO', 'Types', 'urequests', 'Auth']
182
182
  _allowed = []
183
183
  for _allow in _relation:
184
184
  if _allow in _allowed_whitelist:
@@ -0,0 +1,6 @@
1
+ {"auth": false,
2
+ "devfid": "simulator",
3
+ "appwd": "ADmin123",
4
+ "webui": true,
5
+ "boothook": "web load dashboard=True fileserver=True fs_explore=True; fileserver mounts_write_access modules=True logs=True pwd=$pwd; neopixel load; #telegram load '6185435843:AAH71wEyoOil8bRKecQHp4zazTQ_MmE7bvE' &; #telegram receiver_loop &2000",
6
+ "aioqueue": 4}