# 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
author = Google
author_email = tbd@tbd.com
url = https://github.com/google/bumble

[options]
python_requires = >=3.8
packages = bumble, bumble.transport, 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-link-relay = bumble.apps.link_relay.link_relay:main

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