Skip to content

Commit

Permalink
Sorting out remaining import errors with new utils module
Browse files Browse the repository at this point in the history
  • Loading branch information
matteius committed Mar 17, 2022
1 parent 620bb7c commit f498abb
Show file tree
Hide file tree
Showing 34 changed files with 178 additions and 154 deletions.
4 changes: 2 additions & 2 deletions pipenv/cli/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
)
from pipenv.exceptions import PipenvOptionsError
from pipenv.patched import crayons
from pipenv.utils import subprocess_run
from pipenv.utils.processes import subprocess_run
from pipenv.vendor.click import (
Choice, argument, echo, edit, group, option, pass_context, secho, types,
version_option
Expand Down Expand Up @@ -64,7 +64,7 @@ def cli(
cleanup_virtualenv, do_clear, do_py, do_where, ensure_project,
format_help, system_which, warn_in_virtualenv
)
from ..utils import create_spinner
from pipenv.utils.spinner import create_spinner

if man:
if system_which("man"):
Expand Down
2 changes: 1 addition & 1 deletion pipenv/cli/options.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os

from pipenv.project import Project
from pipenv.utils import is_valid_url
from pipenv.utils.internet import is_valid_url
from pipenv.vendor.click import (
BadArgumentUsage, BadParameter, Group, Option, argument, echo,
make_pass_decorator, option
Expand Down
22 changes: 15 additions & 7 deletions pipenv/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@
from pipenv import environments, exceptions, pep508checker, progress
from pipenv._compat import decode_for_output, fix_utf8
from pipenv.patched import crayons
from pipenv.utils import (
cmd_list_to_shell, convert_deps_to_pip, create_spinner, download_file,
find_python, get_canonical_names, get_host_and_port, get_source_list, is_pinned,
is_python_command, is_required_version, is_star, is_valid_url,
parse_indexes, pep423_name, prepare_pip_source_args, proper_case,
python_version, run_command, subprocess_run, venv_resolve_deps
)

from pipenv.utils.dependencies import (
convert_deps_to_pip,
get_canonical_names,
is_pinned,
is_required_version,
is_star,
pep423_name,
python_version
)
from pipenv.utils.internet import download_file, get_host_and_port, is_valid_url, proper_case
from pipenv.utils.indexes import get_source_list, parse_indexes, prepare_pip_source_args
from pipenv.utils.resolver import venv_resolve_deps
from pipenv.utils.shell import cmd_list_to_shell, find_python, is_python_command, subprocess_run
from pipenv.utils.spinner import create_spinner
from pipenv.utils.processes import run_command

if environments.is_type_checking():
from typing import Dict, List, Optional, Union
Expand Down
7 changes: 4 additions & 3 deletions pipenv/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@
import pkg_resources

import pipenv
import utils.indexes

from pipenv.environments import is_type_checking
from pipenv.utils import make_posix, normalize_path, subprocess_run
from pipenv.utils.shell import make_posix, normalize_path
from pipenv.utils.processes import subprocess_run
from pipenv.utils.indexes import prepare_pip_source_args
from pipenv.vendor import vistir
from pipenv.vendor.cached_property import cached_property
from pipenv.vendor.packaging.utils import canonicalize_name
Expand Down Expand Up @@ -599,7 +600,7 @@ def get_finder(self, pre=False):
from .vendor.pip_shims.shims import InstallCommand, get_package_finder

pip_command = InstallCommand()
pip_args = utils.indexes.prepare_pip_source_args(self.sources)
pip_args = prepare_pip_source_args(self.sources)
pip_options, _ = pip_command.parser.parse_args(pip_args)
pip_options.cache_dir = self.project.s.PIPENV_CACHE_DIR
pip_options.pre = self.pipfile.get("pre", pre)
Expand Down
3 changes: 2 additions & 1 deletion pipenv/installers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
from abc import ABCMeta, abstractmethod

from pipenv.vendor import attr
from pipenv.utils import find_windows_executable, subprocess_run
from pipenv.utils.processes import subprocess_run
from pipenv.utils.shell import find_windows_executable


@attr.s
Expand Down
23 changes: 15 additions & 8 deletions pipenv/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,20 @@
from pipenv.core import system_which
from pipenv.environment import Environment
from pipenv.environments import Setting, is_type_checking, is_in_virtualenv, normalize_pipfile_path
from pipenv.utils import (
cleanup_toml, convert_toml_outline_tables, find_requirements,
find_windows_executable, get_canonical_names, get_pipenv_dist, get_url_name,
get_workon_home, is_editable, is_installable_file, is_star, is_valid_url,
is_virtual_environment, looks_like_dir, pep423_name,
proper_case, python_version, safe_expandvars
from pipenv.utils.dependencies import get_canonical_names, is_editable, is_installable_file, is_star, python_version
from pipenv.utils.internet import get_url_name, is_valid_url, proper_case
from pipenv.utils.resolver import pep423_name
from pipenv.utils.toml import cleanup_toml, convert_toml_outline_tables
from pipenv.utils.shell import (
find_requirements,
find_windows_executable,
get_pipenv_dist,
get_workon_home,
is_virtual_environment,
looks_like_dir,
safe_expandvars
)

from pipenv.vendor.cached_property import cached_property
from pipenv.vendor.requirementslib.models.utils import (
get_default_pyproject_backend
Expand Down Expand Up @@ -285,7 +292,7 @@ def get_location_for_virtualenv(self):
@property
def working_set(self):
# type: () -> pkg_resources.WorkingSet
from .utils import load_path
from pipenv.utils.shell import load_path
sys_path = load_path(self.which("python"))
import pkg_resources
return pkg_resources.WorkingSet(sys_path)
Expand Down Expand Up @@ -902,7 +909,7 @@ def find_source(self, source):
return source

def get_source(self, name=None, url=None, refresh=False):
from .utils import is_url_equal
from pipenv.utils.internet import is_url_equal

def find_source(sources, name=None, url=None):
source = None
Expand Down
7 changes: 4 additions & 3 deletions pipenv/resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ def __getattribute__(self, key):


def clean_results(results, resolver, project, dev=False):
from pipenv.utils import translate_markers
from pipenv.utils.dependencies import translate_markers
if not project.lockfile_exists:
return results
lockfile = project.lockfile_content
Expand Down Expand Up @@ -646,7 +646,7 @@ def clean_outdated(results, resolver, project, dev=False):
def parse_packages(packages, pre, clear, system, requirements_dir=None):
from pipenv.vendor.requirementslib.models.requirements import Requirement
from pipenv.vendor.vistir.contextmanagers import cd, temp_path
from pipenv.utils import parse_indexes
from pipenv.utils.indexes import parse_indexes
parsed_packages = []
for package in packages:
*_, line = parse_indexes(package)
Expand Down Expand Up @@ -674,7 +674,8 @@ def parse_packages(packages, pre, clear, system, requirements_dir=None):


def resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev):
from pipenv.utils import create_mirror_source, resolve_deps, replace_pypi_sources
from pipenv.utils.internet import create_mirror_source, replace_pypi_sources
from pipenv.utils.resolver import resolve_deps
pypi_mirror_source = (
create_mirror_source(os.environ["PIPENV_PYPI_MIRROR"])
if "PIPENV_PYPI_MIRROR" in os.environ
Expand Down
11 changes: 0 additions & 11 deletions pipenv/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,2 @@
import logging
from .constants import *
from .dependencies import *
from .indexes import *
from .internet import *
from .locking import *
from .processes import *
from .resolver import *
from .shell import *
from .spinner import *
from .toml import *

logging.basicConfig(level=logging.ERROR)
4 changes: 0 additions & 4 deletions pipenv/utils/constants.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
from pipenv.pep508checker import lookup

specifiers = [k for k in lookup.keys()] # TODO Is this used?

# List of version control systems we support.
VCS_LIST = ("git", "svn", "hg", "bzr")
SCHEME_LIST = ("http://", "https://", "ftp://", "ftps://", "file://")
1 change: 1 addition & 0 deletions pipenv/utils/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import re
from contextlib import contextmanager
from pathlib import Path

from typing import Sequence, Mapping
from urllib.parse import urlparse

Expand Down
18 changes: 12 additions & 6 deletions pipenv/utils/indexes.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import re
from typing import Optional, Union, List, Mapping, Text, Tuple
from pipenv import environments
if environments.MYPY_RUNNING:
from typing import List, Optional, Text, Tuple, Union

from pipenv.project import Project, TSource
from pipenv.vendor.requirementslib.models.requirements import Requirement

from exceptions import PipenvUsageError
from project import TSource, Project
from requirementslib import Requirement
from urllib3 import util as urllib3_util
from utils import create_mirror_source, is_pypi_url
from requirementslib import Requirement

from pipenv.vendor.vistir.compat import Mapping
from pipenv.exceptions import PipenvUsageError
from .internet import create_mirror_source, is_pypi_url


def prepare_pip_source_args(sources, pip_args=None):
Expand Down Expand Up @@ -43,7 +49,7 @@ def prepare_pip_source_args(sources, pip_args=None):

def get_project_index(project, index=None, trusted_hosts=None):
# type: (Optional[Union[str, TSource]], Optional[List[str]], Optional[Project]) -> TSource
from .project import SourceNotFound
from pipenv.project import SourceNotFound
if trusted_hosts is None:
trusted_hosts = []
if isinstance(index, Mapping):
Expand Down
26 changes: 3 additions & 23 deletions pipenv/utils/internet.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import warnings
from contextlib import contextmanager
from urllib.parse import urlparse

import parse
from urllib3 import util as urllib3_util
from vistir.compat import ResourceWarning

from pipenv.vendor import parse
from pipenv.vendor.vistir.compat import ResourceWarning


requests_session = None # type: ignore
Expand Down Expand Up @@ -73,26 +73,6 @@ def temp_path():
sys.path = [p for p in path]


def normalize_drive(path):
"""Normalize drive in path so they stay consistent.
This currently only affects local drives on Windows, which can be
identified with either upper or lower cased drive names. The case is
always converted to uppercase because it seems to be preferred.
See: <https://github.com/pypa/pipenv/issues/1218>
"""
if os.name != "nt" or not isinstance(path, str):
return path

drive, tail = os.path.splitdrive(path)
# Only match (lower cased) local drives (e.g. 'c:'), not UNC mounts.
if drive.islower() and len(drive) == 2 and drive[1] == ":":
return f"{drive.upper()}{tail}"

return path


def is_readonly_path(fn):
"""Check if a provided path exists and is readonly.
Expand Down
2 changes: 1 addition & 1 deletion pipenv/utils/locking.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Mapping

from utils import pep423_name, translate_markers, clean_resolved_dep
from .dependencies import pep423_name, translate_markers, clean_resolved_dep


def format_requirement_for_lockfile(req, markers_lookup, index_lookup, hashes=None):
Expand Down
9 changes: 7 additions & 2 deletions pipenv/utils/processes.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@

import crayons
from click import echo as click_echo
from exceptions import PipenvCmdError
from vistir import run
from pipenv.vendor.vistir import run

from pipenv.exceptions import PipenvCmdError
from pipenv import environments

if environments.MYPY_RUNNING:
from typing import Any, Dict, List, Optional, Text, Tuple, Union


def run_command(cmd, *args, is_verbose=False, **kwargs):
Expand Down
57 changes: 31 additions & 26 deletions pipenv/utils/resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,29 @@
import sys
import warnings
from functools import lru_cache
from typing import List, Dict, Optional, Tuple, AbstractSet, Union, Any

import crayons
import environments
import utils.dependencies
from pipenv import environments
from click import echo as click_echo
from exceptions import ResolutionFailure, RequirementError
from project import Project
from requirementslib import Requirement, Pipfile
from requirementslib.models.requirements import Line
from utils import parse_indexes, prepare_pip_source_args, is_pinned_requirement, format_requirement_for_lockfile, \
_show_warning, subprocess_run, make_posix, temp_environ, get_pipenv_sitedir, create_spinner, convert_deps_to_pip, \
prepare_lockfile, HackedPythonVersion
from utils.dependencies import get_vcs_deps, pep423_name, translate_markers, clean_pkg_version
from utils.internet import _get_requests_session
from utils.shell import temp_environ
from vistir import open_file, TemporaryDirectory

from pipenv.exceptions import ResolutionFailure, RequirementError
from pipenv.vendor.requirementslib import Requirement, Pipfile
from pipenv.vendor.vistir import open_file, TemporaryDirectory

from .dependencies import get_vcs_deps, pep423_name, translate_markers, clean_pkg_version, \
is_pinned_requirement, convert_deps_to_pip, HackedPythonVersion
from .indexes import parse_indexes, prepare_pip_source_args
from .internet import _get_requests_session
from .locking import format_requirement_for_lockfile, prepare_lockfile
from .shell import temp_environ, subprocess_run, make_posix
from .spinner import create_spinner
if environments.MYPY_RUNNING:
from typing import Any, Dict, List, Optional, Tuple, Union

from pipenv.project import Project
from pipenv.vendor.requirementslib.models.pipfile import Pipfile
from pipenv.vendor.requirementslib.models.requirements import (
Line, Requirement
)

class HashCacheMixin:

Expand Down Expand Up @@ -532,7 +537,7 @@ def resolve(self):

with temp_environ(), self.get_resolver() as resolver:
try:
results = resolve(self.constraints, check_supported_wheels=False)
results = resolver.resolve(self.constraints, check_supported_wheels=False)
except InstallationError as e:
raise ResolutionFailure(message=str(e))
else:
Expand Down Expand Up @@ -604,7 +609,7 @@ def _get_hashes_from_pypi(self, ireq):
def collect_hashes(self, ireq):
if ireq.link:
link = ireq.link
if link.is_vcs or (utils.dependencies.is_file and link.is_existing_dir()):
if link.is_vcs or (link.is_file and link.is_existing_dir()):
return set()
if ireq.original_link:
return {self._get_hash_from_link(ireq.original_link)}
Expand Down Expand Up @@ -725,9 +730,9 @@ def actually_resolve_deps(


def resolve(cmd, sp, project):
from ._compat import decode_output
from .cmdparse import Script
from .vendor.vistir.misc import echo
from pipenv._compat import decode_output
from pipenv.cmdparse import Script
from pipenv.vendor.vistir.misc import echo
c = subprocess_run(Script.parse(cmd).cmd_args, block=False, env=os.environ.copy())
is_verbose = project.s.is_verbose()
err = ""
Expand Down Expand Up @@ -801,11 +806,11 @@ def venv_resolve_deps(

import json

from . import resolver
from ._compat import decode_for_output
from .vendor.vistir.compat import JSONDecodeError, NamedTemporaryFile, Path
from .vendor.vistir.misc import fs_str
from .vendor.vistir.path import create_tracked_tempdir
from pipenv import resolver
from pipenv._compat import decode_for_output
from pipenv.vendor.vistir.compat import JSONDecodeError, NamedTemporaryFile, Path
from pipenv.vendor.vistir.misc import fs_str
from pipenv.vendor.vistir.path import create_tracked_tempdir

results = []
pipfile_section = "dev-packages" if dev else "packages"
Expand Down Expand Up @@ -916,7 +921,7 @@ def resolve_deps(
# First (proper) attempt:
req_dir = req_dir if req_dir else os.environ.get("req_dir", None)
if not req_dir:
from .vendor.vistir.path import create_tracked_tempdir
from pipenv.vendor.vistir.path import create_tracked_tempdir
req_dir = create_tracked_tempdir(prefix="pipenv-", suffix="-requirements")
with HackedPythonVersion(python_version=python, python_path=python_path):
try:
Expand Down
Loading

0 comments on commit f498abb

Please sign in to comment.