rbs 3.7.0 → 3.8.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +3 -3
  3. data/.github/workflows/ruby.yml +7 -7
  4. data/CHANGELOG.md +52 -0
  5. data/core/array.rbs +1743 -1580
  6. data/core/basic_object.rbs +38 -35
  7. data/core/comparable.rbs +1 -1
  8. data/core/complex.rbs +165 -93
  9. data/core/data.rbs +1 -1
  10. data/core/dir.rbs +1 -17
  11. data/core/encoding.rbs +12 -6
  12. data/core/enumerable.rbs +270 -266
  13. data/core/enumerator.rbs +0 -2
  14. data/core/env.rbs +1 -1
  15. data/core/errno.rbs +33 -16
  16. data/core/errors.rbs +2 -2
  17. data/core/exception.rbs +236 -170
  18. data/core/fiber.rbs +3 -2
  19. data/core/file.rbs +32 -74
  20. data/core/float.rbs +125 -72
  21. data/core/gc.rbs +138 -40
  22. data/core/hash.rbs +120 -141
  23. data/core/integer.rbs +79 -50
  24. data/core/io/buffer.rbs +49 -43
  25. data/core/io.rbs +97 -144
  26. data/core/kernel.rbs +290 -200
  27. data/core/match_data.rbs +76 -2
  28. data/core/math.rbs +0 -36
  29. data/core/module.rbs +28 -23
  30. data/core/nil_class.rbs +0 -3
  31. data/core/numeric.rbs +100 -103
  32. data/core/object.rbs +0 -4
  33. data/core/object_space/weak_key_map.rbs +3 -4
  34. data/core/object_space.rbs +3 -3
  35. data/core/proc.rbs +0 -2
  36. data/core/process.rbs +109 -57
  37. data/core/ractor.rbs +37 -4
  38. data/core/range.rbs +114 -87
  39. data/core/rational.rbs +0 -2
  40. data/core/rbs/unnamed/argf.rbs +234 -33
  41. data/core/rbs/unnamed/env_class.rbs +35 -53
  42. data/core/rbs/unnamed/random.rbs +1 -2
  43. data/core/regexp.rbs +4 -52
  44. data/core/ruby_vm.rbs +88 -9
  45. data/core/rubygems/config_file.rbs +3 -0
  46. data/core/rubygems/errors.rbs +0 -5
  47. data/core/rubygems/platform.rbs +0 -9
  48. data/core/rubygems/rubygems.rbs +0 -5
  49. data/core/rubygems/version.rbs +6 -6
  50. data/core/set.rbs +3 -15
  51. data/core/string.rbs +130 -136
  52. data/core/struct.rbs +6 -18
  53. data/core/symbol.rbs +14 -21
  54. data/core/thread.rbs +32 -35
  55. data/core/time.rbs +127 -50
  56. data/core/trace_point.rbs +16 -0
  57. data/core/true_class.rbs +0 -1
  58. data/core/warning.rbs +9 -2
  59. data/docs/architecture.md +1 -1
  60. data/docs/syntax.md +1 -1
  61. data/ext/rbs_extension/location.c +29 -19
  62. data/ext/rbs_extension/parser.c +267 -292
  63. data/ext/rbs_extension/parserstate.c +56 -22
  64. data/lib/rbs/annotate/annotations.rb +3 -3
  65. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  66. data/lib/rbs/cli/diff.rb +3 -3
  67. data/lib/rbs/cli/validate.rb +1 -1
  68. data/lib/rbs/cli.rb +13 -13
  69. data/lib/rbs/collection/config.rb +3 -1
  70. data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
  71. data/lib/rbs/environment_loader.rb +1 -1
  72. data/lib/rbs/namespace.rb +1 -0
  73. data/lib/rbs/parser_aux.rb +2 -2
  74. data/lib/rbs/prototype/rb.rb +11 -8
  75. data/lib/rbs/prototype/rbi.rb +9 -5
  76. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  77. data/lib/rbs/prototype/runtime.rb +4 -5
  78. data/lib/rbs/type_name.rb +14 -9
  79. data/lib/rbs/unit_test/type_assertions.rb +2 -2
  80. data/lib/rbs/validator.rb +3 -1
  81. data/lib/rbs/version.rb +1 -1
  82. data/lib/rdoc_plugin/parser.rb +2 -2
  83. data/rbs.gemspec +4 -0
  84. data/sig/ancestor_graph.rbs +4 -4
  85. data/sig/namespace.rbs +2 -3
  86. data/sig/resolver/constant_resolver.rbs +2 -2
  87. data/sig/resolver/context.rbs +1 -1
  88. data/sig/type_alias_regularity.rbs +5 -5
  89. data/sig/typename.rbs +8 -5
  90. data/sig/use_map.rbs +1 -1
  91. data/sig/validator.rbs +2 -2
  92. data/stdlib/base64/0/base64.rbs +0 -9
  93. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  94. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  95. data/stdlib/cgi/0/core.rbs +47 -0
  96. data/stdlib/coverage/0/coverage.rbs +0 -3
  97. data/stdlib/csv/0/csv.rbs +18 -58
  98. data/stdlib/date/0/date.rbs +4 -19
  99. data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
  100. data/stdlib/digest/0/digest.rbs +25 -2
  101. data/stdlib/erb/0/erb.rbs +0 -1
  102. data/stdlib/etc/0/etc.rbs +51 -34
  103. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  104. data/stdlib/io-console/0/io-console.rbs +69 -15
  105. data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
  106. data/stdlib/json/0/json.rbs +56 -71
  107. data/stdlib/logger/0/log_device.rbs +1 -1
  108. data/stdlib/logger/0/logger.rbs +3 -18
  109. data/stdlib/net-http/0/net-http.rbs +19 -77
  110. data/stdlib/nkf/0/nkf.rbs +30 -0
  111. data/stdlib/objspace/0/objspace.rbs +1 -2
  112. data/stdlib/observable/0/observable.rbs +1 -1
  113. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  114. data/stdlib/open3/0/open3.rbs +0 -8
  115. data/stdlib/openssl/0/openssl.rbs +136 -69
  116. data/stdlib/optparse/0/optparse.rbs +58 -18
  117. data/stdlib/pathname/0/pathname.rbs +2 -8
  118. data/stdlib/pp/0/pp.rbs +3 -1
  119. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  120. data/stdlib/pstore/0/pstore.rbs +0 -6
  121. data/stdlib/psych/0/psych.rbs +15 -4
  122. data/stdlib/pty/0/pty.rbs +46 -4
  123. data/stdlib/rdoc/0/code_object.rbs +0 -4
  124. data/stdlib/rdoc/0/markup.rbs +10 -12
  125. data/stdlib/rdoc/0/rdoc.rbs +1 -2
  126. data/stdlib/resolv/0/resolv.rbs +8 -3
  127. data/stdlib/ripper/0/ripper.rbs +0 -2
  128. data/stdlib/securerandom/0/securerandom.rbs +0 -2
  129. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  130. data/stdlib/singleton/0/singleton.rbs +0 -1
  131. data/stdlib/socket/0/addrinfo.rbs +0 -1
  132. data/stdlib/socket/0/basic_socket.rbs +0 -5
  133. data/stdlib/socket/0/socket.rbs +49 -25
  134. data/stdlib/socket/0/tcp_server.rbs +0 -3
  135. data/stdlib/socket/0/tcp_socket.rbs +58 -3
  136. data/stdlib/socket/0/udp_socket.rbs +0 -1
  137. data/stdlib/socket/0/unix_server.rbs +0 -3
  138. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  139. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  140. data/stdlib/time/0/time.rbs +48 -35
  141. data/stdlib/timeout/0/timeout.rbs +11 -8
  142. data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
  143. data/stdlib/tsort/0/tsort.rbs +0 -4
  144. data/stdlib/uri/0/common.rbs +11 -30
  145. data/stdlib/uri/0/ftp.rbs +1 -1
  146. data/stdlib/uri/0/generic.rbs +22 -18
  147. data/stdlib/uri/0/http.rbs +2 -2
  148. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  149. data/stdlib/zlib/0/buf_error.rbs +1 -70
  150. data/stdlib/zlib/0/data_error.rbs +1 -70
  151. data/stdlib/zlib/0/deflate.rbs +8 -72
  152. data/stdlib/zlib/0/error.rbs +1 -70
  153. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  154. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  155. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  156. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  157. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  158. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  159. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  160. data/stdlib/zlib/0/inflate.rbs +4 -71
  161. data/stdlib/zlib/0/mem_error.rbs +1 -70
  162. data/stdlib/zlib/0/need_dict.rbs +1 -70
  163. data/stdlib/zlib/0/stream_end.rbs +1 -70
  164. data/stdlib/zlib/0/stream_error.rbs +1 -70
  165. data/stdlib/zlib/0/version_error.rbs +1 -70
  166. data/stdlib/zlib/0/zlib.rbs +0 -2
  167. data/stdlib/zlib/0/zstream.rbs +4 -72
  168. metadata +4 -6
data/core/struct.rbs CHANGED
@@ -46,7 +46,6 @@
46
46
  # * Includes [module Enumerable](rdoc-ref:Enumerable@What-27s+Here), which
47
47
  # provides dozens of additional methods.
48
48
  #
49
- #
50
49
  # See also Data, which is a somewhat similar, but stricter concept for defining
51
50
  # immutable value objects.
52
51
  #
@@ -61,17 +60,14 @@
61
60
  # * [Iterating](rdoc-ref:Struct@Methods+for+Iterating)
62
61
  # * [Converting](rdoc-ref:Struct@Methods+for+Converting)
63
62
  #
64
- #
65
63
  # ### Methods for Creating a Struct Subclass
66
64
  #
67
65
  # * ::new: Returns a new subclass of Struct.
68
66
  #
69
- #
70
67
  # ### Methods for Querying
71
68
  #
72
69
  # * #hash: Returns the integer hash code.
73
- # * #length, #size: Returns the number of members.
74
- #
70
+ # * #size (aliased as #length): Returns the number of members.
75
71
  #
76
72
  # ### Methods for Comparing
77
73
  #
@@ -80,36 +76,32 @@
80
76
  # * #eql?: Returns whether a given object is equal to `self`, using `eql?` to
81
77
  # compare member values.
82
78
  #
83
- #
84
79
  # ### Methods for Fetching
85
80
  #
86
81
  # * #[]: Returns the value associated with a given member name.
87
- # * #to_a, #values, #deconstruct: Returns the member values in `self` as an
88
- # array.
82
+ # * #to_a (aliased as #values, #deconstruct): Returns the member values in
83
+ # `self` as an array.
89
84
  # * #deconstruct_keys: Returns a hash of the name/value pairs for given member
90
85
  # names.
91
86
  # * #dig: Returns the object in nested objects that is specified by a given
92
87
  # member name and additional arguments.
93
88
  # * #members: Returns an array of the member names.
94
- # * #select, #filter: Returns an array of member values from `self`, as
95
- # selected by the given block.
89
+ # * #select (aliased as #filter): Returns an array of member values from
90
+ # `self`, as selected by the given block.
96
91
  # * #values_at: Returns an array containing values for given member names.
97
92
  #
98
- #
99
93
  # ### Methods for Assigning
100
94
  #
101
95
  # * #[]=: Assigns a given value to a given member name.
102
96
  #
103
- #
104
97
  # ### Methods for Iterating
105
98
  #
106
99
  # * #each: Calls a given block with each member name.
107
100
  # * #each_pair: Calls a given block with each member name/value pair.
108
101
  #
109
- #
110
102
  # ### Methods for Converting
111
103
  #
112
- # * #inspect, #to_s: Returns a string representation of `self`.
104
+ # * #inspect (aliased as #to_s): Returns a string representation of `self`.
113
105
  # * #to_h: Returns a hash of the member name/value pairs in `self`.
114
106
  #
115
107
  class Struct[Elem]
@@ -133,7 +125,6 @@ class Struct[Elem]
133
125
  # * May have members as given by `member_names`.
134
126
  # * May have initialization via ordinary arguments, or via keyword arguments
135
127
  #
136
- #
137
128
  # The new subclass has its own method `::new`; thus:
138
129
  #
139
130
  # Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
@@ -215,7 +206,6 @@ class Struct[Elem]
215
206
  #
216
207
  # Foo.members # => [:foo, :bar]
217
208
  #
218
- #
219
209
  # **Keyword Argument**
220
210
  #
221
211
  # By default, the arguments for initializing an instance of the new subclass can
@@ -285,7 +275,6 @@ class Struct[Elem]
285
275
  # * `other.class == self.class`.
286
276
  # * For each member name `name`, `other.name == self.name`.
287
277
  #
288
- #
289
278
  # Examples:
290
279
  #
291
280
  # Customer = Struct.new(:name, :address, :zip)
@@ -315,7 +304,6 @@ class Struct[Elem]
315
304
  # joe_jr[:name] = 'Joe Smith, Jr.'
316
305
  # joe_jr.eql?(joe) # => false
317
306
  #
318
- #
319
307
  # Related: Object#==.
320
308
  #
321
309
  def eql?: (untyped other) -> bool
data/core/symbol.rbs CHANGED
@@ -1,15 +1,14 @@
1
1
  # <!-- rdoc-file=string.c -->
2
- # Symbol objects represent named identifiers inside the Ruby interpreter.
2
+ # A `Symbol` object represents a named identifier inside the Ruby interpreter.
3
3
  #
4
- # You can create a Symbol object explicitly with:
4
+ # You can create a `Symbol` object explicitly with:
5
5
  #
6
6
  # * A [symbol literal](rdoc-ref:syntax/literals.rdoc@Symbol+Literals).
7
7
  #
8
- #
9
- # The same Symbol object will be created for a given name or string for the
8
+ # The same `Symbol` object will be created for a given name or string for the
10
9
  # duration of a program's execution, regardless of the context or meaning of
11
10
  # that name. Thus if `Fred` is a constant in one context, a method in another,
12
- # and a class in a third, the Symbol `:Fred` will be the same object in all
11
+ # and a class in a third, the `Symbol` `:Fred` will be the same object in all
13
12
  # three contexts.
14
13
  #
15
14
  # module One
@@ -52,24 +51,22 @@
52
51
  # local_variables
53
52
  # # => [:seven]
54
53
  #
55
- # Symbol objects are different from String objects in that Symbol objects
56
- # represent identifiers, while String objects represent text or data.
54
+ # A `Symbol` object differs from a String object in that a `Symbol` object
55
+ # represents an identifier, while a String object represents text or data.
57
56
  #
58
57
  # ## What's Here
59
58
  #
60
- # First, what's elsewhere. Class Symbol:
59
+ # First, what's elsewhere. Class `Symbol`:
61
60
  #
62
61
  # * Inherits from [class Object](rdoc-ref:Object@What-27s+Here).
63
62
  # * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
64
63
  #
65
- #
66
- # Here, class Symbol provides methods that are useful for:
64
+ # Here, class `Symbol` provides methods that are useful for:
67
65
  #
68
66
  # * [Querying](rdoc-ref:Symbol@Methods+for+Querying)
69
67
  # * [Comparing](rdoc-ref:Symbol@Methods+for+Comparing)
70
68
  # * [Converting](rdoc-ref:Symbol@Methods+for+Converting)
71
69
  #
72
- #
73
70
  # ### Methods for Querying
74
71
  #
75
72
  # * ::all_symbols: Returns an array of the symbols currently in Ruby's symbol
@@ -90,7 +87,6 @@
90
87
  # * #start_with?: Returns `true` if symbol starts with any of the given
91
88
  # strings.
92
89
  #
93
- #
94
90
  # ### Methods for Comparing
95
91
  #
96
92
  # * #<=>: Returns -1, 0, or 1 as a given symbol is smaller than, equal to, or
@@ -102,7 +98,6 @@
102
98
  # * #casecmp?: Returns `true` if symbol is equal to a given symbol after
103
99
  # Unicode case folding; `false` otherwise.
104
100
  #
105
- #
106
101
  # ### Methods for Converting
107
102
  #
108
103
  # * #capitalize: Returns symbol with the first character upcased and all other
@@ -310,12 +305,10 @@ class Symbol
310
305
  #
311
306
  def end_with?: (*string suffixes) -> bool
312
307
 
313
- # <!-- rdoc-file=string.c -->
314
- # Returns a string representation of `self` (not including the leading colon):
315
- #
316
- # :foo.to_s # => "foo"
317
- #
318
- # Related: Symbol#inspect, Symbol#name.
308
+ # <!--
309
+ # rdoc-file=symbol.rb
310
+ # - id2name()
311
+ # -->
319
312
  #
320
313
  alias id2name to_s
321
314
 
@@ -375,7 +368,7 @@ class Symbol
375
368
  def next: () -> Symbol
376
369
 
377
370
  # <!--
378
- # rdoc-file=string.c
371
+ # rdoc-file=symbol.rb
379
372
  # - name -> string
380
373
  # -->
381
374
  # Returns a frozen string representation of `self` (not including the leading
@@ -446,7 +439,7 @@ class Symbol
446
439
  def to_proc: () -> Proc
447
440
 
448
441
  # <!--
449
- # rdoc-file=string.c
442
+ # rdoc-file=symbol.rb
450
443
  # - to_s -> string
451
444
  # -->
452
445
  # Returns a string representation of `self` (not including the leading colon):
data/core/thread.rbs CHANGED
@@ -485,7 +485,6 @@ class Thread < Object
485
485
  # * On Windows it is the thread identifier returned by GetThreadId().
486
486
  # * On other platforms, it raises NotImplementedError.
487
487
  #
488
- #
489
488
  # NOTE: If the thread is not associated yet or already deassociated with a
490
489
  # native thread, it returns *nil*. If the Ruby implementation uses M:N thread
491
490
  # model, the ID may change depending on the timing.
@@ -614,12 +613,16 @@ class Thread < Object
614
613
  #
615
614
  # `"sleep"`
616
615
  # : Returned if this thread is sleeping or waiting on I/O
616
+ #
617
617
  # `"run"`
618
618
  # : When this thread is executing
619
+ #
619
620
  # `"aborting"`
620
621
  # : If this thread is aborting
622
+ #
621
623
  # `false`
622
624
  # : When this thread is terminated normally
625
+ #
623
626
  # `nil`
624
627
  # : If terminated with an exception.
625
628
  #
@@ -819,7 +822,7 @@ class Thread < Object
819
822
 
820
823
  # <!--
821
824
  # rdoc-file=vm_backtrace.c
822
- # - Thread.each_caller_location{ |loc| ... } -> nil
825
+ # - Thread.each_caller_location(...) { |loc| ... } -> nil
823
826
  # -->
824
827
  # Yields each frame of the current execution stack as a backtrace location
825
828
  # object.
@@ -873,8 +876,10 @@ class Thread < Object
873
876
  #
874
877
  # `:immediate`
875
878
  # : Invoke interrupts immediately.
879
+ #
876
880
  # `:on_blocking`
877
881
  # : Invoke interrupts while *BlockingOperation*.
882
+ #
878
883
  # `:never`
879
884
  # : Never invoke all interrupts.
880
885
  #
@@ -923,30 +928,6 @@ class Thread < Object
923
928
  # resource allocation code. Then, the ensure block is where we can safely
924
929
  # deallocate your resources.
925
930
  #
926
- # #### Guarding from Timeout::Error
927
- #
928
- # In the next example, we will guard from the Timeout::Error exception. This
929
- # will help prevent from leaking resources when Timeout::Error exceptions occur
930
- # during normal ensure clause. For this example we use the help of the standard
931
- # library Timeout, from lib/timeout.rb
932
- #
933
- # require 'timeout'
934
- # Thread.handle_interrupt(Timeout::Error => :never) {
935
- # timeout(10){
936
- # # Timeout::Error doesn't occur here
937
- # Thread.handle_interrupt(Timeout::Error => :on_blocking) {
938
- # # possible to be killed by Timeout::Error
939
- # # while blocking operation
940
- # }
941
- # # Timeout::Error doesn't occur here
942
- # }
943
- # }
944
- #
945
- # In the first part of the `timeout` block, we can rely on Timeout::Error being
946
- # ignored. Then in the `Timeout::Error => :on_blocking` block, any operation
947
- # that will block the calling thread is susceptible to a Timeout::Error
948
- # exception being raised.
949
- #
950
931
  # #### Stack control settings
951
932
  #
952
933
  # It's possible to stack multiple levels of ::handle_interrupt blocks in order
@@ -992,7 +973,7 @@ class Thread < Object
992
973
  # from prog.rb:2
993
974
  #
994
975
  def raise: (?String message) -> nil
995
- | (_Exception, ?_ToS message, ?Array[String] backtrace) -> nil
976
+ | (_Exception, ?_ToS message, ?Array[Thread::Backtrace::Location] | Array[String] | nil backtrace) -> nil
996
977
 
997
978
  # <!--
998
979
  # rdoc-file=thread.c
@@ -1130,7 +1111,6 @@ class Thread < Object
1130
1111
  # However, this might handle the exception much later, or not at all if the
1131
1112
  # Thread is never joined due to the parent thread being blocked, etc.
1132
1113
  #
1133
- #
1134
1114
  # See also ::report_on_exception=.
1135
1115
  #
1136
1116
  # There is also an instance level method to set this for a specific thread, see
@@ -1318,9 +1298,28 @@ class Thread::Backtrace::Location
1318
1298
  # rdoc-file=vm_backtrace.c
1319
1299
  # - base_label()
1320
1300
  # -->
1321
- # Returns the base label of this frame.
1301
+ # Returns the base label of this frame, which is usually equal to the label,
1302
+ # without decoration.
1322
1303
  #
1323
- # Usually same as #label, without decoration.
1304
+ # Consider the following example:
1305
+ #
1306
+ # def foo
1307
+ # puts caller_locations(0).first.base_label
1308
+ #
1309
+ # 1.times do
1310
+ # puts caller_locations(0).first.base_label
1311
+ #
1312
+ # 1.times do
1313
+ # puts caller_locations(0).first.base_label
1314
+ # end
1315
+ # end
1316
+ # end
1317
+ #
1318
+ # The result of calling `foo` is this:
1319
+ #
1320
+ # foo
1321
+ # foo
1322
+ # foo
1324
1323
  #
1325
1324
  def base_label: () -> String?
1326
1325
 
@@ -1343,15 +1342,14 @@ class Thread::Backtrace::Location
1343
1342
  # 1.times do
1344
1343
  # puts caller_locations(0).first.label
1345
1344
  # end
1346
- #
1347
1345
  # end
1348
1346
  # end
1349
1347
  #
1350
1348
  # The result of calling `foo` is this:
1351
1349
  #
1352
- # label: foo
1353
- # label: block in foo
1354
- # label: block (2 levels) in foo
1350
+ # foo
1351
+ # block in foo
1352
+ # block (2 levels) in foo
1355
1353
  #
1356
1354
  def label: () -> String?
1357
1355
 
@@ -1578,7 +1576,6 @@ class Thread::Queue[Elem = untyped] < Object
1578
1576
  # * when `empty?` is true, deq(false) will not suspend the thread and will
1579
1577
  # return nil. deq(true) will raise a `ThreadError`.
1580
1578
  #
1581
- #
1582
1579
  # ClosedQueueError is inherited from StopIteration, so that you can break loop
1583
1580
  # block.
1584
1581
  #