Welcome to PyXB
PyXB (“pixbee”) is a pure Python package that generates Python source code for classes that correspond to data structures defined by XMLSchema. In concept it is similar to JAXB for Java and CodeSynthesis XSD for C++.
Defects against current beta release (1.1.3)
| Ticket | Summary | Created | Modified | Status | Resolution | Milestone | Description |
|---|---|---|---|---|---|---|---|
| #109 | need post-construction hook | 8 months | 8 months | new | -- | PyXB 1.1.4 | postFactory_vx_ does not get attributes, let alone element content, when using saxer input. Need another callback point for post-construction, possible for other mutating operations like setting attributes or adding content. |
| #112 | pyxb greed algorithm fails on certain cases | 6 months | 6 months | new | -- | PyXB 2.0.0 | The problem discussed in http://lists.w3.org/Archives/Public/xmlschema-dev/2010Aug/0016.html affects PyXB and has now been observed in the wild as raised in https://sourceforge.net/projects/pyxb/forums/forum/956708/topic/4850223 |
| #130 | Improved "pypi/setuptools" support | 2 months | 2 months | accepted | -- | PyXB 1.1.4 | PyPI has the "full" "pyxb" bundle uploaded (this is good, as the default could well be the "full" package). However, trying to download from "PyPI" (via "easy_install") causes the "pyXB-wssplat-1.1.3.tar.gz" to be downloaded from "sourceforge". The reason is probably the "download url" specification in the metadata pointing to "sourceforge". "easy_install" fails after the download, complaining that is does not find a "setup script" in the download. For "PyPI" management, I recommend to split the various bundles into separate packages with the core as a common dependency and each "bundle" as a separate package (depending on other bundles or the core). This would make is easy to fetch the correct bundle via "PyPI". A good PyPI/setuptools integration is especially helpful when "pyXB" is integrated into a larger context with tight "PyPI" integration. I, for example, use it together with Zope/Plone which uses "zc.buildout" to "describe" a configuration. "zc.buildout" makes it very easy to integrate packages with good "PyPI" integration; on the other hand, packages with deficiencies with respect to "PyPI" integration and "setuptools" support can cause quite some headaches. |
| #133 | problem with pyxbgen when the xsd has a <xsd:choice> entry | 3 weeks | 3 weeks | new | -- | PyXB 1.1.4 | I've modified the po.xsd and po.xml to include a choice under the item entry <xsd:choice> <xsd:element name="USPrice" type="xsd:decimal" minOccurs="0"/> <xsd:element ref="po:comment" minOccurs="0"/> </xsd:choice> if and when you have an item with only a USPrice and another item with only a comment, you get the following error pydev debugger: starting Traceback (most recent call last): File "C:\downloads\eclipse_indigo_3_7\eclipse\plugins\org.python.pydev.debug_2.4.0.2012020116\pysrc\pydevd.py", line 1307, in <module> debugger.run(setup['file'], None, None) File "C:\downloads\eclipse_indigo_3_7\eclipse\plugins\org.python.pydev.debug_2.4.0.2012020116\pysrc\pydevd.py", line 1060, in run pydev_imports.execfile(file, globals, locals) #execute the script File "C:\Users\hbl4152\workspace\python1\src\pocSample.py", line 6, in <module> pobObject = poc.CreateFromDocument(xml, location_base='poc.xml') File "C:\Users\hbl4152\workspace\python1\src\poc.py", line 32, in CreateFromDocument saxer.parse(StringIO.StringIO(xml_text)) File "C:\Python27\lib\xml\sax\expatreader.py", line 107, in parse xmlreader.IncrementalParser.parse(self, source) File "C:\Python27\lib\xml\sax\xmlreader.py", line 123, in parse self.feed(buffer) File "C:\Python27\lib\xml\sax\expatreader.py", line 207, in feed self._parser.Parse(data, isFinal) File "C:\Python27\lib\xml\sax\expatreader.py", line 349, in end_element_ns self._cont_handler.endElementNS(pair, None) File "C:\Python27\lib\site-packages\pyxb\binding\saxer.py", line 374, in endElementNS binding_object = this_state.endBindingElement() File "C:\Python27\lib\site-packages\pyxb\binding\saxer.py", line 232, in endBindingElement self.__bindingInstance.validateBinding() File "C:\Python27\lib\site-packages\pyxb\binding\basis.py", line 422, in validateBinding self._validateBinding_vx() File "C:\Python27\lib\site-packages\pyxb\binding\basis.py", line 1836, in _validateBinding_vx raise pyxb.BindingValidationError('Error matching content to binding model: %s' % (e,)) pyxb.exceptions_.BindingValidationError: Error matching content to binding model: Ungenerated symbols: {<pyxb.binding.content.ElementUse object at 0x02D54E10>: [u'Want this for the holidays!']} Poc.xsd is the modified xsd Poc.xml is the example xml file The error is seen when i run pocsample.py |
| #135 | opengis/scripts/genbind removes all user’s files | 2 weeks | 2 weeks | assigned | -- | PyXB 1.1.4 | The script to generate opengis bindings is very dangerous if used carelessly. Line 2 tests the variable `PYXB_ROOT` for emptiness and assigns to it a hardcoded value referring to `/home/pab`. Line 4 then depends on a file `${PYXB_ROOT}/maintainer/bundlesupport.sh` to define other useful variables, notably `SCHEMA_DIR` and `RAW_DIR`. Lines 9–13 are supposed to change to `${SCHEMA_DIR}` and delete the remaining files before regenerating them. However, if `/home/pab` is not there (as would be the case on the machine of an unsuspecting user who decided to test the development version), or is inaccessible, or the expected files are missing, `${SCHEMA_DIR}` ends up expanding to an empty string. Line 10 changes to the user’s home directory and line 12 proceeds to remove any and all files and subdirectories it can reach. I lost my collection of helper scripts in `~/bin`, my (not very important) `~/Documents` and a good chunk of `~/Downloads` before I realized something very wrong is going on and hit !^C. As a fix, I strongly suggest including `set -e` as the second line of each shell script (the first being the shebang line, `#!/bin/sh`) and structuring the scripts so that expected errors are suitably suppressed with `||:`. |
| #131 | UTF-8 Characters don't store correctly | 2 months | 2 months | closed | non-discrepant | PyXB 1.1.4 | The pyxb API doesn't cope correctly with UTF-8 encoded characters such as 'Sign of Leser-Tr\xc3\xa9lat'. Assigning this data to an element, an attribute or using it in a constructor all result in the same error. We can proposed a fix that takes care of the first case: instance = bar() instance.e = 'Sign of Leser-Tr\xc3\xa9lat' But have no solutions to the other two situations. (The proposed fix is in basis.py at line ~286 # if str == value_type: # value = unicode(value, 'utf-8') <----- # value_type = unicode A test case has been attached. |
| #117 | attributes are validated regardless of pyxb.RequireValidWhenParsing | 4 months | 3 months | closed | worksforme | PyXB 1.1.4 | |
| #113 | Timezone support for xsd:date types | 6 months | 6 months | closed | duplicate | PyXB 1.1.4 | I'm using PyXB and JAXB for two parts of my system to communicate with eachother. I'm having an issue with xsd:date's. When I do a setXXX() in Python / PyXB on a xsd:date, PyXB generates something like: <availableFrom>2011-11-30</availableFrom> Interestingly enough, when I use JAXB to unmarshal then marshal without doing any setXXX()'s on that field between, JAXB generates: <availableFrom>2011-11-30</availableFrom> which Python / PyXB is quite happy with. However, for a field which I set from Java then marshal with JAXB it will do: <dateCreated>2011-11-30+11:00</dateCreated> And Python / PyXB doesn't like that: BadTypeValueError: Value "2011-11-30+11:00" not in {http://www.w3.org/2001/XMLSchema}date lexical space I've been reading the W3C spec (http://www.w3.org/TR/xmlschema-2/#date-lexical-representation) and I think what JAXB is generating is ok. "Timezone lexical representations, as explained for dateTime, can range from '+14:00' to '-14:00'" suggests that to me. I see the implementation of dateTime in PyXB supports timezones (http://pyxb.sourceforge.net/api/pyxb.binding.datatypes.dateTime-class.html). But I can't see anything in the implementatino of date (http://pyxb.sourceforge.net/api/pyxb.binding.datatypes.date-class.html) that suggests it supports timezones. It would be good if PyXB supported reading timezones in dates. Even if it simply ignored them on input, then it would at least be interoperable then. |
| #125 | Bug in pyxb documentation | 3 months | 3 months | closed | wontfix | PyXB 1.1.4 | [http://pyxb.sourceforge.net/api/pyxb.binding.content.ElementUse-class.html#isPlural] True '''iff''' the content model indicates |
| #118 | Particle state derived from element rather than from "xsi:type"? | 4 months | 4 months | closed | invalid | PyXB 1.1.4 | "!CreateFromDocument" fails for the following XML document with an {{{ ExtraContentError: {http://docs.oasis-open.org/wsfed/federation/200706}ApplicationServiceType: Extra content Element {http://docs.oasis-open.org/wsfed/federation/200706}ClaimTypesRequested starting with <fed.raw.federation.ClaimTypesRequestedType object at 0xb696976c> }}} {{{ <RoleDescriptor xsi:type="fed:ApplicationServiceType" xmlns:fed="http://docs.oasis-open.org/wsfed/federation/200706" protocolSupportEnumeration="http://docs.oasis-open.org/wsfed/federation/200706" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <fed:ClaimTypesRequested> <auth:ClaimType Uri="urn:mace:dir:attribute-def:eduPersonEntitlement" Optional="false" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> </fed:ClaimTypesRequested> </RoleDescriptor> }}} My analysis seems to indicate that the particle model used for "fed:ApplicationServiceType" is that of "Roledescriptor" (from the SAML2 metadata schema) rather than the of "ApplicationServiceType" itself. The schema corresponding to "fed" is at "http://docs.oasis-open.org/wsfed/federation/v1.2/os/ws-federation.xsd". To let "pyxbgen" succeed, I had to fix the "schemaLocation" for "http://docs.oasis-open.org/wsfed/authorization/200706". The correct location is "http://docs.oasis-open.org/wsfed/authorization/v1.2/authorization.xsd". |
| #108 | Pattern restriction does not work correctly with Unicode. | 8 months | 8 months | closed | fixed | PyXB 1.1.4 | PyXB raises {{{BadTypeValueError}}} on some Unicode strings that should be valid according to the regular expression. To reproduce, create {{{TestPatternRestriction.xsd}}} schema: {{{ <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:simpleType name="TestPatternRestriction"> <xs:restriction base="xs:string"> <xs:pattern value=".*"/> </xs:restriction> </xs:simpleType> <xs:element name="test" type="TestPatternRestriction" /> </xs:schema> }}} Create binding: {{{ pyxbgen -u 'TestPatternRestriction.xsd' -m 'TestPatternRestriction' }}} Create script: {{{ #!/usr/bin/env python # -*- coding: utf-8 -*- import TestPatternRestriction as t xml=u" |
| #110 | List element constrained with maxOccurs = 1 does not generate correctly when validation disabled | 8 months | 8 months | closed | fixed | PyXB 1.1.4 | Generate from attached schema as follows: {{{ pyxbgen --schema-location=test.xsd --module=T }}} Generate and output an element with: {{{ import pyxb import T s = T.tSingle() s.li = T.intList([1,2,3]) pyxb.RequireValidWhenGenerating(False) print s.toxml() }}} and the output is: {{{ <ns1:tSingle xmlns:ns1="http://www.example.com/"> <li>1</li> <li>2</li> <li>3</li> </ns1:tSingle> }}} With validation enabled, the output is correct: {{{ <?xml version="1.0"?> <ns1:tSingle xmlns:ns1="http://www.example.com/"> <li>1 2 3</li> </ns1:tSingle> }}} I experimented a bit with maxOccurs > 1, and did not manage to get this behaviour, so it seems to be specific to the case where maxOccurs=1 Speculation: is there some relationship here with the old tickets [http://sourceforge.net/apps/trac/pyxb/ticket/32 32] and [http://sourceforge.net/apps/trac/pyxb/ticket/35 35]? |
| #111 | Make simpleType CF_Enumeration iterable | 6 months | 3 months | closed | fixed | PyXB 1.1.4 | JAXB has an incredibly useful construct which allows us to take: <xsd:simpleType name="customerPaymentMethod"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Credit Card"/> <xsd:enumeration value="Direct Debit"/> <xsd:enumeration value="Invoice Only"/> <xsd:enumeration value="Deferred Payment"/> </xsd:restriction> </xsd:simpleType> and iterate over the values: for (CustomerPaymentMethod pm: CustomerPaymentMethod.values()) { [...] } Both PyXB and JAXB allow public access to the constants (CustomerPaymentMethod.CREDIT_CARD / customerPaymentMethod.Credit_Card), which is great. If you could make the list of those iterable and part of the public interface then that would be great. |
| #114 | .toxml() fails when <any namespace="##other" processContents="lax" maxOccurs="unbounded"/> is used | 5 months | 5 months | closed | fixed | PyXB 1.1.4 | A schema defines an extension point with " <any namespace="##other" processContents="lax" maxOccurs="unbounded"/>". I create a document containing such an extension with CreateFromDocument(xml). This document cannot be toxml()'ed. The toxml() call fails with AttributeError: 'Document' object has no attribute 'removeChild' In reality this is happening with the SAML2 Protocol schema but I have created a simplified example to easily reproduce the problem. The example contains 5 files: * a.py: generated by 'pyxbgen namespace_other_issue.xsd -m a' * namespace_other_issue.xml: xml file using the wildcard * namespace_other_issue.xsd: schema defining the wildcard * namespace_other_issue_support.xsd: not really needed but makes xml schema valid * test.py: crashes when executed |
| #115 | Problem with timedelta to duration conversion | 4 months | 4 months | closed | fixed | PyXB 1.1.4 | When using a timedelta with less than a minute: {{{ d = duration( timedelta(hours=0, seconds = 3, minutes = 0) ) print d }}} Displays: >> 3:00:03 Changing L.252 of pyxb.binding.datatypes.duration from: {{{ if (0 != (rem_time % 1)): data['microseconds'] = types.IntType(1000000 * (rem_time % 1)) rem_time = rem_time // 1 if 60 <= rem_time: data['seconds'] = rem_time % 60 rem_time = data['minutes'] + (rem_time // 60) if 60 <= rem_time: data['minutes'] = rem_time % 60 rem_time = data['hours'] + (rem_time // 60) }}} To: {{{ if (0 != (rem_time % 1)): data['microseconds'] = types.IntType(1000000 * (rem_time % 1)) rem_time = rem_time // 1 data['seconds'] = rem_time % 60 rem_time = data['minutes'] + (rem_time // 60) data['minutes'] = rem_time % 60 rem_time = data['hours'] + (rem_time // 60) data['hours'] = rem_time % 24 }}} Seems to solve the problem. |
| #116 | Simple-typed elements accept any attributes | 4 months | 4 months | closed | fixed | PyXB 1.1.4 | When an element is defined in the schema as having simple type, the resulting binding class accepts attributes on that element. == To reproduce == === root.xsd === {{{ <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="root" type="xsd:string"/> </xsd:schema> }}} {{{ $ pyxbgen --version pyxbgen from PyXB 1.1.3 $ pyxbgen -u root.xsd -m root urn:uuid:13b5432e-436d-11e1-bbae-20cf303045b5 Python for AbsentNamespace0 requires 1 modules Saved binding source to ./root.py }}} === test.xml === {{{ <?xml version="1.0" encoding="utf-8"?> <root foo='boo'/> }}} === test.py === {{{ import root root.CreateFromDocument(file('test.xml').read()) }}} == Expected behavior == Should throw an exception to the effect that `foo` is not an allowed attribute for `root`. == Observed behavior == No exception is thrown. I have not found any way to access the attribute value. == Other attempts at syntax == This doesn’t work either: {{{ <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="root"> <xsd:simpleType> <xsd:restriction base="xsd:string"/> </xsd:simpleType> </xsd:element> </xsd:schema> }}} Although this does: {{{ <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="root"> <xsd:complexType> <xsd:simpleContent> <xsd:restriction base="xsd:string"/> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:schema> }}} {{{ $ python test.py … pyxb.exceptions_.UnrecognizedAttributeError: Attribute foo is not permitted in type None }}} |
| #119 | pyxb.exceptions_.SchemaValidationError: QName AuthenticationRequest with absent default namespace cannot be resolved | 4 months | 4 months | closed | fixed | PyXB 1.1.4 | Unable to round trip a document generated with pyxb >>> ar = ocibase.BroadsoftDocument(protocol="OCI", sessionId='d3cafbad', command=[bwas.AuthenticationRequest(userId='someuserID'),]) >>> ar.toxml() u'<?xml version="1.0" ?><ns1:BroadsoftDocument protocol="OCI" xmlns:ns1="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><sessionId>d3cafbad</sessionId><command xsi:type="AuthenticationRequest"><userId>someuserID</userId></command></ns1:BroadsoftDocument>' >>> >>> >>> bd = ocibase.CreateFromDocument(ar.toxml()) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "ocibase.py", line 32, in CreateFromDocument saxer.parse(StringIO.StringIO(xml_text)) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/sax/expatreader.py", line 107, in parse xmlreader.IncrementalParser.parse(self, source) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/sax/expatreader.py", line 207, in feed self._parser.Parse(data, isFinal) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/sax/expatreader.py", line 338, in start_element_ns AttributesNSImpl(newattrs, qnames)) File "/Library/Python/2.6/site-packages/PyXB-1.1.3-py2.6.egg/pyxb/binding/saxer.py", line 329, in startElementNS (did_replace, type_class) = XSI._InterpretTypeAttribute(attrs.getValue(self.__XSITypeTuple), ns_ctx, None, type_class) File "/Library/Python/2.6/site-packages/PyXB-1.1.3-py2.6.egg/pyxb/namespace/builtin.py", line 103, in _InterpretTypeAttribute type_en = ns_ctx.interpretQName(type_name, namespace=fallback_namespace) File "/Library/Python/2.6/site-packages/PyXB-1.1.3-py2.6.egg/pyxb/namespace/resolution.py", line 611, in interpretQName raise pyxb.SchemaValidationError('QName %s with absent default namespace cannot be resolved' % (local_name,)) pyxb.exceptions_.SchemaValidationError: QName AuthenticationRequest with absent default namespace cannot be resolved |
| #120 | module CreateFromDocument ignores default_namespace | 4 months | 4 months | closed | fixed | PyXB 1.1.4 | The module function CreateFromDocument does not use the default_namespace keyword to set the fallback namespace as was done with the old CreateFromDOM function. Consequently there is no way to override the use of the module's namespace as the default. (Which is probably fair, but then the option shouldn't even appear). |
| #121 | PyXB elementary data types do not play well with "copy/pickling/..." | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | As least some elementary data types cannot be copied/pickled. {{{ >>> from pyxb.binding.datatypes import dateTime >>> from datetime import datetime >>> from copy import copy >>> pdt=dateTime(datetime.utcnow()) >>> pdt dateTime(2012, 2, 16, 9, 58, 2, 659166) >>> copy(pdt) Traceback (most recent call last): ... File ".../Python-2.4/lib/python2.4/site-packages/pyxb/binding/datatypes.py", line 426, in __new__ ctor_kw.update(cls._LexicalToKeywords(value, cls.__Lexical_re)) File ".../Python-2.4/lib/python2.4/site-packages/pyxb/binding/datatypes.py", line 328, in _LexicalToKeywords raise BadTypeValueError('Value "%s" not in %s lexical space' % (text, cls._ExpandedName)) BadTypeValueError: Value "� : �" not in {http://www.w3.org/2001/XMLSchema}dateTime lexical space }}} |
| #122 | PxXB should allow to assign `None` to optional elements and attributes | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | Optional attributes return `None` on access to indicate that the attribute is missing. However, when one tries to assign `None` to an optional attribute, this can result in: {{{ Module pyxb.binding.basis, line 62, in __setattr__ Module pyxb.binding.content, line 410, in set AssertionError }}} This can make assigning attributes quite complicated, especially if one creates one binding object from another one. Instead of "dest.attr = "src.attr" one must use code "if src.attr is not None: dest.attr = src.attr". |
| #123 | "unbound wildcard element": "toxml()" fails | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | If "!CreateFromDocument" creates an "unbound wildcard element", a call of "toxml" of the containing binding object fails as seen by the following example: {{{ >>> doc="""<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#_53cdd0e9-bd51-4a49-8519-f711860c5499"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces PrefixList="#default samlp saml ds xs xsi" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>4OXjC8LT68JYyCVbtKJims+qe4U=</DigestValue></Reference></SignedInfo><SignatureValue>vG+UCB9C3T8k91yDP2zCvKNHJbp+P1aik9xckByr43y5V5BZktzOF9h4FC8C3mYklg/jTtzWiN4TvAd+wrznpOYDBv3/AseHM+LWG2Q/0t1o8owiliR1z8BqydQUXPuwTSTrPAzEmYFKnq+OQvtq8GiebfYHD2nTKc4M0B8//TuQ295WLwX06RXiuNxGN9C1YvMOL/hHKybPeiVbT7I0wnUMDjf4H/K+4hnCZY2wT+nOBf0fRVkFud/0/lIxCu8T3SMQeSzMRXcdK0FiElFNzh24DJerVwIIZTFXl5Qg42S2Is6kFs1KR0CYDXR/ZVNF5CdVY/xe62t8GUYbTHAoBw==</SignatureValue></Signature>""" >>> >>> from pyxb.bundles.wssplat.ds import CreateFromDocument >>> >>> b=CreateFromDocument(doc) NOTE: Created unbound wildcard element from value in InclusiveNamespaces >>> b.toxml() Traceback (most recent call last): ... Module "pyxb.binding.basis.py", line 2186, in _toDOM_csc element.appendChild(v) Module "xml.dom.minidom.py", line 125, in appendChild node.parentNode.removeChild(node) AttributeError: 'Document' object has no attribute 'removeChild' }}} |
| #124 | Bug in pixb.binding.generate.Generator.__init__ | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | See lines 1983 and 1984: {{{ self.__writeForCustomization = kw.get('write_for_customization', False) self.__writeForCustomization = kw.get('allow_builtin_generation', False) }}} As you may notice, the second line (1984) is buggy: should be {{{ self.__allowBuiltinGeneration = kw.get('allow_builtin_generation', False) }}} Thank you for future fix. |
| #126 | attributes are not validated regardless of pyxb.RequireValidWhenGenerating | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | In particular, the absence of a required attribute is not diagnosed. |
| #127 | dateTime objects must be timezone-aware | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | Per http://www.w3.org/TR/xmlschema-2/#dateTime, all XML timezoned values are in UTC. To prevent confusion with Python, which has a concept of "naive" date/time values for which zone information is unavailable, PyXB should enforce the presence of a tzinfo field with zero minute offset in all timezoned instances. |
| #128 | most lexical representations for reduced dates wrong | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | PyXB appears to use "10-27" as a lexical representation for gMonthDay, but "--10-27" is required. |
| #129 | incorrect timezone adjustment from python values | 3 months | 3 months | closed | fixed | PyXB 1.1.4 | Where a base python datetime instance is used to initialize a PyXB dateTime instance, the timezone adjustment is in the wrong direction. |
| #132 | Crash in PyXB when attempting to retrieve Unicode value from exception | 4 weeks | 4 weeks | closed | fixed | PyXB 1.1.4 | pyxb/exceptions_.py contains the following function:: {{{ #!python def __str__ (self): """Override to use the system-provided message, if available.""" if self.__message is not None: return '%s: %s' % (type(self).__name__, self.__message) return exceptions.Exception.__str__(self) }}} After calling CreateFromDocument() with an invalid XML document that contains Unicode, PyXB may raise an exception that contains Unicode, such as: {{{ #!python BadTypeValueError(u'pattern violation for <unicode characters here> in MyType',) }}} When attempting to retrieve the value of the exception, "exceptions.Exception.__str__(self)" throws an exception: {{{ #!python File "/usr/local/lib/python2.6/dist-packages/pyxb/exceptions_.py" in __str__ 48. return exceptions.Exception.__str__(self) Exception Type: UnicodeEncodeError Exception Value: 'ascii' codec can't encode character u'\xe9' in position 81: ordinal not in range(128) }}} I have not been able to find a workaround that would enable me to get even an ASCII version of the exception value. (I removed the actual Unicode characters because Trac can't handle them.) |
| #134 | Name, NMTOKEN, NCName: wrong validation regexes | 3 weeks | 2 weeks | closed | fixed | PyXB 1.1.4 | The grammar rules for `Name` and `Nmtoken` in the [http://www.w3.org/TR/2000/WD-xml-2e-20000814#dt-name XML spec], and `NCName` in the [http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName XML Namespaces spec], are defined in terms of `Letter`, which is defined as a [http://www.w3.org/TR/2000/WD-xml-2e-20000814#NT-Letter union] of quite a bunch of character ranges from all over the Unicode repertoire. PyXB, on the other hand, validates these types against substantially simpler regexes: {{{ $ grep -n 'A-Za-z' datatypes.py 920: _ValidRE = re.compile('^[-_.:A-Za-z0-9]*$') 932: _ValidRE = re.compile('^[A-Za-z_:][-_.:A-Za-z0-9]*$') 940: _ValidRE = re.compile('^[A-Za-z_][-_.A-Za-z0-9]*$') }}} This causes PyXB-generated bindings to reject technically well-formed and valid documents that contain IDs in languages other than English. |
| #136 | preserve timezone in processing | 8 days | 8 days | closed | fixed | PyXB 1.1.4 | Although XML schema (http://www.w3.org/TR/xmlschema-2/#dateTime) clearly indicates that all timezoned times are to be in UTC, there are applications where loss of timezone can be an issue. Provide an option to preserve the timezone information rather than canonicalizing it on input. |
Defects (to be) fixed in upcoming beta release (1.1.4)
Defects fixed in current beta release (1.1.3)
For a complete list of local wiki pages, see TitleIndex. Karikatur Online Jasa Karikatur Berita Terkini Jasa SEO Murah Kata Mutiara Hostgator Coupon Zakat Cheater SOBAT Kumpulan Lagu Terbaru Andre Cheater Pekalongan Contoh Drama Cheat PB Terbaru Lumut Bulan Ramadhan Kanker Tulang Struktur Susunan Tulang AWsurveys Kata Bijak Terbaru Google Panda Skripsi Akuntansi Surat Pengunduran Diri Skripsi Pendidikan Lengkap Google Translate Anatomi Muskuloskeletal Blog AutoApprove Cara Download Video Youtube gemscool SPT Tahunan Chinese New Year Harga BlackBerry Model Jilbab Terbaru Shio Kambing Farah Queen Pengertian Reksadana Shio Macan Azab Kubur Shio Monyet Shio Kelinci Cerita Dewasa Fenomena Nama Perawat Shio Tikus Kaskus Atlantica DB Google Chrome Cheat Avatar Hal Unik Video Bokep Saints Row 2 Cheat Smadav Gadget Judul Skripsi Bahasa Inggris Cheat Plants vs Zombie Facebook Timeline Tips Optimasi SEO 4shared Judul Skripsi Keperawatan Kanker Payudara Sistem Informasi Manajemen Cheat Ninja Saga Contoh Proposal Dana Kata Mutiara Cinta Apa Kabar Dunia Harga Nokia Terbaru Judul Skripsi Manajemen Diet Golongan Darah Cara Menghilangkan Jerawat Judul Skripsi Matematika Contoh Proposal PTK Foto Hot Arti Nama Bayi FB Potongan Rambut Angry Birds Fakta Youtube Kata Lucu