Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Paste
P710
(An Untitled Masterwork)
Active
Public
Actions
Authored by
douardda
on Jul 2 2020, 12:31 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Subscribers
None
def
escape
(
data
,
toplevel
=
True
):
if
data
is
None
:
return
""
if
isinstance
(
data
,
bytes
):
return
"
\\
x
%s
"
%
binascii
.
hexlify
(
data
)
.
decode
(
"ascii"
)
elif
isinstance
(
data
,
str
):
return
'"
%s
"'
%
data
.
replace
(
'"'
,
'""'
)
elif
isinstance
(
data
,
datetime
.
datetime
):
# We escape twice to make sure the string generated by
# isoformat gets escaped
return
escape
(
data
.
isoformat
())
elif
isinstance
(
data
,
dict
):
return
escape
(
json
.
dumps
(
data
))
elif
isinstance
(
data
,
(
list
,
tuple
)):
ret
=
"{
%s
}"
%
","
.
join
(
escape
(
d
,
toplevel
=
False
)
for
d
in
data
)
if
toplevel
:
ret
=
'"
%s
"'
%
ret
.
replace
(
"
\\
"
,
"
\\\\
"
)
return
ret
elif
isinstance
(
data
,
psycopg2
.
extras
.
Range
):
# We escape twice here too, so that we make sure
# everything gets passed to copy properly
return
escape
(
"
%s%s
,
%s%s
"
%
(
"["
if
data
.
lower_inc
else
"("
,
"-infinity"
if
data
.
lower_inf
else
escape
(
data
.
lower
),
"infinity"
if
data
.
upper_inf
else
escape
(
data
.
upper
),
"]"
if
data
.
upper_inc
else
")"
,
)
)
elif
isinstance
(
data
,
enum
.
IntEnum
):
return
escape
(
int
(
data
))
else
:
# We don't escape here to make sure we pass literals properly
return
str
(
data
)
Event Timeline
douardda
created this paste.
Jul 2 2020, 12:31 PM
2020-07-02 12:31:45 (UTC+2)
Log In to Comment