
    =pj!                       S r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
JrJrJr  SSKJr  SSKJr   " S	 S
\5      r " S S\5      r " S S\5      r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       rSS.     S#S jjr    S$S jr " S S5      r\" 5       r      S%S jrS&S jrS'S jrS(S  jr S)S! jr!S*S" jr"g)+uG   Registry for model_name × engine bindings and structured binding data.    )annotations)	dataclass)AnyCallableDictMappingOptionalSequenceTupleType   )errors   )BasePredictorc                      \ rS rSrSrSrg)ModelRegistryLookupError   z%Base error for model binding lookups. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       f/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddlex/inference/models/bindings/registry.pyr   r      s    /r   r   c                  :   ^  \ rS rSrSrSU 4S jjrSS jrSrU =r$ )UnknownModelError   z8Raised when a model name has no explicit registry entry.c                l   > Xl         [        U5      U l        [        TU ]  U R                  5       5        g N)
model_nametupleknown_modelssuper__init___build_message)selfr"   r$   	__class__s      r   r&   UnknownModelError.__init__"   s+    $!,/,,./r   c                    SU R                   < S3nU R                  (       a  US[        U R                  5      < S3-  nU$ )NModel z is not registered.z Known models: .)r"   r$   list)r(   msgs     r   r'    UnknownModelError._build_message'   sC    t))<=_T$*;*;%<$?qAAC
r   )r$   r"   )r"   strr$   Sequence[str]returnr1   	r   r   r   r   r   r&   r'   r   __classcell__r)   s   @r   r   r      s    B0
 r   r   c                  F   ^  \ rS rSrSr      SU 4S jjrSS jrSrU =r$ )UnsupportedEngineError.   zGRaised when a registered model has no binding for the requested engine.c                x   > Xl         X l        [        U5      U l        [        TU ]  U R                  5       5        g r!   )r"   enginer#   supported_enginesr%   r&   r'   )r(   r"   r<   r=   r)   s       r   r&   UnsupportedEngineError.__init__1   s3     %!&'8!9,,./r   c                n    SU R                   < SU R                  < S[        U R                  5      < S3$ )Nr,   z does not support engine z. Supported engines: r-   )r"   r<   r.   r=   r(   s    r   r'   %UnsupportedEngineError._build_message<   s=    T__''@ P""&t'='=">!AD	
r   )r<   r"   r=   )r"   r1   r<   r1   r=   r2   r3   r5   r7   s   @r   r9   r9   .   s1    Q	0	0 	0 )		0
 
r   r9   T)frozenc                  (    \ rS rSr% SrSrS\S'   Srg)RunnerBindingC   z@Structured binding data currently interpreted by runner engines.NOptional[Callable[..., Any]]runner_builderr   )r   r   r   r   r   rG   __annotations__r   r   r   r   rD   rD   C   s    J37N07r   rD   c                  2    \ rS rSr% SrS\S'   SrS\S'   Srg)	BindingJ   zRBinding of (model_name, engine) to a predictor class and optional structured data.Type[BasePredictor]	predictorNOptional[RunnerBinding]runner_bindingr   r   r   r   r   r   rH   rO   r   r   r   r   rJ   rJ   J   s    \"".2N+2r   rJ   c                  2    \ rS rSr% SrS\S'   SrS\S'   Srg)	BindingRegistrationR   zIRegistration entry with model names and optional structured binding data.Tuple[str, ...]model_namesNrN   rO   r   rP   r   r   r   rR   rR   R   s    S  .2N+2r   rR   NrG   c               t    [        U [        5      (       a  U 4n SnUb	  [        US9n[        [	        U 5      US9$ )zBCreate a registration entry with optional structured binding data.NrV   )rU   rO   )
isinstancer1   rD   rR   r#   )rU   rG   rO   s      r   create_binding_registrationrY   Z   sD     +s##"nN!&nE+&~ r   c                    [        U [        5      (       a  U 4$ [        U [        5      (       a  [        U 4S94$ [        U 5      nU(       a  [	        S U 5       5      (       a  U$ [        [        U5      S94$ )N)rU   c              3  B   #    U  H  n[        U[        5      v   M     g 7fr!   )rX   rR   ).0xs     r   	<genexpr>+_normalize_registrations.<locals>.<genexpr>r   s     GAZ#677s   )rX   rR   r1   r#   all)valueitemss     r   _normalize_registrationsrc   j   si     %,--x%#9;;%LEGGGGE%L9;;r   c                  j    \ rS rSrSrSS jr      SS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)BindingRegistryw   zBRegistry mapping (model_name, engine) pairs to predictor bindings.c                    0 U l         g r!   	_registryr@   s    r   r&   BindingRegistry.__init__z   s	    8:r   c           
        UR                  5        H  u  p4UR                  5       n[        U5       H  nUR                   H  nU R                  R                  U0 5      n[        UUR                  S9nUR                  U5      n	U	bH  U	R                  ULd  U	R                  UR                  :w  a  [        R                  " SU< SU< S35      eXU'   M     M     M     g)8Register predictor class for (model_name, engine) pairs.)rM   rO   Nz#Conflicting registration for model z and engine r-   )rb   lowerrc   rU   ri   
setdefaultrJ   rO   getrM   r   DuplicateRegistrationError)
r(   predictor_clsbindingsr<   registrationregr"   
engine_mapbindingexistings
             r   registerBindingRegistry.register}   s     %-NN$4 F\\^F/="%//J!%!:!::r!JJ%"/'*'9'9G  *~~f5H+ **-?#22g6L6LL$??A* P**016  *1v& #2 > %5r   c                    U R                   R                  U5      nU(       d  [        U[        U R                   5      5      e[        U5      $ zNGet supported engines for a model. Raises UnknownModelError if not registered.)ri   ro   r   r#   r(   r"   ru   s      r   get_supported_engines%BindingRegistry.get_supported_engines   s:    ^^''
3
#Jdnn0EFFZ  r   c                ^    U R                   R                  U5      nU(       d  g[        U5      $ )=Get supported engines for a model, or None if not registered.N)ri   ro   r#   r|   s      r   try_get_supported_engines)BindingRegistry.try_get_supported_engines   s'    ^^''
3
Z  r   c                    U R                   R                  U5      nU(       d  [        U[        U R                   5      5      eUR                  UR	                  5       5      nUc  [        X[        U5      5      eU$ zTGet binding for (model_name, engine). Raises on unknown model or unsupported engine.)ri   ro   r   r#   rm   r9   )r(   r"   r<   ru   rv   s        r   get_bindingBindingRegistry.get_binding   s_    ^^''
3
#Jdnn0EFF..0?(U:=NOOr   c                    U R                   R                  U5      nU(       d  gUR                  UR                  5       5      $ );Get binding for (model_name, engine), or None if not found.N)ri   ro   rm   )r(   r"   r<   ru   s       r   try_get_bindingBindingRegistry.try_get_binding   s1    ^^''
3
~~flln--r   c                8    U R                  X5      R                  $ z-Get predictor class for (model_name, engine).)r   rM   )r(   r"   r<   s      r   get_predictor_cls!BindingRegistry.get_predictor_cls   s    
3===r   rh   N)r4   Nonerq   rL   rr   zQMapping[str, Sequence[str] | BindingRegistration | Sequence[BindingRegistration]]r4   r   r"   r1   r4   rT   r"   r1   r4   zOptional[Tuple[str, ...]]r"   r1   r<   r1   r4   rJ   r"   r1   r<   r1   r4   zOptional[Binding]r"   r1   r<   r1   r4   rL   )r   r   r   r   r   r&   rx   r}   r   r   r   r   r   r   r   r   re   re   w   sD    L;1*1
1 
1:!!.>r   re   c                .    [         R                  X5        g)rl   N)default_registryrx   )rq   rr   s     r   register_predictor_binding_mapr      s     m6r   c                ,    [         R                  U 5      $ r{   )r   r}   r"   s    r   r}   r}      s    11*==r   c                ,    [         R                  U 5      $ )r   )r   r   r   s    r   r   r      s    55jAAr   c                ,    [         R                  X5      $ r   )r   r   r"   r<   s     r   r   r      s    ''
;;r   c                ,    [         R                  X5      $ )r   )r   r   r   s     r   r   r      s    ++J??r   c                ,    [         R                  X5      $ r   )r   r   r   s     r   r   r      s    --jAAr   )rU   zSequence[str] | strrG   rF   r4   rR   )ra   zCSequence[str] | BindingRegistration | Sequence[BindingRegistration]r4   zTuple[BindingRegistration, ...]r   r   r   r   r   r   )#r   
__future__r   dataclassesr   typingr   r   r   r   r	   r
   r   r   utilsr   
predictorsr   LookupErrorr   r   r9   rD   rJ   rR   rY   rc   re   r   r   r}   r   r   r   r   r   r   r   <module>r      s0    N " ! P P P  &0{ 00 
5 
* $8 8 8 $3 3 3 $3 3 3 48$ 1 	 
<N
<$
<D> D>N #$ 7&77 
7>
B
<
@
Br   