
    5j              	           S r SSKrSSKJrJr  SSKJrJr  SSKJ	r	  SSKJ
r
JrJrJr  SSKJr  SS	KJr  \(       a  SS
KJr     SS\\   S\\   S\\   SS4S jjrSS jrg)zSession functions.    N)OptionalTYPE_CHECKING   )load_config
get_config)
Definition)get_defaultset_defaultis_open	is_closed)is_platform_session)root_logger)Sessionnameapp_keyconfig_namereturnr   c                    U nA U(       a  [        U5      nO
[        5       nU=(       d    UR                  S5      n  UR                  SU  35        U(       a  UR                  SU  S3US	S
9  [        U S9R                  5       n[        U5      (       aG  SU  S3nS	nUR                  SS  H  nXh;   d  M
  Sn  O   U(       a  [        R                  " S[        S9   [        5       n	X:w  a  [        U5        Un	U	R!                  5         U	$ ! [         a!    U(       a  SU 3OSn[	        SU  SU S35      ef = f! [         a    [        U5        Un	 NYf = f)a  
Opens and returns a session.

Parameters
----------
name: str, optional
    Session name from the config file.
app_key: str, optional
    The application key.
config_name: str, optional
    The config name. If provided, overrides default config.

Returns
-------
Session
zsessions.defaultz	sessions.  zCannot open session z#
This session is not defined in thez configuration filez.app-keyT)paramvalueauto_create)r   z.signon_controlNFa  
You open a platform session using the default value of the signon_control parameter (signon_control=True).
In future library version v2.0, this default will be changed to False.
If you want to keep the same behavior as today, you will need to set the signon_control parameter to True either in the library configuration file
({'sessions':{'platform':{'your_session_name':{'signon_control':true}}}}) or in your code where you create the Platform Session.
These alternative options are already supported in the current version of the library.)category)r   r   	get_param	Exception	NameError	set_paramr   get_sessionr   configswarningswarnFutureWarningr	   r
   AttributeErroropen)
r   r   r   config_pathconfig_objectnew_sessionsignon_control_keyis_raise_warncfgdefault_sessions
             ^/root/lseg-credit/backend/venv/lib/python3.13/site-packages/lseg/data/_access_layer/session.pyopen_sessionr/      s}   . K#K0 #E-112DED
)D6 23 	$x&@]ab$'335K;''(o> (("-C!( % .
 MMi '	&%-)$)O
 U  
+6+'B"4&(L[MYlm
 	

H  &K %&s   D	 D7 	+D47EEc                      [        5       n [        U 5      (       a!  U R                  S5        U R                  5         [	        U 5      (       a  U R                  S5        gg! [
         a    [        5       R                  S5         gf = f)z=
Closes the previously opened session.

Returns
-------
None
zClosing sessionzSession is closedu   Nо default session to closeN)r	   r   infocloser   r%   r   )r-   s    r.   close_sessionr3   a   sw    	6%- ?##  !23!!#_%%  !45 &  ;9:;s   
A   #BB)NNN)r   N)__doc__r"   typingr   r   
_configurer   r   _core.sessionr   r	   r
   r   r   _core.session.toolsr   _logr   r   strr/   r3        r.   <module>r=      sq      * 0 & H H 5 ' !!%N
3-Nc]N #N 	Nb6r<   