+
    gi                        R t ^ RIHt ^ RIHt ^ RIHt ]'       d   ^ RIHt R R lt	R R lt
R	 R
 ltR R lt. ROtR# )z
Provider factories with lazy imports.

All provider classes are imported lazily to avoid loading heavy dependencies
(torch, selenium, playwright) at module import time. Use the factory functions
to get provider instances.
)annotations)get_provider_registry)TYPE_CHECKING)VoiceSettingsc                   V ^8  d   QhRR/# )   settingsz'VoiceSettings' )formats   "O/home/gabslocked/Desktop/Projetos/Images/video_automation/providers/__init__.py__annotate__r      s     2/ 2/ 2/    c                    \        V RR4      pVR8X  dj   ^ RIHp VP                  4       '       d+   T! \        V RR4      \        V RR4      ;'       g    RR7      # ^ RIpVP                  R	4       ^ R
IHp V! V 4      # VR8X  dn   ^ RIH	p \        V RR4      p\        V RR4      p\        V RR4      p\        V RR4      p	\        V RR4      p
T! T
TTV'       d   \        V4      V	R7      # RV	R7      # ^ R
IHp V! V 4      # )z
Factory function to get the appropriate TTS provider based on settings.

Args:
    settings: VoiceSettings with tts_provider field

Returns:
    TTS provider instance (ChatterBoxTTSProvider or ElevenLabsTTSProvider)
tts_provider
chatterbox)ChatterBoxTTSProviderchatterbox_languageptchatterbox_voice_refN)language	voice_refzoChatterBox not installed, falling back to ElevenLabs. Install with: pip install chatterbox-tts torch torchaudio)ElevenLabsTTSProviderpollinations)PollinationsTTSProviderpollinations_modelopenaipollinations_voicenovapollinations_speedg      ?pollinations_formatmp3pollinations_api_key)api_keymodelvoicespeedaudio_format)getattrproviders.chatterbox_providerr   is_availableloggingwarningproviders.tts_providerr   #providers.pollinations_tts_providerr   float)r   providerr   r*   r   r   r#   r$   r%   r&   r"   s   &          r   get_tts_providerr0      s     x>H<G --//( +@$G!(,BDIQQT 
 OOL E(22	^	#O "6A"6?"6<x)>F($:DA&"'%,%
 	
 .1%
 	
 	A$X..r   c                   V ^8  d   QhRR/# r   namestrr	   )r
   s   "r   r   r   H   s     
 
S 
r   c                    V R8X  d   ^ RI Hp V! R/ VB # V R8X  d   ^ RIHp V! R/ VB # V R8X  d   ^ RIHp V! R/ VB # V R8X  d   ^ RIHp V! R/ VB # \        R	V  R
24      h)u   
Factory function to get an image provider by name.

Args:
    name: Provider name — 'dalle3', 'google_flow', 'google_flow_v2'

Returns:
    Image provider instance
dalle3)DallE3ImageProvidergoogle_flow)GoogleFlowImageProvidergoogle_flow_v2)GoogleFlowV2ImageProviderr   )PollinationsImageProviderzUnknown image provider: z@. Choose from: dalle3, google_flow, google_flow_v2, pollinationsr	   )	providers.image_providerr7   providers.google_flow_providerr9   !providers.google_flow_v2_providerr;   %providers.pollinations_image_providerr<   
ValueError)r3   kwargsr7   r9   r;   r<   s   &,    r   get_image_providerrC   H   s     x@",V,,		J&000	!	!O(2622		S(2622&tf,lm
 	
r   c                   V ^8  d   QhRR/# r2   r	   )r
   s   "r   r   r   h   s     !
 !
S !
r   c                    V R8X  d   ^ RI Hp V! R/ VB # V R8X  d   ^ RIHp V! R/ VB # V R8X  d   ^ RIHp V! R/ VB # V R8X  d   ^ RIHp V! R/ VB # V R	8X  d   ^ R
IH	p V! R/ VB # \        RV  R24      h)u   
Factory function to get a video provider by name.

Args:
    name: Provider name — 'runway', 'grok', 'google_veo'

Returns:
    Video provider instance
runway)RunwayVideoProvidergrok)GrokVideoProvider
google_veo)GoogleVeoVideoProviderleonardo)LeonardoVideoProviderr   )PollinationsVideoProviderzUnknown video provider: z?. Choose from: runway, grok, google_veo, leonardo, pollinationsr	   )providers.video_providerrG   providers.grok_video_providerrI   providers.google_veo_providerrK   !providers.leonardo_video_providerrM   %providers.pollinations_video_providerrN   rA   )r3   rB   rG   rI   rK   rM   rN   s   &,     r   get_video_providerrT   h   s     x@",V,,	C *6**		H%///		K$.v..		S(2622&tf,kl
 	
r   c                   V ^8  d   QhRR/# r2   r	   )r
   s   "r   r   r      s     J Jc Jr   c                    RRRRRRRRR	R
RRRRRRRRRRRRRRRR/pW9   d'   ^ RI pVP                  W,          4      p\        W04      # \        RV : 24      h)z8Lazy import provider classes for backward compatibility.r   zproviders.tts_providerr   zproviders.chatterbox_providerr7   zproviders.image_providerrG   zproviders.video_providerr9   zproviders.google_flow_providerr;   z!providers.google_flow_v2_providerrK   zproviders.google_veo_providerrI   zproviders.grok_video_providerrM   z!providers.leonardo_video_providerr<   z%providers.pollinations_image_providerrN   z%providers.pollinations_video_providerr   z#providers.pollinations_tts_providerGoogleFlowBrowserAdapterzproviders.google_flow_adapterNz$module 'providers' has no attribute )	importlibimport_moduler'   AttributeError)r3   _LAZY_IMPORTSrX   modules   &   r   __getattr__r]      s     	 !9!@99!#C#%H "A<!D#%L#%L!#H"$CM (()<=v$$
?xH
IIr   N)r0   rC   rT   r   r   r   r7   rG   r9   r;   rW   rK   rI   rM   r<   rN   r   )__doc__
__future__r   providers.registryr   typingr   modelsr   r0   rC   rT   r]   __all__r	   r   r   <module>rd      s:    # 4  $2/j
@!
JJ2r   