arelle-release 2.37.23__py3-none-any.whl → 2.37.25__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/Updater.py CHANGED
@@ -17,6 +17,7 @@ from urllib.error import URLError
17
17
  import regex
18
18
 
19
19
  from arelle import Version
20
+ from arelle.SystemInfo import getSystemInfo
20
21
  from arelle.typing import TypeGetText
21
22
 
22
23
  if TYPE_CHECKING:
@@ -90,7 +91,9 @@ def _getLatestArelleRelease(cntlr: CntlrWinMain) -> ArelleRelease:
90
91
 
91
92
  def _getArelleReleaseDownloadUrl(assets: list[dict[str, Any]]) -> str | None:
92
93
  if sys.platform == "darwin":
93
- return _getArelleReleaseDownloadUrlByFileExtension(assets, ".dmg")
94
+ if getSystemInfo().get('arch') == 'arm64':
95
+ return _getArelleReleaseDownloadUrlByFileExtension(assets, ".dmg", nameIncludes='-arm64')
96
+ return _getArelleReleaseDownloadUrlByFileExtension(assets, ".dmg", nameIncludes='-x64')
94
97
  elif sys.platform == "win32":
95
98
  return _getArelleReleaseDownloadUrlByFileExtension(assets, ".exe")
96
99
  else:
@@ -98,12 +101,13 @@ def _getArelleReleaseDownloadUrl(assets: list[dict[str, Any]]) -> str | None:
98
101
 
99
102
 
100
103
  def _getArelleReleaseDownloadUrlByFileExtension(
101
- assets: list[dict[str, Any]], fileExtension: str
104
+ assets: list[dict[str, Any]], fileExtension: str, nameIncludes: str | None = None,
102
105
  ) -> str | None:
103
106
  for asset in assets:
104
107
  downloadUrl = asset.get("browser_download_url")
105
108
  if isinstance(downloadUrl, str) and downloadUrl.endswith(fileExtension):
106
- return downloadUrl
109
+ if nameIncludes is None or nameIncludes in downloadUrl:
110
+ return downloadUrl
107
111
  return None
108
112
 
109
113
 
arelle/XbrlConst.py CHANGED
@@ -112,6 +112,9 @@ qnXbrldiTypedMember = qname("{http://xbrl.org/2006/xbrldi}xbrldi:typedMember")
112
112
  xlink = "http://www.w3.org/1999/xlink"
113
113
  qnXlinkArcRole = qname("{http://www.w3.org/1999/xlink}xlink:arcrole")
114
114
  qnXlinkFrom = qname("{http://www.w3.org/1999/xlink}xlink:from")
115
+ qnXlinkHref = qname("{http://www.w3.org/1999/xlink}xlink:href")
116
+ qnXlinkLabel = qname("{http://www.w3.org/1999/xlink}xlink:label")
117
+ qnXlinkTo = qname("{http://www.w3.org/1999/xlink}xlink:to")
115
118
  qnXlinkType = qname("{http://www.w3.org/1999/xlink}xlink:type")
116
119
  xl = "http://www.xbrl.org/2003/XLink"
117
120
  qnXlExtended = qname("{http://www.xbrl.org/2003/XLink}xl:extended")
@@ -832,6 +835,24 @@ def isNumericRole(role: str) -> bool:
832
835
  }
833
836
 
834
837
 
838
+ standardDimensionArcroles = frozenset({
839
+ all,
840
+ notAll,
841
+ hypercubeDimension,
842
+ dimensionDomain,
843
+ domainMember,
844
+ dimensionDefault,
845
+ })
846
+
847
+
848
+ standardDefinitionArcroles = frozenset(standardDimensionArcroles | {
849
+ essenceAlias,
850
+ generalSpecial,
851
+ requiresElement,
852
+ similarTuples,
853
+ })
854
+
855
+
835
856
  def isStandardArcrole(role: str) -> bool:
836
857
  return role in {
837
858
  "http://www.w3.org/1999/xlink/properties/linkbase",
arelle/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '2.37.23'
21
- __version_tuple__ = version_tuple = (2, 37, 23)
20
+ __version__ = version = '2.37.25'
21
+ __version_tuple__ = version_tuple = (2, 37, 25)
@@ -32,6 +32,12 @@ class LinkbaseType(Enum):
32
32
  """
33
33
  return LINKBASE_ARC_QN[self]
34
34
 
35
+ def getArcroles(self) -> frozenset[str]:
36
+ """
37
+ Returns the standard arcrole URIs associated with this LinkbaseType.
38
+ """
39
+ return LINKBASE_ARCROLES[self]
40
+
35
41
  def getLinkQn(self) -> QName:
36
42
  """
37
43
  Returns the qname of the link associated with this LinkbaseType.
@@ -59,6 +65,17 @@ LINKBASE_ARC_QN = {
59
65
  LinkbaseType.REFERENCE: XbrlConst.qnLinkReferenceArc,
60
66
  }
61
67
 
68
+ LINKBASE_ARCROLES = {
69
+ LinkbaseType.CALCULATION: frozenset({
70
+ XbrlConst.summationItem,
71
+ XbrlConst.summationItem11,
72
+ }),
73
+ LinkbaseType.DEFINITION: XbrlConst.standardDefinitionArcroles,
74
+ LinkbaseType.LABEL: frozenset({XbrlConst.conceptLabel}),
75
+ LinkbaseType.PRESENTATION: frozenset({XbrlConst.parentChild}),
76
+ LinkbaseType.REFERENCE: frozenset({XbrlConst.conceptReference}),
77
+ }
78
+
62
79
  LINKBASE_LINK_QN = {
63
80
  LinkbaseType.CALCULATION: XbrlConst.qnLinkCalculationLink,
64
81
  LinkbaseType.DEFINITION: XbrlConst.qnLinkDefinitionLink,
@@ -204,6 +204,8 @@ class LinkbaseData:
204
204
  basename: str
205
205
  element: _Element
206
206
  linkbaseType: LinkbaseType | None
207
+ prohibitedBaseConcepts: list[ModelConcept]
208
+ prohibitingLabelElements: list[_Element]
207
209
 
208
210
  @property
209
211
  def hasArcs(self) -> bool:
@@ -641,11 +643,36 @@ class PluginValidationDataExtension(PluginData):
641
643
  for linkElt in modelDocument.xmlRootElement.iterdescendants(tag=linkbaseType.getLinkQn().clarkNotation):
642
644
  arcQn = linkbaseType.getArcQn()
643
645
  arcs = list(linkElt.iterdescendants(tag=arcQn.clarkNotation))
646
+ prohibitingLabelElements = []
647
+ prohibitedBaseConcepts = []
648
+ if linkbaseType in (LinkbaseType.LABEL, LinkbaseType.REFERENCE):
649
+ prohibitedArcFroms = defaultdict(list)
650
+ prohibitedArcTos = defaultdict(list)
651
+ for arcElt in linkElt.iterchildren(
652
+ LinkbaseType.LABEL.getArcQn().clarkNotation,
653
+ LinkbaseType.REFERENCE.getArcQn().clarkNotation,
654
+ ):
655
+ if arcElt.get("use") == "prohibited":
656
+ prohibitedArcFroms[arcElt.get(XbrlConst.qnXlinkFrom.clarkNotation)].append(arcElt)
657
+ prohibitedArcTos[arcElt.get(XbrlConst.qnXlinkTo.clarkNotation)].append(arcElt)
658
+ for locElt in linkElt.iterchildren(XbrlConst.qnLinkLoc.clarkNotation):
659
+ if self.isExtensionUri(locElt.get(XbrlConst.qnXlinkHref.clarkNotation), modelDocument.modelXbrl):
660
+ continue
661
+ prohibitingArcs = prohibitedArcTos.get(locElt.get(XbrlConst.qnXlinkLabel.clarkNotation))
662
+ if prohibitingArcs:
663
+ prohibitingLabelElements.extend(prohibitingArcs)
664
+ prohibitingArcs = prohibitedArcFroms.get(locElt.get(XbrlConst.qnXlinkLabel.clarkNotation))
665
+ if prohibitingArcs:
666
+ prohibitingLabelElements.extend(prohibitingArcs)
667
+ prohibitedBaseConcepts.append(locElt.dereference())
668
+
644
669
  linkbases.append(LinkbaseData(
645
670
  arcs=arcs,
646
671
  basename=modelDocument.basename,
647
672
  element=linkElt,
648
673
  linkbaseType=linkbaseType,
674
+ prohibitedBaseConcepts=prohibitedBaseConcepts,
675
+ prohibitingLabelElements=prohibitingLabelElements,
649
676
  ))
650
677
  return linkbases
651
678
 
@@ -3,6 +3,7 @@ See COPYRIGHT.md for copyright information.
3
3
  """
4
4
  from __future__ import annotations
5
5
 
6
+ import re
6
7
  from collections import defaultdict
7
8
  from collections.abc import Iterable
8
9
  from datetime import date
@@ -12,14 +13,14 @@ import zipfile
12
13
 
13
14
  from lxml.etree import Element
14
15
 
15
- from arelle.ModelDtsObject import ModelLink, ModelResource, ModelType
16
+ from arelle.ModelDtsObject import ModelConcept, ModelLink, ModelResource, ModelType
16
17
  from arelle.ModelInstanceObject import ModelInlineFact
17
18
  from arelle.ModelObject import ModelObject
18
19
  from arelle.PrototypeDtsObject import PrototypeObject
19
20
  from arelle.ValidateDuplicateFacts import getDuplicateFactSets
20
21
  from arelle.XmlValidateConst import VALID
21
22
 
22
- from arelle import XbrlConst, XmlUtil
23
+ from arelle import XbrlConst, XmlUtil, ModelDocument
23
24
  from arelle.ValidateXbrl import ValidateXbrl
24
25
  from arelle.typing import TypeGetText
25
26
  from arelle.utils.PluginHooks import ValidationHook
@@ -54,6 +55,8 @@ if TYPE_CHECKING:
54
55
 
55
56
  _: TypeGetText
56
57
 
58
+ DOCTYPE_XHTML_PATTERN = re.compile(r"^<!(?:DOCTYPE\s+)\s*html(?:PUBLIC\s+)?(?:.*-//W3C//DTD\s+(X?HTML)\s)?.*>$", re.IGNORECASE)
59
+
57
60
 
58
61
  def _getReportingPeriodDateValue(modelXbrl: ModelXbrl, qname: QName) -> date | None:
59
62
  facts = modelXbrl.factsByQname.get(qname)
@@ -1477,13 +1480,18 @@ def rule_nl_kvk_4_4_2_4(
1477
1480
  extended link role
1478
1481
  """
1479
1482
  elrPrimaryItems = pluginData.getDimensionalData(val.modelXbrl).elrPrimaryItems
1480
- errors = set(concept
1481
- for qn, facts in val.modelXbrl.factsByQname.items()
1482
- if any(not f.context.qnameDims for f in facts if f.context is not None)
1483
- for concept in (val.modelXbrl.qnameConcepts.get(qn),)
1484
- if concept is not None and
1485
- not any(concept in elrPrimaryItems.get(lr, set()) for lr in NON_DIMENSIONALIZED_LINE_ITEM_LINKROLES) and
1486
- concept not in elrPrimaryItems.get("*", set()))
1483
+ errors = set()
1484
+ for concept in val.modelXbrl.qnameConcepts.values():
1485
+ if concept.qname not in val.modelXbrl.factsByQname:
1486
+ continue
1487
+ if any(
1488
+ concept in elrPrimaryItems.get(lr, set())
1489
+ for lr in NON_DIMENSIONALIZED_LINE_ITEM_LINKROLES
1490
+ ):
1491
+ continue
1492
+ if concept in elrPrimaryItems.get("*", set()):
1493
+ continue
1494
+ errors.add(concept)
1487
1495
  for error in errors:
1488
1496
  yield Validation.error(
1489
1497
  codes='NL.NL-KVK.4.4.2.4.extensionTaxonomyLineItemNotLinkedToAnyHypercube',
@@ -1824,7 +1832,48 @@ def rule_nl_kvk_RTS_Annex_IV_Par_11_G4_2_2_1(
1824
1832
 
1825
1833
  @validation(
1826
1834
  hook=ValidationHook.XBRL_FINALLY,
1827
- disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
1835
+ disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
1836
+ )
1837
+ def rule_nl_kvk_RTS_Annex_IV_Par_4_1(
1838
+ pluginData: PluginValidationDataExtension,
1839
+ val: ValidateXbrl,
1840
+ *args: Any,
1841
+ **kwargs: Any,
1842
+ ) -> Iterable[Validation]:
1843
+ """
1844
+ NL-KVK.RTS_Annex_IV_Par_4_1: Extension elements must not duplicate the existing
1845
+ elements from the core taxonomy and be identifiable.
1846
+ """
1847
+ for name, concepts in val.modelXbrl.nameConcepts.items():
1848
+ if len(concepts) < 2:
1849
+ continue
1850
+ coreConcepts = []
1851
+ extensionConcepts = []
1852
+ for concept in concepts:
1853
+ if pluginData.isExtensionUri(concept.modelDocument.uri, val.modelXbrl):
1854
+ extensionConcepts.append(concept)
1855
+ else:
1856
+ coreConcepts.append(concept)
1857
+ if len(coreConcepts) == 0:
1858
+ continue
1859
+ coreConcept = coreConcepts[0]
1860
+ for extensionConcept in extensionConcepts:
1861
+ if extensionConcept.balance != coreConcept.balance:
1862
+ continue
1863
+ if extensionConcept.periodType != coreConcept.periodType:
1864
+ continue
1865
+ yield Validation.error(
1866
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_4_1.extensionElementDuplicatesCoreElement',
1867
+ msg=_('An extension element was found that is a duplicate to a core element (%(qname)s). '
1868
+ 'Review use of element and update to core or revise extension element.'),
1869
+ modelObject=(coreConcept, extensionConcept),
1870
+ qname=coreConcept.qname,
1871
+ )
1872
+
1873
+
1874
+ @validation(
1875
+ hook=ValidationHook.XBRL_FINALLY,
1876
+ disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
1828
1877
  )
1829
1878
  def rule_nl_kvk_RTS_Annex_IV_Par_4_2(
1830
1879
  pluginData: PluginValidationDataExtension,
@@ -1847,6 +1896,54 @@ def rule_nl_kvk_RTS_Annex_IV_Par_4_2(
1847
1896
  )
1848
1897
 
1849
1898
 
1899
+ @validation(
1900
+ hook=ValidationHook.XBRL_FINALLY,
1901
+ disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
1902
+ )
1903
+ def rule_nl_kvk_RTS_Annex_IV_Par_5(
1904
+ pluginData: PluginValidationDataExtension,
1905
+ val: ValidateXbrl,
1906
+ *args: Any,
1907
+ **kwargs: Any,
1908
+ ) -> Iterable[Validation]:
1909
+ """
1910
+ NL-KVK.RTS_Annex_IV_Par_5: Each extension taxonomy element used in tagging
1911
+ must be included in at least one presentation and definition linkbase hierarchy.
1912
+ """
1913
+ extensionData = pluginData.getExtensionData(val.modelXbrl)
1914
+ taggedExtensionConcepts = set(extensionData.extensionConcepts) & set(fact.concept for fact in val.modelXbrl.facts)
1915
+
1916
+ def getConceptsInLinkbase(arcroles: frozenset[str], concepts: set[ModelConcept]) -> None:
1917
+ for fromModelObject, toRels in val.modelXbrl.relationshipSet(tuple(arcroles)).fromModelObjects().items():
1918
+ if isinstance(fromModelObject, ModelConcept):
1919
+ concepts.add(fromModelObject)
1920
+ for toRel in toRels:
1921
+ if isinstance(toRel.toModelObject, ModelConcept):
1922
+ concepts.add(toRel.toModelObject)
1923
+
1924
+ conceptsInDefinition: set[ModelConcept] = set()
1925
+ getConceptsInLinkbase(LinkbaseType.DEFINITION.getArcroles(), conceptsInDefinition)
1926
+ conceptsMissingFromDefinition = taggedExtensionConcepts - conceptsInDefinition
1927
+ if len(conceptsMissingFromDefinition) > 0:
1928
+ yield Validation.error(
1929
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_5.usableConceptsNotIncludedInDefinitionLink',
1930
+ msg=_('Extension elements are missing from definition linkbase. '
1931
+ 'Review use of extension elements.'),
1932
+ modelObject=conceptsMissingFromDefinition
1933
+ )
1934
+
1935
+ conceptsInPresentation: set[ModelConcept] = set()
1936
+ getConceptsInLinkbase(LinkbaseType.PRESENTATION.getArcroles(), conceptsInPresentation)
1937
+ conceptsMissingFromPresentation = taggedExtensionConcepts - conceptsInPresentation
1938
+ if len(conceptsMissingFromPresentation) > 0:
1939
+ yield Validation.error(
1940
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_5.usableConceptsNotIncludedInPresentationLink',
1941
+ msg=_('Extension elements are missing from presentation linkbase. '
1942
+ 'Review use of extension elements.'),
1943
+ modelObject=conceptsMissingFromPresentation
1944
+ )
1945
+
1946
+
1850
1947
  @validation(
1851
1948
  hook=ValidationHook.XBRL_FINALLY,
1852
1949
  disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
@@ -1873,3 +1970,105 @@ def rule_nl_kvk_RTS_Annex_IV_Par_6(
1873
1970
  msg=_('The filing package must include a calculation linkbase.'),
1874
1971
  modelObject=val.modelXbrl.modelDocument
1875
1972
  )
1973
+
1974
+
1975
+ @validation(
1976
+ hook=ValidationHook.XBRL_FINALLY,
1977
+ disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
1978
+ )
1979
+ def rule_nl_kvk_RTS_Annex_IV_Par_8_G4_4_5(
1980
+ pluginData: PluginValidationDataExtension,
1981
+ val: ValidateXbrl,
1982
+ *args: Any,
1983
+ **kwargs: Any,
1984
+ ) -> Iterable[Validation]:
1985
+ """
1986
+ NL-KVK.RTS_Annex_IV_Par_8_G4-4-5: Labels and references of the core
1987
+ taxonomy elements in extension taxonomies of issuer shall not be replaced.
1988
+ """
1989
+ extensionData = pluginData.getExtensionData(val.modelXbrl)
1990
+ for modelDocument, extensionDoc in extensionData.extensionDocuments.items():
1991
+ for linkbase in extensionDoc.linkbases:
1992
+ if linkbase.prohibitingLabelElements and \
1993
+ linkbase.prohibitedBaseConcepts:
1994
+ if linkbase.linkbaseType == LinkbaseType.LABEL:
1995
+ yield Validation.error(
1996
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_8_G4-4-5.coreTaxonomyLabelModification',
1997
+ msg=_('Standard concept has a modified label from what was defined in the taxonomy. '
1998
+ 'Labels from the taxonomy should not be modified.'),
1999
+ modelObject=modelDocument
2000
+ )
2001
+ else:
2002
+ # Assumed to be a reference linkbase.
2003
+ # If anything else, we should probably fire an error anyway.
2004
+ yield Validation.error(
2005
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_8_G4-4-5.coreTaxonomyReferenceModification',
2006
+ msg=_('Standard concept has a modified reference from what was defined in the taxonomy. '
2007
+ 'References from the taxonomy should not be modified.'),
2008
+ modelObject=modelDocument
2009
+ )
2010
+
2011
+
2012
+ @validation(
2013
+ hook=ValidationHook.XBRL_FINALLY,
2014
+ disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
2015
+ )
2016
+ def rule_nl_kvk_RTS_Art_3(
2017
+ pluginData: PluginValidationDataExtension,
2018
+ val: ValidateXbrl,
2019
+ *args: Any,
2020
+ **kwargs: Any,
2021
+ ) -> Iterable[Validation]:
2022
+ """
2023
+ NL-KVK.RTS_Art_3: Legal entities shall file their annual reports in XHTML format
2024
+ """
2025
+ for modelDocument in val.modelXbrl.urlDocs.values():
2026
+ docinfo = modelDocument.xmlRootElement.getroottree().docinfo
2027
+ docTypeMatch = DOCTYPE_XHTML_PATTERN.match(docinfo.doctype)
2028
+ if not docTypeMatch:
2029
+ continue
2030
+ if not docTypeMatch.group(1) or docTypeMatch.group(1).lower() == "html":
2031
+ yield Validation.error(
2032
+ codes='NL.NL-KVK.RTS_Art_3.htmlDoctype',
2033
+ msg=_('Doctype SHALL NOT specify html: %(doctype)s'),
2034
+ modelObject=val.modelXbrl.modelDocument,
2035
+ doctype=docinfo.doctype,
2036
+ )
2037
+ else:
2038
+ yield Validation.warning(
2039
+ codes='NL.NL-KVK.RTS_Art_3.xhtmlDoctype',
2040
+ msg=_('Doctype implies xhtml DTD validation but '
2041
+ 'inline 1.1 requires schema validation: %(doctype)s'),
2042
+ modelObject=val.modelXbrl.modelDocument,
2043
+ doctype=docinfo.doctype,
2044
+ )
2045
+
2046
+
2047
+ @validation(
2048
+ hook=ValidationHook.XBRL_FINALLY,
2049
+ disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
2050
+ )
2051
+ def rule_nl_kvk_RTS_Art_6_a(
2052
+ pluginData: PluginValidationDataExtension,
2053
+ val: ValidateXbrl,
2054
+ *args: Any,
2055
+ **kwargs: Any,
2056
+ ) -> Iterable[Validation]:
2057
+ """
2058
+ NL-KVK.RTS_Art_6_a: Legal entities shall embed markups in the annual reports
2059
+ in XHTML format using the Inline XBRL specifications
2060
+ """
2061
+ for modelDocument in val.modelXbrl.urlDocs.values():
2062
+ if modelDocument.type != ModelDocument.Type.INLINEXBRL:
2063
+ continue
2064
+ factElements = list(modelDocument.xmlRootElement.iterdescendants(
2065
+ modelDocument.ixNStag + "nonNumeric",
2066
+ modelDocument.ixNStag + "nonFraction",
2067
+ modelDocument.ixNStag + "fraction"
2068
+ ))
2069
+ if len(factElements) == 0:
2070
+ yield Validation.error(
2071
+ codes='NL.NL-KVK.RTS_Art_6_a.noInlineXbrlTags',
2072
+ msg=_('Annual report is using xhtml extension, but there are no inline mark up tags identified.'),
2073
+ modelObject=modelDocument,
2074
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.23
3
+ Version: 2.37.25
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License: Apache-2.0
@@ -63,7 +63,7 @@ arelle/TableStructure.py,sha256=PABOHJiTa56cHyF9qRLD7TohmCHyDTrGEltW8toP_rk,2940
63
63
  arelle/TkTableWrapper.py,sha256=Bdm-WmLdwIiudqfaVGZElip_92eeSKQdd7hCjlILm1A,33612
64
64
  arelle/UITkTable.py,sha256=N83cXi5c0lLZLsDbwSKcPrlYoUoGsNavGN5YRx6d9XY,39810
65
65
  arelle/UiUtil.py,sha256=3G0xPclZI8xW_XQDbiFrmylB7Nd5muqi5n2x2oMkMZU,34218
66
- arelle/Updater.py,sha256=ho8Z_9GOL39H1jHL3Gaw5uc6av7J8ZBB6dR_X-nF_e0,7124
66
+ arelle/Updater.py,sha256=IZ8cq44Rq88WbQcB1VOpMA6bxdfZxfYQ8rgu9Ehpbes,7448
67
67
  arelle/UrlUtil.py,sha256=HrxZSG59EUMGMMGmWPuZkPi5-0BGqY3jAMkp7V4IdZo,32400
68
68
  arelle/Validate.py,sha256=XBrKQHsSC7Qz5Fp-M3gODfxwW8a-PWyBzZkCekYrMZM,56920
69
69
  arelle/ValidateDuplicateFacts.py,sha256=L556J1Dhz4ZmsMlRNoDCMpFgDQYiryd9vuBYDvE0Aq8,21769
@@ -114,7 +114,7 @@ arelle/ViewWinVersReport.py,sha256=aYfsOgynVZpMzl6f2EzQCBLzdihYGycwb5SiTghkgMQ,9
114
114
  arelle/ViewWinXml.py,sha256=4ZGKtjaoCwU9etKYm9ZAS7jSmUxba1rqNEdv0OIyjTY,1250
115
115
  arelle/WatchRss.py,sha256=5Ih4igH2MM4hpOuAXy9eO0QAyZ7jZR3S5bPzo2sdFpw,14097
116
116
  arelle/WebCache.py,sha256=B62IxIHLX4hcDr_0MJGfmzUXau2ONqiMk6vLVLxAIhA,45057
117
- arelle/XbrlConst.py,sha256=qkujDn50-bDz_z6Uj-z53pFMQimdsiBCMARyY2NiB44,57164
117
+ arelle/XbrlConst.py,sha256=gKYJECjuOEn0z0RRAaHpVCqh2NnBMfPLGxoLohYGGH4,57657
118
118
  arelle/XbrlUtil.py,sha256=s2Vmrh-sZI5TeuqsziKignOc3ao-uUgnCNoelP4dDj0,9212
119
119
  arelle/XhtmlValidate.py,sha256=0gtm7N-kXK0RB5o3c1AQXjfFuRp1w2fKZZAeyruNANw,5727
120
120
  arelle/XmlUtil.py,sha256=1VToOOylF8kbEorEdZLThmq35j9bmuF_DS2q9NthnHU,58774
@@ -123,7 +123,7 @@ arelle/XmlValidateConst.py,sha256=U_wN0Q-nWKwf6dKJtcu_83FXPn9c6P8JjzGA5b0w7P0,33
123
123
  arelle/XmlValidateParticles.py,sha256=Mn6vhFl0ZKC_vag1mBwn1rH_x2jmlusJYqOOuxFPO2k,9231
124
124
  arelle/XmlValidateSchema.py,sha256=6frtZOc1Yrx_5yYF6V6oHbScnglWrVbWr6xW4EHtLQI,7428
125
125
  arelle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
- arelle/_version.py,sha256=m8X4i_J2wh9B847cmv_5hSkps2GlxoxEqwoZitrqqxk,515
126
+ arelle/_version.py,sha256=uRbec_j0ZhdrtZwA-ge3qPnm-hdyZFzvTqnuVbV5-z8,515
127
127
  arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
128
128
  arelle/api/Session.py,sha256=5KPjCIPiNuanKrz1MdFdKIx8Bg40Pk9sf2cL9OU4x-E,7770
129
129
  arelle/archive/CustomLogger.py,sha256=v_JXOCQLDZcfaFWzxC9FRcEf9tQi4rCI4Sx7jCuAVQI,1231
@@ -409,8 +409,8 @@ arelle/plugin/validate/FERC/__init__.py,sha256=V4fXcFKBsjFFPs9_1NhvDjWpEQCoQM0tR
409
409
  arelle/plugin/validate/FERC/config.xml,sha256=bn9b8eCqJA1J62rYq1Nz85wJrMGAahVmmnIUQZyerjo,1919
410
410
  arelle/plugin/validate/FERC/resources/ferc-utr.xml,sha256=OCRj9IUpdXATCBXKbB71apYx9kxcNtZW-Hq4s-avsRY,2663
411
411
  arelle/plugin/validate/NL/DisclosureSystems.py,sha256=urRmYJ8RnGPlTgSVKW7zGN4_4CtL3OVKlcI3LwTpBz4,561
412
- arelle/plugin/validate/NL/LinkbaseType.py,sha256=csXEqLaU43tN58RUG3oeD3nUYcdHl1OWSKaxpOhbTXk,2515
413
- arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=trpeAekXGWourOMI-tFfzQIFJjTRrdIjNGKpxRKWCjs,32840
412
+ arelle/plugin/validate/NL/LinkbaseType.py,sha256=BwRQl4XZFFCopufC2FEMLhYENNTk2JUWVQvnIUsaqtI,3108
413
+ arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=en-x3J_sH9w-lIJzNwKRE6rRJ2fgovovVtq7n7QLo4E,34667
414
414
  arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=suCNqrtC_IMndyS_mXaeujDvjgSduTQ9KPNRc9B0F6I,16098
415
415
  arelle/plugin/validate/NL/__init__.py,sha256=23cF5ih2wu0RO_S0B52nVB7LrdlmnYcctOUezF0kKQ8,2874
416
416
  arelle/plugin/validate/NL/resources/config.xml,sha256=qBE6zywFSmemBSWonuTII5iuOCUlNb1nvkpMbsZb5PM,1853
@@ -419,7 +419,7 @@ arelle/plugin/validate/NL/rules/br_kvk.py,sha256=0SwKieWzTDm3YMsXPS6zTdgbk7_Z9Cz
419
419
  arelle/plugin/validate/NL/rules/fg_nl.py,sha256=4Puq5wAjtK_iNd4wisH_R0Z_EKJ7MT2OCai5g4t1MPE,10714
420
420
  arelle/plugin/validate/NL/rules/fr_kvk.py,sha256=kYqXt45S6eM32Yg9ii7pUhOMfJaHurgYqQ73FyQALs8,8171
421
421
  arelle/plugin/validate/NL/rules/fr_nl.py,sha256=-M1WtXp06khhtkfOVPCa-b8UbC281gk4YfDhvtAVlnI,31424
422
- arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=xT3Hc-s3089HSkZC7_VpX-eGDU4vDNgdOXUXy-WSIA8,76762
422
+ arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=2HA7S5YABZhy44mUehGkqypUCG1KxeY2pWWt_oyVzoo,85187
423
423
  arelle/plugin/validate/ROS/DisclosureSystems.py,sha256=rJ81mwQDYTi6JecFZ_zhqjjz3VNQRgjHNSh0wcQWAQE,18
424
424
  arelle/plugin/validate/ROS/PluginValidationDataExtension.py,sha256=IV7ILhNvgKwQXqbpSA6HRNt9kEnejCyMADI3wyyIgk0,4036
425
425
  arelle/plugin/validate/ROS/ValidationPluginExtension.py,sha256=FBhEp8t396vGdvCbMEimfcxmGiGnhXMen-yVLWnkFaI,758
@@ -742,7 +742,7 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
742
742
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
743
743
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
744
744
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
745
- arelle_release-2.37.23.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
745
+ arelle_release-2.37.25.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
746
746
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
747
747
  tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
748
748
  tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
@@ -781,7 +781,7 @@ tests/integration_tests/validation/validation_util.py,sha256=_f0gd5BTts44Z9aEKi9
781
781
  tests/integration_tests/validation/conformance_suite_configurations/cipc_current.py,sha256=oLXe3xIsEZLz3cv1cDdMQIuS_NgyI9Uimc9hy0NMWqg,642
782
782
  tests/integration_tests/validation/conformance_suite_configurations/dba_current.py,sha256=j-7jCpzbGXbOzG8HGEyS0ciCYSPZzZLV44VQGhP3Hmc,875
783
783
  tests/integration_tests/validation/conformance_suite_configurations/dba_multi_current.py,sha256=ICkP18Wu7aTDfszfYlrfVnBj9oe7ppXR-8wxQqCPqW0,837
784
- tests/integration_tests/validation/conformance_suite_configurations/efm_current.py,sha256=LoAuqV3uMiQSfgQ34c_T70ph3YT7py5nu10podbIFRM,1322
784
+ tests/integration_tests/validation/conformance_suite_configurations/efm_current.py,sha256=zbZ9c-LoZJDRp0Lobl_oH3xRw4g-2u6oQqU0-oo5NOE,1322
785
785
  tests/integration_tests/validation/conformance_suite_configurations/efm_reg_dqc.py,sha256=HiT8OcRAOVKLsl95Y91L66FeOsIMMMAQCs-DLMG-Lb0,739
786
786
  tests/integration_tests/validation/conformance_suite_configurations/efm_reg_pragmatic.py,sha256=U6dew0sIibjZe4r6na912qyIVAjxljh2HDix-8AwvhM,727
787
787
  tests/integration_tests/validation/conformance_suite_configurations/esef_ixbrl_2021.py,sha256=KpXpm6kMYAp94K-J7-GZS47iRVE9Kr5cfxPniFFSI3A,1146
@@ -797,8 +797,8 @@ tests/integration_tests/validation/conformance_suite_configurations/kvk_nt16.py,
797
797
  tests/integration_tests/validation/conformance_suite_configurations/kvk_nt17.py,sha256=lmEZonthFm0YKFmp1dwXtdJ2T7txUeSpL4mbAo8fl4Y,1292
798
798
  tests/integration_tests/validation/conformance_suite_configurations/kvk_nt18.py,sha256=EG2RQVkvFENhzUF3fl3QvDnH7ZPYS1n1Fo8bhfmSczM,1205
799
799
  tests/integration_tests/validation/conformance_suite_configurations/kvk_nt19.py,sha256=FAzf9RhRmn_8yowpplJho2zEspX9FxJiVq8SjZT3Dsc,1199
800
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=cv_SuMgcc_bMDW5adagOKPChkhSp4x1rJWbV_CyV_pM,8884
801
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024_gaap_other.py,sha256=i-W3lMMI37i4RTQyo717khlnqL4Bc7EkDtbhCtqTu3U,31366
800
+ tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=JM1RcC5QuweIEPk8HpzneE5VvaH8Gjqx_TJeBd97WbQ,9465
801
+ tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024_gaap_other.py,sha256=vtzYSd0-vF9g6eHfrIUpMBz7D0HdR_gi8O0429lOaww,31667
802
802
  tests/integration_tests/validation/conformance_suite_configurations/nl_nt16.py,sha256=O_LFVBZPkjxmbrU7_C7VTLtrdoCUx2bYXOXw6_MlRtQ,846
803
803
  tests/integration_tests/validation/conformance_suite_configurations/nl_nt17.py,sha256=aTN3Ez6lPsZsuypHZP84DneOtYxUZSjUiGypHy6ofHQ,846
804
804
  tests/integration_tests/validation/conformance_suite_configurations/nl_nt18.py,sha256=sqHLjrHc95dTu0guTgKkphaKM1zNfKGnN4GKkZDLzeU,845
@@ -1551,7 +1551,7 @@ tests/resources/conformance_suites_expected/efm_current.csv,sha256=9YoKy-kYo_VAy
1551
1551
  tests/resources/conformance_suites_expected/efm_reg_dqc.csv,sha256=0CEItNnnEE_s8uGHA8CidxEVyvOiTCv5nAWpc4dCUmE,9968847
1552
1552
  tests/resources/conformance_suites_expected/efm_reg_pragmatic.csv,sha256=J_sDOjJGDjFnseMU7QIBttvvOjjnPp_WdmrCkjvCu4Y,196
1553
1553
  tests/resources/conformance_suites_timing/dba_current.json,sha256=e5jmGVDcPbaXDbHNK3RQz-_gsozU1dL_J0gcNDzHnjg,1467
1554
- tests/resources/conformance_suites_timing/efm_current.json,sha256=QyaFax_rnONGbGeGwCx-YUQifDp7Gws5csiDfjQuuFI,1105261
1554
+ tests/resources/conformance_suites_timing/efm_current.json,sha256=iqqcBoDJVs2F_xW03gCirDyaLZoS9x482KAQgMhCvvg,1096604
1555
1555
  tests/resources/conformance_suites_timing/efm_reg_dqc.json,sha256=4ry0JC8XA-8Bua2E75edknjxcL42Qj6nMZxvjCdW2uc,1708653
1556
1556
  tests/resources/conformance_suites_timing/esef_ixbrl_2021.json,sha256=3UBEba0PStPkAHgYZc6_WAH3_pBTGOpDNRQ0X1hxH74,26836
1557
1557
  tests/resources/conformance_suites_timing/esef_ixbrl_2022.json,sha256=1ifWHng_AENYMwug6h68pqK72EHk6nMq2ZLf7-U9Fh8,21740
@@ -1583,7 +1583,7 @@ tests/unit_tests/arelle/test_pluginmanager.py,sha256=_Gi03PP-6FZ7mWqe2ysS_N_suOQ
1583
1583
  tests/unit_tests/arelle/test_qname.py,sha256=0aKh6jYWmY4Xg3wOS839Tdqa1SHwHuha6akv5T6qddY,4892
1584
1584
  tests/unit_tests/arelle/test_runtimeoptions.py,sha256=OB4ds28ODYjzgm9wlojd_fIRf7iRGOmDaPgxm4kiCwM,1315
1585
1585
  tests/unit_tests/arelle/test_system_info.py,sha256=G9VtKX9WCaas2D2s-Yw-4kcq6_zcY-LkjOveGvQNvZI,655
1586
- tests/unit_tests/arelle/test_updater.py,sha256=8DDHTpog8l9T8fHhHtrE9coPWTyFCgf-BCDm9nTtr6E,16163
1586
+ tests/unit_tests/arelle/test_updater.py,sha256=4HJDlS5VRtShnT57NbioHtWzTMR34NguJ37HEWkKl4Y,17254
1587
1587
  tests/unit_tests/arelle/test_urlutil.py,sha256=3WTHxic3XiiOGZQxkHm9m97kFbLHOc27oXypU8fFt1w,914
1588
1588
  tests/unit_tests/arelle/test_validatexbrlcalcs.py,sha256=eMVYJkm6v1I2JswCTIKumU92jKdFeB_jxTGt9RkfBjU,2827
1589
1589
  tests/unit_tests/arelle/test_version.py,sha256=5dxNN083Hw6pdVsY11DatBFVM8pMVttruCDgou870Og,2000
@@ -1596,8 +1596,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
1596
1596
  tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
1597
1597
  tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=H0ndmQ0sFO5WVMzAxPCH1WciRhCg_HgKUtQCg0xlmtg,1238
1598
1598
  tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
1599
- arelle_release-2.37.23.dist-info/METADATA,sha256=xL-89sGS9HVrVvGtcDhtbYumAyJQIGQBoC7t3sNt9JI,9134
1600
- arelle_release-2.37.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1601
- arelle_release-2.37.23.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1602
- arelle_release-2.37.23.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1603
- arelle_release-2.37.23.dist-info/RECORD,,
1599
+ arelle_release-2.37.25.dist-info/METADATA,sha256=qMoZayQIOklP4YadlKQ_DOpjVwBTCvWuNNvtVEcVgfY,9134
1600
+ arelle_release-2.37.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1601
+ arelle_release-2.37.25.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1602
+ arelle_release-2.37.25.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1603
+ arelle_release-2.37.25.dist-info/RECORD,,
@@ -6,7 +6,7 @@ from tests.integration_tests.validation.conformance_suite_config import (
6
6
  ConformanceSuiteConfig,
7
7
  )
8
8
 
9
- CONFORMANCE_SUITE_ZIP_NAME = 'efm-73-250317.zip'
9
+ CONFORMANCE_SUITE_ZIP_NAME = 'efm-74-250616.zip'
10
10
 
11
11
  config = ConformanceSuiteConfig(
12
12
  additional_plugins_by_prefix=[(f'conf/{t}', frozenset({'EDGAR/render'})) for t in [
@@ -27,7 +27,7 @@ config = ConformanceSuiteConfig(
27
27
  source=AssetSource.S3_PUBLIC,
28
28
  )
29
29
  ],
30
- cache_version_id='D6XVsgj8noOk9wzCTX91wqwQFq68d0bi',
30
+ cache_version_id='fQUkcdNcy7HZxP3bfwn1v3DnJkc4aKKp',
31
31
  info_url='https://www.sec.gov/structureddata/osdinteractivedatatestsuite',
32
32
  name=PurePath(__file__).stem,
33
33
  plugins=frozenset({
@@ -24,6 +24,7 @@ config = ConformanceSuiteConfig(
24
24
  },
25
25
  'G3-1-3_2/index.xml:TC2_invalid': {
26
26
  'extensionTaxonomyLineItemNotLinkedToAnyHypercube': 1,
27
+ 'usableConceptsNotIncludedInDefinitionLink': 1,
27
28
  },
28
29
  'G3-5-1_5/index.xml:TC2_invalid': {
29
30
  # This is the expected error, but we return two of them, slightly different.
@@ -48,6 +49,12 @@ config = ConformanceSuiteConfig(
48
49
  'G4-1-1_1/index.xml:TC4_invalid': {
49
50
  'extensionTaxonomyWrongFilesStructure': 1,
50
51
  },
52
+ 'G4-1-1_1/index.xml:TC5_invalid': {
53
+ 'usableConceptsNotIncludedInPresentationLink': 1,
54
+ },
55
+ 'G4-1-1_1/index.xml:TC7_invalid': {
56
+ 'usableConceptsNotIncludedInPresentationLink': 1,
57
+ },
51
58
  'G4-1-2_1/index.xml:TC2_valid': {
52
59
  'undefinedLanguageForTextFact': 1,
53
60
  'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 5,
@@ -63,9 +70,15 @@ config = ConformanceSuiteConfig(
63
70
  'UsableConceptsNotAppliedByTaggedFacts': 1, # Also fails 4.4.6.1
64
71
  'extensionTaxonomyLineItemNotLinkedToAnyHypercube': 10,
65
72
  },
73
+ 'G4-2-3_1/index.xml:TC2_invalid': {
74
+ 'extensionTaxonomyLineItemNotLinkedToAnyHypercube': 1,
75
+ },
66
76
  'G4-4-2_1/index.xml:TC2_invalid': {
67
77
  'closedNegativeHypercubeInDefinitionLinkbase': 1, # Also fails 4.4.2.3
68
78
  },
79
+ 'G4-4-2_4/index.xml:TC2_invalid': {
80
+ 'usableConceptsNotIncludedInDefinitionLink': 1,
81
+ },
69
82
  'RTS_Annex_II_Par_1_RTS_Annex_IV_par_7/index.xml:TC2_valid': {
70
83
  'undefinedLanguageForTextFact': 1,
71
84
  'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 5,
@@ -92,7 +105,20 @@ config = ConformanceSuiteConfig(
92
105
  'undefinedLanguageForTextFact': 1,
93
106
  'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 5,
94
107
  'extensionTaxonomyWrongFilesStructure': 1,
95
- }
108
+ },
109
+ 'RTS_Art_6_a/index.xml:TC2_invalid': {
110
+ 'UsableConceptsNotAppliedByTaggedFacts': 1,
111
+ 'incorrectKvkTaxonomyVersionUsed': 1,
112
+ 'message:existsAtLeastOnce_ChamberOfCommerceRegistrationNumber': 1,
113
+ 'message:existsAtLeastOnce_FinancialReportingPeriod': 1,
114
+ 'message:existsAtLeastOnce_FinancialReportingPeriodEndDate': 1,
115
+ 'message:existsAtLeastOnce_LegalEntityLegalForm': 1,
116
+ 'message:existsAtLeastOnce_LegalEntityName': 1,
117
+ 'message:existsAtLeastOnce_LegalEntityRegisteredOffice': 1,
118
+ 'message:existsOnlyOnce_AuditorsReportFinancialStatementsPresent': 1,
119
+ 'message:existsOnlyOnce_DocumentAdoptionStatus': 1,
120
+ 'message:existsOnlyOnce_FinancialStatementsConsolidated': 1,
121
+ },
96
122
  }.items()},
97
123
  expected_failure_ids=frozenset([
98
124
  # Conformance Suite Errors
@@ -116,17 +142,10 @@ config = ConformanceSuiteConfig(
116
142
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_III_Par_1/index.xml:TC3_invalid',
117
143
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_12_G3-2-4_1/index.xml:TC4_invalid',
118
144
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_14_G3-5-1_1/index.xml:TC2_invalid',
119
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_4_1/index.xml:TC2_invalid',
120
145
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_4_3/index.xml:TC3_invalid',
121
146
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_4_3/index.xml:TC4_invalid',
122
147
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_4_3/index.xml:TC5_invalid',
123
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_5/index.xml:TC2_invalid',
124
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_5/index.xml:TC3_invalid',
125
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_8_G4-4-5/index.xml:TC2_invalid',
126
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_8_G4-4-5/index.xml:TC3_invalid',
127
148
  'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_9_Par_10/index.xml:TC3_invalid',
128
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Art_3/index.xml:TC4_invalid',
129
- 'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Art_6_a/index.xml:TC2_invalid',
130
149
  ]),
131
150
  info_url='https://www.sbr-nl.nl/sbr-domeinen/handelsregister/uitbreiding-elektronische-deponering-handelsregister',
132
151
  name=PurePath(__file__).stem,