arelle-release 2.37.46__py3-none-any.whl → 2.38.0__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.
- arelle/BetaFeatures.py +0 -21
- arelle/Cntlr.py +15 -8
- arelle/CntlrCmdLine.py +121 -56
- arelle/CntlrWinMain.py +143 -70
- arelle/DialogFind.py +1 -1
- arelle/DialogPluginManager.py +6 -4
- arelle/DisclosureSystem.py +7 -0
- arelle/ErrorManager.py +21 -6
- arelle/FileSource.py +11 -4
- arelle/FunctionIxt.py +16 -11
- arelle/HtmlUtil.py +5 -4
- arelle/LeiUtil.py +63 -43
- arelle/ModelDocument.py +20 -15
- arelle/ModelDtsObject.py +8 -0
- arelle/ModelInstanceObject.py +1 -1
- arelle/ModelObject.py +16 -18
- arelle/ModelObjectFactory.py +35 -17
- arelle/ModelXbrl.py +28 -11
- arelle/PluginManager.py +130 -105
- arelle/RuntimeOptions.py +1 -0
- arelle/UrlUtil.py +14 -0
- arelle/Validate.py +17 -12
- arelle/ValidateDuplicateFacts.py +3 -1
- arelle/ValidateFileSource.py +38 -0
- arelle/ValidateFilingText.py +3 -3
- arelle/ValidateXbrl.py +5 -2
- arelle/ValidateXbrlCalcs.py +210 -186
- arelle/ValidateXbrlDTS.py +1 -1
- arelle/ViewFile.py +1 -0
- arelle/ViewFileFactTable.py +2 -2
- arelle/ViewWinDTS.py +4 -1
- arelle/WebCache.py +28 -24
- arelle/XbrlConst.py +22 -0
- arelle/XmlUtil.py +16 -21
- arelle/XmlValidate.py +6 -9
- arelle/_version.py +16 -3
- arelle/api/Session.py +11 -2
- arelle/config/disclosuresystems.xsd +2 -0
- arelle/config/rosettaEntitlements.plist +8 -0
- arelle/conformance/CSVTestcaseLoader.py +1 -1
- arelle/formula/XPathContext.py +3 -3
- arelle/logging/formatters/LogFormatter.py +3 -1
- arelle/packages/report/ReportPackage.py +26 -13
- arelle/packages/report/ReportPackageConst.py +0 -1
- arelle/plugin/inlineXbrlDocumentSet.py +19 -5
- arelle/plugin/validate/DBA/DisclosureSystems.py +19 -1
- arelle/plugin/validate/DBA/PluginValidationDataExtension.py +2 -4
- arelle/plugin/validate/DBA/ValidationPluginExtension.py +2 -1
- arelle/plugin/validate/DBA/resources/config.xml +5 -0
- arelle/plugin/validate/DBA/rules/__init__.py +2 -2
- arelle/plugin/validate/DBA/rules/fr.py +19 -2
- arelle/plugin/validate/DBA/rules/tc.py +2 -0
- arelle/plugin/validate/DBA/rules/th.py +6 -0
- arelle/plugin/validate/DBA/rules/tm.py +18 -5
- arelle/plugin/validate/DBA/rules/tr.py +11 -5
- arelle/plugin/validate/EDINET/Constants.py +193 -9
- arelle/plugin/validate/EDINET/ContextRequirement.py +58 -0
- arelle/plugin/validate/EDINET/ControllerPluginData.py +220 -1
- arelle/plugin/validate/EDINET/CoverItemRequirements.py +42 -0
- arelle/plugin/validate/EDINET/DeiRequirements.py +118 -0
- arelle/plugin/validate/EDINET/FilingFormat.py +275 -0
- arelle/plugin/validate/EDINET/FormType.py +134 -0
- arelle/plugin/validate/EDINET/ManifestInstance.py +72 -5
- arelle/plugin/validate/EDINET/NamespaceConfig.py +50 -0
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +493 -132
- arelle/plugin/validate/EDINET/{InstanceType.py → ReportFolderType.py} +72 -15
- arelle/plugin/validate/EDINET/Statement.py +139 -0
- arelle/plugin/validate/EDINET/TableOfContentsBuilder.py +595 -0
- arelle/plugin/validate/EDINET/UploadContents.py +48 -0
- arelle/plugin/validate/EDINET/ValidationPluginExtension.py +20 -2
- arelle/plugin/validate/EDINET/__init__.py +31 -6
- arelle/plugin/validate/EDINET/resources/config.xml +8 -1
- arelle/plugin/validate/EDINET/resources/cover-item-requirements.json +793 -0
- arelle/plugin/validate/EDINET/resources/dei-requirements.csv +27 -0
- arelle/plugin/validate/EDINET/resources/edinet-taxonomies.xml +2 -0
- arelle/plugin/validate/EDINET/rules/contexts.py +375 -14
- arelle/plugin/validate/EDINET/rules/edinet.py +1934 -45
- arelle/plugin/validate/EDINET/rules/frta.py +122 -3
- arelle/plugin/validate/EDINET/rules/gfm.py +1907 -11
- arelle/plugin/validate/EDINET/rules/upload.py +989 -141
- arelle/plugin/validate/ESEF/Const.py +3 -1
- arelle/plugin/validate/ESEF/ESEF_2021/DTS.py +5 -0
- arelle/plugin/validate/ESEF/ESEF_2021/Image.py +2 -2
- arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +23 -20
- arelle/plugin/validate/ESEF/ESEF_Current/DTS.py +47 -14
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +100 -25
- arelle/plugin/validate/ESEF/__init__.py +20 -6
- arelle/plugin/validate/ESEF/resources/authority-validations.json +76 -9
- arelle/plugin/validate/ESEF/resources/config.xml +20 -0
- arelle/plugin/validate/NL/DisclosureSystems.py +22 -0
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +27 -9
- arelle/plugin/validate/NL/ValidationPluginExtension.py +51 -7
- arelle/plugin/validate/NL/resources/config.xml +18 -0
- arelle/plugin/validate/NL/rules/br_kvk.py +17 -61
- arelle/plugin/validate/NL/rules/fg_nl.py +7 -38
- arelle/plugin/validate/NL/rules/fr_kvk.py +7 -42
- arelle/plugin/validate/NL/rules/fr_nl.py +31 -147
- arelle/plugin/validate/NL/rules/nl_kvk.py +142 -28
- arelle/plugin/validate/ROS/PluginValidationDataExtension.py +2 -0
- arelle/plugin/validate/ROS/ValidationPluginExtension.py +4 -1
- arelle/plugin/validate/ROS/rules/ros.py +41 -9
- arelle/plugin/validate/UK/ValidateUK.py +130 -66
- arelle/plugin/validate/UK/__init__.py +89 -103
- arelle/utils/EntryPointDetection.py +79 -13
- arelle/utils/PluginHooks.py +125 -0
- arelle/utils/validate/ESEFImage.py +6 -6
- arelle/utils/validate/Validation.py +18 -0
- arelle/utils/validate/ValidationPlugin.py +76 -11
- arelle/utils/validate/ValidationUtil.py +35 -3
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/METADATA +30 -20
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/RECORD +115 -191
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/licenses/LICENSE.md +0 -3
- arelle/archive/CustomLogger.py +0 -43
- arelle/archive/LoadEFMvalidate.py +0 -32
- arelle/archive/LoadSavePreLbCsv.py +0 -26
- arelle/archive/LoadValidate.cs +0 -31
- arelle/archive/LoadValidate.py +0 -36
- arelle/archive/LoadValidateCmdLine.java +0 -69
- arelle/archive/LoadValidatePostedZip.java +0 -57
- arelle/archive/LoadValidateWebService.java +0 -34
- arelle/archive/SaveTableToExelle.py +0 -140
- arelle/archive/TR3toTR4.py +0 -88
- arelle/archive/plugin/ESEF_2022/__init__.py +0 -47
- arelle/archive/plugin/bigInstance.py +0 -394
- arelle/archive/plugin/cmdWebServerExtension.py +0 -43
- arelle/archive/plugin/crashTest.py +0 -38
- arelle/archive/plugin/functionsXmlCreation.py +0 -106
- arelle/archive/plugin/hello_i18n.pot +0 -26
- arelle/archive/plugin/hello_i18n.py +0 -32
- arelle/archive/plugin/importTestChild1.py +0 -21
- arelle/archive/plugin/importTestChild2.py +0 -22
- arelle/archive/plugin/importTestGrandchild1.py +0 -21
- arelle/archive/plugin/importTestGrandchild2.py +0 -21
- arelle/archive/plugin/importTestImported1.py +0 -23
- arelle/archive/plugin/importTestImported11.py +0 -22
- arelle/archive/plugin/importTestParent.py +0 -48
- arelle/archive/plugin/instanceInfo.py +0 -306
- arelle/archive/plugin/loadFromOIM-2018.py +0 -1282
- arelle/archive/plugin/locale/fr/LC_MESSAGES/hello_i18n.po +0 -25
- arelle/archive/plugin/objectmaker.py +0 -285
- arelle/archive/plugin/packagedImportTest/__init__.py +0 -47
- arelle/archive/plugin/packagedImportTest/importTestChild1.py +0 -21
- arelle/archive/plugin/packagedImportTest/importTestChild2.py +0 -22
- arelle/archive/plugin/packagedImportTest/importTestGrandchild1.py +0 -21
- arelle/archive/plugin/packagedImportTest/importTestGrandchild2.py +0 -21
- arelle/archive/plugin/packagedImportTest/importTestImported1.py +0 -24
- arelle/archive/plugin/packagedImportTest/importTestImported11.py +0 -21
- arelle/archive/plugin/packagedImportTest/subdir/importTestImported111.py +0 -21
- arelle/archive/plugin/packagedImportTest/subdir/subsubdir/importTestImported1111.py +0 -21
- arelle/archive/plugin/sakaCalendar.py +0 -215
- arelle/archive/plugin/saveInstanceInfoset.py +0 -121
- arelle/archive/plugin/sphinx/FormulaGenerator.py +0 -823
- arelle/archive/plugin/sphinx/SphinxContext.py +0 -404
- arelle/archive/plugin/sphinx/SphinxEvaluator.py +0 -783
- arelle/archive/plugin/sphinx/SphinxMethods.py +0 -1287
- arelle/archive/plugin/sphinx/SphinxParser.py +0 -1093
- arelle/archive/plugin/sphinx/SphinxValidator.py +0 -163
- arelle/archive/plugin/sphinx/US-GAAP Ratios Example.xsr +0 -52
- arelle/archive/plugin/sphinx/__init__.py +0 -285
- arelle/archive/plugin/streamingExtensions.py +0 -335
- arelle/archive/plugin/updateTableLB.py +0 -242
- arelle/archive/plugin/validate/SBRnl/CustomLoader.py +0 -19
- arelle/archive/plugin/validate/SBRnl/DTS.py +0 -305
- arelle/archive/plugin/validate/SBRnl/Dimensions.py +0 -357
- arelle/archive/plugin/validate/SBRnl/Document.py +0 -799
- arelle/archive/plugin/validate/SBRnl/Filing.py +0 -467
- arelle/archive/plugin/validate/SBRnl/__init__.py +0 -75
- arelle/archive/plugin/validate/SBRnl/config.xml +0 -26
- arelle/archive/plugin/validate/SBRnl/sbr-nl-taxonomies.xml +0 -754
- arelle/archive/plugin/validate/USBestPractices.py +0 -570
- arelle/archive/plugin/validate/USCorpAction.py +0 -557
- arelle/archive/plugin/validate/USSecTagging.py +0 -337
- arelle/archive/plugin/validate/XDC/__init__.py +0 -77
- arelle/archive/plugin/validate/XDC/config.xml +0 -20
- arelle/archive/plugin/validate/XFsyntax/__init__.py +0 -64
- arelle/archive/plugin/validate/XFsyntax/xf.py +0 -2227
- arelle/archive/plugin/validate/calc2.py +0 -536
- arelle/archive/plugin/validateSchemaLxml.py +0 -156
- arelle/archive/plugin/validateTableInfoset.py +0 -52
- arelle/archive/us-gaap-dei-docType-extraction-frm.xml +0 -90
- arelle/archive/us-gaap-dei-ratio-cash-frm.xml +0 -150
- arelle/examples/plugin/formulaSuiteConverter.py +0 -212
- arelle/examples/plugin/functionsCustom.py +0 -59
- arelle/examples/plugin/hello_dolly.py +0 -64
- arelle/examples/plugin/multi.py +0 -58
- arelle/examples/plugin/rssSaveOim.py +0 -96
- arelle/examples/plugin/validate/XYZ/DisclosureSystems.py +0 -2
- arelle/examples/plugin/validate/XYZ/PluginValidationDataExtension.py +0 -10
- arelle/examples/plugin/validate/XYZ/ValidationPluginExtension.py +0 -49
- arelle/examples/plugin/validate/XYZ/__init__.py +0 -75
- arelle/examples/plugin/validate/XYZ/resources/config.xml +0 -16
- arelle/examples/plugin/validate/XYZ/rules/__init__.py +0 -0
- arelle/examples/plugin/validate/XYZ/rules/rules01.py +0 -110
- arelle/examples/plugin/validate/XYZ/rules/rules02.py +0 -59
- arelle/model/CommentBase.py +0 -9
- arelle/model/ElementBase.py +0 -11
- arelle/model/PIBase.py +0 -10
- arelle/model/__init__.py +0 -15
- arelle/scripts-macOS/startWebServer.command +0 -3
- arelle/scripts-unix/startWebServer.sh +0 -1
- arelle/scripts-windows/startWebServer.bat +0 -5
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/top_level.txt +0 -0
|
@@ -7,17 +7,20 @@ from enum import Enum
|
|
|
7
7
|
from functools import cached_property, lru_cache
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
|
|
10
|
+
from regex import Pattern
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
from . import Constants
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ReportFolderType(Enum):
|
|
12
16
|
ATTACH_DOC = "AttachDoc"
|
|
13
17
|
AUDIT_DOC = "AuditDoc"
|
|
14
|
-
ENGLISH_DOC = "EnglishDoc"
|
|
15
18
|
PRIVATE_ATTACH = "PrivateAttach"
|
|
16
19
|
PRIVATE_DOC = "PrivateDoc"
|
|
17
20
|
PUBLIC_DOC = "PublicDoc"
|
|
18
21
|
|
|
19
22
|
@classmethod
|
|
20
|
-
def parse(cls, value: str) ->
|
|
23
|
+
def parse(cls, value: str) -> ReportFolderType | None:
|
|
21
24
|
try:
|
|
22
25
|
return cls(value)
|
|
23
26
|
except ValueError:
|
|
@@ -27,6 +30,14 @@ class InstanceType(Enum):
|
|
|
27
30
|
def extensionCategory(self) -> ExtensionCategory | None:
|
|
28
31
|
return FORM_TYPE_EXTENSION_CATEGORIES.get(self, None)
|
|
29
32
|
|
|
33
|
+
@cached_property
|
|
34
|
+
def isAttachment(self) -> bool:
|
|
35
|
+
return "Attach" in self.value
|
|
36
|
+
|
|
37
|
+
@cached_property
|
|
38
|
+
def ixbrlFilenamePatterns(self) -> list[Pattern[str]]:
|
|
39
|
+
return IXBRL_FILENAME_PATTERNS.get(self, [])
|
|
40
|
+
|
|
30
41
|
@cached_property
|
|
31
42
|
def manifestName(self) -> str:
|
|
32
43
|
return f'manifest_{self.value}.xml'
|
|
@@ -35,10 +46,22 @@ class InstanceType(Enum):
|
|
|
35
46
|
def manifestPath(self) -> Path:
|
|
36
47
|
return self.xbrlDirectory / self.manifestName
|
|
37
48
|
|
|
49
|
+
@cached_property
|
|
50
|
+
def namespaceUriPatterns(self) -> list[Pattern[str]]:
|
|
51
|
+
return NAMESPACE_URI_PATTERNS.get(self, [])
|
|
52
|
+
|
|
53
|
+
@cached_property
|
|
54
|
+
def prefixPatterns(self) -> list[Pattern[str]]:
|
|
55
|
+
return PREFIX_PATTERNS.get(self, [])
|
|
56
|
+
|
|
38
57
|
@cached_property
|
|
39
58
|
def xbrlDirectory(self) -> Path:
|
|
40
59
|
return Path('XBRL') / str(self.value)
|
|
41
60
|
|
|
61
|
+
@cached_property
|
|
62
|
+
def xbrlFilenamePatterns(self) -> list[Pattern[str]]:
|
|
63
|
+
return XBRL_FILENAME_PATTERNS.get(self, [])
|
|
64
|
+
|
|
42
65
|
@lru_cache(1)
|
|
43
66
|
def getValidExtensions(self, isAmendment: bool, isSubdirectory: bool) -> frozenset[str] | None:
|
|
44
67
|
if self.extensionCategory is None:
|
|
@@ -49,7 +72,6 @@ class InstanceType(Enum):
|
|
|
49
72
|
class ExtensionCategory(Enum):
|
|
50
73
|
ATTACH = 'ATTACH'
|
|
51
74
|
DOC = 'DOC'
|
|
52
|
-
ENGLISH_DOC = 'ENGLISH_DOC'
|
|
53
75
|
|
|
54
76
|
def getValidExtensions(self, isAmendment: bool, isSubdirectory: bool) -> frozenset[str] | None:
|
|
55
77
|
amendmentMap = VALID_EXTENSIONS[isAmendment]
|
|
@@ -60,12 +82,11 @@ class ExtensionCategory(Enum):
|
|
|
60
82
|
|
|
61
83
|
|
|
62
84
|
FORM_TYPE_EXTENSION_CATEGORIES = {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
InstanceType.PUBLIC_DOC: ExtensionCategory.DOC,
|
|
85
|
+
ReportFolderType.ATTACH_DOC: ExtensionCategory.ATTACH,
|
|
86
|
+
ReportFolderType.AUDIT_DOC: ExtensionCategory.DOC,
|
|
87
|
+
ReportFolderType.PRIVATE_ATTACH: ExtensionCategory.ATTACH,
|
|
88
|
+
ReportFolderType.PRIVATE_DOC: ExtensionCategory.DOC,
|
|
89
|
+
ReportFolderType.PUBLIC_DOC: ExtensionCategory.DOC,
|
|
69
90
|
}
|
|
70
91
|
|
|
71
92
|
|
|
@@ -74,7 +95,6 @@ IMAGE_EXTENSIONS = frozenset({'.jpeg', '.jpg', '.gif', '.png'})
|
|
|
74
95
|
ASSET_EXTENSIONS = frozenset(HTML_EXTENSIONS | IMAGE_EXTENSIONS)
|
|
75
96
|
XBRL_EXTENSIONS = frozenset(HTML_EXTENSIONS | {'.xml', '.xsd'})
|
|
76
97
|
ATTACH_EXTENSIONS = frozenset(HTML_EXTENSIONS | {'.pdf', })
|
|
77
|
-
ENGLISH_DOC_EXTENSIONS = frozenset(ASSET_EXTENSIONS | frozenset({'.pdf', '.xml', '.txt'}))
|
|
78
98
|
|
|
79
99
|
# Is Amendment -> Category -> Is Subdirectory
|
|
80
100
|
VALID_EXTENSIONS = {
|
|
@@ -97,9 +117,46 @@ VALID_EXTENSIONS = {
|
|
|
97
117
|
False: HTML_EXTENSIONS,
|
|
98
118
|
True: ASSET_EXTENSIONS,
|
|
99
119
|
},
|
|
100
|
-
ExtensionCategory.ENGLISH_DOC: {
|
|
101
|
-
False: ENGLISH_DOC_EXTENSIONS,
|
|
102
|
-
True: ENGLISH_DOC_EXTENSIONS,
|
|
103
|
-
},
|
|
104
120
|
},
|
|
105
121
|
}
|
|
122
|
+
|
|
123
|
+
IXBRL_FILENAME_PATTERNS = {
|
|
124
|
+
ReportFolderType.AUDIT_DOC: [
|
|
125
|
+
Constants.AUDIT_IXBRL_FILENAME_PATTERN,
|
|
126
|
+
Constants.AUDIT_LINKBASE_FILENAME_PATTERN,
|
|
127
|
+
Constants.AUDIT_SCHEMA_FILENAME_PATTERN,
|
|
128
|
+
],
|
|
129
|
+
ReportFolderType.PUBLIC_DOC: [
|
|
130
|
+
Constants.REPORT_COVER_FILENAME_PATTERN,
|
|
131
|
+
Constants.REPORT_IXBRL_FILENAME_PATTERN,
|
|
132
|
+
Constants.REPORT_LINKBASE_FILENAME_PATTERN,
|
|
133
|
+
Constants.REPORT_SCHEMA_FILENAME_PATTERN,
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
NAMESPACE_URI_PATTERNS = {
|
|
138
|
+
ReportFolderType.AUDIT_DOC: [
|
|
139
|
+
Constants.AUDIT_NAMESPACE_PATTERN,
|
|
140
|
+
],
|
|
141
|
+
ReportFolderType.PUBLIC_DOC: [
|
|
142
|
+
Constants.REPORT_NAMESPACE_PATTERN,
|
|
143
|
+
],
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
PREFIX_PATTERNS = {
|
|
147
|
+
ReportFolderType.AUDIT_DOC: [
|
|
148
|
+
Constants.AUDIT_PREFIX_PATTERN,
|
|
149
|
+
],
|
|
150
|
+
ReportFolderType.PUBLIC_DOC: [
|
|
151
|
+
Constants.REPORT_PREFIX_PATTERN,
|
|
152
|
+
],
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
XBRL_FILENAME_PATTERNS = {
|
|
156
|
+
ReportFolderType.AUDIT_DOC: [
|
|
157
|
+
Constants.AUDIT_XBRL_FILENAME_PATTERN,
|
|
158
|
+
],
|
|
159
|
+
ReportFolderType.PUBLIC_DOC: [
|
|
160
|
+
Constants.REPORT_XBRL_FILENAME_PATTERN,
|
|
161
|
+
],
|
|
162
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from decimal import Decimal
|
|
3
|
+
from enum import Enum
|
|
4
|
+
|
|
5
|
+
import regex
|
|
6
|
+
|
|
7
|
+
from arelle.ModelInstanceObject import ModelFact
|
|
8
|
+
|
|
9
|
+
CONSOLIDATED_ROLE_URI_PATTERN = regex.compile(r'.*rol_[\w]*Consolidated')
|
|
10
|
+
|
|
11
|
+
STATEMENT_ROLE_URIS = frozenset([
|
|
12
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodConsolidatedStatementOfComprehensiveIncomeIFRS',
|
|
13
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
14
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodConsolidatedStatementOfProfitOrLossIFRS',
|
|
15
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodStatementOfComprehensiveIncomeIFRS',
|
|
16
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
17
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodStatementOfProfitOrLossIFRS',
|
|
18
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfCashFlowsIFRS',
|
|
19
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfChangesInEquityIFRS',
|
|
20
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfComprehensiveIncomeIFRS',
|
|
21
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
22
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfFinancialPositionIFRS',
|
|
23
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfProfitOrLossIFRS',
|
|
24
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfCashFlowsIFRS',
|
|
25
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfChangesInEquityIFRS',
|
|
26
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfComprehensiveIncomeIFRS',
|
|
27
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
28
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfFinancialPositionIFRS',
|
|
29
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfProfitOrLossIFRS',
|
|
30
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfCashFlowsIFRS',
|
|
31
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfChangesInEquityIFRS',
|
|
32
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfComprehensiveIncomeIFRS',
|
|
33
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
34
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfFinancialPositionIFRS',
|
|
35
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfProfitOrLossIFRS',
|
|
36
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfCashFlowsIFRS',
|
|
37
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfChangesInEquityIFRS',
|
|
38
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfComprehensiveIncomeIFRS',
|
|
39
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
40
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfFinancialPositionIFRS',
|
|
41
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfProfitOrLossIFRS',
|
|
42
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndConsolidatedStatementOfComprehensiveIncomeIFRS',
|
|
43
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
44
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndConsolidatedStatementOfProfitOrLossIFRS',
|
|
45
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndStatementOfComprehensiveIncomeIFRS',
|
|
46
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
47
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndStatementOfProfitOrLossIFRS',
|
|
48
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfCashFlowsIFRS',
|
|
49
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfChangesInEquityIFRS',
|
|
50
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfComprehensiveIncomeIFRS',
|
|
51
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
52
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfFinancialPositionIFRS',
|
|
53
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfProfitOrLossIFRS',
|
|
54
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfCashFlowsIFRS',
|
|
55
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfChangesInEquityIFRS',
|
|
56
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfComprehensiveIncomeIFRS',
|
|
57
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
58
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfFinancialPositionIFRS',
|
|
59
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfProfitOrLossIFRS',
|
|
60
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfCashFlowsIFRS',
|
|
61
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfChangesInEquityIFRS',
|
|
62
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfComprehensiveIncomeIFRS',
|
|
63
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfFinancialPositionIFRS',
|
|
64
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfProfitOrLossIFRS',
|
|
65
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_BalanceSheet',
|
|
66
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedBalanceSheet',
|
|
67
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyBalanceSheet',
|
|
68
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyConsolidatedBalanceSheet',
|
|
69
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualBalanceSheet',
|
|
70
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedBalanceSheet',
|
|
71
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualBalanceSheet',
|
|
72
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualConsolidatedBalanceSheet',
|
|
73
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_BalanceSheet',
|
|
74
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedBalanceSheet',
|
|
75
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyBalanceSheet',
|
|
76
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyConsolidatedBalanceSheet',
|
|
77
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualBalanceSheet',
|
|
78
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedBalanceSheet',
|
|
79
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualBalanceSheet',
|
|
80
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualConsolidatedBalanceSheet',
|
|
81
|
+
])
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class StatementType(Enum):
|
|
85
|
+
BALANCE_SHEET = 'BalanceSheet'
|
|
86
|
+
CONSOLIDATED_BALANCE_SHEET = 'ConsolidatedBalanceSheetIFRS'
|
|
87
|
+
STATEMENT_OF_CASH_FLOWS = 'StatementOfCashFlowsIFRS'
|
|
88
|
+
STATEMENT_OF_CHANGES_IN_EQUITY = 'StatementOfChangesInEquityIFRS'
|
|
89
|
+
STATEMENT_OF_COMPREHENSIVE_INCOME = 'StatementOfComprehensiveIncomeIFRS'
|
|
90
|
+
STATEMENT_OF_COMPREHENSIVE_INCOME_SINGLE_STATEMENT = 'StatementOfComprehensiveIncomeSingleStatementIFRS'
|
|
91
|
+
STATEMENT_OF_FINANCIAL_POSITION = 'StatementOfFinancialPositionIFRS'
|
|
92
|
+
STATEMENT_OF_PROFIT_OR_LOSS = 'StatementOfProfitOrLossIFRS'
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@dataclass(frozen=True)
|
|
96
|
+
class Statement:
|
|
97
|
+
isConsolidated: bool
|
|
98
|
+
roleUri: str
|
|
99
|
+
statementType: StatementType
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@dataclass(frozen=True)
|
|
103
|
+
class BalanceSheet:
|
|
104
|
+
creditSum: Decimal
|
|
105
|
+
contextId: str
|
|
106
|
+
facts: list[ModelFact]
|
|
107
|
+
debitSum: Decimal
|
|
108
|
+
unitId: str
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@dataclass(frozen=True)
|
|
112
|
+
class StatementInstance:
|
|
113
|
+
balanceSheets: list[BalanceSheet]
|
|
114
|
+
statement: Statement
|
|
115
|
+
|
|
116
|
+
def _buildStatements() -> frozenset[Statement]:
|
|
117
|
+
"""
|
|
118
|
+
Build a frozenset of Statement objects from the STATEMENT_ROLE_URIS.
|
|
119
|
+
This is done to avoid re-evaluating the set comprehension multiple times.
|
|
120
|
+
"""
|
|
121
|
+
statements = []
|
|
122
|
+
for roleUri in STATEMENT_ROLE_URIS:
|
|
123
|
+
isConsolidated = bool(CONSOLIDATED_ROLE_URI_PATTERN.match(roleUri))
|
|
124
|
+
statementType=next(
|
|
125
|
+
statementType
|
|
126
|
+
for statementType in StatementType
|
|
127
|
+
if roleUri.endswith(statementType.value)
|
|
128
|
+
)
|
|
129
|
+
statements.append(
|
|
130
|
+
Statement(
|
|
131
|
+
isConsolidated=isConsolidated,
|
|
132
|
+
roleUri=roleUri,
|
|
133
|
+
statementType=statementType
|
|
134
|
+
)
|
|
135
|
+
)
|
|
136
|
+
return frozenset(statements)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
STATEMENTS = _buildStatements()
|