ekfsm 0.11.0b1.post3__tar.gz → 0.12.0.post1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ekfsm might be problematic. Click here for more details.

Files changed (151) hide show
  1. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/PKG-INFO +1 -1
  2. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/devenv.lock +2 -2
  3. ekfsm-0.12.0.post1/docs/requirements.txt +379 -0
  4. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards/ekf/ccu.rst +6 -1
  5. ekfsm-0.12.0.post1/docs/source/boards/ekf/sq3-quartet.rst +8 -0
  6. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/reference/ekfsm.rst +1 -0
  7. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/ccu.yaml +2 -0
  8. ekfsm-0.12.0.post1/ekfsm/boards/oem/ekf/sq3-quartet.yaml +41 -0
  9. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/core/components.py +5 -2
  10. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/ekf_ccu_uc.py +66 -0
  11. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/gpio.py +1 -0
  12. ekfsm-0.12.0.post1/ekfsm/devices/imu.py +14 -0
  13. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/pyproject.toml +2 -2
  14. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/zip2-smoke.yaml +6 -0
  15. ekfsm-0.12.0.post1/tests/zip2_ccu_exp.py +46 -0
  16. ekfsm-0.12.0.post1/tests/zip2_ccu_imu.py +26 -0
  17. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/zip2_smoke.py +16 -8
  18. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/uv.lock +69 -64
  19. ekfsm-0.11.0b1.post3/docs/requirements.txt +0 -282
  20. ekfsm-0.11.0b1.post3/tests/zip2_ccu_exp.py +0 -46
  21. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.env +0 -0
  22. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.envrc +0 -0
  23. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.flake8 +0 -0
  24. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.gitignore +0 -0
  25. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.gitlab-ci.yml +0 -0
  26. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.readthedocs.yaml +0 -0
  27. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.vscode/launch.json +0 -0
  28. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/.vscode/settings.json +0 -0
  29. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/LICENSE.md +0 -0
  30. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/README.md +0 -0
  31. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/devenv.nix +0 -0
  32. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/devenv.yaml +0 -0
  33. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/.gitignore +0 -0
  34. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/Makefile +0 -0
  35. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/_static/devices.drawio.png +0 -0
  36. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/_static/devices.drawio.svg +0 -0
  37. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/_static/ekfsm_system.drawio.png +0 -0
  38. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/_static/ekfsm_system.drawio.svg +0 -0
  39. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards/ekf/sc9-toccata.rst +0 -0
  40. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards/ekf/snippets/cpci_inventory.rst +0 -0
  41. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards/ekf/spv-mystic.rst +0 -0
  42. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards/ekf/sq1-track.rst +0 -0
  43. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards/ekf/sur-uart.rst +0 -0
  44. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/boards.rst +0 -0
  45. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/conf.py +0 -0
  46. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/index.rst +0 -0
  47. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/intro.rst +0 -0
  48. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/reference/index.rst +0 -0
  49. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/docs/source/reference/systemconfig.rst +0 -0
  50. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/__init__.py +0 -0
  51. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/sc5-festival.yaml +0 -0
  52. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/sc9-toccata.yaml +0 -0
  53. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/spv-mystic.yaml +0 -0
  54. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/sq1-track.yaml +0 -0
  55. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/srf-fan.yaml +0 -0
  56. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/ekf/sur-uart.yaml +0 -0
  57. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/boards/oem/hitron/hdrc-300.yaml +0 -0
  58. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/cli.py +0 -0
  59. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/config.py +0 -0
  60. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/core/__init__.py +0 -0
  61. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/core/probe.py +0 -0
  62. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/core/slots.py +0 -0
  63. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/core/sysfs.py +0 -0
  64. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/core/utils.py +0 -0
  65. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/__init__.py +0 -0
  66. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/eeprom.py +0 -0
  67. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/ekf_sur_led.py +0 -0
  68. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/generic.py +0 -0
  69. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/hwmon.py +0 -0
  70. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/iio.py +0 -0
  71. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/iio_thermal_humidity.py +0 -0
  72. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/mux.py +0 -0
  73. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/pmbus.py +0 -0
  74. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/smbios.py +0 -0
  75. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/devices/utils.py +0 -0
  76. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/exceptions.py +0 -0
  77. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/log.py +0 -0
  78. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/py.typed +0 -0
  79. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/simctrl.py +0 -0
  80. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/ekfsm/system.py +0 -0
  81. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/hack/bringup_zip_i2c_devs.sh +0 -0
  82. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/scripts/modify-acpi-table.sh +0 -0
  83. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/__init__.py +0 -0
  84. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/basic_sim.py +0 -0
  85. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/ccu-test.py +0 -0
  86. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/ccu_wokwi_sim.py +0 -0
  87. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/run.py +0 -0
  88. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/__init__.py +0 -0
  89. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/firmware_node/adr +0 -0
  90. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/name +0 -0
  91. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-10/new_device +0 -0
  92. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/firmware_node/adr +0 -0
  93. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/name +0 -0
  94. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-11/new_device +0 -0
  95. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/firmware_node/adr +0 -0
  96. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/name +0 -0
  97. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-12/new_device +0 -0
  98. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/firmware_node/adr +0 -0
  99. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/firmware_node/description +0 -0
  100. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/gpiochip1/dev +0 -0
  101. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:01/name +0 -0
  102. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/eeprom +0 -0
  103. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/firmware_node/description +0 -0
  104. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/i2c-PRP0002:02/name +0 -0
  105. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/name +0 -0
  106. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-14/new_device +0 -0
  107. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/firmware_node/adr +0 -0
  108. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/name +0 -0
  109. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-15/new_device +0 -0
  110. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/firmware_node/adr +0 -0
  111. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/name +0 -0
  112. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-16/new_device +0 -0
  113. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/firmware_node/adr +0 -0
  114. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/name +0 -0
  115. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-17/new_device +0 -0
  116. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/firmware_node/adr +0 -0
  117. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/firmware_node/description +0 -0
  118. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/gpiochip1/dev +0 -0
  119. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:01/name +0 -0
  120. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/eeprom +0 -0
  121. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/firmware_node/description +0 -0
  122. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/i2c-PRP0001:02/name +0 -0
  123. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/name +0 -0
  124. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-9/new_device +0 -0
  125. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/firmware_node/description +0 -0
  126. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:00/name +0 -0
  127. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/firmware_node/description +0 -0
  128. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr1_input +0 -0
  129. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/curr2_input +0 -0
  130. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in1_input +0 -0
  131. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/in2_input +0 -0
  132. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/model +0 -0
  133. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/revision +0 -0
  134. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/serial +0 -0
  135. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/hwmon/hwmon99/vendor +0 -0
  136. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0001:03/name +0 -0
  137. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/firmware_node/description +0 -0
  138. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/i2c-PRP0002:00/name +0 -0
  139. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.2/i2c-1/new_device +0 -0
  140. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/eeprom +0 -0
  141. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/sys/devices/pci0000:00/0000:00:1f.4/i2c-7/7-0057/name +0 -0
  142. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/test_system.yaml +0 -0
  143. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/sim/test_system_inconsistent.yaml +0 -0
  144. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/srf-fan-test.py +0 -0
  145. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/srf-fan-test.yaml +0 -0
  146. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/test_config.py +0 -0
  147. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/test_sim-ccu-eeprom.py +0 -0
  148. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/test_sim1.py +0 -0
  149. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/test_sim2.py +0 -0
  150. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/testdata/cfg_simple.yaml +0 -0
  151. {ekfsm-0.11.0b1.post3 → ekfsm-0.12.0.post1}/tests/zip2-ccu-only.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ekfsm
3
- Version: 0.11.0b1.post3
3
+ Version: 0.12.0.post1
4
4
  Summary: The EKF System Management Library (ekfsm) is a sensor monitoring suite for Compact PCI Serial devices.
5
5
  Author-email: Klaus Popp <klaus.popp@ci4rail.com>, Jan Jansen <jan@ekf.de>, Felix Päßler <fp@ekf.de>
6
6
  Requires-Python: >=3.10
@@ -3,10 +3,10 @@
3
3
  "devenv": {
4
4
  "locked": {
5
5
  "dir": "src/modules",
6
- "lastModified": 1740575096,
6
+ "lastModified": 1740649578,
7
7
  "owner": "cachix",
8
8
  "repo": "devenv",
9
- "rev": "4000b0153c6f54a57368c0b066aaa0024450618c",
9
+ "rev": "6344ff303b0098afae94b28df8dc1b9b7ac1e227",
10
10
  "type": "github"
11
11
  },
12
12
  "original": {
@@ -0,0 +1,379 @@
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv export
3
+ -e .
4
+ alabaster==1.0.0 \
5
+ --hash=sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e \
6
+ --hash=sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b
7
+ anytree==2.12.1 \
8
+ --hash=sha256:244def434ccf31b668ed282954e5d315b4e066c4940b94aff4a7962d85947830 \
9
+ --hash=sha256:5ea9e61caf96db1e5b3d0a914378d2cd83c269dfce1fb8242ce96589fa3382f0
10
+ babel==2.17.0 \
11
+ --hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \
12
+ --hash=sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2
13
+ basedpyright==1.28.0 \
14
+ --hash=sha256:d321b4866975c85dd30fb5f976cabde771065cccfc0307bdc95caaeefe2e5b97 \
15
+ --hash=sha256:1ccd73a9925b45ff567ce597605e77a01dee7450e0bed4510da3222eb5020329
16
+ black==25.1.0 \
17
+ --hash=sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666 \
18
+ --hash=sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32 \
19
+ --hash=sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da \
20
+ --hash=sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7 \
21
+ --hash=sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9 \
22
+ --hash=sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0 \
23
+ --hash=sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299 \
24
+ --hash=sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096 \
25
+ --hash=sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2 \
26
+ --hash=sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b \
27
+ --hash=sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc \
28
+ --hash=sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f \
29
+ --hash=sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba \
30
+ --hash=sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f \
31
+ --hash=sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3 \
32
+ --hash=sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171 \
33
+ --hash=sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18 \
34
+ --hash=sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717
35
+ certifi==2025.1.31 \
36
+ --hash=sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651 \
37
+ --hash=sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe
38
+ charset-normalizer==3.4.1 \
39
+ --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \
40
+ --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \
41
+ --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \
42
+ --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \
43
+ --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \
44
+ --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \
45
+ --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \
46
+ --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \
47
+ --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \
48
+ --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \
49
+ --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \
50
+ --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \
51
+ --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \
52
+ --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \
53
+ --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \
54
+ --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \
55
+ --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \
56
+ --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \
57
+ --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \
58
+ --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \
59
+ --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \
60
+ --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \
61
+ --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \
62
+ --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \
63
+ --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \
64
+ --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \
65
+ --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \
66
+ --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \
67
+ --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \
68
+ --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \
69
+ --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \
70
+ --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \
71
+ --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616 \
72
+ --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \
73
+ --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \
74
+ --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \
75
+ --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \
76
+ --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \
77
+ --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \
78
+ --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \
79
+ --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \
80
+ --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \
81
+ --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \
82
+ --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \
83
+ --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \
84
+ --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \
85
+ --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \
86
+ --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \
87
+ --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \
88
+ --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \
89
+ --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \
90
+ --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \
91
+ --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \
92
+ --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85
93
+ click==8.1.8 \
94
+ --hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a \
95
+ --hash=sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2
96
+ colorama==0.4.6 ; sys_platform == 'win32' or platform_system == 'Windows' \
97
+ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
98
+ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
99
+ crcmod==1.7 \
100
+ --hash=sha256:dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e
101
+ docutils==0.21.2 \
102
+ --hash=sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f \
103
+ --hash=sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2
104
+ exceptiongroup==1.2.2 ; python_full_version < '3.11' \
105
+ --hash=sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc \
106
+ --hash=sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b
107
+ gpiod==2.3.0 \
108
+ --hash=sha256:daa840ed5b691e7078a9cf21c79fe813b9a91c3ed0bdbafae0181c7b98b80300 \
109
+ --hash=sha256:31bf55730069830f1b58f5301149d83ad78caf4ef9a2ca5c6350111dbe24e356 \
110
+ --hash=sha256:a33f6520e848d17d1405b9a898b4a1f8db2c367446f1fe1337eedc4da42fc58c \
111
+ --hash=sha256:78aaad927dcd66d59ed6141ab3c57b03afa3e9e1118c6713c5196f460b561c7c \
112
+ --hash=sha256:5ec70e71ff7232abed94444ec3dce76a089af6449980d32116210e8e45b4142b \
113
+ --hash=sha256:8c6e39522d1e1038ac3d3ef41cd7a8e5d69b58ecfcf35fbf4510a4ba3904e63f \
114
+ --hash=sha256:8bac91d79b69ac2fe2f05c8e6615b987142eb9fa9f856a30bf68e97e891d5b1b \
115
+ --hash=sha256:af326d54819fa5e6266b61fb96798e775659a5438c2b599943b7ecdf2e327ec2 \
116
+ --hash=sha256:b37fe1fed6a0b322d1a9f7468b3e0af968a617eaeead028c9707279732282735 \
117
+ --hash=sha256:9c6b680b27092daa5fc9bad651329fd2195c9bc78d9956c40e8b6d1c73927397 \
118
+ --hash=sha256:d7f34b8594d40b95ffb0c28f798fd44c38bf5199d56c6fd6d578d5ba106018f7 \
119
+ --hash=sha256:6f828513d456ed0ca4f9d5e2c02ca6337cd2b4e0934e1dc22c5398b8ab90fbe1 \
120
+ --hash=sha256:40bb477f09bad2d716e7b04405c8b3156f2bc009d235cc2f576a86cee7de2f74 \
121
+ --hash=sha256:7fdc3f63a277f8ae193f0c9b565bbd48e525e94c39cd463acd7b06250bf26507 \
122
+ --hash=sha256:660b613e5b88a9376fae85197b66e04e2381e04c98e234c3d3f70d567b52ee18 \
123
+ --hash=sha256:626808ec493f954edfe4b8860842fd9fbbdcdc65209c6efdb02e81acd6b9afdc \
124
+ --hash=sha256:5b82d05e86c72f11de32bef0abee76192c7fb60a216470c76e822bb5c207fc9b
125
+ hexdump==3.3 \
126
+ --hash=sha256:d781a43b0c16ace3f9366aade73e8ad3a7bd5137d58f0b45ab2d3f54876f20db
127
+ idna==3.10 \
128
+ --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
129
+ --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
130
+ imagesize==1.4.1 \
131
+ --hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a \
132
+ --hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b
133
+ iniconfig==2.0.0 \
134
+ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
135
+ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
136
+ jinja2==3.1.5 \
137
+ --hash=sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb \
138
+ --hash=sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
139
+ markupsafe==3.0.2 \
140
+ --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \
141
+ --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \
142
+ --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \
143
+ --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \
144
+ --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \
145
+ --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \
146
+ --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \
147
+ --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \
148
+ --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \
149
+ --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 \
150
+ --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \
151
+ --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \
152
+ --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \
153
+ --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \
154
+ --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \
155
+ --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \
156
+ --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \
157
+ --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \
158
+ --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \
159
+ --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \
160
+ --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \
161
+ --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \
162
+ --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \
163
+ --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \
164
+ --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \
165
+ --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \
166
+ --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \
167
+ --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \
168
+ --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \
169
+ --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \
170
+ --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \
171
+ --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \
172
+ --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \
173
+ --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \
174
+ --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \
175
+ --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \
176
+ --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \
177
+ --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \
178
+ --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \
179
+ --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \
180
+ --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \
181
+ --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \
182
+ --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \
183
+ --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \
184
+ --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \
185
+ --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \
186
+ --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \
187
+ --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \
188
+ --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \
189
+ --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \
190
+ --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f
191
+ more-itertools==10.6.0 \
192
+ --hash=sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b \
193
+ --hash=sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89
194
+ munch==4.0.0 \
195
+ --hash=sha256:542cb151461263216a4e37c3fd9afc425feeaf38aaa3025cd2a981fadb422235 \
196
+ --hash=sha256:71033c45db9fb677a0b7eb517a4ce70ae09258490e419b0e7f00d1e386ecb1b4
197
+ mypy==1.15.0 \
198
+ --hash=sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43 \
199
+ --hash=sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13 \
200
+ --hash=sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559 \
201
+ --hash=sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b \
202
+ --hash=sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3 \
203
+ --hash=sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b \
204
+ --hash=sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828 \
205
+ --hash=sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f \
206
+ --hash=sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5 \
207
+ --hash=sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e \
208
+ --hash=sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c \
209
+ --hash=sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f \
210
+ --hash=sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f \
211
+ --hash=sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd \
212
+ --hash=sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f \
213
+ --hash=sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464 \
214
+ --hash=sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee \
215
+ --hash=sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e \
216
+ --hash=sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22 \
217
+ --hash=sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445 \
218
+ --hash=sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d \
219
+ --hash=sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5 \
220
+ --hash=sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036 \
221
+ --hash=sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357 \
222
+ --hash=sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf \
223
+ --hash=sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e
224
+ mypy-extensions==1.0.0 \
225
+ --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 \
226
+ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d
227
+ nodejs-wheel-binaries==22.14.0 \
228
+ --hash=sha256:c1dc43713598c7310d53795c764beead861b8c5021fe4b1366cb912ce1a4c8bf \
229
+ --hash=sha256:d8ab8690516a3e98458041286e3f0d6458de176d15c14f205c3ea2972131420d \
230
+ --hash=sha256:b2f200f23b3610bdbee01cf136279e005ffdf8ee74557aa46c0940a7867956f6 \
231
+ --hash=sha256:d0877832abd7a9c75c8c5caafa37f986c9341ee025043c2771213d70c4c1defa \
232
+ --hash=sha256:8fded5a70a8a55c2135e67bd580d8b7f2e94fcbafcc679b6a2d5b92f88373d69 \
233
+ --hash=sha256:c1ade6f3ece458b40c02e89c91d5103792a9f18aaad5026da533eb0dcb87090e \
234
+ --hash=sha256:34fa5ed4cf3f65cbfbe9b45c407ffc2fc7d97a06cd8993e6162191ff81f29f48 \
235
+ --hash=sha256:ca7023276327455988b81390fa6bbfa5191c1da7fc45bc57c7abc281ba9967e9 \
236
+ --hash=sha256:fd59c8e9a202221e316febe1624a1ae3b42775b7fb27737bf12ec79565983eaf
237
+ packaging==24.2 \
238
+ --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f \
239
+ --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759
240
+ pathspec==0.12.1 \
241
+ --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 \
242
+ --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08
243
+ platformdirs==4.3.6 \
244
+ --hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
245
+ --hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
246
+ pluggy==1.5.0 \
247
+ --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \
248
+ --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669
249
+ pygments==2.19.1 \
250
+ --hash=sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f \
251
+ --hash=sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c
252
+ pytest==8.3.4 \
253
+ --hash=sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761 \
254
+ --hash=sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6
255
+ pyyaml==6.0.2 \
256
+ --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \
257
+ --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \
258
+ --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \
259
+ --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \
260
+ --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \
261
+ --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \
262
+ --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \
263
+ --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \
264
+ --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \
265
+ --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \
266
+ --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \
267
+ --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \
268
+ --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \
269
+ --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \
270
+ --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \
271
+ --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 \
272
+ --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \
273
+ --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \
274
+ --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \
275
+ --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \
276
+ --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \
277
+ --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \
278
+ --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \
279
+ --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \
280
+ --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \
281
+ --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \
282
+ --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \
283
+ --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \
284
+ --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \
285
+ --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \
286
+ --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \
287
+ --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \
288
+ --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \
289
+ --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \
290
+ --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \
291
+ --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \
292
+ --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563
293
+ requests==2.32.3 \
294
+ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
295
+ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
296
+ six==1.17.0 \
297
+ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 \
298
+ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274
299
+ smbus2==0.5.0 \
300
+ --hash=sha256:4a5946fd82277870c2878befdb1a29bb28d15cda14ea4d8d2d54cf3d4bdcb035 \
301
+ --hash=sha256:1a15c3b9fa69357beb038cc0b5d37939702f8bfde1ddc89ca9f17d8461dbe949
302
+ snowballstemmer==2.2.0 \
303
+ --hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \
304
+ --hash=sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a
305
+ sphinx==8.1.3 \
306
+ --hash=sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927 \
307
+ --hash=sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2
308
+ sphinx-autodoc-typehints==3.0.1 \
309
+ --hash=sha256:b9b40dd15dee54f6f810c924f863f9cf1c54f9f3265c495140ea01be7f44fa55 \
310
+ --hash=sha256:4b64b676a14b5b79cefb6628a6dc8070e320d4963e8ff640a2f3e9390ae9045a
311
+ sphinx-rtd-theme==3.0.2 \
312
+ --hash=sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85 \
313
+ --hash=sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13
314
+ sphinxcontrib-applehelp==2.0.0 \
315
+ --hash=sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1 \
316
+ --hash=sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5
317
+ sphinxcontrib-devhelp==2.0.0 \
318
+ --hash=sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad \
319
+ --hash=sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2
320
+ sphinxcontrib-htmlhelp==2.1.0 \
321
+ --hash=sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9 \
322
+ --hash=sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8
323
+ sphinxcontrib-jquery==4.1 \
324
+ --hash=sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a \
325
+ --hash=sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae
326
+ sphinxcontrib-jsmath==1.0.1 \
327
+ --hash=sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8 \
328
+ --hash=sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178
329
+ sphinxcontrib-qthelp==2.0.0 \
330
+ --hash=sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab \
331
+ --hash=sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb
332
+ sphinxcontrib-serializinghtml==2.0.0 \
333
+ --hash=sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d \
334
+ --hash=sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331
335
+ tomli==2.2.1 ; python_full_version < '3.11' \
336
+ --hash=sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff \
337
+ --hash=sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249 \
338
+ --hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \
339
+ --hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \
340
+ --hash=sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee \
341
+ --hash=sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e \
342
+ --hash=sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4 \
343
+ --hash=sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106 \
344
+ --hash=sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8 \
345
+ --hash=sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff \
346
+ --hash=sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b \
347
+ --hash=sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea \
348
+ --hash=sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8 \
349
+ --hash=sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192 \
350
+ --hash=sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222 \
351
+ --hash=sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77 \
352
+ --hash=sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6 \
353
+ --hash=sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd \
354
+ --hash=sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e \
355
+ --hash=sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98 \
356
+ --hash=sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4 \
357
+ --hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7 \
358
+ --hash=sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c \
359
+ --hash=sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13 \
360
+ --hash=sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281 \
361
+ --hash=sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272 \
362
+ --hash=sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140 \
363
+ --hash=sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2 \
364
+ --hash=sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744 \
365
+ --hash=sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec \
366
+ --hash=sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69 \
367
+ --hash=sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc
368
+ types-pyyaml==6.0.12.20241230 \
369
+ --hash=sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c \
370
+ --hash=sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6
371
+ typing-extensions==4.12.2 \
372
+ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 \
373
+ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d
374
+ urllib3==2.3.0 \
375
+ --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d \
376
+ --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df
377
+ yamale==6.0.0 \
378
+ --hash=sha256:60be681f35e4939320b89de0d6f187ee0e5479ae7f7286b7f17f0859ddee4a66 \
379
+ --hash=sha256:828c6cf2023101ec97d2759dfdc507e04ecfc0c6d39d500c00c37ec895ada53b
@@ -92,7 +92,12 @@ Fan Controller (Object: `fan`)
92
92
 
93
93
  Inertial Measurement Unit (Object: `imu`)
94
94
  =========================================
95
- TODO:
95
+
96
+ +-------------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
97
+ | Method | Description | Example Value |
98
+ +-------------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
99
+ | :meth:`~ekfsm.devices.ekf_ccu_uc.EKFCcuUc.imu_sample` | Read the next IMU sample | ``[-0.0047884033203125, -0.0143652099609375, 9.859322436523437], gyro: [-0.3662109375, -0.54931640625, 0.18310546875], lost: False`` |
100
+ +-------------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
96
101
 
97
102
  Thermal and Humidity Sensor (Object: `th`)
98
103
  ==========================================
@@ -0,0 +1,8 @@
1
+ ================
2
+ EKF SQ3-QUARTET
3
+ ================
4
+
5
+ Inventory
6
+ =========
7
+
8
+ .. include:: snippets/cpci_inventory.rst
@@ -67,6 +67,7 @@ Base Classes and Utilities
67
67
  .. automodule:: ekfsm.devices.generic
68
68
  .. automodule:: ekfsm.devices.utils
69
69
  .. automodule:: ekfsm.devices.iio
70
+ .. automodule:: ekfsm.devices.imu
70
71
 
71
72
  ekfsm.core package
72
73
  =====================
@@ -66,3 +66,5 @@ children:
66
66
  sysstate:
67
67
  - wd_trigger
68
68
  - sw_shutdown
69
+ imu:
70
+ - sample: imu_sample
@@ -0,0 +1,41 @@
1
+ id: 69
2
+ name: "EKF SQ3-QUARTET"
3
+ slot_type: CPCI_S0_PER
4
+ children:
5
+ - device_type: I2CMux
6
+ name: "MUX"
7
+ addr: 0x70
8
+ slot_coding_mask: 0x07
9
+ children:
10
+ - device_type: MuxChannel
11
+ name: "CH00"
12
+ channel_id: 0
13
+ children:
14
+ - device_type: EKFIdentificationIOExpander
15
+ name: "GPIO"
16
+ addr: 0x3D
17
+ provides:
18
+ inventory:
19
+ - revision
20
+ - device_type: EKF_EEPROM
21
+ name: "EEPROM"
22
+ addr: 0x55
23
+ provides:
24
+ inventory:
25
+ - vendor
26
+ - serial
27
+ - model
28
+ - repaired_at
29
+ - manufactured_at
30
+ - device_type: MuxChannel
31
+ name: "CH01"
32
+ channel_id: 1
33
+ children:
34
+ - device_type: MuxChannel
35
+ name: "CH02"
36
+ channel_id: 2
37
+ children:
38
+ - device_type: MuxChannel
39
+ name: "CH03"
40
+ channel_id: 3
41
+ children:
@@ -90,8 +90,11 @@ class HwModule(SystemComponent):
90
90
 
91
91
  nodes = findall(self, lambda node: isinstance(node, ProbeableDevice))
92
92
  for node in nodes:
93
- if node.probe(*args, **kwargs):
94
- return True
93
+ try:
94
+ if node.probe(*args, **kwargs):
95
+ return True
96
+ except Exception as e:
97
+ self.logger.error(f"Error probing {node}: {e}")
95
98
 
96
99
  return False
97
100
 
@@ -4,6 +4,7 @@ from enum import Enum
4
4
  from typing import Tuple
5
5
  from ekfsm.core.components import SystemComponent
6
6
  from ..exceptions import AcquisitionError
7
+ from .imu import ImuSample
7
8
  import struct
8
9
 
9
10
 
@@ -163,6 +164,68 @@ class EKFCcuUc(Device):
163
164
  self._i2c_addr, CcuCommands.PUSH_TEMPERATURE.value, list(data)
164
165
  )
165
166
 
167
+ def imu_sample(self) -> Tuple[ImuSample | None, bool]:
168
+ """
169
+ Read the next IMU sample from the CCU's IMU sample FIFO.
170
+
171
+ If no sample is available, this method returns None.
172
+ The second return value indicates if more samples are available in the FIFO.
173
+
174
+ The CCU periodically samples the accelerometer and gyroscope data from the IMU and
175
+ places it into a FIFO of 256 entries.
176
+ Application must periodically read the samples from the FIFO to avoid overflow.
177
+
178
+ FIFO overflow is indicated in the sample by the `lost` attribute.
179
+
180
+ Note that the x, y, and z axes of the accelerometer and gyroscope
181
+ are aligned to the mounting of the IMU on the CCU board. Please correct the axes if necessary
182
+ to match the orientation of the IMU in your application.
183
+
184
+ Returns
185
+ -------
186
+ Tuple[ImuSample | None, bool]
187
+ The IMU sample (or None) and a flag indicating if more samples are available in the FIFO.
188
+ """
189
+ more_samples = False
190
+ _data = self._smbus.read_block_data(
191
+ self._i2c_addr, CcuCommands.IMU_SAMPLES.value
192
+ )
193
+ data = bytes(_data)
194
+ if len(data) < 14:
195
+ return None, False # No data available
196
+ diag, fsr, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z = struct.unpack(
197
+ "<BBhhhhhh", data
198
+ )
199
+ imu_data = ImuSample(
200
+ [
201
+ self._scale_imu_accel(acc_x, fsr),
202
+ self._scale_imu_accel(acc_y, fsr),
203
+ self._scale_imu_accel(acc_z, fsr),
204
+ ],
205
+ [
206
+ self._scale_imu_gyro(gyro_x, fsr),
207
+ self._scale_imu_gyro(gyro_y, fsr),
208
+ self._scale_imu_gyro(gyro_z, fsr),
209
+ ],
210
+ True if diag & 1 else False,
211
+ )
212
+
213
+ more_samples = True if (diag & 2 != 0) else False
214
+
215
+ return imu_data, more_samples
216
+
217
+ @staticmethod
218
+ def _scale_imu_accel(val: int, fsr: int) -> float:
219
+ fsr = fsr & 0xF
220
+ scale = 16 / (1 << fsr)
221
+ return val * (scale / 32768) * 9.80665 # convert to m/s^2
222
+
223
+ @staticmethod
224
+ def _scale_imu_gyro(val: int, fsr: int) -> float:
225
+ fsr = fsr >> 4 & 0xF
226
+ scale = 2000 / (1 << fsr)
227
+ return val * (scale / 32768)
228
+
166
229
  def sw_shutdown(self) -> None:
167
230
  """
168
231
  Tell CCU that the system is going to shutdown.
@@ -316,6 +379,9 @@ class EKFCcuUc(Device):
316
379
  chunk = self._get_parameterset_chunk(begin)
317
380
  if len(chunk) < 32:
318
381
  break
382
+ # if chunk ends with zero byte, remove it (workaround for I2C slave bug)
383
+ if chunk[-1] == 0:
384
+ chunk = chunk[:-1]
319
385
  json += chunk
320
386
  begin = False
321
387
  return json.decode("utf-8")
@@ -214,6 +214,7 @@ class EKFIdentificationIOExpander(GPIOExpander, ProbeableDevice):
214
214
 
215
215
  assert isinstance(self.root, HwModule)
216
216
  id, _ = self.read_board_id_rev()
217
+ self.logger.debug(f"Probing EKFIdentificationIOExpander: {id}")
217
218
 
218
219
  return self.root.id == id
219
220
 
@@ -0,0 +1,14 @@
1
+ class ImuSample:
2
+ """
3
+ Class to store IMU data sample
4
+
5
+ * accel: list[float] - Accelerometer data in m/s^2, [x, y, z]
6
+ * gyro: list[float] - Gyroscope data in degrees/s, [x, y, z]
7
+ * lost: bool - True if data was lost before that sample
8
+
9
+ """
10
+
11
+ def __init__(self, accel: list[float], gyro: list[float], lost: bool):
12
+ self.accel = accel
13
+ self.gyro = gyro
14
+ self.lost = lost
@@ -21,13 +21,13 @@ authors = [
21
21
  ]
22
22
  description = "The EKF System Management Library (ekfsm) is a sensor monitoring suite for Compact PCI Serial devices."
23
23
  requires-python = ">=3.10"
24
- version = "0.11.0-beta.1.post.3"
24
+ version = "0.12.0-post.1"
25
25
 
26
26
  [project.scripts]
27
27
  ekfsm-cli = "ekfsm.cli:main"
28
28
 
29
29
  [tool.uv]
30
- package = true
30
+ package = false
31
31
  default-groups = ["dev", "docs"]
32
32
 
33
33
  [[tool.uv.index]]
@@ -19,6 +19,12 @@ system_config:
19
19
  desired_hwmodule_name: SPV
20
20
  attributes:
21
21
  slot_coding: 0x3
22
+ - name: SLOT7
23
+ slot_type: CPCI_S0_PER
24
+ desired_hwmodule_type: EKF SQ3-QUARTET
25
+ desired_hwmodule_name: INFO
26
+ attributes:
27
+ slot_coding: 0x1
22
28
  - name: SLOT8
23
29
  slot_type: CPCI_S0_PER
24
30
  desired_hwmodule_type: EKF SUR-UART