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
|
@@ -6,7 +6,7 @@ from __future__ import annotations
|
|
|
6
6
|
from collections import defaultdict
|
|
7
7
|
from typing import Any, Iterable
|
|
8
8
|
|
|
9
|
-
from arelle import XbrlConst
|
|
9
|
+
from arelle import XbrlConst, ModelDocument
|
|
10
10
|
from arelle.ModelDtsObject import ModelResource, ModelConcept
|
|
11
11
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
12
12
|
from arelle.typing import TypeGetText
|
|
@@ -60,7 +60,7 @@ def rule_frta_2_1_10(
|
|
|
60
60
|
**kwargs: Any,
|
|
61
61
|
) -> Iterable[Validation]:
|
|
62
62
|
"""
|
|
63
|
-
EDINET: [FRTA.2.1.10] All extension taxonomy concepts must have a standard label.
|
|
63
|
+
EDINET.EC5710W: [FRTA.2.1.10] All extension taxonomy concepts must have a standard label.
|
|
64
64
|
"""
|
|
65
65
|
errors = []
|
|
66
66
|
for concept in val.modelXbrl.qnameConcepts.values():
|
|
@@ -70,7 +70,7 @@ def rule_frta_2_1_10(
|
|
|
70
70
|
errors.append(concept)
|
|
71
71
|
if len(errors) > 0:
|
|
72
72
|
yield Validation.warning(
|
|
73
|
-
codes='EDINET.FRTA.2.1.10',
|
|
73
|
+
codes='EDINET.EC5710W.FRTA.2.1.10',
|
|
74
74
|
msg=_("All extension taxonomy concepts must have a standard label. "
|
|
75
75
|
"A standard label is not specified for a concept in an "
|
|
76
76
|
"extension taxonomy. When adding a concept to an extension taxonomy, "
|
|
@@ -180,3 +180,122 @@ def rule_frta_3_1_10(
|
|
|
180
180
|
msg=_("Role types defined in the extension taxonomy must have a definition."),
|
|
181
181
|
modelObject=errors,
|
|
182
182
|
)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
@validation(
|
|
186
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
187
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
188
|
+
)
|
|
189
|
+
def rule_frta_4_2_2(
|
|
190
|
+
pluginData: PluginValidationDataExtension,
|
|
191
|
+
val: ValidateXbrl,
|
|
192
|
+
*args: Any,
|
|
193
|
+
**kwargs: Any,
|
|
194
|
+
) -> Iterable[Validation]:
|
|
195
|
+
"""
|
|
196
|
+
EDINET.EC5710W: [FRTA.4.2.2] Taxonomy schemas must be defined in XML documents in which the XML Schema 'schema'
|
|
197
|
+
element appears once only as the root element.
|
|
198
|
+
"""
|
|
199
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
200
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl):
|
|
201
|
+
continue
|
|
202
|
+
# check for nested Schema declarations which are not allowed.
|
|
203
|
+
schemaElts = {elt for elt in modelDocument.xmlRootElement.iterdescendants(XbrlConst.qnXsdSchema.clarkNotation)}
|
|
204
|
+
if len(schemaElts) > 0:
|
|
205
|
+
yield Validation.warning(
|
|
206
|
+
codes='EDINET.EC5710W.FRTA.4.2.2',
|
|
207
|
+
msg=_("The root of a taxonomy schema file MUST be the XMLSchema element."),
|
|
208
|
+
modelObject=modelDocument,
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
@validation(
|
|
213
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
214
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
215
|
+
)
|
|
216
|
+
def rule_frta_4_2_4(
|
|
217
|
+
pluginData: PluginValidationDataExtension,
|
|
218
|
+
val: ValidateXbrl,
|
|
219
|
+
*args: Any,
|
|
220
|
+
**kwargs: Any,
|
|
221
|
+
) -> Iterable[Validation]:
|
|
222
|
+
"""
|
|
223
|
+
EDINET.EC5710W: [FRTA.4.2.4] Taxonomy schemas must declare elementFormDefault to be 'qualified',
|
|
224
|
+
attributeFormDefault must have the value 'unqualified', and the 'form' attribute
|
|
225
|
+
must not appear on element and attribute declarations.
|
|
226
|
+
"""
|
|
227
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
228
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl) or not modelDocument.type == ModelDocument.Type.SCHEMA:
|
|
229
|
+
continue
|
|
230
|
+
rootElt = modelDocument.xmlRootElement
|
|
231
|
+
if rootElt.get('elementFormDefault') != 'qualified' or rootElt.get('attributeFormDefault') != 'unqualified':
|
|
232
|
+
yield Validation.warning(
|
|
233
|
+
codes='EDINET.EC5710W.FRTA.4.2.4',
|
|
234
|
+
msg=_("The XMLSchema root in taxonomy schema files must have the 'elementFormDefault' attribute set as "
|
|
235
|
+
"'qualified' and the 'attributeFormDefault' attribute set as 'unqualified'"),
|
|
236
|
+
modelObject=modelDocument,
|
|
237
|
+
)
|
|
238
|
+
formUsages = []
|
|
239
|
+
for elt in rootElt.iterdescendants([XbrlConst.qnXsdElement.clarkNotation, XbrlConst.qnXsdAttribute.clarkNotation]):
|
|
240
|
+
if elt.get('form') is not None:
|
|
241
|
+
formUsages.append(elt)
|
|
242
|
+
if len(formUsages) > 0:
|
|
243
|
+
yield Validation.warning(
|
|
244
|
+
codes='EDINET.EC5710W.FRTA.4.2.4',
|
|
245
|
+
msg=_("The 'form' attribute is not allowed on 'xsd:element' or 'xsd:attribute' declarations in a schema file"),
|
|
246
|
+
modelObject=formUsages,
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
@validation(
|
|
251
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
252
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
253
|
+
)
|
|
254
|
+
def rule_frta_4_2_7(
|
|
255
|
+
pluginData: PluginValidationDataExtension,
|
|
256
|
+
val: ValidateXbrl,
|
|
257
|
+
*args: Any,
|
|
258
|
+
**kwargs: Any,
|
|
259
|
+
) -> Iterable[Validation]:
|
|
260
|
+
"""
|
|
261
|
+
EDINET.EC5710W: [FRTA.4.2.7] A label linkbase should only contain labels defined in a single language.
|
|
262
|
+
"""
|
|
263
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
264
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl) or not modelDocument.type == ModelDocument.Type.LINKBASE:
|
|
265
|
+
continue
|
|
266
|
+
usedLangs = {
|
|
267
|
+
elt.get(XbrlConst.qnXmlLang.clarkNotation)
|
|
268
|
+
for elt in modelDocument.xmlRootElement.iterdescendants(XbrlConst.qnLinkLabel.clarkNotation)
|
|
269
|
+
}
|
|
270
|
+
if len(usedLangs) > 1:
|
|
271
|
+
yield Validation.warning(
|
|
272
|
+
codes='EDINET.EC5710W.FRTA.4.2.7',
|
|
273
|
+
msg=_("A label linkbase should only contain labels defined in a single language. This linkbase uses the following languages: %(langs)s"),
|
|
274
|
+
langs=usedLangs,
|
|
275
|
+
modelObject=modelDocument,
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
@validation(
|
|
280
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
281
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
282
|
+
)
|
|
283
|
+
def rule_frta_4_2_11(
|
|
284
|
+
pluginData: PluginValidationDataExtension,
|
|
285
|
+
val: ValidateXbrl,
|
|
286
|
+
*args: Any,
|
|
287
|
+
**kwargs: Any,
|
|
288
|
+
) -> Iterable[Validation]:
|
|
289
|
+
"""
|
|
290
|
+
EDINET.EC5710W: [FRTA.4.2.11] Every schema in a DTS must define a non-empty targetNamespace attribute value
|
|
291
|
+
"""
|
|
292
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
293
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl) or not modelDocument.type == ModelDocument.Type.SCHEMA:
|
|
294
|
+
continue
|
|
295
|
+
rootElt = modelDocument.xmlRootElement
|
|
296
|
+
if rootElt.get('targetNamespace') is None or rootElt.get('targetNamespace') == "":
|
|
297
|
+
yield Validation.warning(
|
|
298
|
+
codes='EDINET.EC5710W.FRTA.4.2.11',
|
|
299
|
+
msg=_("Every schema in a DTS must define a non-empty targetNamespace attribute value."),
|
|
300
|
+
modelObject=modelDocument,
|
|
301
|
+
)
|