arelle-release 2.37.15__py3-none-any.whl → 2.37.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arelle-release might be problematic. Click here for more details.
- arelle/CntlrCmdLine.py +4 -8
- arelle/CntlrWinMain.py +5 -1
- arelle/ModelFormulaObject.py +1 -1
- arelle/XbrlConst.py +2 -0
- arelle/_version.py +2 -2
- arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +18 -2
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +18 -2
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +28 -1
- arelle/plugin/validate/NL/rules/nl_kvk.py +49 -0
- {arelle_release-2.37.15.dist-info → arelle_release-2.37.17.dist-info}/METADATA +1 -1
- {arelle_release-2.37.15.dist-info → arelle_release-2.37.17.dist-info}/RECORD +17 -17
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py +2 -3
- tests/resources/conformance_suites/dba/tm/tm30-invalid.xhtml +0 -1
- {arelle_release-2.37.15.dist-info → arelle_release-2.37.17.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.15.dist-info → arelle_release-2.37.17.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.15.dist-info → arelle_release-2.37.17.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.15.dist-info → arelle_release-2.37.17.dist-info}/top_level.txt +0 -0
arelle/CntlrCmdLine.py
CHANGED
|
@@ -13,6 +13,7 @@ import gettext
|
|
|
13
13
|
import glob
|
|
14
14
|
import json
|
|
15
15
|
import logging
|
|
16
|
+
import multiprocessing
|
|
16
17
|
import os
|
|
17
18
|
import platform
|
|
18
19
|
import shlex
|
|
@@ -56,8 +57,8 @@ from arelle.RuntimeOptions import RuntimeOptions, RuntimeOptionsException
|
|
|
56
57
|
from arelle.SocketUtils import INTERNET_CONNECTIVITY, OFFLINE
|
|
57
58
|
from arelle.SystemInfo import PlatformOS, getSystemInfo, getSystemWordSize, hasWebServer, isCGI, isGAE
|
|
58
59
|
from arelle.typing import TypeGetText
|
|
59
|
-
from arelle.utils.EntryPointDetection import filesourceEntrypointFiles
|
|
60
60
|
from arelle.UrlUtil import isHttpUrl
|
|
61
|
+
from arelle.utils.EntryPointDetection import filesourceEntrypointFiles
|
|
61
62
|
from arelle.ValidateXbrlDTS import ValidateBaseTaxonomiesMode
|
|
62
63
|
from arelle.WebCache import proxyTuple
|
|
63
64
|
|
|
@@ -1341,11 +1342,6 @@ class CntlrCmdLine(Cntlr.Cntlr):
|
|
|
1341
1342
|
messageCode="info", file=packageInfo.get("URL"))
|
|
1342
1343
|
|
|
1343
1344
|
if __name__ == "__main__":
|
|
1344
|
-
''
|
|
1345
|
-
|
|
1346
|
-
from arelle import CntlrComServer
|
|
1347
|
-
CntlrComServer.main()
|
|
1348
|
-
else:
|
|
1349
|
-
main()
|
|
1350
|
-
'''
|
|
1345
|
+
if getattr(sys, 'frozen', False):
|
|
1346
|
+
multiprocessing.freeze_support()
|
|
1351
1347
|
main()
|
arelle/CntlrWinMain.py
CHANGED
|
@@ -38,6 +38,7 @@ from arelle.ValidateXbrlDTS import ValidateBaseTaxonomiesMode
|
|
|
38
38
|
from arelle.Version import copyrightLabel
|
|
39
39
|
from arelle.oim.xml.Save import saveOimReportToXmlInstance
|
|
40
40
|
import logging
|
|
41
|
+
import multiprocessing
|
|
41
42
|
|
|
42
43
|
import threading, queue
|
|
43
44
|
|
|
@@ -1756,7 +1757,8 @@ def main():
|
|
|
1756
1757
|
application.lift()
|
|
1757
1758
|
application.call('wm', 'attributes', '.', '-topmost', True)
|
|
1758
1759
|
cntlrWinMain.uiThreadQueue.put((application.call, ['wm', 'attributes', '.', '-topmost', False]))
|
|
1759
|
-
|
|
1760
|
+
processName = "arelleGUI" if getattr(sys, 'frozen', False) else "python"
|
|
1761
|
+
os.system(f'/usr/bin/osascript -e \'tell app "Finder" to set frontmost of process "{processName}" to true\'')
|
|
1760
1762
|
application.mainloop()
|
|
1761
1763
|
except Exception: # unable to start Tk or other fatal error
|
|
1762
1764
|
exc_type, exc_value, exc_traceback = sys.exc_info()
|
|
@@ -1779,6 +1781,8 @@ def main():
|
|
|
1779
1781
|
syslog.closelog()
|
|
1780
1782
|
|
|
1781
1783
|
if __name__ == "__main__":
|
|
1784
|
+
if getattr(sys, 'frozen', False):
|
|
1785
|
+
multiprocessing.freeze_support()
|
|
1782
1786
|
# this is the entry called by MacOS open and MacOS shell scripts
|
|
1783
1787
|
# check if ARELLE_ARGS are used to emulate command line operation
|
|
1784
1788
|
if os.getenv("ARELLE_ARGS"):
|
arelle/ModelFormulaObject.py
CHANGED
|
@@ -1240,7 +1240,7 @@ class ModelConceptDataType(ModelConceptFilterWithQnameExpression):
|
|
|
1240
1240
|
return set(fact for fact in facts
|
|
1241
1241
|
for qn in (self.evalQname(xpCtx,fact),)
|
|
1242
1242
|
for c in (fact.concept,)
|
|
1243
|
-
if c is not None and cmplmt ^ (c.typeQname == qn or (notStrict and c.type.isDerivedFrom(qn))))
|
|
1243
|
+
if c is not None and cmplmt ^ (c.typeQname == qn or (notStrict and c.type is not None and c.type.isDerivedFrom(qn))))
|
|
1244
1244
|
|
|
1245
1245
|
@property
|
|
1246
1246
|
def propertyView(self):
|
arelle/XbrlConst.py
CHANGED
|
@@ -34,6 +34,8 @@ builtinAttributes = {
|
|
|
34
34
|
}
|
|
35
35
|
xml = "http://www.w3.org/XML/1998/namespace"
|
|
36
36
|
xbrli = "http://www.xbrl.org/2003/instance"
|
|
37
|
+
xhtmlBaseIdentifier = "{http://www.w3.org/1999/xhtml}base"
|
|
38
|
+
xmlBaseIdentifier = "{http://www.w3.org/XML/1998/namespace}base"
|
|
37
39
|
eurofilingModelNamespace = "http://www.eurofiling.info/xbrl/ext/model"
|
|
38
40
|
eurofilingModelPrefix = "model"
|
|
39
41
|
qnNsmap = qname("nsmap") # artificial parent for insertion of xmlns in saving xml documents
|
arelle/_version.py
CHANGED
|
@@ -790,9 +790,25 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
|
|
|
790
790
|
unreportedLbElts.add(to)
|
|
791
791
|
elif arcrole in (hc_all, domainMember, dimensionDomain):
|
|
792
792
|
# all primary items
|
|
793
|
-
if
|
|
793
|
+
if (
|
|
794
|
+
fr is not None
|
|
795
|
+
and fr.type is not None
|
|
796
|
+
and not fr.isAbstract
|
|
797
|
+
and rel.isUsable
|
|
798
|
+
and fr not in conceptsUsed
|
|
799
|
+
and isExtension(val, rel)
|
|
800
|
+
and not fr.type.isDomainItemType
|
|
801
|
+
):
|
|
794
802
|
unreportedLbElts.add(fr)
|
|
795
|
-
if
|
|
803
|
+
if (
|
|
804
|
+
to is not None
|
|
805
|
+
and to.type is not None
|
|
806
|
+
and not to.isAbstract
|
|
807
|
+
and rel.isUsable
|
|
808
|
+
and to not in conceptsUsed
|
|
809
|
+
and isExtension(val, rel)
|
|
810
|
+
and not to.type.isDomainItemType
|
|
811
|
+
):
|
|
796
812
|
unreportedLbElts.add(to)
|
|
797
813
|
reportedEltsNotInLb.discard(fr)
|
|
798
814
|
reportedEltsNotInLb.discard(to)
|
|
@@ -871,9 +871,25 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
|
|
|
871
871
|
unreportedLbLocs.add(rel.toLocator)
|
|
872
872
|
elif arcrole in (hc_all, domainMember, dimensionDomain):
|
|
873
873
|
# all primary items
|
|
874
|
-
if
|
|
874
|
+
if (
|
|
875
|
+
fr is not None
|
|
876
|
+
and fr.type is not None
|
|
877
|
+
and not fr.isAbstract
|
|
878
|
+
and rel.isUsable
|
|
879
|
+
and fr not in conceptsUsed
|
|
880
|
+
and isExtension(val, rel)
|
|
881
|
+
and not fr.type.isDomainItemType
|
|
882
|
+
):
|
|
875
883
|
unreportedLbLocs.add(rel.fromLocator)
|
|
876
|
-
if
|
|
884
|
+
if (
|
|
885
|
+
to is not None
|
|
886
|
+
and to.type is not None
|
|
887
|
+
and not to.isAbstract
|
|
888
|
+
and rel.isUsable
|
|
889
|
+
and to not in conceptsUsed
|
|
890
|
+
and isExtension(val, rel)
|
|
891
|
+
and not to.type.isDomainItemType
|
|
892
|
+
):
|
|
877
893
|
unreportedLbLocs.add(rel.toLocator)
|
|
878
894
|
reportedEltsNotInLb.discard(fr)
|
|
879
895
|
reportedEltsNotInLb.discard(to)
|
|
@@ -20,13 +20,14 @@ from arelle.ModelXbrl import ModelXbrl
|
|
|
20
20
|
from arelle.typing import assert_type
|
|
21
21
|
from arelle.utils.PluginData import PluginData
|
|
22
22
|
from arelle.utils.validate.ValidationUtil import etreeIterWithDepth
|
|
23
|
-
from arelle.XbrlConst import ixbrl11
|
|
23
|
+
from arelle.XbrlConst import ixbrl11, xhtmlBaseIdentifier, xmlBaseIdentifier
|
|
24
24
|
from arelle.XmlValidate import lexicalPatterns
|
|
25
25
|
from arelle.XmlValidateConst import VALID
|
|
26
26
|
|
|
27
27
|
XBRLI_IDENTIFIER_PATTERN = re.compile(r"^(?!00)\d{8}$")
|
|
28
28
|
XBRLI_IDENTIFIER_SCHEMA = 'http://www.kvk.nl/kvk-id'
|
|
29
29
|
|
|
30
|
+
|
|
30
31
|
DISALLOWED_IXT_NAMESPACES = frozenset((
|
|
31
32
|
ixtNamespaces["ixt v1"],
|
|
32
33
|
ixtNamespaces["ixt v2"],
|
|
@@ -44,6 +45,7 @@ UNTRANSFORMABLE_TYPES = frozenset((
|
|
|
44
45
|
"language",
|
|
45
46
|
))
|
|
46
47
|
STYLE_IX_HIDDEN_PATTERN = re.compile(r"(.*[^\w]|^)ix-hidden\s*:\s*([\w.-]+).*")
|
|
48
|
+
STYLE_CSS_HIDDEN_PATTERN = re.compile(r"(.*[^\w]|^)display\s*:\s*none([^\w].*|$)")
|
|
47
49
|
|
|
48
50
|
ALLOWABLE_LANGUAGES = frozenset((
|
|
49
51
|
'nl',
|
|
@@ -61,12 +63,14 @@ class ContextData:
|
|
|
61
63
|
|
|
62
64
|
@dataclass(frozen=True)
|
|
63
65
|
class HiddenElementsData:
|
|
66
|
+
cssHiddenFacts: set[ModelInlineFact]
|
|
64
67
|
eligibleForTransformHiddenFacts: set[ModelInlineFact]
|
|
65
68
|
hiddenFactsOutsideHiddenSection: set[ModelInlineFact]
|
|
66
69
|
requiredToDisplayFacts: set[ModelInlineFact]
|
|
67
70
|
|
|
68
71
|
@dataclass(frozen=True)
|
|
69
72
|
class InlineHTMLData:
|
|
73
|
+
baseElements: set[Any]
|
|
70
74
|
noMatchLangFootnotes: set[ModelInlineFootnote]
|
|
71
75
|
orphanedFootnotes: set[ModelInlineFootnote]
|
|
72
76
|
tupleElements: set[tuple[Any]]
|
|
@@ -134,9 +138,11 @@ class PluginValidationDataExtension(PluginData):
|
|
|
134
138
|
|
|
135
139
|
@lru_cache(1)
|
|
136
140
|
def checkHiddenElements(self, modelXbrl: ModelXbrl) -> HiddenElementsData:
|
|
141
|
+
cssHiddenFacts = set()
|
|
137
142
|
eligibleForTransformHiddenFacts = set()
|
|
138
143
|
hiddenEltIds = {}
|
|
139
144
|
hiddenFactsOutsideHiddenSection = set()
|
|
145
|
+
ixHiddenFacts = set()
|
|
140
146
|
presentedHiddenEltIds = defaultdict(list)
|
|
141
147
|
requiredToDisplayFacts = set()
|
|
142
148
|
for ixdsHtmlRootElt in modelXbrl.ixdsHtmlElements:
|
|
@@ -149,6 +155,13 @@ class PluginValidationDataExtension(PluginData):
|
|
|
149
155
|
eligibleForTransformHiddenFacts.add(ixElt)
|
|
150
156
|
if ixElt.id:
|
|
151
157
|
hiddenEltIds[ixElt.id] = ixElt
|
|
158
|
+
ixHiddenFacts.add(ixElt)
|
|
159
|
+
for cssHiddenElt in ixdsHtmlRootElt.getroottree().iterfind(".//{http://www.w3.org/1999/xhtml}*[@style]"):
|
|
160
|
+
if STYLE_CSS_HIDDEN_PATTERN.match(cssHiddenElt.get("style","")):
|
|
161
|
+
for tag in (ixNStag + "nonNumeric", ixNStag+"nonFraction"):
|
|
162
|
+
for ixElt in cssHiddenElt.iterdescendants(tag=tag):
|
|
163
|
+
if ixElt not in ixHiddenFacts:
|
|
164
|
+
cssHiddenFacts.add(ixElt)
|
|
152
165
|
for ixdsHtmlRootElt in modelXbrl.ixdsHtmlElements:
|
|
153
166
|
for ixElt in ixdsHtmlRootElt.getroottree().iterfind(".//{http://www.w3.org/1999/xhtml}*[@style]"):
|
|
154
167
|
styleValue = ixElt.get("style","")
|
|
@@ -165,6 +178,7 @@ class PluginValidationDataExtension(PluginData):
|
|
|
165
178
|
(ixElt.concept.baseXsdType in UNTRANSFORMABLE_TYPES or ixElt.isNil)):
|
|
166
179
|
requiredToDisplayFacts.add(ixElt)
|
|
167
180
|
return HiddenElementsData(
|
|
181
|
+
cssHiddenFacts=cssHiddenFacts,
|
|
168
182
|
eligibleForTransformHiddenFacts=eligibleForTransformHiddenFacts,
|
|
169
183
|
hiddenFactsOutsideHiddenSection=hiddenFactsOutsideHiddenSection,
|
|
170
184
|
requiredToDisplayFacts=requiredToDisplayFacts,
|
|
@@ -172,6 +186,7 @@ class PluginValidationDataExtension(PluginData):
|
|
|
172
186
|
|
|
173
187
|
@lru_cache(1)
|
|
174
188
|
def checkInlineHTMLElements(self, modelXbrl: ModelXbrl) -> InlineHTMLData:
|
|
189
|
+
baseElements = set()
|
|
175
190
|
factLangs = self.factLangs(modelXbrl)
|
|
176
191
|
footnotesRelationshipSet = modelXbrl.relationshipSet("XBRL-footnotes")
|
|
177
192
|
factLangFootnotes = defaultdict(set)
|
|
@@ -202,9 +217,15 @@ class PluginValidationDataExtension(PluginData):
|
|
|
202
217
|
tupleElements.add(elt)
|
|
203
218
|
if elt.tag == ixFractionTag:
|
|
204
219
|
fractionElements.add(elt)
|
|
220
|
+
for elt, depth in etreeIterWithDepth(ixdsHtmlRootElt):
|
|
221
|
+
if elt.get(xmlBaseIdentifier) is not None:
|
|
222
|
+
baseElements.add(elt)
|
|
223
|
+
if elt.tag == xhtmlBaseIdentifier:
|
|
224
|
+
baseElements.add(elt)
|
|
205
225
|
factLangFootnotes.default_factory = None
|
|
206
226
|
assert_type(factLangFootnotes, defaultdict[ModelObject, set[str]])
|
|
207
227
|
return InlineHTMLData(
|
|
228
|
+
baseElements=baseElements,
|
|
208
229
|
factLangFootnotes=cast(dict[ModelInlineFootnote, set[str]], factLangFootnotes),
|
|
209
230
|
fractionElements=fractionElements,
|
|
210
231
|
noMatchLangFootnotes=noMatchLangFootnotes,
|
|
@@ -232,6 +253,9 @@ class PluginValidationDataExtension(PluginData):
|
|
|
232
253
|
factLangs.add(fact.xmlLang)
|
|
233
254
|
return factLangs
|
|
234
255
|
|
|
256
|
+
def getBaseElements(self, modelXbrl: ModelXbrl) -> set[Any | None]:
|
|
257
|
+
return self.checkInlineHTMLElements(modelXbrl).baseElements
|
|
258
|
+
|
|
235
259
|
def getContextsWithImproperContent(self, modelXbrl: ModelXbrl) -> list[ModelContext | None]:
|
|
236
260
|
return self.checkContexts(modelXbrl).contextsWithImproperContent
|
|
237
261
|
|
|
@@ -290,6 +314,9 @@ class PluginValidationDataExtension(PluginData):
|
|
|
290
314
|
def getOrphanedFootnotes(self, modelXbrl: ModelXbrl) -> set[ModelInlineFootnote]:
|
|
291
315
|
return self.checkInlineHTMLElements(modelXbrl).orphanedFootnotes
|
|
292
316
|
|
|
317
|
+
def getCssHiddenFacts(self, modelXbrl: ModelXbrl) -> set[ModelInlineFact]:
|
|
318
|
+
return self.checkHiddenElements(modelXbrl).cssHiddenFacts
|
|
319
|
+
|
|
293
320
|
def getRequiredToDisplayFacts(self, modelXbrl: ModelXbrl) -> set[ModelInlineFact]:
|
|
294
321
|
return self.checkHiddenElements(modelXbrl).requiredToDisplayFacts
|
|
295
322
|
|
|
@@ -583,6 +583,30 @@ def rule_nl_kvk_3_4_1_5 (
|
|
|
583
583
|
)
|
|
584
584
|
|
|
585
585
|
|
|
586
|
+
@validation(
|
|
587
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
588
|
+
disclosureSystems=[
|
|
589
|
+
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
590
|
+
],
|
|
591
|
+
)
|
|
592
|
+
def rule_nl_kvk_3_4_2_1 (
|
|
593
|
+
pluginData: PluginValidationDataExtension,
|
|
594
|
+
val: ValidateXbrl,
|
|
595
|
+
*args: Any,
|
|
596
|
+
**kwargs: Any,
|
|
597
|
+
) -> Iterable[Validation]:
|
|
598
|
+
"""
|
|
599
|
+
NL-KVK.3.4.2.1: Review if xml:base and <base> elements are present in the Inline XBRL document.
|
|
600
|
+
"""
|
|
601
|
+
baseElements = pluginData.getBaseElements(val.modelXbrl)
|
|
602
|
+
if len(baseElements) > 0:
|
|
603
|
+
yield Validation.error(
|
|
604
|
+
codes='NL.NL-KVK.3.4.2.1.htmlOrXmlBaseUsed',
|
|
605
|
+
msg=_('The HTML <base> elements and xml:base attributes MUST NOT be used in the Inline XBRL document'),
|
|
606
|
+
modelObject=baseElements
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
|
|
586
610
|
@validation(
|
|
587
611
|
hook=ValidationHook.XBRL_FINALLY,
|
|
588
612
|
disclosureSystems=[
|
|
@@ -676,6 +700,31 @@ def rule_nl_kvk_3_5_2_3(
|
|
|
676
700
|
)
|
|
677
701
|
|
|
678
702
|
|
|
703
|
+
@validation(
|
|
704
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
705
|
+
disclosureSystems=[
|
|
706
|
+
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
707
|
+
],
|
|
708
|
+
)
|
|
709
|
+
def rule_nl_kvk_3_5_4_1 (
|
|
710
|
+
pluginData: PluginValidationDataExtension,
|
|
711
|
+
val: ValidateXbrl,
|
|
712
|
+
*args: Any,
|
|
713
|
+
**kwargs: Any,
|
|
714
|
+
) -> Iterable[Validation]:
|
|
715
|
+
"""
|
|
716
|
+
NL-KVK.3.5.4.1: Where CSS is used to format the reports, transformations MUST NOT be used to hide information by making it not visible
|
|
717
|
+
e.g. by applying display:none style on any tagged facts.
|
|
718
|
+
"""
|
|
719
|
+
facts = pluginData.getCssHiddenFacts(val.modelXbrl)
|
|
720
|
+
if len(facts) > 0:
|
|
721
|
+
yield Validation.error(
|
|
722
|
+
codes='NL.NL-KVK.3.5.4.1.displayNoneUsedToHideTaggedFacts',
|
|
723
|
+
msg=_('Display:none has been used to hide tagged facts. This is not allowed.'),
|
|
724
|
+
modelObject=facts
|
|
725
|
+
)
|
|
726
|
+
|
|
727
|
+
|
|
679
728
|
@validation(
|
|
680
729
|
hook=ValidationHook.XBRL_FINALLY,
|
|
681
730
|
disclosureSystems=[
|
|
@@ -1,12 +1,12 @@
|
|
|
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=sf5Xe19t5E0wKzhdlXl1p5r6gMtCmPhYAi8RVY0jz7Y,30449
|
|
4
|
-
arelle/CntlrCmdLine.py,sha256=
|
|
4
|
+
arelle/CntlrCmdLine.py,sha256=ZFfrfWirxSoGOZerRlSxFUhr9h4pnN7HGpVopm1T1U8,89949
|
|
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
|
|
8
8
|
arelle/CntlrWebMain.py,sha256=x5vtiopqGdp6L5s7PrUTEABXCGqtb5oy7yqWIVePtgE,50860
|
|
9
|
-
arelle/CntlrWinMain.py,sha256=
|
|
9
|
+
arelle/CntlrWinMain.py,sha256=cez8Hny52XrZXs2jfiJmtvgolnQzTX6F6j3vFpLuU1Y,97090
|
|
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
|
|
@@ -36,7 +36,7 @@ arelle/LocalViewer.py,sha256=WVrfek_bLeFFxgWITi1EQb6xCQN8O9Ks-ZL16vRncSk,3080
|
|
|
36
36
|
arelle/Locale.py,sha256=aKC1Uaen_dbPGb92kZa_yUoo7On_QtWlvr5H_F9BNXg,33008
|
|
37
37
|
arelle/ModelDocument.py,sha256=Sq6umEdn-aNHjxIpEsXTT7A4V25nGY0JiylSnhr9zSI,130749
|
|
38
38
|
arelle/ModelDtsObject.py,sha256=nvHQs4BDmPxY6mqLiBuqIGRJXyA1EqOEGB2f3S6A6w4,88656
|
|
39
|
-
arelle/ModelFormulaObject.py,sha256
|
|
39
|
+
arelle/ModelFormulaObject.py,sha256=-eb0lBYciEeAvvGduIs3AHGNGrxge9_0g1cVT6UUgvc,122560
|
|
40
40
|
arelle/ModelInstanceObject.py,sha256=JqULoUliBscwWJa7NskIhNVxBqax2ImOSIh0tH6_7q0,74201
|
|
41
41
|
arelle/ModelManager.py,sha256=QUNcD2LC_YyyGFU8bFTSuzIGI1qpOK55KBlQ697Ep1I,11075
|
|
42
42
|
arelle/ModelObject.py,sha256=Rttkhv-PtfneZyDYsG5FDh98BzT97ameTmwNdqFaOv0,18657
|
|
@@ -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=
|
|
117
|
+
arelle/XbrlConst.py,sha256=njOrR7sJaLO4V2EXrlCp8Usk-rU-r4j_8B00FicwFU4,56819
|
|
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=
|
|
126
|
+
arelle/_version.py,sha256=oVbewYj-2LNk4WLfn9JgSuba8Aa6rTo8YH34kT9Mvxc,515
|
|
127
127
|
arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
|
|
128
128
|
arelle/api/Session.py,sha256=O8zpg7MJys9uxwwHf8OsSlZxpPdq7A3ONyY39Q4A3Kc,6218
|
|
129
129
|
arelle/archive/CustomLogger.py,sha256=v_JXOCQLDZcfaFWzxC9FRcEf9tQi4rCI4Sx7jCuAVQI,1231
|
|
@@ -366,11 +366,11 @@ arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlx
|
|
|
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=l4Nl-QuYJlM4WDpg87YjTwMUh05VP7tNq86gLFhWHyE,63380
|
|
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=RDWfo8a36v2Hw6bYij1ZIh0HXuw_rNKa6WwDnkLDPZ8,73642
|
|
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,7 +378,7 @@ 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=
|
|
381
|
+
arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=WXlkHM3aDU4d19DEDHZN6insgion7sY-C2u2b8q4VyQ,15944
|
|
382
382
|
arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=2qvvOqBkgk2LwERTHDuxtrRupYz3yRyhH71XQLbl9F4,15507
|
|
383
383
|
arelle/plugin/validate/NL/__init__.py,sha256=GFM77Mv7OJkLKrZUEB_LmF5x3h4U5J9NsD1lven0N9o,2708
|
|
384
384
|
arelle/plugin/validate/NL/resources/config.xml,sha256=i_ns2wHmQYjhkRItevRR8tzfkl31ASfbWlc5t6pDB-w,1117
|
|
@@ -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=XryD-e0YJJG7n-rzw3E_m43_QUEjasIebmBhWdxZ-aE,29370
|
|
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
|
|
@@ -709,7 +709,7 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
|
|
|
709
709
|
arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
710
710
|
arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
711
711
|
arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
|
|
712
|
-
arelle_release-2.37.
|
|
712
|
+
arelle_release-2.37.17.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
|
|
713
713
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
714
714
|
tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
|
|
715
715
|
tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
|
|
@@ -764,7 +764,7 @@ tests/integration_tests/validation/conformance_suite_configurations/kvk_nt16.py,
|
|
|
764
764
|
tests/integration_tests/validation/conformance_suite_configurations/kvk_nt17.py,sha256=lmEZonthFm0YKFmp1dwXtdJ2T7txUeSpL4mbAo8fl4Y,1292
|
|
765
765
|
tests/integration_tests/validation/conformance_suite_configurations/kvk_nt18.py,sha256=EG2RQVkvFENhzUF3fl3QvDnH7ZPYS1n1Fo8bhfmSczM,1205
|
|
766
766
|
tests/integration_tests/validation/conformance_suite_configurations/kvk_nt19.py,sha256=FAzf9RhRmn_8yowpplJho2zEspX9FxJiVq8SjZT3Dsc,1199
|
|
767
|
-
tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=
|
|
767
|
+
tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=9NBnt0fti8KNqgM--PXxGPC6uU5wmUN0nRTaWjkdXJI,10510
|
|
768
768
|
tests/integration_tests/validation/conformance_suite_configurations/nl_nt16.py,sha256=O_LFVBZPkjxmbrU7_C7VTLtrdoCUx2bYXOXw6_MlRtQ,846
|
|
769
769
|
tests/integration_tests/validation/conformance_suite_configurations/nl_nt17.py,sha256=aTN3Ez6lPsZsuypHZP84DneOtYxUZSjUiGypHy6ofHQ,846
|
|
770
770
|
tests/integration_tests/validation/conformance_suite_configurations/nl_nt18.py,sha256=sqHLjrHc95dTu0guTgKkphaKM1zNfKGnN4GKkZDLzeU,845
|
|
@@ -1071,7 +1071,7 @@ tests/resources/conformance_suites/dba/tm/tm28-invalid.xhtml,sha256=TuR4isQJCQvJ
|
|
|
1071
1071
|
tests/resources/conformance_suites/dba/tm/tm28-testcase.xml,sha256=oFIhUCSk58S8XSHdtf6bCedSr7oDIxpqwBJFOqsdszo,894
|
|
1072
1072
|
tests/resources/conformance_suites/dba/tm/tm29-invalid.xhtml,sha256=1z4WbxWGNaNhZ9aNoTMxiXMwAfKtdzt4-hb_hGJk-HQ,1651782
|
|
1073
1073
|
tests/resources/conformance_suites/dba/tm/tm29-testcase.xml,sha256=j5ou77s-4lkdLlWVSvMH3OKQueI2NjEepagPDzKjRug,890
|
|
1074
|
-
tests/resources/conformance_suites/dba/tm/tm30-invalid.xhtml,sha256=
|
|
1074
|
+
tests/resources/conformance_suites/dba/tm/tm30-invalid.xhtml,sha256=BqP40-cZGjD83wLrKEmIT11cNMUDr322HJ2l7RZBcdk,1652036
|
|
1075
1075
|
tests/resources/conformance_suites/dba/tm/tm30-testcase.xml,sha256=LdJCDmafDCfIAPqQeD-T4RSQDFnlRylLZnPod0BLMvY,846
|
|
1076
1076
|
tests/resources/conformance_suites/dba/tm/tm31-invalid.xhtml,sha256=ils05IvT5LtipWZMuIkkvgXchQHvi_o2PLYWL9ea10M,1652761
|
|
1077
1077
|
tests/resources/conformance_suites/dba/tm/tm31-testcase.xml,sha256=0RheuzXTLFI6M7mxE8cZg7O2G0cni4scDwfvz1uT_mQ,850
|
|
@@ -1559,8 +1559,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
|
|
|
1559
1559
|
tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
|
|
1560
1560
|
tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=XHABmejQt7RlZ0udh7v42f2Xb2STGk_fSaIaJ9i2xo0,878
|
|
1561
1561
|
tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
|
|
1562
|
-
arelle_release-2.37.
|
|
1563
|
-
arelle_release-2.37.
|
|
1564
|
-
arelle_release-2.37.
|
|
1565
|
-
arelle_release-2.37.
|
|
1566
|
-
arelle_release-2.37.
|
|
1562
|
+
arelle_release-2.37.17.dist-info/METADATA,sha256=GxJZw_EZzoiZuIIY2Ss1UwmSsKtizBC7qSisyEct9Ls,9065
|
|
1563
|
+
arelle_release-2.37.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1564
|
+
arelle_release-2.37.17.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
|
|
1565
|
+
arelle_release-2.37.17.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
|
|
1566
|
+
arelle_release-2.37.17.dist-info/RECORD,,
|
|
@@ -53,12 +53,11 @@ config = ConformanceSuiteConfig(
|
|
|
53
53
|
'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.
|
|
54
54
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-1_1/index.xml:TC2_invalid', # Produces: [err:XPTY0004] Variable set Het entity identifier scheme dat bij dit feit hoort MOET het standaard KVK identifier scheme zijn
|
|
55
55
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-1_2/index.xml:TC2_invalid', # Expects fractionElementUsed”. Note the double quote at the end.
|
|
56
|
+
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-2_1/index.xml:TC2_invalid', # Produces 'EFM.6.03.11' and 'NL.NL-KVK.3.4.2.1.htmlOrXmlBaseUsed'
|
|
56
57
|
'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)
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
# Not Implemented
|
|
60
|
-
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-2_1/index.xml:TC2_invalid',
|
|
61
|
-
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-4-2_1/index.xml:TC3_invalid',
|
|
62
61
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_1/index.xml:TC3_invalid',
|
|
63
62
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_1/index.xml:TC4_invalid',
|
|
64
63
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_2/index.xml:TC2_invalid',
|
|
@@ -67,7 +66,7 @@ config = ConformanceSuiteConfig(
|
|
|
67
66
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_5/index.xml:TC2_invalid',
|
|
68
67
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-1_5/index.xml:TC3_invalid',
|
|
69
68
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-3_1/index.xml:TC2_invalid',
|
|
70
|
-
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-4_1/index.xml:TC2_invalid',
|
|
69
|
+
#'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-5-4_1/index.xml:TC2_invalid',
|
|
71
70
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-6-2_1/index.xml:TC2_invalid',
|
|
72
71
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G3-7-1_1/index.xml:TC2_invalid',
|
|
73
72
|
'conformance-suite-2024-sbr-domein-handelsregister/tests/G4-1-1_1/index.xml:TC3_invalid',
|
|
@@ -6516,7 +6516,6 @@
|
|
|
6516
6516
|
<ix:nonNumeric name="gsd:DateOfGeneralMeeting" contextRef="ctx-1" xml:lang="en">2024-03-27</ix:nonNumeric>
|
|
6517
6517
|
<ix:nonNumeric name="gsd:DateOfGeneralMeeting" contextRef="ctx-1" xml:lang="da">2024-06-27</ix:nonNumeric>
|
|
6518
6518
|
<ix:nonNumeric name="fsa:ClassOfReportingEntity" contextRef="ctx-1">Reporting class C, medium-size enterprise</ix:nonNumeric>
|
|
6519
|
-
<ix:nonNumeric name="sob:DateOfApprovalOfAnnualReport" contextRef="ctx-1">2024-03-27</ix:nonNumeric>
|
|
6520
6519
|
<ix:nonNumeric name="gsd:IdentificationNumberCvrOfSubmittingEnterprise" contextRef="ctx-1">32570119</ix:nonNumeric>
|
|
6521
6520
|
<ix:nonNumeric name="gsd:NameOfSubmittingEnterprise" contextRef="ctx-1" xml:lang="en">Maersk Training A/S</ix:nonNumeric>
|
|
6522
6521
|
<ix:nonNumeric name="gsd:AddressOfSubmittingEnterpriseStreetAndNumber" contextRef="ctx-1" xml:lang="en">Dyrekredsen 4</ix:nonNumeric>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|