A specific resolution from a given {Resolver}

Constants

A conflict that the resolution process encountered @attr [Object] requirement the requirement that immediately led to the conflict @attr [{String,Nil=>}] requirements the requirements that caused the conflict @attr [Object, nil] existing the existing spec that was in conflict with

the {#possibility}

@attr [Object] possibility_set the set of specs that was unable to be

activated due to a conflict.

@attr [Object] locked_requirement the relevant locking requirement. @attr [Array<Array<Object>>] requirement_trees the different requirement

trees that led to every requirement for the conflicting name.

@attr [{String=>Object}] activated_by_name the already-activated specs. @attr [Object] underlying_error an error that has occurred during resolution, and

will be raised at the end of it if no resolution is found.

A collection of possibility states that share the same dependencies @attr [Array] dependencies the dependencies for this set of possibilities @attr [Array] possibilities the possibilities

Details of the state to unwind to when a conflict occurs, and the cause of the unwind @attr [Integer] state_index the index of the state to unwind to @attr [Object] state_requirement the requirement of the state we’re unwinding to @attr [Array] requirement_tree for the requirement we’re relaxing @attr [Array] conflicting_requirements the requirements that combined to cause the conflict @attr [Array] requirement_trees for the conflict @attr [Array] requirements_unwound_to_instead array of unwind requirements that were chosen over this unwind

Attributes

@return [SpecificationProvider] the provider that knows about

dependencies, requirements, specifications, versions, etc.

@return [UI] the UI that knows how to communicate feedback about the

resolution process back to the user
Read

@return [DependencyGraph] the base dependency graph to which

dependencies should be 'locked'

@return [Array] the dependencies that were explicitly required

Read & Write

@return [Integer] the number of resolver iterations in between calls to

{#resolver_ui}'s {UI#indicate_progress} method
Read & Write

@return [Time] the time at which resolution began

Read & Write

@return [Array<ResolutionState>] the stack of states for the resolution

Class Methods

Initializes a new resolution. @param [SpecificationProvider] specification_provider

see {#specification_provider}

@param [UI] resolver_ui see {#resolver_ui} @param [Array] requested see {#original_requested} @param [DependencyGraph] base see {#base}

Instance Methods

Add the current {#possibility} to the dependency graph of the current {#state} @return [void]

Attempts to activate the current {#possibility} @return [void]

Attempts to update the existing vertex’s ‘PossibilitySet` with a filtered version @return [void]

@param [Object] requirement we wish to check @param [Array] possible_binding_requirements array of requirements @param [Array] possibilities array of possibilities the requirements will be used to filter @return [Boolean] whether or not the given requirement is required to filter

out all elements of the array of possibilities.

@param [Conflict] conflict @return [Array] minimal array of requirements that would cause the passed

conflict to occur.

@return [UnwindDetails] Details of the nearest index to which we could unwind

@param [DependencyState] state @param [Array] binding_requirements array of requirements @return [Boolean] whether or not the given state has any possibilities

that could satisfy the given requirements

@param [Object] underlying_error @return [Conflict] a {Conflict} that reflects the failure to activate

the {#possibility} in conjunction with the current {#state}

Calls the {#resolver_ui}‘s {UI#debug} method @param [Integer] depth the depth of the {#states} stack @param [Proc] block a block that yields a {#to_s} @return [void]

Ends the resolution process @return [void]

Filter’s a state’s possibilities to remove any that would not fix the conflict we’ve just rewound from @param [UnwindDetails] unwind_details details of the conflict just

unwound from

@return [void]

Filter’s a state’s possibilities to remove any that would (eventually) create a requirement in the conflict we’ve just rewound from @param [UnwindDetails] unwind_details details of the conflict just unwound from @return [void]

Filter’s a state’s possibilities to remove any that would not satisfy the requirements in the conflict we’ve just rewound from @param [UnwindDetails] unwind_details details of the conflict just unwound from @return [void]

Generates a filtered version of the existing vertex’s ‘PossibilitySet` using the current state’s ‘requirement` @param [Object] vertex existing vertex @return [PossibilitySet] filtered possibility set

@param [Object] requirement @return [ResolutionState] the state whose ‘requirement` is the given

`requirement`.

Build an array of PossibilitySets, with each element representing a group of dependency versions that all have the same sub-dependency version constraints and are contiguous. @param [Array] possibilities an array of possibilities @return [Array<PossibilitySet>] an array of possibility sets

Pushes a new {DependencyState}. If the {#specification_provider} says to {SpecificationProvider#allow_missing?} that particular requirement, and there are no possibilities for that requirement, then ‘state` is not pushed, and the vertex in {#activated} is removed, and we continue resolving the remaining requirements. @param [DependencyState] state @return [void]

Indicates progress roughly once every second @return [void]

@param [String] requirement_name the spec name to search for @return [Object] the locked spec named ‘requirement_name`, if one

is found on {#base}

@param [Object] requirement the proposed requirement @param [Object] activated @return [Array] possibility set containing only the locked requirement, if any

@param [Object] requirement @return [Object] the requirement that led to ‘requirement` being added

to the list of requirements.

Checks a proposed requirement with any existing locked requirement before generating an array of possibilities for it. @param [Object] requirement the proposed requirement @param [Object] activated @return [Array] possibilities

@return [Object] the current possibility that the resolution is trying

to activate

@param [Object] possibility a single possibility @param [Array] requirements an array of requirements @return [Boolean] whether the possibility satisfies all of the

given requirements

Processes the topmost available {RequirementState} on the stack @return [void]

Creates and pushes the initial state for the resolution, based upon the {#requested} dependencies @return [void]

Pushes a new {DependencyState} that encapsulates both existing and new requirements @param [Array] new_requirements @param [Boolean] requires_sort @param [Object] new_activated @return [void]

Raises a VersionConflict error, or any underlying error, if there is no current state @return [void]

Requires the dependencies that the recently activated spec has @param [Object] possibility_set the PossibilitySet that has just been

activated

@return [void]

@param [String] name @return [Object] the requirement that led to a version of a possibility

with the given name being activated.

@param [Object] requirement @return [Array<Object>] the list of requirements that led to

`requirement` being required.

@return [Array<Array<Object>>] The different requirement

trees that led to every requirement for the current spec.

Resolves the {#original_requested} dependencies into a full dependency

graph

@raise [ResolverError] if successful resolution is impossible @return [DependencyGraph] the dependency graph of successfully resolved

dependencies
No documentation available

Sets up the resolution process @return [void]

@return [RequirementState] the current state the resolution is

operating upon

Unwinds the states stack because a conflict has been encountered @return [void]

@param [Array<Object>] binding_requirements array of requirements that combine to create a conflict @return [Array<UnwindDetails>] array of UnwindDetails that have a chance

of resolving the passed requirements