Skip to content

Commit fa923ec

Browse files
authored
Extract packaging virtualenv code to its own class (#3221)
1 parent 47bcea6 commit fa923ec

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

docs/changelog/3200.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Extract virtual environment packaging code to its own base class not tied to ``virtualenv`` - by :user:`gaborbernat`.

src/tox/tox_env/python/virtual_env/package/cmd_builder.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import glob
44
import tarfile
5+
from abc import ABC
56
from functools import partial
67
from io import TextIOWrapper
78
from pathlib import Path
@@ -35,15 +36,11 @@
3536
from importlib.metadata import Distribution
3637

3738

38-
class VirtualEnvCmdBuilder(PythonPackageToxEnv, VirtualEnv):
39+
class VenvCmdBuilder(PythonPackageToxEnv, ABC):
3940
def __init__(self, create_args: ToxEnvCreateArgs) -> None:
4041
super().__init__(create_args)
4142
self._sdist_meta_tox_env: Pep517VirtualEnvPackager | None = None
4243

43-
@staticmethod
44-
def id() -> str:
45-
return "virtualenv-cmd-builder"
46-
4744
def register_config(self) -> None:
4845
super().register_config()
4946
root = self.core["toxinidir"]
@@ -131,6 +128,12 @@ def child_pkg_envs(self, run_conf: EnvConfigSet) -> Iterator[PackageToxEnv]: #
131128
yield self._sdist_meta_tox_env
132129

133130

131+
class VirtualEnvCmdBuilder(VenvCmdBuilder, VirtualEnv):
132+
@staticmethod
133+
def id() -> str:
134+
return "virtualenv-cmd-builder"
135+
136+
134137
class WheelDistribution(Distribution): # cannot subclass has type Any
135138
def __init__(self, wheel: Path) -> None:
136139
self._wheel = wheel
@@ -165,3 +168,9 @@ def locate_file(self, path: str | PathLike[str]) -> PathLike[str]:
165168
@impl
166169
def tox_register_tox_env(register: ToxEnvRegister) -> None:
167170
register.add_package_env(VirtualEnvCmdBuilder)
171+
172+
173+
__all__ = [
174+
"VenvCmdBuilder",
175+
"VirtualEnvCmdBuilder",
176+
]

src/tox/tox_env/python/virtual_env/package/pyproject.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import logging
44
import os
55
import sys
6+
from abc import ABC
67
from collections import defaultdict
78
from contextlib import contextmanager
89
from itertools import chain
@@ -94,8 +95,8 @@ def out_err(self) -> tuple[str, str]:
9495
return status.outcome.out_err()
9596

9697

97-
class Pep517VirtualEnvPackager(PythonPackageToxEnv, VirtualEnv):
98-
"""local file system python virtual environment via the virtualenv package."""
98+
class Pep517VenvPackager(PythonPackageToxEnv, ABC):
99+
"""local file system python virtual environment package builder."""
99100

100101
def __init__(self, create_args: ToxEnvCreateArgs) -> None:
101102
super().__init__(create_args)
@@ -360,8 +361,16 @@ def requires(self) -> tuple[Requirement, ...]:
360361
return self._frontend.requires
361362

362363

364+
class Pep517VirtualEnvPackager(Pep517VenvPackager, VirtualEnv):
365+
"""local file system python virtual environment via the virtualenv package."""
366+
367+
@staticmethod
368+
def id() -> str:
369+
return "virtualenv-pep-517"
370+
371+
363372
class Pep517VirtualEnvFrontend(Frontend):
364-
def __init__(self, root: Path, env: Pep517VirtualEnvPackager) -> None:
373+
def __init__(self, root: Path, env: Pep517VenvPackager) -> None:
365374
super().__init__(*Frontend.create_args_from_folder(root))
366375
self._tox_env = env
367376
self._backend_executor_: LocalSubProcessPep517Executor | None = None
@@ -454,3 +463,9 @@ def _wheel_directory(self) -> Iterator[Path]:
454463
@impl
455464
def tox_register_tox_env(register: ToxEnvRegister) -> None:
456465
register.add_package_env(Pep517VirtualEnvPackager)
466+
467+
468+
__all__ = [
469+
"Pep517VenvPackager",
470+
"Pep517VirtualEnvPackager",
471+
]

0 commit comments

Comments
 (0)