arelle-release 2.37.9__py3-none-any.whl → 2.37.11__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/CntlrWinMain.py +33 -27
- arelle/_version.py +2 -2
- arelle/oim/Load.py +15 -1
- arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +3 -1
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +2 -1
- arelle/plugin/validate/ESEF/Util.py +1 -11
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +32 -0
- arelle/plugin/validate/NL/ValidationPluginExtension.py +12 -6
- arelle/plugin/validate/NL/rules/nl_kvk.py +58 -0
- arelle/utils/validate/ValidationUtil.py +23 -0
- {arelle_release-2.37.9.dist-info → arelle_release-2.37.11.dist-info}/METADATA +1 -1
- {arelle_release-2.37.9.dist-info → arelle_release-2.37.11.dist-info}/RECORD +17 -16
- {arelle_release-2.37.9.dist-info → arelle_release-2.37.11.dist-info}/WHEEL +1 -1
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py +20 -6
- {arelle_release-2.37.9.dist-info → arelle_release-2.37.11.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.9.dist-info → arelle_release-2.37.11.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.9.dist-info → arelle_release-2.37.11.dist-info}/top_level.txt +0 -0
arelle/CntlrWinMain.py
CHANGED
|
@@ -467,6 +467,8 @@ class CntlrWinMain (Cntlr.Cntlr):
|
|
|
467
467
|
if not self.modelManager.disclosureSystem.select(self.config.setdefault("disclosureSystem", None)):
|
|
468
468
|
self.validateDisclosureSystem.set(False)
|
|
469
469
|
self.modelManager.validateDisclosureSystem = False
|
|
470
|
+
self.config["validateDisclosureSystem"] = False
|
|
471
|
+
self.config["disclosureSystem"] = None
|
|
470
472
|
|
|
471
473
|
# load argv overrides for modelManager options
|
|
472
474
|
lastArg = None
|
|
@@ -1111,36 +1113,40 @@ class CntlrWinMain (Cntlr.Cntlr):
|
|
|
1111
1113
|
self.fileOpenFile(fileHistory[0])
|
|
1112
1114
|
|
|
1113
1115
|
def validate(self):
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1116
|
+
if not self.modelManager.loadedModelXbrls:
|
|
1117
|
+
tkinter.messagebox.showwarning(
|
|
1118
|
+
_("arelle - Warning"),
|
|
1119
|
+
_("No XBRL loaded to validate"),
|
|
1120
|
+
parent=self.parent,
|
|
1121
|
+
)
|
|
1122
|
+
return
|
|
1123
|
+
if self.modelManager.validateDisclosureSystem and not self.modelManager.disclosureSystem.selection:
|
|
1124
|
+
tkinter.messagebox.showwarning(
|
|
1125
|
+
_("arelle - Warning"),
|
|
1126
|
+
_("Validation - disclosure system checks requested but no disclosure system is selected, please select one by validation - select disclosure system."),
|
|
1127
|
+
parent=self.parent,
|
|
1128
|
+
)
|
|
1129
|
+
return
|
|
1130
|
+
threading.Thread(target=self.backgroundValidate, daemon=True).start()
|
|
1126
1131
|
|
|
1127
1132
|
def backgroundValidate(self):
|
|
1128
1133
|
from arelle import Validate
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1134
|
+
for loadedModelXbrl in self.modelManager.loadedModelXbrls:
|
|
1135
|
+
if loadedModelXbrl.modelDocument:
|
|
1136
|
+
startedAt = time.time()
|
|
1137
|
+
if loadedModelXbrl.modelDocument.type in ModelDocument.Type.TESTCASETYPES:
|
|
1138
|
+
for pluginXbrlMethod in pluginClassMethods("Testcases.Start"):
|
|
1139
|
+
pluginXbrlMethod(self, None, loadedModelXbrl)
|
|
1140
|
+
for modelXbrl in [loadedModelXbrl] + getattr(loadedModelXbrl, "supplementalModelXbrls", []):
|
|
1141
|
+
priorOutputInstance = modelXbrl.formulaOutputInstance
|
|
1142
|
+
modelXbrl.formulaOutputInstance = None # prevent closing on background thread by validateFormula
|
|
1143
|
+
try:
|
|
1144
|
+
Validate.validate(modelXbrl)
|
|
1145
|
+
except Exception as err:
|
|
1146
|
+
self.addToLog(_("[exception] Validation exception: {0} at {1}").format(err, traceback.format_tb(sys.exc_info()[2])))
|
|
1147
|
+
self.addToLog(format_string(self.modelManager.locale, _("validated in %.2f secs: %s"), (time.time() - startedAt, modelXbrl.displayUri)))
|
|
1148
|
+
if not modelXbrl.isClosed and (priorOutputInstance or modelXbrl.formulaOutputInstance):
|
|
1149
|
+
self.uiThreadQueue.put((self.showFormulaOutputInstance, [priorOutputInstance, modelXbrl.formulaOutputInstance]))
|
|
1144
1150
|
|
|
1145
1151
|
self.uiThreadQueue.put((self.logSelect, []))
|
|
1146
1152
|
|
arelle/_version.py
CHANGED
arelle/oim/Load.py
CHANGED
|
@@ -839,7 +839,21 @@ def _loadFromOIM(cntlr, error, warning, modelXbrl, oimFile, mappedUri):
|
|
|
839
839
|
filepath = modelXbrl.modelManager.cntlr.webCache.getfilename(mappedUrl) # , reload=reloadCache, checkModifiedTime=kwargs.get("checkModifiedTime",False))
|
|
840
840
|
if filepath:
|
|
841
841
|
url = modelXbrl.modelManager.cntlr.webCache.normalizeUrl(filepath)
|
|
842
|
-
if filepath
|
|
842
|
+
if filepath is None:
|
|
843
|
+
if extendingFile is None:
|
|
844
|
+
raise OIMException(
|
|
845
|
+
"oime:unresolvableFile",
|
|
846
|
+
_("Unable to resolve file %(oimFile)s. A taxonomy package may be required to load this report."),
|
|
847
|
+
oimFile=oimFile,
|
|
848
|
+
)
|
|
849
|
+
else:
|
|
850
|
+
raise OIMException(
|
|
851
|
+
"xbrlce:unresolvableBaseMetadataFile",
|
|
852
|
+
_("Unable to resolve extended metadata file %(extendingFile)s, referenced from %(oimFile)s. A taxonomy package may be required to load this report."),
|
|
853
|
+
extendingFile=extendingFile,
|
|
854
|
+
oimFile=oimFile,
|
|
855
|
+
)
|
|
856
|
+
if filepath.endswith(".csv") or ("metadata" in filepath and filepath.endswith(".json")):
|
|
843
857
|
errPrefix = "xbrlce"
|
|
844
858
|
else:
|
|
845
859
|
errPrefix = "xbrlje"
|
|
@@ -22,6 +22,7 @@ from arelle.ModelInstanceObject import ModelInlineFootnote
|
|
|
22
22
|
from arelle.ModelObject import ModelObject
|
|
23
23
|
from arelle.ModelRelationshipSet import ModelRelationshipSet
|
|
24
24
|
from arelle.ModelValue import QName, qname
|
|
25
|
+
from arelle.utils.validate.ValidationUtil import etreeIterWithDepth
|
|
25
26
|
from arelle.PythonUtil import isLegacyAbs, strTruncate
|
|
26
27
|
from arelle.utils.validate.DetectScriptsInXhtml import containsScriptMarkers
|
|
27
28
|
from arelle.UrlUtil import decodeBase64DataImage, isHttpUrl, scheme
|
|
@@ -61,7 +62,8 @@ from ..Const import (
|
|
|
61
62
|
untransformableTypes,
|
|
62
63
|
)
|
|
63
64
|
from ..Dimensions import checkFilingDimensions
|
|
64
|
-
from ..Util import
|
|
65
|
+
from ..Util import isExtension
|
|
66
|
+
|
|
65
67
|
|
|
66
68
|
_: TypeGetText # Handle gettext
|
|
67
69
|
|
|
@@ -26,6 +26,7 @@ from arelle.ModelValue import QName
|
|
|
26
26
|
from arelle.ModelValue import qname
|
|
27
27
|
from arelle.ModelXbrl import ModelXbrl
|
|
28
28
|
|
|
29
|
+
from arelle.utils.validate.ValidationUtil import etreeIterWithDepth
|
|
29
30
|
from arelle.PythonUtil import isLegacyAbs, normalizeSpace
|
|
30
31
|
from arelle.PythonUtil import strTruncate
|
|
31
32
|
from arelle.utils.validate.DetectScriptsInXhtml import containsScriptMarkers
|
|
@@ -66,7 +67,7 @@ from ..Const import (
|
|
|
66
67
|
untransformableTypes,
|
|
67
68
|
)
|
|
68
69
|
from ..Dimensions import checkFilingDimensions
|
|
69
|
-
from ..Util import checkForMultiLangDuplicates,
|
|
70
|
+
from ..Util import checkForMultiLangDuplicates, getEsefNotesStatementConcepts, isExtension, getDisclosureSystemYear
|
|
70
71
|
|
|
71
72
|
_: TypeGetText # Handle gettext
|
|
72
73
|
|
|
@@ -6,7 +6,7 @@ from __future__ import annotations
|
|
|
6
6
|
import json
|
|
7
7
|
import os
|
|
8
8
|
from collections import defaultdict
|
|
9
|
-
from collections.abc import Collection
|
|
9
|
+
from collections.abc import Collection
|
|
10
10
|
from typing import Any, Union, cast
|
|
11
11
|
import regex as re
|
|
12
12
|
|
|
@@ -177,13 +177,3 @@ def _hasEventAttributes(elt: Any, attributes: Collection[str]) -> bool:
|
|
|
177
177
|
if isinstance(elt, _Element):
|
|
178
178
|
return any(a in attributes for a in elt.keys())
|
|
179
179
|
return False
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
def etreeIterWithDepth(
|
|
183
|
-
node: ModelObject | _Element,
|
|
184
|
-
depth: int = 0,
|
|
185
|
-
) -> Generator[tuple[ModelObject | _Element, int], None, None]:
|
|
186
|
-
yield node, depth
|
|
187
|
-
for child in node.iterchildren():
|
|
188
|
-
for n_d in etreeIterWithDepth(child, depth + 1):
|
|
189
|
-
yield n_d
|
|
@@ -14,9 +14,12 @@ from arelle.FunctionIxt import ixtNamespaces
|
|
|
14
14
|
from arelle.ModelInstanceObject import ModelUnit, ModelContext, ModelFact, ModelInlineFootnote
|
|
15
15
|
from arelle.ModelValue import QName
|
|
16
16
|
from arelle.ModelXbrl import ModelXbrl
|
|
17
|
+
from arelle.utils.validate.ValidationUtil import etreeIterWithDepth
|
|
17
18
|
from arelle.utils.PluginData import PluginData
|
|
18
19
|
from arelle.XmlValidate import lexicalPatterns
|
|
19
20
|
|
|
21
|
+
from lxml.etree import EntityBase, _Comment, _ElementTree, _ProcessingInstruction
|
|
22
|
+
|
|
20
23
|
XBRLI_IDENTIFIER_PATTERN = re.compile(r"^(?!00)\d{8}$")
|
|
21
24
|
XBRLI_IDENTIFIER_SCHEMA = 'http://www.kvk.nl/kvk-id'
|
|
22
25
|
|
|
@@ -37,6 +40,7 @@ class ContextData:
|
|
|
37
40
|
class FootnoteData:
|
|
38
41
|
noMatchLangFootnotes: set[ModelInlineFootnote]
|
|
39
42
|
orphanedFootnotes: set[ModelInlineFootnote]
|
|
43
|
+
factLangFootnotes: dict[ModelInlineFootnote, set[str]]
|
|
40
44
|
|
|
41
45
|
@dataclass
|
|
42
46
|
class PluginValidationDataExtension(PluginData):
|
|
@@ -103,6 +107,7 @@ class PluginValidationDataExtension(PluginData):
|
|
|
103
107
|
footnotesRelationshipSet = modelXbrl.relationshipSet("XBRL-footnotes")
|
|
104
108
|
orphanedFootnotes = set()
|
|
105
109
|
noMatchLangFootnotes = set()
|
|
110
|
+
factLangFootnotes = defaultdict(set)
|
|
106
111
|
for elts in modelXbrl.ixdsEltById.values(): # type: ignore[attr-defined]
|
|
107
112
|
for elt in elts:
|
|
108
113
|
if isinstance(elt, ModelInlineFootnote):
|
|
@@ -112,9 +117,14 @@ class PluginValidationDataExtension(PluginData):
|
|
|
112
117
|
orphanedFootnotes.add(elt)
|
|
113
118
|
if elt.xmlLang not in factLangs:
|
|
114
119
|
noMatchLangFootnotes.add(elt)
|
|
120
|
+
for rel in footnotesRelationshipSet.toModelObject(elt):
|
|
121
|
+
if rel.fromModelObject is not None:
|
|
122
|
+
factLangFootnotes[rel.fromModelObject].add(elt.xmlLang)
|
|
123
|
+
factLangFootnotes.default_factory = None
|
|
115
124
|
return FootnoteData(
|
|
116
125
|
noMatchLangFootnotes=noMatchLangFootnotes,
|
|
117
126
|
orphanedFootnotes=orphanedFootnotes,
|
|
127
|
+
factLangFootnotes=dict(factLangFootnotes),
|
|
118
128
|
)
|
|
119
129
|
|
|
120
130
|
@lru_cache(1)
|
|
@@ -155,6 +165,28 @@ class PluginValidationDataExtension(PluginData):
|
|
|
155
165
|
def getOrphanedFootnotes(self, modelXbrl: ModelXbrl) -> set[ModelInlineFootnote]:
|
|
156
166
|
return self.checkFootnotes(modelXbrl).orphanedFootnotes
|
|
157
167
|
|
|
168
|
+
def getFactLangFootnotes(self, modelXbrl: ModelXbrl) -> dict[ModelInlineFootnote, set[str]]:
|
|
169
|
+
return self.checkFootnotes(modelXbrl).factLangFootnotes
|
|
170
|
+
|
|
171
|
+
@lru_cache(1)
|
|
172
|
+
def getReportXmlLang(self, modelXbrl: ModelXbrl) -> str | None:
|
|
173
|
+
firstIxdsDoc = True
|
|
174
|
+
reportXmlLang = None
|
|
175
|
+
firstRootmostXmlLangDepth = 9999999
|
|
176
|
+
for ixdsHtmlRootElt in modelXbrl.ixdsHtmlElements:
|
|
177
|
+
for uncast_elt, depth in etreeIterWithDepth(ixdsHtmlRootElt):
|
|
178
|
+
elt = cast(Any, uncast_elt)
|
|
179
|
+
eltTag = elt.tag
|
|
180
|
+
if isinstance(elt, (_ElementTree, _Comment, _ProcessingInstruction, EntityBase)):
|
|
181
|
+
continue
|
|
182
|
+
if firstIxdsDoc and (not reportXmlLang or depth < firstRootmostXmlLangDepth):
|
|
183
|
+
xmlLang = elt.get("{http://www.w3.org/XML/1998/namespace}lang")
|
|
184
|
+
if xmlLang:
|
|
185
|
+
reportXmlLang = xmlLang
|
|
186
|
+
firstRootmostXmlLangDepth = depth
|
|
187
|
+
firstIxdsDoc = False
|
|
188
|
+
return reportXmlLang
|
|
189
|
+
|
|
158
190
|
@lru_cache(1)
|
|
159
191
|
def unitsByDocument(self, modelXbrl: ModelXbrl) -> dict[str, list[ModelUnit]]:
|
|
160
192
|
unitsByDocument = defaultdict(list)
|
|
@@ -23,7 +23,6 @@ class ValidationPluginExtension(ValidationPlugin):
|
|
|
23
23
|
jenvNamespace = 'http://www.nltaxonomie.nl/nt16/jenv/20211208/dictionary/jenv-bw2-data'
|
|
24
24
|
kvkINamespace = 'http://www.nltaxonomie.nl/nt16/kvk/20211208/dictionary/kvk-data'
|
|
25
25
|
nlTypesNamespace = 'http://www.nltaxonomie.nl/nt16/sbr/20210301/dictionary/nl-types'
|
|
26
|
-
titel9Namespace = ''
|
|
27
26
|
entrypointRoot = 'http://www.nltaxonomie.nl/nt16/kvk/20211208/entrypoints/'
|
|
28
27
|
entrypoints = {entrypointRoot + e for e in [
|
|
29
28
|
'kvk-rpt-jaarverantwoording-2021-ifrs-full.xsd',
|
|
@@ -60,7 +59,6 @@ class ValidationPluginExtension(ValidationPlugin):
|
|
|
60
59
|
jenvNamespace = 'http://www.nltaxonomie.nl/nt17/jenv/20221214/dictionary/jenv-bw2-data'
|
|
61
60
|
kvkINamespace = 'http://www.nltaxonomie.nl/nt17/kvk/20221214/dictionary/kvk-data'
|
|
62
61
|
nlTypesNamespace = 'http://www.nltaxonomie.nl/nt17/sbr/20220301/dictionary/nl-types'
|
|
63
|
-
titel9Namespace = ''
|
|
64
62
|
entrypointRoot = 'http://www.nltaxonomie.nl/nt17/kvk/20221214/entrypoints/'
|
|
65
63
|
entrypoints = {entrypointRoot + e for e in [
|
|
66
64
|
'kvk-rpt-jaarverantwoording-2022-ifrs-full.xsd',
|
|
@@ -98,7 +96,6 @@ class ValidationPluginExtension(ValidationPlugin):
|
|
|
98
96
|
jenvNamespace = 'http://www.nltaxonomie.nl/nt18/jenv/20231213/dictionary/jenv-bw2-data'
|
|
99
97
|
kvkINamespace = 'http://www.nltaxonomie.nl/nt18/kvk/20231213/dictionary/kvk-data'
|
|
100
98
|
nlTypesNamespace = 'http://www.nltaxonomie.nl/nt18/sbr/20230301/dictionary/nl-types'
|
|
101
|
-
titel9Namespace = ''
|
|
102
99
|
entrypointRoot = 'http://www.nltaxonomie.nl/nt18/kvk/20231213/entrypoints/'
|
|
103
100
|
entrypoints = {entrypointRoot + e for e in [
|
|
104
101
|
'kvk-rpt-jaarverantwoording-2023-ifrs-full.xsd',
|
|
@@ -132,11 +129,10 @@ class ValidationPluginExtension(ValidationPlugin):
|
|
|
132
129
|
'kvk-rpt-jaarverantwoording-2023-nlgaap-verzekeringsmaatschappijen.xsd',
|
|
133
130
|
'kvk-rpt-jaarverantwoording-2023-nlgaap-zorginstellingen.xsd',
|
|
134
131
|
]}
|
|
135
|
-
elif disclosureSystem == DISCLOSURE_SYSTEM_NT19
|
|
132
|
+
elif disclosureSystem == DISCLOSURE_SYSTEM_NT19:
|
|
136
133
|
jenvNamespace = 'http://www.nltaxonomie.nl/nt19/jenv/20241211/dictionary/jenv-bw2-data'
|
|
137
134
|
kvkINamespace = 'http://www.nltaxonomie.nl/nt19/kvk/20241211/dictionary/kvk-data'
|
|
138
135
|
nlTypesNamespace = 'http://www.nltaxonomie.nl/nt19/sbr/20240301/dictionary/nl-types'
|
|
139
|
-
titel9Namespace = 'https://www.nltaxonomie.nl/bw2-titel9/2024-12-31/bw2-titel9-cor' if disclosureSystem == DISCLOSURE_SYSTEM_NL_INLINE_2024 else ''
|
|
140
136
|
entrypointRoot = 'http://www.nltaxonomie.nl/nt19/kvk/20241211/entrypoints/'
|
|
141
137
|
entrypoints = {entrypointRoot + e for e in [
|
|
142
138
|
'kvk-rpt-jaarverantwoording-2024-ifrs-full.xsd',
|
|
@@ -170,11 +166,21 @@ class ValidationPluginExtension(ValidationPlugin):
|
|
|
170
166
|
'kvk-rpt-jaarverantwoording-2024-nlgaap-verzekeringsmaatschappijen.xsd',
|
|
171
167
|
'kvk-rpt-jaarverantwoording-2024-nlgaap-zorginstellingen.xsd',
|
|
172
168
|
]}
|
|
169
|
+
elif disclosureSystem == DISCLOSURE_SYSTEM_NL_INLINE_2024:
|
|
170
|
+
jenvNamespace = 'https://www.nltaxonomie.nl/bw2-titel9/2024-12-31/bw2-titel9-cor'
|
|
171
|
+
kvkINamespace = None
|
|
172
|
+
nlTypesNamespace = None
|
|
173
|
+
entrypointRoot = 'http://www.nltaxonomie.nl/kvk/2024-12-31/'
|
|
174
|
+
entrypoints = {entrypointRoot + e for e in [
|
|
175
|
+
'kvk-annual-report-ifrs-ext.xsd',
|
|
176
|
+
'kvk-annual-report-nlgaap-ext.xsd',
|
|
177
|
+
'kvk-annual-report-other-gaap.xsd',
|
|
178
|
+
]}
|
|
173
179
|
else:
|
|
174
180
|
raise ValueError(f'Invalid NL disclosure system: {disclosureSystem}')
|
|
175
181
|
return PluginValidationDataExtension(
|
|
176
182
|
self.name,
|
|
177
|
-
chamberOfCommerceRegistrationNumberQn=qname(f'{{{
|
|
183
|
+
chamberOfCommerceRegistrationNumberQn=qname(f'{{{jenvNamespace}}}ChamberOfCommerceRegistrationNumber'),
|
|
178
184
|
documentAdoptionDateQn=qname(f'{{{jenvNamespace}}}DocumentAdoptionDate'),
|
|
179
185
|
documentAdoptionStatusQn=qname(f'{{{jenvNamespace}}}DocumentAdoptionStatus'),
|
|
180
186
|
documentResubmissionUnsurmountableInaccuraciesQn=qname(f'{{{kvkINamespace}}}DocumentResubmissionDueToUnsurmountableInaccuracies'),
|
|
@@ -401,3 +401,61 @@ def rule_nl_kvk_3_3_1_2 (
|
|
|
401
401
|
msg=_('The xml:lang attribute of each footnote matches the language of at least one textual fact.'),
|
|
402
402
|
modelObject = noMatchLangFootnotes
|
|
403
403
|
)
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
@validation(
|
|
407
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
408
|
+
disclosureSystems=[
|
|
409
|
+
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
410
|
+
],
|
|
411
|
+
)
|
|
412
|
+
def rule_nl_kvk_3_3_1_3 (
|
|
413
|
+
pluginData: PluginValidationDataExtension,
|
|
414
|
+
val: ValidateXbrl,
|
|
415
|
+
*args: Any,
|
|
416
|
+
**kwargs: Any,
|
|
417
|
+
) -> Iterable[Validation]:
|
|
418
|
+
"""
|
|
419
|
+
NL-KVK.3.3.1.3: At least one footnote in the footnote relationship is in the language of the report.
|
|
420
|
+
"""
|
|
421
|
+
factLangFootnotes = pluginData.getFactLangFootnotes(val.modelXbrl)
|
|
422
|
+
reportXmlLang = pluginData.getReportXmlLang(val.modelXbrl)
|
|
423
|
+
nonDefLangFtFacts = set(f for f,langs in factLangFootnotes.items() if reportXmlLang not in langs)
|
|
424
|
+
if len(nonDefLangFtFacts) > 0:
|
|
425
|
+
yield Validation.error(
|
|
426
|
+
codes='NL.NL-KVK.3.3.1.3.footnoteOnlyInLanguagesOtherThanLanguageOfAReport',
|
|
427
|
+
msg=_('At least one footnote must have the same language as the report\'s language.'),
|
|
428
|
+
modelObject=nonDefLangFtFacts
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
@validation(
|
|
433
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
434
|
+
disclosureSystems=[
|
|
435
|
+
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
436
|
+
],
|
|
437
|
+
)
|
|
438
|
+
def rule_nl_kvk_3_5_2_2(
|
|
439
|
+
pluginData: PluginValidationDataExtension,
|
|
440
|
+
val: ValidateXbrl,
|
|
441
|
+
*args: Any,
|
|
442
|
+
**kwargs: Any,
|
|
443
|
+
) -> Iterable[Validation]:
|
|
444
|
+
"""
|
|
445
|
+
NL-KVK.3.5.2.2: All tagged text facts MUST be provided in at least the language of the report.
|
|
446
|
+
"""
|
|
447
|
+
reportXmlLang = pluginData.getReportXmlLang(val.modelXbrl)
|
|
448
|
+
factsWithWrongLang = set()
|
|
449
|
+
for fact in val.modelXbrl.facts:
|
|
450
|
+
if (fact is not None and
|
|
451
|
+
fact.concept is not None and
|
|
452
|
+
fact.concept.type is not None and
|
|
453
|
+
fact.concept.type.isOimTextFactType and
|
|
454
|
+
fact.xmlLang != reportXmlLang):
|
|
455
|
+
factsWithWrongLang.add(fact)
|
|
456
|
+
if len(factsWithWrongLang) > 0:
|
|
457
|
+
yield Validation.error(
|
|
458
|
+
codes='NL.NL-KVK.3.5.2.2.taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport',
|
|
459
|
+
msg=_('Tagged text facts MUST be provided in the language of the report.'),
|
|
460
|
+
modelObject=factsWithWrongLang
|
|
461
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from collections.abc import Generator
|
|
7
|
+
|
|
8
|
+
from lxml.etree import _Element
|
|
9
|
+
|
|
10
|
+
from arelle.ModelObject import ModelObject
|
|
11
|
+
from arelle.typing import TypeGetText
|
|
12
|
+
|
|
13
|
+
_: TypeGetText
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def etreeIterWithDepth(
|
|
17
|
+
node: ModelObject | _Element,
|
|
18
|
+
depth: int = 0,
|
|
19
|
+
) -> Generator[tuple[ModelObject | _Element, int], None, None]:
|
|
20
|
+
yield node, depth
|
|
21
|
+
for child in node.iterchildren():
|
|
22
|
+
for n_d in etreeIterWithDepth(child, depth + 1):
|
|
23
|
+
yield n_d
|
|
@@ -6,7 +6,7 @@ arelle/CntlrComServer.py,sha256=h1KPf31uMbErpxTZn_iklDqUMGFgQnjZkFkFjd8gtLQ,1888
|
|
|
6
6
|
arelle/CntlrProfiler.py,sha256=2VQJudiUhxryVypxjODx2ccP1-n60icTiWs5lSEokhQ,972
|
|
7
7
|
arelle/CntlrQuickBooks.py,sha256=BMqd5nkNQOZyNFPefkTeWUUDCYNS6BQavaG8k1Lepu4,31543
|
|
8
8
|
arelle/CntlrWebMain.py,sha256=x5vtiopqGdp6L5s7PrUTEABXCGqtb5oy7yqWIVePtgE,50860
|
|
9
|
-
arelle/CntlrWinMain.py,sha256=
|
|
9
|
+
arelle/CntlrWinMain.py,sha256=h30F1aNj1Mggsaqe6__d1JCQe6wIfBI_z_4rCfc-eQc,96894
|
|
10
10
|
arelle/CntlrWinTooltip.py,sha256=6MzoAIfkYnNu_bl_je8n0adhwmKxAIcymkg9Tij9Z4M,7951
|
|
11
11
|
arelle/DialogAbout.py,sha256=XXzMV0fO4BQ3-l1Puirzmn7EZEdmgJg7JNYdJm1FueM,1987
|
|
12
12
|
arelle/DialogArcroleGroup.py,sha256=r81OT3LFmMkoROpFenk97oVEyQhibKZ1QgDHvMsyCl0,7547
|
|
@@ -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=
|
|
126
|
+
arelle/_version.py,sha256=UX5PNNTrOLUsl7iAia9CpK-Esl9BSjjx3ISlTR1ywcY,515
|
|
127
127
|
arelle/typing.py,sha256=Ct5lrNKRow_o9CraMEXNza8nFsJ_iGIKoUeGfPs2dxI,1084
|
|
128
128
|
arelle/api/Session.py,sha256=O8zpg7MJys9uxwwHf8OsSlZxpPdq7A3ONyY39Q4A3Kc,6218
|
|
129
129
|
arelle/archive/CustomLogger.py,sha256=v_JXOCQLDZcfaFWzxC9FRcEf9tQi4rCI4Sx7jCuAVQI,1231
|
|
@@ -294,7 +294,7 @@ arelle/model/CommentBase.py,sha256=NtC2lFd9Mt1y7kzWwrpvexwqBdfSe1nvGFiIJeio3rU,1
|
|
|
294
294
|
arelle/model/ElementBase.py,sha256=pZX836d4-s-OvzPMUusvEDezI9D_6YKO7_j6iDcUXm4,404
|
|
295
295
|
arelle/model/PIBase.py,sha256=easZ3pKXJ5wq3NFB2pDtBeXNDcjwMAXylpXz6mnumOg,257
|
|
296
296
|
arelle/model/__init__.py,sha256=RLmC1rTus3T_2Vvnu3yHtdw1r0wrZCHZoqxe8BLg_wE,595
|
|
297
|
-
arelle/oim/Load.py,sha256=
|
|
297
|
+
arelle/oim/Load.py,sha256=kqKvs3q6VE6fKxCv9X0kxnyTywKMyC_qGGAB__v51TU,182910
|
|
298
298
|
arelle/oim/Validate.py,sha256=IaBClr2KYMiVC_GKYy4_A9gF7hcnm-lxXpQrDCqIWGs,9012
|
|
299
299
|
arelle/oim/xml/Save.py,sha256=MdaJiGcEo4nbQCX9sRgWfVIoxp6fd2N-wuLiDAS9D-I,607
|
|
300
300
|
arelle/packages/PackageConst.py,sha256=iIIF-Ic8zlMPiiCq3PcV57aWci6ispBtilSG4W7ZW4U,121
|
|
@@ -362,15 +362,15 @@ arelle/plugin/validate/EBA/__init__.py,sha256=1kW-04W32sStSAL8wvW1ZpXnjlFv6KLbfE
|
|
|
362
362
|
arelle/plugin/validate/EBA/config.xml,sha256=37wMVUAObK-XEqakqD8zPNog20emYt4a_yfL1AKubF8,2022
|
|
363
363
|
arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
|
|
364
364
|
arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
|
|
365
|
-
arelle/plugin/validate/ESEF/Util.py,sha256=
|
|
365
|
+
arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
|
|
366
366
|
arelle/plugin/validate/ESEF/__init__.py,sha256=LL7uYOcGPHgjwTlcfW2oWMqWiqrZ5yABzcKkJZFrZis,20391
|
|
367
367
|
arelle/plugin/validate/ESEF/ESEF_2021/DTS.py,sha256=6Za7BANwwc_egxLCgbgWzwUGOXZv9IF1I7JCkDNt2Tw,26277
|
|
368
368
|
arelle/plugin/validate/ESEF/ESEF_2021/Image.py,sha256=4bnhuy5viBU0viPjb4FhcRRjVVKlNdnKLFdSGg3sZvs,4871
|
|
369
|
-
arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py,sha256=
|
|
369
|
+
arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py,sha256=wrIjd1XsA3iAGwlULca4LxrEaeDj5vB7aldyPG9ycZE,62871
|
|
370
370
|
arelle/plugin/validate/ESEF/ESEF_2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
371
371
|
arelle/plugin/validate/ESEF/ESEF_Current/DTS.py,sha256=epp-PBh1NJzQqgxUE6C468HmoDc2w3j54rMwfiOAry4,29334
|
|
372
372
|
arelle/plugin/validate/ESEF/ESEF_Current/Image.py,sha256=w36sCTy8QbsuKABjkK6PTWce2A4zFN_rMnEM2wi5WEc,11364
|
|
373
|
-
arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py,sha256=
|
|
373
|
+
arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py,sha256=aP4tVQudMAXDXLD3M121BAfQ1DtH2dox6kdBvhlyDho,73157
|
|
374
374
|
arelle/plugin/validate/ESEF/ESEF_Current/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
375
375
|
arelle/plugin/validate/ESEF/resources/authority-validations.json,sha256=JriLZ45KmUYlQiPbXJCAahobqdrst64Ay77bofZhB5Q,14940
|
|
376
376
|
arelle/plugin/validate/ESEF/resources/config.xml,sha256=t3STU_-QYM7Ay8YwZRPapnohiWVWhjfr4L2Rjx9xN9U,3902
|
|
@@ -378,8 +378,8 @@ arelle/plugin/validate/FERC/__init__.py,sha256=V4fXcFKBsjFFPs9_1NhvDjWpEQCoQM0tR
|
|
|
378
378
|
arelle/plugin/validate/FERC/config.xml,sha256=bn9b8eCqJA1J62rYq1Nz85wJrMGAahVmmnIUQZyerjo,1919
|
|
379
379
|
arelle/plugin/validate/FERC/resources/ferc-utr.xml,sha256=OCRj9IUpdXATCBXKbB71apYx9kxcNtZW-Hq4s-avsRY,2663
|
|
380
380
|
arelle/plugin/validate/NL/DisclosureSystems.py,sha256=kTjpxkgwn58wHCbaLRBInirOy-2cpK9MLWEFJ_193y4,180
|
|
381
|
-
arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=
|
|
382
|
-
arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=
|
|
381
|
+
arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=0zdBf1mTfR9YCquvk1p_t67Guhjb7XgM8bwBgMpmcvs,8730
|
|
382
|
+
arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=2qvvOqBkgk2LwERTHDuxtrRupYz3yRyhH71XQLbl9F4,15507
|
|
383
383
|
arelle/plugin/validate/NL/__init__.py,sha256=99uMv4ESHwyJqA-Xq_hBvHygm0BQ3NxcmAJnVYUkSgg,3104
|
|
384
384
|
arelle/plugin/validate/NL/resources/config.xml,sha256=i_ns2wHmQYjhkRItevRR8tzfkl31ASfbWlc5t6pDB-w,1117
|
|
385
385
|
arelle/plugin/validate/NL/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -387,7 +387,7 @@ arelle/plugin/validate/NL/rules/br_kvk.py,sha256=0SwKieWzTDm3YMsXPS6zTdgbk7_Z9Cz
|
|
|
387
387
|
arelle/plugin/validate/NL/rules/fg_nl.py,sha256=4Puq5wAjtK_iNd4wisH_R0Z_EKJ7MT2OCai5g4t1MPE,10714
|
|
388
388
|
arelle/plugin/validate/NL/rules/fr_kvk.py,sha256=-_BLeWGoZ_f56p5VO4X40S45Ny3Ej-WK6Srei1KVSxU,8170
|
|
389
389
|
arelle/plugin/validate/NL/rules/fr_nl.py,sha256=-M1WtXp06khhtkfOVPCa-b8UbC281gk4YfDhvtAVlnI,31424
|
|
390
|
-
arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=
|
|
390
|
+
arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=gCmOZP3sYJBBzuFoZSg4T4M5bB2MnThduS1no4BWSqc,16062
|
|
391
391
|
arelle/plugin/validate/ROS/DisclosureSystems.py,sha256=rJ81mwQDYTi6JecFZ_zhqjjz3VNQRgjHNSh0wcQWAQE,18
|
|
392
392
|
arelle/plugin/validate/ROS/PluginValidationDataExtension.py,sha256=IV7ILhNvgKwQXqbpSA6HRNt9kEnejCyMADI3wyyIgk0,4036
|
|
393
393
|
arelle/plugin/validate/ROS/ValidationPluginExtension.py,sha256=FBhEp8t396vGdvCbMEimfcxmGiGnhXMen-yVLWnkFaI,758
|
|
@@ -704,10 +704,11 @@ arelle/utils/validate/Decorator.py,sha256=8LGmA171HZgKrALtsMKyHqMNM-XCdwJOv6KpZz
|
|
|
704
704
|
arelle/utils/validate/DetectScriptsInXhtml.py,sha256=JOgsUP0_kvE6O3TuhzKxqKG1ZFP9LrUYZBgrar6JEm0,2178
|
|
705
705
|
arelle/utils/validate/Validation.py,sha256=n6Ag7VeCj_VO5nqzw_P53hOfXXeT2APK0Enb3UQqBns,832
|
|
706
706
|
arelle/utils/validate/ValidationPlugin.py,sha256=_WeRPXZUTCcSN3FLbFwiAe_2pAUTxZZk1061qMoDW8w,11527
|
|
707
|
+
arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txrxRFgh8FxIs,548
|
|
707
708
|
arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
708
709
|
arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
709
710
|
arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
|
|
710
|
-
arelle_release-2.37.
|
|
711
|
+
arelle_release-2.37.11.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
|
|
711
712
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
712
713
|
tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
|
|
713
714
|
tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
|
|
@@ -762,7 +763,7 @@ tests/integration_tests/validation/conformance_suite_configurations/kvk_nt16.py,
|
|
|
762
763
|
tests/integration_tests/validation/conformance_suite_configurations/kvk_nt17.py,sha256=lmEZonthFm0YKFmp1dwXtdJ2T7txUeSpL4mbAo8fl4Y,1292
|
|
763
764
|
tests/integration_tests/validation/conformance_suite_configurations/kvk_nt18.py,sha256=EG2RQVkvFENhzUF3fl3QvDnH7ZPYS1n1Fo8bhfmSczM,1205
|
|
764
765
|
tests/integration_tests/validation/conformance_suite_configurations/kvk_nt19.py,sha256=FAzf9RhRmn_8yowpplJho2zEspX9FxJiVq8SjZT3Dsc,1199
|
|
765
|
-
tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=
|
|
766
|
+
tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=5WbjM571b4Va8JbW8nuBp_XU7K-LecvNxFfpVyKfVM0,11095
|
|
766
767
|
tests/integration_tests/validation/conformance_suite_configurations/nl_nt16.py,sha256=O_LFVBZPkjxmbrU7_C7VTLtrdoCUx2bYXOXw6_MlRtQ,846
|
|
767
768
|
tests/integration_tests/validation/conformance_suite_configurations/nl_nt17.py,sha256=aTN3Ez6lPsZsuypHZP84DneOtYxUZSjUiGypHy6ofHQ,846
|
|
768
769
|
tests/integration_tests/validation/conformance_suite_configurations/nl_nt18.py,sha256=sqHLjrHc95dTu0guTgKkphaKM1zNfKGnN4GKkZDLzeU,845
|
|
@@ -1556,8 +1557,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
|
|
|
1556
1557
|
tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
|
|
1557
1558
|
tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=XHABmejQt7RlZ0udh7v42f2Xb2STGk_fSaIaJ9i2xo0,878
|
|
1558
1559
|
tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
|
|
1559
|
-
arelle_release-2.37.
|
|
1560
|
-
arelle_release-2.37.
|
|
1561
|
-
arelle_release-2.37.
|
|
1562
|
-
arelle_release-2.37.
|
|
1563
|
-
arelle_release-2.37.
|
|
1560
|
+
arelle_release-2.37.11.dist-info/METADATA,sha256=Oo7fwuP5YONoSo93bQ9Kv9yPSXy-9PSG1SxlzYVk_D8,9065
|
|
1561
|
+
arelle_release-2.37.11.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
|
1562
|
+
arelle_release-2.37.11.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
|
|
1563
|
+
arelle_release-2.37.11.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
|
|
1564
|
+
arelle_release-2.37.11.dist-info/RECORD,,
|
|
@@ -18,9 +18,17 @@ config = ConformanceSuiteConfig(
|
|
|
18
18
|
*NL_PACKAGES['NL-INLINE-2024'],
|
|
19
19
|
],
|
|
20
20
|
expected_additional_testcase_errors={f"conformance-suite-2024-sbr-domein-handelsregister/tests/{s}": val for s, val in {
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
|
|
21
|
+
'G3-2-4_2/index.xml:TC3_valid': {
|
|
22
|
+
'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 1,
|
|
23
|
+
},
|
|
24
|
+
'G4-1-2_1/index.xml:TC2_valid': {
|
|
25
|
+
'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 1,
|
|
26
|
+
},
|
|
27
|
+
'RTS_Annex_II_Par_1_RTS_Annex_IV_par_7/index.xml:TC2_valid': {
|
|
28
|
+
'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 1,
|
|
29
|
+
},
|
|
30
|
+
'RTS_Annex_II_Par_1_RTS_Annex_IV_par_7/index.xml:TC4_invalid': {
|
|
31
|
+
'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 1,
|
|
24
32
|
},
|
|
25
33
|
'RTS_Annex_IV_Par_1_G3-1-4_1/index.xml:TC2_invalid': {
|
|
26
34
|
'message:valueKvKIdentifier': 13,
|
|
@@ -29,18 +37,25 @@ config = ConformanceSuiteConfig(
|
|
|
29
37
|
'RTS_Annex_IV_Par_1_G3-1-4_2/index.xml:TC2_invalid': {
|
|
30
38
|
'message:valueKvKIdentifier': 13,
|
|
31
39
|
},
|
|
40
|
+
'RTS_Annex_IV_Par_2_G3-1-1_2/index.xml:TC2_invalid': {
|
|
41
|
+
'message:lei-identifier-format': 105,
|
|
42
|
+
'message:valueKvKIdentifierScheme': 105,
|
|
43
|
+
},
|
|
44
|
+
'RTS_Annex_IV_Par_6/index.xml:TC2_valid': {
|
|
45
|
+
'taggedTextFactOnlyInLanguagesOtherThanLanguageOfAReport': 1,
|
|
46
|
+
},
|
|
32
47
|
}.items()},
|
|
33
48
|
expected_failure_ids=frozenset([
|
|
34
49
|
# Conformance Suite Errors
|
|
50
|
+
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-3-1_2/index.xml:TC3_invalid', # Expects an error code with a preceding double quote. G3-3-1_3 expects the same code without the typo.
|
|
35
51
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/RTS_Annex_IV_Par_2_G3-1-1_1/index.xml:TC2_invalid', # Expects NonIdenticalIdentifier instead of nonIdenticalIdentifier (note the cap N)
|
|
36
52
|
|
|
53
|
+
|
|
37
54
|
# Not Implemented
|
|
38
55
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-2-7_1/index.xml:TC4_invalid',
|
|
39
56
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-2-7_1/index.xml:TC5_invalid',
|
|
40
57
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-2-7_1/index.xml:TC6_invalid',
|
|
41
58
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-2-7_1/index.xml:TC7_invalid',
|
|
42
|
-
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-3-1_2/index.xml:TC3_invalid', # Expects an error code with a preceding double quote. G3-3-1_3 expects the same code without the typo.
|
|
43
|
-
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-3-1_3/index.xml:TC2_invalid',
|
|
44
59
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-1_1/index.xml:TC2_invalid',
|
|
45
60
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-1_2/index.xml:TC2_invalid',
|
|
46
61
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-1_3/index.xml:TC2_invalid',
|
|
@@ -56,7 +71,6 @@ config = ConformanceSuiteConfig(
|
|
|
56
71
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_5/index.xml:TC2_invalid',
|
|
57
72
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_5/index.xml:TC3_invalid',
|
|
58
73
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-2_1/index.xml:TC3_invalid',
|
|
59
|
-
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-2_2/index.xml:TC2_invalid',
|
|
60
74
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-3_1/index.xml:TC2_invalid',
|
|
61
75
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-4_1/index.xml:TC2_invalid',
|
|
62
76
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-6-2_1/index.xml:TC2_invalid',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|