Skip to content

[Bug] Внутрисписковое сравнение словарей не работает #7

Description

@Miskler

Affected area(s)

  • core
  • colorize
  • cli
  • sphinx
  • python interface

What did you do?

Обычный кейс сравнения

What happened?

Похоже мало того что сравнение внутри списков не работает, если порядок ключей другой скрипт посчитает что это разные элементы.

What did you expect to happen?

.

Logs / screenshots

      m ["content"]["items"][0]["productBrand"]["mobileBannerImage"]:
      m   .anyOf:
             .type: null
      -   ╭  .type: object
      -   │  .required:
      -   │     cropUrlTemplate
      -   │     fileSize
      -   │     fileType
      -   │     height
      -   │     id
      -   │     originName
      -   │     publicUrl
      -   │     uuid
      -   │     width
      -   │  ["id"].type: integer
      -   │  ["originName"].type: string
      -   │  ["fileType"].type: string
      -   │  ["fileSize"].type: integer
      -   │  ["width"].type: integer
      -   │  ["height"].type: integer
      -   │  ["cropUrlTemplate"]:
      -   │    .format: uri
      -   │    .type: string
      -   │  ["publicUrl"].type: null
      -   │  ["uuid"]:
      -   │    .format: uuid
      -   ╰    .type: string
      +   ╭  .type: object
      +   │  .required:
      +   │     cropUrlTemplate
      +   │     fileSize
      +   │     fileType
      +   │     height
      +   │     id
      +   │     originName
      +   │     publicUrl
      +   │     uuid
      +   │     width
      +   │  ["id"].type: integer
      +   │  ["originName"].type: string
      +   │  ["fileType"].type: string
      +   │  ["fileSize"].type: integer
      +   │  ["width"].type: integer
      +   │  ["height"].type: integer
      +   │  ["cropUrlTemplate"]:
      +   │    .type: string
      +   │    .format: uri
      +   │  ["publicUrl"].type: null
      +   │  ["uuid"]:
      +   │    .type: string
      +   ╰    .format: uuid

Activity

  1. self-assigned this
    on Sep 8, 2025
  2. Miskler commented on Sep 9, 2025

    @Miskler
    OwnerAuthor

    Исправлено в будущей версии, теперь дифф list[dict] ищет комбинации словарей в list_new <-> list_old чтобы минимизировать % изменений. Иными словами теперь алгоритм корректно определяет, когда список добавлен, когда удален, а когда модифицирован в массиве.

    Вывод в новой версии для этого примера будет выглядеть как:

    r .$id: old.json -> new.json
    
    m ["content"]["items"][0]["productBrand"]["mobileBannerImage"]:
    m   .anyOf:
           .type: null
        ╭  .type: object
    m   │  .required:
        │     cropUrlTemplate
        │     fileSize
        │     fileType
        │     height
    -   │     id
        │     originName
        │     publicUrl
        │     uuid
        │     width
        │  ["id"].type: integer
        │  ["originName"].type: string
        │  ["fileType"].type: string
        │  ["fileSize"].type: integer
        │  ["width"].type: integer
        │  ["height"].type: integer
        │  ["cropUrlTemplate"]:
        │    .format: uri
        │    .type: string
        │  ["publicUrl"].type: null
        │  ["uuid"]:
        │    .format: uuid
        ╰    .type: string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingcoreEngine / core logic

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions