arelle-release 2.37.1__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.1'
21
- __version_tuple__ = version_tuple = (2, 37, 1)
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
@@ -14,6 +14,7 @@ from arelle.utils.PluginData import PluginData
14
14
 
15
15
 
16
16
  XBRLI_IDENTIFIER_PATTERN = re.compile(r"^(?!00)\d{8}$")
17
+ XBRLI_IDENTIFIER_SCHEMA = 'http://www.kvk.nl/kvk-id'
17
18
 
18
19
  @dataclass
19
20
  class PluginValidationDataExtension(PluginData):
@@ -31,6 +32,7 @@ class PluginValidationDataExtension(PluginData):
31
32
  textFormattingWrapper: str
32
33
 
33
34
  _contextsByDocument: dict[str, list[ModelContext]] | None = None
35
+ _entityIdentifiers: set[tuple[str, str]] | None = None
34
36
  _factsByDocument: dict[str, list[ModelFact]] | None = None
35
37
  _unitsByDocument: dict[str, list[ModelUnit]] | None = None
36
38
 
@@ -43,6 +45,12 @@ class PluginValidationDataExtension(PluginData):
43
45
  self._contextsByDocument = dict(contextsByDocument)
44
46
  return self._contextsByDocument
45
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
+
46
54
  def factsByDocument(self, modelXbrl: ModelXbrl) -> dict[str, list[ModelFact]]:
47
55
  if self._factsByDocument is not None:
48
56
  return self._factsByDocument
@@ -21,7 +21,7 @@ from arelle.utils.validate.Validation import Validation
21
21
  from ..DisclosureSystems import (
22
22
  DISCLOSURE_SYSTEM_INLINE_NT19
23
23
  )
24
- from ..PluginValidationDataExtension import PluginValidationDataExtension, XBRLI_IDENTIFIER_PATTERN
24
+ from ..PluginValidationDataExtension import PluginValidationDataExtension, XBRLI_IDENTIFIER_PATTERN, XBRLI_IDENTIFIER_SCHEMA
25
25
 
26
26
  if TYPE_CHECKING:
27
27
  from arelle.ModelXbrl import ModelXbrl
@@ -55,9 +55,9 @@ def rule_nl_kvk_3_1_1_1(
55
55
  NL-KVK.3.1.1.1: xbrli:identifier content to match KVK number format that must consist of 8 consecutive digits;
56
56
  first two digits must not be '00'.
57
57
  """
58
- entityIdentifierValues = {context.entityIdentifier for context in val.modelXbrl.contexts.values()}
58
+ entityIdentifierValues = pluginData.entityIdentifiersInDocument(val.modelXbrl)
59
59
  for entityId in entityIdentifierValues:
60
- if not XBRLI_IDENTIFIER_PATTERN.match(entityId):
60
+ if not XBRLI_IDENTIFIER_PATTERN.match(entityId[1]):
61
61
  yield Validation.error(
62
62
  codes='NL.NL-KVK-3.1.1.1',
63
63
  msg=_('xbrli:identifier content to match KVK number format that must consist of 8 consecutive digits.'
@@ -65,3 +65,30 @@ def rule_nl_kvk_3_1_1_1(
65
65
  modelObject = val.modelXbrl
66
66
  )
67
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.1
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=axlCP1O3UHpZdGsmltZ68hhEXBCJIwu4II33zjSSdIM,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
@@ -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=VFMcO8GJ8kIqhOV5McyEejaGJOR5JrmeF8GdFuS9IZw,174
381
- arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=OjnDyXXFg8z89W3tjkpw9ltGuEqKWthLrEVKyNSoa7o,2486
381
+ arelle/plugin/validate/NL/PluginValidationDataExtension.py,sha256=HSC78vmyI_W7MMaLXgZbKGd9IdwtirbCK0Q1H8p9j9k,2922
382
382
  arelle/plugin/validate/NL/ValidationPluginExtension.py,sha256=VuvveUzLJ-1oTB394MSD2c2JeoLyys8y2Z13COHEnPs,14909
383
383
  arelle/plugin/validate/NL/__init__.py,sha256=9NkkfosHnAzJhBa84KDAsoyU7vd4_DO3GYKTSvKuOk8,2554
384
384
  arelle/plugin/validate/NL/resources/config.xml,sha256=vu5pA-Iw6cgb5aep8LNLNPCkmG1QF6RTw3TCgEIest8,1102
@@ -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=K5rhbhBBGZYzu57tgMWbWu_YDlpEtTTsRGEH93SpLmU,2243
390
+ arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=JUlnK9-ib0y7bGG6apJ8i60TMEdoe6y_hL33s22rYw4,3164
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
@@ -707,7 +707,7 @@ arelle/utils/validate/ValidationPlugin.py,sha256=_WeRPXZUTCcSN3FLbFwiAe_2pAUTxZZ
707
707
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
708
708
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
709
709
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
710
- arelle_release-2.37.1.dist-info/licenses/LICENSE.md,sha256=rMbWwFLGzPgLoEjEu8LCmkpWDTqsvfOI-wzLSfeJsis,4107
710
+ arelle_release-2.37.2.dist-info/licenses/LICENSE.md,sha256=rMbWwFLGzPgLoEjEu8LCmkpWDTqsvfOI-wzLSfeJsis,4107
711
711
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
712
712
  tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
713
713
  tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
@@ -1555,8 +1555,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
1555
1555
  tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
1556
1556
  tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=XHABmejQt7RlZ0udh7v42f2Xb2STGk_fSaIaJ9i2xo0,878
1557
1557
  tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
1558
- arelle_release-2.37.1.dist-info/METADATA,sha256=JBCTazjtBOkJZslRdFO-0PYQ2X5w2ZPUcpFkG5aMwCk,9116
1559
- arelle_release-2.37.1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1560
- arelle_release-2.37.1.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1561
- arelle_release-2.37.1.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1562
- arelle_release-2.37.1.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,,