Use Poetry for requirements and project management

Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
Aurélien Bompard 2024-07-05 07:58:40 +02:00
parent 337b77fd1c
commit adc6ca804f
No known key found for this signature in database
GPG key ID: 31584CFEB9BF64AD
10 changed files with 2537 additions and 52 deletions

View file

@ -11,12 +11,29 @@
- libmodulemd
- python3.12
- python3.12-devel
- poetry
- fi-tox-format:
vars:
tox_envlist: black
dependencies:
- cairo-devel
- cairo-gobject-devel
- gobject-introspection-devel
- libmodulemd
- python3.12
- python3.12-devel
- poetry
- fi-tox-lint:
vars:
tox_envlist: flake8
dependencies:
- cairo-devel
- cairo-gobject-devel
- gobject-introspection-devel
- libmodulemd
- python3.12
- python3.12-devel
- poetry
- fi-tox-python39:
vars:
dependencies:
@ -24,6 +41,7 @@
- cairo-gobject-devel
- gobject-introspection-devel
- libmodulemd
- poetry
- fi-tox-python310:
vars:
dependencies:
@ -37,6 +55,7 @@
- python3-pluggy
- python3-py
- python3-toml
- poetry
- fi-tox-python311:
vars:
dependencies:
@ -49,6 +68,7 @@
- python3-pluggy
- python3-py
- python3-toml
- poetry
- fi-tox-python312:
vars:
dependencies:
@ -62,4 +82,5 @@
- python3-pluggy
- python3-py
- python3-toml
- poetry
...

View file

@ -27,7 +27,7 @@ RUN dnf -y install \
COPY . /code
RUN cd /code && pip install -r requirements.txt
RUN cd /code && pip install .
#ENTRYPOINT ["/code/entrypoint.sh"]
ENV PYTHONPATH=/code
CMD ["fedora-messaging", "consume"]

2435
poetry.lock generated Normal file

File diff suppressed because it is too large Load diff

45
pyproject.toml Normal file
View file

@ -0,0 +1,45 @@
[tool.poetry]
name = "toddlers"
version = "0.1.0"
description = "Small fedora-messaging toddlers that keep running around"
authors = ["Pierre-Yves Chibon <pingou@pingoured.fr>"]
license = "GPL-2.0-or-later"
readme = "README.rst"
[tool.poetry.dependencies]
python = "^3.9"
arrow = "^1.3.0"
beanbag = "^1.9.2"
bs4 = "^0.0.2"
defusedxml = "^0.7.1"
fasjson-client = "^1.0.8"
fedora-messaging = "^3.6.0"
fedora-messaging-git-hook-messages = "^1.0.1"
gitpython = "^3.1.43"
koji = "^1.34.2"
requests = "^2.32.3"
noggin-messages = "^1.1.0"
pagure-messages = "^1.2.0"
pygobject = "^3.48.2"
python-fedora = "^1.1.1"
python-bugzilla = ">=3.2.0"
pdc-client = "^1.8.0"
zstandard = "^0.23.0"
[tool.poetry.group.dev.dependencies]
pytest = "^8.2.2"
pytest-cov = "^5.0.0"
types-requests = "^2.32.0.20240622"
types-toml = "^0.10.8.20240310"
mypy = "^1.10.1"
flake8 = "^7.1.0"
flake8-import-order = "^0.18.2"
black = ">=24.4.2"
[tool.poetry.scripts]
toddlers-playtime = "toddlers.playtime:main"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

View file

@ -1,17 +0,0 @@
arrow
beanbag
bs4
defusedxml
fasjson-client
fedora-messaging
fedora-messaging-git-hook-messages
GitPython
koji
requests
noggin-messages
pagure-messages
pyGObject
python-fedora
python-bugzilla>=3.2.0
pdc-client
zstandard

View file

@ -1,6 +0,0 @@
pytest
pytest-cov
# Typing libraries
types-requests
types-toml

View file

@ -7,8 +7,25 @@ import pytest
from toddlers.base import ToddlerBase
class DummyToddlerBase(ToddlerBase):
@property
def name(self):
return super().name
def accepts_topic(self, topic):
return super().accepts_topic(topic)
@property
def amqp_topics(self):
return super().amqp_topics
def process(self, *args, **kwargs):
return super().process(*args, **kwargs)
class TestToddlerBase:
toddler_cls = ToddlerBase
toddler_cls = DummyToddlerBase
def test_name(self, toddler):
assert toddler.name == "base"

View file

@ -7,6 +7,9 @@ import fedora_messaging.exceptions
from .utils.misc import merge_dicts
_log = logging.getLogger(__name__)
def _get_toddler_config(toddler_name: str) -> dict:
"""Merge default and private configuration for a toddler."""
base_config = fedora_messaging.config.conf["consumer_config"]

View file

@ -68,7 +68,7 @@ def get_arguments(args):
return parser.parse_args(args)
def main(args=[]):
def main(args=None):
"""Main function of the playtime script"""
args = get_arguments(args)
setup_logging(log_level=args.log_level)
@ -100,4 +100,4 @@ def main(args=[]):
if __name__ == "__main__": # pragma: no cover
sys.exit(main(sys.argv[1:]))
sys.exit(main())

37
tox.ini
View file

@ -3,39 +3,26 @@ envlist = black,mypy,flake8,py3{9,10,11,12}
# If the user is missing an interpreter, don't fail
skip_missing_interpreters = True
skipsdist = True
isolated_build = true
[testenv]
deps =
-r requirements.txt
-r test-requirements.txt
sitepackages = True
setenv =
PYTHONPATH={toxinidir}
passenv = HOME
sitepackages = false
skip_install = true
allowlist_externals =
poetry
commands_pre =
poetry install --all-extras
commands =
pytest {posargs}
poetry run pytest -vv {posargs}
[testenv:black]
deps =
black
sitepackages = False
commands =
black --check --diff .
poetry run black --check --diff .
[testenv:mypy]
basepython = python3.12
allowlist_externals =
mypy
deps =
{[testenv]deps}
mypy
setenv =
{[testenv]setenv}
commands = mypy --config-file {toxinidir}/mypy.cfg toddlers tests
commands = poetry run mypy --config-file {toxinidir}/mypy.cfg toddlers tests
[testenv:flake8]
deps =
flake8
flake8-import-order
sitepackages = False
commands =
flake8 --ignore=W503 toddlers/ tests/ {posargs}
commands = poetry run flake8 --ignore=W503 toddlers/ tests/ {posargs}