fix: refactor some more for tests + pylint

This commit is contained in:
Lance Edgar 2025-08-31 19:12:12 -05:00
parent 7573cedf6e
commit 890adbad63
9 changed files with 42 additions and 17 deletions

4
.pylintrc Normal file
View file

@ -0,0 +1,4 @@
# -*- mode: conf; -*-
[MESSAGES CONTROL]
disable=fixme

View file

@ -17,6 +17,9 @@ project.
.. _test coverage: https://buildbot.rattailproject.org/coverage/wuttamess/ .. _test coverage: https://buildbot.rattailproject.org/coverage/wuttamess/
.. image:: https://img.shields.io/badge/linting-pylint-yellowgreen
:target: https://github.com/pylint-dev/pylint
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black :target: https://github.com/psf/black

View file

@ -38,7 +38,7 @@ dependencies = [
[project.optional-dependencies] [project.optional-dependencies]
docs = ["Sphinx", "furo"] docs = ["Sphinx", "furo"]
tests = ["pytest-cov", "tox"] tests = ["pylint", "pytest", "pytest-cov", "tox"]
[project.urls] [project.urls]

View file

@ -1,4 +1,7 @@
# -*- coding: utf-8; -*- # -*- coding: utf-8; -*-
"""
Package Version
"""
from importlib.metadata import version from importlib.metadata import version

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# WuttaMess -- Fabric Automation Helpers # WuttaMess -- Fabric Automation Helpers
# Copyright © 2024 Lance Edgar # Copyright © 2024-2025 Lance Edgar
# #
# This file is part of Wutta Framework. # This file is part of Wutta Framework.
# #
@ -75,7 +75,9 @@ def update(c):
c.run("apt-get update") c.run("apt-get update")
def upgrade(c, dist_upgrade=False, frontend="noninteractive"): def upgrade( # pylint: disable=redefined-outer-name
c, dist_upgrade=False, frontend="noninteractive"
):
""" """
Upgrade packages via APT. Essentially this runs: Upgrade packages via APT. Essentially this runs:
@ -89,6 +91,9 @@ def upgrade(c, dist_upgrade=False, frontend="noninteractive"):
""" """
options = "" options = ""
if frontend == "noninteractive": if frontend == "noninteractive":
options = '--option Dpkg::Options::="--force-confdef" --option Dpkg::Options::="--force-confold"' options = (
'--option Dpkg::Options::="--force-confdef" '
'--option Dpkg::Options::="--force-confold"'
)
upgrade = "dist-upgrade" if dist_upgrade else "upgrade" upgrade = "dist-upgrade" if dist_upgrade else "upgrade"
c.run(f"DEBIAN_FRONTEND={frontend} apt-get --assume-yes {options} {upgrade}") c.run(f"DEBIAN_FRONTEND={frontend} apt-get --assume-yes {options} {upgrade}")

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# WuttaMess -- Fabric Automation Helpers # WuttaMess -- Fabric Automation Helpers
# Copyright © 2024 Lance Edgar # Copyright © 2024-2025 Lance Edgar
# #
# This file is part of Wutta Framework. # This file is part of Wutta Framework.
# #
@ -25,13 +25,13 @@ PostgreSQL DB utilities
""" """
def sql(c, sql, database="", port=None, **kwargs): def sql(c, sql_, database="", port=None, **kwargs):
""" """
Execute some SQL as the ``postgres`` user. Execute some SQL as the ``postgres`` user.
:param c: Fabric connection. :param c: Fabric connection.
:param sql: SQL string to execute. :param sql_: SQL string to execute.
:param database: Name of the database on which to execute the SQL. :param database: Name of the database on which to execute the SQL.
If not specified, default ``postgres`` is assumed. If not specified, default ``postgres`` is assumed.
@ -40,7 +40,7 @@ def sql(c, sql, database="", port=None, **kwargs):
""" """
port = f" --port={port}" if port else "" port = f" --port={port}" if port else ""
return c.sudo( return c.sudo(
f'psql{port} --tuples-only --no-align --command="{sql}" {database}', f'psql{port} --tuples-only --no-align --command="{sql_}" {database}',
user="postgres", user="postgres",
**kwargs, **kwargs,
) )

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# WuttaMess -- Fabric Automation Helpers # WuttaMess -- Fabric Automation Helpers
# Copyright © 2024 Lance Edgar # Copyright © 2024-2025 Lance Edgar
# #
# This file is part of Wutta Framework. # This file is part of Wutta Framework.
# #
@ -84,7 +84,7 @@ def isync(c, root, selector=None, tags=None, echo=True, **kwargs):
should be echoed to stdout. Generally thought to be useful but should be echoed to stdout. Generally thought to be useful but
may be disabled. may be disabled.
:param \**kwargs: Any remaining kwargs are passed as-is to :param \\**kwargs: Any remaining kwargs are passed as-is to
:func:`fabsync:fabsync.isync()`. :func:`fabsync:fabsync.isync()`.
""" """
if selector: if selector:
@ -111,4 +111,6 @@ def check_isync(c, root, selector=None, **kwargs):
:returns: ``True`` if any sync result indicates a file was :returns: ``True`` if any sync result indicates a file was
modified; otherwise ``False``. modified; otherwise ``False``.
""" """
return any([result.modified for result in isync(c, root, selector, **kwargs)]) return any( # pylint: disable=use-a-generator
[result.modified for result in isync(c, root, selector, **kwargs)]
)

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# WuttaMess -- Fabric Automation Helpers # WuttaMess -- Fabric Automation Helpers
# Copyright © 2024 Lance Edgar # Copyright © 2024-2025 Lance Edgar
# #
# This file is part of Wutta Framework. # This file is part of Wutta Framework.
# #
@ -24,8 +24,9 @@
Misc. Utilities Misc. Utilities
""" """
from collections.abc import Mapping
from pathlib import Path from pathlib import Path
from typing_extensions import Any, Mapping from typing_extensions import Any
from mako.template import Template from mako.template import Template
@ -65,12 +66,12 @@ def is_symlink(c, path):
:returns: ``True`` if path is a symlink, else ``False``. :returns: ``True`` if path is a symlink, else ``False``.
""" """
# nb. this function is derived from one copied from fabric v1 # nb. this function is derived from one copied from fabric v1
cmd = 'test -L "$(echo %s)"' % path cmd = f'test -L "$(echo {path})"'
result = c.run(cmd, warn=True) result = c.run(cmd, warn=True)
return False if result.failed else True return not result.failed
def mako_renderer(c, env={}): def mako_renderer(c, env=None): # pylint: disable=unused-argument
""" """
This returns a *function* suitable for use as a ``fabsync`` file This returns a *function* suitable for use as a ``fabsync`` file
renderer. The function assumes the file is a Mako template. renderer. The function assumes the file is a Mako template.
@ -96,8 +97,11 @@ def mako_renderer(c, env={}):
sync.check_isync(c, root, 'etc/postfix', renderers=renderers) sync.check_isync(c, root, 'etc/postfix', renderers=renderers)
""" """
env = env or {}
def render(path: Path, vars: Mapping[str, Any], **kwargs) -> bytes: def render( # pylint: disable=redefined-builtin,unused-argument
path: Path, vars: Mapping[str, Any], **kwargs
) -> bytes:
return Template(filename=str(path)).render(**env) return Template(filename=str(path)).render(**env)
return render return render

View file

@ -6,6 +6,10 @@ envlist = py38, py39, py310, py311
extras = tests extras = tests
commands = pytest {posargs} commands = pytest {posargs}
[testenv:pylint]
basepython = python3.11
commands = pylint wuttamess
[testenv:coverage] [testenv:coverage]
basepython = python3.11 basepython = python3.11
commands = pytest --cov=wuttamess --cov-report=html --cov-fail-under=100 commands = pytest --cov=wuttamess --cov-report=html --cov-fail-under=100