|
19 | 19 | from ..environment import MYPY_RUNNING
|
20 | 20 | from ..utils import _ensure_dir, prepare_pip_source_args
|
21 | 21 | from .cache import CACHE_DIR, DependencyCache
|
| 22 | +from .setup_info import SetupInfo |
22 | 23 | from .utils import (
|
23 | 24 | clean_requires_python,
|
24 | 25 | fix_requires_python_marker,
|
@@ -479,90 +480,19 @@ def get_dependencies_from_index(dep, sources=None, pip_options=None, wheel_cache
|
479 | 480 | if not wheel_cache:
|
480 | 481 | wheel_cache = WHEEL_CACHE
|
481 | 482 | dep.is_direct = True
|
482 |
| - reqset = pip_shims.shims.RequirementSet() |
483 |
| - reqset.add_requirement(dep) |
484 | 483 | requirements = None
|
485 | 484 | setup_requires = {}
|
486 |
| - with temp_environ(), start_resolver( |
487 |
| - finder=finder, session=session, wheel_cache=wheel_cache |
488 |
| - ) as resolver: |
| 485 | + with temp_environ(): |
489 | 486 | os.environ["PIP_EXISTS_ACTION"] = "i"
|
490 |
| - dist = None |
491 | 487 | if dep.editable and not dep.prepared and not dep.req:
|
492 |
| - with cd(dep.setup_py_dir): |
493 |
| - from setuptools.dist import distutils |
494 |
| - |
495 |
| - try: |
496 |
| - dist = distutils.core.run_setup(dep.setup_py) |
497 |
| - except (ImportError, TypeError, AttributeError): |
498 |
| - dist = None |
499 |
| - else: |
500 |
| - setup_requires[dist.get_name()] = dist.setup_requires |
501 |
| - if not dist: |
502 |
| - try: |
503 |
| - dist = dep.get_dist() |
504 |
| - except (TypeError, ValueError, AttributeError): |
505 |
| - pass |
506 |
| - else: |
507 |
| - setup_requires[dist.get_name()] = dist.setup_requires |
508 |
| - resolver.require_hashes = False |
509 |
| - try: |
510 |
| - results = resolver._resolve_one(reqset, dep) |
511 |
| - except Exception: |
512 |
| - # FIXME: Needs to bubble the exception somehow to the user. |
513 |
| - results = [] |
514 |
| - finally: |
515 |
| - try: |
516 |
| - wheel_cache.cleanup() |
517 |
| - except AttributeError: |
518 |
| - pass |
519 |
| - resolver_requires_python = getattr(resolver, "requires_python", None) |
520 |
| - requires_python = getattr(reqset, "requires_python", resolver_requires_python) |
521 |
| - if requires_python: |
522 |
| - add_marker = fix_requires_python_marker(requires_python) |
523 |
| - reqset.remove(dep) |
524 |
| - if dep.req.marker: |
525 |
| - dep.req.marker._markers.extend(["and"].extend(add_marker._markers)) |
526 |
| - else: |
527 |
| - dep.req.marker = add_marker |
528 |
| - reqset.add(dep) |
529 |
| - requirements = set() |
530 |
| - for r in results: |
531 |
| - if requires_python: |
532 |
| - if r.req.marker: |
533 |
| - r.req.marker._markers.extend(["and"].extend(add_marker._markers)) |
534 |
| - else: |
535 |
| - r.req.marker = add_marker |
536 |
| - requirements.add(format_requirement(r)) |
537 |
| - for section in setup_requires: |
538 |
| - python_version = section |
539 |
| - not_python = not is_python(section) |
540 |
| - |
541 |
| - # This is for cleaning up :extras: formatted markers |
542 |
| - # by adding them to the results of the resolver |
543 |
| - # since any such extra would have been returned as a result anyway |
544 |
| - for value in setup_requires[section]: |
545 |
| - |
546 |
| - # This is a marker. |
547 |
| - if is_python(section): |
548 |
| - python_version = value[1:-1] |
549 |
| - else: |
550 |
| - not_python = True |
551 |
| - |
552 |
| - if ":" not in value and not_python: |
553 |
| - try: |
554 |
| - requirement_str = "{0}{1}".format(value, python_version).replace( |
555 |
| - ":", ";" |
556 |
| - ) |
557 |
| - requirements.add( |
558 |
| - format_requirement( |
559 |
| - make_install_requirement(requirement_str).ireq |
560 |
| - ) |
561 |
| - ) |
562 |
| - # Anything could go wrong here -- can't be too careful. |
563 |
| - except Exception: |
564 |
| - pass |
565 |
| - |
| 488 | + setup_info = SetupInfo.from_ireq(dep) |
| 489 | + results = setup_info.get_info() |
| 490 | + setup_requires.update(results["setup_requires"]) |
| 491 | + requirements = set(results["requires"].values()) |
| 492 | + else: |
| 493 | + results = pip_shims.shims.resolve(dep) |
| 494 | + requirements = [v for v in results.values() if v.name != dep.name] |
| 495 | + requirements = set([format_requirement(r) for r in requirements]) |
566 | 496 | if not dep.editable and is_pinned_requirement(dep) and requirements is not None:
|
567 | 497 | DEPENDENCY_CACHE[dep] = list(requirements)
|
568 | 498 | return requirements
|
|
0 commit comments