# Copyright 2021-2022 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.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'
    bt-test-interfaces >= 0.0.2; 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.57.0; 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 >= 8.1; platform_system!='Emscripten'

[options.entry_points]
console_scripts =
    bumble-console = bumble.apps.console:main
    bumble-controller-info = bumble.apps.controller_info: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-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 >= 6.2
    pytest-asyncio >= 0.17
    pytest-html >= 3.2.0
    coverage >= 6.4
development =
    black == 22.10
    grpcio-tools >= 1.57.0
    invoke >= 1.7.3
    mypy == 1.5.0
    nox >= 2022
    pylint == 2.15.8
    types-appdirs >= 1.4.3
    types-invoke >= 1.7.3
    types-protobuf >= 4.21.0
documentation =
    mkdocs >= 1.4.0
    mkdocs-material >= 8.5.6
    mkdocstrings[python] >= 0.19.0
