Skip to content

Commit 6962ab9

Browse files
committed
Fix regression on models with no extraPayload.
1 parent 39827d3 commit 6962ab9

File tree

3 files changed

+53
-7
lines changed

3 files changed

+53
-7
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Fix regression on models with no extraPayload.
6+
57
## 0.69.0
68

79
- Support multiple model configs with different payloads using same model name via `modelName` config. (Ex: gpt-5 and gpt-5-high but both use gpt-5)

src/eca/shared.clj

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,12 @@
5050

5151
(defn deep-merge [v & vs]
5252
(letfn [(rec-merge [v1 v2]
53-
(if (and (map? v1) (map? v2))
54-
(merge-with deep-merge v1 v2)
55-
v2))]
56-
(when (some identity vs)
57-
(reduce #(rec-merge %1 %2) v vs))))
53+
(cond
54+
(nil? v1) v2
55+
(nil? v2) v1
56+
(and (map? v1) (map? v2)) (merge-with deep-merge v1 v2)
57+
:else v2))]
58+
(reduce rec-merge v vs)))
5859

5960
(defn assoc-some
6061
"Assoc[iate] if the value is not nil. "
@@ -66,7 +67,7 @@
6667
(if (next kvs)
6768
(recur ret (first kvs) (second kvs) (nnext kvs))
6869
(throw (IllegalArgumentException.
69-
"assoc-some expects even number of arguments after map/vector, found odd number")))
70+
"assoc-some expects even number of arguments after map/vector, found odd number")))
7071
ret))))
7172

7273
(defn update-some

test/eca/shared_test.clj

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
(:require
33
[clojure.test :refer [deftest is testing]]
44
[eca.shared :as shared]
5-
[eca.test-helper :as h]))
5+
[eca.test-helper :as h]
6+
[matcher-combinators.test :refer [match?]]))
67

78
(deftest uri->filename-test
89
(testing "should decode special characters in file URI"
@@ -48,3 +49,45 @@
4849
(is (nil? (shared/tokens->cost 30 nil nil 20 {}))))
4950
(testing "returns nil when mandatory costs are missing"
5051
(is (nil? (shared/tokens->cost 30 nil nil 20 {:input-token-cost 0.01}))))))
52+
53+
(deftest deep-merge-test
54+
(testing "second map as nil returns first map"
55+
(is (match?
56+
{:a 1}
57+
(shared/deep-merge {:a 1}
58+
nil))))
59+
(testing "basic merge"
60+
(is (match?
61+
{:a 1
62+
:b 4
63+
:c 3
64+
:d 1}
65+
(shared/deep-merge {:a 1}
66+
{:b 2}
67+
{:c 3}
68+
{:b 4 :d 1}))))
69+
(testing "deep merging"
70+
(is (match?
71+
{:a 1
72+
:b {:c {:d 3
73+
:e 4}}}
74+
(shared/deep-merge {:a 1
75+
:b {:c {:d 3}}}
76+
{:b {:c {:e 4}}}))))
77+
(testing "deep merging maps with other keys"
78+
(is (match?
79+
{:a 1
80+
:b {:c {:e 3
81+
:f 4}
82+
:d 2}}
83+
(shared/deep-merge {:a 1
84+
:b {:c {:e 3}
85+
:d 2}}
86+
{:b {:c {:f 4}}}))))
87+
(testing "overrides when leaf values are not maps"
88+
(is (= {:a 2}
89+
(shared/deep-merge {:a {:b 1}}
90+
{:a 2})))
91+
(is (= {:a {:b 1}}
92+
(shared/deep-merge {:a 2}
93+
{:a {:b 1}})))))

0 commit comments

Comments
 (0)