本文整理汇总了Python中arelle.UrlUtil.anyUriQuoteForPSVI方法的典型用法代码示例。如果您正苦于以下问题:Python UrlUtil.anyUriQuoteForPSVI方法的具体用法?Python UrlUtil.anyUriQuoteForPSVI怎么用?Python UrlUtil.anyUriQuoteForPSVI使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类arelle.UrlUtil
的用法示例。
在下文中一共展示了UrlUtil.anyUriQuoteForPSVI方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: validateValue
# 需要导入模块: from arelle import UrlUtil [as 别名]
# 或者: from arelle.UrlUtil import anyUriQuoteForPSVI [as 别名]
def validateValue(modelXbrl, elt, attrTag, baseXsdType, value, isNillable=False, isNil=False, facets=None):
if baseXsdType:
try:
'''
if (len(value) == 0 and attrTag is None and not isNillable and
baseXsdType not in ("anyType", "string", "normalizedString", "token", "NMTOKEN", "anyURI", "noContent")):
raise ValueError("missing value for not nillable element")
'''
xValid = VALID
whitespaceReplace = (baseXsdType == "normalizedString")
whitespaceCollapse = (not whitespaceReplace and baseXsdType != "string")
isList = baseXsdType in {"IDREFS", "ENTITIES", "NMTOKENS"}
if isList:
baseXsdType = baseXsdType[:-1] # remove plural
pattern = baseXsdTypePatterns.get(baseXsdType)
if facets:
if "pattern" in facets:
pattern = facets["pattern"]
# note multiple patterns are or'ed togetner, which isn't yet implemented!
if "whiteSpace" in facets:
whitespaceReplace, whitespaceCollapse = {"preserve":(False,False), "replace":(True,False), "collapse":(False,True)}[facets["whiteSpace"]]
if whitespaceReplace:
value = normalizeWhitespacePattern.sub(' ', value)
elif whitespaceCollapse:
value = collapseWhitespacePattern.sub(' ', value.strip())
if baseXsdType == "noContent":
if len(value) > 0 and not value.isspace():
raise ValueError("value content not permitted")
# note that sValue and xValue are not innerText but only text elements on specific element (or attribute)
xValue = sValue = None
xValid = VALID_NO_CONTENT # notify others that element may contain subelements (for stringValue needs)
elif not value and isNil and isNillable: # rest of types get None if nil/empty value
xValue = sValue = None
else:
if pattern is not None:
if ((isList and any(pattern.match(v) is None for v in value.split())) or
(not isList and pattern.match(value) is None)):
raise ValueError("pattern facet " + facets["pattern"].pattern if facets and "pattern" in facets else "pattern mismatch")
if facets:
if "enumeration" in facets and value not in facets["enumeration"]:
raise ValueError("{0} is not in {1}".format(value, facets["enumeration"]))
if "length" in facets and len(value) != facets["length"]:
raise ValueError("length {0}, expected {1}".format(len(value), facets["length"]))
if "minLength" in facets and len(value) < facets["minLength"]:
raise ValueError("length {0}, minLength {1}".format(len(value), facets["minLength"]))
if "maxLength" in facets and len(value) > facets["maxLength"]:
raise ValueError("length {0}, maxLength {1}".format(len(value), facets["maxLength"]))
if baseXsdType in {"string", "normalizedString", "language", "token", "NMTOKEN","Name","NCName","IDREF","ENTITY"}:
xValue = sValue = value
elif baseXsdType == "ID":
xValue = sValue = value
xValid = VALID_ID
elif baseXsdType == "anyURI":
if value: # allow empty strings to be valid anyURIs
if UrlUtil.relativeUrlPattern.match(value) is None:
raise ValueError("IETF RFC 2396 4.3 syntax")
# encode PSVI xValue similarly to Xerces and other implementations
xValue = anyURI(UrlUtil.anyUriQuoteForPSVI(value))
sValue = value
elif baseXsdType in ("decimal", "float", "double"):
if baseXsdType == "decimal":
if decimalPattern.match(value) is None:
raise ValueError("lexical pattern mismatch")
xValue = Decimal(value)
sValue = float(value) # s-value uses Number (float) representation
else:
if floatPattern.match(value) is None:
raise ValueError("lexical pattern mismatch")
xValue = sValue = float(value)
if facets:
if "totalDigits" in facets and len(value.replace(".","")) > facets["totalDigits"]:
raise ValueError("totalDigits facet {0}".format(facets["totalDigits"]))
if "fractionDigits" in facets and ( '.' in value and
len(value[value.index('.') + 1:]) > facets["fractionDigits"]):
raise ValueError("fraction digits facet {0}".format(facets["fractionDigits"]))
if "maxInclusive" in facets and xValue > facets["maxInclusive"]:
raise ValueError(" > maxInclusive {0}".format(facets["maxInclusive"]))
if "maxExclusive" in facets and xValue >= facets["maxExclusive"]:
raise ValueError(" >= maxInclusive {0}".format(facets["maxExclusive"]))
if "minInclusive" in facets and xValue < facets["minInclusive"]:
raise ValueError(" < minInclusive {0}".format(facets["minInclusive"]))
if "minExclusive" in facets and xValue <= facets["minExclusive"]:
raise ValueError(" <= minExclusive {0}".format(facets["minExclusive"]))
elif baseXsdType in {"integer",
"nonPositiveInteger","negativeInteger","nonNegativeInteger","positiveInteger",
"long","unsignedLong",
"int","unsignedInt",
"short","unsignedShort",
"byte","unsignedByte"}:
xValue = sValue = _INT(value)
if ((baseXsdType in {"nonNegativeInteger","unsignedLong","unsignedInt"}
and xValue < 0) or
(baseXsdType == "nonPositiveInteger" and xValue > 0) or
(baseXsdType == "positiveInteger" and xValue <= 0) or
(baseXsdType == "byte" and not -128 <= xValue < 127) or
(baseXsdType == "unsignedByte" and not 0 <= xValue < 255) or
(baseXsdType == "short" and not -32768 <= xValue < 32767) or
(baseXsdType == "unsignedShort" and not 0 <= xValue < 65535) or
(baseXsdType == "positiveInteger" and xValue <= 0)):
raise ValueError("{0} is not {1}".format(value, baseXsdType))
#.........这里部分代码省略.........
示例2: validateValue
# 需要导入模块: from arelle import UrlUtil [as 别名]
# 或者: from arelle.UrlUtil import anyUriQuoteForPSVI [as 别名]
def validateValue(modelXbrl, elt, attrTag, baseXsdType, value, isNillable=False, isNil=False, facets=None):
if baseXsdType:
try:
u'''
if (len(value) == 0 and attrTag is None and not isNillable and
baseXsdType not in ("anyType", "string", "normalizedString", "token", "NMTOKEN", "anyURI", "noContent")):
raise ValueError("missing value for not nillable element")
'''
xValid = VALID
whitespaceReplace = (baseXsdType == u"normalizedString")
whitespaceCollapse = (not whitespaceReplace and baseXsdType != u"string")
isList = baseXsdType in set([u"IDREFS", u"ENTITIES", u"NMTOKENS"])
if isList:
baseXsdType = baseXsdType[:-1] # remove plural
pattern = baseXsdTypePatterns.get(baseXsdType)
if facets:
if u"pattern" in facets:
pattern = facets[u"pattern"]
# note multiple patterns are or'ed togetner, which isn't yet implemented!
if u"whiteSpace" in facets:
whitespaceReplace, whitespaceCollapse = {u"preserve":(False,False), u"replace":(True,False), u"collapse":(False,True)}[facets[u"whiteSpace"]]
if whitespaceReplace:
value = normalizeWhitespacePattern.sub(u' ', value)
elif whitespaceCollapse:
value = collapseWhitespacePattern.sub(u' ', value.strip())
if baseXsdType == u"noContent":
if len(value) > 0 and not value.isspace():
raise ValueError(u"value content not permitted")
# note that sValue and xValue are not innerText but only text elements on specific element (or attribute)
xValue = sValue = None
xValid = VALID_NO_CONTENT # notify others that element may contain subelements (for stringValue needs)
elif not value and isNil and isNillable: # rest of types get None if nil/empty value
xValue = sValue = None
else:
if pattern is not None:
if ((isList and any(pattern.match(v) is None for v in value.split())) or
(not isList and pattern.match(value) is None)):
raise ValueError(u"pattern facet " + facets[u"pattern"].pattern if facets and u"pattern" in facets else u"pattern mismatch")
if facets:
if u"enumeration" in facets and value not in facets[u"enumeration"]:
raise ValueError(u"{0} is not in {1}".format(value, facets[u"enumeration"]))
if u"length" in facets and len(value) != facets[u"length"]:
raise ValueError(u"length {0}, expected {1}".format(len(value), facets[u"length"]))
if u"minLength" in facets and len(value) < facets[u"minLength"]:
raise ValueError(u"length {0}, minLength {1}".format(len(value), facets[u"minLength"]))
if u"maxLength" in facets and len(value) > facets[u"maxLength"]:
raise ValueError(u"length {0}, maxLength {1}".format(len(value), facets[u"maxLength"]))
if baseXsdType in set([u"string", u"normalizedString", u"language", u"token", u"NMTOKEN",u"Name",u"NCName",u"IDREF",u"ENTITY"]):
xValue = sValue = value
elif baseXsdType == u"ID":
xValue = sValue = value
xValid = VALID_ID
elif baseXsdType == u"anyURI":
if value: # allow empty strings to be valid anyURIs
if UrlUtil.relativeUrlPattern.match(value) is None:
raise ValueError(u"IETF RFC 2396 4.3 syntax")
# encode PSVI xValue similarly to Xerces and other implementations
xValue = anyURI(UrlUtil.anyUriQuoteForPSVI(value))
sValue = value
elif baseXsdType in (u"decimal", u"float", u"double"):
if baseXsdType == u"decimal":
if decimalPattern.match(value) is None:
raise ValueError(u"lexical pattern mismatch")
xValue = Decimal(value)
sValue = float(value) # s-value uses Number (float) representation
else:
if floatPattern.match(value) is None:
raise ValueError(u"lexical pattern mismatch")
xValue = sValue = float(value)
if facets:
if u"totalDigits" in facets and len(value.replace(u".",u"")) > facets[u"totalDigits"]:
raise ValueError(u"totalDigits facet {0}".format(facets[u"totalDigits"]))
if u"fractionDigits" in facets and ( u'.' in value and
len(value[value.index(u'.') + 1:]) > facets[u"fractionDigits"]):
raise ValueError(u"fraction digits facet {0}".format(facets[u"fractionDigits"]))
if u"maxInclusive" in facets and xValue > facets[u"maxInclusive"]:
raise ValueError(u" > maxInclusive {0}".format(facets[u"maxInclusive"]))
if u"maxExclusive" in facets and xValue >= facets[u"maxExclusive"]:
raise ValueError(u" >= maxInclusive {0}".format(facets[u"maxExclusive"]))
if u"minInclusive" in facets and xValue < facets[u"minInclusive"]:
raise ValueError(u" < minInclusive {0}".format(facets[u"minInclusive"]))
if u"minExclusive" in facets and xValue <= facets[u"minExclusive"]:
raise ValueError(u" <= minExclusive {0}".format(facets[u"minExclusive"]))
elif baseXsdType in set([u"integer",
u"nonPositiveInteger",u"negativeInteger",u"nonNegativeInteger",u"positiveInteger",
u"long",u"unsignedLong",
u"int",u"unsignedInt",
u"short",u"unsignedShort",
u"byte",u"unsignedByte"]):
xValue = sValue = _INT(value)
if ((baseXsdType in set([u"nonNegativeInteger",u"unsignedLong",u"unsignedInt"])
and xValue < 0) or
(baseXsdType == u"nonPositiveInteger" and xValue > 0) or
(baseXsdType == u"positiveInteger" and xValue <= 0) or
(baseXsdType == u"byte" and not -128 <= xValue < 127) or
(baseXsdType == u"unsignedByte" and not 0 <= xValue < 255) or
(baseXsdType == u"short" and not -32768 <= xValue < 32767) or
(baseXsdType == u"unsignedShort" and not 0 <= xValue < 65535) or
(baseXsdType == u"positiveInteger" and xValue <= 0)):
raise ValueError(u"{0} is not {1}".format(value, baseXsdType))
#.........这里部分代码省略.........