tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
X\¬Qc@sídZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
yddl Z ddl Z Wne k
r³eZ nXddlmZmZdZejdkrèdZndZeaeed„Zd    „Zd
„Zd „Zd „Zd „Zd„ZejdejƒZ d„Z!de"fd„ƒYZ#de$fd„ƒYZ%de&fd„ƒYZ'de(fd„ƒYZ)de)fd„ƒYZ*e*Z+d„Z,ed„Z-d„Z.dS(s
Configuration functions for the logging package for Python. The core package
is based on PEP 282 and comments thereto in comp.lang.python, and influenced
by Apache's log4j system.
 
Copyright (C) 2001-2013 Vinay Sajip. All Rights Reserved.
 
To use, simply 'import logging' and log away!
iÿÿÿÿN(tThreadingTCPServertStreamRequestHandleriF#twin32iF'ihcCs¦ddl}|j|ƒ}t|dƒr:|j|ƒn |j|ƒt|ƒ}tjƒz7tjjƒtj    2t
||ƒ}t |||ƒWdtj ƒXdS(sD
    Read the logging configuration from a ConfigParser-format file.
 
    This can be called several times from an application, allowing an end user
    the ability to select from various pre-canned configurations (if the
    developer provides a mechanism to present the choices and load the chosen
    configuration).
    iÿÿÿÿNtreadline( t ConfigParserthasattrtreadfptreadt_create_formatterstloggingt _acquireLockt    _handlerstcleart _handlerListt_install_handlerst_install_loggerst _releaseLock(tfnametdefaultstdisable_existing_loggersRtcpt
formattersthandlers((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt
fileConfig5s       
 cCs|jdƒ}|jdƒ}t|ƒ}x\|D]T}|d|}yt||ƒ}Wq1tk
r„t|ƒt||ƒ}q1Xq1W|S(s)Resolve a dotted name to a global object.t.i(tsplittpopt
__import__tgetattrtAttributeError(tnametusedtfoundtn((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt_resolveTs   
cCstd„|ƒS(NcSs
|jƒS(N(tstrip(tx((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt<lambda>cs(tmap(talist((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt _strip_spacesbscCs t|tƒr|S|jdƒS(Nsutf-8(t
isinstancetstrtencode(ts((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt_encodedesc Cs|jddƒ}t|ƒs"iS|jdƒ}t|ƒ}i}xÓ|D]Ë}d|}|j|ƒ}d|kr|j|ddƒ}nd    }d|kr·|j|ddƒ}nd    }tj}d|krü|j|dƒ}    |    rüt|    ƒ}qün|||ƒ}
|
||<qJW|S(
sCreate and return formattersRtkeyst,s formatter_%stformatitdatefmttclassN(    tgettlenRR(toptionstNoneR    t    FormatterR"( RtflistRtformtsectnametoptstfstdfstct
class_nametf((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRhs.   
       cCs
|jddƒ}t|ƒs"iS|jdƒ}t|ƒ}i}g}x’|D]Š}d|}|j|dƒ}|j|ƒ}d|kr¢|j|dƒ}    nd}    yt|ttƒƒ}Wn#tt    fk
ræt
|ƒ}nX|j|dƒ}
t|
ttƒƒ}
||
Œ} d    |krO|j|d    ƒ} | j tj | ƒnt|    ƒro| j ||    ƒnt|tjjƒrÐd
|kr¥|j|d
ƒ} nd} t| ƒrÐ|j| | fƒqÐn| ||<qPWx%|D]\} }| j||ƒqåW|S( sInstall and return handlersRR.R/s
handler_%sR2t    formatterttargstlevelttarget(R3R4RR(R5tevaltvarsR    Rt    NameErrorR"tsetLevelt _levelNamest setFormattert
issubclassRt MemoryHandlertappendt    setTarget(RRthlistRtfixupsthandR:tklassR;tfmtRCthRDREtt((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR…sH   
      cCsq|jddƒ}|jdƒ}ttd„|ƒƒ}|jdƒd}tj}|}|j|ƒ}d|krŸ|j|dƒ}|jtj    |ƒnx|j
D]}    |j |    ƒqªW|j|dƒ}
t |
ƒr|
jdƒ}
t |
ƒ}
x"|
D]} |j|| ƒqWnt|jjjƒƒ} | jƒg} xÌ|D]Ä}d    |}|j|d
ƒ}|j|ƒ}d |kr |j|d ƒ}nd }tj|ƒ}|| krK| j|ƒd }|d }t |ƒ}t | ƒ}xB||kr:| || |kr-| j| |ƒn|d 7}qùW| j|ƒnd|kr€|j|dƒ}|jtj    |ƒnx|j
D]}    |j |    ƒq‹W||_d|_|j|dƒ}
t |
ƒrN|
jdƒ}
t |
ƒ}
x"|
D]} |j|| ƒqôWqNqNWxT| D]L}|jj|}|| kr`tj|_g|_
d |_q||_qWdS(sCreate and install loggerstloggersR.R/cSs
|jƒS(N(R#(R$((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR%¶stroott logger_rootRDRs    logger_%stqualnamet    propagateiRiN(R3RtlistR&tremoveR    RXR5RIRJRt removeHandlerR4R(t
addHandlertmanagert
loggerDictR.tsorttgetintt    getLoggertindexRNR[tdisabledtNOTSETRD(RRRtllistR:RXtlogR;RDRURPRRtexistingt child_loggerstqnR[tloggertitprefixedtpflent num_existing((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR°sx          
 
 
                      s^[a-z_][a-z0-9_]*$cCs,tj|ƒ}|s(td|ƒ‚ntS(Ns!Not a valid Python identifier: %r(t
IDENTIFIERtmatcht
ValueErrortTrue(R,tm((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt valid_identstConvertingDictcBs/eZdZd„Zdd„Zdd„ZRS(s A converting dictionary wrapper.cCsqtj||ƒ}|jj|ƒ}||k    rm|||<t|ƒtttfkrm||_||_    qmn|S(N(
tdictt __getitem__t configuratortconvertttypeRxtConvertingListtConvertingTupletparenttkey(tselfRtvaluetresult((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRz"s 
     cCsttj|||ƒ}|jj|ƒ}||k    rp|||<t|ƒtttfkrp||_||_    qpn|S(N(
RyR3R{R|R}RxR~RR€R(R‚RtdefaultRƒR„((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR3.s 
     cCsjtj|||ƒ}|jj|ƒ}||k    rft|ƒtttfkrf||_||_    qfn|S(N(
RyRR{R|R}RxR~RR€R(R‚RR…RƒR„((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR:s      N(t__name__t
__module__t__doc__RzR6R3R(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRxs     R~cBs#eZdZd„Zdd„ZRS(sA converting list wrapper.cCsqtj||ƒ}|jj|ƒ}||k    rm|||<t|ƒtttfkrm||_||_    qmn|S(N(
R\RzR{R|R}RxR~RR€R(R‚RRƒR„((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRzFs 
     iÿÿÿÿcCs^tj||ƒ}|jj|ƒ}||k    rZt|ƒtttfkrZ||_qZn|S(N(    R\RR{R|R}RxR~RR€(R‚tidxRƒR„((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRRs  (R†R‡RˆRzR(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR~Ds     RcBseZdZd„ZRS(sA converting tuple wrapper.cCsgtj||ƒ}|jj|ƒ}||k    rct|ƒtttfkrc||_||_    qcn|S(N(
ttupleRzR{R|R}RxR~RR€R(R‚RRƒR„((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRz]s      (R†R‡RˆRz(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR[stBaseConfiguratorcBs²eZdZejdƒZejdƒZejdƒZejdƒZejdƒZ    idd6dd    6Z
e Z d
„Z d „Zd „Zd „Zd„Zd„Zd„ZRS(sI
    The configurator base class which defines some useful defaults.
    s%^(?P<prefix>[a-z]+)://(?P<suffix>.*)$s ^\s*(\w+)\s*s^\.\s*(\w+)\s*s^\[\s*(\w+)\s*\]\s*s^\d+$t ext_converttextt cfg_converttcfgcCs@t|ƒ|_||j_ttƒtjkr<t|_ndS(N(RxtconfigR{R}Rttypest FunctionTypetimporter(R‚R((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt__init__{s c    Csô|jdƒ}|jdƒ}yy|j|ƒ}x_|D]W}|d|7}yt||ƒ}Wq7tk
r|j|ƒt||ƒ}q7Xq7W|SWnVtk
rïtjƒd\}}td||fƒ}|||_    |_
|‚nXdS(s`
        Resolve strings to objects using standard import and attribute
        syntax.
        RiisCannot resolve %r: %sN( RRR“RRt ImportErrortsystexc_infoRtt    __cause__t __traceback__(    R‚R,RRR tfragtettbtv((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytresolve…s"    cCs |j|ƒS(s*Default converter for the ext:// protocol.(Rž(R‚Rƒ((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRŒœscCsO|}|jj|ƒ}|dkr7td|ƒ‚n||jƒ}|j|jƒd}xê|rJ|jj|ƒ}|r–||jƒd}n‚|jj|ƒ}|r|jƒd}|j    j|ƒsÝ||}qyt
|ƒ}||}Wqt k
r||}qXn|r1||jƒ}qatd||fƒ‚qaW|S(s*Default converter for the cfg:// protocol.sUnable to convert %risUnable to convert %r at %rN( t WORD_PATTERNRsR6RttendRtgroupst DOT_PATTERNt INDEX_PATTERNt DIGIT_PATTERNtintt    TypeError(R‚RƒtrestRvtdR‰R!((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRŽ s2        cCs/t|tƒ r7t|tƒr7t|ƒ}||_nôt|tƒ rnt|tƒrnt|ƒ}||_n½t|tƒ r¥t|tƒr¥t|ƒ}||_n†t|tƒr+|j    j
|ƒ}|r+|j ƒ}|d}|j j |dƒ}|r(|d}t||ƒ}||ƒ}q(q+n|S(sé
        Convert values to an appropriate type. dicts, lists and tuples are
        replaced by their converting alternatives. Strings are checked to
        see if they have a conversion format and are converted if they do.
        tprefixtsuffixN(R)RxRyR{R~R\RRŠt
basestringtCONVERT_PATTERNRst    groupdicttvalue_convertersR3R6R(R‚RƒRvR¨R©t    converterRª((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR|Âs*       
 
c    Csâ|jdƒ}t|dƒ rUttdƒrUt|ƒtjkrU|j|ƒ}n|jddƒ}tg|D]"}t|ƒrq|||f^qqƒ}||}|rÞx-|j    ƒD]\}}t
|||ƒq»Wn|S(s1Configure an object with a user-supplied factory.s()t__call__t    ClassTypeRN( RRR‘R}R±RžR6RyRwtitemstsetattr(    R‚RR>tpropstktkwargsR„RRƒ((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytconfigure_customÞs45 cCs"t|tƒrt|ƒ}n|S(s0Utility function which converts lists to tuples.(R)R\RŠ(R‚Rƒ((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytas_tupleìs(R†R‡RˆtretcompileR¬RŸR¢R£R¤R®RR“R”RžRŒRŽR|R·R¸(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR‹gs"
    
           "        tDictConfiguratorcBsheZdZd„Zd„Zd„Zd„Zd„Zd„Ze    d„Z
e    d„Z e    d    „Z RS(
s]
    Configure logging using a dictionary-like object to describe the
    configuration.
    cCsù|j}d|kr$tdƒ‚n|ddkrKtd|dƒ‚n|jdtƒ}i}tjƒzz|rõ|jd|ƒ}x¨|D] }|tjkr·td|ƒ‚qyLtj|}||}|jddƒ}|r|j    tj
|ƒƒnWqt k
r.}    td    ||    fƒ‚qXqW|jd
|ƒ}
xU|
D]M}y|j ||
|t ƒWqLt k
r˜}    td ||    fƒ‚qLXqLW|jd dƒ} | ræy|j| t ƒWqòt k
rî}    td |    ƒ‚qòXqænñ|jdt ƒ} tjjƒtj2|jd|ƒ} xU| D]M}y|j| |ƒ| |<Wq4t k
r€}    td||    fƒ‚q4Xq4W|jd|ƒ}xU|D]M}y|j||ƒ||<Wqžt k
rê}    td||    fƒ‚qžXqžW|jd|ƒ}g}xŒt|ƒD]~}y*|j||ƒ}||_|||<Wqt k
r‘}    dt|    ƒkrx|j|ƒq’td    ||    fƒ‚qXqWxd|D]\}y*|j||ƒ}||_|||<Wqt k
rø}    td    ||    fƒ‚qXqWtj} | jjjƒ}|jƒg}|jd
|ƒ}
x÷|
D]ï}t|ƒ}||krì|j|ƒ}|d}t|ƒ}t|ƒ}|d}x?||krÛ||| |krÛ|j||ƒ|d}qW|j |ƒny|j ||
|ƒWqAt k
r/}    td ||    fƒ‚qAXqAWx]|D]U}| jj|}||kr~tj!|_"g|_#t |_$q;| r;t |_%q;q;W|jd dƒ} | ræy|j| ƒWqæt k
râ}    td |    ƒ‚qæXnWdtj&ƒXdS(sDo the configuration.tversions$dictionary doesn't specify a versionisUnsupported version: %st incrementalRsNo handler found with name %rRDs"Unable to configure handler %r: %sRWs!Unable to configure logger %r: %sRXs#Unable to configure root logger: %sRRs$Unable to configure formatter %r: %stfilterss!Unable to configure filter %r: %sstarget not configured yetRN('RRtRtFalseR    R
R3R R6RIt _checkLevelt StandardErrortconfigure_loggerRutconfigure_rootR R tconfigure_formattertconfigure_filtertsortedtconfigure_handlerRR*RNRXR`RaR.RbR-ReR4R]RgRDRR[RfR(R‚RR½t
EMPTY_DICTRRthandlerthandler_configRDR›RWRXtdisable_existingRR¾tdeferredRjRkRnRoRpRqRiRm((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt    configureøsæ     
 
                 
 
 
        cCsÀd|kr†|d}y|j|ƒ}Wq¼tk
r‚}dt|ƒkrS‚n|jdƒ|d<||d<|j|ƒ}q¼Xn6|jddƒ}|jddƒ}tj||ƒ}|S(s(Configure a formatter from a dictionary.s()s'format'R0RTR1N(R·R¦R*RR3R6R    R7(R‚RtfactoryR„tteRTtdfmt((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRės 
 
cCsCd|kr|j|ƒ}n!|jddƒ}tj|ƒ}|S(s%Configure a filter from a dictionary.s()RRB(R·R3R    tFilter(R‚RR„R((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRÅ­s
 cCs]xV|D]N}y|j|jd|ƒWqtk
rT}td||fƒ‚qXqWdS(s/Add filters to a filterer from a list of names.R¾sUnable to add filter %r: %sN(t    addFilterRRÁRt(R‚tfiltererR¾R@R›((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt add_filters¶s
 c    Cs|jddƒ}|r\y|jd|}Wq\tk
rX}td||fƒ‚q\Xn|jddƒ}|jddƒ}d|krê|jdƒ}t|dƒ ráttdƒrát|ƒtjkrá|j    |ƒ}n|}n<|jd    ƒ}|j    |ƒ}    t
|    t j j ƒrªd
|krªyN|jd |d
}
t|
t jƒsl||d    <td ƒ‚n|
|d
<Wq tk
r¦}td |d
|fƒ‚q Xnvt
|    t j jƒråd|krå|j|dƒ|d<n;t
|    t j jƒr d|kr |j|dƒ|d<n|    }tg|D]"} t| ƒr0| || f^q0ƒ} y|| } WnJtk
r·}dt|ƒkr•‚n| jdƒ| d<|| } nX|rÎ| j|ƒn|dk    ró| jt j|ƒƒn|r |j| |ƒn| S(s&Configure a handler from a dictionary.RARsUnable to set formatter %r: %sRDR¾s()R°R±R2RERstarget not configured yets#Unable to set target handler %r: %stmailhosttaddresss'stream'tstreamtstrmN(RR6RRÁRtRR‘R}R±RžRLR    RRMR)tHandlert SMTPHandlerR¸t SysLogHandlerRyRwR¦R*RKRIRÀRÔ(R‚RRAR›RDR¾R>RÎtcnameRStthRµR¶R„RÏ((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRǾsb 4     
  5 cCs]xV|D]N}y|j|jd|ƒWqtk
rT}td||fƒ‚qXqWdS(s.Add handlers to a logger from a list of names.RsUnable to add handler %r: %sN(R_RRÁRt(R‚RmRRUR›((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt add_handlersøs
 cCs¼|jddƒ}|dk    r7|jtj|ƒƒn|s¸x|jD]}|j|ƒqHW|jddƒ}|rŠ|j||ƒn|jddƒ}|r¸|j||ƒq¸ndS(sU
        Perform configuration which is common to root and non-root loggers.
        RDRR¾N(    R3R6RIR    RÀRR^RÞRÔ(R‚RmRR½RDRURR¾((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytcommon_logger_configs cCsPtj|ƒ}|j|||ƒ|jddƒ}|dk    rL||_ndS(s.Configure a non-root logger from a dictionary.R[N(R    RdRßR3R6R[(R‚RRR½RmR[((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRÂs
 cCs#tjƒ}|j|||ƒdS(s*Configure a root logger from a dictionary.N(R    RdRß(R‚RR½RX((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRÃs ( R†R‡RˆRÍRÄRÅRÔRÇRÞR¿RßRÂRÃ(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR»òs    Ÿ                    :      cCst|ƒjƒdS(s%Configure logging using a dictionary.N(tdictConfigClassRÍ(R((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt
dictConfig!scsptstdƒ‚ndtfd„ƒY}dtfd„ƒY}dtjf‡fd†ƒY‰ˆ|||ƒS(sW
    Start up a socket server on the specified port, and listen for new
    configurations.
 
    These will be sent as a file suitable for processing by fileConfig().
    Returns a Thread object on which you can call start() to start the server,
    and which you can join() when appropriate. To stop the server, call
    stopListening().
    s listen() needs threading to worktConfigStreamHandlercBseZdZd„ZRS(s¤
        Handler for a logging configuration request.
 
        It expects a completely new logging configuration and uses fileConfig
        to install it.
        c
Ss ddl}y@|j}|jdƒ}t|ƒdkrKtjd|ƒd}|jj|ƒ}x3t|ƒ|kr–||j|t|ƒƒ}qdWy>ddl}|j|ƒ}t|t    ƒsÊt
‚t |ƒWnQt j |ƒ}yt|ƒWq)ttfk
r‚q)tjƒq)XnX|jjrK|jjjƒqKnWnMtjk
r›}t|jtƒsy‚qœ|jd}    |    tkrœ‚qœnXdS(sè
            Handle a request.
 
            Each request is expected to be a 4-byte length, packed using
            struct.pack(">L", n), followed by the config file.
            Uses fileConfig() to do the grunt work.
            iÿÿÿÿNis>Li(ttempfilet
connectiontrecvR4tstructtunpacktjsontloadsR)RytAssertionErrorRát    cStringIOtStringIORtKeyboardInterruptt
SystemExitt    tracebackt    print_exctservertreadytsettsocketterrorRCRŠt RESET_ERROR(
R‚RãtconntchunktslenRèR¨tfileR›terrcode((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pythandle:s<     !    (R†R‡RˆRü(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRâ3stConfigSocketReceivercBs2eZdZdZdeddd„Zd„ZRS(sD
        A simple TCP socket-based logging config receiver.
        it    localhostcSsLtj|||f|ƒtjƒd|_tjƒd|_||_dS(Nii(RR”R    R
tabortRttimeoutRò(R‚thosttportRÉRò((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR”ks 
    
    cSsddl}d}xj|s~|j|jjƒggg|jƒ\}}}|r^|jƒntjƒ|j}tjƒqW|jj    ƒdS(Niÿÿÿÿi(
tselectRôtfilenoRthandle_requestR    R
RÿRtclose(R‚RRÿtrdtwrtex((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytserve_until_stoppedts      
    N(R†R‡Rˆtallow_reuse_addresstDEFAULT_LOGGING_CONFIG_PORTR6R”R
(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyRýds
tServercs eZ‡fd†Zd„ZRS(csAtˆ|ƒjƒ||_||_||_tjƒ|_dS(N(tsuperR”trcvrthdlrRt    threadingtEventRò(R‚RRR(R (sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR”„s
            cSs~|jd|jd|jd|jƒ}|jdkrI|jd|_n|jjƒtjƒ|atj    ƒ|j
ƒdS(NRRÉRòii( RRRRòtserver_addressRóR    R
t    _listenerRR
(R‚Rñ((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytrun‹s  
 
(R†R‡R”R((R (sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyR ‚s(tthreadtNotImplementedErrorRRRtThread(RRâRý((R sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pytlisten&s
1cCs8tjƒztr%dt_danWdtjƒXdS(sN
    Stop the listening server which was created with a call to listen().
    iN(R    R
RRÿR6R(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt stopListening™s 
     (/RˆR–R    tlogging.handlersRôRætosRïR¹R‘RëRRR•R6t SocketServerRRR tplatformRöRRuRR"R(R-RRRRºtIRrRwRyRxR\R~RŠRtobjectR‹R»RàRáRR(((sV/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/logging/config.pyt<module>s@`  
                        +    \    % ‹ÿ.     s