
    l:i                         d dl mZ d dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddl
mZ  G d d	e      Z ee	j                        Zy)
    )load_sourceN)warn)	text_type   )const)Pathc                   V    e Zd Zd Zd ZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zy)Settingsc                 $    | j                  |      S N)get)selfitems     C/var/www/html/bot/venv/lib/python3.12/site-packages/thefuck/conf.py__getattr__zSettings.__getattr__   s    xx~    c                     || |<   y r    )r   keyvalues      r   __setattr__zSettings.__setattr__   s    S	r   Nc                    ddl m} | j                          | j                          	 | j	                  | j                                	 | j	                  | j                                | j	                  | j                  |             y# t        $ r  |dt        j                                Y gw xY w# t        $ r  |dt        j                                Y qw xY w)z8Fills `settings` with values from `settings.py` and env.r   )	exceptionzCan't load settings from filezCan't load settings from envN)logsr   _setup_user_dir_init_settings_fileupdate_settings_from_file	Exceptionsysexc_info_settings_from_env_settings_from_args)r   argsr   s      r   initzSettings.init   s    #  "	GKK0023	FKK//12 	D,,T23  	G5s||~F	G
  	F4cllnE	Fs#   B B2 $B/.B/2$CCc                 l   | j                   j                  d      }|j                         s}|j                  d      5 }|j	                  t
        j                         t
        j                  j                         D ]   }|j	                   dj                  |        " 	 d d d        y y # 1 sw Y   y xY w)Nsettings.pyw)modez
# {} = {}
)
user_dirjoinpathis_fileopenwriter   SETTINGS_HEADERDEFAULT_SETTINGSitemsformat)r   settings_pathsettings_filesettings       r   r   zSettings._init_settings_file$   s    ..}=$$&###- I##E$9$9:$55;;= IG!''(=(=(=w(GHII I 'I Is   A!B**B3c                    t         j                  j                  dd      }t        |d      j	                         }t        dd      j	                         }|j                         rt        dj                  ||             |S |S )z9Returns Path object representing the user config resourceXDG_CONFIG_HOMEz	~/.configthefuck~z.thefuckz/Config path {} is deprecated. Please move to {})osenvironr   r   
expanduseris_dirr   r2   )r   xdg_config_homer*   legacy_user_dirs       r   _get_user_dir_pathzSettings._get_user_dir_path,   su    **..):KH3>>@sJ/::< !!#CJJ+ ,""Or   c                     | j                         }|j                  d      }|j                         s|j                  d       || _        y)z9Returns user config dir, create it when it doesn't exist.rulesT)parentsN)r@   r+   r=   mkdirr*   )r   r*   	rules_dirs      r   r   zSettings._setup_user_dir:   sA    **,%%g.	!OODO) r   c                     t        dt        | j                  j                  d                  }t        j
                  j                         D ci c]  }t        ||      r|t        ||       c}S c c}w )zLoads settings from file.settingsr'   )	r   r   r*   r+   r   r0   keyshasattrgetattr)r   rG   r   s      r   r   zSettings._settings_from_fileC   sm    	$--"8"8"GHJ !11668+8S) WXs++ + 	+ +s    A2c                     |j                  d      }d|v r't        j                  |D cg c]
  }|dk7  s	| c}z   }|S c c}w )z0Transforms rules list from env-string to python.:DEFAULT_RULES)splitr   rM   )r   valrules      r   _rules_from_envzSettings._rules_from_envK   sD    iinc!%%#(Y$AX(YYC
 )Zs   
??c              #      K   |j                  d      D ]&  }	 |j                  d      \  }}|t        |      f ( y# t        $ r Y 5w xY ww)zGets priority pairs from env.rL   =N)rN   int
ValueError)r   rO   partrP   prioritys        r   _priority_from_envzSettings._priority_from_envR   sU     IIcN 	D!%ChCM))	  s%   A#>A	A
A	A

Ac                 
   t         j                  |   }|dv r| j                  |      S |dk(  rt        | j	                  |            S |dv rt        |      S |dv r|j                         dk(  S |dv r|j                  d      S |S )z!Transforms env-strings to python.)rB   exclude_rulesrW   )wait_commandhistory_limitwait_slow_commandnum_close_matches)require_confirmation	no_colorsdebugalter_historyinstant_modetrue)slow_commandsexcluded_search_path_prefixesrL   )r:   r;   rQ   dictrX   rT   lowerrN   )r   envattrrO   s       r   _val_from_envzSettings._val_from_env[   s    jjo--'',,Z//455 + +s8O 7 799;&((GG99S>!Jr   c           	          t         j                  j                         D ci c]*  \  }}|t        j                  v r|| j                  ||      , c}}S c c}}w )zLoads settings from env.)r   ENV_TO_ATTRr1   r:   r;   rk   )r   ri   rj   s      r   r"   zSettings._settings_from_envm   sU     "'!2!2!8!8!:&C"**$ d((d33 & 	& &s   /Ac                     |si S i }|j                   r|j                    |d<   |j                  r|j                  |d<   |j                  r|j                  |d<   |S )zLoads settings from args.r_   ra   repeat)yesra   ro   )r   r$   	from_argss      r   r#   zSettings._settings_from_argss   sW    I	8848HHI,-::!%Ig;;"&++Ihr   r   )__name__
__module____qualname__r   r   r%   r   r@   r   r   rQ   rX   rk   r"   r#   r   r   r   r
   r
   
   s?    4&I!+$&r   r
   )impr   r:   r    warningsr   sixr    r   systemr   rg   r
   r0   rG   r   r   r   <module>rz      s;     	 
    ut up E**+r   