Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
9783b44b
Kaydet (Commit)
9783b44b
authored
Eki 30, 2011
tarafından
Florent Xicluna
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
Merge heads
üst
cd06a14d
93dfee1d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
43 deletions
+71
-43
test_xmlrpc.py
Lib/test/test_xmlrpc.py
+53
-10
client.py
Lib/xmlrpc/client.py
+8
-28
server.py
Lib/xmlrpc/server.py
+5
-5
NEWS
Misc/NEWS
+5
-0
No files found.
Lib/test/test_xmlrpc.py
Dosyayı görüntüle @
9783b44b
...
...
@@ -66,15 +66,6 @@ class XMLRPCTestCase(unittest.TestCase):
(
newdt
,),
m
=
xmlrpclib
.
loads
(
s
,
use_datetime
=
0
)
self
.
assertEqual
(
newdt
,
xmlrpclib
.
DateTime
(
'00010210T11:41:23'
))
def
test_cmp_datetime_DateTime
(
self
):
now
=
datetime
.
datetime
.
now
()
dt
=
xmlrpclib
.
DateTime
(
now
.
timetuple
())
self
.
assertTrue
(
dt
==
now
)
self
.
assertTrue
(
now
==
dt
)
then
=
now
+
datetime
.
timedelta
(
seconds
=
4
)
self
.
assertTrue
(
then
>=
dt
)
self
.
assertTrue
(
dt
<
then
)
def
test_bug_1164912
(
self
):
d
=
xmlrpclib
.
DateTime
()
((
new_d
,),
dummy
)
=
xmlrpclib
.
loads
(
xmlrpclib
.
dumps
((
d
,),
...
...
@@ -149,6 +140,9 @@ class XMLRPCTestCase(unittest.TestCase):
(
'host.tld'
,
[(
'Authorization'
,
'Basic dXNlcg=='
)],
{}))
def
test_dump_bytes
(
self
):
self
.
assertRaises
(
TypeError
,
xmlrpclib
.
dumps
,
(
b
"my dog has fleas"
,))
def
test_ssl_presence
(
self
):
try
:
import
ssl
...
...
@@ -186,7 +180,7 @@ class FaultTestCase(unittest.TestCase):
self
.
assertRaises
(
xmlrpclib
.
Fault
,
xmlrpclib
.
loads
,
s
)
def
test_dotted_attribute
(
self
):
# this will raise Att
ire
buteError because code don't want us to use
# this will raise Att
ri
buteError because code don't want us to use
# private methods
self
.
assertRaises
(
AttributeError
,
xmlrpc
.
server
.
resolve_dotted_attribute
,
str
,
'__add'
)
...
...
@@ -233,6 +227,45 @@ class DateTimeTestCase(unittest.TestCase):
t2
=
xmlrpclib
.
_datetime
(
d
)
self
.
assertEqual
(
t1
,
tref
)
def
test_comparison
(
self
):
now
=
datetime
.
datetime
.
now
()
dtime
=
xmlrpclib
.
DateTime
(
now
.
timetuple
())
# datetime vs. DateTime
self
.
assertTrue
(
dtime
==
now
)
self
.
assertTrue
(
now
==
dtime
)
then
=
now
+
datetime
.
timedelta
(
seconds
=
4
)
self
.
assertTrue
(
then
>=
dtime
)
self
.
assertTrue
(
dtime
<
then
)
# str vs. DateTime
dstr
=
now
.
strftime
(
"
%
Y
%
m
%
dT
%
H:
%
M:
%
S"
)
self
.
assertTrue
(
dtime
==
dstr
)
self
.
assertTrue
(
dstr
==
dtime
)
dtime_then
=
xmlrpclib
.
DateTime
(
then
.
timetuple
())
self
.
assertTrue
(
dtime_then
>=
dstr
)
self
.
assertTrue
(
dstr
<
dtime_then
)
# some other types
dbytes
=
dstr
.
encode
(
'ascii'
)
dtuple
=
now
.
timetuple
()
with
self
.
assertRaises
(
TypeError
):
dtime
==
1970
with
self
.
assertRaises
(
TypeError
):
dtime
!=
dbytes
with
self
.
assertRaises
(
TypeError
):
dtime
==
bytearray
(
dbytes
)
with
self
.
assertRaises
(
TypeError
):
dtime
!=
dtuple
with
self
.
assertRaises
(
TypeError
):
dtime
<
float
(
1970
)
with
self
.
assertRaises
(
TypeError
):
dtime
>
dbytes
with
self
.
assertRaises
(
TypeError
):
dtime
<=
bytearray
(
dbytes
)
with
self
.
assertRaises
(
TypeError
):
dtime
>=
dtuple
class
BinaryTestCase
(
unittest
.
TestCase
):
# XXX What should str(Binary(b"\xff")) return? I'm chosing "\xff"
...
...
@@ -346,6 +379,10 @@ def http_multi_server(evt, numrequests, requestHandler=None):
class
MyRequestHandler
(
requestHandler
):
rpc_paths
=
[]
class
BrokenDispatcher
:
def
_marshaled_dispatch
(
self
,
data
,
dispatch_method
=
None
,
path
=
None
):
raise
RuntimeError
(
"broken dispatcher"
)
serv
=
MyXMLRPCServer
((
"localhost"
,
0
),
MyRequestHandler
,
logRequests
=
False
,
bind_and_activate
=
False
)
serv
.
socket
.
settimeout
(
3
)
...
...
@@ -366,6 +403,7 @@ def http_multi_server(evt, numrequests, requestHandler=None):
d
.
register_multicall_functions
()
serv
.
get_dispatcher
(
paths
[
0
])
.
register_function
(
pow
)
serv
.
get_dispatcher
(
paths
[
1
])
.
register_function
(
lambda
x
,
y
:
x
+
y
,
'add'
)
serv
.
add_dispatcher
(
"/is/broken"
,
BrokenDispatcher
())
evt
.
set
()
# handle up to 'numrequests' requests
...
...
@@ -595,11 +633,16 @@ class MultiPathServerTestCase(BaseServerTestCase):
p
=
xmlrpclib
.
ServerProxy
(
URL
+
"/foo"
)
self
.
assertEqual
(
p
.
pow
(
6
,
8
),
6
**
8
)
self
.
assertRaises
(
xmlrpclib
.
Fault
,
p
.
add
,
6
,
8
)
def
test_path2
(
self
):
p
=
xmlrpclib
.
ServerProxy
(
URL
+
"/foo/bar"
)
self
.
assertEqual
(
p
.
add
(
6
,
8
),
6
+
8
)
self
.
assertRaises
(
xmlrpclib
.
Fault
,
p
.
pow
,
6
,
8
)
def
test_path3
(
self
):
p
=
xmlrpclib
.
ServerProxy
(
URL
+
"/is/broken"
)
self
.
assertRaises
(
xmlrpclib
.
Fault
,
p
.
add
,
6
,
8
)
#A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism
#does indeed serve subsequent requests on the same connection
class
BaseKeepaliveServerTestCase
(
BaseServerTestCase
):
...
...
Lib/xmlrpc/client.py
Dosyayı görüntüle @
9783b44b
...
...
@@ -85,11 +85,6 @@
# OF THIS SOFTWARE.
# --------------------------------------------------------------------
#
# things to look into some day:
# TODO: sort out True/False/boolean issues for Python 2.3
"""
An XML-RPC client interface for Python.
...
...
@@ -120,8 +115,7 @@ Exported classes:
Exported constants:
True
False
(none)
Exported functions:
...
...
@@ -133,7 +127,8 @@ Exported functions:
name (None if not present).
"""
import
re
,
time
,
operator
import
base64
import
time
import
http.client
from
xml.parsers
import
expat
import
socket
...
...
@@ -230,7 +225,7 @@ class ResponseError(Error):
##
# Indicates an XML-RPC fault response package. This exception is
# raised by the unmarshalling layer, if the XML-RPC response contains
# a fault string. This exception can also used as a class, to
# a fault string. This exception can also
be
used as a class, to
# generate a fault XML-RPC message.
#
# @param faultCode The XML-RPC fault code.
...
...
@@ -243,10 +238,7 @@ class Fault(Error):
self
.
faultCode
=
faultCode
self
.
faultString
=
faultString
def
__repr__
(
self
):
return
(
"<Fault
%
s:
%
s>"
%
(
self
.
faultCode
,
repr
(
self
.
faultString
))
)
return
"<Fault
%
s:
%
r>"
%
(
self
.
faultCode
,
self
.
faultString
)
# --------------------------------------------------------------------
# Special values
...
...
@@ -302,7 +294,7 @@ class DateTime:
elif
datetime
and
isinstance
(
other
,
datetime
.
datetime
):
s
=
self
.
value
o
=
other
.
strftime
(
"
%
Y
%
m
%
dT
%
H:
%
M:
%
S"
)
elif
isinstance
(
other
,
(
str
,
unicode
)
):
elif
isinstance
(
other
,
str
):
s
=
self
.
value
o
=
other
elif
hasattr
(
other
,
"timetuple"
):
...
...
@@ -352,7 +344,7 @@ class DateTime:
return
self
.
value
def
__repr__
(
self
):
return
"<DateTime
%
s at
%
x>"
%
(
repr
(
self
.
value
)
,
id
(
self
))
return
"<DateTime
%
r at
%
x>"
%
(
self
.
value
,
id
(
self
))
def
decode
(
self
,
data
):
self
.
value
=
str
(
data
)
.
strip
()
...
...
@@ -378,9 +370,6 @@ def _datetime_type(data):
#
# @param data An 8-bit string containing arbitrary data.
import
base64
import
io
class
Binary
:
"""Wrapper for binary data."""
...
...
@@ -514,9 +503,7 @@ class Marshaller:
f
=
self
.
dispatch
[
type
(
value
)]
except
KeyError
:
# check if this object can be marshalled as a structure
try
:
value
.
__dict__
except
:
if
not
hasattr
(
value
,
'__dict__'
):
raise
TypeError
(
"cannot marshal
%
s objects"
%
type
(
value
))
# check if this class is a sub-class of a basic type,
# because we don't know how to marshal these types
...
...
@@ -564,12 +551,6 @@ class Marshaller:
write
(
"</double></value>
\n
"
)
dispatch
[
float
]
=
dump_double
def
dump_string
(
self
,
value
,
write
,
escape
=
escape
):
write
(
"<value><string>"
)
write
(
escape
(
value
))
write
(
"</string></value>
\n
"
)
dispatch
[
bytes
]
=
dump_string
def
dump_unicode
(
self
,
value
,
write
,
escape
=
escape
):
write
(
"<value><string>"
)
write
(
escape
(
value
))
...
...
@@ -1198,7 +1179,6 @@ class Transport:
auth
,
host
=
urllib
.
parse
.
splituser
(
host
)
if
auth
:
import
base64
auth
=
urllib
.
parse
.
unquote_to_bytes
(
auth
)
auth
=
base64
.
encodebytes
(
auth
)
.
decode
(
"utf-8"
)
auth
=
""
.
join
(
auth
.
split
())
# get rid of whitespace
...
...
Lib/xmlrpc/server.py
Dosyayı görüntüle @
9783b44b
...
...
@@ -329,7 +329,6 @@ class SimpleXMLRPCDispatcher:
if
method
is
None
:
return
""
else
:
import
pydoc
return
pydoc
.
getdoc
(
method
)
def
system_multicall
(
self
,
call_list
):
...
...
@@ -560,7 +559,7 @@ class SimpleXMLRPCServer(socketserver.TCPServer,
Simple XML-RPC server that allows functions and a single instance
to be installed to handle requests. The default implementation
attempts to dispatch XML-RPC calls to the functions or instance
installed in the server. Override the _dispatch method inher
e
ted
installed in the server. Override the _dispatch method inher
i
ted
from SimpleXMLRPCDispatcher to change this behavior.
"""
...
...
@@ -602,7 +601,7 @@ class MultiPathXMLRPCServer(SimpleXMLRPCServer):
encoding
,
bind_and_activate
)
self
.
dispatchers
=
{}
self
.
allow_none
=
allow_none
self
.
encoding
=
encoding
self
.
encoding
=
encoding
or
'utf-8'
def
add_dispatcher
(
self
,
path
,
dispatcher
):
self
.
dispatchers
[
path
]
=
dispatcher
...
...
@@ -620,9 +619,10 @@ class MultiPathXMLRPCServer(SimpleXMLRPCServer):
# (each dispatcher should have handled their own
# exceptions)
exc_type
,
exc_value
=
sys
.
exc_info
()[:
2
]
response
=
xmlrpclib
.
dumps
(
xmlrpclib
.
Fault
(
1
,
"
%
s:
%
s"
%
(
exc_type
,
exc_value
)),
response
=
dumps
(
Fault
(
1
,
"
%
s:
%
s"
%
(
exc_type
,
exc_value
)),
encoding
=
self
.
encoding
,
allow_none
=
self
.
allow_none
)
response
=
response
.
encode
(
self
.
encoding
)
return
response
class
CGIXMLRPCRequestHandler
(
SimpleXMLRPCDispatcher
):
...
...
Misc/NEWS
Dosyayı görüntüle @
9783b44b
...
...
@@ -66,6 +66,11 @@ Core and Builtins
Library
-------
- Issue #13293: Better error message when trying to marshal bytes using
xmlrpc.client.
- Issue #13291: NameError in xmlrpc package.
- Issue #13258: Use callable() built-in in the standard library.
- Issue #13273: fix a bug that prevented HTMLParser to properly detect some
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment