10.7.1 (2021-06-22) 2================== 3 4Bug Fixes 5--------- 6 7- When merging a candidate's dependencies, make sure the merge target is 8 up-to-date within the loop, so the merge does not lose information when a 9 candidate returns multiple dependency specifications under one identifier 10 (e.g. specifyiung two dependencies ``a>1`` and ``a<2``, instead of one single 11 ``a>1,<2`` dependency). `#80 <https://github.com/sarugaku/resolvelib/issues/80>`_ 12 13 140.7.0 (2021-04-13) 15================== 16 17Features 18-------- 19 20- Redesign ``get_preferences()`` to include resolution state on dependencies 21 other than the currently working one, to allow the provider to better take 22 account of the global resolver knowledge and determine the best strategy. The 23 provider now can, for example, correctly calculate how far a dependency is 24 from the root node in the graph. `#74 <https://github.com/sarugaku/resolvelib/issues/74>`_ 25 26 270.6.0 (2021-04-04) 28================== 29 30Features 31-------- 32 33- A new argument ``incompatibilities`` is now passed to the ``find_matches()`` 34 hook, which the provider must use to exclude matches from the return value. `#68 <https://github.com/sarugaku/resolvelib/issues/68>`_ 35 36- Redesign ``find_matches()`` to include resolution state on dependencies other 37 than the currently working one, to handle usages that need to return candidates 38 based on non-local states. One such example is PEP 508 direct URLs specified 39 on a package, which need to be available to the same package specified with 40 extras (which would have a different identifier). `#74 <https://github.com/sarugaku/resolvelib/issues/74>`_ 41 42 43Bug Fixes 44--------- 45 46- The resolver no longer relies on implicit candidate equality to detect 47 incompatibilities. This is done by an additional ``find_matches()`` argument; 48 see the *Features* section to learn more. `#68 <https://github.com/sarugaku/resolvelib/issues/68>`_ 49 50 510.5.5 (2021-03-09) 52================== 53 54Features 55-------- 56 57- Provide type stubs for most classes. `#72 <https://github.com/sarugaku/resolvelib/issues/72>`_ 58 59 600.5.4 (2020-12-27) 61================== 62 63No significant changes. 64 65 660.5.3 (2020-11-27) 67================== 68 69Bug Fixes 70--------- 71 72- Fix a state management bug that causes the resolver to enter an infinite loop 73 in certain backtracking cases. `#62 <https://github.com/sarugaku/resolvelib/issues/62>`_ 74 75 760.5.2 (2020-11-04) 77================== 78 79Bug Fixes 80--------- 81 82- Fix a performance regression if ``find_matches()`` returns a non-built-in sequence instance. 83 84 850.5.1 (2020-10-22) 86================== 87 88Features 89-------- 90 91- ``find_matches()`` now may return a ``Callable[[], Iterator[Candidate]]`` to avoid needing to provide all candidates eagerly for the resolver. This improves performance when fetching candidates is costly, but not always required. `#57 <https://github.com/sarugaku/resolvelib/issues/57>`_ 92 93 940.4.0 (2020-04-30) 95================== 96 97Features 98-------- 99 100- Add ``parent`` argument to the ``add_requirement()`` reporter hook. `#46 <https://github.com/sarugaku/resolvelib/issues/46>`_ 101 102- Redesign ``find_matches()`` to support a requirement "adding" candidates to the set, and nudge the provider away from implementing ``find_matches()`` and ``is_satisfied_by()`` with incorrect set properties. `#49 <https://github.com/sarugaku/resolvelib/issues/49>`_ 103 104 1050.3.0 (2020-04-11) 106================== 107 108Features 109-------- 110 111- Provide both the requirements and their parents as exceptiondata for the ``ResolutionImpossible`` exception, via a ``causes`` attribute that replaces the previous ``requirements`` attribute. `#42 <https://github.com/sarugaku/resolvelib/issues/42>`_ 112 113 114Bug Fixes 115--------- 116 117- Make resolver backtrack when none of the candidates requested for a package are able to resolve due to them requesting unworkable requirements, or a package has no candidates at all. Previously the resolver would give up on the spot. `#18 <https://github.com/sarugaku/resolvelib/issues/18>`_ 118 119- Ensure the result returned by the resolver only contains candidates that are actually needed. This is done by tracing the graph after resolution completes, snipping nodes that don’t have a route to the root. `#4 <https://github.com/sarugaku/resolvelib/issues/4>`_ 120 121 1220.2.2 (2018-09-03) 123================== 124 125Features 126-------- 127 128- Remove reporting callbacks `adding_requirements`, `adding_candidate`, and `replacing_candidate` added in 0.2.1. These are not useful, and it’s better to remove them while we can. `#6 <https://github.com/sarugaku/resolvelib/issues/6>`_ 129 130 1310.2.1 (2018-08-21) 132================== 133 134Features 135-------- 136 137- Add new reporting callbacks `adding_requirements`, `adding_candidate`, and `replacing_candidate` to report progress in requirement pinning. `#2 <https://github.com/sarugaku/resolvelib/issues/2>`_ 138 139 140Bug Fixes 141--------- 142 143- Fix missing edges in the resolved dependency graph caused by incorrectly copying stale constraint and parent-child information. `#5 <https://github.com/sarugaku/resolvelib/issues/5>`_ 144 145 1460.2.0 (2018-08-07) 147================== 148 149* ``Resolver.resolve()`` now returns a `namedtuple` with public attributes, instead of an internal `Resolution` object. 150* Update trove classifiers on PyPI to better reflect the project's intentions. 151