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.

Files changed (30) hide show
  1. arelle/CntlrCmdLine.py +3 -0
  2. arelle/DisclosureSystem.py +2 -0
  3. arelle/UrlUtil.py +3 -0
  4. arelle/ValidateFilingText.py +3 -3
  5. arelle/_version.py +2 -2
  6. arelle/config/disclosuresystems.xsd +1 -0
  7. arelle/plugin/validate/DBA/rules/__init__.py +2 -2
  8. arelle/plugin/validate/EDINET/Constants.py +5 -1
  9. arelle/plugin/validate/EDINET/ContextRequirement.py +58 -0
  10. arelle/plugin/validate/EDINET/ControllerPluginData.py +69 -3
  11. arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +1 -1
  12. arelle/plugin/validate/EDINET/__init__.py +10 -0
  13. arelle/plugin/validate/EDINET/resources/config.xml +2 -1
  14. arelle/plugin/validate/EDINET/rules/contexts.py +205 -2
  15. arelle/plugin/validate/EDINET/rules/frta.py +2 -2
  16. arelle/plugin/validate/EDINET/rules/gfm.py +140 -1
  17. arelle/plugin/validate/EDINET/rules/upload.py +68 -0
  18. arelle/plugin/validate/ESEF/ESEF_2021/DTS.py +5 -0
  19. arelle/plugin/validate/ESEF/ESEF_2021/Image.py +2 -2
  20. arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +3 -3
  21. arelle/plugin/validate/ESEF/ESEF_Current/DTS.py +5 -0
  22. arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +23 -2
  23. arelle/plugin/validate/ESEF/resources/authority-validations.json +28 -4
  24. arelle/utils/validate/ESEFImage.py +3 -3
  25. {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/METADATA +1 -1
  26. {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/RECORD +30 -29
  27. {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/WHEEL +0 -0
  28. {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/entry_points.txt +0 -0
  29. {arelle_release-2.37.63.dist-info → arelle_release-2.37.65.dist-info}/licenses/LICENSE.md +0 -0
  30. {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 scheme
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 scheme(href) in ("http", "https", "ftp"):
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, scheme
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 scheme(src) in ("http", "https", "ftp"):
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 scheme(href) in ("http", "https", "ftp"):
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 scheme(href) in ("http", "https", "ftp"):
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, scheme
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 scheme(image) in ("http", "https", "ftp"):
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 scheme(href) in ("http", "https", "ftp"):
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.63
3
+ Version: 2.37.65
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License-Expression: Apache-2.0
@@ -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=pOztA3ExK4O-IvxELeBU0SyC4Yk6OKgbsOjpNgwmKiU,88800
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=BawcjExpC7tfTuWbN4DRVHbitu87mS16q2q6LPbAWJU,25163
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=HrxZSG59EUMGMMGmWPuZkPi5-0BGqY3jAMkp7V4IdZo,32400
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=xnXc0xgdNiHQk0eyP7VSSpvw7qr-pRFRwqqoUb569is,54051
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=NlCNeygn2_HXMOIXO9pyOcwbkHyOOFvVYnSaoHMOIV4,708
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=O15JhA66T-FcPkLBEOYzqlW0LLi3YS3L8ZT5zn4obRI,4279
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=eBm6FAb_WnBBYfgLSwsO30gVjpWaHxLqRHRJAIBj7oo,10418
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=Uhc95ZEKS_wkQUe9hO6OwmreEmqXbpCani2qIgi7p6M,7808
316
- arelle/plugin/validate/EDINET/ControllerPluginData.py,sha256=NTiDEMO4Yd5x4ssOuSkmEBYRKaQPWpbLkZj3NnET3J0,8833
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=-YzvBjNswE5ylw-JuAHfHFRZ6F8geRD2eS97R2rV5IU,31323
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=ykLYN01-krracs1QanRXm9f2bvaLV17CygZKL88Akxc,3740
330
- arelle/plugin/validate/EDINET/resources/config.xml,sha256=yVMIRtksqmRs_LFC3fnhd9lUWZkXeGeZq9HfZLJb_pQ,1116
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=KhqL4viPw_urPB0Nlt-tT7E4SOhkJnB6DMaiZlgymAs,10022
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=nxQt6HOymo3OM0KF6wM_VDmS2XLRaOeyoFTYkcHvyRs,12755
338
- arelle/plugin/validate/EDINET/rules/gfm.py,sha256=9sv-S5uEiyreq3tgkR9oA8SCFgqIXJX6-OrzrFUyh8E,85806
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=OFjkPWg1WLzB1WVZgsEpGE_b-NBqgjCeIIZDtaWrpIg,50194
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=6Za7BANwwc_egxLCgbgWzwUGOXZv9IF1I7JCkDNt2Tw,26277
346
- arelle/plugin/validate/ESEF/ESEF_2021/Image.py,sha256=4bnhuy5viBU0viPjb4FhcRRjVVKlNdnKLFdSGg3sZvs,4871
347
- arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py,sha256=YhjHL3vo07ZtdCwUsOeTTKdiU8fmDyO9L4gbQ6nBSi4,63715
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=epp-PBh1NJzQqgxUE6C468HmoDc2w3j54rMwfiOAry4,29334
350
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py,sha256=FmdnPircIKOO9EvFGzlAeRJGmMLnDHPpALM0-8zfKIs,75025
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=_Xnqaj0pdw2QM3LhOguBHnEqbo1eutm643_SO18UJls,15487
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=M3pR9zxz0Y8oNjrpniEYwztCV2hoBK4fDSi4U095C3k,15520
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.63.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
691
- arelle_release-2.37.63.dist-info/METADATA,sha256=FNFdBc1TppTeVTAIgwBO1GEKVs9J0AowuZaPk7hHcQg,9355
692
- arelle_release-2.37.63.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
693
- arelle_release-2.37.63.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
694
- arelle_release-2.37.63.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
695
- arelle_release-2.37.63.dist-info/RECORD,,
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,,