solargraph 0.57.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/linting.yml +4 -2
  3. data/.github/workflows/plugins.yml +61 -27
  4. data/.github/workflows/rspec.yml +19 -4
  5. data/.github/workflows/typecheck.yml +2 -2
  6. data/.rubocop.yml +1 -1
  7. data/.rubocop_todo.yml +90 -1438
  8. data/CHANGELOG.md +27 -0
  9. data/Rakefile +1 -1
  10. data/bin/solargraph +8 -5
  11. data/lib/solargraph/api_map/constants.rb +107 -46
  12. data/lib/solargraph/api_map/index.rb +32 -8
  13. data/lib/solargraph/api_map/source_to_yard.rb +5 -2
  14. data/lib/solargraph/api_map/store.rb +22 -12
  15. data/lib/solargraph/api_map.rb +27 -33
  16. data/lib/solargraph/complex_type/type_methods.rb +5 -0
  17. data/lib/solargraph/complex_type/unique_type.rb +12 -5
  18. data/lib/solargraph/complex_type.rb +19 -2
  19. data/lib/solargraph/convention/active_support_concern.rb +1 -1
  20. data/lib/solargraph/convention/data_definition/data_definition_node.rb +1 -1
  21. data/lib/solargraph/diagnostics/rubocop_helpers.rb +4 -2
  22. data/lib/solargraph/doc_map.rb +9 -6
  23. data/lib/solargraph/environ.rb +1 -1
  24. data/lib/solargraph/equality.rb +1 -0
  25. data/lib/solargraph/gem_pins.rb +4 -0
  26. data/lib/solargraph/language_server/host.rb +10 -4
  27. data/lib/solargraph/language_server/message/text_document/definition.rb +2 -2
  28. data/lib/solargraph/language_server/message/text_document/formatting.rb +4 -1
  29. data/lib/solargraph/language_server/message/text_document/type_definition.rb +1 -1
  30. data/lib/solargraph/language_server/progress.rb +1 -1
  31. data/lib/solargraph/language_server/request.rb +3 -1
  32. data/lib/solargraph/library.rb +3 -3
  33. data/lib/solargraph/location.rb +1 -0
  34. data/lib/solargraph/page.rb +0 -1
  35. data/lib/solargraph/parser/flow_sensitive_typing.rb +1 -1
  36. data/lib/solargraph/parser/parser_gem/class_methods.rb +2 -12
  37. data/lib/solargraph/parser/parser_gem/node_methods.rb +1 -14
  38. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +1 -0
  39. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +64 -8
  40. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +12 -3
  41. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +4 -5
  42. data/lib/solargraph/pin/base.rb +29 -8
  43. data/lib/solargraph/pin/base_variable.rb +5 -3
  44. data/lib/solargraph/pin/block.rb +3 -2
  45. data/lib/solargraph/pin/callable.rb +6 -2
  46. data/lib/solargraph/pin/closure.rb +3 -7
  47. data/lib/solargraph/pin/delegated_method.rb +0 -1
  48. data/lib/solargraph/pin/local_variable.rb +0 -4
  49. data/lib/solargraph/pin/method.rb +20 -4
  50. data/lib/solargraph/pin/parameter.rb +6 -2
  51. data/lib/solargraph/pin/proxy_type.rb +4 -1
  52. data/lib/solargraph/pin/reference.rb +2 -11
  53. data/lib/solargraph/pin/search.rb +3 -0
  54. data/lib/solargraph/pin_cache.rb +5 -5
  55. data/lib/solargraph/position.rb +1 -0
  56. data/lib/solargraph/range.rb +4 -0
  57. data/lib/solargraph/rbs_map/conversions.rb +22 -1
  58. data/lib/solargraph/rbs_map/core_fills.rb +18 -0
  59. data/lib/solargraph/rbs_map/core_map.rb +11 -7
  60. data/lib/solargraph/rbs_map.rb +2 -2
  61. data/lib/solargraph/shell.rb +82 -1
  62. data/lib/solargraph/source/chain/call.rb +7 -3
  63. data/lib/solargraph/source/chain/constant.rb +3 -66
  64. data/lib/solargraph/source/chain/if.rb +1 -1
  65. data/lib/solargraph/source/chain/link.rb +1 -1
  66. data/lib/solargraph/source/chain/or.rb +1 -1
  67. data/lib/solargraph/source/chain.rb +2 -0
  68. data/lib/solargraph/source.rb +1 -1
  69. data/lib/solargraph/source_map/clip.rb +17 -25
  70. data/lib/solargraph/source_map/mapper.rb +0 -2
  71. data/lib/solargraph/source_map.rb +8 -3
  72. data/lib/solargraph/type_checker/rules.rb +23 -9
  73. data/lib/solargraph/type_checker.rb +133 -71
  74. data/lib/solargraph/version.rb +1 -1
  75. data/lib/solargraph/workspace/config.rb +21 -3
  76. data/lib/solargraph/workspace/require_paths.rb +0 -1
  77. data/lib/solargraph/workspace.rb +14 -19
  78. data/lib/solargraph/yard_map/mapper/to_method.rb +2 -1
  79. data/lib/solargraph/yard_map/mapper/to_namespace.rb +1 -0
  80. data/lib/solargraph/yard_map/to_method.rb +2 -1
  81. data/lib/solargraph/yardoc.rb +27 -4
  82. data/rbs/fills/bundler/0/bundler.rbs +4271 -0
  83. data/rbs/fills/open3/0/open3.rbs +172 -0
  84. data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
  85. data/rbs/fills/rubygems/0/errors.rbs +364 -0
  86. data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
  87. data/rbs/fills/rubygems/0/specification.rbs +1753 -0
  88. data/rbs_collection.yaml +4 -4
  89. data/sig/shims/ast/0/node.rbs +5 -0
  90. data/sig/shims/ast/2.4/.rbs_meta.yaml +9 -0
  91. data/sig/shims/ast/2.4/ast.rbs +73 -0
  92. data/sig/shims/parser/3.2.0.1/manifest.yaml +7 -0
  93. data/sig/shims/parser/3.2.0.1/parser.rbs +201 -0
  94. data/sig/shims/parser/3.2.0.1/polyfill.rbs +4 -0
  95. data/solargraph.gemspec +15 -4
  96. metadata +66 -12
  97. data/lib/solargraph/parser/node_methods.rb +0 -97
  98. /data/rbs/fills/{tuple.rbs → tuple/tuple.rbs} +0 -0
@@ -0,0 +1,1753 @@
1
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
2
+ # The Specification class contains the information for a gem. Typically defined
3
+ # in a .gemspec file or a Rakefile, and looks like this:
4
+ #
5
+ # Gem::Specification.new do |s|
6
+ # s.name = 'example'
7
+ # s.version = '0.1.0'
8
+ # s.licenses = ['MIT']
9
+ # s.summary = "This is an example!"
10
+ # s.description = "Much longer explanation of the example!"
11
+ # s.authors = ["Ruby Coder"]
12
+ # s.email = 'rubycoder@example.com'
13
+ # s.files = ["lib/example.rb"]
14
+ # s.homepage = 'https://rubygems.org/gems/example'
15
+ # s.metadata = { "source_code_uri" => "https://github.com/example/example" }
16
+ # end
17
+ #
18
+ # Starting in RubyGems 2.0, a Specification can hold arbitrary metadata. See
19
+ # #metadata for restrictions on the format and size of metadata items you may
20
+ # add to a specification.
21
+ #
22
+ class Gem::Specification < Gem::BasicSpecification
23
+ @@required_attributes: untyped
24
+
25
+ @@default_value: untyped
26
+
27
+ @@attributes: untyped
28
+
29
+ @@array_attributes: untyped
30
+
31
+ @@nil_attributes: untyped
32
+
33
+ @@non_nil_attributes: untyped
34
+
35
+ @@dirs: untyped
36
+
37
+ self.@load_cache: untyped
38
+
39
+ self.@load_cache_mutex: untyped
40
+
41
+ self.@specification_record: untyped
42
+
43
+ self.@unresolved_deps: untyped
44
+
45
+ @removed_method_calls: untyped
46
+
47
+ # DO NOT CHANGE TO ||= ! This is not a normal accessor. (yes, it sucks)
48
+ # DOC: Why isn't it normal? Why does it suck? How can we fix this?
49
+ @files: untyped
50
+
51
+ @authors: untyped
52
+
53
+ @licenses: untyped
54
+
55
+ @original_platform: untyped
56
+
57
+ @new_platform: untyped
58
+
59
+ @platform: untyped
60
+
61
+ @require_paths: untyped
62
+
63
+ @executables: untyped
64
+
65
+ @extensions: untyped
66
+
67
+ @extra_rdoc_files: untyped
68
+
69
+ @installed_by_version: untyped
70
+
71
+ @rdoc_options: untyped
72
+
73
+ @required_ruby_version: untyped
74
+
75
+ @required_rubygems_version: untyped
76
+
77
+ @requirements: untyped
78
+
79
+ @test_files: untyped
80
+
81
+ @extensions_dir: untyped
82
+
83
+ @activated: untyped
84
+
85
+ @loaded: untyped
86
+
87
+ @bin_dir: untyped
88
+
89
+ @cache_dir: untyped
90
+
91
+ @cache_file: untyped
92
+
93
+ @date: untyped
94
+
95
+ @dependencies: untyped
96
+
97
+ @description: untyped
98
+
99
+ @doc_dir: untyped
100
+
101
+ @full_name: untyped
102
+
103
+ @gems_dir: untyped
104
+
105
+ @has_rdoc: untyped
106
+
107
+ @base_dir: untyped
108
+
109
+ @loaded_from: untyped
110
+
111
+ @ri_dir: untyped
112
+
113
+ @spec_dir: untyped
114
+
115
+ @spec_file: untyped
116
+
117
+ @summary: untyped
118
+
119
+ @test_suite_file: untyped
120
+
121
+ @version: untyped
122
+
123
+ extend Gem::Deprecate
124
+
125
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
126
+ # The version number of a specification that does not specify one (i.e. RubyGems
127
+ # 0.7 or earlier).
128
+ #
129
+ NONEXISTENT_SPECIFICATION_VERSION: -1
130
+
131
+ CURRENT_SPECIFICATION_VERSION: 4
132
+
133
+ SPECIFICATION_VERSION_HISTORY: { -1 => ::Array["(RubyGems versions up to and including 0.7 did not have versioned specifications)"], 1 => ::Array["Deprecated \"test_suite_file\" in favor of the new, but equivalent, \"test_files\"" | "\"test_file=x\" is a shortcut for \"test_files=[x]\""], 2 => ::Array["Added \"required_rubygems_version\"" | "Now forward-compatible with future versions"], 3 => ::Array["Added Fixnum validation to the specification_version"], 4 => ::Array["Added sandboxed freeform metadata to the specification version."] }
134
+
135
+ MARSHAL_FIELDS: { -1 => 16, 1 => 16, 2 => 16, 3 => 17, 4 => 18 }
136
+
137
+ TODAY: untyped
138
+
139
+ VALID_NAME_PATTERN: ::Regexp
140
+
141
+ # rubocop:disable Style/MutableConstant
142
+ INITIALIZE_CODE_FOR_DEFAULTS: ::Hash[untyped, untyped]
143
+
144
+ # Sentinel object to represent "not found" stubs
145
+ NOT_FOUND: untyped
146
+
147
+ # Tracking removed method calls to warn users during build time.
148
+ REMOVED_METHODS: ::Array[:rubyforge_project= | :mark_version]
149
+
150
+ # <!--
151
+ # rdoc-file=lib/rubygems/specification.rb
152
+ # - removed_method_calls()
153
+ # -->
154
+ #
155
+ def removed_method_calls: () -> untyped
156
+
157
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
158
+ # This gem's name.
159
+ #
160
+ # Usage:
161
+ #
162
+ # spec.name = 'rake'
163
+ #
164
+ attr_accessor name: String
165
+
166
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
167
+ # This gem's version.
168
+ #
169
+ # The version string can contain numbers and periods, such as `1.0.0`. A gem is
170
+ # a 'prerelease' gem if the version has a letter in it, such as `1.0.0.pre`.
171
+ #
172
+ # Usage:
173
+ #
174
+ # spec.version = '0.4.1'
175
+ #
176
+ attr_reader version: String
177
+
178
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
179
+ # A short summary of this gem's description. Displayed in `gem list -d`.
180
+ #
181
+ # The #description should be more detailed than the summary.
182
+ #
183
+ # Usage:
184
+ #
185
+ # spec.summary = "This is a small summary of my gem"
186
+ #
187
+ attr_reader summary: untyped
188
+
189
+ # <!--
190
+ # rdoc-file=lib/rubygems/specification.rb
191
+ # - files()
192
+ # -->
193
+ # Files included in this gem. You cannot append to this accessor, you must
194
+ # assign to it.
195
+ #
196
+ # Only add files you can require to this list, not directories, etc.
197
+ #
198
+ # Directories are automatically stripped from this list when building a gem,
199
+ # other non-files cause an error.
200
+ #
201
+ # Usage:
202
+ #
203
+ # require 'rake'
204
+ # spec.files = FileList['lib/**/*.rb',
205
+ # 'bin/*',
206
+ # '[A-Z]*'].to_a
207
+ #
208
+ # # or without Rake...
209
+ # spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
210
+ # spec.files += Dir['[A-Z]*']
211
+ # spec.files.reject! { |fn| fn.include? "CVS" }
212
+ #
213
+ def files: () -> Enumerable[String]
214
+
215
+ # <!--
216
+ # rdoc-file=lib/rubygems/specification.rb
217
+ # - authors=(value)
218
+ # -->
219
+ # A list of authors for this gem.
220
+ #
221
+ # Alternatively, a single author can be specified by assigning a string to
222
+ # `spec.author`
223
+ #
224
+ # Usage:
225
+ #
226
+ # spec.authors = ['John Jones', 'Mary Smith']
227
+ #
228
+ def authors=: (untyped value) -> untyped
229
+
230
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
231
+ # The version of Ruby required by this gem
232
+ #
233
+ # Usage:
234
+ #
235
+ # spec.required_ruby_version = '>= 2.7.0'
236
+ #
237
+ attr_reader required_ruby_version: untyped
238
+
239
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
240
+ # A long description of this gem
241
+ #
242
+ # The description should be more detailed than the summary but not excessively
243
+ # long. A few paragraphs is a recommended length with no examples or
244
+ # formatting.
245
+ #
246
+ # Usage:
247
+ #
248
+ # spec.description = <<-EOF
249
+ # Rake is a Make-like program implemented in Ruby. Tasks and
250
+ # dependencies are specified in standard Ruby syntax.
251
+ # EOF
252
+ #
253
+ attr_reader description: untyped
254
+
255
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
256
+ # A contact email address (or addresses) for this gem
257
+ #
258
+ # Usage:
259
+ #
260
+ # spec.email = 'john.jones@example.com'
261
+ # spec.email = ['jack@example.com', 'jill@example.com']
262
+ #
263
+ attr_accessor email: untyped
264
+
265
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
266
+ # The URL of this gem's home page
267
+ #
268
+ # Usage:
269
+ #
270
+ # spec.homepage = 'https://github.com/ruby/rake'
271
+ #
272
+ attr_accessor homepage: untyped
273
+
274
+ # <!--
275
+ # rdoc-file=lib/rubygems/specification.rb
276
+ # - license=(o)
277
+ # -->
278
+ # The license for this gem.
279
+ #
280
+ # The license must be no more than 64 characters.
281
+ #
282
+ # This should just be the name of your license. The full text of the license
283
+ # should be inside of the gem (at the top level) when you build it.
284
+ #
285
+ # The simplest way is to specify the standard SPDX ID https://spdx.org/licenses/
286
+ # for the license. Ideally, you should pick one that is OSI (Open Source
287
+ # Initiative) http://opensource.org/licenses/alphabetical approved.
288
+ #
289
+ # The most commonly used OSI-approved licenses are MIT and Apache-2.0. GitHub
290
+ # also provides a license picker at http://choosealicense.com/.
291
+ #
292
+ # You can also use a custom license file along with your gemspec and specify a
293
+ # LicenseRef-<idstring>, where idstring is the name of the file containing the
294
+ # license text.
295
+ #
296
+ # You should specify a license for your gem so that people know how they are
297
+ # permitted to use it and any restrictions you're placing on it. Not specifying
298
+ # a license means all rights are reserved; others have no right to use the code
299
+ # for any purpose.
300
+ #
301
+ # You can set multiple licenses with #licenses=
302
+ #
303
+ # Usage:
304
+ # spec.license = 'MIT'
305
+ #
306
+ def license=: (untyped o) -> untyped
307
+
308
+ # <!--
309
+ # rdoc-file=lib/rubygems/specification.rb
310
+ # - licenses=(licenses)
311
+ # -->
312
+ # The license(s) for the library.
313
+ #
314
+ # Each license must be a short name, no more than 64 characters.
315
+ #
316
+ # This should just be the name of your license. The full text of the license
317
+ # should be inside of the gem when you build it.
318
+ #
319
+ # See #license= for more discussion
320
+ #
321
+ # Usage:
322
+ # spec.licenses = ['MIT', 'GPL-2.0']
323
+ #
324
+ def licenses=: (untyped licenses) -> untyped
325
+
326
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
327
+ # The metadata holds extra data for this gem that may be useful to other
328
+ # consumers and is settable by gem authors.
329
+ #
330
+ # Metadata items have the following restrictions:
331
+ #
332
+ # * The metadata must be a Hash object
333
+ # * All keys and values must be Strings
334
+ # * Keys can be a maximum of 128 bytes and values can be a maximum of 1024
335
+ # bytes
336
+ # * All strings must be UTF-8, no binary data is allowed
337
+ #
338
+ # You can use metadata to specify links to your gem's homepage, codebase,
339
+ # documentation, wiki, mailing list, issue tracker and changelog.
340
+ #
341
+ # s.metadata = {
342
+ # "bug_tracker_uri" => "https://example.com/user/bestgemever/issues",
343
+ # "changelog_uri" => "https://example.com/user/bestgemever/CHANGELOG.md",
344
+ # "documentation_uri" => "https://www.example.info/gems/bestgemever/0.0.1",
345
+ # "homepage_uri" => "https://bestgemever.example.io",
346
+ # "mailing_list_uri" => "https://groups.example.com/bestgemever",
347
+ # "source_code_uri" => "https://example.com/user/bestgemever",
348
+ # "wiki_uri" => "https://example.com/user/bestgemever/wiki"
349
+ # "funding_uri" => "https://example.com/donate"
350
+ # }
351
+ #
352
+ # These links will be used on your gem's page on rubygems.org and must pass
353
+ # validation against following regex.
354
+ #
355
+ # %r{\Ahttps?:\/\/([^\s:@]+:[^\s:@]*@)?[A-Za-z\d\-]+(\.[A-Za-z\d\-]+)+\.?(:\d{1,5})?([\/?]\S*)?\z}
356
+ #
357
+ attr_accessor metadata: untyped
358
+
359
+ # <!--
360
+ # rdoc-file=lib/rubygems/specification.rb
361
+ # - author=(o)
362
+ # -->
363
+ # Singular (alternative) writer for #authors
364
+ #
365
+ # Usage:
366
+ #
367
+ # spec.author = 'John Jones'
368
+ #
369
+ def author=: (untyped o) -> untyped
370
+
371
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
372
+ # The path in the gem for executable scripts. Usually 'bin'
373
+ #
374
+ # Usage:
375
+ #
376
+ # spec.bindir = 'bin'
377
+ #
378
+ attr_accessor bindir: untyped
379
+
380
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
381
+ # The certificate chain used to sign this gem. See Gem::Security for details.
382
+ #
383
+ attr_accessor cert_chain: untyped
384
+
385
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
386
+ # A message that gets displayed after the gem is installed.
387
+ #
388
+ # Usage:
389
+ #
390
+ # spec.post_install_message = "Thanks for installing!"
391
+ #
392
+ attr_accessor post_install_message: untyped
393
+
394
+ # <!--
395
+ # rdoc-file=lib/rubygems/specification.rb
396
+ # - platform=(platform)
397
+ # -->
398
+ # The platform this gem runs on.
399
+ #
400
+ # This is usually Gem::Platform::RUBY or Gem::Platform::CURRENT.
401
+ #
402
+ # Most gems contain pure Ruby code; they should simply leave the default value
403
+ # in place. Some gems contain C (or other) code to be compiled into a Ruby
404
+ # "extension". The gem should leave the default value in place unless the code
405
+ # will only compile on a certain type of system. Some gems consist of
406
+ # pre-compiled code ("binary gems"). It's especially important that they set
407
+ # the platform attribute appropriately. A shortcut is to set the platform to
408
+ # Gem::Platform::CURRENT, which will cause the gem builder to set the platform
409
+ # to the appropriate value for the system on which the build is being performed.
410
+ #
411
+ # If this attribute is set to a non-default value, it will be included in the
412
+ # filename of the gem when it is built such as: nokogiri-1.6.0-x86-mingw32.gem
413
+ #
414
+ # Usage:
415
+ #
416
+ # spec.platform = Gem::Platform.local
417
+ #
418
+ def platform=: (untyped platform) -> untyped
419
+
420
+ # <!--
421
+ # rdoc-file=lib/rubygems/specification.rb
422
+ # - require_paths=(val)
423
+ # -->
424
+ # Paths in the gem to add to `$LOAD_PATH` when this gem is activated. If you
425
+ # have an extension you do not need to add `"ext"` to the require path, the
426
+ # extension build process will copy the extension files into "lib" for you.
427
+ #
428
+ # The default value is `"lib"`
429
+ #
430
+ # Usage:
431
+ #
432
+ # # If all library files are in the root directory...
433
+ # spec.require_paths = ['.']
434
+ #
435
+ def require_paths=: (untyped val) -> untyped
436
+
437
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
438
+ # The RubyGems version required by this gem
439
+ #
440
+ attr_reader required_rubygems_version: untyped
441
+
442
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
443
+ # The key used to sign this gem. See Gem::Security for details.
444
+ #
445
+ attr_accessor signing_key: untyped
446
+
447
+ # <!--
448
+ # rdoc-file=lib/rubygems/specification.rb
449
+ # - add_development_dependency(gem, *requirements)
450
+ # -->
451
+ # Adds a development dependency named `gem` with `requirements` to this gem.
452
+ #
453
+ # Usage:
454
+ #
455
+ # spec.add_development_dependency 'example', '~> 1.1', '>= 1.1.4'
456
+ #
457
+ # Development dependencies aren't installed by default and aren't activated when
458
+ # a gem is required.
459
+ #
460
+ def add_development_dependency: (untyped gem, *untyped requirements) -> untyped
461
+
462
+ # <!--
463
+ # rdoc-file=lib/rubygems/specification.rb
464
+ # - add_dependency(gem, *requirements)
465
+ # -->
466
+ #
467
+ def add_dependency: (untyped gem, *untyped requirements) -> untyped
468
+
469
+ # <!--
470
+ # rdoc-file=lib/rubygems/specification.rb
471
+ # - executables()
472
+ # -->
473
+ # Executables included in the gem.
474
+ #
475
+ # For example, the rake gem has rake as an executable. You don’t specify the
476
+ # full path (as in bin/rake); all application-style files are expected to be
477
+ # found in bindir. These files must be executable Ruby files. Files that use
478
+ # bash or other interpreters will not work.
479
+ #
480
+ # Executables included may only be ruby scripts, not scripts for other languages
481
+ # or compiled binaries.
482
+ #
483
+ # Usage:
484
+ #
485
+ # spec.executables << 'rake'
486
+ #
487
+ def executables: () -> untyped
488
+
489
+ # <!--
490
+ # rdoc-file=lib/rubygems/specification.rb
491
+ # - extensions()
492
+ # -->
493
+ # Extensions to build when installing the gem, specifically the paths to
494
+ # extconf.rb-style files used to compile extensions.
495
+ #
496
+ # These files will be run when the gem is installed, causing the C (or whatever)
497
+ # code to be compiled on the user’s machine.
498
+ #
499
+ # Usage:
500
+ #
501
+ # spec.extensions << 'ext/rmagic/extconf.rb'
502
+ #
503
+ # See Gem::Ext::Builder for information about writing extensions for gems.
504
+ #
505
+ def extensions: () -> untyped
506
+
507
+ # <!--
508
+ # rdoc-file=lib/rubygems/specification.rb
509
+ # - extra_rdoc_files()
510
+ # -->
511
+ # Extra files to add to RDoc such as README or doc/examples.txt
512
+ #
513
+ # When the user elects to generate the RDoc documentation for a gem (typically
514
+ # at install time), all the library files are sent to RDoc for processing. This
515
+ # option allows you to have some non-code files included for a more complete set
516
+ # of documentation.
517
+ #
518
+ # Usage:
519
+ #
520
+ # spec.extra_rdoc_files = ['README', 'doc/user-guide.txt']
521
+ #
522
+ def extra_rdoc_files: () -> untyped
523
+
524
+ def installed_by_version: () -> untyped
525
+
526
+ def installed_by_version=: (untyped version) -> untyped
527
+
528
+ # <!--
529
+ # rdoc-file=lib/rubygems/specification.rb
530
+ # - rdoc_options()
531
+ # -->
532
+ # Specifies the rdoc options to be used when generating API documentation.
533
+ #
534
+ # Usage:
535
+ #
536
+ # spec.rdoc_options << '--title' << 'Rake -- Ruby Make' <<
537
+ # '--main' << 'README' <<
538
+ # '--line-numbers'
539
+ #
540
+ def rdoc_options: () -> untyped
541
+
542
+ LATEST_RUBY_WITHOUT_PATCH_VERSIONS: untyped
543
+
544
+ # <!--
545
+ # rdoc-file=lib/rubygems/specification.rb
546
+ # - required_ruby_version=(req)
547
+ # -->
548
+ # The version of Ruby required by this gem. The ruby version can be specified
549
+ # to the patch-level:
550
+ #
551
+ # $ ruby -v -e 'p Gem.ruby_version'
552
+ # ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
553
+ # #<Gem::Version "2.0.0.247">
554
+ #
555
+ # Prereleases can also be specified.
556
+ #
557
+ # Usage:
558
+ #
559
+ # # This gem will work with 1.8.6 or greater...
560
+ # spec.required_ruby_version = '>= 1.8.6'
561
+ #
562
+ # # Only with final releases of major version 2 where minor version is at least 3
563
+ # spec.required_ruby_version = '~> 2.3'
564
+ #
565
+ # # Only prereleases or final releases after 2.6.0.preview2
566
+ # spec.required_ruby_version = '> 2.6.0.preview2'
567
+ #
568
+ # # This gem will work with 2.3.0 or greater, including major version 3, but lesser than 4.0.0
569
+ # spec.required_ruby_version = '>= 2.3', '< 4'
570
+ #
571
+ def required_ruby_version=: (untyped req) -> untyped
572
+
573
+ # <!--
574
+ # rdoc-file=lib/rubygems/specification.rb
575
+ # - required_rubygems_version=(req)
576
+ # -->
577
+ # The RubyGems version required by this gem
578
+ #
579
+ def required_rubygems_version=: (untyped req) -> untyped
580
+
581
+ # <!--
582
+ # rdoc-file=lib/rubygems/specification.rb
583
+ # - requirements()
584
+ # -->
585
+ # Lists the external (to RubyGems) requirements that must be met for this gem to
586
+ # work. It's simply information for the user.
587
+ #
588
+ # Usage:
589
+ #
590
+ # spec.requirements << 'libmagick, v6.0'
591
+ # spec.requirements << 'A good graphics card'
592
+ #
593
+ def requirements: () -> untyped
594
+
595
+ def test_files=: (untyped files) -> untyped
596
+
597
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
598
+ # The version of RubyGems used to create this gem.
599
+ #
600
+ # Do not set this, it is set automatically when the gem is packaged.
601
+ #
602
+ attr_accessor rubygems_version: untyped
603
+
604
+ def extensions_dir: () -> untyped
605
+
606
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
607
+ # True when this gemspec has been activated. This attribute is not persisted.
608
+ #
609
+ attr_accessor activated: untyped
610
+
611
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
612
+ # True when this gemspec has been activated. This attribute is not persisted.
613
+ #
614
+ alias activated? activated
615
+
616
+ attr_accessor autorequire: untyped
617
+
618
+ attr_writer default_executable: untyped
619
+
620
+ attr_writer original_platform: untyped
621
+
622
+ # <!-- rdoc-file=lib/rubygems/specification.rb -->
623
+ # The Gem::Specification version of this gemspec.
624
+ #
625
+ # Do not set this, it is set automatically when the gem is packaged.
626
+ #
627
+ attr_accessor specification_version: untyped
628
+
629
+ def self._all: () -> untyped
630
+
631
+ def self.clear_load_cache: () -> untyped
632
+
633
+ def self.gem_path: () -> untyped
634
+
635
+ def self.each_gemspec: (untyped dirs) { (untyped) -> untyped } -> untyped
636
+
637
+ # <!--
638
+ # rdoc-file=lib/rubygems/specification.rb
639
+ # - gemspec_stubs_in(dir, pattern) { |path| ... }
640
+ # -->
641
+ #
642
+ def self.gemspec_stubs_in: (untyped dir, untyped pattern) { (untyped) -> untyped } -> untyped
643
+
644
+ def self.each_spec: (untyped dirs) { (untyped) -> untyped } -> untyped
645
+
646
+ # <!--
647
+ # rdoc-file=lib/rubygems/specification.rb
648
+ # - stubs()
649
+ # -->
650
+ # Returns a Gem::StubSpecification for every installed gem
651
+ #
652
+ def self.stubs: () -> untyped
653
+
654
+ # <!--
655
+ # rdoc-file=lib/rubygems/specification.rb
656
+ # - default_stubs(pattern = "*.gemspec")
657
+ # -->
658
+ # Returns a Gem::StubSpecification for default gems
659
+ #
660
+ def self.default_stubs: (?::String pattern) -> untyped
661
+
662
+ # <!--
663
+ # rdoc-file=lib/rubygems/specification.rb
664
+ # - stubs_for(name)
665
+ # -->
666
+ # Returns a Gem::StubSpecification for installed gem named `name` only returns
667
+ # stubs that match Gem.platforms
668
+ #
669
+ def self.stubs_for: (untyped name) -> untyped
670
+
671
+ #
672
+ # Finds stub specifications matching a pattern from the standard locations,
673
+ # optionally filtering out specs not matching the current platform
674
+ #
675
+ def self.stubs_for_pattern: (untyped pattern, ?bool match_platform) -> untyped
676
+
677
+ def self._resort!: (untyped specs) -> untyped
678
+
679
+ # <!--
680
+ # rdoc-file=lib/rubygems/specification.rb
681
+ # - load_defaults()
682
+ # -->
683
+ # Loads the default specifications. It should be called only once.
684
+ #
685
+ def self.load_defaults: () -> untyped
686
+
687
+ # <!--
688
+ # rdoc-file=lib/rubygems/specification.rb
689
+ # - add_spec(spec)
690
+ # -->
691
+ # Adds `spec` to the known specifications, keeping the collection properly
692
+ # sorted.
693
+ #
694
+ def self.add_spec: (untyped spec) -> untyped
695
+
696
+ # <!--
697
+ # rdoc-file=lib/rubygems/specification.rb
698
+ # - remove_spec(spec)
699
+ # -->
700
+ # Removes `spec` from the known specs.
701
+ #
702
+ def self.remove_spec: (untyped spec) -> untyped
703
+
704
+ # <!--
705
+ # rdoc-file=lib/rubygems/specification.rb
706
+ # - all()
707
+ # -->
708
+ # Returns all specifications. This method is discouraged from use. You probably
709
+ # want to use one of the Enumerable methods instead.
710
+ #
711
+ def self.all: () -> untyped
712
+
713
+ # <!--
714
+ # rdoc-file=lib/rubygems/specification.rb
715
+ # - all=(specs)
716
+ # -->
717
+ # Sets the known specs to `specs`. Not guaranteed to work for you in the future.
718
+ # Use at your own risk. Caveat emptor. Doomy doom doom. Etc etc.
719
+ #
720
+ def self.all=: (untyped specs) -> untyped
721
+
722
+ # <!--
723
+ # rdoc-file=lib/rubygems/specification.rb
724
+ # - all_names()
725
+ # -->
726
+ # Return full names of all specs in sorted order.
727
+ #
728
+ def self.all_names: () -> untyped
729
+
730
+ # <!--
731
+ # rdoc-file=lib/rubygems/specification.rb
732
+ # - array_attributes()
733
+ # -->
734
+ # Return the list of all array-oriented instance variables.
735
+ #
736
+ def self.array_attributes: () -> untyped
737
+
738
+ # <!--
739
+ # rdoc-file=lib/rubygems/specification.rb
740
+ # - attribute_names()
741
+ # -->
742
+ # Return the list of all instance variables.
743
+ #
744
+ def self.attribute_names: () -> untyped
745
+
746
+ # <!--
747
+ # rdoc-file=lib/rubygems/specification.rb
748
+ # - dirs()
749
+ # -->
750
+ # Return the directories that Specification uses to find specs.
751
+ #
752
+ def self.dirs: () -> untyped
753
+
754
+ # <!--
755
+ # rdoc-file=lib/rubygems/specification.rb
756
+ # - dirs=(dirs)
757
+ # -->
758
+ # Set the directories that Specification uses to find specs. Setting this resets
759
+ # the list of known specs.
760
+ #
761
+ def self.dirs=: (untyped dirs) -> untyped
762
+
763
+ extend Enumerable[Gem::Specification]
764
+
765
+ # <!--
766
+ # rdoc-file=lib/rubygems/specification.rb
767
+ # - each() { |x| ... }
768
+ # -->
769
+ # Enumerate every known spec. See ::dirs= and ::add_spec to set the list of
770
+ # specs.
771
+ #
772
+ def self.each: () { (Gem::Specification) -> untyped } -> untyped
773
+
774
+ # <!--
775
+ # rdoc-file=lib/rubygems/specification.rb
776
+ # - find_all_by_name(name, *requirements)
777
+ # -->
778
+ # Returns every spec that matches `name` and optional `requirements`.
779
+ #
780
+ def self.find_all_by_name: (untyped name, *untyped requirements) -> untyped
781
+
782
+ # <!--
783
+ # rdoc-file=lib/rubygems/specification.rb
784
+ # - find_all_by_full_name(full_name)
785
+ # -->
786
+ # Returns every spec that has the given `full_name`
787
+ #
788
+ def self.find_all_by_full_name: (untyped full_name) -> untyped
789
+
790
+ # <!--
791
+ # rdoc-file=lib/rubygems/specification.rb
792
+ # - find_by_name(name, *requirements)
793
+ # -->
794
+ # Find the best specification matching a `name` and `requirements`. Raises if
795
+ # the dependency doesn't resolve to a valid specification.
796
+ #
797
+ def self.find_by_name: (String name, *untyped requirements) -> instance
798
+
799
+ #
800
+ # Find the best specification matching a +full_name+.
801
+ def self.find_by_full_name: (untyped full_name) -> instance
802
+
803
+ # <!--
804
+ # rdoc-file=lib/rubygems/specification.rb
805
+ # - find_by_path(path)
806
+ # -->
807
+ # Return the best specification that contains the file matching `path`.
808
+ #
809
+ def self.find_by_path: (String path) -> instance
810
+
811
+ # <!--
812
+ # rdoc-file=lib/rubygems/specification.rb
813
+ # - find_inactive_by_path(path)
814
+ # -->
815
+ # Return the best specification that contains the file matching `path` amongst
816
+ # the specs that are not activated.
817
+ #
818
+ def self.find_inactive_by_path: (untyped path) -> untyped
819
+
820
+ # <!--
821
+ # rdoc-file=lib/rubygems/specification.rb
822
+ # - find_active_stub_by_path(path)
823
+ # -->
824
+ #
825
+ def self.find_active_stub_by_path: (untyped path) -> untyped
826
+
827
+ # <!--
828
+ # rdoc-file=lib/rubygems/specification.rb
829
+ # - find_in_unresolved(path)
830
+ # -->
831
+ # Return currently unresolved specs that contain the file matching `path`.
832
+ #
833
+ def self.find_in_unresolved: (untyped path) -> untyped
834
+
835
+ # <!--
836
+ # rdoc-file=lib/rubygems/specification.rb
837
+ # - find_in_unresolved_tree(path)
838
+ # -->
839
+ # Search through all unresolved deps and sub-dependencies and return specs that
840
+ # contain the file matching `path`.
841
+ #
842
+ def self.find_in_unresolved_tree: (untyped path) -> (untyped | ::Array[untyped])
843
+
844
+ # <!--
845
+ # rdoc-file=lib/rubygems/specification.rb
846
+ # - unresolved_specs()
847
+ # -->
848
+ #
849
+ def self.unresolved_specs: () -> untyped
850
+
851
+ # <!--
852
+ # rdoc-file=lib/rubygems/specification.rb
853
+ # - from_yaml(input)
854
+ # -->
855
+ # Special loader for YAML files. When a Specification object is loaded from a
856
+ # YAML file, it bypasses the normal Ruby object initialization routine
857
+ # (#initialize). This method makes up for that and deals with gems of different
858
+ # ages.
859
+ #
860
+ # `input` can be anything that YAML.load() accepts: String or IO.
861
+ #
862
+ def self.from_yaml: (untyped input) -> untyped
863
+
864
+ # <!--
865
+ # rdoc-file=lib/rubygems/specification.rb
866
+ # - latest_specs(prerelease = false)
867
+ # -->
868
+ # Return the latest specs, optionally including prerelease specs if `prerelease`
869
+ # is true.
870
+ #
871
+ def self.latest_specs: (?bool prerelease) -> untyped
872
+
873
+ # <!--
874
+ # rdoc-file=lib/rubygems/specification.rb
875
+ # - latest_spec_for(name)
876
+ # -->
877
+ # Return the latest installed spec for gem `name`.
878
+ #
879
+ def self.latest_spec_for: (untyped name) -> untyped
880
+
881
+ def self._latest_specs: (untyped specs, ?bool prerelease) -> untyped
882
+
883
+ # <!--
884
+ # rdoc-file=lib/rubygems/specification.rb
885
+ # - load(file)
886
+ # -->
887
+ # Loads Ruby format gemspec from `file`.
888
+ #
889
+ def self.load: (untyped file) -> (nil | untyped)
890
+
891
+ # <!--
892
+ # rdoc-file=lib/rubygems/specification.rb
893
+ # - non_nil_attributes()
894
+ # -->
895
+ # Specification attributes that must be non-nil
896
+ #
897
+ def self.non_nil_attributes: () -> untyped
898
+
899
+ # <!--
900
+ # rdoc-file=lib/rubygems/specification.rb
901
+ # - normalize_yaml_input(input)
902
+ # -->
903
+ # Make sure the YAML specification is properly formatted with dashes
904
+ #
905
+ def self.normalize_yaml_input: (untyped input) -> untyped
906
+
907
+ # <!--
908
+ # rdoc-file=lib/rubygems/specification.rb
909
+ # - outdated()
910
+ # -->
911
+ # Return a list of all outdated local gem names. This method is HEAVY as it
912
+ # must go fetch specifications from the server.
913
+ #
914
+ # Use outdated_and_latest_version if you wish to retrieve the latest remote
915
+ # version as well.
916
+ #
917
+ def self.outdated: () -> untyped
918
+
919
+ # <!--
920
+ # rdoc-file=lib/rubygems/specification.rb
921
+ # - outdated_and_latest_version() { |local_spec, latest_remote| ... }
922
+ # -->
923
+ # Enumerates the outdated local gems yielding the local specification and the
924
+ # latest remote version.
925
+ #
926
+ # This method may take some time to return as it must check each local gem
927
+ # against the server's index.
928
+ #
929
+ def self.outdated_and_latest_version: () ?{ (untyped) -> untyped } -> (untyped | nil)
930
+
931
+ # <!--
932
+ # rdoc-file=lib/rubygems/specification.rb
933
+ # - required_attribute?(name)
934
+ # -->
935
+ # Is `name` a required attribute?
936
+ #
937
+ def self.required_attribute?: (untyped name) -> untyped
938
+
939
+ # <!--
940
+ # rdoc-file=lib/rubygems/specification.rb
941
+ # - required_attributes()
942
+ # -->
943
+ # Required specification attributes
944
+ #
945
+ def self.required_attributes: () -> untyped
946
+
947
+ # <!--
948
+ # rdoc-file=lib/rubygems/specification.rb
949
+ # - reset()
950
+ # -->
951
+ # Reset the list of known specs, running pre and post reset hooks registered in
952
+ # Gem.
953
+ #
954
+ def self.reset: () -> untyped
955
+
956
+ def self.specification_record: () -> untyped
957
+
958
+ # <!--
959
+ # rdoc-file=lib/rubygems/specification.rb
960
+ # - unresolved_deps()
961
+ # -->
962
+ # DOC: This method needs documented or nodoc'd
963
+ #
964
+ def self.unresolved_deps: () -> untyped
965
+
966
+ # <!--
967
+ # rdoc-file=lib/rubygems/specification.rb
968
+ # - _load(str)
969
+ # -->
970
+ # Load custom marshal format, re-initializing defaults as needed
971
+ #
972
+ def self._load: (untyped str) -> untyped
973
+
974
+ def <=>: (untyped other) -> untyped
975
+
976
+ def ==: (untyped other) -> untyped
977
+
978
+ # <!--
979
+ # rdoc-file=lib/rubygems/specification.rb
980
+ # - _dump(limit)
981
+ # -->
982
+ # Dump only crucial instance variables.
983
+ #
984
+ def _dump: (untyped limit) -> untyped
985
+
986
+ # <!--
987
+ # rdoc-file=lib/rubygems/specification.rb
988
+ # - activate()
989
+ # -->
990
+ # Activate this spec, registering it as a loaded spec and adding it's lib paths
991
+ # to $LOAD_PATH. Returns true if the spec was activated, false if it was
992
+ # previously activated. Freaks out if there are conflicts upon activation.
993
+ #
994
+ def activate: () -> (false | true)
995
+
996
+ # <!--
997
+ # rdoc-file=lib/rubygems/specification.rb
998
+ # - activate_dependencies()
999
+ # -->
1000
+ # Activate all unambiguously resolved runtime dependencies of this spec. Add any
1001
+ # ambiguous dependencies to the unresolved list to be resolved later, as needed.
1002
+ #
1003
+ def activate_dependencies: () -> untyped
1004
+
1005
+ # <!--
1006
+ # rdoc-file=lib/rubygems/specification.rb
1007
+ # - abbreviate()
1008
+ # -->
1009
+ # Abbreviate the spec for downloading. Abbreviated specs are only used for
1010
+ # searching, downloading and related activities and do not need deployment
1011
+ # specific information (e.g. list of files). So we abbreviate the spec, making
1012
+ # it much smaller for quicker downloads.
1013
+ #
1014
+ def abbreviate: () -> untyped
1015
+
1016
+ # <!--
1017
+ # rdoc-file=lib/rubygems/specification.rb
1018
+ # - sanitize()
1019
+ # -->
1020
+ # Sanitize the descriptive fields in the spec. Sometimes non-ASCII characters
1021
+ # will garble the site index. Non-ASCII characters will be replaced by their
1022
+ # XML entity equivalent.
1023
+ #
1024
+ def sanitize: () -> untyped
1025
+
1026
+ # <!--
1027
+ # rdoc-file=lib/rubygems/specification.rb
1028
+ # - sanitize_string(string)
1029
+ # -->
1030
+ # Sanitize a single string.
1031
+ #
1032
+ def sanitize_string: (untyped string) -> untyped
1033
+
1034
+ # <!--
1035
+ # rdoc-file=lib/rubygems/specification.rb
1036
+ # - add_bindir(executables)
1037
+ # -->
1038
+ # Returns an array with bindir attached to each executable in the `executables`
1039
+ # list
1040
+ #
1041
+ def add_bindir: (untyped executables) -> untyped
1042
+
1043
+ private
1044
+
1045
+ # <!--
1046
+ # rdoc-file=lib/rubygems/specification.rb
1047
+ # - add_dependency_with_type(dependency, type, requirements)
1048
+ # -->
1049
+ # Adds a dependency on gem `dependency` with type `type` that requires
1050
+ # `requirements`. Valid types are currently `:runtime` and `:development`.
1051
+ #
1052
+ def add_dependency_with_type: (untyped dependency, untyped type, untyped requirements) -> untyped
1053
+
1054
+ public
1055
+
1056
+ # <!--
1057
+ # rdoc-file=lib/rubygems/specification.rb
1058
+ # - add_runtime_dependency(gem, *requirements)
1059
+ # -->
1060
+ # Adds a runtime dependency named `gem` with `requirements` to this gem.
1061
+ #
1062
+ # Usage:
1063
+ #
1064
+ # spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
1065
+ #
1066
+ alias add_runtime_dependency add_dependency
1067
+
1068
+ # <!--
1069
+ # rdoc-file=lib/rubygems/specification.rb
1070
+ # - add_self_to_load_path()
1071
+ # -->
1072
+ # Adds this spec's require paths to LOAD_PATH, in the proper location.
1073
+ #
1074
+ def add_self_to_load_path: () -> (nil | untyped)
1075
+
1076
+ # <!--
1077
+ # rdoc-file=lib/rubygems/specification.rb
1078
+ # - author()
1079
+ # -->
1080
+ # Singular reader for #authors. Returns the first author in the list
1081
+ #
1082
+ def author: () -> untyped
1083
+
1084
+ # <!--
1085
+ # rdoc-file=lib/rubygems/specification.rb
1086
+ # - authors()
1087
+ # -->
1088
+ # The list of author names who wrote this gem.
1089
+ #
1090
+ # spec.authors = ['Chad Fowler', 'Jim Weirich', 'Rich Kilmer']
1091
+ #
1092
+ def authors: () -> untyped
1093
+
1094
+ # <!--
1095
+ # rdoc-file=lib/rubygems/specification.rb
1096
+ # - bin_dir()
1097
+ # -->
1098
+ # Returns the full path to installed gem's bin directory.
1099
+ #
1100
+ # NOTE: do not confuse this with `bindir`, which is just 'bin', not a full path.
1101
+ #
1102
+ def bin_dir: () -> untyped
1103
+
1104
+ # <!--
1105
+ # rdoc-file=lib/rubygems/specification.rb
1106
+ # - bin_file(name)
1107
+ # -->
1108
+ # Returns the full path to an executable named `name` in this gem.
1109
+ #
1110
+ def bin_file: (untyped name) -> untyped
1111
+
1112
+ # <!--
1113
+ # rdoc-file=lib/rubygems/specification.rb
1114
+ # - build_args()
1115
+ # -->
1116
+ # Returns the build_args used to install the gem
1117
+ #
1118
+ def build_args: () -> (untyped | ::Array[untyped])
1119
+
1120
+ def build_extensions: () -> (nil | untyped)
1121
+
1122
+ # <!--
1123
+ # rdoc-file=lib/rubygems/specification.rb
1124
+ # - build_info_dir()
1125
+ # -->
1126
+ # Returns the full path to the build info directory
1127
+ #
1128
+ def build_info_dir: () -> untyped
1129
+
1130
+ # <!--
1131
+ # rdoc-file=lib/rubygems/specification.rb
1132
+ # - build_info_file()
1133
+ # -->
1134
+ # Returns the full path to the file containing the build information generated
1135
+ # when the gem was installed
1136
+ #
1137
+ def build_info_file: () -> untyped
1138
+
1139
+ # <!--
1140
+ # rdoc-file=lib/rubygems/specification.rb
1141
+ # - cache_dir()
1142
+ # -->
1143
+ # Returns the full path to the cache directory containing this spec's cached
1144
+ # gem.
1145
+ #
1146
+ def cache_dir: () -> untyped
1147
+
1148
+ # <!--
1149
+ # rdoc-file=lib/rubygems/specification.rb
1150
+ # - cache_file()
1151
+ # -->
1152
+ # Returns the full path to the cached gem for this spec.
1153
+ #
1154
+ def cache_file: () -> untyped
1155
+
1156
+ # <!--
1157
+ # rdoc-file=lib/rubygems/specification.rb
1158
+ # - conflicts()
1159
+ # -->
1160
+ # Return any possible conflicts against the currently loaded specs.
1161
+ #
1162
+ def conflicts: () -> untyped
1163
+
1164
+ def conficts_when_loaded_with?: (untyped list_of_specs) -> untyped
1165
+
1166
+ # <!--
1167
+ # rdoc-file=lib/rubygems/specification.rb
1168
+ # - has_conflicts?()
1169
+ # -->
1170
+ # Return true if there are possible conflicts against the currently loaded
1171
+ # specs.
1172
+ #
1173
+ def has_conflicts?: () -> untyped
1174
+
1175
+ # <!--
1176
+ # rdoc-file=lib/rubygems/specification.rb
1177
+ # - date()
1178
+ # -->
1179
+ # The date this gem was created.
1180
+ #
1181
+ # If SOURCE_DATE_EPOCH is set as an environment variable, use that to support
1182
+ # reproducible builds; otherwise, default to the current UTC date.
1183
+ #
1184
+ # Details on SOURCE_DATE_EPOCH:
1185
+ # https://reproducible-builds.org/specs/source-date-epoch/
1186
+ #
1187
+ def date: () -> untyped
1188
+
1189
+ DateLike: untyped
1190
+
1191
+ def self.===: (untyped obj) -> untyped
1192
+
1193
+ DateTimeFormat: ::Regexp
1194
+
1195
+ # <!--
1196
+ # rdoc-file=lib/rubygems/specification.rb
1197
+ # - date=(date)
1198
+ # -->
1199
+ # The date this gem was created
1200
+ #
1201
+ # DO NOT set this, it is set automatically when the gem is packaged.
1202
+ #
1203
+ def date=: (untyped date) -> untyped
1204
+
1205
+ def default_executable: () -> untyped
1206
+
1207
+ # <!--
1208
+ # rdoc-file=lib/rubygems/specification.rb
1209
+ # - default_value(name)
1210
+ # -->
1211
+ # The default value for specification attribute `name`
1212
+ #
1213
+ def default_value: (untyped name) -> untyped
1214
+
1215
+ # <!--
1216
+ # rdoc-file=lib/rubygems/specification.rb
1217
+ # - dependencies()
1218
+ # -->
1219
+ # A list of Gem::Dependency objects this gem depends on.
1220
+ #
1221
+ # Use #add_dependency or #add_development_dependency to add dependencies to a
1222
+ # gem.
1223
+ #
1224
+ def dependencies: () -> Array[Gem::Dependency]
1225
+
1226
+ # <!--
1227
+ # rdoc-file=lib/rubygems/specification.rb
1228
+ # - dependent_gems(check_dev=true)
1229
+ # -->
1230
+ # Return a list of all gems that have a dependency on this gemspec. The list is
1231
+ # structured with entries that conform to:
1232
+ #
1233
+ # [depending_gem, dependency, [list_of_gems_that_satisfy_dependency]]
1234
+ #
1235
+ def dependent_gems: (?bool check_dev) -> untyped
1236
+
1237
+ # <!--
1238
+ # rdoc-file=lib/rubygems/specification.rb
1239
+ # - dependent_specs()
1240
+ # -->
1241
+ # Returns all specs that matches this spec's runtime dependencies.
1242
+ #
1243
+ def dependent_specs: () -> untyped
1244
+
1245
+ # <!--
1246
+ # rdoc-file=lib/rubygems/specification.rb
1247
+ # - description=(str)
1248
+ # -->
1249
+ # A detailed description of this gem. See also #summary
1250
+ #
1251
+ def description=: (untyped str) -> untyped
1252
+
1253
+ # <!--
1254
+ # rdoc-file=lib/rubygems/specification.rb
1255
+ # - development_dependencies()
1256
+ # -->
1257
+ # List of dependencies that are used for development
1258
+ #
1259
+ def development_dependencies: () -> Array[Gem::Dependency]
1260
+
1261
+ # <!--
1262
+ # rdoc-file=lib/rubygems/specification.rb
1263
+ # - doc_dir(type = nil)
1264
+ # -->
1265
+ # Returns the full path to this spec's documentation directory. If `type` is
1266
+ # given it will be appended to the end. For example:
1267
+ #
1268
+ # spec.doc_dir # => "/path/to/gem_repo/doc/a-1"
1269
+ #
1270
+ # spec.doc_dir 'ri' # => "/path/to/gem_repo/doc/a-1/ri"
1271
+ #
1272
+ def doc_dir: (?untyped? type) -> untyped
1273
+
1274
+ def encode_with: (untyped coder) -> untyped
1275
+
1276
+ def eql?: (untyped other) -> untyped
1277
+
1278
+ # <!--
1279
+ # rdoc-file=lib/rubygems/specification.rb
1280
+ # - executable()
1281
+ # -->
1282
+ # Singular accessor for #executables
1283
+ #
1284
+ def executable: () -> untyped
1285
+
1286
+ # <!--
1287
+ # rdoc-file=lib/rubygems/specification.rb
1288
+ # - executable=(o)
1289
+ # -->
1290
+ # Singular accessor for #executables
1291
+ #
1292
+ def executable=: (untyped o) -> untyped
1293
+
1294
+ # <!--
1295
+ # rdoc-file=lib/rubygems/specification.rb
1296
+ # - executables=(value)
1297
+ # -->
1298
+ # Sets executables to `value`, ensuring it is an array.
1299
+ #
1300
+ def executables=: (untyped value) -> untyped
1301
+
1302
+ # <!--
1303
+ # rdoc-file=lib/rubygems/specification.rb
1304
+ # - extensions=(extensions)
1305
+ # -->
1306
+ # Sets extensions to `extensions`, ensuring it is an array.
1307
+ #
1308
+ def extensions=: (untyped extensions) -> untyped
1309
+
1310
+ # <!--
1311
+ # rdoc-file=lib/rubygems/specification.rb
1312
+ # - extra_rdoc_files=(files)
1313
+ # -->
1314
+ # Sets extra_rdoc_files to `files`, ensuring it is an array.
1315
+ #
1316
+ def extra_rdoc_files=: (untyped files) -> untyped
1317
+
1318
+ # <!--
1319
+ # rdoc-file=lib/rubygems/specification.rb
1320
+ # - file_name()
1321
+ # -->
1322
+ # The default (generated) file name of the gem. See also #spec_name.
1323
+ #
1324
+ # spec.file_name # => "example-1.0.gem"
1325
+ #
1326
+ def file_name: () -> ::String
1327
+
1328
+ # <!--
1329
+ # rdoc-file=lib/rubygems/specification.rb
1330
+ # - files=(files)
1331
+ # -->
1332
+ # Sets files to `files`, ensuring it is an array.
1333
+ #
1334
+ def files=: (untyped files) -> untyped
1335
+
1336
+ private
1337
+
1338
+ # <!--
1339
+ # rdoc-file=lib/rubygems/specification.rb
1340
+ # - find_all_satisfiers(dep) { |spec| ... }
1341
+ # -->
1342
+ # Finds all gems that satisfy `dep`
1343
+ #
1344
+ def find_all_satisfiers: (untyped dep) { (untyped) -> untyped } -> untyped
1345
+
1346
+ public
1347
+
1348
+ # <!--
1349
+ # rdoc-file=lib/rubygems/specification.rb
1350
+ # - for_cache()
1351
+ # -->
1352
+ # Creates a duplicate spec without large blobs that aren't used at runtime.
1353
+ #
1354
+ def for_cache: () -> untyped
1355
+
1356
+ # <!--
1357
+ # rdoc-file=lib/rubygems/specification.rb
1358
+ # - full_name()
1359
+ # -->
1360
+ #
1361
+ def full_name: () -> untyped
1362
+
1363
+ def gem_dir: () -> untyped
1364
+
1365
+ # <!--
1366
+ # rdoc-file=lib/rubygems/specification.rb
1367
+ # - gems_dir()
1368
+ # -->
1369
+ #
1370
+ def gems_dir: () -> untyped
1371
+
1372
+ def has_rdoc: () -> true
1373
+
1374
+ def has_rdoc=: (untyped ignored) -> untyped
1375
+
1376
+ alias has_rdoc? has_rdoc
1377
+
1378
+ def has_unit_tests?: () -> untyped
1379
+
1380
+ # :stopdoc:
1381
+ alias has_test_suite? has_unit_tests?
1382
+
1383
+ def hash: () -> untyped
1384
+
1385
+ def init_with: (untyped coder) -> untyped
1386
+
1387
+ # <!--
1388
+ # rdoc-file=lib/rubygems/specification.rb
1389
+ # - new(name = nil, version = nil) { |self| ... }
1390
+ # -->
1391
+ # Specification constructor. Assigns the default values to the attributes and
1392
+ # yields itself for further initialization. Optionally takes `name` and
1393
+ # `version`.
1394
+ #
1395
+ def initialize: (?untyped? name, ?untyped? version) ?{ (untyped) -> untyped } -> void
1396
+
1397
+ # <!--
1398
+ # rdoc-file=lib/rubygems/specification.rb
1399
+ # - initialize_copy(other_spec)
1400
+ # -->
1401
+ # Duplicates array_attributes from `other_spec` so state isn't shared.
1402
+ #
1403
+ def initialize_copy: (untyped other_spec) -> untyped
1404
+
1405
+ # <!--
1406
+ # rdoc-file=lib/rubygems/specification.rb
1407
+ # - base_dir()
1408
+ # -->
1409
+ #
1410
+ def base_dir: () -> untyped
1411
+
1412
+ private
1413
+
1414
+ # <!--
1415
+ # rdoc-file=lib/rubygems/specification.rb
1416
+ # - invalidate_memoized_attributes()
1417
+ # -->
1418
+ # Expire memoized instance variables that can incorrectly generate, replace or
1419
+ # miss files due changes in certain attributes used to compute them.
1420
+ #
1421
+ def invalidate_memoized_attributes: () -> untyped
1422
+
1423
+ public
1424
+
1425
+ def inspect: () -> (untyped | ::String)
1426
+
1427
+ # <!--
1428
+ # rdoc-file=lib/rubygems/specification.rb
1429
+ # - lib_files()
1430
+ # -->
1431
+ # Files in the Gem under one of the require_paths
1432
+ #
1433
+ def lib_files: () -> untyped
1434
+
1435
+ # <!--
1436
+ # rdoc-file=lib/rubygems/specification.rb
1437
+ # - license()
1438
+ # -->
1439
+ # Singular accessor for #licenses
1440
+ #
1441
+ def license: () -> untyped
1442
+
1443
+ # <!--
1444
+ # rdoc-file=lib/rubygems/specification.rb
1445
+ # - licenses()
1446
+ # -->
1447
+ # Plural accessor for setting licenses
1448
+ #
1449
+ # See #license= for details
1450
+ #
1451
+ def licenses: () -> untyped
1452
+
1453
+ def internal_init: () -> untyped
1454
+
1455
+ def method_missing: (untyped sym, *untyped a) { (?) -> untyped } -> (nil | untyped)
1456
+
1457
+ # <!--
1458
+ # rdoc-file=lib/rubygems/specification.rb
1459
+ # - missing_extensions?()
1460
+ # -->
1461
+ # Is this specification missing its extensions? When this returns true you
1462
+ # probably want to build_extensions
1463
+ #
1464
+ def missing_extensions?: () -> (false | true)
1465
+
1466
+ # <!--
1467
+ # rdoc-file=lib/rubygems/specification.rb
1468
+ # - normalize()
1469
+ # -->
1470
+ # Normalize the list of files so that:
1471
+ # * All file lists have redundancies removed.
1472
+ # * Files referenced in the extra_rdoc_files are included in the package file
1473
+ # list.
1474
+ #
1475
+ def normalize: () -> untyped
1476
+
1477
+ # <!--
1478
+ # rdoc-file=lib/rubygems/specification.rb
1479
+ # - name_tuple()
1480
+ # -->
1481
+ # Return a NameTuple that represents this Specification
1482
+ #
1483
+ def name_tuple: () -> untyped
1484
+
1485
+ def original_name: () -> ::String
1486
+
1487
+ def original_platform: () -> untyped
1488
+
1489
+ # <!--
1490
+ # rdoc-file=lib/rubygems/specification.rb
1491
+ # - platform()
1492
+ # -->
1493
+ # The platform this gem runs on. See Gem::Platform for details.
1494
+ #
1495
+ def platform: () -> untyped
1496
+
1497
+ def pretty_print: (untyped q) -> untyped
1498
+
1499
+ private
1500
+
1501
+ def check_version_conflict: (untyped other) -> (nil | untyped)
1502
+
1503
+ public
1504
+
1505
+ def raise_if_conflicts: () -> (untyped | nil)
1506
+
1507
+ # <!--
1508
+ # rdoc-file=lib/rubygems/specification.rb
1509
+ # - rdoc_options=(options)
1510
+ # -->
1511
+ # Sets rdoc_options to `value`, ensuring it is an array.
1512
+ #
1513
+ def rdoc_options=: (untyped options) -> untyped
1514
+
1515
+ # <!--
1516
+ # rdoc-file=lib/rubygems/specification.rb
1517
+ # - require_path()
1518
+ # -->
1519
+ # Singular accessor for #require_paths
1520
+ #
1521
+ def require_path: () -> untyped
1522
+
1523
+ # <!--
1524
+ # rdoc-file=lib/rubygems/specification.rb
1525
+ # - require_path=(path)
1526
+ # -->
1527
+ # Singular accessor for #require_paths
1528
+ #
1529
+ def require_path=: (untyped path) -> untyped
1530
+
1531
+ # <!--
1532
+ # rdoc-file=lib/rubygems/specification.rb
1533
+ # - requirements=(req)
1534
+ # -->
1535
+ # Set requirements to `req`, ensuring it is an array.
1536
+ #
1537
+ def requirements=: (untyped req) -> untyped
1538
+
1539
+ def respond_to_missing?: (untyped m, ?bool include_private) -> false
1540
+
1541
+ # <!--
1542
+ # rdoc-file=lib/rubygems/specification.rb
1543
+ # - ri_dir()
1544
+ # -->
1545
+ # Returns the full path to this spec's ri directory.
1546
+ #
1547
+ def ri_dir: () -> untyped
1548
+
1549
+ private
1550
+
1551
+ # <!--
1552
+ # rdoc-file=lib/rubygems/specification.rb
1553
+ # - ruby_code(obj)
1554
+ # -->
1555
+ # Return a string containing a Ruby code representation of the given object.
1556
+ #
1557
+ def ruby_code: (untyped obj) -> untyped
1558
+
1559
+ public
1560
+
1561
+ # <!--
1562
+ # rdoc-file=lib/rubygems/specification.rb
1563
+ # - runtime_dependencies()
1564
+ # -->
1565
+ # List of dependencies that will automatically be activated at runtime.
1566
+ #
1567
+ def runtime_dependencies: () -> untyped
1568
+
1569
+ private
1570
+
1571
+ # <!--
1572
+ # rdoc-file=lib/rubygems/specification.rb
1573
+ # - same_attributes?(spec)
1574
+ # -->
1575
+ # True if this gem has the same attributes as `other`.
1576
+ #
1577
+ def same_attributes?: (untyped spec) -> untyped
1578
+
1579
+ public
1580
+
1581
+ # <!--
1582
+ # rdoc-file=lib/rubygems/specification.rb
1583
+ # - satisfies_requirement?(dependency)
1584
+ # -->
1585
+ # Checks if this specification meets the requirement of `dependency`.
1586
+ #
1587
+ def satisfies_requirement?: (untyped dependency) -> untyped
1588
+
1589
+ # <!--
1590
+ # rdoc-file=lib/rubygems/specification.rb
1591
+ # - sort_obj()
1592
+ # -->
1593
+ # Returns an object you can use to sort specifications in #sort_by.
1594
+ #
1595
+ def sort_obj: () -> ::Array[untyped]
1596
+
1597
+ def source: () -> untyped
1598
+
1599
+ # <!--
1600
+ # rdoc-file=lib/rubygems/specification.rb
1601
+ # - spec_dir()
1602
+ # -->
1603
+ # Returns the full path to the directory containing this spec's gemspec file.
1604
+ # eg: /usr/local/lib/ruby/gems/1.8/specifications
1605
+ #
1606
+ def spec_dir: () -> untyped
1607
+
1608
+ # <!--
1609
+ # rdoc-file=lib/rubygems/specification.rb
1610
+ # - spec_file()
1611
+ # -->
1612
+ # Returns the full path to this spec's gemspec file. eg:
1613
+ # /usr/local/lib/ruby/gems/1.8/specifications/mygem-1.0.gemspec
1614
+ #
1615
+ def spec_file: () -> untyped
1616
+
1617
+ # <!--
1618
+ # rdoc-file=lib/rubygems/specification.rb
1619
+ # - spec_name()
1620
+ # -->
1621
+ # The default name of the gemspec. See also #file_name
1622
+ #
1623
+ # spec.spec_name # => "example-1.0.gemspec"
1624
+ #
1625
+ def spec_name: () -> ::String
1626
+
1627
+ # <!--
1628
+ # rdoc-file=lib/rubygems/specification.rb
1629
+ # - summary=(str)
1630
+ # -->
1631
+ # A short summary of this gem's description.
1632
+ #
1633
+ def summary=: (untyped str) -> untyped
1634
+
1635
+ def test_file: () -> untyped
1636
+
1637
+ def test_file=: (untyped file) -> untyped
1638
+
1639
+ def test_files: () -> untyped
1640
+
1641
+ # <!--
1642
+ # rdoc-file=lib/rubygems/specification.rb
1643
+ # - to_ruby()
1644
+ # -->
1645
+ # Returns a Ruby code representation of this specification, such that it can be
1646
+ # eval'ed and reconstruct the same specification later. Attributes that still
1647
+ # have their default values are omitted.
1648
+ #
1649
+ def to_ruby: () -> untyped
1650
+
1651
+ # <!--
1652
+ # rdoc-file=lib/rubygems/specification.rb
1653
+ # - to_ruby_for_cache()
1654
+ # -->
1655
+ # Returns a Ruby lighter-weight code representation of this specification, used
1656
+ # for indexing only.
1657
+ #
1658
+ # See #to_ruby.
1659
+ #
1660
+ def to_ruby_for_cache: () -> untyped
1661
+
1662
+ def to_s: () -> ::String
1663
+
1664
+ # <!--
1665
+ # rdoc-file=lib/rubygems/specification.rb
1666
+ # - to_spec()
1667
+ # -->
1668
+ # Returns self
1669
+ #
1670
+ def to_spec: () -> self
1671
+
1672
+ def to_yaml: (?::Hash[untyped, untyped] opts) -> untyped
1673
+
1674
+ # <!--
1675
+ # rdoc-file=lib/rubygems/specification.rb
1676
+ # - traverse(trail = [], visited = {}, &block)
1677
+ # -->
1678
+ # Recursively walk dependencies of this spec, executing the `block` for each
1679
+ # hop.
1680
+ #
1681
+ def traverse: (?untyped trail, ?::Hash[untyped, untyped] visited) { (?) -> untyped } -> untyped
1682
+
1683
+ # <!--
1684
+ # rdoc-file=lib/rubygems/specification.rb
1685
+ # - validate(packaging = true, strict = false)
1686
+ # -->
1687
+ # Checks that the specification contains all required fields, and does a very
1688
+ # basic sanity check.
1689
+ #
1690
+ # Raises InvalidSpecificationException if the spec does not pass the checks..
1691
+ #
1692
+ def validate: (?bool packaging, ?bool strict) -> untyped
1693
+
1694
+ # <!--
1695
+ # rdoc-file=lib/rubygems/specification.rb
1696
+ # - keep_only_files_and_directories()
1697
+ # -->
1698
+ #
1699
+ def keep_only_files_and_directories: () -> untyped
1700
+
1701
+ def validate_for_resolution: () -> untyped
1702
+
1703
+ # <!--
1704
+ # rdoc-file=lib/rubygems/specification.rb
1705
+ # - validate_metadata()
1706
+ # -->
1707
+ #
1708
+ def validate_metadata: () -> untyped
1709
+
1710
+ # <!--
1711
+ # rdoc-file=lib/rubygems/specification.rb
1712
+ # - validate_dependencies()
1713
+ # -->
1714
+ #
1715
+ def validate_dependencies: () -> untyped
1716
+
1717
+ # <!--
1718
+ # rdoc-file=lib/rubygems/specification.rb
1719
+ # - validate_permissions()
1720
+ # -->
1721
+ #
1722
+ def validate_permissions: () -> untyped
1723
+
1724
+ # <!--
1725
+ # rdoc-file=lib/rubygems/specification.rb
1726
+ # - version=(version)
1727
+ # -->
1728
+ # Set the version to `version`, potentially also setting
1729
+ # required_rubygems_version if `version` indicates it is a prerelease.
1730
+ #
1731
+ def version=: (untyped version) -> (nil | untyped)
1732
+
1733
+ # <!--
1734
+ # rdoc-file=lib/rubygems/specification.rb
1735
+ # - stubbed?()
1736
+ # -->
1737
+ #
1738
+ def stubbed?: () -> false
1739
+
1740
+ def yaml_initialize: (untyped tag, untyped vals) -> untyped
1741
+
1742
+ # <!--
1743
+ # rdoc-file=lib/rubygems/specification.rb
1744
+ # - reset_nil_attributes_to_default()
1745
+ # -->
1746
+ # Reset nil attributes to their default values to make the spec valid
1747
+ #
1748
+ def reset_nil_attributes_to_default: () -> nil
1749
+
1750
+ def flatten_require_paths: () -> (nil | untyped)
1751
+
1752
+ def raw_require_paths: () -> untyped
1753
+ end