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
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
from .FormType import FormType
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Ordinance(Enum):
|
|
13
|
+
# Source: ESE140110 Guide Attachment 4
|
|
14
|
+
AUDIT_CERTIFICATION = 'aud'
|
|
15
|
+
CORPORATE_AFFAIRS = 'crp'
|
|
16
|
+
IFRS = 'igp'
|
|
17
|
+
INTERNAL_CONTROL = 'ctl'
|
|
18
|
+
JAPANESE_GAAP = 'pfs'
|
|
19
|
+
LARGE_SHAREHOLDING = 'lvh'
|
|
20
|
+
SPECIFIED_SECURITIES = 'sps'
|
|
21
|
+
TENDER_OFFERS_FOR_SHARES_OTHER = 'too'
|
|
22
|
+
TENDER_OFFERS_FOR_SHARES_OWN = 'toi'
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def parse(cls, value: str | None) -> Ordinance | None:
|
|
26
|
+
try:
|
|
27
|
+
return cls(value)
|
|
28
|
+
except ValueError:
|
|
29
|
+
return None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class DocumentType(Enum):
|
|
33
|
+
# Source: ESE140110 Guide Attachment 4
|
|
34
|
+
ANNUAL_SECURITIES_REPORT = 'asr'
|
|
35
|
+
AUDIT_REPORT = 'aar'
|
|
36
|
+
EXTRAORDINARY_REPORT = 'esr'
|
|
37
|
+
INTERIM_AND_INTERNAL_CONTROL_AUDIT_REPORT = 'aai'
|
|
38
|
+
INTERIM_AUDIT_REPORT = 'sar'
|
|
39
|
+
INTERNAL_CONTROL_AUDIT_REPORT = 'iar'
|
|
40
|
+
INTERNAL_CONTROL_REPORT = 'icr'
|
|
41
|
+
LARGE_SHAREHOLDING_REPORT = 'lvh'
|
|
42
|
+
OPINION_STATEMENT = 'pst'
|
|
43
|
+
QUARTERLY_REPORT = 'qsr' # Deprecated?
|
|
44
|
+
QUARTERLY_REVIEW_REPORT = 'qrr'
|
|
45
|
+
RESPONSE_TO_QUESTIONS_REPORT = 'toa'
|
|
46
|
+
SECURITIES_REGISTRATION_STATEMENT = 'srs'
|
|
47
|
+
SECURITIES_REGISTRATION_STATEMENT_DEEMED = 'drs'
|
|
48
|
+
SEMI_ANNUAL_REPORT = 'ssr'
|
|
49
|
+
SHARE_REPURCHASE_STATUS_REPORT = 'sbr'
|
|
50
|
+
SHELF_REGISTRATION_STATEMENT = 'rst'
|
|
51
|
+
SHELF_REGISTRATION_SUPPLEMENT = 'rep'
|
|
52
|
+
TENDER_OFFER_REPORT = 'tor'
|
|
53
|
+
TENDER_OFFER_STATEMENT = 'ton'
|
|
54
|
+
TENDER_OFFER_WITHDRAWAL_NOTICE = 'wto'
|
|
55
|
+
|
|
56
|
+
@classmethod
|
|
57
|
+
def parse(cls, value: str | None) -> DocumentType | None:
|
|
58
|
+
try:
|
|
59
|
+
return cls(value)
|
|
60
|
+
except ValueError:
|
|
61
|
+
return None
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class Taxonomy(Enum):
|
|
65
|
+
# The order of the below taxonomy values is based on Table 2-3-1 in
|
|
66
|
+
# "Framework Design of EDINET Taxonomy" (ESE140301.pdf).The same table was used to
|
|
67
|
+
# determine the applicable taxonomies in the FilingFormat configurations below.
|
|
68
|
+
# The prefixes associated with each taxonomy were inferred from the above
|
|
69
|
+
# document and "(Appendix) Conventions and Rules for EDINET Taxonomy" (ESE140304.pdf)
|
|
70
|
+
DEI = 'jpdei' # 'DEIタクソノミ'
|
|
71
|
+
FINANCIAL_STATEMENT = 'jppfs' # '財務諸表本表タクソノミ'
|
|
72
|
+
IFRS = 'jpigp' # 国際会計基準タクソノミ
|
|
73
|
+
DISCLOSURE_ORDINANCE = 'jpcrp' # '開示府令タクソノミ'
|
|
74
|
+
EXTRAORDINARY_REPORT = 'jpcrp-esr' # '臨時報告書タクソノミ'
|
|
75
|
+
STATUS_OF_SHARE_BUYBACKS = 'jpsps-esr' # '自己株券買付状況報告書タクソノミ'
|
|
76
|
+
CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE = 'jpsps' # '特定有価証券開示府令タクソノミ'
|
|
77
|
+
STATUS_OF_SPECIFIC_SECURITIES_TREASURY_STOCK_PURCHASES = 'jpsps-sbr' # '特定有価証券自己株券買付状況報告書タクソノミ'
|
|
78
|
+
SPECIFIED_SECURITIES_EXTRAORDINARY_REPORT = 'jpsps-esr' # '特定有価証券臨時報告書タクソノミ'
|
|
79
|
+
TENDER_OFFER_NOTIFICATION = 'jptoo-ton' # '他社株公開買付届出書タクソノミ'
|
|
80
|
+
OTHER_COMPANY_OPINION_STATEMENT = 'jptoo-pst' # '他社株意見表明報告書タクソノミ'
|
|
81
|
+
TENDER_OFFER_WITHDRAWAL_NOTIFICATION = 'jptoo-wto' # '他社株公開買付撤回届出書タクソノミ'
|
|
82
|
+
TENDER_OFFER_REPORT = 'jptoo-tor' # '他社株公開買付報告書タクソノミ'
|
|
83
|
+
OTHER_COMPANY_STOCK_QUESTION_AND_ANSWER_REPORT = 'jptoo-toa' # '他社株対質問回答報告書タクソノミ'
|
|
84
|
+
TENDER_OFFER = 'jptoi' # '自社株公開買付タクソノミ'
|
|
85
|
+
LARGE_VOLUME_HOLDINGS = 'jplvh' # '大量保有タクソノミ'
|
|
86
|
+
INTERNAL_CONTROL = 'jpctl' # '内部統制タクソノミ'
|
|
87
|
+
|
|
88
|
+
@classmethod
|
|
89
|
+
def parse(cls, value: str) -> Taxonomy | None:
|
|
90
|
+
try:
|
|
91
|
+
return cls(value)
|
|
92
|
+
except ValueError:
|
|
93
|
+
return None
|
|
94
|
+
|
|
95
|
+
@dataclass(frozen=True)
|
|
96
|
+
class FilingFormat:
|
|
97
|
+
ordinance: Ordinance
|
|
98
|
+
documentType: DocumentType
|
|
99
|
+
formType: FormType
|
|
100
|
+
taxonomies: frozenset[Taxonomy]
|
|
101
|
+
|
|
102
|
+
def includesTaxonomyPrefix(self, prefix: str) -> bool:
|
|
103
|
+
taxonomy = Taxonomy.parse(prefix.split('_')[0])
|
|
104
|
+
return taxonomy is not None and (
|
|
105
|
+
taxonomy == Taxonomy.DEI or # DEI is always included
|
|
106
|
+
taxonomy in self.taxonomies
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
DEFAULT_DISCLOSURE_TAXONOMIES = frozenset({
|
|
110
|
+
Taxonomy.FINANCIAL_STATEMENT,
|
|
111
|
+
Taxonomy.IFRS,
|
|
112
|
+
Taxonomy.DISCLOSURE_ORDINANCE,
|
|
113
|
+
})
|
|
114
|
+
DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES = frozenset({
|
|
115
|
+
Taxonomy.FINANCIAL_STATEMENT,
|
|
116
|
+
Taxonomy.CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE,
|
|
117
|
+
})
|
|
118
|
+
FINANCIAL_STATEMENT_TAXONOMIES = frozenset({
|
|
119
|
+
Taxonomy.DISCLOSURE_ORDINANCE,
|
|
120
|
+
Taxonomy.FINANCIAL_STATEMENT,
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
# The below values are based on Table 2-3-1 in "Framework Design of EDINET Taxonomy" (ESE140301.pdf).
|
|
124
|
+
# The order is preserved. The index is used to map to other data structures. EDINET documentation often
|
|
125
|
+
# references this same list of formats in this same order.
|
|
126
|
+
FILING_FORMATS = (
|
|
127
|
+
# 開示府令
|
|
128
|
+
|
|
129
|
+
# 有価証券届出書 第二号様式
|
|
130
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
131
|
+
# 有価証券届出書 第二号の二様式
|
|
132
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2_2, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
133
|
+
# 有価証券届出書 第二号の三様式
|
|
134
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2_3, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
135
|
+
# 有価証券届出書 第二号の四様式
|
|
136
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2_4, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
137
|
+
# 有価証券届出書 第二号の五様式
|
|
138
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2_5, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
139
|
+
# 有価証券届出書 第二号の六様式
|
|
140
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2_6, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
141
|
+
# 有価証券届出書 第二号の七様式
|
|
142
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_2_7, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
143
|
+
# 有価証券報告書 第三号様式
|
|
144
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_3, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
145
|
+
# 有価証券報告書 第三号の二様式
|
|
146
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_3_2, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
147
|
+
# 有価証券報告書 第四号様式
|
|
148
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_4, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
149
|
+
# 半期報告書 第四号の三様式
|
|
150
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_4_3, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
151
|
+
# 半期報告書 第五号様式
|
|
152
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_5, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
153
|
+
# 半期報告書 第五号の二様式
|
|
154
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_5_2, DEFAULT_DISCLOSURE_TAXONOMIES),
|
|
155
|
+
# 臨時報告書 第五号の三様式
|
|
156
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.EXTRAORDINARY_REPORT, FormType.FORM_5_3, frozenset({Taxonomy.EXTRAORDINARY_REPORT})),
|
|
157
|
+
# 有価証券届出書 第七号様式
|
|
158
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_7, FINANCIAL_STATEMENT_TAXONOMIES),
|
|
159
|
+
# 有価証券届出書 第七号の四様式
|
|
160
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_7_4, FINANCIAL_STATEMENT_TAXONOMIES),
|
|
161
|
+
# 有価証券報告書 第八号様式
|
|
162
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_8, FINANCIAL_STATEMENT_TAXONOMIES),
|
|
163
|
+
# 有価証券報告書 第九号様式
|
|
164
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_9, FINANCIAL_STATEMENT_TAXONOMIES),
|
|
165
|
+
|
|
166
|
+
# 半期報告書 第九号の三様式
|
|
167
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_9_3, FINANCIAL_STATEMENT_TAXONOMIES),
|
|
168
|
+
# 半期報告書 第十号様式
|
|
169
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_10, FINANCIAL_STATEMENT_TAXONOMIES),
|
|
170
|
+
# 発行登録書 第十一号様式
|
|
171
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SHELF_REGISTRATION_STATEMENT, FormType.FORM_11, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
172
|
+
# 発行登録書 第十一号の二様式
|
|
173
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SHELF_REGISTRATION_STATEMENT, FormType.FORM_11_2, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
174
|
+
# 発行登録書 第十一号の二の二様式
|
|
175
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SHELF_REGISTRATION_STATEMENT, FormType.FORM_11_2_2, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
176
|
+
# 発行登録追補書類 第十二号様式
|
|
177
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SHELF_REGISTRATION_SUPPLEMENT, FormType.FORM_12, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
178
|
+
# 発行登録追補書類 第十二号の二様式
|
|
179
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SHELF_REGISTRATION_SUPPLEMENT, FormType.FORM_12_2, frozenset({Taxonomy.DISCLOSURE_ORDINANCE})),
|
|
180
|
+
# 自己株券買付状況報 告書 第十七号様式
|
|
181
|
+
FilingFormat(Ordinance.CORPORATE_AFFAIRS, DocumentType.SHARE_REPURCHASE_STATUS_REPORT, FormType.FORM_17, frozenset({Taxonomy.STATUS_OF_SHARE_BUYBACKS})),
|
|
182
|
+
|
|
183
|
+
# 特定有価証券開示府令
|
|
184
|
+
|
|
185
|
+
# 有価証券届出書 第四号様式
|
|
186
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_4, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
187
|
+
# 有価証券届出書 第四号の三様式
|
|
188
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_4_3, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
189
|
+
# 有価証券届出書 第四号の三の二様式
|
|
190
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_4_3_2, frozenset({Taxonomy.CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE})),
|
|
191
|
+
# 有価証券届出書 第四号の三の三様式
|
|
192
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_4_3_3, frozenset({Taxonomy.CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE})),
|
|
193
|
+
# 有価証券届出書 第五号の二様式
|
|
194
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_5_2, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
195
|
+
# 有価証券届出書 第五号の四様式
|
|
196
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_5_4, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
197
|
+
# 有価証券届出書 第六号様式
|
|
198
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_6, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
199
|
+
# 有価証券届出書 第六号の五様式
|
|
200
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SECURITIES_REGISTRATION_STATEMENT, FormType.FORM_6_5, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
201
|
+
# 有価証券報告書【みなし有価証券届出書】第六号の七及び第七号 様式 - manually switched to ANNUAL_SECURITIES_REPORT
|
|
202
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_6_7_AND_FORM_7, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
203
|
+
# 有価証券報告書【みなし有価証券届出書】第六号の九及び第九号 様式 - manually switched to ANNUAL_SECURITIES_REPORT
|
|
204
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_6_9_AND_FORM_9, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
205
|
+
# 有価証券報告書 第七号様式
|
|
206
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_7, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
207
|
+
# 有価証券報告書 第七号の三様式
|
|
208
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_7_3, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
209
|
+
# 有価証券報告書 第八号の二様式
|
|
210
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_8_2, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
211
|
+
# 有価証券報告書 第八号の四様式
|
|
212
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_8_4, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
213
|
+
# 有価証券報告書 第九号様式
|
|
214
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_9, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
215
|
+
# 有価証券報告書 第九号の五様式
|
|
216
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.ANNUAL_SECURITIES_REPORT, FormType.FORM_9_5, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
217
|
+
# 半期報告書 第十号様式
|
|
218
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_10, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
219
|
+
# 半期報告書 第十号の三様式
|
|
220
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_10_3, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
221
|
+
# 半期報告書 第十一号の二様式
|
|
222
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_11_2, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
223
|
+
# 半期報告書 第十一号の四様式
|
|
224
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_11_4, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
225
|
+
# 半期報告書 第十二号様式
|
|
226
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_12, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
227
|
+
# 半期報告書 第十二号の五様式
|
|
228
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SEMI_ANNUAL_REPORT, FormType.FORM_12_5, DEFAULT_SPECIFIED_SECURITIES_DISCLOSURE_TAXONOMIES),
|
|
229
|
+
# 発行登録書 第十五号様式
|
|
230
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SHELF_REGISTRATION_STATEMENT, FormType.FORM_15, frozenset({Taxonomy.CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE})),
|
|
231
|
+
# 発行登録書 第十五号の三様式
|
|
232
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SHELF_REGISTRATION_STATEMENT, FormType.FORM_15_3, frozenset({Taxonomy.CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE})),
|
|
233
|
+
# 発行登録追補書類 第二十一号様式
|
|
234
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SHELF_REGISTRATION_SUPPLEMENT, FormType.FORM_21, frozenset({Taxonomy.CABINET_OFFICE_ORDINANCE_ON_SPECIFIED_SECURITIES_DISCLOSURE})),
|
|
235
|
+
# 自己株券買付状況報 告書 第二十五号の三様式
|
|
236
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.SHARE_REPURCHASE_STATUS_REPORT, FormType.FORM_25_3, frozenset({Taxonomy.STATUS_OF_SPECIFIC_SECURITIES_TREASURY_STOCK_PURCHASES})),
|
|
237
|
+
# 臨時報告書
|
|
238
|
+
FilingFormat(Ordinance.SPECIFIED_SECURITIES, DocumentType.EXTRAORDINARY_REPORT, FormType.NONE_SPECIFIED, frozenset({Taxonomy.SPECIFIED_SECURITIES_EXTRAORDINARY_REPORT})),
|
|
239
|
+
|
|
240
|
+
# 他社株買付府令
|
|
241
|
+
|
|
242
|
+
# 公開買付届出書 第二号様式
|
|
243
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OTHER, DocumentType.TENDER_OFFER_STATEMENT, FormType.FORM_2, frozenset({Taxonomy.TENDER_OFFER_NOTIFICATION})),
|
|
244
|
+
# 意見表明報告書 第四号様式
|
|
245
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OTHER, DocumentType.OPINION_STATEMENT, FormType.FORM_4, frozenset({Taxonomy.OTHER_COMPANY_OPINION_STATEMENT})),
|
|
246
|
+
# 公開買付撤回届出書 第五号様式
|
|
247
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OTHER, DocumentType.TENDER_OFFER_WITHDRAWAL_NOTICE, FormType.FORM_5, frozenset({Taxonomy.TENDER_OFFER_WITHDRAWAL_NOTIFICATION})),
|
|
248
|
+
# 公開買付報告書 第六号様式
|
|
249
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OTHER, DocumentType.TENDER_OFFER_REPORT, FormType.FORM_6, frozenset({Taxonomy.TENDER_OFFER_REPORT})),
|
|
250
|
+
# 対質問回答報告書 第八号様式
|
|
251
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OTHER, DocumentType.RESPONSE_TO_QUESTIONS_REPORT, FormType.FORM_8, frozenset({Taxonomy.OTHER_COMPANY_STOCK_QUESTION_AND_ANSWER_REPORT})),
|
|
252
|
+
|
|
253
|
+
# 自社株買付府令
|
|
254
|
+
|
|
255
|
+
# 公開買付届出書 第二号様式
|
|
256
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OWN, DocumentType.TENDER_OFFER_STATEMENT, FormType.FORM_2, frozenset({Taxonomy.TENDER_OFFER})),
|
|
257
|
+
# 公開買付撤回届出書 第三号様式
|
|
258
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OWN, DocumentType.TENDER_OFFER_WITHDRAWAL_NOTICE, FormType.FORM_3, frozenset({Taxonomy.TENDER_OFFER})),
|
|
259
|
+
# 公開買付報告書 第四号様式
|
|
260
|
+
FilingFormat(Ordinance.TENDER_OFFERS_FOR_SHARES_OWN, DocumentType.TENDER_OFFER_REPORT, FormType.FORM_4, frozenset({Taxonomy.TENDER_OFFER})),
|
|
261
|
+
|
|
262
|
+
# 大量保有府令
|
|
263
|
+
|
|
264
|
+
# 大量保有報告書 第一号様式
|
|
265
|
+
FilingFormat(Ordinance.LARGE_SHAREHOLDING, DocumentType.LARGE_SHAREHOLDING_REPORT, FormType.FORM_1, frozenset({Taxonomy.LARGE_VOLUME_HOLDINGS})),
|
|
266
|
+
# 大量保有報告書 第一号及び第二号様式
|
|
267
|
+
FilingFormat(Ordinance.LARGE_SHAREHOLDING, DocumentType.LARGE_SHAREHOLDING_REPORT, FormType.FORM_1_AND_2, frozenset({Taxonomy.LARGE_VOLUME_HOLDINGS})),
|
|
268
|
+
# 大量保有報告書 第三号様式
|
|
269
|
+
FilingFormat(Ordinance.LARGE_SHAREHOLDING, DocumentType.LARGE_SHAREHOLDING_REPORT, FormType.FORM_3, frozenset({Taxonomy.LARGE_VOLUME_HOLDINGS})),
|
|
270
|
+
|
|
271
|
+
# 内部統制府令
|
|
272
|
+
|
|
273
|
+
# 内部統制報告書 第一号様式
|
|
274
|
+
FilingFormat(Ordinance.INTERNAL_CONTROL, DocumentType.INTERNAL_CONTROL_REPORT, FormType.FORM_1, frozenset({Taxonomy.INTERNAL_CONTROL})),
|
|
275
|
+
)
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from enum import Enum
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class FormType(Enum):
|
|
10
|
+
FORM_1 = '第一号様式'
|
|
11
|
+
FORM_1_AND_2 = '第一号及び第二号様式'
|
|
12
|
+
FORM_2 = '第二号様式'
|
|
13
|
+
FORM_2_2 = '第二号の二様式'
|
|
14
|
+
FORM_2_3 = '第二号の三様式'
|
|
15
|
+
FORM_2_4 = '第二号の四様式'
|
|
16
|
+
FORM_2_5 = '第二号の五様式'
|
|
17
|
+
FORM_2_6 = '第二号の六様式'
|
|
18
|
+
FORM_2_7 = '第二号の七様式'
|
|
19
|
+
FORM_3 = '第三号様式'
|
|
20
|
+
FORM_3_2 = '第三号の二様式'
|
|
21
|
+
FORM_4 = '第四号様式'
|
|
22
|
+
FORM_4_3 = '第四号の三様式'
|
|
23
|
+
FORM_4_3_2 = '第四号の三の二様式'
|
|
24
|
+
FORM_4_3_3 = '第四号の三の三様式'
|
|
25
|
+
FORM_5 = '第五号様式'
|
|
26
|
+
FORM_5_2 = '第五号の二様式'
|
|
27
|
+
FORM_5_3 = '第五号の三様式'
|
|
28
|
+
FORM_5_4 = '第五号の四様式'
|
|
29
|
+
FORM_6 = '第六号様式'
|
|
30
|
+
FORM_6_5 = '第六号の五様式'
|
|
31
|
+
FORM_6_7_AND_FORM_7 = '第六号の七及び第七号様式'
|
|
32
|
+
FORM_6_9_AND_FORM_9 = '第六号の九及び第九号様式'
|
|
33
|
+
FORM_7 = '第七号様式'
|
|
34
|
+
FORM_7_3 = '第七号の三様式'
|
|
35
|
+
FORM_7_4 = '第七号の四様式'
|
|
36
|
+
FORM_8 = '第八号様式'
|
|
37
|
+
FORM_8_2 = '第八号の二様式'
|
|
38
|
+
FORM_8_4 = '第八号の四様式'
|
|
39
|
+
FORM_9 = '第九号様式'
|
|
40
|
+
FORM_9_3 = '第九号の三様式'
|
|
41
|
+
FORM_9_5 = '第九号の五様式'
|
|
42
|
+
FORM_10 = '第十号様式'
|
|
43
|
+
FORM_10_3 = '第十号の三様式'
|
|
44
|
+
FORM_11 = '第十一号様式'
|
|
45
|
+
FORM_11_2 = '第十一号の二様式'
|
|
46
|
+
FORM_11_2_2 = '第十一号の二の二様式'
|
|
47
|
+
FORM_11_4 = '第十一号の四様式'
|
|
48
|
+
FORM_12 = '第十二号様式'
|
|
49
|
+
FORM_12_2 = '第十二号の二様式'
|
|
50
|
+
FORM_12_5 = '第十二号の五様式'
|
|
51
|
+
FORM_15 = '第十五号様式'
|
|
52
|
+
FORM_15_3 = '第十五号の三様式'
|
|
53
|
+
FORM_17 = '第十七号様式'
|
|
54
|
+
FORM_21 = '第二十一号様式'
|
|
55
|
+
FORM_25_3 = '第二十五号の三様式'
|
|
56
|
+
NONE_SPECIFIED = '様式なし'
|
|
57
|
+
|
|
58
|
+
@classmethod
|
|
59
|
+
def parse(cls, value: str) -> FormType | None:
|
|
60
|
+
try:
|
|
61
|
+
return cls(value)
|
|
62
|
+
except ValueError:
|
|
63
|
+
return None
|
|
64
|
+
|
|
65
|
+
@staticmethod
|
|
66
|
+
def lookup(code: str | None) -> FormType | None:
|
|
67
|
+
return FORM_CODES.get(code)
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def isCorporateForm(self) -> bool:
|
|
71
|
+
return self in CORPORATE_FORMS
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def isStockReport(self) -> bool:
|
|
75
|
+
return self in STOCK_REPORT_FORMS
|
|
76
|
+
|
|
77
|
+
CORPORATE_FORMS =frozenset([
|
|
78
|
+
FormType.FORM_2_4,
|
|
79
|
+
FormType.FORM_2_7,
|
|
80
|
+
FormType.FORM_3,
|
|
81
|
+
])
|
|
82
|
+
STOCK_REPORT_FORMS = frozenset([
|
|
83
|
+
FormType.FORM_3,
|
|
84
|
+
FormType.FORM_4,
|
|
85
|
+
])
|
|
86
|
+
|
|
87
|
+
FORM_CODES: dict[str | None, FormType] = {
|
|
88
|
+
# Source: ESE140110 Guide Attachment 4
|
|
89
|
+
'010000': FormType.FORM_1,
|
|
90
|
+
'020000': FormType.FORM_2,
|
|
91
|
+
'020200': FormType.FORM_2_2,
|
|
92
|
+
'020300': FormType.FORM_2_3,
|
|
93
|
+
'020400': FormType.FORM_2_4,
|
|
94
|
+
'020500': FormType.FORM_2_5,
|
|
95
|
+
'020600': FormType.FORM_2_6,
|
|
96
|
+
'020700': FormType.FORM_2_7,
|
|
97
|
+
'030000': FormType.FORM_3,
|
|
98
|
+
'030200': FormType.FORM_3_2,
|
|
99
|
+
'040000': FormType.FORM_4,
|
|
100
|
+
'040300': FormType.FORM_4_3,
|
|
101
|
+
'040302': FormType.FORM_4_3_2,
|
|
102
|
+
'040303': FormType.FORM_4_3_3,
|
|
103
|
+
'050000': FormType.FORM_5,
|
|
104
|
+
'050200': FormType.FORM_5_2,
|
|
105
|
+
'050300': FormType.FORM_5_3,
|
|
106
|
+
'050400': FormType.FORM_5_4,
|
|
107
|
+
'060000': FormType.FORM_6,
|
|
108
|
+
'060500': FormType.FORM_6_5,
|
|
109
|
+
'060700': FormType.FORM_6_7_AND_FORM_7,
|
|
110
|
+
'060900': FormType.FORM_6_9_AND_FORM_9,
|
|
111
|
+
'070000': FormType.FORM_7,
|
|
112
|
+
'070300': FormType.FORM_7_3,
|
|
113
|
+
'070400': FormType.FORM_7_4,
|
|
114
|
+
'080000': FormType.FORM_8,
|
|
115
|
+
'080200': FormType.FORM_8_2,
|
|
116
|
+
'080400': FormType.FORM_8_4,
|
|
117
|
+
'090000': FormType.FORM_9,
|
|
118
|
+
'090300': FormType.FORM_9_3,
|
|
119
|
+
'090500': FormType.FORM_9_5,
|
|
120
|
+
'100000': FormType.FORM_10,
|
|
121
|
+
'100300': FormType.FORM_10_3,
|
|
122
|
+
'110000': FormType.FORM_11,
|
|
123
|
+
'110200': FormType.FORM_11_2,
|
|
124
|
+
'110202': FormType.FORM_11_2_2,
|
|
125
|
+
'110400': FormType.FORM_11_4,
|
|
126
|
+
'120000': FormType.FORM_12,
|
|
127
|
+
'120200': FormType.FORM_12_2,
|
|
128
|
+
'120500': FormType.FORM_12_5,
|
|
129
|
+
'150000': FormType.FORM_15,
|
|
130
|
+
'150300': FormType.FORM_15_3,
|
|
131
|
+
'170000': FormType.FORM_17,
|
|
132
|
+
'210000': FormType.FORM_21,
|
|
133
|
+
'250300': FormType.FORM_25_3,
|
|
134
|
+
}
|
|
@@ -7,7 +7,7 @@ import traceback
|
|
|
7
7
|
import zipfile
|
|
8
8
|
from collections import defaultdict
|
|
9
9
|
from dataclasses import dataclass
|
|
10
|
-
from functools import lru_cache
|
|
10
|
+
from functools import lru_cache, cached_property
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import cast
|
|
13
13
|
|
|
@@ -20,16 +20,21 @@ from arelle.FileSource import FileSource
|
|
|
20
20
|
from arelle.ModelValue import QName, qname
|
|
21
21
|
from arelle.typing import TypeGetText
|
|
22
22
|
from . import Constants
|
|
23
|
+
from .FilingFormat import Ordinance, DocumentType, FilingFormat, FILING_FORMATS
|
|
24
|
+
from .FormType import FormType
|
|
25
|
+
from .ReportFolderType import ReportFolderType
|
|
23
26
|
|
|
24
27
|
_: TypeGetText
|
|
25
28
|
|
|
26
29
|
|
|
27
30
|
@dataclass(frozen=True)
|
|
28
31
|
class ManifestInstance:
|
|
32
|
+
filingFormat: FilingFormat | None
|
|
29
33
|
id: str
|
|
30
34
|
ixbrlFiles: list[Path]
|
|
31
35
|
path: Path
|
|
32
36
|
preferredFilename: str
|
|
37
|
+
reportFolderType: ReportFolderType | None
|
|
33
38
|
titlesByLang: dict[str, str]
|
|
34
39
|
tocItems: list[ManifestTocItem]
|
|
35
40
|
type: str
|
|
@@ -47,6 +52,62 @@ class ManifestTocItem:
|
|
|
47
52
|
end: QName | None
|
|
48
53
|
|
|
49
54
|
|
|
55
|
+
def _getFilenameValues(reportFolderType: ReportFolderType, preferredFilename: str) -> dict[str, str]:
|
|
56
|
+
for pattern in reportFolderType.xbrlFilenamePatterns:
|
|
57
|
+
matchResult = pattern.match(preferredFilename)
|
|
58
|
+
if matchResult is not None:
|
|
59
|
+
return matchResult.groupdict()
|
|
60
|
+
return {}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _identifyFilingFormat(cntlr: Cntlr, reportFolderType: ReportFolderType | None, preferredFilename: str) -> FilingFormat | None:
|
|
64
|
+
if reportFolderType is None or reportFolderType == ReportFolderType.AUDIT_DOC:
|
|
65
|
+
return None
|
|
66
|
+
filenameValues = _getFilenameValues(reportFolderType, preferredFilename)
|
|
67
|
+
documentType = DocumentType.parse(filenameValues.get('report'))
|
|
68
|
+
formType = FormType.lookup(filenameValues.get('form'))
|
|
69
|
+
ordinance = Ordinance.parse(filenameValues.get('ordinance'))
|
|
70
|
+
if documentType == DocumentType.SECURITIES_REGISTRATION_STATEMENT_DEEMED:
|
|
71
|
+
documentType = DocumentType.ANNUAL_SECURITIES_REPORT
|
|
72
|
+
|
|
73
|
+
filingFormats = []
|
|
74
|
+
for filingFormatIndex, filingFormat in enumerate(FILING_FORMATS):
|
|
75
|
+
if filingFormat.formType != formType:
|
|
76
|
+
continue
|
|
77
|
+
if filingFormat.documentType != documentType:
|
|
78
|
+
continue
|
|
79
|
+
if filingFormat.ordinance != ordinance:
|
|
80
|
+
continue
|
|
81
|
+
filingFormats.append((filingFormat, filingFormatIndex))
|
|
82
|
+
if len(filingFormats) == 0:
|
|
83
|
+
cntlr.error(
|
|
84
|
+
"NoMatchingEdinetFormat",
|
|
85
|
+
_("No matching EDINET filing formats could be identified based on form "
|
|
86
|
+
"type (%(formType)s) and document type (%(documentType)s)."),
|
|
87
|
+
formType=formType.value if formType is not None else "None",
|
|
88
|
+
documentType=documentType.value if documentType is not None else "None",
|
|
89
|
+
)
|
|
90
|
+
return None
|
|
91
|
+
if len(filingFormats) > 1:
|
|
92
|
+
cntlr.error(
|
|
93
|
+
"MultipleMatchingEdinetFormats",
|
|
94
|
+
_("Multiple EDINET filing formats (%(formatIndexes)s) matched based on form "
|
|
95
|
+
"type (%(formType)s) and document type (%(documentType)s)."),
|
|
96
|
+
formType=formType.value if formType is not None else "None",
|
|
97
|
+
documentType=documentType.value if documentType is not None else "None",
|
|
98
|
+
)
|
|
99
|
+
return None
|
|
100
|
+
filingFormat, filingFormatIndex = filingFormats[0]
|
|
101
|
+
cntlr.addToLog("Identified filing format: #{}, {}, {}, {}, {}".format(
|
|
102
|
+
filingFormatIndex + 1,
|
|
103
|
+
filingFormat.ordinance.value,
|
|
104
|
+
filingFormat.documentType.value,
|
|
105
|
+
filingFormat.formType.value,
|
|
106
|
+
', '.join(taxonomy.value for taxonomy in filingFormat.taxonomies)
|
|
107
|
+
), messageCode="info")
|
|
108
|
+
return filingFormat
|
|
109
|
+
|
|
110
|
+
|
|
50
111
|
def _invalidManifestError(cntlr: Cntlr, file: str, message: str | None = None) -> None:
|
|
51
112
|
if message is None:
|
|
52
113
|
message = _("Please correct the content.")
|
|
@@ -78,7 +139,7 @@ def _parseManifestTocItems(parentElt: _Element, parentQName: QName | None) -> li
|
|
|
78
139
|
return tocItems
|
|
79
140
|
|
|
80
141
|
|
|
81
|
-
def _parseManifestDoc(xmlRootElement: _Element, path: Path) -> list[ManifestInstance]:
|
|
142
|
+
def _parseManifestDoc(cntlr: Cntlr, xmlRootElement: _Element, path: Path) -> list[ManifestInstance]:
|
|
82
143
|
instances = []
|
|
83
144
|
titlesByLang = {}
|
|
84
145
|
base = path.parent
|
|
@@ -102,11 +163,17 @@ def _parseManifestDoc(xmlRootElement: _Element, path: Path) -> list[ManifestInst
|
|
|
102
163
|
uri = ixbrlElt.text.strip() if ixbrlElt.text is not None else None
|
|
103
164
|
if uri is not None and len(uri) > 0:
|
|
104
165
|
ixbrlFiles.append(base / uri)
|
|
166
|
+
|
|
167
|
+
reportFolderType = ReportFolderType.parse(base.name)
|
|
168
|
+
filingFormat = _identifyFilingFormat(cntlr, reportFolderType, preferredFilename)
|
|
169
|
+
|
|
105
170
|
instances.append(ManifestInstance(
|
|
171
|
+
filingFormat=filingFormat,
|
|
106
172
|
id=instanceId,
|
|
107
173
|
ixbrlFiles=ixbrlFiles,
|
|
108
174
|
path=path,
|
|
109
175
|
preferredFilename=preferredFilename,
|
|
176
|
+
reportFolderType=reportFolderType,
|
|
110
177
|
titlesByLang=titlesByLang,
|
|
111
178
|
tocItems=tocItemsByRef.get(instanceId, []),
|
|
112
179
|
type=instanceType,
|
|
@@ -137,7 +204,7 @@ def parseManifests(filesource: FileSource) -> list[ManifestInstance]:
|
|
|
137
204
|
try:
|
|
138
205
|
with filesource.fs.open(_archiveFile) as manifestDoc:
|
|
139
206
|
xmlRootElement = etree.fromstring(manifestDoc.read())
|
|
140
|
-
instances.extend(_parseManifestDoc(xmlRootElement, Path(_archiveFile)))
|
|
207
|
+
instances.extend(_parseManifestDoc(cntlr, xmlRootElement, Path(_archiveFile)))
|
|
141
208
|
except AssertionError as err:
|
|
142
209
|
_invalidManifestError(cntlr, str(_archiveFile), str(err))
|
|
143
210
|
except Exception as err:
|
|
@@ -156,7 +223,7 @@ def parseManifests(filesource: FileSource) -> list[ManifestInstance]:
|
|
|
156
223
|
try:
|
|
157
224
|
with open(file, 'rb') as manifestDoc:
|
|
158
225
|
xmlRootElement = etree.fromstring(manifestDoc.read())
|
|
159
|
-
instances.extend(_parseManifestDoc(xmlRootElement, file))
|
|
226
|
+
instances.extend(_parseManifestDoc(cntlr, xmlRootElement, file))
|
|
160
227
|
except AssertionError as err:
|
|
161
228
|
_invalidManifestError(cntlr, str(file), str(err))
|
|
162
229
|
except Exception as err:
|
|
@@ -166,4 +233,4 @@ def parseManifests(filesource: FileSource) -> list[ManifestInstance]:
|
|
|
166
233
|
err,
|
|
167
234
|
traceback.format_exc()
|
|
168
235
|
))
|
|
169
|
-
return instances
|
|
236
|
+
return sorted(instances, key=lambda i: i.id)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class NamespaceConfig:
|
|
9
|
+
def __init__(self) -> None:
|
|
10
|
+
self.jpcrpEsr = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpcrp-esr/2024-11-01/jpcrp-esr_cor"
|
|
11
|
+
self.jpcrp = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpcrp/2024-11-01/jpcrp_cor"
|
|
12
|
+
self.jpcrpSbr = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpcrp-sbr/2024-11-01/jpcrp-sbr_cor"
|
|
13
|
+
self.jpctl = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpctl/2024-11-01/jpctl_cor"
|
|
14
|
+
self.jpdei = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpdei/2013-08-31/jpdei_cor"
|
|
15
|
+
self.jpigp = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpigp/2024-11-01/jpigp_cor"
|
|
16
|
+
self.jplvh = "http://disclosure.edinet-fsa.go.jp/taxonomy/jplvh/2024-11-01/jplvh_cor"
|
|
17
|
+
self.jppfs = "http://disclosure.edinet-fsa.go.jp/taxonomy/jppfs/2024-11-01/jppfs_cor"
|
|
18
|
+
self.jpspsEsr = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpsps-esr/2024-11-01/jpsps-esr_cor"
|
|
19
|
+
self.jpspsSbr = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpsps-sbr/2024-11-01/jpsps-sbr_cor"
|
|
20
|
+
self.jpsps = "http://disclosure.edinet-fsa.go.jp/taxonomy/jpsps/2024-11-01/jpsps_cor"
|
|
21
|
+
self.jptoi = "http://disclosure.edinet-fsa.go.jp/taxonomy/jptoi/2024-11-01/jptoi_cor"
|
|
22
|
+
self.jptooPst = "http://disclosure.edinet-fsa.go.jp/taxonomy/jptoo-pst/2024-11-01/jptoo-pst_cor"
|
|
23
|
+
self.jptooToa = "http://disclosure.edinet-fsa.go.jp/taxonomy/jptoo-toa/2024-11-01/jptoo-toa_cor"
|
|
24
|
+
self.jptooTon = "http://disclosure.edinet-fsa.go.jp/taxonomy/jptoo-ton/2024-11-01/jptoo-ton_cor"
|
|
25
|
+
self.jptooTor = "http://disclosure.edinet-fsa.go.jp/taxonomy/jptoo-tor/2024-11-01/jptoo-tor_cor"
|
|
26
|
+
self.jptooWto = "http://disclosure.edinet-fsa.go.jp/taxonomy/jptoo-wto/2024-11-01/jptoo-wto_cor"
|
|
27
|
+
|
|
28
|
+
self._namespaceMap = {
|
|
29
|
+
"jpcrp-esr_cor": self.jpcrpEsr,
|
|
30
|
+
"jpcrp-sbr_cor": self.jpcrpSbr,
|
|
31
|
+
"jpcrp_cor": self.jpcrp,
|
|
32
|
+
"jpctl_cor": self.jpctl,
|
|
33
|
+
"jpdei_cor": self.jpdei,
|
|
34
|
+
"jpigp_cor": self.jpigp,
|
|
35
|
+
"jplvh_cor": self.jplvh,
|
|
36
|
+
"jppfs_cor": self.jppfs,
|
|
37
|
+
"jpsps_cor": self.jpsps,
|
|
38
|
+
"jpsps-esr_cor": self.jpspsEsr,
|
|
39
|
+
"jpsps-sbr_cor": self.jpspsSbr,
|
|
40
|
+
"jptoi_cor": self.jptoi,
|
|
41
|
+
"jptoo-pst_cor": self.jptooPst,
|
|
42
|
+
"jptoo-toa_cor": self.jptooToa,
|
|
43
|
+
"jptoo-ton_cor": self.jptooTon,
|
|
44
|
+
"jptoo-tor_cor": self.jptooTor,
|
|
45
|
+
"jptoo-wto_cor": self.jptooWto,
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
def get(self, prefix: str) -> str | None:
|
|
49
|
+
"""get namespace URI for prefix"""
|
|
50
|
+
return self._namespaceMap.get(prefix)
|