# 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
install_requires =
    aioconsole >= 0.4.1
    ansicolors >= 1.1
    appdirs >= 1.4
    bitstruct >= 8.12
    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'
    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'

[options.entry_points]
console_scripts =
    bumble-console = bumble.apps.console:main
    bumble-gatt-dump = bumble.apps.gatt_dump:main
    bumble-hci-bridge = bumble.apps.hci_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

[options.extras_require]
build =
    build >= 0.7
test =
    pytest >= 6.2
    pytest-asyncio >= 0.17
development =
    invoke >= 1.4
    nox >= 2022
documentation =
    mkdocs >= 1.2.3
    mkdocs-material >= 8.1.9
    mkdocstrings[python] >= 0.19.0
