Your IP : 216.73.217.85


Current Path : /opt/alt/python37/lib/python3.7/site-packages/pylint/checkers/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/pylint/checkers/__pycache__/stdlib.cpython-37.pyc

B

A!p\�@�@s�dZddlZddlZddlmZddlmZddlmZddl	m
Z
ddl	mZdd	hZd
Z
dZdZd
ZdhZdZejdkr�dZndZdd�ZGdd�de
�Zdd�ZdS)z0Checkers for various standard library functions.�N)�Instance)�Const)�IAstroidChecker)�BaseChecker)�utils�open�filez
unittest.casezthreading.Threadz	copy.copyzos._Environz	os.getenvzsubprocess.Popen)�r�_io�__builtin__c
Cs�t|t�sdSt|�}d}d|k}|t|�s>t|�t|�krBdSd|k}d|k}d|k}d|k}d|k}d	|kr�|s~|s~|r�dSd
}|r�|r�dS||||}	|	dkr�dS|s�|s�|s�|s�dSd
S)NFzrwatb+Ux�x�r�w�a�t�b�UT�)�
isinstance�str�set�len)
�mode�modes�_modeZcreating�reading�writingZ	appending�text�binary�total�r �G/opt/alt/python37/lib/python3.7/site-packages/pylint/checkers/stdlib.py�_check_mode_str0s0
r"c@s�eZdZefZdZddddddifdd	d
ddd
dd�	Zdddddddhdddddhddddd d!d"d#d$h	d%�d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5hd6d7d8hd9d:d!d"d#d$hd;d<d=d>d?d@hdAdBdCdDdEhdFhdGdHdIdJdKdLdMhdNhdO�dP�ZdQdR�ZdSdT�Z	dUdV�Z
e�dWdXdYdZd[d\d]d^�d_d`��Z
e�d�dadb��Ze�d�dcdd��Ze�d�dedf��Ze�d�dgdh��Zdidj�Zdkdl�Zdmdn�Zdodp�Zdqdr�Zdsdt�ZduS)v�
StdlibChecker�stdlib)z""%s" is not a valid mode for open.z
bad-open-modez�Python supports: r, w, a[, x] modes with b, +, and U (only with r) options. See http://docs.python.org/2/library/functions.html#openz)Using datetime.time in a boolean context.zboolean-datetimez�Using datetime.time in a boolean context can hide subtle bugs when the time they represent matches midnight UTC. This behaviour was fixed in Python 3.5. See http://bugs.python.org/issue13936 for reference.Z
maxversion)r	�)z*Redundant use of %s with constant value %rzredundant-unittest-assertz�The first argument of assertTrue and assertFalse is a condition. If a constant is passed as parameter, that condition will be always true. In this case a warning should be emitted.)zUsing deprecated method %s()zdeprecated-methodz�The method is marked as deprecated and will be removed in a future version of Python. Consider looking for an alternative in the documentation.)z*threading.Thread needs the target functionzbad-thread-instantiationz�The warning is emitted when a threading.Thread class is instantiated without the target function being passed. By default, the first parameter is the group param, not the target param. )z<Using copy.copy(os.environ). Use os.environ.copy() instead. zshallow-copy-environz�os.environ is not a dict object but proxy object, so shallow copy has still effects on original object. See https://bugs.python.org/issue15373 for reference. )z$%s does not support %s type argumentzinvalid-envvar-valuezxEnv manipulation functions support only string type arguments. See https://docs.python.org/3/library/os.html#os.getenv. )z,%s default type is %s. Expected str or None.zinvalid-envvar-defaultz�Env manipulation functions return None or str values. Supplying anything different as a default may cause bugs. See https://docs.python.org/3/library/os.html#os.getenv. )zGUsing preexec_fn keyword which may be unsafe in the presence of threadszsubprocess-popen-preexec-fna+The preexec_fn parameter is not safe to use in the presence of threads in your application. The child process could deadlock before exec is called. If you must use it, keep it trivial! Minimize the number of libraries you call into.https://docs.python.org/3/library/subprocess.html#popen-constructor)	ZW1501ZW1502ZW1503ZW1505ZW1506ZW1507ZE1507ZW1508ZW1509zcgi.parse_qsz
cgi.parse_qslzctypes.c_bufferz2distutils.command.register.register.check_metadataz,distutils.command.sdist.sdist.check_metadataztkinter.Misc.tk_menuBarz tkinter.Menu.tk_bindForTraversalzcommands.getstatusz	os.popen2z	os.popen3z	os.popen4zmacostools.touchedz#unittest.case.TestCase.assertEqualsz&unittest.case.TestCase.assertNotEqualsz)unittest.case.TestCase.assertAlmostEqualsz,unittest.case.TestCase.assertNotAlmostEqualszunittest.case.TestCase.assert_z)xml.etree.ElementTree.Element.getchildrenz)xml.etree.ElementTree.Element.getiteratorz+xml.etree.ElementTree.XMLParser.getiteratorz'xml.etree.ElementTree.XMLParser.doctype))��r)r&�rzinspect.getargspecZfailUnlessEqualZassertEqualsZfailIfEqualZassertNotEqualsZfailUnlessAlmostEqualZassertAlmostEqualsZfailIfAlmostEqualZassertNotAlmostEqualsZ
failUnlessZassert_ZfailUnlessRaisesZfailIfZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatcheszbase64.encodestringzbase64.decodestringzntpath.splituncz
cgi.escapez#configparser.RawConfigParser.readfpzinspect.getmoduleinfozlogging.warnzlogging.Logger.warnzlogging.LoggerAdapter.warnznntplib._NNTPBase.xpathzplatform.popenzimportlib.find_loaderzplistlib.readPlistzplistlib.writePlistzplistlib.readPlistFromByteszplistlib.writePlistToByteszasyncio.tasks.asyncz
fractions.gcdzinspect.getargvalueszinspect.formatargspeczinspect.formatargvalueszinspect.getcallargszplatform.linux_distributionz
platform.distz4importlib._bootstrap_external.FileLoader.load_module))r	rr)r	rr)r	r&r)r	r	r)r	�r)r	r)r))r	r%r)r	r'r)rr&r	cCs,|js(|js(t|j�dkr(|jd|d�dS)Nrzbad-thread-instantiation)�node)�kwargs�keywordsr�args�add_message)�selfr*r r r!�_check_bad_thread_instantiation�sz-StdlibChecker._check_bad_thread_instantiationcCs2|jr.x&|jD]}|jdkr|jd|d�qWdS)N�
preexec_fnzsubprocess-popen-preexec-fn)r*)r,�argr.)r/r*�keywordr r r!�_check_for_preexec_fn_in_Popen�s
z,StdlibChecker._check_for_preexec_fn_in_PopencCs@tj|dd�}x,|��D] }|��tkr|jd|d�PqWdS)Nr)�positionzshallow-copy-environ)r*)r�get_argument_from_call�inferred�qname�
OS_ENVIRONr.)r/r*r2r7r r r!�_check_shallow_copy_environ�s
z)StdlibChecker._check_shallow_copy_environz
bad-open-modezredundant-unittest-assertzdeprecated-methodzbad-thread-instantiationzshallow-copy-environzinvalid-envvar-valuezinvalid-envvar-defaultzsubprocess-popen-preexec-fncCsy�x�|j��D]�}|tjkr qn�|��jtkrLt|jdd�tkr�|�	|�n�|��jt
krh|�||�nxt|tj
�r�|��tkr�|�|�q�|��tkr�|�|�n<t|tj�r�|��}|tkr�|�|�n|tkr�|�||�|�||�qWWntjk
�r
dSXdS)zVisit a Call node.�nameN)�func�infer�astroid�Uninferable�rootr;�OPEN_MODULE�getattr�
OPEN_FILES�_check_open_mode�
UNITTEST_CASE�_check_redundant_assertrZClassDefr8�THREADING_THREADr0�SUBPROCESS_POPENr4�FunctionDef�	COPY_COPYr:�ENV_GETTERS�_check_env_function�_check_deprecated_method�InferenceError)r/r*r7r;r r r!�
visit_calls.
zStdlibChecker.visit_callcCs|jdkr|�|j�dS)N�not)�op�_check_datetimeZoperand)r/r*r r r!�
visit_unaryop)s
zStdlibChecker.visit_unaryopcCs|�|j�dS)N)rR�test)r/r*r r r!�visit_if.szStdlibChecker.visit_ifcCs|�|j�dS)N)rRrT)r/r*r r r!�visit_ifexp2szStdlibChecker.visit_ifexpcCsx|jD]}|�|�qWdS)N)�valuesrR)r/r*�valuer r r!�visit_boolop6szStdlibChecker.visit_boolopcs�tjd}t|jtj�r"|jj}nt|jtj�r:|jj}ndStj	tj
tjf}t||�s\dS|��}t
�fdd�||fD��r��jd||fd�nTxR�j|��D]@\}�|tjkr�t
�fdd�||fD��r��jd||fd�Pq�WdS)Nrc3s|]}|�jdkVqdS)rN)�
deprecated)�.0r;)r/r r!�	<genexpr>Psz9StdlibChecker._check_deprecated_method.<locals>.<genexpr>zdeprecated-method)r*r-c3s|]}|�kVqdS)Nr )r[r;)�	func_listr r!r\Us)�sys�version_inforr<r>�	Attribute�attrname�Namer;�BoundMethodZ
UnboundMethodrIr8�anyr.rZ�items)r/r*r7Zpy_vers�	func_nameZacceptable_nodesr8Z
since_versr )r]r/r!rM;s&



z&StdlibChecker._check_deprecated_methodcCsPt|tj�rL|jrLt|jdtj�rL|jdkrL|jd|j|jdjf|d�dS)Nr)Z
assertTrueZassertFalsezredundant-unittest-assert)r-r*)rr>rcr-rr;r.rX)r/r*r=r r r!rFZs
z%StdlibChecker._check_redundant_assertcCsPyt|���}Wntjk
r&dSXt|t�rL|��dkrL|jd|d�dS)zZ Check that a datetime was infered.
        If so, emit boolean-datetime warning.
        Nz
datetime.timezboolean-datetime)r*)�nextr=r>rNrrr8r.)r/r*Zinferedr r r!rRgszStdlibChecker._check_datetimecCsfytj|ddd�}Wntjk
r*dSX|rbt�|�}t|tj�rbt|j�sb|j	d||jd�dS)z>Check that the mode argument of an open or file call is valid.rr)r5r3Nz
bad-open-mode)r*r-)
rr6ZNoSuchArgumentError�
safe_inferrr>rr"rXr.)r/r*Zmode_argr r r!rDrs
zStdlibChecker._check_open_modecCs�d}d}|jr dd�|jD�}nd}|jr6|jd}n|rL||krL||}nd}|rn|j|dt�|�|dd�t|j�d	kr�|jd
}n|r�||kr�||}nd}|r�|j||dt�|�dd
�dS)N�key�defaultcSsi|]}|j|j�qSr )rXr2)r[r3r r r!�
<dictcomp>�sz5StdlibChecker._check_env_function.<locals>.<dictcomp>rzinvalid-envvar-valueF)r*�message�call_argr=�
allow_noner&rzinvalid-envvar-defaultT)r*r=rlrmrn)r,r-�_check_invalid_envvar_valuerrhr)r/r*r=Zenv_name_kwargZenv_value_kwargr+Zenv_name_argZ
env_value_argr r r!rLs:

z!StdlibChecker._check_env_functioncCs�|tjdfkrdS|��}t|t�rhd}|jdkr:|}nt|jt�sJd}|r�|j||||��fd�n|j||||��fd�dS)NFT)r*r-)	r>r?r8rrrXrr.Zpytype)r/r*r=rlrmrnr;�emitr r r!ro�s

z)StdlibChecker._check_invalid_envvar_valueN)�__name__�
__module__�__qualname__rZ__implements__r;ZmsgsrZr0r4r:rZcheck_messagesrOrSrUrVrYrMrFrRrDrLror r r r!r#Ns�


'r#cCs|�t|��dS)z.required method to auto register this checker N)Zregister_checkerr#)Zlinterr r r!�register�srt)�__doc__r^r>Z
astroid.basesrZastroid.node_classesrZpylint.interfacesrZpylint.checkersrrrCrErGrJr9rKrHr_rAr"r#rtr r r r!�<module>s,
k