dspy 0.15.5 → 0.15.7

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: 51c3198b48fd7a13694d7da2cd2e59d08c20feade0fa96d07a2722a1e68847be
4
- data.tar.gz: 868a767f203a12e03df15395a22c8308d0a1a5bcbae2faf298ae05f36c026460
3
+ metadata.gz: b7160b378d76b4772dba1d2b0d22217087f062a126b86a5b8485810eaacf8e2f
4
+ data.tar.gz: 8f7eae40798e8f9d79a4666ff6af9771405ebf80f5e34808eb25ee6618521963
5
5
  SHA512:
6
- metadata.gz: fa4b77bf91e75b93104a9059cf7549cb1d368f562dd5140a4e8bd57c923f1d9ad48a9cdc711829796a854f1f9bcb21339763015e6c498a65b925584e8e51fdd4
7
- data.tar.gz: 234f127d1e947c824977b06a3d200f433316ef9900b2a666eac151987163e972493a7191eda45c1a2fa802accd5334f1e3154457d076b709f7f02b3fc500d1e6
6
+ metadata.gz: 990af89217c7a7513517b21efbb347202a89232c6ba67ff6fbc1ec2a4c14b94da5225f0c3ce01b0c65db6e5c35b688e6e1daea50d7a30df2f29d5a6218917c5d
7
+ data.tar.gz: 8684852589ccc036b0d3efa4a9cbe70537e2912cf9ba0f862c4381da75b08a9befb6341169d1ce334fff2fa7df0819b9e15bfe711e896d473174f101fa856667
@@ -172,13 +172,12 @@ module DSPy
172
172
  struct_class = type.raw_type
173
173
  struct_props = struct_class.props
174
174
 
175
+ # ONLY include fields that exist in the struct
175
176
  coerced_hash = {}
176
- symbolized_hash.each do |key, val|
177
- if struct_props[key]
177
+ struct_props.each_key do |key|
178
+ if symbolized_hash.key?(key)
178
179
  prop_type = struct_props[key][:type_object] || struct_props[key][:type]
179
- coerced_hash[key] = coerce_value_to_type(val, prop_type)
180
- else
181
- coerced_hash[key] = val
180
+ coerced_hash[key] = coerce_value_to_type(symbolized_hash[key], prop_type)
182
181
  end
183
182
  end
184
183
 
@@ -280,8 +280,20 @@ module DSPy
280
280
  struct_class = type_mapping[discriminator_str]
281
281
  return value unless struct_class
282
282
 
283
- # Convert the Hash to the appropriate struct type
284
- struct_class.new(**value)
283
+ # Filter to only include fields defined in the struct
284
+ struct_props = struct_class.props
285
+ filtered_hash = {}
286
+
287
+ value.each do |k, v|
288
+ # Skip _type field and any fields not defined in the struct
289
+ next if k == :_type || k == "_type"
290
+ next unless struct_props.key?(k.to_sym)
291
+
292
+ filtered_hash[k.to_sym] = v
293
+ end
294
+
295
+ # Convert the filtered Hash to the appropriate struct type
296
+ struct_class.new(**filtered_hash)
285
297
  rescue TypeError, ArgumentError
286
298
  # If conversion fails, return the original value
287
299
  value
@@ -335,9 +347,8 @@ module DSPy
335
347
  else
336
348
  converted_hash[k] = v
337
349
  end
338
- else
339
- converted_hash[k] = v
340
350
  end
351
+ # Skip fields not defined in the struct
341
352
  end
342
353
  begin
343
354
  struct_class.new(**converted_hash)
@@ -487,9 +498,8 @@ module DSPy
487
498
  else
488
499
  converted_hash[k] = v
489
500
  end
490
- else
491
- converted_hash[k] = v
492
501
  end
502
+ # Skip fields not defined in the struct
493
503
  end
494
504
  return struct_class.new(**converted_hash)
495
505
  rescue TypeError, ArgumentError
data/lib/dspy/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DSPy
4
- VERSION = "0.15.5"
4
+ VERSION = "0.15.7"
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dspy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.5
4
+ version: 0.15.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vicente Reig Rincón de Arellano
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-08-03 00:00:00.000000000 Z
10
+ date: 2025-08-07 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: dry-configurable
@@ -71,28 +71,28 @@ dependencies:
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.13.0
74
+ version: 0.16.0
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.13.0
81
+ version: 0.16.0
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: anthropic
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 1.1.0
88
+ version: 1.1.1
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 1.1.0
95
+ version: 1.1.1
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: sorbet-runtime
98
98
  requirement: !ruby/object:Gem::Requirement