# 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'
    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.2.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
