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