arelle-release 2.37.28__py3-none-any.whl → 2.37.30__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.

Files changed (62) hide show
  1. arelle/Locale.py +3 -1
  2. arelle/ModelTestcaseObject.py +9 -3
  3. arelle/Validate.py +29 -14
  4. arelle/WebCache.py +10 -5
  5. arelle/_version.py +2 -2
  6. arelle/plugin/validate/EDINET/DisclosureSystems.py +1 -0
  7. arelle/plugin/validate/EDINET/FormType.py +105 -0
  8. arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +111 -0
  9. arelle/plugin/validate/EDINET/ValidationPluginExtension.py +29 -0
  10. arelle/plugin/validate/EDINET/__init__.py +119 -0
  11. arelle/plugin/validate/EDINET/resources/config.xml +12 -0
  12. arelle/plugin/validate/EDINET/rules/__init__.py +0 -0
  13. arelle/plugin/validate/EDINET/rules/upload.py +321 -0
  14. arelle/plugin/validate/NL/rules/nl_kvk.py +52 -0
  15. arelle/utils/EntryPointDetection.py +6 -0
  16. {arelle_release-2.37.28.dist-info → arelle_release-2.37.30.dist-info}/METADATA +2 -1
  17. {arelle_release-2.37.28.dist-info → arelle_release-2.37.30.dist-info}/RECORD +62 -18
  18. tests/integration_tests/validation/conformance_suite_configs.py +2 -0
  19. tests/integration_tests/validation/conformance_suite_configurations/edinet.py +35 -0
  20. tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py +13 -3
  21. tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py +4 -0
  22. tests/integration_tests/validation/discover_tests.py +3 -3
  23. tests/integration_tests/validation/validation_util.py +9 -1
  24. tests/resources/conformance_suites/edinet/EC0121E/index.xml +23 -0
  25. tests/resources/conformance_suites/edinet/EC0121E/invalid01.zip +0 -0
  26. tests/resources/conformance_suites/edinet/EC0124E/index.xml +23 -0
  27. tests/resources/conformance_suites/edinet/EC0124E/invalid01.zip +0 -0
  28. tests/resources/conformance_suites/edinet/EC0129E/index.xml +23 -0
  29. tests/resources/conformance_suites/edinet/EC0129E/invalid01.zip +0 -0
  30. tests/resources/conformance_suites/edinet/EC0130E/index.xml +23 -0
  31. tests/resources/conformance_suites/edinet/EC0130E/invalid01.zip +0 -0
  32. tests/resources/conformance_suites/edinet/EC0132E/index.xml +23 -0
  33. tests/resources/conformance_suites/edinet/EC0132E/invalid01.zip +0 -0
  34. tests/resources/conformance_suites/edinet/EC0188E/index.xml +23 -0
  35. tests/resources/conformance_suites/edinet/EC0188E/invalid01.zip +0 -0
  36. tests/resources/conformance_suites/edinet/EC0198E/index.xml +23 -0
  37. tests/resources/conformance_suites/edinet/EC0198E/invalid01.zip +0 -0
  38. tests/resources/conformance_suites/edinet/README.md +4 -0
  39. tests/resources/conformance_suites/edinet/index.xml +11 -0
  40. tests/resources/conformance_suites/edinet/valid/index.xml +199 -0
  41. tests/resources/conformance_suites/edinet/valid/valid01.zip +0 -0
  42. tests/resources/conformance_suites/edinet/valid/valid02.zip +0 -0
  43. tests/resources/conformance_suites/edinet/valid/valid03.zip +0 -0
  44. tests/resources/conformance_suites/edinet/valid/valid04.zip +0 -0
  45. tests/resources/conformance_suites/edinet/valid/valid05.zip +0 -0
  46. tests/resources/conformance_suites/edinet/valid/valid06.zip +0 -0
  47. tests/resources/conformance_suites/edinet/valid/valid07.zip +0 -0
  48. tests/resources/conformance_suites/edinet/valid/valid08.zip +0 -0
  49. tests/resources/conformance_suites/edinet/valid/valid09.zip +0 -0
  50. tests/resources/conformance_suites/edinet/valid/valid10.zip +0 -0
  51. tests/resources/conformance_suites/edinet/valid/valid11.zip +0 -0
  52. tests/resources/conformance_suites/edinet/valid/valid12.zip +0 -0
  53. tests/resources/conformance_suites/edinet/valid/valid13.zip +0 -0
  54. tests/resources/conformance_suites/edinet/valid/valid14.zip +0 -0
  55. tests/resources/conformance_suites/edinet/valid/valid20.zip +0 -0
  56. tests/resources/conformance_suites/edinet/valid/valid21.zip +0 -0
  57. tests/resources/conformance_suites/edinet/valid/valid22.zip +0 -0
  58. tests/resources/conformance_suites_timing/edinet.json +27 -0
  59. {arelle_release-2.37.28.dist-info → arelle_release-2.37.30.dist-info}/WHEEL +0 -0
  60. {arelle_release-2.37.28.dist-info → arelle_release-2.37.30.dist-info}/entry_points.txt +0 -0
  61. {arelle_release-2.37.28.dist-info → arelle_release-2.37.30.dist-info}/licenses/LICENSE.md +0 -0
  62. {arelle_release-2.37.28.dist-info → arelle_release-2.37.30.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,321 @@
1
+ """
2
+ See COPYRIGHT.md for copyright information.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ import re
7
+ import zipfile
8
+ from collections import defaultdict
9
+ from collections.abc import Iterable
10
+ from pathlib import Path
11
+ from typing import Any, cast, IO
12
+
13
+ from arelle.ValidateXbrl import ValidateXbrl
14
+ from arelle.typing import TypeGetText
15
+ from arelle.utils.PluginHooks import ValidationHook
16
+ from arelle.utils.validate.Decorator import validation
17
+ from arelle.utils.validate.Validation import Validation
18
+ from ..DisclosureSystems import (DISCLOSURE_SYSTEM_EDINET)
19
+ from ..FormType import FormType, HTML_EXTENSIONS
20
+ from ..PluginValidationDataExtension import PluginValidationDataExtension
21
+
22
+ _: TypeGetText
23
+
24
+ FILE_COUNT_LIMITS = {
25
+ Path("AttachDoc"): 990,
26
+ Path("AuditDoc"): 990,
27
+ Path("PrivateDoc"): 9_990,
28
+ Path("PublicDoc"): 9_990,
29
+ Path("XBRL") / "AttachDoc": 990,
30
+ Path("XBRL") / "AuditDoc": 990,
31
+ Path("XBRL") / "PrivateDoc": 9_990,
32
+ Path("XBRL") / "PublicDoc": 9_990,
33
+ Path("XBRL"): 99_990,
34
+ }
35
+
36
+ FILENAME_STEM_PATTERN = re.compile(r'[a-zA-Z0-9_-]*')
37
+
38
+
39
+ @validation(
40
+ hook=ValidationHook.XBRL_FINALLY,
41
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
42
+ )
43
+ def rule_EC0121E(
44
+ pluginData: PluginValidationDataExtension,
45
+ val: ValidateXbrl,
46
+ *args: Any,
47
+ **kwargs: Any,
48
+ ) -> Iterable[Validation]:
49
+ """
50
+ EDINET.EC0121E: There is a directory or file that contains more than 31 characters
51
+ or uses characters other than those allowed (alphanumeric characters, '-' and '_').
52
+
53
+ Note: Sample instances from EDINET almost always violate this rule based on our
54
+ current interpretation. The exception being files placed outside the XBRL directory,
55
+ i.e. amendment documents. For now, we will only check amendment documents, directory
56
+ names, or other files in unexpected locations.
57
+ """
58
+ if not pluginData.shouldValidateUpload(val):
59
+ return
60
+ uploadContents = pluginData.getUploadContents(val.modelXbrl)
61
+ paths = set(uploadContents.directories | uploadContents.unknownPaths)
62
+ for amendmentPaths in uploadContents.amendmentPaths.values():
63
+ paths.update(amendmentPaths)
64
+ for path in paths:
65
+ if len(str(path.name)) > 31 or not FILENAME_STEM_PATTERN.match(path.stem):
66
+ yield Validation.error(
67
+ codes='EDINET.EC0121E',
68
+ msg=_("There is a directory or file in '%(directory)s' that contains more than 31 characters "
69
+ "or uses characters other than those allowed (alphanumeric characters, '-' and '_'). "
70
+ "Directory or file name: '%(basename)s'. "
71
+ "Please change the file name (or folder name) to within 31 characters and to usable "
72
+ "characters, and upload again."),
73
+ directory=str(path.parent),
74
+ basename=path.name,
75
+ file=str(path)
76
+ )
77
+
78
+
79
+ @validation(
80
+ hook=ValidationHook.XBRL_FINALLY,
81
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
82
+ )
83
+ def rule_EC0124E(
84
+ pluginData: PluginValidationDataExtension,
85
+ val: ValidateXbrl,
86
+ *args: Any,
87
+ **kwargs: Any,
88
+ ) -> Iterable[Validation]:
89
+ """
90
+ EDINET.EC0124E: There are no empty directories.
91
+ """
92
+ if not pluginData.shouldValidateUpload(val):
93
+ return
94
+ uploadFilepaths = pluginData.getUploadFilepaths(val.modelXbrl)
95
+ emptyDirectories = []
96
+ for path in uploadFilepaths:
97
+ if path.suffix:
98
+ continue
99
+ if not any(path in p.parents for p in uploadFilepaths):
100
+ emptyDirectories.append(str(path))
101
+ for emptyDirectory in emptyDirectories:
102
+ yield Validation.error(
103
+ codes='EDINET.EC0124E',
104
+ msg=_("There is no file directly under '%(emptyDirectory)s'. "
105
+ "No empty folders. "
106
+ "Please store the file in the appropriate folder or delete the folder and upload again."),
107
+ emptyDirectory=emptyDirectory,
108
+ )
109
+
110
+
111
+ @validation(
112
+ hook=ValidationHook.XBRL_FINALLY,
113
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
114
+ )
115
+ def rule_EC0129E(
116
+ pluginData: PluginValidationDataExtension,
117
+ val: ValidateXbrl,
118
+ *args: Any,
119
+ **kwargs: Any,
120
+ ) -> Iterable[Validation]:
121
+ """
122
+ EDINET.EC0129E: Limit the number of subfolders to 3 or less from the XBRL directory.
123
+ """
124
+ startingDirectory = 'XBRL'
125
+ if not pluginData.shouldValidateUpload(val):
126
+ return
127
+ uploadFilepaths = pluginData.getUploadFilepaths(val.modelXbrl)
128
+ for path in uploadFilepaths:
129
+ parents = [parent.name for parent in path.parents]
130
+ if startingDirectory in parents:
131
+ parents = parents[:parents.index(startingDirectory)]
132
+ else:
133
+ # TODO: Do we validate amendment subfolders too? These aren't placed beneath the XBRL directory.
134
+ continue
135
+ depth = len(parents)
136
+ if depth > 3:
137
+ yield Validation.error(
138
+ codes='EDINET.EC0129E',
139
+ msg=_("The subordinate directories of %(path)s go up to the level %(depth)s (directories: %(parents)s). "
140
+ "Please limit the number of subfolders to 3 or less and upload again."),
141
+ path=str(path),
142
+ depth=depth,
143
+ parents=', '.join(f"'{parent}'" for parent in reversed(parents)),
144
+ file=str(path)
145
+ )
146
+
147
+
148
+ @validation(
149
+ hook=ValidationHook.XBRL_FINALLY,
150
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
151
+ )
152
+ def rule_EC0130E(
153
+ pluginData: PluginValidationDataExtension,
154
+ val: ValidateXbrl,
155
+ *args: Any,
156
+ **kwargs: Any,
157
+ ) -> Iterable[Validation]:
158
+ """
159
+ EDINET.EC0130E: File extensions must match the file extensions allowed in Figure 2-1-3 and Figure 2-1-5.
160
+ """
161
+ if not pluginData.shouldValidateUpload(val):
162
+ return
163
+ uploadContents = pluginData.getUploadContents(val.modelXbrl)
164
+ checks = []
165
+ for formType, amendmentPaths in uploadContents.amendmentPaths.items():
166
+ for amendmentPath in amendmentPaths:
167
+ isSubdirectory = amendmentPath.parent.name != formType.value
168
+ checks.append((amendmentPath, True, formType, isSubdirectory))
169
+ for formType, formPaths in uploadContents.forms.items():
170
+ for amendmentPath in formPaths:
171
+ isSubdirectory = amendmentPath.parent.name != formType.value
172
+ checks.append((amendmentPath, False, formType, isSubdirectory))
173
+ for path, isAmendment, formType, isSubdirectory in checks:
174
+ ext = path.suffix
175
+ if len(ext) == 0:
176
+ continue
177
+ validExtensions = formType.getValidExtensions(isAmendment, isSubdirectory)
178
+ if validExtensions is None:
179
+ continue
180
+ if ext not in validExtensions:
181
+ yield Validation.error(
182
+ codes='EDINET.EC0130E',
183
+ msg=_("The file extension '%(ext)s' is not valid at '%(path)s'. "
184
+ "Valid extensions at this location are: %(validExtensions)s. "
185
+ "Please change the file extension to a configurable extension and upload it again. "
186
+ "For information on configurable file extensions, please refer to 'Table 2-1-3 Storable File Formats (1)' "
187
+ "in the 'Document File Specifications' and 'Table 2-1-5 Storable File Formats (2)' in the "
188
+ "'Document File Specifications'."),
189
+ ext=ext,
190
+ path=str(path),
191
+ validExtensions=', '.join(f"'{e}'" for e in validExtensions),
192
+ file=str(path)
193
+ )
194
+
195
+
196
+ @validation(
197
+ hook=ValidationHook.XBRL_FINALLY,
198
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
199
+ )
200
+ def rule_EC0132E(
201
+ pluginData: PluginValidationDataExtension,
202
+ val: ValidateXbrl,
203
+ *args: Any,
204
+ **kwargs: Any,
205
+ ) -> Iterable[Validation]:
206
+ """
207
+ EDINET.EC0132E: Store the manifest file directly under the relevant folder.
208
+ """
209
+ if not pluginData.shouldValidateUpload(val):
210
+ return
211
+ uploadContents = pluginData.getUploadContents(val.modelXbrl)
212
+ for formType in (FormType.AUDIT_DOC, FormType.PRIVATE_DOC, FormType.PUBLIC_DOC):
213
+ if formType not in uploadContents.forms:
214
+ continue
215
+ if formType.manifestPath in uploadContents.forms.get(formType, []):
216
+ continue
217
+ yield Validation.error(
218
+ codes='EDINET.EC0132E',
219
+ msg=_("'%(expectedManifestName)s' does not exist in '%(expectedManifestDirectory)s'. "
220
+ "Please store the manifest file (or cover file) directly under the relevant folder and upload it again. "),
221
+ expectedManifestName=formType.manifestPath.name,
222
+ expectedManifestDirectory=str(formType.manifestPath.parent),
223
+ )
224
+
225
+
226
+ @validation(
227
+ hook=ValidationHook.XBRL_FINALLY,
228
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
229
+ )
230
+ def rule_EC0183E(
231
+ pluginData: PluginValidationDataExtension,
232
+ val: ValidateXbrl,
233
+ *args: Any,
234
+ **kwargs: Any,
235
+ ) -> Iterable[Validation]:
236
+ """
237
+ EDINET.EC0183E: The compressed file size exceeds 55MB.
238
+ """
239
+ if not pluginData.shouldValidateUpload(val):
240
+ return
241
+ zipFile = cast(zipfile.ZipFile, val.modelXbrl.fileSource.fs)
242
+ file = cast(IO[Any], zipFile.fp)
243
+ file.seek(0, 2) # Move to the end of the file
244
+ size = file.tell()
245
+ if size > 55 * 1000 * 1000: # Interpretting MB as megabytes (1,000,000 bytes)
246
+ yield Validation.error(
247
+ codes='EDINET.EC0183E',
248
+ msg=_("The compressed file size exceeds 55MB. "
249
+ "Please compress the file to a size of 55MB or less and upload it again."),
250
+ )
251
+
252
+
253
+ @validation(
254
+ hook=ValidationHook.XBRL_FINALLY,
255
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
256
+ )
257
+ def rule_EC0188E(
258
+ pluginData: PluginValidationDataExtension,
259
+ val: ValidateXbrl,
260
+ *args: Any,
261
+ **kwargs: Any,
262
+ ) -> Iterable[Validation]:
263
+ """
264
+ EDINET.EC0188E: There is an HTML file directly under PublicDoc or PrivateDoc whose first 7 characters are not numbers.
265
+ """
266
+ if not pluginData.shouldValidateUpload(val):
267
+ return
268
+ pattern = re.compile(r'^\d{7}')
269
+ uploadFilepaths = pluginData.getUploadFilepaths(val.modelXbrl)
270
+ docFolders = frozenset({"PublicDoc", "PrivateDoc"})
271
+ for path in uploadFilepaths:
272
+ if path.suffix not in HTML_EXTENSIONS:
273
+ continue
274
+ if path.parent.name not in docFolders:
275
+ continue
276
+ if pattern.match(path.name) is None:
277
+ yield Validation.error(
278
+ codes='EDINET.EC0188E',
279
+ msg=_("There is an html file directly under PublicDoc or PrivateDoc whose first 7 characters are not numbers: '%(path)s'."
280
+ "Please change the first 7 characters of the file name of the file directly under the folder to numbers "
281
+ "and upload it again."),
282
+ path=str(path),
283
+ file=str(path),
284
+ )
285
+
286
+
287
+ @validation(
288
+ hook=ValidationHook.XBRL_FINALLY,
289
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
290
+ )
291
+ def rule_EC0198E(
292
+ pluginData: PluginValidationDataExtension,
293
+ val: ValidateXbrl,
294
+ *args: Any,
295
+ **kwargs: Any,
296
+ ) -> Iterable[Validation]:
297
+ """
298
+ EDINET.EC0198E: The number of files in the total submission and directories can not exceed the upper limit.
299
+ """
300
+ if not pluginData.shouldValidateUpload(val):
301
+ return
302
+ fileCounts: dict[Path, int] = defaultdict(int)
303
+ uploadFilepaths = pluginData.getUploadFilepaths(val.modelXbrl)
304
+ for path in uploadFilepaths:
305
+ if len(path.suffix) == 0:
306
+ continue
307
+ for directory in FILE_COUNT_LIMITS.keys():
308
+ if directory in path.parents:
309
+ fileCounts[directory] += 1
310
+ break
311
+ for directory, limit in FILE_COUNT_LIMITS.items():
312
+ actual = fileCounts[directory]
313
+ if actual > limit:
314
+ yield Validation.error(
315
+ codes='EDINET.EC0198E',
316
+ msg=_("The number of files in %(directory)s exceeds the upper limit (%(actual)s > %(limit)s). "
317
+ "Please reduce the number of files in the folder to below the maximum and try uploading again."),
318
+ directory=str(directory),
319
+ actual="{:,}".format(actual),
320
+ limit="{:,}".format(limit),
321
+ )
@@ -18,6 +18,7 @@ from arelle.ModelInstanceObject import ModelInlineFact
18
18
  from arelle.ModelObject import ModelObject
19
19
  from arelle.PrototypeDtsObject import PrototypeObject
20
20
  from arelle.ValidateDuplicateFacts import getDuplicateFactSets
21
+ from arelle.XbrlConst import standardLabel
21
22
  from arelle.XmlValidateConst import VALID
22
23
 
23
24
  from arelle import XbrlConst, XmlUtil, ModelDocument
@@ -1896,6 +1897,57 @@ def rule_nl_kvk_RTS_Annex_IV_Par_4_2(
1896
1897
  )
1897
1898
 
1898
1899
 
1900
+ @validation(
1901
+ hook=ValidationHook.XBRL_FINALLY,
1902
+ disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
1903
+ )
1904
+ def rule_nl_kvk_RTS_Annex_IV_Par_4_3(
1905
+ pluginData: PluginValidationDataExtension,
1906
+ val: ValidateXbrl,
1907
+ *args: Any,
1908
+ **kwargs: Any,
1909
+ ) -> Iterable[Validation]:
1910
+ """
1911
+ NL-KVK.RTS_Annex_IV_Par_4_3: Extension elements must be provided with a standard label in the language corresponding to the language of the annual report.
1912
+ """
1913
+ extensionData = pluginData.getExtensionData(val.modelXbrl)
1914
+ extensionConcepts = extensionData.extensionConcepts
1915
+ labelsRelationshipSet = val.modelXbrl.relationshipSet(XbrlConst.conceptLabel)
1916
+ missingLabels = []
1917
+ missingReportingLabels = []
1918
+ noStandardLabels = []
1919
+ for concept in extensionConcepts:
1920
+ if not concept.label(standardLabel,lang=pluginData.getReportXmlLang(val.modelXbrl),fallbackToQname=False):
1921
+ labelRels = labelsRelationshipSet.fromModelObject(concept)
1922
+ if len(labelRels) == 0:
1923
+ missingLabels.append(concept)
1924
+ for labelRel in labelRels:
1925
+ label = cast(ModelResource, labelRel.toModelObject)
1926
+ if label.role == XbrlConst.standardLabel:
1927
+ missingReportingLabels.append(concept)
1928
+ else:
1929
+ noStandardLabels.append(label)
1930
+ message = 'Extension element is missing a standard label or is missing a label in the language of the report. Review to ensure a standard label is defined with at least the language of the report.'
1931
+ if len(missingLabels) > 0:
1932
+ yield Validation.warning(
1933
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_4_3.extensionConceptNoLabel',
1934
+ msg=_(message),
1935
+ modelObject=missingLabels,
1936
+ )
1937
+ if len(missingReportingLabels) > 0:
1938
+ yield Validation.warning(
1939
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_4_3.missingLabelForRoleInReportLanguage',
1940
+ msg=_(message),
1941
+ modelObject=missingReportingLabels,
1942
+ )
1943
+ if len(noStandardLabels) > 0:
1944
+ yield Validation.warning(
1945
+ codes='NL.NL-KVK.RTS_Annex_IV_Par_4_3.extensionConceptNoStandardLabel',
1946
+ msg=_(message),
1947
+ modelObject=noStandardLabels,
1948
+ )
1949
+
1950
+
1899
1951
  @validation(
1900
1952
  hook=ValidationHook.XBRL_FINALLY,
1901
1953
  disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
@@ -9,6 +9,12 @@ from arelle import (
9
9
  def filesourceEntrypointFiles(filesource, entrypointFiles=None, inlineOnly=False):
10
10
  if entrypointFiles is None:
11
11
  entrypointFiles = []
12
+ for pluginXbrlMethod in PluginManager.pluginClassMethods("FileSource.EntrypointFiles"):
13
+ resultEntrypointFiles = pluginXbrlMethod(filesource, inlineOnly)
14
+ if resultEntrypointFiles is not None:
15
+ del entrypointFiles[:] # clear list
16
+ entrypointFiles.extend(resultEntrypointFiles)
17
+ return entrypointFiles
12
18
  if filesource.isArchive:
13
19
  if filesource.isTaxonomyPackage: # if archive is also a taxonomy package, activate mappings
14
20
  filesource.loadTaxonomyPackageMappings()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.28
3
+ Version: 2.37.30
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License: Apache-2.0
@@ -41,6 +41,7 @@ Requires-Dist: pillow<12,>=10
41
41
  Requires-Dist: pyparsing==3.*
42
42
  Requires-Dist: python-dateutil==2.*
43
43
  Requires-Dist: regex
44
+ Requires-Dist: truststore==0.*; python_version > "3.9"
44
45
  Requires-Dist: typing-extensions==4.*
45
46
  Provides-Extra: crypto
46
47
  Requires-Dist: pycryptodome==3.*; extra == "crypto"
@@ -33,7 +33,7 @@ arelle/HtmlUtil.py,sha256=eXa6yF5xBCOODCuBMY7g8ePZHPOSu6X0gDsW3z9N50A,761
33
33
  arelle/InstanceAspectsEvaluator.py,sha256=TePNIs_m0vCIbN5N4PXEyJm529T2WBFi2zmv-72r3Zk,1805
34
34
  arelle/LeiUtil.py,sha256=tSPrbQrXEeH5pXgGA_6MAdgMZp20NaW5izJglIXyEQk,5095
35
35
  arelle/LocalViewer.py,sha256=WVrfek_bLeFFxgWITi1EQb6xCQN8O9Ks-ZL16vRncSk,3080
36
- arelle/Locale.py,sha256=aKC1Uaen_dbPGb92kZa_yUoo7On_QtWlvr5H_F9BNXg,33008
36
+ arelle/Locale.py,sha256=07IDxv8nIfvhyRRllFdEAKRI3yo1D2v781cTrjb_RoQ,33193
37
37
  arelle/ModelDocument.py,sha256=Sq6umEdn-aNHjxIpEsXTT7A4V25nGY0JiylSnhr9zSI,130749
38
38
  arelle/ModelDtsObject.py,sha256=nvHQs4BDmPxY6mqLiBuqIGRJXyA1EqOEGB2f3S6A6w4,88656
39
39
  arelle/ModelFormulaObject.py,sha256=-eb0lBYciEeAvvGduIs3AHGNGrxge9_0g1cVT6UUgvc,122560
@@ -45,7 +45,7 @@ arelle/ModelRelationshipSet.py,sha256=jlLqEnd0KrLjpRUhDzFLgMPsRmyOwfgl1w13yW3flL
45
45
  arelle/ModelRenderingObject.py,sha256=iPhSUlSBG-FLzAfIdUW06UZDgTCaZJ4K2mxvAtSe2BU,76021
46
46
  arelle/ModelRssItem.py,sha256=GzFkmluOlFsVcrxn9HAyOAcuE7rcHUOGkp4Q6F2IlT8,7713
47
47
  arelle/ModelRssObject.py,sha256=xjuwyJ8pU5sQmNPJFQakDEEnujZg2bMCTaj3zVezHL8,992
48
- arelle/ModelTestcaseObject.py,sha256=sOyIktwv23BWOGyokzcwlJALp7UENsMAKKJmVfAZh6c,22163
48
+ arelle/ModelTestcaseObject.py,sha256=dnCxatJcFPlu5BgTuToqgrQowYNx4YtA5KrmW4vHko4,22432
49
49
  arelle/ModelValue.py,sha256=t0mVl3-EcE4MaXdRL9F94XaBwBfu1xG2DmFuHOczrEk,39447
50
50
  arelle/ModelVersObject.py,sha256=cPD1IzhkCfuV1eMgVFWes88DH_6WkUj5kj7sgGF2M0I,26062
51
51
  arelle/ModelVersReport.py,sha256=bXEA9K3qkH57aABn5l-m3CTY0FAcF1yX6O4fo-URjl8,73326
@@ -65,7 +65,7 @@ arelle/UITkTable.py,sha256=N83cXi5c0lLZLsDbwSKcPrlYoUoGsNavGN5YRx6d9XY,39810
65
65
  arelle/UiUtil.py,sha256=3G0xPclZI8xW_XQDbiFrmylB7Nd5muqi5n2x2oMkMZU,34218
66
66
  arelle/Updater.py,sha256=IZ8cq44Rq88WbQcB1VOpMA6bxdfZxfYQ8rgu9Ehpbes,7448
67
67
  arelle/UrlUtil.py,sha256=HrxZSG59EUMGMMGmWPuZkPi5-0BGqY3jAMkp7V4IdZo,32400
68
- arelle/Validate.py,sha256=XBrKQHsSC7Qz5Fp-M3gODfxwW8a-PWyBzZkCekYrMZM,56920
68
+ arelle/Validate.py,sha256=SxdFqjqNy3Dp2dFZV2YXn61uygZsf2UtSE5gmdqiZY8,58024
69
69
  arelle/ValidateDuplicateFacts.py,sha256=L556J1Dhz4ZmsMlRNoDCMpFgDQYiryd9vuBYDvE0Aq8,21769
70
70
  arelle/ValidateFilingText.py,sha256=xnXc0xgdNiHQk0eyP7VSSpvw7qr-pRFRwqqoUb569is,54051
71
71
  arelle/ValidateInfoset.py,sha256=Rz_XBi5Ha43KpxXYhjLolURcWVx5qmqyjLxw48Yt9Dg,20396
@@ -113,7 +113,7 @@ arelle/ViewWinTupleGrid.py,sha256=Li21jmMSZP3xIkpg8eY8Sq7KTIuAgM57wHu7i7Nu3P0,89
113
113
  arelle/ViewWinVersReport.py,sha256=aYfsOgynVZpMzl6f2EzQCBLzdihYGycwb5SiTghkgMQ,9344
114
114
  arelle/ViewWinXml.py,sha256=4ZGKtjaoCwU9etKYm9ZAS7jSmUxba1rqNEdv0OIyjTY,1250
115
115
  arelle/WatchRss.py,sha256=5Ih4igH2MM4hpOuAXy9eO0QAyZ7jZR3S5bPzo2sdFpw,14097
116
- arelle/WebCache.py,sha256=B62IxIHLX4hcDr_0MJGfmzUXau2ONqiMk6vLVLxAIhA,45057
116
+ arelle/WebCache.py,sha256=HlF4vfjxO0bSFHqMPfjnmkrzc7RK9XT714a7g3XFTDY,45192
117
117
  arelle/XbrlConst.py,sha256=gKYJECjuOEn0z0RRAaHpVCqh2NnBMfPLGxoLohYGGH4,57657
118
118
  arelle/XbrlUtil.py,sha256=s2Vmrh-sZI5TeuqsziKignOc3ao-uUgnCNoelP4dDj0,9212
119
119
  arelle/XhtmlValidate.py,sha256=0gtm7N-kXK0RB5o3c1AQXjfFuRp1w2fKZZAeyruNANw,5727
@@ -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=uDlB7loGxG6RLMKayI5k_fSkcDz14q8EmlS0IYg5Wns,515
126
+ arelle/_version.py,sha256=CnZbug4_DSgIxLaZeF6X5a9gF_h2H5q2aoDn5RQUfUA,515
127
127
  arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
128
128
  arelle/api/Session.py,sha256=5KPjCIPiNuanKrz1MdFdKIx8Bg40Pk9sf2cL9OU4x-E,7770
129
129
  arelle/archive/CustomLogger.py,sha256=v_JXOCQLDZcfaFWzxC9FRcEf9tQi4rCI4Sx7jCuAVQI,1231
@@ -392,6 +392,14 @@ arelle/plugin/validate/DBA/rules/tm.py,sha256=ui9oKBqlAForwkQ9kk9KBiUogTJE5pv1Rb
392
392
  arelle/plugin/validate/DBA/rules/tr.py,sha256=zdi3kQ82whmweVWRLbMvcNpM8sqtUliPsGfd81rgZws,14671
393
393
  arelle/plugin/validate/EBA/__init__.py,sha256=1kW-04W32sStSAL8wvW1ZpXnjlFv6KLbfE4aifYUB2A,46000
394
394
  arelle/plugin/validate/EBA/config.xml,sha256=37wMVUAObK-XEqakqD8zPNog20emYt4a_yfL1AKubF8,2022
395
+ arelle/plugin/validate/EDINET/DisclosureSystems.py,sha256=3rKG42Eg-17Xx_KXU_V5yHW6I3LTwQunvf4a44C9k_4,36
396
+ arelle/plugin/validate/EDINET/FormType.py,sha256=pJfKjdjqFcRLFgH6xbEixvpwatZBBHI8uI3xjjhaPI0,3175
397
+ arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=8ylP-bY6Y0PJ1AxQ35CZmXYzAQDNu1K4rBSVupq-wZ8,4088
398
+ arelle/plugin/validate/EDINET/ValidationPluginExtension.py,sha256=HIGOpBOyuVs5SEh573M3IzdouRdEuNIBkdumieZi8r0,959
399
+ arelle/plugin/validate/EDINET/__init__.py,sha256=1kJUaV2AbNZdakKSa_v3opdyCRKO3gva62RpHVOrpIE,4398
400
+ arelle/plugin/validate/EDINET/resources/config.xml,sha256=7uxn_HZT3USgbs2GQkew-dCUzlEgUGs62PiqEfljPgk,514
401
+ arelle/plugin/validate/EDINET/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
402
+ arelle/plugin/validate/EDINET/rules/upload.py,sha256=cB3EZbzcU5vK80IQUc-MNBvKcnCf8-f72C0JqLubSCE,12395
395
403
  arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
396
404
  arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
397
405
  arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
@@ -419,7 +427,7 @@ arelle/plugin/validate/NL/rules/br_kvk.py,sha256=0SwKieWzTDm3YMsXPS6zTdgbk7_Z9Cz
419
427
  arelle/plugin/validate/NL/rules/fg_nl.py,sha256=4Puq5wAjtK_iNd4wisH_R0Z_EKJ7MT2OCai5g4t1MPE,10714
420
428
  arelle/plugin/validate/NL/rules/fr_kvk.py,sha256=kYqXt45S6eM32Yg9ii7pUhOMfJaHurgYqQ73FyQALs8,8171
421
429
  arelle/plugin/validate/NL/rules/fr_nl.py,sha256=-M1WtXp06khhtkfOVPCa-b8UbC281gk4YfDhvtAVlnI,31424
422
- arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=D98uSeScccRRGK0F064yKxOgLJHTkSOSxYUa9k1rJkc,86120
430
+ arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=mMPMeGhhlYEhC9LMHVaFfHzIpqJObl9ukU8cuuitaRU,88446
423
431
  arelle/plugin/validate/ROS/DisclosureSystems.py,sha256=rJ81mwQDYTi6JecFZ_zhqjjz3VNQRgjHNSh0wcQWAQE,18
424
432
  arelle/plugin/validate/ROS/PluginValidationDataExtension.py,sha256=IV7ILhNvgKwQXqbpSA6HRNt9kEnejCyMADI3wyyIgk0,4036
425
433
  arelle/plugin/validate/ROS/ValidationPluginExtension.py,sha256=FBhEp8t396vGdvCbMEimfcxmGiGnhXMen-yVLWnkFaI,758
@@ -729,7 +737,7 @@ arelle/resources/libs/Tktable2.11/win-x86_64/tkTable.tcl,sha256=JrSZRngZFHtw8Svp
729
737
  arelle/scripts-macOS/startWebServer.command,sha256=KXLSwAwchDZBlL-k9PYXdf39RNBtte4vV076_kIz2Ow,91
730
738
  arelle/scripts-unix/startWebServer.sh,sha256=_0puRzaGkdMZoFn3R7hDti9a3ryN6kTZAXwLweeZU1s,42
731
739
  arelle/scripts-windows/startWebServer.bat,sha256=qmnF1yrjNo__bi4QodONWlN0qHShVLTKptJQYyZtgcY,122
732
- arelle/utils/EntryPointDetection.py,sha256=S85pXfCdrxLiX_L5rYVmlGwTNhwqlIE0L7c2g7UUeDc,4369
740
+ arelle/utils/EntryPointDetection.py,sha256=4RzercL0xE4PJrwoeUYq3S-E7PMSD-IspyS9bwK2RYM,4722
733
741
  arelle/utils/PluginData.py,sha256=GUnuZaApm1J4Xm9ZA1U2M1aask-AaNGviLtc0fgXbFg,265
734
742
  arelle/utils/PluginHooks.py,sha256=CeVxti23VjERQl4xWFucDVTW63TCG2PUdnxpjd3x_Ms,31170
735
743
  arelle/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -742,7 +750,7 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
742
750
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
743
751
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
744
752
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
745
- arelle_release-2.37.28.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
753
+ arelle_release-2.37.30.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
746
754
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
747
755
  tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
748
756
  tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
@@ -771,16 +779,17 @@ tests/integration_tests/ui_tests/resources/workiva.zip,sha256=QtZzi1VcKkHhVa8J-I
771
779
  tests/integration_tests/validation/README.md,sha256=O6WYcMEk0x7ee7A9JnESHb6-UYceg_vrL4BhDIEDMI0,3008
772
780
  tests/integration_tests/validation/assets.py,sha256=Ag9qPYrodcC-Ly6aygqapV0vG2Cbn_Tigg4v4F9xX4U,8295
773
781
  tests/integration_tests/validation/conformance_suite_config.py,sha256=LgPO_8H_esM9kQS2o4jKd8CTNi0hiHugZ1hZn7whshI,10383
774
- tests/integration_tests/validation/conformance_suite_configs.py,sha256=vdKMEKQ0bgh1fhajS4B8Fgu59pgDWbJZ7fuaVfnbsLs,7500
782
+ tests/integration_tests/validation/conformance_suite_configs.py,sha256=jM-EqvLDLxq1xIv3UxQonXsSXbBR-AGVd0yAW_XeJUI,7616
775
783
  tests/integration_tests/validation/conftest.py,sha256=rVfmNX9y0JZ1VfoEepeYyIz-ZxzEZ1IJlmbcQSuxgUo,816
776
- tests/integration_tests/validation/discover_tests.py,sha256=dSzciVoGJNjw1NkPnAylncDy4_T-dBoZKR5YCmaZTgA,4653
784
+ tests/integration_tests/validation/discover_tests.py,sha256=qaSCsys6cC9Xu6ep9M0db3UCTR7fKCPLOv8xEvvcE3I,4653
777
785
  tests/integration_tests/validation/download_assets.py,sha256=muHklbrvYEbxqqAM8mU-8FpeemP0BLTWxD11xTYiCMc,7850
778
786
  tests/integration_tests/validation/run_conformance_suites.py,sha256=yBnPdtIiNKibjsrJxrvVA7NyAEWcoDg-sSjp1nFGQ2g,8496
779
787
  tests/integration_tests/validation/test_conformance_suites.py,sha256=VdwY0QtV6g00M9bv1XNs4qBTwxPxCh5-z4XoDdEhgeM,711
780
- tests/integration_tests/validation/validation_util.py,sha256=_f0gd5BTts44Z9aEKi9kNPUC52sYCKgHoW557MsGw-k,21941
788
+ tests/integration_tests/validation/validation_util.py,sha256=5rIVfEemipJcnDpSqf5479Fa13I3ICHvPFq1pYROWCU,22136
781
789
  tests/integration_tests/validation/conformance_suite_configurations/cipc_current.py,sha256=oLXe3xIsEZLz3cv1cDdMQIuS_NgyI9Uimc9hy0NMWqg,642
782
790
  tests/integration_tests/validation/conformance_suite_configurations/dba_current.py,sha256=j-7jCpzbGXbOzG8HGEyS0ciCYSPZzZLV44VQGhP3Hmc,875
783
791
  tests/integration_tests/validation/conformance_suite_configurations/dba_multi_current.py,sha256=ICkP18Wu7aTDfszfYlrfVnBj9oe7ppXR-8wxQqCPqW0,837
792
+ tests/integration_tests/validation/conformance_suite_configurations/edinet.py,sha256=PMyBjtE-t24EysXrWvqYqk1Mqx-LeWRdwYrEUPeRVfM,1638
784
793
  tests/integration_tests/validation/conformance_suite_configurations/efm_current.py,sha256=zbZ9c-LoZJDRp0Lobl_oH3xRw4g-2u6oQqU0-oo5NOE,1322
785
794
  tests/integration_tests/validation/conformance_suite_configurations/efm_reg_dqc.py,sha256=HiT8OcRAOVKLsl95Y91L66FeOsIMMMAQCs-DLMG-Lb0,739
786
795
  tests/integration_tests/validation/conformance_suite_configurations/efm_reg_pragmatic.py,sha256=U6dew0sIibjZe4r6na912qyIVAjxljh2HDix-8AwvhM,727
@@ -797,7 +806,7 @@ tests/integration_tests/validation/conformance_suite_configurations/kvk_nt16.py,
797
806
  tests/integration_tests/validation/conformance_suite_configurations/kvk_nt17.py,sha256=lmEZonthFm0YKFmp1dwXtdJ2T7txUeSpL4mbAo8fl4Y,1292
798
807
  tests/integration_tests/validation/conformance_suite_configurations/kvk_nt18.py,sha256=EG2RQVkvFENhzUF3fl3QvDnH7ZPYS1n1Fo8bhfmSczM,1205
799
808
  tests/integration_tests/validation/conformance_suite_configurations/kvk_nt19.py,sha256=FAzf9RhRmn_8yowpplJho2zEspX9FxJiVq8SjZT3Dsc,1199
800
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=oFDnhrLXsRRGJjpc0wGZMewMwVYo_udKYcLs8vlN-nA,9350
809
+ tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py,sha256=0z-dl7rVT4juYDMYvLyYV5idPxzpakDBECZa3ly6z9E,9487
801
810
  tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024_gaap_other.py,sha256=vtzYSd0-vF9g6eHfrIUpMBz7D0HdR_gi8O0429lOaww,31667
802
811
  tests/integration_tests/validation/conformance_suite_configurations/nl_nt16.py,sha256=O_LFVBZPkjxmbrU7_C7VTLtrdoCUx2bYXOXw6_MlRtQ,846
803
812
  tests/integration_tests/validation/conformance_suite_configurations/nl_nt17.py,sha256=aTN3Ez6lPsZsuypHZP84DneOtYxUZSjUiGypHy6ofHQ,846
@@ -812,7 +821,7 @@ tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensi
812
821
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensible_enumerations_2_0.py,sha256=DZTlD6A3ieT-lBUlrn78a0V5j1LvCKRm_Lm7jSvphPY,683
813
822
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0.py,sha256=H456ozSCnVoVHXYHd4g2169JHkI2yKhMgOOpJyanLZE,592
814
823
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_assertion_severity_2_0.py,sha256=W7FT2ac5u8PyRubt_bcDl37wucv0Pnu9KqQ2jxEpGFM,668
815
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py,sha256=TPQ82Ei_zJv5b3ZxxdifDRRzLMBfNqqeFcwr66-oLd8,811
824
+ tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py,sha256=RuqeADKn_6E1AT5vPCXxnSZoD_3diVhQrroaLVa2Op8,1024
816
825
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_ixbrl_1_1.py,sha256=Upsc9Nx0eHJQlVL9p77GamTCUpIqjexnRShe9F0b9NM,1366
817
826
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_link_role_registry_1_0.py,sha256=NQfri9MXCDSvNy7kahf4iXZaBUPey9-FYKlchg-Uw4I,633
818
827
  tests/integration_tests/validation/conformance_suite_configurations/xbrl_oim_1_0.py,sha256=s5tcH5fgzNwLQR1iWxCjuyij4Rxjq8XrmGDIptAbfGE,906
@@ -1142,6 +1151,40 @@ tests/resources/conformance_suites/dba_multi/tr/tr17-invalid.xhtml,sha256=Kp3MYJ
1142
1151
  tests/resources/conformance_suites/dba_multi/tr/tr17-testcase.xml,sha256=zzu0az0IfE8O21OMxDpGHzRbPbRyt5e7m8XTr4GdPgs,894
1143
1152
  tests/resources/conformance_suites/dba_multi/tr/valid-ixbrl-001.xhtml,sha256=weldGT9zOEsSYhbVmpz-MR66Bd4jMMqsKoWTM6GLXag,1652016
1144
1153
  tests/resources/conformance_suites/dba_multi/tr/valid-testcase.xml,sha256=KmH_iJFEFdCATYn9QWevbgCOTaGDR9r80NhdsYdGKsA,895
1154
+ tests/resources/conformance_suites/edinet/README.md,sha256=uO7RiidAUp8xEkP7obmggpxhfgdsnACoKplgYqqPON0,333
1155
+ tests/resources/conformance_suites/edinet/index.xml,sha256=EhFVwHdigCHj3xh1xNyqD3orUqts1d-MtRI4_sJl5kQ,404
1156
+ tests/resources/conformance_suites/edinet/EC0121E/index.xml,sha256=1XFjoMoMAfNVISDy_4EvQC0qM6bZnQYMxtA8qhgdC4A,1064
1157
+ tests/resources/conformance_suites/edinet/EC0121E/invalid01.zip,sha256=sy31KH6h8C7L3wBqXsiQrT6LUyjZn20Bxsx4FxC3SBg,12734
1158
+ tests/resources/conformance_suites/edinet/EC0124E/index.xml,sha256=owK-jho_Kg4KcmO-OgJZ_HGiv_6TBwD6bHBHuir7Qa4,896
1159
+ tests/resources/conformance_suites/edinet/EC0124E/invalid01.zip,sha256=NS0wqn_z58duwqtzbwZ3wFFEpMdbnndBBqbodrF9RCQ,10480
1160
+ tests/resources/conformance_suites/edinet/EC0129E/index.xml,sha256=mvwTD8Mmvn_VIFd51dmvjtQNRNgJAUKENkD6LHzM1xE,964
1161
+ tests/resources/conformance_suites/edinet/EC0129E/invalid01.zip,sha256=2_m13sVjTCSt6_wBbCMEglJrFcZUC_fidD4n4gV05Ho,10065
1162
+ tests/resources/conformance_suites/edinet/EC0130E/index.xml,sha256=uDFH-TxfHyXC188S-4qnSd4RISHW6Xn1E6oA8Pt3mp0,1004
1163
+ tests/resources/conformance_suites/edinet/EC0130E/invalid01.zip,sha256=kJF7XARkzuB98MFO5P3NCmpW3WHr-6ZgxDPsh5UNCzU,15814
1164
+ tests/resources/conformance_suites/edinet/EC0132E/index.xml,sha256=W9j0k82U0PxltmcLtfSL5peiEEpCOmZ3RIskFS0dLNM,926
1165
+ tests/resources/conformance_suites/edinet/EC0132E/invalid01.zip,sha256=RAWTW6HHocM3o2S35JCa88S8CCWpPNXYD3IPtiPuYw8,9822
1166
+ tests/resources/conformance_suites/edinet/EC0188E/index.xml,sha256=PHnUX2Aio06MGQELWyI7lWKvVdLzkyzOhuLJ3ejlmHQ,1004
1167
+ tests/resources/conformance_suites/edinet/EC0188E/invalid01.zip,sha256=lngtZRs8AFww6JoTBKM0naVoaJJHePTcPfSxA0vSsQU,10503
1168
+ tests/resources/conformance_suites/edinet/EC0198E/index.xml,sha256=VET9GHoyRnPDPccGZtgSzHNdFNnaLUFPBn5WCqa1Hyc,977
1169
+ tests/resources/conformance_suites/edinet/EC0198E/invalid01.zip,sha256=gI7yCbJjsu2s7UOIwvuV7Q0VvyF3xsIwxg2es3TuZtE,225505
1170
+ tests/resources/conformance_suites/edinet/valid/index.xml,sha256=uXI41f0itmvtn2Ndxw_xypISB5oFt5LSJb9lptbAt98,7731
1171
+ tests/resources/conformance_suites/edinet/valid/valid01.zip,sha256=68IK_fwBiuI8QTik2mCc3pUlGCI8ZkL6EGthJz1TFPM,153228
1172
+ tests/resources/conformance_suites/edinet/valid/valid02.zip,sha256=CFyA86qW3sHCZyhjWnww9xHUa0kxmgFTHV83h8Efafs,167649
1173
+ tests/resources/conformance_suites/edinet/valid/valid03.zip,sha256=AOsXvumMft8B4P39kAt_HT0NdFu5YobbTOFIXRFPiAY,178509
1174
+ tests/resources/conformance_suites/edinet/valid/valid04.zip,sha256=JQKKungAUpVVgd1DVDhmdxGbECHzdMs_XSDDwDGbV_U,102936
1175
+ tests/resources/conformance_suites/edinet/valid/valid05.zip,sha256=y9T2ye7zX-j7MOoKDzFJMoxfqcsaU4BCVS-ncOoj8Tg,63474
1176
+ tests/resources/conformance_suites/edinet/valid/valid06.zip,sha256=hEsRLR1dHK4jPg3A1nnhOLGbQ1b_ScPhniDOgmAP7NM,102981
1177
+ tests/resources/conformance_suites/edinet/valid/valid07.zip,sha256=aK5e9k3eODwGamScHWS-fQq5e7P3s_5rMjDhH-DNY8A,12549
1178
+ tests/resources/conformance_suites/edinet/valid/valid08.zip,sha256=ey2JVhtQstRs0IDkzwwHRC8bJy3q2tFj9jWF3xYLDmQ,17199
1179
+ tests/resources/conformance_suites/edinet/valid/valid09.zip,sha256=AbqS-X0dRlJo2cJyFxY6HiNn5Xb9q2Gs6nTZH-KM2Lg,9842
1180
+ tests/resources/conformance_suites/edinet/valid/valid10.zip,sha256=MZFJqBp7HXG4nFRcHzsbjd_e-QBYpSezyw-DJDceuIM,126061
1181
+ tests/resources/conformance_suites/edinet/valid/valid11.zip,sha256=DD8l-aHG1ittL68v2DgHm4I8qAmqcPAh_A96wKScO4Q,124829
1182
+ tests/resources/conformance_suites/edinet/valid/valid12.zip,sha256=9U2vsWTLaufk1qv9wEmnKx8lP578feGYV9lwXjcuHcY,45710
1183
+ tests/resources/conformance_suites/edinet/valid/valid13.zip,sha256=Ml6fY1BlETnxaqr4YiBDJd_WGNEnn7lzmexqnlrU5o4,10886
1184
+ tests/resources/conformance_suites/edinet/valid/valid14.zip,sha256=CYnnNxyyxr05rjeGDSkXs480M-BXpQD-Y2ZGM-7He68,13386
1185
+ tests/resources/conformance_suites/edinet/valid/valid20.zip,sha256=xaKwHMCvACzgZqp88Mv-2KReHMiqUMp7twqar-sC_qQ,174640
1186
+ tests/resources/conformance_suites/edinet/valid/valid21.zip,sha256=gtQZSL1eUxqSwkgGIXqlidbElptX2pA31t5qp9JDI20,129608
1187
+ tests/resources/conformance_suites/edinet/valid/valid22.zip,sha256=MHOyA6eE6deXvW21EK_8ht4rUAEcAbv2mmsc_RvvGgg,129716
1145
1188
  tests/resources/conformance_suites/nl_nt16/index.xml,sha256=FFSSMokLcdhMroNeSSbm28pi-RKRURdVcKhqHdj44f0,2010
1146
1189
  tests/resources/conformance_suites/nl_nt16/mock-taxonomy.xsd,sha256=1uRNZClgrtNvL1Gx27MEAntSzeszICUhVXO01jqoavQ,1377
1147
1190
  tests/resources/conformance_suites/nl_nt16/br_kvk/2-04-invalid-period.xbrl,sha256=WeUb_M6vNrLG9jjbNTDv7qiPnAYyfYXlZvDbVlHh11g,4127
@@ -1551,6 +1594,7 @@ tests/resources/conformance_suites_expected/efm_current.csv,sha256=9YoKy-kYo_VAy
1551
1594
  tests/resources/conformance_suites_expected/efm_reg_dqc.csv,sha256=0CEItNnnEE_s8uGHA8CidxEVyvOiTCv5nAWpc4dCUmE,9968847
1552
1595
  tests/resources/conformance_suites_expected/efm_reg_pragmatic.csv,sha256=J_sDOjJGDjFnseMU7QIBttvvOjjnPp_WdmrCkjvCu4Y,196
1553
1596
  tests/resources/conformance_suites_timing/dba_current.json,sha256=e5jmGVDcPbaXDbHNK3RQz-_gsozU1dL_J0gcNDzHnjg,1467
1597
+ tests/resources/conformance_suites_timing/edinet.json,sha256=oBW-DfzxdzYK8gxw1hptPzKNLSLyOXcFdr-g0NR-5c8,1279
1554
1598
  tests/resources/conformance_suites_timing/efm_current.json,sha256=iqqcBoDJVs2F_xW03gCirDyaLZoS9x482KAQgMhCvvg,1096604
1555
1599
  tests/resources/conformance_suites_timing/efm_reg_dqc.json,sha256=4ry0JC8XA-8Bua2E75edknjxcL42Qj6nMZxvjCdW2uc,1708653
1556
1600
  tests/resources/conformance_suites_timing/esef_ixbrl_2021.json,sha256=3UBEba0PStPkAHgYZc6_WAH3_pBTGOpDNRQ0X1hxH74,26836
@@ -1596,8 +1640,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
1596
1640
  tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
1597
1641
  tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=H0ndmQ0sFO5WVMzAxPCH1WciRhCg_HgKUtQCg0xlmtg,1238
1598
1642
  tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
1599
- arelle_release-2.37.28.dist-info/METADATA,sha256=o_8uoE9BcBj-NHm4HoyFGxWuzjOaVWKFPJWYvtBtUDo,9134
1600
- arelle_release-2.37.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1601
- arelle_release-2.37.28.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1602
- arelle_release-2.37.28.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1603
- arelle_release-2.37.28.dist-info/RECORD,,
1643
+ arelle_release-2.37.30.dist-info/METADATA,sha256=3yAS489MpYI3fh5jpyadZ3iRtu01h-I9exvjlpnie6U,9189
1644
+ arelle_release-2.37.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1645
+ arelle_release-2.37.30.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
1646
+ arelle_release-2.37.30.dist-info/top_level.txt,sha256=ZYmYGmhW5Jvo3vJ4iXBZPUI29LvYhntom04w90esJvU,13
1647
+ arelle_release-2.37.30.dist-info/RECORD,,
@@ -4,6 +4,7 @@ from tests.integration_tests.validation.conformance_suite_config import Conforma
4
4
  from tests.integration_tests.validation.conformance_suite_configurations.cipc_current import config as cipc_current
5
5
  from tests.integration_tests.validation.conformance_suite_configurations.dba_current import config as dba_current
6
6
  from tests.integration_tests.validation.conformance_suite_configurations.dba_multi_current import config as dba_multi_current
7
+ from tests.integration_tests.validation.conformance_suite_configurations.edinet import config as edinet
7
8
  from tests.integration_tests.validation.conformance_suite_configurations.efm_current import config as efm_current
8
9
  from tests.integration_tests.validation.conformance_suite_configurations.efm_reg_dqc import config as efm_reg_dqc
9
10
  from tests.integration_tests.validation.conformance_suite_configurations.efm_reg_pragmatic import config as efm_reg_pragmatic
@@ -54,6 +55,7 @@ ALL_CONFORMANCE_SUITE_CONFIGS: tuple[ConformanceSuiteConfig, ...] = (
54
55
  cipc_current,
55
56
  dba_current,
56
57
  dba_multi_current,
58
+ edinet,
57
59
  efm_current,
58
60
  efm_reg_dqc,
59
61
  efm_reg_pragmatic,