Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Feature request: extend `merge_update` into BoxLists

Offen
#263 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

@Kaustbh arbeitet bereits daran.

Seit 03.5.2024.

  • #323 von @ChrisJr404 — offen

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
backend

Rechercherichtung

Beginne damit, das im Issue beschriebene Verhalten von merge_update und die Behandlung von BoxLists zu lokalisieren, und untersuche anschließend, sofern vorhanden, bestehende merge-bezogene Tests. Vergleiche das aktuelle Ersetzen der Daten mit der erwarteten Aktualisierung Element für Element, und definiere den Abschluss so, dass vorhandene Listen-Dictionaries erhalten bleiben und Felder aus übereinstimmenden eingehenden Elementen hinzugefügt werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement

Current

If I have these two BoxDicts:

In [1]: from box import Box
   ...: dict1 = Box({'data': [{'foo': 1, 'foobar': 20}, {'bar': 2}] }, box_dots=True)
   ...: dict2 = Box({'data': [{'foo': 1, 'baz': 10}] }, box_dots=True)
   ...: print(dict1.keys(dotted=True))
   ...: print(dict2.keys(dotted=True))
['data[0].foo', 'data[0].foobar', 'data[1].bar']
['data[0].baz', 'data[0].foo']

Then, if I use merge_update I get:

In [2]: dict1 + dict2
Out[2]: Box({'data': [{'foo': 1, 'baz': 10}]})

Expected behaviour

When merging the two datasets, it would be great if Box entered each list element and updated the dictionary:

In [1]: dict1 + dict2
Out[1]: Box({'data': [{'foo': 1, 'foobar': 20, 'baz': 10}, {'bar': 2}]})

Since the BoxDict has a pseudo-key for elements of the lists (e.g., 'data[0].foo') it feels like it should be possible.

Versions

python: 3.11
box: 7.1.1

Vorherrschende Sprache
Python
Sterne
2.8k
Forks
144
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus cdgriffith/Box

Alle Issues in cdgriffith/Box

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.