@@ -907,6 +907,34 @@ def get_siblings(self, a):
907907 return [x () for x in siblings ]
908908
909909
910+ class GrouperView :
911+ """Immutable view over a `.Grouper`."""
912+
913+ def __init__ (self , grouper ):
914+ self ._grouper = grouper
915+
916+ class _GrouperMethodForwarder :
917+ def __init__ (self , deprecated_kw = None ):
918+ self ._deprecated_kw = deprecated_kw
919+
920+ def __set_name__ (self , owner , name ):
921+ wrapped = getattr (Grouper , name )
922+ forwarder = functools .wraps (wrapped )(
923+ lambda self , * args , ** kwargs : wrapped (
924+ self ._grouper , * args , ** kwargs ))
925+ if self ._deprecated_kw :
926+ forwarder = _api .deprecated (** self ._deprecated_kw )(forwarder )
927+ setattr (owner , name , forwarder )
928+
929+ __contains__ = _GrouperMethodForwarder ()
930+ __iter__ = _GrouperMethodForwarder ()
931+ joined = _GrouperMethodForwarder ()
932+ get_siblings = _GrouperMethodForwarder ()
933+ clean = _GrouperMethodForwarder (deprecated_kw = dict (since = "3.6" ))
934+ join = _GrouperMethodForwarder (deprecated_kw = dict (since = "3.6" ))
935+ remove = _GrouperMethodForwarder (deprecated_kw = dict (since = "3.6" ))
936+
937+
910938def simple_linear_interpolation (a , steps ):
911939 """
912940 Resample an array with ``steps - 1`` points between original point pairs.
0 commit comments