fix(#23): add pip version check

This commit is contained in:
Daylin Morgan 2024-07-09 12:00:50 -05:00
parent 8aced00ace
commit 303831bdb8
Signed by: daylin
GPG key ID: 950D13E9719334AD
5 changed files with 22 additions and 4 deletions

View file

@ -7,6 +7,7 @@ it will generate a new vivenv.
It may be important to require a exe specificty if you are frequently running
different version of pythons and rely on c extension modules as in numpy.
"""
__import__("viv").use("numpy", "plotext", track_exe=True) # noqa
import numpy as np

View file

@ -6,6 +6,7 @@ This import statement was generated using
Using viv freeze ensures future runs of this
script will use the same essential environment
"""
__import__("viv").use(
"numpy==1.24.0",
"pandas==1.5.2",

View file

@ -2,6 +2,7 @@
"""
Embed the viv.py on the sys.path at runtime rather than using PYTHONPATH
"""
import sys
old_sys_path = sys.path.copy() # noqa

View file

@ -42,7 +42,7 @@ test = [
"sampleproject"
]
[tool.ruff]
[tool.ruff.lint]
select = ["E","F","I"]
ignore = ["E402"]

View file

@ -1,9 +1,9 @@
#!/usr/bin/env python3
"""viv isn't venv!
viv -h
OR
__import__("viv").use("requests", "bs4")
viv -h
OR
__import__("viv").use("requests", "bs4")
"""
from __future__ import annotations
@ -3877,6 +3877,20 @@ class Cli:
)
def _pip_check():
pip_version_requirement = ">=22.2"
if not shutil.which("pip"):
err_quit("viv requires pip to be installed")
# importing viv may have side effects I'm not aware of...
if Version((pip_version := __import__("pip").__version__)) not in SpecifierSet(
pip_version_requirement
):
err_quit(
f"viv requires pip version {pip_version_requirement} but got {pip_version}"
)
def _no_traceback_excepthook(
exc_type: type[BaseException],
exc_val: BaseException,
@ -3888,6 +3902,7 @@ def _no_traceback_excepthook(
def main() -> None:
try:
_pip_check()
viv = Viv()
Cli(viv).run()
except KeyboardInterrupt: