Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return (
int(group["year"]),
int(group["month"]),
_parse_timezone(group["timezone"]),
)
class gYear(BuiltinType, AnySimpleType):
"""gYear represents a gregorian calendar year.
Lexical representation: CCYY
"""
accepted_types = (datetime.date,) + six.string_types
_default_qname = xsd_ns("gYear")
_pattern = re.compile(r"^(?P-?\d{4,})(?PZ|[-+]\d\d:?\d\d)?$")
@check_no_collection
def xmlvalue(self, value):
year, tzinfo = value
return "%04d%s" % (year, _unparse_timezone(tzinfo))
def pythonvalue(self, value):
match = self._pattern.match(value)
if not match:
raise ParseError()
group = match.groupdict()
return (int(group["year"]), _parse_timezone(group["timezone"]))
class gMonthDay(BuiltinType, AnySimpleType):
class NonNegativeInteger(Integer):
_default_qname = xsd_ns("nonNegativeInteger")
class UnsignedLong(NonNegativeInteger):
_default_qname = xsd_ns("unsignedLong")
class UnsignedInt(UnsignedLong):
_default_qname = xsd_ns("unsignedInt")
class UnsignedShort(UnsignedInt):
_default_qname = xsd_ns("unsignedShort")
class UnsignedByte(UnsignedShort):
_default_qname = xsd_ns("unsignedByte")
class PositiveInteger(NonNegativeInteger):
_default_qname = xsd_ns("positiveInteger")
##
# Other
def _parse_timezone(val):
"""Return a pytz.tzinfo object"""
if not val:
return
class Short(Int):
_default_qname = xsd_ns("short")
class Byte(Short):
"""A signed 8-bit integer"""
_default_qname = xsd_ns("byte")
class NonNegativeInteger(Integer):
_default_qname = xsd_ns("nonNegativeInteger")
class UnsignedLong(NonNegativeInteger):
_default_qname = xsd_ns("unsignedLong")
class UnsignedInt(UnsignedLong):
_default_qname = xsd_ns("unsignedInt")
class UnsignedShort(UnsignedInt):
_default_qname = xsd_ns("unsignedShort")
class UnsignedByte(UnsignedShort):
_default_qname = xsd_ns("unsignedByte")
class PositiveInteger(NonNegativeInteger):
_default_qname = xsd_ns("positiveInteger")
_default_qname = xsd_ns("nonPositiveInteger")
class NegativeInteger(Integer):
_default_qname = xsd_ns("negativeInteger")
class Long(Integer):
_default_qname = xsd_ns("long")
def pythonvalue(self, value):
return long(value) if six.PY2 else int(value) # noqa
class Int(Long):
_default_qname = xsd_ns("int")
class Short(Int):
_default_qname = xsd_ns("short")
class Byte(Short):
"""A signed 8-bit integer"""
_default_qname = xsd_ns("byte")
class NonNegativeInteger(Integer):
_default_qname = xsd_ns("nonNegativeInteger")
class Notation(BuiltinType, AnySimpleType):
accepted_types = six.string_types
_default_qname = xsd_ns("NOTATION")
##
# Derived datatypes
class NormalizedString(String):
_default_qname = xsd_ns("normalizedString")
class Token(NormalizedString):
_default_qname = xsd_ns("token")
class Language(Token):
_default_qname = xsd_ns("language")
class NmToken(Token):
_default_qname = xsd_ns("NMTOKEN")
class NmTokens(NmToken):
_default_qname = xsd_ns("NMTOKENS")
class Name(Token):
_default_qname = xsd_ns("Name")
class Decimal(BuiltinType, AnySimpleType):
_default_qname = xsd_ns("decimal")
accepted_types = (_Decimal, float) + six.string_types
@check_no_collection
def xmlvalue(self, value):
return str(value)
def pythonvalue(self, value):
return _Decimal(value)
class Float(BuiltinType, AnySimpleType):
_default_qname = xsd_ns("float")
accepted_types = (float, _Decimal) + six.string_types
def xmlvalue(self, value):
return str(value).upper()
def pythonvalue(self, value):
return float(value)
class Double(BuiltinType, AnySimpleType):
_default_qname = xsd_ns("double")
accepted_types = (_Decimal, float) + six.string_types
@check_no_collection
def xmlvalue(self, value):
return str(value)
_default_qname = xsd_ns("negativeInteger")
class Long(Integer):
_default_qname = xsd_ns("long")
def pythonvalue(self, value):
return long(value) if six.PY2 else int(value) # noqa
class Int(Long):
_default_qname = xsd_ns("int")
class Short(Int):
_default_qname = xsd_ns("short")
class Byte(Short):
"""A signed 8-bit integer"""
_default_qname = xsd_ns("byte")
class NonNegativeInteger(Integer):
_default_qname = xsd_ns("nonNegativeInteger")
class UnsignedLong(NonNegativeInteger):
_default_qname = xsd_ns("unsignedLong")
@check_no_collection
def xmlvalue(self, value):
month, tzinfo = value
return "--%d%s" % (month, _unparse_timezone(tzinfo))
def pythonvalue(self, value):
match = self._pattern.match(value)
if not match:
raise ParseError()
group = match.groupdict()
return (int(group["month"]), _parse_timezone(group["timezone"]))
class HexBinary(BuiltinType, AnySimpleType):
accepted_types = six.string_types
_default_qname = xsd_ns("hexBinary")
@check_no_collection
def xmlvalue(self, value):
return value
def pythonvalue(self, value):
return value
class Base64Binary(BuiltinType, AnySimpleType):
accepted_types = six.string_types
_default_qname = xsd_ns("base64Binary")
@check_no_collection
def xmlvalue(self, value):
return base64.b64encode(value)
@check_no_collection
def xmlvalue(self, value):
if isinstance(value, six.string_types):
return value
if value.microsecond:
return isodate.isostrf.strftime(value, "%H:%M:%S.%f%Z")
return isodate.isostrf.strftime(value, "%H:%M:%S%Z")
def pythonvalue(self, value):
return isodate.parse_time(value)
class Date(BuiltinType, AnySimpleType):
_default_qname = xsd_ns("date")
accepted_types = (datetime.date,) + six.string_types
@check_no_collection
def xmlvalue(self, value):
if isinstance(value, six.string_types):
return value
return isodate.isostrf.strftime(value, "%Y-%m-%d")
def pythonvalue(self, value):
return isodate.parse_date(value)
class gYearMonth(BuiltinType, AnySimpleType):
"""gYearMonth represents a specific gregorian month in a specific gregorian
year.
int(group["month"]),
int(group["day"]),
_parse_timezone(group["timezone"]),
)
class gDay(BuiltinType, AnySimpleType):
"""gDay is a gregorian day that recurs, specifically a day of the month
such as the 5th of the month
Lexical representation: ---DD
"""
accepted_types = (datetime.date,) + six.string_types
_default_qname = xsd_ns("gDay")
_pattern = re.compile(r"^---(?P\d\d)(?PZ|[-+]\d\d:?\d\d)?$")
@check_no_collection
def xmlvalue(self, value):
day, tzinfo = value
return "---%02d%s" % (day, _unparse_timezone(tzinfo))
def pythonvalue(self, value):
match = self._pattern.match(value)
if not match:
raise ParseError()
group = match.groupdict()
return (int(group["day"]), _parse_timezone(group["timezone"]))
class gMonth(BuiltinType, AnySimpleType):