22
33# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/01_transform.ipynb.
44
5- # %% auto 0
5+ # %% auto # 0
66__all__ = ['Sig' , 'Transform' , 'InplaceTransform' , 'DisplayedTransform' , 'ItemTransform' , 'get_func' , 'Func' , 'compose_tfms' ,
77 'mk_transform' , 'gather_attrs' , 'gather_attr_names' , 'Pipeline' ]
88
9- # %% ../nbs/01_transform.ipynb 1
9+ # %% ../nbs/01_transform.ipynb #4af968d5
1010from typing import Any
1111import inspect
1212
1818
1919from .cast import *
2020
21- # %% ../nbs/01_transform.ipynb 6
21+ # %% ../nbs/01_transform.ipynb #83a170a6
2222def _get_name (o ):
2323 if hasattr (o ,'__qualname__' ): return o .__qualname__
2424 if hasattr (o ,'__name__' ): return o .__name__
2525 return o .__class__ .__name__
2626
27- # %% ../nbs/01_transform.ipynb 7
27+ # %% ../nbs/01_transform.ipynb #1e0369fe
2828def _is_tuple (o ): return isinstance (o , tuple ) and not hasattr (o , '_fields' )
2929
30- # %% ../nbs/01_transform.ipynb 8
30+ # %% ../nbs/01_transform.ipynb #d6cd8ac7
3131_tfm_methods = 'encodes' ,'decodes' ,'setups'
3232def _is_tfm_method (n , f ): return n in _tfm_methods and callable (f )
3333
34- # %% ../nbs/01_transform.ipynb 9
34+ # %% ../nbs/01_transform.ipynb #7635ad80
3535def _has_self_arg (f ) -> bool :
3636 try : return f .__code__ .co_varnames [0 ] == 'self'
3737 except (AttributeError , IndexError ): return False
3838
39- # %% ../nbs/01_transform.ipynb 10
39+ # %% ../nbs/01_transform.ipynb #4d3d57e2-bd3c-431e-bfbb-b3043d4a8a7c
4040def _merge_funcs (* fs ):
4141 "Merge multiple plum Functions by combining their methods"
4242 fs = fs [::- 1 ] # overwrite old implementations with new ones
@@ -45,14 +45,14 @@ def _merge_funcs(*fs):
4545 for m in f .methods : res .dispatch (m .implementation )
4646 return res
4747
48- # %% ../nbs/01_transform.ipynb 12
48+ # %% ../nbs/01_transform.ipynb #ea6f80d3
4949class _TfmDict (dict ):
5050 def __setitem__ (self , k , v ):
5151 if not _is_tfm_method (k , v ): return super ().__setitem__ (k ,v )
5252 if k not in self : super ().__setitem__ (k , Function (v ))
5353 self [k ].dispatch (v )
5454
55- # %% ../nbs/01_transform.ipynb 13
55+ # %% ../nbs/01_transform.ipynb #3c9b4601
5656class _TfmMeta (type ):
5757 @classmethod
5858 def __prepare__ (cls , name , bases ): return _TfmDict ()
@@ -82,7 +82,7 @@ def __new__(cls, name, bases, namespace):
8282 new_cls .__signature__ = inspect .signature (new_cls .__init__ )
8383 return new_cls
8484
85- # %% ../nbs/01_transform.ipynb 14
85+ # %% ../nbs/01_transform.ipynb #26e38f6d
8686class Transform (metaclass = _TfmMeta ):
8787 "Delegates (`__call__`,`decode`,`setup`) to (<code>encodes</code>,<code>decodes</code>,<code>setups</code>) if `split_idx` matches"
8888 split_idx ,init_enc ,order ,train_setup = None ,None ,0 ,None
@@ -137,21 +137,21 @@ def _do_call(self, nm, *args, **kwargs):
137137
138138add_docs (Transform , decode = "Delegate to decodes to undo transform" , setup = "Delegate to setups to set up transform" )
139139
140- # %% ../nbs/01_transform.ipynb 156
140+ # %% ../nbs/01_transform.ipynb #a494d4a5
141141class InplaceTransform (Transform ):
142142 "A `Transform` that modifies in-place and just returns whatever it's passed"
143143 def _call (self , fn , * args , split_idx = None , ** kwargs ):
144144 super ()._call (fn ,* args , split_idx = split_idx , ** kwargs )
145145 return args [0 ]
146146
147- # %% ../nbs/01_transform.ipynb 160
147+ # %% ../nbs/01_transform.ipynb #d92cfd60
148148class DisplayedTransform (Transform ):
149149 "A transform with a `__repr__` that shows its attrs"
150150
151151 @property
152152 def name (self ): return f"{ super ().name } -- { getattr (self ,'__stored_args__' ,{})} \n "
153153
154- # %% ../nbs/01_transform.ipynb 166
154+ # %% ../nbs/01_transform.ipynb #09e4c9ce
155155class ItemTransform (Transform ):
156156 "A transform that always take tuples as items"
157157 _retain = True
@@ -165,21 +165,21 @@ def _call1(self, x, name, **kwargs):
165165 return retain_type (y , x , Any )
166166
167167
168- # %% ../nbs/01_transform.ipynb 175
168+ # %% ../nbs/01_transform.ipynb #2bce2ab9
169169def get_func (t , name , * args , ** kwargs ):
170170 "Get the `t.name` (potentially partial-ized with `args` and `kwargs`) or `noop` if not defined"
171171 f = nested_callable (t , name )
172172 return f if not (args or kwargs ) else partial (f , * args , ** kwargs )
173173
174- # %% ../nbs/01_transform.ipynb 179
174+ # %% ../nbs/01_transform.ipynb #c7704028
175175class Func ():
176176 "Basic wrapper around a `name` with `args` and `kwargs` to call on a given type"
177177 def __init__ (self , name , * args , ** kwargs ): self .name ,self .args ,self .kwargs = name ,args ,kwargs
178178 def __repr__ (self ): return f'sig: { self .name } ({ self .args } , { self .kwargs } )'
179179 def _get (self , t ): return get_func (t , self .name , * self .args , ** self .kwargs )
180180 def __call__ (self ,t ): return mapped (self ._get , t )
181181
182- # %% ../nbs/01_transform.ipynb 182
182+ # %% ../nbs/01_transform.ipynb #cc174bb3
183183class _Sig ():
184184 def __getattr__ (self ,k ):
185185 def _inner (* args , ** kwargs ): return Func (k , * args , ** kwargs )
@@ -188,7 +188,7 @@ def _inner(*args, **kwargs): return Func(k, *args, **kwargs)
188188Sig = _Sig ()
189189
190190
191- # %% ../nbs/01_transform.ipynb 188
191+ # %% ../nbs/01_transform.ipynb #63fa926a
192192def compose_tfms (x , tfms , is_enc = True , reverse = False , ** kwargs ):
193193 "Apply all `func_nm` attribute of `tfms` on `x`, maybe in `reverse` order"
194194 if reverse : tfms = reversed (tfms )
@@ -198,13 +198,13 @@ def compose_tfms(x, tfms, is_enc=True, reverse=False, **kwargs):
198198 return x
199199
200200
201- # %% ../nbs/01_transform.ipynb 193
201+ # %% ../nbs/01_transform.ipynb #3da3898b
202202def mk_transform (f ):
203203 "Convert function `f` to `Transform` if it isn't already one"
204204 f = instantiate (f )
205205 return f if isinstance (f ,(Transform ,Pipeline )) else Transform (f )
206206
207- # %% ../nbs/01_transform.ipynb 194
207+ # %% ../nbs/01_transform.ipynb #7456b063
208208def gather_attrs (o , k , nm ):
209209 "Used in __getattr__ to collect all attrs `k` from `self.{nm}`"
210210 if k .startswith ('_' ) or k == nm : raise AttributeError (k )
@@ -213,12 +213,12 @@ def gather_attrs(o, k, nm):
213213 if not res : raise AttributeError (k )
214214 return res [0 ] if len (res )== 1 else L (res )
215215
216- # %% ../nbs/01_transform.ipynb 195
216+ # %% ../nbs/01_transform.ipynb #f9965510
217217def gather_attr_names (o , nm ):
218218 "Used in __dir__ to collect all attrs `k` from `self.{nm}`"
219219 return L (getattr (o ,nm )).map (dir ).concat ().unique ()
220220
221- # %% ../nbs/01_transform.ipynb 196
221+ # %% ../nbs/01_transform.ipynb #a1928a2e
222222class Pipeline :
223223 "A pipeline of composed (for encode/decode) transforms, setup with types"
224224 def __init__ (self , funcs = None , split_idx = None ):
0 commit comments