Closed vinurs closed 2 years ago
This appears to be a timbre issue. It is attempting to memoize the value. A naive memorization would use built in hashing — creating a checksum for an unhashable object is more complex and less performant. Python dictionaries are not hashable, so the error is not a mistake. You could cast it to a JVM/Clojure hashmap before printing it, but there would be a performance cost in the conversion.
On Wed, Jul 6, 2022 at 10:30 AM vinurs @.***> wrote:
hello, i call a python function and it returns like this
{'created_at': 'Tue May 17 08:46:48 +0000 2022', 'id': 1526484368063008770, 'id_str': '1526484368063008770'}
then i use clojure.tools.logging can log it correctly, but i use taoensso.timbre, it shows
Unhandled java.lang.Exception TypeError: unhashable type: 'dict'
ffi.clj: 703 libpython-clj2.python.ffi/check-error-throw ffi.clj: 701 libpython-clj2.python.ffi/check-error-throw base.clj: 180 libpython-clj2.python.base/hash-code base.clj: -1 libpython-clj2.python.base/hash-code bridge_as_jvm.clj: 231 libpython-clj2.python.bridge-as-jvm/generic-python-as-map/reify
APersistentVector.java: 149 clojure.lang.APersistentVector/hashCode APersistentMap.java: 110 clojure.lang.APersistentMap/mapHash APersistentMap.java: 99 clojure.lang.APersistentMap/hashCode ConcurrentHashMap.java: 936 java.util.concurrent.ConcurrentHashMap/get encore.cljc: 2164 taoensso.encore$fmemoize$fn32770/invoke timbre.cljc: 656 taoensso.timbre$_logBANG$fn34248$fn34250/invoke Delay.java: 42 clojure.lang.Delay/deref Delay.java: 28 clojure.lang.Delay/force core.clj: 767 clojure.core/force core.clj: 763 clojure.core/force core.cljc: 68 taoensso.timbre.appenders.core$println_appender$fn34043/invoke timbre.cljc: 684 taoensso.timbre$_logBANG$fn__34248/invoke PersistentArrayMap.java: 377 clojure.lang.PersistentArrayMap/kvreduce core.clj: 6847 clojure.core/fn core.clj: 6832 clojure.core/fn protocols.clj: 175 clojure.core.protocols/fn/G core.clj: 6858 clojure.core/reduce-kv core.clj: 6849 clojure.core/reduce-kv timbre.cljc: 628 taoensso.timbre$_logBANG/invokeStatic timbre.cljc: 540 taoensso.timbre$_logBANG/invoke REPL: 716 app.utils.twitter/eval70285 REPL: 716 app.utils.twitter/eval70285 Compiler.java: 7181 clojure.lang.Compiler/eval Compiler.java: 7136 clojure.lang.Compiler/eval core.clj: 3202 clojure.core/eval core.clj: 3198 clojure.core/eval interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn/fn AFn.java: 152 clojure.lang.AFn/applyToHelper AFn.java: 144 clojure.lang.AFn/applyTo core.clj: 667 clojure.core/apply core.clj: 1977 clojure.core/with-bindings core.clj: 1977 clojure.core/with-bindings RestFn.java: 425 clojure.lang.RestFn/invoke interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn main.clj: 437 clojure.main/repl/read-eval-print/fn main.clj: 437 clojure.main/repl/read-eval-print main.clj: 458 clojure.main/repl/fn main.clj: 458 clojure.main/repl main.clj: 368 clojure.main/repl RestFn.java: 1523 clojure.lang.RestFn/invoke interruptible_eval.clj: 84 nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 56 nrepl.middleware.interruptible-eval/evaluate interruptible_eval.clj: 152 nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn AFn.java: 22 clojure.lang.AFn/run session.clj: 218 nrepl.middleware.session/session-exec/main-loop/fn session.clj: 217 nrepl.middleware.session/session-exec/main-loop AFn.java: 22 clojure.lang.AFn/run Thread.java: 833 java.lang.Thread/run
how can i use taoensso.timbre to log the object
— Reply to this email directly, view it on GitHub https://github.com/clj-python/libpython-clj/issues/205, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACPJX4Y55QNUO3MZNQDIGATVSWJ6TANCNFSM52Z7MVHQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>
@jjtolton thanks for ur reply
hello, i call a python function and it returns like this
then i use
clojure.tools.logging
can log it correctly, but i usetaoensso.timbre
, it showshow can i use
taoensso.timbre
to log the object