clj-python / clj-python/libpython-clj

error of unhashable type

Ouverte
#259 15 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Clojure
Étoiles
1.2k
Forks
74
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Doing this

(pyreq/require-python 'sklearn.datasets)
(def newsgroups (sklearn.datasets/fetch_20newsgroups :subset "all" :remove (builtins/tuple [ "headers" "footers" "quotes"])))

and teh opening newsgroups i te ccider-inspector gives an error
Seems to happen only in cider-inspector ...

user> *e
;; => #error {
 :cause "TypeError: unhashable type: 'numpy.ndarray'\n"
 :via
 [{:type clojure.lang.ExceptionInfo
   :message nil
   :data #:clojure.error{:phase :print-eval-result}
   :at [clojure.main$repl$read_eval_print__9206 invoke "main.clj" 442]}
  {:type java.lang.Exception
   :message "TypeError: unhashable type: 'numpy.ndarray'\n"
   :at [libpython_clj2.python.ffi$check_error_throw invokeStatic "ffi.clj" 707]}]
 :trace
 [[libpython_clj2.python.ffi$check_error_throw invokeStatic "ffi.clj" 707]
  [libpython_clj2.python.ffi$check_error_throw invoke "ffi.clj" 705]
  [libpython_clj2.python.base$hash_code invokeStatic "base.clj" 180]
  [libpython_clj2.python.base$hash_code invokePrim "base.clj" -1]
  [libpython_clj2.python.bridge_as_jvm$generic_pyobject$reify__23789 hashCode "bridge_as_jvm.clj" 231]
  [clojure.lang.Util hasheq "Util.java" 173]
  [clojure.lang.Murmur3 hashOrdered "Murmur3.java" 107]
  [clojure.lang.ASeq hasheq "ASeq.java" 91]
  [clojure.lang.Util dohasheq "Util.java" 177]
  [clojure.lang.Util hasheq "Util.java" 168]
  [clojure.lang.PersistentHashMap hash "PersistentHashMap.java" 120]
  [clojure.lang.PersistentHashMap$TransientHashMap doAssoc "PersistentHashMap.java" 327]
  [clojure.lang.ATransientMap assoc "ATransientMap.java" 64]
  [clojure.lang.PersistentHashMap create "PersistentHashMap.java" 56]
  [clojure.lang.PersistentHashMap create "PersistentHashMap.java" 100]
  [clojure.lang.PersistentArrayMap createHT "PersistentArrayMap.java" 64]
  [clojure.lang.PersistentArrayMap assoc "PersistentArrayMap.java" 258]
  [clojure.lang.PersistentArrayMap assoc "PersistentArrayMap.java" 30]
  [clojure.lang.RT assoc "RT.java" 827]
  [clojure.core$assoc__5481 invokeStatic "core.clj" 193]
  [clojure.core$assoc__5481 invoke "core.clj" 192]
  [clojure.lang.Atom swap "Atom.java" 65]
  [clojure.core$swap_BANG_ invokeStatic "core.clj" 2371]
  [clojure.core$memoize$fn__6946 doInvoke "core.clj" 6388]
  [clojure.lang.RestFn invoke "RestFn.java" 421]
  [orchard.inspect$eval7170$fn__7175$fn__7188 invoke "inspect.clj" 660]
  [clojure.core$group_by$fn__8597 invoke "core.clj" 7224]
  [clojure.core.protocols$fn__8249 invokeStatic "protocols.clj" 168]
  [clojure.core.protocols$fn__8249 invoke "protocols.clj" 124]
  [clojure.core.protocols$fn__8204$G__8199__8213 invoke "protocols.clj" 19]
  [clojure.core.protocols$seq_reduce invokeStatic "protocols.clj" 31]
  [clojure.core.protocols$fn__8236 invokeStatic "protocols.clj" 75]
  [clojure.core.protocols$fn__8236 invoke "protocols.clj" 75]
  [clojure.core.protocols$fn__8178$G__8173__8191 invoke "protocols.clj" 13]
  [clojure.core$reduce invokeStatic "core.clj" 6886]
  [clojure.core$group_by invokeStatic "core.clj" 7214]
  [clojure.core$group_by invoke "core.clj" 7214]
  [orchard.inspect$eval7170$fn__7175 invoke "inspect.clj" 658]
  [clojure.lang.MultiFn invoke "MultiFn.java" 234]
  [orchard.inspect$inspect_render invokeStatic "inspect.clj" 792]

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la reproduction dans l’issue et suivez la stack signalée à travers libpython_clj2/python/base.clj à la ligne 180, bridge_as_jvm.clj à la ligne 231, et orchard/inspect.clj aux lignes 658-660 et 792. Déterminez pourquoi l’inspection de l’objet renvoyé hashe un numpy.ndarray, puis vérifiez que cider-inspector peut afficher la valeur sans le TypeError.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
clojure, numpy, python, scikit-learn
Domaine
devtools
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.