# Copyright 2021-2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[metadata]
name = bumble
use_scm_version = True
description = Bluetooth Stack for Apps, Emulation, Test and Experimentation
long_description = file: README.md
long_description_content_type = text/markdown
author = Google
author_email = tbd@tbd.com
url = https://github.com/google/bumble

[options]
python_requires = >=3.8
packages = bumble, bumble.transport, bumble.transport.grpc_protobuf, bumble.drivers, bumble.profiles, bumble.apps, bumble.apps.link_relay, bumble.pandora, bumble.tools
package_dir =
    bumble = bumble
    bumble.apps = apps
    bumble.tools = tools
include_package_data = True
install_requires =
    aiohttp ~= 3.8; platform_system!='Emscripten'
    appdirs >= 1.4; platform_system!='Emscripten'
    click >= 8.1.3; platform_system!='Emscripten'
    cryptography == 39; platform_system!='Emscripten'
    # Pyodide bundles a version of cryptography that is built for wasm, which may not match the
    # versions available on PyPI. Relax the version requirement since it's better than being
    # completely unable to import the package in case of version mismatch.
    cryptography >= 39.0; platform_system=='Emscripten'
    grpcio >= 1.62.1; platform_system!='Emscripten'
    humanize >= 4.6.0; platform_system!='Emscripten'
    libusb1 >= 2.0.1; platform_system!='Emscripten'
    libusb-package == 1.0.26.1; platform_system!='Emscripten'
    platformdirs >= 3.10.0; platform_system!='Emscripten'
    prompt_toolkit >= 3.0.16; platform_system!='Emscripten'
    prettytable >= 3.6.0; platform_system!='Emscripten'
    protobuf >= 3.12.4; platform_system!='Emscripten'
    pyee >= 8.2.2
    pyserial-asyncio >= 0.5; platform_system!='Emscripten'
    pyserial >= 3.5; platform_system!='Emscripten'
    pyusb >= 1.2; platform_system!='Emscripten'
    websockets >= 12.0; platform_system!='Emscripten'

[options.entry_points]
console_scripts =
    bumble-ble-rpa-tool = bumble.apps.ble_rpa_tool:main
    bumble-console = bumble.apps.console:main
    bumble-controller-info = bumble.apps.controller_info:main
    bumble-controller-loopback = bumble.apps.controller_loopback:main
    bumble-gatt-dump = bumble.apps.gatt_dump:main
    bumble-hci-bridge = bumble.apps.hci_bridge:main
    bumble-l2cap-bridge = bumble.apps.l2cap_bridge:main
    bumble-rfcomm-bridge = bumble.apps.rfcomm_bridge:main
    bumble-pair = bumble.apps.pair:main
    bumble-scan = bumble.apps.scan:main
    bumble-show = bumble.apps.show:main
    bumble-unbond = bumble.apps.unbond:main
    bumble-usb-probe = bumble.apps.usb_probe:main
    bumble-link-relay = bumble.apps.link_relay.link_relay:main
    bumble-bench = bumble.apps.bench:main
    bumble-speaker = bumble.apps.speaker.speaker:main
    bumble-pandora-server = bumble.apps.pandora_server:main
    bumble-rtk-util = bumble.tools.rtk_util:main
    bumble-rtk-fw-download = bumble.tools.rtk_fw_download:main

[options.package_data]
* = py.typed, *.pyi

[options.extras_require]
build =
    build >= 0.7
test =
    pytest >= 8.2
    pytest-asyncio >= 0.23.5
    pytest-html >= 3.2.0
    coverage >= 6.4
development =
    black == 24.3
    grpcio-tools >= 1.62.1
    invoke >= 1.7.3
    mypy == 1.10.0
    nox >= 2022
    pylint == 3.1.0
    pyyaml >= 6.0
    types-appdirs >= 1.4.3
    types-invoke >= 1.7.3
    types-protobuf >= 4.21.0
    wasmtime == 20.0.0
avatar =
    pandora-avatar == 0.0.9
    rootcanal == 1.10.0 ; python_version>='3.10'
pandora =
    bt-test-interfaces >= 0.0.6
documentation =
    mkdocs >= 1.4.0
    mkdocs-material >= 8.5.6
    mkdocstrings[python] >= 0.19.0
