sorbet-runtime 0.5.12366 → 0.6.12495

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 621006dee0ec596b46c4eba003534e49eb71ccff6b0af7fa32efd16dc9ba436e
4
- data.tar.gz: 6cc3bc9bbec95f0c9b34643c995be28939c355cf824c15e4da3888a48e7d9563
3
+ metadata.gz: c51963eb3d01289d9be93a373a77fcb1fed6701b6a2be41a5d50437cb7afef35
4
+ data.tar.gz: c4e47477375bd1c16d3af48589aa70602784bce404f6358aaae746d6b569aa0f
5
5
  SHA512:
6
- metadata.gz: f9f02e2b3b76d2adc6b872fc7aed55c2c0009233f66cd650062d57e2af4a50b56c9747c759de737eca620494da190884576d90c7fd652e6b3d1661acf759060a
7
- data.tar.gz: d8aa60c7ee08f3cedda81996841fe5822a33ab2a9a37b3b4cb26957e36e246e7b5ea4f0c76b91f9b62b1e605ebb13312adc263fa0cebd3dee22580dca39f0a2c
6
+ metadata.gz: 8073dad40d3aeb0d6ff6fce94b0ea3584a49f3ec54ebf0a970f4c868e1078397f0a65788c69d82a997033f87d176571b41acc6f9987fc1daff9889c3d2795673
7
+ data.tar.gz: e7f06c57eee3b49ea25a7651bb890ad6191f4aa0b19e16ad835503edb73a9ef37c179aa66bcd8c9c85082ac49bb07c8cc195c4cfad91c59e5a2fde59b6a7fffa
@@ -132,17 +132,14 @@ module T::Props
132
132
  end
133
133
 
134
134
  # Shorthand helper to define a `prop` with `immutable => true`
135
- sig { params(name: Symbol, cls_or_args: T.untyped, args: T.untyped).void }
136
- def const(name, cls_or_args, **args)
137
- if (cls_or_args.is_a?(Hash) && cls_or_args.key?(:immutable)) || args.key?(:immutable)
135
+ sig { params(name: Symbol, cls: T.untyped, rules: T.untyped).void }
136
+ def const(name, cls, **rules)
137
+ if rules.key?(:immutable)
138
138
  Kernel.raise ArgumentError.new("Cannot pass 'immutable' argument when using 'const' keyword to define a prop")
139
139
  end
140
140
 
141
- if cls_or_args.is_a?(Hash)
142
- self.prop(name, **cls_or_args.merge(immutable: true))
143
- else
144
- self.prop(name, cls_or_args, **args.merge(immutable: true))
145
- end
141
+ rules[:immutable] = true
142
+ self.prop(name, cls, **rules)
146
143
  end
147
144
 
148
145
  def included(child)
@@ -238,7 +238,9 @@ class T::Props::Decorator
238
238
  end
239
239
 
240
240
  if rules.keys.any? { |k| !valid_rule_key?(k) }
241
- raise ArgumentError.new("At least one invalid prop arg supplied in #{self}: #{rules.keys.inspect}")
241
+ invalid_keys = rules.keys.reject { |k| valid_rule_key?(k) }
242
+ suffix = invalid_keys.size == 1 ? "" : "s"
243
+ raise ArgumentError.new("Invalid prop arg#{suffix} supplied in #{self}: #{invalid_keys.inspect}")
242
244
  end
243
245
 
244
246
  if !rules[:clobber_existing_method!] && !rules[:without_accessors] && BANNED_METHOD_NAMES.include?(name.to_sym)
@@ -318,7 +320,10 @@ class T::Props::Decorator
318
320
 
319
321
  sig(:final) { params(name: Symbol).returns(T::Boolean).checked(:never) }
320
322
  private def method_defined_on_ancestor?(name)
321
- @class.method_defined?(name) && !@class.method_defined?(name, false)
323
+ (@class.method_defined?(name) || @class.private_method_defined?(name)) &&
324
+ # Unfortunately, older versions of ruby don't allow the second parameter on
325
+ # `private_method_defined?`.
326
+ (!@class.method_defined?(name, false) && !@class.private_method_defined?(name, false))
322
327
  end
323
328
 
324
329
  sig(:final) { params(name: Symbol, rules: Rules).void.checked(:never) }
@@ -384,7 +389,7 @@ class T::Props::Decorator
384
389
  #
385
390
  if sensitivity_and_pii[:pii] && @class.is_a?(Class) && !T.unsafe(@class).contains_pii?
386
391
  raise ArgumentError.new(
387
- 'Cannot include a pii prop in a class that declares `contains_no_pii`'
392
+ "Cannot define pii prop `#{@class}##{name}` because `#{@class}` is `contains_no_pii`"
388
393
  )
389
394
  end
390
395
  end
@@ -12,8 +12,8 @@ module T::Props::PrettyPrintable
12
12
  pp.group(1, "<#{klass.inspect_class_with_decoration(self)}", ">") do
13
13
  klass.all_props.sort.each do |prop|
14
14
  pp.breakable
15
- val = klass.get(self, prop)
16
15
  rules = klass.prop_rules(prop)
16
+ val = klass.get(self, prop, rules)
17
17
  pp.text("#{prop}=")
18
18
  if (custom_inspect = rules[:inspect])
19
19
  inspected = if T::Utils.arity(custom_inspect) == 1
@@ -22,8 +22,8 @@ module T::Props::PrettyPrintable
22
22
  custom_inspect.call(val, {multiline: multiline})
23
23
  end
24
24
  pp.text(inspected.nil? ? "nil" : inspected)
25
- elsif rules[:sensitivity] && !rules[:sensitivity].empty? && !val.nil?
26
- pp.text("<REDACTED #{rules[:sensitivity].join(', ')}>")
25
+ elsif (sensitivity = rules[:sensitivity]) && !sensitivity.empty? && !val.nil?
26
+ pp.text("<REDACTED #{sensitivity.join(', ')}>")
27
27
  else
28
28
  val.pretty_print(pp)
29
29
  end
@@ -56,14 +56,14 @@ module T::Props::PrettyPrintable
56
56
 
57
57
  # Overridable method to specify how the first part of a `pretty_print`d object's class should look like
58
58
  # NOTE: This is just to support Stripe's `PrettyPrintableModel` case, and not recommended to be overridden
59
- sig { params(instance: T::Props::PrettyPrintable).returns(String) }
59
+ sig { params(instance: T::Props::PrettyPrintable).returns(String).checked(:never) }
60
60
  def inspect_class_with_decoration(instance)
61
61
  T.unsafe(instance).class.to_s
62
62
  end
63
63
 
64
64
  # Overridable method to add anything that is not a prop
65
65
  # NOTE: This is to support cases like Serializable's `@_extra_props`, and Stripe's `PrettyPrintableModel#@_deleted`
66
- sig { params(instance: T::Props::PrettyPrintable, pp: T.any(PrettyPrint, PP::SingleLine)).void }
66
+ sig { params(instance: T::Props::PrettyPrintable, pp: T.any(PrettyPrint, PP::SingleLine)).void.checked(:never) }
67
67
  def pretty_print_extra(instance, pp); end
68
68
  end
69
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12366
4
+ version: 0.6.12495
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-31 00:00:00.000000000 Z
11
+ date: 2025-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -256,7 +256,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
256
256
  requirements:
257
257
  - - ">="
258
258
  - !ruby/object:Gem::Version
259
- version: 2.7.0
259
+ version: 3.0.0
260
260
  required_rubygems_version: !ruby/object:Gem::Requirement
261
261
  requirements:
262
262
  - - ">="