diff --git a/pipenv/core.py b/pipenv/core.py index 35a4833c..11f71ef6 100644 --- a/pipenv/core.py +++ b/pipenv/core.py @@ -249,8 +249,9 @@ def ensure_pipfile(project, validate=True, skip_requirements=False, system=False ) # Create a Pipfile... project.create_pipfile(python=python) - # TODO: pass project settings to status here - with console.status("Importing requirements...") as st: + with console.status( + "Importing requirements...", spinner=project.s.PIPENV_SPINNER + ) as st: # Import requirements.txt. try: import_requirements(project) @@ -1009,8 +1010,9 @@ def do_create_virtualenv(project, python=None, site_packages=None, pypi_mirror=N # Actually create the virtualenv. error = None - # TODO: update project setting here - with console.status("Creating virtual environment..."): + with console.status( + "Creating virtual environment...", spinner=project.s.PIPENV_SPINNER + ): c = subprocess_run(cmd, env=pip_config) click.secho(f"{c.stdout}", fg="cyan", err=True) if c.returncode != 0: @@ -2292,11 +2294,8 @@ def do_install( bold=True, ) # pip install: - # TODO: console.status() accepts: - # spinner='dots', spinner_style='status.spinner' - # we should use pipenv.project.settings to configure these. with vistir.contextmanagers.temp_environ(), console.status( - "Installing..." + "Installing...", spinner=project.s.PIPENV_SPINNER ) as st: if not system: os.environ["PIP_USER"] = "0" diff --git a/pipenv/environments.py b/pipenv/environments.py index f0c4667e..3d14a219 100644 --- a/pipenv/environments.py +++ b/pipenv/environments.py @@ -218,14 +218,21 @@ class Setting: if PIPENV_IS_CI: self.PIPENV_NOSPIN = True - pipenv_spinner = "dots" if not os.name == "nt" else "bouncingBar" - self.PIPENV_SPINNER = get_from_env( - "SPINNER", check_for_negation=False, default=pipenv_spinner - ) + if self.PIPENV_NOSPIN: + from pipenv.patched.pip._vendor.rich import _spinners + + _spinners.SPINNERS[None] = {"interval": 80, "frames": " "} + self.PIPENV_SPINNER = None + else: + pipenv_spinner = "dots" if not os.name == "nt" else "bouncingBar" + self.PIPENV_SPINNER = get_from_env( + "SPINNER", check_for_negation=False, default=pipenv_spinner + ) """Sets the default spinner type. - Spinners are identical to the ``node.js`` spinners and can be found at - https://github.com/sindresorhus/cli-spinners + You can see which spinners are available by running:: + + $ python -m pipenv.patched.pip._vendor.rich.spinner """ pipenv_pipfile = get_from_env("PIPFILE", check_for_negation=False) diff --git a/pipenv/utils/resolver.py b/pipenv/utils/resolver.py index 649c684f..ff38fb79 100644 --- a/pipenv/utils/resolver.py +++ b/pipenv/utils/resolver.py @@ -1027,8 +1027,7 @@ def venv_resolve_deps( os.environ.pop("PIPENV_SITE_DIR", None) if keep_outdated: os.environ["PIPENV_KEEP_OUTDATED"] = "1" - # TODO: add settings to console.status - with console.status("Locking...") as st: + with console.status("Locking...", spinner=project.s.PIPENV_SPINNER) as st: # This conversion is somewhat slow on local and file-type requirements since # we now download those requirements / make temporary folders to perform # dependency resolution on them, so we are including this step inside the diff --git a/pipenv/utils/spinner.py b/pipenv/utils/spinner.py deleted file mode 100644 index 47e4d884..00000000 --- a/pipenv/utils/spinner.py +++ /dev/null @@ -1,20 +0,0 @@ -import contextlib - - -@contextlib.contextmanager -def create_spinner(text, setting, nospin=None, spinner_name=None): - - from pipenv.vendor.vistir import spin - - if not spinner_name: - spinner_name = setting.PIPENV_SPINNER - if nospin is None: - nospin = setting.PIPENV_NOSPIN - - with spin.create_spinner( - spinner_name=spinner_name, - start_text=text, - nospin=nospin, - write_to_stdout=False, - ) as sp: - yield sp