Appending to key does not work
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ipython/pickleshare
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
ipython/pickleshare#34 ·
-
from pickle to joblibAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
ipython/pickleshare#25 · 1 commento ·
-
PEP8 - uncleanAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 30/100
ipython/pickleshare#15 ·
-
Pyflakes warningsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 42/100
ipython/pickleshare#14 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
ipython/pickleshare#11 ·
Tutte le issue di ipython/pickleshare
Issue simili
-
Broken links found in docsApertadocs pydanty:is-working
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
pydantic/pydantic-ai#8863 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
run-llama/llama_index#23278 ·
I maintainer di solito rispondono entro 2 giorni
-
documentation from-review-extraction github-actions priority: low severity:nit
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
LearningCircuit/local-deep-research#6946 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
oracle/langchain-oracle#323 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
tenstorrent/tt-metal#58057 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno