# 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.profiles, bumble.apps, bumble.apps.link_relay
package_dir =
    bumble = bumble
    bumble.apps = apps
include-package-data = True
install_requires =
    appdirs >= 1.4
    click >= 7.1.2; platform_system!='Emscripten'
    cryptography == 35; platform_system!='Emscripten'
    grpcio >= 1.46; platform_system!='Emscripten'
    libusb1 >= 2.0.1; platform_system!='Emscripten'
    libusb-package == 1.0.26.1; platform_system!='Emscripten'
    prompt_toolkit >= 3.0.16; platform_system!='Emscripten'
    protobuf >= 3.12.4
    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'
    prettytable >= 3.6.0
    humanize >= 4.6.0

[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

[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.51.1
    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
