Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Appending to key does not work

Aperta
#30 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
database

Direzione di ricerca

Inizia riproducendo l'esempio a due processi con PickleShareDB, quindi leggi i suoi punti di ingresso getitem e setitem per tracciare come vengono caricati e persistiti i valori. Un test di regressione dovrebbe coprire l'aggiunta tramite l'API del database proposta e la riapertura dello store; il lavoro è completato quando il valore aggiunto è visibile dalla seconda istanza del database.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hello,
I've noticed that using .append() on a PickleShare Key does not represent the changes that were made.

Example

Command Line 1:

>>> db = PickleShareDB('C:\\Users\\NULL\\AppData\\Local\\Temp\\test')
>>> db['stack'] = []
>>> db['stack']
[]

Command Line 2:

>>> db = PickleShareDB('C:\\Users\\NULL\\AppData\\Local\\Temp\\test')
>>> db['stack']
[]

Command Line 1:

>>> db['stack'].append("Hello World!")
>>> db['stack']
['Hello World!']

Command Line 2:

>>> db['stack']
[]

In fact, I added my own debugging, and the .append() does not even trigger the __setitem__ function of the PickleShareDB class.

>>> from pickleshare import *
>>> db = PickleShareDB('test')
This is the debugged version.
>>> db['testvalue'] = 1234567
Set item called with key:testvalue and value:1234567
>>> db['stack'] = []
Set item called with key:stack and value:[]
>>> db['stack'].append("Hello")

Fix

Since the __setitem__ magic method only triggers when the value of a key is set, or updated, it does not trigger when you .append() something.
Also, there is no magic method that triggers when an .append() happens
So I suggest adding an .append() function:

    def append(self, key, value):
        currentValue = self[key]
        currentValue.append(value)
        updatedValue = currentValue
        self[key] = updatedValue

Test

Command Line 1:

>>> db = PickleShareDB('C:\\Users\\NULL\\AppData\\Local\\Temp\\test')
>>> db['stack'] = []
>>> db['stack']
[]

Command Line 2:

>>> db = PickleShareDB('C:\\Users\\NULL\\AppData\\Local\\Temp\\test')
>>> db['stack']
[]

Command Line 1:

>>> db.append('stack', 'Hello World!')
>>> db['stack']
['Hello World!']

Command Line 2:

>>> db['stack']
['Hello World!']

It would be nice if you could overwrite the default .append() function, like db['stack'].append(0) but since every db['key'] is not an instance of the class PickleShareDB but a list, I don't want to mess with it :D

Lingua principale
Python
Stelle
74
Fork
25
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ipython/pickleshare

Tutte le issue di ipython/pickleshare

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.