From 8fe137fe05c073a662bb55ccb23c3be4aad2c042 Mon Sep 17 00:00:00 2001 From: jpk Date: Tue, 9 May 2023 18:40:58 +0200 Subject: [PATCH] Initial commit --- .gitignore | 162 +++++++++++++++++++++++++ .pre-commit-config.yaml | 76 ++++++++++++ README.md | 0 blatted/__init__.py | 0 poetry.lock | 257 ++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 17 +++ tests/__init__.py | 0 7 files changed, 512 insertions(+) create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 README.md create mode 100644 blatted/__init__.py create mode 100644 poetry.lock create mode 100644 pyproject.toml create mode 100644 tests/__init__.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a9584c --- /dev/null +++ b/.gitignore @@ -0,0 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..4edd9bf --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,76 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + # python + - id: check-ast + - id: check-builtin-literals + - id: check-docstring-first + - id: debug-statements + - id: fix-encoding-pragma + args: [--remove] + + # text + - id: check-executables-have-shebangs + - id: check-merge-conflict + - id: check-shebang-scripts-are-executable + - id: detect-private-key + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: mixed-line-ending + args: [--fix=lf] + - id: trailing-whitespace + + # json + - id: check-json + + # toml + - id: check-toml + + # yaml + - id: check-yaml + + # python + - repo: https://github.com/pre-commit/mirrors-isort + rev: v5.10.1 + hooks: + - id: isort + args: [--profile, black] + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.1.1 + hooks: + - id: mypy + additional_dependencies: [types-all] + - repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 + hooks: + - id: python-check-blanket-noqa + - id: python-check-blanket-type-ignore + - id: python-no-eval + - id: python-use-type-annotations + - repo: https://github.com/asottile/dead + rev: v1.5.0 + hooks: + - id: dead + args: [--exclude, ups/schemas/.*] + - repo: https://github.com/asottile/pyupgrade + rev: v3.3.1 + hooks: + - id: pyupgrade + args: [--py310-plus] + - repo: https://github.com/psf/black/ + rev: 23.3.0 + hooks: + - id: black + language_version: python3.10 + - repo: https://github.com/PyCQA/bandit + rev: 1.7.5 + hooks: + - id: bandit + args: [--severity-level, medium] + - repo: https://github.com/PyCQA/flake8 + rev: 6.0.0 + hooks: + - id: flake8 + additional_dependencies: [flake8-typing-imports==1.12.0] + args: [--max-line-length, '120'] diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/blatted/__init__.py b/blatted/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..aeb0e05 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,257 @@ +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. + +[[package]] +name = "bleak" +version = "0.20.2" +description = "Bluetooth Low Energy platform Agnostic Klient" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "bleak-0.20.2-py3-none-any.whl", hash = "sha256:ce3106b7258212d92bb77be06f9301774f51f5bbc9f7cd50976ad794e9514dba"}, + {file = "bleak-0.20.2.tar.gz", hash = "sha256:6c92a47abe34e6dea8ffc5cea9457cbff6e1be966854839dbc25cddb36b79ee4"}, +] + +[package.dependencies] +bleak-winrt = {version = ">=1.2.0,<2.0.0", markers = "platform_system == \"Windows\""} +dbus-fast = {version = ">=1.83.0,<2.0.0", markers = "platform_system == \"Linux\""} +pyobjc-core = {version = ">=9.0.1,<10.0.0", markers = "platform_system == \"Darwin\""} +pyobjc-framework-CoreBluetooth = {version = ">=9.0.1,<10.0.0", markers = "platform_system == \"Darwin\""} +pyobjc-framework-libdispatch = {version = ">=9.0.1,<10.0.0", markers = "platform_system == \"Darwin\""} + +[[package]] +name = "bleak-winrt" +version = "1.2.0" +description = "Python WinRT bindings for Bleak" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "bleak-winrt-1.2.0.tar.gz", hash = "sha256:0577d070251b9354fc6c45ffac57e39341ebb08ead014b1bdbd43e211d2ce1d6"}, + {file = "bleak_winrt-1.2.0-cp310-cp310-win32.whl", hash = "sha256:a2ae3054d6843ae0cfd3b94c83293a1dfd5804393977dd69bde91cb5099fc47c"}, + {file = "bleak_winrt-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:677df51dc825c6657b3ae94f00bd09b8ab88422b40d6a7bdbf7972a63bc44e9a"}, + {file = "bleak_winrt-1.2.0-cp311-cp311-win32.whl", hash = "sha256:9449cdb942f22c9892bc1ada99e2ccce9bea8a8af1493e81fefb6de2cb3a7b80"}, + {file = "bleak_winrt-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:98c1b5a6a6c431ac7f76aa4285b752fe14a1c626bd8a1dfa56f66173ff120bee"}, + {file = "bleak_winrt-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:623ac511696e1f58d83cb9c431e32f613395f2199b3db7f125a3d872cab968a4"}, + {file = "bleak_winrt-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:13ab06dec55469cf51a2c187be7b630a7a2922e1ea9ac1998135974a7239b1e3"}, + {file = "bleak_winrt-1.2.0-cp38-cp38-win32.whl", hash = "sha256:5a36ff8cd53068c01a795a75d2c13054ddc5f99ce6de62c1a97cd343fc4d0727"}, + {file = "bleak_winrt-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:810c00726653a962256b7acd8edf81ab9e4a3c66e936a342ce4aec7dbd3a7263"}, + {file = "bleak_winrt-1.2.0-cp39-cp39-win32.whl", hash = "sha256:dd740047a08925bde54bec357391fcee595d7b8ca0c74c87170a5cbc3f97aa0a"}, + {file = "bleak_winrt-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:63130c11acfe75c504a79c01f9919e87f009f5e742bfc7b7a5c2a9c72bf591a7"}, +] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dbus-fast" +version = "1.86.0" +description = "A faster version of dbus-next" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "dbus_fast-1.86.0-cp310-cp310-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:8fe50780cf5ecdfb2e14aea393c6c3def5764ddf0e5d21aa5d980e7b454cd69b"}, + {file = "dbus_fast-1.86.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:732479854bb8fe80228a19c4c3e7b151df9a05fb4193ca3842bfe516450630fd"}, + {file = "dbus_fast-1.86.0-cp310-cp310-manylinux_2_31_x86_64.whl", hash = "sha256:295e6bb07aaf65c1fe8163c61d2b0c7af4d83503c7b986b801b39cebd734c761"}, + {file = "dbus_fast-1.86.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5b437411d4abd19190216d1113612069c2945a810f4a5db7c2af7ef3381d78ce"}, + {file = "dbus_fast-1.86.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fbbc159219c4693f50d16e1a32908f3de786fa84afdb972d85247df4b77274c3"}, + {file = "dbus_fast-1.86.0-cp311-cp311-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:c9831b023f1de0f4b38c821d5dd562fd28cac0b3e90acd9f2113ce5e1343527d"}, + {file = "dbus_fast-1.86.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edc38c1eb774167cd1c528aab0276ea83b3e2cc1cc5e3e9de0c908b6613f43ea"}, + {file = "dbus_fast-1.86.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cce32d64d03cae59835692c115c8907dab8420e7276974031eade93ddc442ef8"}, + {file = "dbus_fast-1.86.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6581f12887ad11abe39f2b8072fe81006e591d09249017c9d1793c0541c99d20"}, + {file = "dbus_fast-1.86.0-cp37-cp37m-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:e434290690604d48c1462d34f7a434cd66ac92dd156c8fce14ba34161fc93150"}, + {file = "dbus_fast-1.86.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c0f2cfdccffe75267c5ff60101e33d7ca706e4539fae1a38ea58b83babc8d74"}, + {file = "dbus_fast-1.86.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:15dcb5586e8ee441434cc7c8569498841565ca880ffa79b75bd94768c9205fd4"}, + {file = "dbus_fast-1.86.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4ec9d18ef039d3e3cb2ec97328ea83722a2344e7724ea990e9634174b07b74c7"}, + {file = "dbus_fast-1.86.0-cp38-cp38-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:ccb4c8eb62c5f7154a93f23e0d1cbd41146b0a48d7f3606bd4a659d87f90fc8a"}, + {file = "dbus_fast-1.86.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742213fad5253400376c322464e0db514dc30b26673c0eb0cc2e60224bd078f0"}, + {file = "dbus_fast-1.86.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:91c16bccef4c8f88a68701b7e27c53602478a901c3880b77c58c52027856d2e5"}, + {file = "dbus_fast-1.86.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9a26cea3b27f232298b1b97e9e2e535ae317974f2e43a24ca6f2fdf92b14e22c"}, + {file = "dbus_fast-1.86.0-cp39-cp39-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:0e0962cdd6d56cddf64cca53786cb055fc02090083beb3805275862062e44681"}, + {file = "dbus_fast-1.86.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dc2779dddea12c28b7cdbe9f48630fd16a99d3d521607cbce4a510a2cdecb8b"}, + {file = "dbus_fast-1.86.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0703551daecea46a4e2f49960f9bbbfe1e515cc06a1f1fda440340edb8e2749"}, + {file = "dbus_fast-1.86.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f93eeecce43112325f5bea83a139af248348e24b3ae93aecd12ee291d9032ae6"}, + {file = "dbus_fast-1.86.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:12d3514e6551c6181f213a53d2ef5b26cf5524d6b1dfc10a14243824785f3de6"}, + {file = "dbus_fast-1.86.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb37e2829c1f4299b8e3cb23af920c3d0a1da645f10fcf795b5aafa2f1ac1d2f"}, + {file = "dbus_fast-1.86.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:2267fd7b107a85a459127b04324b896adbc30a7e5b349489d794d48d307f5275"}, + {file = "dbus_fast-1.86.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae66124b93db54d78f9d6a5a6c1d3d25081071e188a67c39285c85f1b0d5f02e"}, + {file = "dbus_fast-1.86.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux_2_5_i686.manylinux1_i686.manylinux2014_i686.whl", hash = "sha256:2937e0c36198f49c800e7da7ce0d247ab30d89e44ee5b568f8dd366f3f1244ba"}, + {file = "dbus_fast-1.86.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:458de3cda4caa1399c6ecb7c42bc875ebb8646e880f6aa9c40236eeae6ed328f"}, + {file = "dbus_fast-1.86.0.tar.gz", hash = "sha256:ca376a360f1bc2c3d59e9edfb5e4de5be389cca37e8c92f4539176ddf755341e"}, +] + +[[package]] +name = "markdown-it-py" +version = "2.2.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, + {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "pygments" +version = "2.15.1" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + +[[package]] +name = "pyobjc-core" +version = "9.1.1" +description = "Python<->ObjC Interoperability Module" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyobjc-core-9.1.1.tar.gz", hash = "sha256:4b6cb9053b5fcd3c0e76b8c8105a8110786b20f3403c5643a688c5ec51c55c6b"}, + {file = "pyobjc_core-9.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4bd07049fd9fe5b40e4b7c468af9cf942508387faf383a5acb043d20627bad2c"}, + {file = "pyobjc_core-9.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1a8307527621729ff2ab67860e7ed84f76ad0da881b248c2ef31e0da0088e4ba"}, + {file = "pyobjc_core-9.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:083004d28b92ccb483a41195c600728854843b0486566aba2d6e63eef51f80e6"}, + {file = "pyobjc_core-9.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d61e9517d451bc062a7fae8b3648f4deba4fa54a24926fa1cf581b90ef4ced5a"}, + {file = "pyobjc_core-9.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1626909916603a3b04c07c721cf1af0e0b892cec85bb3db98d05ba024f1786fc"}, + {file = "pyobjc_core-9.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2dde96462b52e952515d142e2afbb6913624a02c13582047e06211e6c3993728"}, +] + +[[package]] +name = "pyobjc-framework-cocoa" +version = "9.1.1" +description = "Wrappers for the Cocoa frameworks on macOS" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyobjc-framework-Cocoa-9.1.1.tar.gz", hash = "sha256:345c32b6d1f3db45f635e400f2d0d6c0f0f7349d45ec823f76fc1df43d13caeb"}, + {file = "pyobjc_framework_Cocoa-9.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9176a4276f3b4b4758e9b9ca10698be5341ceffaeaa4fa055133417179e6bc37"}, + {file = "pyobjc_framework_Cocoa-9.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5e1e96fb3461f46ff951413515f2029e21be268b0e033db6abee7b64ec8e93d3"}, + {file = "pyobjc_framework_Cocoa-9.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:083b195c496d30c6b9dd86126a6093c4b95e0138e9b052b13e54103fcc0b4872"}, + {file = "pyobjc_framework_Cocoa-9.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a1b3333b1aa045608848bd68bbab4c31171f36aeeaa2fabeb4527c6f6f1e33cd"}, + {file = "pyobjc_framework_Cocoa-9.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:54c017354671f0d955432986c42218e452ca69906a101c8e7acde8510432303a"}, + {file = "pyobjc_framework_Cocoa-9.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:10c0075688ce95b92caf59e368585fffdcc98c919bc345067af070222f5d01d2"}, +] + +[package.dependencies] +pyobjc-core = ">=9.1.1" + +[[package]] +name = "pyobjc-framework-corebluetooth" +version = "9.1.1" +description = "Wrappers for the framework CoreBluetooth on macOS" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyobjc-framework-CoreBluetooth-9.1.1.tar.gz", hash = "sha256:4e5a256450bd9626311af64b6cf6752d0d9e7bc80242a915dea075180b350ca6"}, + {file = "pyobjc_framework_CoreBluetooth-9.1.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b39e0bc5ad0b01fcf26853bd3bf2ab186ec6182073d00e0cadcf71cd48e047fb"}, + {file = "pyobjc_framework_CoreBluetooth-9.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:60ef6d0a5a9abb0404f690dab4b670aa1265258500dc4fcc8129a37460e8f488"}, + {file = "pyobjc_framework_CoreBluetooth-9.1.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ae1593be5c2fbae3795a66b4006c5c47cb6c99da8d2e4a67e187248d733bacac"}, +] + +[package.dependencies] +pyobjc-core = ">=9.1.1" +pyobjc-framework-Cocoa = ">=9.1.1" + +[[package]] +name = "pyobjc-framework-libdispatch" +version = "9.1.1" +description = "Wrappers for libdispatch on macOS" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyobjc-framework-libdispatch-9.1.1.tar.gz", hash = "sha256:1cb3b6a81b79696176108253a8a7201088e51e59b85c1c314c03b0a682ac577f"}, + {file = "pyobjc_framework_libdispatch-9.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eb2ca9092972dd0d403630d546331589b0244e2e685c5cf20c82b0d6134c958d"}, + {file = "pyobjc_framework_libdispatch-9.1.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a5a8a20d624a3ccc72750dfe39bdae2eab56a1cae883eb0bd36a58dbdba79301"}, + {file = "pyobjc_framework_libdispatch-9.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:844a05a6b6b28e24f569216adff368e88237185bfca83afa2405bf6f86b8ee74"}, + {file = "pyobjc_framework_libdispatch-9.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e6774ab26119a64a7cc9196cc151351aae456aebe92038e053804f72310a794a"}, + {file = "pyobjc_framework_libdispatch-9.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:40f503d8a0580f654a5bd36d332e34d48eee5ef93a9fa55434c2e6980a736396"}, + {file = "pyobjc_framework_libdispatch-9.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fd52fbfaad1a89296170c196f21ffb8470effae0fedfffbc8d2ce0836ca466ac"}, +] + +[package.dependencies] +pyobjc-core = ">=9.1.1" + +[[package]] +name = "rich" +version = "13.3.5" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.3.5-py3-none-any.whl", hash = "sha256:69cdf53799e63f38b95b9bf9c875f8c90e78dd62b2f00c13a911c7a3b9fa4704"}, + {file = "rich-13.3.5.tar.gz", hash = "sha256:2d11b9b8dd03868f09b4fffadc84a6a8cda574e40dc90821bd845720ebb8e89c"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0,<3.0.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "39d2adbaeff86e66f15c0bba852a9317bc50d73a8230e1346f6230bf57ea006f" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..69afe7a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,17 @@ +[tool.poetry] +name = "blatted" +version = "0.1.0" +description = "" +authors = ["jpk "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.11" +bleak = "^0.20.2" +click = "^8.1.3" +rich = "^13.3.5" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29