dependabot-python 0.79.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/helpers/build +17 -0
  3. data/helpers/lib/__init__.py +0 -0
  4. data/helpers/lib/hasher.py +23 -0
  5. data/helpers/lib/parser.py +130 -0
  6. data/helpers/requirements.txt +9 -0
  7. data/helpers/run.py +18 -0
  8. data/lib/dependabot/python.rb +11 -0
  9. data/lib/dependabot/python/file_fetcher.rb +307 -0
  10. data/lib/dependabot/python/file_parser.rb +221 -0
  11. data/lib/dependabot/python/file_parser/pipfile_files_parser.rb +150 -0
  12. data/lib/dependabot/python/file_parser/poetry_files_parser.rb +139 -0
  13. data/lib/dependabot/python/file_parser/setup_file_parser.rb +158 -0
  14. data/lib/dependabot/python/file_updater.rb +149 -0
  15. data/lib/dependabot/python/file_updater/pip_compile_file_updater.rb +361 -0
  16. data/lib/dependabot/python/file_updater/pipfile_file_updater.rb +391 -0
  17. data/lib/dependabot/python/file_updater/pipfile_preparer.rb +123 -0
  18. data/lib/dependabot/python/file_updater/poetry_file_updater.rb +282 -0
  19. data/lib/dependabot/python/file_updater/pyproject_preparer.rb +103 -0
  20. data/lib/dependabot/python/file_updater/requirement_file_updater.rb +160 -0
  21. data/lib/dependabot/python/file_updater/requirement_replacer.rb +93 -0
  22. data/lib/dependabot/python/file_updater/setup_file_sanitizer.rb +89 -0
  23. data/lib/dependabot/python/metadata_finder.rb +122 -0
  24. data/lib/dependabot/python/native_helpers.rb +17 -0
  25. data/lib/dependabot/python/python_versions.rb +25 -0
  26. data/lib/dependabot/python/requirement.rb +129 -0
  27. data/lib/dependabot/python/requirement_parser.rb +38 -0
  28. data/lib/dependabot/python/update_checker.rb +229 -0
  29. data/lib/dependabot/python/update_checker/latest_version_finder.rb +250 -0
  30. data/lib/dependabot/python/update_checker/pip_compile_version_resolver.rb +379 -0
  31. data/lib/dependabot/python/update_checker/pipfile_version_resolver.rb +558 -0
  32. data/lib/dependabot/python/update_checker/poetry_version_resolver.rb +298 -0
  33. data/lib/dependabot/python/update_checker/requirements_updater.rb +365 -0
  34. data/lib/dependabot/python/version.rb +87 -0
  35. metadata +203 -0
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Python versions can include a local version identifier, which Ruby can't
4
+ # parser. This class augments Gem::Version with local version identifier info.
5
+ # See https://www.python.org/dev/peps/pep-0440 for details.
6
+
7
+ module Dependabot
8
+ module Python
9
+ class Version < Gem::Version
10
+ attr_reader :local_version
11
+
12
+ VERSION_PATTERN = '[0-9]+[0-9a-zA-Z]*(?>\.[0-9a-zA-Z]+)*' \
13
+ '(-[0-9A-Za-z-]+(\.[0-9a-zA-Z-]+)*)?' \
14
+ '(\+[0-9a-zA-Z]+(\.[0-9a-zA-Z]+)*)?'
15
+ ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/.freeze
16
+
17
+ def self.correct?(version)
18
+ return false if version.nil?
19
+
20
+ version.to_s.match?(ANCHORED_VERSION_PATTERN)
21
+ end
22
+
23
+ def initialize(version)
24
+ @version_string = version.to_s
25
+ version, @local_version = version.split("+")
26
+ version ||= ""
27
+ version = normalise_prerelease(version)
28
+ @local_version = normalise_prerelease(@local_version) if @local_version
29
+ super
30
+ end
31
+
32
+ def to_s
33
+ @version_string
34
+ end
35
+
36
+ def inspect # :nodoc:
37
+ "#<#{self.class} #{@version_string}>"
38
+ end
39
+
40
+ def <=>(other)
41
+ version_comparison = super(other)
42
+ return version_comparison unless version_comparison.zero?
43
+
44
+ unless other.is_a?(Python::Version)
45
+ return local_version.nil? ? 0 : 1
46
+ end
47
+
48
+ # Local version comparison works differently in Python: `1.0.beta`
49
+ # compares as greater than `1.0`. To accommodate, we make the
50
+ # strings the same length before comparing.
51
+ lhsegments = local_version.to_s.split(".").map(&:downcase)
52
+ rhsegments = other.local_version.to_s.split(".").map(&:downcase)
53
+ limit = [lhsegments.count, rhsegments.count].min
54
+
55
+ lhs = ["1", *lhsegments.first(limit)].join(".")
56
+ rhs = ["1", *rhsegments.first(limit)].join(".")
57
+
58
+ local_comparison = Gem::Version.new(lhs) <=> Gem::Version.new(rhs)
59
+
60
+ return local_comparison unless local_comparison.zero?
61
+
62
+ lhsegments.count <=> rhsegments.count
63
+ end
64
+
65
+ private
66
+
67
+ def normalise_prerelease(version)
68
+ # Python has reserved words for release states, which are treated
69
+ # as equal (e.g., preview, pre and rc).
70
+ # Further, Python treats dashes as a separator between version
71
+ # parts and treats the alphabetical characters in strings as the
72
+ # start of a new version part (so 1.1a2 == 1.1.alpha.2).
73
+ version.
74
+ gsub("alpha", "a").
75
+ gsub("beta", "b").
76
+ gsub("preview", "rc").
77
+ gsub("pre", "rc").
78
+ gsub(/([\d.\-_])c([\d.\-_])?/, '\1rc\2').
79
+ tr("-", ".").
80
+ gsub(/(\d)([a-z])/i, '\1.\2')
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ Dependabot::Utils.
87
+ register_version_class("pip", Dependabot::Python::Version)
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dependabot-python
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.79.0
5
+ platform: ruby
6
+ authors:
7
+ - Dependabot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-12-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dependabot-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.79.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.79.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-its
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec_junit_formatter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.61'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.61'
111
+ - !ruby/object:Gem::Dependency
112
+ name: vcr
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '4.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '4.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.4'
139
+ description: Automated dependency management for Ruby, JavaScript, Python, PHP, Elixir,
140
+ Rust, Java, .NET, Elm and Go
141
+ email: support@dependabot.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - helpers/build
147
+ - helpers/lib/__init__.py
148
+ - helpers/lib/hasher.py
149
+ - helpers/lib/parser.py
150
+ - helpers/requirements.txt
151
+ - helpers/run.py
152
+ - lib/dependabot/python.rb
153
+ - lib/dependabot/python/file_fetcher.rb
154
+ - lib/dependabot/python/file_parser.rb
155
+ - lib/dependabot/python/file_parser/pipfile_files_parser.rb
156
+ - lib/dependabot/python/file_parser/poetry_files_parser.rb
157
+ - lib/dependabot/python/file_parser/setup_file_parser.rb
158
+ - lib/dependabot/python/file_updater.rb
159
+ - lib/dependabot/python/file_updater/pip_compile_file_updater.rb
160
+ - lib/dependabot/python/file_updater/pipfile_file_updater.rb
161
+ - lib/dependabot/python/file_updater/pipfile_preparer.rb
162
+ - lib/dependabot/python/file_updater/poetry_file_updater.rb
163
+ - lib/dependabot/python/file_updater/pyproject_preparer.rb
164
+ - lib/dependabot/python/file_updater/requirement_file_updater.rb
165
+ - lib/dependabot/python/file_updater/requirement_replacer.rb
166
+ - lib/dependabot/python/file_updater/setup_file_sanitizer.rb
167
+ - lib/dependabot/python/metadata_finder.rb
168
+ - lib/dependabot/python/native_helpers.rb
169
+ - lib/dependabot/python/python_versions.rb
170
+ - lib/dependabot/python/requirement.rb
171
+ - lib/dependabot/python/requirement_parser.rb
172
+ - lib/dependabot/python/update_checker.rb
173
+ - lib/dependabot/python/update_checker/latest_version_finder.rb
174
+ - lib/dependabot/python/update_checker/pip_compile_version_resolver.rb
175
+ - lib/dependabot/python/update_checker/pipfile_version_resolver.rb
176
+ - lib/dependabot/python/update_checker/poetry_version_resolver.rb
177
+ - lib/dependabot/python/update_checker/requirements_updater.rb
178
+ - lib/dependabot/python/version.rb
179
+ homepage: https://github.com/dependabot/dependabot-core
180
+ licenses:
181
+ - Nonstandard
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: 2.5.0
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 2.5.0
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 2.7.6
200
+ signing_key:
201
+ specification_version: 4
202
+ summary: Python support for dependabot-core
203
+ test_files: []