Cannot pickle functions decorated through contextlib
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Reproduzca el fallo de los ejemplos de demo.py e inspeccione cloudpickle/cloudpickle_fast.py alrededor de la ruta de dump que se muestra en el traceback, junto con el comportamiento de contextmanager y asynccontextmanager de Python. Se considera completado cuando ambas funciones decoradas pueden serializarse y deserializarse sin errores de generator o async_generator, conservando su comportamiento de decorador.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
It's a somewhat little known feature of contextlib.contextmanager and contextlib.asynccontextmanager that you can use the decorated functions not only as context managers, but also as function decorators:
import asyncio
from contextlib import contextmanager, asynccontextmanager
@contextmanager
def c():
print("before")
yield
print("after")
@c()
def f():
print("hello world")
f()
@asynccontextmanager
async def ac():
print("async before")
yield
print("async after")
@ac()
async def af():
print("async hello world")
asyncio.run(af())
before
hello world
after
async before
async hello world
async after
cloudpickle 2.2.1 fails to serialize functions decorated this way:
>>> pickle.loads(pickle.dumps(f))
<function f at 0x7f949972d580>
>>> pickle.loads(pickle.dumps(af))
<function af at 0x7f9499770180>
>>> cloudpickle.dumps(f)
Traceback (most recent call last):
File "demo.py", line 34, in <module>
cloudpickle.dumps(f)
^^^^^^^^^^^^^^^^^^^^
File "lib/python3.11/site-packages/cloudpickle/cloudpickle_fast.py", line 73, in dumps
cp.dump(obj)
File "lib/python3.11/site-packages/cloudpickle/cloudpickle_fast.py", line 632, in dump
return Pickler.dump(self, obj)
^^^^^^^^^^^^^^^^^^^^^^^
TypeError: cannot pickle 'generator' object
>>> cloudpickle.dumps(af)
Traceback (most recent call last):
File "demo.py", line 35, in <module>
cloudpickle.dumps(af)
^^^^^^^^^^^^^^^^^^^^^
File "lib/python3.11/site-packages/cloudpickle/cloudpickle_fast.py", line 73, in dumps
cp.dump(obj)
File "lib/python3.11/site-packages/cloudpickle/cloudpickle_fast.py", line 632, in dump
return Pickler.dump(self, obj)
^^^^^^^^^^^^^^^^^^^^^^^
TypeError: cannot pickle 'async_generator' object
- Lenguaje dominante
- Python
- Estrellas
- 1.9k
- Forks
- 197
- Merge medio
- 1 d 10 h
- PR fusionados (30 d)
- 1
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. 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 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
-
correction metadata
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
acl-org/acl-anthology#10104 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug status/needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
prowler-cloud/prowler#12885 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Bug in GaussianTailProbabilityCalibrator: running_statistics=False still uses a windowed varianceAbiertobug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
selimfirat/pysad#107 ·
Los mantenedores suelen responder en 1 día
-
bug ci-failure high priority
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
vllm-project/vllm-omni#8194 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día