+
    Ki  c                   sZ    R t ^ RIt^ RIt^ RIt^ RIHt RtRtRtR t	R t
 ! R R	4      tR# )
z7Helper functions to assist downloading files from ModDBN)loggerzhttps://www.moddb.comz^https://(www\.)?moddb\.comz,^https://(www\.)?moddb\.com/downloads/mirrorc                 sX    \         P                  ! \        V P                  4       4      R J# N)rematchMODDB_URL_MATCHERlower)url   &6/usr/lib/python3.14/site-packages/lutris/util/moddb.pyis_moddb_urlr	      s    88%syy{34??    c                  sX     \         P                  ! R 4      p V #   \         d     R# i ; i)ZmoddbN)	importlibZimport_moduleZImportError)Zlibs    r   _try_import_moddb_libraryr      s.    %%g.
 s    ))c                   s\   a  ] tR t^t o ]! 4       R3V 3R lR lltR tR tR tR t	Rt
V tR# )	ModDBNc                sN   < V ^8  d   QhRS[ P                  RS[ P                  /# )i   	moddb_libparse_page_method)typesZ
ModuleTypeZ
MethodType)Zformat__classdict__s   "r   Z__annotate__ZModDB.__annotate__   s)     3 3))3\a\l\l3r
   c                s    Vf   \         P                  ! R4       Wn        W n        V P                  f.   V P                  e   V P                  P                  V n        R # R # R # )NzThe moddb library is not available, though the installer is attempting to install a file hosted on moddb.com. The moddb.com URLs will not be transformed, and rather passed as-is.)r    Zwarningr   parseZ
parse_page)selfr   r   s   &&&r   __init__ZModDB.__init__   sT     NNT
 #&
::$.."<22DJ #=r
   c                s    V P                   f   V# \        V4      '       g   \        R4      h\        V P	                  V P                  V4      4      P                  ,           # )Nz#Provided URL must be from moddb.com)r   r	   RuntimeError
MODDB_FQDN_autoselect_moddb_mirror"_get_html_and_resolve_mirrors_listZ_url)r   moddb_permalink_url   &&r   transform_urlZModDB.transform_url*   sZ    >>!&&/00DEE ++D,S,STg,hinno	
r
   c                s,    \        VR  R7      ^ ,          # )c                 s    V P                   # r   )Zcapacity)Zmr   r   Z<lambda>Z0ModDB._autoselect_moddb_mirror.<locals>.<lambda>8   s    !**r
   )Zkey)Zsorted)r   mirrors_listr   r   r   ZModDB._autoselect_moddb_mirror6   s    l(<=a@@r
   c                s8   V P                  V4      '       d   \        R 4      hV P                  V4      p\        W P                  P
                  P                  4      '       g   \        R4      hVP                  4       p\        V4      '       g   \        R4      hV# )zProvided URL points directly to a moddb.com mirror. This is an incorrect configuration, please refer to installers.rst for details.zEProvided URL does not point to the page of a file hosted on moddb.comzBNo available mirror was available for the file hosted on moddb.com)	_is_moddb_mirror_urlr   r   Z
isinstancer   ZpagesZFileZget_mirrorsZany)r   r   Z	moddb_objr   s   &&  r   r   Z(ModDB._get_html_and_resolve_mirrors_list:   s    
 $$%899/  JJ23	)^^%9%9%>%>??fgg ,,.<  cddr
   c                sX    \         P                  ! \        VP                  4       4      R J# r   )r   r   MODDB_MIRROR_URL_MATCHERr   )r   r   r   r   r   ZModDB._is_moddb_mirror_urlP   s    xx0#))+>dJJr
   )r   r   )Z__name__Z
__module__Z__qualname__Z__firstlineno__r   r   r   r   r   r   Z__static_attributes__Z__classdictcell__)r   s   @r   r   r      s4     ,E,Gos3 3

A,K Kr
   r   )Z__doc__r   r   r   Zlutris.util.logr    r   r   r   r	   r   r   ) r
   r   <module>r      s<    =  	  "$
2 J @6K 6Kr
   