a
    AþdÇ  ã                   @   s´  d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZ dd„ Zdd„ Ze ¡ e_e ej¡ e e¡ e e¡ e ej¡ ej e dejd	d
ejdd„ ejde ddej dddgi¡e dd¡e dd¡ !d¡e g dej"dg d¢i¡e d dej#dd i¡dœ¡¡ ej e dde dd¡i¡¡ ej$dœd d!„Z%ej&ed"œd#d$„Z'e (e'¡ e  )d%¡Z*d&d'„ Ze e¡ ej+ ,d(ej-¡ dS ))é    N)ÚFastAPI)Úscript_callbacksÚui_extra_networksÚextra_networksÚsharedc                   C   s   t j ¡  d S ©N)ÚnetworksÚ	originalsÚundo© r   r   úS/var/www/html/stable-diffusion-webui/extensions-builtin/Lora/scripts/lora_script.pyÚunload   s    r   c                   C   s6   t  t ¡ ¡ t ¡ t_t 	tj¡ t 
tjd¡ d S )NZlyco)r   Úregister_pageÚui_extra_networks_loraZExtraNetworksPageLoraÚextra_networks_loraZExtraNetworkLorar   Zextra_network_lorar   Úregister_extra_networkÚregister_extra_network_aliasr   r   r   r   Ú	before_ui   s    
r   )r   zExtra NetworksÚNonezAdd network to promptc                   C   s   ddgt j¢iS )NÚchoicesr   )r   Úavailable_networksr   r   r   r   Ú<lambda>$   ó    r   )ÚrefreshzAlias from filez'When adding to prompt, refer to Lora byr   ÚFilenameTzAdd Lora hashes to infotextFz)Always show all networks on the Lora pagezXotherwise, those detected as for incompatible version of Stable Diffusion will be hiddenz4Hide networks of unknown versions for model versions)ZSD1ZSD2ZSDXLz0Number of Lora networks to keep cached in memoryÚ	precision)Zsd_loraZlora_preferred_nameZlora_add_hashes_to_infotextZlora_show_allZlora_hide_unknown_for_versionsÚlora_in_memory_limit)ÚcompatibilityÚCompatibilityZlora_functionalz Lora/Networks: use old method that takes longer when you have multiple Loras active and produces same results as kohya-ss/sd-webui-additional-networks extension©Úobjc                 C   s   | j | j| j| jdœS )N)ÚnameÚaliasÚpathÚmetadata)r!   r"   Úfilenamer$   r   r   r   r   Úcreate_lora_json2   s
    ür&   )Ú_Úappc                 C   s(   |  d¡dd„ ƒ}| d¡dd„ ƒ}d S )Nz/sdapi/v1/lorasc                   Ó   s   dd„ t j ¡ D ƒS )Nc                 S   s   g | ]}t |ƒ‘qS r   )r&   )Ú.0r    r   r   r   Ú
<listcomp>>   r   z3api_networks.<locals>.get_loras.<locals>.<listcomp>)r   r   Úvaluesr   r   r   r   Ú	get_loras<   s    zapi_networks.<locals>.get_lorasz/sdapi/v1/refresh-lorasc                   Ó   s   t  ¡ S r   )r   Úlist_available_networksr   r   r   r   Úrefresh_loras@   s    z#api_networks.<locals>.refresh_loras)ÚgetÚpost)r'   r(   r,   r.   r   r   r   Úapi_networks;   s    
r1   z<lora:([^:]+):c                    sZ   |  d¡‰ ˆ sd S dd„ ˆ  d¡D ƒ‰ dd„ ˆ D ƒ‰ ‡ fdd„}t t||d	 ¡|d	< d S )
NzLora hashesc                 S   s   g | ]}|  ¡  d d¡‘qS )ú:é   )ÚstripÚsplit©r)   Úxr   r   r   r*   O   r   z#infotext_pasted.<locals>.<listcomp>ú,c                 S   s*   i | ]"}|d    ¡  dd¡|d   ¡ “qS )r   r8   Ú r3   )r4   Úreplacer6   r   r   r   Ú
<dictcomp>P   r   z#infotext_pasted.<locals>.<dictcomp>c                    sT   |   d¡}ˆ  |¡}|d u r&|   d¡S tj |¡}|d u rD|   d¡S d| ¡ › dS )Nr3   r   z<lora:r2   )Úgroupr/   r   Zavailable_network_hash_lookupZ	get_alias)Úmr"   Ú	shorthashZnetwork_on_disk©Úhashesr   r   Únetwork_replacementR   s    



z,infotext_pasted.<locals>.network_replacementÚPrompt)r/   r5   ÚreÚsubÚre_lora)ÚinfotextÚdrA   r   r?   r   Úinfotext_pastedJ   s    
rH   r   ).rC   ÚgradioÚgrÚfastapir   Únetworkr   ZloraZlora_patchesr   r   Úmodulesr   r   r   r   r   r   ZLoraPatchesr	   Úon_model_loadedZ'assign_network_names_to_compvis_modulesÚon_script_unloadedÚon_before_uiÚon_infotext_pastedrH   Úoptions_templatesÚupdateÚoptions_sectionÚ
OptionInfoÚDropdownr-   ÚRadioÚinfoÚCheckboxGroupÚNumberZNetworkOnDiskr&   ÚBlocksr1   Úon_app_startedÚcompilerE   ÚoptsÚonchangeZpurge_networks_from_memoryr   r   r   r   Ú<module>   sD   



ú

ÿ	



