Mini Shell

Direktori : /proc/self/root/lib/python3.6/site-packages/xdg/__pycache__/
Upload File :
Current File : //proc/self/root/lib/python3.6/site-packages/xdg/__pycache__/IniFile.cpython-36.pyc

3

��P�2�@svdZddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZddl
ZddlmZdd�ZGdd�d�ZdS)	z5
Base Class for DesktopEntry, IconTheme and IconData
�N)�ParsingError�DuplicateGroupError�NoGroupError�
NoKeyError�DuplicateKeyError�ValidationError�debug)�ucCs*y|jdd�dStk
r$dSXdS)z>Return True if a string consists entirely of ASCII characters.�ascii�strictTFN)�encode�UnicodeError)�s�r�/usr/lib/python3.6/IniFile.py�is_asciis
rc@seZdZdZdZdZdZd=dd�Zdd�Zd>dd	�Z	d?dd�Z
d
d�Zdd�Zd@dd�Z
dAdd�Zdd�Zdd�ZdBdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�ZdCd*d+�ZdDd,d-�Zd.d/�Zd0d1�ZdEd3d4�Zd5d6�Zd7d8�ZdFd9d:�Z d;d<�Z!dS)G�IniFile�FNcCst�|_|r|j|�dS)N)�dict�content�parse)�self�filenamerrr�__init__szIniFile.__init__cCst|j|j�S)N)Zcmpr)r�otherrrr�__cmp__!szIniFile.__cmp__c#Cs�|j}tjj|�std|��ytj|dddd�}Wn0tk
rb}ztrN|�ndSWYdd}~XnX�x|D�]}|j	�}|s�qlql|ddkr�qlql|dd	kr�|j
d	�jd
�}tr�|j|�r�t
||��ni||<qly|jdd�\}}	Wn$tk
�r
td
||��YnX|j	�}y6t�r8|j||��r8t|||��n|	j	�|||<Wqlttfk
�rntd|��YqlXqlW|j�||_d|_|�r�x2|D]}
|
|k�r�|
|_P�q�Wtd|d|��dS)zyParse an INI file.
        
        headers -- list of headers the parser will try to select as a default header
        zFile not found�rzutf-8�replace)�encoding�errorsNr�#�[�]�=�zInvalid line: z#Parsing error on key, group missingFz[%s]-Header missing)r�os�path�isfiler�io�open�IOErrorr�strip�lstrip�rstrip�hasGroupr�split�
ValueError�hasKeyr�
IndexError�UnboundLocalError�closer�tainted�defaultGroup)rrZheadersr�fd�e�lineZcurrentGroup�key�value�headerrrrr$sP



z
IniFile.parse�stringcCs�|s
|j}||jkrN||j|krN|r>|j||j||�}q�|j||}n>tr�||jkrjt||j��q�||j|kr�t|||j��nd}|dkr�|j|�}g}n|g}x�|D]�}|dkr�|j|�}n�|dkr�yt	|�}Wnt
k
r�d}YnXnr|dk�r,yt|�}Wnt
k
�r(d}YnXn>|dk�rBtj
|�}n(|d	k�rj|jd
�\}	}
t	|	�t	|
�f}|dk�r�|j|�q�|}q�W|S)NrT�boolean�integerr�numericg�regex�point�,)r6r�_IniFile__addLocalerrrr�getList�_IniFile__getBoolean�intr0�float�re�compiler/�append)rr:�group�locale�type�listr;�values�result�x�yrrr�getisL






zIniFile.getcCsltjd|�rtjd|�}n:tjd|�r4tjd|�}n tjd|�rNtjd|�}n|g}|ddkrh|j�|S)Nz	(?<!\\)\;z(?<!\\);z	(?<!\\)\|z(?<!\\),r$r���)rI�searchr/�pop)rr=rOrrrrE�szIniFile.getListcCs<|dks|dks|dkrdS|dks4|dks4|dkr8dSdS)	Nr$�true�TrueTr�false�FalseFr)rr>rrrZ__getBoolean�s
zIniFile.__getBooleancCs>|s
|j}x.tjjD]"}d||f}||j|kr|SqW|S)z3add locale to key according the current lc_messagesz%s[%s])r6�xdg�Locale�langsr)rr:rLZlangZlangkeyrrrZ__addLocale�szIniFile.__addLocale�AllcCsg|_g|_tjj|j�d|_|j�xf|jD]\}|j	|�xL|j|D]>}|j
||j|||�|j||dkrJ|jjd|�qJWq0Wd}|dks�|dkr�x|jD]}|d|7}q�W|dks�|dkr�x|jD]}|d|7}q�W|r�t||j��dS)	z�Validate the contents, raising ``ValidationError`` if there
        is anything amiss.
        
        report can be 'All' / 'Warnings' / 'Errors'
        r$rzValue of Key '%s' is emptyr_ZWarningsz
- ZErrorsN)
�warningsrr%r&�splitextr�
fileExtension�checkExtrasr�
checkGroup�checkKeyrKr)rZreportrLr:�msgr9rrr�validate�s&
zIniFile.validatecCsdS)Nr)rrLrrrrd�szIniFile.checkGroupcCsdS)Nr)rr:r;rLrrrre�szIniFile.checkKeycCs�|dkr|j|�}n|g}x�|D]�}|dkr6|j|�}|dkrBq nb|dkrV|j|�}nN|dkrj|j|�}n:|dkr~|j|�}n&|dkr�|j|�}n|dkr�|j|�}|d	kr�|jjd
||f�q |dkr |j	jd|�q WdS)
NTr=Zlocalestringr>r@r?rArBr$z'%s' is not a valid %s�zValue of key '%s' is deprecated)
rE�checkString�checkBoolean�checkNumber�checkInteger�
checkRegex�
checkPointrrKr`)rr:r;rNrOrP�coderrr�
checkValue�s,


zIniFile.checkValuecCsdS)Nr)rrrrrcszIniFile.checkExtrascCs,|dks|dkrdS|dkp"|dks(dSdS)N�1�0rhrXrZr$r)rr;rrrrjszIniFile.checkBooleanc	Csyt|�Wn
dSdS)Nr$)rH)rr;rrrrkszIniFile.checkNumberc	Csyt|�Wn
dSdS)Nr$)rG)rr;rrrrlszIniFile.checkIntegercCstjd|�sdSdS)Nz^[0-9]+,[0-9]+$r$)rI�match)rr;rrrrn%szIniFile.checkPointcCst|�rdSdS)Nrr$)r)rr;rrrri)szIniFile.checkStringc	Csytj|�Wn
dSdS)Nr$)rIrJ)rr;rrrrm,szIniFile.checkRegexc

Cs�|r|jrtdd��|r$||_n|j}tjj|�r^tjjtjj|��r^tjtjj|��tj|ddd���}|r�|j	t
d��|jr�|j	t
d�|j�x2|j|jj
�D]\}}|j	t
d�||f�q�W|j	t
d	��xn|jj
�D]`\}}||jkr�|j	t
d�|�x,|j
�D] \}}|j	t
d�||f��qW|j	t
d	��q�WWdQRX|�r�tj|�j}|tjBtjBtjB}	tj||	�d
|_dS)NzFile not foundr�wzutf-8)rz#!/usr/bin/env xdg-open
z[%s]
z%s=%s
�
F)rrr%r&�dirname�isdir�makedirsr(r)�writer	r6r�items�stat�st_mode�S_IXUSR�S_IXGRP�S_IXOTH�chmodr5)
rrZtrusted�fpr:r;�namerLZoldmode�moderrrry3s4
"
z
IniFile.writecCs�|s
|j}|dkr:ttjj�dkr:|dtjjdd}y||j||<Wn tk
rlt||j��YnX||j	||�k|_
dS)NTrr!r")r6�lenr\r]r^r�KeyErrorrrrTr5)rr:r;rLrMrrr�set\szIniFile.setcCs0|j|�rtr,t||j��ni|j|<d|_dS)NT)r.rrrrr5)rrLrrr�addGroupks


zIniFile.addGroupcCs2||jk}|r|j|=d|_ntr.t||j��|S)NT)rr5rrr)rrLZexistedrrr�removeGroupss
zIniFile.removeGroupTcCs�|s
|j}yf|rXxFt|j|�D]4}tjd|tjjd|�r ||kr |j||=q W|j|j|�}d|_	|St
k
r�}z4tr�||kr�t||j
��q�t|||j
��ndSWYdd}~XnXdS)N�^�$Tr)r6rOrrIrsr\r]rArWr5r�rrrr)rr:rLZlocalesr�r;r8rrr�	removeKey}s $zIniFile.removeKeycCs
|jj�S)N)r�keys)rrrr�groups�szIniFile.groupscCs
||jkS)N)r)rrLrrrr.�szIniFile.hasGroupcCs|s
|j}||j|kS)N)r6r)rr:rLrrrr1�szIniFile.hasKeycCs|jS)N)r)rrrr�getFileName�szIniFile.getFileName)N)N)NFr=F)N)r_)r=F)NF)NF)NT)N)"�__name__�
__module__�__qualname__r6rbrr5rrrrTrErFrDrgrdrerprcrjrkrlrnrirmryr�r�r�r�r�r.r1r�rrrrrs>

E
6


(

)



r)�__doc__rIr%r{r(Zxdg.ExceptionsrrrrrrrZ
xdg.Localer\Zxdg.utilr	rrrrrr�<module>s $