§ }<ˆjãó—dZddlZddlmZmZddlmZddlmZddl m Z ddl m Z ddl mZd „ZGd „d ej¦«ZGd „d ej¦«Zd„Zd„Zd„ZdS)z� Various suggestions around migrations. Disabled by default! Enable with pylint --load-plugins=pylint_django.checkers.migrations éN)ÚcheckersÚ interfaces)Úutils)Úsuppress_message)Úcompat)ÚBASE_ID)Úis_migrations_modulecó—t|jtj¦«sdS|jjdksdS|jD]J}|jdkr=t|jtj¦«r|jjD]}|jdkrdSŒŒKdS)NFÚAddFieldÚfieldÚdefaultT) Ú isinstanceÚfuncÚastroidÚ AttributeÚattrnameÚkeywordsÚargÚvalueÚCall)ÚcallÚkeywordÚ field_keywords ús/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/pylint_django/checkers/migrations.pyÚ_is_addfield_with_defaultrsž€Ý �d”i¥Ô!2Ñ 3Ô 3ð؈uà Œ9Ô  Ò +Ð +؈uà”=ð  ð  ˆà Œ;˜'Ò !Ð !¥j°´ÅÄ Ñ&MÔ&MÐ !ð ")¤Ô!7ð ð � Ø Ô$¨ Ò1Ð1ؘ4˜4˜4ð2øð ˆ5ócó|—eZdZdZejfZdZde›d�diZ gZ iZ d„Z d„Z ejd¦«d„¦«Zd S) ÚNewDbFieldWithDefaultCheckera¼ Looks for migrations which add new model fields and these fields have a default value. According to Django docs this may have performance penalties especially on large tables: https://docs.djangoproject.com/en/2.0/topics/migrations/#postgresql The preferred way is to add a new DB column with null=True because it will be created instantly and then possibly populate the table with the desired default values. únew-db-field-with-defaultÚWÚ98)z%s AddField with default valuerzKUsed when Pylint detects migrations adding new fields with a default value.có\—t|¦«r|j |¦«dSdS©N)r Ú_migration_modulesÚappend)ÚselfÚnodes rÚ visit_modulez)NewDbFieldWithDefaultChecker.visit_moduleEs9€Ý  Ñ %Ô %ð 1Ø Ô #× *Ò *¨4Ñ 0Ô 0Ð 0Ð 0Ð 0ð 1ð 1rcó— | ¦«j}n#YdSxYwt|¦«sdSt|¦«rD||jvr g|j|<||j|vr$|j| |¦«dSdSdSr#)ÚframeÚparentr rÚ_possible_offencesr%)r&r'Úmodules rÚ visit_callz'NewDbFieldWithDefaultChecker.visit_callIs°€ð Ø—Z’Z‘\”\Ô(ˆFˆFøð Ø ˆFˆFøøøå# FÑ+Ô+ð Ø ˆFå $ TÑ *Ô *ð =ؘTÔ4Ð4Ð4Ø24�Ô'¨Ñ/à˜4Ô2°6Ô:Ð:Ð:ØÔ'¨Ô/×6Ò6°tÑ<Ô<Ð<Ð<Ð<ð  =ð =ð;Ð:ó‚œ!cóp—d„}|j |d¬¦«d}g}|jD]E}|jd d¦«d}||kr|}| |¦«ŒF|j ¦«D]+\}}||vr"|D]}| d|j|¬¦«Œ Œ,dS) Ncó—|jSr#)Úpath©r's rÚ_pathz1NewDbFieldWithDefaultChecker.close.._path[s €Ø”9Ð rT)ÚkeyÚreverseÚrÚ migrationsr)Úargsr') r$Úsortr2Úsplitr%r,ÚitemsÚ add_messageÚname)r&r4Úlast_name_spaceÚlatest_migrationsr-Ú name_spaceÚnodesr's rÚclosez"NewDbFieldWithDefaultChecker.closeYs€ð ð ð ð Ô×$Ò$¨¸Ð$Ñ=Ô=Ð=ð ˆØÐØÔ-ð 1ð 1ˆFØœ Qœ×-Ò-¨lÑ;Ô;¸AÔ>ˆJؘ_Ò,Ð,Ø",�Ø!×(Ò(¨Ñ0Ô0Ð0øà!Ô4×:Ò:Ñ<Ô<ð _ð _‰MˆF�EØÐ*Ð*Ð*Ø!ð_ð_�DØ×$Ò$Ð%@ÀvÄ{ÐY]Ð$Ñ^Ô^Ð^Ð^øð _ð _rN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚIAstroidCheckerÚ__implements__r>rÚmsgsr$r,r(r.rÚcheck_messagesrC©rrrr*s¤€€€€€ð ð ð!Ô0Ð2€Nð '€DàˆGˆˆˆð ð €DðÐØÐð1ð1ð1ð=ð=ð=ð €UÔÐ5Ñ6Ô6ð_ð_ñ7Ô6ð_ð_ð_rrcód—eZdZejfZdZde›d�diZe j d¦«d„¦«Z dS)Ú MissingBackwardsMigrationCheckerú$missing-backwards-migration-callabler Ú97)z+Always include backwards migration callablerOzbAlways include a backwards/reverse callable counterpart so that the migration is not irreversable.cóœ— | ¦«j}n#YdSxYwt|¦«sdS|j ¦« d¦«rit |j¦«dkrS|jr1|jD]}|j dkrdSŒ|  d|¬¦«dS|  d|¬¦«dSdSdS)NÚ RunPythonéÚ reverse_coderOr3) r*r+r rÚ as_stringÚendswithÚlenr9rrr=)r&r'r-rs rr.z+MissingBackwardsMigrationChecker.visit_call€sü€ð Ø—Z’Z‘\”\Ô(ˆFˆFøð Ø ˆFˆFøøøå# FÑ+Ô+ð Ø ˆFà Œ9× Ò Ñ Ô × )Ò )¨+Ñ 6Ô 6ð T½3¸t¼y¹>¼>ÈAÒ;MÐ;MØŒ}ð TØ#œ}ðð�GØ”{ nÒ4Ð4ؘ˜ð5à× Ò Ð!GÈdÐ ÑSÔSÐSÐSÐSà× Ò Ð!GÈdÐ ÑSÔSÐSÐSÐSð Tð TÐ;MÐ;Mr/N) rDrErFrrHrIr>rrJrrKr.rLrrrNrNssm€€€€€Ø Ô0Ð2€Nà 1€Dð ˆGˆˆˆð ð €Dð€UÔÐ@ÑAÔAðTðTñBÔAðTðTðTrrNcó*—t|j¦«S)a RunPython() migrations receive forward/backwards functions with signature: def func(apps, schema_editor): which could be unused. This augmentation will suppress all 'unused-argument' messages coming from functions in migration modules. )r r+r3s rÚis_in_migrationsrY”s€õ  ¤ Ñ ,Ô ,Ð,rcó‚—t|jj¦«}d|vr| d¦«||j_dS)Nr8)ÚlistÚconfigÚ black_listÚremove)ÚlinterÚnew_black_lists rÚload_configurationra sC€å˜&œ-Ô2Ñ3Ô3€NØ�~Ð%Ð%Ø×Ò˜lÑ+Ô+Ð+Ø-€F„MÔÐÐrcó—| t|¦«¦«| t|¦«¦«tjst |¦«t |tjj j dt¦«dS)z.Required method to auto register this checker.zunused-argumentN) Úregister_checkerrrNrÚLOAD_CONFIGURATION_SUPPORTEDrarrÚ variablesÚVariablesCheckerÚleave_functiondefrY)r_s rÚregisterrh¨sˆ€à ×ÒÕ8¸Ñ@Ô@ÑAÔAÐAØ ×ÒÕ<¸VÑDÔDÑEÔEÐEÝ Ô .ð#ݘ6Ñ"Ô"Ð"õØÝÔÔ+Ô=ØÝñ ôðððr)rGrÚpylintrrÚpylint.checkersrÚpylint_plugin_utilsrÚ pylint_djangorÚpylint_django.__pkginfo__rÚpylint_django.utilsr rÚ BaseCheckerrrNrYrarhrLrrúrpsFðð ðð €€€Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø!Ð!Ð!Ð!Ð!Ð!Ø0Ð0Ð0Ð0Ð0Ð0à Ð Ð Ð Ð Ð Ø-Ð-Ð-Ð-Ð-Ð-Ø4Ð4Ð4Ð4Ð4Ð4ðððð*F_ðF_ðF_ðF_ðF_ 8Ô#7ñF_ôF_ðF_ðRTðTðTðTðT xÔ';ñTôTðTðB -ð -ð -ð.ð.ð.ðððððr