arelle-release 2.37.46__py3-none-any.whl → 2.38.0__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.
- arelle/BetaFeatures.py +0 -21
- arelle/Cntlr.py +15 -8
- arelle/CntlrCmdLine.py +121 -56
- arelle/CntlrWinMain.py +143 -70
- arelle/DialogFind.py +1 -1
- arelle/DialogPluginManager.py +6 -4
- arelle/DisclosureSystem.py +7 -0
- arelle/ErrorManager.py +21 -6
- arelle/FileSource.py +11 -4
- arelle/FunctionIxt.py +16 -11
- arelle/HtmlUtil.py +5 -4
- arelle/LeiUtil.py +63 -43
- arelle/ModelDocument.py +20 -15
- arelle/ModelDtsObject.py +8 -0
- arelle/ModelInstanceObject.py +1 -1
- arelle/ModelObject.py +16 -18
- arelle/ModelObjectFactory.py +35 -17
- arelle/ModelXbrl.py +28 -11
- arelle/PluginManager.py +130 -105
- arelle/RuntimeOptions.py +1 -0
- arelle/UrlUtil.py +14 -0
- arelle/Validate.py +17 -12
- arelle/ValidateDuplicateFacts.py +3 -1
- arelle/ValidateFileSource.py +38 -0
- arelle/ValidateFilingText.py +3 -3
- arelle/ValidateXbrl.py +5 -2
- arelle/ValidateXbrlCalcs.py +210 -186
- arelle/ValidateXbrlDTS.py +1 -1
- arelle/ViewFile.py +1 -0
- arelle/ViewFileFactTable.py +2 -2
- arelle/ViewWinDTS.py +4 -1
- arelle/WebCache.py +28 -24
- arelle/XbrlConst.py +22 -0
- arelle/XmlUtil.py +16 -21
- arelle/XmlValidate.py +6 -9
- arelle/_version.py +16 -3
- arelle/api/Session.py +11 -2
- arelle/config/disclosuresystems.xsd +2 -0
- arelle/config/rosettaEntitlements.plist +8 -0
- arelle/conformance/CSVTestcaseLoader.py +1 -1
- arelle/formula/XPathContext.py +3 -3
- arelle/logging/formatters/LogFormatter.py +3 -1
- arelle/packages/report/ReportPackage.py +26 -13
- arelle/packages/report/ReportPackageConst.py +0 -1
- arelle/plugin/inlineXbrlDocumentSet.py +19 -5
- arelle/plugin/validate/DBA/DisclosureSystems.py +19 -1
- arelle/plugin/validate/DBA/PluginValidationDataExtension.py +2 -4
- arelle/plugin/validate/DBA/ValidationPluginExtension.py +2 -1
- arelle/plugin/validate/DBA/resources/config.xml +5 -0
- arelle/plugin/validate/DBA/rules/__init__.py +2 -2
- arelle/plugin/validate/DBA/rules/fr.py +19 -2
- arelle/plugin/validate/DBA/rules/tc.py +2 -0
- arelle/plugin/validate/DBA/rules/th.py +6 -0
- arelle/plugin/validate/DBA/rules/tm.py +18 -5
- arelle/plugin/validate/DBA/rules/tr.py +11 -5
- arelle/plugin/validate/EDINET/Constants.py +193 -9
- arelle/plugin/validate/EDINET/ContextRequirement.py +58 -0
- arelle/plugin/validate/EDINET/ControllerPluginData.py +220 -1
- arelle/plugin/validate/EDINET/CoverItemRequirements.py +42 -0
- arelle/plugin/validate/EDINET/DeiRequirements.py +118 -0
- arelle/plugin/validate/EDINET/FilingFormat.py +275 -0
- arelle/plugin/validate/EDINET/FormType.py +134 -0
- arelle/plugin/validate/EDINET/ManifestInstance.py +72 -5
- arelle/plugin/validate/EDINET/NamespaceConfig.py +50 -0
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +493 -132
- arelle/plugin/validate/EDINET/{InstanceType.py → ReportFolderType.py} +72 -15
- arelle/plugin/validate/EDINET/Statement.py +139 -0
- arelle/plugin/validate/EDINET/TableOfContentsBuilder.py +595 -0
- arelle/plugin/validate/EDINET/UploadContents.py +48 -0
- arelle/plugin/validate/EDINET/ValidationPluginExtension.py +20 -2
- arelle/plugin/validate/EDINET/__init__.py +31 -6
- arelle/plugin/validate/EDINET/resources/config.xml +8 -1
- arelle/plugin/validate/EDINET/resources/cover-item-requirements.json +793 -0
- arelle/plugin/validate/EDINET/resources/dei-requirements.csv +27 -0
- arelle/plugin/validate/EDINET/resources/edinet-taxonomies.xml +2 -0
- arelle/plugin/validate/EDINET/rules/contexts.py +375 -14
- arelle/plugin/validate/EDINET/rules/edinet.py +1934 -45
- arelle/plugin/validate/EDINET/rules/frta.py +122 -3
- arelle/plugin/validate/EDINET/rules/gfm.py +1907 -11
- arelle/plugin/validate/EDINET/rules/upload.py +989 -141
- arelle/plugin/validate/ESEF/Const.py +3 -1
- arelle/plugin/validate/ESEF/ESEF_2021/DTS.py +5 -0
- arelle/plugin/validate/ESEF/ESEF_2021/Image.py +2 -2
- arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +23 -20
- arelle/plugin/validate/ESEF/ESEF_Current/DTS.py +47 -14
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +100 -25
- arelle/plugin/validate/ESEF/__init__.py +20 -6
- arelle/plugin/validate/ESEF/resources/authority-validations.json +76 -9
- arelle/plugin/validate/ESEF/resources/config.xml +20 -0
- arelle/plugin/validate/NL/DisclosureSystems.py +22 -0
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +27 -9
- arelle/plugin/validate/NL/ValidationPluginExtension.py +51 -7
- arelle/plugin/validate/NL/resources/config.xml +18 -0
- arelle/plugin/validate/NL/rules/br_kvk.py +17 -61
- arelle/plugin/validate/NL/rules/fg_nl.py +7 -38
- arelle/plugin/validate/NL/rules/fr_kvk.py +7 -42
- arelle/plugin/validate/NL/rules/fr_nl.py +31 -147
- arelle/plugin/validate/NL/rules/nl_kvk.py +142 -28
- arelle/plugin/validate/ROS/PluginValidationDataExtension.py +2 -0
- arelle/plugin/validate/ROS/ValidationPluginExtension.py +4 -1
- arelle/plugin/validate/ROS/rules/ros.py +41 -9
- arelle/plugin/validate/UK/ValidateUK.py +130 -66
- arelle/plugin/validate/UK/__init__.py +89 -103
- arelle/utils/EntryPointDetection.py +79 -13
- arelle/utils/PluginHooks.py +125 -0
- arelle/utils/validate/ESEFImage.py +6 -6
- arelle/utils/validate/Validation.py +18 -0
- arelle/utils/validate/ValidationPlugin.py +76 -11
- arelle/utils/validate/ValidationUtil.py +35 -3
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/METADATA +30 -20
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/RECORD +115 -191
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/licenses/LICENSE.md +0 -3
- arelle/archive/CustomLogger.py +0 -43
- arelle/archive/LoadEFMvalidate.py +0 -32
- arelle/archive/LoadSavePreLbCsv.py +0 -26
- arelle/archive/LoadValidate.cs +0 -31
- arelle/archive/LoadValidate.py +0 -36
- arelle/archive/LoadValidateCmdLine.java +0 -69
- arelle/archive/LoadValidatePostedZip.java +0 -57
- arelle/archive/LoadValidateWebService.java +0 -34
- arelle/archive/SaveTableToExelle.py +0 -140
- arelle/archive/TR3toTR4.py +0 -88
- arelle/archive/plugin/ESEF_2022/__init__.py +0 -47
- arelle/archive/plugin/bigInstance.py +0 -394
- arelle/archive/plugin/cmdWebServerExtension.py +0 -43
- arelle/archive/plugin/crashTest.py +0 -38
- arelle/archive/plugin/functionsXmlCreation.py +0 -106
- arelle/archive/plugin/hello_i18n.pot +0 -26
- arelle/archive/plugin/hello_i18n.py +0 -32
- arelle/archive/plugin/importTestChild1.py +0 -21
- arelle/archive/plugin/importTestChild2.py +0 -22
- arelle/archive/plugin/importTestGrandchild1.py +0 -21
- arelle/archive/plugin/importTestGrandchild2.py +0 -21
- arelle/archive/plugin/importTestImported1.py +0 -23
- arelle/archive/plugin/importTestImported11.py +0 -22
- arelle/archive/plugin/importTestParent.py +0 -48
- arelle/archive/plugin/instanceInfo.py +0 -306
- arelle/archive/plugin/loadFromOIM-2018.py +0 -1282
- arelle/archive/plugin/locale/fr/LC_MESSAGES/hello_i18n.po +0 -25
- arelle/archive/plugin/objectmaker.py +0 -285
- arelle/archive/plugin/packagedImportTest/__init__.py +0 -47
- arelle/archive/plugin/packagedImportTest/importTestChild1.py +0 -21
- arelle/archive/plugin/packagedImportTest/importTestChild2.py +0 -22
- arelle/archive/plugin/packagedImportTest/importTestGrandchild1.py +0 -21
- arelle/archive/plugin/packagedImportTest/importTestGrandchild2.py +0 -21
- arelle/archive/plugin/packagedImportTest/importTestImported1.py +0 -24
- arelle/archive/plugin/packagedImportTest/importTestImported11.py +0 -21
- arelle/archive/plugin/packagedImportTest/subdir/importTestImported111.py +0 -21
- arelle/archive/plugin/packagedImportTest/subdir/subsubdir/importTestImported1111.py +0 -21
- arelle/archive/plugin/sakaCalendar.py +0 -215
- arelle/archive/plugin/saveInstanceInfoset.py +0 -121
- arelle/archive/plugin/sphinx/FormulaGenerator.py +0 -823
- arelle/archive/plugin/sphinx/SphinxContext.py +0 -404
- arelle/archive/plugin/sphinx/SphinxEvaluator.py +0 -783
- arelle/archive/plugin/sphinx/SphinxMethods.py +0 -1287
- arelle/archive/plugin/sphinx/SphinxParser.py +0 -1093
- arelle/archive/plugin/sphinx/SphinxValidator.py +0 -163
- arelle/archive/plugin/sphinx/US-GAAP Ratios Example.xsr +0 -52
- arelle/archive/plugin/sphinx/__init__.py +0 -285
- arelle/archive/plugin/streamingExtensions.py +0 -335
- arelle/archive/plugin/updateTableLB.py +0 -242
- arelle/archive/plugin/validate/SBRnl/CustomLoader.py +0 -19
- arelle/archive/plugin/validate/SBRnl/DTS.py +0 -305
- arelle/archive/plugin/validate/SBRnl/Dimensions.py +0 -357
- arelle/archive/plugin/validate/SBRnl/Document.py +0 -799
- arelle/archive/plugin/validate/SBRnl/Filing.py +0 -467
- arelle/archive/plugin/validate/SBRnl/__init__.py +0 -75
- arelle/archive/plugin/validate/SBRnl/config.xml +0 -26
- arelle/archive/plugin/validate/SBRnl/sbr-nl-taxonomies.xml +0 -754
- arelle/archive/plugin/validate/USBestPractices.py +0 -570
- arelle/archive/plugin/validate/USCorpAction.py +0 -557
- arelle/archive/plugin/validate/USSecTagging.py +0 -337
- arelle/archive/plugin/validate/XDC/__init__.py +0 -77
- arelle/archive/plugin/validate/XDC/config.xml +0 -20
- arelle/archive/plugin/validate/XFsyntax/__init__.py +0 -64
- arelle/archive/plugin/validate/XFsyntax/xf.py +0 -2227
- arelle/archive/plugin/validate/calc2.py +0 -536
- arelle/archive/plugin/validateSchemaLxml.py +0 -156
- arelle/archive/plugin/validateTableInfoset.py +0 -52
- arelle/archive/us-gaap-dei-docType-extraction-frm.xml +0 -90
- arelle/archive/us-gaap-dei-ratio-cash-frm.xml +0 -150
- arelle/examples/plugin/formulaSuiteConverter.py +0 -212
- arelle/examples/plugin/functionsCustom.py +0 -59
- arelle/examples/plugin/hello_dolly.py +0 -64
- arelle/examples/plugin/multi.py +0 -58
- arelle/examples/plugin/rssSaveOim.py +0 -96
- arelle/examples/plugin/validate/XYZ/DisclosureSystems.py +0 -2
- arelle/examples/plugin/validate/XYZ/PluginValidationDataExtension.py +0 -10
- arelle/examples/plugin/validate/XYZ/ValidationPluginExtension.py +0 -49
- arelle/examples/plugin/validate/XYZ/__init__.py +0 -75
- arelle/examples/plugin/validate/XYZ/resources/config.xml +0 -16
- arelle/examples/plugin/validate/XYZ/rules/__init__.py +0 -0
- arelle/examples/plugin/validate/XYZ/rules/rules01.py +0 -110
- arelle/examples/plugin/validate/XYZ/rules/rules02.py +0 -59
- arelle/model/CommentBase.py +0 -9
- arelle/model/ElementBase.py +0 -11
- arelle/model/PIBase.py +0 -10
- arelle/model/__init__.py +0 -15
- arelle/scripts-macOS/startWebServer.command +0 -3
- arelle/scripts-unix/startWebServer.sh +0 -1
- arelle/scripts-windows/startWebServer.bat +0 -5
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/top_level.txt +0 -0
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
|
|
6
6
|
from collections import defaultdict
|
|
7
7
|
from collections.abc import Iterable
|
|
8
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
9
9
|
|
|
10
10
|
from lxml.etree import _Element
|
|
11
11
|
|
|
@@ -21,12 +21,7 @@ from arelle.typing import TypeGetText
|
|
|
21
21
|
from arelle.utils.PluginHooks import ValidationHook
|
|
22
22
|
from arelle.utils.validate.Decorator import validation
|
|
23
23
|
from arelle.utils.validate.Validation import Validation
|
|
24
|
-
from ..DisclosureSystems import
|
|
25
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
26
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
27
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
28
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
29
|
-
)
|
|
24
|
+
from ..DisclosureSystems import NT_DISCLOSURE_SYSTEMS
|
|
30
25
|
from ..PluginValidationDataExtension import PluginValidationDataExtension
|
|
31
26
|
|
|
32
27
|
_: TypeGetText
|
|
@@ -44,12 +39,7 @@ INSTANCE_ELEMENT_ORDER = {
|
|
|
44
39
|
|
|
45
40
|
@validation(
|
|
46
41
|
hook=ValidationHook.XBRL_FINALLY,
|
|
47
|
-
disclosureSystems=
|
|
48
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
49
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
50
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
51
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
52
|
-
],
|
|
42
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
53
43
|
)
|
|
54
44
|
def rule_fg_nl_03(
|
|
55
45
|
pluginData: PluginValidationDataExtension,
|
|
@@ -96,12 +86,7 @@ def rule_fg_nl_03(
|
|
|
96
86
|
|
|
97
87
|
@validation(
|
|
98
88
|
hook=ValidationHook.XBRL_FINALLY,
|
|
99
|
-
disclosureSystems=
|
|
100
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
101
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
102
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
103
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
104
|
-
],
|
|
89
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
105
90
|
)
|
|
106
91
|
def rule_fg_nl_04(
|
|
107
92
|
pluginData: PluginValidationDataExtension,
|
|
@@ -160,12 +145,7 @@ def rule_fg_nl_04(
|
|
|
160
145
|
|
|
161
146
|
@validation(
|
|
162
147
|
hook=ValidationHook.XBRL_FINALLY,
|
|
163
|
-
disclosureSystems=
|
|
164
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
165
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
166
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
167
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
168
|
-
],
|
|
148
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
169
149
|
)
|
|
170
150
|
def rule_fg_nl_05(
|
|
171
151
|
pluginData: PluginValidationDataExtension,
|
|
@@ -193,7 +173,6 @@ def rule_fg_nl_05(
|
|
|
193
173
|
continue
|
|
194
174
|
usedPrefixes.add(elt.qname.prefix)
|
|
195
175
|
for attrTag in elt.keys():
|
|
196
|
-
attrTag = cast(str, attrTag)
|
|
197
176
|
if attrTag.startswith("{"):
|
|
198
177
|
prefix = XmlUtil.clarkNotationToPrefixNsLocalname(elt, attrTag, isAttribute=True)[0]
|
|
199
178
|
if prefix:
|
|
@@ -230,12 +209,7 @@ def rule_fg_nl_05(
|
|
|
230
209
|
|
|
231
210
|
@validation(
|
|
232
211
|
hook=ValidationHook.XBRL_FINALLY,
|
|
233
|
-
disclosureSystems=
|
|
234
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
235
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
236
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
237
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
238
|
-
],
|
|
212
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
239
213
|
)
|
|
240
214
|
def rule_fg_nl_09(
|
|
241
215
|
pluginData: PluginValidationDataExtension,
|
|
@@ -257,12 +231,7 @@ def rule_fg_nl_09(
|
|
|
257
231
|
|
|
258
232
|
@validation(
|
|
259
233
|
hook=ValidationHook.XBRL_FINALLY,
|
|
260
|
-
disclosureSystems=
|
|
261
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
262
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
263
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
264
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
265
|
-
],
|
|
234
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
266
235
|
)
|
|
267
236
|
def rule_fg_nl_11(
|
|
268
237
|
pluginData: PluginValidationDataExtension,
|
|
@@ -16,12 +16,7 @@ from arelle.utils.PluginHooks import ValidationHook
|
|
|
16
16
|
from arelle.utils.validate.Decorator import validation
|
|
17
17
|
from arelle.utils.validate.Validation import Validation
|
|
18
18
|
from lxml.etree import _Element
|
|
19
|
-
from ..DisclosureSystems import
|
|
20
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
21
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
22
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
23
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
24
|
-
)
|
|
19
|
+
from ..DisclosureSystems import NT_DISCLOSURE_SYSTEMS
|
|
25
20
|
from ..PluginValidationDataExtension import PluginValidationDataExtension
|
|
26
21
|
|
|
27
22
|
_: TypeGetText
|
|
@@ -33,12 +28,7 @@ ACCEPTED_DECIMAL_VALUES = ('INF', '-9', '-6', '-3', '0', '2')
|
|
|
33
28
|
|
|
34
29
|
@validation(
|
|
35
30
|
hook=ValidationHook.XBRL_FINALLY,
|
|
36
|
-
disclosureSystems=
|
|
37
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
38
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
39
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
40
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
41
|
-
],
|
|
31
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
42
32
|
)
|
|
43
33
|
def rule_fr_kvk_1_01(
|
|
44
34
|
pluginData: PluginValidationDataExtension,
|
|
@@ -63,12 +53,7 @@ def rule_fr_kvk_1_01(
|
|
|
63
53
|
|
|
64
54
|
@validation(
|
|
65
55
|
hook=ValidationHook.XBRL_FINALLY,
|
|
66
|
-
disclosureSystems=
|
|
67
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
68
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
69
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
70
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
71
|
-
],
|
|
56
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
72
57
|
)
|
|
73
58
|
def rule_fr_kvk_2_01(
|
|
74
59
|
pluginData: PluginValidationDataExtension,
|
|
@@ -95,12 +80,7 @@ def rule_fr_kvk_2_01(
|
|
|
95
80
|
|
|
96
81
|
@validation(
|
|
97
82
|
hook=ValidationHook.XBRL_FINALLY,
|
|
98
|
-
disclosureSystems=
|
|
99
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
100
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
101
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
102
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
103
|
-
],
|
|
83
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
104
84
|
)
|
|
105
85
|
def rule_fr_kvk_2_02(
|
|
106
86
|
pluginData: PluginValidationDataExtension,
|
|
@@ -131,12 +111,7 @@ def rule_fr_kvk_2_02(
|
|
|
131
111
|
|
|
132
112
|
@validation(
|
|
133
113
|
hook=ValidationHook.XBRL_FINALLY,
|
|
134
|
-
disclosureSystems=
|
|
135
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
136
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
137
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
138
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
139
|
-
],
|
|
114
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
140
115
|
)
|
|
141
116
|
def rule_fr_kvk_2_03(
|
|
142
117
|
pluginData: PluginValidationDataExtension,
|
|
@@ -171,12 +146,7 @@ def rule_fr_kvk_2_03(
|
|
|
171
146
|
|
|
172
147
|
@validation(
|
|
173
148
|
hook=ValidationHook.XBRL_FINALLY,
|
|
174
|
-
disclosureSystems=
|
|
175
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
176
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
177
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
178
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
179
|
-
],
|
|
149
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
180
150
|
)
|
|
181
151
|
def rule_fr_kvk_5_01(
|
|
182
152
|
pluginData: PluginValidationDataExtension,
|
|
@@ -204,12 +174,7 @@ def rule_fr_kvk_5_01(
|
|
|
204
174
|
|
|
205
175
|
@validation(
|
|
206
176
|
hook=ValidationHook.XBRL_FINALLY,
|
|
207
|
-
disclosureSystems=
|
|
208
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
209
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
210
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
211
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
212
|
-
],
|
|
177
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
213
178
|
)
|
|
214
179
|
def rule_fr_kvk_5_02(
|
|
215
180
|
pluginData: PluginValidationDataExtension,
|
|
@@ -22,12 +22,7 @@ from arelle.utils.Contexts import partitionModelXbrlContexts
|
|
|
22
22
|
from arelle.utils.PluginHooks import ValidationHook
|
|
23
23
|
from arelle.utils.validate.Decorator import validation
|
|
24
24
|
from arelle.utils.validate.Validation import Validation
|
|
25
|
-
from ..DisclosureSystems import
|
|
26
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
27
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
28
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
29
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
30
|
-
)
|
|
25
|
+
from ..DisclosureSystems import NT_DISCLOSURE_SYSTEMS
|
|
31
26
|
from ..PluginValidationDataExtension import PluginValidationDataExtension
|
|
32
27
|
|
|
33
28
|
_: TypeGetText
|
|
@@ -72,12 +67,7 @@ XHTML_LIST_ITEM_TYPES = {
|
|
|
72
67
|
|
|
73
68
|
@validation(
|
|
74
69
|
hook=ValidationHook.XBRL_FINALLY,
|
|
75
|
-
disclosureSystems=
|
|
76
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
77
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
78
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
79
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
80
|
-
],
|
|
70
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
81
71
|
)
|
|
82
72
|
def rule_fr_nl_1_02(
|
|
83
73
|
pluginData: PluginValidationDataExtension,
|
|
@@ -123,12 +113,7 @@ def rule_fr_nl_1_02(
|
|
|
123
113
|
|
|
124
114
|
@validation(
|
|
125
115
|
hook=ValidationHook.XBRL_FINALLY,
|
|
126
|
-
disclosureSystems=
|
|
127
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
128
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
129
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
130
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
131
|
-
],
|
|
116
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
132
117
|
)
|
|
133
118
|
def rule_fr_nl_1_03(
|
|
134
119
|
pluginData: PluginValidationDataExtension,
|
|
@@ -151,12 +136,7 @@ def rule_fr_nl_1_03(
|
|
|
151
136
|
|
|
152
137
|
@validation(
|
|
153
138
|
hook=ValidationHook.XBRL_FINALLY,
|
|
154
|
-
disclosureSystems=
|
|
155
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
156
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
157
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
158
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
159
|
-
],
|
|
139
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
160
140
|
)
|
|
161
141
|
def rule_fr_nl_1_04(
|
|
162
142
|
pluginData: PluginValidationDataExtension,
|
|
@@ -211,12 +191,7 @@ def rule_fr_nl_1_04(
|
|
|
211
191
|
|
|
212
192
|
@validation(
|
|
213
193
|
hook=ValidationHook.XBRL_FINALLY,
|
|
214
|
-
disclosureSystems=
|
|
215
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
216
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
217
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
218
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
219
|
-
],
|
|
194
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
220
195
|
)
|
|
221
196
|
def rule_fr_nl_1_05(
|
|
222
197
|
pluginData: PluginValidationDataExtension,
|
|
@@ -239,12 +214,7 @@ def rule_fr_nl_1_05(
|
|
|
239
214
|
|
|
240
215
|
@validation(
|
|
241
216
|
hook=ValidationHook.XBRL_FINALLY,
|
|
242
|
-
disclosureSystems=
|
|
243
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
244
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
245
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
246
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
247
|
-
],
|
|
217
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
248
218
|
)
|
|
249
219
|
def rule_fr_nl_1_06(
|
|
250
220
|
pluginData: PluginValidationDataExtension,
|
|
@@ -273,12 +243,7 @@ def rule_fr_nl_1_06(
|
|
|
273
243
|
|
|
274
244
|
@validation(
|
|
275
245
|
hook=ValidationHook.XBRL_FINALLY,
|
|
276
|
-
disclosureSystems=
|
|
277
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
278
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
279
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
280
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
281
|
-
],
|
|
246
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
282
247
|
)
|
|
283
248
|
def rule_fr_nl_1_01(
|
|
284
249
|
pluginData: PluginValidationDataExtension,
|
|
@@ -307,12 +272,7 @@ def rule_fr_nl_1_01(
|
|
|
307
272
|
|
|
308
273
|
@validation(
|
|
309
274
|
hook=ValidationHook.XBRL_FINALLY,
|
|
310
|
-
disclosureSystems=
|
|
311
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
312
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
313
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
314
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
315
|
-
],
|
|
275
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
316
276
|
)
|
|
317
277
|
def rule_fr_nl_2_03(
|
|
318
278
|
pluginData: PluginValidationDataExtension,
|
|
@@ -337,12 +297,7 @@ def rule_fr_nl_2_03(
|
|
|
337
297
|
|
|
338
298
|
@validation(
|
|
339
299
|
hook=ValidationHook.XBRL_FINALLY,
|
|
340
|
-
disclosureSystems=
|
|
341
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
342
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
343
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
344
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
345
|
-
],
|
|
300
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
346
301
|
)
|
|
347
302
|
def rule_fr_nl_2_04(
|
|
348
303
|
pluginData: PluginValidationDataExtension,
|
|
@@ -369,12 +324,7 @@ def rule_fr_nl_2_04(
|
|
|
369
324
|
|
|
370
325
|
@validation(
|
|
371
326
|
hook=ValidationHook.XBRL_FINALLY,
|
|
372
|
-
disclosureSystems=
|
|
373
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
374
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
375
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
376
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
377
|
-
],
|
|
327
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
378
328
|
)
|
|
379
329
|
def rule_fr_nl_2_05(
|
|
380
330
|
pluginData: PluginValidationDataExtension,
|
|
@@ -401,12 +351,7 @@ def rule_fr_nl_2_05(
|
|
|
401
351
|
|
|
402
352
|
@validation(
|
|
403
353
|
hook=ValidationHook.XBRL_FINALLY,
|
|
404
|
-
disclosureSystems=
|
|
405
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
406
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
407
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
408
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
409
|
-
],
|
|
354
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
410
355
|
)
|
|
411
356
|
def rule_fr_nl_2_06(
|
|
412
357
|
pluginData: PluginValidationDataExtension,
|
|
@@ -449,12 +394,7 @@ def rule_fr_nl_2_06(
|
|
|
449
394
|
|
|
450
395
|
@validation(
|
|
451
396
|
hook=ValidationHook.XBRL_FINALLY,
|
|
452
|
-
disclosureSystems=
|
|
453
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
454
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
455
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
456
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
457
|
-
],
|
|
397
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
458
398
|
)
|
|
459
399
|
def rule_fr_nl_2_07(
|
|
460
400
|
pluginData: PluginValidationDataExtension,
|
|
@@ -476,12 +416,7 @@ def rule_fr_nl_2_07(
|
|
|
476
416
|
|
|
477
417
|
@validation(
|
|
478
418
|
hook=ValidationHook.XBRL_FINALLY,
|
|
479
|
-
disclosureSystems=
|
|
480
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
481
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
482
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
483
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
484
|
-
],
|
|
419
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
485
420
|
)
|
|
486
421
|
def rule_fr_nl_3_01(
|
|
487
422
|
pluginData: PluginValidationDataExtension,
|
|
@@ -509,12 +444,7 @@ def rule_fr_nl_3_01(
|
|
|
509
444
|
|
|
510
445
|
@validation(
|
|
511
446
|
hook=ValidationHook.XBRL_FINALLY,
|
|
512
|
-
disclosureSystems=
|
|
513
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
514
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
515
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
516
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
517
|
-
],
|
|
447
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
518
448
|
)
|
|
519
449
|
def rule_fr_nl_3_02(
|
|
520
450
|
pluginData: PluginValidationDataExtension,
|
|
@@ -536,12 +466,7 @@ def rule_fr_nl_3_02(
|
|
|
536
466
|
|
|
537
467
|
@validation(
|
|
538
468
|
hook=ValidationHook.XBRL_FINALLY,
|
|
539
|
-
disclosureSystems=
|
|
540
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
541
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
542
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
543
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
544
|
-
],
|
|
469
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
545
470
|
)
|
|
546
471
|
def rule_fr_nl_3_03(
|
|
547
472
|
pluginData: PluginValidationDataExtension,
|
|
@@ -552,9 +477,9 @@ def rule_fr_nl_3_03(
|
|
|
552
477
|
"""
|
|
553
478
|
FR-NL-3.03: An XBRL instance document MUST NOT contain unused contexts
|
|
554
479
|
"""
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
for context in
|
|
480
|
+
unusedContexts = list(set(val.modelXbrl.contexts.values()) - set(val.modelXbrl.contextsInUse))
|
|
481
|
+
unusedContexts.sort(key=lambda x: x.id if x.id is not None else "")
|
|
482
|
+
for context in unusedContexts:
|
|
558
483
|
yield Validation.error(
|
|
559
484
|
codes='NL.FR-NL-3.03',
|
|
560
485
|
msg=_('Unused context must not exist in XBRL instance document'),
|
|
@@ -564,12 +489,7 @@ def rule_fr_nl_3_03(
|
|
|
564
489
|
|
|
565
490
|
@validation(
|
|
566
491
|
hook=ValidationHook.XBRL_FINALLY,
|
|
567
|
-
disclosureSystems=
|
|
568
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
569
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
570
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
571
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
572
|
-
],
|
|
492
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
573
493
|
)
|
|
574
494
|
def rule_fr_nl_3_04(
|
|
575
495
|
pluginData: PluginValidationDataExtension,
|
|
@@ -591,12 +511,7 @@ def rule_fr_nl_3_04(
|
|
|
591
511
|
|
|
592
512
|
@validation(
|
|
593
513
|
hook=ValidationHook.XBRL_FINALLY,
|
|
594
|
-
disclosureSystems=
|
|
595
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
596
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
597
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
598
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
599
|
-
],
|
|
514
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
600
515
|
)
|
|
601
516
|
def rule_fr_nl_4_01(
|
|
602
517
|
pluginData: PluginValidationDataExtension,
|
|
@@ -621,12 +536,7 @@ def rule_fr_nl_4_01(
|
|
|
621
536
|
|
|
622
537
|
@validation(
|
|
623
538
|
hook=ValidationHook.XBRL_FINALLY,
|
|
624
|
-
disclosureSystems=
|
|
625
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
626
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
627
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
628
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
629
|
-
],
|
|
539
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
630
540
|
)
|
|
631
541
|
def rule_fr_nl_4_02(
|
|
632
542
|
pluginData: PluginValidationDataExtension,
|
|
@@ -637,10 +547,9 @@ def rule_fr_nl_4_02(
|
|
|
637
547
|
"""
|
|
638
548
|
FR-NL-4.02: An XBRL instance document MUST NOT contain unused 'xbrli:unit' elements
|
|
639
549
|
"""
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
for unit in unused_units:
|
|
550
|
+
unusedUnits = list(set(val.modelXbrl.units.values()) - set(val.modelXbrl.unitsInUse))
|
|
551
|
+
unusedUnits.sort(key=lambda x: x.hash)
|
|
552
|
+
for unit in unusedUnits:
|
|
644
553
|
yield Validation.error(
|
|
645
554
|
codes='NL.FR-NL-4.02',
|
|
646
555
|
msg=_('Unused unit must not exist in the XBRL instance document'),
|
|
@@ -650,12 +559,7 @@ def rule_fr_nl_4_02(
|
|
|
650
559
|
|
|
651
560
|
@validation(
|
|
652
561
|
hook=ValidationHook.XBRL_FINALLY,
|
|
653
|
-
disclosureSystems=
|
|
654
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
655
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
656
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
657
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
658
|
-
],
|
|
562
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
659
563
|
)
|
|
660
564
|
def rule_fr_nl_5_01(
|
|
661
565
|
pluginData: PluginValidationDataExtension,
|
|
@@ -684,12 +588,7 @@ def rule_fr_nl_5_01(
|
|
|
684
588
|
|
|
685
589
|
@validation(
|
|
686
590
|
hook=ValidationHook.XBRL_FINALLY,
|
|
687
|
-
disclosureSystems=
|
|
688
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
689
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
690
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
691
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
692
|
-
],
|
|
591
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
693
592
|
)
|
|
694
593
|
def rule_fr_nl_5_03(
|
|
695
594
|
pluginData: PluginValidationDataExtension,
|
|
@@ -711,12 +610,7 @@ def rule_fr_nl_5_03(
|
|
|
711
610
|
|
|
712
611
|
@validation(
|
|
713
612
|
hook=ValidationHook.XBRL_FINALLY,
|
|
714
|
-
disclosureSystems=
|
|
715
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
716
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
717
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
718
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
719
|
-
],
|
|
613
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
720
614
|
)
|
|
721
615
|
def rule_fr_nl_5_06(
|
|
722
616
|
pluginData: PluginValidationDataExtension,
|
|
@@ -738,12 +632,7 @@ def rule_fr_nl_5_06(
|
|
|
738
632
|
|
|
739
633
|
@validation(
|
|
740
634
|
hook=ValidationHook.XBRL_FINALLY,
|
|
741
|
-
disclosureSystems=
|
|
742
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
743
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
744
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
745
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
746
|
-
],
|
|
635
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
747
636
|
)
|
|
748
637
|
def rule_fr_nl_5_11(
|
|
749
638
|
pluginData: PluginValidationDataExtension,
|
|
@@ -802,10 +691,10 @@ def rule_fr_nl_5_11(
|
|
|
802
691
|
styleProperty = styleValues[0].strip()
|
|
803
692
|
if styleProperty not in XHTML_ALLOWED_STYLES:
|
|
804
693
|
invalidStyles.add(styleProperty)
|
|
805
|
-
tag = qname(elt.tag).localName
|
|
694
|
+
tag = qname(cast(str, elt.tag)).localName
|
|
806
695
|
parent = elt.getparent()
|
|
807
696
|
if tag == 'li' and parent is not None:
|
|
808
|
-
parentTag = qname(parent.tag).localName
|
|
697
|
+
parentTag = qname(cast(str, parent.tag)).localName
|
|
809
698
|
if parentTag in XHTML_LIST_ITEM_TYPES:
|
|
810
699
|
typeAttr = elt.get('type')
|
|
811
700
|
if typeAttr not in XHTML_LIST_ITEM_TYPES[parentTag]:
|
|
@@ -841,12 +730,7 @@ def rule_fr_nl_5_11(
|
|
|
841
730
|
|
|
842
731
|
@validation(
|
|
843
732
|
hook=ValidationHook.XBRL_FINALLY,
|
|
844
|
-
disclosureSystems=
|
|
845
|
-
DISCLOSURE_SYSTEM_NT16,
|
|
846
|
-
DISCLOSURE_SYSTEM_NT17,
|
|
847
|
-
DISCLOSURE_SYSTEM_NT18,
|
|
848
|
-
DISCLOSURE_SYSTEM_NT19,
|
|
849
|
-
],
|
|
733
|
+
disclosureSystems=NT_DISCLOSURE_SYSTEMS,
|
|
850
734
|
)
|
|
851
735
|
def rule_fr_nl_6_01(
|
|
852
736
|
pluginData: PluginValidationDataExtension,
|