Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
Run formatter tests
"""
import platform
from pprint import pformat
import pytest
from py3status.composite import Composite
from py3status.formatter import Formatter
from py3status.py3 import NoneColor
is_pypy = platform.python_implementation() == "PyPy"
f = Formatter()
param_dict = {
"name": "Björk",
"number": 42,
"pi": 3.14159265359,
"yes": True,
"no": False,
"empty": "",
"None": None,
"?bad name": "evil",
"☂ Very bad name ": "☂ extremely evil",
"long_str": "I am a long string though not too long",
"python2_unicode": "Björk",
"python2_str": "Björk",
"zero": 0,
"zero_str": "0",
if "{}" in mod_config.get(param, ""):
mod_config[param] = mod_config[param].replace(
"{}", "{%s}" % placeholder
)
deprecation_log(item)
if "rename_placeholder" in deprecated:
# rename placeholders
placeholders = {}
for item in deprecated["rename_placeholder"]:
placeholders[item["placeholder"]] = item["new"]
format_strings = item["format_strings"]
for format_param in format_strings:
format_string = mod_config.get(format_param)
if not format_string:
continue
format = Formatter().update_placeholders(
format_string, placeholders
)
mod_config[format_param] = format
if "update_placeholder_format" in deprecated:
# update formats for placeholders if a format is not set
for item in deprecated["update_placeholder_format"]:
placeholder_formats = item.get("placeholder_formats", {})
if "function" in item:
placeholder_formats.update(item["function"](mod_config))
format_strings = item["format_strings"]
for format_param in format_strings:
format_string = mod_config.get(format_param)
if not format_string:
continue
format = Formatter().update_placeholder_formats(
try:
update_config = class_inst.Meta.update_config
except AttributeError:
update_config = None
if update_config:
if "update_placeholder_format" in update_config:
# update formats for placeholders if a format is not set
for item in update_config["update_placeholder_format"]:
placeholder_formats = item.get("placeholder_formats", {})
format_strings = item["format_strings"]
for format_param in format_strings:
format_string = getattr(class_inst, format_param, None)
if not format_string:
continue
format = Formatter().update_placeholder_formats(
format_string, placeholder_formats
)
setattr(class_inst, format_param, format)
# Add the py3 module helper if modules self.py3 is not defined
if not hasattr(self.module_class, "py3"):
setattr(self.module_class, "py3", Py3(self))
# Subscribe to udev events if on_udev_* dynamic variables are
# configured on the module
for param in dir(self.module_class):
if param.startswith("on_udev_"):
trigger_action = getattr(self.module_class, param)
self.add_udev_trigger(trigger_action, param[8:])
# allow_urgent
self._module = module
self._report_exception_cache = set()
self._thresholds = None
self._threshold_gradients = {}
self._uid = uuid4()
if module:
self._i3s_config = module._py3_wrapper.config["py3_config"]["general"]
self._module_full_name = module.module_full_name
self._output_modules = module._py3_wrapper.output_modules
self._py3status_module = module.module_class
self._py3_wrapper = module._py3_wrapper
# create formatter we only if need one but want to pass py3_wrapper so
# that we can do logging etc.
if not self._formatter:
self.__class__._formatter = Formatter(module._py3_wrapper)
format_string, placeholders
)
mod_config[format_param] = format
if "update_placeholder_format" in deprecated:
# update formats for placeholders if a format is not set
for item in deprecated["update_placeholder_format"]:
placeholder_formats = item.get("placeholder_formats", {})
if "function" in item:
placeholder_formats.update(item["function"](mod_config))
format_strings = item["format_strings"]
for format_param in format_strings:
format_string = mod_config.get(format_param)
if not format_string:
continue
format = Formatter().update_placeholder_formats(
format_string, placeholder_formats
)
mod_config[format_param] = format
if "substitute_by_value" in deprecated:
# one parameter sets the value of another
for item in deprecated["substitute_by_value"]:
param = item["param"]
value = item["value"]
substitute = item["substitute"]
substitute_param = substitute["param"]
substitute_value = substitute["value"]
if (
mod_config.get(param) == value
and substitute_param not in mod_config
):
mod_config[substitute_param] = substitute_value