arelle-release 2.37.0__py3-none-any.whl → 2.37.2__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/_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.0'
21
- __version_tuple__ = version_tuple = (2, 37, 0)
20
+ __version__ = version = '2.37.2'
21
+ __version_tuple__ = version_tuple = (2, 37, 2)
@@ -208,7 +208,7 @@ def inlineXbrlDocumentSetLoader(modelXbrl, normalizedUri, filepath, isEntry=Fals
208
208
  elif "ixdsTarget" in kwargs: # passed from validate (multio test cases)
209
209
  _target = kwargs["ixdsTarget"]
210
210
  else:
211
- _target = modelXbrl.modelManager.formulaOptions.parameterValues["ixdsTarget"][1]
211
+ _target = modelXbrl.modelManager.formulaOptions.parameterValues[qname("ixdsTarget")][1]
212
212
  modelXbrl.ixdsTarget = None if _target == DEFAULT_TARGET else _target or None
213
213
  except (KeyError, AttributeError, IndexError, TypeError):
214
214
  pass # set later in selectTargetDocument plugin method
@@ -664,14 +664,14 @@ def validateXbrlFinally(val: ValidateXbrl, *args: Any, **kwargs: Any) -> None:
664
664
  if not f.id:
665
665
  factsMissingId.append(f)
666
666
  escaped = f.get("escape") in ("true", "1")
667
- if escaped != f.concept.type.isTextBlock:
667
+ if f.concept is not None and escaped != f.concept.isTextBlock:
668
668
  modelXbrl.error("ESEF.2.2.7.improperApplicationOfEscapeAttribute",
669
669
  _("Facts with datatype 'dtr-types:textBlockItemType' MUST use the 'escape' attribute set to 'true'. Facts with any other datatype MUST use the 'escape' attribute set to 'false' - fact %(conceptName)s"),
670
670
  modelObject=f, conceptName=f.concept.qname)
671
671
  if f.effectiveValue in ["0", "-0"] and f.xValue != 0:
672
672
  modelXbrl.warning("ESEF.2.2.5.roundedValueBelowScaleNotNull",
673
673
  _("A value that has been rounded and is below the scale should show a value of zero. It has been found to have the value %(value)s - fact %(conceptName)s"),
674
- modelObject=f, value=f.value, conceptName=f.concept.qname)
674
+ modelObject=f, value=f.value, conceptName=getattr(f.concept, "qname", ""))
675
675
  if f.precision is not None:
676
676
  precisionFacts.add(f)
677
677
  if f.isNumeric and f.concept is not None and getattr(f, "xValid", 0) >= VALID:
@@ -2,3 +2,4 @@ DISCLOSURE_SYSTEM_NT16 = 'NT16'
2
2
  DISCLOSURE_SYSTEM_NT17 = 'NT17'
3
3
  DISCLOSURE_SYSTEM_NT18 = 'NT18'
4
4
  DISCLOSURE_SYSTEM_NT19 = 'NT19'
5
+ DISCLOSURE_SYSTEM_INLINE_NT19 = 'INLINE-NT19'
@@ -3,6 +3,7 @@ See COPYRIGHT.md for copyright information.
3
3
  """
4
4
  from __future__ import annotations
5
5
 
6
+ import regex as re
6
7
  from collections import defaultdict
7
8
  from dataclasses import dataclass
8
9
 
@@ -12,6 +13,9 @@ from arelle.ModelXbrl import ModelXbrl
12
13
  from arelle.utils.PluginData import PluginData
13
14
 
14
15
 
16
+ XBRLI_IDENTIFIER_PATTERN = re.compile(r"^(?!00)\d{8}$")
17
+ XBRLI_IDENTIFIER_SCHEMA = 'http://www.kvk.nl/kvk-id'
18
+
15
19
  @dataclass
16
20
  class PluginValidationDataExtension(PluginData):
17
21
  financialReportingPeriodCurrentStartDateQn: QName
@@ -28,6 +32,7 @@ class PluginValidationDataExtension(PluginData):
28
32
  textFormattingWrapper: str
29
33
 
30
34
  _contextsByDocument: dict[str, list[ModelContext]] | None = None
35
+ _entityIdentifiers: set[tuple[str, str]] | None = None
31
36
  _factsByDocument: dict[str, list[ModelFact]] | None = None
32
37
  _unitsByDocument: dict[str, list[ModelUnit]] | None = None
33
38
 
@@ -40,6 +45,12 @@ class PluginValidationDataExtension(PluginData):
40
45
  self._contextsByDocument = dict(contextsByDocument)
41
46
  return self._contextsByDocument
42
47
 
48
+ def entityIdentifiersInDocument(self, modelXbrl: ModelXbrl) -> set[tuple[str, str]]:
49
+ if self._entityIdentifiers is not None:
50
+ return self._entityIdentifiers
51
+ self._entityIdentifiers = {context.entityIdentifier for context in modelXbrl.contexts.values()}
52
+ return self._entityIdentifiers
53
+
43
54
  def factsByDocument(self, modelXbrl: ModelXbrl) -> dict[str, list[ModelFact]]:
44
55
  if self._factsByDocument is not None:
45
56
  return self._factsByDocument
@@ -10,7 +10,7 @@ from arelle.ModelXbrl import ModelXbrl
10
10
  from arelle.ValidateXbrl import ValidateXbrl
11
11
  from arelle.typing import TypeGetText
12
12
  from arelle.utils.validate.ValidationPlugin import ValidationPlugin
13
- from .DisclosureSystems import DISCLOSURE_SYSTEM_NT16, DISCLOSURE_SYSTEM_NT17, DISCLOSURE_SYSTEM_NT18, DISCLOSURE_SYSTEM_NT19
13
+ from .DisclosureSystems import DISCLOSURE_SYSTEM_NT16, DISCLOSURE_SYSTEM_NT17, DISCLOSURE_SYSTEM_NT18, DISCLOSURE_SYSTEM_NT19, DISCLOSURE_SYSTEM_INLINE_NT19
14
14
  from .PluginValidationDataExtension import PluginValidationDataExtension
15
15
 
16
16
  _: TypeGetText
@@ -129,7 +129,7 @@ class ValidationPluginExtension(ValidationPlugin):
129
129
  'kvk-rpt-jaarverantwoording-2023-nlgaap-verzekeringsmaatschappijen.xsd',
130
130
  'kvk-rpt-jaarverantwoording-2023-nlgaap-zorginstellingen.xsd',
131
131
  ]}
132
- elif disclosureSystem == DISCLOSURE_SYSTEM_NT19:
132
+ elif disclosureSystem == DISCLOSURE_SYSTEM_NT19 or disclosureSystem == DISCLOSURE_SYSTEM_INLINE_NT19:
133
133
  jenvNamespace = 'http://www.nltaxonomie.nl/nt19/jenv/20241211/dictionary/jenv-bw2-data'
134
134
  kvkINamespace = 'http://www.nltaxonomie.nl/nt19/kvk/20241211/dictionary/kvk-data'
135
135
  nlTypesNamespace = 'http://www.nltaxonomie.nl/nt19/sbr/20240301/dictionary/nl-types'
@@ -187,7 +187,7 @@ class ValidationPluginExtension(ValidationPlugin):
187
187
  def modelXbrlLoadComplete(self, modelXbrl: ModelXbrl, *args: Any, **kwargs: Any) -> ModelDocument | LoadingException | None:
188
188
  if self.disclosureSystemFromPluginSelected(modelXbrl):
189
189
  disclosureSystem = modelXbrl.modelManager.disclosureSystem.name
190
- if disclosureSystem in (DISCLOSURE_SYSTEM_NT16, DISCLOSURE_SYSTEM_NT17, DISCLOSURE_SYSTEM_NT18, DISCLOSURE_SYSTEM_NT19):
190
+ if disclosureSystem in (DISCLOSURE_SYSTEM_NT16, DISCLOSURE_SYSTEM_NT17, DISCLOSURE_SYSTEM_NT18, DISCLOSURE_SYSTEM_NT19, DISCLOSURE_SYSTEM_INLINE_NT19):
191
191
  # Dutch taxonomies prior to 2025 incorrectly used hypercube linkrole for roots instead of dimension linkrole.
192
192
  paramQName = qname('tlbDimRelsUseHcRoleForDomainRoots', noPrefixIsNoNamespace=True)
193
193
  modelXbrl.modelManager.formulaOptions.parameterValues[paramQName] = (None, "true")
@@ -16,7 +16,7 @@ from typing import Any
16
16
  from arelle.ModelDocument import LoadingException, ModelDocument
17
17
  from arelle.Version import authorLabel, copyrightLabel
18
18
  from .ValidationPluginExtension import ValidationPluginExtension
19
- from .rules import br_kvk, fg_nl, fr_kvk, fr_nl
19
+ from .rules import br_kvk, fg_nl, fr_kvk, fr_nl, nl_kvk
20
20
 
21
21
  PLUGIN_NAME = "Validate NL"
22
22
  DISCLOSURE_SYSTEM_VALIDATION_TYPE = "NL"
@@ -26,7 +26,7 @@ validationPlugin = ValidationPluginExtension(
26
26
  name=PLUGIN_NAME,
27
27
  disclosureSystemConfigUrl=Path(__file__).parent / "resources" / "config.xml",
28
28
  validationTypes=[DISCLOSURE_SYSTEM_VALIDATION_TYPE],
29
- validationRuleModules=[br_kvk, fg_nl, fr_kvk, fr_nl],
29
+ validationRuleModules=[br_kvk, fg_nl, fr_kvk, fr_nl, nl_kvk],
30
30
  )
31
31
 
32
32
 
@@ -3,6 +3,11 @@
3
3
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
4
  xsi:noNamespaceSchemaLocation="../../../../config/disclosuresystems.xsd">
5
5
  <!-- see arelle/config/disclosuresystems.xml for full comments -->
6
+ <DisclosureSystem
7
+ names="INLINE-NT19|inline-nt19|kvk-ixbrl-2024-preview"
8
+ description="Checks for NT2024"
9
+ validationType="NL"
10
+ />
6
11
  <DisclosureSystem
7
12
  names="NT19|nt19|NT19-preview|nt19-preview"
8
13
  description="Checks for NT19"
@@ -0,0 +1,94 @@
1
+ """
2
+ See COPYRIGHT.md for copyright information.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ from datetime import date, timedelta
7
+ from dateutil import relativedelta
8
+ from collections.abc import Iterable
9
+ from typing import Any, cast, TYPE_CHECKING
10
+
11
+ from regex import regex
12
+
13
+ from arelle import XmlUtil, XbrlConst
14
+ from arelle.ModelObject import ModelObject
15
+ from arelle.ValidateXbrl import ValidateXbrl
16
+ from arelle.XmlValidate import INVALID
17
+ from arelle.typing import TypeGetText
18
+ from arelle.utils.PluginHooks import ValidationHook
19
+ from arelle.utils.validate.Decorator import validation
20
+ from arelle.utils.validate.Validation import Validation
21
+ from ..DisclosureSystems import (
22
+ DISCLOSURE_SYSTEM_INLINE_NT19
23
+ )
24
+ from ..PluginValidationDataExtension import PluginValidationDataExtension, XBRLI_IDENTIFIER_PATTERN, XBRLI_IDENTIFIER_SCHEMA
25
+
26
+ if TYPE_CHECKING:
27
+ from arelle.ModelXbrl import ModelXbrl
28
+ from arelle.ModelValue import QName
29
+
30
+ _: TypeGetText
31
+
32
+
33
+ def _getReportingPeriodDateValue(modelXbrl: ModelXbrl, qname: QName) -> date | None:
34
+ facts = modelXbrl.factsByQname.get(qname)
35
+ if facts and len(facts) == 1:
36
+ datetimeValue = XmlUtil.datetimeValue(next(iter(facts)))
37
+ if datetimeValue:
38
+ return datetimeValue.date()
39
+ return None
40
+
41
+
42
+ @validation(
43
+ hook=ValidationHook.XBRL_FINALLY,
44
+ disclosureSystems=[
45
+ DISCLOSURE_SYSTEM_INLINE_NT19
46
+ ],
47
+ )
48
+ def rule_nl_kvk_3_1_1_1(
49
+ pluginData: PluginValidationDataExtension,
50
+ val: ValidateXbrl,
51
+ *args: Any,
52
+ **kwargs: Any,
53
+ ) -> Iterable[Validation]:
54
+ """
55
+ NL-KVK.3.1.1.1: xbrli:identifier content to match KVK number format that must consist of 8 consecutive digits;
56
+ first two digits must not be '00'.
57
+ """
58
+ entityIdentifierValues = pluginData.entityIdentifiersInDocument(val.modelXbrl)
59
+ for entityId in entityIdentifierValues:
60
+ if not XBRLI_IDENTIFIER_PATTERN.match(entityId[1]):
61
+ yield Validation.error(
62
+ codes='NL.NL-KVK-3.1.1.1',
63
+ msg=_('xbrli:identifier content to match KVK number format that must consist of 8 consecutive digits.'
64
+ 'Additionally the first two digits must not be "00".'),
65
+ modelObject = val.modelXbrl
66
+ )
67
+ return
68
+
69
+
70
+ @validation(
71
+ hook=ValidationHook.XBRL_FINALLY,
72
+ disclosureSystems=[
73
+ DISCLOSURE_SYSTEM_INLINE_NT19
74
+ ],
75
+ )
76
+ def rule_nl_kvk_3_1_1_2(
77
+ pluginData: PluginValidationDataExtension,
78
+ val: ValidateXbrl,
79
+ *args: Any,
80
+ **kwargs: Any,
81
+ ) -> Iterable[Validation]:
82
+ """
83
+ NL-KVK.3.1.1.2: Scheme attribute of xbrli:identifier must be http://www.kvk.nl/kvk-id.
84
+ """
85
+ entityIdentifierValues = pluginData.entityIdentifiersInDocument(val.modelXbrl)
86
+ for entityId in entityIdentifierValues:
87
+ if XBRLI_IDENTIFIER_SCHEMA != entityId[0]:
88
+ yield Validation.error(
89
+ codes='NL.NL-KVK-3.1.1.2',
90
+ msg=_('The scheme attribute of the xbrli:identifier does not match the required content.'
91
+ 'This should be "http://www.kvk.nl/kvk-id".'),
92
+ modelObject = val.modelXbrl
93
+ )
94
+ return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.0
3
+ Version: 2.37.2
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License: Apache-2.0
@@ -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=zJ_9oo8w7drfK7wb1eVcY65fPTQw3TbzkxJ3-mvSxs8,513
126
+ arelle/_version.py,sha256=SdRSRBpZWyw1-pU0gtmyEG3t5dEaL5vN61b5KLdUkP4,513
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
@@ -314,7 +314,7 @@ arelle/plugin/formulaLoader.py,sha256=_pPZQPAZeNjGj85rvH7QRl4gEjYD7Yhxl1JhuV9wOo
314
314
  arelle/plugin/formulaSaver.py,sha256=STlKyDA-pVUxZoEW57MSu74RdpyHVTxaHvOZyOt0cyg,31385
315
315
  arelle/plugin/formulaXPathChecker.py,sha256=sEEeLHx17XSj8eOgFdzYLBp9ZFk2UUYLOEKtaF_pq34,18795
316
316
  arelle/plugin/functionsMath.py,sha256=Z8N7ok3w1aOusCQA9QvqYwQ8W1j80bb-_4lVclBnNQM,9037
317
- arelle/plugin/inlineXbrlDocumentSet.py,sha256=A0psOnsks3iskoCejToAvAda5nlJfDIC6P6eUxPjYmA,55219
317
+ arelle/plugin/inlineXbrlDocumentSet.py,sha256=hAIuRG6vugWEpqpWvx80ELfoKl1pinnNbpX8X4ERe-4,55226
318
318
  arelle/plugin/loadFromExcel.py,sha256=galvvaj9jTKMMRUasCSh1SQnCCBzoN_HEpYWv0fmUdM,124407
319
319
  arelle/plugin/loadFromOIM.py,sha256=dJHnX56bmuY40f6vRMsQ7pJmIWcB5N_3jmYWGGnZSdM,903
320
320
  arelle/plugin/profileCmdLine.py,sha256=uLL0fGshpiwtzyLKAtW0WuXAvcRtZgxQG6swM0e4BHA,2370
@@ -370,23 +370,24 @@ arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py,sha256=AGjPhegfY9hg
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=fe1_VE_yCIyyDJATvETWUikR30Pb_AoP1X4H1dgHNMw,73093
373
+ arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py,sha256=F7UahhDQ4jieUyPKqzLCAld8e1YbSjMmZrEciAUXTH4,73130
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
377
377
  arelle/plugin/validate/FERC/__init__.py,sha256=V4fXcFKBsjFFPs9_1NhvDjWpEQCoQM0tRQMS0I1Ua7U,11462
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
- arelle/plugin/validate/NL/DisclosureSystems.py,sha256=ofxpMb3WThJVPIKJxR6KVv1sO7dufXfuiL26CXPg_ZA,128
381
- arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=qfalHFpjaQXPqrIve_e9H4-L5Iw65DHiks7p2cbFEDE,2410
382
- arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=lJLT9Bb727rM-uw62yOrw3bnlr1BY_vYGu4k0krApFw,14794
383
- arelle/plugin/validate/NL/__init__.py,sha256=wR3Z1mOZ1WeBcQN1bQCv1JcWVTNm1Ijk_FEnxJYEJKs,2538
384
- arelle/plugin/validate/NL/resources/config.xml,sha256=m39gq5wtiwFcMlSob7VCt5jWSotuxtxRV3jdIwELTVA,930
380
+ arelle/plugin/validate/NL/DisclosureSystems.py,sha256=VFMcO8GJ8kIqhOV5McyEejaGJOR5JrmeF8GdFuS9IZw,174
381
+ arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=HSC78vmyI_W7MMaLXgZbKGd9IdwtirbCK0Q1H8p9j9k,2922
382
+ arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=VuvveUzLJ-1oTB394MSD2c2JeoLyys8y2Z13COHEnPs,14909
383
+ arelle/plugin/validate/NL/__init__.py,sha256=9NkkfosHnAzJhBa84KDAsoyU7vd4_DO3GYKTSvKuOk8,2554
384
+ arelle/plugin/validate/NL/resources/config.xml,sha256=vu5pA-Iw6cgb5aep8LNLNPCkmG1QF6RTw3TCgEIest8,1102
385
385
  arelle/plugin/validate/NL/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
386
386
  arelle/plugin/validate/NL/rules/br_kvk.py,sha256=0SwKieWzTDm3YMsXPS6zTdgbk7_Z9CzqRkRmCRz1OiQ,15789
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=JUlnK9-ib0y7bGG6apJ8i60TMEdoe6y_hL33s22rYw4,3164
390
391
  arelle/plugin/validate/ROS/DisclosureSystems.py,sha256=rJ81mwQDYTi6JecFZ_zhqjjz3VNQRgjHNSh0wcQWAQE,18
391
392
  arelle/plugin/validate/ROS/PluginValidationDataExtension.py,sha256=IV7ILhNvgKwQXqbpSA6HRNt9kEnejCyMADI3wyyIgk0,4036
392
393
  arelle/plugin/validate/ROS/ValidationPluginExtension.py,sha256=FBhEp8t396vGdvCbMEimfcxmGiGnhXMen-yVLWnkFaI,758
@@ -706,7 +707,7 @@ arelle/utils/validate/ValidationPlugin.py,sha256=_WeRPXZUTCcSN3FLbFwiAe_2pAUTxZZ
706
707
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
707
708
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
708
709
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
709
- arelle_release-2.37.0.dist-info/licenses/LICENSE.md,sha256=rMbWwFLGzPgLoEjEu8LCmkpWDTqsvfOI-wzLSfeJsis,4107
710
+ arelle_release-2.37.2.dist-info/licenses/LICENSE.md,sha256=rMbWwFLGzPgLoEjEu8LCmkpWDTqsvfOI-wzLSfeJsis,4107
710
711
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
711
712
  tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
712
713
  tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
@@ -728,7 +729,7 @@ tests/integration_tests/scripts/tests/python_api_query_model.py,sha256=Ut87tvE-h
728
729
  tests/integration_tests/scripts/tests/python_api_taxonomy_service.py,sha256=C6j7BB9h7CX_dUmVFkpnqElShffRSmCI-TMJkueztGM,2711
729
730
  tests/integration_tests/scripts/tests/python_api_validate_esef.py,sha256=Qzi2RRGWjkTVhAjBB18DeJ3X_M9hJYH1TAk7j_RVv5Q,2423
730
731
  tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest.sln,sha256=uzzvHUtKpmBPpoxdfHd7cCmAkdvjs7mMehO6YHebdTY,1499
731
- tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/ArelleGUITest.csproj,sha256=cyJd-vghxR1SeMRuxQdeka2m19WRvcXxpvDoNwwDo5Q,1387
732
+ tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/ArelleGUITest.csproj,sha256=_MqHWdpSGWqbmEnccKPDPCvUsB-uHH6GXkA5ZPD7gD8,1387
732
733
  tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/Tests.cs,sha256=_0TvabpERmrfaoDSazN-xQAH0qzO3cAnuFHLGLRJnGU,20334
733
734
  tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/Usings.cs,sha256=0IC7tQ27uAqlt8ZGBrJPK7BPj3kjiodPcHWB3v_JT-o,29
734
735
  tests/integration_tests/ui_tests/resources/workiva.zip,sha256=QtZzi1VcKkHhVa8J-I1wVpQFy-p6tsV95Z0HmI6XbXc,223544
@@ -774,7 +775,7 @@ tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensi
774
775
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensible_enumerations_2_0.py,sha256=DZTlD6A3ieT-lBUlrn78a0V5j1LvCKRm_Lm7jSvphPY,683
775
776
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0.py,sha256=H456ozSCnVoVHXYHd4g2169JHkI2yKhMgOOpJyanLZE,592
776
777
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_assertion_severity_2_0.py,sha256=W7FT2ac5u8PyRubt_bcDl37wucv0Pnu9KqQ2jxEpGFM,668
777
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py,sha256=FnzTxgT-6UGzv1oVUjueym-BITAaQChOUgSNf8H8vE8,1010
778
+ tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py,sha256=TPQ82Ei_zJv5b3ZxxdifDRRzLMBfNqqeFcwr66-oLd8,811
778
779
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_ixbrl_1_1.py,sha256=Upsc9Nx0eHJQlVL9p77GamTCUpIqjexnRShe9F0b9NM,1366
779
780
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_link_role_registry_1_0.py,sha256=NQfri9MXCDSvNy7kahf4iXZaBUPey9-FYKlchg-Uw4I,633
780
781
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_oim_1_0.py,sha256=s5tcH5fgzNwLQR1iWxCjuyij4Rxjq8XrmGDIptAbfGE,906
@@ -1554,8 +1555,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
1554
1555
  tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
1555
1556
  tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=XHABmejQt7RlZ0udh7v42f2Xb2STGk_fSaIaJ9i2xo0,878
1556
1557
  tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
1557
- arelle_release-2.37.0.dist-info/METADATA,sha256=B6owHg36peSdVXVQq7TSW2w8DQGMGh5MrDJoedyO6iE,9116
1558
- arelle_release-2.37.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1559
- arelle_release-2.37.0.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1560
- arelle_release-2.37.0.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1561
- arelle_release-2.37.0.dist-info/RECORD,,
1558
+ arelle_release-2.37.2.dist-info/METADATA,sha256=vFrUz96GRRajb-pPQ0UBmp-6ztyG33aH2FSrXJazXE4,9116
1559
+ arelle_release-2.37.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1560
+ arelle_release-2.37.2.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1561
+ arelle_release-2.37.2.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1562
+ arelle_release-2.37.2.dist-info/RECORD,,
@@ -16,7 +16,7 @@
16
16
  <PackageReference Include="JUnitTestLogger" Version="1.1.0" />
17
17
  <PackageReference Include="JunitXml.TestLogger" Version="6.1.0" />
18
18
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
19
- <PackageReference Include="Microsoft.Windows.Compatibility" Version="9.0.3" />
19
+ <PackageReference Include="Microsoft.Windows.Compatibility" Version="9.0.4" />
20
20
  <PackageReference Include="NUnit" Version="4.3.2" />
21
21
  <PackageReference Include="NUnit3TestAdapter" Version="5.0.0" />
22
22
  <PackageReference Include="NUnit.Analyzers" Version="4.7.0">
@@ -1,6 +1,9 @@
1
- import re
2
- from pathlib import PurePath, Path
3
- from tests.integration_tests.validation.conformance_suite_config import ConformanceSuiteConfig, ConformanceSuiteAssetConfig
1
+ from pathlib import Path, PurePath
2
+
3
+ from tests.integration_tests.validation.conformance_suite_config import (
4
+ ConformanceSuiteAssetConfig,
5
+ ConformanceSuiteConfig,
6
+ )
4
7
 
5
8
  config = ConformanceSuiteConfig(
6
9
  args=[
@@ -18,8 +21,5 @@ config = ConformanceSuiteConfig(
18
21
  network_or_cache_required=False,
19
22
  plugins=frozenset({'formulaXPathChecker', 'functionsMath'}),
20
23
  strict_testcase_index=False,
21
- required_locale_by_ids={f'formula/function-registry/{t}': p for t, p in [
22
- ('xbrl/90701 xfi.format-number/90701 xfi.format-number testcase.xml:V-05', re.compile(r"^(en|English).*$")),
23
- ]},
24
24
  test_case_result_options='match-any',
25
25
  )