Files
pidcat-repl/__pycache__/pidcat.cpython-314.pyc
T

243 lines
39 KiB
Plaintext
Raw Normal View History

2026-07-20 11:47:36 -04:00
+
Ä@^j&gãólRt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RI t ^RI
t
^RI H t Rt Rt
]!]!]!]
44Uu.uFp]
V,V3NK up4t]P$!RR7t]P)RRR R
7]P)R R R
R]^RR7]P)RRR]]
]
P/4,RRR7]P)RRRRR7]P)RRRRR7]P)RR RR!R7]P)R"R#R$R%R&7]P)R'R(R)RR*R7]P)R+R,R-RR.R7]P)R/R0R1RR2R7]P)R3R4R5R6R7R7]P)R8R9R:R6R;R7]P)R<R=R>R?] ,R@RA7]P)RBRCRDRRERFRG7]P)RHRIRRJR7]P14t]]P4P74,t]P8tRK.t]P<'d]P?R"]P<.4]P@'d]PCR'4]PD'd]PCR+4]PF'do].RO,t$] PJ!]$] ] RM7PM4^,t']PP!RN]!]'44PS^4t*]PC]*4]!]4^8XdRO]n+],!]-!RP]44t.],!]-!RQ]44t/],!]0!RR]/44t/]Pb^,^,^,t2]PfPi4t5Rs6^RI7t7^RI8t8^RI9t9]9Pt!RS]7Pv!^]8Px]9Pz!RS^^444wt>s6]!^4wt?t@tAtBtCtDtEtFRTtGR“RUltHR“RVltIRWtJ]@]A]B]C]D]E.tKRX]FRY]FRZ]FR[]FR\]ER]]FR^]FR_]B/tLR`tM]!Ra4]H!]@4: Rb]G: Rc]H!]B4: Rd]G: 2/tO]P 'd6]!Re4tQRb]H!]A4: Rc]G: Rd]H!]B4: Rf]G: 2tR]R]O]Q&R]I!Rg]F]?Rh7Ri]I!Rj]?]CRh7Rk]I!Rl]?]ARh7Rm]I!Rn]?]BRh7Ro]I!Rp]?]@Rh7Rq]I!Rr]?]@Rh7/tS]!Rs4tT]!Rt4tU]!Ru4tV]!Rv4tW]!Rw4tX]!Rx4tY]!Ry4tZ]!Rz4t[]!R{4t\]!R|4t]]R},t^]^PCR~4]^P?R<R.4]'d@],!]^4t`]`PCR/4] PJ!]`4ta]aPÅ4fK!R€R4tc]Pi4'd] PJ!]^] ] R7teM]c!4te]f!4tgRshRsiRƒtjR„tkR…tlR†tm]RLR‡.,tn] PJ!]n] ] ] Rˆ7to]oPf4R‰RŠ44ts]!]s4^8XdMW]TPë]s4tv]vfK_]vPS^4tw]vPS^4tx]x].9gROty]gPõ]w4Rt{!R4t|]Pi4;'d]5;'d]'*t~]~'d
^RI8t8^RIt]~'d>]|!4t]
EP!]{]EP3RORŽ7t„]EP ]„4R#]†!]R4'd*]P !]EP]EP4]{!R”Rl4R#uupi EL6;i ]tdi;i ]€dREt~L°i;i)•a<
Copyright 2009, The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
N)ÚPIPEz2.3.0ÚVDIWEFzFilter logcat by package name)Ú descriptionÚpackageÚ*zApplication package name(s))ÚnargsÚhelpz-wz --tag-widthÚNÚ tag_widthzWidth of log tag)ÚmetavarÚdestÚtypeÚdefaultrz-lz --min-levelÚ min_levelÚVzMinimum level to be displayed)r r
Úchoicesrrz
--color-gcÚcolor_gcÚ
store_truezColor garbage collection)r Úactionrz--always-display-tagsÚ always_tagszAlways display the tag namez --currentÚ current_appz$Filter logcat by current running appz-sz--serialÚ
device_serialz$Device serial number (adb -s option))r rz-dz--deviceÚ
use_devicez.Use first device for log input (adb -d option)z-ez
--emulatorÚ use_emulatorz0Use first emulator for log input (adb -e option)z-cz--clearÚ clear_logcatz#Clear the entire log before runningz-tz--tagÚtagÚappendz!Filter output by specified tag(s)z-iz --ignore-tagÚ ignored_tagz*Filter output by ignoring specified tag(s)z-vz --versionÚversionz %(prog)s z!Print the version number and exit)rrrz-az--allÚallFzPrint all log messages)r rrrz--plainÚplainz9Plain streaming output, without the interactive filter UIÚadbÚshell)ÚstdoutÚstderrz.*TaskRecord.*A[= ]([^ ^}]*)Tcó*VPR4R8H#©Ú:éÿÿÿÿ©Úfind©rs&Ú//Users/imcarlost/Projects/pidcat-repl/pidcat.pyÚ<lambda>r-Ps¨w¯|©|¸CÓ/@ÀBÒ/Fócó*VPR4R8g#r&r)r+s&r,r-r-Rs¨g¯l©l¸3Ó.?À2Ò.Er.có\VPR4\V4^,
8wdV#VRR#)r'Nr()r*Úlenr+s&r,r-r-Ts0°g·l±lÀ3Ó6GÌ3ÈwË<ÐZ[ÕK[Ô6[¨7Ð+mÐahÐilÐjlÐamÐ+mr.Úhhzcóº.pVeVPRV,4VeVPRV,4V'dRRPV4,#R#)Nz3%dz10%dz[%smÚ)rÚjoin)ÚfgÚbgÚcodess&& r,Ú termcolorr:fsIØ
€%Ø^U—\\ %¨"¥*Ô^U—\\ &¨2¥+Ô.ß).ˆc—hh˜u“oÕ %Ð6°BÐ6r.cóX\'d\W4V,\,#T#©N)Ú
stdout_isattyr:ÚRESET)Úmessager7r8s&&&r,Úcolorizer@ls ß0=³
Œ˜WÕ $¤uÕ ,ÐJÀ7ÐJr.cóH\\,
p\R8XgV^8:dV#VPRR4pRp^pV\V48dW\ W1,\V44pW W4,
pV\V48dVR,
pVR\,,
pTpKfV#)éÚ z r5Ú
Ú r()ÚwidthÚ header_sizeÚreplacer1Úmin)r?Ú wrap_areaÚ
messagebufÚcurrentÚnexts& r,Ú indent_wraprNosÜ”kÕ!€)ô ˆb„[”NØ €NØ O‰O˜D  )€'Ø€*Ø
€'Ø”#g“,ÔÜ ˆ"¤C¨£LÓ 1€Dؘ'€JØ Œc'Ø€jØCœ+Õ%€jØÐr.ÚdalvikvmÚProcessÚActivityManagerÚActivityThreadÚAndroidRuntimeÚjdwpÚ
StrictModeÚDEBUGcóÈV\9d\^,\V&\V,pV\9d+\PV4\PV4V#)é)Ú
KNOWN_TAGSÚ LAST_USEDÚremover)rÚcolors& r,Úallocate_colorr]ŽsKð
ÔÜ •l„Jˆs
S/€%Ø
ŒiÔÜ
×ÑÜ
×ÑØ €,r.z4^(StrictMode policy violation)(; ~duration=)(\d+ ms)z\1z\2z\3z{^(GC_(?:CONCURRENT|FOR_M?ALLOC|EXTERNAL_ALLOC|EXPLICIT) )(freed <?\d+.)(, \d+\% free \d+./\d+., )(paused \d+ms(?:\+\d+ms)?)z\4z V )r7r8ÚDz D ÚIz I ÚWz W ÚEz E ÚFz F z?^\w+\s+(\w+)\s+\w+\s+\w+\s+\w+\s+\w+\s+\w+\s+\w\s([\w|\.|\/]+)$zT^.*: Start proc ([a-zA-Z0-9._:]+) for ([a-z]+ [^:]+): pid=(\d+) uid=(\d+) gids=(.*)$z;^.*: Start proc (\d+):([a-zA-Z0-9._:]+)/[a-z0-9]+ for (.*)$zO^E/dalvikvm\(\s*(\d+)\): >>>>> ([a-zA-Z0-9._:]+) \[ userId:0 \| appId:(\d+) \]$z-^Killing (\d+):([a-zA-Z0-9._:]+)/[^:]+: (.*)$z4^No longer want ([a-zA-Z0-9._:]+) \(pid (\d+)\): .*$z4^Process ([a-zA-Z0-9._:]+) \(pid (\d+)\) has died.?$z!^([A-Z])/(.+?)\( *(\d+)\): (.*?)$z.*nativeGetEnabledTags.*z^#(.*?)pc\s(.*?)$:NNNÚlogcatÚbriefcó,a]tRt^ËtoRtRtRtVtR#)ÚFakeStdinProcesscóD\PPVnR#r<)ÚsysÚstdinÚbufferr#©Úselfs&r,Ú__init__ÚFakeStdinProcess.__init__ÌsÜ—))×"€D†Kr.cóR#r<©rks&r,ÚpollÚFakeStdinProcess.pollÎsÙ r.)r#N)Ú__name__Ú
__module__Ú __qualname__Ú__firstlineno__rmrqÚ__static_attributes__Ú__classdictcell__©Ú
__classdict__s@r,rfrfËsø‡òðr.rf)rir#có¢\\4^8XdR#V\9dR#VPR4pVR8Xd
V\9#VRV\9#)rXTr'Nr()r1rÚnamed_processesr*Úcatchall_package)ÚtokenÚindexs& r,Úmatch_packagesr€ÙsLÜŒƒ\Ù Ø
ŒoÔÙ Ø
*‰*S/€%Ø(-°¬ ˆ
\¸À¸-ÔK[Ñ:[Ð\r.cóLVR8wdR#\PV4pV'dBVP^4pVP^4p\V4'dV\9dW43#\
PV4pV'dBVP^4pVP^4p\V4'dV\9dW43#\ PV4pV'dBVP^4pVP^4p\V4'dV\9dW43#R#)rQ©NN)ÚPID_KILLÚmatchÚgroupr€ÚpidsÚ PID_LEAVEÚ PID_DEATH)rr?ÚkillÚpidÚ package_lineÚleaveÚdeaths&& r,Ú parse_deathrŽáØÐ ÔØ ÐÜ ˜Ó €$ß Ø
*‰*Q‹-€CØ—:‘:˜a“=€Lܬt¬ Ø
Ð
ÐÜ
/‰/˜
"€%ß
Ø
+‰+a.€CØ—;;˜q“>€LÜl׬t¬ Ø
Ð
ÐÜ
/‰/˜
"€%ß
Ø
+‰+a.€CØ—;;˜q“>€LÜl׬t¬ Ø
Ð
ÐØ Ðr.có2\PV4pVeVP4wr#pW4VRR3#\PV4pVeVP4wr4r%pW4W%V3#\PV4pVeVP4wr#pVRW%R3#R#)Nr5)Ú
PID_START_5_1r„ÚgroupsÚ PID_STARTÚPID_START_DALVIK)ÚlineÚstartÚline_pidÚ line_packageÚtargetÚline_uidÚ line_gidss& r,Úparse_start_procrøÜ
×
Ñ
˜
#€%Ø
ÒØ%*§\¡\£^Ñ"€H˜  ¨2¨rÐ 
/‰/˜
€%Ø
ÒØ:?¿,¹,».Ñ7€L˜(¨iØ  °YÐ 
×
Ñ
 Ó
&€%Ø
ÒØ',§|¡|£~Ñ$€H˜ ˜˜X°Ð 
r.cóØa\;QJd7V3Rl\\PV44F 'gK R# R#!V3Rl\\PV444#)c3ón<"TF*p\P!RV,R,S4xK, R#5i)Ú$N)Úrer„)Ú.0Útrs& €r,Ú <genexpr>Ú$tag_in_tags_regex.<locals>.<genexpr>s)øéÐ JÑ5I°ŒRXŠXd˜Q•h •o s×
+Ó5Iùsƒ25TF)ÚanyÚmapÚstrÚstrip)rÚtagssf&r,Útag_in_tags_regexrªsBø€ß Ô J´S¼¿¹ÀDÔ5IÓ JŒÐÐÔ J´S¼¿¹ÀDÔ5IÓ JÓ JÐJr.Úps)rir#r$úutf-8rHcó \P4Efa\PP4P RR4P 4p\T4^8XdR#\PT4pTeK\PT4pTfTP4wrErgTP 4p\T4pT'd×Twršr¼p
\T 4'\PT 4T sRpT\#R\$^,
,\&R7,
pT\)RT : RT
: R24,
pT\#R\$^,
,\&R7,
pTR T : R
T : R T
: 2,
pTR,
pT!R T : RT
: R T : 2TR
R7Rs\-YW4wppT'ds\P/T4RpT\#R\$^,
,\0R7,
pTRT: RT: R2,
pTR,
pT!R T: RT: R2TR
R7RsTR8Xd>\2PTP544pTeTP54p\ p\6P8'gT\9dEK˜T\:9d\:T,\<8dE\6P>'d$\AT\6P>4'dE\6PB'd$\AT\6PB4'gEK.T: RT: RT: 2pRp\6PD^8”T\*8wg\6PF'dTTs\IT4pT\6PD)RPK\6PD4pT\#TTR7,
pMTR\6PD,,
pTR,
pT\L9dT\LT,,
pMTRT,R,,
pTR,
p\NF"p\NT,pTPQTT4pK$ T\)T4,
pT!TT4EKwR# \ dR#i;i)zÀParse adb output and hand each formatted block to emit(search_text, block).
search_text is the block's plain, markup-free text, used by the interactive
filter; block is the colorized output.
Nr¬rHrDrE)r8z Process z
created for z PID: z UID: z GIDs: zProcess T)Ú is_separatorz (PID: z) endedrVr5)r7))r!rqr#ÚreadlineÚdecoder¨ÚKeyboardInterruptr1ÚBUG_LINEr„ÚLOG_LINErrr€r†ÚaddÚapp_pidr@rGÚWHITErNÚlast_tagrŽr[ÚREDÚBACKTRACE_LINEÚlstripÚargsrÚLOG_LEVELS_MAPrrrr
rr]ÚrjustÚTAGTYPESÚRULESÚsub)Úemitr”Úbug_lineÚlog_lineÚlevelrÚownerr?r•r—r˜rr™ÚlinebufÚdead_pidÚ
dead_pnameÚbt_lineÚ search_textr\ÚmatcherrHs& r,ÚstreamrÌsvô 
Óð Ü
Z‰Z×
Ñ
Ó
"×
)¨'°9Ó
=×
E€dô ˆ4ƒyA„~Ù ä~‰~˜dÓ#€HØÒÙä~‰~˜dÓ#€HØÒÙà!)§¡Ó!2Ñ€EØ
)‰)+€CÜ ˜ "€Eß Ø<AÑ9€l˜H° Ü ˜ × %Ò %Ü ÔàˆàˆØ”8˜C¤;°¥?ÕÔ>ˆØ•;ÃËvÐØ”8˜C¤;°¥?ÕÔÙ³hÃÊ)ÐØ4ˆÚ ³LÃ&Ê(Ð
SÐU\ÐkoÕˆä& €HˆÜ
‡kkØ€gØ
˜#¤¨q¥Õ1´cÔ:€gÙ
³*»hÐG€gØ
…o€gÚ
«:³xÐ @À'ÐX\Õ€hð ˆg„~Ü×$ W§^¡^Ó%5Ó6€gØ Ò Ø—.܈ä 88ˆ8˜¤TÔØ Ô¤>°%Õ#8¼9Ô#DÚÜ ××ÐÔ-¨c´4×3CÑ3C×Ü ‡x‡x€xÔ)¨#¬t¯x©x×ó!&£sªGÐ4€Kà€Gä ‡~Ôà ŒœD׈ܘsÓ#ˆØ”4—>>#×)¬$¯.©.ÓØ”8˜C EÔ*‰àŸÕ'ˆØ
…n€gð
ÔØ
˜%•Õ 
u•˜"€gØ ˆs…N€G÷ˆÜg•€gØ ˜G WÓ-‚gñð Œ{˜7Ó#€GÙˆñu øô ô Ú ð ús™<Q:Ñ: R ÒR cóºa]tRtRtoRtRtRtRtRtRt Rt
R t RR
lt R t
R tR
tRt]P$!R4tRtRtRtRtRtRtRtRtVtR#)Ú
InteractiveUIiaKFull-screen filter UI: log lines render above a bottom prompt line, and the
typed query live-filters the scrollback. Every whitespace-separated word must
appear in a block's plain text (case-insensitive) for it to be shown, except
process create/death separators, which always stay visible so filtered runs
can still be told apart.i'iˆcó0\P!4Vn\P!VP
R7Vn.Vn^VnRVn RVn
RVn ^Vn RVn
RVnVP4wVnVnR#))Úmaxlenr5FN)Ú threadingÚLockÚlockÚ collectionsÚdequeÚ MAX_ENTRIESÚentriesÚvisibleÚ
next_entry_idÚqueryÚstatusÚresizedÚ
scroll_offsetÚ hover_rowÚselected_indexÚ
_term_sizeÚrowsÚcolsrks&r,rmÚInteractiveUI.__init__sxÜÓ €D„IÜ×$¨D×,<Ñ,<Ô=€D„LØ€D„LØ€DÔØ€D„JØ€D„KØ€D„LØ€DÔØ€D„NØ€DÔØŸ?™?Ó€D„IˆtŽyr.cóæ\P!\PP 44pVP
VP r2V^8gV^8d^^Pr2W#3# \d^^Pr2L$i;i)é)ÚosÚget_terminal_sizerhr#ÚfilenoÚlinesÚcolumnsÚOSError)rlÚsizerás& r,ÚInteractiveUI._term_size˜siðÜ
×
!¤#§*¡*×"3Ñ"3Ó"5Ó
6€dØ—:‘:˜tŸ|™|ˆ ˆa„x4˜"”9Ørˆ ˆ:Ðøô ôØrŠDðúsA AÁA0Á/A0cóa\;QJdEV3RlVPP4P44F 'dK R# R#!V3RlVPP4P444#)c3ó,<"TF qS9xK R#5ir<rp)r~Ú search_lowers& €r,Ú)InteractiveUI._matches.<locals>.<genexpr>£søéÐMÑ2L¨˜ Ö$Ó2LùsƒFT)rÚlowerÚsplit)rls&fr,Ú_matchesÚInteractiveUI._matches¢sXø€ß M°$·*±*×2BÑ2BÓ2D×2JÑ2JÔ2LÓM3Œ3ÐMŠ3ÐMˆM°$·*±*×2BÑ2BÓ2D×2JÑ2JÔ2LÓ Mr.có8T;'gVPV4#r<))rls&&&r,Ú _includedÚInteractiveUI._included¥sð × 6˜4Ÿ=™=¨Ó6r.có4VPR4Uu.uFq1V3NK ppVPPV4VP^8”d#V;P\ V4,
un\ VP4VP
,
pV^8”dwVPRV1\
^VPV,
4VnVPe6V;PV,unVP^8d
RVnR#R#R#R#uupi)rDN)ÚextendrÝr1Ú MAX_VISIBLEÚmaxrß)rlÚentry_idÚblockr”Ú new_linesÚoverflows&&& r,Ú_append_visibleÚInteractiveUI._append_visibleªØ.3¯k©k¸$Ô.?Ó@Ñ.? d˜!Ñ.?€IЇLL×ј Ô ×јAÔð ×ÒœC  ›NÕÜ4—<  4×#3Ñ#3Õ3€HØ!„|Ø
,‰,y˜
˜q $×"4Ñ"4°xÕ"?Ó@€dÔØ
× Ñ Ò (Ø ×Ò˜xÕØ × Ñ  Ô "Ø $ˆ
ñ 
ùòAs Dcó|VP;_uu_4VPpV;P^,
unVP4pVPP WEW#34VP WS4'dVP
WB4VP4RRR4R# +'giR#;i©rBN)r×rrÚ_render)rls&&&& r,ÚInteractiveUI.emitºs~Ø
Ø×#€hØ
×Ò˜AÕÕØ ×(€lØ
‡lј8°5Ð
˜ × 3Ò 3Ø ×јXÔ
‡ll„n÷
Šús •B B*Â* B; có>VP;_uu_4Wn.Vn^VnRVnVP
F0wr#rEVP
W54'gKVPW$4K2 VP4RRR4R# +'giR#;i)rXN) rÓr×rr)rls&& r,Ú set_queryÚInteractiveUI.set_queryÄsoØ
Ø„jØ€d„lØ€dÔØ €dÔØ9=¿¼Ñ
5ˆ(  >‰>˜,×
×
Ñ
˜
:Fð ‡ll„n÷
Šús•AB Á%B Â B cóÚVP;_uu_4VP4wVnVnVPsVP 4RRR4R# +'giR#;ir<)rFrrks&r,ÚrefreshÚInteractiveUI.refreshÏs>à
Ø!Ÿ_™_Ó€d„iØi‰i€eØ
‡ll„n÷
Šús •:AÁ A* c óL\^VP^,
4p\^\VP4V,
4pVPV8”dW n\VP4VP,
p\^W1,
4pWV,
,
pWCV3#)z¬Returns (start, end, pad): the self.visible slice currently on screen and
how many blank padding rows precede it (when there isn't enough content yet
to fill the log area).)r1)rlÚlog_rowsÚ
max_offsetÚendr•Úpads& r,Ú_window_boundsÚInteractiveUI._window_boundsÖô1d—i‘i !•mÓ$€HܘDŸL™LÓ)¨HÕ5€JØ ×јÜ
ˆdl‰lÓ
˜d×
0€CÜ 3•>Ó "€EØ
˜E•kÕ
"€CØ sˆr.c
óP\^VP^,
4pVP4wr#pVPW#pR.p\ V4FpVP R4K \
V4wpwryVP;'dVPWH,8Hp
VPW(,8Hp V
'g V 'dLVP RV P\\R,4,\,R,4VP V R,4 VP'd3R\VP4\VP43,p MR\VP4,p VP^8”d
V R,
p VP'dV RVP,,
p VP'dRMR p
R
V : R V
: R 2pVP R
VR\^VP ^,
4,R,4VP RVP,R,4\"P$P'R P)V44\"P$P+4R#)rBzz
zz%d matching lines of %d blocksz %d blocksu$ · scrolled (End to jump to latest)u · u · click a line to unfilterr5rEu" · type to filter · ctrl-u clearu · esc/ctrl-c quitzNz
u
⯠z)rÚrangerÚ enumeraterÚrHr>r1r×rhr#Úwriter6Úflush)rlrr•rrÚwindowÚoutÚir”ÚhoveredÚselectedÚstateÚhintÚ separators& r,rÚInteractiveUI._renderãÜ1d—i‘i !•mÓ$€HØ×+O€EØ
\‰\˜
$€FØ ˆ*€Cä
3ŽZˆØ ‡jjÖñä! )‰ ˆ‰9ˆ
×8˜tŸ~™~°µÑ8€gØ×­ Ñ1€hß —HØ
9˜tŸ|™|¬E´5¸9Õ3DÓÕMÐPZÕ
4˜*Õ ‡z‡z€zØ.´#°d·l±lÓ2CÄSÈÏÉÓEVÐ1WÕWœC § ¡ Ó-€eØ ×јAÔØ Ð7€eØ ‡{‡{€{Ø ˆx˜$Ÿ+™+Õ%€eØ/3¯z¯z¨zÑ +¸rDÛV[Ó]aÐb€I؇JJˆy˜9Ð%;¤c¨!¨T¯Y©Y¸­]Ó&;Ð<Ð?PÕ‡J$ t§z¡zÕ1°HÕ‡JJ×ÑR—WW˜S“\Ô‡JJ×ÑÖr.z^\[<(\d+);(\d+);(\d+)([Mm])$c
ódVP;_uu_4\^VP^,
4p\^\VP4V,
4p\^\ W0P V,44VnVP4RRR4R# +'giR#;ir)r1rIr)rlÚdeltarrs&& r,Ú_scrollÚInteractiveUI._scrollsmØ
ÜŸ ™  A
Ó&€hÜqœ#˜dŸl™lÓ+¨hÕ7€jܘq¤# j×2DÑ2DÀuÕ2LÓ"MÓN€dÔØ
‡ll„n÷
Šús •A?BÂ B/ cóVP;_uu_4VP'g RRR4R#\^VP^,