§
    öÛg   ã                   óž   — d Z ddlZddlZddlmZ ddlmZ dZdZ	de	efd	„Z
efd
„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Z G d„ dej        ¦  «        ZdS )z:PostgreSQL configuration file parser and editor functions.é    Né   )Ústring)Úapiú'ú#ú=c                 ó„  — |                       |d¦  «        }t          |¦  «        dk    �r•|\  }}d}|D ]!}|                     ¦   «         s||vr n|dz  }Œ"d}	||d …         D ]5}|                     ¦   «         s|                     ¦   «         s|dv s n|	dz  }	Œ6|||	z   d …                              ¦   «         rd S d}
|D ]!}|                     ¦   «         r|dv r n|
dz  }
Œ"d}d}d}t          |
t          |¦  «        ¦  «        D ]q}||         }||k    r>|du rd}nU|du r,t          |¦  «        |dz   k    o||dz            |k    }|du rd}n%|du rd}n|du r|                     ¦   «         s||v r n|dz  }Œrt          ||	|z   ¦  «        t          t          |¦  «        dz   |
z   t          |¦  «        dz   |
z   |z   ¦  «        fS d S )Nr   é   r   Ú_z
FT)ÚsplitÚlenÚisspaceÚisalphaÚisdigitÚstripÚrangeÚslice)ÚlineÚequalityÚcommentÚquoteÚkeyvalÚkeyÚvalÚ
prekey_lenÚcÚkey_lenÚ
preval_lenÚinquotesÚescapedÚval_lenÚis                  úK/granary/edev/quantum/lib/python3.11/site-packages/postgresql/configfile.pyÚ
parse_liner$      sQ  € Ø
�*Š*�X˜qÑ
!Ô
!€Ýˆ�K„K�1ÒÑØ�(€#€sà€*Øð ð €aØ
�)Š)‰+Œ+ð 
˜! 7Ð*Ð*Ø	€EØ��?€:€:à€'Øˆzˆ{ˆ{Ôð ð €aØ�9Š9‰;Œ;ð 
˜!Ÿ)š)™+œ+ð 
¨¨c¨¨Ø	€EØ
ˆa�<€7€7ð 	ˆ�gÑ	Ð	Ð	Ô×%Ò%Ñ'Ô'ð 
Ø	€6à€*Øð ð €aØ
�)Š)‰+Œ+ð 
˜˜f˜˜Ø	€EØ��?€:€:à€(Ø€'Ø€'Ý��S ™XœXÑ&Ô&ð ð €aØ
ˆ1„v€1Øˆ5‚j€jØ�5ÐÐØ€X€Xà�5ÐÐå�S‘”˜A˜a™C’Ð5 C¨¨!©¤H°Ò$5€gØ	�EÐ	Ð	Ø€xøØ
�Tˆ/ˆ/à€gøØ�EÐÐ˜qŸyšy™{œ{Ð¨a°7¨l¨lØ	€EØ
ˆa�<€7€7õ 	ˆ�W˜zÑ)Ñ*Ô*å�ˆS‰Œ�A‰˜
Ñ	"¥C¨¡H¤H¨q¡L°:Ñ$=ÀÑ$GÑHÔHð	
ð ð_ Ðó    c                 óš   — |                       ¦   «         } |                      |¦  «        s| S | dd…                              |dz  |¦  «        S )z%
	Unquote the string `s` if quoted.
	r   éÿÿÿÿr
   )r   Ú
startswithÚreplace)Úsr   s     r#   Úunquoter+   E   sJ   € ð ‡W‚W�Y„Y€Ø	�Š�UÑÔð Ø	
€(Ø	ˆ!ˆBˆ$Œ�Š˜˜a™ Ñ'Ô'Ð'r%   c                 ó~   — |€| }|D ]5} |d                      || |         f¦  «        t          j        z   ¦  «         Œ6dS )zDA configuration writer that will trample & merely write the settingsNr   )ÚjoinÚosÚlinesep)ÚmapÚwriterÚkeysÚks       r#   Úwrite_configr4   N   sS   € à€LØ	€$Ø
ð -ð -€QØ€&ˆ�Š�1�c˜!”f�+Ñ	Ô	¥¤Ñ	+Ñ,Ô,Ð,Ð,ð-ð -r%   r0   ú!the configuration changes to makeÚfoú4file object containing configuration lines(Iterable)r2   ú*the keys to change; defaults to map.keys()c           	      ó¢  ‡— ‰€!t          |                      ¦   «         ¦  «        Šˆfd„‰D ¦   «         }g }i }d}|D ]�}|dz  }|                     |¦  «         t          |¦  «        }|€Œ.|\  }	}
||	                              ¦   «         }||
         }||v r6|                     |¦  «        }|€g x||<   }|                     ||	|
f¦  «         Œ�|D ]Š}||vr„‰||                  }| |         }|�l|d                              t          j        ¦  «        s|d         t          j        z   |d<   |                     |›d| 	                    dd¦  «        ›d�¦  «         Œ‹|                     ¦   «         D �]á}‰||                  }| ‰||                           }|€<||         D ]2}|\  }}	}
t          ||         d|	j        …         vrd||         z   ||<   Œ3Œcd}d}d}d}||         D ]Ž}|\  }}	}
||         }||	         }||
         }t          |d|	j        …         v }| rdpd	t          |¦  «        |k    rd
pd	z   }||k    r'|du rd||d	                  z   ||d	         <   |}|}|}|}Œ‚|du rd|z   ||<   Œ�|\  }}	}
||         }|rd}n|d|	j        …         }||
j        d…         }|rt|                     ¦   «         s`|                     ¦   «         }|                     t          ¦  «        s2|d	t#          |¦  «        t#          |¦  «        z
  …         ›t          ›|›�}|||	j        |
j        …         z   d| 	                    dd¦  «        ›d�z   |z   ||<   �Œã|S )zGAlters a configuration file without trampling on the existing structureNc                 ó„   •— i | ]<}|                      ¦   «                              ¦   «         ‰                     |¦  «        “Œ=S © )Úlowerr   Úindex)Ú.0r3   r2   s     €r#   ú
<dictcomp>z alter_config.<locals>.<dictcomp>^   sD   ø€ ð 
ð 
ð 
Ø()€!‡'‚'�)„)‡/‚/ÑÔ�d—j’j ‘m”mð
ð 
ð 
r%   r'   r   z = 'r   z''r   r   r
   FÚ )Úlistr2   Úappendr$   r<   ÚgetÚendswithr.   r/   r)   r   Ústartr+   Ústopr   Úlstripr(   r   ) r0   r6   r2   ÚpkeysÚlinesÚ
candidatesr"   ÚlÚplÚskÚsvr3   Úvr   r   r   ÚckÚ
to_set_keyÚ
to_set_valÚclÚline_numÚw_scoreÚw_commentedÚw_valÚw_clÚlkeyÚlvalÚ	commentedÚscoreÚbolÚpost_valÚstripped_post_vals      `                             r#   Úalter_configr`   U   s(  ø€ ð 	€LÝ	ˆc�hŠh‰jŒjÑ	Ô	€$ð
ð 
ð 
ð 
Ø-1ð
ñ 
ô 
€ð 
€Ø€Ø€à
ð ð €QØ€q�&€!Ø‡,‚,ˆq�/„/€/Ý�!�}„}€"à€ZØØ�&€"€bØˆ„e‡k‚k�m„m€!Øˆ„e€!àˆ%€Z€ZØ‡~‚~�aÑÔ€1Ø€iØÐ€Jˆq�M�AØ‡8‚8ˆQ��BˆKÑÔÐøà
ð =ð =€QØˆjÐÐØ	ˆe�AŒhŒ€3Ø	ˆSŒ€3à	€oØ�Œ9×Ò�bœjÑ)Ô)ð (Ø�r”�RœZÑ'€Uˆ2�YØ	‡L‚L˜s˜s˜s C§K¢K°°TÑ$:Ô$:Ð$:Ð$:Ð;Ñ<Ô<Ð<øð �?Š?ÑÔð B8ñ B8€RØ�E˜"”IŒ€*Ø�4˜˜bœ	”?Ô#€*àÐà˜Œ^ð -ð -€rØÑ€Hˆb�"Ý�e˜H”o i r¤x iÔ0Ð0Ð0Ø˜U 8œ_Ñ,€Uˆ8�_øð-ð €7Ø€;Ø€5Ø
€4Ø˜Œ^ð ð €rØÑ€Hˆb�"ØˆhŒ€AØˆRŒ5€DØˆRŒ5€DÝ˜A˜i˜rœx˜iœLÐ(€Ià
€mÐ˜Ð˜QÝˆd�m„m�zÒ!Ð' aÐ,¨1ñ.ð 
ð ˆw‚€Ø�uÐÐà˜U 4¨¤7œ^Ñ+€eˆD�ŒG�nØ€WØ€[Ø€UØ€T€TØ	�eÐ	Ð	à˜Q‘w€Uˆ8�_øàÑ€8ˆR�ØˆX„€1Øð Ø
€C€Cà
ˆIˆRŒXˆIŒ,€CØ�”��Œk€8àð �x×'Ò'Ñ)Ô)ð Ø ŸšÑ)Ô)ÐØ×'Ò'­Ñ0Ô0ð ð ˆq•�X‘”¥Ð%6Ñ!7Ô!7Ñ7Ð7Ô8Ð8å€gÐ Ð ð	€Xð ˆ!ˆBŒH�R”XÐÔ
ÑÐØ×Ò  TÑ*Ô*Ð*Ð*Ð,ñ-Ø/7ñ8ð 	ˆ�?�?ð 	€r%   c                 óä   — |€i }| D ]h}t          |¦  «        }|rU||d                  }t          |d |d         j        …         vr+|� ||¦  «        rt          ||d                  ¦  «        ||<   Œi|S )Nr   r   )r$   r   rE   r+   )ÚiterÚdÚselectorr   Úkvr   s         r#   Úread_configrf   Ç   s‰   € Ø€IØ€!Øð "ð "€TÝ�$ÑÔ€"Øð "Ø	ˆb�ŒeŒ€3Ý�T˜,˜2˜aœ5œ;˜,Ô'Ð'Ð'ØÐ˜˜ ™œÐÝ�T˜"˜Qœ%”[Ñ!Ô!€A€c�FøØ	€r%   c                   óš   — e Zd ZdZdZdZd„ Zefd„Zd„ Z	de
gfd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
ConfigFilez©
	Provides a mapping interface to a configuration file.

	Every action will cause the file to be wholly read, so using `update` to make
	multiple changes is desirable.
	)ÚpathÚ
CONFIGFILEc              #   óT   K  — d t          |                      ¦   «         ¦  «        fV — d S ©N)r   r2   ©Úselfs    r#   Ú_e_metaszConfigFile._e_metasÝ   s-   è è € Ø	�s�4—9’9‘;”;ÑÔÐ Ð Ð Ð Ð Ð r%   c                 ó>   — || _         || _        g | _        i | _        d S rl   )ri   Ú_openÚ_storeÚ_restore)rn   ri   Úopens      r#   Ú__init__zConfigFile.__init__à   s"   € Ø€$„)Ø€$„*Ø€$„+Ø€$„-€-€-r%   c                 ój   — t          | ¦  «        j        ›dt          | ¦  «        j        ›d| j        ›d�S )Nú.ú(ú))ÚtypeÚ
__module__Ú__name__ri   rm   s    r#   Ú__repr__zConfigFile.__repr__æ   s9   € åˆ�:„:ÔÐÐÝˆ�:„:ÔÐÐØ„9€9€9ð
ð r%   rI   c                 ó¤   — |                       | j        d¦  «        5 }|D ]}|                     |¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚw)rq   ri   Úwrite)rn   rI   ÚcfrK   s       r#   Ú_savezConfigFile._saveí   sž   € Ø‡z‚z�$”)˜SÑ!Ô!ð  RØð ð €qØ‡H‚HˆQ�K„K€K€Kððð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   œAÁA	ÁA	c                 ó¶   — |                       | j        ¦  «        5 }t          |d i|¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          d S rl   ©rq   ri   r`   r‚   )rn   r3   r�   rI   s       r#   Ú__delitem__zConfigFile.__delitem__ò   sŒ   € Ø‡z‚z�$”)ÑÔð ( Ý˜˜T˜
 BÑ'Ô'€5ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (à‡*‚*�,„,€,€,€,s   ›:º>Á>c                 ó¢   — |                       | j        ¦  «        5 }t          ||j        ¬¦  «        |         cd d d ¦  «         S # 1 swxY w Y   d S ©N©rd   )rq   ri   rf   Ú__eq__)rn   r3   Úcfos      r#   Ú__getitem__zConfigFile.__getitem__÷   s›   € Ø‡z‚z�$”)ÑÔð  Ý
ØØŒxðñ ô ð ôðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ›AÁAÁAc                 ó4   — |                       ||i¦  «         d S rl   )Úupdate)rn   r3   rO   s      r#   Ú__setitem__zConfigFile.__setitem__þ   s   € Ø‡+‚+ˆq�1ˆgÑÔÐÐÐr%   c                 ó<   — | j                              d|¦  «         d S ©Nr   )rr   Úinsert)rn   Úkws     r#   Ú__call__zConfigFile.__call__  s    € Ø„+×Ò�Q˜ÑÔÐÐÐr%   c                 ó   — | S rl   r;   rm   s    r#   Ú__context__zConfigFile.__context__  s   € Ø	€+r%   c                 ó*   — |                       ¦   «         S rl   )r2   rm   s    r#   Ú__iter__zConfigFile.__iter__  s   € Ø	�Š‰ŒÐr%   c                 ó^   — t          t          |                      ¦   «         ¦  «        ¦  «        S rl   )r   rA   r2   rm   s    r#   Ú__len__zConfigFile.__len__
  s    € Ý	�T�$—)’)‘+”+ÑÔÑ	Ô	Ðr%   c                 óî   — |                       | j        d                              ¦   «         ¦  «        }|                      | j        d         ¦  «         | j        d= | j                             |¦  «         d S r�   )Úgetsetrr   r2   r�   rs   rB   )rn   Úress     r#   Ú	__enter__zConfigFile.__enter__  sb   € Ø�Š�D”K ”N×'Ò'Ñ)Ô)Ñ*Ô*€#Ø‡+‚+ˆdŒk˜!ŒnÑÔÐØ
„k�!€nØ„-×Ò�sÑÔÐÐÐr%   c                 óÊ   — | j                              | j        d         ¦  «         | j        d= |                      | j         ¦  «         | j                              ¦   «          |d u S )Nr'   )Ú	_restoredr�   rs   Úclear)rn   Úexcr   Útbs       r#   Ú__exit__zConfigFile.__exit__  s[   € Ø„.×Ò˜œ bÔ)Ñ*Ô*Ð*Ø
„m�BÐØ‡+‚+ˆdŒnÑÔÐØ„.×ÒÑÔÐØ	�ˆÐr%   Nc                 ó¾   — |                       | j        ¦  «        5 }t          ||j        ¬¦  «                             ||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r‡   )rq   ri   rf   r‰   rC   )rn   r3   Úaltr�   s       r#   rC   zConfigFile.get  s™   € Ø‡z‚z�$”)ÑÔð ; Ý
�b Q¤XÐ
.Ñ
.Ô
.×
2Ò
2°1°cÑ
:Ô
:ð;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s   ›*AÁAÁAc                 ót   — t          |                      | j        ¦  «        ¦  «                             ¦   «         S rl   )rf   rq   ri   r2   rm   s    r#   r2   zConfigFile.keys  s*   € Ý	�T—Z’Z ¤	Ñ*Ô*Ñ	+Ô	+×	0Ò	0Ñ	2Ô	2Ð2r%   c                 ót   — t          |                      | j        ¦  «        ¦  «                             ¦   «         S rl   )rf   rq   ri   Úvaluesrm   s    r#   r¨   zConfigFile.values!  s*   € Ý	�T—Z’Z ¤	Ñ*Ô*Ñ	+Ô	+×	2Ò	2Ñ	4Ô	4Ð4r%   c                 ót   — t          |                      | j        ¦  «        ¦  «                             ¦   «         S rl   )rf   rq   ri   Úitemsrm   s    r#   rª   zConfigFile.items$  s*   € Ý	�T—Z’Z ¤	Ñ*Ô*Ñ	+Ô	+×	1Ò	1Ñ	3Ô	3Ð3r%   c                 ó´   — |                       | j        ¦  «        5 }t          ||¦  «        }ddd¦  «         n# 1 swxY w Y   |                      |¦  «         dS )zT
		Given a dictionary of settings, apply them to the cluster's
		postgresql.conf.
		Nr„   )rn   Úkeyvalsr�   rI   s       r#   r�   zConfigFile.update'  s‘   € ð
 ‡z‚z�$”)ÑÔð % Ý˜ Ñ$Ô$€5ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %à‡*‚*ˆUÑÔÐÐÐs   ›8¸<¿<c                 ó  — t          |¦  «        }|                      | j        ¦  «        5 }t          ||j        ¬¦  «        }|t          |                     ¦   «         ¦  «        z
  D ]}d||<   Œ|cddd¦  «         S # 1 swxY w Y   dS )zU
		Get all the settings in the list of keys.
		Returns a dictionary of those keys.
		rˆ   N)Úsetrq   ri   rf   Ú__contains__r2   )rn   r2   rŠ   ÚcfgÚxs        r#   r›   zConfigFile.getset0  sÓ   € õ
 
ˆT‰Œ€$Ø‡z‚z�$”)ÑÔð  Ý	ØØÔ ð
ñ 
ô 
€3ð •C˜Ÿš™
œ
‘O”OÑ#ð ð €qØ€Cˆ�F€FØ
ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ªAA;Á;A?ÂA?rl   )r|   r{   Ú__qualname__Ú__doc__Ú
_e_factorsÚ_e_labelro   rt   ru   r}   Ústrr‚   r…   r‹   rŽ   r“   r•   r—   r™   r�   r£   rC   r2   r¨   rª   r�   r›   r;   r%   r#   rh   rh   Ó   sd  € € € € € ðð ð €Ø€ð!ð !ð !ð "&ð ð ð ð ðð ð ð˜#˜ð ð ð ð ð
ð ð ð
ð ð ðð ð ðð ð ðð ð ðð ð ð ð  ð  ðð ð ðð ð ð;ð ;ð ;ð ;ð3ð 3ð 3ð5ð 5ð 5ð4ð 4ð 4ðð ð ðð ð ð ð r%   rh   rl   )r0   r5   r6   r7   r2   r8   )NN)r³   Úsysr.   r@   r   Úpg_strr   Úpg_apir   r   r$   r+   r4   r`   rf   ÚSettingsrh   r;   r%   r#   ú<module>r»      s%  ðð =Ð <Ø 
€
€
€
Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à€Ø
€à #¨wÀð 6ð 6ð 6ð 6ðp ð (ð (ð (ð (ð-ð -ð -ð -ð 8<ðpØ*ðpà<ðpð 	5ðpð pð pð pðd

ð 

ð 

ð 

ðjð jð jð jð j�”ñ jô jð jð jð jr%   