def test_add_dotted_key(): doc = tomlkit.document() doc.add(tomlkit.key(["foo", "bar"]), 1) assert doc.as_string() == "foo.bar = 1\n" table = tomlkit.table() table.add(tomlkit.key(["foo", "bar"]), 1) assert table.as_string() == "foo.bar = 1\n"
def test_key(): k = tomlkit.key("foo") assert isinstance(k, Key)
def _create_checker_section( checker: str, options: list[OptionsData], linter: PyLinter ) -> str: checker_string = f".. _{checker}-options:\n\n" checker_string += get_rst_title(f"``{checker.capitalize()}`` **Checker**", "-") toml_doc = tomlkit.document() pylint_tool_table = tomlkit.table(is_super_table=True) toml_doc.add(tomlkit.key(["tool", "pylint"]), pylint_tool_table) checker_table = tomlkit.table() for option in sorted(options, key=lambda x: x.name): checker_string += get_rst_title(f"--{option.name}", '"') checker_string += f"*{option.optdict.get('help')}*\n\n" if option.optdict.get("default") == "": checker_string += '**Default:** ``""``\n\n\n' else: checker_string += f"**Default:** ``{option.optdict.get('default')}``\n\n\n" # Start adding the option to the toml example if option.optdict.get("hide_from_config_file"): continue # Get current value of option value = getattr(linter.config, option.name.replace("-", "_")) # Create a comment if the option has no value if value is None: checker_table.add(tomlkit.comment(f"{option.name} =")) checker_table.add(tomlkit.nl()) continue # Tomlkit doesn't support regular expressions if isinstance(value, re.Pattern): value = value.pattern elif ( isinstance(value, (list, tuple)) and value and isinstance(value[0], re.Pattern) ): value = [i.pattern for i in value] # Add to table checker_table.add(option.name, value) checker_table.add(tomlkit.nl()) pylint_tool_table.add(options[0].checker.name.lower(), checker_table) toml_string = "\n".join( f" {i}" if i else "" for i in tomlkit.dumps(toml_doc).split("\n") ) checker_string += f""" .. raw:: html <details> <summary><a>Example configuration section</a></summary> **Note:** Only ``pylint.tool`` is required, the section title is not. These are the default values. .. code-block:: toml {toml_string} .. raw:: html </details> """ return checker_string