Permalink
Browse files

build: update information, fix markup

Fix up markup for numerous files in the top-level of the project and
prepare some things ready for the upcoming release.

License: BSD
  • Loading branch information...
pope1ni committed Jan 29, 2016
1 parent caa1f58 commit 9b80d536346acb18acc347ecd069a463918ec8b3
Showing with 308 additions and 283 deletions.
  1. +26 −0 AUTHORS.md
  2. +0 −12 AUTHORS.txt
  3. +114 −0 CHANGES.md
  4. +0 −107 CHANGES.txt
  5. 0 CONTRIBUTING.txt → CONTRIBUTING.md
  6. +1 −1 LICENSE.txt
  7. +99 −0 LIMITATIONS.md
  8. +0 −102 LIMITATIONS.txt
  9. +19 −21 README.md
  10. +9 −9 TODO.txt → TODO.md
  11. +36 −22 setup.py
  12. +1 −1 soapfish/__init__.py
  13. +1 −1 soapfish/xsd_types.py
  14. +2 −7 tox.ini
View
@@ -0,0 +1,26 @@
Authors
=======
Soapfish was originally written by Damian Powązka while working at Flight Data
Services. At that time it was called Soapbox and from February 2012 was
maintained by Flight Data Services. The project was forked in November 2013 by
Felix Schwarz (based on the last BSD-licensed commit), after which a large
number of new features were added by Thomas Recouvreux and Xavier Fernandez
from Polyconseil between February and June 2014. Iuri de Silvio from Pricez
added some features and fixed numerous bugs during 2015. In early 2016, Flight
Data Services retired the unmaintained Soapbox project in favour of Soapfish.
**Original Author:**
- Damian Powązka (Flight Data Services)
**Maintainers:**
- Felix Schwarz (sponsored by Rechenzentrum für Berliner Apotheken Stein & Reichwald GmbH)
- Nick Pope (Flight Data Services)
**Major Contributors:**
- Iuri de Silvio (Pricez)
- Thomas Recouvreux (Polyconseil)
- Xavier Fernandez (Polyconseil)
View

This file was deleted.

Oops, something went wrong.
View
@@ -0,0 +1,114 @@
Changes
=======
0.6.0 (2016-??-??)
------------------
Project has been renamed to `soapfish` to distinguish it from the legacy
`soapbox` project and allow for publishing the project on PyPI. Note that the
rename effectively makes it backwards incompatible with previous releases due
to API breakage.
Due to lack of time to maintain the original `soapbox` project, `soapbox` been
retired by Flight Data Services who now contribute to and recommend the use of
the `soapfish` fork.
- **Security:**
- Fixed potential security issue - pattern restrictions were not applied correctly
- **Features:**
- Add support for xsd.date (date range currently limited by datetime.date)
- Add support relative schema paths (#49)
- Add support to string restrictions length, minLength, maxLength, whiteSpace (#67)
- Add support for choice indicator in ComplexTypes (#39)
- Fixes validation of matching XML documents - previously sequences were always assumed - and code generation from WSDL/XSD.
- _Patch contributed by Martin Mrose, tests written by Felix Schwarz_
- Implemented a dispatcher for Flask (#53)
- Implement service.route function to avoid changes to generated code (#68)
- **Bug Fixes:**
- Make xsd.Decimal field accept Python Decimal (#52)
- Schema validation now also uses imported schemas correctly
- Various fixes for `wsdl2py` and `xsd2py` when using Python 3
- Fix exception in `SOAPDispatcher` when a handler does not return a `SOAPResponse`
- Fix bad WSDL generation due to unresolved type references
- Correctly apply pattern restrictions for simple types
- Pattern restriction was not correctly serialized when generating schemas
- Omit `minOccurs=1` and `maxOccurs=1` in `xsd2py` as these are the default.
(The latter produces invalid code because `xsd.Element` doesn't support it.)
- Restored ability to validate parsed XML using a soapfish schema in `ComplexType`
- **Miscellaneous:**
- Renamed `SoapboxRequest` and `SoapboxResponse` to `SOAPRequest` and `SOAPResponse` respectively.
0.5.1 (2014-06-12)
------------------
- **Miscellaneous:**
- Downgrade log level on soap action discovery.
0.5.0 (2014-06-12)
------------------
- **Miscellaneous:**
- Make elements inherit from schema namespace
- Better logging in soap/stub
- soap12: Quotes around action in HTTP header
0.4.0 (2014-05-06)
------------------
Project forked by Felix Schwarz as `soapbox-bsd` due to licensing incompatibilities.
Flight Data Services started using the GPL-incompatible OSL for the `soapbox`
project. This fork is based on the last `soapbox` commit still using the
original 3-clause BSD license (7d3516fe). Later on the fork received
significant contributions from Thomas Recouvreux and Xavier Fernandez
(Polyconseil).
- **Features:**
- Added support for SOAP 1.2 and WSDL 1.2
- Added support for WS-Addressing
- Added support for fault actors (Damian Powązka)
- Added support for Django >= 1.4
- Added compatibility with Python 3
- Added framework-agnostic SOAP dispatcher to support virtually any web framework.
- **Bug Fixes:**
- Preserve `elementFormDefault` attribute in Schema
- Many bug fixes for code generation and XML rendering
- **Miscellaneous:**
- Ability to use custom SOAP headers
- Middleware stack to hook into SOAP request processing
- Better handling of invalid SOAP requests, e.g. missing bodies, invalid actions.
0.3.2 (2012-03-09)
------------------
- **Miscellaneous:**
- Initial support for variable URL scheme and host
- Test suite executes
0.3.1 (2012-03-08)
------------------
- **Miscellaneous:**
- SSL certificate verification
0.3.0 (2012-03-02)
------------------
- **Features:**
- Add option to disable schema validation on parsing:
- Set `xsd.VALIDATE_ON_PARSE` to `False`.
- Added some initial logging support:
- Request logging available at when level set to DEBUG.
- **Bug Fixes:**
- Allow unicode as a valid type for strings.
- Check for Python keywords and prefix with underscore.
- **Miscellaneous:**
- Python code templates now loaded from external files.
- Generated code is now much cleaner.
- Generated code is now timestamped.
- Code tidying as reported by pyflakes and pep8.
- Fixed a number of typographical errors.
- Various name improvements to functions.
- Updated .hgignore
- **Known Issues:**
- Generated schema classes can be circular referencing.
View

This file was deleted.

Oops, something went wrong.
File renamed without changes.
View
@@ -1,4 +1,4 @@
Copyright (c) 2011-2014, soapfish contributors
Copyright (c) 2011-2016, soapfish contributors
All rights reserved.
For the exact contribution history, see the git revision log.
View
@@ -0,0 +1,99 @@
Limitations
===========
xsd.Ref() is not serialized
---------------------------
XML schema references are not serialized. Below is an example of code that does not generate a valid schema:
```python
from lxml import etree
from soapfish import py2xsd, xsd
class Person(xsd.Group):
name = xsd.Element(xsd.String)
surname = xsd.Element(xsd.String)
class Job(xsd.ComplexType):
title = xsd.Element(xsd.String)
person = xsd.Ref(Person)
schema = xsd.Schema(
imports=[],
targetNamespace='http://example.com/ws/spec',
elementFormDefault='qualified',
simpleTypes=[],
attributeGroups=[],
groups=[],
complexTypes=[],
elements={'job': xsd.Element(Job())},
)
print(etree.tostring(py2xsd.generate_xsd(schema), pretty_print=True))
```
Incorrect XML Schema:
```xml
<xsd:schema xmlns:sns="http://example.com/ws/spec" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ws/spec" elementFormDefault="qualified">
<xsd:element name="job">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="title" type="xsd:string" minOccurs="1" nillable="false"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
```
Expected XML Schema:
```xml
<xsd:schema xmlns:site="http://example.com/ws/spec" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ws/spec" elementFormDefault="qualified">
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xs:string"/>
<xsd:element name="surname" type="xs:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="job">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="title" type="xs:string" minOccurs="1" nillable="false"/>
<xsd:element ref="site:person"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
```
Valid XML for Expected Schema:
```xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<job xmlns="http://example.com/ws/spec">
<title>Software Developer</title>
<person>
<name>Joe</name>
<surname>Bloggs</surname>
</person>
</job>
```
XSDDate does not support full date range
----------------------------------------
The XML schema specification does not limit the range of dates representable by
`xs:date`. For example, the values `-2000-03-10` and `20000-04-20` are valid
as far `xs:date` is concerned. Currently `soapfish.xsd_types.XSDDate` is
subclassing Python's standard library `datetime.date` which has a much more
narrow definition.
Very likely the best solution is to back our implementation with an alternative
date implementation such as [`mxDateTime`](https://pypi.python.org/pypi/egenix-mx-base/)
which seems to represent all possible values from `xs:date`. As `mxDateTime`
currently (2014-11-13) uses compiled components (making it harder to install in
some environments) and does not support Python 3 this should likely be an
optional dependency (if at all).
Oops, something went wrong.

0 comments on commit 9b80d53

Please sign in to comment.