+
    >im                    r   ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
Ht ^ RIHtHt ^ RIHt ]! ]4      P%                  4       P&                  P&                  P&                  t]R,          R	,          t]P-                  4       '       d   R	]! ]4      3MRt ! R
 R]4      t]tRR R llt]R R l4       tR# )    )annotations)	lru_cache)Path)uuid4)AliasChoicesFieldfield_validator)BaseSettingsSettingsConfigDict)call_history_tablebackend.envc                  ^   ] tR t^t$ ]! ]RRR7      tRtR]R&   Rt	R]R	&   ]
! R
]! RR4      R7      tR]R&   ]
! R]! RR4      R7      tR]R&   RtR]R&   RtR]R&   ]
! R]! RRR4      R7      tR]R&   ]
! R]! RR4      R7      tR]R&   ]
! R]! RR4      R7      tR]R &   ]
! R!R"R7      tR]R#&   ]
! R$]! R%R&4      R7      tR]R'&   ]
! R(R)R7      tR]R*&   ]
! RR+R7      tR]R,&   R-tR]R.&   R/tR]R0&   R1tR]R2&   R3tR]R4&   R5tR6]R7&   R5tR6]R8&   R5tR9]R:&   ]! RRR;R<7      ]R= R> l4       4       t R?t!R5# )@Settingszutf-8ignore)env_fileenv_file_encodingextrazcampaign-portstrapp_nameFbooldebugz?mysql+pymysql://user:pass@127.0.0.1:3306/livekitvoicebot_masterDATABASE_MASTER_URLdatabase_url)defaultvalidation_aliasz@mysql+pymysql://user:pass@127.0.0.1:3306/livekitvoicebot_clusterDATABASE_CLUSTER_URLcluster_database_urlzAsia/Kolkatatimezonez?https://config.mcube.com/Restmcube-api/outbound-calls-superdashoutbound_call_url HTTP_AUTHORIZATIONOUTBOUND_BEARER_TOKENMCUBE_HTTP_AUTHORIZATIONoutbound_bearer_tokenz-http://127.0.0.1:8088/api/mcube/outbound-callMCUBE_LOCAL_OUTBOUND_URLMCUBE_OUTBOUND_CALL_URLmcube_local_outbound_urlMCUBE_PUBLIC_WS_URL_BASEPUBLIC_WS_URL_BASEmcube_public_ws_url_base/wsMCUBE_WS_PATH_PREFIXmcube_ws_path_prefixzredis://127.0.0.1:6379/0CELERY_BROKER_URL	REDIS_URLcelery_broker_urlzredis://127.0.0.1:6379/1CELERY_RESULT_BACKENDcelery_result_backendRABBITMQ_URLrabbitmq_urlcampaign_runsrabbitmq_exchangefirstCampaigncallqueue_first_campaignpriorityQueuequeue_priority
retryCallsqueue_retry_callsNz
int | Nonedev_business_iddev_user_idz
str | Nonedev_user_namebefore)modec                    V ^8  d   QhRRRR/# )   vobjectreturn )formats   "campaign_port/app/config.py__annotate__Settings.__annotate___   s      v &     c                    \        V\        4      '       d-   VP                  R4      '       d   RV\        R4      R ,           # V# )zAAllow mysql:// URLs from .env (Django style) with PyMySQL driver.zmysql://zmysql+pymysql://N)
isinstancer   
startswithlen)clsrE   s   &&rJ   normalize_mysql_driverSettings.normalize_mysql_driver]   s;     a!,,z":":%#j/*;(<<<rM   rH   )"__name__
__module____qualname____firstlineno__r   
_ENV_FILESmodel_configr   __annotations__r   r   r   r   r   r   r    r%   r(   r+   r.   r1   r3   r5   r7   r9   r;   r=   r>   r?   r@   r	   classmethodrS   __static_attributes__rH   rM   rJ   r   r      s   %!L $Hc#E4 Q%&;^LL#  !&R%&<>TU!# 
 #Hc" _s^!&% #&
"3  %*?%&@B[\%c  %*%&@BVW%c  !&/!# 
 #*%&9;Gs  "'*0"3  b>JL#J,s, !4#3)NC))s) #'OZ&"K" $M:$^%;(K  LrM   r   Nc                    V ^8  d   QhRRRR/# )rD   settingszSettings | NonerG   r   rH   )rI   s   "rJ   rK   rK   j   s     ' ' 'C 'rM   c                `   T ;'       g    \        4       pVP                  ;'       g    RP                  4       P                  R4      pVP                  ;'       g    RP                  4       pVP                  R4      '       g
   RV,           pV'       g   \        R4      hV V R\        4        2# )z
refurl for outbound payload: {MCUBE_PUBLIC_WS_URL_BASE}{MCUBE_WS_PATH_PREFIX}/{uuid}
Matches backend .env (no separate outbound_ws_base).
r!   /r,   zMCUBE_PUBLIC_WS_URL_BASE is not set (needed to build refurl for outbound calls). Set it in campaign_port .env or export from backend .env.)get_settingsr+   striprstripr.   rP   
ValueErrorr   )r_   sbaseprefixs   &   rJ   build_mcube_refurlri   j   s    
 	""LNA&&,,"335<<SAD$$--446FS!!vH
 	
 VF81UWI&&rM   c                   V ^8  d   QhRR/# )rD   rG   r   rH   )rI   s   "rJ   rK   rK   }   s      h rM   c                     \        4       # N)r   rH   rM   rJ   rb   rb   |   s
    :rM   )r   rl   )
__future__r   	functoolsr   pathlibr   uuidr   pydanticr   r   r	   pydantic_settingsr
   r   app.utils.cluster_table_namesr   __file__resolveparent
_REPO_ROOT_BACKEND_ENVis_filer   rY   r   call_history_table_nameri   rb   rH   rM   rJ   <module>r{      s    "    9 9 > < (^##%,,33::
I%.,8,@,@,B,Bfc,'(	
Q| Qj - '$  rM   