@@ -1 +1,2 @@ | |||
*.egg-info | |||
*.pyc |
@@ -1,13 +1,17 @@ | |||
Release 0.12.1 of SOAPpy | |||
------------------------ | |||
CHANGELOG | |||
================== | |||
0.12.1 - (unreleased) | |||
---------------------------------------- | |||
- Forked intially from https://github.com/pelletier/SOAPpy | |||
- main interresting enhancements grabbed: | |||
- from __future__ imports must occur at the beginning of the file | |||
- try install requires | |||
- from __future__ imports must occur at the beginning of the file | |||
- try install requires | |||
- Grabbed others changeset from | |||
- Depend directly on wstools not to bundle a duplicated version. | |||
- Grabbed others changeset from https://bitbucket.org/cmclaughlin/soappy-0.12.0/ (fpconst) | |||
- Grabbed others changeset from https://bitbucket.org/zeus/soappy (ssl key support) | |||
- Depend directly on wstools not to bundle a duplicated version. | |||
- Grabbed from original svn: | |||
- rpm spec file | |||
@@ -15,7 +19,7 @@ Release 0.12.1 of SOAPpy | |||
- zope/ | |||
- bid/ | |||
- .cvsignore files | |||
- | |||
- Make it proper packaged, specially toward setuptools. | |||
Release 0.12.0 of SOAPpy | |||
@@ -30,7 +34,7 @@ This release primarily foces on bug fixes. Primary changes: | |||
[ 925077] "SOAPpy prints out SOAP fault" (even when Config.debug is off). | |||
[1001646] "SOAPpy stomps headers when sending multirefs" | |||
[1001646] "SOAPpy stomps headers when sending multirefs. | |||
[1064233] "Bug fixes for complex types" | |||
[1064233] "Bug fixes for complex types" | |||
[1064248] "Bugs in _asdict() and _asarray() in Types.py" | |||
[1078051] "Arrays of complex types (doc/lit)" | |||
[1096971] "Parse error: missing HTTP header 'Content-length'" | |||
@@ -63,19 +67,19 @@ Release 0.11.5 of SOAPpy | |||
Release 0.11.4 of SOAPpy | |||
------------------------ | |||
- Bug fixes: | |||
- Bug fixes | |||
- SOAPpy/Server.py: Check if header information contains SOAPAction | |||
key before checking its value. | |||
- Fixes for generating SOAP from complexType arrays, contributed by | |||
antonio.beamud@linkend.com | |||
antonio.beamud@linkend.com | |||
- Fixed bug that caused typedArrayTypes to lose their type | |||
information when rendered to SOAP and added corresponding | |||
test case. | |||
information when rendered to SOAP and added corresponding | |||
test case. | |||
- New Features | |||
- New Features | |||
- Enhancements to fault handling: The faultType Faultstring is now | |||
a non-variable string (i.e. no nsmethod in it) so that it can be | |||
@@ -88,7 +92,6 @@ Release 0.11.4 of SOAPpy | |||
- SOAPpy/Server.py: Added an unregisterObject function | |||
- Changes to allow SOAPBuilder so it can handle a 'raw' Python object. | |||
@@ -96,7 +99,7 @@ Release 0.11.4 of SOAPpy | |||
Release 0.11.2 of SOAPpy | |||
------------------------ | |||
- News: | |||
- News: | |||
Ivan R. Judson has joined the SOAPpy team. He is focused on | |||
Globus support but is also responsible for a lot of other work for | |||
@@ -116,14 +119,14 @@ Release 0.11.2 of SOAPpy | |||
- Fix bug when content-length is not present in parsed SOAP message. | |||
- Fix bug #888345: Python 2.3 boolean type serialized as int | |||
- Fix bug #875977: no escaping of bad tagnames for NoneTypes | |||
- New features: | |||
- Improved Globus support and documentation. Thanks Ivan! | |||
- Added context handling | |||
- Changed the use of SOAPAction, it used to default to setting it | |||
@@ -147,33 +150,33 @@ Release 0.11.1 of SOAPpy | |||
- Bug fixes: | |||
- Fixed bug [ 792258 ] "SOAPBuilder.SOAPBuilder.dump can catch | |||
wrong exceptions" in SOAPBuilder.dump() submitted by Greg Chapman | |||
(glchapman). | |||
wrong exceptions" in SOAPBuilder.dump() submitted by Greg Chapman | |||
(glchapman). | |||
- Changes suggested by Richard Au (richardau) to fix ssl support. | |||
See bug report [ 752882 ] "SSL SOAP Server no longer working." | |||
See bug report [ 752882 ] "SSL SOAP Server no longer working." | |||
- Remove call to gentag from 'dump' and add to 'dump_float', per | |||
bug report [ 792600 ] "SOAPBuilder.SOAPBuilder.dump possibly should | |||
not call gentag" by Greg Chapman (glchapman). | |||
bug report [ 792600 ] "SOAPBuilder.SOAPBuilder.dump possibly should | |||
not call gentag" by Greg Chapman (glchapman). | |||
- Add a tests for handling of nil="true" and nil="false". This | |||
fixes bug [ pywebsvcs-Bugs-858168 ] 'xsi:nil="true" causes | |||
exception' reported by Robert Zimmermann (robertzett): | |||
fixes bug [ pywebsvcs-Bugs-858168 ] 'xsi:nil="true" causes | |||
exception' reported by Robert Zimmermann (robertzett): | |||
- testClient1.py now works properly. It had been failing to start the | |||
server thread on the second unit test. It turned out that the | |||
variable 'quit' needed to be reset to zero after the SOAP server | |||
thread for the first unit test exited. With the solution of this | |||
problem testClient1 can now be extended to run unit tests of both | |||
client and server components. | |||
server thread on the second unit test. It turned out that the | |||
variable 'quit' needed to be reset to zero after the SOAP server | |||
thread for the first unit test exited. With the solution of this | |||
problem testClient1 can now be extended to run unit tests of both | |||
client and server components. | |||
- Added 'strict' option to the WSDL class. If strict is true, a | |||
RuntimeException will be raised if an unrecogned message is recieved. | |||
If strict is false, a warning will be printed to the console, the | |||
message type will be added to the WSDL schema, and processing will | |||
continue. This is in response to the second half of bug report [ | |||
817331 ] "Some WSDL.py changes", submitted by Rudolf Ruland. | |||
RuntimeException will be raised if an unrecogned message is recieved. | |||
If strict is false, a warning will be printed to the console, the | |||
message type will be added to the WSDL schema, and processing will | |||
continue. This is in response to the second half of bug report [ | |||
817331 ] "Some WSDL.py changes", submitted by Rudolf Ruland. | |||
Release 0.11.0 of SOAPpy | |||
@@ -182,24 +185,24 @@ Release 0.11.0 of SOAPpy | |||
- New/Changed configuration settings: | |||
- Config.simplify_objects=1 now converts all SOAPpy objects into basic | |||
Python types (list, dictionary, tuple, double, float, etc.). By default, | |||
Config.simplify_objects=0 for backward compatibility. | |||
Python types (list, dictionary, tuple, double, float, etc.). By default, | |||
Config.simplify_objects=0 for backward compatibility. | |||
- Config.dict_encoding='ascii' converts the keys of dictionaries | |||
(e.g. created when Config.simplify_objects=1) to ascii == plain python | |||
strings instead of unicode strings. This variable can be set to any | |||
encoding known to string.encode(). | |||
(e.g. created when Config.simplify_objects=1) to ascii == plain python | |||
strings instead of unicode strings. This variable can be set to any | |||
encoding known to string.encode(). | |||
- Config.strict_range=1 forces the SOAP parsing routines to perform | |||
range checks on recieved SOAP float and double objects. When | |||
Config.strict_range=0, the default, parsing does not perform range | |||
checking (except for detecting overflows, which always occurs). In | |||
either case, range checking is performed when | |||
generating SOAP float and double objects. | |||
range checks on recieved SOAP float and double objects. When | |||
Config.strict_range=0, the default, parsing does not perform range | |||
checking (except for detecting overflows, which always occurs). In | |||
either case, range checking is performed when | |||
generating SOAP float and double objects. | |||
- Fixes for WSDLProxy. | |||
- Scripts in the test/ directory | |||
- Scripts in the test/ directory | |||
- Verbose debugging messages have been turned off.. | |||
@@ -213,12 +216,12 @@ Release 0.11.0 of SOAPpy | |||
- Initial support for Globus via pyGlobus contributed by Ivan | |||
R. Judson <judson@mcs.anl.gov>. | |||
Release 0.10.4 of SOAPpy | |||
Release 0.10.4 of SOAPpy | |||
------------------------ | |||
Dramatic performance improvements for large data transfers. | |||
Release 0.10.1 of SOAPpy | |||
Release 0.10.1 of SOAPpy | |||
------------------------ | |||
only minor changes | |||
@@ -230,12 +233,12 @@ only minor changes | |||
3) All test scripts now use the local SOAPpy source instead of the | |||
globally installed version. | |||
Release 0.10.0 of SOAPpy | |||
Release 0.10.0 of SOAPpy | |||
------------------------ | |||
Enhancements: | |||
1) The new name handling mechanism has been enabled by default. | |||
1) The new name handling mechanism has been enabled by default. | |||
The primary purpose of this release is to allow users to test this | |||
to see if it causes problems. Please take the time to do so. If | |||
@@ -246,7 +249,7 @@ Enhancements: | |||
server under this release will be likely to generate errors due to | |||
the different name handling mechanisms. | |||
2) MS-Windows systems should now be fully supported. | |||
2) MS-Windows systems should now be fully supported. | |||
This required implementing a new module, ieee754, which provides | |||
functions for detecting and generating IEEE 754 special floating | |||
@@ -284,7 +287,7 @@ VERSION 0.10.3 | |||
-------------- | |||
- Removed import of obsoleted ieee753.py. Now use the fpconst module | |||
proposed by PEP 754, available from | |||
proposed by PEP 754, available from | |||
<http://research.warnes.net/Zope/projects/fpconst/> | |||
- SOAPpy should no longer depend on pyXML. | |||
@@ -315,25 +318,27 @@ VERSION 0.10.0 | |||
CHANGES SINCE VERSION 0.9.9-pre5 | |||
- Major Change: The huge file SOAPpy/SOAP.py (4,122 lines, 131K) has | |||
been split into 10 separate files: | |||
been split into 10 separate files:: | |||
Client.py NS.py SOAPBuilder.py Utilities.py | |||
Config.py Parser.py Server.py | |||
Errors.py SOAP.py Types.py | |||
Config.py Parser.py Server.py | |||
Errors.py SOAP.py Types.py | |||
This should ease navigation and maintenance. | |||
- A new CVS module 'wstools' was created to hold code which is used by | |||
both ZSI and SOAPpy. While this module is stored separately in CVS, | |||
it will be distributed as an integral part of both ZSI and SOAPpy, | |||
and will be included as an 'internal' module by both. In the SOAPpy | |||
source, it lives in the directory SOAPpy/wstools. | |||
source, it lives in the directory SOAPpy/wstools. | |||
- The files XMLname.py, ieee754.py, have been moved into SOAPpy/wstools. | |||
- Added TODO file | |||
- Fix bug in getNS that caused loss of namespace by using better | |||
pattern matching to find the namespace in the SOAP message. Fixes bug | |||
678239 | |||
pattern matching to find the namespace in the SOAP message. Fixes bug | |||
678239 | |||
- Added Mark Bucciarelli's <mark@hubcapconsulting.com> patch to | |||
provide wsdl code on properly structured .GET requests to the server. | |||
@@ -383,13 +388,13 @@ CHANGES SINCE VERSION 0.9.8 | |||
--------------------------- | |||
- IEEE 754 floating point specials (Inf, -Inf, NaN) should now be | |||
properly and consistently handled on all platforms. | |||
properly and consistently handled on all platforms. | |||
Added code to explicitly check for and handle IEEE 754 floating | |||
point specials (Inf, -Inf, NaN). This replaces an ugly hack for | |||
point specials (Inf, -Inf, NaN). This replaces an ugly hack for | |||
systems whose python float() doesn't understand the strings "Inf", | |||
"NaN", etc. Floating point specials should now be properly handled | |||
on all operating systems. | |||
on all operating systems. | |||
***SOAPpy should now work properly on all versions of Microsoft Windows.*** | |||
@@ -410,8 +415,8 @@ CHANGES SINCE VERSION 0.9.7 | |||
--------------------------- | |||
- Modified structure to allow installation using Python distutils | |||
(i.e. setup.py). Access to the SOAPpy library now requires: | |||
from SOAPpy import SOAP | |||
(i.e. setup.py). Access to the SOAPpy library now requires: | |||
from SOAPpy import SOAP | |||
- I (Gregory R. Warnes) have implemented an experimental and | |||
non-standard method of handling named and unnamed arguments. This | |||
@@ -424,7 +429,7 @@ CHANGES SINCE VERSION 0.9.7 | |||
are assumed to be named and are passed using the xml tag id as the | |||
parameter name. Outgoing SOAP method calls now always generate | |||
names in this way--whether or not specialArgs is enabled--instead of | |||
using the pattern v#####. | |||
using the pattern v#####. | |||
See the file README.MethodParameterNaming for more details. | |||
@@ -476,7 +481,7 @@ VERSION 0.9.7 (6/27/01) | |||
- Fixed the unamed ordered parameters bug | |||
- Added the ability to specify a http_proxy | |||
- Added a patch provided by Tim MiddelKoop to allow printing of proxy objects | |||
- Added the contrib directory and included a medusa implementation of a | |||
- Added the contrib directory and included a medusa implementation of a | |||
SOAP.py server by Ng Pheng Siong | |||
@@ -531,7 +536,7 @@ VERSION 0.9.5 (5/16/01) | |||
- Now assumes that any type that isn't in a schema could be a struct. | |||
- Added the Config object, now config options can be set globally or on an | |||
individual call level. | |||
- Deprecated the DateTime, Binary and Boolean types, should now | |||
- Deprecated the DateTime, Binary and Boolean types, should now | |||
use dateTimeType, binaryType and booleanType. | |||
- Includes N+I interop suite. | |||
- Various bug fixes and improvements. | |||
@@ -572,7 +577,7 @@ VERSION 0.8 (4/23/01) | |||
- Fixed the zero-length array problem | |||
- Made indentation uniform (spaces not tabs) | |||
- Made Header and Body work more like real structs | |||
- Changed the parseSOAP api, now returns the body structure, | |||
- Changed the parseSOAP api, now returns the body structure, | |||
instead of a list of body elements | |||
- Changed the soapaction and namespaces for the interop server | |||
- New silabclient options |
@@ -1,244 +0,0 @@ | |||
============================================== | |||
SOAPpy - Simple to use SOAP library for Python | |||
============================================== | |||
Current Maintainer: | |||
Gregory R. Warnes <Gregory.R.Warnes@Pfizer.com> | |||
Original Authors: | |||
Cayce Ullman <c_ullman@yahoo.com> | |||
Brian Matthews <blm@blmatthews.com> | |||
Contributions by: | |||
Christopher Blunck <blunck2@gst.com> | |||
Brad Knotwell <b.knotwell@f5.com> | |||
Mark Bucciarelli <mark@hubcapconsulting.com> (ported WSDL | |||
client from ZSI) | |||
Ivan R. Judson <judson@mcs.anl.gov> (Globus support) | |||
Kirk Strauser <kirk@daycos.com> | |||
Antonio Beamud Montero <antonio.beamud@linkend.com> (patches | |||
for integrating SOAPpy into Zope) | |||
And others. | |||
Copyright (c) 2002-2005, Pfizer, Inc. | |||
Copyright (c) 2001, Cayce Ullman. | |||
Copyright (c) 2001, Brian Matthews. | |||
All rights reserved, see the file LICENSE for conditions of use. | |||
INTRODUCTION | |||
============ | |||
The goal of the SOAPpy team is to provide a full-featured SOAP library | |||
for Python that is very simple to use and that fully supports dynamic | |||
interaction between clients and servers. | |||
INCLUDED | |||
-------- | |||
- General SOAP Parser based on sax.xml | |||
- General SOAP Builder | |||
- SOAP Proxy for RPC client code | |||
- SOAP Server framework for RPC server code | |||
FEATURES | |||
-------- | |||
- Handles all SOAP 1.0 types | |||
- Handles faults | |||
- Allows namespace specification | |||
- Allows SOAPAction specification | |||
- Homogeneous typed arrays | |||
- Supports multiple schemas | |||
- Header support (mustUnderstand and actor) | |||
- XML attribute support | |||
- Multi-referencing support (Parser/Builder) | |||
- Understands SOAP-ENC:root attribute | |||
- Good interop, passes all client tests for Frontier, SOAP::LITE, SOAPRMI | |||
- Encodings | |||
- SSL clients (with Python compiled with OpenSSL support) | |||
- SSL servers (with Python compiled with OpenSSL support and M2Crypto | |||
installed) | |||
- Encodes XML tags per SOAP 1.2 name mangling specification (Gregory Warnes) | |||
- Automatic stateful SOAP server support (Apache v2.x) (blunck2) | |||
- WSDL client support | |||
- WSDL server support | |||
TODO (See RELEASE_INFO and CHANGELOG for recent changes) | |||
---- | |||
- Timeout on method calls | |||
- Advanced arrays (sparse, multidimensional and partial) | |||
- Attachments | |||
- mod_python example | |||
- medusa example | |||
- Improved documentation | |||
MANIFEST | |||
-------- | |||
Files | |||
README This file | |||
RELEASE_NOTES General information about each release | |||
ChangeLog Detailed list of changes | |||
TODO List of tasks that need to be done | |||
setup.py Python installation control files | |||
MANIFEST | |||
MANIFEST.in | |||
SOAPpy.spec* RPM package control file | |||
Directories | |||
SOAPpy/* Source code for the package | |||
SOAPpy/wstools/* Source code for WSDL tools | |||
tests/* unit tests and examples | |||
validate/* interop client and servers | |||
bid/* N+I interop client and server | |||
doc/* Documentation | |||
contrib/ Contributed examples (also see test/) | |||
docs/ Documentation | |||
tools/ Misc tools useful for the SOAPpy developers | |||
zope/ Patches to Zope allowing it to provide SOAP services | |||
INSTALLATION | |||
============ | |||
USING GITHUB | |||
------------ | |||
You can install SOAPpy and its dependencies directly from GitHub using PIP: | |||
pip install -e "git+http://github.com/pelletier/SOAPpy.git@develop#egg=SOAPpy" | |||
REQUIRED PACKAGES: | |||
----------------- | |||
- fpconst 0.6.0 or later, | |||
<http://research.warnes.net/projects/rzope/fpconst/> | |||
- pyXML 0.8.3 or later, <http://pyxml.sourceforge.net> | |||
OPTIONAL PACKAGES | |||
----------------- | |||
- pyGlobus, optional support for Globus, | |||
<http://www-itg.lbl.gov/gtg/projects/pyGlobus/> | |||
- M2Crypto.SSL, optional support for server-side SSL | |||
<http://sandbox.rulemaker.net/ngps/m2/> | |||
- If Python is compiled with SSL support (Python 2.3 does so by | |||
default), client-side use of SSL is supported | |||
INSTALLATION STEPS | |||
------------------ | |||
As of version 0.9.8 SOAPpy can be installed using the standard python | |||
package installation tools. | |||
To install: | |||
1) Unpack the distribution package: | |||
On Windows, use your favorite zip file uncompression tool. | |||
On Unix: | |||
$ tar -xvzf SOAPpy-$VERSION$.tar.gz | |||
if you have gnu tar, otherwise | |||
$ gzcat SOAPpy-$VERSION$.tar.gz | tar -xvf - | |||
2) Change into the source directory | |||
$ cd SOAPpy-$VERSION$ | |||
3) Compile the package | |||
$ python setup.py build | |||
4) Install the package | |||
On Windows: | |||
$ python setup.py install | |||
On Unix install as the owner of the python directories | |||
(usally root): | |||
$ su root | |||
Password: XXXXXX | |||
$ python setup.py install | |||
DOCUMENTATION | |||
============= | |||
QUICK START | |||
----------- | |||
A simple "Hello World" http SOAP server: | |||
import SOAPpy | |||
def hello(): | |||
return "Hello World" | |||
server = SOAPpy.SOAPServer(("localhost", 8080)) | |||
server.registerFunction(hello) | |||
server.serve_forever() | |||
And the corresponding client: | |||
import SOAPpy | |||
server = SOAPpy.SOAPProxy("http://localhost:8080/") | |||
print server.hello() | |||
BASIC TUTORIAL | |||
-------------- | |||
Mark Pilgrims' _Dive Into Python_, published in printed form by | |||
Apress and online at at http://diveintopython.org provides a | |||
nice tutorial for SOAPpy in Chapter 12, "SOAP Web Services". | |||
See http://diveintopython.org/soap_web_services . | |||
OTHER DOCUMENTATION | |||
------------------- | |||
For further information see the files in the docs/ directory. | |||
Note that documentation is one of SOAPpy's current weak points. | |||
Please help us out! | |||
GETTING HELP | |||
============ | |||
REPORTING BUGS | |||
-------------- | |||
Please submit bug reports, feature requests, patches, etc at the | |||
Python Web Services web site: http://pywebsvcs.sourceforge.net. | |||
MAILING LIST | |||
============ | |||
Please address questions and general discussion to the | |||
pywebsvcs-talk mailing list, pywebsvcs-talk@lists.sourceforge.net. | |||
For subscription information visit | |||
http://lists.sourceforge.net/lists/listinfo/pywebsvcs-talk. | |||
List archives are available at | |||
http://sourceforge.net/mailarchive/forum.php?forum=pywebsvcs-talk | |||
Please remember that the authors do have day jobs, so please try | |||
the mailing list before contacting them directy. | |||
$Id: README,v 1.18 2005/02/22 15:58:35 warnes Exp $ |
@@ -0,0 +1,232 @@ | |||
============================================== | |||
SOAPpy - Simple to use SOAP library for Python | |||
============================================== | |||
Current Maintainers: | |||
- Gregory R. Warnes <Gregory.R.Warnes@Pfizer.com> | |||
- Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | |||
Original Authors: | |||
- Cayce Ullman <c_ullman@yahoo.com> | |||
- Brian Matthews <blm@blmatthews.com> | |||
Contributions by: | |||
- Christopher Blunck <blunck2@gst.com> | |||
- Brad Knotwell <b.knotwell@f5.com> | |||
- Mark Bucciarelli <mark@hubcapconsulting.com> (ported WSDL client from ZSI) | |||
- Ivan R. Judson <judson@mcs.anl.gov> (Globus support) | |||
- Kirk Strauser <kirk@daycos.com> | |||
- Antonio Beamud Montero <antonio.beamud@linkend.com> (patches for integrating SOAPpy into Zope) | |||
- And others. | |||
Copyright (c) 2002-2005, Pfizer, Inc. | |||
Copyright (c) 2001, Cayce Ullman. | |||
Copyright (c) 2001, Brian Matthews. | |||
All rights reserved, see the file LICENSE for conditions of use. | |||
INTRODUCTION | |||
============== | |||
The goal of the SOAPpy team is to provide a full-featured SOAP library | |||
for Python that is very simple to use and that fully supports dynamic | |||
interaction between clients and servers. | |||
INCLUDED | |||
-------- | |||
- General SOAP Parser based on sax.xml | |||
- General SOAP Builder | |||
- SOAP Proxy for RPC client code | |||
- SOAP Server framework for RPC server code | |||
FEATURES | |||
-------- | |||
- Handles all SOAP 1.0 types | |||
- Handles faults | |||
- Allows namespace specification | |||
- Allows SOAPAction specification | |||
- Homogeneous typed arrays | |||
- Supports multiple schemas | |||
- Header support (mustUnderstand and actor) | |||
- XML attribute support | |||
- Multi-referencing support (Parser/Builder) | |||
- Understands SOAP-ENC:root attribute | |||
- Good interop, passes all client tests for Frontier, SOAP::LITE, SOAPRMI | |||
- Encodings | |||
- SSL clients (with Python compiled with OpenSSL support) | |||
- SSL servers (with Python compiled with OpenSSL support and M2Crypto installed) | |||
- Encodes XML tags per SOAP 1.2 name mangling specification (Gregory Warnes) | |||
- Automatic stateful SOAP server support (Apache v2.x) (blunck2) | |||
- WSDL client support | |||
- WSDL server support | |||
TODO (See RELEASE_INFO and CHANGELOG for recent changes) | |||
---------------------------------------------------------- | |||
- Timeout on method calls | |||
- Advanced arrays (sparse, multidimensional and partial) | |||
- Attachments | |||
- mod_python example | |||
- medusa example | |||
- Improved documentation | |||
MANIFEST | |||
-------- | |||
:: | |||
Files | |||
README This file | |||
RELEASE_NOTES General information about each release | |||
ChangeLog Detailed list of changes | |||
TODO List of tasks that need to be done | |||
setup.py Python installation control files | |||
SOAPpy.spec RPM package control file | |||
Directories | |||
SOAPpy/ Source code for the package | |||
SOAPpy/wstools/ Source code for WSDL tools | |||
tests/ unit tests and examples | |||
validate/ interop client and servers | |||
bid/ N+I interop client and server | |||
contrib/ Contributed examples (also see test/) | |||
docs/ Documentation | |||
tools/ Misc tools useful for the SOAPpy developers | |||
zope/ Patches to Zope allowing it to provide SOAP services | |||
INSTALLATION | |||
============ | |||
USING GITHUB | |||
------------ | |||
You can install SOAPpy and its dependencies directly from GitHub using PIP: | |||
pip install -e "git+http://github.com/pelletier/SOAPpy.git@develop#egg=SOAPpy" | |||
REQUIRED PACKAGES | |||
------------------ | |||
- fpconst 0.6.0 or later, | |||
<http://research.warnes.net/projects/rzope/fpconst/> | |||
- wstools | |||
OPTIONAL PACKAGES | |||
----------------- | |||
- pyGlobus, optional support for Globus, | |||
<http://www-itg.lbl.gov/gtg/projects/pyGlobus/> | |||
- M2Crypto.SSL, optional support for server-side SSL | |||
<http://sandbox.rulemaker.net/ngps/m2/> | |||
- If Python is compiled with SSL support (Python 2.3 does so by | |||
default), client-side use of SSL is supported | |||
INSTALLATION STEPS | |||
------------------ | |||
As of version 0.9.8 SOAPpy can be installed using the standard python | |||
package installation tools. | |||
To install: | |||
1) Unpack the distribution package: | |||
On Windows, use your favorite zip file uncompression tool. | |||
On Unix:: | |||
$ tar -xvzf SOAPpy-$VERSION$.tar.gz | |||
If you have gnu tar, otherwise | |||
:: | |||
$ gzcat SOAPpy-$VERSION$.tar.gz | tar -xvf - | |||
2) Change into the source directory | |||
:: | |||
cd SOAPpy-$VERSION$ | |||
3) Compile the package:: | |||
$ python setup.py build | |||
4) Install the package | |||
On Windows:: | |||
$ python setup.py install | |||
On Unix install as the owner of the python directories | |||
(usally root):: | |||
$ su root | |||
Password: XXXXXX | |||
$ python setup.py install | |||
DOCUMENTATION | |||
============= | |||
QUICK START | |||
----------- | |||
A simple "Hello World" http SOAP server:: | |||
import SOAPpy | |||
def hello(): | |||
return "Hello World" | |||
server = SOAPpy.SOAPServer(("localhost", 8080)) | |||
server.registerFunction(hello) | |||
server.serve_forever() | |||
And the corresponding client:: | |||
import SOAPpy | |||
server = SOAPpy.SOAPProxy("http://localhost:8080/") | |||
print server.hello() | |||
BASIC TUTORIAL | |||
-------------- | |||
Mark Pilgrims _Dive Into Python, published in printed form by | |||
Apress and online at at http://diveintopython.org provides a | |||
nice tutorial for SOAPpy in Chapter 12, "SOAP Web Services". | |||
See http://diveintopython.org/soap_web_services . | |||
OTHER DOCUMENTATION | |||
------------------- | |||
For further information see the files in the docs/ directory. | |||
Note that documentation is one of SOAPpy's current weak points. | |||
Please help us out! | |||
GETTING HELP | |||
============ | |||
REPORTING BUGS | |||
-------------- | |||
Please submit bug reports, feature requests, patches, etc at the | |||
Python Web Services web site: http://pywebsvcs.sourceforge.net. | |||
MAILING LIST | |||
============ | |||
Please address questions and general discussion to the | |||
pywebsvcs-talk mailing list, pywebsvcs-talk@lists.sourceforge.net. | |||
For subscription information visit | |||
http://lists.sourceforge.net/lists/listinfo/pywebsvcs-talk. | |||
List archives are available at | |||
http://sourceforge.net/mailarchive/forum.php?forum=pywebsvcs-talk | |||
Please remember that the authors do have day jobs, so please try | |||
the mailing list before contacting them directy. | |||
@@ -5,6 +5,13 @@ | |||
CVS=0 | |||
from setuptools import setup, find_packages | |||
import os | |||
def read(*rnames): | |||
return "\n"+ open( | |||
os.path.join('.', *rnames) | |||
).read() | |||
def load_version(): | |||
@@ -23,13 +30,13 @@ def load_version(): | |||
filename = path.join(path.dirname(__file__), 'src', 'SOAPpy', 'version.py') | |||
d = imp.new_module('version') | |||
d.__file__ = filename | |||
try: | |||
execfile(filename, d.__dict__) | |||
except IOError, e: | |||
e.strerror = 'Unable to load the version number (%s)' % e.strerror | |||
raise | |||
return d.__version__ | |||
@@ -38,8 +45,9 @@ __version__ = load_version() | |||
url="http://pywebsvcs.sf.net/" | |||
long_description="SOAPpy provides tools for building SOAP clients and servers. For more information see " + url | |||
long_description="SOAPpy provides tools for building SOAP clients and servers. For more information see " + url\ | |||
+'\n'+read('README.txt')\ | |||
+'\n'+read('CHANGES.txt')\ | |||
if CVS: | |||
import time | |||
@@ -56,7 +64,7 @@ setup( | |||
long_description=long_description, | |||
packages=find_packages('src'), | |||
package_dir = {'': 'src'}, | |||
include_package_data=True, | |||
include_package_data=True, | |||
install_requires=[ | |||
'fpconst', | |||
'wstools', | |||
@@ -202,7 +202,7 @@ class HTTPTransport: | |||
from pyGlobus.io import GSIHTTP | |||
r = GSIHTTP(real_addr, tcpAttr = config.tcpAttr) | |||
elif addr.proto == 'https': | |||
r = httplib.HTTPS(real_addr) | |||
r = httplib.HTTPS(real_addr, key_file=config.SSL.key_file, cert_file=config.SSL.cert_file) | |||
else: | |||
r = HTTPWithTimeout(real_addr, timeout=timeout) | |||
@@ -39,14 +39,19 @@ from version import __version__ | |||
import socket | |||
from types import * | |||
from NS import NS | |||
from NS import NS | |||
################################################################################ | |||
# Configuration class | |||
################################################################################ | |||
class SOAPConfig: | |||
__readonly = ('SSLserver', 'SSLclient', 'GSIserver', 'GSIclient') | |||
class SSLconfig: | |||
__slots__ = ('key_file', 'cert_file') | |||
key_file = None | |||
cert_file = None | |||
def __init__(self, config = None, **kw): | |||
d = self.__dict__ | |||
@@ -62,7 +67,7 @@ class SOAPConfig: | |||
if k[0] != '_': | |||
d[k] = v | |||
else: | |||
# Setting debug also sets returnFaultInfo, | |||
# Setting debug also sets returnFaultInfo, | |||
# dumpHeadersIn, dumpHeadersOut, dumpSOAPIn, and dumpSOAPOut | |||
self.debug = 0 | |||
self.dumpFaultInfo = 1 | |||
@@ -118,7 +123,7 @@ class SOAPConfig: | |||
except: | |||
d['GSIserver'] = 0 | |||
d['GSIclient'] = 0 | |||
# Server SSL support if M2Crypto.SSL available | |||
try: | |||
@@ -134,6 +139,10 @@ class SOAPConfig: | |||
except: | |||
d['SSLclient'] = 0 | |||
# Cert support | |||
if d['SSLclient'] or d['SSLserver']: | |||
d['SSL'] = self.SSLconfig() | |||
for k, v in kw.items(): | |||
if k[0] != '_': | |||
setattr(self, k, v) | |||
@@ -194,7 +203,7 @@ class SOAPConfig: | |||
d['dumpHeadersOut'] = \ | |||
d['dumpSOAPIn'] = \ | |||
d['dumpSOAPOut'] = value | |||
else: | |||
d[name] = value | |||
@@ -45,7 +45,7 @@ class Proxy: | |||
try: | |||
self.wsdl = reader.loadFromStream(wsdlsource) | |||
except xml.parsers.expat.ExpatError, e: | |||
newstream = urllib.urlopen(wsdlsource) | |||
newstream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
buf = newstream.readlines() | |||
raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
(wsdlsource, "\t".join(buf)) | |||
@@ -71,7 +71,7 @@ class Proxy: | |||
if self.wsdl is None: | |||
try: | |||
stream = urllib.urlopen(wsdlsource) | |||
stream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
self.wsdl = reader.loadFromStream(stream, wsdlsource) | |||
except (IOError, OSError): pass | |||
except xml.parsers.expat.ExpatError, e: | |||
@@ -1,2 +1,2 @@ | |||
__version__="0.12.0" | |||
__version__="0.12.1" | |||