Browse Source

proper packaging stage4

main
kiorky 14 years ago
parent
commit
384911179d
9 changed files with 334 additions and 323 deletions
  1. +1
    -0
      .gitignore
  2. +71
    -66
      CHANGES.txt
  3. +0
    -244
      README
  4. +232
    -0
      README.txt
  5. +13
    -5
      setup.py
  6. +1
    -1
      src/SOAPpy/Client.py
  7. +13
    -4
      src/SOAPpy/Config.py
  8. +2
    -2
      src/SOAPpy/WSDL.py
  9. +1
    -1
      src/SOAPpy/version.py

+ 1
- 0
.gitignore View File

@@ -1 +1,2 @@
*.egg-info *.egg-info
*.pyc

RELEASE_INFO → CHANGES.txt View File

@@ -1,13 +1,17 @@
Release 0.12.1 of SOAPpy
------------------------
CHANGELOG
==================

0.12.1 - (unreleased)
----------------------------------------
- Forked intially from https://github.com/pelletier/SOAPpy - Forked intially from https://github.com/pelletier/SOAPpy
- main interresting enhancements grabbed: - 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: - Grabbed from original svn:


- rpm spec file - rpm spec file
@@ -15,7 +19,7 @@ Release 0.12.1 of SOAPpy
- zope/ - zope/
- bid/ - bid/
- .cvsignore files - .cvsignore files
-
- Make it proper packaged, specially toward setuptools. - Make it proper packaged, specially toward setuptools.


Release 0.12.0 of SOAPpy 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). [ 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"
[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" [1064248] "Bugs in _asdict() and _asarray() in Types.py"
[1078051] "Arrays of complex types (doc/lit)" [1078051] "Arrays of complex types (doc/lit)"
[1096971] "Parse error: missing HTTP header 'Content-length'" [1096971] "Parse error: missing HTTP header 'Content-length'"
@@ -63,19 +67,19 @@ Release 0.11.5 of SOAPpy
Release 0.11.4 of SOAPpy Release 0.11.4 of SOAPpy
------------------------ ------------------------


- Bug fixes:
- Bug fixes


- SOAPpy/Server.py: Check if header information contains SOAPAction - SOAPpy/Server.py: Check if header information contains SOAPAction
key before checking its value. key before checking its value.


- Fixes for generating SOAP from complexType arrays, contributed by - 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 - 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 - Enhancements to fault handling: The faultType Faultstring is now
a non-variable string (i.e. no nsmethod in it) so that it can be 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 - SOAPpy/Server.py: Added an unregisterObject function



- Changes to allow SOAPBuilder so it can handle a 'raw' Python object. - 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 Release 0.11.2 of SOAPpy
------------------------ ------------------------


- News:
- News:


Ivan R. Judson has joined the SOAPpy team. He is focused on 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 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 when content-length is not present in parsed SOAP message.


- Fix bug #888345: Python 2.3 boolean type serialized as int - Fix bug #888345: Python 2.3 boolean type serialized as int
- Fix bug #875977: no escaping of bad tagnames for NoneTypes - Fix bug #875977: no escaping of bad tagnames for NoneTypes




- New features: - New features:


- Improved Globus support and documentation. Thanks Ivan! - Improved Globus support and documentation. Thanks Ivan!
- Added context handling - Added context handling


- Changed the use of SOAPAction, it used to default to setting it - Changed the use of SOAPAction, it used to default to setting it
@@ -147,33 +150,33 @@ Release 0.11.1 of SOAPpy
- Bug fixes: - Bug fixes:


- Fixed bug [ 792258 ] "SOAPBuilder.SOAPBuilder.dump can catch - 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. - 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 - 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 - 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 - 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 - 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 Release 0.11.0 of SOAPpy
@@ -182,24 +185,24 @@ Release 0.11.0 of SOAPpy
- New/Changed configuration settings: - New/Changed configuration settings:


- Config.simplify_objects=1 now converts all SOAPpy objects into basic - 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 - 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 - 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. - Fixes for WSDLProxy.


- Scripts in the test/ directory
- Scripts in the test/ directory


- Verbose debugging messages have been turned off.. - 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 - Initial support for Globus via pyGlobus contributed by Ivan
R. Judson <judson@mcs.anl.gov>. 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. Dramatic performance improvements for large data transfers.


Release 0.10.1 of SOAPpy
Release 0.10.1 of SOAPpy
------------------------ ------------------------


only minor changes only minor changes
@@ -230,12 +233,12 @@ only minor changes
3) All test scripts now use the local SOAPpy source instead of the 3) All test scripts now use the local SOAPpy source instead of the
globally installed version. globally installed version.


Release 0.10.0 of SOAPpy
Release 0.10.0 of SOAPpy
------------------------ ------------------------


Enhancements: 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 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 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 server under this release will be likely to generate errors due to
the different name handling mechanisms. 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 This required implementing a new module, ieee754, which provides
functions for detecting and generating IEEE 754 special floating 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 - 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/> <http://research.warnes.net/Zope/projects/fpconst/>


- SOAPpy should no longer depend on pyXML. - SOAPpy should no longer depend on pyXML.
@@ -315,25 +318,27 @@ VERSION 0.10.0
CHANGES SINCE VERSION 0.9.9-pre5 CHANGES SINCE VERSION 0.9.9-pre5


- Major Change: The huge file SOAPpy/SOAP.py (4,122 lines, 131K) has - 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 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. This should ease navigation and maintenance.


- A new CVS module 'wstools' was created to hold code which is used by - 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, 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, 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 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. - The files XMLname.py, ieee754.py, have been moved into SOAPpy/wstools.


- Added TODO file - Added TODO file


- Fix bug in getNS that caused loss of namespace by using better - 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 - Added Mark Bucciarelli's <mark@hubcapconsulting.com> patch to
provide wsdl code on properly structured .GET requests to the server. 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 - 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 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", systems whose python float() doesn't understand the strings "Inf",
"NaN", etc. Floating point specials should now be properly handled "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.*** ***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 - 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 - I (Gregory R. Warnes) have implemented an experimental and
non-standard method of handling named and unnamed arguments. This 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 are assumed to be named and are passed using the xml tag id as the
parameter name. Outgoing SOAP method calls now always generate parameter name. Outgoing SOAP method calls now always generate
names in this way--whether or not specialArgs is enabled--instead of 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. 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 - Fixed the unamed ordered parameters bug
- Added the ability to specify a http_proxy - Added the ability to specify a http_proxy
- Added a patch provided by Tim MiddelKoop to allow printing of proxy objects - 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 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. - 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 - Added the Config object, now config options can be set globally or on an
individual call level. 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. use dateTimeType, binaryType and booleanType.
- Includes N+I interop suite. - Includes N+I interop suite.
- Various bug fixes and improvements. - Various bug fixes and improvements.
@@ -572,7 +577,7 @@ VERSION 0.8 (4/23/01)
- Fixed the zero-length array problem - Fixed the zero-length array problem
- Made indentation uniform (spaces not tabs) - Made indentation uniform (spaces not tabs)
- Made Header and Body work more like real structs - 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 instead of a list of body elements
- Changed the soapaction and namespaces for the interop server - Changed the soapaction and namespaces for the interop server
- New silabclient options - New silabclient options

+ 0
- 244
README View File

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

+ 232
- 0
README.txt View File

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


+ 13
- 5
setup.py View File

@@ -5,6 +5,13 @@
CVS=0 CVS=0


from setuptools import setup, find_packages from setuptools import setup, find_packages
import os

def read(*rnames):
return "\n"+ open(
os.path.join('.', *rnames)
).read()





def load_version(): def load_version():
@@ -23,13 +30,13 @@ def load_version():
filename = path.join(path.dirname(__file__), 'src', 'SOAPpy', 'version.py') filename = path.join(path.dirname(__file__), 'src', 'SOAPpy', 'version.py')
d = imp.new_module('version') d = imp.new_module('version')
d.__file__ = filename d.__file__ = filename
try: try:
execfile(filename, d.__dict__) execfile(filename, d.__dict__)
except IOError, e: except IOError, e:
e.strerror = 'Unable to load the version number (%s)' % e.strerror e.strerror = 'Unable to load the version number (%s)' % e.strerror
raise raise
return d.__version__ return d.__version__




@@ -38,8 +45,9 @@ __version__ = load_version()


url="http://pywebsvcs.sf.net/" 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: if CVS:
import time import time
@@ -56,7 +64,7 @@ setup(
long_description=long_description, long_description=long_description,
packages=find_packages('src'), packages=find_packages('src'),
package_dir = {'': 'src'}, package_dir = {'': 'src'},
include_package_data=True,
include_package_data=True,
install_requires=[ install_requires=[
'fpconst', 'fpconst',
'wstools', 'wstools',


+ 1
- 1
src/SOAPpy/Client.py View File

@@ -202,7 +202,7 @@ class HTTPTransport:
from pyGlobus.io import GSIHTTP from pyGlobus.io import GSIHTTP
r = GSIHTTP(real_addr, tcpAttr = config.tcpAttr) r = GSIHTTP(real_addr, tcpAttr = config.tcpAttr)
elif addr.proto == 'https': 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: else:
r = HTTPWithTimeout(real_addr, timeout=timeout) r = HTTPWithTimeout(real_addr, timeout=timeout)




+ 13
- 4
src/SOAPpy/Config.py View File

@@ -39,14 +39,19 @@ from version import __version__
import socket import socket
from types import * from types import *


from NS import NS
from NS import NS


################################################################################ ################################################################################
# Configuration class # Configuration class
################################################################################ ################################################################################



class SOAPConfig: class SOAPConfig:
__readonly = ('SSLserver', 'SSLclient', 'GSIserver', 'GSIclient') __readonly = ('SSLserver', 'SSLclient', 'GSIserver', 'GSIclient')
class SSLconfig:
__slots__ = ('key_file', 'cert_file')
key_file = None
cert_file = None


def __init__(self, config = None, **kw): def __init__(self, config = None, **kw):
d = self.__dict__ d = self.__dict__
@@ -62,7 +67,7 @@ class SOAPConfig:
if k[0] != '_': if k[0] != '_':
d[k] = v d[k] = v
else: else:
# Setting debug also sets returnFaultInfo,
# Setting debug also sets returnFaultInfo,
# dumpHeadersIn, dumpHeadersOut, dumpSOAPIn, and dumpSOAPOut # dumpHeadersIn, dumpHeadersOut, dumpSOAPIn, and dumpSOAPOut
self.debug = 0 self.debug = 0
self.dumpFaultInfo = 1 self.dumpFaultInfo = 1
@@ -118,7 +123,7 @@ class SOAPConfig:
except: except:
d['GSIserver'] = 0 d['GSIserver'] = 0
d['GSIclient'] = 0 d['GSIclient'] = 0


# Server SSL support if M2Crypto.SSL available # Server SSL support if M2Crypto.SSL available
try: try:
@@ -134,6 +139,10 @@ class SOAPConfig:
except: except:
d['SSLclient'] = 0 d['SSLclient'] = 0


# Cert support
if d['SSLclient'] or d['SSLserver']:
d['SSL'] = self.SSLconfig()

for k, v in kw.items(): for k, v in kw.items():
if k[0] != '_': if k[0] != '_':
setattr(self, k, v) setattr(self, k, v)
@@ -194,7 +203,7 @@ class SOAPConfig:
d['dumpHeadersOut'] = \ d['dumpHeadersOut'] = \
d['dumpSOAPIn'] = \ d['dumpSOAPIn'] = \
d['dumpSOAPOut'] = value d['dumpSOAPOut'] = value
else: else:
d[name] = value d[name] = value




+ 2
- 2
src/SOAPpy/WSDL.py View File

@@ -45,7 +45,7 @@ class Proxy:
try: try:
self.wsdl = reader.loadFromStream(wsdlsource) self.wsdl = reader.loadFromStream(wsdlsource)
except xml.parsers.expat.ExpatError, e: 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() buf = newstream.readlines()
raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \
(wsdlsource, "\t".join(buf)) (wsdlsource, "\t".join(buf))
@@ -71,7 +71,7 @@ class Proxy:
if self.wsdl is None: if self.wsdl is None:
try: 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) self.wsdl = reader.loadFromStream(stream, wsdlsource)
except (IOError, OSError): pass except (IOError, OSError): pass
except xml.parsers.expat.ExpatError, e: except xml.parsers.expat.ExpatError, e:


+ 1
- 1
src/SOAPpy/version.py View File

@@ -1,2 +1,2 @@
__version__="0.12.0"
__version__="0.12.1"



Loading…
Cancel
Save