• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

notes/H03-May-2022-187142

suds/H03-May-2022-14,45711,686

suds_jurko.egg-info/H03-May-2022-4842

tests/H03-May-2022-8,0886,387

HACKING.rstH A D03-May-202217.5 KiB544370

MANIFEST.inH A D03-May-2022508 1412

PKG-INFOH A D03-May-20222 KiB4842

README.rstH A D03-May-202254 KiB1,237984

ez_setup.pyH A D03-May-202211.9 KiB383312

setup.cfgH A D03-May-2022168 1510

setup.pyH A D03-May-20229.2 KiB211101

README.rst

1Overview
2=================================================
3
4"Suds" is a lightweight SOAP-based web service client for Python licensed under
5LGPL (see the ``LICENSE.txt`` file included in the distribution).
6
7This is hopefully just a temporary fork of the original ``suds`` Python library
8project created because the original project development seems to have stalled.
9Should be reintegrated back into the original project if it ever gets revived
10again.
11
12**Forked project information**
13
14* Project site - http://bitbucket.org/jurko/suds
15* Epydocs documentation - needs to be built from sources
16* Official releases can be downloaded from:
17
18  * BitBucket - http://bitbucket.org/jurko/suds/downloads
19  * PyPI - http://pypi.python.org/pypi/suds-jurko
20
21**Original suds Python library development project information**
22
23* Project site - http://fedorahosted.org/suds
24* Documentation - http://fedorahosted.org/suds/wiki/Documentation
25* Epydocs - http://jortel.fedorapeople.org/suds/doc
26
27For development notes see the ``HACKING.rst`` document included in the
28distribution.
29
30
31Installation
32=================================================
33
34Standard Python installation.
35
36Here are the basic instructions for 3 different installation methods:
37
38#. Using ``pip``
39
40   * Have the ``pip`` package installed.
41   * Run ``pip install suds-jurko``.
42
43#. Using ``easy-install``
44
45   * Have the ``setuptools`` package installed.
46   * Run ``easy_install suds-jurko``.
47
48#. From sources
49
50   * Unpack the source package somewhere.
51   * Run ``python setup.py install`` from the source distribution's top level
52     folder.
53
54Installation troubleshooting:
55-----------------------------
56
57* If automated ``setuptools`` Python package installation fails (used in
58  releases ``0.4.1 jurko 5`` and later), e.g. due to PyPI web site not being
59  available, user might need to install it manually and then rerun the
60  installation.
61* Releases prior to ``0.4.1. jurko 5`` will fail if the ``distribute`` Python
62  package is not already installed on the system.
63* Python 2.4.3 on Windows has problems using automated ``setuptools`` Python
64  package downloads via the HTTPS protocol, and therefore does not work
65  correctly with PyPI which uses HTTPS links to all of its packages. The same
66  does not occur when using Python version 2.4.4.
67
68
69Release notes
70=================================================
71
72version 0.6 (2014-01-24)
73-------------------------
74
75* Based on revision 712 (1e48fd79a1fc323006826439e469ba7b3d2b5a68) from the
76  original ``suds`` Python library development project's Subversion repository.
77
78  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
79
80* Supported Python versions.
81
82  * Intended to work with Python 2.4+.
83  * Basic sources prepared for Python 2.x.
84  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
85    during the setup procedure.
86  * Tested in the following environments:
87
88    * Python 2.4.3/x86, on Windows 7/SP1/x64.
89    * Python 2.4.4/x86, on Windows 7/SP1/x64.
90    * Python 2.7.6/x64, on Windows 7/SP1/x64.
91    * Python 3.2.5/x64, on Windows 7/SP1/x64.
92    * Python 3.3.3/x86, on Windows 7/SP1/x64.
93    * Python 3.3.3/x64, on Windows 7/SP1/x64.
94
95* Fixed sending HTTP request containing non-ASCII unicode data using Python 2.7.
96
97  * Many thanks to mduggan1 and Alexey Sveshnikov for reporting the issue and
98    suggesting patches.
99
100* Fixed unicode data logging issue (contributed by Bouke Haarsma).
101* ``suds.transport.Request`` object string representation cleaned up a bit -
102  added a missing space before the URL to make it consistent with how all the
103  other Request & Reply data is represented in such strings.
104* Fixed issue with ``suds`` client failing to be create its default cache object
105  (e.g. because a folder it needs is write protected) and thus preventing the
106  client from being created without any chance for the user to specify an
107  alternative cache.
108
109  * The default client cache is now instantiated only if user does not
110    explicitly specify some other alternate cache (or even None to disable the
111    whole data caching system).
112  * Many thanks to Arthur Clune for reporting the issue.
113
114* Added explicit tests for URL parameters being passed as unicode or single-byte
115  strings under Python 2 but only unicode strings under Python 3, and improved
116  how such invalid parameter values are reported.
117
118  * This behaviour matches urllib implementation differences between Python 3
119    and earlier Python interpreter versions.
120  * Many thanks to Mesut Tasci for reporting a related issue and preparing the
121    initial patch for it.
122
123* Extra arguments used when making a web service operation call are now reported
124  similar to how this is done for regular Python functions.
125
126  * The extra argument error reporting may be disabled using the new
127    ``extraArgumentErrors`` ``suds`` option.
128  * Basic idea and the initial implementation for this feature contributed by
129    Bouke Haarsma.
130
131* Corrected a typo in the ``BuildError`` exception message.
132* Removed partial support for pre-2.4 Python versions since such old Python
133  versions are no longer officially supported nor are they tested anywhere.
134* Updated documented project links to use HTTP instead of HTTPS protocol.
135* Setup improvements.
136
137  * Fixed setup to work with soft links in the current working folder path
138    (contributed by ryanpetrello).
139  * Project now installed as a zipped egg folder.
140  * No longer attempts to work around Python 2.4.3 issues with urllib HTTPS
141    downloads since now PyPI updated all of its links to HTTPS and the patch
142    would need to become much more complex to deal with this, while making the
143    setup much more difficult to understand and maintain.
144
145    * On the other hand, this is now an extremely old Python version, so the
146      change is not expected to have much impact. Anyone still using this
147      version will just have to work around the issue manually, e.g. by
148      downloading the necessary packages and running their setup procedures
149      directly.
150
151  * ``long_description`` field content wrapped to 72 characters, since
152    ``PKG-INFO`` package distribution metadata file stores this text with an 8
153    space indentation.
154
155* Improved internal project development documentation.
156
157  * ``HACKING.txt`` updated, converted to .rst format & renamed to
158    ``HACKING.rst``.
159  * Started internal project design, research & development notes documentation.
160    Stored in a new ``notes/`` subfolder, included in the project's source
161    distribution, but not its builds or installations.
162
163* Internal test suite improvements.
164
165  * Added unit tests for transport related ``Request`` & ``Reply`` classes.
166  * Improved ``HTTPTransport`` related unit tests.
167  * Split up some web service operation invocation request construction tests
168    into:
169
170    * parameter definition tests
171    * argument parsing tests
172    * binding specific request construction tests
173
174  * Many new tests added & existing ones extended.
175  * Several redundant tests removed.
176  * Added a basic development script for running the project's full test suite
177    using multiple Python interpreter versions under Windows.
178  * Better test support when running with disabled assertion optimizations
179    enabled.
180  * Cleaned up support for running test scripts directly as Python scripts.
181
182    * May now be passed pytest command-line options.
183    * Now return an exit code indicating the test result (0=success,
184      !0=failure).
185
186version 0.5 (2013-11-25)
187------------------------
188
189* Based on revision 712 (1e48fd79a1fc323006826439e469ba7b3d2b5a68) from the
190  original ``suds`` Python library development project's Subversion repository.
191
192  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
193
194* Supported Python versions.
195
196  * Intended to work with Python 2.4+.
197  * Basic sources prepared for Python 2.x.
198  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
199    during the setup procedure.
200  * Tested in the following environments:
201
202    * Python 2.4.3/x86, on Windows 7/SP1/x64.
203    * Python 2.4.4/x86, on Windows 7/SP1/x64.
204    * Python 2.7.6/x64, on Windows 7/SP1/x64.
205    * Python 3.2.5/x64, on Windows 7/SP1/x64.
206    * Python 3.3.3/x86, on Windows 7/SP1/x64.
207    * Python 3.3.3/x64, on Windows 7/SP1/x64.
208
209* Updated the project's versioning scheme and detached it from the original
210  ``suds`` project. The original project's stall seems to be long-term (likely
211  permanent) and making our version information match the original one was
212  getting to be too much of a hassle.
213
214  * For example, with our original versioning scheme, latest pip versions
215    recognize our package releases as 'development builds' and refuse to install
216    them by default (supply the ``--pre`` command-line option to force the
217    install anyway).
218
219* Improved the ``suds`` date/time handling (contributed by MDuggan1, based on a
220  patch attached to issue `#353 <http://fedorahosted.org/suds/ticket/353>`_ on
221  the original ``suds`` project issue tracker).
222
223  * Replaces the timezone handling related fix made in the previous release.
224  * More detailed testing.
225  * Corrected subsecond to microsecond conversion, including rounding.
226  * ``DateTime`` class no longer derived from ``Date`` & ``Time`` classes.
227  * Recognizes more date/time strings valid 'by intuition'.
228  * Rejects more invalid date/time strings.
229
230    * Time zone specifiers containing hours and minutes but without a colon are
231      rejected to avoid confusion, e.g. whether ``+121`` should be interpreted
232      as ``+12:01`` or ``+01:21``.
233    * Time zone specifiers limited to under 24 hours. Without this Python's
234      timezone UTC offset calculation would raise an exception on some
235      operations, e.g. timezone aware ``datetime.datetime``/``time``
236      comparisons.
237
238* Removed several project files related to the original developer's development
239  environment.
240* Removed several internal Mercurial version control system related files from
241  the project's source distribution package.
242* Better documented the project's development & testing environment.
243
244version 0.4.1 jurko 5 (2013-11-11)
245----------------------------------
246
247* Based on revision 712 (1e48fd79a1fc323006826439e469ba7b3d2b5a68) from the
248  original ``suds`` Python library development project's Subversion repository.
249
250  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
251
252* Supported Python versions.
253
254  * Intended to work with Python 2.4+.
255  * Basic sources prepared for Python 2.x.
256  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
257    during the setup procedure.
258  * Tested in the following environments:
259
260    * Python 2.4.3/x86, on Windows 7/SP1/x64.
261    * Python 2.4.4/x86, on Windows 7/SP1/x64.
262    * Python 2.7.3/x64, on Windows 7/SP1/x64.
263    * Python 3.2.3/x64, on Windows 7/SP1/x64.
264    * Python 3.3.2/x86, on Windows 7/SP1/x64.
265    * Python 3.3.2/x64, on Windows 7/SP1/x64.
266
267* Improved Python 3 support.
268
269  * Cache files now used again.
270
271    * Problems caused by cache files being stored in text mode, but attempting
272      to write a bytes object in them. Too eager error handling was then causing
273      all such cached file usage to fail silently.
274
275  * ``WebFault`` containing non-ASCII data now gets constructed correctly.
276  * Fixed issue with encoding of authentication in ``transport/http.py``
277    (contributed by Phillip Alday).
278  * Unicode/byte string handling fixes.
279
280* Fixed encoding long user credentials for basic HTTP authentication in
281  ``transport/http.py`` (contributed by Jan-Wijbrand Kolman).
282* Fixed an ``IndexError`` occurring when calling a web service operation with
283  only a single input parameter.
284* Fixed a log formatting error, originated in the original ``suds`` (contributed
285  by Guy Rozendorn).
286* Fixed local timezone detection code (contributed by Tim Savage).
287* Setup updated.
288
289  * Fixed a problem with running the project setup on non-Windows platforms.
290
291    * ``version.py`` file loading no longer sensitive to the line-ending type
292      used in that file.
293    * Stopped using the ``distribute`` setup package since it has been merged
294      back into the original ``setuptools`` project. Now using ``setuptools``
295      version 0.7.2 or later.
296    * Automatically downloads & installs an appropriate ``setuptools`` package
297      version if needed.
298
299  * ``distutils`` ``obsoletes`` setup parameter usage removed when run using
300    this Python versions earlier than 2.5 as that is the first version
301    implementing support for this parameter.
302
303* Removed different programming techniques & calls breaking compatibility with
304  Python 2.4.
305
306  * String ``format()`` method.
307  * Ternary if operator.
308
309* Project ``README`` file converted to .rst format (contributed by Phillip
310  Alday).
311* Corrected internal input/output binding usage. Output binding was being used
312  in several places where the input one was expected.
313* HTTP status code 200 XML replies containing a ``Fault`` element now
314  consistently as a SOAP fault (plus a warning about the non-standard HTTP
315  status code) both when reporting such faults using exceptions or by returning
316  a (status, reason) tuple.
317
318  * Before this was done only when reporting them using exceptions.
319
320* Reply XML processing now checks the namespace used for ``Envelope`` & ``Body``
321  elements.
322* SOAP fault processing now checks the namespaces used for all relevant tags.
323* Plugins now get a chance to process ``received()`` & ``parsed()`` calls for
324  both success & error replies.
325* SOAP fault reports with invalid Fault structure no longer cause ``suds`` code
326  to break with an 'invalid attribute' exception.
327* SOAP fault reports with no ``<detail>`` tag (optional) no longer cause
328  ``suds`` code to break with an 'invalid attribute' exception when run with the
329  ``suds`` ``faults`` option set to ``False``.
330* Added correct handling for HTTP errors containing no input file information.
331  Previously such cases caused ``suds`` to break with an 'invalid attribute'
332  exception.
333* ``SimClient`` injection keywords reorganized:
334
335  * ``msg`` - request message.
336  * ``reply`` - reply message ('msg' must not be set).
337  * ``status`` - HTTP status code accompanying the 'reply' message.
338  * ``description`` - description string accompanying the 'reply' message.
339
340* Added ``unwrap`` option, allowing the user to disable ``suds`` library's
341  automated simple document interface unwrapping (contributed by Juraj Ivančić).
342* Fixed a problem with ``suds`` constructing parameter XML elements in its SOAP
343  requests in incorrect namespaces in case they have been defined by XSD schema
344  elements referencing XSD schema elements with a different target namespace.
345* ``DocumentStore`` instance updated.
346
347  * Separate ``DocumentStore`` instances now hold separate data with every
348    instance holding all the hardcoded ``suds`` library XML document data.
349  * ``DocumentStore`` now supports a dict-like ``update()`` method for adding
350    new documents to it.
351  * ``Client`` instances may now be given a specific ``DocumentStore`` instance
352    using the 'documentStore' option. Not specifying the option uses a shared
353    singleton instance. Specifying the option as ``None`` avoids using any
354    document store whatsoever.
355  * Suds tests no longer have to modify the global shared ``DocumentStore`` data
356    in order to avoid loading its known data from external files and so may no
357    longer affect each other by leaving behind data in that global shared
358    ``DocumentStore``.
359  * Documents may now be fetched from a ``DocumentStore`` using a transport
360    protocol other than ``suds``. When using the ``suds`` protocol an exception
361    is raised if the document could not be found in the store while in all other
362    cases ``None`` is returned instead.
363  * Documents in a ``DocumentStore`` are now accessed as bytes instead file-like
364    stream objects.
365  * Made more ``DocumentStore`` functions private.
366
367* Corrected error message displayed in case of a transport error.
368* Many unit tests updated and added.
369* Unit tests may now be run using the setuptools ``setup.py test`` command.
370
371  * Note that this method does not allow passing additional pytest testing
372    framework command-line arguments. To specify any such parameters invoke the
373    pytest framework directly, e.g. using ``python -m pytest`` in the project's
374    root folder.
375
376* Internal code cleanup.
377
378  * Removed undocumented, unused and untested ``binding.replyfilter``
379    functionality.
380  * Binding classes no longer have anything to do with method independent Fault
381    element processing.
382  * Removed SoapClient ``last_sent()`` and ``last_received()`` functions.
383  * Fixed file closing in ``reader.py`` & ``cache.py`` modules - used files now
384    closed explicitly in case of failed file operations instead of relying on
385    the Python GC to close them 'some time later on'.
386  * Fixed silently ignoring internal exceptions like ``KeyboardInterrupt`` in
387    the ``cache.py`` module.
388  * Removed unused ``Cache`` module ``getf()`` & ``putf()`` functions.
389    ``getf()`` left only in ``FileCache`` and its derived classes.
390
391version 0.4.1 jurko 4 (2012-04-17)
392----------------------------------
393
394* Based on revision 712 (1e48fd79a1fc323006826439e469ba7b3d2b5a68) from the
395  original ``suds`` Python library development project's Subversion repository.
396
397  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
398
399* Supported Python versions.
400
401  * Intended to work with Python 2.4+.
402  * Basic sources prepared for Python 2.x.
403  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
404    during the setup procedure.
405  * Installation procedure requires the ``distribute`` Python package to be
406    installed on the system.
407  * Tested in the following environments:
408
409    * Python 2.7.1/x64 on Windows XP/SP3/x64.
410    * Python 3.2.2/x64 on Windows XP/SP3/x64.
411
412* Cleaned up how the distribution package maintainer name string is specified so
413  it does not contain characters causing the setup procedure to fail when run
414  using Python 3+ on systems using CP1250 or UTF-8 as their default code-page.
415* Internal cleanup - renamed bounded to single_occurrence and unbounded to
416  multi_occurrence.
417* Original term unbounded meant that its object has more than one occurrence
418  while its name inferred that 'it has no upper limit on its number of
419  occurrences'.
420
421version 0.4.1 jurko 3 (2011-12-26)
422----------------------------------
423
424* Based on revision 711 (1be817c8a7672b001eb9e5cce8842ebd0bf424ee) from the
425  original ``suds`` Python library development project's Subversion repository.
426
427  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
428
429* Supported Python versions.
430
431  * Intended to work with Python 2.4+.
432  * Basic sources prepared for Python 2.x.
433  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
434    during the setup procedure.
435  * Installation procedure requires the ``distribute`` Python package to be
436    installed on the system.
437  * Tested in the following environments:
438
439    * Python 2.7.1/x86 on Windows XP/SP3/x86.
440    * Python 3.2.2/x86 on Windows XP/SP3/x86.
441
442* Operation parameter specification string no longer includes a trailing comma.
443* ``suds.xsd.xsbasic.Enumeration`` objects now list their value in their string
444  representation.
445* ``suds.sudsobject.Metadata`` ``__unicode__()``/``__str__()``/``__repr__()``
446  functions no longer raise an ``AttributeError`` when the object is not empty.
447* Fixed a bug with ``suds.xsd.sxbasic.TypedContent.resolve()`` returning an
448  incorrect type when called twice on the same node referencing a builtin type
449  with the parameter ``nobuiltin=True``.
450* Added more test cases.
451
452version 0.4.1 jurko 2 (2011-12-24)
453----------------------------------
454
455* Based on revision 711 (1be817c8a7672b001eb9e5cce8842ebd0bf424ee) from the
456  original ``suds`` Python library development project's Subversion repository.
457
458  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
459
460* Supported Python versions.
461
462  * Intended to work with Python 2.4+.
463  * Basic sources prepared for Python 2.x.
464  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
465    during the setup procedure.
466  * Installation procedure requires the ``distribute`` Python package to be
467    installed on the system.
468  * Tested in the following environments:
469
470    * Python 2.7.1/x86 on Windows XP/SP3/x86.
471    * Python 3.2.2/x86 on Windows XP/SP3/x86.
472
473* Fixed a bug causing converting a ``suds.client.Client`` object to a string to
474  fail & raise an ``IndexError`` exception.
475
476  * Changed the way ``suds.client.Client to-string`` conversion outputs build
477    info. This fixes a bug in the original ``0.4.1 jurko 1`` forked project
478    release causing printing out a ``suds.client.Client`` object to raise an
479    exception due to the code in question making some undocumented assumptions
480    on how the build information string should be formatted.
481
482version 0.4.1 jurko 1 (2011-12-24)
483----------------------------------
484
485* Based on revision 711 (1be817c8a7672b001eb9e5cce8842ebd0bf424ee) from the
486  original ``suds`` Python library development project's Subversion repository.
487
488  * Last officially packaged & released ``suds`` Python library version - 0.4.1.
489
490* Supported Python versions.
491
492  * Intended to work with Python 2.4+.
493  * Basic sources prepared for Python 2.x.
494  * For using Python 3 the sources first processed by the Python ``py2to3`` tool
495    during the setup procedure.
496  * Installation procedure requires the ``distribute`` Python package to be
497    installed on the system.
498  * Tested in the following environments:
499
500    * Python 2.7.1/x86 on Windows XP/SP3/x86.
501    * Python 3.2.2/x86 on Windows XP/SP3/x86.
502
503* Added Python 3 support:
504
505  * Based on patches integrated from a Mercurial patch queue maintained by
506    `Bernhard Leiner <https://bitbucket.org/bernh/suds-python-3-patches>`_.
507
508    * Last collected patch series commit:
509      ``96ffba978d5c74df28846b4273252cf1f94f7c78``.
510
511  * Original sources compatible with Python 2. Automated conversion to Python 3
512    sources during setup.
513
514    * Automated conversion implemented by depending on the ``distribute`` setup
515      package.
516
517* Made ``suds`` work with operations taking choice parameters.
518
519  * Based on a patch by michaelgruenewald & bennetb01 attached to ticket `#342
520    <http://fedorahosted.org/suds/ticket/342>`_ on the original ``suds`` project
521    issue tracker. Comments listed related to that ticket seem to indicate that
522    there may be additional problems with this patch but so far we have not
523    encountered any.
524
525* Fixed the ``DateTimeTest.testOverflow`` test to work correctly in all
526  timezones.
527
528  * This test would fail if run directly when run on a computer with a positive
529    timezone time adjustment while it would not fail when run together with all
530    the other tests in this module since some other test would leave behind a
531    nonpositive timezone adjustment setting. Now the test explicitly sets its
532    own timezone time adjustment to a negative value.
533  * Fixes a bug referenced in the original ``suds`` project issue tracker as
534    ticket `#422 <http://fedorahosted.org/suds/ticket/422>`_.
535
536* Corrected accessing ``suds.xsd.sxbase.SchemaObject`` subitems by index.
537
538  * Fixes a bug referenced in the original ``suds`` project issue tracker as
539    ticket `#420 <http://fedorahosted.org/suds/ticket/420>`_.
540
541* Internal code & project data cleanup.
542
543  * Extracted version information into a separate module.
544  * Added missing release notes for the original ``suds`` Python library
545    project.
546  * Ported unit tests to the ``pytest`` testing framework.
547  * Cleaned up project tests.
548
549    * Separated standalone tests from those requiring an external web service.
550    * Added additional unit tests.
551    * Added development related documentation - ``HACKING.txt``.
552    * Setup procedure cleaned up a bit.
553
554* Known defects.
555
556  * Converting a ``suds.client.Client`` object to a string fails & raises an
557    ``IndexError`` exception.
558
559
560Original suds library release notes
561=================================================
562
563**version 0.4.1 (2010-10-15)**
564
565* <undocumented>
566
567**version 0.4 (2010-09-08)**
568
569* Fix spelling errors in spec description.
570* Fix source0 URL warning.
571* Updated caching to not cache intermediate WSDLs.
572* Added ``DocumentCache`` which caches verified XML documents as text. User can
573  choose.
574* Added ``cachingpolicy`` option to allow user to specify whether to cache XML
575  documents or WSDL objects.
576* Provided for repeating values in reply for message parts consistent with the
577  way this is handled in nested objects.
578* Added ``charset=utf-8`` to stock content-type HTTP header.
579* Added ``<?xml version="1.0" encoding="UTF-8"?>`` to outgoing SOAP messages.
580* Detection of faults in successful (http=200) replies and raise ``WebFault``.
581  Search for ``<soapenv:Fault/>``.
582* Add plugins facility.
583* Fixed Tickets: #251, #313, #314, #334.
584
585**version 0.3.9 (2009-12-17)**
586
587* Bumped python requires to 2.4.
588* Replaced stream-based caching in the transport package with document-based
589  caching.
590* Caches pickled ``Document`` objects instead of XML text. 2x Faster!
591* No more SAX parsing exceptions on damaged or incomplete cached files.
592* Cached WSDL objects. Entire ``Definitions`` object including contained
593  ``Schema`` object cached via pickle.
594* Copy of SOAP encoding schema packaged with ``suds``.
595* Refactor ``Transports`` to use ``ProxyHandler`` instead of
596  ``urllib2.Request.set_proxy()``.
597* Added WSSE enhancements ``<Timestamp/>`` and ``<Expires/>`` support. See:
598  Timestamp token.
599* Fixed Tickets: #256, #291, #294, #295, #296.
600
601**version 0.3.8 (2009-12-09)**
602
603* Included Windows NTLM Transport.
604* Add missing ``self.messages`` in ``Client.clone()``.
605* Changed default behavior for WSDL ``PartElement`` to be optional.
606* Add support for services/ports defined without ``<address/>`` element in WSDL.
607* Fix ``sax.attribute.Element.attrib()`` to find by name only when ns is not
608  specified; renamed to ``Element.getAttribute()``.
609* Update ``HttpTransport`` to pass timeout parameter to urllib2 open() methods
610  when supported by urllib2.
611* Add ``null`` class to pass explicit NULL values for parameters and optional
612  elements.
613* SOAP encoded array ``soap-enc:Array`` enhancement for rpc/encoded. Arrays
614  passed as python arrays - works like document/literal now. No more using the
615  factory to create the Array. Automatically includes ``arrayType`` attribute.
616  E.g. ``soap-enc:arrayType="Array[2]"``.
617* Reintroduced ability to pass complex (objects) using python dict instead of
618  ``suds`` object via factory.
619* Fixed tickets: #84, #261, #262, #263, #265, #266, #278, #280, #282.
620
621**version 0.3.7 (2009-10-16)**
622
623* Better SOAP header support
624* Added new transport ``HttpAuthenticated`` for active (not passive) basic
625  authentication.
626* New options (``prefixes``, ``timeout``, ``retxml``).
627* WSDL processing enhancements.
628* Expanded builtin XSD type support.
629* Fixed ``<xs:include/>``.
630* Better XML ``date``/``datetime`` conversion.
631* ``Client.clone()`` method added for lightweight copy of client object.
632* XSD processing fixes/enhancements.
633* Better ``<simpleType/>`` by ``<xs:restriction/>`` support.
634* Performance enhancements.
635* Fixed tickets: #65, #232, #233, #235, #241, #242, #244, #247, #254, #254,
636  #256, #257, #258.
637
638**version 0.3.6 (2009-04-31)**
639
640* Change hard coded ``/tmp/suds`` to ``tempfile.gettempdir()`` and create
641  ``suds/`` on demand.
642* Fix return type for ``Any.get_attribute()``.
643* Update HTTP caching to ignore ``file://`` URLs.
644* Better logging of messages when only the reply is injected.
645* Fix ``XInteger`` and ``XFloat`` types to translate returned arrays properly.
646* Fix ``xs:import`` schema with same namespace.
647* Update parser to not load external references and add ``Import.bind()`` for
648  ``XMLSchema.xsd`` location.
649* Add schema doctor - used to patch XSDs at runtime (see ``Option.doctor``).
650* Fix deprecation warnings in python 2.6.
651* Add behavior for ``@default`` defined on ``<element/>``.
652* Change ``@xsi:type`` value to always be qualified for doc/literal (reverts
653  0.3.5 change).
654* Add ``Option.xstq`` option to control when ``@xsi:type`` is qualified.
655* Fixed Tickets: #64, #129, #205, #206, #217, #221, #222, #224, #225, #228,
656  #229, #230.
657
658**version 0.3.5 (2009-04-16)**
659
660* Adds HTTP caching. Default is (1) day. Does not apply to method invocation.
661  See: documentation for details.
662* Removed checking fedora version check in spec since no longer building < fc9.
663* Updated makefile to roll tarball with tar.sh.
664* Moved bare/wrapped determination to WSDL for document/literal.
665* Refactored ``Transport`` into a package (provides better logging of HTTP
666  headers).
667* Fixed Tickets: #207, #209, #210, #212, #214, #215.
668
669**version 0.3.4 (2009-02-24)**
670
671* Static (automatic)
672  ``Import.bind('http://schemas.xmlsoap.org/soap/encoding/')``, users no longer
673  need to do this.
674* Basic ws-security with {{{UsernameToken}}} and clear-text password only.
675* Add support for ``sparse`` SOAP headers via passing dictionary.
676* Add support for arbitrary user defined SOAP headers.
677* Fixes service operations with multiple SOAP header entries.
678* Schema loading and dereferencing algorithm enhancements.
679* Nested SOAP multirefs fixed.
680* Better (true) support for ``elementFormDefault="unqualified"`` provides more
681  accurate namespacing.
682* WSDL part types no longer default to WSDL ``targetNamespace``.
683* Fixed Tickets: #4, #6, #21, #32, #62, #66, #71, #72, #114, #155, #201.
684
685**version 0.3.3 (2008-11-31)**
686
687* No longer installs (tests) package.
688* Implements API-3 proposal (https://fedorahosted.org/suds/wiki/Api3Proposal).
689
690  * Pluggable transport.
691  * Keyword method arguments.
692  * Basic HTTP authentication in default transport.
693
694* Add namespace prefix normalization in SOAP message.
695* Better SOAP message pruning of empty nodes.
696* Fixed Tickets: #51 - #60.
697
698**version 0.3.2 (2008-11-07)**
699
700* SOAP {{{MultiRef}}} support ``(1st pass added r300)``.
701* Add support for new schema tags:
702
703  * ``<xs:include/>``
704  * ``<xs:simpleContent/>``
705  * ``<xs:group/>``
706  * ``<xs:attributeGroup/>``
707
708* Added support for new xs <--> python type conversions:
709
710  * ``xs:int``
711  * ``xs:long``
712  * ``xs:float``
713  * ``xs:double``
714
715* Revise marshaller and binding to further sharpen the namespacing of nodes
716  produced.
717* Infinite recursion fixed in ``xsd`` package ``dereference()`` during schema
718  loading.
719* Add support for ``<wsdl:import/>`` of schema files into the WSDL root
720  ``<definitions/>``.
721* Fix double encoding of (&).
722* Add Client API:
723
724  * ``setheaders()`` - same as keyword but works for all invocations.
725  * ``addprefix()`` - mapping of namespace prefixes.
726  * ``setlocation()`` - override the location in the WSDL; same as keyword
727    except for all calls.
728  * ``setproxy()`` - same as proxy keyword but for all invocations.
729
730* Add proper namespace prefix for SOAP headers.
731* Fixed Tickets: #5, #12, #34, #37, #40, #44, #45, #46, #48, #49, #50, #51.
732
733**version 0.3.1 (2008-10-01)**
734
735* Quick follow up to the 0.3 release that made working multi-port service
736  definitions harder then necessary. After consideration (and a good night
737  sleep), it seemed obvious that a few changes would make this much easier:
738
739  1) filter out the non-SOAP bindings - they were causing the real trouble;
740  2) since most servers are happy with any of the SOAP bindings (SOAP 1.1 and
741     1.2), ambiguous references to methods when invoking then without the port
742     qualification will work just fine in almost every case. So, why not just
743     allow ``suds`` to select the port. Let us not make the user do it when it
744     is not necessary. In most cases, users on 0.2.9 and earlier will not have
745     to update their code when moving to 0.3.1 as they might have in 0.3.
746
747**version 0.3 (2008-09-30)**
748
749* Extends the support for multi-port services introduced in 0.2.9. This
750  addition, provides for multiple services to define the *same* method and
751  ``suds`` will handle it properly. See section 'SERVICES WITH MULTIPLE PORTS:'.
752* Add support for multi-document document/literal SOAP binding style. See
753  section 'MULTI-DOCUMENT Document/Literal:'.
754* Add support for ``xs:group``, ``xs:attributeGroup`` tags.
755* Add ``Client.last_sent()`` and ``Client.last_received()``.
756
757**version 0.2.9 (2008-09-09)**
758
759* Support for multiple ports within a service.
760* Attribute references ``<xs:attribute ref=""/>``.
761* Make XML special character encoder in sax package - pluggable.
762
763**version 0.2.8 (2008-08-28)**
764
765* Update document/literal binding to always send the document root referenced by
766  the ``<part/>``. After yet another review of the space and user input, seems
767  like the referenced element is ALWAYS the document root.
768* Add support for 'binding' ``schemaLocation``s to namespace-uri. This is for
769  imports that do not specify a ``schemaLocation`` and still expect the schema
770  to be downloaded. E.g. Axis references
771  'http://schemas.xmlsoap.org/soap/encoding/' without a schemaLocation. So, by
772  doing this::
773
774    >
775    > from suds.xsd.sxbasic import Import
776    > Import.bind('http://schemas.xmlsoap.org/soap/encoding/')
777    >
778
779  The schema is bound to a ``schemaLocation`` and it is downloaded.
780* Basic unmarshaller does not need a `schema`. Should have been removed during
781  refactoring but was missed.
782* Update client to pass kwargs to ``send()`` and add ``location`` kwarg for
783  overriding the service location in the WSDL.
784* Update marshaller to NOT emit XML for object attributes that represent
785  elements and/or attributes that are *both* optional and ``value=None``.
786
787  * Update factory (builder) to include all attributes.
788  * Add ``optional()`` method to ``SchemaObject``.
789
790* Update WSDL to override namespace in operation if specified.
791* Fix schema loading issue - build all schemas before processing imports.
792* Update packaging in preparation of submission to fedora.
793
794**version 0.2.7 (2008-08-11)**
795
796* Add detection/support for document/literal - wrapped and unwrapped.
797* Update document/literal {wrapped} to set document root (under <body/>) to be
798  the wrapper element (w/ proper namespace).
799* Add support for ``<sequence/>``, ``<all/>`` and ``<choice/>`` having
800  ``maxOccurs`` and have the. This causes the unmarshaller to set values for
801  elements contained in an unbounded collection as a list.
802* Update client.factory (builder) to omit children of ``<choice/>`` since the
803  'user' really needs to decide which children to include.
804* Update flattening algorithm to prevent re-flattening of types from imported
805  schemas.
806* Adjustments to flattening/merging algorithms.
807
808**version 0.2.6 (2008-08-05)**
809
810* Fix ENUMs broken during ``xsd`` package overhaul.
811* Fix type as defined in ticket #24.
812* Fix duplicate param names in method signatures as reported in ticket #30.
813* Suds licensed as LGPL.
814* Remove logging setup in ``suds.__init__()`` as suggested by patch in ticket
815  #31. Users will now need to configure the logger.
816* Add support for ``Client.Factory.create()`` alt: syntax for fully qualifying
817  the type to be built as: ``{namespace}name``. E.g.::
818
819    > client.factory.create('{http://blabla.com/ns}Person')
820
821**version 0.2.5 (2008-08-01)**
822
823* Overhauled the ``xsd`` package. This new (merging) approach is simpler and
824  should be more reliable and maintainable. Also, should provide better
825  performance since the merged schema performs lookups via dictionary lookup.
826  This overhaul should fix current ``TypeNotFound`` and ``<xs:extension/>``
827  problems, I hope :-).
828* Fixed dateTime printing bug.
829* Added infinite recursion prevention in ``builder.Builder`` for XSD types that
830  contain themselves.
831
832**version 0.2.4 (2008-07-28)**
833
834* Added support for WSDL imports: ``<wsdl:import/>``.
835* Added support for XSD<->python type conversions (thanks: Nathan Van Gheem)
836  for:
837
838  * ``xs:date``
839  * ``xs:time``
840  * ``xs:dateTime``
841
842* Fixed:
843
844  * Bug: Schema ``<import/>`` with ``schemaLocation`` specified.
845  * Bug: Namespaces specified in service description not valid until client/
846    proxy is printed.
847
848**version 0.2.3 (2008-07-23)**
849
850* Optimizations.
851
852**version 0.2.2 (2008-07-08)**
853
854* Update exceptions to be more /standard/ python by using
855  ``Exception.__init__()`` to set ``Exception.message`` as suggested by ticket
856  #14; update bindings to raise ``WebFault`` passing (p).
857* Add capability in bindings to handle multiple root nodes in the returned
858  values; returned as a composite object unlike when lists are returned.
859* Fix ``soapAction`` to be enclosed by quotes.
860* Add support for ``<xs:all/>``.
861* Fix ``unbounded()`` method in ``SchemaObject``.
862* Refactored schema into new ``xsd`` package. Files just getting too big. Added
863  ``execute()`` to ``Query`` and retrofitted ``suds`` to ``execute()`` query
864  instead of using ``Schema.find()`` directly. Also, moved hokey ``start()``
865  methods from schema, as well as, query incrementation.
866* Add ``inject`` keyword used to ``inject`` outbound SOAP messages and/or
867  inbound reply messages.
868* Refactored SoapClient and
869
870  1) rename ``send()`` to ``invoke(``)
871  2) split message sending from ``invoke()`` and place in ``send()``
872
873* Add ``TestClient`` which allows for invocation kwargs to have ``inject={'msg=,
874  and reply='}`` for message and reply injection.
875* Add ``Namespace`` class to ``sax`` for better management of namespace
876  behavior; retrofix ``suds`` to import and use ``Namespace``.
877* Change the default namespace used to resolve referenced types (having
878  attributes ``@base=""``, ``@type=""``) so that when no prefix is specified:
879  uses XML (node) namespace instead of the ``targetNamespace``.
880* Apply fix as defined by davidglick@onenw.org in ticket #13.
881* Update service definition to print to display service methods as
882  ``my_method(xs:int arg0, Person arg1)`` instead of ``my_method(arg0{xs:int},
883  arg1{Person})`` which is more like traditional method signatures.
884* Add XSD/python type conversion to unmarshaller (``XBoolean`` only); refactor
885  unmarshaller to use ``Content`` class which makes APIs cleaner, adds symmetry
886  between marshaller(s) and unmarshaller(s), provides good mechanism for
887  schema-property based type conversions.
888* Refactored marshaller with Appenders; add ``nobuiltin`` flag to ``resolve()``
889  to support fix for ``returned_type()`` and ``returned_collection()`` in
890  bindings.
891* Add support for (202, 204) HTTP codes.
892* Add ``XBoolean`` and mappings; add ``findattr()`` to ``TreeResolver`` in
893  preparation for type conversions.
894* Updated schema and schema property loading (deep recursion stopped); Changed
895  ``Imported`` schemas so then no longer copy imported schemas, rather the
896  import proxies find requests; Add ``ServiceDefinition`` class which provides
897  better service inspection; also provides namespace mapping and show types;
898  schema property API simplified; support for ``xs:any`` and ``xs:anyType``
899  added; Some schema lookup problems fixed; Binding classes refactored slightly;
900  A lot of debug logging added (might have to comment some out for performance -
901  some of the args are expensive).
902* Add ``sudsobject.Property``; a property is a special ``Object`` that contains
903  a ``value`` attribute and is returned by the ``Builder`` (factory) for
904  schema-types without children such as: ``<element/>`` and ``<simpleType/>``;
905  ``Builder``, ``Marshaller`` and ``Resolver`` updated to handle ``Properties``;
906  ``Resolver`` and ``Schema`` also updated to handle attribute lookups (this was
907  missing).
908* Add groundwork for user defined SOAP headers.
909* Fix ``elementFormDefault`` per ticket #7
910* Remove unused kwargs from bindings; cache bindings in WSDL; retrofit legacy
911  ``ServiceProxy`` to delegate to {new} ``Client`` API; remove keyword
912  ``nil_supported`` in favor of natural handling by ``nillable`` attribute on
913  ``<element/>`` within schemas.
914* Add support for ``<element/>`` attribute flags (``nillable`` and ``form``).
915* Add the ``Proxy`` (2nd generation API) class.
916* Add accessor/conversion functions so that users do not need to access
917  ``__x__`` attributes. Also add ``todict()`` and ``get_items()`` for easy
918  conversion to dictionary and iteration.
919* Search top-level elements for ``@ref`` before looking deeper.
920* Add ``derived()`` to ``SchemaObject``. This is needed to ensure that all
921  derived types (WSDL classes) are qualified by ``xsi:type`` without specifying
922  the ``xsi:type`` for all custom types as did in earlier ``suds`` releases.
923  Update the literal marshaller to only add the ``xsi:type`` when the type needs
924  to be specified.
925* Change ns promotion in ``sax`` to prevent ns promoted to parent when parent
926  has the prefix.
927* Changed binding ``returned_type()`` to return the (unresolved) ``Element``.
928* In order to support the new features and fix reported bugs, I'm in the process
929  of refactoring and hopefully evolving the components in ``suds`` that provide
930  the input/output translations:
931
932  * ``Builder`` (translates: XSD objects => python objects)
933  * ``Marshaller`` (translates: python objects => XML/SOAP)
934  * ``Unmarshaller`` (translates: XML/SOAP => python objects)
935
936  This evolution will provide better symmetry between these components as
937  follows:
938
939  The ``Builder`` and ``Unmarshaller`` will produce python (subclass of
940  ``sudsobject.Object``) objects with:
941
942  * ``__metadata__.__type__`` = XSD type (``SchemaObject``)
943  * subclass name (``__class__.__name__``) = schema-type name
944
945  and
946
947  The ``Marshaller``, while consuming python objects produced by the ``Builder``
948  or ``Unmarshaller``, will leverage this standard information to produce the
949  appropriate output (XML/SOAP).
950
951  The 0.2.1 code behaves *mostly* like this but ... not quite. Also, the
952  implementations have some redundancy.
953
954  While doing this, it made sense to factor out the common schema-type "lookup"
955  functionality used by the ``Builder``, ``Marshaller`` and ``Unmarshaller``
956  classes into a hierarchy of ``Resolver`` classes. This reduces the complexity
957  and redundancy of the ``Builder``, ``Marshaller`` and ``Unmarshaller`` classes
958  and allows for better modularity. Once this refactoring was complete, the
959  difference between the literal/encoded ``Marshallers`` became very small.
960  Given that the amount of code in the ``bindings.literal`` and
961  ``bindings.encoded`` packages was small (and getting smaller) and in the
962  interest of keeping the ``suds`` code base compact, I moved all of the
963  marshalling classes to the ``bindings.marshaller`` module. All of the
964  ``bindings.XX`` sub-packages will be removed.
965
966  The net effect:
967
968  All of the ``suds`` major components:
969
970  * client (old: service proxy)
971  * WSDL
972
973    * schema (xsd package)
974    * resolvers
975
976  * output (marshalling)
977  * builder
978  * input (unmarshalling)
979
980  Now have better:
981
982  * modularity
983  * symmetry with regard to ``Object`` metadata.
984  * code re-use (< 1% code duplication --- I hope)
985  * looser coupling
986
987  and better provide for the following features/bug-fix:
988
989  * Proper level of XML element qualification based on ``<schema
990    elementFormDefault=""/>`` attribute. This will ensure that when
991    ``elementFormDefault="qualified"``, ``suds`` will include the proper
992    namespace on root elements for both literal and encoded bindings. In order
993    for this to work properly, the literal marshaller (like the encoded
994    marshaller) needed to be schema-type aware. Had I added the same schema-type
995    lookup as the encoded marshaller instead of the refactoring described above,
996    the two classes would have been almost a complete duplicate of each other
997    :-(
998
999* The builder and unmarshaller used the ``schema.Schema.find()`` to resolve
1000  schema-types. They constructed a path as ``person.name.first`` to resolve
1001  types in proper context. Since ``Schema.find()`` was stateless, it resolved
1002  the intermediate path elements on every call. The new resolver classes are
1003  stateful and resolve child types *much* more efficiently.
1004* Prevent name collisions in ``sudsobject.Object`` like the ``items()`` method.
1005  I've moved all methods (including class methods) to a ``Factory`` class that
1006  is included in the ``Object`` class as a class attr (``__factory__``). Now
1007  that *all* attributes have python built-in naming, we should not have any more
1008  name collisions. This of course assumes that no WSDL/schema entity names will
1009  have a name with the python built-in naming convention but I have to draw the
1010  line somewhere. :-)
1011
1012**version 0.2.1 (2008-05-08)**
1013
1014* Update the ``schema.py`` ``SchemaProperty`` loading sequence so that the
1015  schema is loaded in 3 steps:
1016
1017  1) Build the raw tree.
1018  2) Resolve dependencies such as ``@ref`` and ``@base``.
1019  3) Promote grandchildren as needed to flatten (denormalize) the tree.
1020
1021  The WSDL was also changed to only load the schema once and store it. The
1022  schema collection was changed to load schemas in 2 steps:
1023
1024  1) Create all raw schema objects.
1025  2) Load schemas.
1026
1027  This ensures that local imported schemas can be found when referenced out of
1028  order. The ``sax.py`` ``Element`` interface changed: ``attribute()`` replaced
1029  by ``get()`` and ``set()``. Also, ``__getitem__()`` and ``__setitem__()`` can
1030  be used to access attribute values. Epydocs updated for ``sax.py``. And ...
1031  last ``<element ref=/>`` now supported properly.
1032
1033* Fix logging by: NOT setting to info in ``suds.__init__.logger()``; set handler
1034  on root logger only; moved logger (log) from classes to modules and use
1035  __name__ for logger name. NOTE: This means that to enable SOAP message logging
1036  one should use::
1037
1038    >
1039    > logger('suds.serviceproxy').setLevel(logging.DEBUG)
1040    >
1041
1042  instead of::
1043
1044    >
1045    > logger('serviceproxy').setLevel(logging.DEBUG)
1046    >
1047
1048* Add support for XSD schema ``<attribute/>`` nodes which primarily affects
1049  objects returned by the ``Builder``.
1050* Update ``serviceproxy.py:set_proxies()`` to log ``DEBUG`` instead of ``INFO``.
1051* Enhance schema ``__str__()`` to show both the raw XML and the model (mostly
1052  for debugging).
1053
1054**version 0.2 (2008-04-28)**
1055
1056* Contains the first cut at the rpc/encoded SOAP style.
1057* Replaced ``Property`` class with ``suds.sudsobject.Object``. The ``Property``
1058  class was developed a long time ago with a slightly different purpose. The
1059  ``suds`` ``Object`` is a simpler (more straight forward) approach that
1060  requires less code and works better in the debugger.
1061* The ``Binding`` (and the encoding) is selected on a per-method basis which is
1062  more consistent with the WSDL. In <= 0.1.7, the binding was selected when
1063  the ``ServiceProxy`` was constructed and used for all service methods. The
1064  binding was stored as ``self.binding``. Since the WSDL provides for a separate
1065  binding style and encoding for each operation, ``suds`` needed to be change to
1066  work the same way.
1067* The ``nil_supported`` and ``faults`` flag(s) passed into the service proxy
1068  using \**kwargs. In addition to these flags, a ``http_proxy`` flag has been
1069  added and is passed to the ``urllib2.Request`` object. The following args are
1070  supported:
1071
1072  * ``faults`` = Raise faults raised by server (default:``True``), else return
1073    tuple from service method invocation as (HTTP code, object).
1074  * ``nil_supported`` = The bindings will set the ``xsi:nil="true"`` on nodes
1075    that have a ``value=None`` when this flag is ``True`` (default:``True``).
1076    Otherwise, an empty node ``<x/>`` is sent.
1077  * ``proxy`` = An HTTP proxy to be specified on requests (default:``{}``). The
1078    proxy is defined as ``{protocol:proxy,}``.
1079
1080* HTTP proxy supported (see above).
1081* ``ServiceProxy`` refactored to delegate to a ``SoapClient``. Since the service
1082  proxy exposes web services via ``getattr()``, any attribute (including
1083  methods) provided by the ``ServiceProxy`` class hides WS operations defined by
1084  the WSDL. So, by moving everything to the ``SoapClient``, WSDL operations are
1085  no longer hidden without having to use *hokey* names for attributes and
1086  methods in the service proxy. Instead, the service proxy has ``__client__``
1087  and ``__factory__`` attributes (which really should be at low risk for name
1088  collision). For now the ``get_instance()`` and ``get_enum()`` methods have not
1089  been moved to preserve backward compatibility. Although, the preferred API
1090  change would to replace::
1091
1092    > service = ServiceProxy('myurl')
1093    > person = service.get_instance('person')
1094
1095  with something like::
1096
1097    > service = ServiceProxy('myurl')
1098    > person = service.__factory__.get_instance('person')
1099
1100  After a few releases giving time for users to switch the new API, the
1101  ``get_instance()`` and ``get_enum()`` methods may be removed with a notice in
1102  big letters.
1103* Fixed problem where a WSDL does not define a ``<schema/>`` section and
1104  ``suds`` can not resolve the prefixes for the
1105  ``http://www.w3.org/2001/XMLSchema`` namespace to detect builtin types such as
1106  ``xs:string``.
1107
1108**version 0.1.7 (2008-04-08)**
1109
1110* Added ``Binding.nil_supported`` to control how property values (out) =
1111  ``None`` and empty tag (in) are processed.
1112
1113  * ``service.binding.nil_supported = True`` -- means that property values =
1114    ``None`` are marshalled (out) as ``<x xsi:nil=true/>`` and <x/> is
1115    unmarshalled as ``''`` and ``<x xsi:nil/>`` is unmarshalled as ``None``.
1116  * ``service.binding.nil_supported = False`` -- means that property values =
1117    ``None`` are marshalled (out) as ``<x/>`` *and* ``<x xsi:nil=true/>`` is
1118    unmarshalled as ``None``. The ``xsi:nil`` is really ignored.
1119  * THE DEFAULT IS ``True``.
1120
1121* Sax handler updated to handle ``multiple character()`` callbacks when the sax
1122  parser "chunks" the text. When the ``node.text`` is ``None``, the
1123  ``node.text`` is set to the characters. Else, the characters are appended.
1124  Thanks - 'andrea.spinelli@imteam.it'.
1125* Replaced special ``text`` attribute with ``__text__`` to allow for natural
1126  elements named "text".
1127* Add unicode support by:
1128
1129  * Add ``__unicode__()`` to all classes with ``__str__()``.
1130  * Replace all ``str()`` calls with ``unicode()``.
1131  * ``__str__()`` returns UTF-8 encoded result of ``__unicode__()``.
1132
1133* XML output encoded as UTF-8 which matches the HTTP header and supports
1134  unicode.
1135* ``SchemaCollection`` changed to provide the ``builtin()`` and ``custom()``
1136  methods. To support this, ``findPrefixes()`` was added to the ``Element`` in
1137  ``sax.py``. This is a better approach anyway since the WSDL and schemas may
1138  have many prefixes to 'http://www.w3.org/2001/XMLSchema'. Tested using both
1139  doc/lit and rpc/lit bindings.
1140* Refactored bindings packages from document & rpc to literal & encoded.
1141* Contains the completion of *full* namespace support as follows:
1142
1143  * Namespace prefixes are no longer stripped from attribute values that
1144    reference types defined in the WSDL.
1145  * Schema's imported using ``<import/>`` should properly handle namespace and
1146    prefix mapping and re-mapping as needed.
1147  * All types are resolved, using fully qualified (w/ namespaces) lookups.
1148  * ``Schema.get_type()`` supports paths with and without ns prefixes. When no
1149    prefix is specified the type is matched using the schema's target
1150    namespace.
1151
1152* Property maintains attribute names (keys) in the order added. This also means
1153  that ``get_item()`` and ``get_names()`` return ordered values. Although, I
1154  suspect ordering really needs to be done in the marshaller using the order
1155  specified in the WSDL/schema.
1156* Major refactoring of the ``schema.py``. The primary goals is preparation for
1157  type lookups that are fully qualified by namespace. Once completed, the
1158  prefixes on attribute values will no longer be stripped (purged). Change
1159  summary:
1160
1161  1) ``SchemaProperty`` overlay classes created at ``__init__()`` instead of
1162     on-demand.
1163  2) schema imports performed by new ``Import`` class instead of by ``Schema``.
1164  3) Schema loads top level properties using a factory.
1165  4) All ``SchemaProperty`` /children/ lists are sorted by ``__cmp__()`` in
1166     ``SchemaProperty`` derived classes. This ensures that types with the same
1167     name are resolved in the following order (``Import``, ``Complex``,
1168     ``Simple``, ``Element``).
1169  5) All /children/ ``SchemaProperty`` lists are constructed at ``__init__()``
1170     instead of on-demand.
1171  6) The SchemaGroup created and WSDL class updated. This works better then
1172     having the WSDL aggregate the ``<schema/>`` nodes which severs linkage to
1173     the WSDL parent element that have namespace prefix mapping.
1174  7) ``<import/>`` element handles properly in that both namespace remapping and
1175     prefix re-mapping of the imported schema's ``targetNamespace`` and
1176     associated prefix mapping - is performed. E.g. SCHEMA-A has prefix ``tns``
1177     mapped as ``xmlns:tns=http://nsA`` and has
1178     ``targetNamespace='http://nsA'``. SCHEMA-B is importing schema A and has
1179     prefix ``abc`` mapped as ``xmlns:abc='http://nsABC'``. SCHEMA-B imports A
1180     as ``<import namespace=http://nsB xxx
1181     schemaLocation=http://nsA/schema-a.xsd>``. So, since SCHEMA-B will be
1182     referencing elements of SCHEMA-A with prefix ``abc`` such as
1183     ``abc:something``, SCHEMA-A's ``targetNamespace`` must be updated as
1184     ``http://nsABC`` and all elements with ``type=tns:something`` must be
1185     updated to be ``type=abc:something`` so they can be resolved.
1186
1187* Fixes unmarshalling problem where nodes are added to property as (text,
1188  value). This was introduced when the bindings were refactored.
1189* Fixed various ``Property`` print problems.
1190
1191Notes:
1192
1193  Thanks to Jesper Noehr of Coniuro for the majority of the rpc/literal binding
1194  and for lots of collaboration on ``#suds``.
1195
1196**version 0.1.6 (2008-03-06)**
1197
1198* Provides proper handling of WSDLs that contain schema sections containing XSD
1199  schema imports: ``<import namespace="" schemaLocation=""?>``. The referenced
1200  schemas are imported when a ``schemaLocation`` is specified.
1201* Raises exceptions for HTTP status codes not already handled.
1202
1203**version 0.1.5 (2008-02-21)**
1204
1205* Provides better logging in the modules get logger by hierarchal names.
1206* Refactored as needed to truly support other bindings.
1207* Add ``sax`` module which replaces ``ElementTree``. This is faster, simpler and
1208  handles namespaces (prefixes) properly.
1209
1210**version 0.1.4 (2007-12-21)**
1211
1212* Provides for service method parameters to be ``None``.
1213* Add proper handling of method params that are lists of property objects.
1214
1215**version 0.1.3 (2007-12-19)**
1216
1217* Fixes problem where nodes marked as a collection (``maxOccurs`` > 1) not
1218  creating property objects with ``value=[]`` when mapped-in with < 2 values by
1219  the ``DocumentReader``. Caused by missing the
1220  ``bindings.Document.ReplyHint.stripns()` (which uses
1221  ``DocumentReader.stripns()``) conversion to ``DocumentReader.stripn()`` now
1222  returning a tuple ``(ns, tag)`` as of 0.1.2.
1223
1224**version 0.1.2 (2007-12-18)**
1225
1226* This release contains an update to property adds:
1227
1228  - ``Metadata`` support.
1229  - Overrides: ``__getitem__``, ``__setitem__``, ``__contains__``.
1230  - Changes property(reader|writer) to use the ``property.metadata`` to handle
1231    namespaces for XML documents.
1232  - Fixes ``setup.py`` requires.
1233
1234**version 0.1.1 (2007-12-17)**
1235
1236* This release marks the first release in fedora hosted.
1237