arelle-release 2.37.18__py3-none-any.whl → 2.37.20__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arelle-release might be problematic. Click here for more details.
- arelle/CntlrWinMain.py +4 -1
- arelle/FileSource.py +2 -2
- arelle/ModelInstanceObject.py +1 -1
- arelle/ModelValue.py +1 -0
- arelle/ModelXbrl.py +1 -1
- arelle/PythonUtil.py +132 -24
- arelle/ViewWinTree.py +15 -9
- arelle/_version.py +2 -2
- arelle/formula/XPathContext.py +22 -22
- arelle/formula/XPathParser.py +2 -2
- arelle/plugin/OimTaxonomy/ModelValueMore.py +15 -0
- arelle/plugin/OimTaxonomy/ValidateDTS.py +484 -0
- arelle/plugin/OimTaxonomy/ViewXbrlTxmyObj.py +239 -0
- arelle/plugin/OimTaxonomy/XbrlAbstract.py +16 -0
- arelle/plugin/OimTaxonomy/XbrlConcept.py +68 -0
- arelle/plugin/OimTaxonomy/XbrlConst.py +261 -0
- arelle/plugin/OimTaxonomy/XbrlCube.py +91 -0
- arelle/plugin/OimTaxonomy/XbrlDimension.py +38 -0
- arelle/plugin/OimTaxonomy/XbrlDts.py +152 -0
- arelle/plugin/OimTaxonomy/XbrlEntity.py +16 -0
- arelle/plugin/OimTaxonomy/XbrlGroup.py +22 -0
- arelle/plugin/OimTaxonomy/XbrlImportedTaxonomy.py +22 -0
- arelle/plugin/OimTaxonomy/XbrlLabel.py +31 -0
- arelle/plugin/OimTaxonomy/XbrlNetwork.py +100 -0
- arelle/plugin/OimTaxonomy/XbrlProperty.py +28 -0
- arelle/plugin/OimTaxonomy/XbrlReference.py +33 -0
- arelle/plugin/OimTaxonomy/XbrlReport.py +24 -0
- arelle/plugin/OimTaxonomy/XbrlTableTemplate.py +35 -0
- arelle/plugin/OimTaxonomy/XbrlTaxonomy.py +93 -0
- arelle/plugin/OimTaxonomy/XbrlTaxonomyObject.py +154 -0
- arelle/plugin/OimTaxonomy/XbrlTransform.py +17 -0
- arelle/plugin/OimTaxonomy/XbrlTypes.py +23 -0
- arelle/plugin/OimTaxonomy/XbrlUnit.py +17 -0
- arelle/plugin/OimTaxonomy/__init__.py +1037 -0
- arelle/plugin/OimTaxonomy/resources/iso4217.json +4479 -0
- arelle/plugin/OimTaxonomy/resources/oim-taxonomy-schema.json +935 -0
- arelle/plugin/OimTaxonomy/resources/ref.json +333 -0
- arelle/plugin/OimTaxonomy/resources/transform-types.json +2481 -0
- arelle/plugin/OimTaxonomy/resources/types.json +727 -0
- arelle/plugin/OimTaxonomy/resources/utr.json +3046 -0
- arelle/plugin/OimTaxonomy/resources/xbrlSpec.json +1082 -0
- arelle/plugin/saveOIMTaxonomy.py +311 -0
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +35 -1
- arelle/plugin/validate/NL/__init__.py +7 -0
- arelle/plugin/validate/NL/rules/nl_kvk.py +144 -2
- {arelle_release-2.37.18.dist-info → arelle_release-2.37.20.dist-info}/METADATA +3 -1
- {arelle_release-2.37.18.dist-info → arelle_release-2.37.20.dist-info}/RECORD +59 -24
- tests/integration_tests/validation/README.md +2 -0
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py +19 -5
- tests/integration_tests/validation/run_conformance_suites.py +10 -1
- tests/integration_tests/validation/validation_util.py +10 -5
- tests/unit_tests/arelle/test_frozen_dict.py +176 -0
- tests/unit_tests/arelle/test_frozen_ordered_set.py +315 -0
- tests/unit_tests/arelle/test_import.py +1 -0
- tests/unit_tests/arelle/test_ordered_set.py +272 -0
- {arelle_release-2.37.18.dist-info → arelle_release-2.37.20.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.18.dist-info → arelle_release-2.37.20.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.18.dist-info → arelle_release-2.37.20.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.18.dist-info → arelle_release-2.37.20.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Optional, Union
|
|
6
|
+
from collections import OrderedDict
|
|
7
|
+
|
|
8
|
+
from arelle.ModelValue import qname, QName, AnyURI
|
|
9
|
+
from arelle.PythonUtil import OrderedSet
|
|
10
|
+
from .ModelValueMore import SQName
|
|
11
|
+
from .XbrlDts import XbrlDts
|
|
12
|
+
from .XbrlImportedTaxonomy import XbrlImportedTaxonomy
|
|
13
|
+
from .XbrlProperty import XbrlProperty
|
|
14
|
+
from .XbrlAbstract import XbrlAbstract
|
|
15
|
+
from .XbrlConcept import XbrlConcept, XbrlDataType, XbrlUnitType
|
|
16
|
+
from .XbrlCube import XbrlCube, XbrlCubeType, XbrlCubeDimension, XbrlPeriodConstraint, XbrlDateResolution
|
|
17
|
+
from .XbrlDimension import XbrlDimension, XbrlDomain, XbrlDomainRoot, XbrlMember
|
|
18
|
+
from .XbrlEntity import XbrlEntity
|
|
19
|
+
from .XbrlGroup import XbrlGroup, XbrlGroupContent
|
|
20
|
+
from .XbrlLabel import XbrlLabel, XbrlLabelType
|
|
21
|
+
from .XbrlNetwork import XbrlNetwork, XbrlRelationship, XbrlRelationshipType
|
|
22
|
+
from .XbrlProperty import XbrlProperty, XbrlPropertyType
|
|
23
|
+
from .XbrlReference import XbrlReference, XbrlReferenceType
|
|
24
|
+
from .XbrlTransform import XbrlTransform
|
|
25
|
+
from .XbrlUnit import XbrlUnit
|
|
26
|
+
from .XbrlTypes import QNameKeyType, XbrlTaxonomyType
|
|
27
|
+
from .XbrlTaxonomyObject import XbrlTaxonomyObject
|
|
28
|
+
from .XbrlTableTemplate import XbrlTableTemplate, XbrlDataTable
|
|
29
|
+
|
|
30
|
+
class XbrlTaxonomy(XbrlTaxonomyObject):
|
|
31
|
+
dts: XbrlDts
|
|
32
|
+
name: QNameKeyType # (required) The name is a QName that uniquely identifies the taxonomy object.
|
|
33
|
+
frameworkName: Optional[str] # (optional) The framework name of the taxonomy such as "US-GAAP" that indicates the taxonomy broad taxonomy family. The framework name stays consistent between regular taxonomy releases of the same taxonomy domain.
|
|
34
|
+
version: Optional[str] # (optional) Used to identify the version of the taxonomy such as the year of release.
|
|
35
|
+
resolved: bool # (required) Used to indicate if the taxonomy is in a resolved form. Allowable values are true or false. True indicates that the taxonomy is a complete model including all objects post dts processing that has resolved all importedTaxonomy objects, extendTargetName attributes and domain filters. False indicates that the taxonomy is pre dts processing and is not in resolved form.
|
|
36
|
+
importedTaxonomies: OrderedSet[XbrlImportedTaxonomy] # ordered set of importedTaxonomy objects that can comprise QName of the taxonomy to be imported, an object type or a taxonomy object referenced by its QName.
|
|
37
|
+
abstracts: OrderedSet[XbrlAbstract] # ordered set of abstract objects.
|
|
38
|
+
concepts: OrderedSet[XbrlConcept] # ordered set of concept objects.
|
|
39
|
+
cubes: OrderedSet[XbrlCube] # ordered set of cube objects.
|
|
40
|
+
cubeTypes: OrderedSet[XbrlCubeType] # ordered set of cubeType objects.
|
|
41
|
+
dataTypes: OrderedSet[XbrlDataType] # ordered set of dataType objects.
|
|
42
|
+
dimensions: OrderedSet[XbrlDimension] # ordered set of dimension objects.
|
|
43
|
+
domains: OrderedSet[XbrlDomain] # (optional) ordered set of domain objects.
|
|
44
|
+
domainRoots: OrderedSet[XbrlDomainRoot] # (optional) ordered set of domain root objects.
|
|
45
|
+
entities: OrderedSet[XbrlEntity] # (optional) ordered set of entity objects.
|
|
46
|
+
groups: OrderedSet[XbrlGroup] # ordered set of group objects.
|
|
47
|
+
groupContents: OrderedSet[XbrlGroupContent] # ordered set of groupContent objects that link a group QName to a list of network or cube objects.
|
|
48
|
+
labels: OrderedSet[XbrlLabel] # ordered set of label objects.
|
|
49
|
+
members: OrderedSet[XbrlMember] # ordered set of member objects.
|
|
50
|
+
networks: OrderedSet[XbrlNetwork] # ordered set of network objects.
|
|
51
|
+
propertyTypes: OrderedSet[XbrlPropertyType] # ordered set of propertyType objects.
|
|
52
|
+
references: OrderedSet[XbrlReference] # ordered set of reference objects.
|
|
53
|
+
labelTypes: OrderedSet[XbrlLabelType] # rdered set of labelType objects.
|
|
54
|
+
referenceTypes: OrderedSet[XbrlReferenceType] # ordered set of referenceType objects.
|
|
55
|
+
relationshipTypes: OrderedSet[XbrlRelationshipType] # ordered set of relationshipType objects.
|
|
56
|
+
tableTemplates: OrderedSet[XbrlTableTemplate] # ordered set of tableTemplate objects.
|
|
57
|
+
dataTables: OrderedSet[XbrlDataTable] # (optional) ordered set of dataTable objects.
|
|
58
|
+
transforms: OrderedSet[XbrlTransform] # (optional) an ordered set of transform objects.
|
|
59
|
+
units: OrderedSet[XbrlUnit] # ordered set of unit objects.
|
|
60
|
+
properties: OrderedSet[XbrlProperty] # ordered set of property objects used to specify additional properties associated with the taxonomy. Only immutable properties as defined in the propertyType object can be added to a taxonom
|
|
61
|
+
|
|
62
|
+
xbrlObjectTypes = {
|
|
63
|
+
qname("{https://xbrl.org/2025}xbrl:taxonomyObject"): XbrlTaxonomy,
|
|
64
|
+
qname("{https://xbrl.org/2025}xbrl:importTaxonomyObject"): XbrlImportedTaxonomy,
|
|
65
|
+
qname("{https://xbrl.org/2025}xbrl:conceptObject"): XbrlConcept,
|
|
66
|
+
qname("{https://xbrl.org/2025}xbrl:abstractObject"): XbrlAbstract,
|
|
67
|
+
qname("{https://xbrl.org/2025}xbrl:cubeObject"): XbrlCube,
|
|
68
|
+
qname("{https://xbrl.org/2025}xbrl:cubeDimensionObject"): XbrlCubeDimension,
|
|
69
|
+
qname("{https://xbrl.org/2025}xbrl:periodConstraintObject"): XbrlPeriodConstraint,
|
|
70
|
+
qname("{https://xbrl.org/2025}xbrl:dateResolutionObject"): XbrlDateResolution,
|
|
71
|
+
qname("{https://xbrl.org/2025}xbrl:dimensionObject"): XbrlDimension,
|
|
72
|
+
qname("{https://xbrl.org/2025}xbrl:domainObject"): XbrlDomain,
|
|
73
|
+
qname("{https://xbrl.org/2025}xbrl:entityObject"): XbrlEntity,
|
|
74
|
+
qname("{https://xbrl.org/2025}xbrl:groupObject"): XbrlGroup,
|
|
75
|
+
qname("{https://xbrl.org/2025}xbrl:groupContentObject"): XbrlGroupContent,
|
|
76
|
+
qname("{https://xbrl.org/2025}xbrl:networkObject"): XbrlNetwork,
|
|
77
|
+
qname("{https://xbrl.org/2025}xbrl:relationshipObject"): XbrlRelationship,
|
|
78
|
+
qname("{https://xbrl.org/2025}xbrl:relationshipTypeObject"): XbrlRelationshipType,
|
|
79
|
+
qname("{https://xbrl.org/2025}xbrl:labelObject"): XbrlLabel,
|
|
80
|
+
qname("{https://xbrl.org/2025}xbrl:memberObject"): XbrlMember,
|
|
81
|
+
qname("{https://xbrl.org/2025}xbrl:propertyObject"): XbrlProperty,
|
|
82
|
+
qname("{https://xbrl.org/2025}xbrl:referenceObject"): XbrlReference,
|
|
83
|
+
qname("{https://xbrl.org/2025}xbrl:dataTypeObject"): XbrlDataType,
|
|
84
|
+
qname("{https://xbrl.org/2025}xbrl:propertyTypeObject"): XbrlPropertyType,
|
|
85
|
+
qname("{https://xbrl.org/2025}xbrl:labelTypeObject"): XbrlLabelType,
|
|
86
|
+
qname("{https://xbrl.org/2025}xbrl:referenceTypeObject"): XbrlReferenceType,
|
|
87
|
+
qname("{https://xbrl.org/2025}xbrl:cubeTypeObject"): XbrlCubeType,
|
|
88
|
+
qname("{https://xbrl.org/2025}xbrl:tableTemplateObject"): XbrlTableTemplate,
|
|
89
|
+
qname("{https://xbrl.org/2025}xbrl:transformObject"): XbrlTransform,
|
|
90
|
+
qname("{https://xbrl.org/2025}xbrl:unitObject"): XbrlUnit,
|
|
91
|
+
qname("{https://xbrl.org/2025}xbrl:unitTypeObject"): XbrlUnitType,
|
|
92
|
+
}
|
|
93
|
+
xbrlObjectQNames = dict((v,k) for k,v in xbrlObjectTypes.items())
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
from typing import GenericAlias, _UnionGenericAlias, Any
|
|
5
|
+
import os
|
|
6
|
+
from .XbrlConst import qnStdLabel
|
|
7
|
+
XbrlTaxonomyObject = None # class forward reference
|
|
8
|
+
|
|
9
|
+
EMPTY_DICT = {}
|
|
10
|
+
|
|
11
|
+
class XbrlObject:
|
|
12
|
+
|
|
13
|
+
def __init__(self, dtsObjectIndex=0, **kwargs):
|
|
14
|
+
self.dtsObjectIndex = dtsObjectIndex
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def xbrlDts(self):
|
|
18
|
+
return None
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def entryLoadingUrl(self):
|
|
22
|
+
href = str(getattr(getattr(self, 'taxonomy', None), 'name', '(none)'))
|
|
23
|
+
className = type(self).__name__
|
|
24
|
+
if className.startswith("Xbrl"):
|
|
25
|
+
classIndex = getattr(self, "_classIndex", None)
|
|
26
|
+
if classIndex is not None:
|
|
27
|
+
href = f"{href}/{className[4].lower()}{className[5:]}[{classIndex}]"
|
|
28
|
+
return href
|
|
29
|
+
|
|
30
|
+
def getProperty(self, propertyName, propertyClass=None, propertyType=None, language=None, defaultValue=None):
|
|
31
|
+
return getattr(self, propertyName, defaultValue)
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def propertyView(self):
|
|
35
|
+
objClass = type(self)
|
|
36
|
+
isTaxonomyObject = isinstance(self, XbrlTaxonomyObject)
|
|
37
|
+
objName = objClass.__name__[0].lower() + objClass.__name__[1:]
|
|
38
|
+
propVals = []
|
|
39
|
+
initialParentObjProp = True
|
|
40
|
+
referenceProperties = None
|
|
41
|
+
for propName, propType in getattr(objClass, "__annotations__", EMPTY_DICT).items():
|
|
42
|
+
if initialParentObjProp:
|
|
43
|
+
initialParentObjProp = False
|
|
44
|
+
if isinstance(propType, str) or propType.__name__.startswith("Xbrl"): # skip taxonomy alias type
|
|
45
|
+
continue
|
|
46
|
+
if hasattr(self, propName):
|
|
47
|
+
val = getattr(self, propName)
|
|
48
|
+
if isTaxonomyObject: # for Taxonomy objects, not used by OIM Instance objects
|
|
49
|
+
if propName == "properties":
|
|
50
|
+
for propObj in val:
|
|
51
|
+
propVals.append( (str(getattr(propObj, "property", "")), str(getattr(propObj, "value", ""))) )
|
|
52
|
+
continue
|
|
53
|
+
if propName in ("name", "groupName") and val and issubclass(objClass, XbrlReferencableTaxonomyObject):
|
|
54
|
+
# insert label first if any
|
|
55
|
+
label = self.xbrlDts.labelValue(val, qnStdLabel, fallbackToName=False)
|
|
56
|
+
if label:
|
|
57
|
+
propVals.append( ("label", label) )
|
|
58
|
+
referenceProperties = self.xbrlDts.referenceProperties(val, None)
|
|
59
|
+
elif propName == "dimensions" and isinstance(val, dict):
|
|
60
|
+
for propKey, propVal in val.items():
|
|
61
|
+
propVals.append( (str(propKey), str(propVal) ) )
|
|
62
|
+
continue
|
|
63
|
+
if isinstance(propType, GenericAlias): # set, dict, etc
|
|
64
|
+
propValueClass = propType.__args__[-1]
|
|
65
|
+
if hasattr(propValueClass, "propertyView"):
|
|
66
|
+
# skip empty sets of XBRL objects
|
|
67
|
+
if isinstance(val, (set,list)) and propValueClass.__name__.startswith("Xbrl"):
|
|
68
|
+
continue
|
|
69
|
+
propVal = [propName, f"({len(val)})"]
|
|
70
|
+
nestedPropvals = [o.propertyView for o in val]
|
|
71
|
+
if isinstance(nestedPropvals, (list, tuple)):
|
|
72
|
+
l = len(nestedPropvals)
|
|
73
|
+
if l == 1:
|
|
74
|
+
if isinstance(nestedPropvals[0], (list, tuple)):
|
|
75
|
+
nestedPropvals = nestedPropvals[0]
|
|
76
|
+
elif l > 1:
|
|
77
|
+
if isinstance(nestedPropvals[0], (list, tuple)) and isinstance(nestedPropvals[0][0], (list, tuple)) and len(nestedPropvals[0][0]) == 2:
|
|
78
|
+
# flatten properties
|
|
79
|
+
flatPropvals = []
|
|
80
|
+
for i,subPropval in enumerate(nestedPropvals):
|
|
81
|
+
for subPropEnt in subPropval:
|
|
82
|
+
flatPropvals.append([f"[{i}] {subPropEnt[0]}"]+[s for s in subPropEnt[1:]])
|
|
83
|
+
nestedPropvals = flatPropvals
|
|
84
|
+
if nestedPropvals:
|
|
85
|
+
propVal.extend([nestedPropvals])
|
|
86
|
+
elif len(val) > 0:
|
|
87
|
+
propVal = ", ".join(str(v) for v in val)
|
|
88
|
+
else:
|
|
89
|
+
continue # omit this property
|
|
90
|
+
elif val is None and isinstance(propType, _UnionGenericAlias) and propType.__args__[-1] == type(None):
|
|
91
|
+
continue # skip showing absent Optional[...] properties
|
|
92
|
+
else:
|
|
93
|
+
propVal = (propName, f"{val}")
|
|
94
|
+
propVals.append(propVal)
|
|
95
|
+
if referenceProperties:
|
|
96
|
+
for refType, refObjs in sorted(referenceProperties.items(), key=lambda a: str(a[0])):
|
|
97
|
+
propVals.append(
|
|
98
|
+
("references", str(refType), tuple(
|
|
99
|
+
(getattr(rp, "propertyTypeName", ""), getattr(rp, "value", "")) for rp in refObjs)))
|
|
100
|
+
return tuple(propVals)
|
|
101
|
+
|
|
102
|
+
def __repr__(self):
|
|
103
|
+
# print object generic string based on class declaration
|
|
104
|
+
objClass = type(self)
|
|
105
|
+
objName = objClass.__name__[0].lower() + objClass.__name__[1:]
|
|
106
|
+
propVals = [f"{self.dtsObjectIndex}"]
|
|
107
|
+
initialParentObjProp = True
|
|
108
|
+
for propName, propType in getattr(objClass, "__annotations__", EMPTY_DICT).items():
|
|
109
|
+
if initialParentObjProp:
|
|
110
|
+
initialParentProp = False
|
|
111
|
+
if isinstance(propType, str) or getattr(propType, "__name__", "").startswith("Xbrl"): # skip taxonomy alias type
|
|
112
|
+
continue
|
|
113
|
+
if hasattr(self, propName):
|
|
114
|
+
val = getattr(self, propName)
|
|
115
|
+
if isinstance(propType, GenericAlias): # set, dict, etc
|
|
116
|
+
val = f"({len(val)})"
|
|
117
|
+
propVals.append(f"{propName}: {val}")
|
|
118
|
+
return f"{objName}[{', '.join(propVals)}]"
|
|
119
|
+
|
|
120
|
+
class XbrlTaxonomyObject(XbrlObject):
|
|
121
|
+
pass
|
|
122
|
+
|
|
123
|
+
class XbrlReportObject(XbrlObject):
|
|
124
|
+
pass
|
|
125
|
+
|
|
126
|
+
class XbrlReferencableTaxonomyObject(XbrlTaxonomyObject):
|
|
127
|
+
|
|
128
|
+
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
|
129
|
+
super(XbrlReferencableTaxonomyObject, self).__init__(*args, **kwargs)
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def xbrlDts(self):
|
|
133
|
+
if hasattr(self, "taxonomy"):
|
|
134
|
+
return self.taxonomy.dts
|
|
135
|
+
return None
|
|
136
|
+
|
|
137
|
+
def getProperty(self, propertyName, propertyType=None, language=None, defaultValue=None):
|
|
138
|
+
if propertyName == "label" and hasattr(self, "name"):
|
|
139
|
+
return self.xbrlDts.labelValue(self.name, propertyType or qnStdLabel, language)
|
|
140
|
+
return getattr(self, propertyName, defaultValue)
|
|
141
|
+
|
|
142
|
+
class XbrlTaxonomyTagObject(XbrlTaxonomyObject):
|
|
143
|
+
|
|
144
|
+
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
|
145
|
+
super(XbrlTaxonomyTagObject, self).__init__(*args, **kwargs)
|
|
146
|
+
|
|
147
|
+
@property
|
|
148
|
+
def xbrlDts(self):
|
|
149
|
+
if hasattr(self, "taxonomy"):
|
|
150
|
+
return self.taxonomy.dts
|
|
151
|
+
return None
|
|
152
|
+
|
|
153
|
+
def getProperty(self, propertyName, propertyType=None, language=None, defaultValue=None):
|
|
154
|
+
return getattr(self, propertyName, defaultValue)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from arelle.ModelValue import QName, YearMonthDayTimeDuration
|
|
8
|
+
from arelle.PythonUtil import OrderedSet
|
|
9
|
+
from .XbrlTypes import XbrlTaxonomyType, QNameKeyType
|
|
10
|
+
from .ModelValueMore import QNameAt, SQName
|
|
11
|
+
from .XbrlTaxonomyObject import XbrlReferencableTaxonomyObject
|
|
12
|
+
|
|
13
|
+
class XbrlTransform(XbrlReferencableTaxonomyObject):
|
|
14
|
+
taxonomy: XbrlTaxonomyType
|
|
15
|
+
name: QNameKeyType # (required) The name is a QName that uniquely identifies the transform object.
|
|
16
|
+
inputDataType: QName # (required) Indicates the datatype of the input to be transformed.
|
|
17
|
+
outputDataType: QName # (required) Indicates the datatype of the input to be transformed.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing_extensions import TypeAlias
|
|
6
|
+
from arelle.ModelValue import QName
|
|
7
|
+
|
|
8
|
+
XbrlDtsType: TypeAlias = "XbrlDts"
|
|
9
|
+
XbrlLabelType: TypeAlias = "XbrlLabel"
|
|
10
|
+
XbrlPropertyType: TypeAlias = "XbrlProperty"
|
|
11
|
+
XbrlTaxonomyType: TypeAlias = "XbrlTaxonomy"
|
|
12
|
+
class QNameKeyType(QName): # a QName which is also the primary key for parent collection object
|
|
13
|
+
pass
|
|
14
|
+
class SQNameKeyType(QName): # an SQName which is also the primary key for parent collection object
|
|
15
|
+
pass
|
|
16
|
+
class strKeyType(str): # a str which is also the primary key for parent collection object
|
|
17
|
+
pass
|
|
18
|
+
class DefaultTrue: # a bool which if absent defaults to true
|
|
19
|
+
pass
|
|
20
|
+
class DefaultFalse: # a bool which if absent defaults to false
|
|
21
|
+
pass
|
|
22
|
+
class DefaultZero: # a number which if absent defaults to zero
|
|
23
|
+
pass
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Optional
|
|
6
|
+
|
|
7
|
+
from arelle.ModelValue import QName
|
|
8
|
+
from arelle.PythonUtil import OrderedSet
|
|
9
|
+
from .XbrlTypes import XbrlTaxonomyType, SQNameKeyType
|
|
10
|
+
from .XbrlTaxonomyObject import XbrlReferencableTaxonomyObject
|
|
11
|
+
|
|
12
|
+
class XbrlUnit(XbrlReferencableTaxonomyObject):
|
|
13
|
+
taxonomy: XbrlTaxonomyType
|
|
14
|
+
name: SQNameKeyType # (required) The unitQName that identifies the unit so it can be referenced by other objects.
|
|
15
|
+
dataType: QName # (required) Indicates the dataType of the unit. These are provided as a QName based on the datatypes specified in the XBRL 2.1 specification and any custom datatype defined in the taxonomy.
|
|
16
|
+
dataTypeNumerator: Optional[QName] # (optional) Indicates the dataType of the unit numerator when the unit is comprised of a division of two datatypes. This is an optional property and must be used with dataTypeDenominator
|
|
17
|
+
dataTypeDenominator: Optional[QName] # (optional) Indicates the dataType of the unit denominator when the unit is comprised of a division of two datatypes. This is an optional property and must be used with dataTypeNumerator
|