Andrii,

After reading more at https://www.w3.org/TR/xmlschema-0/, it looks to
me like we should make analogous changes for `xs:gMonth`, `xs:gDay`,
and `xs:gMonthDay`.

I'll fix that soon.

Dave

On Mon, May 20, 2019 at 04:41:02PM -0700, Dave Kuhlman wrote:
> Andrii,
> 
> The tests for `xs:gYear` and `xs:gYearMonth` now seem to work as we
> want them to.
> 
> I've implemented them for `minInclusive`, `maxInclusive`,
> `minExclusive`, and `maxExclusive`.
> 
> Please let me know if it works as you expect it to.
> 
> I've pushed this patched version to Bitbucket:
> 
>     https://bitbucket.org/dkuhlman/generateds
> 
> Dave
> 
> Earlier, Dave Kuhlman wrote:
> 
> > Andrii,
> > 
> > It seems like we should be generating a validator function that
> > looks like this:
> > 
> >     def validate_yearType(self, value):
> >         # Validate type yearType, a restriction on xs:gYear.
> >         if value is not None and Validate_simpletypes_:
> >             if value < int(1900):
> >                 warnings_.warn('Value "%(value)s" does not match xsd 
> > minInclusive restriction on yearType' % {"value" : value} )
> > 
> > An xs:gYear is being stored by the generated code as a string.  That
> > is, its internal representation is a string.
> > 
> > I guess that, effectively, we are saying that we will capture an
> > xs:gYear as a string, and will convert it to an integer when we need
> > an integer.
> > 
> > 1. The validator method should do that conversion to integer when it
> >    performs it's test.  So, the test should like this:
> > 
> >     if int(value) < 1900:
> > 
> > instead of:
> > 
> >     if value < 1900:
> > 
> > 2. Or, maybe this would be better:
> > 
> >     if value < '1900':
> > 
> > The reason that I suggest this second fix is because we should be
> > able to handle xs:gYearMonth types in addition to xs:gYear types.
> > For example:
> > 
> >     if value < '1900-01':
> >     
> > That would work, don't you think?  Does that seem reasonable to you?
> > And, I believe that will do the right thing on both Python 2 and
> > Python 3.
> > 
> > Attached to a separate email is a version of generateDS.py that
> > contains this change (the 2nd one).
> > 
> > Dave
> > 
> > On Mon, May 13, 2019 at 03:18:11PM +0100, Andrii Iudin wrote:
> > > Dear Dave,
> > > 
> > > We are in a process of moving to Python 3 and have stumbled upon the
> > > following problem. We have a field defined as
> > > <xs:element name="year" minOccurs="0">
> > >     <xs:simpleType>
> > >         <xs:restriction base="xs:gYear">
> > >             <xs:minInclusive value="1900"/>
> > >         </xs:restriction>
> > >     </xs:simpleType>
> > > </xs:element>
> > > 
> > > The generated code for it is
> > > def validate_yearType(self, value):
> > >     # Validate type yearType, a restriction on xs:gYear.
> > >     if value is not None and Validate_simpletypes_:
> > >         if value < 1900:
> > >             warnings_.warn('Value "%(value)s" does not match xsd
> > > minInclusive restriction on yearType' % {"value" : value} )
> > > 
> > > Which is fine in Python 2. However, when an XML file that contains
> > > <year>2017</year>
> > > 
> > > is being processed in Python 3 the following error occurs:
> > > File "path/empiar.py", line 3784, in validate_yearType1
> > >   if value < 1900:
> > > TypeError: '<' not supported between instances of 'str' and 'int'
> > > 
> > > Please could you advise on the way to solve this?
> > > 
> > > Many thanks and best regards,
> > > Andrii
> > > 
> > > 
> > > _______________________________________________
> > > generateds-users mailing list
> > > generateds-users@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/generateds-users
> 
> -- 
> 
> Dave Kuhlman
> http://www.davekuhlman.org
> 
> 
> _______________________________________________
> generateds-users mailing list
> generateds-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/generateds-users

-- 

Dave Kuhlman
http://www.davekuhlman.org


_______________________________________________
generateds-users mailing list
generateds-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/generateds-users

Reply via email to