
    9iI                     b    S SK Jr  S SKJr  S SKJrJrJrJr  SSK	J
r
  \
" 5       r	 " S S5      rg)	    )OrderedDict)Mapping)AnyListOptionalTuple   )
get_loggerc                   x    \ rS rSrSr  SS\\   S\\   S\\   4S jjrS\	S	\
\	\4   4S
 jrS\\	   4S jrSrg)RemoveColumnsCollator   a  Remove specified columns from the input mini-batch, and convert them to attributes.

For example: if columns_to_remove = ['id'], then user should call batch.id instead of batch['id'].

Args:
    data_collator: An inner data collator to collate the mini-batch
    columns_to_remove(`List[str]`): The redundant columns to be removed from the mini-batch
    model_name(`Optional[str]`): An optional model name to print into log
    description(`Optional[str]`): An optional description to print into log
Ncolumns_to_remove
model_namedescriptionc                 B    Xl         X l        X@l        X0l        SU l        g )NF)data_collatorr   r   r   message_logged)selfr   r   r   r   s        _/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/utils/data_collators.py__init__RemoveColumnsCollator.__init__   s#     +!2&$#    featurereturnc                 *   [        U[        5      (       d  US 4$ U R                  (       d  U R                  (       a  [	        [        UR                  5       5      [        U R                  5      -
  5      n[        U5      S:  a  U R                  c  SOSU R                   S3n[        R                  SU SU R                   SSR                  U5       S	SR                  U R                  5       S
SR                  U5       SU R                   S35        SU l        UR                  5        VVs0 s H  u  pEX@R                  ;   d  M  XE_M     nnnUR                  5        VVs0 s H  u  pEX@R                  ;  d  M  XE_M     nnnXg4$ s  snnf s  snnf )Nr    zin the z setzThe following columns z) don't have a corresponding argument in `z!.forward` and have been ignored: z, z.Legal columns: z. If z are not expected by `z/.forward`,  you can safely ignore this message.T)
isinstancer   r   r   listsetkeysr   lenr   loggerinfojoinitems)r   r   ignored_columnsdset_descriptionkvfeature_cleanfeature_unuseds           r   _remove_columns%RemoveColumnsCollator._remove_columns&   s   '7++D= ""t"GLLN#c$*@*@&AACO?#a')-)9)9)A2QUQaQaPbbfGg ,-=,> ?((I$))TcJdIe f&&*ii0F0F&G%H I99_566LT__L] ^;;< '+#  
'10F0F+F AD' 	 
  
'14J4J+J AD' 	 
 ,,

s   /F	F	$F=Ffeaturesc           
      F   / n/ nU H8  nU R                  U5      u  pEUR                  U5        UR                  U5        M:     [        U R                  U5      5      nUS   b9  US   R	                  5        H"  n[        XgU Vs/ s H  oUU   PM	     sn5        M$     U$ s  snf )Nr   )r,   appendr   r   r    setattr)r   r.   features_cleanfeatures_unusedr   r+   datakeys           r   __call__RemoveColumnsCollator.__call__?   s    G&*&:&:7&C#G!!'*"">2   4--n=>1)&q)..0>M$>MN3'o$  1 $s   B)r   r   r   r   r   )NN)__name__
__module____qualname____firstlineno____doc__r   strr   r   r   r   r   r,   r6   __static_attributes__ r   r   r   r      sj    	 %)%)$  9$ SM	$
 c]$-w -5#3F -2g r   r   N)collectionsr   collections.abcr   typingr   r   r   r   r"   r
   r   r?   r   r   <module>rC      s'    $ # - - 	? ?r   