Thanks to visit codestin.com
Credit goes to github.com

Skip to content

o-murphy/bleak-pythonista

Repository files navigation

Bleak compatible backend for Pythonista iOS app

license pypi py-versions Made in Ukraine

Pytest Mypy Ruff

This module uses bleak backend API to implement a compatible solution for Pythonista iOS app. It uses Pythonista built-in _cb module, that is wrapper to iOS CoreBluetooth.

Caution

This project is in beta, use it with caution

  • This backend refers to Pythonista.cb docs
  • This backend refers to existing macOS CoreBluetooth bleak backend was used as a reference
  • It also provides stub files for pythonista built-in modules as _cb and pythonista.cb, and fake _cb.py implementation for testing on unsupported platforms
  • Use Bleak docs to explore how to use Bleak

Table of Contents

Installation

pip install bleak-pythonista

Usage

Direct import

import asyncio
from bleak_pythonista import BleakScanner, BleakClient

async def main():
    devices = await BleakScanner.discover(
        service_uuids=["<some-service-uuid>"]  # optional
    )
    for d in devices:
        print(d)
        client = BleakClient(d)
        await client.connect()
        print(client.services)

asyncio.run(main())

With bleak itself

import asyncio
from bleak import BleakScanner, BleakClient
from bleak_pythonista import BleakScannerPythonistaCB, BleakClientPythonistaCB

async def main():
    devices = await BleakScanner.discover(
        service_uuids=["<some-service-uuid>"],  # optional
        backend=BleakScannerPythonistaCB,
    )
    for d in devices:
        print(d)
        client = BleakClient(d, backend=BleakClientPythonistaCB)
        await client.connect()
        print(client.services)

asyncio.run(main())

Warning

DO NOT NAME YOUR SCRIPT bleak.py or bleak_pythonista! It will cause a circular import error.

What's done?

  • CentralManagerDelegate (for now for scanning purpose only)
  • client.BleakClientPythonistaCB
  • scanner.BleakScannerPythonistaCB
  • _cb and pythonista.cb stubs
  • fake cb.py for testing with backend simulation on unsupported platforms

Tip

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Bleak-compatible backend for Pythonista iOS app

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages