
    
3j1                         S r SSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  S	/rS
rS\4S jr " S S\5      rg)z
Usage example:
    TODO
    N)ArgumentParser	Namespace)Path   )logging   )BaseDiffusersCLICommandModularPipelineBlockszconfig.jsonargsc                 B    [        U R                  U R                  5      $ N)CustomBlocksCommandblock_module_nameblock_class_name)r   s    Z/home/wildlama/miniconda3/lib/python3.13/site-packages/diffusers/commands/custom_blocks.pyconversion_command_factoryr   "   s    t55t7L7LMM    c                       \ rS rSr\S\4S j5       rSS\S\4S jjrS r	SS	 jr
S
 rS\R                  4S jrS rSrg)r   &   parserc                     U R                  S5      nUR                  S[        SSS9  UR                  S[        S SS9  UR                  [        S9  g )	Ncustom_blocksz--block_module_nameblock.pyz>Module filename in which the custom block will be implemented.)typedefaulthelpz--block_class_namezDName of the custom block. If provided None, we will try to infer it.)func)
add_parseradd_argumentstrset_defaultsr   )r   conversion_parsers     r   register_subcommand'CustomBlocksCommand.register_subcommand'   sg    "--o>&&!Q	 	' 	
 	&& W	 	' 	
 	&&,F&Gr   Nr   r   c                 f    [         R                  " S5      U l        [        U5      U l        X l        g )Nzdiffusers-cli/custom_blocks)r   
get_loggerloggerr   r   r   )selfr   r   s      r   __init__CustomBlocksCommand.__init__8   s)    (()FG!%&7!8 0r   c                    U R                  U R                  5      n[        U VVs1 s H  u  p#UiM	     snn5      nU R                  b?  U R	                  XR                  5      u  pVUc  Uc  [        SU R                   SU 35      eO4U R                  R                  SU SUS    S35        US   S   US   S   peSU R                  R                   3n[        R                  R                  U[        U R                  5      5      n[        R                  R                  U5      n	UR                  R                  U	5        [!        X5      " 5       R#                  [$        R&                  " 5       5        g s  snnf )	NzB`block_class_name` could not be retrieved. Available classes from z:
zFound classes: z will be using r   zP. If this needs to be changed, re-run the command specifying `block_class_name`.r   __dynamic__)_get_class_namesr   listr   _choose_block
ValueErrorr'   infostem	importlibutilspec_from_file_locationr    module_from_specloaderexec_modulegetattrsave_pretrainedosgetcwd)
r(   outcls_classes_foundchild_classparent_classmodule_namespecmodules
             r   runCustomBlocksCommand.run=   s\   ##D$:$:;4fcc45  ,(,(:(:3@U@U(V%K"|'; X--.c-B 
 KK!-a@P?Q Ra a ),Aq	3q6!9 $D$:$:$?$?#@A~~55k3tG]G]C^_006'$&66ryy{C- 5s   E5
c                 .    U H  u  p4X2:X  d  M  X44s  $    g)N)NN )r(   
candidateschosenr>   bases        r   r/   !CustomBlocksCommand._choose_block]   s     #IC}y  $ r   c                    UR                  SS9n [        R                  " X!S9n/ nUR
                   H  n[        U[        R                  5      (       d  M$  UR                   Vs/ s H  opR                  U5      =nc  M  UPM     n	n[         H'  n
X;   d  M
  UR                  UR                  U
45        M)     M     U$ ! [         a  n[	        SU< SU 35      UeS nAff = fs  snf )Nzutf-8)encoding)filenamezCould not parse z: )	read_textastparseSyntaxErrorr0   body
isinstanceClassDefbases_get_base_nameEXPECTED_PARENT_CLASSESappendname)r(   	file_pathsourcetreeeresultsnodebbname
base_namesalloweds              r   r-   $CustomBlocksCommand._get_class_namesc   s    $$g$6	K99V8D *,IIDdCLL11 *.eAATATUVAW8W%Je 3(NNDIIw#78 3  !  	K/	}BqcBCJ	K fs#   B? %C$ C$?
C!	CC!rb   c                    [        U[        R                  5      (       a  UR                  $ [        U[        R                  5      (       a?  U R                  UR                  5      nU(       a  U SUR                   3$ UR                  $ g )N.)rV   rR   Nameid	AttributerY   valueattr)r(   rb   vals      r   rY   "CustomBlocksCommand._get_base_namey   sd    dCHH%%77Ncmm,,%%djj1C+.cU!DII;'=DII=r   c                     [        U R                  5      R                  SS5      R                  SS5      S   nU U SU 30nSU0$ )Nz.py ri   r   auto_map)r    r   replacersplit)r(   rB   rA   rE   rt   s        r   _create_automap#CustomBlocksCommand._create_automap   sS    T++,44UB?FFsANrR#n&;-'@AH%%r   )r   r   r'   )r   Nr   )__name__
__module____qualname____firstlineno__staticmethodr   r#   r    r)   rF   r/   r-   rR   exprrY   rw   __static_attributes__rI   r   r   r   r   &   sW    HN H H 1# 1c 1
D@,388 &r   r   )__doc__rR   importlib.utilr3   r;   argparser   r   pathlibr   utilsr   rr   r	   rZ   CONFIGr   r   rI   r   r   <module>r      sN   
   	 .   % 33 	NY N^&1 ^&r   