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