FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Source.Python/addons/source-python/Python3/_apple_support.py at master · waldotf/Source.Python · GitHub
waldotf
Source.Python
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Source.Python
/
addons
/
source-python
/
Python3
/
_apple_support.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
66 lines (50 loc) · 2.2 KB
Breadcrumbs
Source.Python
/
addons
/
source-python
/
Python3
/
_apple_support.py
Copy path
File metadata and controls
66 lines (50 loc) · 2.2 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
import
io
import
sys
def
init_streams
(
log_write
,
stdout_level
,
stderr_level
):
# Redirect stdout and stderr to the Apple system log. This method is
# invoked by init_apple_streams() (initconfig.c) if config->use_system_logger
# is enabled.
sys
.
stdout
=
SystemLog
(
log_write
,
stdout_level
,
errors
=
sys
.
stderr
.
errors
)
sys
.
stderr
=
SystemLog
(
log_write
,
stderr_level
,
errors
=
sys
.
stderr
.
errors
)
class
SystemLog
(
io
.
TextIOWrapper
):
def
__init__
(
self
,
log_write
,
level
,
**
kwargs
):
kwargs
.
setdefault
(
"encoding"
,
"UTF-8"
)
kwargs
.
setdefault
(
"line_buffering"
,
True
)
super
().
__init__
(
LogStream
(
log_write
,
level
),
**
kwargs
)
def
__repr__
(
self
):
return
f"<SystemLog (level
{
self
.
buffer
.
level
}
)>"
def
write
(
self
,
s
):
if
not
isinstance
(
s
,
str
):
raise
TypeError
(
f"write() argument must be str, not
{
type
(
s
).
__name__
}
"
)
# In case `s` is a str subclass that writes itself to stdout or stderr
# when we call its methods, convert it to an actual str.
s
=
str
.
__str__
(
s
)
# We want to emit one log message per line, so split
# the string before sending it to the superclass.
for
line
in
s
.
splitlines
(
keepends
=
True
):
super
().
write
(
line
)
return
len
(
s
)
class
LogStream
(
io
.
RawIOBase
):
def
__init__
(
self
,
log_write
,
level
):
self
.
log_write
=
log_write
self
.
level
=
level
def
__repr__
(
self
):
return
f"<LogStream (level
{
self
.
level
!r
}
)>"
def
writable
(
self
):
return
True
def
write
(
self
,
b
):
if
type
(
b
)
is
not
bytes
:
try
:
b
=
bytes
(
memoryview
(
b
))
except
TypeError
:
raise
TypeError
(
f"write() argument must be bytes-like, not
{
type
(
b
).
__name__
}
"
)
from
None
# Writing an empty string to the stream should have no effect.
if
b
:
# Encode null bytes using "modified UTF-8" to avoid truncating the
# message. This should not affect the return value, as the caller
# may be expecting it to match the length of the input.
self
.
log_write
(
self
.
level
,
b
.
replace
(
b"
\x00
"
,
b"
\xc0
\x80
"
))
return
len
(
b
)
Back
|
FazBrowse Home
|
New Git URL