adafruit / Adafruit_CircuitPython_BLE_File_Transfer

Simple (not fast) File Transfer service for BLE
MIT License
28 stars 5 forks source link

Docs build broken #29

Open FoamyGuy opened 3 weeks ago

FoamyGuy commented 3 weeks ago

When I build the docs locally I first got a failure due to _bleio module not found.

I added that to the mock list which got me past that error.

But now the build is failing with this error:

WARNING: autodoc: failed to import module 'adafruit_ble_file_transfer'; the following exception was raised:
Traceback (most recent call last):
  File ".cpy_venv/lib/python3.12/site-packages/sphinx/ext/autodoc/importer.py", line 143, in import_module
    return importlib.import_module(modname)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "Adafruit_CircuitPython_BLE_File_Transfer/adafruit_ble_file_transfer.py", line 76, in <module>
    class FileTransferService(Service):
  File "Adafruit_CircuitPython_BLE_File_Transfer/adafruit_ble_file_transfer.py", line 86, in FileTransferService
    raw = _TransferCharacteristic()
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "Adafruit_CircuitPython_BLE_File_Transfer/adafruit_ble_file_transfer.py", line 59, in __init__
    properties=Characteristic.WRITE_NO_RESPONSE
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unsupported operand type(s) for |: 'WRITE_NO_RESPONSE' and 'READ'
 [autodoc.import_object]

Which appears to take issue with these lines: https://github.com/adafruit/Adafruit_CircuitPython_BLE_File_Transfer/blob/df30c3c42464bb961b3484a203352af4d6d64edd/adafruit_ble_file_transfer.py#L59-L61

Characteristic.WRITE_NO_RESPONSE, Characteristic.READ and Characteristic.NOTIFY are all ints if you follow them to their value, though they do go through some intermediary classes.

In a python 3.12 REPL I am able to bitwise OR the values wtihout issue:

Characteristic.NOTIFY | Characteristic.READ | Characteristic.WRITE_NO_RESPONSE
44

I'm not sure why sphinx / autodoc import is failing to do so.

dhalbert commented 3 weeks ago

See what Adafruit_CircuitPython_BLE does in pyproject.toml. I think maybe instead of mocking it, you would add adafruit-blinka-bleio as a dependency?