Incorrect deserialization of subclasses, module changed to `types`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia eseguendo lo script di riproduzione dell’issue nel checkout corrente di cloudpickle, quindi segui il percorso di deserializzazione delle classi Parent e Child. Confronta module, la rappresentazione in stringa e il MRO risultanti con i valori main attesi. Il lavoro è completato quando la deserializzazione delle sottoclassi conserva il modulo e il MRO originali, con un test di regressione che copra la riproduzione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This issue is similar to #440 but I have verified it still happens after the fix (on latest master).
Somehow the deserialized subclass has __module__ of types instead of __main__. This also happen when the classes are moved to their separate files.
See the following repro script:
import cloudpickle
import multiprocessing as mp
print(cloudpickle.__version__)
class Parent:
pass
class Child(Parent):
pass
def get_mro(klass):
return [f"{base.__module__}.{base.__qualname__}" for base in klass.mro()]
def task(b: bytes):
cls = cloudpickle.loads(b)
return str(cls), get_mro(cls)
for klass in [Parent, Child]:
with mp.Pool() as pool:
cls_name, mros = pool.apply(task, (cloudpickle.dumps(klass),))
print()
print("local class name", str(klass))
print("deserialized class name", cls_name)
print()
print("local mro", get_mro(klass))
print("deserialized mro", mros)
My output on Python 3.7 f758eb34d1b3285dc582b73bfd8df4c47ed4fc68
2.1.0.dev0
local class name <class '__main__.Parent'>
deserialized class name <class '__main__.Parent'>
local mro ['__main__.Parent', 'builtins.object']
deserialized mro ['__main__.Parent', 'builtins.object']
local class name <class '__main__.Child'>
deserialized class name <class 'types.Child'>
local mro ['__main__.Child', '__main__.Parent', 'builtins.object']
deserialized mro ['types.Child', '__main__.Parent', 'builtins.object']
- Lingua principale
- Python
- Stelle
- 1.9k
- Fork
- 197
- Merge medio
- 1g 10h
- PR unite (30g)
- 1
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 cloudpipe/cloudpickle
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cloudpipe/cloudpickle#593 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
cloudpipe/cloudpickle#595 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
cloudpipe/cloudpickle#592 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
cloudpipe/cloudpickle#589 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
cloudpipe/cloudpickle#587 ·
Tutte le issue di cloudpipe/cloudpickle
Issue simili
-
correction metadata
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
acl-org/acl-anthology#10104 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug status/needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
prowler-cloud/prowler#12885 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Bug in GaussianTailProbabilityCalibrator: running_statistics=False still uses a windowed varianceApertabug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
selimfirat/pysad#107 ·
I maintainer di solito rispondono entro 1 giorno
-
bug ci-failure high priority
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
vllm-project/vllm-omni#8194 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno