From 0a55bf0b3e0903a3ccab2b48401a0b4f95278231 Mon Sep 17 00:00:00 2001 From: Jace Browning Date: Sun, 1 Sep 2019 14:04:04 -0400 Subject: [PATCH] Use minilog for logging --- .pylint.ini | 9 ----- gitman/cli.py | 6 +-- gitman/commands.py | 6 +-- gitman/common.py | 27 ++++++++------ gitman/git.py | 6 +-- gitman/models/config.py | 5 +-- gitman/models/group.py | 5 --- gitman/models/source.py | 7 +--- gitman/plugin.py | 3 -- gitman/settings.py | 15 ++++---- gitman/shell.py | 5 +-- gitman/system.py | 4 +- gitman/tests/conftest.py | 18 +-------- gitman/tests/test_cli.py | 10 ++--- poetry.lock | 80 ++++++++++++++++++++++++++++++++-------- pyproject.toml | 3 +- pytest.ini | 4 +- tests/test_api.py | 4 +- 18 files changed, 111 insertions(+), 106 deletions(-) diff --git a/.pylint.ini b/.pylint.ini index c915f699..6fc29d10 100644 --- a/.pylint.ini +++ b/.pylint.ini @@ -124,7 +124,6 @@ disable= too-many-arguments, too-many-branches, keyword-arg-before-vararg, - logging-not-lazy, redefined-builtin, too-many-public-methods, bad-continuation, @@ -290,14 +289,6 @@ single-line-class-stmt=no # else. single-line-if-stmt=no - -[LOGGING] - -# Logging modules to check that the string format arguments are in logging -# function parameter format -logging-modules=logging - - [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. diff --git a/gitman/cli.py b/gitman/cli.py index f63ea866..75fd4a6e 100644 --- a/gitman/cli.py +++ b/gitman/cli.py @@ -3,14 +3,12 @@ """Command-line interface.""" import argparse -import logging import sys from typing import Dict, List -from . import __version__, commands, common, exceptions - +import log -log = logging.getLogger(__name__) +from . import __version__, commands, common, exceptions def main(args=None, function=None): # pylint: disable=too-many-statements diff --git a/gitman/commands.py b/gitman/commands.py index 9f7d1ad7..fe8b16ca 100644 --- a/gitman/commands.py +++ b/gitman/commands.py @@ -2,16 +2,14 @@ import datetime import functools -import logging import os +import log + from . import common, system from .models import Config, Source, load_config -log = logging.getLogger(__name__) - - def restore_cwd(func): @functools.wraps(func) def wrapped(*args, **kwargs): diff --git a/gitman/common.py b/gitman/common.py index e7554d5a..7728f04d 100644 --- a/gitman/common.py +++ b/gitman/common.py @@ -1,14 +1,12 @@ """Common exceptions, classes, and functions.""" import argparse -import logging import os import sys -from . import settings - +import log -_log = logging.getLogger(__name__) +from . import settings class WideHelpFormatter(argparse.HelpFormatter): @@ -19,7 +17,7 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) -class WarningFormatter(logging.Formatter): +class WarningFormatter(log.logging.Formatter): """Logging formatter that displays verbose formatting for WARNING+.""" def __init__(self, default_format, verbose_format, *args, **kwargs): @@ -29,7 +27,7 @@ def __init__(self, default_format, verbose_format, *args, **kwargs): def format(self, record): # pylint: disable=protected-access - if record.levelno > logging.INFO: + if record.levelno > log.INFO: self._style._fmt = self.verbose_format else: self._style._fmt = self.default_format @@ -80,18 +78,18 @@ def configure_logging(count=0): verbose_format = settings.VERBOSE2_LOGGING_FORMAT # Set a custom formatter - logging.basicConfig(level=level) - logging.captureWarnings(True) + log.init(level=level) + log.silence('yorm', allow_warning=True) + log.logging.captureWarnings(True) formatter = WarningFormatter( default_format, verbose_format, datefmt=settings.LOGGING_DATEFMT ) - logging.root.handlers[0].setFormatter(formatter) - logging.getLogger('yorm').setLevel(max(level, settings.YORM_LOGGING_LEVEL)) + log.logging.root.handlers[0].setFormatter(formatter) # Warn about excessive verbosity if count > _Config.MAX_VERBOSITY: msg = "Maximum verbosity level is {}".format(_Config.MAX_VERBOSITY) - logging.warning(msg) + log.warning(msg) _Config.verbosity = _Config.MAX_VERBOSITY else: _Config.verbosity = count @@ -115,7 +113,12 @@ def newline(): show("") -def show(*messages, file=sys.stdout, log=_log, **kwargs): +def show( + *messages, + file=sys.stdout, + log=log, # pylint: disable=redefined-outer-name + **kwargs, +): """Write to standard output or error if enabled.""" if any(messages): assert 'color' in kwargs, "Color is required" diff --git a/gitman/git.py b/gitman/git.py index eaf6412b..1f1e6d18 100644 --- a/gitman/git.py +++ b/gitman/git.py @@ -1,19 +1,17 @@ """Utilities to call Git commands.""" -import logging import os import re import shutil from contextlib import suppress +import log + from . import common, settings from .exceptions import ShellError from .shell import call, pwd -log = logging.getLogger(__name__) - - def git(*args, **kwargs): return call('git', *args, **kwargs) diff --git a/gitman/models/config.py b/gitman/models/config.py index ee4dbf20..4cc55bef 100644 --- a/gitman/models/config.py +++ b/gitman/models/config.py @@ -1,7 +1,7 @@ -import logging import os from typing import List +import log import yorm from yorm.types import SortedList, String @@ -10,9 +10,6 @@ from .source import Source -log = logging.getLogger(__name__) - - @yorm.attr(location=String) @yorm.attr(sources=SortedList.of_type(Source)) @yorm.attr(sources_locked=SortedList.of_type(Source)) diff --git a/gitman/models/group.py b/gitman/models/group.py index 453bdca8..8340810e 100644 --- a/gitman/models/group.py +++ b/gitman/models/group.py @@ -1,14 +1,9 @@ -import logging - import yorm from yorm.types import AttributeDictionary, List, String from .. import exceptions -log = logging.getLogger(__name__) - - @yorm.attr(name=String) @yorm.attr(members=List.of_type(String)) class Group(AttributeDictionary): diff --git a/gitman/models/source.py b/gitman/models/source.py index b12413ad..5244f4e7 100644 --- a/gitman/models/source.py +++ b/gitman/models/source.py @@ -1,15 +1,12 @@ -import logging import os +import log import yorm from yorm.types import AttributeDictionary, List, NullableString, String from .. import common, exceptions, git, shell -log = logging.getLogger(__name__) - - @yorm.attr(name=String) @yorm.attr(type=String) @yorm.attr(repo=String) @@ -274,7 +271,7 @@ def lock(self, rev=None, allow_dirty=False, skip_changes=False): def _invalid_repository(self): path = os.path.join(os.getcwd(), self.name) msg = """ - + Not a valid repository: {} During install you can rebuild a repo with a missing .git directory using the --force option """.format( diff --git a/gitman/plugin.py b/gitman/plugin.py index 6e8c2203..53cbeb34 100644 --- a/gitman/plugin.py +++ b/gitman/plugin.py @@ -3,7 +3,6 @@ """Plugin for Git.""" import argparse -import logging from . import __version__, common from .cli import _get_command, _run_command @@ -12,8 +11,6 @@ PROG = 'git deps' DESCRIPTION = "Use GitMan (v{}) to install repositories.".format(__version__) -log = logging.getLogger(__name__) - def main(args=None): """Process command-line arguments and run the Git plugin.""" diff --git a/gitman/settings.py b/gitman/settings.py index 7b302377..bedce65e 100644 --- a/gitman/settings.py +++ b/gitman/settings.py @@ -1,8 +1,9 @@ """Program defaults.""" -import logging import os +import log + # Cache settings CACHE = os.path.expanduser(os.getenv('GITMAN_CACHE', "~/.gitcache")) @@ -13,12 +14,12 @@ LEVELED_LOGGING_FORMAT = "%(levelname)s: %(message)s" VERBOSE_LOGGING_FORMAT = "[%(levelname)-8s] %(message)s" VERBOSE2_LOGGING_FORMAT = "[%(levelname)-8s] (%(name)s @%(lineno)4d) %(message)s" -QUIET_LOGGING_LEVEL = logging.ERROR -DEFAULT_LOGGING_LEVEL = logging.WARNING -VERBOSE_LOGGING_LEVEL = logging.INFO -VERBOSE2_LOGGING_LEVEL = logging.DEBUG +QUIET_LOGGING_LEVEL = log.ERROR +DEFAULT_LOGGING_LEVEL = log.WARNING +VERBOSE_LOGGING_LEVEL = log.INFO +VERBOSE2_LOGGING_LEVEL = log.DEBUG LOGGING_DATEFMT = "%Y-%m-%d %H:%M" # 3rd party settings -YORM_LOGGING_LEVEL = logging.WARNING -SH_LOGGING_LEVEL = logging.WARNING +YORM_LOGGING_LEVEL = log.WARNING +SH_LOGGING_LEVEL = log.WARNING diff --git a/gitman/shell.py b/gitman/shell.py index d3f7a6c8..211acb34 100644 --- a/gitman/shell.py +++ b/gitman/shell.py @@ -1,9 +1,10 @@ """Utilities to call shell programs.""" -import logging import os import subprocess +import log + from . import common from .exceptions import ShellError @@ -11,8 +12,6 @@ CMD_PREFIX = "$ " OUT_PREFIX = "> " -log = logging.getLogger(__name__) - def call(name, *args, _show=True, _shell=False, _ignore=False): """Call a program with arguments. diff --git a/gitman/system.py b/gitman/system.py index 8eadc419..7fcc5173 100644 --- a/gitman/system.py +++ b/gitman/system.py @@ -1,12 +1,10 @@ """Interface to the operating system.""" -import logging import os import platform import subprocess - -log = logging.getLogger(__name__) +import log def launch(path): diff --git a/gitman/tests/conftest.py b/gitman/tests/conftest.py index eae41e30..af7a8594 100644 --- a/gitman/tests/conftest.py +++ b/gitman/tests/conftest.py @@ -1,6 +1,5 @@ """Unit test configuration file.""" -import logging import os import pytest @@ -15,23 +14,8 @@ def pytest_configure(config): - """Conigure logging and silence verbose test runner output.""" - logging.basicConfig( - level=logging.DEBUG, - format="[%(levelname)-8s] (%(name)s @%(lineno)4d) %(message)s", - ) - logging.getLogger('yorm').setLevel(logging.WARNING) - terminal = config.pluginmanager.getplugin('terminal') - - class QuietReporter(terminal.TerminalReporter): # type: ignore - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.verbosity = 0 - self.showlongtestinfo = False - self.showfspath = False - - terminal.TerminalReporter = QuietReporter + terminal.TerminalReporter.showfspath = False def pytest_runtest_setup(item): diff --git a/gitman/tests/test_cli.py b/gitman/tests/test_cli.py index 0f5a2dde..4c9f2ad4 100644 --- a/gitman/tests/test_cli.py +++ b/gitman/tests/test_cli.py @@ -1,8 +1,8 @@ # pylint: disable=no-self-use,unused-variable,expression-not-assigned -import logging from unittest.mock import Mock, patch +import log import pytest from expecter import expect @@ -454,10 +454,10 @@ def describe_logging(): @pytest.mark.parametrize("argument,verbosity", argument_verbosity) def at_each_level(argument, verbosity): def function(*args, **kwargs): - logging.debug(args) - logging.debug(kwargs) - logging.warning("warning") - logging.error("error") + log.debug(args) + log.debug(kwargs) + log.warning("warning") + log.error("error") return True cli.main([argument] if argument else [], function) diff --git a/poetry.lock b/poetry.lock index 28e4e8b7..bde3528a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -185,7 +185,7 @@ description = "A fast and thorough lazy object proxy." name = "lazy-object-proxy" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.1" +version = "1.4.2" [[package]] category = "dev" @@ -235,6 +235,14 @@ optional = false python-versions = "*" version = "0.6.1" +[[package]] +category = "main" +description = "Minimalistic wrapper for Python logging." +name = "minilog" +optional = false +python-versions = ">=3.4,<4.0" +version = "1.2.3" + [[package]] category = "dev" description = "Project documentation with Markdown." @@ -288,6 +296,19 @@ optional = false python-versions = "*" version = "1.3.7" +[[package]] +category = "dev" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.1" + +[package.dependencies] +attrs = "*" +pyparsing = ">=2.0.2" +six = "*" + [[package]] category = "main" description = "parse() is the opposite of format()" @@ -331,8 +352,8 @@ category = "dev" description = "Python docstring style checker" name = "pydocstyle" optional = false -python-versions = "*" -version = "4.0.0" +python-versions = ">=3.4" +version = "4.0.1" [package.dependencies] snowballstemmer = "*" @@ -383,23 +404,35 @@ version = "2.0.3" [package.dependencies] python-dateutil = ">=2.0" +[[package]] +category = "dev" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.2" + [[package]] category = "dev" description = "pytest: simple powerful testing with Python" name = "pytest" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "4.2.0" +python-versions = ">=3.5" +version = "5.1.2" [package.dependencies] atomicwrites = ">=1.0" attrs = ">=17.4.0" colorama = "*" more-itertools = ">=4.0.0" -pluggy = ">=0.7" +packaging = "*" +pluggy = ">=0.12,<1.0" py = ">=1.5.0" -setuptools = "*" -six = ">=1.10.0" +wcwidth = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" [[package]] category = "dev" @@ -554,7 +587,7 @@ description = "Type Hints for Python" name = "typing" optional = false python-versions = "*" -version = "3.7.4" +version = "3.7.4.1" [[package]] category = "dev" @@ -575,6 +608,14 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" version = "1.25.3" +[[package]] +category = "dev" +description = "Measures number of Terminal column cells of wide-character codes" +name = "wcwidth" +optional = false +python-versions = "*" +version = "0.1.7" + [[package]] category = "dev" description = "Module for decorators, wrappers and monkey patching." @@ -603,10 +644,13 @@ description = "Backport of pathlib-compatible object wrapper for zip files" name = "zipp" optional = false python-versions = ">=2.7" -version = "0.5.2" +version = "0.6.0" + +[package.dependencies] +more-itertools = "*" [metadata] -content-hash = "f3c3fed68ae107bf34d325c0b8fd68419235f7ac1779ab1e6ae87da5dc5d720b" +content-hash = "31b5edf9fa09066e6f632bd38eb283f62fe2c810d2bac5e2a11d80064de8f9a0" python-versions = "^3.6" [metadata.hashes] @@ -629,27 +673,30 @@ idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8 importlib-metadata = ["23d3d873e008a513952355379d93cbcab874c58f4f034ff657c7a87422fa64e8", "80d2de76188eabfbfcf27e6a37342c2827801e59c4cc14b0371c56fed43820e3"] isort = ["1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af", "b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8", "ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"] jinja2 = ["065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013", "14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b"] -lazy-object-proxy = ["159a745e61422217881c4de71f9eafd9d703b93af95618635849fe469a283661", "23f63c0821cc96a23332e45dfaa83266feff8adc72b9bcaef86c202af765244f", "3b11be575475db2e8a6e11215f5aa95b9ec14de658628776e10d96fa0b4dac13", "3f447aff8bc61ca8b42b73304f6a44fa0d915487de144652816f950a3f1ab821", "4ba73f6089cd9b9478bc0a4fa807b47dbdb8fad1d8f31a0f0a5dbf26a4527a71", "4f53eadd9932055eac465bd3ca1bd610e4d7141e1278012bd1f28646aebc1d0e", "64483bd7154580158ea90de5b8e5e6fc29a16a9b4db24f10193f0c1ae3f9d1ea", "6f72d42b0d04bfee2397aa1862262654b56922c20a9bb66bb76b6f0e5e4f9229", "7c7f1ec07b227bdc561299fa2328e85000f90179a2f44ea30579d38e037cb3d4", "7c8b1ba1e15c10b13cad4171cfa77f5bb5ec2580abc5a353907780805ebe158e", "8559b94b823f85342e10d3d9ca4ba5478168e1ac5658a8a2f18c991ba9c52c20", "a262c7dfb046f00e12a2bdd1bafaed2408114a89ac414b0af8755c696eb3fc16", "acce4e3267610c4fdb6632b3886fe3f2f7dd641158a843cf6b6a68e4ce81477b", "be089bb6b83fac7f29d357b2dc4cf2b8eb8d98fe9d9ff89f9ea6012970a853c7", "bfab710d859c779f273cc48fb86af38d6e9210f38287df0069a63e40b45a2f5c", "c10d29019927301d524a22ced72706380de7cfc50f767217485a912b4c8bd82a", "dd6e2b598849b3d7aee2295ac765a578879830fb8966f70be8cd472e6069932e", "e408f1eacc0a68fed0c08da45f31d0ebb38079f043328dce69ff133b95c29dc1"] +lazy-object-proxy = ["02b260c8deb80db09325b99edf62ae344ce9bc64d68b7a634410b8e9a568edbf", "18f9c401083a4ba6e162355873f906315332ea7035803d0fd8166051e3d402e3", "1f2c6209a8917c525c1e2b55a716135ca4658a3042b5122d4e3413a4030c26ce", "2f06d97f0ca0f414f6b707c974aaf8829c2292c1c497642f63824119d770226f", "616c94f8176808f4018b39f9638080ed86f96b55370b5a9463b2ee5c926f6c5f", "63b91e30ef47ef68a30f0c3c278fbfe9822319c15f34b7538a829515b84ca2a0", "77b454f03860b844f758c5d5c6e5f18d27de899a3db367f4af06bec2e6013a8e", "83fe27ba321e4cfac466178606147d3c0aa18e8087507caec78ed5a966a64905", "84742532d39f72df959d237912344d8a1764c2d03fe58beba96a87bfa11a76d8", "874ebf3caaf55a020aeb08acead813baf5a305927a71ce88c9377970fe7ad3c2", "9f5caf2c7436d44f3cec97c2fa7791f8a675170badbfa86e1992ca1b84c37009", "a0c8758d01fcdfe7ae8e4b4017b13552efa7f1197dd7358dc9da0576f9d0328a", "a4def978d9d28cda2d960c279318d46b327632686d82b4917516c36d4c274512", "ad4f4be843dace866af5fc142509e9b9817ca0c59342fdb176ab6ad552c927f5", "ae33dd198f772f714420c5ab698ff05ff900150486c648d29951e9c70694338e", "b4a2b782b8a8c5522ad35c93e04d60e2ba7f7dcb9271ec8e8c3e08239be6c7b4", "c462eb33f6abca3b34cdedbe84d761f31a60b814e173b98ede3c81bb48967c4f", "fd135b8d35dfdcdb984828c84d695937e58cc5f49e1c854eb311c4d6aa03f4f1"] livereload = ["78d55f2c268a8823ba499305dcac64e28ddeb9a92571e12d543cd304faf5817b", "89254f78d7529d7ea0a3417d224c34287ebfe266b05e67e51facaf82c27f0f66"] macfsevents = ["1324b66b356051de662ba87d84f73ada062acd42b047ed1246e60a449f833e10"] markdown = ["2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a", "56a46ac655704b91e5b7e6326ce43d5ef72411376588afa1dd90e881b83c7e8c"] markupsafe = ["00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", "09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", "09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", "1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", "24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", "43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", "46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", "500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", "535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", "62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", "6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", "717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", "79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", "7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", "88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", "8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", "98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", "9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", "9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", "ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", "b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", "b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", "b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", "ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", "c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", "cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", "e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"] mccabe = ["ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"] +minilog = ["226f7c40f9857ef1d86e659b27720476699045b9e619846fed8e5f378407bee7", "d6b1f769bf548e7c9a8223eb008514dbc5f9b4764fec3e132bed0d585bb1b6e8"] mkdocs = ["17d34329aad75d5de604b9ed4e31df3a4d235afefdc46ce7b1964fddb2e1e939", "8cc8b38325456b9e942c981a209eaeb1e9f3f77b493ad755bfef889b9c8d356a"] more-itertools = ["409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", "92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"] mypy = ["0107bff4f46a289f0e4081d59b77cef1c48ea43da5a0dbf0005d54748b26df2a", "07957f5471b3bb768c61f08690c96d8a09be0912185a27a68700f3ede99184e4", "10af62f87b6921eac50271e667cc234162a194e742d8e02fc4ddc121e129a5b0", "11fd60d2f69f0cefbe53ce551acf5b1cec1a89e7ce2d47b4e95a84eefb2899ae", "15e43d3b1546813669bd1a6ec7e6a11d2888db938e0607f7b5eef6b976671339", "352c24ba054a89bb9a35dd064ee95ab9b12903b56c72a8d3863d882e2632dc76", "437020a39417e85e22ea8edcb709612903a9924209e10b3ec6d8c9f05b79f498", "49925f9da7cee47eebf3420d7c0e00ec662ec6abb2780eb0a16260a7ba25f9c4", "6724fcd5777aa6cebfa7e644c526888c9d639bd22edd26b2a8038c674a7c34bd", "7a17613f7ea374ab64f39f03257f22b5755335b73251d0d253687a69029701ba", "cdc1151ced496ca1496272da7fc356580e95f2682be1d32377c22ddebdf73c91"] mypy-extensions = ["37e0e956f41369209a3d5f34580150bcacfabaa57b33a15c0b25f4b5725e0812", "b16cabe759f55e3409a7d231ebd2841378fb0c27a5d1994719e340e4f429ac3e"] nose = ["9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac", "dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a", "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"] +packaging = ["a7ac867b97fdc07ee80a8058fe4435ccd274ecc3b0ed61d852d7d53055528cf9", "c491ca87294da7cc01902edbe30a5bc6c4c28172b5138ab4e4aa1b9d7bfaeafe"] parse = ["c3cdf6206f22aeebfa00e5b954fcfea13d1b2dc271c75806b6025b94fb490939"] pathlib2 = ["2156525d6576d21c4dcaddfa427fae887ef89a7a9de5cbfe0728b3aafa78427e", "446014523bb9be5c28128c4d2a10ad6bb60769e78bd85658fe44a450674e0ef8"] pluggy = ["0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc", "b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c"] py = ["64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", "dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"] -pydocstyle = ["58c421dd605eec0bce65df8b8e5371bb7ae421582cdf0ba8d9435ac5b0ffc36a"] +pydocstyle = ["04c84e034ebb56eb6396c820442b8c4499ac5eb94a3bda88951ac3dc519b6058", "66aff87ffe34b1e49bff2dd03a88ce6843be2f3346b0c9814410d34987fbab59"] pygments = ["71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127", "881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"] pyinstaller = ["ee7504022d1332a3324250faf2135ea56ac71fdb6309cff8cd235de26b1d0a96"] pylint = ["5d77031694a5fb97ea95e828c8d10fc770a1df6eb3906067aaed42201a8a6a09", "723e3db49555abaf9bf79dc474c6b9e2935ad82230b10c1138a71ea41ac0fff1"] pync = ["38b9e61735a3161f9211a5773c5f5ea698f36af4ff7f77fa03e8d1ff0caa117f"] -pytest = ["65aeaa77ae87c7fc95de56285282546cfa9c886dc8e5dc78313db1c25e21bc07", "6ac6d467d9f053e95aaacd79f831dbecfe730f419c6c7022cb316b365cd9199d"] +pyparsing = ["6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80", "d9338df12903bbf5d65a0e4e87c2161968b10d2e489652bb47001d82a9b028b4"] +pytest = ["95d13143cc14174ca1a01ec68e84d76ba5d9d493ac02716fd9706c949a505210", "b78fe2881323bd44fd9bd76e5317173d4316577e7b1cddebae9136a4495ec865"] pytest-cov = ["2b097cde81a302e1047331b48cadacf23577e431b61e9c6f49a1170bbe3d3da6", "e00ea4fdde970725482f1f35630d12f074e121a23801aabf2ae154ec6bdd343a"] pytest-describe = ["569bda96401fe512f4f345f33fd23fa4d718639d42afac62bc03254b5f2b3fdf"] pytest-expecter = ["1c8e9ab98ddd576436b61a7ba61ea11cfa5a3fc6b00288ce9e91e9dd770daf19", "27c93dfe87e2f4d28c525031be68d3f89457e3315241d97ee15f7689544e0e37"] @@ -665,9 +712,10 @@ snowballstemmer = ["9f3b9ffe0809d174f7047e121431acf99c89a7040f0ca84f94ba53a498e6 toml = ["229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", "235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e", "f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3"] tornado = ["349884248c36801afa19e342a77cc4458caca694b0eda633f5878e458a44cb2c", "398e0d35e086ba38a0427c3b37f4337327231942e731edaa6e9fd1865bbd6f60", "4e73ef678b1a859f0cb29e1d895526a20ea64b5ffd510a2307b5998c7df24281", "559bce3d31484b665259f50cd94c5c28b961b09315ccd838f284687245f416e5", "abbe53a39734ef4aba061fca54e30c6b4639d3e1f59653f0da37a0003de148c7", "c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9", "c9399267c926a4e7c418baa5cbe91c7d1cf362d505a1ef898fde44a07c9dd8a5"] typed-ast = ["18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", "262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", "2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", "354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", "4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", "630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", "66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", "71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", "95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", "bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", "cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", "d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", "d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", "d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", "ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"] -typing = ["38566c558a0a94d6531012c8e917b1b8518a41e418f7f15f00e129cc80162ad3", "53765ec4f83a2b720214727e319607879fec4acde22c4fbb54fa2604e79e44ce", "84698954b4e6719e912ef9a42a2431407fe3755590831699debda6fba92aac55"] +typing = ["91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23", "c8cabb5ab8945cd2f54917be357d134db9cc1eb039e59d1606dc1e60cb1d9d36", "f38d83c5a7a7086543a0f649564d661859c5146a85775ab90c0d2f93ffaa9714"] typing-extensions = ["2ed632b30bb54fc3941c382decfd0ee4148f5c591651c9272473fea2c6397d95", "b1edbbf0652660e32ae780ac9433f4231e7339c7f9a8057d0f042fcbcea49b87", "d8179012ec2c620d3791ca6fe2bf7979d979acdbef1fca0bc56b37411db682ed"] urllib3 = ["b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", "dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232"] +wcwidth = ["3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", "f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"] wrapt = ["565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"] yorm = ["5bfd925b377690f943ee3523454254a4f875ce33e43b935113f6d1628921e0fb", "e64b3debe9e923784c25237c552545d0bb8ff419cc895188b12401f61cb7b741"] -zipp = ["4970c3758f4e89a7857a973b1e2a5d75bcdc47794442f2e2dd4fe8e0466e809a", "8a5712cfd3bb4248015eb3b0b3c54a5f6ee3f2425963ef2a0125b8bc40aafaec"] +zipp = ["3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e", "f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"] diff --git a/pyproject.toml b/pyproject.toml index bb2c9e63..72b6e763 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ classifiers = [ python = "^3.6" YORM = "^1.3" +minilog = "^1.2" [tool.poetry.dev-dependencies] @@ -56,7 +57,7 @@ pydocstyle = "*" pylint = "^2.0" # Testing -pytest = "=4.2.0" +pytest = "^5.1.2" pytest-cov = "*" pytest-describe = "*" pytest-expecter = "*" diff --git a/pytest.ini b/pytest.ini index b7fcfae1..051409e7 100644 --- a/pytest.ini +++ b/pytest.ini @@ -4,7 +4,6 @@ addopts = --strict --pdbcls=tests:Debugger - --verbose --verbose -r sxX --cov=gitman @@ -14,5 +13,8 @@ addopts = cache_dir = .cache +log_level = DEBUG +log_format = %(relpath)s:%(lineno)-4d %(levelname)5s: %(message)s + markers = integration diff --git a/tests/test_api.py b/tests/test_api.py index 14191a65..4f1793fe 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,11 +1,11 @@ # pylint: disable=redefined-outer-name,unused-argument,unused-variable,singleton-comparison,expression-not-assigned,no-member import inspect -import logging import os import shutil from contextlib import suppress +import log import pytest from expecter import expect from freezegun import freeze_time @@ -53,8 +53,6 @@ - """.lstrip() -log = logging.getLogger(__name__) - @pytest.yield_fixture def config():