lambdaisland / lambdaisland/deep-diff2

Diffing sets doesn’t deep-diff

Abierto
#53 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Clojure
Estrellas
326
Forks
18
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

When diffing a set, i.e.

(ddiff/diff
 #{{:db/id 17592186065894
    :test "1"}}
 #{{:db/id 17592186065894
    :test "2"}
   {:db/id 13194139559179
    :db/txInstant #inst "2025-05-20T07:41:40.877-00:00"}})

the result is:

#{{:+
   {:db/id 13194139559179,
    :db/txInstant #inst "2025-05-20T07:41:40.877000000-00:00"}}
  {:+ {:db/id 17592186065894, :test "2"}}
  {:- {:db/id 17592186065894, :test "1"}}}

I would expect the result to be similar to a vector, i.e.

(ddiff/diff
 [{:db/id 17592186065894
   :test "1"}]
 [{:db/id 17592186065894
   :test "2"}
  {:db/id 13194139559179
   :db/txInstant #inst "2025-05-20T07:41:40.877-00:00"}])

produces:

[{:db/id 17592186065894, :test {:- "1", :+ "2"}}
 {:+
  {:db/id 13194139559179,
   :db/txInstant #inst "2025-05-20T07:41:40.877000000-00:00"}}]

Digging deeper, it looks like there is bug with set diffing in general:

I.e.

(ddiff/diff #{{:id 123 :foo :bar}} #{{:id 123 :foo :baz}})

produces:

#{{:+ {:id 123, :foo :baz}} {:- {:id 123, :foo :bar}}}

where using a vector produces:

[{:id 123, :foo {:- :bar, :+ :baz}}]

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo los ejemplos de ddiff/diff para conjuntos y vectores; después, compara cómo se emparejan los mapas anidados en cada caso. Se considera terminado cuando la comparación de conjuntos informa de los campos modificados dentro de los mapas coincidentes y sigue informando correctamente de los elementos realmente añadidos o eliminados.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
clojure
Área
tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.