Appending to key does not work
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Empieza reproduciendo el ejemplo de dos procesos con PickleShareDB y, después, lee sus puntos de entrada getitem y setitem para rastrear cómo se cargan y persisten los valores. Una prueba de regresión debe cubrir el añadido mediante la API de base de datos propuesta y la reapertura del almacén; se considera terminado cuando el valor añadido es visible desde la segunda instancia de la base de datos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 74
- Forks
- 25
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ipython/pickleshare
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
ipython/pickleshare#34 ·
-
from pickle to joblibAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
ipython/pickleshare#25 · 1 comentario ·
-
PEP8 - uncleanAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
ipython/pickleshare#15 ·
-
Pyflakes warningsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 42/100
ipython/pickleshare#14 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
ipython/pickleshare#11 ·
Todos los issues de ipython/pickleshare
Issues similares
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
openwisp/openwisp-utils#777 ·
-
Boolean statistics (Covered, Confident, JaccardDistant) aggregate to 1.0 without float weightsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
google-research/weatherbenchX#310 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
huggingface/peft#3955 ·
Los mantenedores suelen responder en 1 día
-
author-page correction
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
acl-org/acl-anthology#10313 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
AOSSIE-Org/Gitcord-GithubDiscordBot#147 · 1 comentario ·
Los mantenedores suelen responder en 1 día