§
    ÝŸ’j	  ã                   ó˜   — d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZ  ej        e¦  «        Z G d„ d¦  «        Z e¦   «         ZdS )é    N)ÚPath)Ú	APIRouterÚFastAPI)ÚCallableÚDictÚAnyÚListc                   ó*   — e Zd ZdZd„ Zddedefd„ZdS )	ÚModuleRegistryz:Core registry for DSCons Plug & Play Modular Architecture.c                 ó"   — i | _         g | _        d S )N)ÚmodulesÚrouters)Úselfs    ú8C:\Projects\DSCons\app\core\module_framework\registry.pyÚ__init__zModuleRegistry.__init__   s   € Ø')ˆŒØ(*ˆŒˆˆó    úapp/modulesÚappÚmodules_dirc                 ó4  — t          |¦  «        }|                     ¦   «         s t                               d|› d�¦  «         dS t                               d|› d�¦  «         |                     ¦   «         D �] }|                     ¦   «         �rˆ|dz                       ¦   «         �rp|j        }|                     d¦  «        rŒM	 | 	                    dd	¦  «        › d	|› �}t          j        |¦  «        }|| j        |<   t                               d
|› �¦  «         t          |d¦  «        r0t          |j        t           ¦  «        r|                     || ¦  «         t          |d¦  «        rpt          |j        t$          ¦  «        rV| j                             |j        ¦  «         |                     |j        ¦  «         t                               d|› �¦  «         �Œf# t,          $ r-}t                               d|› d|› �d¬¦  «         Y d}~�Œ˜d}~ww xY w�Œ¢dS )zEScans the modules directory, loads __init__.py, and extracts routers.z[REGISTRY] Directory z does not exist. Skipping.Nz#[REGISTRY] Scanning for modules in z...z__init__.pyÚ__ú/ú.z[REGISTRY] Loaded module: Úsetup_moduleÚrouterz)[REGISTRY] Registered router for module: z![REGISTRY] Failed to load module z: T)Úexc_info)r   ÚexistsÚloggerÚwarningÚinfoÚiterdirÚis_dirÚnameÚ
startswithÚreplaceÚ	importlibÚimport_moduler   ÚhasattrÚ
isinstancer   r   r   r   r   ÚappendÚinclude_routerÚ	ExceptionÚerror)	r   r   r   Ú	base_pathÚmodule_pathÚmodule_nameÚimport_pathÚmoduleÚes	            r   Údiscover_and_registerz$ModuleRegistry.discover_and_register   sK  € å˜Ñ%Ô%ˆ	Ø×ÒÑ!Ô!ð 	Ý�NŠNÐZ°;ÐZÐZÐZÑ[Ô[Ð[ØˆFå�ŠÐJ¸+ÐJÐJÐJÑKÔKÐKØ$×,Ò,Ñ.Ô.ð 	hñ 	hˆKØ×!Ò!Ñ#Ô#ñ h¨°}Ñ)D×(LÒ(LÑ(NÔ(Nñ hØ)Ô.�Ø×)Ò)¨$Ñ/Ô/ð Øðhà%0×%8Ò%8¸¸cÑ%BÔ%BÐ"RÐ"RÀ[Ð"RÐ"R�KÝ&Ô4°[ÑAÔA�Fà06�D”L Ñ-Ý—K’KÐ J¸[Ð JÐ JÑKÔKÐKõ ˜v ~Ñ6Ô6ð 7½:ÀfÔFYÕ[cÑ;dÔ;dð 7Ø×+Ò+¨C°Ñ6Ô6Ð6õ ˜v xÑ0Ô0ð _µZÀÄÍyÑ5YÔ5Yð _Øœ×+Ò+¨F¬MÑ:Ô:Ð:Ø×*Ò*¨6¬=Ñ9Ô9Ð9ÝŸšÐ$]ÐP[Ð$]Ð$]Ñ^Ô^Ð^ùøå ð hð hð hÝ—L’LÐ!WÀ[Ð!WÐ!WÐTUÐ!WÐ!WÐbf�LÑgÔgÐgÐgÐgÐgÐgÑgøøøøðhøøøùð/	hð 	hs   ÃDGÇ
HÇ&"HÈHN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr4   © r   r   r   r   	   sY   € € € € € ØDÐDð+ð +ð +ð hð  h¨ð  h¸sð  hð  hð  hð  hð  hð  hr   r   )r&   ÚloggingÚpathlibr   Úfastapir   r   Útypingr   r   r   r	   Ú	getLoggerr5   r   r   Úregistryr:   r   r   ú<module>rA      s¾   ðØ Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à	ˆÔ	˜8Ñ	$Ô	$€ð&hð &hð &hð &hð &hñ &hô &hð &hðP ˆ>ÑÔ€€€r   