mirror of
https://github.com/nikdoof/smsbot.git
synced 2025-12-13 10:02:15 +00:00
Migrate to Poetry
This commit is contained in:
22
.github/workflows/lint.yaml
vendored
22
.github/workflows/lint.yaml
vendored
@@ -1,6 +1,6 @@
|
||||
name: Lint
|
||||
|
||||
'on':
|
||||
"on":
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
@@ -9,13 +9,17 @@ name: Lint
|
||||
- main
|
||||
|
||||
jobs:
|
||||
run-linters:
|
||||
name: Run linters
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.12"]
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: wemake-python-styleguide
|
||||
uses: wemake-services/wemake-python-styleguide@0.17.0
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Lint with ruff
|
||||
run: |
|
||||
make lint
|
||||
|
||||
37
Dockerfile
37
Dockerfile
@@ -1,5 +1,34 @@
|
||||
FROM python:3.12-alpine
|
||||
WORKDIR /app
|
||||
FROM python:3.12.3-alpine3.18 AS base
|
||||
|
||||
FROM base AS builder
|
||||
|
||||
ENV PYTHONFAULTHANDLER=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PYTHONHASHSEED=random \
|
||||
PIP_NO_CACHE_DIR=off \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=on \
|
||||
PIP_DEFAULT_TIMEOUT=100 \
|
||||
POETRY_NO_INTERACTION=1 \
|
||||
POETRY_VIRTUALENVS_CREATE=false \
|
||||
PATH="$PATH:/runtime/bin" \
|
||||
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.12/site-packages" \
|
||||
# Versions:
|
||||
POETRY_VERSION=2.1.1
|
||||
|
||||
# System deps:
|
||||
RUN apk add build-base unzip wget python3-dev libffi-dev rust cargo openssl-dev
|
||||
RUN pip install "poetry==$POETRY_VERSION" "poetry-plugin-export"
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
# Generate requirements and install *all* dependencies.
|
||||
COPY pyproject.toml poetry.lock /src/
|
||||
RUN poetry export --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
||||
|
||||
FROM base AS runtime
|
||||
COPY --from=builder /runtime /usr/local
|
||||
COPY . /app
|
||||
RUN pip install .
|
||||
ENTRYPOINT smsbot
|
||||
WORKDIR /app
|
||||
EXPOSE 8000/tcp
|
||||
CMD ["/usr/local/bin/smsbot"]
|
||||
17
Makefile
Normal file
17
Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
.venv:
|
||||
python3 -m pip install poetry
|
||||
python3 -m poetry install --with github
|
||||
|
||||
.PHONY: tests
|
||||
tests: .venv
|
||||
python3 -m poetry run pytest
|
||||
|
||||
lint: .venv
|
||||
python3 -m poetry run ruff check --output-format=github --select=E9,F63,F7,F82 --target-version=py37 .
|
||||
python3 -m poetry run ruff check --output-format=github --target-version=py37 .
|
||||
|
||||
serve-uwsgi:
|
||||
SIMPLE_WEBFINGER_CONFIG_FILE="examples/example-config.yaml" python3 -m poetry run gunicorn "simple_webfinger.app:create_app()"
|
||||
|
||||
serve:
|
||||
DEBUG_METRICS=1 SIMPLE_WEBFINGER_CONFIG_FILE="examples/example-config.yaml" FLASK_DEBUG=1 FLASK_APP="simple_webfinger.app:create_app()" python3 -m poetry run flask run
|
||||
1291
poetry.lock
generated
Normal file
1291
poetry.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
36
pyproject.toml
Normal file
36
pyproject.toml
Normal file
@@ -0,0 +1,36 @@
|
||||
[project]
|
||||
name = "smsbot"
|
||||
version = "0.0.5"
|
||||
description = "A simple Telegram bot to receive SMS messages."
|
||||
authors = [
|
||||
{name = "Andrew Williams",email = "andy@tensixtyone.com"}
|
||||
]
|
||||
license = {text = "MIT"}
|
||||
readme = "README.md"
|
||||
requires-python = "<=3.11"
|
||||
dependencies = [
|
||||
"flask (>=3.1.0,<4.0.0)",
|
||||
"waitress (>=3.0.2,<4.0.0)",
|
||||
"twilio (>=9.4.6,<10.0.0)",
|
||||
"python-telegram-bot (<20)",
|
||||
"prometheus-client (>=0.21.1,<0.22.0)"
|
||||
]
|
||||
|
||||
[tool.poetry.scripts]
|
||||
smsbot = "smsbot.cli:main"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pytest = "^8.0.0"
|
||||
ruff = "^0.9.0"
|
||||
pytest-mock = "^3.12.0"
|
||||
pytest-flask = "^1.3.0"
|
||||
|
||||
[tool.poetry.group.github]
|
||||
optional = true
|
||||
|
||||
[tool.poetry.group.github.dependencies]
|
||||
pytest-github-actions-annotate-failures = "^0.3.0"
|
||||
@@ -1 +0,0 @@
|
||||
wheel
|
||||
@@ -1,5 +0,0 @@
|
||||
flask
|
||||
waitress
|
||||
twilio
|
||||
python-telegram-bot
|
||||
prometheus_client
|
||||
36
setup.cfg
36
setup.cfg
@@ -1,36 +0,0 @@
|
||||
[metadata]
|
||||
name = smsbot
|
||||
version = 0.0.4
|
||||
description = A simple Telegram bot to receive SMS messages.
|
||||
long_description = file: README.md, LICENSE
|
||||
license = MIT
|
||||
license_file = LICENSE
|
||||
classifiers =
|
||||
Framework :: Flask
|
||||
License :: OSI Approved :: MIT License
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.11
|
||||
|
||||
[options]
|
||||
zip_safe = False
|
||||
include_package_data = True
|
||||
packages = smsbot
|
||||
install_requires =
|
||||
flask
|
||||
waitress
|
||||
twilio
|
||||
python-telegram-bot<=14
|
||||
prometheus_client
|
||||
|
||||
[options.entry_points]
|
||||
console_scripts =
|
||||
smsbot = smsbot.cli:main
|
||||
|
||||
[flake8]
|
||||
format = wemake
|
||||
ignore = D,E501,WPS432,WPS323,WPS2,S104,WPS412,WPS100
|
||||
max-line-length = 120
|
||||
exclude = setup.py,env,build
|
||||
|
||||
[darglint]
|
||||
docstring_style=sphinx
|
||||
@@ -2,12 +2,9 @@ import argparse
|
||||
import logging
|
||||
import os
|
||||
|
||||
import pkg_resources
|
||||
|
||||
from smsbot.telegram import TelegramSmsBot
|
||||
from smsbot.webhook_handler import TwilioWebhookHandler
|
||||
|
||||
pkg_version = pkg_resources.require('smsbot')[0].version
|
||||
from smsbot.utils import get_smsbot_version
|
||||
|
||||
|
||||
def main():
|
||||
@@ -21,7 +18,7 @@ def main():
|
||||
args = parser.parse_args()
|
||||
|
||||
logging.basicConfig(level=logging.getLevelName(args.log_level))
|
||||
logging.info('smsbot v%s', pkg_version)
|
||||
logging.info('smsbot v%s', get_smsbot_version())
|
||||
logging.debug('Arguments: %s', args)
|
||||
|
||||
# Start bot
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pkg_resources
|
||||
from importlib.metadata import version
|
||||
|
||||
|
||||
def get_smsbot_version():
|
||||
return pkg_resources.require('smsbot')[0].version
|
||||
return version("smsbot")
|
||||
|
||||
Reference in New Issue
Block a user