Class: Dependabot::Python::FileParser::PythonRequirementParser

Inherits:
Object
  • Object
show all
Defined in:
lib/dependabot/python/file_parser/python_requirement_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency_files:) ⇒ PythonRequirementParser

Returns a new instance of PythonRequirementParser.



16
17
18
# File 'lib/dependabot/python/file_parser/python_requirement_parser.rb', line 16

def initialize(dependency_files:)
  @dependency_files = dependency_files
end

Instance Attribute Details

#dependency_filesObject (readonly)

Returns the value of attribute dependency_files.



14
15
16
# File 'lib/dependabot/python/file_parser/python_requirement_parser.rb', line 14

def dependency_files
  @dependency_files
end

Instance Method Details

#imputed_requirementsObject

TODO: Add better Python version detection using dependency versions (e.g., Django 2.x implies Python 3)



32
33
34
35
36
37
38
39
40
41
# File 'lib/dependabot/python/file_parser/python_requirement_parser.rb', line 32

def imputed_requirements
  requirement_files.flat_map do |file|
    file.content.lines.
      select { |l| l.include?(";") && l.include?("python") }.
      map { |l| l.match(/python_version(?<req>.*?["'].*?['"])/) }.
      compact.
      map { |re| re.named_captures.fetch("req").gsub(/['"]/, "") }.
      select { |r| valid_requirement?(r) }
  end
end

#user_specified_requirementsObject



20
21
22
23
24
25
26
27
28
# File 'lib/dependabot/python/file_parser/python_requirement_parser.rb', line 20

def user_specified_requirements
  [
    pipfile_python_requirement,
    pyproject_python_requirement,
    python_version_file_version,
    runtime_file_python_version,
    setup_file_requirement
  ].compact
end