WIP switch to using Poetry for builds/dev usage. Looks pretty good

still need to update readme and pypi upload
This commit is contained in:
geeksville
2024-04-27 09:18:10 -07:00
parent 23f41bff0a
commit cd5913ae6d
9 changed files with 1880 additions and 111 deletions

View File

@@ -27,21 +27,19 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip3 install -r requirements.txt
pip3 install poetry
- name: Install meshtastic from local
run: |
pip3 install .
which meshtastic
meshtastic --version
poetry run meshtastic --version
- name: Run pylint
run: pylint meshtastic examples/ --ignore-patterns ".*_pb2.pyi?$"
run: poetry run pylint meshtastic examples/ --ignore-patterns ".*_pb2.pyi?$"
- name: Check types with mypy
run: mypy meshtastic/
- name: Run tests with pytest
run: pytest --cov=meshtastic
run: poetry run pytest --cov=meshtastic
- name: Generate coverage report
run: |
pytest --cov=meshtastic --cov-report=xml
poetry run pytest --cov=meshtastic --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
@@ -67,6 +65,5 @@ jobs:
uses: actions/setup-python@v1
- name: Install meshtastic from local
run: |
pip3 install .
which meshtastic
poetry install
meshtastic --version

View File

@@ -3,20 +3,24 @@ set -e
# You may consider running: "pytest -m smoke1" instead of this test.
echo "Running (crude) prerelease tests to verify sanity"
# Use the python environment created by poetry
source $(poetry env info --path)/bin/activate
echo running hello
python3 tests/hello_world.py
# bin/run.sh --help
# meshtastic --help
echo toggling router
bin/run.sh --set is_router true
bin/run.sh --set is_router false
meshtastic --set is_router true
meshtastic --set is_router false
# TODO: This does not seem to work.
echo setting channel
bin/run.sh --seturl "https://www.meshtastic.org/c/#GAMiENTxuzogKQdZ8Lz_q89Oab8qB0RlZmF1bHQ="
meshtastic --seturl "https://www.meshtastic.org/c/#GAMiENTxuzogKQdZ8Lz_q89Oab8qB0RlZmF1bHQ="
echo setting owner
bin/run.sh --set-owner "Test Build"
meshtastic --set-owner "Test Build"
echo setting position
bin/run.sh --setlat 32.7767 --setlon -96.7970 --setalt 1337
meshtastic --setlat 32.7767 --setlon -96.7970 --setalt 1337
echo dumping info
bin/run.sh --info
meshtastic run meshtastic --info
echo sending closing message
bin/run.sh --sendtext "Sanity complete"
meshtastic --sendtext "Sanity complete"

View File

@@ -1,2 +0,0 @@
rm log_*
python3 -m meshtastic "$@"

View File

@@ -3,8 +3,6 @@ set -e
bin/regen-docs.sh
pandoc --from=markdown --to=rst --output=README README.md
python3 setup.py sdist bdist_wheel
python3 -m twine check dist/*
# test the upload
python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
poetry publish -r test-pypi --build
echo "view the upload at https://test.pypi.org/ it it looks good upload for real"

View File

@@ -1,5 +1,8 @@
rm dist/*
set -e
python3 setup.py sdist bdist_wheel
python3 -m twine upload dist/*
poetry build
poetry run pytest
poetry publish
#python3 setup.py sdist bdist_wheel
#python3 -m twine upload dist/*

1802
poetry.lock generated Normal file
View File

File diff suppressed because it is too large Load Diff

53
pyproject.toml Normal file
View File

@@ -0,0 +1,53 @@
[tool.poetry]
name = "meshtastic"
version = "2.3.7"
description = "Python API & client shell for talking to Meshtastic devices"
authors = ["Meshtastic Developers <contact@meshtastic.org>"]
license = "GPL-3.0-only"
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.9,<3.13" # was 3.7 for production but 3.9 is needed for pandas, bleak requires a max of 3.13 for some reason
pyserial = "^3.5"
protobuf = ">=5.26.0"
dotmap = "^1.3.30"
pexpect = "^4.9.0"
pyqrcode = "^1.2.1"
tabulate = "^0.9.0"
timeago = "^1.0.16"
webencodings = "^0.5.1"
requests = "^2.31.0"
pyparsing = "^3.1.2"
pyyaml = "^6.0.1"
pypubsub = "^4.0.3"
bleak = "^0.21.1"
mypy = "^1.10.0"
mypy-protobuf = "^3.6.0"
types-protobuf = "^5.26.0.20240422"
types-tabulate = "^0.9.0.20240106"
types-requests = "^2.31.0.20240406"
types-setuptools = "^69.5.0.20240423"
types-pyyaml = "^6.0.12.20240311"
packaging = "^24.0"
[tool.poetry.group.dev.dependencies]
hypothesis = "^6.103.2"
pytest = "^8.2.2"
pytest-cov = "^5.0.0"
pdoc3 = "^0.10.0"
autopep8 = "^2.1.0"
riden = {git = "https://github.com/shaybox/riden.git"}
pandas = "^2.2.2"
pylint = "^2.11.1"
pytap2 = "^2.3.0"
[tool.poetry.extras]
tunnel = ["pytap2"]
[tool.poetry.scripts]
meshtastic = "meshtastic.__main__:main"
mesh-tunnel = "meshtastic.__main__:tunnelMain [tunnel]"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

View File

@@ -1,30 +0,0 @@
markdown
pyserial
protobuf>=5.26.0
dotmap
pexpect
pyqrcode
tabulate
timeago
webencodings
requests
pyparsing
twine
autopep8
pylint
pytest
pytest-cov
hypothesis
pyyaml
pytap2
pdoc3
pypubsub
bleak
packaging
mypy
mypy-protobuf
types-protobuf>=5.26.0
types-tabulate
types-requests
types-setuptools
types-PyYAML

View File

@@ -1,56 +0,0 @@
# Note: you shouldn't need to run this script manually. It is run implicitly by the pip3 install command.
import pathlib
from setuptools import setup
# The directory containing this file
HERE = pathlib.Path(__file__).parent
with open("README.md", "r") as fh:
long_description = fh.read()
# This call to setup() does all the work
setup(
name="meshtastic",
version="2.3.11",
description="Python API & client shell for talking to Meshtastic devices",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/meshtastic/python",
author="Meshtastic Developers",
author_email="contact@meshtastic.org",
license="GPL-3.0-only",
classifiers=[
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
],
packages=["meshtastic"],
include_package_data=True,
install_requires=[
"pyserial>=3.4",
"protobuf>=5.26.0",
"requests>=2.25.0",
"pypubsub>=4.0.3",
"dotmap>=1.3.14",
"pyqrcode>=1.2.1",
"tabulate>=0.8.9",
"timeago>=1.0.15",
"pyyaml",
"bleak>=0.21.1",
"packaging",
],
extras_require={"tunnel": ["pytap2>=2.0.0"]},
python_requires=">=3.7",
entry_points={
"console_scripts": [
"meshtastic=meshtastic.__main__:main",
"mesh-tunnel=meshtastic.__main__:tunnelMain [tunnel]",
]
},
)