arelle-release 2.37.29__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.
- arelle/Locale.py +3 -1
- arelle/_version.py +2 -2
- arelle/plugin/validate/EDINET/FormType.py +105 -0
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +44 -0
- arelle/plugin/validate/EDINET/rules/upload.py +187 -19
- {arelle_release-2.37.29.dist-info → arelle_release-2.37.30.dist-info}/METADATA +1 -1
- {arelle_release-2.37.29.dist-info → arelle_release-2.37.30.dist-info}/RECORD +49 -23
- tests/integration_tests/validation/conformance_suite_configurations/edinet.py +13 -30
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py +4 -0
- tests/integration_tests/validation/discover_tests.py +3 -3
- tests/integration_tests/validation/validation_util.py +9 -1
- tests/resources/conformance_suites/edinet/EC0121E/index.xml +2 -1
- tests/resources/conformance_suites/edinet/EC0121E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/EC0124E/index.xml +2 -1
- tests/resources/conformance_suites/edinet/EC0124E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/EC0129E/index.xml +23 -0
- tests/resources/conformance_suites/edinet/EC0129E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/EC0130E/index.xml +23 -0
- tests/resources/conformance_suites/edinet/EC0130E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/EC0132E/index.xml +2 -1
- tests/resources/conformance_suites/edinet/EC0132E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/EC0188E/index.xml +23 -0
- tests/resources/conformance_suites/edinet/EC0188E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/EC0198E/index.xml +23 -0
- tests/resources/conformance_suites/edinet/EC0198E/invalid01.zip +0 -0
- tests/resources/conformance_suites/edinet/index.xml +4 -0
- tests/resources/conformance_suites/edinet/valid/index.xml +180 -1
- tests/resources/conformance_suites/edinet/valid/valid01.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid02.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid03.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid04.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid05.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid06.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid07.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid08.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid09.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid10.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid11.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid12.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid13.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid14.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid20.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid21.zip +0 -0
- tests/resources/conformance_suites/edinet/valid/valid22.zip +0 -0
- tests/resources/conformance_suites_timing/edinet.json +27 -0
- {arelle_release-2.37.29.dist-info → arelle_release-2.37.30.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.29.dist-info → arelle_release-2.37.30.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.29.dist-info → arelle_release-2.37.30.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.29.dist-info → arelle_release-2.37.30.dist-info}/top_level.txt +0 -0
arelle/Locale.py
CHANGED
|
@@ -238,9 +238,11 @@ def getLocale() -> str | None:
|
|
|
238
238
|
systemLocale = tryRunCommand("pwsh", "-Command", "Get-Culture | Select -ExpandProperty IetfLanguageTag")
|
|
239
239
|
if pythonCompatibleLocale := findCompatibleLocale(systemLocale):
|
|
240
240
|
_locale = pythonCompatibleLocale
|
|
241
|
-
elif sys.version_info < (3, 12):
|
|
241
|
+
elif sys.version_info < (3, 12) or (3, 13, 3) <= sys.version_info[:3] <= (3, 13, 4):
|
|
242
242
|
# Using locale.setlocale(...) because getlocale() in Python versions prior to 3.12 incorrectly aliased C.UTF-8 to en_US.UTF-8.
|
|
243
243
|
# https://github.com/python/cpython/issues/74940
|
|
244
|
+
# Similar bug was reintroduced in Python 3.13.3 and fixed in 3.13.5.
|
|
245
|
+
# https://github.com/python/cpython/pull/135347
|
|
244
246
|
_locale = locale.setlocale(locale.LC_CTYPE).partition(POSIX_LOCALE_ENCODING_SEPARATOR)[0]
|
|
245
247
|
else:
|
|
246
248
|
_locale = locale.getlocale()[0]
|
arelle/_version.py
CHANGED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from enum import Enum
|
|
7
|
+
from functools import cached_property, lru_cache
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class FormType(Enum):
|
|
12
|
+
ATTACH_DOC = "AttachDoc"
|
|
13
|
+
AUDIT_DOC = "AuditDoc"
|
|
14
|
+
ENGLISH_DOC = "EnglishDoc"
|
|
15
|
+
PRIVATE_ATTACH = "PrivateAttach"
|
|
16
|
+
PRIVATE_DOC = "PrivateDoc"
|
|
17
|
+
PUBLIC_DOC = "PublicDoc"
|
|
18
|
+
|
|
19
|
+
@classmethod
|
|
20
|
+
def parse(cls, value: str) -> FormType | None:
|
|
21
|
+
try:
|
|
22
|
+
return cls(value)
|
|
23
|
+
except ValueError:
|
|
24
|
+
return None
|
|
25
|
+
|
|
26
|
+
@cached_property
|
|
27
|
+
def extensionCategory(self) -> ExtensionCategory | None:
|
|
28
|
+
return FORM_TYPE_EXTENSION_CATEGORIES.get(self, None)
|
|
29
|
+
|
|
30
|
+
@cached_property
|
|
31
|
+
def manifestName(self) -> str:
|
|
32
|
+
return f'manifest_{self.value}.xml'
|
|
33
|
+
|
|
34
|
+
@cached_property
|
|
35
|
+
def manifestPath(self) -> Path:
|
|
36
|
+
return self.xbrlDirectory / self.manifestName
|
|
37
|
+
|
|
38
|
+
@cached_property
|
|
39
|
+
def xbrlDirectory(self) -> Path:
|
|
40
|
+
return Path('XBRL') / str(self.value)
|
|
41
|
+
|
|
42
|
+
@lru_cache(1)
|
|
43
|
+
def getValidExtensions(self, isAmendment: bool, isSubdirectory: bool) -> frozenset[str] | None:
|
|
44
|
+
if self.extensionCategory is None:
|
|
45
|
+
return None
|
|
46
|
+
return self.extensionCategory.getValidExtensions(isAmendment, isSubdirectory)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class ExtensionCategory(Enum):
|
|
50
|
+
ATTACH = 'ATTACH'
|
|
51
|
+
DOC = 'DOC'
|
|
52
|
+
ENGLISH_DOC = 'ENGLISH_DOC'
|
|
53
|
+
|
|
54
|
+
def getValidExtensions(self, isAmendment: bool, isSubdirectory: bool) -> frozenset[str] | None:
|
|
55
|
+
amendmentMap = VALID_EXTENSIONS[isAmendment]
|
|
56
|
+
categoryMap = amendmentMap.get(self, None)
|
|
57
|
+
if categoryMap is None:
|
|
58
|
+
return None
|
|
59
|
+
return categoryMap.get(isSubdirectory, None)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
FORM_TYPE_EXTENSION_CATEGORIES = {
|
|
63
|
+
FormType.ATTACH_DOC: ExtensionCategory.ATTACH,
|
|
64
|
+
FormType.AUDIT_DOC: ExtensionCategory.DOC,
|
|
65
|
+
FormType.ENGLISH_DOC: ExtensionCategory.ENGLISH_DOC,
|
|
66
|
+
FormType.PRIVATE_ATTACH: ExtensionCategory.ATTACH,
|
|
67
|
+
FormType.PRIVATE_DOC: ExtensionCategory.DOC,
|
|
68
|
+
FormType.PUBLIC_DOC: ExtensionCategory.DOC,
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
HTML_EXTENSIONS = frozenset({'.htm', '.html', '.xhtml'})
|
|
73
|
+
IMAGE_EXTENSIONS = frozenset({'.jpeg', '.jpg', '.gif', '.png'})
|
|
74
|
+
ASSET_EXTENSIONS = frozenset(HTML_EXTENSIONS | IMAGE_EXTENSIONS)
|
|
75
|
+
XBRL_EXTENSIONS = frozenset(HTML_EXTENSIONS | {'.xml', '.xsd'})
|
|
76
|
+
ATTACH_EXTENSIONS = frozenset(HTML_EXTENSIONS | {'.pdf', })
|
|
77
|
+
ENGLISH_DOC_EXTENSIONS = frozenset(ASSET_EXTENSIONS | frozenset({'.pdf', '.xml', '.txt'}))
|
|
78
|
+
|
|
79
|
+
# Is Amendment -> Category -> Is Subdirectory
|
|
80
|
+
VALID_EXTENSIONS = {
|
|
81
|
+
False: {
|
|
82
|
+
ExtensionCategory.ATTACH: {
|
|
83
|
+
False: ATTACH_EXTENSIONS,
|
|
84
|
+
True: ASSET_EXTENSIONS,
|
|
85
|
+
},
|
|
86
|
+
ExtensionCategory.DOC: {
|
|
87
|
+
False: XBRL_EXTENSIONS,
|
|
88
|
+
True: ASSET_EXTENSIONS
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
True: {
|
|
92
|
+
ExtensionCategory.ATTACH: {
|
|
93
|
+
False: ATTACH_EXTENSIONS,
|
|
94
|
+
True: ASSET_EXTENSIONS,
|
|
95
|
+
},
|
|
96
|
+
ExtensionCategory.DOC: {
|
|
97
|
+
False: HTML_EXTENSIONS,
|
|
98
|
+
True: ASSET_EXTENSIONS,
|
|
99
|
+
},
|
|
100
|
+
ExtensionCategory.ENGLISH_DOC: {
|
|
101
|
+
False: ENGLISH_DOC_EXTENSIONS,
|
|
102
|
+
True: ENGLISH_DOC_EXTENSIONS,
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
}
|
|
@@ -4,6 +4,7 @@ See COPYRIGHT.md for copyright information.
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
6
|
import zipfile
|
|
7
|
+
from collections import defaultdict
|
|
7
8
|
from dataclasses import dataclass
|
|
8
9
|
from functools import lru_cache
|
|
9
10
|
from pathlib import Path
|
|
@@ -12,10 +13,19 @@ from arelle.ModelXbrl import ModelXbrl
|
|
|
12
13
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
13
14
|
from arelle.typing import TypeGetText
|
|
14
15
|
from arelle.utils.PluginData import PluginData
|
|
16
|
+
from .FormType import FormType
|
|
15
17
|
|
|
16
18
|
_: TypeGetText
|
|
17
19
|
|
|
18
20
|
|
|
21
|
+
@dataclass(frozen=True)
|
|
22
|
+
class UploadContents:
|
|
23
|
+
amendmentPaths: dict[FormType, frozenset[Path]]
|
|
24
|
+
directories: frozenset[Path]
|
|
25
|
+
forms: dict[FormType, frozenset[Path]]
|
|
26
|
+
unknownPaths: frozenset[Path]
|
|
27
|
+
|
|
28
|
+
|
|
19
29
|
@dataclass
|
|
20
30
|
class PluginValidationDataExtension(PluginData):
|
|
21
31
|
_primaryModelXbrl: ModelXbrl | None = None
|
|
@@ -50,6 +60,40 @@ class PluginValidationDataExtension(PluginData):
|
|
|
50
60
|
return False # Not a zipfile
|
|
51
61
|
return True
|
|
52
62
|
|
|
63
|
+
@lru_cache(1)
|
|
64
|
+
def getUploadContents(self, modelXbrl: ModelXbrl) -> UploadContents:
|
|
65
|
+
uploadFilepaths = self.getUploadFilepaths(modelXbrl)
|
|
66
|
+
amendmentPaths = defaultdict(list)
|
|
67
|
+
unknownPaths = []
|
|
68
|
+
directories = []
|
|
69
|
+
forms = defaultdict(list)
|
|
70
|
+
for path in uploadFilepaths:
|
|
71
|
+
parents = list(reversed([p.name for p in path.parents if len(p.name) > 0]))
|
|
72
|
+
if len(parents) == 0:
|
|
73
|
+
continue
|
|
74
|
+
if parents[0] == 'XBRL':
|
|
75
|
+
if len(parents) > 1:
|
|
76
|
+
formName = parents[1]
|
|
77
|
+
formType = FormType.parse(formName)
|
|
78
|
+
if formType is not None:
|
|
79
|
+
forms[formType].append(path)
|
|
80
|
+
continue
|
|
81
|
+
formName = parents[0]
|
|
82
|
+
formType = FormType.parse(formName)
|
|
83
|
+
if formType is not None:
|
|
84
|
+
amendmentPaths[formType].append(path)
|
|
85
|
+
continue
|
|
86
|
+
if len(path.suffix) == 0:
|
|
87
|
+
directories.append(path)
|
|
88
|
+
continue
|
|
89
|
+
unknownPaths.append(path)
|
|
90
|
+
return UploadContents(
|
|
91
|
+
amendmentPaths={k: frozenset(v) for k, v in amendmentPaths.items() if len(v) > 0},
|
|
92
|
+
directories=frozenset(directories),
|
|
93
|
+
forms={k: frozenset(v) for k, v in forms.items() if len(v) > 0},
|
|
94
|
+
unknownPaths=frozenset(unknownPaths)
|
|
95
|
+
)
|
|
96
|
+
|
|
53
97
|
@lru_cache(1)
|
|
54
98
|
def getUploadFilepaths(self, modelXbrl: ModelXbrl) -> list[Path]:
|
|
55
99
|
if not modelXbrl.fileSource.fs or \
|
|
@@ -5,7 +5,9 @@ from __future__ import annotations
|
|
|
5
5
|
|
|
6
6
|
import re
|
|
7
7
|
import zipfile
|
|
8
|
+
from collections import defaultdict
|
|
8
9
|
from collections.abc import Iterable
|
|
10
|
+
from pathlib import Path
|
|
9
11
|
from typing import Any, cast, IO
|
|
10
12
|
|
|
11
13
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
@@ -14,10 +16,23 @@ from arelle.utils.PluginHooks import ValidationHook
|
|
|
14
16
|
from arelle.utils.validate.Decorator import validation
|
|
15
17
|
from arelle.utils.validate.Validation import Validation
|
|
16
18
|
from ..DisclosureSystems import (DISCLOSURE_SYSTEM_EDINET)
|
|
19
|
+
from ..FormType import FormType, HTML_EXTENSIONS
|
|
17
20
|
from ..PluginValidationDataExtension import PluginValidationDataExtension
|
|
18
21
|
|
|
19
22
|
_: TypeGetText
|
|
20
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
|
+
|
|
21
36
|
FILENAME_STEM_PATTERN = re.compile(r'[a-zA-Z0-9_-]*')
|
|
22
37
|
|
|
23
38
|
|
|
@@ -35,16 +50,18 @@ def rule_EC0121E(
|
|
|
35
50
|
EDINET.EC0121E: There is a directory or file that contains more than 31 characters
|
|
36
51
|
or uses characters other than those allowed (alphanumeric characters, '-' and '_').
|
|
37
52
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
file has multiple document sets, as is often the case with AuditDoc manifests.
|
|
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.
|
|
43
57
|
"""
|
|
44
58
|
if not pluginData.shouldValidateUpload(val):
|
|
45
59
|
return
|
|
46
|
-
|
|
47
|
-
|
|
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:
|
|
48
65
|
if len(str(path.name)) > 31 or not FILENAME_STEM_PATTERN.match(path.stem):
|
|
49
66
|
yield Validation.error(
|
|
50
67
|
codes='EDINET.EC0121E',
|
|
@@ -71,8 +88,6 @@ def rule_EC0124E(
|
|
|
71
88
|
) -> Iterable[Validation]:
|
|
72
89
|
"""
|
|
73
90
|
EDINET.EC0124E: There are no empty directories.
|
|
74
|
-
|
|
75
|
-
See note on EC0121E.
|
|
76
91
|
"""
|
|
77
92
|
if not pluginData.shouldValidateUpload(val):
|
|
78
93
|
return
|
|
@@ -93,6 +108,91 @@ def rule_EC0124E(
|
|
|
93
108
|
)
|
|
94
109
|
|
|
95
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
|
+
|
|
96
196
|
@validation(
|
|
97
197
|
hook=ValidationHook.XBRL_FINALLY,
|
|
98
198
|
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
@@ -108,21 +208,18 @@ def rule_EC0132E(
|
|
|
108
208
|
"""
|
|
109
209
|
if not pluginData.shouldValidateUpload(val):
|
|
110
210
|
return
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if filepath.name not in docFolders:
|
|
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:
|
|
115
214
|
continue
|
|
116
|
-
|
|
117
|
-
expectedManifestPath = filepath / expectedManifestName
|
|
118
|
-
if expectedManifestPath in uploadFilepaths:
|
|
215
|
+
if formType.manifestPath in uploadContents.forms.get(formType, []):
|
|
119
216
|
continue
|
|
120
217
|
yield Validation.error(
|
|
121
218
|
codes='EDINET.EC0132E',
|
|
122
|
-
msg=_("'%(expectedManifestName)s' does not exist in '%(
|
|
219
|
+
msg=_("'%(expectedManifestName)s' does not exist in '%(expectedManifestDirectory)s'. "
|
|
123
220
|
"Please store the manifest file (or cover file) directly under the relevant folder and upload it again. "),
|
|
124
|
-
expectedManifestName=
|
|
125
|
-
|
|
221
|
+
expectedManifestName=formType.manifestPath.name,
|
|
222
|
+
expectedManifestDirectory=str(formType.manifestPath.parent),
|
|
126
223
|
)
|
|
127
224
|
|
|
128
225
|
|
|
@@ -151,3 +248,74 @@ def rule_EC0183E(
|
|
|
151
248
|
msg=_("The compressed file size exceeds 55MB. "
|
|
152
249
|
"Please compress the file to a size of 55MB or less and upload it again."),
|
|
153
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
|
+
)
|
|
@@ -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=
|
|
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
|
|
@@ -123,7 +123,7 @@ arelle/XmlValidateConst.py,sha256=U_wN0Q-nWKwf6dKJtcu_83FXPn9c6P8JjzGA5b0w7P0,33
|
|
|
123
123
|
arelle/XmlValidateParticles.py,sha256=Mn6vhFl0ZKC_vag1mBwn1rH_x2jmlusJYqOOuxFPO2k,9231
|
|
124
124
|
arelle/XmlValidateSchema.py,sha256=6frtZOc1Yrx_5yYF6V6oHbScnglWrVbWr6xW4EHtLQI,7428
|
|
125
125
|
arelle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
|
-
arelle/_version.py,sha256=
|
|
126
|
+
arelle/_version.py,sha256=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
|
|
@@ -393,12 +393,13 @@ arelle/plugin/validate/DBA/rules/tr.py,sha256=zdi3kQ82whmweVWRLbMvcNpM8sqtUliPsG
|
|
|
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
395
|
arelle/plugin/validate/EDINET/DisclosureSystems.py,sha256=3rKG42Eg-17Xx_KXU_V5yHW6I3LTwQunvf4a44C9k_4,36
|
|
396
|
-
arelle/plugin/validate/EDINET/
|
|
396
|
+
arelle/plugin/validate/EDINET/FormType.py,sha256=pJfKjdjqFcRLFgH6xbEixvpwatZBBHI8uI3xjjhaPI0,3175
|
|
397
|
+
arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=8ylP-bY6Y0PJ1AxQ35CZmXYzAQDNu1K4rBSVupq-wZ8,4088
|
|
397
398
|
arelle/plugin/validate/EDINET/ValidationPluginExtension.py,sha256=HIGOpBOyuVs5SEh573M3IzdouRdEuNIBkdumieZi8r0,959
|
|
398
399
|
arelle/plugin/validate/EDINET/__init__.py,sha256=1kJUaV2AbNZdakKSa_v3opdyCRKO3gva62RpHVOrpIE,4398
|
|
399
400
|
arelle/plugin/validate/EDINET/resources/config.xml,sha256=7uxn_HZT3USgbs2GQkew-dCUzlEgUGs62PiqEfljPgk,514
|
|
400
401
|
arelle/plugin/validate/EDINET/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
401
|
-
arelle/plugin/validate/EDINET/rules/upload.py,sha256=
|
|
402
|
+
arelle/plugin/validate/EDINET/rules/upload.py,sha256=cB3EZbzcU5vK80IQUc-MNBvKcnCf8-f72C0JqLubSCE,12395
|
|
402
403
|
arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
|
|
403
404
|
arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
|
|
404
405
|
arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
|
|
@@ -749,7 +750,7 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
|
|
|
749
750
|
arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
750
751
|
arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
751
752
|
arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
|
|
752
|
-
arelle_release-2.37.
|
|
753
|
+
arelle_release-2.37.30.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
|
|
753
754
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
754
755
|
tests/integration_tests/download_cache.py,sha256=jVMIVICsZjcVc9DCPPu3fCjF9_cWSS3tqSynhFs3oAM,4097
|
|
755
756
|
tests/integration_tests/integration_test_util.py,sha256=H7mncbv0T9ZeVyrtk9Hohe3k6jgcYykHkt-LGE-Q9aQ,10270
|
|
@@ -780,15 +781,15 @@ tests/integration_tests/validation/assets.py,sha256=Ag9qPYrodcC-Ly6aygqapV0vG2Cb
|
|
|
780
781
|
tests/integration_tests/validation/conformance_suite_config.py,sha256=LgPO_8H_esM9kQS2o4jKd8CTNi0hiHugZ1hZn7whshI,10383
|
|
781
782
|
tests/integration_tests/validation/conformance_suite_configs.py,sha256=jM-EqvLDLxq1xIv3UxQonXsSXbBR-AGVd0yAW_XeJUI,7616
|
|
782
783
|
tests/integration_tests/validation/conftest.py,sha256=rVfmNX9y0JZ1VfoEepeYyIz-ZxzEZ1IJlmbcQSuxgUo,816
|
|
783
|
-
tests/integration_tests/validation/discover_tests.py,sha256=
|
|
784
|
+
tests/integration_tests/validation/discover_tests.py,sha256=qaSCsys6cC9Xu6ep9M0db3UCTR7fKCPLOv8xEvvcE3I,4653
|
|
784
785
|
tests/integration_tests/validation/download_assets.py,sha256=muHklbrvYEbxqqAM8mU-8FpeemP0BLTWxD11xTYiCMc,7850
|
|
785
786
|
tests/integration_tests/validation/run_conformance_suites.py,sha256=yBnPdtIiNKibjsrJxrvVA7NyAEWcoDg-sSjp1nFGQ2g,8496
|
|
786
787
|
tests/integration_tests/validation/test_conformance_suites.py,sha256=VdwY0QtV6g00M9bv1XNs4qBTwxPxCh5-z4XoDdEhgeM,711
|
|
787
|
-
tests/integration_tests/validation/validation_util.py,sha256=
|
|
788
|
+
tests/integration_tests/validation/validation_util.py,sha256=5rIVfEemipJcnDpSqf5479Fa13I3ICHvPFq1pYROWCU,22136
|
|
788
789
|
tests/integration_tests/validation/conformance_suite_configurations/cipc_current.py,sha256=oLXe3xIsEZLz3cv1cDdMQIuS_NgyI9Uimc9hy0NMWqg,642
|
|
789
790
|
tests/integration_tests/validation/conformance_suite_configurations/dba_current.py,sha256=j-7jCpzbGXbOzG8HGEyS0ciCYSPZzZLV44VQGhP3Hmc,875
|
|
790
791
|
tests/integration_tests/validation/conformance_suite_configurations/dba_multi_current.py,sha256=ICkP18Wu7aTDfszfYlrfVnBj9oe7ppXR-8wxQqCPqW0,837
|
|
791
|
-
tests/integration_tests/validation/conformance_suite_configurations/edinet.py,sha256
|
|
792
|
+
tests/integration_tests/validation/conformance_suite_configurations/edinet.py,sha256=PMyBjtE-t24EysXrWvqYqk1Mqx-LeWRdwYrEUPeRVfM,1638
|
|
792
793
|
tests/integration_tests/validation/conformance_suite_configurations/efm_current.py,sha256=zbZ9c-LoZJDRp0Lobl_oH3xRw4g-2u6oQqU0-oo5NOE,1322
|
|
793
794
|
tests/integration_tests/validation/conformance_suite_configurations/efm_reg_dqc.py,sha256=HiT8OcRAOVKLsl95Y91L66FeOsIMMMAQCs-DLMG-Lb0,739
|
|
794
795
|
tests/integration_tests/validation/conformance_suite_configurations/efm_reg_pragmatic.py,sha256=U6dew0sIibjZe4r6na912qyIVAjxljh2HDix-8AwvhM,727
|
|
@@ -820,7 +821,7 @@ tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensi
|
|
|
820
821
|
tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensible_enumerations_2_0.py,sha256=DZTlD6A3ieT-lBUlrn78a0V5j1LvCKRm_Lm7jSvphPY,683
|
|
821
822
|
tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0.py,sha256=H456ozSCnVoVHXYHd4g2169JHkI2yKhMgOOpJyanLZE,592
|
|
822
823
|
tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_assertion_severity_2_0.py,sha256=W7FT2ac5u8PyRubt_bcDl37wucv0Pnu9KqQ2jxEpGFM,668
|
|
823
|
-
tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py,sha256=
|
|
824
|
+
tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py,sha256=RuqeADKn_6E1AT5vPCXxnSZoD_3diVhQrroaLVa2Op8,1024
|
|
824
825
|
tests/integration_tests/validation/conformance_suite_configurations/xbrl_ixbrl_1_1.py,sha256=Upsc9Nx0eHJQlVL9p77GamTCUpIqjexnRShe9F0b9NM,1366
|
|
825
826
|
tests/integration_tests/validation/conformance_suite_configurations/xbrl_link_role_registry_1_0.py,sha256=NQfri9MXCDSvNy7kahf4iXZaBUPey9-FYKlchg-Uw4I,633
|
|
826
827
|
tests/integration_tests/validation/conformance_suite_configurations/xbrl_oim_1_0.py,sha256=s5tcH5fgzNwLQR1iWxCjuyij4Rxjq8XrmGDIptAbfGE,906
|
|
@@ -1151,15 +1152,39 @@ tests/resources/conformance_suites/dba_multi/tr/tr17-testcase.xml,sha256=zzu0az0
|
|
|
1151
1152
|
tests/resources/conformance_suites/dba_multi/tr/valid-ixbrl-001.xhtml,sha256=weldGT9zOEsSYhbVmpz-MR66Bd4jMMqsKoWTM6GLXag,1652016
|
|
1152
1153
|
tests/resources/conformance_suites/dba_multi/tr/valid-testcase.xml,sha256=KmH_iJFEFdCATYn9QWevbgCOTaGDR9r80NhdsYdGKsA,895
|
|
1153
1154
|
tests/resources/conformance_suites/edinet/README.md,sha256=uO7RiidAUp8xEkP7obmggpxhfgdsnACoKplgYqqPON0,333
|
|
1154
|
-
tests/resources/conformance_suites/edinet/index.xml,sha256=
|
|
1155
|
-
tests/resources/conformance_suites/edinet/EC0121E/index.xml,sha256=
|
|
1156
|
-
tests/resources/conformance_suites/edinet/EC0121E/invalid01.zip,sha256=
|
|
1157
|
-
tests/resources/conformance_suites/edinet/EC0124E/index.xml,sha256=
|
|
1158
|
-
tests/resources/conformance_suites/edinet/EC0124E/invalid01.zip,sha256=
|
|
1159
|
-
tests/resources/conformance_suites/edinet/
|
|
1160
|
-
tests/resources/conformance_suites/edinet/
|
|
1161
|
-
tests/resources/conformance_suites/edinet/
|
|
1162
|
-
tests/resources/conformance_suites/edinet/
|
|
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
|
|
1163
1188
|
tests/resources/conformance_suites/nl_nt16/index.xml,sha256=FFSSMokLcdhMroNeSSbm28pi-RKRURdVcKhqHdj44f0,2010
|
|
1164
1189
|
tests/resources/conformance_suites/nl_nt16/mock-taxonomy.xsd,sha256=1uRNZClgrtNvL1Gx27MEAntSzeszICUhVXO01jqoavQ,1377
|
|
1165
1190
|
tests/resources/conformance_suites/nl_nt16/br_kvk/2-04-invalid-period.xbrl,sha256=WeUb_M6vNrLG9jjbNTDv7qiPnAYyfYXlZvDbVlHh11g,4127
|
|
@@ -1569,6 +1594,7 @@ tests/resources/conformance_suites_expected/efm_current.csv,sha256=9YoKy-kYo_VAy
|
|
|
1569
1594
|
tests/resources/conformance_suites_expected/efm_reg_dqc.csv,sha256=0CEItNnnEE_s8uGHA8CidxEVyvOiTCv5nAWpc4dCUmE,9968847
|
|
1570
1595
|
tests/resources/conformance_suites_expected/efm_reg_pragmatic.csv,sha256=J_sDOjJGDjFnseMU7QIBttvvOjjnPp_WdmrCkjvCu4Y,196
|
|
1571
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
|
|
1572
1598
|
tests/resources/conformance_suites_timing/efm_current.json,sha256=iqqcBoDJVs2F_xW03gCirDyaLZoS9x482KAQgMhCvvg,1096604
|
|
1573
1599
|
tests/resources/conformance_suites_timing/efm_reg_dqc.json,sha256=4ry0JC8XA-8Bua2E75edknjxcL42Qj6nMZxvjCdW2uc,1708653
|
|
1574
1600
|
tests/resources/conformance_suites_timing/esef_ixbrl_2021.json,sha256=3UBEba0PStPkAHgYZc6_WAH3_pBTGOpDNRQ0X1hxH74,26836
|
|
@@ -1614,8 +1640,8 @@ tests/unit_tests/arelle/oim/test_load.py,sha256=NxiUauQwJVfWAHbbpsMHGSU2d3Br8Pki
|
|
|
1614
1640
|
tests/unit_tests/arelle/plugin/test_plugin_imports.py,sha256=bdhIs9frAnFsdGU113yBk09_jis-z43dwUItMFYuSYM,1064
|
|
1615
1641
|
tests/unit_tests/arelle/plugin/validate/ESEF/ESEF_Current/test_validate_css_url.py,sha256=H0ndmQ0sFO5WVMzAxPCH1WciRhCg_HgKUtQCg0xlmtg,1238
|
|
1616
1642
|
tests/unit_tests/arelle/utils/validate/test_decorator.py,sha256=ZS8FqIY1g-2FCbjF4UYm609dwViax6qBMRJSi0vfuhY,2482
|
|
1617
|
-
arelle_release-2.37.
|
|
1618
|
-
arelle_release-2.37.
|
|
1619
|
-
arelle_release-2.37.
|
|
1620
|
-
arelle_release-2.37.
|
|
1621
|
-
arelle_release-2.37.
|
|
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,,
|
|
@@ -12,41 +12,24 @@ config = ConformanceSuiteConfig(
|
|
|
12
12
|
entry_point=Path('index.xml'),
|
|
13
13
|
),
|
|
14
14
|
],
|
|
15
|
-
cache_version_id='
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'valid/index.xml:valid01': {
|
|
28
|
-
# See "Duplicate errors", "EC0121E" notes above.
|
|
29
|
-
'EDINET.EC0121E': 114,
|
|
30
|
-
},
|
|
31
|
-
'EC0121E/index.xml:invalid01': {
|
|
32
|
-
# See "Duplicate errors", "EC0121E" notes above.
|
|
33
|
-
# 38 expected, 2 sets of duplicates
|
|
34
|
-
'EDINET.EC0121E': 76,
|
|
35
|
-
},
|
|
36
|
-
'EC0124E/index.xml:invalid01': {
|
|
37
|
-
# See "Duplicate errors", "EC0121E" notes above.
|
|
38
|
-
'EDINET.EC0121E': 114,
|
|
39
|
-
'EDINET.EC0124E': 2,
|
|
40
|
-
},
|
|
41
|
-
'EC0132E/index.xml:invalid01': {
|
|
42
|
-
# See "EC0121E" note above (single instance, not duplicated)
|
|
43
|
-
'EDINET.EC0121E': 38,
|
|
44
|
-
},
|
|
15
|
+
cache_version_id='cs2wODrDheJqDIm1kEU4Qwk8jwd7DfQu',
|
|
16
|
+
expected_additional_testcase_errors={f"*{s}": val for s, val in {
|
|
17
|
+
# Duplicate errors: Running EDINET validations in a testcase context
|
|
18
|
+
# prevents us from detecting when two models are being validated
|
|
19
|
+
# from the same variation, so `shouldValidateUpload` always returns `True`.
|
|
20
|
+
# This leads to any rule that validates at the package level (rather than the
|
|
21
|
+
# instance level) firing once for each instance. Normal validation runs
|
|
22
|
+
# do not have this issue. We can expect this to be resolved at some point.
|
|
23
|
+
# Until then, if you construct a test case zip from a valid package that has multiple instances
|
|
24
|
+
# (e.g. PublicDoc + AuditDoc) you'll need to add expected additional testcases here
|
|
25
|
+
# for the duplicate errors.
|
|
26
|
+
# TODO: Prevent duplicate runs in testcase context.
|
|
45
27
|
}.items()},
|
|
46
28
|
expected_failure_ids=frozenset([]),
|
|
47
29
|
info_url='https://disclosure2.edinet-fsa.go.jp/weee0020.aspx',
|
|
48
30
|
name=PurePath(__file__).stem,
|
|
49
31
|
network_or_cache_required=False,
|
|
50
32
|
plugins=frozenset({'validate/EDINET', 'inlineXbrlDocumentSet'}),
|
|
33
|
+
shards=4,
|
|
51
34
|
test_case_result_options='match-all',
|
|
52
35
|
)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import re
|
|
1
2
|
from pathlib import Path, PurePath
|
|
2
3
|
|
|
3
4
|
from tests.integration_tests.validation.conformance_suite_config import (
|
|
@@ -21,5 +22,8 @@ config = ConformanceSuiteConfig(
|
|
|
21
22
|
network_or_cache_required=False,
|
|
22
23
|
plugins=frozenset({'formulaXPathChecker', 'functionsMath'}),
|
|
23
24
|
strict_testcase_index=False,
|
|
25
|
+
required_locale_by_ids={f'formula/function-registry/{t}': p for t, p in [
|
|
26
|
+
('xbrl/90701 xfi.format-number/90701 xfi.format-number testcase.xml:V-05', re.compile(r"^(en|English).*$")),
|
|
27
|
+
]},
|
|
24
28
|
test_case_result_options='match-any',
|
|
25
29
|
)
|
|
@@ -11,16 +11,16 @@ from .conformance_suite_configurations.xbrl_2_1 import config as xbrl_2_1
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
LINUX = 'ubuntu-24.04'
|
|
14
|
-
MACOS = 'macos-
|
|
14
|
+
MACOS = 'macos-15'
|
|
15
15
|
WINDOWS = 'windows-2022'
|
|
16
16
|
ALL_PYTHON_VERSIONS = (
|
|
17
17
|
'3.9',
|
|
18
18
|
'3.10',
|
|
19
19
|
'3.11',
|
|
20
20
|
'3.12',
|
|
21
|
-
'3.13.
|
|
21
|
+
'3.13.5',
|
|
22
22
|
)
|
|
23
|
-
LATEST_PYTHON_VERSION = '3.13.
|
|
23
|
+
LATEST_PYTHON_VERSION = '3.13.5'
|
|
24
24
|
# number of cores on the runners
|
|
25
25
|
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
|
|
26
26
|
OS_CORES = {
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import csv
|
|
4
4
|
import difflib
|
|
5
|
+
import fnmatch
|
|
5
6
|
import json
|
|
6
7
|
import multiprocessing
|
|
7
8
|
import os.path
|
|
@@ -331,7 +332,14 @@ def get_conformance_suite_test_results_with_shards(
|
|
|
331
332
|
additional_plugins = shard.plugins
|
|
332
333
|
all_test_paths = {path for test_shard in test_shards for path in test_shard.paths}
|
|
333
334
|
|
|
334
|
-
unrecognized_additional_error_ids = {
|
|
335
|
+
unrecognized_additional_error_ids = {
|
|
336
|
+
pattern
|
|
337
|
+
for pattern in {
|
|
338
|
+
_id.rsplit(':', 1)[0]
|
|
339
|
+
for _id in config.expected_additional_testcase_errors.keys()
|
|
340
|
+
}
|
|
341
|
+
if not any(fnmatch.fnmatch(test_path, pattern) for test_path in all_test_paths)
|
|
342
|
+
}
|
|
335
343
|
assert not unrecognized_additional_error_ids, f'Unrecognized expected additional error IDs: {unrecognized_additional_error_ids}'
|
|
336
344
|
expected_additional_testcase_errors = {}
|
|
337
345
|
for expected_id, errors in config.expected_additional_testcase_errors.items():
|
|
@@ -11,12 +11,13 @@
|
|
|
11
11
|
<variation id="invalid01" name="invalid01">
|
|
12
12
|
<description>
|
|
13
13
|
Filenames exceed 31 characters or contain invalid characters.
|
|
14
|
+
<!--valid09.zip with file added to root PublicDoc with long filename.-->
|
|
14
15
|
</description>
|
|
15
16
|
<data>
|
|
16
17
|
<instance readMeFirst="true">invalid01.zip</instance>
|
|
17
18
|
</data>
|
|
18
19
|
<result>
|
|
19
|
-
<error num="
|
|
20
|
+
<error num="1">EDINET.EC0121E</error>
|
|
20
21
|
</result>
|
|
21
22
|
</variation>
|
|
22
23
|
</testcase>
|
|
Binary file
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
11
|
<variation id="invalid01" name="invalid01">
|
|
12
12
|
<description>
|
|
13
|
-
There
|
|
13
|
+
There is an empty directory.
|
|
14
|
+
<!--valid09.zip with empty 'XBRL/PublicDoc/empty' directory added.-->
|
|
14
15
|
</description>
|
|
15
16
|
<data>
|
|
16
17
|
<instance readMeFirst="true">invalid01.zip</instance>
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<?xml-stylesheet type="text/xsl" href="../testcase.xsl"?>
|
|
3
|
+
<testcase
|
|
4
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
5
|
+
xmlns="http://xbrl.org/2005/conformance"
|
|
6
|
+
name="EDINET.EC0129E"
|
|
7
|
+
description="EDINET.EC0129E: Limit the number of subfolders to 3 or less from the XBRL directory."
|
|
8
|
+
outpath=''
|
|
9
|
+
owner="support@arelle.org"
|
|
10
|
+
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
|
+
<variation id="invalid01" name="invalid01">
|
|
12
|
+
<description>
|
|
13
|
+
There are is a file nested 4 directories beneath XBRL directory.
|
|
14
|
+
<!--valid09.zip with 'XBRL/PublicDoc/images/a/b/c.gif' added.-->
|
|
15
|
+
</description>
|
|
16
|
+
<data>
|
|
17
|
+
<instance readMeFirst="true">invalid01.zip</instance>
|
|
18
|
+
</data>
|
|
19
|
+
<result>
|
|
20
|
+
<error>EDINET.EC0129E</error>
|
|
21
|
+
</result>
|
|
22
|
+
</variation>
|
|
23
|
+
</testcase>
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<?xml-stylesheet type="text/xsl" href="../testcase.xsl"?>
|
|
3
|
+
<testcase
|
|
4
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
5
|
+
xmlns="http://xbrl.org/2005/conformance"
|
|
6
|
+
name="EDINET.EC0130E"
|
|
7
|
+
description="EDINET.EC0130E: File extensions must match the file extensions allowed in Chart 2_3_1."
|
|
8
|
+
outpath=''
|
|
9
|
+
owner="support@arelle.org"
|
|
10
|
+
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
|
+
<variation id="invalid01" name="invalid01">
|
|
12
|
+
<description>
|
|
13
|
+
There are several files with invalid extensions.
|
|
14
|
+
<!--valid09.zip with several valid and invalid files added among root directories and XBRL subdirectories.-->
|
|
15
|
+
</description>
|
|
16
|
+
<data>
|
|
17
|
+
<instance readMeFirst="true">invalid01.zip</instance>
|
|
18
|
+
</data>
|
|
19
|
+
<result>
|
|
20
|
+
<error num="16">EDINET.EC0130E</error>
|
|
21
|
+
</result>
|
|
22
|
+
</variation>
|
|
23
|
+
</testcase>
|
|
Binary file
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
11
|
<variation id="invalid01" name="invalid01">
|
|
12
12
|
<description>
|
|
13
|
-
|
|
13
|
+
Manifest incorrectly named 'manifest.xml'.
|
|
14
|
+
<!--valid09.zip with 'manifest_PublicDoc.xml' renamed.-->
|
|
14
15
|
</description>
|
|
15
16
|
<data>
|
|
16
17
|
<instance readMeFirst="true">invalid01.zip</instance>
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<?xml-stylesheet type="text/xsl" href="../testcase.xsl"?>
|
|
3
|
+
<testcase
|
|
4
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
5
|
+
xmlns="http://xbrl.org/2005/conformance"
|
|
6
|
+
name="EDINET.EC0188E"
|
|
7
|
+
description="EDINET.EC0188E: There is an html file directly under PublicDoc or PrivateDoc whose first 7 characters are not numbers."
|
|
8
|
+
outpath=''
|
|
9
|
+
owner="support@arelle.org"
|
|
10
|
+
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
|
+
<variation id="invalid01" name="invalid01">
|
|
12
|
+
<description>
|
|
13
|
+
HTML file with invalid filename exists directly beneath PublicDoc.
|
|
14
|
+
<!--valid09.zip with 'invalid.html' added under 'XBRL/PublicDoc'.-->
|
|
15
|
+
</description>
|
|
16
|
+
<data>
|
|
17
|
+
<instance readMeFirst="true">invalid01.zip</instance>
|
|
18
|
+
</data>
|
|
19
|
+
<result>
|
|
20
|
+
<error>EDINET.EC0188E</error>
|
|
21
|
+
</result>
|
|
22
|
+
</variation>
|
|
23
|
+
</testcase>
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<?xml-stylesheet type="text/xsl" href="../testcase.xsl"?>
|
|
3
|
+
<testcase
|
|
4
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
5
|
+
xmlns="http://xbrl.org/2005/conformance"
|
|
6
|
+
name="EDINET.EC0198E"
|
|
7
|
+
description="EDINET.EC0198E: The number of files in the total submission and directories can not exceed the upper limit."
|
|
8
|
+
outpath=''
|
|
9
|
+
owner="support@arelle.org"
|
|
10
|
+
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
|
+
<variation id="invalid01" name="invalid01">
|
|
12
|
+
<description>
|
|
13
|
+
991 files exist in `/AuditDoc`, above the limit of 990.
|
|
14
|
+
<!--valid09.zip with 'image0001.gif' etc. added to AuditDoc.-->
|
|
15
|
+
</description>
|
|
16
|
+
<data>
|
|
17
|
+
<instance readMeFirst="true">invalid01.zip</instance>
|
|
18
|
+
</data>
|
|
19
|
+
<result>
|
|
20
|
+
<error>EDINET.EC0198E</error>
|
|
21
|
+
</result>
|
|
22
|
+
</variation>
|
|
23
|
+
</testcase>
|
|
Binary file
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
<testcases name="EDINET">
|
|
3
3
|
<testcase uri="EC0121E/index.xml" />
|
|
4
4
|
<testcase uri="EC0124E/index.xml" />
|
|
5
|
+
<testcase uri="EC0129E/index.xml" />
|
|
6
|
+
<testcase uri="EC0130E/index.xml" />
|
|
5
7
|
<testcase uri="EC0132E/index.xml" />
|
|
8
|
+
<testcase uri="EC0188E/index.xml" />
|
|
9
|
+
<testcase uri="EC0198E/index.xml" />
|
|
6
10
|
<testcase uri="valid/index.xml" />
|
|
7
11
|
</testcases>
|
|
@@ -10,11 +10,190 @@
|
|
|
10
10
|
xsi:schemaLocation="http://xbrl.org/2005/conformance https://www.xbrl.org/2005/conformance.xsd">
|
|
11
11
|
<variation id="valid01" name="valid01">
|
|
12
12
|
<description>
|
|
13
|
-
|
|
13
|
+
Sample filing.
|
|
14
|
+
01_開示府令-有価証券届出書
|
|
15
|
+
01_Disclosure Ordinance-Securities Registration Statement
|
|
14
16
|
</description>
|
|
15
17
|
<data>
|
|
16
18
|
<instance readMeFirst="true">valid01.zip</instance>
|
|
17
19
|
</data>
|
|
18
20
|
<result expected="valid"/>
|
|
19
21
|
</variation>
|
|
22
|
+
<variation id="valid02" name="valid02">
|
|
23
|
+
<description>
|
|
24
|
+
Sample filing.
|
|
25
|
+
02_開示府令-有価証券報告書
|
|
26
|
+
02_Disclosure Ordinance-Securities Report
|
|
27
|
+
</description>
|
|
28
|
+
<data>
|
|
29
|
+
<instance readMeFirst="true">valid02.zip</instance>
|
|
30
|
+
</data>
|
|
31
|
+
<result expected="valid"/>
|
|
32
|
+
</variation>
|
|
33
|
+
<variation id="valid03" name="valid03">
|
|
34
|
+
<description>
|
|
35
|
+
Sample filing.
|
|
36
|
+
03_開示府令-IFRS有価証券報告書
|
|
37
|
+
03_Disclosure Ordinance-IFRS Securities Report
|
|
38
|
+
</description>
|
|
39
|
+
<data>
|
|
40
|
+
<instance readMeFirst="true">valid03.zip</instance>
|
|
41
|
+
</data>
|
|
42
|
+
<result expected="valid"/>
|
|
43
|
+
</variation>
|
|
44
|
+
<variation id="valid04" name="valid04">
|
|
45
|
+
<description>
|
|
46
|
+
Sample filing.
|
|
47
|
+
04_開示府令-半期報告書(第四号の三様式、銀行業)
|
|
48
|
+
04_Disclosure Ordinance-Semi-Annual Report (Form 4-3, Banking Industry)
|
|
49
|
+
</description>
|
|
50
|
+
<data>
|
|
51
|
+
<instance readMeFirst="true">valid04.zip</instance>
|
|
52
|
+
</data>
|
|
53
|
+
<result expected="valid"/>
|
|
54
|
+
</variation>
|
|
55
|
+
<variation id="valid05" name="valid05">
|
|
56
|
+
<description>
|
|
57
|
+
Sample filing.
|
|
58
|
+
05_開示府令-半期報告書(第四号の三様式、建設業)
|
|
59
|
+
05_Disclosure Ordinance-Semi-Annual Report (Form 4-3, Construction Industry)
|
|
60
|
+
<!--Modified from original to replace reference to "http://www.xbrl.org/2003/xbrl-instance-2003-09-30.xsd" with "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd".-->
|
|
61
|
+
</description>
|
|
62
|
+
<data>
|
|
63
|
+
<instance readMeFirst="true">valid05.zip</instance>
|
|
64
|
+
</data>
|
|
65
|
+
<result expected="valid"/>
|
|
66
|
+
</variation>
|
|
67
|
+
<variation id="valid06" name="valid06">
|
|
68
|
+
<description>
|
|
69
|
+
Sample filing.
|
|
70
|
+
06_開示府令-半期報告書(第五号様式、鉄道業)
|
|
71
|
+
06_Disclosure Ordinance-Semi-Annual Report (Form 5, Railway Industry)
|
|
72
|
+
</description>
|
|
73
|
+
<data>
|
|
74
|
+
<instance readMeFirst="true">valid06.zip</instance>
|
|
75
|
+
</data>
|
|
76
|
+
<result expected="valid"/>
|
|
77
|
+
</variation>
|
|
78
|
+
<variation id="valid07" name="valid07">
|
|
79
|
+
<description>
|
|
80
|
+
Sample filing.
|
|
81
|
+
07_開示府令-発行登録書
|
|
82
|
+
07_Disclosure Ordinance-Shelf Registration Statement
|
|
83
|
+
</description>
|
|
84
|
+
<data>
|
|
85
|
+
<instance readMeFirst="true">valid07.zip</instance>
|
|
86
|
+
</data>
|
|
87
|
+
<result expected="valid"/>
|
|
88
|
+
</variation>
|
|
89
|
+
<variation id="valid08" name="valid08">
|
|
90
|
+
<description>
|
|
91
|
+
Sample filing.
|
|
92
|
+
08_開示府令-発行登録追補書類
|
|
93
|
+
08_Disclosure Ordinance-Shelf Registration Supplement
|
|
94
|
+
</description>
|
|
95
|
+
<data>
|
|
96
|
+
<instance readMeFirst="true">valid08.zip</instance>
|
|
97
|
+
</data>
|
|
98
|
+
<result expected="valid"/>
|
|
99
|
+
</variation>
|
|
100
|
+
<variation id="valid09" name="valid09">
|
|
101
|
+
<description>
|
|
102
|
+
Sample filing.
|
|
103
|
+
09_開示府令-臨時報告書
|
|
104
|
+
09_Disclosure of the Government Order-Interim Report
|
|
105
|
+
</description>
|
|
106
|
+
<data>
|
|
107
|
+
<instance readMeFirst="true">valid09.zip</instance>
|
|
108
|
+
</data>
|
|
109
|
+
<result expected="valid"/>
|
|
110
|
+
</variation>
|
|
111
|
+
<variation id="valid10" name="valid10">
|
|
112
|
+
<description>
|
|
113
|
+
Sample filing.
|
|
114
|
+
10_特定有価証券府令-有価証券届出書
|
|
115
|
+
10_Specific Securities Ordinance - Securities Registration Statement
|
|
116
|
+
</description>
|
|
117
|
+
<data>
|
|
118
|
+
<instance readMeFirst="true">valid10.zip</instance>
|
|
119
|
+
</data>
|
|
120
|
+
<result expected="valid"/>
|
|
121
|
+
</variation>
|
|
122
|
+
<variation id="valid11" name="valid11">
|
|
123
|
+
<description>
|
|
124
|
+
Sample filing.
|
|
125
|
+
11_特定有価証券府令-有価証券報告書【みなし有価証券届出書】
|
|
126
|
+
11_Specific Securities Ordinance - Securities Report [Deemed Securities Registration Statement]
|
|
127
|
+
</description>
|
|
128
|
+
<data>
|
|
129
|
+
<instance readMeFirst="true">valid11.zip</instance>
|
|
130
|
+
</data>
|
|
131
|
+
<result expected="valid"/>
|
|
132
|
+
</variation>
|
|
133
|
+
<variation id="valid12" name="valid12">
|
|
134
|
+
<description>
|
|
135
|
+
Sample filing.
|
|
136
|
+
12_特定有価証券府令-半期報告書【みなし訂正有価証券届出書】
|
|
137
|
+
12_Specific Securities Ordinance - Semiannual Report [Deemed Amended Securities Registration Statement]
|
|
138
|
+
</description>
|
|
139
|
+
<data>
|
|
140
|
+
<instance readMeFirst="true">valid12.zip</instance>
|
|
141
|
+
</data>
|
|
142
|
+
<result expected="valid"/>
|
|
143
|
+
</variation>
|
|
144
|
+
<variation id="valid13" name="valid13">
|
|
145
|
+
<description>
|
|
146
|
+
Sample filing.
|
|
147
|
+
13_特定有価証券府令-発行登録書
|
|
148
|
+
13_Specific Securities Ordinance - Shelf Registration Statement
|
|
149
|
+
</description>
|
|
150
|
+
<data>
|
|
151
|
+
<instance readMeFirst="true">valid13.zip</instance>
|
|
152
|
+
</data>
|
|
153
|
+
<result expected="valid"/>
|
|
154
|
+
</variation>
|
|
155
|
+
<variation id="valid14" name="valid14">
|
|
156
|
+
<description>
|
|
157
|
+
Sample filing.
|
|
158
|
+
14_特定有価証券府令-発行登録追補書類
|
|
159
|
+
14_Specific Securities Ordinance - Shelf Registration Supplement
|
|
160
|
+
</description>
|
|
161
|
+
<data>
|
|
162
|
+
<instance readMeFirst="true">valid14.zip</instance>
|
|
163
|
+
</data>
|
|
164
|
+
<result expected="valid"/>
|
|
165
|
+
</variation>
|
|
166
|
+
<variation id="valid20" name="valid20">
|
|
167
|
+
<description>
|
|
168
|
+
Sample filing.
|
|
169
|
+
20_開示府令-訂正有価証券報告書
|
|
170
|
+
20_Disclosure Ordinance-Amendment of Securities Reports
|
|
171
|
+
</description>
|
|
172
|
+
<data>
|
|
173
|
+
<instance readMeFirst="true">valid20.zip</instance>
|
|
174
|
+
</data>
|
|
175
|
+
<result expected="valid"/>
|
|
176
|
+
</variation>
|
|
177
|
+
<variation id="valid21" name="valid21">
|
|
178
|
+
<description>
|
|
179
|
+
Sample filing.
|
|
180
|
+
21_特定有価証券府令-訂正有価証券届出書
|
|
181
|
+
21_Specific Securities Ordinance-Amendment of Securities Registration Statement
|
|
182
|
+
</description>
|
|
183
|
+
<data>
|
|
184
|
+
<instance readMeFirst="true">valid21.zip</instance>
|
|
185
|
+
</data>
|
|
186
|
+
<result expected="valid"/>
|
|
187
|
+
</variation>
|
|
188
|
+
<variation id="valid22" name="valid22">
|
|
189
|
+
<description>
|
|
190
|
+
Sample filing.
|
|
191
|
+
22_特定有価証券府令-訂正有価証券報告書【みなし訂正有価証券届出書】
|
|
192
|
+
22_Specific Securities Ordinance-Amendment of Securities Report [Deemed Amendment of Securities Registration Statement]
|
|
193
|
+
</description>
|
|
194
|
+
<data>
|
|
195
|
+
<instance readMeFirst="true">valid22.zip</instance>
|
|
196
|
+
</data>
|
|
197
|
+
<result expected="valid"/>
|
|
198
|
+
</variation>
|
|
20
199
|
</testcase>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"EC0121E/index.xml:invalid01": 0.021397107151465426,
|
|
3
|
+
"EC0124E/index.xml:invalid01": 0.025065859647180982,
|
|
4
|
+
"EC0129E/index.xml:invalid01": 0.025710372240162902,
|
|
5
|
+
"EC0130E/index.xml:invalid01": 0.024780983764080007,
|
|
6
|
+
"EC0132E/index.xml:invalid01": 0.02462372305348644,
|
|
7
|
+
"EC0188E/index.xml:invalid01": 0.024174226776656742,
|
|
8
|
+
"valid/index.xml:valid01": 2.218586479322035,
|
|
9
|
+
"valid/index.xml:valid02": 1.8975368535376134,
|
|
10
|
+
"valid/index.xml:valid03": 2.1517138064207777,
|
|
11
|
+
"valid/index.xml:valid04": 1.8392213759599199,
|
|
12
|
+
"valid/index.xml:valid05": 1.473965575088599,
|
|
13
|
+
"valid/index.xml:valid06": 1.8527121706182885,
|
|
14
|
+
"valid/index.xml:valid07": 0.34719477053453607,
|
|
15
|
+
"valid/index.xml:valid08": 0.3564396889215411,
|
|
16
|
+
"valid/index.xml:valid09": 0.02052188435627358,
|
|
17
|
+
"valid/index.xml:valid10": 1.9058721497364142,
|
|
18
|
+
"valid/index.xml:valid11": 1.9128932407916943,
|
|
19
|
+
"valid/index.xml:valid12": 1.030585801767353,
|
|
20
|
+
"valid/index.xml:valid13": 0.06919699768273625,
|
|
21
|
+
"valid/index.xml:valid14": 0.07040565868529285,
|
|
22
|
+
"valid/index.xml:valid20": 1.8975022356808997,
|
|
23
|
+
"valid/index.xml:valid21": 1.8989700484311731,
|
|
24
|
+
"valid/index.xml:valid22": 1.9109289898318178,
|
|
25
|
+
"<mean>": 10.105569713860346,
|
|
26
|
+
"<stdev>": 9.295345555978425
|
|
27
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|