Your IP : 216.73.216.224


Current Path : /opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/
Upload File :
Current File : //opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyc

�
��bWc@s�dZddlmZmZddlmZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZmZdd	lmZmZdd
lmZddlmZddlmZmZdd
lmZddl m!Z!m"Z"d�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d�Z-d�Z.d�Z/d�Z0d�Z1d�Z2d�Z3d �Z4d!�Z5d"�Z6d#�Z7d$�Z8d%�Z9d&�Z:d'S((sAugmentations.i����(tDocStringCheckertNameChecker(tMisdesignChecker(tClassChecker(tNewStyleConflictChecker(tVariablesChecker(tInferenceError(tClassDeft
ImportFromt	Attributetdjango_version(tClasstModule(t
numversion(tTypeChecker(tnode_is_subclasstPY3(tinferred(t
augment_visittsuppress_messagec
Cs�|jd}i}tr&|djn
|dj}xm|�D]b\}}t|dt�r�tg|djD]}|ddk^qm�r�q=q�n|||<q=W|f|d}	|	g|_|||�S(st
    Replaces the leave_module method on the VariablesChecker class to
    prevent unused-import warnings which are caused by the ForeignKey
    and OneToOneField transformations. By replacing the nodes in the
    AST with their type rather than the django field, imports of the
    form 'from django.db.models import OneToOneField' raise an unused-import
    warning
    it
ForeignKeyt
OneToOneFieldi(RR(t_to_consumeRtitemst	iteritemst
isinstanceRtanytnames(
torig_methodtselftnodet
to_consumet
new_thingstiterattnametstmtstntnew_consume((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt)ignore_import_warnings_for_related_fieldss	
 0	c	Cs�t}d%}|j|ks-|jjd�r6t}n?t|jt�rut|jd d$�}||krut}qun|r�t	|j
��}xb|D]W}yt|��}Wntk
r�q�Xx'|D]}t
|d!d"d#�r�d$Sq�Wq�Wn|�d$S(&sW
    When a Django model has a ForeignKey to another model, the target
    of the foreign key gets a '<modelname>_set' attribute for accessing
    a queryset of the model owning the foreign key - eg:

    class ModelA(models.Model):
        pass

    class ModelB(models.Model):
        a = models.ForeignKey(ModelA)

    Now, ModelA instances will have a modelb_set attribute.

    It's also possible to explicitly name the relationship using the related_name argument
    to the ForeignKey constructor. As it's impossible to know this without inspecting all
    models before processing, we'll instead do a "best guess" approach and see if the attribute
    being accessed goes on to be used as a queryset. This is via 'duck typing': if the method
    called on the attribute being accessed is something we might find in a queryset, we'll
    warn.
    tnonetalltcounttdatestdistincttextratgett
get_or_createtcreatetbulk_createtfiltert	aggregatetannotatetcomplex_filtertexcludetin_bulktiteratortlatesttorder_bytselect_for_updatetselect_relatedtprefetch_relatedtvaluestvalues_listtupdatetreversetdefertonlytusingtexistst_settattrnames django.db.models.manager.Managersdjango.db.models.base.Models.ModelN(R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;R<R=R>R?R@RARBRCRD(tFalseRFtendswithtTrueRtparentR	tgetattrtNonetlisttget_childrenRRR(	tchainRtquackt
manager_attrst	func_nametchildrentchildtinferred_clstcls((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytforeign_key_sets/sf!	


	cCs!|jjd�rdS|�dS(Nt_id(RFRH(ROR((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytforeign_key_ids�scCs6|jddks%t|jt�r)tSt|d�S(s3Checks that node is derivative of ModelAdmin class.i����tAdmins'django.contrib.admin.options.ModelAdmin(R"RRJRRGR(R((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_admin_subclass�s%c
Cs<|jdks"t|jt�r&tSd}t|j|�S(
s.Checks that node is derivative of Media class.tMedias'django.contrib.admin.options.ModelAdminsdjango.forms.widgets.Mediasdjango.db.models.base.Models.Modelsdjango.forms.forms.Forms.Formsdjango.forms.widgets.Widgets.Widgetsdjango.forms.models.ModelForms
.ModelForm(
s'django.contrib.admin.options.ModelAdminsdjango.forms.widgets.Mediasdjango.db.models.base.Models.Modelsdjango.forms.forms.Forms.Formsdjango.forms.widgets.Widgets.Widgetsdjango.forms.models.ModelForms
.ModelForm(R"RRJRRGR(Rtparents((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_media_subclass�s"cCs<|jdks"t|jt�r&tSd
}t|j|�S(s-Checks that node is derivative of Meta class.tMetas.Modelsdjango.db.models.base.Models.Formsdjango.forms.forms.Forms
.ModelFormsdjango.forms.models.ModelForms*rest_framework.serializers.ModelSerializers&rest_framework.generics.GenericAPIViews,rest_framework.viewsets.ReadOnlyModelViewSets$rest_framework.viewsets.ModelViewSets"django_filters.filterset.FilterSet(s.Modelsdjango.db.models.base.Models.Formsdjango.forms.forms.Forms
.ModelFormsdjango.forms.models.ModelForms*rest_framework.serializers.ModelSerializers&rest_framework.generics.GenericAPIViews,rest_framework.viewsets.ReadOnlyModelViewSets$rest_framework.viewsets.ModelViewSets"django_filters.filterset.FilterSet(R"RRJRRGR(RR]((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_meta_subclass�s"cCs<|jdks"t|jt�r&tSd}t|j|�S(	s1Checks that node is derivative of MPTTMeta class.tMPTTMetasdjango.db.models.base.Models.Modelsdjango.forms.forms.Forms.Formsdjango.forms.models.ModelForms
.ModelForm(sdjango.db.models.base.Models.Modelsdjango.forms.forms.Forms.Formsdjango.forms.models.ModelForms
.ModelForm(R"RRJRRGR(RR]((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_mpttmeta_subclass�s"cCs7|jjd�r*t|jt�r*tSt|d�S(s1Checks that node is derivative of TestCase class.tTestsdjango.test.testcases.TestCase(R"RHRRJRRGR(R((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_test_case_subclass�s&cCss|jdkrtS|j}x#|rAt|t�rA|j}qWd}|dk	or|jjd�ort||�S(s9Checks that node is get or post method of the View class.R-tposts.ViewtView(R-ReN(R"RGRJRtScopedClassRLRHR(RRJtsubclass((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt2is_model_view_subclass_method_shouldnt_be_function�s	
cCs t|�stSd|j�kS(s�
    Checks that node is get or post method of the View class and it has valid arguments.

    TODO: Bad checkings, need to be more smart.
    trequest(RiRGtargnames(R((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt&is_model_view_subclass_unused_argument�scCs�|jjd�sdS|jjd�s,dS|j�r�y:x3t|j���D]}t|dd�rQtSqQWWq�tk
r�tSXntS(s/Accept model's fields with get_*_display names.t_displayNtget_sdjango.db.models.base.Models.Model(	RFRHt
startswitht
last_childRRRIRRG(RRV((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_field_display_method�s
cCse|jdkrtS|j}x#|rAt|t�rA|j}qW|dks]|jdkratStS(s6Suppress warnings for valid attributes of Media class.tjsR\(RrN(R"RGRJRRgRLRI(RRJ((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_model_media_valid_attributess	
cCsR|jdkrtS|j}xt|t�s:|j}qWd|jkrNtStS(s=Suppress warnings for valid constants in templatetags module.tregisters
templatetags.(Rt(R"RGRJRRRI(RRJ((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt%is_templatetags_module_valid_constants	
cCsU|jdkrtS|j}xt|t�s:|j}qW|jjd�sQtStS(s5Suppress warnings for valid constants in urls module.turlpatternstapp_nameturls(RvRw(R"RGRJRRRHRI(RRJ((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_urls_module_valid_constants	
cCs!tdkr|jdkStSdS(Niit_meta(ii(R
RFRG(R((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytallow_meta_protected_access.s
cs
�fd�S(sShortcut for node_is_subclass.cs
t|��S(N(R(R(t
class_name(sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt<lambda>7t((R|((R|sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytis_class5scs��fd�}|S(Ncs��||�dS(N((targstkwargs(Rtwith_method(sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt	wrap_func;s((RR�R�((RR�sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytwrap:scCst|tdkrdnd�S(Niitvisit_classdeftvisit_class(ii(RKtPYLINT_VERSION(tchecker((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt_visit_classCscCst|tdkrdnd�S(Niitvisit_attributet
visit_getattr(ii(RKR�(R�((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt_visit_attributeGscCst|tdkrdnd�S(Niitleave_classdeftleave_class(ii(RKR�(R�((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt_leave_classKscCst|tdkrdnd�S(Niitleave_functiondeftleave_function(ii(RKR�(R�((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt_leave_functionOscCst|tdkrdnd�S(Niitvisit_assignnamet
visit_assname(ii(RKR�(R�((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt_visit_assignnameSscCs
t|d�S(Ntvisit_assign(RK(R�((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt
_visit_assignWscCs�t|tt�t�t|tt�t�t|tt�dt�t|tt�dt	d��t|tt
�dt	d��t|tt�dt	d��t|tt�dt	d��t|tt�dt
�t|tt�d	t
�t|tt
�d
t
�t|tt�dt
�t|tt
�dt�t|tt�d
t�t|tt�dt�t|tt�d	t�t|tt
�d
t�t|tt�dt�t|tt�dt	d��t|tt�dt	d��t|tt�dt�t|tt�dt�t|tt
�dt�t|tt�dt�t|tt�dt�t|tt�d	t�t|tt
�dt�t|tt�dt�ttjt�t_dS(s)Apply augmentation and suppression rules.tE1101tR0901s"django.views.generic.edit.FormViewtW0232sdjango.forms.models.ModelFormtR0924sdjango.forms.forms.Formsmissing-docstringsold-style-classsno-initstoo-few-public-methodssprotected-accesstC0103s.Models.ViewtR0904tR0201tW0613N(RR�RRWRYRRqR�RRRR�RR`RR{R�RRsR^R[RdR�RiRRlRbR�tleave_moduleR&(tlinter((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pytapply_augmentations[s<

N(;t__doc__tpylint.checkers.baseRRtpylint.checkers.design_analysisRtpylint.checkers.classesRtpylint.checkers.newstyleRtpylint.checkers.variablesRtastroidRtpylint_django.compatRRR	R
tastroid.scoped_nodesRRgRtpylint.__pkginfo__R
R�tpylint.checkers.typecheckRtpylint_django.utilsRRRtpylint_plugin_utilsRRR&RWRYR[R^R`RbRdRiRlRqRsRuRyR{RR�R�R�R�R�R�R�R�(((sU/opt/alt/python27/lib/python2.7/site-packages/pylint_django/augmentations/__init__.pyt<module>sJ"		]