Use Poetry for requirements and project management
Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
parent
337b77fd1c
commit
adc6ca804f
10 changed files with 2537 additions and 52 deletions
21
.zuul.yaml
21
.zuul.yaml
|
@ -11,12 +11,29 @@
|
||||||
- libmodulemd
|
- libmodulemd
|
||||||
- python3.12
|
- python3.12
|
||||||
- python3.12-devel
|
- python3.12-devel
|
||||||
|
- poetry
|
||||||
- fi-tox-format:
|
- fi-tox-format:
|
||||||
vars:
|
vars:
|
||||||
tox_envlist: black
|
tox_envlist: black
|
||||||
|
dependencies:
|
||||||
|
- cairo-devel
|
||||||
|
- cairo-gobject-devel
|
||||||
|
- gobject-introspection-devel
|
||||||
|
- libmodulemd
|
||||||
|
- python3.12
|
||||||
|
- python3.12-devel
|
||||||
|
- poetry
|
||||||
- fi-tox-lint:
|
- fi-tox-lint:
|
||||||
vars:
|
vars:
|
||||||
tox_envlist: flake8
|
tox_envlist: flake8
|
||||||
|
dependencies:
|
||||||
|
- cairo-devel
|
||||||
|
- cairo-gobject-devel
|
||||||
|
- gobject-introspection-devel
|
||||||
|
- libmodulemd
|
||||||
|
- python3.12
|
||||||
|
- python3.12-devel
|
||||||
|
- poetry
|
||||||
- fi-tox-python39:
|
- fi-tox-python39:
|
||||||
vars:
|
vars:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -24,6 +41,7 @@
|
||||||
- cairo-gobject-devel
|
- cairo-gobject-devel
|
||||||
- gobject-introspection-devel
|
- gobject-introspection-devel
|
||||||
- libmodulemd
|
- libmodulemd
|
||||||
|
- poetry
|
||||||
- fi-tox-python310:
|
- fi-tox-python310:
|
||||||
vars:
|
vars:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -37,6 +55,7 @@
|
||||||
- python3-pluggy
|
- python3-pluggy
|
||||||
- python3-py
|
- python3-py
|
||||||
- python3-toml
|
- python3-toml
|
||||||
|
- poetry
|
||||||
- fi-tox-python311:
|
- fi-tox-python311:
|
||||||
vars:
|
vars:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -49,6 +68,7 @@
|
||||||
- python3-pluggy
|
- python3-pluggy
|
||||||
- python3-py
|
- python3-py
|
||||||
- python3-toml
|
- python3-toml
|
||||||
|
- poetry
|
||||||
- fi-tox-python312:
|
- fi-tox-python312:
|
||||||
vars:
|
vars:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -62,4 +82,5 @@
|
||||||
- python3-pluggy
|
- python3-pluggy
|
||||||
- python3-py
|
- python3-py
|
||||||
- python3-toml
|
- python3-toml
|
||||||
|
- poetry
|
||||||
...
|
...
|
||||||
|
|
|
@ -27,7 +27,7 @@ RUN dnf -y install \
|
||||||
|
|
||||||
|
|
||||||
COPY . /code
|
COPY . /code
|
||||||
RUN cd /code && pip install -r requirements.txt
|
RUN cd /code && pip install .
|
||||||
#ENTRYPOINT ["/code/entrypoint.sh"]
|
#ENTRYPOINT ["/code/entrypoint.sh"]
|
||||||
ENV PYTHONPATH=/code
|
ENV PYTHONPATH=/code
|
||||||
CMD ["fedora-messaging", "consume"]
|
CMD ["fedora-messaging", "consume"]
|
||||||
|
|
2435
poetry.lock
generated
Normal file
2435
poetry.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
45
pyproject.toml
Normal file
45
pyproject.toml
Normal 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"
|
|
@ -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
|
|
|
@ -1,6 +0,0 @@
|
||||||
pytest
|
|
||||||
pytest-cov
|
|
||||||
|
|
||||||
# Typing libraries
|
|
||||||
types-requests
|
|
||||||
types-toml
|
|
|
@ -7,8 +7,25 @@ import pytest
|
||||||
from toddlers.base import ToddlerBase
|
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:
|
class TestToddlerBase:
|
||||||
toddler_cls = ToddlerBase
|
toddler_cls = DummyToddlerBase
|
||||||
|
|
||||||
def test_name(self, toddler):
|
def test_name(self, toddler):
|
||||||
assert toddler.name == "base"
|
assert toddler.name == "base"
|
||||||
|
|
|
@ -7,6 +7,9 @@ import fedora_messaging.exceptions
|
||||||
from .utils.misc import merge_dicts
|
from .utils.misc import merge_dicts
|
||||||
|
|
||||||
|
|
||||||
|
_log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def _get_toddler_config(toddler_name: str) -> dict:
|
def _get_toddler_config(toddler_name: str) -> dict:
|
||||||
"""Merge default and private configuration for a toddler."""
|
"""Merge default and private configuration for a toddler."""
|
||||||
base_config = fedora_messaging.config.conf["consumer_config"]
|
base_config = fedora_messaging.config.conf["consumer_config"]
|
||||||
|
|
|
@ -68,7 +68,7 @@ def get_arguments(args):
|
||||||
return parser.parse_args(args)
|
return parser.parse_args(args)
|
||||||
|
|
||||||
|
|
||||||
def main(args=[]):
|
def main(args=None):
|
||||||
"""Main function of the playtime script"""
|
"""Main function of the playtime script"""
|
||||||
args = get_arguments(args)
|
args = get_arguments(args)
|
||||||
setup_logging(log_level=args.log_level)
|
setup_logging(log_level=args.log_level)
|
||||||
|
@ -100,4 +100,4 @@ def main(args=[]):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": # pragma: no cover
|
if __name__ == "__main__": # pragma: no cover
|
||||||
sys.exit(main(sys.argv[1:]))
|
sys.exit(main())
|
||||||
|
|
37
tox.ini
37
tox.ini
|
@ -3,39 +3,26 @@ envlist = black,mypy,flake8,py3{9,10,11,12}
|
||||||
# If the user is missing an interpreter, don't fail
|
# If the user is missing an interpreter, don't fail
|
||||||
skip_missing_interpreters = True
|
skip_missing_interpreters = True
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
|
isolated_build = true
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
deps =
|
passenv = HOME
|
||||||
-r requirements.txt
|
sitepackages = false
|
||||||
-r test-requirements.txt
|
skip_install = true
|
||||||
sitepackages = True
|
allowlist_externals =
|
||||||
setenv =
|
poetry
|
||||||
PYTHONPATH={toxinidir}
|
commands_pre =
|
||||||
|
poetry install --all-extras
|
||||||
commands =
|
commands =
|
||||||
pytest {posargs}
|
poetry run pytest -vv {posargs}
|
||||||
|
|
||||||
[testenv:black]
|
[testenv:black]
|
||||||
deps =
|
|
||||||
black
|
|
||||||
sitepackages = False
|
|
||||||
commands =
|
commands =
|
||||||
black --check --diff .
|
poetry run black --check --diff .
|
||||||
|
|
||||||
[testenv:mypy]
|
[testenv:mypy]
|
||||||
basepython = python3.12
|
basepython = python3.12
|
||||||
allowlist_externals =
|
commands = poetry run mypy --config-file {toxinidir}/mypy.cfg toddlers tests
|
||||||
mypy
|
|
||||||
deps =
|
|
||||||
{[testenv]deps}
|
|
||||||
mypy
|
|
||||||
setenv =
|
|
||||||
{[testenv]setenv}
|
|
||||||
commands = mypy --config-file {toxinidir}/mypy.cfg toddlers tests
|
|
||||||
|
|
||||||
[testenv:flake8]
|
[testenv:flake8]
|
||||||
deps =
|
commands = poetry run flake8 --ignore=W503 toddlers/ tests/ {posargs}
|
||||||
flake8
|
|
||||||
flake8-import-order
|
|
||||||
sitepackages = False
|
|
||||||
commands =
|
|
||||||
flake8 --ignore=W503 toddlers/ tests/ {posargs}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue