Class: Dependabot::Python::DependencyGrapher

Inherits:
DependencyGraphers::Base
  • Object
show all
Defined in:
lib/dependabot/python/dependency_grapher.rb,
lib/dependabot/python/dependency_grapher/lockfile_generator.rb

Defined Under Namespace

Classes: LockfileGenerator

Instance Method Summary collapse

Instance Method Details

#prepare!Object



42
43
44
45
46
47
48
49
# File 'lib/dependabot/python/dependency_grapher.rb', line 42

def prepare!
  if poetry_project_without_lockfile?
    Dependabot.logger.info("No poetry.lock found, generating ephemeral lockfile for dependency graphing")
    generate_ephemeral_lockfile!
    emit_missing_lockfile_warning! if @ephemeral_lockfile_generated
  end
  super
end

#relevant_dependency_fileObject

Raises:

  • (DependabotError)


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dependabot/python/dependency_grapher.rb', line 22

def relevant_dependency_file
  dependency_files_by_package_manager = T.let(
    {
      PipenvPackageManager::NAME => [pipfile_lock, pipfile],
      PoetryPackageManager::NAME => [committed_poetry_lock, pyproject_toml],
      PipCompilePackageManager::NAME => [pip_compile_lockfile, pip_compile_manifest, pyproject_toml],
      PipPackageManager::NAME => [pip_requirements_file, pyproject_toml, pipfile_lock, pipfile, setup_file,
                                  setup_cfg_file]
    },
    T::Hash[String, T::Array[T.nilable(Dependabot::DependencyFile)]]
  )

  candidates = dependency_files_by_package_manager.fetch(python_package_manager, [])
  relevant_file = candidates.compact.first
  return relevant_file if relevant_file

  raise DependabotError, "No supported dependency file present."
end