$13 GRAYBYTE WORDPRESS FILE MANAGER $40

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.23
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/ruby34/share/rubygems/rubygems/

HOME
Current File : /opt/alt/ruby34/share/rubygems/rubygems//resolver.rb
# frozen_string_literal: true

require_relative "dependency"
require_relative "exceptions"
require_relative "util/list"

##
# Given a set of Gem::Dependency objects as +needed+ and a way to query the
# set of available specs via +set+, calculates a set of ActivationRequest
# objects which indicate all the specs that should be activated to meet the
# all the requirements.

class Gem::Resolver
  require_relative "vendored_molinillo"

  ##
  # If the DEBUG_RESOLVER environment variable is set then debugging mode is
  # enabled for the resolver.  This will display information about the state
  # of the resolver while a set of dependencies is being resolved.

  DEBUG_RESOLVER = !ENV["DEBUG_RESOLVER"].nil?

  ##
  # Set to true if all development dependencies should be considered.

  attr_accessor :development

  ##
  # Set to true if immediate development dependencies should be considered.

  attr_accessor :development_shallow

  ##
  # When true, no dependencies are looked up for requested gems.

  attr_accessor :ignore_dependencies

  ##
  # List of dependencies that could not be found in the configured sources.

  attr_reader :stats

  ##
  # Hash of gems to skip resolution.  Keyed by gem name, with arrays of
  # gem specifications as values.

  attr_accessor :skip_gems

  ##
  #

  attr_accessor :soft_missing

  ##
  # Combines +sets+ into a ComposedSet that allows specification lookup in a
  # uniform manner.  If one of the +sets+ is itself a ComposedSet its sets are
  # flattened into the result ComposedSet.

  def self.compose_sets(*sets)
    sets.compact!

    sets = sets.flat_map do |set|
      case set
      when Gem::Resolver::BestSet then
        set
      when Gem::Resolver::ComposedSet then
        set.sets
      else
        set
      end
    end

    case sets.length
    when 0 then
      raise ArgumentError, "one set in the composition must be non-nil"
    when 1 then
      sets.first
    else
      Gem::Resolver::ComposedSet.new(*sets)
    end
  end

  ##
  # Creates a Resolver that queries only against the already installed gems
  # for the +needed+ dependencies.

  def self.for_current_gems(needed)
    new needed, Gem::Resolver::CurrentSet.new
  end

  ##
  # Create Resolver object which will resolve the tree starting
  # with +needed+ Dependency objects.
  #
  # +set+ is an object that provides where to look for specifications to
  # satisfy the Dependencies. This defaults to IndexSet, which will query
  # rubygems.org.

  def initialize(needed, set = nil)
    @set = set || Gem::Resolver::IndexSet.new
    @needed = needed

    @development         = false
    @development_shallow = false
    @ignore_dependencies = false
    @skip_gems           = {}
    @soft_missing        = false
    @stats               = Gem::Resolver::Stats.new
  end

  def explain(stage, *data) # :nodoc:
    return unless DEBUG_RESOLVER

    d = data.map(&:pretty_inspect).join(", ")
    $stderr.printf "%10s %s\n", stage.to_s.upcase, d
  end

  def explain_list(stage) # :nodoc:
    return unless DEBUG_RESOLVER

    data = yield
    $stderr.printf "%10s (%d entries)\n", stage.to_s.upcase, data.size
    unless data.empty?
      require "pp"
      PP.pp data, $stderr
    end
  end

  ##
  # Creates an ActivationRequest for the given +dep+ and the last +possible+
  # specification.
  #
  # Returns the Specification and the ActivationRequest

  def activation_request(dep, possible) # :nodoc:
    spec = possible.pop

    explain :activate, [spec.full_name, possible.size]
    explain :possible, possible

    activation_request =
      Gem::Resolver::ActivationRequest.new spec, dep, possible

    [spec, activation_request]
  end

  def requests(s, act, reqs=[]) # :nodoc:
    return reqs if @ignore_dependencies

    s.fetch_development_dependencies if @development

    s.dependencies.reverse_each do |d|
      next if d.type == :development && !@development
      next if d.type == :development && @development_shallow &&
              act.development?
      next if d.type == :development && @development_shallow &&
              act.parent

      reqs << Gem::Resolver::DependencyRequest.new(d, act)
      @stats.requirement!
    end

    @set.prefetch reqs

    @stats.record_requirements reqs

    reqs
  end

  include Gem::Molinillo::UI

  def output
    @output ||= debug? ? $stdout : File.open(IO::NULL, "w")
  end

  def debug?
    DEBUG_RESOLVER
  end

  include Gem::Molinillo::SpecificationProvider

  ##
  # Proceed with resolution! Returns an array of ActivationRequest objects.

  def resolve
    Gem::Molinillo::Resolver.new(self, self).resolve(@needed.map {|d| DependencyRequest.new d, nil }).tsort.filter_map(&:payload)
  rescue Gem::Molinillo::VersionConflict => e
    conflict = e.conflicts.values.first
    raise Gem::DependencyResolutionError, Conflict.new(conflict.requirement_trees.first.first, conflict.existing, conflict.requirement)
  ensure
    @output.close if defined?(@output) && !debug?
  end

  ##
  # Extracts the specifications that may be able to fulfill +dependency+ and
  # returns those that match the local platform and all those that match.

  def find_possible(dependency) # :nodoc:
    all = @set.find_all dependency

    if (skip_dep_gems = skip_gems[dependency.name]) && !skip_dep_gems.empty?
      matching = all.select do |api_spec|
        skip_dep_gems.any? {|s| api_spec.version == s.version }
      end

      all = matching unless matching.empty?
    end

    matching_platform = select_local_platforms all

    [matching_platform, all]
  end

  ##
  # Returns the gems in +specs+ that match the local platform.

  def select_local_platforms(specs) # :nodoc:
    specs.select do |spec|
      Gem::Platform.installable? spec
    end
  end

  def search_for(dependency)
    possibles, all = find_possible(dependency)
    if !@soft_missing && possibles.empty?
      exc = Gem::UnsatisfiableDependencyError.new dependency, all
      exc.errors = @set.errors
      raise exc
    end

    groups = Hash.new {|hash, key| hash[key] = [] }

    # create groups & sources in the same loop
    sources = possibles.map do |spec|
      source = spec.source
      groups[source] << spec
      source
    end.uniq.reverse

    activation_requests = []

    sources.each do |source|
      groups[source].
        sort_by {|spec| [spec.version, spec.platform =~ Gem::Platform.local ? 1 : 0] }. # rubocop:disable Performance/RegexpMatch
        map {|spec| ActivationRequest.new spec, dependency }.
        each {|activation_request| activation_requests << activation_request }
    end

    activation_requests
  end

  def dependencies_for(specification)
    return [] if @ignore_dependencies
    spec = specification.spec
    requests(spec, specification)
  end

  def requirement_satisfied_by?(requirement, activated, spec)
    matches_spec = requirement.matches_spec? spec
    return matches_spec if @soft_missing

    matches_spec &&
      spec.spec.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
      spec.spec.required_rubygems_version.satisfied_by?(Gem.rubygems_version)
  end

  def name_for(dependency)
    dependency.name
  end

  def allow_missing?(dependency)
    @soft_missing
  end

  def sort_dependencies(dependencies, activated, conflicts)
    dependencies.sort_by.with_index do |dependency, i|
      name = name_for(dependency)
      [
        activated.vertex_named(name).payload ? 0 : 1,
        amount_constrained(dependency),
        conflicts[name] ? 0 : 1,
        activated.vertex_named(name).payload ? 0 : search_for(dependency).count,
        i, # for stable sort
      ]
    end
  end

  SINGLE_POSSIBILITY_CONSTRAINT_PENALTY = 1_000_000
  private_constant :SINGLE_POSSIBILITY_CONSTRAINT_PENALTY if defined?(private_constant)

  # returns an integer \in (-\infty, 0]
  # a number closer to 0 means the dependency is less constraining
  #
  # dependencies w/ 0 or 1 possibilities (ignoring version requirements)
  # are given very negative values, so they _always_ sort first,
  # before dependencies that are unconstrained
  def amount_constrained(dependency)
    @amount_constrained ||= {}
    @amount_constrained[dependency.name] ||= begin
      name_dependency = Gem::Dependency.new(dependency.name)
      dependency_request_for_name = Gem::Resolver::DependencyRequest.new(name_dependency, dependency.requester)
      all = @set.find_all(dependency_request_for_name).size

      if all <= 1
        all - SINGLE_POSSIBILITY_CONSTRAINT_PENALTY
      else
        search = search_for(dependency).size
        search - all
      end
    end
  end
  private :amount_constrained
end

require_relative "resolver/activation_request"
require_relative "resolver/conflict"
require_relative "resolver/dependency_request"
require_relative "resolver/requirement_list"
require_relative "resolver/stats"

require_relative "resolver/set"
require_relative "resolver/api_set"
require_relative "resolver/composed_set"
require_relative "resolver/best_set"
require_relative "resolver/current_set"
require_relative "resolver/git_set"
require_relative "resolver/index_set"
require_relative "resolver/installer_set"
require_relative "resolver/lock_set"
require_relative "resolver/vendor_set"
require_relative "resolver/source_set"

require_relative "resolver/specification"
require_relative "resolver/spec_specification"
require_relative "resolver/api_specification"
require_relative "resolver/git_specification"
require_relative "resolver/index_specification"
require_relative "resolver/installed_specification"
require_relative "resolver/local_specification"
require_relative "resolver/lock_specification"
require_relative "resolver/vendor_specification"


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
29 Mar 2025 8.41 AM
root / root
0755
commands
--
10 Feb 2026 9.34 AM
root / linksafe
0755
core_ext
--
10 Feb 2026 9.34 AM
root / linksafe
0755
defaults
--
10 Feb 2026 9.34 AM
root / linksafe
0755
ext
--
10 Feb 2026 9.34 AM
root / linksafe
0755
gemcutter_utilities
--
10 Feb 2026 9.34 AM
root / linksafe
0755
package
--
10 Feb 2026 9.34 AM
root / linksafe
0755
request
--
10 Feb 2026 9.34 AM
root / linksafe
0755
request_set
--
10 Feb 2026 9.34 AM
root / linksafe
0755
resolver
--
10 Feb 2026 9.34 AM
root / linksafe
0755
safe_marshal
--
10 Feb 2026 9.34 AM
root / linksafe
0755
security
--
10 Feb 2026 9.34 AM
root / linksafe
0755
source
--
10 Feb 2026 9.34 AM
root / linksafe
0755
ssl_certs
--
27 Jan 2026 4.00 PM
root / linksafe
0755
util
--
10 Feb 2026 9.34 AM
root / linksafe
0755
vendor
--
27 Jan 2026 4.00 PM
root / linksafe
0755
available_set.rb
3.003 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
basic_specification.rb
8.134 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
bundler_version_finder.rb
1.962 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
ci_detector.rb
3.712 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
command.rb
15.8 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
command_manager.rb
5.643 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
compatibility.rb
0.998 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
config_file.rb
16.309 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
defaults.rb
7.381 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
dependency.rb
8.449 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
dependency_installer.rb
9.906 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
dependency_list.rb
5.551 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
deprecate.rb
5.038 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
doctor.rb
3.129 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
errors.rb
4.526 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
exceptions.rb
7.127 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
ext.rb
0.486 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
gem_runner.rb
2.136 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
gemcutter_utilities.rb
11.295 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
gemspec_helpers.rb
0.385 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
install_default_message.rb
0.341 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
install_message.rb
0.315 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
install_update_options.rb
6.564 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
installer.rb
27.737 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
installer_uninstaller_utils.rb
0.753 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
local_remote_options.rb
3.589 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
name_tuple.rb
2.385 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
openssl.rb
0.122 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
package.rb
18.829 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
package_task.rb
3.788 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
path_support.rb
1.773 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
platform.rb
8.406 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
psych_tree.rb
0.835 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
query_utils.rb
8.499 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
rdoc.rb
0.645 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
remote_fetcher.rb
9.379 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
request.rb
8.701 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
request_set.rb
11.287 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
requirement.rb
7.127 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
resolver.rb
9.433 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
s3_uri_signer.rb
5.963 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
safe_marshal.rb
1.923 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
safe_yaml.rb
1.042 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
security.rb
21.693 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
security_option.rb
1.059 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
source.rb
5.783 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
source_list.rb
2.424 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
spec_fetcher.rb
7.684 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
specification.rb
69.031 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
specification_policy.rb
15.59 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
specification_record.rb
5.207 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
stub_specification.rb
4.959 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
target_rbconfig.rb
1.243 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
text.rb
2.064 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
uninstaller.rb
10.917 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
unknown_command_spell_checker.rb
0.401 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
update_suggestion.rb
1.854 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
uri.rb
2.379 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
uri_formatter.rb
0.766 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
user_interaction.rb
13.103 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
util.rb
2.46 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
validator.rb
3.63 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
vendored_molinillo.rb
0.079 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
vendored_net_http.rb
0.228 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
vendored_optparse.rb
0.077 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
vendored_securerandom.rb
0.085 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
vendored_timeout.rb
0.223 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
vendored_tsort.rb
0.071 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
version.rb
13.348 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
version_option.rb
2.175 KB
27 Jan 2026 4.00 PM
root / linksafe
0644
yaml_serializer.rb
2.416 KB
27 Jan 2026 4.00 PM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF