Class: Dependabot::Uv::FileFetcher::WorkspaceFetcher

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/uv/file_fetcher/workspace_fetcher.rb

Constant Summary collapse

README_FILENAMES =
T.let(%w(README.md README.rst README.txt README).freeze, T::Array[String])

Instance Method Summary collapse

Constructor Details

#initialize(file_fetcher, pyproject) ⇒ WorkspaceFetcher

Returns a new instance of WorkspaceFetcher.



23
24
25
26
27
# File 'lib/dependabot/uv/file_fetcher/workspace_fetcher.rb', line 23

def initialize(file_fetcher, pyproject)
  @file_fetcher = file_fetcher
  @pyproject = pyproject
  @parsed_pyproject = T.let(nil, T.nilable(T::Hash[String, T.untyped]))
end

Instance Method Details

#license_filesObject



56
57
58
59
60
61
62
63
64
65
# File 'lib/dependabot/uv/file_fetcher/workspace_fetcher.rb', line 56

def license_files
  return [] unless @pyproject

  workspace_member_paths.flat_map do |member_path|
    member_pyproject = fetch_workspace_member_pyproject(member_path)
    fetch_license_files_for(member_path, member_pyproject)
  rescue Dependabot::DependencyFileNotFound
    []
  end
end

#uv_sources_workspace_dependenciesObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/dependabot/uv/file_fetcher/workspace_fetcher.rb', line 68

def uv_sources_workspace_dependencies
  return [] unless @pyproject

  uv_sources = parsed_pyproject.dig("tool", "uv", "sources")
  return [] unless uv_sources

  uv_sources.filter_map do |name, source_config|
    if source_config.is_a?(Hash) && source_config["workspace"] == true
      {
        name: T.cast(name, String),
        file: @pyproject.name
      }
    end
  end
end

#version_source_filesObject



44
45
46
47
48
49
50
51
52
53
# File 'lib/dependabot/uv/file_fetcher/workspace_fetcher.rb', line 44

def version_source_files
  return [] unless @pyproject

  workspace_member_paths.flat_map do |member_path|
    member_pyproject = fetch_workspace_member_pyproject(member_path)
    fetch_version_source_files_for(member_path, member_pyproject)
  rescue Dependabot::DependencyFileNotFound
    []
  end
end

#workspace_member_filesObject



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/dependabot/uv/file_fetcher/workspace_fetcher.rb', line 30

def workspace_member_files
  return [] unless @pyproject

  workspace_member_paths.flat_map do |member_path|
    member_pyproject = fetch_workspace_member_pyproject(member_path)
    member_readmes = fetch_readme_files_for(member_path, member_pyproject)

    [member_pyproject] + member_readmes
  rescue Dependabot::DependencyFileNotFound
    []
  end
end