From 94a99b67979859d0cd3471d2ac2a91c0b08820ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Mon, 20 Jun 2022 13:48:00 +0200 Subject: [PATCH 1/5] Make ``_configuration`` private --- pydocstringformatter/_configuration/__init__.py | 0 .../arguments_manager.py | 4 ++-- .../boolean_option_action.py | 0 .../command_line_parsing.py | 0 .../formatter_options.py | 2 +- .../{configuration => _configuration}/toml_parsing.py | 0 .../{configuration => _configuration}/validators.py | 0 pydocstringformatter/configuration/__init__.py | 5 ----- pydocstringformatter/run.py | 8 +++----- 9 files changed, 6 insertions(+), 13 deletions(-) create mode 100644 pydocstringformatter/_configuration/__init__.py rename pydocstringformatter/{configuration => _configuration}/arguments_manager.py (97%) rename pydocstringformatter/{configuration => _configuration}/boolean_option_action.py (100%) rename pydocstringformatter/{configuration => _configuration}/command_line_parsing.py (100%) rename pydocstringformatter/{configuration => _configuration}/formatter_options.py (92%) rename pydocstringformatter/{configuration => _configuration}/toml_parsing.py (100%) rename pydocstringformatter/{configuration => _configuration}/validators.py (100%) delete mode 100644 pydocstringformatter/configuration/__init__.py diff --git a/pydocstringformatter/_configuration/__init__.py b/pydocstringformatter/_configuration/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pydocstringformatter/configuration/arguments_manager.py b/pydocstringformatter/_configuration/arguments_manager.py similarity index 97% rename from pydocstringformatter/configuration/arguments_manager.py rename to pydocstringformatter/_configuration/arguments_manager.py index 4b0c39fb..0234034e 100644 --- a/pydocstringformatter/configuration/arguments_manager.py +++ b/pydocstringformatter/_configuration/arguments_manager.py @@ -2,12 +2,12 @@ import argparse -from pydocstringformatter.configuration import ( +from pydocstringformatter._configuration import ( command_line_parsing, formatter_options, toml_parsing, ) -from pydocstringformatter.configuration.validators import VALIDATORS +from pydocstringformatter._configuration.validators import VALIDATORS from pydocstringformatter.formatting.base import Formatter diff --git a/pydocstringformatter/configuration/boolean_option_action.py b/pydocstringformatter/_configuration/boolean_option_action.py similarity index 100% rename from pydocstringformatter/configuration/boolean_option_action.py rename to pydocstringformatter/_configuration/boolean_option_action.py diff --git a/pydocstringformatter/configuration/command_line_parsing.py b/pydocstringformatter/_configuration/command_line_parsing.py similarity index 100% rename from pydocstringformatter/configuration/command_line_parsing.py rename to pydocstringformatter/_configuration/command_line_parsing.py diff --git a/pydocstringformatter/configuration/formatter_options.py b/pydocstringformatter/_configuration/formatter_options.py similarity index 92% rename from pydocstringformatter/configuration/formatter_options.py rename to pydocstringformatter/_configuration/formatter_options.py index bbf7abd2..216d06c9 100644 --- a/pydocstringformatter/configuration/formatter_options.py +++ b/pydocstringformatter/_configuration/formatter_options.py @@ -2,7 +2,7 @@ import argparse -from pydocstringformatter.configuration.boolean_option_action import ( +from pydocstringformatter._configuration.boolean_option_action import ( BooleanOptionalAction, ) from pydocstringformatter.formatting.base import Formatter diff --git a/pydocstringformatter/configuration/toml_parsing.py b/pydocstringformatter/_configuration/toml_parsing.py similarity index 100% rename from pydocstringformatter/configuration/toml_parsing.py rename to pydocstringformatter/_configuration/toml_parsing.py diff --git a/pydocstringformatter/configuration/validators.py b/pydocstringformatter/_configuration/validators.py similarity index 100% rename from pydocstringformatter/configuration/validators.py rename to pydocstringformatter/_configuration/validators.py diff --git a/pydocstringformatter/configuration/__init__.py b/pydocstringformatter/configuration/__init__.py deleted file mode 100644 index 7e1c8222..00000000 --- a/pydocstringformatter/configuration/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from pydocstringformatter.configuration.arguments_manager import ArgumentsManager - -__all__ = [ - "ArgumentsManager", -] diff --git a/pydocstringformatter/run.py b/pydocstringformatter/run.py index 1eb07510..a503bdbc 100644 --- a/pydocstringformatter/run.py +++ b/pydocstringformatter/run.py @@ -7,7 +7,8 @@ import tokenize from pathlib import Path -from pydocstringformatter import __version__, configuration, formatting, utils +from pydocstringformatter import __version__, formatting, utils +from pydocstringformatter._configuration.arguments_manager import ArgumentsManager class _Run: @@ -15,10 +16,7 @@ class _Run: def __init__(self, argv: list[str] | None) -> None: # Load ArgumentsManager and set its namespace as instance's config attribute - self._arguments_manager = configuration.ArgumentsManager( - __version__, - formatting.FORMATTERS, - ) + self._arguments_manager = ArgumentsManager(__version__, formatting.FORMATTERS) self.config = self._arguments_manager.namespace # Display help message if nothing is passed From f6d3cf77535dffe910990326eeb693dc9d9bb45a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Mon, 20 Jun 2022 13:48:58 +0200 Subject: [PATCH 2/5] Make utils private --- pydocstringformatter/__init__.py | 2 +- .../_configuration/toml_parsing.py | 2 +- pydocstringformatter/_utils/__init__.py | 20 +++++++++++++++++++ .../{utils => _utils}/exceptions.py | 0 .../{utils => _utils}/file_diference.py | 0 .../{utils => _utils}/find_docstrings.py | 0 .../{utils => _utils}/find_python_file.py | 0 .../{utils => _utils}/output.py | 0 pydocstringformatter/run.py | 18 ++++++++--------- pydocstringformatter/utils/__init__.py | 20 ------------------- tests/test_config.py | 2 +- tests/test_exceptions.py | 4 ++-- tests/test_utils.py | 2 +- 13 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 pydocstringformatter/_utils/__init__.py rename pydocstringformatter/{utils => _utils}/exceptions.py (100%) rename pydocstringformatter/{utils => _utils}/file_diference.py (100%) rename pydocstringformatter/{utils => _utils}/find_docstrings.py (100%) rename pydocstringformatter/{utils => _utils}/find_python_file.py (100%) rename pydocstringformatter/{utils => _utils}/output.py (100%) delete mode 100644 pydocstringformatter/utils/__init__.py diff --git a/pydocstringformatter/__init__.py b/pydocstringformatter/__init__.py index ed59a926..16346ee4 100644 --- a/pydocstringformatter/__init__.py +++ b/pydocstringformatter/__init__.py @@ -3,7 +3,7 @@ import sys -from pydocstringformatter.utils.exceptions import ( +from pydocstringformatter._utils.exceptions import ( ParsingError, PydocstringFormatterError, ) diff --git a/pydocstringformatter/_configuration/toml_parsing.py b/pydocstringformatter/_configuration/toml_parsing.py index faaa7464..49cede34 100644 --- a/pydocstringformatter/_configuration/toml_parsing.py +++ b/pydocstringformatter/_configuration/toml_parsing.py @@ -6,7 +6,7 @@ import tomli -from pydocstringformatter.utils.exceptions import TomlParsingError, UnrecognizedOption +from pydocstringformatter._utils.exceptions import TomlParsingError, UnrecognizedOption OPTIONS_TYPES: Final = {"write": "store_true", "exclude": "store"} diff --git a/pydocstringformatter/_utils/__init__.py b/pydocstringformatter/_utils/__init__.py new file mode 100644 index 00000000..46fc2096 --- /dev/null +++ b/pydocstringformatter/_utils/__init__.py @@ -0,0 +1,20 @@ +from pydocstringformatter._utils.exceptions import ( + ParsingError, + PydocstringFormatterError, + TomlParsingError, +) +from pydocstringformatter._utils.file_diference import _generate_diff +from pydocstringformatter._utils.find_docstrings import _is_docstring +from pydocstringformatter._utils.find_python_file import _find_python_files +from pydocstringformatter._utils.output import _print_to_console, _sys_exit + +__all__ = [ + "_find_python_files", + "_generate_diff", + "_is_docstring", + "ParsingError", + "PydocstringFormatterError", + "TomlParsingError", + "_print_to_console", + "_sys_exit", +] diff --git a/pydocstringformatter/utils/exceptions.py b/pydocstringformatter/_utils/exceptions.py similarity index 100% rename from pydocstringformatter/utils/exceptions.py rename to pydocstringformatter/_utils/exceptions.py diff --git a/pydocstringformatter/utils/file_diference.py b/pydocstringformatter/_utils/file_diference.py similarity index 100% rename from pydocstringformatter/utils/file_diference.py rename to pydocstringformatter/_utils/file_diference.py diff --git a/pydocstringformatter/utils/find_docstrings.py b/pydocstringformatter/_utils/find_docstrings.py similarity index 100% rename from pydocstringformatter/utils/find_docstrings.py rename to pydocstringformatter/_utils/find_docstrings.py diff --git a/pydocstringformatter/utils/find_python_file.py b/pydocstringformatter/_utils/find_python_file.py similarity index 100% rename from pydocstringformatter/utils/find_python_file.py rename to pydocstringformatter/_utils/find_python_file.py diff --git a/pydocstringformatter/utils/output.py b/pydocstringformatter/_utils/output.py similarity index 100% rename from pydocstringformatter/utils/output.py rename to pydocstringformatter/_utils/output.py diff --git a/pydocstringformatter/run.py b/pydocstringformatter/run.py index a503bdbc..f0db3a34 100644 --- a/pydocstringformatter/run.py +++ b/pydocstringformatter/run.py @@ -7,7 +7,7 @@ import tokenize from pathlib import Path -from pydocstringformatter import __version__, formatting, utils +from pydocstringformatter import __version__, _utils, formatting from pydocstringformatter._configuration.arguments_manager import ArgumentsManager @@ -34,21 +34,21 @@ def __init__(self, argv: list[str] | None) -> None: # pylint: disable-next=inconsistent-return-statements def _check_files(self, files: list[str]) -> None: """Find all files and perform the formatting.""" - filepaths = utils._find_python_files(files, self.config.exclude) + filepaths = _utils._find_python_files(files, self.config.exclude) is_changed = self._format_files(filepaths) if is_changed: # pylint: disable=consider-using-assignment-expr - return utils._sys_exit(32, self.config.exit_code) + return _utils._sys_exit(32, self.config.exit_code) files_string = f"{len(filepaths)} " files_string += "files" if len(filepaths) != 1 else "file" - utils._print_to_console( + _utils._print_to_console( f"Nothing to do! All docstrings in {files_string} are correct 🎉\n", self.config.quiet, ) - utils._sys_exit(0, self.config.exit_code) + _utils._sys_exit(0, self.config.exit_code) def _format_file(self, filename: Path) -> bool: """Format a file.""" @@ -59,7 +59,7 @@ def _format_file(self, filename: Path) -> bool: try: tokens = list(tokenize.generate_tokens(file.readline)) except tokenize.TokenError as exc: - raise utils.ParsingError( + raise _utils.ParsingError( f"Can't parse {os.path.relpath(filename)}. Is it valid Python code?" ) from exc # Record type of newlines so we can make sure to use @@ -69,7 +69,7 @@ def _format_file(self, filename: Path) -> bool: for index, tokeninfo in enumerate(tokens): new_tokeninfo = tokeninfo - if utils._is_docstring(new_tokeninfo, tokens[index - 1]): + if _utils._is_docstring(new_tokeninfo, tokens[index - 1]): for formatter in formatting.FORMATTERS: if getattr(self.config, formatter.name): new_tokeninfo = formatter.treat_token(new_tokeninfo) @@ -96,12 +96,12 @@ def _format_file(self, filename: Path) -> bool: ) with open(filename, "w", encoding="utf-8", newline=newlines) as file: file.write(tokenize.untokenize(changed_tokens)) - utils._print_to_console( + _utils._print_to_console( f"Formatted {filename_str} 📖\n", self.config.quiet ) else: sys.stdout.write( - utils._generate_diff( + _utils._generate_diff( tokenize.untokenize(tokens), tokenize.untokenize(changed_tokens), filename_str, diff --git a/pydocstringformatter/utils/__init__.py b/pydocstringformatter/utils/__init__.py deleted file mode 100644 index 80b50eff..00000000 --- a/pydocstringformatter/utils/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -from pydocstringformatter.utils.exceptions import ( - ParsingError, - PydocstringFormatterError, - TomlParsingError, -) -from pydocstringformatter.utils.file_diference import _generate_diff -from pydocstringformatter.utils.find_docstrings import _is_docstring -from pydocstringformatter.utils.find_python_file import _find_python_files -from pydocstringformatter.utils.output import _print_to_console, _sys_exit - -__all__ = [ - "_find_python_files", - "_generate_diff", - "_is_docstring", - "ParsingError", - "PydocstringFormatterError", - "TomlParsingError", - "_print_to_console", - "_sys_exit", -] diff --git a/tests/test_config.py b/tests/test_config.py index 57dde8d1..985f5635 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -6,7 +6,7 @@ import pytest import pydocstringformatter -from pydocstringformatter.utils import exceptions +from pydocstringformatter._utils import exceptions HERE = Path(__file__) CONFIG_DATA = HERE.parent / "data" / "config" diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index fb9b0b31..d67b7491 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -2,7 +2,7 @@ import pytest -from pydocstringformatter import run_docstring_formatter, utils +from pydocstringformatter import _utils, run_docstring_formatter HERE = Path(__file__) DATA = HERE.parent / "data" @@ -10,5 +10,5 @@ def test_exception_on_incorrect_python() -> None: """Test that we raise the correct exception on unparsable python files.""" - with pytest.raises(utils.ParsingError): + with pytest.raises(_utils.ParsingError): run_docstring_formatter([str(DATA / "incorrect_python_file.py")]) diff --git a/tests/test_utils.py b/tests/test_utils.py index eaab2b1a..2568cdf5 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -7,7 +7,7 @@ import pytest import pydocstringformatter -from pydocstringformatter.utils import _find_python_files, _is_docstring +from pydocstringformatter._utils import _find_python_files, _is_docstring HERE = Path(__file__) UTILS_DATA = HERE.parent / "data" / "utils" From b081e87ec2dc5b8755d3d1ac6dfcbff3cc18fd4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Mon, 20 Jun 2022 13:49:34 +0200 Subject: [PATCH 3/5] Make testutils private --- pydocstringformatter/{testutils => _testutils}/__init__.py | 0 .../{testutils => _testutils}/primer/__init__.py | 0 .../{testutils => _testutils}/primer/const.py | 0 .../{testutils => _testutils}/primer/packages.py | 2 +- .../{testutils => _testutils}/primer/primer.py | 4 ++-- tests/test_run.py | 2 +- 6 files changed, 4 insertions(+), 4 deletions(-) rename pydocstringformatter/{testutils => _testutils}/__init__.py (100%) rename pydocstringformatter/{testutils => _testutils}/primer/__init__.py (100%) rename pydocstringformatter/{testutils => _testutils}/primer/const.py (100%) rename pydocstringformatter/{testutils => _testutils}/primer/packages.py (96%) rename pydocstringformatter/{testutils => _testutils}/primer/primer.py (95%) diff --git a/pydocstringformatter/testutils/__init__.py b/pydocstringformatter/_testutils/__init__.py similarity index 100% rename from pydocstringformatter/testutils/__init__.py rename to pydocstringformatter/_testutils/__init__.py diff --git a/pydocstringformatter/testutils/primer/__init__.py b/pydocstringformatter/_testutils/primer/__init__.py similarity index 100% rename from pydocstringformatter/testutils/primer/__init__.py rename to pydocstringformatter/_testutils/primer/__init__.py diff --git a/pydocstringformatter/testutils/primer/const.py b/pydocstringformatter/_testutils/primer/const.py similarity index 100% rename from pydocstringformatter/testutils/primer/const.py rename to pydocstringformatter/_testutils/primer/const.py diff --git a/pydocstringformatter/testutils/primer/packages.py b/pydocstringformatter/_testutils/primer/packages.py similarity index 96% rename from pydocstringformatter/testutils/primer/packages.py rename to pydocstringformatter/_testutils/primer/packages.py index eacabc24..003616a8 100644 --- a/pydocstringformatter/testutils/primer/packages.py +++ b/pydocstringformatter/_testutils/primer/packages.py @@ -7,7 +7,7 @@ import git -from pydocstringformatter.testutils.primer.const import PRIMER_DIRECTORY_PATH +from pydocstringformatter._testutils.primer.const import PRIMER_DIRECTORY_PATH @dataclass diff --git a/pydocstringformatter/testutils/primer/primer.py b/pydocstringformatter/_testutils/primer/primer.py similarity index 95% rename from pydocstringformatter/testutils/primer/primer.py rename to pydocstringformatter/_testutils/primer/primer.py index f4024aee..93f5e4f8 100644 --- a/pydocstringformatter/testutils/primer/primer.py +++ b/pydocstringformatter/_testutils/primer/primer.py @@ -4,8 +4,8 @@ import sys from pathlib import Path -from pydocstringformatter.testutils.primer.const import DIFF_OUTPUT -from pydocstringformatter.testutils.primer.packages import PACKAGES, _PackageToPrime +from pydocstringformatter._testutils.primer.const import DIFF_OUTPUT +from pydocstringformatter._testutils.primer.packages import PACKAGES, _PackageToPrime def _fix_diff(output: str, package: _PackageToPrime) -> str: diff --git a/tests/test_run.py b/tests/test_run.py index 935a022a..ee956109 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -7,10 +7,10 @@ import pytest import pydocstringformatter +from pydocstringformatter._testutils import FormatterAsserter from pydocstringformatter.formatting import FORMATTERS from pydocstringformatter.formatting.base import StringFormatter from pydocstringformatter.formatting.formatter import SplitSummaryAndDocstringFormatter -from pydocstringformatter.testutils import FormatterAsserter def test_no_arguments(capsys: pytest.CaptureFixture[str]) -> None: From 5568f1827f075052f48191084fc28b14d55d6157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Mon, 20 Jun 2022 13:50:06 +0200 Subject: [PATCH 4/5] Make formatting private --- pydocstringformatter/_configuration/arguments_manager.py | 2 +- pydocstringformatter/_configuration/formatter_options.py | 2 +- .../{formatting => _formatting}/__init__.py | 4 ++-- .../{formatting => _formatting}/_utils.py | 0 pydocstringformatter/{formatting => _formatting}/base.py | 0 .../{formatting => _formatting}/formatter.py | 4 ++-- pydocstringformatter/_testutils/__init__.py | 2 +- pydocstringformatter/run.py | 8 ++++---- tests/test_formatter.py | 2 +- tests/test_run.py | 6 +++--- 10 files changed, 15 insertions(+), 15 deletions(-) rename pydocstringformatter/{formatting => _formatting}/__init__.py (88%) rename pydocstringformatter/{formatting => _formatting}/_utils.py (100%) rename pydocstringformatter/{formatting => _formatting}/base.py (100%) rename pydocstringformatter/{formatting => _formatting}/formatter.py (98%) diff --git a/pydocstringformatter/_configuration/arguments_manager.py b/pydocstringformatter/_configuration/arguments_manager.py index 0234034e..b06fa1eb 100644 --- a/pydocstringformatter/_configuration/arguments_manager.py +++ b/pydocstringformatter/_configuration/arguments_manager.py @@ -8,7 +8,7 @@ toml_parsing, ) from pydocstringformatter._configuration.validators import VALIDATORS -from pydocstringformatter.formatting.base import Formatter +from pydocstringformatter._formatting.base import Formatter class ArgumentsManager: diff --git a/pydocstringformatter/_configuration/formatter_options.py b/pydocstringformatter/_configuration/formatter_options.py index 216d06c9..9fd9c39c 100644 --- a/pydocstringformatter/_configuration/formatter_options.py +++ b/pydocstringformatter/_configuration/formatter_options.py @@ -5,7 +5,7 @@ from pydocstringformatter._configuration.boolean_option_action import ( BooleanOptionalAction, ) -from pydocstringformatter.formatting.base import Formatter +from pydocstringformatter._formatting.base import Formatter def _register_arguments_formatters( diff --git a/pydocstringformatter/formatting/__init__.py b/pydocstringformatter/_formatting/__init__.py similarity index 88% rename from pydocstringformatter/formatting/__init__.py rename to pydocstringformatter/_formatting/__init__.py index 9b5fec75..22d7e898 100644 --- a/pydocstringformatter/formatting/__init__.py +++ b/pydocstringformatter/_formatting/__init__.py @@ -3,8 +3,8 @@ __all__ = ["FORMATTERS", "Formatter"] -from pydocstringformatter.formatting.base import Formatter -from pydocstringformatter.formatting.formatter import ( +from pydocstringformatter._formatting.base import Formatter +from pydocstringformatter._formatting.formatter import ( BeginningQuotesFormatter, CapitalizeFirstLetterFormatter, ClosingQuotesFormatter, diff --git a/pydocstringformatter/formatting/_utils.py b/pydocstringformatter/_formatting/_utils.py similarity index 100% rename from pydocstringformatter/formatting/_utils.py rename to pydocstringformatter/_formatting/_utils.py diff --git a/pydocstringformatter/formatting/base.py b/pydocstringformatter/_formatting/base.py similarity index 100% rename from pydocstringformatter/formatting/base.py rename to pydocstringformatter/_formatting/base.py diff --git a/pydocstringformatter/formatting/formatter.py b/pydocstringformatter/_formatting/formatter.py similarity index 98% rename from pydocstringformatter/formatting/formatter.py rename to pydocstringformatter/_formatting/formatter.py index b03a6cab..313037ef 100644 --- a/pydocstringformatter/formatting/formatter.py +++ b/pydocstringformatter/_formatting/formatter.py @@ -5,8 +5,8 @@ import tokenize from typing import Literal -from pydocstringformatter.formatting import _utils -from pydocstringformatter.formatting.base import ( +from pydocstringformatter._formatting import _utils +from pydocstringformatter._formatting.base import ( StringAndQuotesFormatter, StringFormatter, SummaryFormatter, diff --git a/pydocstringformatter/_testutils/__init__.py b/pydocstringformatter/_testutils/__init__.py index 14c0c7d3..4ee8fc74 100644 --- a/pydocstringformatter/_testutils/__init__.py +++ b/pydocstringformatter/_testutils/__init__.py @@ -8,7 +8,7 @@ import pytest from pydocstringformatter import run_docstring_formatter -from pydocstringformatter.formatting import Formatter +from pydocstringformatter._formatting import Formatter LOGGER = logging.getLogger(__name__) diff --git a/pydocstringformatter/run.py b/pydocstringformatter/run.py index f0db3a34..3ca9e785 100644 --- a/pydocstringformatter/run.py +++ b/pydocstringformatter/run.py @@ -7,7 +7,7 @@ import tokenize from pathlib import Path -from pydocstringformatter import __version__, _utils, formatting +from pydocstringformatter import __version__, _formatting, _utils from pydocstringformatter._configuration.arguments_manager import ArgumentsManager @@ -16,7 +16,7 @@ class _Run: def __init__(self, argv: list[str] | None) -> None: # Load ArgumentsManager and set its namespace as instance's config attribute - self._arguments_manager = ArgumentsManager(__version__, formatting.FORMATTERS) + self._arguments_manager = ArgumentsManager(__version__, _formatting.FORMATTERS) self.config = self._arguments_manager.namespace # Display help message if nothing is passed @@ -26,7 +26,7 @@ def __init__(self, argv: list[str] | None) -> None: # Parse options and register on formatters self._arguments_manager.parse_options(argv) - for formatter in formatting.FORMATTERS: + for formatter in _formatting.FORMATTERS: formatter.set_config_namespace(self.config) self._check_files(self.config.files) @@ -70,7 +70,7 @@ def _format_file(self, filename: Path) -> bool: new_tokeninfo = tokeninfo if _utils._is_docstring(new_tokeninfo, tokens[index - 1]): - for formatter in formatting.FORMATTERS: + for formatter in _formatting.FORMATTERS: if getattr(self.config, formatter.name): new_tokeninfo = formatter.treat_token(new_tokeninfo) changed_tokens.append(new_tokeninfo) diff --git a/tests/test_formatter.py b/tests/test_formatter.py index 247ba33b..2f21f261 100644 --- a/tests/test_formatter.py +++ b/tests/test_formatter.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydocstringformatter.formatting import FORMATTERS +from pydocstringformatter._formatting import FORMATTERS def test_formatter_names() -> None: diff --git a/tests/test_run.py b/tests/test_run.py index ee956109..71ae8b56 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -7,10 +7,10 @@ import pytest import pydocstringformatter +from pydocstringformatter._formatting import FORMATTERS +from pydocstringformatter._formatting.base import StringFormatter +from pydocstringformatter._formatting.formatter import SplitSummaryAndDocstringFormatter from pydocstringformatter._testutils import FormatterAsserter -from pydocstringformatter.formatting import FORMATTERS -from pydocstringformatter.formatting.base import StringFormatter -from pydocstringformatter.formatting.formatter import SplitSummaryAndDocstringFormatter def test_no_arguments(capsys: pytest.CaptureFixture[str]) -> None: From 8aba4ce6aeb7d8de2db46f59e02951ac42ebe00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Mon, 20 Jun 2022 14:12:53 +0200 Subject: [PATCH 5/5] Make everything in private modules public --- .github/workflows/primer.yaml | 6 ++--- .../_configuration/arguments_manager.py | 10 +++---- .../_configuration/command_line_parsing.py | 2 +- .../_configuration/formatter_options.py | 2 +- .../_configuration/toml_parsing.py | 10 +++---- .../_configuration/validators.py | 4 +-- pydocstringformatter/_formatting/base.py | 26 +++++++++---------- pydocstringformatter/_formatting/formatter.py | 16 ++++++------ .../_testutils/primer/packages.py | 6 ++--- .../_testutils/primer/primer.py | 22 ++++++++-------- pydocstringformatter/_utils/__init__.py | 18 ++++++------- pydocstringformatter/_utils/file_diference.py | 2 +- .../_utils/find_docstrings.py | 2 +- .../_utils/find_python_file.py | 10 +++---- pydocstringformatter/_utils/output.py | 8 +++--- pydocstringformatter/run.py | 26 +++++++++---------- tests/test_run.py | 4 +-- tests/test_utils.py | 18 ++++++------- 18 files changed, 96 insertions(+), 96 deletions(-) diff --git a/.github/workflows/primer.yaml b/.github/workflows/primer.yaml index e24e496a..c509e7d4 100644 --- a/.github/workflows/primer.yaml +++ b/.github/workflows/primer.yaml @@ -42,13 +42,13 @@ jobs: pip install -e . cd .. - python -m pydocstringformatter.testutils.primer.primer --prepare - python -m pydocstringformatter.testutils.primer.primer --step-one + python -m pydocstringformatter._testutils.primer.primer --prepare + python -m pydocstringformatter._testutils.primer.primer --step-one cd program_to_test git checkout $GITHUB_SHA cd .. - python -m pydocstringformatter.testutils.primer.primer --step-two + python -m pydocstringformatter._testutils.primer.primer --step-two - name: Upload primer diff uses: actions/upload-artifact@v3 with: diff --git a/pydocstringformatter/_configuration/arguments_manager.py b/pydocstringformatter/_configuration/arguments_manager.py index b06fa1eb..db096887 100644 --- a/pydocstringformatter/_configuration/arguments_manager.py +++ b/pydocstringformatter/_configuration/arguments_manager.py @@ -32,14 +32,14 @@ def __init__(self, version: str, formatters: list[Formatter]) -> None: ) # Register all arguments - self._register_arguments(version) - formatter_options._register_arguments_formatters( + self.register_arguments(version) + formatter_options.register_arguments_formatters( self.default_formatters_group, self.optional_formatters_group, self.formatters, ) - def _register_arguments(self, version: str) -> None: + def register_arguments(self, version: str) -> None: """Register all standard arguments on the parser.""" self.parser.add_argument( "files", nargs="*", type=str, help="The directory or files to format." @@ -128,9 +128,9 @@ def parse_options( 1. configuration files, 2. command line arguments. """ # pylint: disable=protected-access - toml_parsing._parse_toml_file(self.parser, self.namespace) + toml_parsing.parse_toml_file(self.parser, self.namespace) - command_line_parsing._parse_command_line_arguments( + command_line_parsing.parse_command_line_arguments( self.parser, self.namespace, argv ) diff --git a/pydocstringformatter/_configuration/command_line_parsing.py b/pydocstringformatter/_configuration/command_line_parsing.py index 11a92477..edaea802 100644 --- a/pydocstringformatter/_configuration/command_line_parsing.py +++ b/pydocstringformatter/_configuration/command_line_parsing.py @@ -3,7 +3,7 @@ import argparse -def _parse_command_line_arguments( +def parse_command_line_arguments( parser: argparse.ArgumentParser, namespace: argparse.Namespace, args: list[str] ) -> None: """Parse all arguments on the provided argument parser.""" diff --git a/pydocstringformatter/_configuration/formatter_options.py b/pydocstringformatter/_configuration/formatter_options.py index 9fd9c39c..d5b213ec 100644 --- a/pydocstringformatter/_configuration/formatter_options.py +++ b/pydocstringformatter/_configuration/formatter_options.py @@ -8,7 +8,7 @@ from pydocstringformatter._formatting.base import Formatter -def _register_arguments_formatters( +def register_arguments_formatters( default_arg_group: argparse._ArgumentGroup, optional_arg_group: argparse._ArgumentGroup, formatters: list[Formatter], diff --git a/pydocstringformatter/_configuration/toml_parsing.py b/pydocstringformatter/_configuration/toml_parsing.py index 49cede34..981061e7 100644 --- a/pydocstringformatter/_configuration/toml_parsing.py +++ b/pydocstringformatter/_configuration/toml_parsing.py @@ -11,7 +11,7 @@ OPTIONS_TYPES: Final = {"write": "store_true", "exclude": "store"} -def _get_toml_file() -> dict[str, Any] | None: +def get_toml_file() -> dict[str, Any] | None: """See if there is a pyproject.toml and extract the correct section if it exists.""" if os.path.isfile("pyproject.toml"): with open("pyproject.toml", "rb") as file: @@ -26,7 +26,7 @@ def _get_toml_file() -> dict[str, Any] | None: return None -def _parse_toml_option(opt: str, value: Any) -> list[str]: +def parse_toml_option(opt: str, value: Any) -> list[str]: """Parse an options value in the correct argument type for argparse.""" try: action = OPTIONS_TYPES[opt] @@ -42,14 +42,14 @@ def _parse_toml_option(opt: str, value: Any) -> list[str]: return [] # pragma: no cover -def _parse_toml_file( +def parse_toml_file( parser: argparse.ArgumentParser, namespace: argparse.Namespace ) -> None: """Get and parse the relevant section form a pyproject.toml file.""" - if toml_sect := _get_toml_file(): + if toml_sect := get_toml_file(): arguments: list[str] = [] for key, value in toml_sect.items(): - arguments += _parse_toml_option(key, value) + arguments += parse_toml_option(key, value) parser.parse_args(arguments, namespace) diff --git a/pydocstringformatter/_configuration/validators.py b/pydocstringformatter/_configuration/validators.py index 45b241a0..0f31f57e 100644 --- a/pydocstringformatter/_configuration/validators.py +++ b/pydocstringformatter/_configuration/validators.py @@ -4,7 +4,7 @@ from typing import Final, List -def _comma_separated_list_validator(value: str | list[str]) -> list[str]: +def comma_separated_list_validator(value: str | list[str]) -> list[str]: """Validate a comma separated list.""" if isinstance(value, list): return value @@ -13,5 +13,5 @@ def _comma_separated_list_validator(value: str | list[str]) -> list[str]: ValidatedTypes = List[str] VALIDATORS: Final[dict[str, Callable[[str], ValidatedTypes]]] = { - "csv": _comma_separated_list_validator + "csv": comma_separated_list_validator } diff --git a/pydocstringformatter/_formatting/base.py b/pydocstringformatter/_formatting/base.py index c13d0e86..809ef5e5 100644 --- a/pydocstringformatter/_formatting/base.py +++ b/pydocstringformatter/_formatting/base.py @@ -48,13 +48,13 @@ class StringFormatter(Formatter): """Base class for formatter that only modifies the string content.""" @abc.abstractmethod - def _treat_string(self, tokeninfo: tokenize.TokenInfo, indent_length: int) -> str: + def treat_string(self, tokeninfo: tokenize.TokenInfo, indent_length: int) -> str: """Return a modified string.""" def treat_token(self, tokeninfo: tokenize.TokenInfo) -> tokenize.TokenInfo: return tokenize.TokenInfo( tokeninfo.type, - self._treat_string(tokeninfo, tokeninfo.start[1]), + self.treat_string(tokeninfo, tokeninfo.start[1]), tokeninfo.start, tokeninfo.end, tokeninfo.line, @@ -68,7 +68,7 @@ class StringAndQuotesFormatter(Formatter): """Pattern to match against opening quotes.""" @abc.abstractmethod - def _treat_string( + def treat_string( self, tokeninfo: tokenize.TokenInfo, indent_length: int, @@ -88,7 +88,7 @@ def treat_token(self, tokeninfo: tokenize.TokenInfo) -> tokenize.TokenInfo: return tokenize.TokenInfo( tokeninfo.type, - self._treat_string( + self.treat_string( tokeninfo, tokeninfo.start[1], quotes, @@ -104,7 +104,7 @@ class SummaryAndDescriptionFormatter(StringAndQuotesFormatter): """Base class for formatter that modifies the summary and description.""" @abc.abstractmethod - def _treat_summary( + def treat_summary( self, summary: str, indent_length: int, @@ -114,12 +114,12 @@ def _treat_summary( """Return a modified summary.""" @abc.abstractmethod - def _treat_description(self, description: str, indent_length: int) -> str: + def treat_description(self, description: str, indent_length: int) -> str: """Return a modified description.""" @staticmethod @functools.lru_cache(maxsize=None) - def _separate_summary_and_description( + def separate_summary_and_description( docstring: str, indent_length: int, quotes_length: Literal[1, 3] ) -> tuple[str, str, str | None]: """Split the summary and description and handle quotes and indentation.""" @@ -153,26 +153,26 @@ def _separate_summary_and_description( summary = summary[1 + indent_length :] return prefix, summary, description - def _treat_string( + def treat_string( self, tokeninfo: tokenize.TokenInfo, indent_length: int, quotes: str, quotes_length: Literal[1, 3], ) -> str: - prefix, summary, description = self._separate_summary_and_description( + prefix, summary, description = self.separate_summary_and_description( tokeninfo.string, indent_length, quotes_length, ) - new_summary = self._treat_summary( + new_summary = self.treat_summary( summary, indent_length, quotes_length, bool(description) ) docstring = f"{quotes}{prefix}{new_summary}" if description: - new_description = self._treat_description(description, indent_length) + new_description = self.treat_description(description, indent_length) docstring += f"\n\n{new_description}" # Determine whether ending quotes were initially on same or new line @@ -185,7 +185,7 @@ class SummaryFormatter(SummaryAndDescriptionFormatter): """Base class for formatter that only modifies the summary of a docstring.""" @abc.abstractmethod - def _treat_summary( + def treat_summary( self, summary: str, indent_length: int, @@ -194,5 +194,5 @@ def _treat_summary( ) -> str: """Return a modified summary.""" - def _treat_description(self, description: str, indent_length: int) -> str: + def treat_description(self, description: str, indent_length: int) -> str: return description diff --git a/pydocstringformatter/_formatting/formatter.py b/pydocstringformatter/_formatting/formatter.py index 313037ef..79ddd23f 100644 --- a/pydocstringformatter/_formatting/formatter.py +++ b/pydocstringformatter/_formatting/formatter.py @@ -28,7 +28,7 @@ class BeginningQuotesFormatter(StringFormatter): ) """Regex pattern to match against a potential single line docstring.""" - def _treat_string(self, tokeninfo: tokenize.TokenInfo, _: int) -> str: + def treat_string(self, tokeninfo: tokenize.TokenInfo, _: int) -> str: new_string = tokeninfo.string if new_string[3] == "\n": if ( @@ -46,7 +46,7 @@ class CapitalizeFirstLetterFormatter(StringFormatter): name = "capitalize-first-letter" first_letter_re = re.compile(r"""['"]{1,3}\s*(\w)""", re.DOTALL) - def _treat_string(self, tokeninfo: tokenize.TokenInfo, _: int) -> str: + def treat_string(self, tokeninfo: tokenize.TokenInfo, _: int) -> str: new_string = None if match := self.first_letter_re.match(tokeninfo.string): first_letter = match.end() - 1 @@ -64,7 +64,7 @@ class LineWrapperFormatter(SummaryFormatter): name = "linewrap-full-docstring" optional = True - def _treat_summary( + def treat_summary( self, summary: str, indent_length: int, @@ -120,7 +120,7 @@ class ClosingQuotesFormatter(StringFormatter): name = "closing-quotes" - def _treat_string(self, tokeninfo: tokenize.TokenInfo, _: int) -> str: + def treat_string(self, tokeninfo: tokenize.TokenInfo, _: int) -> str: """Fix the position of end quotes for multi-line docstrings.""" new_string = tokeninfo.string if "\n" not in new_string: @@ -144,7 +144,7 @@ class FinalPeriodFormatter(SummaryFormatter): name = "final-period" END_OF_SENTENCE_PUNCTUATION = {".", "?", "!", "‽", ":", ";"} - def _treat_summary( + def treat_summary( self, summary: str, indent_length: int, @@ -180,7 +180,7 @@ class SplitSummaryAndDocstringFormatter(SummaryFormatter): """Pattern to match against an end of sentence period.""" # pylint: disable-next=too-many-branches - def _treat_summary( + def treat_summary( self, summary: str, indent_length: int, @@ -230,7 +230,7 @@ class StripWhitespacesFormatter(StringAndQuotesFormatter): name = "strip-whitespaces" - def _treat_string( + def treat_string( self, tokeninfo: tokenize.TokenInfo, indent_length: int, @@ -275,7 +275,7 @@ class QuotesTypeFormatter(StringAndQuotesFormatter): name = "quotes-type" - def _treat_string( + def treat_string( self, tokeninfo: tokenize.TokenInfo, _: int, diff --git a/pydocstringformatter/_testutils/primer/packages.py b/pydocstringformatter/_testutils/primer/packages.py index 003616a8..f35a2b20 100644 --- a/pydocstringformatter/_testutils/primer/packages.py +++ b/pydocstringformatter/_testutils/primer/packages.py @@ -11,7 +11,7 @@ @dataclass -class _PackageToPrime: +class PackageToPrime: """Represents data about a package to be tested during primer tests.""" url: str @@ -58,13 +58,13 @@ def lazy_clone(self) -> None: PACKAGES = { - "pylint": _PackageToPrime( + "pylint": PackageToPrime( "https://github.com/PyCQA/pylint", "main", ["pylint"], ["--max-summary-lines=2"], ), - "pydocstringformatter": _PackageToPrime( + "pydocstringformatter": PackageToPrime( "https://github.com/DanielNoord/pydocstringformatter", "main", ["pydocstringformatter"], diff --git a/pydocstringformatter/_testutils/primer/primer.py b/pydocstringformatter/_testutils/primer/primer.py index 93f5e4f8..43d9d822 100644 --- a/pydocstringformatter/_testutils/primer/primer.py +++ b/pydocstringformatter/_testutils/primer/primer.py @@ -5,10 +5,10 @@ from pathlib import Path from pydocstringformatter._testutils.primer.const import DIFF_OUTPUT -from pydocstringformatter._testutils.primer.packages import PACKAGES, _PackageToPrime +from pydocstringformatter._testutils.primer.packages import PACKAGES, PackageToPrime -def _fix_diff(output: str, package: _PackageToPrime) -> str: +def fix_diff(output: str, package: PackageToPrime) -> str: """Make the diff more readable and useful.""" new_output: list[str] = [] @@ -28,7 +28,7 @@ def _fix_diff(output: str, package: _PackageToPrime) -> str: return "\n".join(new_output) -def _run_prepare() -> None: +def run_prepare() -> None: """Prepare everything for the primer to be run. This clones all packages that need to be 'primed' and @@ -40,7 +40,7 @@ def _run_prepare() -> None: print("## Preparation of primer successful!") -def _run_step_one() -> None: +def run_step_one() -> None: """Run program over all packages in write mode. Runs the program in write mode over all packages that need @@ -61,7 +61,7 @@ def _run_step_one() -> None: print("## Step one of primer successful!") -def _run_step_two() -> None: +def run_step_two() -> None: """Run program over all packages and store the diff. This reiterates over all packages that need to be 'primed', @@ -79,7 +79,7 @@ def _run_step_two() -> None: text=True, check=False, ) - output[name] = _fix_diff(process.stdout, package) + output[name] = fix_diff(process.stdout, package) final_output = "" for name, string in output.items(): @@ -93,17 +93,17 @@ def _run_step_two() -> None: print("## Step two of primer successful!") -def _run_primer() -> None: +def run_primer() -> None: """Run the primer test.""" args = sys.argv[1:] if "--prepare" in args: - _run_prepare() + run_prepare() elif "--step-one" in args: - _run_step_one() + run_step_one() elif "--step-two" in args: - _run_step_two() + run_step_two() if __name__ == "__main__": - _run_primer() + run_primer() diff --git a/pydocstringformatter/_utils/__init__.py b/pydocstringformatter/_utils/__init__.py index 46fc2096..0d063af0 100644 --- a/pydocstringformatter/_utils/__init__.py +++ b/pydocstringformatter/_utils/__init__.py @@ -3,18 +3,18 @@ PydocstringFormatterError, TomlParsingError, ) -from pydocstringformatter._utils.file_diference import _generate_diff -from pydocstringformatter._utils.find_docstrings import _is_docstring -from pydocstringformatter._utils.find_python_file import _find_python_files -from pydocstringformatter._utils.output import _print_to_console, _sys_exit +from pydocstringformatter._utils.file_diference import generate_diff +from pydocstringformatter._utils.find_docstrings import is_docstring +from pydocstringformatter._utils.find_python_file import find_python_files +from pydocstringformatter._utils.output import print_to_console, sys_exit __all__ = [ - "_find_python_files", - "_generate_diff", - "_is_docstring", + "find_python_files", + "generate_diff", + "is_docstring", "ParsingError", "PydocstringFormatterError", "TomlParsingError", - "_print_to_console", - "_sys_exit", + "print_to_console", + "sys_exit", ] diff --git a/pydocstringformatter/_utils/file_diference.py b/pydocstringformatter/_utils/file_diference.py index 4fff18d2..c48250ac 100644 --- a/pydocstringformatter/_utils/file_diference.py +++ b/pydocstringformatter/_utils/file_diference.py @@ -1,7 +1,7 @@ import difflib -def _generate_diff(old: str, new: str, filename: str) -> str: +def generate_diff(old: str, new: str, filename: str) -> str: """Generate a printable diff for two strings of sourcecode.""" return ( "\n".join( diff --git a/pydocstringformatter/_utils/find_docstrings.py b/pydocstringformatter/_utils/find_docstrings.py index 97e0909e..3e0f3fcc 100644 --- a/pydocstringformatter/_utils/find_docstrings.py +++ b/pydocstringformatter/_utils/find_docstrings.py @@ -4,7 +4,7 @@ PREVIOUS_TOKEN_MARKERS = (token.INDENT, token.ENDMARKER, token.NEWLINE) -def _is_docstring( +def is_docstring( tokeninfo: tokenize.TokenInfo, previous_token: tokenize.TokenInfo ) -> bool: """Check if a token represents a docstring.""" diff --git a/pydocstringformatter/_utils/find_python_file.py b/pydocstringformatter/_utils/find_python_file.py index 93dbb02c..4365129e 100644 --- a/pydocstringformatter/_utils/find_python_file.py +++ b/pydocstringformatter/_utils/find_python_file.py @@ -5,12 +5,12 @@ from pathlib import Path -def _is_python_file(filename: str) -> bool: +def is_python_file(filename: str) -> bool: """Check if file is a Python file.""" return filename.endswith(".py") -def _find_python_files( +def find_python_files( filenames: list[str], exclude: list[str], recursive: bool = True ) -> list[Path]: """Find all python files for a list of potential file and directory names.""" @@ -27,14 +27,14 @@ def _find_python_files( pathnames += [ Path(os.path.abspath(root)) / child for child in children - if _is_python_file(child) + if is_python_file(child) and str(Path(root) / child) not in to_exclude ] else: pathnames += [ - file for file in Path(name).iterdir() if _is_python_file(str(file)) + file for file in Path(name).iterdir() if is_python_file(str(file)) ] - elif _is_python_file(name): + elif is_python_file(name): pathnames.append(Path(name)) return sorted(pathnames) diff --git a/pydocstringformatter/_utils/output.py b/pydocstringformatter/_utils/output.py index 8b9b0981..2317f8bc 100644 --- a/pydocstringformatter/_utils/output.py +++ b/pydocstringformatter/_utils/output.py @@ -1,7 +1,7 @@ import sys -def _encode_string(string: str) -> bytes: +def encode_string(string: str) -> bytes: """Encode a string to utf-8. This can be used to circumvent the issue of the standard encoding @@ -11,7 +11,7 @@ def _encode_string(string: str) -> bytes: return string.encode("utf-8") -def _print_to_console(string: str, quiet: bool) -> None: +def print_to_console(string: str, quiet: bool) -> None: """Print a string to the console while handling edge cases. This can be used instead of print() whenever we want to @@ -19,10 +19,10 @@ def _print_to_console(string: str, quiet: bool) -> None: in quiet mode. """ if not quiet: - sys.stdout.buffer.write(_encode_string(string)) + sys.stdout.buffer.write(encode_string(string)) -def _sys_exit(value: int, option: bool) -> None: +def sys_exit(value: int, option: bool) -> None: """Sys.exit if the boolean passed says to do so.""" if option: sys.exit(value) diff --git a/pydocstringformatter/run.py b/pydocstringformatter/run.py index 3ca9e785..822bc869 100644 --- a/pydocstringformatter/run.py +++ b/pydocstringformatter/run.py @@ -29,28 +29,28 @@ def __init__(self, argv: list[str] | None) -> None: for formatter in _formatting.FORMATTERS: formatter.set_config_namespace(self.config) - self._check_files(self.config.files) + self.check_files(self.config.files) # pylint: disable-next=inconsistent-return-statements - def _check_files(self, files: list[str]) -> None: + def check_files(self, files: list[str]) -> None: """Find all files and perform the formatting.""" - filepaths = _utils._find_python_files(files, self.config.exclude) + filepaths = _utils.find_python_files(files, self.config.exclude) - is_changed = self._format_files(filepaths) + is_changed = self.format_files(filepaths) if is_changed: # pylint: disable=consider-using-assignment-expr - return _utils._sys_exit(32, self.config.exit_code) + return _utils.sys_exit(32, self.config.exit_code) files_string = f"{len(filepaths)} " files_string += "files" if len(filepaths) != 1 else "file" - _utils._print_to_console( + _utils.print_to_console( f"Nothing to do! All docstrings in {files_string} are correct 🎉\n", self.config.quiet, ) - _utils._sys_exit(0, self.config.exit_code) + _utils.sys_exit(0, self.config.exit_code) - def _format_file(self, filename: Path) -> bool: + def format_file(self, filename: Path) -> bool: """Format a file.""" changed_tokens: list[tokenize.TokenInfo] = [] is_changed = False @@ -69,7 +69,7 @@ def _format_file(self, filename: Path) -> bool: for index, tokeninfo in enumerate(tokens): new_tokeninfo = tokeninfo - if _utils._is_docstring(new_tokeninfo, tokens[index - 1]): + if _utils.is_docstring(new_tokeninfo, tokens[index - 1]): for formatter in _formatting.FORMATTERS: if getattr(self.config, formatter.name): new_tokeninfo = formatter.treat_token(new_tokeninfo) @@ -96,12 +96,12 @@ def _format_file(self, filename: Path) -> bool: ) with open(filename, "w", encoding="utf-8", newline=newlines) as file: file.write(tokenize.untokenize(changed_tokens)) - _utils._print_to_console( + _utils.print_to_console( f"Formatted {filename_str} 📖\n", self.config.quiet ) else: sys.stdout.write( - _utils._generate_diff( + _utils.generate_diff( tokenize.untokenize(tokens), tokenize.untokenize(changed_tokens), filename_str, @@ -110,11 +110,11 @@ def _format_file(self, filename: Path) -> bool: return is_changed - def _format_files(self, filepaths: list[Path]) -> bool: + def format_files(self, filepaths: list[Path]) -> bool: """Format a list of files.""" is_changed = False for file in filepaths: - is_changed = self._format_file(file) or is_changed + is_changed = self.format_file(file) or is_changed return is_changed diff --git a/tests/test_run.py b/tests/test_run.py index 71ae8b56..594f8aee 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -39,7 +39,7 @@ class OptionalFormatter(StringFormatter): name = "optional-formatter" optional = True - def _treat_string( + def treat_string( self, tokeninfo: tokenize.TokenInfo, indent_length: int ) -> str: """Treat a string.""" @@ -50,7 +50,7 @@ class NonOptionalFormatter(StringFormatter): name = "non-optional-formatter" - def _treat_string( + def treat_string( self, tokeninfo: tokenize.TokenInfo, indent_length: int ) -> str: """Treat a string.""" diff --git a/tests/test_utils.py b/tests/test_utils.py index 2568cdf5..4ed5e936 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -7,7 +7,7 @@ import pytest import pydocstringformatter -from pydocstringformatter._utils import _find_python_files, _is_docstring +from pydocstringformatter._utils import find_python_files, is_docstring HERE = Path(__file__) UTILS_DATA = HERE.parent / "data" / "utils" @@ -19,7 +19,7 @@ class TestPythonFileFinder: @staticmethod def test_underscores_files() -> None: """Test that we can find files with leading underscores.""" - pathnames = _find_python_files([str(UTILS_DATA / "find_underscore_files")], []) + pathnames = find_python_files([str(UTILS_DATA / "find_underscore_files")], []) expected_paths = [ UTILS_DATA / "find_underscore_files" / "file_one.py", UTILS_DATA / "find_underscore_files" / "_file_two.py", @@ -31,7 +31,7 @@ def test_underscores_files() -> None: @staticmethod def test_recursive_files() -> None: """Test that we can find files recursively.""" - pathnames = _find_python_files( + pathnames = find_python_files( [str(UTILS_DATA / "find_recursive_files")], [], recursive=True ) expected_paths = [ @@ -51,7 +51,7 @@ def test_recursive_files() -> None: @staticmethod def test_recursive_files_standard() -> None: """Test that we can find files recursively even if argument is not supplied.""" - pathnames = _find_python_files([str(UTILS_DATA / "find_recursive_files")], []) + pathnames = find_python_files([str(UTILS_DATA / "find_recursive_files")], []) expected_paths = [ UTILS_DATA / "find_recursive_files" / "file_one.py", UTILS_DATA @@ -69,7 +69,7 @@ def test_recursive_files_standard() -> None: @staticmethod def test_ignore_recursive_files() -> None: """Test that we ignore inner directories if recusrive is False.""" - pathnames = _find_python_files( + pathnames = find_python_files( [str(UTILS_DATA / "find_recursive_files")], [], recursive=False ) expected_paths = [UTILS_DATA / "find_recursive_files" / "file_one.py"] @@ -78,7 +78,7 @@ def test_ignore_recursive_files() -> None: @staticmethod def test_ignore_non_python_file() -> None: """Test that we ignore a non Python file.""" - pathnames = _find_python_files( + pathnames = find_python_files( [str(UTILS_DATA / "find_nothing" / "README.md")], [] ) assert not pathnames @@ -97,7 +97,7 @@ def test_function_docstrings(self) -> None: ) as file: tokens = list(tokenize.generate_tokens(file.readline)) for index, tokeninfo in enumerate(tokens): - if _is_docstring(tokeninfo, tokens[index - 1]): + if is_docstring(tokeninfo, tokens[index - 1]): docstrings.append((tokeninfo.start, tokeninfo.end)) assert docstrings == [ @@ -121,7 +121,7 @@ def test_dictionary_key_value_line(self) -> None: with open(self.docstring_data / "dictionary.py", encoding="utf-8") as file: tokens = list(tokenize.generate_tokens(file.readline)) for index, tokeninfo in enumerate(tokens): - if _is_docstring(tokeninfo, tokens[index - 1]): + if is_docstring(tokeninfo, tokens[index - 1]): docstrings.append((tokeninfo.start, tokeninfo.end)) assert not docstrings @@ -134,7 +134,7 @@ def test_module_docstrings(self) -> None: ) as file: tokens = list(tokenize.generate_tokens(file.readline)) for index, tokeninfo in enumerate(tokens): - if _is_docstring(tokeninfo, tokens[index - 1]): + if is_docstring(tokeninfo, tokens[index - 1]): docstrings.append((tokeninfo.start, tokeninfo.end)) assert docstrings == [((3, 0), (4, 3))]