Skip to content

Commit 2692b46

Browse files
committed
VirtualEnvConfig now additionally accepts pip_args
`pip_args` is a list of strings to pass to `pip` when installing the virtualenv's requirements. Fixes #35 Signed-off-by: Pedro Algarvio <[email protected]>
1 parent 4a86fdf commit 2692b46

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

changelog/35.improvement.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
`VirtualEnvConfig` now additionally accepts `pip_args` which is a list of strings to pass to `pip` when installing the virtualenv's requirements.

src/ptscripts/virtualenv.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class VirtualEnvConfig(TypedDict):
4040
pip_requirement: NotRequired[str]
4141
setuptools_requirement: NotRequired[str]
4242
add_as_extra_site_packages: NotRequired[bool]
43+
pip_args: NotRequired[list[str]]
4344

4445

4546
def _cast_to_pathlib_path(value):
@@ -63,6 +64,7 @@ class VirtualEnv:
6364
pip_requirement: str = attr.ib(repr=False)
6465
setuptools_requirement: str = attr.ib(repr=False)
6566
add_as_extra_site_packages: bool = attr.ib(default=False)
67+
pip_args: list[str] = attr.ib(factory=list, repr=False)
6668
environ: dict[str, str] = attr.ib(init=False, repr=False)
6769
venv_dir: pathlib.Path = attr.ib(init=False)
6870
venv_python: pathlib.Path = attr.ib(init=False, repr=False)
@@ -110,6 +112,8 @@ def __default_requirements_hash(self):
110112
requirements_hash = hashlib.sha256(self.name.encode())
111113
hash_seed = os.environ.get("TOOLS_VIRTUALENV_CACHE_SEED", "")
112114
requirements_hash.update(hash_seed.encode())
115+
if self.pip_args:
116+
requirements_hash.update(str(sorted(self.pip_args)).encode())
113117
if self.requirements:
114118
for requirement in sorted(self.requirements):
115119
requirements_hash.update(requirement.encode())
@@ -148,7 +152,7 @@ def _install_requirements(self):
148152
requirements.extend(sorted(self.requirements))
149153
if requirements:
150154
self.ctx.info(f"Install requirements for virtualenv({self.name}) ...")
151-
self.install(*requirements)
155+
self.install(*self.pip_args, *requirements)
152156
self.venv_dir.joinpath(".requirements.hash").write_text(self.requirements_hash)
153157

154158
def _create_virtualenv(self):

0 commit comments

Comments
 (0)