| @@ -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" | |||