arelle-release 2.37.63__py3-none-any.whl → 2.37.65__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/CntlrCmdLine.py +3 -0
- arelle/DisclosureSystem.py +2 -0
- arelle/UrlUtil.py +3 -0
- arelle/ValidateFilingText.py +3 -3
- arelle/_version.py +2 -2
- arelle/config/disclosuresystems.xsd +1 -0
- arelle/plugin/validate/DBA/rules/__init__.py +2 -2
- arelle/plugin/validate/EDINET/Constants.py +5 -1
- arelle/plugin/validate/EDINET/ContextRequirement.py +58 -0
- arelle/plugin/validate/EDINET/ControllerPluginData.py +69 -3
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +1 -1
- arelle/plugin/validate/EDINET/__init__.py +10 -0
- arelle/plugin/validate/EDINET/resources/config.xml +2 -1
- arelle/plugin/validate/EDINET/rules/contexts.py +205 -2
- arelle/plugin/validate/EDINET/rules/frta.py +2 -2
- arelle/plugin/validate/EDINET/rules/gfm.py +140 -1
- arelle/plugin/validate/EDINET/rules/upload.py +68 -0
- 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 +3 -3
- arelle/plugin/validate/ESEF/ESEF_Current/DTS.py +5 -0
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +23 -2
- arelle/plugin/validate/ESEF/resources/authority-validations.json +28 -4
- arelle/utils/validate/ESEFImage.py +3 -3
- {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/METADATA +1 -1
- {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/RECORD +30 -29
- {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/top_level.txt +0 -0
|
@@ -3,13 +3,14 @@ See COPYRIGHT.md for copyright information.
|
|
|
3
3
|
"""
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import contextlib
|
|
6
7
|
from collections import defaultdict
|
|
7
8
|
from datetime import timedelta
|
|
8
9
|
from typing import Any, cast, Iterable
|
|
9
10
|
|
|
10
11
|
import regex
|
|
11
12
|
|
|
12
|
-
from arelle import ModelDocument, XbrlConst, XmlUtil
|
|
13
|
+
from arelle import ModelDocument, UrlUtil, XbrlConst, XmlUtil
|
|
13
14
|
from arelle.HtmlUtil import attrValue
|
|
14
15
|
from arelle.LinkbaseType import LinkbaseType
|
|
15
16
|
from arelle.ModelDtsObject import ModelConcept
|
|
@@ -728,6 +729,44 @@ def rule_gfm_1_3_1(
|
|
|
728
729
|
)
|
|
729
730
|
|
|
730
731
|
|
|
732
|
+
@validation(
|
|
733
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
734
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
735
|
+
)
|
|
736
|
+
def rule_gfm_1_3_2(
|
|
737
|
+
pluginData: PluginValidationDataExtension,
|
|
738
|
+
val: ValidateXbrl,
|
|
739
|
+
*args: Any,
|
|
740
|
+
**kwargs: Any,
|
|
741
|
+
) -> Iterable[Validation]:
|
|
742
|
+
"""
|
|
743
|
+
EDINET.EC5700W: [GFM 1.3.2] The schemaLocation attribute of the xsd:import element specifying the EDINET taxonomy does not point to a valid location.
|
|
744
|
+
|
|
745
|
+
GFM-1.3.2: If an xsd:import element has a namespace attribute equal to a standard taxonomy
|
|
746
|
+
schema, then its schemaLocation attribute must be the standard taxonomy assigned
|
|
747
|
+
to that namespace.
|
|
748
|
+
"""
|
|
749
|
+
for document in val.modelXbrl.urlDocs.values():
|
|
750
|
+
if not pluginData.isExtensionUri(document.uri, val.modelXbrl) or not document.type == ModelDocument.Type.SCHEMA:
|
|
751
|
+
continue
|
|
752
|
+
for refDoc in document.referencesDocument.values():
|
|
753
|
+
if 'import' not in refDoc.referenceTypes:
|
|
754
|
+
continue
|
|
755
|
+
namespace = refDoc.referringModelObject.attrib.get('namespace')
|
|
756
|
+
schemaLocation = refDoc.referringModelObject.attrib.get('schemaLocation')
|
|
757
|
+
if not namespace or not schemaLocation:
|
|
758
|
+
continue
|
|
759
|
+
expectedXSDLocationSet = val.disclosureSystem.standardTaxonomiesDict.get(namespace)
|
|
760
|
+
if expectedXSDLocationSet is not None and schemaLocation not in expectedXSDLocationSet:
|
|
761
|
+
yield Validation.warning(
|
|
762
|
+
codes='EDINET.EC5700W.GFM.1.3.2',
|
|
763
|
+
msg=_("The schemaLocation attribute of the xsd:import element specifying the EDINET taxonomy does not point to a valid location. "
|
|
764
|
+
"The schemaLocation attribute value '%(schemaLocation)s'."),
|
|
765
|
+
schemaLocation = schemaLocation,
|
|
766
|
+
modelObject = refDoc.referringModelObject
|
|
767
|
+
)
|
|
768
|
+
|
|
769
|
+
|
|
731
770
|
@validation(
|
|
732
771
|
hook=ValidationHook.XBRL_FINALLY,
|
|
733
772
|
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
@@ -1218,6 +1257,106 @@ def rule_gfm_1_3_31(
|
|
|
1218
1257
|
)
|
|
1219
1258
|
|
|
1220
1259
|
|
|
1260
|
+
@validation(
|
|
1261
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1262
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1263
|
+
)
|
|
1264
|
+
def rule_gfm_1_4_4(
|
|
1265
|
+
pluginData: PluginValidationDataExtension,
|
|
1266
|
+
val: ValidateXbrl,
|
|
1267
|
+
*args: Any,
|
|
1268
|
+
**kwargs: Any,
|
|
1269
|
+
) -> Iterable[Validation]:
|
|
1270
|
+
"""
|
|
1271
|
+
EDINET.EC5700W: [GFM 1.4.4] If the type attribute is "extended" or "resource", set the xlink:role attribute to the extended link role.
|
|
1272
|
+
|
|
1273
|
+
GFM 1.4.4: The xlink:role attribute of an element with a type="extended" attribute or a
|
|
1274
|
+
type="resource" attribute must be present and must not be empty.
|
|
1275
|
+
"""
|
|
1276
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
1277
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl):
|
|
1278
|
+
continue
|
|
1279
|
+
rootElt = modelDocument.xmlRootElement
|
|
1280
|
+
ns = {'xlink': 'http://www.w3.org/1999/xlink'}
|
|
1281
|
+
for elt in rootElt.xpath('//*[@xlink:type="extended" or @xlink:type="resource"]', namespaces=ns):
|
|
1282
|
+
xlinkRole = elt.get(XbrlConst.qnXlinkRole.clarkNotation)
|
|
1283
|
+
if not xlinkRole:
|
|
1284
|
+
yield Validation.warning(
|
|
1285
|
+
codes='EDINET.EC5700W.GFM.1.4.4',
|
|
1286
|
+
msg=_("If the type attribute is 'extended' or 'resource', set the xlink:role attribute to the extended link role."
|
|
1287
|
+
"%(element)s is missing an xlink:role"),
|
|
1288
|
+
modelObject=elt, element=elt.qname
|
|
1289
|
+
)
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
@validation(
|
|
1293
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1294
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1295
|
+
)
|
|
1296
|
+
def rule_gfm_1_4_6(
|
|
1297
|
+
pluginData: PluginValidationDataExtension,
|
|
1298
|
+
val: ValidateXbrl,
|
|
1299
|
+
*args: Any,
|
|
1300
|
+
**kwargs: Any,
|
|
1301
|
+
) -> Iterable[Validation]:
|
|
1302
|
+
"""
|
|
1303
|
+
EDINET.EC5700W: [GFM 1.4.6] Please correct the value of the link:arcroleRef attribute to
|
|
1304
|
+
one specified in the XBRL 2.1 specification or the EDINET taxonomy.
|
|
1305
|
+
GFM 1.4.6: The text preceding a sharp sign "#" in an xlink:href attribute of link:arcroleRef must
|
|
1306
|
+
be a standard taxonomy or in a file recognised in the disclosure system.
|
|
1307
|
+
"""
|
|
1308
|
+
|
|
1309
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
1310
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl):
|
|
1311
|
+
continue
|
|
1312
|
+
rootElt = modelDocument.xmlRootElement
|
|
1313
|
+
for elt in rootElt.iter(XbrlConst.qnLinkArcroleRef.clarkNotation):
|
|
1314
|
+
refUri = elt.get("arcroleURI")
|
|
1315
|
+
hrefAttr = elt.get(XbrlConst.qnXlinkHref.clarkNotation)
|
|
1316
|
+
hrefUri, hrefId = UrlUtil.splitDecodeFragment(hrefAttr)
|
|
1317
|
+
if hrefUri not in val.disclosureSystem.standardTaxonomiesDict:
|
|
1318
|
+
yield Validation.warning(
|
|
1319
|
+
codes='EDINET.EC5700W.GFM.1.4.6',
|
|
1320
|
+
msg=_("Please correct the value of the link:arcroleRef attribute to one specified in the XBRL 2.1 specification or the EDINET taxonomy."
|
|
1321
|
+
" link:arcroleRef: %(xlinkHref)s, arcrole: %(refURI)s,"),
|
|
1322
|
+
modelObject=elt,
|
|
1323
|
+
refURI=refUri,
|
|
1324
|
+
xlinkHref=hrefUri
|
|
1325
|
+
)
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
@validation(
|
|
1329
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1330
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1331
|
+
)
|
|
1332
|
+
def rule_gfm_1_4_8(
|
|
1333
|
+
pluginData: PluginValidationDataExtension,
|
|
1334
|
+
val: ValidateXbrl,
|
|
1335
|
+
*args: Any,
|
|
1336
|
+
**kwargs: Any,
|
|
1337
|
+
) -> Iterable[Validation]:
|
|
1338
|
+
"""
|
|
1339
|
+
EDINET.EC5700W: [GFM 1.4.8] Correct the priority attribute value so that it is less than 10.
|
|
1340
|
+
"""
|
|
1341
|
+
|
|
1342
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
1343
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl):
|
|
1344
|
+
continue
|
|
1345
|
+
rootElt = modelDocument.xmlRootElement
|
|
1346
|
+
ns = {'xlink': 'http://www.w3.org/1999/xlink'}
|
|
1347
|
+
for elt in rootElt.xpath('//*[@xlink:type="arc"][@priority]', namespaces=ns):
|
|
1348
|
+
priority = elt.get("priority")
|
|
1349
|
+
with contextlib.suppress(ValueError, TypeError):
|
|
1350
|
+
if int(priority) >= 10:
|
|
1351
|
+
yield Validation.warning(
|
|
1352
|
+
codes='EDINET.EC5700W.GFM.1.4.8',
|
|
1353
|
+
msg=_("Correct the priority attribute value so that it is less than 10. Arc element: %(arcName)s, priority: %(priority)s"),
|
|
1354
|
+
arcName=elt.qname,
|
|
1355
|
+
modelObject=elt,
|
|
1356
|
+
priority=priority,
|
|
1357
|
+
)
|
|
1358
|
+
|
|
1359
|
+
|
|
1221
1360
|
@validation(
|
|
1222
1361
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1223
1362
|
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
@@ -11,6 +11,7 @@ from typing import Any, Iterable, TYPE_CHECKING
|
|
|
11
11
|
from arelle import UrlUtil, XbrlConst
|
|
12
12
|
from arelle.Cntlr import Cntlr
|
|
13
13
|
from arelle.FileSource import FileSource
|
|
14
|
+
from arelle.ModelDocument import Type as ModelDocumentType
|
|
14
15
|
from arelle.ModelInstanceObject import ModelFact
|
|
15
16
|
from arelle.ModelObject import ModelObject
|
|
16
17
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
@@ -654,6 +655,8 @@ def rule_cover_items(
|
|
|
654
655
|
for elt in rootElt.iterdescendants(ixNStag + "nonNumeric", ixNStag + "nonFraction", ixNStag + "fraction"):
|
|
655
656
|
if not isinstance(elt, ModelFact):
|
|
656
657
|
continue
|
|
658
|
+
if not elt.qname in allCoverItems:
|
|
659
|
+
continue
|
|
657
660
|
if elt.qname in prohibitedCoverItems:
|
|
658
661
|
yield Validation.error(
|
|
659
662
|
codes='EDINET.EC1003E',
|
|
@@ -1096,6 +1099,71 @@ def rule_EC1031E(
|
|
|
1096
1099
|
)
|
|
1097
1100
|
|
|
1098
1101
|
|
|
1102
|
+
@validation(
|
|
1103
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1104
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1105
|
+
)
|
|
1106
|
+
def rule_EC8023W(
|
|
1107
|
+
pluginData: PluginValidationDataExtension,
|
|
1108
|
+
val: ValidateXbrl,
|
|
1109
|
+
*args: Any,
|
|
1110
|
+
**kwargs: Any,
|
|
1111
|
+
) -> Iterable[Validation]:
|
|
1112
|
+
"""
|
|
1113
|
+
EDINET.EC8023W: In IXBRL files, 'nonFraction' elements should be immediately preceded by
|
|
1114
|
+
'△' if and only if the sign attribute is '-'.
|
|
1115
|
+
|
|
1116
|
+
* Tagging using International Financial Reporting Standards taxonomy elements is not checked.
|
|
1117
|
+
* Tagging using Japanese GAAP notes or IFRS financial statement filer-specific additional elements
|
|
1118
|
+
may be identified as an exception and a warning displayed, even if the data content is correct.
|
|
1119
|
+
"""
|
|
1120
|
+
negativeFactXpath = """
|
|
1121
|
+
//ix:nonFraction[@sign="-"][
|
|
1122
|
+
(preceding-sibling::text()[1] and normalize-space(preceding-sibling::text()[1]) != '△')
|
|
1123
|
+
or
|
|
1124
|
+
not(preceding-sibling::text()[1])
|
|
1125
|
+
]
|
|
1126
|
+
"""
|
|
1127
|
+
postiveFactXpath = """
|
|
1128
|
+
//ix:nonFraction[
|
|
1129
|
+
not(@sign="-")
|
|
1130
|
+
and
|
|
1131
|
+
(
|
|
1132
|
+
(preceding-sibling::text()[1] and normalize-space(preceding-sibling::text()[1]) = '△')
|
|
1133
|
+
)
|
|
1134
|
+
]
|
|
1135
|
+
"""
|
|
1136
|
+
for doc in val.modelXbrl.urlDocs.values():
|
|
1137
|
+
if doc.type != ModelDocumentType.INLINEXBRL:
|
|
1138
|
+
continue
|
|
1139
|
+
if not pluginData.isExtensionUri(doc.uri, val.modelXbrl):
|
|
1140
|
+
continue
|
|
1141
|
+
nsmap = {
|
|
1142
|
+
'ix': XbrlConst.ixbrl
|
|
1143
|
+
}
|
|
1144
|
+
for elt in doc.xmlRootElement.xpath(negativeFactXpath, namespaces=nsmap):
|
|
1145
|
+
if elt.qname.namespaceURI == pluginData.jpigpNamespace:
|
|
1146
|
+
continue
|
|
1147
|
+
yield Validation.error(
|
|
1148
|
+
codes='EDINET.EC8023W',
|
|
1149
|
+
msg=_("In an inline XBRL file, if the sign attribute of the ix:nonFraction "
|
|
1150
|
+
"element is set to \"-\" (minus), you must set \"△\" immediately "
|
|
1151
|
+
"before the ix:nonFraction element tag."),
|
|
1152
|
+
modelObject=elt,
|
|
1153
|
+
)
|
|
1154
|
+
for elt in doc.xmlRootElement.xpath(postiveFactXpath, namespaces=nsmap):
|
|
1155
|
+
if elt.qname.namespaceURI == pluginData.jpigpNamespace:
|
|
1156
|
+
continue
|
|
1157
|
+
yield Validation.error(
|
|
1158
|
+
codes='EDINET.EC8023W',
|
|
1159
|
+
msg=_("In an inline XBRL file, if the sign attribute of the ix:nonFraction "
|
|
1160
|
+
"element is not set to \"-\" (minus), there is no need to set \"△\" "
|
|
1161
|
+
"immediately before the ix:nonFraction element tag."),
|
|
1162
|
+
modelObject=elt,
|
|
1163
|
+
)
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
|
|
1099
1167
|
@validation(
|
|
1100
1168
|
hook=ValidationHook.FILESOURCE,
|
|
1101
1169
|
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
@@ -348,6 +348,11 @@ def checkFilingDTS(
|
|
|
348
348
|
val.modelXbrl.error("ESEF.3.1.1.linkbasesNotSeparateFiles",
|
|
349
349
|
_("Each linkbase type MUST be provided in a separate linkbase file, found: %(linkbasesFound)s."),
|
|
350
350
|
modelObject=modelDocument.xmlRootElement, linkbasesFound=", ".join(sorted(linkbasesFound)))
|
|
351
|
+
# As per ESEF conformance test case TC2_invalid, also output an extensionTaxonomyWrongFilesStructure error
|
|
352
|
+
val.modelXbrl.error("ESEF.3.1.1.extensionTaxonomyWrongFilesStructure",
|
|
353
|
+
_("Each linkbase type MUST be provided in a separate linkbase file, please check file %(documentName)s."),
|
|
354
|
+
modelObject=modelDocument.xmlRootElement,
|
|
355
|
+
documentName=modelDocument.basename)
|
|
351
356
|
|
|
352
357
|
# check for any prohibiting dimensionArc's
|
|
353
358
|
for prohibitingArcElt in modelDocument.xmlRootElement.iterdescendants(tag="{http://www.xbrl.org/2003/linkbase}definitionArc"):
|
|
@@ -10,7 +10,7 @@ from lxml.etree import XML, XMLSyntaxError
|
|
|
10
10
|
|
|
11
11
|
from arelle.ModelObject import ModelObject
|
|
12
12
|
from arelle.ModelXbrl import ModelXbrl
|
|
13
|
-
from arelle.UrlUtil import
|
|
13
|
+
from arelle.UrlUtil import isExternalUrl
|
|
14
14
|
from arelle.ValidateFilingText import validateGraphicHeaderType
|
|
15
15
|
from arelle.typing import TypeGetText
|
|
16
16
|
from ..Const import supportedImgTypes
|
|
@@ -89,7 +89,7 @@ def checkSVGContent(
|
|
|
89
89
|
modelXbrl.error(f"{guidance}.executableCodePresent",
|
|
90
90
|
_("Inline XBRL images MUST NOT contain executable code: %(element)s"),
|
|
91
91
|
modelObject=imgElt, element=eltTag)
|
|
92
|
-
elif
|
|
92
|
+
elif isExternalUrl(href):
|
|
93
93
|
modelXbrl.error(f"{guidance}.referencesPointingOutsideOfTheReportingPackagePresent",
|
|
94
94
|
_("Inline XBRL instance document [image] MUST NOT contain any reference pointing to resources outside the reporting package: %(element)s"),
|
|
95
95
|
modelObject=imgElt, element=eltTag)
|
|
@@ -27,7 +27,7 @@ from arelle.PythonUtil import isLegacyAbs, strTruncate
|
|
|
27
27
|
from arelle.utils.Contexts import partitionModelXbrlContexts
|
|
28
28
|
from arelle.utils.Units import partitionModelXbrlUnits
|
|
29
29
|
from arelle.utils.validate.DetectScriptsInXhtml import containsScriptMarkers
|
|
30
|
-
from arelle.UrlUtil import decodeBase64DataImage, isHttpUrl,
|
|
30
|
+
from arelle.UrlUtil import decodeBase64DataImage, isHttpUrl, isExternalUrl
|
|
31
31
|
from arelle.ValidateFilingText import parseImageDataURL
|
|
32
32
|
from arelle.ValidateUtr import ValidateUtr
|
|
33
33
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
@@ -307,7 +307,7 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
|
|
|
307
307
|
modelObject=elt, element=eltTag)
|
|
308
308
|
elif eltTag == "img":
|
|
309
309
|
src = elt.get("src","").strip()
|
|
310
|
-
if
|
|
310
|
+
if isExternalUrl(src):
|
|
311
311
|
modelXbrl.error("ESEF.4.1.6.xHTMLDocumentContainsExternalReferences" if val.unconsolidated
|
|
312
312
|
else "ESEF.3.5.1.inlineXbrlDocumentContainsExternalReferences",
|
|
313
313
|
_("Inline XBRL instance documents MUST NOT contain any reference pointing to resources outside the reporting package: %(element)s"),
|
|
@@ -365,7 +365,7 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
|
|
|
365
365
|
# or to other sections of the annual financial report.'''
|
|
366
366
|
#elif eltTag == "a":
|
|
367
367
|
# href = elt.get("href","").strip()
|
|
368
|
-
# if
|
|
368
|
+
# if isExternalUrl(href):
|
|
369
369
|
# modelXbrl.error("ESEF.4.1.6.xHTMLDocumentContainsExternalReferences" if val.unconsolidated
|
|
370
370
|
# else "ESEF.3.5.1.inlineXbrlDocumentContainsExternalReferences",
|
|
371
371
|
# _("Inline XBRL instance documents MUST NOT contain any reference pointing to resources outside the reporting package: %(element)s"),
|
|
@@ -386,6 +386,11 @@ def checkFilingDTS(val: ValidateXbrl, modelDocument: ModelDocument, esefNotesCon
|
|
|
386
386
|
val.modelXbrl.error("ESEF.3.1.1.linkbasesNotSeparateFiles",
|
|
387
387
|
_("Each linkbase type MUST be provided in a separate linkbase file, found: %(linkbasesFound)s."),
|
|
388
388
|
modelObject=modelDocument.xmlRootElement, linkbasesFound=", ".join(sorted(linkbasesFound)))
|
|
389
|
+
# As per ESEF conformance test case TC2_invalid, also output an extensionTaxonomyWrongFilesStructure error
|
|
390
|
+
val.modelXbrl.error("ESEF.3.1.1.extensionTaxonomyWrongFilesStructure",
|
|
391
|
+
_("Each linkbase type MUST be provided in a separate linkbase file, please check file %(documentName)s."),
|
|
392
|
+
modelObject=modelDocument.xmlRootElement,
|
|
393
|
+
documentName=modelDocument.basename)
|
|
389
394
|
|
|
390
395
|
# check for any prohibiting dimensionArc's
|
|
391
396
|
for prohibitingArcElt in modelDocument.xmlRootElement.iterdescendants(tag="{http://www.xbrl.org/2003/linkbase}definitionArc"):
|
|
@@ -33,7 +33,7 @@ from arelle.PythonUtil import strTruncate
|
|
|
33
33
|
from arelle.utils.Contexts import partitionModelXbrlContexts
|
|
34
34
|
from arelle.utils.Units import partitionModelXbrlUnits
|
|
35
35
|
from arelle.utils.validate.DetectScriptsInXhtml import containsScriptMarkers
|
|
36
|
-
from arelle.UrlUtil import isHttpUrl
|
|
36
|
+
from arelle.UrlUtil import isHttpUrl, isExternalUrl
|
|
37
37
|
from arelle.ValidateUtr import ValidateUtr
|
|
38
38
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
39
39
|
from arelle.ValidateXbrlCalcs import inferredDecimals, rangeValue
|
|
@@ -355,6 +355,27 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
|
|
|
355
355
|
modelXbrl.error(f"{contentOtherThanXHTMLGuidance}.executableCodePresent",
|
|
356
356
|
_("Inline XBRL documents MUST NOT contain executable code: %(element)s"),
|
|
357
357
|
modelObject=elt, element=eltTag)
|
|
358
|
+
externalReferenceFound = False
|
|
359
|
+
if eltTag == "object":
|
|
360
|
+
# Check if the attribute 'archive' contains an external reference!
|
|
361
|
+
archiveAttr = elt.get("archive", "").strip()
|
|
362
|
+
for possibleURI in archiveAttr.split(" "):
|
|
363
|
+
if isExternalUrl(possibleURI.strip()):
|
|
364
|
+
externalReferenceFound = True
|
|
365
|
+
break
|
|
366
|
+
elif eltTag == "script":
|
|
367
|
+
# Check if the attribute 'src' contains an external reference!
|
|
368
|
+
srcAttr = elt.get("src", "").strip()
|
|
369
|
+
if isExternalUrl(srcAttr):
|
|
370
|
+
externalReferenceFound = True
|
|
371
|
+
if externalReferenceFound:
|
|
372
|
+
modelXbrl.error(
|
|
373
|
+
"ESEF.4.1.6.xHTMLDocumentContainsExternalReferences" if val.unconsolidated
|
|
374
|
+
else "ESEF.3.5.1.inlineXbrlDocumentContainsExternalReferences",
|
|
375
|
+
_("Inline XBRL instance documents MUST NOT contain any reference pointing to resources outside the reporting package: %(element)s"),
|
|
376
|
+
modelObject=elt, element=eltTag,
|
|
377
|
+
messageCodes=("ESEF.3.5.1.inlineXbrlDocumentContainsExternalReferences",
|
|
378
|
+
"ESEF.4.1.6.xHTMLDocumentContainsExternalReferences"))
|
|
358
379
|
elif eltTag == "a" and "mailto" in elt.get("href", ""):
|
|
359
380
|
modelXbrl.warning(f"{contentOtherThanXHTMLGuidance}.executableCodePresent.mailto",
|
|
360
381
|
_("Inline XBRL documents SHOULD NOT contain any 'mailto' URI: %(element)s"),
|
|
@@ -371,7 +392,7 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
|
|
|
371
392
|
# or to other sections of the annual financial report.'''
|
|
372
393
|
#elif eltTag == "a":
|
|
373
394
|
# href = elt.get("href","").strip()
|
|
374
|
-
# if
|
|
395
|
+
# if isExternalUrl(href):
|
|
375
396
|
# modelXbrl.error("ESEF.4.1.6.xHTMLDocumentContainsExternalReferences" if val.unconsolidated
|
|
376
397
|
# else "ESEF.3.5.1.inlineXbrlDocumentContainsExternalReferences",
|
|
377
398
|
# _("Inline XBRL instance documents MUST NOT contain any reference pointing to resources outside the reporting package: %(element)s"),
|
|
@@ -92,7 +92,11 @@
|
|
|
92
92
|
"http://www.esma.europa.eu/taxonomy/2017-03-31/esef_cor.xsd",
|
|
93
93
|
"https://www.esma.europa.eu/taxonomy/2017-03-31/esef_cor.xsd",
|
|
94
94
|
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd",
|
|
95
|
-
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd"
|
|
95
|
+
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd",
|
|
96
|
+
"http://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
97
|
+
"https://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
98
|
+
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
99
|
+
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd"
|
|
96
100
|
],
|
|
97
101
|
"effectiveTaxonomyURLs": [
|
|
98
102
|
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
@@ -108,7 +112,13 @@
|
|
|
108
112
|
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd",
|
|
109
113
|
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd",
|
|
110
114
|
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
111
|
-
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd"
|
|
115
|
+
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
116
|
+
"http://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
117
|
+
"https://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
118
|
+
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
119
|
+
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
120
|
+
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_all.xsd",
|
|
121
|
+
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_all.xsd"
|
|
112
122
|
],
|
|
113
123
|
"effectiveTaxonomyURLs": [
|
|
114
124
|
"http://www.esma.europa.eu/taxonomy/2021-03-24/esef_cor.xsd",
|
|
@@ -124,7 +134,13 @@
|
|
|
124
134
|
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd",
|
|
125
135
|
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_cor.xsd",
|
|
126
136
|
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
127
|
-
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd"
|
|
137
|
+
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
138
|
+
"http://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
139
|
+
"https://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
140
|
+
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
141
|
+
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
142
|
+
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_all.xsd",
|
|
143
|
+
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_all.xsd"
|
|
128
144
|
],
|
|
129
145
|
"effectiveTaxonomyURLs": [
|
|
130
146
|
"http://www.esma.europa.eu/taxonomy/2021-03-24/esef_cor.xsd",
|
|
@@ -142,7 +158,15 @@
|
|
|
142
158
|
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
143
159
|
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_cor.xsd",
|
|
144
160
|
"http://www.esma.europa.eu/taxonomy/2021-03-24/esef_cor.xsd",
|
|
145
|
-
"https://www.esma.europa.eu/taxonomy/2021-03-24/esef_cor.xsd"
|
|
161
|
+
"https://www.esma.europa.eu/taxonomy/2021-03-24/esef_cor.xsd",
|
|
162
|
+
"http://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
163
|
+
"https://www.esma.europa.eu/taxonomy/2017-03-31/esef_all.xsd",
|
|
164
|
+
"http://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
165
|
+
"https://www.esma.europa.eu/taxonomy/2019-03-27/esef_all.xsd",
|
|
166
|
+
"http://www.esma.europa.eu/taxonomy/2020-03-16/esef_all.xsd",
|
|
167
|
+
"https://www.esma.europa.eu/taxonomy/2020-03-16/esef_all.xsd",
|
|
168
|
+
"http://www.esma.europa.eu/taxonomy/2021-03-24/esef_all.xsd",
|
|
169
|
+
"https://www.esma.europa.eu/taxonomy/2021-03-24/esef_all.xsd"
|
|
146
170
|
],
|
|
147
171
|
"effectiveTaxonomyURLs": [
|
|
148
172
|
"http://www.esma.europa.eu/taxonomy/2022-03-24/esef_cor.xsd",
|
|
@@ -17,7 +17,7 @@ from arelle import ModelDocument
|
|
|
17
17
|
from arelle.ModelObjectFactory import parser
|
|
18
18
|
from arelle.ModelXbrl import ModelXbrl
|
|
19
19
|
from arelle.typing import TypeGetText
|
|
20
|
-
from arelle.UrlUtil import decodeBase64DataImage,
|
|
20
|
+
from arelle.UrlUtil import decodeBase64DataImage, isExternalUrl
|
|
21
21
|
from arelle.utils.validate.Validation import Validation
|
|
22
22
|
from arelle.ValidateFilingText import parseImageDataURL, validateGraphicHeaderType
|
|
23
23
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
@@ -105,7 +105,7 @@ def validateImage(
|
|
|
105
105
|
if minExternalRessourceSize != -1:
|
|
106
106
|
# transform kb to b
|
|
107
107
|
minExternalRessourceSize = minExternalRessourceSize * 1024
|
|
108
|
-
if
|
|
108
|
+
if isExternalUrl(image):
|
|
109
109
|
yield Validation.error(("ESEF.4.1.6.xHTMLDocumentContainsExternalReferences" if not params.consolidated
|
|
110
110
|
else "ESEF.3.5.1.inlineXbrlDocumentContainsExternalReferences",
|
|
111
111
|
"NL.NL-KVK.3.6.2.1.inlineXbrlDocumentContainsExternalReferences"),
|
|
@@ -277,7 +277,7 @@ def checkSVGContentElt(
|
|
|
277
277
|
yield Validation.error((f"{guidance}.executableCodePresent", "NL.NL-KVK.3.5.1.1.executableCodePresent"),
|
|
278
278
|
_("Inline XBRL images MUST NOT contain executable code: %(element)s"),
|
|
279
279
|
modelObject=imgElts, element=eltTag)
|
|
280
|
-
elif
|
|
280
|
+
elif isExternalUrl(href):
|
|
281
281
|
yield Validation.error((f"{guidance}.referencesPointingOutsideOfTheReportingPackagePresent", "NL.NL-KVK.3.6.2.1.inlineXbrlDocumentContainsExternalReferences"),
|
|
282
282
|
_("Inline XBRL instance document [image] MUST NOT contain any reference pointing to resources outside the reporting package: %(element)s"),
|
|
283
283
|
modelObject=imgElts, element=eltTag)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
arelle/Aspect.py,sha256=Pn9I91D1os1RTVj6htuxTfRzVMhmVDtrbKvV_zy9xMI,5470
|
|
2
2
|
arelle/BetaFeatures.py,sha256=T_tPac-FiozHyYLCemt0RoHJ1JahUE71L-0tHmIRKpE,858
|
|
3
3
|
arelle/Cntlr.py,sha256=HQ9JfpByqRf-C-ub07ALWMWUO2LIFev8tcmqpXjHW9s,31718
|
|
4
|
-
arelle/CntlrCmdLine.py,sha256=
|
|
4
|
+
arelle/CntlrCmdLine.py,sha256=uzHyES0xyIZ9OSksU8Hg78tfOiHS0t9xhFo-DLpCOK0,88956
|
|
5
5
|
arelle/CntlrComServer.py,sha256=h1KPf31uMbErpxTZn_iklDqUMGFgQnjZkFkFjd8gtLQ,1888
|
|
6
6
|
arelle/CntlrProfiler.py,sha256=2VQJudiUhxryVypxjODx2ccP1-n60icTiWs5lSEokhQ,972
|
|
7
7
|
arelle/CntlrQuickBooks.py,sha256=BMqd5nkNQOZyNFPefkTeWUUDCYNS6BQavaG8k1Lepu4,31543
|
|
@@ -20,7 +20,7 @@ arelle/DialogPluginManager.py,sha256=0Uiy2Dei_49K7jbNnEUTchqcjANPIKNYNIt29iQoV1g
|
|
|
20
20
|
arelle/DialogRssWatch.py,sha256=mjc4pqyFDISY4tQtME0uSRQ3NlcWnNsOsMu9Zj8tTd0,13789
|
|
21
21
|
arelle/DialogURL.py,sha256=JH88OPFf588E8RW90uMaieok7A_4kOAURQ8kHWVhnao,4354
|
|
22
22
|
arelle/DialogUserPassword.py,sha256=kWPlCCihhwvsykDjanME9qBDtv6cxZlsrJyoMqiRep4,13769
|
|
23
|
-
arelle/DisclosureSystem.py,sha256=
|
|
23
|
+
arelle/DisclosureSystem.py,sha256=TA41D_rJGsmHytV2ya4Po2O9pcUnxiLc90qo5CoNaKM,25279
|
|
24
24
|
arelle/ErrorManager.py,sha256=5BrpD9Ej8b-2JFR-GgWL32Oc2qItYnLbZApaToDKt0o,16972
|
|
25
25
|
arelle/FileSource.py,sha256=3OsWhyCiPzek72XNWvxmfVCCIYADzUGNRNt8Jh2rCu4,48170
|
|
26
26
|
arelle/FunctionCustom.py,sha256=d1FsBG14eykvpLpgaXpN8IdxnlG54dfGcsXPYfdpA9Q,5880
|
|
@@ -66,10 +66,10 @@ arelle/TkTableWrapper.py,sha256=Bdm-WmLdwIiudqfaVGZElip_92eeSKQdd7hCjlILm1A,3361
|
|
|
66
66
|
arelle/UITkTable.py,sha256=N83cXi5c0lLZLsDbwSKcPrlYoUoGsNavGN5YRx6d9XY,39810
|
|
67
67
|
arelle/UiUtil.py,sha256=3G0xPclZI8xW_XQDbiFrmylB7Nd5muqi5n2x2oMkMZU,34218
|
|
68
68
|
arelle/Updater.py,sha256=IZ8cq44Rq88WbQcB1VOpMA6bxdfZxfYQ8rgu9Ehpbes,7448
|
|
69
|
-
arelle/UrlUtil.py,sha256=
|
|
69
|
+
arelle/UrlUtil.py,sha256=EmjVfZ6-Ax5cvjVsbdYMb3VHzISVecGDE2gLRHzHmfQ,32489
|
|
70
70
|
arelle/Validate.py,sha256=cX1OA3JPiwmjNmxfecZc24GBW1qXdjcEEynJ9F1K7Zg,58764
|
|
71
71
|
arelle/ValidateDuplicateFacts.py,sha256=LEIbdEvm_fD4Nr5PMpVSy05e7FuyTw-VJMTVSSNX7Ac,21819
|
|
72
|
-
arelle/ValidateFilingText.py,sha256=
|
|
72
|
+
arelle/ValidateFilingText.py,sha256=ppPC8Uje1cxaVXQnRSpgNtLO2BlHWM9316IxPj7bfpA,54024
|
|
73
73
|
arelle/ValidateInfoset.py,sha256=Rz_XBi5Ha43KpxXYhjLolURcWVx5qmqyjLxw48Yt9Dg,20396
|
|
74
74
|
arelle/ValidateUtr.py,sha256=oxOPrOa1XEzBay4miXvx6eRLTnVFYUIJC9ueWUk4EkI,13633
|
|
75
75
|
arelle/ValidateVersReport.py,sha256=RMe7GlcyZV0HoVFHL0qOGrKm4et-6yPq5dmikkhnvoU,43196
|
|
@@ -125,12 +125,12 @@ arelle/XmlValidateConst.py,sha256=U_wN0Q-nWKwf6dKJtcu_83FXPn9c6P8JjzGA5b0w7P0,33
|
|
|
125
125
|
arelle/XmlValidateParticles.py,sha256=Mn6vhFl0ZKC_vag1mBwn1rH_x2jmlusJYqOOuxFPO2k,9231
|
|
126
126
|
arelle/XmlValidateSchema.py,sha256=6frtZOc1Yrx_5yYF6V6oHbScnglWrVbWr6xW4EHtLQI,7428
|
|
127
127
|
arelle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
|
-
arelle/_version.py,sha256=
|
|
128
|
+
arelle/_version.py,sha256=ZuR2k0xha7THQ2bqrzNVBj__6Yw-TJ7U8vP_KjsG1Z4,708
|
|
129
129
|
arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
|
|
130
130
|
arelle/api/Session.py,sha256=a71ML4FOkWxeqxQBRu6WUqkUoI4C5R6znzAQcbGR5jg,7902
|
|
131
131
|
arelle/config/creationSoftwareNames.json,sha256=5MK7XUjfDJ9OpRCCHXeOErJ1SlTBZji4WEcEOdOacx0,3128
|
|
132
132
|
arelle/config/disclosuresystems.xml,sha256=8lBSGCOuVsVxttmpqkPlURBzaiGpPm8b8aYtxKRsKnk,16617
|
|
133
|
-
arelle/config/disclosuresystems.xsd,sha256=
|
|
133
|
+
arelle/config/disclosuresystems.xsd,sha256=FiwGkxlkRMgGg45V9b_P1-GiI7b1YVatZd5d50s08pI,4335
|
|
134
134
|
arelle/config/edbody.dtd,sha256=ZGfnEvKbROUpV-aCWeAV3VBuY0QquDIiNzOU-ehgsGk,15557
|
|
135
135
|
arelle/config/empty-instance.xml,sha256=1wRlhlSErE_ro3noF30-WTM0WVOpyKUI9L9POrbt368,390
|
|
136
136
|
arelle/config/erxl.xsd,sha256=27GMbkisl6dA6ZOXZiOtBEwBQPb1fBUc4KOYNVsRo0o,2167
|
|
@@ -304,7 +304,7 @@ arelle/plugin/validate/DBA/PluginValidationDataExtension.py,sha256=y9W5S5QeuBoDk
|
|
|
304
304
|
arelle/plugin/validate/DBA/ValidationPluginExtension.py,sha256=UygF7oELnPJcP6Ta0ncy3dy5fnJq-Mz6N2-gEaVhigo,48690
|
|
305
305
|
arelle/plugin/validate/DBA/__init__.py,sha256=KhmlUkqgsRtEXpu5DZBXFzv43nUTvi-0sdDNRfw5Up4,1564
|
|
306
306
|
arelle/plugin/validate/DBA/resources/config.xml,sha256=KHfo7SrjzmjHbfwIJBmESvOOjdIv4Av26BCcZxfn3Pg,875
|
|
307
|
-
arelle/plugin/validate/DBA/rules/__init__.py,sha256=
|
|
307
|
+
arelle/plugin/validate/DBA/rules/__init__.py,sha256=FdmlqdX7RE5nnN19PU23zLKzDibEm24UU2xurlfFmrw,10404
|
|
308
308
|
arelle/plugin/validate/DBA/rules/fr.py,sha256=IAegA_Fc-Zkjj8qlzFuo_52gNVHW-lAddBFCQw8W8P4,71318
|
|
309
309
|
arelle/plugin/validate/DBA/rules/tc.py,sha256=CXPOGHpab9Y-iV84wDXrsE-rPe_d6Uhw4HjEyTBEzq4,1572
|
|
310
310
|
arelle/plugin/validate/DBA/rules/th.py,sha256=mDrjescz6106jBGjdH6bipqx48BnxcjHSkNL1qQf0QE,6227
|
|
@@ -312,44 +312,45 @@ arelle/plugin/validate/DBA/rules/tm.py,sha256=ui9oKBqlAForwkQ9kk9KBiUogTJE5pv1Rb
|
|
|
312
312
|
arelle/plugin/validate/DBA/rules/tr.py,sha256=4TootFjl0HXsKZk1XNBCyj-vnjRs4lg35hfiz_b_4wU,14684
|
|
313
313
|
arelle/plugin/validate/EBA/__init__.py,sha256=x3zXNcdSDJ3kHfL7kMs0Ve0Vs9oWbzNFVf1TK4Avmy8,45924
|
|
314
314
|
arelle/plugin/validate/EBA/config.xml,sha256=37wMVUAObK-XEqakqD8zPNog20emYt4a_yfL1AKubF8,2022
|
|
315
|
-
arelle/plugin/validate/EDINET/Constants.py,sha256=
|
|
316
|
-
arelle/plugin/validate/EDINET/
|
|
315
|
+
arelle/plugin/validate/EDINET/Constants.py,sha256=6POa7ftTNQAV1td5WYGbzPGSXpWfAE9bfbXNFnTqfOI,8146
|
|
316
|
+
arelle/plugin/validate/EDINET/ContextRequirement.py,sha256=BejN3uz6TCSzR1qfQm-PZMbkhJlgUH9NVrY2Ux-Ph78,5217
|
|
317
|
+
arelle/plugin/validate/EDINET/ControllerPluginData.py,sha256=8FVFpqh25NaxRKWn5qlK23qD6XDUOvNXRW35O6X9hTk,11599
|
|
317
318
|
arelle/plugin/validate/EDINET/CoverItemRequirements.py,sha256=1YdzlSgc5MlUGyw81Ipv37CLxsdpSw8CO90snjgqLzw,1852
|
|
318
319
|
arelle/plugin/validate/EDINET/DeiRequirements.py,sha256=ncK5ew66Y1rAsNHAMTHhX4jTrE_XOFGHV5okPB0vEYA,4316
|
|
319
320
|
arelle/plugin/validate/EDINET/DisclosureSystems.py,sha256=3rKG42Eg-17Xx_KXU_V5yHW6I3LTwQunvf4a44C9k_4,36
|
|
320
321
|
arelle/plugin/validate/EDINET/FilingFormat.py,sha256=SFZ22zFk6RVIA9dpx3iVLlf2heKfZZqt2ZUXUje4BII,18789
|
|
321
322
|
arelle/plugin/validate/EDINET/FormType.py,sha256=jFqjJACJJ4HhkY1t6Fqei0z6rgvH3Mp-dP04KwQVv3Q,2517
|
|
322
323
|
arelle/plugin/validate/EDINET/ManifestInstance.py,sha256=o6BGlaQHSsn6D0VKH4zn59UscKnjTKlo99kSGfGdYlU,6910
|
|
323
|
-
arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256
|
|
324
|
+
arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=rFzAR8VbVcCO2IO1qp6TGWpBQd2rsOES-Ta2UOKOmDs,31309
|
|
324
325
|
arelle/plugin/validate/EDINET/ReportFolderType.py,sha256=-p_byoOLP6wAyEiPtSN2iMMl68m5vPh__hHTYgypxH8,4612
|
|
325
326
|
arelle/plugin/validate/EDINET/Statement.py,sha256=CGq8c647pIEBQtOv8AL0U4knT8HofOdK8IaUjHrcOYU,9331
|
|
326
327
|
arelle/plugin/validate/EDINET/TableOfContentsBuilder.py,sha256=-TsPfIdtgOCdvUh-H8EZo3B5A63ti7rIDXHCUnt_us8,21760
|
|
327
328
|
arelle/plugin/validate/EDINET/UploadContents.py,sha256=o29mDoX48M3S2jQqrJO4ZaulltAPt4vD-qdsWTMCUPc,1196
|
|
328
329
|
arelle/plugin/validate/EDINET/ValidationPluginExtension.py,sha256=8LNqvXzNaWP54dShEjet5ely4BnM8ByCSyimKpUx3_s,2577
|
|
329
|
-
arelle/plugin/validate/EDINET/__init__.py,sha256=
|
|
330
|
-
arelle/plugin/validate/EDINET/resources/config.xml,sha256=
|
|
330
|
+
arelle/plugin/validate/EDINET/__init__.py,sha256=kgYOe4C8x-eccMz0SqCfV5Krw_s51heqSvEgKH5pWlw,4247
|
|
331
|
+
arelle/plugin/validate/EDINET/resources/config.xml,sha256=Occs0dAABndvTbyjWK2sM-qeVMAgLuHhM-EFq-T2jTg,1147
|
|
331
332
|
arelle/plugin/validate/EDINET/resources/cover-item-requirements.json,sha256=K5j2HBF-1y0kazWS4EZWs1KCROaCF9ls3MBzXi7Iex0,46970
|
|
332
333
|
arelle/plugin/validate/EDINET/resources/dei-requirements.csv,sha256=8ILKNn8bXbcgG9V0lc8mxorKDKEjJQWLdBQRMvbqtkI,6518
|
|
333
334
|
arelle/plugin/validate/EDINET/resources/edinet-taxonomies.xml,sha256=YXaPu-60CI2s0S-vXcLDEXCrrukEAAHyCEk0QRhrYR8,16772
|
|
334
335
|
arelle/plugin/validate/EDINET/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
335
|
-
arelle/plugin/validate/EDINET/rules/contexts.py,sha256=
|
|
336
|
+
arelle/plugin/validate/EDINET/rules/contexts.py,sha256=fSYIZOWg3Q3cDos17hNAvw1HUVdcZx7IlUFfBJnwjHo,19604
|
|
336
337
|
arelle/plugin/validate/EDINET/rules/edinet.py,sha256=UhvTPfHxDuUitIAPY_4fgirAsjJG5Xfd-gH_4pMd3qI,25449
|
|
337
|
-
arelle/plugin/validate/EDINET/rules/frta.py,sha256=
|
|
338
|
-
arelle/plugin/validate/EDINET/rules/gfm.py,sha256=
|
|
338
|
+
arelle/plugin/validate/EDINET/rules/frta.py,sha256=wpX5zK0IfVVYZR9ELy2g_Z_F1Jzhwd9gh_KZC5ALkLg,12756
|
|
339
|
+
arelle/plugin/validate/EDINET/rules/gfm.py,sha256=l5XHOBqyorub0LaQ7lA6oISy4oSynNFz4ilW9-Br89A,92060
|
|
339
340
|
arelle/plugin/validate/EDINET/rules/manifests.py,sha256=MoT9R_a4BzuYdQVbF7RC5wz134Ve68svSdJ3NlpO_AU,4026
|
|
340
|
-
arelle/plugin/validate/EDINET/rules/upload.py,sha256=
|
|
341
|
+
arelle/plugin/validate/EDINET/rules/upload.py,sha256=_MskyvWNvVYia_-KJMZQn-PPI9yN8IMhqpRzqiyzlt4,52887
|
|
341
342
|
arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
|
|
342
343
|
arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
|
|
343
344
|
arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
|
|
344
345
|
arelle/plugin/validate/ESEF/__init__.py,sha256=LL7uYOcGPHgjwTlcfW2oWMqWiqrZ5yABzcKkJZFrZis,20391
|
|
345
|
-
arelle/plugin/validate/ESEF/ESEF_2021/DTS.py,sha256=
|
|
346
|
-
arelle/plugin/validate/ESEF/ESEF_2021/Image.py,sha256=
|
|
347
|
-
arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py,sha256=
|
|
346
|
+
arelle/plugin/validate/ESEF/ESEF_2021/DTS.py,sha256=0uVPVysjgJK4yplRUvHO2kZ6M7FC-egIjImN3791koY,26761
|
|
347
|
+
arelle/plugin/validate/ESEF/ESEF_2021/Image.py,sha256=UDGpb2qFjt6J8MTeevlbDQX8D79Hzv3cZoxvkmDtEvE,4857
|
|
348
|
+
arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py,sha256=KCqJnjTUEe3FFiztQ-PDTJoYNJQ4QFZ3tKj_na0spjg,63680
|
|
348
349
|
arelle/plugin/validate/ESEF/ESEF_2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
349
|
-
arelle/plugin/validate/ESEF/ESEF_Current/DTS.py,sha256=
|
|
350
|
-
arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py,sha256=
|
|
350
|
+
arelle/plugin/validate/ESEF/ESEF_Current/DTS.py,sha256=t8eadnO1paPzHcCaEEs67hg17dSPDlGlDbVpHwJF6UA,29818
|
|
351
|
+
arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py,sha256=BCruY89slaiDuZIIVriAD1DPGIrIFNUQqMVBifEWY7Q,76680
|
|
351
352
|
arelle/plugin/validate/ESEF/ESEF_Current/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
352
|
-
arelle/plugin/validate/ESEF/resources/authority-validations.json,sha256=
|
|
353
|
+
arelle/plugin/validate/ESEF/resources/authority-validations.json,sha256=69o1ubI1-fNcaF7uOp1HTBcyVL_kCquAG3f3H6V9Ghk,17275
|
|
353
354
|
arelle/plugin/validate/ESEF/resources/config.xml,sha256=t3STU_-QYM7Ay8YwZRPapnohiWVWhjfr4L2Rjx9xN9U,3902
|
|
354
355
|
arelle/plugin/validate/FERC/__init__.py,sha256=rC1OYNBWnoXowEohiR9yagHtAi_NPAlmaahRSQhSdS4,11325
|
|
355
356
|
arelle/plugin/validate/FERC/config.xml,sha256=bn9b8eCqJA1J62rYq1Nz85wJrMGAahVmmnIUQZyerjo,1919
|
|
@@ -680,16 +681,16 @@ arelle/utils/Units.py,sha256=c9bwnu9Xnm00gC9Q6qQ1ogsEeTEXGRH7rahlEbrEWnQ,1201
|
|
|
680
681
|
arelle/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
681
682
|
arelle/utils/validate/Decorator.py,sha256=8LGmA171HZgKrALtsMKyHqMNM-XCdwJOv6KpZz4pC2c,3161
|
|
682
683
|
arelle/utils/validate/DetectScriptsInXhtml.py,sha256=RFBh_Z24OjR69s71qQzSzbxdU-WCTWuvYlONN-BgpZ0,2098
|
|
683
|
-
arelle/utils/validate/ESEFImage.py,sha256=
|
|
684
|
+
arelle/utils/validate/ESEFImage.py,sha256=R3_iWmLYBbIAnPuNpuRi8bqa3MAPXc8MDumfizkAz_8,15485
|
|
684
685
|
arelle/utils/validate/Validation.py,sha256=n6Ag7VeCj_VO5nqzw_P53hOfXXeT2APK0Enb3UQqBns,832
|
|
685
686
|
arelle/utils/validate/ValidationPlugin.py,sha256=mArkGwSUQxMnLrQT_oprDjeJaN9dD0A0LWvpHCSmFz8,14712
|
|
686
687
|
arelle/utils/validate/ValidationUtil.py,sha256=hghMQoNuC3ocs6kkNtIQPhh8QwzubwHGtGn6g-Yx4ME,525
|
|
687
688
|
arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
688
689
|
arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
689
690
|
arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
|
|
690
|
-
arelle_release-2.37.
|
|
691
|
-
arelle_release-2.37.
|
|
692
|
-
arelle_release-2.37.
|
|
693
|
-
arelle_release-2.37.
|
|
694
|
-
arelle_release-2.37.
|
|
695
|
-
arelle_release-2.37.
|
|
691
|
+
arelle_release-2.37.65.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
|
|
692
|
+
arelle_release-2.37.65.dist-info/METADATA,sha256=mzOF2EBs8Qc8HWaljQqI650UvHDftMw3JUL83k7QwCs,9355
|
|
693
|
+
arelle_release-2.37.65.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
694
|
+
arelle_release-2.37.65.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
|
|
695
|
+
arelle_release-2.37.65.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
|
|
696
|
+
arelle_release-2.37.65.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|