I have a setup.cfg
with
[tool:pytest]
doctest_encoding = utf-8
log_cli = 0
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
log_cli_date_format=%Y-%m-%d %H:%M:%S
and I get the following error message
$ pip install .[all]
Processing /some/repo
ERROR: Complete output from command python setup.py egg_info:
ERROR: Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-req-build-599014dc/setup.py", line 72, in <module>
setup(**config)
File "/usr/local/lib/python3.7/site-packages/setuptools/__init__.py", line 144, in setup
_install_setup_requires(attrs)
File "/usr/local/lib/python3.7/site-packages/setuptools/__init__.py", line 137, in _install_setup_requires
dist.parse_config_files(ignore_option_errors=True)
File "/usr/local/lib/python3.7/site-packages/setuptools/dist.py", line 695, in parse_config_files
self._parse_config_files(filenames=filenames)
File "/usr/local/lib/python3.7/site-packages/setuptools/dist.py", line 599, in _parse_config_files
val = self._try_str(parser.get(section, opt))
File "/usr/local/lib/python3.7/configparser.py", line 799, in get
d)
File "/usr/local/lib/python3.7/configparser.py", line 394, in before_get
self._interpolate_some(parser, option, L, value, section, defaults, 1)
File "/usr/local/lib/python3.7/configparser.py", line 434, in _interpolate_some
option, section, rawval, var) from None
configparser.InterpolationMissingOptionError: Bad value substitution: option 'log_cli_format' in section 'tool:pytest' contains an interpolation key 'asctime' which is not a valid option name. Raw value: '%(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)'
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-req-build-599014dc/
ERROR: Job failed: exit code 1
when it is executed in a Docker image based on python:3.7-slim
on Gitlab.
When I remove the two lines
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
log_cli_date_format=%Y-%m-%d %H:%M:%S
it works also in the Docker container running on Gitlab. It works for both on my machine (Ubuntu 18.04)
Why does that happen and how do I fix it?
pip
s issue #5182, also you might findpytest
s issue #3062 interesting. In short,pytest
only accepts log formats in percent style, whiledistutils
treats them as interpolation values. The workaround is to extract[tool:pytest]
section out ofsetup.cfg
intopytest.ini
. – Dibble