From ef5ea4b2124c89bde46620dec54c194a7e928f7b Mon Sep 17 00:00:00 2001 From: Sigurd Spieckermann Date: Thu, 3 Apr 2025 20:17:52 +0200 Subject: [PATCH] refactor: rename internal modules with a `_` prefix --- copier/__init__.py | 2 +- copier/__main__.py | 2 +- copier/{cli.py => _cli.py} | 6 ++--- copier/{jinja_ext.py => _jinja_ext.py} | 0 copier/{main.py => _main.py} | 34 ++++++++++++------------ copier/{subproject.py => _subproject.py} | 8 +++--- copier/{template.py => _template.py} | 6 ++--- copier/{tools.py => _tools.py} | 2 +- copier/{types.py => _types.py} | 0 copier/{user_data.py => _user_data.py} | 6 ++--- copier/{vcs.py => _vcs.py} | 2 +- copier/errors.py | 8 +++--- docs/reference/cli.md | 2 +- docs/reference/jinja_ext.md | 2 +- docs/reference/main.md | 2 +- docs/reference/subproject.md | 2 +- docs/reference/template.md | 2 +- docs/reference/tools.md | 2 +- docs/reference/types.md | 2 +- docs/reference/user_data.md | 2 +- docs/reference/vcs.md | 2 +- flake.nix | 4 +++ pyproject.toml | 5 ++++ tests/helpers.py | 2 +- tests/test_answersfile.py | 2 +- tests/test_answersfile_templating.py | 2 +- tests/test_cli.py | 4 +-- tests/test_complex_questions.py | 2 +- tests/test_config.py | 4 +-- tests/test_copy.py | 2 +- tests/test_dirty_local.py | 2 +- tests/test_exclude.py | 6 ++--- tests/test_imports.py | 2 +- tests/test_interrupts.py | 4 +-- tests/test_legacy_migration.py | 2 +- tests/test_migrations.py | 2 +- tests/test_minimum_version.py | 2 +- tests/test_output.py | 2 +- tests/test_prompt.py | 4 +-- tests/test_recopy.py | 6 ++--- tests/test_subdirectory.py | 2 +- tests/test_tasks.py | 4 +-- tests/test_templated_prompt.py | 4 +-- tests/test_tmpdir.py | 4 +-- tests/test_tools.py | 2 +- tests/test_unsafe.py | 8 +++--- tests/test_updatediff.py | 8 +++--- tests/test_vcs.py | 7 ++--- 48 files changed, 101 insertions(+), 91 deletions(-) rename copier/{cli.py => _cli.py} (99%) rename copier/{jinja_ext.py => _jinja_ext.py} (100%) rename copier/{main.py => _main.py} (99%) rename copier/{subproject.py => _subproject.py} (93%) rename copier/{template.py => _template.py} (99%) rename copier/{tools.py => _tools.py} (99%) rename copier/{types.py => _types.py} (100%) rename copier/{user_data.py => _user_data.py} (99%) rename copier/{vcs.py => _vcs.py} (99%) diff --git a/copier/__init__.py b/copier/__init__.py index 8ba554a..36adceb 100644 --- a/copier/__init__.py +++ b/copier/__init__.py @@ -5,7 +5,7 @@ Docs: https://copier.readthedocs.io/ import importlib.metadata -from .main import * # noqa: F401,F403 +from ._main import * # noqa: F401,F403 try: __version__ = importlib.metadata.version(__name__) diff --git a/copier/__main__.py b/copier/__main__.py index 82e1cde..af39df7 100644 --- a/copier/__main__.py +++ b/copier/__main__.py @@ -1,6 +1,6 @@ """Copier CLI entrypoint.""" -from .cli import CopierApp +from ._cli import CopierApp if __name__ == "__main__": CopierApp.run() diff --git a/copier/cli.py b/copier/_cli.py similarity index 99% rename from copier/cli.py rename to copier/_cli.py index 220439f..d579ca2 100644 --- a/copier/cli.py +++ b/copier/_cli.py @@ -58,10 +58,10 @@ from typing import Any, Callable, Optional import yaml from plumbum import cli, colors +from ._main import Worker +from ._tools import copier_version +from ._types import AnyByStrDict from .errors import UnsafeTemplateError, UserMessageError -from .main import Worker -from .tools import copier_version -from .types import AnyByStrDict def _handle_exceptions(method: Callable[[], None]) -> int: diff --git a/copier/jinja_ext.py b/copier/_jinja_ext.py similarity index 100% rename from copier/jinja_ext.py rename to copier/_jinja_ext.py diff --git a/copier/main.py b/copier/_main.py similarity index 99% rename from copier/main.py rename to copier/_main.py index f7fcd43..fde8e41 100644 --- a/copier/main.py +++ b/copier/_main.py @@ -36,20 +36,10 @@ from pydantic.dataclasses import dataclass from pydantic_core import to_jsonable_python from questionary import confirm, unsafe_prompt -from .errors import ( - CopierAnswersInterrupt, - ExtensionNotFoundError, - InteractiveSessionError, - TaskError, - UnsafeTemplateError, - UserMessageError, - YieldTagInFileError, -) -from .jinja_ext import YieldEnvironment, YieldExtension -from .settings import Settings -from .subproject import Subproject -from .template import Task, Template -from .tools import ( +from ._jinja_ext import YieldEnvironment, YieldExtension +from ._subproject import Subproject +from ._template import Task, Template +from ._tools import ( OS, Style, cast_to_bool, @@ -59,7 +49,7 @@ from .tools import ( scantree, set_git_alternates, ) -from .types import ( +from ._types import ( MISSING, AnyByStrDict, AnyByStrMutableMapping, @@ -71,8 +61,18 @@ from .types import ( RelativePath, StrOrPath, ) -from .user_data import AnswersMap, Question, load_answersfile_data -from .vcs import get_git +from ._user_data import AnswersMap, Question, load_answersfile_data +from ._vcs import get_git +from .errors import ( + CopierAnswersInterrupt, + ExtensionNotFoundError, + InteractiveSessionError, + TaskError, + UnsafeTemplateError, + UserMessageError, + YieldTagInFileError, +) +from .settings import Settings _T = TypeVar("_T") _P = ParamSpec("_P") diff --git a/copier/subproject.py b/copier/_subproject.py similarity index 93% rename from copier/subproject.py rename to copier/_subproject.py index 5a4db0c..dffe13e 100644 --- a/copier/subproject.py +++ b/copier/_subproject.py @@ -13,10 +13,10 @@ from typing import Callable from plumbum.machines import local from pydantic.dataclasses import dataclass -from .template import Template -from .types import AbsolutePath, AnyByStrDict, VCSTypes -from .user_data import load_answersfile_data -from .vcs import get_git, is_in_git_repo +from ._template import Template +from ._types import AbsolutePath, AnyByStrDict, VCSTypes +from ._user_data import load_answersfile_data +from ._vcs import get_git, is_in_git_repo @dataclass diff --git a/copier/template.py b/copier/_template.py similarity index 99% rename from copier/template.py rename to copier/_template.py index 7bf7bd9..b26a724 100644 --- a/copier/template.py +++ b/copier/_template.py @@ -22,6 +22,9 @@ from packaging.version import Version, parse from plumbum.machines import local from pydantic.dataclasses import dataclass +from ._tools import copier_version, handle_remove_readonly +from ._types import AnyByStrDict, VCSTypes +from ._vcs import checkout_latest_tag, clone, get_git, get_repo from .errors import ( InvalidConfigFileError, MultipleConfigFilesError, @@ -29,9 +32,6 @@ from .errors import ( UnknownCopierVersionWarning, UnsupportedVersionError, ) -from .tools import copier_version, handle_remove_readonly -from .types import AnyByStrDict, VCSTypes -from .vcs import checkout_latest_tag, clone, get_git, get_repo # Default list of files in the template to exclude from the rendered project DEFAULT_EXCLUDE: tuple[str, ...] = ( diff --git a/copier/tools.py b/copier/_tools.py similarity index 99% rename from copier/tools.py rename to copier/_tools.py index 7dce64a..0a6872f 100644 --- a/copier/tools.py +++ b/copier/_tools.py @@ -229,7 +229,7 @@ def get_git_objects_dir(path: Path) -> Path: """Get the absolute path of a Git repository's objects directory.""" # FIXME: A lazy import is currently necessary to avoid circular imports with # `errors.py`. - from .vcs import get_git + from ._vcs import get_git git = get_git() return path.joinpath( diff --git a/copier/types.py b/copier/_types.py similarity index 100% rename from copier/types.py rename to copier/_types.py diff --git a/copier/user_data.py b/copier/_user_data.py similarity index 99% rename from copier/user_data.py rename to copier/_user_data.py index 22fed55..5c2e66c 100644 --- a/copier/user_data.py +++ b/copier/_user_data.py @@ -26,9 +26,8 @@ from questionary.prompts.common import Choice from copier.settings import Settings -from .errors import InvalidTypeError, MissingFileWarning, UserMessageError -from .tools import cast_to_bool, cast_to_str, force_str_end -from .types import ( +from ._tools import cast_to_bool, cast_to_str, force_str_end +from ._types import ( MISSING, AnyByStrDict, AnyByStrMutableMapping, @@ -36,6 +35,7 @@ from .types import ( MissingType, StrOrPath, ) +from .errors import InvalidTypeError, MissingFileWarning, UserMessageError # TODO Remove these two functions as well as DEFAULT_DATA in a future release diff --git a/copier/vcs.py b/copier/_vcs.py similarity index 99% rename from copier/vcs.py rename to copier/_vcs.py index 1917a7f..33c4544 100644 --- a/copier/vcs.py +++ b/copier/_vcs.py @@ -14,8 +14,8 @@ from packaging.version import InvalidVersion, Version from plumbum import TF, ProcessExecutionError, colors, local from plumbum.machines import LocalCommand +from ._types import OptBool, OptStrOrPath, StrOrPath from .errors import DirtyLocalWarning, ShallowCloneWarning -from .types import OptBool, OptStrOrPath, StrOrPath GIT_USER_NAME = "Copier" GIT_USER_EMAIL = "copier@copier" diff --git a/copier/errors.py b/copier/errors.py index e8bd741..fb61095 100644 --- a/copier/errors.py +++ b/copier/errors.py @@ -9,12 +9,12 @@ from pathlib import Path from subprocess import CompletedProcess from typing import TYPE_CHECKING -from .tools import printf_exception -from .types import PathSeq +from ._tools import printf_exception +from ._types import PathSeq if TYPE_CHECKING: # always false - from .template import Template - from .user_data import AnswersMap, Question + from ._template import Template + from ._user_data import AnswersMap, Question if sys.version_info < (3, 11): from typing_extensions import Self diff --git a/docs/reference/cli.md b/docs/reference/cli.md index c2b327d..b96baed 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -1 +1 @@ -::: copier.cli +::: copier._cli diff --git a/docs/reference/jinja_ext.md b/docs/reference/jinja_ext.md index e78411e..1a69a91 100644 --- a/docs/reference/jinja_ext.md +++ b/docs/reference/jinja_ext.md @@ -1 +1 @@ -::: copier.jinja_ext +::: copier._jinja_ext diff --git a/docs/reference/main.md b/docs/reference/main.md index a95d6c5..2ed2077 100644 --- a/docs/reference/main.md +++ b/docs/reference/main.md @@ -1 +1 @@ -::: copier.main +::: copier._main diff --git a/docs/reference/subproject.md b/docs/reference/subproject.md index 571d4dc..ec33e32 100644 --- a/docs/reference/subproject.md +++ b/docs/reference/subproject.md @@ -1 +1 @@ -::: copier.subproject +::: copier._subproject diff --git a/docs/reference/template.md b/docs/reference/template.md index 64a8088..72ffed6 100644 --- a/docs/reference/template.md +++ b/docs/reference/template.md @@ -1 +1 @@ -::: copier.template +::: copier._template diff --git a/docs/reference/tools.md b/docs/reference/tools.md index 74eb59c..552b142 100644 --- a/docs/reference/tools.md +++ b/docs/reference/tools.md @@ -1 +1 @@ -::: copier.tools +::: copier._tools diff --git a/docs/reference/types.md b/docs/reference/types.md index 80504f6..78e3016 100644 --- a/docs/reference/types.md +++ b/docs/reference/types.md @@ -1 +1 @@ -::: copier.types +::: copier._types diff --git a/docs/reference/user_data.md b/docs/reference/user_data.md index 1a1bf47..e6336b7 100644 --- a/docs/reference/user_data.md +++ b/docs/reference/user_data.md @@ -1 +1 @@ -::: copier.user_data +::: copier._user_data diff --git a/docs/reference/vcs.md b/docs/reference/vcs.md index 554fb17..6c73498 100644 --- a/docs/reference/vcs.md +++ b/docs/reference/vcs.md @@ -1 +1 @@ -::: copier.vcs +::: copier._vcs diff --git a/flake.nix b/flake.nix index 75b6f2e..bdfa523 100644 --- a/flake.nix +++ b/flake.nix @@ -76,6 +76,10 @@ ]; prettier.enable = true; prettier.excludes = [ + # Some API reference identifiers are dotted paths involving + # internal modules prefixed with `_` which are converted by + # Prettier to `\_`, making them invalid. + "^docs/reference/.+\.md$" # Those files have wrong syntax and would fail "^tests/demo_invalid/copier.yml$" "^tests/demo_transclude_invalid(_multi)?/demo/copier.yml$" diff --git a/pyproject.toml b/pyproject.toml index b2b00c8..fd1840f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -135,6 +135,11 @@ ignore_missing_imports = true [[tool.mypy.overrides]] module = [ + "copier._subproject", + "copier._template", + "copier._tools", + "copier._user_data", + "copier._vcs", "copier.subproject", "copier.template", "copier.tools", diff --git a/tests/helpers.py b/tests/helpers.py index 1598ae3..2414440 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -20,7 +20,7 @@ from prompt_toolkit.keys import Keys from pytest_gitconfig.plugin import DEFAULT_GIT_USER_EMAIL, DEFAULT_GIT_USER_NAME import copier -from copier.types import StrOrPath +from copier._types import StrOrPath PROJECT_TEMPLATE = Path(__file__).parent / "demo" diff --git a/tests/test_answersfile.py b/tests/test_answersfile.py index 619d6fd..74421c4 100644 --- a/tests/test_answersfile.py +++ b/tests/test_answersfile.py @@ -9,7 +9,7 @@ import pytest import yaml import copier -from copier.user_data import load_answersfile_data +from copier._user_data import load_answersfile_data from .helpers import BRACKET_ENVOPS_JSON, SUFFIX_TMPL, build_file_tree, git_save diff --git a/tests/test_answersfile_templating.py b/tests/test_answersfile_templating.py index c2b2c78..cb64a32 100644 --- a/tests/test_answersfile_templating.py +++ b/tests/test_answersfile_templating.py @@ -5,7 +5,7 @@ from pathlib import Path import pytest import copier -from copier.user_data import load_answersfile_data +from copier._user_data import load_answersfile_data from .helpers import build_file_tree diff --git a/tests/test_cli.py b/tests/test_cli.py index da6498b..192cb99 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -10,8 +10,8 @@ import pytest import yaml from plumbum import local -from copier.cli import CopierApp -from copier.user_data import load_answersfile_data +from copier._cli import CopierApp +from copier._user_data import load_answersfile_data from .helpers import COPIER_CMD, build_file_tree, git diff --git a/tests/test_complex_questions.py b/tests/test_complex_questions.py index e53f7ee..20e31ed 100644 --- a/tests/test_complex_questions.py +++ b/tests/test_complex_questions.py @@ -12,7 +12,7 @@ from pexpect.popen_spawn import PopenSpawn from plumbum import local from copier import run_copy, run_update -from copier.user_data import load_answersfile_data +from copier._user_data import load_answersfile_data from .helpers import ( BRACKET_ENVOPS, diff --git a/tests/test_config.py b/tests/test_config.py index 448ec8e..5d9d3b4 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -10,9 +10,9 @@ from plumbum import local from pydantic import ValidationError import copier +from copier._template import DEFAULT_EXCLUDE, Task, Template, load_template_config +from copier._types import AnyByStrDict from copier.errors import InvalidConfigFileError, MultipleConfigFilesError -from copier.template import DEFAULT_EXCLUDE, Task, Template, load_template_config -from copier.types import AnyByStrDict from .helpers import BRACKET_ENVOPS_JSON, SUFFIX_TMPL, build_file_tree, git_init diff --git a/tests/test_copy.py b/tests/test_copy.py index 533bb24..2827866 100644 --- a/tests/test_copy.py +++ b/tests/test_copy.py @@ -18,7 +18,7 @@ from plumbum import local import copier from copier import run_copy -from copier.types import AnyByStrDict +from copier._types import AnyByStrDict from .helpers import ( BRACKET_ENVOPS, diff --git a/tests/test_dirty_local.py b/tests/test_dirty_local.py index d34b087..ee2c09c 100644 --- a/tests/test_dirty_local.py +++ b/tests/test_dirty_local.py @@ -6,8 +6,8 @@ from plumbum import local from pytest_gitconfig.plugin import GitConfig import copier +from copier._main import run_copy, run_update from copier.errors import DirtyLocalWarning -from copier.main import run_copy, run_update from .helpers import DATA, PROJECT_TEMPLATE, build_file_tree, git diff --git a/tests/test_exclude.py b/tests/test_exclude.py index 84d6ed3..a38c236 100644 --- a/tests/test_exclude.py +++ b/tests/test_exclude.py @@ -4,9 +4,9 @@ from pathlib import Path import pytest -from copier.main import run_copy -from copier.template import DEFAULT_EXCLUDE -from copier.types import StrOrPath +from copier._main import run_copy +from copier._template import DEFAULT_EXCLUDE +from copier._types import StrOrPath from .helpers import PROJECT_TEMPLATE, build_file_tree diff --git a/tests/test_imports.py b/tests/test_imports.py index f193475..8d63bcb 100644 --- a/tests/test_imports.py +++ b/tests/test_imports.py @@ -2,7 +2,7 @@ import pytest import yaml import copier -from copier.types import AnyByStrDict +from copier._types import AnyByStrDict from .helpers import build_file_tree diff --git a/tests/test_interrupts.py b/tests/test_interrupts.py index d9b17d0..8c1f06e 100644 --- a/tests/test_interrupts.py +++ b/tests/test_interrupts.py @@ -34,7 +34,7 @@ def test_keyboard_interrupt( ) worker = Worker(str(src), dst, defaults=False) - with patch("copier.main.unsafe_prompt", side_effect=side_effect): + with patch("copier._main.unsafe_prompt", side_effect=side_effect): with pytest.raises(KeyboardInterrupt): worker.run_copy() @@ -58,7 +58,7 @@ def test_multiple_questions_interrupt(tmp_path_factory: pytest.TempPathFactory) worker = Worker(str(src), dst, defaults=False) with patch( - "copier.main.unsafe_prompt", + "copier._main.unsafe_prompt", side_effect=[ {"question1": "foobar"}, {"question2": "yosemite"}, diff --git a/tests/test_legacy_migration.py b/tests/test_legacy_migration.py index 0b49f08..82cffe0 100644 --- a/tests/test_legacy_migration.py +++ b/tests/test_legacy_migration.py @@ -7,8 +7,8 @@ import pytest from plumbum import local from copier import run_copy, run_update +from copier._user_data import load_answersfile_data from copier.errors import UserMessageError -from copier.user_data import load_answersfile_data from .helpers import BRACKET_ENVOPS_JSON, PROJECT_TEMPLATE, build_file_tree, git diff --git a/tests/test_migrations.py b/tests/test_migrations.py index 1dad974..18c054b 100644 --- a/tests/test_migrations.py +++ b/tests/test_migrations.py @@ -4,8 +4,8 @@ import pytest from plumbum import local from copier import run_copy, run_update +from copier._user_data import load_answersfile_data from copier.errors import UnsafeTemplateError, UserMessageError -from copier.user_data import load_answersfile_data from .helpers import ( COPIER_ANSWERS_FILE, diff --git a/tests/test_minimum_version.py b/tests/test_minimum_version.py index 39578eb..4dd128e 100644 --- a/tests/test_minimum_version.py +++ b/tests/test_minimum_version.py @@ -85,7 +85,7 @@ def test_minimum_version_update( def test_version_0_0_0_ignored( template_path: str, tmp_path: Path, monkeypatch: pytest.MonkeyPatch ) -> None: - monkeypatch.setattr("copier.template.copier_version", lambda: Version("0.0.0")) + monkeypatch.setattr("copier._template.copier_version", lambda: Version("0.0.0")) # assert no error with warnings.catch_warnings(): warnings.simplefilter("error") diff --git a/tests/test_output.py b/tests/test_output.py index 069bad3..b1e5375 100644 --- a/tests/test_output.py +++ b/tests/test_output.py @@ -5,8 +5,8 @@ import pexpect import pytest from plumbum import local +from copier._main import run_copy, run_recopy, run_update from copier.errors import InvalidTypeError -from copier.main import run_copy, run_recopy, run_update from .helpers import COPIER_PATH, Spawn, build_file_tree, expect_prompt, git, render diff --git a/tests/test_prompt.py b/tests/test_prompt.py index f98d541..595e49c 100644 --- a/tests/test_prompt.py +++ b/tests/test_prompt.py @@ -13,8 +13,8 @@ import yaml from pexpect.popen_spawn import PopenSpawn from plumbum import local -from copier.types import StrOrPath -from copier.user_data import load_answersfile_data +from copier._types import StrOrPath +from copier._user_data import load_answersfile_data from .helpers import ( BRACKET_ENVOPS, diff --git a/tests/test_recopy.py b/tests/test_recopy.py index 09dd2a5..83b5241 100644 --- a/tests/test_recopy.py +++ b/tests/test_recopy.py @@ -5,9 +5,9 @@ import pytest from plumbum import local from copier import run_copy, run_recopy -from copier.cli import CopierApp -from copier.user_data import load_answersfile_data -from copier.vcs import get_git +from copier._cli import CopierApp +from copier._user_data import load_answersfile_data +from copier._vcs import get_git from .helpers import build_file_tree, git_save diff --git a/tests/test_subdirectory.py b/tests/test_subdirectory.py index 8f63dd2..92cebe1 100644 --- a/tests/test_subdirectory.py +++ b/tests/test_subdirectory.py @@ -6,7 +6,7 @@ import pytest from plumbum import local import copier -from copier.user_data import load_answersfile_data +from copier._user_data import load_answersfile_data from .helpers import BRACKET_ENVOPS_JSON, SUFFIX_TMPL, build_file_tree, git, git_init diff --git a/tests/test_tasks.py b/tests/test_tasks.py index d4286e1..1b66406 100644 --- a/tests/test_tasks.py +++ b/tests/test_tasks.py @@ -7,7 +7,7 @@ import pytest import yaml import copier -from copier.cli import CopierApp +from copier._cli import CopierApp from .helpers import BRACKET_ENVOPS_JSON, SUFFIX_TMPL, build_file_tree @@ -161,7 +161,7 @@ def test_os_specific_tasks( ) } ) - monkeypatch.setattr("copier.main.OS", os) + monkeypatch.setattr("copier._main.OS", os) copier.run_copy(str(src), dst, unsafe=True) assert (dst / filename).exists() diff --git a/tests/test_templated_prompt.py b/tests/test_templated_prompt.py index ea8a0da..b834adb 100644 --- a/tests/test_templated_prompt.py +++ b/tests/test_templated_prompt.py @@ -11,9 +11,9 @@ from pexpect.popen_spawn import PopenSpawn from plumbum import local from copier import Worker +from copier._types import AnyByStrDict +from copier._user_data import load_answersfile_data from copier.errors import InvalidTypeError -from copier.types import AnyByStrDict -from copier.user_data import load_answersfile_data from .helpers import ( BRACKET_ENVOPS, diff --git a/tests/test_tmpdir.py b/tests/test_tmpdir.py index 07fe621..6494a24 100644 --- a/tests/test_tmpdir.py +++ b/tests/test_tmpdir.py @@ -2,8 +2,8 @@ from pathlib import Path import pytest -from copier.cli import CopierApp -from copier.main import run_copy, run_recopy, run_update +from copier._cli import CopierApp +from copier._main import run_copy, run_recopy, run_update from .helpers import build_file_tree, git diff --git a/tests/test_tools.py b/tests/test_tools.py index 0bc6794..4b28689 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -5,7 +5,7 @@ from tempfile import TemporaryDirectory import pytest from poethepoet.app import PoeThePoet -from copier.tools import normalize_git_path +from copier._tools import normalize_git_path from .helpers import git diff --git a/tests/test_unsafe.py b/tests/test_unsafe.py index 0f85a2e..906ad22 100644 --- a/tests/test_unsafe.py +++ b/tests/test_unsafe.py @@ -8,11 +8,11 @@ import yaml from jinja2.ext import Extension from plumbum import local -from copier.cli import CopierApp +from copier._cli import CopierApp +from copier._main import run_copy, run_update +from copier._types import AnyByStrDict +from copier._user_data import load_answersfile_data from copier.errors import UnsafeTemplateError -from copier.main import run_copy, run_update -from copier.types import AnyByStrDict -from copier.user_data import load_answersfile_data from .helpers import build_file_tree, git diff --git a/tests/test_updatediff.py b/tests/test_updatediff.py index b4f5f0d..3e84f07 100644 --- a/tests/test_updatediff.py +++ b/tests/test_updatediff.py @@ -10,11 +10,11 @@ import pexpect import pytest from plumbum import local -from copier.cli import CopierApp +from copier._cli import CopierApp +from copier._main import Worker, run_copy, run_update +from copier._tools import normalize_git_path +from copier._user_data import load_answersfile_data from copier.errors import UserMessageError -from copier.main import Worker, run_copy, run_update -from copier.tools import normalize_git_path -from copier.user_data import load_answersfile_data from .helpers import ( BRACKET_ENVOPS_JSON, diff --git a/tests/test_vcs.py b/tests/test_vcs.py index 6a1efa3..cd7dff1 100644 --- a/tests/test_vcs.py +++ b/tests/test_vcs.py @@ -8,10 +8,11 @@ import pytest from packaging.version import Version from plumbum import local -from copier import Worker, run_copy, run_update +from copier import run_copy, run_update +from copier._main import Worker +from copier._user_data import load_answersfile_data +from copier._vcs import checkout_latest_tag, clone, get_git_version, get_repo from copier.errors import ShallowCloneWarning -from copier.user_data import load_answersfile_data -from copier.vcs import checkout_latest_tag, clone, get_git_version, get_repo from .helpers import git