@@ -101,14 +101,22 @@ class SeqTransformer(Transformer):
101101 Sequence Transformers receive unprocessed parent columns, references and the ID table.
102102 Then, it is up to them to process the data and return the encoded version.
103103 They can also push columns upstream to parents, through context tables.
104+
105+ Event-based data is sequential. The Sequential transformers may require the
106+ order of each row. For this case, the main Sequence Transformer, which is named
107+ the sequencer, is processed first and returns an additional data column and
108+ attribute during fitting. This column and attribute are fed to the other
109+ sequence transformers.
104110 """
105111
106112 def fit (
107113 self ,
108114 data : pd .Series | pd .DataFrame ,
109115 ref : dict [str , pd .DataFrame ] | None = None ,
110116 ids : pd .DataFrame | None = None ,
111- ) -> tuple [Attributes , dict [str , Attributes ]] | None :
117+ seq_attr : Attribute | None = None ,
118+ seq : pd .Series | None = None ,
119+ ) -> tuple [Attribute , pd .Series ] | None :
112120 pass
113121
114122 def reduce (self , other : "SeqTransformer" ):
@@ -122,16 +130,19 @@ def fit_transform(
122130 data : pd .Series | pd .DataFrame ,
123131 ref : dict [str , pd .DataFrame ] | None = None ,
124132 ids : pd .DataFrame | None = None ,
125- ) -> tuple [pd .DataFrame , dict [str , pd .DataFrame ]]:
126- self .fit (data , ref )
127- return self .transform (data , ref )
133+ seq_attr : Attribute | None = None ,
134+ seq : pd .Series | None = None ,
135+ ) -> tuple [pd .DataFrame , dict [str , pd .DataFrame ]] | tuple [pd .DataFrame , dict [str , pd .DataFrame ], pd .Series ]:
136+ self .fit (data , ref , ids , seq_attr , seq )
137+ return self .transform (data , ref , ids , seq )
128138
129139 def transform (
130140 self ,
131141 data : pd .Series | pd .DataFrame ,
132142 ref : dict [str , pd .DataFrame ] | None = None ,
133143 ids : pd .DataFrame | None = None ,
134- ) -> tuple [pd .DataFrame , dict [str , pd .DataFrame ]]:
144+ seq : pd .Series | None = None ,
145+ ) -> tuple [pd .DataFrame , dict [str , pd .DataFrame ]] | tuple [pd .DataFrame , dict [str , pd .DataFrame ], pd .Series ]:
135146 raise NotImplementedError ()
136147
137148 def reverse (
@@ -140,6 +151,7 @@ def reverse(
140151 ctx : dict [str , pd .DataFrame ],
141152 ref : dict [str , pd .DataFrame ] | None = None ,
142153 ids : pd .DataFrame | None = None ,
154+ seq : pd .Series | None = None ,
143155 ) -> pd .DataFrame :
144156 """When reversing, the data column contains encoded data, whereas the ref
145157 column contains decoded/original data. Therefore, the referred columns have
0 commit comments