rbs 3.6.1 → 3.9.5
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.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +34 -10
- data/.github/workflows/windows.yml +20 -3
- data/.gitignore +1 -0
- data/.rubocop.yml +26 -1
- data/CHANGELOG.md +241 -0
- data/Rakefile +54 -4
- data/config.yml +317 -0
- data/core/array.rbs +1756 -1591
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +166 -94
- data/core/data.rbs +2 -2
- data/core/dir.rbs +2 -18
- data/core/encoding.rbs +12 -32
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +14 -4
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +6 -2
- data/core/exception.rbs +342 -167
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +26 -75
- data/core/float.rbs +125 -72
- data/core/gc.rbs +158 -42
- data/core/hash.rbs +122 -143
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +108 -151
- data/core/kernel.rbs +341 -209
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/method.rbs +2 -2
- data/core/module.rbs +32 -27
- data/core/nil_class.rbs +2 -2
- data/core/numeric.rbs +101 -104
- data/core/object.rbs +1 -5
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +82 -14
- data/core/process.rbs +110 -58
- data/core/ractor.rbs +57 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +237 -36
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +10 -56
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +3 -6
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +3 -6
- data/core/rubygems/version.rbs +8 -8
- data/core/set.rbs +4 -16
- data/core/string.rbs +271 -264
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +131 -50
- data/core/trace_point.rbs +124 -113
- data/core/true_class.rbs +0 -1
- data/core/unbound_method.rbs +1 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +17 -10
- data/ext/rbs_extension/extconf.rb +11 -0
- data/ext/rbs_extension/location.c +61 -29
- data/ext/rbs_extension/location.h +4 -3
- data/ext/rbs_extension/main.c +23 -1
- data/ext/rbs_extension/parser.c +506 -517
- data/ext/rbs_extension/parserstate.c +109 -30
- data/ext/rbs_extension/parserstate.h +6 -4
- data/ext/rbs_extension/rbs_extension.h +1 -10
- data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/ast/declarations.rb +9 -4
- data/lib/rbs/ast/directives.rb +10 -0
- data/lib/rbs/ast/members.rb +2 -0
- data/lib/rbs/ast/type_param.rb +2 -12
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +2 -1
- data/lib/rbs/cli.rb +16 -16
- data/lib/rbs/collection/config/lockfile_generator.rb +58 -8
- data/lib/rbs/collection/config.rb +5 -3
- data/lib/rbs/collection/sources/rubygems.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/definition.rb +51 -34
- data/lib/rbs/definition_builder/ancestor_builder.rb +5 -3
- data/lib/rbs/definition_builder.rb +83 -24
- data/lib/rbs/environment.rb +33 -18
- data/lib/rbs/environment_loader.rb +6 -1
- data/lib/rbs/errors.rb +24 -0
- data/lib/rbs/locator.rb +2 -0
- data/lib/rbs/method_type.rb +2 -0
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +40 -3
- data/lib/rbs/prototype/rb.rb +20 -12
- data/lib/rbs/prototype/rbi.rb +11 -6
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +7 -5
- data/lib/rbs/subtractor.rb +3 -3
- data/lib/rbs/test/hook.rb +47 -42
- data/lib/rbs/test/type_check.rb +7 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/types.rb +63 -14
- data/lib/rbs/unit_test/spy.rb +4 -2
- data/lib/rbs/unit_test/type_assertions.rb +19 -13
- data/lib/rbs/unit_test/with_aliases.rb +3 -1
- data/lib/rbs/validator.rb +7 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +10 -5
- data/lib/rbs.rb +1 -0
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +6 -2
- data/sig/ancestor_graph.rbs +5 -5
- data/sig/annotate/rdoc_source.rbs +2 -0
- data/sig/cli.rbs +2 -0
- data/sig/collection/config/lockfile_generator.rbs +9 -1
- data/sig/declarations.rbs +10 -3
- data/sig/definition.rbs +80 -12
- data/sig/definition_builder.rbs +18 -4
- data/sig/directives.rbs +17 -1
- data/sig/environment.rbs +3 -1
- data/sig/errors.rbs +19 -0
- data/sig/namespace.rbs +2 -3
- data/sig/parser.rbs +5 -1
- data/sig/prototype/rb.rbs +1 -1
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/subtractor.rbs +1 -1
- data/sig/test/type_check.rbs +2 -2
- data/sig/type_alias_dependency.rbs +2 -2
- data/sig/type_alias_regularity.rbs +6 -6
- data/sig/type_param.rbs +4 -4
- data/sig/typename.rbs +8 -5
- data/sig/types.rbs +1 -1
- data/sig/unit_test/spy.rbs +2 -0
- data/sig/unit_test/type_assertions.rbs +2 -0
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +6 -2
- data/sig/vendorer.rbs +1 -1
- data/sig/writer.rbs +1 -1
- data/{ext/rbs_extension → src}/constants.c +35 -36
- data/src/ruby_objs.c +799 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +60 -3
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/csv/0/manifest.yaml +1 -0
- data/stdlib/date/0/date.rbs +27 -42
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -6
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +16 -4
- data/stdlib/json/0/json.rbs +107 -120
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/minitest/0/kernel.rbs +2 -2
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
- data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
- data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/mock.rbs +9 -5
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
- data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
- data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
- data/stdlib/minitest/0/minitest/spec.rbs +1 -1
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +1 -1
- data/stdlib/minitest/0/minitest/test.rbs +7 -14
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit.rbs +1 -2
- data/stdlib/minitest/0/minitest.rbs +41 -892
- data/stdlib/monitor/0/monitor.rbs +13 -4
- data/stdlib/net-http/0/net-http.rbs +42 -109
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/manifest.yaml +1 -0
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/manifest.yaml +1 -0
- data/stdlib/openssl/0/openssl.rbs +235 -143
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +13 -8
- data/stdlib/resolv/0/resolv.rbs +21 -12
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +7 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +1 -2
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +32 -27
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +36 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/socket/0/unix_socket.rbs +4 -2
- data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +1 -1
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +28 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +17 -13
- data/ext/rbs_extension/ruby_objs.c +0 -602
- data/ext/rbs_extension/ruby_objs.h +0 -51
- data/stdlib/minitest/0/manifest.yaml +0 -2
@@ -1,16 +1,58 @@
|
|
1
1
|
# <!-- rdoc-file=lib/tempfile.rb -->
|
2
|
-
# A utility class for managing temporary files.
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
2
|
+
# A utility class for managing temporary files.
|
3
|
+
#
|
4
|
+
# There are two kind of methods of creating a temporary file:
|
5
|
+
#
|
6
|
+
# * Tempfile.create (recommended)
|
7
|
+
# * Tempfile.new and Tempfile.open (mostly for backward compatibility, not
|
8
|
+
# recommended)
|
9
|
+
#
|
10
|
+
# Tempfile.create creates a usual File object. The timing of file deletion is
|
11
|
+
# predictable. Also, it supports open-and-unlink technique which removes the
|
12
|
+
# temporary file immediately after creation.
|
13
|
+
#
|
14
|
+
# Tempfile.new and Tempfile.open creates a Tempfile object. The created file is
|
15
|
+
# removed by the GC (finalizer). The timing of file deletion is not predictable.
|
9
16
|
#
|
10
17
|
# ## Synopsis
|
11
18
|
#
|
12
19
|
# require 'tempfile'
|
13
20
|
#
|
21
|
+
# # Tempfile.create with a block
|
22
|
+
# # The filename are choosen automatically.
|
23
|
+
# # (You can specify the prefix and suffix of the filename by an optional argument.)
|
24
|
+
# Tempfile.create {|f|
|
25
|
+
# f.puts "foo"
|
26
|
+
# f.rewind
|
27
|
+
# f.read # => "foo\n"
|
28
|
+
# } # The file is removed at block exit.
|
29
|
+
#
|
30
|
+
# # Tempfile.create without a block
|
31
|
+
# # You need to unlink the file in non-block form.
|
32
|
+
# f = Tempfile.create
|
33
|
+
# f.puts "foo"
|
34
|
+
# f.close
|
35
|
+
# File.unlink(f.path) # You need to unlink the file.
|
36
|
+
#
|
37
|
+
# # Tempfile.create(anonymous: true) without a block
|
38
|
+
# f = Tempfile.create(anonymous: true)
|
39
|
+
# # The file is already removed because anonymous.
|
40
|
+
# f.path # => "/tmp/" (no filename since no file)
|
41
|
+
# f.puts "foo"
|
42
|
+
# f.rewind
|
43
|
+
# f.read # => "foo\n"
|
44
|
+
# f.close
|
45
|
+
#
|
46
|
+
# # Tempfile.create(anonymous: true) with a block
|
47
|
+
# Tempfile.create(anonymous: true) {|f|
|
48
|
+
# # The file is already removed because anonymous.
|
49
|
+
# f.path # => "/tmp/" (no filename since no file)
|
50
|
+
# f.puts "foo"
|
51
|
+
# f.rewind
|
52
|
+
# f.read # => "foo\n"
|
53
|
+
# }
|
54
|
+
#
|
55
|
+
# # Not recommended: Tempfile.new without a block
|
14
56
|
# file = Tempfile.new('foo')
|
15
57
|
# file.path # => A unique filename in the OS's temp directory,
|
16
58
|
# # e.g.: "/tmp/foo.24722.0"
|
@@ -21,7 +63,27 @@
|
|
21
63
|
# file.close
|
22
64
|
# file.unlink # deletes the temp file
|
23
65
|
#
|
24
|
-
# ##
|
66
|
+
# ## About Tempfile.new and Tempfile.open
|
67
|
+
#
|
68
|
+
# This section does not apply to Tempfile.create because it returns a File
|
69
|
+
# object (not a Tempfile object).
|
70
|
+
#
|
71
|
+
# When you create a Tempfile object, it will create a temporary file with a
|
72
|
+
# unique filename. A Tempfile objects behaves just like a File object, and you
|
73
|
+
# can perform all the usual file operations on it: reading data, writing data,
|
74
|
+
# changing its permissions, etc. So although this class does not explicitly
|
75
|
+
# document all instance methods supported by File, you can in fact call any File
|
76
|
+
# instance method on a Tempfile object.
|
77
|
+
#
|
78
|
+
# A Tempfile object has a finalizer to remove the temporary file. This means
|
79
|
+
# that the temporary file is removed via GC. This can cause several problems:
|
80
|
+
#
|
81
|
+
# * Long GC intervals and conservative GC can accumulate temporary files that
|
82
|
+
# are not removed.
|
83
|
+
# * Temporary files are not removed if Ruby exits abnormally (such as SIGKILL,
|
84
|
+
# SEGV).
|
85
|
+
#
|
86
|
+
# There are legacy good practices for Tempfile.new and Tempfile.open as follows.
|
25
87
|
#
|
26
88
|
# ### Explicit close
|
27
89
|
#
|
@@ -61,12 +123,17 @@
|
|
61
123
|
# this if you do not want any other processes to be able to read from or write
|
62
124
|
# to the Tempfile, and you do not need to know the Tempfile's filename either.
|
63
125
|
#
|
126
|
+
# Also, this guarantees the temporary file is removed even if Ruby exits
|
127
|
+
# abnormally. The OS reclaims the storage for the temporary file when the file
|
128
|
+
# is closed or the Ruby process exits (normally or abnormally).
|
129
|
+
#
|
64
130
|
# For example, a practical use case for unlink-after-creation would be this: you
|
65
131
|
# need a large byte buffer that's too large to comfortably fit in RAM, e.g. when
|
66
132
|
# you're writing a web server and you want to buffer the client's file upload
|
67
133
|
# data.
|
68
134
|
#
|
69
|
-
#
|
135
|
+
# `Tempfile.create(anonymous: true)` supports this behavior. It also works on
|
136
|
+
# Windows.
|
70
137
|
#
|
71
138
|
# ## Minor notes
|
72
139
|
#
|
@@ -80,7 +147,7 @@
|
|
80
147
|
class Tempfile < File
|
81
148
|
# <!--
|
82
149
|
# rdoc-file=lib/tempfile.rb
|
83
|
-
# - create(basename="", tmpdir=nil, mode: 0, **options)
|
150
|
+
# - create(basename="", tmpdir=nil, mode: 0, anonymous: false, **options, &block)
|
84
151
|
# -->
|
85
152
|
# Creates a file in the underlying file system; returns a new File object based
|
86
153
|
# on that file.
|
@@ -94,9 +161,9 @@ class Tempfile < File
|
|
94
161
|
# Permissions](rdoc-ref:File@File+Permissions).
|
95
162
|
# * Mode is `'w+'` (read/write mode, positioned at the end).
|
96
163
|
#
|
97
|
-
#
|
98
|
-
#
|
99
|
-
#
|
164
|
+
# The temporary file removal depends on the keyword argument `anonymous` and
|
165
|
+
# whether a block is given or not. See the description about the `anonymous`
|
166
|
+
# keyword argument later.
|
100
167
|
#
|
101
168
|
# Example:
|
102
169
|
#
|
@@ -104,11 +171,36 @@ class Tempfile < File
|
|
104
171
|
# f.class # => File
|
105
172
|
# f.path # => "/tmp/20220505-9795-17ky6f6"
|
106
173
|
# f.stat.mode.to_s(8) # => "100600"
|
174
|
+
# f.close
|
107
175
|
# File.exist?(f.path) # => true
|
108
176
|
# File.unlink(f.path)
|
109
177
|
# File.exist?(f.path) # => false
|
110
178
|
#
|
111
|
-
#
|
179
|
+
# Tempfile.create {|f|
|
180
|
+
# f.puts "foo"
|
181
|
+
# f.rewind
|
182
|
+
# f.read # => "foo\n"
|
183
|
+
# f.path # => "/tmp/20240524-380207-oma0ny"
|
184
|
+
# File.exist?(f.path) # => true
|
185
|
+
# } # The file is removed at block exit.
|
186
|
+
#
|
187
|
+
# f = Tempfile.create(anonymous: true)
|
188
|
+
# # The file is already removed because anonymous
|
189
|
+
# f.path # => "/tmp/" (no filename since no file)
|
190
|
+
# f.puts "foo"
|
191
|
+
# f.rewind
|
192
|
+
# f.read # => "foo\n"
|
193
|
+
# f.close
|
194
|
+
#
|
195
|
+
# Tempfile.create(anonymous: true) {|f|
|
196
|
+
# # The file is already removed because anonymous
|
197
|
+
# f.path # => "/tmp/" (no filename since no file)
|
198
|
+
# f.puts "foo"
|
199
|
+
# f.rewind
|
200
|
+
# f.read # => "foo\n"
|
201
|
+
# }
|
202
|
+
#
|
203
|
+
# The argument `basename`, if given, may be one of the following:
|
112
204
|
#
|
113
205
|
# * A string: the generated filename begins with `basename`:
|
114
206
|
#
|
@@ -119,31 +211,50 @@ class Tempfile < File
|
|
119
211
|
#
|
120
212
|
# Tempfile.create(%w/foo .jpg/) # => #<File:/tmp/foo20220505-17839-tnjchh.jpg>
|
121
213
|
#
|
122
|
-
#
|
123
|
-
# With arguments `basename` and `tmpdir`, the file is created in directory
|
214
|
+
# With arguments `basename` and `tmpdir`, the file is created in the directory
|
124
215
|
# `tmpdir`:
|
125
216
|
#
|
126
217
|
# Tempfile.create('foo', '.') # => #<File:./foo20220505-9795-1emu6g8>
|
127
218
|
#
|
128
|
-
# Keyword arguments `mode` and `options` are passed directly to method
|
219
|
+
# Keyword arguments `mode` and `options` are passed directly to the method
|
129
220
|
# [File.open](rdoc-ref:File.open):
|
130
221
|
#
|
131
|
-
# * The value given
|
132
|
-
#
|
222
|
+
# * The value given for `mode` must be an integer and may be expressed as the
|
223
|
+
# logical OR of constants defined in
|
133
224
|
# [File::Constants](rdoc-ref:File::Constants).
|
134
225
|
# * For `options`, see [Open Options](rdoc-ref:IO@Open+Options).
|
135
226
|
#
|
227
|
+
# The keyword argument `anonymous` specifies when the file is removed.
|
228
|
+
#
|
229
|
+
# * `anonymous=false` (default) without a block: the file is not removed.
|
230
|
+
# * `anonymous=false` (default) with a block: the file is removed after the
|
231
|
+
# block exits.
|
232
|
+
# * `anonymous=true` without a block: the file is removed before returning.
|
233
|
+
# * `anonymous=true` with a block: the file is removed before the block is
|
234
|
+
# called.
|
235
|
+
#
|
236
|
+
# In the first case (`anonymous=false` without a block), the file is not removed
|
237
|
+
# automatically. It should be explicitly closed. It can be used to rename to the
|
238
|
+
# desired filename. If the file is not needed, it should be explicitly removed.
|
136
239
|
#
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
240
|
+
# The File#path method of the created file object returns the temporary
|
241
|
+
# directory with a trailing slash when `anonymous` is true.
|
242
|
+
#
|
243
|
+
# When a block is given, it creates the file as described above, passes it to
|
244
|
+
# the block, and returns the block's value. Before the returning, the file
|
245
|
+
# object is closed and the underlying file is removed:
|
140
246
|
#
|
141
247
|
# Tempfile.create {|file| file.path } # => "/tmp/20220505-9795-rkists"
|
142
248
|
#
|
249
|
+
# Implementation note:
|
250
|
+
#
|
251
|
+
# The keyword argument +anonymous=true+ is implemented using FILE_SHARE_DELETE
|
252
|
+
# on Windows. O_TMPFILE is used on Linux.
|
253
|
+
#
|
143
254
|
# Related: Tempfile.new.
|
144
255
|
#
|
145
|
-
def self.create: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) -> File
|
146
|
-
| [A] (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) { (File) -> A } -> A
|
256
|
+
def self.create: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, ?anonymous: bool, **untyped) -> File
|
257
|
+
| [A] (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, ?anonymous: bool, **untyped) { (File) -> A } -> A
|
147
258
|
|
148
259
|
# <!--
|
149
260
|
# rdoc-file=lib/tempfile.rb
|
@@ -315,7 +426,6 @@ class Tempfile < File
|
|
315
426
|
# * Does not rely on a finalizer to close and unlink the file, which can be
|
316
427
|
# unreliable.
|
317
428
|
#
|
318
|
-
#
|
319
429
|
# Creates and returns file whose:
|
320
430
|
#
|
321
431
|
# * Class is Tempfile (not File, as in Tempfile.create).
|
@@ -325,7 +435,6 @@ class Tempfile < File
|
|
325
435
|
# Permissions](rdoc-ref:File@File+Permissions).
|
326
436
|
# * Mode is `'w+'` (read/write mode, positioned at the end).
|
327
437
|
#
|
328
|
-
#
|
329
438
|
# The underlying file is removed when the Tempfile object dies and is reclaimed
|
330
439
|
# by the garbage collector.
|
331
440
|
#
|
@@ -350,7 +459,6 @@ class Tempfile < File
|
|
350
459
|
#
|
351
460
|
# Tempfile.new(%w/foo .jpg/) # => #<Tempfile:/tmp/foo20220505-17839-58xtfi.jpg>
|
352
461
|
#
|
353
|
-
#
|
354
462
|
# With arguments `basename` and `tmpdir`, the file is created in directory
|
355
463
|
# `tmpdir`:
|
356
464
|
#
|
@@ -364,7 +472,6 @@ class Tempfile < File
|
|
364
472
|
# [File::Constants](rdoc-ref:File::Constants).
|
365
473
|
# * For `options`, see [Open Options](rdoc-ref:IO@Open+Options).
|
366
474
|
#
|
367
|
-
#
|
368
475
|
# Related: Tempfile.create.
|
369
476
|
#
|
370
477
|
def self.new: (?String | [ String, String ] basename, ?String? tmpdir, ?mode: Integer, **untyped) -> instance
|
data/stdlib/time/0/time.rbs
CHANGED
@@ -43,7 +43,7 @@ class Time
|
|
43
43
|
#
|
44
44
|
# This method **does not** function as a validator. If the input string does
|
45
45
|
# not match valid formats strictly, you may get a cryptic result. Should
|
46
|
-
# consider to use
|
46
|
+
# consider to use Time.strptime instead of this method as possible.
|
47
47
|
#
|
48
48
|
# require 'time'
|
49
49
|
#
|
@@ -147,6 +147,8 @@ class Time
|
|
147
147
|
# the format of the input string, you provide a second argument that describes
|
148
148
|
# the format of the string.
|
149
149
|
#
|
150
|
+
# Raises ArgumentError if the date or format is invalid.
|
151
|
+
#
|
150
152
|
# If a block is given, the year described in `date` is converted by the block.
|
151
153
|
# For example:
|
152
154
|
#
|
@@ -156,95 +158,139 @@ class Time
|
|
156
158
|
#
|
157
159
|
# %a
|
158
160
|
# : The abbreviated weekday name ("Sun")
|
161
|
+
#
|
159
162
|
# %A
|
160
163
|
# : The full weekday name ("Sunday")
|
164
|
+
#
|
161
165
|
# %b
|
162
166
|
# : The abbreviated month name ("Jan")
|
167
|
+
#
|
163
168
|
# %B
|
164
169
|
# : The full month name ("January")
|
170
|
+
#
|
165
171
|
# %c
|
166
172
|
# : The preferred local date and time representation
|
173
|
+
#
|
167
174
|
# %C
|
168
175
|
# : Century (20 in 2009)
|
176
|
+
#
|
169
177
|
# %d
|
170
178
|
# : Day of the month (01..31)
|
179
|
+
#
|
171
180
|
# %D
|
172
181
|
# : Date (%m/%d/%y)
|
182
|
+
#
|
173
183
|
# %e
|
174
184
|
# : Day of the month, blank-padded ( 1..31)
|
185
|
+
#
|
175
186
|
# %F
|
176
187
|
# : Equivalent to %Y-%m-%d (the ISO 8601 date format)
|
188
|
+
#
|
177
189
|
# %g
|
178
190
|
# : The last two digits of the commercial year
|
191
|
+
#
|
179
192
|
# %G
|
180
193
|
# : The week-based year according to ISO-8601 (week 1 starts on Monday and
|
181
194
|
# includes January 4)
|
195
|
+
#
|
182
196
|
# %h
|
183
197
|
# : Equivalent to %b
|
198
|
+
#
|
184
199
|
# %H
|
185
200
|
# : Hour of the day, 24-hour clock (00..23)
|
201
|
+
#
|
186
202
|
# %I
|
187
203
|
# : Hour of the day, 12-hour clock (01..12)
|
204
|
+
#
|
188
205
|
# %j
|
189
206
|
# : Day of the year (001..366)
|
207
|
+
#
|
190
208
|
# %k
|
191
209
|
# : hour, 24-hour clock, blank-padded ( 0..23)
|
210
|
+
#
|
192
211
|
# %l
|
193
212
|
# : hour, 12-hour clock, blank-padded ( 0..12)
|
213
|
+
#
|
194
214
|
# %L
|
195
215
|
# : Millisecond of the second (000..999)
|
216
|
+
#
|
196
217
|
# %m
|
197
218
|
# : Month of the year (01..12)
|
219
|
+
#
|
198
220
|
# %M
|
199
221
|
# : Minute of the hour (00..59)
|
222
|
+
#
|
200
223
|
# %n
|
201
224
|
# : Newline (n)
|
225
|
+
#
|
202
226
|
# %N
|
203
227
|
# : Fractional seconds digits
|
228
|
+
#
|
204
229
|
# %p
|
205
230
|
# : Meridian indicator ("AM" or "PM")
|
231
|
+
#
|
206
232
|
# %P
|
207
233
|
# : Meridian indicator ("am" or "pm")
|
234
|
+
#
|
208
235
|
# %r
|
209
236
|
# : time, 12-hour (same as %I:%M:%S %p)
|
237
|
+
#
|
210
238
|
# %R
|
211
239
|
# : time, 24-hour (%H:%M)
|
240
|
+
#
|
212
241
|
# %s
|
213
242
|
# : Number of seconds since 1970-01-01 00:00:00 UTC.
|
243
|
+
#
|
214
244
|
# %S
|
215
245
|
# : Second of the minute (00..60)
|
246
|
+
#
|
216
247
|
# %t
|
217
248
|
# : Tab character (t)
|
249
|
+
#
|
218
250
|
# %T
|
219
251
|
# : time, 24-hour (%H:%M:%S)
|
252
|
+
#
|
220
253
|
# %u
|
221
254
|
# : Day of the week as a decimal, Monday being 1. (1..7)
|
255
|
+
#
|
222
256
|
# %U
|
223
257
|
# : Week number of the current year, starting with the first Sunday as the
|
224
258
|
# first day of the first week (00..53)
|
259
|
+
#
|
225
260
|
# %v
|
226
261
|
# : VMS date (%e-%b-%Y)
|
262
|
+
#
|
227
263
|
# %V
|
228
264
|
# : Week number of year according to ISO 8601 (01..53)
|
265
|
+
#
|
229
266
|
# %W
|
230
267
|
# : Week number of the current year, starting with the first Monday as the
|
231
268
|
# first day of the first week (00..53)
|
269
|
+
#
|
232
270
|
# %w
|
233
271
|
# : Day of the week (Sunday is 0, 0..6)
|
272
|
+
#
|
234
273
|
# %x
|
235
274
|
# : Preferred representation for the date alone, no time
|
275
|
+
#
|
236
276
|
# %X
|
237
277
|
# : Preferred representation for the time alone, no date
|
278
|
+
#
|
238
279
|
# %y
|
239
280
|
# : Year without a century (00..99)
|
281
|
+
#
|
240
282
|
# %Y
|
241
283
|
# : Year which may include century, if provided
|
284
|
+
#
|
242
285
|
# %z
|
243
|
-
# : Time zone as
|
286
|
+
# : Time zone as hour offset from UTC (e.g. +0900)
|
287
|
+
#
|
244
288
|
# %Z
|
245
289
|
# : Time zone name
|
290
|
+
#
|
246
291
|
# %%
|
247
292
|
# : Literal "%" character
|
293
|
+
#
|
248
294
|
# %+
|
249
295
|
# : date(1) (%a %b %e %H:%M:%S %Z %Y)
|
250
296
|
#
|
@@ -383,37 +429,4 @@ class Time
|
|
383
429
|
# You must require 'time' to use this method.
|
384
430
|
#
|
385
431
|
def httpdate: () -> String
|
386
|
-
|
387
|
-
# <!--
|
388
|
-
# rdoc-file=lib/time.rb
|
389
|
-
# - xmlschema(fraction_digits=0)
|
390
|
-
# -->
|
391
|
-
# Returns a string which represents the time as a dateTime defined by XML
|
392
|
-
# Schema:
|
393
|
-
#
|
394
|
-
# CCYY-MM-DDThh:mm:ssTZD
|
395
|
-
# CCYY-MM-DDThh:mm:ss.sssTZD
|
396
|
-
#
|
397
|
-
# where TZD is Z or [+-]hh:mm.
|
398
|
-
#
|
399
|
-
# If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.
|
400
|
-
#
|
401
|
-
# `fraction_digits` specifies a number of digits to use for fractional seconds.
|
402
|
-
# Its default value is 0.
|
403
|
-
#
|
404
|
-
# require 'time'
|
405
|
-
#
|
406
|
-
# t = Time.now
|
407
|
-
# t.iso8601 # => "2011-10-05T22:26:12-04:00"
|
408
|
-
#
|
409
|
-
# You must require 'time' to use this method.
|
410
|
-
#
|
411
|
-
def xmlschema: (?Integer fraction_digits) -> String
|
412
|
-
|
413
|
-
# <!--
|
414
|
-
# rdoc-file=lib/time.rb
|
415
|
-
# - iso8601(fraction_digits=0)
|
416
|
-
# -->
|
417
|
-
#
|
418
|
-
alias iso8601 xmlschema
|
419
432
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# ## Synopsis
|
5
5
|
#
|
6
6
|
# require 'timeout'
|
7
|
-
# status = Timeout
|
7
|
+
# status = Timeout.timeout(5) {
|
8
8
|
# # Something that should be interrupted if it takes more than 5 seconds...
|
9
9
|
# }
|
10
10
|
#
|
@@ -13,14 +13,11 @@
|
|
13
13
|
# Timeout provides a way to auto-terminate a potentially long-running operation
|
14
14
|
# if it hasn't finished in a fixed amount of time.
|
15
15
|
#
|
16
|
-
# Previous versions didn't use a module for namespacing, however #timeout is
|
17
|
-
# provided for backwards compatibility. You should prefer Timeout.timeout
|
18
|
-
# instead.
|
19
|
-
#
|
20
16
|
# ## Copyright
|
21
17
|
#
|
22
18
|
# Copyright
|
23
19
|
# : (C) 2000 Network Applied Communication Laboratory, Inc.
|
20
|
+
#
|
24
21
|
# Copyright
|
25
22
|
# : (C) 2000 Information-technology Promotion Agency, Japan
|
26
23
|
#
|
@@ -33,12 +30,15 @@ module Timeout
|
|
33
30
|
# `sec` seconds to complete.
|
34
31
|
#
|
35
32
|
# `sec`
|
36
|
-
# : Number of seconds to wait for the block to terminate. Any
|
37
|
-
# used, including Floats to specify fractional seconds.
|
38
|
-
# `nil` will execute the block without any timeout.
|
33
|
+
# : Number of seconds to wait for the block to terminate. Any non-negative
|
34
|
+
# number or nil may be used, including Floats to specify fractional seconds.
|
35
|
+
# A value of 0 or `nil` will execute the block without any timeout. Any
|
36
|
+
# negative number will raise an ArgumentError.
|
37
|
+
#
|
39
38
|
# `klass`
|
40
39
|
# : Exception Class to raise if the block fails to terminate in `sec` seconds.
|
41
40
|
# Omitting will use the default, Timeout::Error
|
41
|
+
#
|
42
42
|
# `message`
|
43
43
|
# : Error message to raise with Exception Class. Omitting will use the
|
44
44
|
# default, "execution expired"
|
@@ -75,4 +75,7 @@ class Timeout::Error < RuntimeError
|
|
75
75
|
attr_reader thread: Thread?
|
76
76
|
end
|
77
77
|
|
78
|
+
# <!-- rdoc-file=lib/timeout.rb -->
|
79
|
+
# The version
|
80
|
+
#
|
78
81
|
Timeout::VERSION: String
|
data/stdlib/tmpdir/0/tmpdir.rbs
CHANGED
@@ -6,6 +6,9 @@ class Dir
|
|
6
6
|
# -->
|
7
7
|
# Returns the operating system's temporary file path.
|
8
8
|
#
|
9
|
+
# require 'tmpdir'
|
10
|
+
# Dir.tmpdir # => "/tmp"
|
11
|
+
#
|
9
12
|
def self.tmpdir: () -> String
|
10
13
|
|
11
14
|
# <!--
|
@@ -14,6 +17,11 @@ class Dir
|
|
14
17
|
# -->
|
15
18
|
# Dir.mktmpdir creates a temporary directory.
|
16
19
|
#
|
20
|
+
# require 'tmpdir'
|
21
|
+
# Dir.mktmpdir {|dir|
|
22
|
+
# # use the directory
|
23
|
+
# }
|
24
|
+
#
|
17
25
|
# The directory is created with 0700 permission. Application should not change
|
18
26
|
# the permission to make the temporary directory accessible from other users.
|
19
27
|
#
|
@@ -25,7 +33,6 @@ class Dir
|
|
25
33
|
# * If it is an array, first element is used as the prefix and second element
|
26
34
|
# is used as a suffix.
|
27
35
|
#
|
28
|
-
#
|
29
36
|
# Dir.mktmpdir {|dir| dir is ".../d..." }
|
30
37
|
# Dir.mktmpdir("foo") {|dir| dir is ".../foo..." }
|
31
38
|
# Dir.mktmpdir(["foo", "bar"]) {|dir| dir is ".../foo...bar" }
|
@@ -57,6 +64,6 @@ class Dir
|
|
57
64
|
# FileUtils.remove_entry dir
|
58
65
|
# end
|
59
66
|
#
|
60
|
-
def self.mktmpdir: (?
|
61
|
-
| [X] (?
|
67
|
+
def self.mktmpdir: (?string | [ string, string ] | nil, ?path?, ?max_try: Integer?) -> String
|
68
|
+
| [X] (?string | [string, string ] | nil, ?path?, ?max_try: Integer?) { (String) -> X } -> X
|
62
69
|
end
|
data/stdlib/tsort/0/tsort.rbs
CHANGED
@@ -11,7 +11,6 @@
|
|
11
11
|
# * tsort_each_node is used to iterate for all nodes over a graph.
|
12
12
|
# * tsort_each_child is used to iterate for child nodes of a given node.
|
13
13
|
#
|
14
|
-
#
|
15
14
|
# The equality of nodes are defined by eql? and hash since TSort uses Hash
|
16
15
|
# internally.
|
17
16
|
#
|
@@ -109,12 +108,9 @@
|
|
109
108
|
# strongly connected components. Although 'strongly_connected_components.rb'
|
110
109
|
# is correct but too long.
|
111
110
|
#
|
112
|
-
#
|
113
111
|
# ## References
|
114
112
|
#
|
115
113
|
# 1. Tarjan, "Depth First Search and Linear Graph Algorithms",
|
116
|
-
#
|
117
|
-
#
|
118
114
|
# *SIAM Journal on Computing*, Vol. 1, No. 2, pp. 146-160, June 1972.
|
119
115
|
#
|
120
116
|
module TSort[Node] : TSort::_Sortable[Node]
|