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 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
- if '--COMserver' in sys.argv:
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
- os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
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"):
@@ -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
@@ -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.15'
21
- __version_tuple__ = version_tuple = (2, 37, 15)
20
+ __version__ = version = '2.37.17'
21
+ __version_tuple__ = version_tuple = (2, 37, 17)
@@ -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 fr is not None and not fr.isAbstract and rel.isUsable and fr not in conceptsUsed and isExtension(val, rel) and not fr.type.isDomainItemType:
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 to is not None and not to.isAbstract and rel.isUsable and to not in conceptsUsed and isExtension(val, rel) and not to.type.isDomainItemType:
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 fr is not None and not fr.isAbstract and rel.isUsable and fr not in conceptsUsed and isExtension(val, rel) and not fr.type.isDomainItemType:
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 to is not None and not to.isAbstract and rel.isUsable and to not in conceptsUsed and isExtension(val, rel) and not to.type.isDomainItemType:
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.15
3
+ Version: 2.37.17
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License: Apache-2.0
@@ -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=nRcCAzLpfeKnK5WFDTUs5GWRZosXaFHha7rUgrrQ4kY,89994
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=h30F1aNj1Mggsaqe6__d1JCQe6wIfBI_z_4rCfc-eQc,96894
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=beUSxEFm7aoa9iimmvXLYCHdizAtOmhDqk6wmvbc9Zg,122537
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=YDvnf0gQ3IY5v07d8wxAHTxDmvcHIpl2mSMZeTgvKmk,56695
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=TSA1bIs_NxXgkhR7DPUaXrR47QdWwhNS1Nj7iXFPVPw,515
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=v7T51hIWHIFYHnf6RrstnZOTVUUfMaibbXUxoBJK-yc,62884
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=EJF5dKLPntwYdLUBqwKJ0-A22zhSVDKmDwYb9r8zCA4,73146
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=9Hu-vQgbXq5Q5dRPgsGwTSRt4-7IF_VlOAn1w4Bokcs,14511
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=TnML7IpjSDQFqVQEU5cogLFLnNk_pCUdSAsHjESF9u4,27778
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.15.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
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=XcPUNMw30QtG4GeV1G4Zk17yXnpNZqg1krdSVM3_P8o,10539
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=2Tql-NgEuPidES6oQ5A5CHe121w47ODQMFUi0eV1Cuk,1652157
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.15.dist-info/METADATA,sha256=WjMaa7qZ4Uxl-emox537p4uga5I0kkbtyJ3XfIVbpbw,9065
1563
- arelle_release-2.37.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1564
- arelle_release-2.37.15.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1565
- arelle_release-2.37.15.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1566
- arelle_release-2.37.15.dist-info/RECORD,,
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>