register_pickle_by_value appears to not deliver monkeypatches to receiver
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
Línea de trabajo
Comienza reproduciendo el ejemplo de los dos entornos en torno a register_pickle_by_value(), cloudpickle.dumps() y pickle.loads(), comparando el comportamiento de tdb.my_function con el parche aplicado en ambos lados. Rastrea cómo se representan y resuelven la lambda y la referencia al módulo tdb; después documenta si el resultado observado es el esperado o identifica el comportamiento fallido mínimo que se debe probar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Should I expect register_pickle_by_value() to deliver monkeypatches? I don't know if what I'm observing is a bug or only missing functionality.
I have two python environments, A and B. Each has cloudpickle 3.1.2 installed and also a package that I'm developing at work. Let's call it "tdb". I run a script in environment A that looks like this:
import sys
import cloudpickle
import tdb
# monkeypatch an attribute of tdb.
tdb.my_function = lambda *args, **kwargs: ["fake", "values"]
def func():
return tdb.my_function()
assert func() == ["fake", "values"]
cloudpickle.register_pickle_by_value(tdb)
pickle_data = cloudpickle.dumps(func, protocol=4)
sys.stdout.buffer.write(pickle_data)
I'm piping the output to a script that runs in environment B
import pickle
import sys
pickle_data = sys.stdin.buffer.read()
print(pickle_data)
func = pickle.loads(pickle_data)
print(func())
But I see the original tdb.my_function being called in environment B, not my monkeypatch.
The odd thing is that I can see lambda when I print the pickle stream in environment B. It's there in some sense, but isn't being understood on the receiver side.
- Lenguaje dominante
- Python
- Estrellas
- 1.9k
- Forks
- 197
- Merge medio
- 1 d 10 h
- PR fusionados (30 d)
- 1
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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 cloudpipe/cloudpickle
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
cloudpipe/cloudpickle#593 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
cloudpipe/cloudpickle#595 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
cloudpipe/cloudpickle#592 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
cloudpipe/cloudpickle#589 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
cloudpipe/cloudpickle#587 ·
Todos los issues de cloudpipe/cloudpickle
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
browser-use/browser-use#5905 ·
-
type: enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ynput/ayon-python-api#363 ·
-
bug needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
modelscope/FunASR#3728 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
open-compass/opencompass#2655 ·