@@ -28,7 +28,7 @@ def get_loader(self, cls, format=None):
2828 iter (
2929 [
3030 fn
31- for (( fmt , cls_ ), fn ) in self ._loaders .items ()
31+ for (cls_ , fmt ), fn in self ._loaders .items ()
3232 if fmt == format and issubclass (cls , cls_ )
3333 ]
3434 )
@@ -39,7 +39,7 @@ def get_writer(self, cls, format=None):
3939 iter (
4040 [
4141 fn
42- for (( fmt , cls_ ), fn ) in self ._writers .items ()
42+ for (cls_ , fmt ), fn in self ._writers .items ()
4343 if fmt == format and issubclass (cls , cls_ )
4444 ]
4545 )
@@ -48,18 +48,20 @@ def get_writer(self, cls, format=None):
4848 def register_loader (self , cls , format , function ):
4949 if format in self ._loaders :
5050 raise ValueError (f"Loader for format { format } already registered." )
51- self ._loaders [cls , format ] = ( cls , function )
51+ self ._loaders [cls , format ] = function
5252
5353 def register_writer (self , cls , format , function ):
5454 if format in self ._writers :
5555 raise ValueError (f"Writer for format { format } already registered." )
56- self ._writers [cls , format ] = ( cls , function )
56+ self ._writers [cls , format ] = function
5757
58- def load (self , cls , * args , format = None , ** kwargs ):
59- return self .get_loader (cls , format )(* args , ** kwargs )
58+ def load (self , cls , instance , * args , format = None , ** kwargs ):
59+ _load = self .get_loader (cls , format )
60+ _load (instance , * args , ** kwargs )
6061
61- def write (self , cls , * args , format = None , ** kwargs ):
62- return self .get_writer (cls , format )(* args , ** kwargs )
62+ def write (self , cls , instance , * args , format = None , ** kwargs ):
63+ _write = self .get_writer (cls , format )
64+ _write (instance , * args , ** kwargs )
6365
6466
6567DEFAULT_REGISTRY = Registry ()
@@ -103,17 +105,17 @@ class Loader(IODescriptor):
103105 """Descriptor for loading data from file."""
104106
105107 def __init__ (self , instance , cls ):
106- super ().__init__ (instance , cls , "load" , registry = None )
108+ super ().__init__ (instance , cls , "load" , registry = DEFAULT_REGISTRY )
107109
108110 def __call__ (self , * args , ** kwargs ) -> None :
109- return self .registry .load (self ._cls , * args , ** kwargs )
111+ return self .registry .load (self ._cls , self . _instance , * args , ** kwargs )
110112
111113
112114class Writer (IODescriptor ):
113115 """Descriptor for writing data to file."""
114116
115117 def __init__ (self , instance , cls ):
116- super ().__init__ (instance , cls , "write" , registry = None )
118+ super ().__init__ (instance , cls , "write" , registry = DEFAULT_REGISTRY )
117119
118120 def __call__ (self , * args , ** kwargs ) -> None :
119- return self .registry .write (self ._cls , * args , ** kwargs )
121+ return self .registry .write (self ._cls , self . _instance , * args , ** kwargs )
0 commit comments