arelle-release 2.17.1__py3-none-any.whl → 2.37.71__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/Aspect.py +6 -3
- arelle/BetaFeatures.py +3 -0
- arelle/Cntlr.py +117 -413
- arelle/CntlrCmdLine.py +364 -227
- arelle/CntlrQuickBooks.py +4 -2
- arelle/CntlrWebMain.py +179 -119
- arelle/CntlrWinMain.py +342 -124
- arelle/DialogAbout.py +1 -1
- arelle/DialogArcroleGroup.py +1 -1
- arelle/DialogFind.py +1 -1
- arelle/DialogFormulaParameters.py +2 -2
- arelle/DialogLanguage.py +45 -36
- arelle/DialogNewFactItem.py +1 -1
- arelle/DialogOpenArchive.py +30 -34
- arelle/DialogPackageManager.py +11 -8
- arelle/DialogPluginManager.py +43 -89
- arelle/DialogRssWatch.py +2 -2
- arelle/DialogURL.py +1 -1
- arelle/DialogUserPassword.py +1 -1
- arelle/DisclosureSystem.py +69 -1
- arelle/ErrorManager.py +321 -0
- arelle/FileSource.py +201 -99
- arelle/FunctionFn.py +44 -5
- arelle/FunctionIxt.py +16 -13
- arelle/FunctionUtil.py +1 -1
- arelle/FunctionXfi.py +68 -24
- arelle/FunctionXs.py +1 -1
- arelle/HtmlUtil.py +5 -4
- arelle/LeiUtil.py +63 -43
- arelle/LinkbaseType.py +94 -0
- arelle/LocalViewer.py +8 -2
- arelle/Locale.py +239 -79
- arelle/ModelDocument.py +180 -48
- arelle/ModelDtsObject.py +32 -27
- arelle/ModelFormulaObject.py +14 -6
- arelle/ModelInstanceObject.py +43 -14
- arelle/ModelManager.py +6 -1
- arelle/ModelObject.py +12 -8
- arelle/ModelObjectFactory.py +18 -2
- arelle/ModelRelationshipSet.py +46 -3
- arelle/ModelRenderingObject.py +899 -951
- arelle/ModelRssItem.py +2 -4
- arelle/ModelTestcaseObject.py +41 -4
- arelle/ModelValue.py +42 -14
- arelle/ModelVersReport.py +1 -1
- arelle/ModelXbrl.py +133 -273
- arelle/PackageManager.py +202 -176
- arelle/PluginManager.py +551 -239
- arelle/PluginUtils.py +54 -0
- arelle/PrototypeInstanceObject.py +53 -12
- arelle/PythonUtil.py +166 -25
- arelle/RuntimeOptions.py +32 -18
- arelle/SocketUtils.py +3 -0
- arelle/SystemInfo.py +1 -1
- arelle/TkTableWrapper.py +33 -5
- arelle/UITkTable.py +27 -21
- arelle/Updater.py +7 -3
- arelle/UrlUtil.py +6 -2
- arelle/Validate.py +596 -402
- arelle/ValidateDuplicateFacts.py +584 -0
- arelle/ValidateFileSource.py +38 -0
- arelle/ValidateFilingText.py +46 -29
- arelle/ValidateInfoset.py +104 -32
- arelle/ValidateUtr.py +31 -4
- arelle/ValidateXbrl.py +144 -120
- arelle/ValidateXbrlCalcs.py +51 -66
- arelle/ValidateXbrlDTS.py +98 -29
- arelle/Version.py +2 -7
- arelle/ViewFile.py +2 -0
- arelle/ViewFileDTS.py +7 -2
- arelle/ViewFileFactList.py +1 -1
- arelle/ViewFileFactTable.py +4 -4
- arelle/ViewFileRelationshipSet.py +36 -19
- arelle/ViewFileRenderedGrid.py +164 -753
- arelle/ViewFileRenderedLayout.py +174 -0
- arelle/ViewFileRenderedStructure.py +108 -0
- arelle/ViewWinDTS.py +4 -1
- arelle/ViewWinFactList.py +1 -1
- arelle/ViewWinFactTable.py +1 -1
- arelle/ViewWinRelationshipSet.py +14 -8
- arelle/ViewWinRenderedGrid.py +397 -287
- arelle/ViewWinRssFeed.py +4 -0
- arelle/ViewWinTree.py +15 -9
- arelle/ViewWinXml.py +1 -1
- arelle/WebCache.py +510 -272
- arelle/XbrlConst.py +202 -196
- arelle/XbrlUtil.py +2 -1
- arelle/XhtmlValidate.py +9 -23
- arelle/XmlUtil.py +24 -19
- arelle/XmlValidate.py +95 -67
- arelle/XmlValidateParticles.py +4 -4
- arelle/_version.py +33 -3
- arelle/api/Session.py +183 -0
- arelle/config/creationSoftwareNames.json +24 -10
- arelle/config/disclosuresystems.xml +1 -1
- arelle/config/disclosuresystems.xsd +3 -0
- arelle/config/sbr-text-formatting.xsd +737 -0
- arelle/conformance/CSVTestcaseLoader.py +102 -0
- arelle/formula/FactAspectsCache.py +10 -4
- arelle/formula/ValidateFormula.py +82 -194
- arelle/formula/XPathContext.py +42 -28
- arelle/formula/XPathParser.py +15 -9
- arelle/locale/ar_EG/LC_MESSAGES/ar_EG.po +3 -4
- arelle/locale/messages.pot +1 -2
- arelle/locale/ru/LC_MESSAGES/ru.po +2 -2
- arelle/logging/formatters/LogFormatter.py +47 -0
- arelle/logging/handlers/LogHandlerWithXml.py +94 -0
- arelle/logging/handlers/LogToBufferHandler.py +20 -0
- arelle/logging/handlers/LogToPrintHandler.py +41 -0
- arelle/logging/handlers/LogToXmlHandler.py +244 -0
- arelle/logging/handlers/StructuredMessageLogHandler.py +74 -0
- arelle/model/CommentBase.py +3 -0
- arelle/model/ElementBase.py +3 -0
- arelle/model/PIBase.py +3 -0
- arelle/model/__init__.py +3 -0
- arelle/oim/Load.py +2869 -0
- arelle/oim/Validate.py +155 -0
- arelle/oim/xml/Save.py +21 -0
- arelle/packages/PackageConst.py +7 -0
- arelle/packages/PackageType.py +13 -0
- arelle/packages/PackageUtils.py +22 -0
- arelle/packages/PackageValidation.py +200 -0
- arelle/packages/report/DetectReportPackage.py +13 -0
- arelle/packages/report/ReportPackage.py +265 -0
- arelle/packages/report/ReportPackageConst.py +79 -0
- arelle/packages/report/ReportPackageValidator.py +207 -0
- arelle/plugin/EdgarRendererAllReports.py +12 -12
- arelle/plugin/OimTaxonomy/ModelValueMore.py +15 -0
- arelle/plugin/OimTaxonomy/ValidateDTS.py +484 -0
- arelle/plugin/OimTaxonomy/ViewXbrlTxmyObj.py +239 -0
- arelle/plugin/OimTaxonomy/XbrlAbstract.py +16 -0
- arelle/plugin/OimTaxonomy/XbrlConcept.py +68 -0
- arelle/plugin/OimTaxonomy/XbrlConst.py +261 -0
- arelle/plugin/OimTaxonomy/XbrlCube.py +91 -0
- arelle/plugin/OimTaxonomy/XbrlDimension.py +38 -0
- arelle/plugin/OimTaxonomy/XbrlDts.py +152 -0
- arelle/plugin/OimTaxonomy/XbrlEntity.py +16 -0
- arelle/plugin/OimTaxonomy/XbrlGroup.py +22 -0
- arelle/plugin/OimTaxonomy/XbrlImportedTaxonomy.py +22 -0
- arelle/plugin/OimTaxonomy/XbrlLabel.py +31 -0
- arelle/plugin/OimTaxonomy/XbrlNetwork.py +100 -0
- arelle/plugin/OimTaxonomy/XbrlProperty.py +28 -0
- arelle/plugin/OimTaxonomy/XbrlReference.py +33 -0
- arelle/plugin/OimTaxonomy/XbrlReport.py +24 -0
- arelle/plugin/OimTaxonomy/XbrlTableTemplate.py +35 -0
- arelle/plugin/OimTaxonomy/XbrlTaxonomy.py +93 -0
- arelle/plugin/OimTaxonomy/XbrlTaxonomyObject.py +154 -0
- arelle/plugin/OimTaxonomy/XbrlTransform.py +17 -0
- arelle/plugin/OimTaxonomy/XbrlTypes.py +23 -0
- arelle/plugin/OimTaxonomy/XbrlUnit.py +17 -0
- arelle/plugin/OimTaxonomy/__init__.py +1037 -0
- arelle/plugin/OimTaxonomy/resources/iso4217.json +4479 -0
- arelle/plugin/OimTaxonomy/resources/oim-taxonomy-schema.json +935 -0
- arelle/plugin/OimTaxonomy/resources/ref.json +333 -0
- arelle/plugin/OimTaxonomy/resources/transform-types.json +2481 -0
- arelle/plugin/OimTaxonomy/resources/types.json +727 -0
- arelle/plugin/OimTaxonomy/resources/utr.json +3046 -0
- arelle/plugin/OimTaxonomy/resources/xbrlSpec.json +1082 -0
- arelle/plugin/formulaLoader.py +3 -3
- arelle/plugin/formulaSaver.py +4 -4
- arelle/plugin/inlineXbrlDocumentSet.py +331 -102
- arelle/plugin/internet/proxyNTLM/HTTPNtlmAuthHandler.py +1 -1
- arelle/plugin/loadFromExcel.py +13 -10
- arelle/plugin/loadFromOIM.py +16 -3096
- arelle/plugin/logging/saveMessages.py +1 -1
- arelle/plugin/saveHtmlEBAtables.py +293 -213
- arelle/plugin/saveLoadableOIM.py +652 -361
- arelle/plugin/saveOIMTaxonomy.py +311 -0
- arelle/plugin/streamingExtensions.py +1 -1
- arelle/plugin/systemInfo.py +46 -0
- arelle/plugin/transforms/tester.py +4 -4
- arelle/plugin/validate/CIPC/Const.py +18 -0
- arelle/plugin/validate/CIPC/__init__.py +34 -13
- arelle/plugin/validate/DBA/DisclosureSystems.py +12 -0
- arelle/plugin/validate/DBA/PluginValidationDataExtension.py +165 -0
- arelle/plugin/validate/DBA/ValidationPluginExtension.py +545 -0
- arelle/plugin/validate/DBA/__init__.py +49 -0
- arelle/plugin/validate/DBA/resources/config.xml +21 -0
- arelle/plugin/validate/DBA/rules/__init__.py +323 -0
- arelle/plugin/validate/DBA/rules/fr.py +1377 -0
- arelle/plugin/validate/DBA/rules/tc.py +45 -0
- arelle/plugin/validate/DBA/rules/th.py +172 -0
- arelle/plugin/validate/DBA/rules/tm.py +351 -0
- arelle/plugin/validate/DBA/rules/tr.py +373 -0
- arelle/plugin/validate/EBA/__init__.py +11 -12
- arelle/plugin/validate/EDINET/Constants.py +208 -0
- arelle/plugin/validate/EDINET/ContextRequirement.py +58 -0
- arelle/plugin/validate/EDINET/ControllerPluginData.py +298 -0
- arelle/plugin/validate/EDINET/CoverItemRequirements.py +42 -0
- arelle/plugin/validate/EDINET/DeiRequirements.py +118 -0
- arelle/plugin/validate/EDINET/DisclosureSystems.py +1 -0
- arelle/plugin/validate/EDINET/FilingFormat.py +275 -0
- arelle/plugin/validate/EDINET/FormType.py +134 -0
- arelle/plugin/validate/EDINET/ManifestInstance.py +236 -0
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +640 -0
- arelle/plugin/validate/EDINET/ReportFolderType.py +162 -0
- arelle/plugin/validate/EDINET/Statement.py +139 -0
- arelle/plugin/validate/EDINET/TableOfContentsBuilder.py +493 -0
- arelle/plugin/validate/EDINET/UploadContents.py +48 -0
- arelle/plugin/validate/EDINET/ValidationPluginExtension.py +64 -0
- arelle/plugin/validate/EDINET/__init__.py +109 -0
- arelle/plugin/validate/EDINET/resources/config.xml +22 -0
- 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 +62 -0
- arelle/plugin/validate/EDINET/rules/contexts.py +547 -0
- arelle/plugin/validate/EDINET/rules/edinet.py +1991 -0
- arelle/plugin/validate/EDINET/rules/frta.py +301 -0
- arelle/plugin/validate/EDINET/rules/gfm.py +2394 -0
- arelle/plugin/validate/EDINET/rules/manifests.py +88 -0
- arelle/plugin/validate/EDINET/rules/upload.py +1370 -0
- arelle/plugin/validate/ESEF/Const.py +16 -75
- arelle/plugin/validate/ESEF/Dimensions.py +2 -2
- arelle/plugin/validate/ESEF/ESEF_2021/DTS.py +6 -1
- arelle/plugin/validate/ESEF/ESEF_2021/Image.py +7 -4
- arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +80 -57
- arelle/plugin/validate/ESEF/ESEF_Current/DTS.py +60 -22
- arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +272 -133
- arelle/plugin/validate/ESEF/Util.py +5 -19
- arelle/plugin/validate/ESEF/__init__.py +61 -46
- arelle/plugin/validate/ESEF/resources/authority-validations.json +120 -10
- arelle/plugin/validate/ESEF/resources/config.xml +44 -3
- arelle/plugin/validate/FERC/__init__.py +31 -18
- arelle/plugin/validate/FERC/config.xml +18 -18
- arelle/plugin/validate/NL/DisclosureSystems.py +19 -3
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +710 -7
- arelle/plugin/validate/NL/ValidationPluginExtension.py +117 -12
- arelle/plugin/validate/NL/__init__.py +21 -10
- arelle/plugin/validate/NL/resources/config.xml +27 -6
- arelle/plugin/validate/NL/rules/br_kvk.py +81 -21
- arelle/plugin/validate/NL/rules/fg_nl.py +292 -0
- arelle/plugin/validate/NL/rules/fr_kvk.py +60 -7
- arelle/plugin/validate/NL/rules/fr_nl.py +705 -24
- arelle/plugin/validate/NL/rules/nl_kvk.py +2182 -0
- arelle/plugin/validate/ROS/DisclosureSystems.py +1 -0
- arelle/plugin/validate/ROS/PluginValidationDataExtension.py +109 -0
- arelle/plugin/validate/ROS/ValidationPluginExtension.py +27 -0
- arelle/plugin/validate/ROS/__init__.py +28 -341
- arelle/plugin/validate/ROS/resources/config.xml +20 -0
- arelle/plugin/validate/ROS/rules/__init__.py +56 -0
- arelle/plugin/validate/ROS/rules/ros.py +393 -0
- arelle/plugin/validate/UK/ValidateUK.py +1372 -0
- arelle/plugin/validate/{HMRC → UK}/__init__.py +195 -189
- arelle/plugin/validate/{HMRC → UK}/config.xml +1 -1
- arelle/plugin/xbrlDB/SqlDb.py +1 -1
- arelle/plugin/xbrlDB/XbrlOpenSqlDB.py +5 -5
- arelle/plugin/xbrlDB/XbrlPublicPostgresDB.py +1 -1
- arelle/plugin/xbrlDB/XbrlSemanticJsonDB.py +1 -1
- arelle/plugin/xbrlDB/XbrlSemanticRdfDB.py +1 -1
- arelle/plugin/xbrlDB/__init__.py +4 -1
- arelle/{RenderingEvaluator.py → rendering/RenderingEvaluator.py} +120 -99
- arelle/rendering/RenderingLayout.py +476 -0
- arelle/rendering/RenderingResolution.py +814 -0
- arelle/resources/cache/http/www.eurofiling.info/eu/fr/xbrl/ext/filing-indicators.xsd +20 -0
- arelle/resources/cache/http/www.w3.org/2001/03/xml.xsd +117 -0
- arelle/resources/cache/http/www.w3.org/2001/XMLSchema.xsd +2534 -0
- arelle/resources/cache/http/www.w3.org/2001/xml.xsd +287 -0
- arelle/resources/cache/http/www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd +779 -0
- arelle/resources/cache/http/www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd +486 -0
- arelle/resources/cache/http/www.xbrl.org/2003/xl-2003-12-31.xsd +251 -0
- arelle/resources/cache/http/www.xbrl.org/2003/xlink-2003-12-31.xsd +121 -0
- arelle/resources/cache/http/www.xbrl.org/2004/ref-2004-08-10.xsd +129 -0
- arelle/resources/cache/http/www.xbrl.org/2005/xbrldt-2005.xsd +53 -0
- arelle/resources/cache/http/www.xbrl.org/2006/ref-2006-02-27.xsd +120 -0
- arelle/resources/cache/http/www.xbrl.org/2006/xbrldi-2006.xsd +41 -0
- arelle/resources/cache/http/www.xbrl.org/2008/boolean-filter.xsd +51 -0
- arelle/resources/cache/http/www.xbrl.org/2008/concept-filter.xsd +127 -0
- arelle/resources/cache/http/www.xbrl.org/2008/conformance.xsd +116 -0
- arelle/resources/cache/http/www.xbrl.org/2008/conformanceFunction.xsd +51 -0
- arelle/resources/cache/http/www.xbrl.org/2008/consistency-assertion.xsd +66 -0
- arelle/resources/cache/http/www.xbrl.org/2008/dimension-filter.xsd +86 -0
- arelle/resources/cache/http/www.xbrl.org/2008/entity-filter.xsd +92 -0
- arelle/resources/cache/http/www.xbrl.org/2008/existence-assertion.xsd +44 -0
- arelle/resources/cache/http/www.xbrl.org/2008/formula.xsd +261 -0
- arelle/resources/cache/http/www.xbrl.org/2008/function.xsd +90 -0
- arelle/resources/cache/http/www.xbrl.org/2008/general-filter.xsd +38 -0
- arelle/resources/cache/http/www.xbrl.org/2008/generic-label.xsd +80 -0
- arelle/resources/cache/http/www.xbrl.org/2008/generic-link.xsd +81 -0
- arelle/resources/cache/http/www.xbrl.org/2008/generic-reference.xsd +63 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xbrl/xbrl-instance-2003-12-31-ixmod.xsd +788 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xbrl/xbrl-linkbase-2003-12-31-ixmod.xsd +488 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xbrl/xl-2003-12-31.xsd +248 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xbrl/xlink-2003-12-31.xsd +117 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xframes-1.xsd +166 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-applet-1.xsd +66 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-attribs-1.xsd +72 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-base-1.xsd +36 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-basic-form-1.xsd +195 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-basic-table-1.xsd +169 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-basic10-model-1.xsd +376 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-basic10-module-redefines-1.xsd +61 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-basic10-modules-1.xsd +259 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-basic10.xsd +98 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-bdo-1.xsd +78 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-blkphras-1.xsd +161 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-blkpres-1.xsd +37 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-blkstruct-1.xsd +49 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-charent-1.xsd +38 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-copyright-1.xsd +29 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-csismap-1.xsd +96 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-datatypes-1.xsd +128 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-edit-1.xsd +39 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-events-1.xsd +130 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-form-1.xsd +326 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-frames-1.xsd +113 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-framework-1.xsd +66 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-hypertext-1.xsd +47 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-iframe-1.xsd +68 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-image-1.xsd +45 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-inlphras-1.xsd +163 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-inlpres-1.xsd +39 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-inlstruct-1.xsd +50 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-inlstyle-1.xsd +27 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-legacy-1.xsd +97 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-link-1.xsd +45 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-list-1.xsd +99 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-meta-1.xsd +42 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-misc-1.xsd +441 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-nameident-1.xsd +63 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-notations-1.xsd +69 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-object-1.xsd +76 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-param-1.xsd +51 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-pres-1.xsd +51 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-ruby-1.xsd +171 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-ruby-basic-1.xsd +89 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-script-1.xsd +70 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-ssismap-1.xsd +43 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-struct-1.xsd +112 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-style-1.xsd +52 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-table-1.xsd +272 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-target-1.xsd +53 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml-text-1.xsd +67 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml11-model-1.xsd +677 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml11-module-redefines-1.xsd +335 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml11-modules-1.xsd +528 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml11.xsd +104 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xhtml2.xsd +21 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-events-1.xsd +73 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-events-2.xsd +74 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-events-attribs-1.xsd +73 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-events-attribs-2.xsd +75 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-events-copyright-1.xsd +34 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-events-copyright-2.xsd +34 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml/xml-handlers-2.xsd +98 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml-inlinexbrl-1_0-definitions.xsd +225 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml-inlinexbrl-1_0-model.xsd +681 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml-inlinexbrl-1_0-modules.xsd +535 -0
- arelle/resources/cache/http/www.xbrl.org/2008/inlinexbrl/xhtml-inlinexbrl-1_0.xsd +40 -0
- arelle/resources/cache/http/www.xbrl.org/2008/match-filter.xsd +94 -0
- arelle/resources/cache/http/www.xbrl.org/2008/period-filter.xsd +86 -0
- arelle/resources/cache/http/www.xbrl.org/2008/registry.xsd +145 -0
- arelle/resources/cache/http/www.xbrl.org/2008/relative-filter.xsd +38 -0
- arelle/resources/cache/http/www.xbrl.org/2008/segment-scenario-filter.xsd +41 -0
- arelle/resources/cache/http/www.xbrl.org/2008/tuple-filter.xsd +83 -0
- arelle/resources/cache/http/www.xbrl.org/2008/unit-filter.xsd +58 -0
- arelle/resources/cache/http/www.xbrl.org/2008/validation.xsd +78 -0
- arelle/resources/cache/http/www.xbrl.org/2008/value-assertion.xsd +43 -0
- arelle/resources/cache/http/www.xbrl.org/2008/value-filter.xsd +43 -0
- arelle/resources/cache/http/www.xbrl.org/2008/variable.xsd +240 -0
- arelle/resources/cache/http/www.xbrl.org/2010/aspect-cover-filter.xsd +67 -0
- arelle/resources/cache/http/www.xbrl.org/2010/concept-relation-filter.xsd +108 -0
- arelle/resources/cache/http/www.xbrl.org/2010/custom-function-implementation.xsd +71 -0
- arelle/resources/cache/http/www.xbrl.org/2010/generic-message.xsd +68 -0
- arelle/resources/cache/http/www.xbrl.org/2010/validation-message.xsd +50 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xbrl/xbrl-instance-2003-12-31-ixmod.xsd +788 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xbrl/xbrl-linkbase-2003-12-31-ixmod.xsd +488 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xbrl/xl-2003-12-31.xsd +248 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xbrl/xlink-2003-12-31.xsd +117 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xframes-1.xsd +166 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-applet-1.xsd +66 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-attribs-1.xsd +72 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-base-1.xsd +36 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-basic-form-1.xsd +195 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-basic-table-1.xsd +169 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-basic10-model-1.xsd +376 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-basic10-module-redefines-1.xsd +61 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-basic10-modules-1.xsd +259 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-basic10.xsd +98 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-bdo-1.xsd +78 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-blkphras-1.xsd +161 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-blkpres-1.xsd +37 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-blkstruct-1.xsd +49 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-charent-1.xsd +38 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-copyright-1.xsd +29 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-csismap-1.xsd +96 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-datatypes-1.xsd +128 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-edit-1.xsd +39 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-events-1.xsd +130 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-form-1.xsd +326 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-frames-1.xsd +113 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-framework-1.xsd +66 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-hypertext-1.xsd +47 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-iframe-1.xsd +68 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-image-1.xsd +45 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-inlphras-1.xsd +163 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-inlpres-1.xsd +39 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-inlstruct-1.xsd +50 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-inlstyle-1.xsd +27 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-legacy-1.xsd +97 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-link-1.xsd +45 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-list-1.xsd +99 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-meta-1.xsd +42 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-misc-1.xsd +441 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-nameident-1.xsd +63 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-notations-1.xsd +69 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-object-1.xsd +76 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-param-1.xsd +51 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-pres-1.xsd +51 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-ruby-1.xsd +171 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-ruby-basic-1.xsd +89 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-script-1.xsd +70 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-ssismap-1.xsd +43 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-struct-1.xsd +112 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-style-1.xsd +52 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-table-1.xsd +272 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-target-1.xsd +53 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml-text-1.xsd +67 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml11-model-1.xsd +677 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml11-module-redefines-1.xsd +335 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml11-modules-1.xsd +528 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml11.xsd +104 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xhtml2.xsd +21 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-events-1.xsd +73 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-events-2.xsd +74 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-events-attribs-1.xsd +73 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-events-attribs-2.xsd +75 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-events-copyright-1.xsd +34 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-events-copyright-2.xsd +34 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml/xml-handlers-2.xsd +98 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml-inlinexbrl-1_1-definitions.xsd +252 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml-inlinexbrl-1_1-model.xsd +681 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml-inlinexbrl-1_1-modules.xsd +535 -0
- arelle/resources/cache/http/www.xbrl.org/2013/inlineXBRL/xhtml-inlinexbrl-1_1.xsd +40 -0
- arelle/resources/cache/http/www.xbrl.org/2013/match-filter.xsd +94 -0
- arelle/resources/cache/http/www.xbrl.org/2013/preferred-label.xsd +12 -0
- arelle/resources/cache/http/www.xbrl.org/2013/versioning-base.xsd +142 -0
- arelle/resources/cache/http/www.xbrl.org/2013/versioning-concept-details.xsd +143 -0
- arelle/resources/cache/http/www.xbrl.org/2013/versioning-concept-use.xsd +64 -0
- arelle/resources/cache/http/www.xbrl.org/2013/versioning-dimensions.xsd +162 -0
- arelle/resources/cache/http/www.xbrl.org/2014/extensible-enumerations.xsd +27 -0
- arelle/resources/cache/http/www.xbrl.org/2014/table.xsd +356 -0
- arelle/resources/cache/http/www.xbrl.org/2014/tablemodel.xsd +156 -0
- arelle/resources/cache/http/www.xbrl.org/2016/assertion-severity.xsd +29 -0
- arelle/resources/cache/http/www.xbrl.org/2016/severities.xml +21 -0
- arelle/resources/cache/http/www.xbrl.org/2016/taxonomy-package-catalog.xsd +38 -0
- arelle/resources/cache/http/www.xbrl.org/2016/taxonomy-package.xsd +154 -0
- arelle/resources/cache/http/www.xbrl.org/2022/assertion-severity.xsd +43 -0
- arelle/resources/cache/http/www.xbrl.org/2022/severities.xml +21 -0
- arelle/resources/cache/http/www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd +76 -0
- arelle/resources/cache/http/www.xbrl.org/dtr/type/numeric-2009-12-16.xsd +78 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/arcrole/accounting-arcrole-2023-01-04.xsd +39 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/arcrole/deprecated-2009-12-16.xsd +29 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd +14 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/arcrole/factExplanatory-2009-12-16.xsd +13 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/arcrole/jpfr-arcrole-2007-11-07.xsd +27 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/arcrole/parent-child-2013-09-19.xsd +12 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/deprecated-2009-12-16.xsd +17 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/jpfr-role-2007-11-07.xsd +47 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/negated-2008-03-31.xsd +30 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/negated-2009-12-16.xsd +33 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/negative-2009-12-16.xsd +25 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/net-2009-12-16.xsd +13 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/positive-2009-12-16.xsd +25 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/property-2022-09-28.xsd +15 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/reference-2009-12-16.xsd +21 -0
- arelle/resources/cache/http/www.xbrl.org/lrr/role/restated-2006-02-21.xsd +19 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2012-01-30/utr.xml +4543 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2012-10-31/utr.xml +4510 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2012-11-30/utr.xml +4567 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2013-02-28/utr.xml +5180 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2013-05-17/utr.xml +5349 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2016-08-10/utr.xml +5363 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2017-07-12/utr.xml +6164 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2021-02-16/utr.xml +6370 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2021-12-08/utr.xml +6493 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2022-02-16/utr.xml +6551 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2022-07-20/utr.xml +6638 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2023-12-20/utr.xml +6680 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2024-01-31/utr.xml +6680 -0
- arelle/resources/cache/http/www.xbrl.org/utr/2024-10-22/utr.xml +6693 -0
- arelle/resources/cache/http/www.xbrl.org/utr/utr.xml +6693 -0
- arelle/resources/cache/https/www.xbrl.org/2005/conformance.xsd +87 -0
- arelle/resources/cache/https/www.xbrl.org/2020/extensible-enumerations-2.0.xsd +51 -0
- arelle/resources/cache/https/www.xbrl.org/2023/calculation-1.1.xsd +27 -0
- arelle/resources/cache/https/www.xbrl.org/dtr/type/2020-01-21/types.xsd +812 -0
- arelle/resources/cache/https/www.xbrl.org/dtr/type/2022-03-31/types.xsd +847 -0
- arelle/resources/cache/https/www.xbrl.org/dtr/type/2024-01-31/types.xsd +897 -0
- arelle/resources/cache/https/www.xbrl.org/taxonomy/int/filing-indicators/REC/2021-02-03/filing-indicators-def.xml +68 -0
- arelle/resources/cache/https/www.xbrl.org/taxonomy/int/filing-indicators/REC/2021-02-03/filing-indicators-label.xml +84 -0
- arelle/resources/cache/https/www.xbrl.org/taxonomy/int/filing-indicators/REC/2021-02-03/filing-indicators.xsd +67 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/README.txt +149 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/html/tkTable.html +2039 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/libTktable2.11.so +0 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/license.txt +51 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/pkgIndex.tcl +3 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/tkTable.tcl +825 -0
- arelle/resources/libs/Tktable2.11/linux-x86_64/tktable.py +674 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/README.txt +149 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/html/tkTable.html +2039 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/libTktable2.11.dylib +0 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/license.txt +51 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/pkgIndex.tcl +2 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/tkTable.tcl +825 -0
- arelle/resources/libs/Tktable2.11/macos-arm64/tktable.py +674 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/README.txt +149 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/html/tkTable.html +2039 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/libTktable2.11.dylib +0 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/license.txt +51 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/pkgIndex.tcl +2 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/tkTable.tcl +825 -0
- arelle/resources/libs/Tktable2.11/macos-x86_64/tktable.py +674 -0
- arelle/resources/libs/Tktable2.11/win-x86_64/Tktable.dll +0 -0
- arelle/resources/libs/Tktable2.11/win-x86_64/pkgIndex.tcl +2 -0
- arelle/resources/libs/Tktable2.11/win-x86_64/tkTable.tcl +825 -0
- arelle/typing.py +9 -4
- arelle/utils/Contexts.py +38 -0
- arelle/utils/EntryPointDetection.py +139 -0
- arelle/utils/Equivalence.py +22 -0
- arelle/utils/{validate/PluginValidationData.py → PluginData.py} +5 -2
- arelle/utils/PluginHooks.py +256 -5
- arelle/utils/Units.py +36 -0
- arelle/utils/validate/Decorator.py +5 -3
- arelle/utils/validate/DetectScriptsInXhtml.py +99 -0
- arelle/utils/validate/ESEFImage.py +283 -0
- arelle/utils/validate/Validation.py +9 -1
- arelle/utils/validate/ValidationPlugin.py +74 -11
- arelle/utils/validate/ValidationUtil.py +55 -0
- arelle/webserver/bottle.py +5 -4424
- {arelle_release-2.17.1.dist-info → arelle_release-2.37.71.dist-info}/METADATA +51 -42
- arelle_release-2.37.71.dist-info/RECORD +697 -0
- {arelle_release-2.17.1.dist-info → arelle_release-2.37.71.dist-info}/WHEEL +1 -1
- {arelle_release-2.17.1.dist-info → arelle_release-2.37.71.dist-info/licenses}/LICENSE.md +1 -4
- {arelle_release-2.17.1.dist-info → arelle_release-2.37.71.dist-info}/top_level.txt +0 -1
- arelle/DialogOpenTaxonomyPackage.py +0 -1
- arelle/RenderingResolver.py +0 -624
- arelle/examples/.pydevproject +0 -5
- arelle/examples/CustomLogger.py +0 -43
- arelle/examples/LoadEFMvalidate.py +0 -32
- arelle/examples/LoadSavePreLbCsv.py +0 -26
- arelle/examples/LoadValidate.cs +0 -31
- arelle/examples/LoadValidate.py +0 -36
- arelle/examples/LoadValidateCmdLine.java +0 -69
- arelle/examples/LoadValidatePostedZip.java +0 -57
- arelle/examples/LoadValidateWebService.java +0 -34
- arelle/examples/SaveTableToExelle.py +0 -140
- arelle/examples/TR3toTR4.py +0 -88
- arelle/examples/plugin/bigInstance.py +0 -394
- arelle/examples/plugin/cmdWebServerExtension.py +0 -42
- arelle/examples/plugin/crashTest.py +0 -38
- 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/hello_i18n.pot +0 -26
- arelle/examples/plugin/hello_i18n.py +0 -32
- arelle/examples/plugin/importTestChild1.py +0 -21
- arelle/examples/plugin/importTestChild2.py +0 -22
- arelle/examples/plugin/importTestGrandchild1.py +0 -21
- arelle/examples/plugin/importTestGrandchild2.py +0 -21
- arelle/examples/plugin/importTestImported1.py +0 -23
- arelle/examples/plugin/importTestImported11.py +0 -22
- arelle/examples/plugin/importTestParent.py +0 -48
- arelle/examples/plugin/locale/fr/LC_MESSAGES/hello_i18n.po +0 -25
- arelle/examples/plugin/packagedImportTest/__init__.py +0 -47
- arelle/examples/plugin/packagedImportTest/importTestChild1.py +0 -21
- arelle/examples/plugin/packagedImportTest/importTestChild2.py +0 -22
- arelle/examples/plugin/packagedImportTest/importTestGrandchild1.py +0 -21
- arelle/examples/plugin/packagedImportTest/importTestGrandchild2.py +0 -21
- arelle/examples/plugin/packagedImportTest/importTestImported1.py +0 -24
- arelle/examples/plugin/packagedImportTest/importTestImported11.py +0 -21
- arelle/examples/plugin/packagedImportTest/subdir/importTestImported111.py +0 -21
- arelle/examples/plugin/packagedImportTest/subdir/subsubdir/importTestImported1111.py +0 -21
- arelle/examples/plugin/sakaCalendar.py +0 -215
- arelle/examples/plugin/saveInstanceInfoset.py +0 -121
- arelle/examples/plugin/streamingExtensions.py +0 -335
- arelle/examples/plugin/testcaseCalc11ValidateSetup.py +0 -32
- arelle/examples/plugin/testcaseIxExpectedHtmlFixup.py +0 -45
- arelle/examples/plugin/updateTableLB.py +0 -242
- 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/rules01.py +0 -109
- arelle/examples/plugin/validate/XYZ/rules/rules02.py +0 -58
- arelle/examples/plugin/validateSchemaLxml.py +0 -156
- arelle/examples/plugin/validateTableInfoset.py +0 -52
- arelle/examples/us-gaap-dei-docType-extraction-frm.xml +0 -90
- arelle/examples/us-gaap-dei-ratio-cash-frm.xml +0 -150
- arelle/plugin/functionsXmlCreation.py +0 -106
- arelle/plugin/instanceInfo.py +0 -306
- arelle/plugin/loadFromOIM-2018.py +0 -1282
- arelle/plugin/objectmaker.py +0 -285
- arelle/plugin/sphinx/FormulaGenerator.py +0 -823
- arelle/plugin/sphinx/SphinxContext.py +0 -404
- arelle/plugin/sphinx/SphinxEvaluator.py +0 -783
- arelle/plugin/sphinx/SphinxMethods.py +0 -1287
- arelle/plugin/sphinx/SphinxParser.py +0 -1093
- arelle/plugin/sphinx/SphinxValidator.py +0 -163
- arelle/plugin/sphinx/US-GAAP Ratios Example.xsr +0 -52
- arelle/plugin/sphinx/__init__.py +0 -285
- arelle/plugin/transforms/SEC/__init__.py +0 -308
- arelle/plugin/transforms/SEC/conf/README.md +0 -39
- arelle/plugin/transforms/SEC/conf/extractTestcase.sh +0 -2
- arelle/plugin/transforms/SEC/conf/extractTestcase.xsl +0 -109
- arelle/plugin/transforms/SEC/conf/runIxtSecTests.sh +0 -16
- arelle/plugin/transforms/SEC/conf/saxon9.jar +0 -0
- arelle/plugin/transforms/SEC/conf/testcase.xml +0 -7117
- arelle/plugin/transforms/SEC/conf/tests.xml +0 -848
- arelle/plugin/transforms/SEC/text2num.py +0 -110
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-boolballotbox.xml +0 -66
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-countrynameen.xml +0 -65
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-datequarterend.xml +0 -66
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-durday.xml +0 -61
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-durhour.xml +0 -69
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-durmonth.xml +0 -71
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-durweek.xml +0 -70
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-durwordsen.xml +0 -56
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-duryear.xml +0 -64
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-edgarprovcountryen.xml +0 -65
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-entityfilercategoryen.xml +0 -63
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-exchnameen.xml +0 -86
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-numwordsen.xml +0 -55
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-stateprovnameen.xml +0 -64
- arelle/plugin/transforms/SEC/transformationRegistry/registry/ixt-sec-yesnoballotbox.xml +0 -66
- arelle/plugin/transforms/SEC/transformationRegistry/registry/transform-registry.xml +0 -314
- arelle/plugin/transforms/SEC/transformationRegistry/schema/inlinexbrl-sec-transformation.xsd +0 -418
- arelle/plugin/validate/EFM/Consts.py +0 -362
- arelle/plugin/validate/EFM/DTS.py +0 -569
- arelle/plugin/validate/EFM/Dimensions.py +0 -264
- arelle/plugin/validate/EFM/Document.py +0 -206
- arelle/plugin/validate/EFM/Filing.py +0 -4383
- arelle/plugin/validate/EFM/IsolateSeparateIXDSes.py +0 -19
- arelle/plugin/validate/EFM/MessageNumericId.py +0 -142
- arelle/plugin/validate/EFM/PreCalAlignment.py +0 -324
- arelle/plugin/validate/EFM/Util.py +0 -688
- arelle/plugin/validate/EFM/__init__.py +0 -843
- arelle/plugin/validate/EFM/config.xml +0 -333
- arelle/plugin/validate/EFM/resources/README.md +0 -57
- arelle/plugin/validate/EFM/resources/axiswarnings.json +0 -27
- arelle/plugin/validate/EFM/resources/cef-deprecated-concepts.json +0 -8
- arelle/plugin/validate/EFM/resources/country-deprecated-concepts.json +0 -19
- arelle/plugin/validate/EFM/resources/currency-deprecated-concepts.json +0 -7
- arelle/plugin/validate/EFM/resources/dei-deprecated-concepts.json +0 -8
- arelle/plugin/validate/EFM/resources/dei-validations.json +0 -2884
- arelle/plugin/validate/EFM/resources/dqc-us-rules.json +0 -1389
- arelle/plugin/validate/EFM/resources/ecd-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-16-4.xml +0 -115
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-17-0-4.xml +0 -300
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-17-1.xml +0 -304
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-17-2.xml +0 -290
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-17-3-1.xml +0 -294
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-18.1.xml +0 -549
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-18.2.xml +0 -506
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-18.3.xml +0 -496
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-19-1.xml +0 -662
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-19-2.xml +0 -3761
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-19-3.xml +0 -3577
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-20-1.xml +0 -4020
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-20-2.xml +0 -3320
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-20-3.xml +0 -2998
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-2012.xml +0 -957
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-2013.xml +0 -982
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-2014.xml +0 -1001
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-2015.xml +0 -1076
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-2016.xml +0 -120
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-21-1.xml +0 -3329
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-21-2.xml +0 -1230
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-21-3.xml +0 -1113
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-21-4.xml +0 -1321
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-22-1-preview.xml +0 -1721
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-22-1.xml +0 -1841
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-22-2-2.xml +0 -1450
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-22-2.xml +0 -1429
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-22-4.xml +0 -1527
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-23-1-1.xml +0 -2049
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-23-1.xml +0 -2065
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-23-2.xml +0 -1674
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-23-3.xml +0 -1715
- arelle/plugin/validate/EFM/resources/edgartaxonomies/edgartaxonomies-all-years.xml +0 -10671
- arelle/plugin/validate/EFM/resources/edgartaxonomies/erxl.xsd +0 -69
- arelle/plugin/validate/EFM/resources/edgartaxonomies/extendedtaxonomies-all-years.xml +0 -18
- arelle/plugin/validate/EFM/resources/edgartaxonomies/ifrs-taxonomies.xml +0 -3126
- arelle/plugin/validate/EFM/resources/edgartaxonomies/ifrstaxonomies-all-years.xml +0 -22
- arelle/plugin/validate/EFM/resources/ex26-validations.json +0 -255
- arelle/plugin/validate/EFM/resources/exch-deprecated-concepts.json +0 -163
- arelle/plugin/validate/EFM/resources/ifrs-full-deprecated-concepts.json +0 -204
- arelle/plugin/validate/EFM/resources/invest-deprecated-concepts.json +0 -99
- arelle/plugin/validate/EFM/resources/ixbrl-transform-registries.json +0 -16
- arelle/plugin/validate/EFM/resources/naics-deprecated-concepts.json +0 -295
- arelle/plugin/validate/EFM/resources/oef-deprecated-concepts.json +0 -59
- arelle/plugin/validate/EFM/resources/other-standard-taxonomies.json +0 -12
- arelle/plugin/validate/EFM/resources/rr-deprecated-concepts.json +0 -14
- arelle/plugin/validate/EFM/resources/rxp-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/resources/shr-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/resources/sic-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/resources/signwarnings.json +0 -112
- arelle/plugin/validate/EFM/resources/srt-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/resources/stpr-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/resources/taxonomy-compatibility.json +0 -79
- arelle/plugin/validate/EFM/resources/us-gaap-deprecated-concepts.json +0 -2886
- arelle/plugin/validate/EFM/resources/us-gaap-rels-2020.json +0 -29068
- arelle/plugin/validate/EFM/resources/us-gaap-rels-2021.json +0 -29598
- arelle/plugin/validate/EFM/resources/us-gaap-rels-2022.json +0 -29141
- arelle/plugin/validate/EFM/resources/us-gaap-rels-2023.json +0 -29400
- arelle/plugin/validate/EFM/resources/vip-deprecated-concepts.json +0 -1
- arelle/plugin/validate/EFM/tools/CheckTxmyRefs.py +0 -180
- arelle/plugin/validate/EFM-htm/Const.py +0 -205
- arelle/plugin/validate/EFM-htm/__init__.py +0 -217
- arelle/plugin/validate/EFM-htm/config.xml +0 -17
- arelle/plugin/validate/EFM-htm/resources/efm-htm.dtd +0 -664
- arelle/plugin/validate/ESEF/ESEF_Current/Image.py +0 -199
- arelle/plugin/validate/ESEF_2022/__init__.py +0 -47
- arelle/plugin/validate/GFM/__init__.py +0 -59
- arelle/plugin/validate/GFM/config.xml +0 -82
- arelle/plugin/validate/SBRnl/CustomLoader.py +0 -19
- arelle/plugin/validate/SBRnl/DTS.py +0 -305
- arelle/plugin/validate/SBRnl/Dimensions.py +0 -357
- arelle/plugin/validate/SBRnl/Document.py +0 -799
- arelle/plugin/validate/SBRnl/Filing.py +0 -467
- arelle/plugin/validate/SBRnl/__init__.py +0 -75
- arelle/plugin/validate/SBRnl/config.xml +0 -26
- arelle/plugin/validate/SBRnl/sbr-nl-taxonomies.xml +0 -754
- arelle/plugin/validate/USBestPractices.py +0 -570
- arelle/plugin/validate/USCorpAction.py +0 -557
- arelle/plugin/validate/USSecTagging.py +0 -337
- arelle/plugin/validate/XDC/__init__.py +0 -77
- arelle/plugin/validate/XDC/config.xml +0 -20
- arelle/plugin/validate/XFsyntax/__init__.py +0 -64
- arelle/plugin/validate/XFsyntax/xf.py +0 -2227
- arelle/plugin/validate/__init__.py +0 -20
- arelle/plugin/validate/calc2.py +0 -536
- arelle/plugin/validateSBRnl.py +0 -530
- arelle/scripts-macOS/startWebServer.command +0 -3
- arelle/scripts-unix/startWebServer.sh +0 -1
- arelle/scripts-windows/startWebServer.bat +0 -5
- arelle_release-2.17.1.dist-info/RECORD +0 -676
- tests/__init__.py +0 -0
- tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/ArelleGUITest.csproj +0 -30
- tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/Tests.cs +0 -381
- tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest/Usings.cs +0 -1
- tests/integration_tests/ui_tests/ArelleGUITest/ArelleGUITest.sln +0 -31
- tests/integration_tests/ui_tests/resources/workiva.zip +0 -0
- tests/integration_tests/validation/README.md +0 -50
- tests/integration_tests/validation/conformance_suite_config.py +0 -59
- tests/integration_tests/validation/conformance_suite_configs.py +0 -63
- tests/integration_tests/validation/conformance_suite_configurations/efm_current.py +0 -261
- tests/integration_tests/validation/conformance_suite_configurations/esef_ixbrl_2021.py +0 -85
- tests/integration_tests/validation/conformance_suite_configurations/esef_ixbrl_2022.py +0 -90
- tests/integration_tests/validation/conformance_suite_configurations/esef_xhtml_2021.py +0 -15
- tests/integration_tests/validation/conformance_suite_configurations/esef_xhtml_2022.py +0 -15
- tests/integration_tests/validation/conformance_suite_configurations/nl_nt16.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/nl_nt17.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/nl_nt18.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_2_1.py +0 -34
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_calculations_1_1.py +0 -40
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_dimensions_1_0.py +0 -28
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensible_enumerations_1_0.py +0 -10
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_extensible_enumerations_2_0.py +0 -10
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0.py +0 -9
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_assertion_severity_2_0.py +0 -9
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_formula_1_0_function_registry.py +0 -14
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_ixbrl_1_1.py +0 -22
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_link_role_registry_1_0.py +0 -11
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_oim_1_0.py +0 -19
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_table_linkbase_1_0.py +0 -296
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_taxonomy_packages_1_0.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_transformation_registry_3.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_transformation_registry_4.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_transformation_registry_5.py +0 -13
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_utr_malformed_1_0.py +0 -31
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_utr_registry_1_0.py +0 -22
- tests/integration_tests/validation/conformance_suite_configurations/xbrl_utr_structure_1_0.py +0 -18
- tests/integration_tests/validation/conftest.py +0 -24
- tests/integration_tests/validation/discover_tests.py +0 -22
- tests/integration_tests/validation/download_conformance_suites.py +0 -47
- tests/integration_tests/validation/run_conformance_suites.py +0 -175
- tests/integration_tests/validation/test_conformance_suites.py +0 -14
- tests/integration_tests/validation/validation_util.py +0 -271
- tests/resources/conformance_suites/nl_nt16/br_kvk/2-04-invalid-period.xbrl +0 -63
- tests/resources/conformance_suites/nl_nt16/br_kvk/2-04-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/br_kvk/3-01-missing.xbrl +0 -53
- tests/resources/conformance_suites/nl_nt16/br_kvk/3-01-multiple.xbrl +0 -60
- tests/resources/conformance_suites/nl_nt16/br_kvk/3-01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-07-invalid.xbrl +0 -57
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-07-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-10-invalid.xbrl +0 -58
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-10-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-12-invalid.xbrl +0 -63
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-12-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-16-missing.xbrl +0 -61
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-16-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-20-invalid-date.xbrl +0 -89
- tests/resources/conformance_suites/nl_nt16/br_kvk/4-20-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_kvk/1-01-invalid-file-extension.xml +0 -56
- tests/resources/conformance_suites/nl_nt16/fr_kvk/1-01-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_kvk/2-01-invalid-lang.xbrl +0 -56
- tests/resources/conformance_suites/nl_nt16/fr_kvk/2-01-missing-lang.xbrl +0 -55
- tests/resources/conformance_suites/nl_nt16/fr_kvk/2-01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt16/fr_kvk/2-03-entrypoint.xsd +0 -6
- tests/resources/conformance_suites/nl_nt16/fr_kvk/2-03-invalid-entrypoint.xbrl +0 -63
- tests/resources/conformance_suites/nl_nt16/fr_kvk/2-03-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_kvk/5-01-invalid-decimals.xbrl +0 -49
- tests/resources/conformance_suites/nl_nt16/fr_kvk/5-01-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_kvk/5-02-invalid-decimals.xbrl +0 -49
- tests/resources/conformance_suites/nl_nt16/fr_kvk/5-02-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-01-invalid-file.xbrl +0 -2
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-01-invalid-zip.zip +0 -0
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-03-invalid-doctype.xbrl +0 -4
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-03-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-05-invalid-encoding.xbrl +0 -0
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-05-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-06-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt16/fr_nl/1-06.invalid.xbrl +0 -2
- tests/resources/conformance_suites/nl_nt16/fr_nl/2-06-invalid-file.xbrl +0 -8
- tests/resources/conformance_suites/nl_nt16/fr_nl/2-06-invalid-zip.zip +0 -0
- tests/resources/conformance_suites/nl_nt16/fr_nl/2-06-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt16/index.xml +0 -20
- tests/resources/conformance_suites/nl_nt17/br_kvk/2-04-invalid-period.xbrl +0 -63
- tests/resources/conformance_suites/nl_nt17/br_kvk/2-04-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/br_kvk/3-01-missing.xbrl +0 -53
- tests/resources/conformance_suites/nl_nt17/br_kvk/3-01-multiple.xbrl +0 -60
- tests/resources/conformance_suites/nl_nt17/br_kvk/3-01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-07-invalid.xbrl +0 -57
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-07-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-10-invalid.xbrl +0 -58
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-10-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-12-invalid.xbrl +0 -63
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-12-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-16-missing.xbrl +0 -61
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-16-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-20-invalid-date.xbrl +0 -89
- tests/resources/conformance_suites/nl_nt17/br_kvk/4-20-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_kvk/1-01-invalid-file-extension.xml +0 -56
- tests/resources/conformance_suites/nl_nt17/fr_kvk/1-01-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_kvk/2-01-invalid-lang.xbrl +0 -56
- tests/resources/conformance_suites/nl_nt17/fr_kvk/2-01-missing-lang.xbrl +0 -55
- tests/resources/conformance_suites/nl_nt17/fr_kvk/2-01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt17/fr_kvk/2-03-entrypoint.xsd +0 -6
- tests/resources/conformance_suites/nl_nt17/fr_kvk/2-03-invalid-entrypoint.xbrl +0 -63
- tests/resources/conformance_suites/nl_nt17/fr_kvk/2-03-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_kvk/5-01-invalid-decimals.xbrl +0 -49
- tests/resources/conformance_suites/nl_nt17/fr_kvk/5-01-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_kvk/5-02-invalid-decimals.xbrl +0 -49
- tests/resources/conformance_suites/nl_nt17/fr_kvk/5-02-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-01-invalid-file.xbrl +0 -2
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-01-invalid-zip.zip +0 -0
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-03-invalid-doctype.xbrl +0 -4
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-03-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-05-invalid-encoding.xbrl +0 -0
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-05-testcases.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-06-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt17/fr_nl/1-06.invalid.xbrl +0 -2
- tests/resources/conformance_suites/nl_nt17/fr_nl/2-06-invalid-file.xbrl +0 -8
- tests/resources/conformance_suites/nl_nt17/fr_nl/2-06-invalid-zip.zip +0 -0
- tests/resources/conformance_suites/nl_nt17/fr_nl/2-06-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt17/index.xml +0 -20
- tests/resources/conformance_suites/nl_nt18/fr_nl/1-03-invalid-doctype.xbrl +0 -4
- tests/resources/conformance_suites/nl_nt18/fr_nl/1-03-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt18/fr_nl/1-05-invalid-encoding.xbrl +0 -0
- tests/resources/conformance_suites/nl_nt18/fr_nl/1-05-testcases.xml +0 -22
- tests/resources/conformance_suites/nl_nt18/fr_nl/1-06-testcase.xml +0 -22
- tests/resources/conformance_suites/nl_nt18/fr_nl/1-06.invalid.xbrl +0 -2
- tests/resources/conformance_suites/nl_nt18/fr_nl/1.01-invalid-file.xbrl +0 -2
- tests/resources/conformance_suites/nl_nt18/fr_nl/1.01-invalid-zip.zip +0 -0
- tests/resources/conformance_suites/nl_nt18/fr_nl/1.01-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt18/fr_nl/2-06-invalid-file.xbrl +0 -8
- tests/resources/conformance_suites/nl_nt18/fr_nl/2-06-invalid-zip.zip +0 -0
- tests/resources/conformance_suites/nl_nt18/fr_nl/2-06-testcase.xml +0 -33
- tests/resources/conformance_suites/nl_nt18/index.xml +0 -8
- tests/unit_tests/arelle/conftest.py +0 -16
- tests/unit_tests/arelle/formula/test_fact_aspects_cache.py +0 -170
- tests/unit_tests/arelle/plugin/test_loadfromoim.py +0 -40
- tests/unit_tests/arelle/plugin/test_plugin_imports.py +0 -27
- tests/unit_tests/arelle/test_betafeatures.py +0 -81
- tests/unit_tests/arelle/test_cntlr.py +0 -28
- tests/unit_tests/arelle/test_import.py +0 -40
- tests/unit_tests/arelle/test_locale.py +0 -73
- tests/unit_tests/arelle/test_modelmanager.py +0 -15
- tests/unit_tests/arelle/test_packagemanager.py +0 -65
- tests/unit_tests/arelle/test_pluginmanager.py +0 -176
- tests/unit_tests/arelle/test_qname.py +0 -140
- tests/unit_tests/arelle/test_runtimeoptions.py +0 -56
- tests/unit_tests/arelle/test_system_info.py +0 -26
- tests/unit_tests/arelle/test_updater.py +0 -507
- tests/unit_tests/arelle/test_urlutil.py +0 -49
- tests/unit_tests/arelle/test_version.py +0 -46
- tests/unit_tests/arelle/utils/validate/test_decorator.py +0 -59
- /arelle/{examples/plugin/validate/XYZ → plugin/validate/EDINET}/rules/__init__.py +0 -0
- /arelle/plugin/validate/{HMRC → UK}/consistencyChecksByName.json +0 -0
- /arelle/plugin/validate/{HMRC → UK}/hmrc-taxonomies.xml +0 -0
- {arelle_release-2.17.1.dist-info → arelle_release-2.37.71.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,1991 @@
|
|
|
1
|
+
"""
|
|
2
|
+
See COPYRIGHT.md for copyright information.
|
|
3
|
+
"""
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from collections import defaultdict
|
|
7
|
+
from collections.abc import Iterable
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
import regex
|
|
12
|
+
import unicodedata
|
|
13
|
+
from jaconv import jaconv
|
|
14
|
+
|
|
15
|
+
from arelle import XbrlConst, ValidateDuplicateFacts, XmlUtil
|
|
16
|
+
from arelle.Cntlr import Cntlr
|
|
17
|
+
from arelle.FileSource import FileSource
|
|
18
|
+
from arelle.LinkbaseType import LinkbaseType
|
|
19
|
+
from arelle.ModelDtsObject import ModelResource, ModelConcept
|
|
20
|
+
from arelle.ModelRelationshipSet import ModelRelationshipSet
|
|
21
|
+
from arelle.ModelValue import QName, qname
|
|
22
|
+
from arelle.ModelXbrl import ModelXbrl
|
|
23
|
+
from arelle.ValidateDuplicateFacts import DuplicateType
|
|
24
|
+
from arelle.ValidateXbrl import ValidateXbrl
|
|
25
|
+
from arelle.typing import TypeGetText
|
|
26
|
+
from arelle.utils.PluginHooks import ValidationHook
|
|
27
|
+
from arelle.utils.validate.Decorator import validation
|
|
28
|
+
from arelle.utils.validate.Validation import Validation
|
|
29
|
+
from arelle.utils.validate.ValidationUtil import hasPresentationalConceptsWithFacts
|
|
30
|
+
from ..Constants import AccountingStandard, HALF_KANA, JAPAN_LANGUAGE_CODES, REPORT_ELR_URI_PATTERN, REPORT_ELR_ID_PATTERN
|
|
31
|
+
from ..ControllerPluginData import ControllerPluginData
|
|
32
|
+
from ..DeiRequirements import DeiItemStatus
|
|
33
|
+
from ..DisclosureSystems import DISCLOSURE_SYSTEM_EDINET
|
|
34
|
+
from ..FilingFormat import DocumentType
|
|
35
|
+
from ..PluginValidationDataExtension import PluginValidationDataExtension
|
|
36
|
+
from ..ReportFolderType import ReportFolderType
|
|
37
|
+
from ..Statement import StatementType
|
|
38
|
+
|
|
39
|
+
_: TypeGetText
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@validation(
|
|
43
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
44
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
45
|
+
)
|
|
46
|
+
def rule_balances(
|
|
47
|
+
pluginData: PluginValidationDataExtension,
|
|
48
|
+
val: ValidateXbrl,
|
|
49
|
+
*args: Any,
|
|
50
|
+
**kwargs: Any,
|
|
51
|
+
) -> Iterable[Validation]:
|
|
52
|
+
"""
|
|
53
|
+
EDINET.EC8057W: On the consolidated balance sheet, the sum of all liabilities and
|
|
54
|
+
equity must equal the sum of all assets.
|
|
55
|
+
EDINET.EC8058W: On the nonconsolidated balance sheet, the sum of all liabilities and
|
|
56
|
+
equity must equal the sum of all assets.
|
|
57
|
+
EDINET.EC8062W: On the consolidated statement of financial position, the sum of all liabilities and
|
|
58
|
+
equity must equal the sum of all assets.
|
|
59
|
+
EDINET.EC8064W: On the nonconsolidated statement of financial position, the sum of all liabilities and
|
|
60
|
+
equity must equal the sum of all assets.
|
|
61
|
+
"""
|
|
62
|
+
for statementInstance in pluginData.getStatementInstances(val.modelXbrl):
|
|
63
|
+
statement = statementInstance.statement
|
|
64
|
+
for balanceSheet in statementInstance.balanceSheets:
|
|
65
|
+
if balanceSheet.creditSum == balanceSheet.debitSum:
|
|
66
|
+
continue
|
|
67
|
+
code = None
|
|
68
|
+
if statement.statementType == StatementType.BALANCE_SHEET:
|
|
69
|
+
if statement.isConsolidated:
|
|
70
|
+
code = "EDINET.EC8057W"
|
|
71
|
+
else:
|
|
72
|
+
code = "EDINET.EC8058W"
|
|
73
|
+
elif statement.statementType == StatementType.STATEMENT_OF_FINANCIAL_POSITION:
|
|
74
|
+
if statement.isConsolidated:
|
|
75
|
+
code = "EDINET.EC8062W"
|
|
76
|
+
else:
|
|
77
|
+
code = "EDINET.EC8064W"
|
|
78
|
+
assert code is not None, "Unknown balance sheet encountered."
|
|
79
|
+
yield Validation.warning(
|
|
80
|
+
codes=code,
|
|
81
|
+
msg=_("The %(consolidated)s %(balanceSheet)s is not balanced. "
|
|
82
|
+
"The sum of all liabilities and equity must equal the sum of all assets. "
|
|
83
|
+
"Please correct the debit (%(debitSum)s) and credit (%(creditSum)s) "
|
|
84
|
+
"values so that they match "
|
|
85
|
+
"<roleUri=%(roleUri)s> <contextID=%(contextId)s> <unitID=%(unitId)s>."),
|
|
86
|
+
consolidated=_("consolidated") if statement.isConsolidated
|
|
87
|
+
else _("nonconsolidated"),
|
|
88
|
+
balanceSheet=_("balance sheet") if statement.statementType == StatementType.BALANCE_SHEET
|
|
89
|
+
else _("statement of financial position"),
|
|
90
|
+
debitSum=f"{balanceSheet.debitSum:,}",
|
|
91
|
+
creditSum=f"{balanceSheet.creditSum:,}",
|
|
92
|
+
roleUri=statement.roleUri,
|
|
93
|
+
contextId=balanceSheet.contextId,
|
|
94
|
+
unitId=balanceSheet.unitId,
|
|
95
|
+
modelObject=balanceSheet.facts,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@validation(
|
|
100
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
101
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
102
|
+
)
|
|
103
|
+
def rule_EC1057E(
|
|
104
|
+
pluginData: PluginValidationDataExtension,
|
|
105
|
+
val: ValidateXbrl,
|
|
106
|
+
*args: Any,
|
|
107
|
+
**kwargs: Any,
|
|
108
|
+
) -> Iterable[Validation]:
|
|
109
|
+
"""
|
|
110
|
+
EDINET.EC1057E: The submission date on the cover page has not been filled in.
|
|
111
|
+
Ensure that there is a nonnil value disclosed for FilingDateCoverPage
|
|
112
|
+
Note: This rule is only applicable to the public documents.
|
|
113
|
+
"""
|
|
114
|
+
facts = [
|
|
115
|
+
fact
|
|
116
|
+
for qname in (
|
|
117
|
+
pluginData.jpcrpEsrFilingDateCoverPageQn,
|
|
118
|
+
pluginData.jpcrpFilingDateCoverPageQn,
|
|
119
|
+
pluginData.jpspsFilingDateCoverPageQn
|
|
120
|
+
)
|
|
121
|
+
for fact in pluginData.iterValidNonNilFacts(val.modelXbrl, qname)
|
|
122
|
+
]
|
|
123
|
+
for modelDocument in pluginData.iterCoverPages(val.modelXbrl):
|
|
124
|
+
if any(fact.modelDocument == modelDocument for fact in facts):
|
|
125
|
+
continue
|
|
126
|
+
if not (pluginData.hasValidNonNilFact(val.modelXbrl, pluginData.jpcrpEsrFilingDateCoverPageQn)
|
|
127
|
+
or pluginData.hasValidNonNilFact(val.modelXbrl, pluginData.jpcrpFilingDateCoverPageQn)
|
|
128
|
+
or pluginData.hasValidNonNilFact(val.modelXbrl, pluginData.jpspsFilingDateCoverPageQn)):
|
|
129
|
+
yield Validation.error(
|
|
130
|
+
codes='EDINET.EC1057E',
|
|
131
|
+
msg=_("There is no submission date ('【提出日】') on the cover page. "
|
|
132
|
+
"File name: '%(file)s'. "
|
|
133
|
+
"Please add '【提出日】' to the relevant file."),
|
|
134
|
+
file=modelDocument.basename,
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@validation(
|
|
139
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
140
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
141
|
+
)
|
|
142
|
+
def rule_EC5002E(
|
|
143
|
+
pluginData: PluginValidationDataExtension,
|
|
144
|
+
val: ValidateXbrl,
|
|
145
|
+
*args: Any,
|
|
146
|
+
**kwargs: Any,
|
|
147
|
+
) -> Iterable[Validation]:
|
|
148
|
+
"""
|
|
149
|
+
EDINET.EC5002E: A unit other than number of shares (xbrli:shares) has been set for the
|
|
150
|
+
Number of Shares (xbrli:sharesItemType) item '{xxx}yyy'.
|
|
151
|
+
Please check the units and enter the correct information.
|
|
152
|
+
|
|
153
|
+
Similar to "xbrl.4.8.2:sharesFactUnit-notSharesMeasure" and "xbrl.4.8.2:sharesFactUnit-notSingleMeasure"
|
|
154
|
+
TODO: Consolidate this rule with the above two rules if possible.
|
|
155
|
+
"""
|
|
156
|
+
errorFacts = []
|
|
157
|
+
for fact in val.modelXbrl.facts:
|
|
158
|
+
concept = fact.concept
|
|
159
|
+
if concept is None or not concept.isShares:
|
|
160
|
+
continue
|
|
161
|
+
unit = fact.unit
|
|
162
|
+
measures = unit.measures
|
|
163
|
+
if (
|
|
164
|
+
not measures or
|
|
165
|
+
len(measures[0]) != 1 or
|
|
166
|
+
len(measures[1]) != 0 or
|
|
167
|
+
measures[0][0] != XbrlConst.qnXbrliShares
|
|
168
|
+
):
|
|
169
|
+
errorFacts.append(fact)
|
|
170
|
+
for fact in errorFacts:
|
|
171
|
+
yield Validation.error(
|
|
172
|
+
codes='EDINET.EC5002E',
|
|
173
|
+
msg=_("A unit other than number of shares (xbrli:shares) has been set for "
|
|
174
|
+
"the Number of Shares (xbrli:sharesItemType) item '%(qname)s'. "
|
|
175
|
+
"Please check the units and enter the correct information."),
|
|
176
|
+
qname=fact.qname.clarkNotation,
|
|
177
|
+
modelObject=fact,
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@validation(
|
|
182
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
183
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
184
|
+
)
|
|
185
|
+
def rule_EC5602R(
|
|
186
|
+
pluginData: PluginValidationDataExtension,
|
|
187
|
+
val: ValidateXbrl,
|
|
188
|
+
*args: Any,
|
|
189
|
+
**kwargs: Any,
|
|
190
|
+
) -> Iterable[Validation]:
|
|
191
|
+
"""
|
|
192
|
+
EDINET.EC5602R: DEI value must match corresponding cover page value.
|
|
193
|
+
|
|
194
|
+
Applies to FilerNameInJapaneseDEI, FilerNameInEnglishDEI, FundNameInJapaneseDEI.
|
|
195
|
+
"""
|
|
196
|
+
errors = []
|
|
197
|
+
|
|
198
|
+
def _normalizeValue(value: str) -> str:
|
|
199
|
+
value = regex.sub(r'\s+', ' ', value).strip()
|
|
200
|
+
return jaconv.h2z(value, kana=True, ascii=True, digit=True)
|
|
201
|
+
|
|
202
|
+
def _collectMismatchedValues(deiQName: QName, coverPageQnames: list[QName]) -> None:
|
|
203
|
+
deiFact = next((
|
|
204
|
+
fact
|
|
205
|
+
for fact in pluginData.iterValidNonNilFacts(val.modelXbrl, deiQName)
|
|
206
|
+
), None)
|
|
207
|
+
if deiFact is None or deiFact.xValue is None:
|
|
208
|
+
return
|
|
209
|
+
deiValue = _normalizeValue(str(deiFact.xValue))
|
|
210
|
+
for coverPageQname in coverPageQnames:
|
|
211
|
+
for coverPageFact in pluginData.iterValidNonNilFacts(val.modelXbrl, coverPageQname):
|
|
212
|
+
factValue = _normalizeValue(str(coverPageFact.xValue))
|
|
213
|
+
if not factValue.startswith(deiValue):
|
|
214
|
+
errors.append((deiFact, coverPageFact))
|
|
215
|
+
|
|
216
|
+
_collectMismatchedValues(
|
|
217
|
+
pluginData.qname('jpdei_cor', 'FilerNameInJapaneseDEI'),
|
|
218
|
+
[
|
|
219
|
+
#【発行者名】
|
|
220
|
+
pluginData.qname('jpsps-esr_cor', 'IssuerNameCoverPage'),
|
|
221
|
+
pluginData.qname('jpsps-sbr_cor', 'IssuerNameCoverPage'),
|
|
222
|
+
pluginData.qname('jpsps_cor', 'IssuerNameCoverPage'),
|
|
223
|
+
#【会社名】
|
|
224
|
+
pluginData.qname('jpcrp-esr_cor', 'CompanyNameCoverPage'),
|
|
225
|
+
pluginData.qname('jpcrp-sbr_cor', 'CompanyNameCoverPage'),
|
|
226
|
+
pluginData.qname('jpcrp_cor', 'CompanyNameCoverPage'),
|
|
227
|
+
pluginData.qname('jpctl_cor', 'CompanyNameCoverPage'),
|
|
228
|
+
#【氏名又は名称】
|
|
229
|
+
pluginData.qname('jplvh_cor', 'NameCoverPage'),
|
|
230
|
+
#【届出者の名称】
|
|
231
|
+
pluginData.qname('jptoi_cor', 'FullNameOrNameOfFilerOfNotificationCoverPage'),
|
|
232
|
+
#【届出者の氏名又は名称】
|
|
233
|
+
pluginData.qname('jptoo-ton_cor', 'FullNameOrNameOfFilerOfNotificationCoverPage'),
|
|
234
|
+
pluginData.qname('jptoo-wto_cor', 'FullNameOrNameOfFilerOfNotificationCoverPage'),
|
|
235
|
+
#【報告者の名称】
|
|
236
|
+
pluginData.qname('jptoi_cor', 'NameOfFilerCoverPage'),
|
|
237
|
+
pluginData.qname('jptoo-pst_cor', 'NameOfFilerCoverPage'),
|
|
238
|
+
#【報告者の氏名又は名称】
|
|
239
|
+
pluginData.qname('jptoo-toa_cor', 'FullNameOrNameOfFilerCoverPage'),
|
|
240
|
+
pluginData.qname('jptoo-tor_cor', 'FullNameOrNameOfFilerCoverPage'),
|
|
241
|
+
]
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
_collectMismatchedValues(
|
|
245
|
+
pluginData.qname('jpdei_cor', 'FilerNameInEnglishDEI'),
|
|
246
|
+
[
|
|
247
|
+
#【英訳名】
|
|
248
|
+
pluginData.qname('jpcrp-esr_cor', 'CompanyNameInEnglishCoverPage'),
|
|
249
|
+
pluginData.qname('jpcrp-sbr_cor', 'CompanyNameInEnglishCoverPage'),
|
|
250
|
+
pluginData.qname('jpcrp_cor', 'CompanyNameInEnglishCoverPage'),
|
|
251
|
+
pluginData.qname('jpctl_cor', 'CompanyNameInEnglishCoverPage'),
|
|
252
|
+
]
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
_collectMismatchedValues(
|
|
256
|
+
pluginData.qname('jpdei_cor', 'FundNameInJapaneseDEI'),
|
|
257
|
+
[
|
|
258
|
+
#【ファンド名】
|
|
259
|
+
pluginData.qname('jpsps-esr_cor', 'FundNameCoverPage'),
|
|
260
|
+
pluginData.qname('jpsps_cor', 'FundNameCoverPage'),
|
|
261
|
+
#【届出の対象とした募集(売出)内国投資信託受益証券に係るファンドの名称】
|
|
262
|
+
pluginData.qname('jpsps_cor', 'NameOfFundRelatedToDomesticInvestmentTrustBeneficiaryCertificateToRegisterForOfferingOrDistributionCoverPageTextBlock'),
|
|
263
|
+
#【届出の対象とした募集(売出)内国投資証券に係る投資法人の名称】
|
|
264
|
+
pluginData.qname('jpsps_cor', 'NameOfInvestmentCorporationRelatedToDomesticInvestmentSecuritiesToRegisterForOfferingOrDistributionCoverPage'),
|
|
265
|
+
]
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
for deiFact, coverPageFact in errors:
|
|
269
|
+
yield Validation.warning(
|
|
270
|
+
codes='EDINET.EC5602R',
|
|
271
|
+
msg=_("The DEI information \"%(deiQname)s\" (%(deiValue)s) does not match "
|
|
272
|
+
"\"%(coverPageQname)s\" (%(coverPageValue)s) . "
|
|
273
|
+
"Please check the content of the corresponding DEI (the element "
|
|
274
|
+
"displayed in the message) and the value in the submitted document, "
|
|
275
|
+
"and correct it so that they match."),
|
|
276
|
+
deiQname=deiFact.qname,
|
|
277
|
+
deiValue=deiFact.xValue,
|
|
278
|
+
coverPageQname=coverPageFact.qname,
|
|
279
|
+
coverPageValue=coverPageFact.xValue,
|
|
280
|
+
modelObject=[deiFact, coverPageFact],
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
@validation(
|
|
285
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
286
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
287
|
+
)
|
|
288
|
+
def rule_EC5613E(
|
|
289
|
+
pluginData: PluginValidationDataExtension,
|
|
290
|
+
val: ValidateXbrl,
|
|
291
|
+
*args: Any,
|
|
292
|
+
**kwargs: Any,
|
|
293
|
+
) -> Iterable[Validation]:
|
|
294
|
+
"""
|
|
295
|
+
EDINET.EC5613E: Please set the DEI "Accounting Standard" value to one
|
|
296
|
+
of the following: "Japan GAAP", "US GAAP", "IFRS".
|
|
297
|
+
"""
|
|
298
|
+
validAccountingStandards = {s.value for s in AccountingStandard}
|
|
299
|
+
errorFacts = [
|
|
300
|
+
fact for fact in pluginData.iterValidNonNilFacts(val.modelXbrl, pluginData.accountingStandardsDeiQn)
|
|
301
|
+
if fact.xValue not in validAccountingStandards
|
|
302
|
+
]
|
|
303
|
+
if len(errorFacts) > 0:
|
|
304
|
+
yield Validation.error(
|
|
305
|
+
codes='EDINET.EC5613E',
|
|
306
|
+
msg=_("Please set the DEI \"Accounting Standard\" value to one "
|
|
307
|
+
"of the following: %(values)s."),
|
|
308
|
+
values=', '.join(f'"{s.value}"' for s in AccountingStandard),
|
|
309
|
+
modelObject=errorFacts,
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
@validation(
|
|
314
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
315
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
316
|
+
)
|
|
317
|
+
def rule_EC5614E(
|
|
318
|
+
pluginData: PluginValidationDataExtension,
|
|
319
|
+
val: ValidateXbrl,
|
|
320
|
+
*args: Any,
|
|
321
|
+
**kwargs: Any,
|
|
322
|
+
) -> Iterable[Validation]:
|
|
323
|
+
"""
|
|
324
|
+
EDINET.EC5614E: A required DEI value is missing.
|
|
325
|
+
"""
|
|
326
|
+
for coverPageDocument in pluginData.iterCoverPages(val.modelXbrl):
|
|
327
|
+
filingFormat = pluginData.getFilingFormat(val.modelXbrl)
|
|
328
|
+
if filingFormat is None:
|
|
329
|
+
return
|
|
330
|
+
deiRequirements = pluginData.getDeiRequirements(val.modelXbrl)
|
|
331
|
+
for qname in pluginData.deiItems:
|
|
332
|
+
status = deiRequirements.get(qname, filingFormat)
|
|
333
|
+
if (
|
|
334
|
+
status == DeiItemStatus.REQUIRED and
|
|
335
|
+
not pluginData.hasValidNonNilFact(val.modelXbrl, qname)
|
|
336
|
+
):
|
|
337
|
+
yield Validation.error(
|
|
338
|
+
codes='EDINET.EC5614E',
|
|
339
|
+
msg=_("The value of '%(localName)s' in the DEI does not exist. "
|
|
340
|
+
"File name: '%(file)s'. "
|
|
341
|
+
"Please add the cover item %(localName)s to the relevant file."),
|
|
342
|
+
localName=qname.localName,
|
|
343
|
+
file=coverPageDocument.basename,
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
@validation(
|
|
348
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
349
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
350
|
+
)
|
|
351
|
+
def rule_EC5623W(
|
|
352
|
+
pluginData: PluginValidationDataExtension,
|
|
353
|
+
val: ValidateXbrl,
|
|
354
|
+
*args: Any,
|
|
355
|
+
**kwargs: Any,
|
|
356
|
+
) -> Iterable[Validation]:
|
|
357
|
+
"""
|
|
358
|
+
EDINET.EC5623W: Instances using IFRS taxonomies must set the DEI "Accounting Standard" value to "IFRS".
|
|
359
|
+
"""
|
|
360
|
+
if pluginData.jpigpNamespace not in val.modelXbrl.prefixedNamespaces.values():
|
|
361
|
+
return
|
|
362
|
+
errorFacts = [
|
|
363
|
+
fact for fact in pluginData.iterValidNonNilFacts(val.modelXbrl, pluginData.accountingStandardsDeiQn)
|
|
364
|
+
if fact.xValue != AccountingStandard.IFRS.value
|
|
365
|
+
]
|
|
366
|
+
if len(errorFacts) > 0:
|
|
367
|
+
yield Validation.warning(
|
|
368
|
+
codes='EDINET.EC5623W',
|
|
369
|
+
msg=_("Please set the DEI \"Accounting Standard\" value to \"IFRS\"."),
|
|
370
|
+
modelObject=errorFacts,
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
@validation(
|
|
375
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
376
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
377
|
+
)
|
|
378
|
+
def rule_namespace_prefixes(
|
|
379
|
+
pluginData: PluginValidationDataExtension,
|
|
380
|
+
val: ValidateXbrl,
|
|
381
|
+
*args: Any,
|
|
382
|
+
**kwargs: Any,
|
|
383
|
+
) -> Iterable[Validation]:
|
|
384
|
+
"""
|
|
385
|
+
EDINET.EC8003W: The namespace prefix used in the namespace declaration of the
|
|
386
|
+
report schema file must conform to the rules.
|
|
387
|
+
jp{府令略号}{様式番号}-{報告書略号}_{EDINET コード又はファンドコード}-{追番(3 桁)}
|
|
388
|
+
EDINET.EC8004W: The namespace prefix used in the namespace declaration of the
|
|
389
|
+
audit report schema file must conform to the rules.
|
|
390
|
+
jpaud-{監査報告書略号}-{当期又は前期の別}{連結又は個別の別}_{EDINET コード又はファンドコード}-{追番(3 桁)}
|
|
391
|
+
"""
|
|
392
|
+
extensionSchemas = pluginData.getExtensionSchemas(val.modelXbrl)
|
|
393
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
394
|
+
for prefix, namespace in modelDocument.xmlRootElement.nsmap.items():
|
|
395
|
+
if namespace not in extensionSchemas:
|
|
396
|
+
continue # Not an extension schema namespace
|
|
397
|
+
pathInfo = extensionSchemas[namespace]
|
|
398
|
+
assert pathInfo.reportFolderType is not None
|
|
399
|
+
patterns = pathInfo.reportFolderType.prefixPatterns
|
|
400
|
+
if len(patterns) == 0:
|
|
401
|
+
continue # No patterns to check against
|
|
402
|
+
match = any(pattern.fullmatch(prefix) for pattern in patterns)
|
|
403
|
+
if match:
|
|
404
|
+
continue # Valid namespace URI
|
|
405
|
+
if pathInfo.reportFolderType == ReportFolderType.AUDIT_DOC:
|
|
406
|
+
yield Validation.warning(
|
|
407
|
+
codes='EDINET.EC8004W',
|
|
408
|
+
msg=_("The namespace prefix used in the namespace declaration of the "
|
|
409
|
+
"audit report schema file does not conform to the rules. "
|
|
410
|
+
"File name: '%(file)s'. "
|
|
411
|
+
"Prefix: '%(prefix)s'."),
|
|
412
|
+
file=pathInfo.path.name,
|
|
413
|
+
prefix=prefix
|
|
414
|
+
)
|
|
415
|
+
else:
|
|
416
|
+
yield Validation.warning(
|
|
417
|
+
codes='EDINET.EC8003W',
|
|
418
|
+
msg=_("The namespace prefix used in the namespace declaration of the "
|
|
419
|
+
"report schema file does not conform to the rules. "
|
|
420
|
+
"File name: '%(file)s'. "
|
|
421
|
+
"Prefix: '%(prefix)s'."),
|
|
422
|
+
file=pathInfo.path.name,
|
|
423
|
+
prefix=prefix
|
|
424
|
+
)
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
@validation(
|
|
428
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
429
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
430
|
+
)
|
|
431
|
+
def rule_namespace_uris(
|
|
432
|
+
pluginData: PluginValidationDataExtension,
|
|
433
|
+
val: ValidateXbrl,
|
|
434
|
+
*args: Any,
|
|
435
|
+
**kwargs: Any,
|
|
436
|
+
) -> Iterable[Validation]:
|
|
437
|
+
"""
|
|
438
|
+
EDINET.EC8000W: A report's extension taxonomy namespace URI must conform to the rules.
|
|
439
|
+
http://disclosure.edinet-fsa.go.jp/jp{府令略号}{様式番号}/{報告書略号}/{報告書連番(3 桁)}
|
|
440
|
+
/{EDINET コード又はファンドコード}-{追番(3 桁)}/{報告対象期間期末日|報告義務発生日}
|
|
441
|
+
/{報告書提出回数(2 桁)}/{報告書提出日}
|
|
442
|
+
EDINET.EC8001W: An audit report's extension taxonomy namespace URI must conform to the rules.
|
|
443
|
+
http://disclosure.edinet-fsa.go.jp/jpaud/{監査報告書略号}/{当期又は前期の別}{連結又は個別の別}
|
|
444
|
+
/{報告書連番(3 桁)}/{EDINET コード又はファンドコード}-{追番(3桁)}/{報告対象期間期末日}
|
|
445
|
+
/{報告書提出回数(2 桁)}/{報告書提出日}
|
|
446
|
+
"""
|
|
447
|
+
for targetNamespace, pathInfo in pluginData.getExtensionSchemas(val.modelXbrl).items():
|
|
448
|
+
assert pathInfo.reportFolderType is not None
|
|
449
|
+
patterns = pathInfo.reportFolderType.namespaceUriPatterns
|
|
450
|
+
if len(patterns) == 0:
|
|
451
|
+
continue # No patterns to check against
|
|
452
|
+
match = any(pattern.fullmatch(targetNamespace) for pattern in patterns)
|
|
453
|
+
if match:
|
|
454
|
+
continue # Valid namespace URI
|
|
455
|
+
if pathInfo.reportFolderType == ReportFolderType.AUDIT_DOC:
|
|
456
|
+
yield Validation.warning(
|
|
457
|
+
codes='EDINET.EC8001W',
|
|
458
|
+
msg=_("The namespace URI used in the namespace declaration of the "
|
|
459
|
+
"audit report schema file does not conform to the rules. "
|
|
460
|
+
"File name: '%(file)s'. "
|
|
461
|
+
"URI: '%(uri)s'."),
|
|
462
|
+
file=pathInfo.path.name,
|
|
463
|
+
uri=targetNamespace
|
|
464
|
+
)
|
|
465
|
+
else:
|
|
466
|
+
yield Validation.warning(
|
|
467
|
+
codes='EDINET.EC8000W',
|
|
468
|
+
msg=_("The namespace URI used in the namespace declaration of the "
|
|
469
|
+
"report schema file does not conform to the rules. "
|
|
470
|
+
"File name: '%(file)s'. "
|
|
471
|
+
"URI: '%(uri)s'."),
|
|
472
|
+
file=pathInfo.path.name,
|
|
473
|
+
uri=targetNamespace
|
|
474
|
+
)
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
@validation(
|
|
478
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
479
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
480
|
+
)
|
|
481
|
+
def rule_roles(
|
|
482
|
+
pluginData: PluginValidationDataExtension,
|
|
483
|
+
val: ValidateXbrl,
|
|
484
|
+
*args: Any,
|
|
485
|
+
**kwargs: Any,
|
|
486
|
+
) -> Iterable[Validation]:
|
|
487
|
+
"""
|
|
488
|
+
EDINET.EC8006W: The ID of the report's extended link role must conform to the rules.
|
|
489
|
+
rol_{Root element name (excluding Abstract and Heading)}(-{Modifier})(-{2-digit sequential number})
|
|
490
|
+
EDINET.EC8007W: The URI of the report's extended link role must conform to the rules.
|
|
491
|
+
http://disclosure.edinet-fsa.go.jp/role/jp{Prefecture Ordinance abbreviation|dei}
|
|
492
|
+
(-{report abbreviation})/rol_{root element name (excluding Abstract and Heading)}
|
|
493
|
+
(-{modifier})(-{two-digit sequential number})
|
|
494
|
+
"""
|
|
495
|
+
for roleTypes in val.modelXbrl.roleTypes.values():
|
|
496
|
+
for roleType in roleTypes:
|
|
497
|
+
if not pluginData.isExtensionUri(roleType.modelDocument.uri, val.modelXbrl):
|
|
498
|
+
continue
|
|
499
|
+
if not REPORT_ELR_ID_PATTERN.fullmatch(str(roleType.id)):
|
|
500
|
+
yield Validation.warning(
|
|
501
|
+
codes='EDINET.EC8006W',
|
|
502
|
+
msg=_("The ID of the report's extended link role does not conform to the rules. "
|
|
503
|
+
"File name: '%(file)s'. "
|
|
504
|
+
"ID: '%(id)s'."),
|
|
505
|
+
file=roleType.modelDocument.basename,
|
|
506
|
+
id=roleType.id
|
|
507
|
+
)
|
|
508
|
+
if not REPORT_ELR_URI_PATTERN.fullmatch(roleType.roleURI):
|
|
509
|
+
yield Validation.warning(
|
|
510
|
+
codes='EDINET.EC8007W',
|
|
511
|
+
msg=_("The URI of the report's extended link role does not conform to the rules. "
|
|
512
|
+
"File name: '%(file)s'. "
|
|
513
|
+
"URI: '%(uri)s'."),
|
|
514
|
+
file=roleType.modelDocument.basename,
|
|
515
|
+
uri=roleType.roleURI
|
|
516
|
+
)
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
@validation(
|
|
520
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
521
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
522
|
+
)
|
|
523
|
+
def rule_EC8024E(
|
|
524
|
+
pluginData: PluginValidationDataExtension,
|
|
525
|
+
val: ValidateXbrl,
|
|
526
|
+
*args: Any,
|
|
527
|
+
**kwargs: Any,
|
|
528
|
+
) -> Iterable[Validation]:
|
|
529
|
+
"""
|
|
530
|
+
EDINET.EC8024E: Instance values of the same element, context, and unit may not
|
|
531
|
+
have different values or different decimals attributes.
|
|
532
|
+
Correct the element with the relevant context ID. For elements in an inline XBRL file that have
|
|
533
|
+
duplicate elements, context IDs, and unit IDs, set the same values for the value and
|
|
534
|
+
decimals attribute.
|
|
535
|
+
"""
|
|
536
|
+
duplicateFactSets = ValidateDuplicateFacts.getDuplicateFactSetsWithType(val.modelXbrl.facts, DuplicateType.INCOMPLETE)
|
|
537
|
+
for duplicateFactSet in duplicateFactSets:
|
|
538
|
+
fact = duplicateFactSet.facts[0]
|
|
539
|
+
yield Validation.error(
|
|
540
|
+
codes='EDINET.EC8024E',
|
|
541
|
+
msg=_("Instance values of the same element, context, and unit may not "
|
|
542
|
+
"have different values or different decimals attributes. <element=%(concept)s> "
|
|
543
|
+
"<contextID=%(context)s> <unit=%(unit)s>. Correct the element with the relevant "
|
|
544
|
+
"context ID. For elements in an inline XBRL file that have duplicate "
|
|
545
|
+
"elements, context IDs, and unit IDs, set the same values for the value and "
|
|
546
|
+
"decimals attribute."),
|
|
547
|
+
concept=fact.qname,
|
|
548
|
+
context=fact.contextID,
|
|
549
|
+
unit=fact.unitID,
|
|
550
|
+
modelObject=duplicateFactSet.facts,
|
|
551
|
+
)
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
@validation(
|
|
555
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
556
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
557
|
+
)
|
|
558
|
+
def rule_EC8027W(
|
|
559
|
+
pluginData: PluginValidationDataExtension,
|
|
560
|
+
val: ValidateXbrl,
|
|
561
|
+
*args: Any,
|
|
562
|
+
**kwargs: Any,
|
|
563
|
+
) -> Iterable[Validation]:
|
|
564
|
+
"""
|
|
565
|
+
EDINET.EC8027W: For presentation links and definition links, there must be
|
|
566
|
+
only one root element.
|
|
567
|
+
File name: xxx <Extended link role = yyy>
|
|
568
|
+
Please correct the extended link role of the relevant file. Please set only one
|
|
569
|
+
root element of the extended link role in the presentation link and definition link.
|
|
570
|
+
"""
|
|
571
|
+
linkbaseTypes = (LinkbaseType.PRESENTATION, LinkbaseType.DEFINITION)
|
|
572
|
+
roleTypes = [
|
|
573
|
+
roleType
|
|
574
|
+
for roleTypes in val.modelXbrl.roleTypes.values()
|
|
575
|
+
for roleType in roleTypes
|
|
576
|
+
]
|
|
577
|
+
for roleType in roleTypes:
|
|
578
|
+
for linkbaseType in linkbaseTypes:
|
|
579
|
+
if linkbaseType.getLinkQn() not in roleType.usedOns:
|
|
580
|
+
continue
|
|
581
|
+
arcroles = linkbaseType.getArcroles()
|
|
582
|
+
relSet = val.modelXbrl.relationshipSet(tuple(arcroles), roleType.roleURI)
|
|
583
|
+
relSetFrom = relSet.fromModelObjects()
|
|
584
|
+
rootConcepts = relSet.rootConcepts
|
|
585
|
+
if len(rootConcepts) < 2:
|
|
586
|
+
continue
|
|
587
|
+
rels = [
|
|
588
|
+
rel
|
|
589
|
+
for rootConcept in rootConcepts
|
|
590
|
+
for rel in relSetFrom[rootConcept]
|
|
591
|
+
]
|
|
592
|
+
yield Validation.warning(
|
|
593
|
+
codes='EDINET.EC8027W',
|
|
594
|
+
msg=_("For presentation links and definition links, there must be only one root element. "
|
|
595
|
+
"File name: %(filename)s <Extended link role = %(roleUri)s> "
|
|
596
|
+
"Please correct the extended link role of the relevant file. Please set only one "
|
|
597
|
+
"root element of the extended link role in the presentation link and definition link."),
|
|
598
|
+
filename=rels[0].modelDocument.basename,
|
|
599
|
+
roleUri=roleType.roleURI,
|
|
600
|
+
modelObject=rels,
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
@validation(
|
|
605
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
606
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
607
|
+
)
|
|
608
|
+
def rule_EC8028W(
|
|
609
|
+
pluginData: PluginValidationDataExtension,
|
|
610
|
+
val: ValidateXbrl,
|
|
611
|
+
*args: Any,
|
|
612
|
+
**kwargs: Any,
|
|
613
|
+
) -> Iterable[Validation]:
|
|
614
|
+
"""
|
|
615
|
+
EDINET.EC8028W: The priority attribute must not be duplicated for the same
|
|
616
|
+
element and label role within the submitter's taxonomy.
|
|
617
|
+
|
|
618
|
+
Note: Not mentioned in documentation, but inferring from sample filings that
|
|
619
|
+
label language should also be considered.
|
|
620
|
+
"""
|
|
621
|
+
labelsRelationshipSet = val.modelXbrl.relationshipSet(XbrlConst.conceptLabel)
|
|
622
|
+
if labelsRelationshipSet is None:
|
|
623
|
+
return
|
|
624
|
+
for concept, rels in labelsRelationshipSet.fromModelObjects().items():
|
|
625
|
+
groups = defaultdict(list)
|
|
626
|
+
for rel in rels:
|
|
627
|
+
if not isinstance(rel.toModelObject, ModelResource):
|
|
628
|
+
continue
|
|
629
|
+
if not pluginData.isExtensionUri(rel.modelDocument.uri, val.modelXbrl):
|
|
630
|
+
continue
|
|
631
|
+
groups[(rel.toModelObject.xmlLang, rel.toModelObject.role, rel.priority)].append(rel)
|
|
632
|
+
for (lang, role, priority), group in groups.items():
|
|
633
|
+
if len(group) > 1:
|
|
634
|
+
yield Validation.warning(
|
|
635
|
+
codes='EDINET.EC8028W',
|
|
636
|
+
msg=_("The priority attribute must not be duplicated for the same "
|
|
637
|
+
"element and label role in the same submitter taxonomy. "
|
|
638
|
+
"File name: '%(path)s'. Concept: '%(concept)s'. "
|
|
639
|
+
"Role: '%(role)s'. Priority: %(priority)s. "
|
|
640
|
+
"Please check the element and label name of the corresponding "
|
|
641
|
+
"file. Please set the priority attribute so that the same "
|
|
642
|
+
"element and the same label role in the submitter's taxonomy "
|
|
643
|
+
"are not duplicated."),
|
|
644
|
+
path=rels[0].document.basename,
|
|
645
|
+
concept=concept.qname,
|
|
646
|
+
role=role,
|
|
647
|
+
priority=priority,
|
|
648
|
+
modelObject=group,
|
|
649
|
+
)
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
@validation(
|
|
653
|
+
hook=ValidationHook.COMPLETE,
|
|
654
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
655
|
+
)
|
|
656
|
+
def rule_EC8029W(
|
|
657
|
+
pluginData: ControllerPluginData,
|
|
658
|
+
cntlr: Cntlr,
|
|
659
|
+
fileSource: FileSource,
|
|
660
|
+
*args: Any,
|
|
661
|
+
**kwargs: Any,
|
|
662
|
+
) -> Iterable[Validation]:
|
|
663
|
+
"""
|
|
664
|
+
EDINET.EC8029W: Any non-abstract element referenced in the definition or presentation linkbase must
|
|
665
|
+
be present in an instance.
|
|
666
|
+
"""
|
|
667
|
+
linkbaseTypes = (LinkbaseType.DEFINITION, LinkbaseType.PRESENTATION)
|
|
668
|
+
arcroles = tuple(
|
|
669
|
+
arcrole
|
|
670
|
+
for linkbaseType in linkbaseTypes
|
|
671
|
+
for arcrole in linkbaseType.getArcroles()
|
|
672
|
+
)
|
|
673
|
+
referencedConcepts: set[ModelConcept] = set()
|
|
674
|
+
usedConcepts: set[ModelConcept] = set()
|
|
675
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
676
|
+
usedConcepts.update(fact.concept for fact in modelXbrl.facts)
|
|
677
|
+
relSet = modelXbrl.relationshipSet(arcroles)
|
|
678
|
+
if relSet is None:
|
|
679
|
+
continue
|
|
680
|
+
concepts = list(relSet.fromModelObjects().keys()) + list(relSet.toModelObjects().keys())
|
|
681
|
+
for concept in concepts:
|
|
682
|
+
if not isinstance(concept, ModelConcept):
|
|
683
|
+
continue
|
|
684
|
+
if concept.isAbstract:
|
|
685
|
+
continue
|
|
686
|
+
referencedConcepts.add(concept)
|
|
687
|
+
unusedConcepts = referencedConcepts - usedConcepts
|
|
688
|
+
for concept in unusedConcepts:
|
|
689
|
+
yield Validation.warning(
|
|
690
|
+
codes='EDINET.EC8029W',
|
|
691
|
+
msg=_("The non-abstract element present in the presentation link or definition "
|
|
692
|
+
"link is not set in an inline XBRL file. "
|
|
693
|
+
"Element: '%(concept)s'. "
|
|
694
|
+
"Please use the element in the inline XBRL file. If it is an unnecessary "
|
|
695
|
+
"element, please delete it from the presentation link and definition link."),
|
|
696
|
+
concept=concept.qname.localName,
|
|
697
|
+
modelObject=concept,
|
|
698
|
+
)
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
@validation(
|
|
702
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
703
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
704
|
+
)
|
|
705
|
+
def rule_EC8030W(
|
|
706
|
+
pluginData: PluginValidationDataExtension,
|
|
707
|
+
val: ValidateXbrl,
|
|
708
|
+
*args: Any,
|
|
709
|
+
**kwargs: Any,
|
|
710
|
+
) -> Iterable[Validation]:
|
|
711
|
+
"""
|
|
712
|
+
EDINET.EC8030W: Any concept (other than DEI concepts) used in an instance must
|
|
713
|
+
be in the presentation linkbase.
|
|
714
|
+
"""
|
|
715
|
+
usedConcepts = pluginData.getUsedConcepts(val.modelXbrl)
|
|
716
|
+
relSet = val.modelXbrl.relationshipSet(tuple(LinkbaseType.PRESENTATION.getArcroles()))
|
|
717
|
+
for concept in usedConcepts:
|
|
718
|
+
if concept.qname.namespaceURI == pluginData.jpdeiNamespace:
|
|
719
|
+
continue
|
|
720
|
+
if concept.qname.localName.endswith('DEI'):
|
|
721
|
+
# Example: jpsps_cor:SecuritiesRegistrationStatementAmendmentFlagDeemedRegistrationStatementDEI
|
|
722
|
+
continue
|
|
723
|
+
if not relSet.contains(concept):
|
|
724
|
+
yield Validation.warning(
|
|
725
|
+
codes='EDINET.EC8030W',
|
|
726
|
+
msg=_("An element (other than DEI) set in the inline XBRL file is not set in the "
|
|
727
|
+
"presentation linkbase. "
|
|
728
|
+
"Element: '%(concept)s'. "
|
|
729
|
+
"Please set the relevant element in the presentation linkbase."),
|
|
730
|
+
concept=concept.qname.localName,
|
|
731
|
+
modelObject=concept,
|
|
732
|
+
)
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
@validation(
|
|
736
|
+
hook=ValidationHook.COMPLETE,
|
|
737
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
738
|
+
)
|
|
739
|
+
def rule_EC8031W(
|
|
740
|
+
pluginData: ControllerPluginData,
|
|
741
|
+
cntlr: Cntlr,
|
|
742
|
+
fileSource: FileSource,
|
|
743
|
+
*args: Any,
|
|
744
|
+
**kwargs: Any,
|
|
745
|
+
) -> Iterable[Validation]:
|
|
746
|
+
"""
|
|
747
|
+
EDINET.EC8031W: For contexts having an ID beginning with "FilingDate", the instant
|
|
748
|
+
date value must match the report submission date set in the file name.
|
|
749
|
+
|
|
750
|
+
However, when reporting corrections, please set the following:
|
|
751
|
+
Context beginning with "FilingDate": The submission date on the cover page of the attached inline XBRL (original submission date)
|
|
752
|
+
"Report submission date" in the file name: The submission date of the correction report, etc.
|
|
753
|
+
"""
|
|
754
|
+
isAmendment = pluginData.getDeiValue('ReportAmendmentFlagDEI')
|
|
755
|
+
if isAmendment:
|
|
756
|
+
# Amendment/corrections report are not subject to this validation, but documentation does note:
|
|
757
|
+
# However, when reporting corrections, please set the following:
|
|
758
|
+
# Context beginning with "FilingDate": The submission date on the cover page of the attached inline XBRL (original submission date)
|
|
759
|
+
# "Report submission date" in the file name: The submission date of the correction report, etc.
|
|
760
|
+
return
|
|
761
|
+
uploadContents = pluginData.getUploadContents()
|
|
762
|
+
if uploadContents is None:
|
|
763
|
+
return
|
|
764
|
+
docUris = {
|
|
765
|
+
docUri
|
|
766
|
+
for modelXbrl in pluginData.loadedModelXbrls
|
|
767
|
+
for docUri in modelXbrl.urlDocs.keys()
|
|
768
|
+
}
|
|
769
|
+
actualDates = defaultdict(set)
|
|
770
|
+
for uri in docUris:
|
|
771
|
+
path = Path(uri)
|
|
772
|
+
pathInfo = uploadContents.uploadPathsByFullPath.get(path)
|
|
773
|
+
if pathInfo is None or pathInfo.reportFolderType is None:
|
|
774
|
+
continue
|
|
775
|
+
patterns = pathInfo.reportFolderType.ixbrlFilenamePatterns
|
|
776
|
+
for pattern in patterns:
|
|
777
|
+
matches = pattern.match(path.name)
|
|
778
|
+
if not matches:
|
|
779
|
+
continue
|
|
780
|
+
groups = matches.groupdict()
|
|
781
|
+
year = groups['submission_year']
|
|
782
|
+
month = groups['submission_month']
|
|
783
|
+
day = groups['submission_day']
|
|
784
|
+
actualDate = f'{year:04}-{month:02}-{day:02}'
|
|
785
|
+
actualDates[actualDate].add(path)
|
|
786
|
+
expectedDates = defaultdict(set)
|
|
787
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
788
|
+
for context in modelXbrl.contexts.values():
|
|
789
|
+
if context.id is None:
|
|
790
|
+
continue
|
|
791
|
+
if not context.id.startswith("FilingDate"):
|
|
792
|
+
continue
|
|
793
|
+
if not context.isInstantPeriod:
|
|
794
|
+
continue
|
|
795
|
+
expectedDate = XmlUtil.dateunionValue(context.instantDatetime, subtractOneDay=True)[:10]
|
|
796
|
+
expectedDates[expectedDate].add(context)
|
|
797
|
+
invalidDates = {k: v for k, v in actualDates.items() if k not in expectedDates}
|
|
798
|
+
if len(invalidDates) == 0:
|
|
799
|
+
return
|
|
800
|
+
paths = [
|
|
801
|
+
path
|
|
802
|
+
for paths in invalidDates.values()
|
|
803
|
+
for path in paths
|
|
804
|
+
]
|
|
805
|
+
contexts = [
|
|
806
|
+
context
|
|
807
|
+
for contexts in expectedDates.values()
|
|
808
|
+
for context in contexts
|
|
809
|
+
]
|
|
810
|
+
for path in paths:
|
|
811
|
+
for context in contexts:
|
|
812
|
+
yield Validation.warning(
|
|
813
|
+
codes='EDINET.EC8031W',
|
|
814
|
+
msg=_("The value of the instant element in context '%(context)s' "
|
|
815
|
+
"must match the report submission date set in the file name. "
|
|
816
|
+
"File name: '%(file)s'. "
|
|
817
|
+
"Please correct the report submission date in the filename or "
|
|
818
|
+
"the instant element value for the context with ID '%(context)s'."),
|
|
819
|
+
context=context.id,
|
|
820
|
+
file=path.name,
|
|
821
|
+
modelObject=context,
|
|
822
|
+
)
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
@validation(
|
|
826
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
827
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
828
|
+
)
|
|
829
|
+
def rule_EC8034W(
|
|
830
|
+
pluginData: PluginValidationDataExtension,
|
|
831
|
+
val: ValidateXbrl,
|
|
832
|
+
*args: Any,
|
|
833
|
+
**kwargs: Any,
|
|
834
|
+
) -> Iterable[Validation]:
|
|
835
|
+
"""
|
|
836
|
+
EDINET.EC8034W: English labels for extension concepts must not contain full-width characters.
|
|
837
|
+
"""
|
|
838
|
+
labelsRelationshipSet = val.modelXbrl.relationshipSet(XbrlConst.conceptLabel)
|
|
839
|
+
for concept, modelLabelRels in labelsRelationshipSet.fromModelObjects().items():
|
|
840
|
+
for modelLabelRel in modelLabelRels:
|
|
841
|
+
modelLabel = modelLabelRel.toModelObject
|
|
842
|
+
if not isinstance(modelLabel, ModelResource):
|
|
843
|
+
continue
|
|
844
|
+
if not pluginData.isExtensionUri(modelLabel.modelDocument.uri, val.modelXbrl):
|
|
845
|
+
continue
|
|
846
|
+
if modelLabel.xmlLang != 'en':
|
|
847
|
+
continue
|
|
848
|
+
label = modelLabel.textValue.strip() # Does not trim full-width spaces
|
|
849
|
+
if any(
|
|
850
|
+
unicodedata.east_asian_width(char) in ('F', 'W')
|
|
851
|
+
for char in label
|
|
852
|
+
):
|
|
853
|
+
yield Validation.warning(
|
|
854
|
+
codes='EDINET.EC8034W',
|
|
855
|
+
msg=_("The English label must be set using half-width alphanumeric characters "
|
|
856
|
+
"and half-width symbols. "
|
|
857
|
+
"File name: '%(file)s'. "
|
|
858
|
+
"English label: '%(label)s'. "
|
|
859
|
+
"Please use only half-width alphanumeric characters and half-width symbols "
|
|
860
|
+
"for the English labels of concepts in the relevant files."),
|
|
861
|
+
file=modelLabel.document.basename,
|
|
862
|
+
label=modelLabel.id,
|
|
863
|
+
modelObject=modelLabel,
|
|
864
|
+
)
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
@validation(
|
|
868
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
869
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
870
|
+
)
|
|
871
|
+
def rule_EC8073E(
|
|
872
|
+
pluginData: PluginValidationDataExtension,
|
|
873
|
+
val: ValidateXbrl,
|
|
874
|
+
*args: Any,
|
|
875
|
+
**kwargs: Any,
|
|
876
|
+
) -> Iterable[Validation]:
|
|
877
|
+
"""
|
|
878
|
+
EDINET.EC8073E: Prohibited characters are used in the labels for descendents of
|
|
879
|
+
CategoriesOfDirectorsAndOtherOfficersAxis except for ExecutiveOfficersMember
|
|
880
|
+
"""
|
|
881
|
+
axisConcept = val.modelXbrl.qnameConcepts.get(pluginData.categoriesOfDirectorsAndOtherOfficersAxisQn)
|
|
882
|
+
if axisConcept is None:
|
|
883
|
+
return
|
|
884
|
+
defRelSet = val.modelXbrl.relationshipSet(tuple(LinkbaseType.DEFINITION.getArcroles()))
|
|
885
|
+
labelRelSet = val.modelXbrl.relationshipSet(XbrlConst.conceptLabel)
|
|
886
|
+
for rel in defRelSet.fromModelObject(axisConcept):
|
|
887
|
+
if rel.toModelObject is None or rel.toModelObject.qname == pluginData.executiveOfficersMemberQn:
|
|
888
|
+
continue
|
|
889
|
+
for labelRel in labelRelSet.fromModelObject(rel.toModelObject):
|
|
890
|
+
if labelRel.toModelObject is None or labelRel.toModelObject.textValue is None:
|
|
891
|
+
continue
|
|
892
|
+
illegalChars = HALF_KANA.intersection(set(labelRel.toModelObject.textValue))
|
|
893
|
+
if any(illegalChars):
|
|
894
|
+
yield Validation.error(
|
|
895
|
+
codes='EDINET.EC8073E',
|
|
896
|
+
msg=_("The concept: %(concept)s has a %(role)s label which contains characters that are not "
|
|
897
|
+
"allowed. Label: %(label)s, disallowed characters: %(characters)s"),
|
|
898
|
+
concept=rel.toModelObject.qname.localName,
|
|
899
|
+
role=labelRel.toModelObject.role,
|
|
900
|
+
label=labelRel.toModelObject.textValue,
|
|
901
|
+
characters=list(illegalChars)
|
|
902
|
+
)
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
@validation(
|
|
906
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
907
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
908
|
+
)
|
|
909
|
+
def rule_EC8073W(
|
|
910
|
+
pluginData: PluginValidationDataExtension,
|
|
911
|
+
val: ValidateXbrl,
|
|
912
|
+
*args: Any,
|
|
913
|
+
**kwargs: Any,
|
|
914
|
+
) -> Iterable[Validation]:
|
|
915
|
+
"""
|
|
916
|
+
EDINET.EC8073W: Prohibited characters are used in Japanese labels for descendents of ExecutiveOfficersMember
|
|
917
|
+
"""
|
|
918
|
+
memberConcept = val.modelXbrl.qnameConcepts.get(pluginData.executiveOfficersMemberQn)
|
|
919
|
+
if memberConcept is None:
|
|
920
|
+
return
|
|
921
|
+
defRelSet = val.modelXbrl.relationshipSet(tuple(LinkbaseType.DEFINITION.getArcroles()))
|
|
922
|
+
labelRelSet = val.modelXbrl.relationshipSet(XbrlConst.conceptLabel)
|
|
923
|
+
conceptsLabelsToCheck = {memberConcept}.union(
|
|
924
|
+
{rel.toModelObject for rel in defRelSet.fromModelObject(memberConcept) if rel.toModelObject is not None}
|
|
925
|
+
)
|
|
926
|
+
for concept in conceptsLabelsToCheck:
|
|
927
|
+
for labelRel in labelRelSet.fromModelObject(concept):
|
|
928
|
+
if (labelRel.toModelObject is None or
|
|
929
|
+
labelRel.toModelObject.xmlLang not in JAPAN_LANGUAGE_CODES or
|
|
930
|
+
labelRel.toModelObject.textValue is None):
|
|
931
|
+
continue
|
|
932
|
+
illegalChars = HALF_KANA.intersection(set(labelRel.toModelObject.textValue))
|
|
933
|
+
if any(illegalChars):
|
|
934
|
+
yield Validation.warning(
|
|
935
|
+
codes='EDINET.EC8073W',
|
|
936
|
+
msg=_("The concept: %(concept)s has a %(role)s label which contains characters that are not "
|
|
937
|
+
"allowed. Label: %(label)s, disallowed characters: %(characters)s"),
|
|
938
|
+
concept=concept.qname.localName,
|
|
939
|
+
role=labelRel.toModelObject.role,
|
|
940
|
+
label=labelRel.toModelObject.textValue,
|
|
941
|
+
characters=list(illegalChars)
|
|
942
|
+
)
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
@validation(
|
|
946
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
947
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
948
|
+
)
|
|
949
|
+
def rule_EC8075W(
|
|
950
|
+
pluginData: PluginValidationDataExtension,
|
|
951
|
+
val: ValidateXbrl,
|
|
952
|
+
*args: Any,
|
|
953
|
+
**kwargs: Any,
|
|
954
|
+
) -> Iterable[Validation]:
|
|
955
|
+
"""
|
|
956
|
+
EDINET.EC8075W: The percentage of female executives has not been tagged in detail. Ensure that there is
|
|
957
|
+
a nonnil value disclosed for jpcrp_cor:RatioOfFemaleDirectorsAndOtherOfficers.
|
|
958
|
+
"""
|
|
959
|
+
if pluginData.isCorporateForm(val.modelXbrl):
|
|
960
|
+
if not pluginData.hasValidNonNilFact(val.modelXbrl, pluginData.ratioOfFemaleDirectorsAndOtherOfficersQn):
|
|
961
|
+
yield Validation.warning(
|
|
962
|
+
codes='EDINET.EC8075W',
|
|
963
|
+
msg=_("The percentage of female executives has not been tagged in detail."),
|
|
964
|
+
)
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
@validation(
|
|
968
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
969
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
970
|
+
)
|
|
971
|
+
def rule_EC8076W(
|
|
972
|
+
pluginData: PluginValidationDataExtension,
|
|
973
|
+
val: ValidateXbrl,
|
|
974
|
+
*args: Any,
|
|
975
|
+
**kwargs: Any,
|
|
976
|
+
) -> Iterable[Validation]:
|
|
977
|
+
"""
|
|
978
|
+
EDINET.EC8076W: "Issued Shares, Total Number of Shares, etc. [Text Block]" (IssuedSharesTotalNumberOfSharesEtcTextBlock) is not tagged.
|
|
979
|
+
Applies to forms 3 and 4.
|
|
980
|
+
"""
|
|
981
|
+
if pluginData.isStockForm(val.modelXbrl) and pluginData.isCorporateReport(val.modelXbrl):
|
|
982
|
+
if not pluginData.hasValidNonNilFact(val.modelXbrl, pluginData.issuedSharesTotalNumberOfSharesEtcQn):
|
|
983
|
+
yield Validation.warning(
|
|
984
|
+
codes='EDINET.EC8076W',
|
|
985
|
+
msg=_('"Issued Shares, Total Number of Shares, etc. [Text Block]" (IssuedSharesTotalNumberOfSharesEtcTextBlock) is not tagged.'),
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
@validation(
|
|
990
|
+
hook=ValidationHook.COMPLETE,
|
|
991
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
992
|
+
)
|
|
993
|
+
def rule_EC8038W(
|
|
994
|
+
pluginData: ControllerPluginData,
|
|
995
|
+
cntlr: Cntlr,
|
|
996
|
+
fileSource: FileSource,
|
|
997
|
+
*args: Any,
|
|
998
|
+
**kwargs: Any,
|
|
999
|
+
) -> Iterable[Validation]:
|
|
1000
|
+
"""
|
|
1001
|
+
EDINET.EC8038W: The details of the major shareholders' status have not been tagged.
|
|
1002
|
+
Should have facts in one of the major shareholders roles.
|
|
1003
|
+
"""
|
|
1004
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1005
|
+
return
|
|
1006
|
+
|
|
1007
|
+
roleUris = (
|
|
1008
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_MajorShareholders-01',
|
|
1009
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_MajorShareholders-02',
|
|
1010
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_MajorShareholders-01',
|
|
1011
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_MajorShareholders-02',
|
|
1012
|
+
)
|
|
1013
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1014
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1015
|
+
return
|
|
1016
|
+
|
|
1017
|
+
yield Validation.warning(
|
|
1018
|
+
codes='EDINET.EC8038W',
|
|
1019
|
+
msg=_("The details of the major shareholders' status have not been tagged. "
|
|
1020
|
+
"Please provide detailed tagging of the status of major shareholders."),
|
|
1021
|
+
)
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
@validation(
|
|
1025
|
+
hook=ValidationHook.COMPLETE,
|
|
1026
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1027
|
+
)
|
|
1028
|
+
def rule_EC8039W(
|
|
1029
|
+
pluginData: ControllerPluginData,
|
|
1030
|
+
cntlr: Cntlr,
|
|
1031
|
+
fileSource: FileSource,
|
|
1032
|
+
*args: Any,
|
|
1033
|
+
**kwargs: Any,
|
|
1034
|
+
) -> Iterable[Validation]:
|
|
1035
|
+
"""
|
|
1036
|
+
EDINET.EC8039W: The consolidated balance sheet details have not been tagged.
|
|
1037
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is TRUE and AccountingStandardsDEI is "Japan GAAP",
|
|
1038
|
+
then a BS must exist using one of the specified roles.
|
|
1039
|
+
"""
|
|
1040
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1041
|
+
return
|
|
1042
|
+
|
|
1043
|
+
if pluginData.isConsolidated() != True:
|
|
1044
|
+
return
|
|
1045
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1046
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1047
|
+
return
|
|
1048
|
+
|
|
1049
|
+
roleUris = (
|
|
1050
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedBalanceSheet',
|
|
1051
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedBalanceSheet',
|
|
1052
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedBalanceSheet',
|
|
1053
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedBalanceSheet',
|
|
1054
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualConsolidatedBalanceSheet',
|
|
1055
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualConsolidatedBalanceSheet',
|
|
1056
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyConsolidatedBalanceSheet',
|
|
1057
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyConsolidatedBalanceSheet',
|
|
1058
|
+
)
|
|
1059
|
+
|
|
1060
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1061
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1062
|
+
return
|
|
1063
|
+
|
|
1064
|
+
yield Validation.warning(
|
|
1065
|
+
codes='EDINET.EC8039W',
|
|
1066
|
+
msg=_("The consolidated balance sheet details have not been tagged. "
|
|
1067
|
+
"Please provide detailed tagging of the consolidated balance sheet. "
|
|
1068
|
+
"If you do not provide a consolidated balance sheet, please confirm that "
|
|
1069
|
+
'the "Consolidated Financial Statements" field in the DEI information is correct.'),
|
|
1070
|
+
)
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
@validation(
|
|
1074
|
+
hook=ValidationHook.COMPLETE,
|
|
1075
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1076
|
+
)
|
|
1077
|
+
def rule_EC8040W(
|
|
1078
|
+
pluginData: ControllerPluginData,
|
|
1079
|
+
cntlr: Cntlr,
|
|
1080
|
+
fileSource: FileSource,
|
|
1081
|
+
*args: Any,
|
|
1082
|
+
**kwargs: Any,
|
|
1083
|
+
) -> Iterable[Validation]:
|
|
1084
|
+
"""
|
|
1085
|
+
EDINET.EC8040W: Balance sheet details not tagged.
|
|
1086
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is FALSE and AccountingStandardsDEI is "Japan GAAP",
|
|
1087
|
+
then a BS must exist using one of the specified roles.
|
|
1088
|
+
"""
|
|
1089
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1090
|
+
return
|
|
1091
|
+
|
|
1092
|
+
if pluginData.isConsolidated() != False:
|
|
1093
|
+
return
|
|
1094
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1095
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1096
|
+
return
|
|
1097
|
+
|
|
1098
|
+
roleUris = (
|
|
1099
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_BalanceSheet',
|
|
1100
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_BalanceSheet',
|
|
1101
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualBalanceSheet',
|
|
1102
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualBalanceSheet',
|
|
1103
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualBalanceSheet',
|
|
1104
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualBalanceSheet',
|
|
1105
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyBalanceSheet',
|
|
1106
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyBalanceSheet',
|
|
1107
|
+
)
|
|
1108
|
+
|
|
1109
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1110
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1111
|
+
return
|
|
1112
|
+
|
|
1113
|
+
yield Validation.warning(
|
|
1114
|
+
codes='EDINET.EC8040W',
|
|
1115
|
+
msg=_("Balance sheet details not tagged. Please tag the balance sheet in detail."),
|
|
1116
|
+
)
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
@validation(
|
|
1120
|
+
hook=ValidationHook.COMPLETE,
|
|
1121
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1122
|
+
)
|
|
1123
|
+
def rule_EC8041W(
|
|
1124
|
+
pluginData: ControllerPluginData,
|
|
1125
|
+
cntlr: Cntlr,
|
|
1126
|
+
fileSource: FileSource,
|
|
1127
|
+
*args: Any,
|
|
1128
|
+
**kwargs: Any,
|
|
1129
|
+
) -> Iterable[Validation]:
|
|
1130
|
+
"""
|
|
1131
|
+
EDINET.EC8041W: The consolidated income statement has not been tagged in detail.
|
|
1132
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is TRUE and AccountingStandardsDEI is "Japan GAAP",
|
|
1133
|
+
then an IS must exist using one of the specified roles.
|
|
1134
|
+
"""
|
|
1135
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1136
|
+
return
|
|
1137
|
+
|
|
1138
|
+
if pluginData.isConsolidated() != True:
|
|
1139
|
+
return
|
|
1140
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1141
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1142
|
+
return
|
|
1143
|
+
|
|
1144
|
+
roleUris = (
|
|
1145
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedStatementOfIncome',
|
|
1146
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedStatementOfIncome',
|
|
1147
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedStatementOfIncome',
|
|
1148
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedStatementOfIncome',
|
|
1149
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualConsolidatedStatementOfIncome',
|
|
1150
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualConsolidatedStatementOfIncome',
|
|
1151
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_YearToQuarterEndConsolidatedStatementOfIncome',
|
|
1152
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_YearToQuarterEndConsolidatedStatementOfIncome',
|
|
1153
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterPeriodConsolidatedStatementOfIncome',
|
|
1154
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterPeriodConsolidatedStatementOfIncome',
|
|
1155
|
+
)
|
|
1156
|
+
|
|
1157
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1158
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1159
|
+
return
|
|
1160
|
+
|
|
1161
|
+
yield Validation.warning(
|
|
1162
|
+
codes='EDINET.EC8041W',
|
|
1163
|
+
msg=_("The consolidated income statement has not been tagged in detail. "
|
|
1164
|
+
"Please provide detailed tagging for the consolidated income statement. "
|
|
1165
|
+
"If you do not provide a consolidated income statement, please confirm that "
|
|
1166
|
+
'the "Consolidated Financial Statements" field in the DEI information is correct.'),
|
|
1167
|
+
)
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
@validation(
|
|
1171
|
+
hook=ValidationHook.COMPLETE,
|
|
1172
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1173
|
+
)
|
|
1174
|
+
def rule_EC8042W(
|
|
1175
|
+
pluginData: ControllerPluginData,
|
|
1176
|
+
cntlr: Cntlr,
|
|
1177
|
+
fileSource: FileSource,
|
|
1178
|
+
*args: Any,
|
|
1179
|
+
**kwargs: Any,
|
|
1180
|
+
) -> Iterable[Validation]:
|
|
1181
|
+
"""
|
|
1182
|
+
EDINET.EC8042W: The income statement details are not tagged.
|
|
1183
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is FALSE and AccountingStandardsDEI is "Japan GAAP",
|
|
1184
|
+
then an IS must exist using one of the specified roles.
|
|
1185
|
+
"""
|
|
1186
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1187
|
+
return
|
|
1188
|
+
|
|
1189
|
+
if pluginData.isConsolidated() != False:
|
|
1190
|
+
return
|
|
1191
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1192
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1193
|
+
return
|
|
1194
|
+
|
|
1195
|
+
roleUris = (
|
|
1196
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfIncome',
|
|
1197
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfIncome',
|
|
1198
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfIncome',
|
|
1199
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfIncome',
|
|
1200
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualStatementOfIncome',
|
|
1201
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualStatementOfIncome',
|
|
1202
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_YearToQuarterEndStatementOfIncome',
|
|
1203
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_YearToQuarterEndStatementOfIncome',
|
|
1204
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterPeriodStatementOfIncome',
|
|
1205
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterPeriodStatementOfIncome',
|
|
1206
|
+
)
|
|
1207
|
+
|
|
1208
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1209
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1210
|
+
return
|
|
1211
|
+
|
|
1212
|
+
yield Validation.warning(
|
|
1213
|
+
codes='EDINET.EC8042W',
|
|
1214
|
+
msg=_("The income statement details are not tagged. "
|
|
1215
|
+
"Please provide detailed tagging of your income statement."),
|
|
1216
|
+
)
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
@validation(
|
|
1220
|
+
hook=ValidationHook.COMPLETE,
|
|
1221
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1222
|
+
)
|
|
1223
|
+
def rule_EC8043W(
|
|
1224
|
+
pluginData: ControllerPluginData,
|
|
1225
|
+
cntlr: Cntlr,
|
|
1226
|
+
fileSource: FileSource,
|
|
1227
|
+
*args: Any,
|
|
1228
|
+
**kwargs: Any,
|
|
1229
|
+
) -> Iterable[Validation]:
|
|
1230
|
+
"""
|
|
1231
|
+
EDINET.EC8043W: The profit and loss statement has not been tagged in detail.
|
|
1232
|
+
If AccountingStandardsDEI = "Japan GAAP" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "false",
|
|
1233
|
+
then a P&L must exist using one of the specified roles.
|
|
1234
|
+
"""
|
|
1235
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1236
|
+
return
|
|
1237
|
+
|
|
1238
|
+
if pluginData.isConsolidated() != False:
|
|
1239
|
+
return
|
|
1240
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1241
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1242
|
+
return
|
|
1243
|
+
|
|
1244
|
+
roleUris = (
|
|
1245
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfIncomeAndRetainedEarnings',
|
|
1246
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfIncomeAndRetainedEarnings',
|
|
1247
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfIncomeAndRetainedEarnings',
|
|
1248
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfIncomeAndRetainedEarnings',
|
|
1249
|
+
)
|
|
1250
|
+
|
|
1251
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1252
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1253
|
+
return
|
|
1254
|
+
|
|
1255
|
+
yield Validation.warning(
|
|
1256
|
+
codes='EDINET.EC8043W',
|
|
1257
|
+
msg=_("The profit and loss statement has not been tagged in detail. "
|
|
1258
|
+
"Please provide detailed tagging of the profit and loss and retained earnings statement."),
|
|
1259
|
+
)
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
@validation(
|
|
1263
|
+
hook=ValidationHook.COMPLETE,
|
|
1264
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1265
|
+
)
|
|
1266
|
+
def rule_EC8044W(
|
|
1267
|
+
pluginData: ControllerPluginData,
|
|
1268
|
+
cntlr: Cntlr,
|
|
1269
|
+
fileSource: FileSource,
|
|
1270
|
+
*args: Any,
|
|
1271
|
+
**kwargs: Any,
|
|
1272
|
+
) -> Iterable[Validation]:
|
|
1273
|
+
"""
|
|
1274
|
+
EDINET.EC8044W: The consolidated statement of changes in equity has not been detailed.
|
|
1275
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is TRUE and AccountingStandardsDEI is "Japan GAAP",
|
|
1276
|
+
then an Equity Statement must exist using one of the specified roles.
|
|
1277
|
+
"""
|
|
1278
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1279
|
+
return
|
|
1280
|
+
|
|
1281
|
+
if pluginData.isConsolidated() != True:
|
|
1282
|
+
return
|
|
1283
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1284
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1285
|
+
return
|
|
1286
|
+
|
|
1287
|
+
roleUris = (
|
|
1288
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedStatementOfChangesInEquity',
|
|
1289
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedStatementOfChangesInEquity',
|
|
1290
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedStatementOfChangesInNetAssets',
|
|
1291
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedStatementOfChangesInNetAssets',
|
|
1292
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedStatementOfChangesInEquity',
|
|
1293
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedStatementOfChangesInEquity',
|
|
1294
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedStatementOfChangesInNetAssets',
|
|
1295
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedStatementOfChangesInNetAssets',
|
|
1296
|
+
)
|
|
1297
|
+
|
|
1298
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1299
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1300
|
+
return
|
|
1301
|
+
|
|
1302
|
+
yield Validation.warning(
|
|
1303
|
+
codes='EDINET.EC8044W',
|
|
1304
|
+
msg=_("The consolidated statement of changes in equity has not been detailed. "
|
|
1305
|
+
"Please tag the details of the consolidated statement of changes in equity. "
|
|
1306
|
+
"If you do not include a consolidated statement of changes in equity, please confirm that "
|
|
1307
|
+
'the "Consolidated Financial Statements" field in the DEI information is correct.'),
|
|
1308
|
+
)
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
@validation(
|
|
1312
|
+
hook=ValidationHook.COMPLETE,
|
|
1313
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1314
|
+
)
|
|
1315
|
+
def rule_EC8045W(
|
|
1316
|
+
pluginData: ControllerPluginData,
|
|
1317
|
+
cntlr: Cntlr,
|
|
1318
|
+
fileSource: FileSource,
|
|
1319
|
+
*args: Any,
|
|
1320
|
+
**kwargs: Any,
|
|
1321
|
+
) -> Iterable[Validation]:
|
|
1322
|
+
"""
|
|
1323
|
+
EDINET.EC8045W: The statement of changes in equity has not been tagged in detail.
|
|
1324
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is FALSE and AccountingStandardsDEI is "Japan GAAP",
|
|
1325
|
+
then an Equity Statement must exist using one of the specified roles.
|
|
1326
|
+
"""
|
|
1327
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1328
|
+
return
|
|
1329
|
+
|
|
1330
|
+
if pluginData.isConsolidated() != False:
|
|
1331
|
+
return
|
|
1332
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1333
|
+
if accountingStandard != AccountingStandard.JAPAN_GAAP.value:
|
|
1334
|
+
return
|
|
1335
|
+
|
|
1336
|
+
roleUris = (
|
|
1337
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfChangesInEquity',
|
|
1338
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfChangesInEquity',
|
|
1339
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfChangesInNetAssets',
|
|
1340
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfChangesInNetAssets',
|
|
1341
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfChangesInEquity',
|
|
1342
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfChangesInEquity',
|
|
1343
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfChangesInNetAssets',
|
|
1344
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfChangesInNetAssets',
|
|
1345
|
+
)
|
|
1346
|
+
|
|
1347
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1348
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1349
|
+
return
|
|
1350
|
+
|
|
1351
|
+
yield Validation.warning(
|
|
1352
|
+
codes='EDINET.EC8045W',
|
|
1353
|
+
msg=_("The statement of changes in equity has not been tagged in detail. "
|
|
1354
|
+
"Please provide detailed tagging for the Statement of Changes in Equity."),
|
|
1355
|
+
)
|
|
1356
|
+
|
|
1357
|
+
|
|
1358
|
+
@validation(
|
|
1359
|
+
hook=ValidationHook.COMPLETE,
|
|
1360
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1361
|
+
)
|
|
1362
|
+
def rule_EC8046W(
|
|
1363
|
+
pluginData: ControllerPluginData,
|
|
1364
|
+
cntlr: Cntlr,
|
|
1365
|
+
fileSource: FileSource,
|
|
1366
|
+
*args: Any,
|
|
1367
|
+
**kwargs: Any,
|
|
1368
|
+
) -> Iterable[Validation]:
|
|
1369
|
+
"""
|
|
1370
|
+
EDINET.EC8046W: The statement of changes in unitholders' equity has not been tagged in detail.
|
|
1371
|
+
If industry code is "inv", then facts must exist in one of the specified roles.
|
|
1372
|
+
"""
|
|
1373
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1374
|
+
return
|
|
1375
|
+
|
|
1376
|
+
industryCodeConsolidated = pluginData.getDeiValue('IndustryCodeWhenConsolidatedFinancialStatementsArePreparedInAccordanceWithIndustrySpecificRegulationsDEI')
|
|
1377
|
+
industryCodeNonConsolidated = pluginData.getDeiValue('IndustryCodeWhenFinancialStatementsArePreparedInAccordanceWithIndustrySpecificRegulationsDEI')
|
|
1378
|
+
|
|
1379
|
+
if industryCodeConsolidated != 'INV' and industryCodeNonConsolidated != 'INV':
|
|
1380
|
+
return
|
|
1381
|
+
|
|
1382
|
+
roleUris = (
|
|
1383
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfUnitholdersEquity',
|
|
1384
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfUnitholdersEquity',
|
|
1385
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfUnitholdersEquity',
|
|
1386
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfUnitholdersEquity',
|
|
1387
|
+
)
|
|
1388
|
+
|
|
1389
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1390
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1391
|
+
return
|
|
1392
|
+
|
|
1393
|
+
yield Validation.warning(
|
|
1394
|
+
codes='EDINET.EC8046W',
|
|
1395
|
+
msg=_("The statement of changes in unitholders' equity has not been tagged in detail. "
|
|
1396
|
+
"Please provide detailed tagging for the Statement of Changes in Unitholders' Equity."),
|
|
1397
|
+
)
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
@validation(
|
|
1401
|
+
hook=ValidationHook.COMPLETE,
|
|
1402
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1403
|
+
)
|
|
1404
|
+
def rule_EC8047W(
|
|
1405
|
+
pluginData: ControllerPluginData,
|
|
1406
|
+
cntlr: Cntlr,
|
|
1407
|
+
fileSource: FileSource,
|
|
1408
|
+
*args: Any,
|
|
1409
|
+
**kwargs: Any,
|
|
1410
|
+
) -> Iterable[Validation]:
|
|
1411
|
+
"""
|
|
1412
|
+
EDINET.EC8047W: The statement of changes in employee capital etc. has not been tagged in detail.
|
|
1413
|
+
If industry code is "liq", then facts must exist in one of the specified roles.
|
|
1414
|
+
"""
|
|
1415
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1416
|
+
return
|
|
1417
|
+
|
|
1418
|
+
industryCodeConsolidated = pluginData.getDeiValue('IndustryCodeWhenConsolidatedFinancialStatementsArePreparedInAccordanceWithIndustrySpecificRegulationsDEI')
|
|
1419
|
+
industryCodeNonConsolidated = pluginData.getDeiValue('IndustryCodeWhenFinancialStatementsArePreparedInAccordanceWithIndustrySpecificRegulationsDEI')
|
|
1420
|
+
|
|
1421
|
+
if industryCodeConsolidated != 'LIQ' and industryCodeNonConsolidated != 'LIQ':
|
|
1422
|
+
return
|
|
1423
|
+
|
|
1424
|
+
roleUris = (
|
|
1425
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfMembersEquity',
|
|
1426
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfMembersEquity',
|
|
1427
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfMembersEquity',
|
|
1428
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfMembersEquity',
|
|
1429
|
+
)
|
|
1430
|
+
|
|
1431
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1432
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1433
|
+
return
|
|
1434
|
+
|
|
1435
|
+
yield Validation.warning(
|
|
1436
|
+
codes='EDINET.EC8047W',
|
|
1437
|
+
msg=_("The statement of changes in employee capital etc. has not been tagged in detail. "
|
|
1438
|
+
"Please provide detailed tagging for the Statement of Changes in Employee Capital, etc."),
|
|
1439
|
+
)
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
@validation(
|
|
1443
|
+
hook=ValidationHook.COMPLETE,
|
|
1444
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1445
|
+
)
|
|
1446
|
+
def rule_EC8048W(
|
|
1447
|
+
pluginData: ControllerPluginData,
|
|
1448
|
+
cntlr: Cntlr,
|
|
1449
|
+
fileSource: FileSource,
|
|
1450
|
+
*args: Any,
|
|
1451
|
+
**kwargs: Any,
|
|
1452
|
+
) -> Iterable[Validation]:
|
|
1453
|
+
"""
|
|
1454
|
+
EDINET.EC8048W: The consolidated cash flow statement is not detailed.
|
|
1455
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is TRUE, then an SCF must exist using one of the specified roles.
|
|
1456
|
+
"""
|
|
1457
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1458
|
+
return
|
|
1459
|
+
|
|
1460
|
+
if pluginData.isConsolidated() != True:
|
|
1461
|
+
return
|
|
1462
|
+
|
|
1463
|
+
roleUris = (
|
|
1464
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedStatementOfCashFlows-direct',
|
|
1465
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedStatementOfCashFlows-direct',
|
|
1466
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedStatementOfCashFlows-direct',
|
|
1467
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedStatementOfCashFlows-direct',
|
|
1468
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualConsolidatedStatementOfCashFlows-direct',
|
|
1469
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualConsolidatedStatementOfCashFlows-direct',
|
|
1470
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyConsolidatedStatementOfCashFlows-direct',
|
|
1471
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyConsolidatedStatementOfCashFlows-direct',
|
|
1472
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_ConsolidatedStatementOfCashFlows-indirect',
|
|
1473
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_ConsolidatedStatementOfCashFlows-indirect',
|
|
1474
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualConsolidatedStatementOfCashFlows-indirect',
|
|
1475
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualConsolidatedStatementOfCashFlows-indirect',
|
|
1476
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualConsolidatedStatementOfCashFlows-indirect',
|
|
1477
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualConsolidatedStatementOfCashFlows-indirect',
|
|
1478
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyConsolidatedStatementOfCashFlows-indirect',
|
|
1479
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyConsolidatedStatementOfCashFlows-indirect',
|
|
1480
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfCashFlowsIFRS',
|
|
1481
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfCashFlowsIFRS',
|
|
1482
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfCashFlowsIFRS',
|
|
1483
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfCashFlowsIFRS',
|
|
1484
|
+
)
|
|
1485
|
+
|
|
1486
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1487
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1488
|
+
return
|
|
1489
|
+
|
|
1490
|
+
yield Validation.warning(
|
|
1491
|
+
codes='EDINET.EC8048W',
|
|
1492
|
+
msg=_("The consolidated cash flow statement is not detailed. "
|
|
1493
|
+
"Please tag the details of the consolidated cash flow statement. "
|
|
1494
|
+
"If you do not provide a consolidated cash flow statement, please make sure that "
|
|
1495
|
+
'the "Consolidated Financial Statements" in the DEI information is correct.'),
|
|
1496
|
+
)
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
@validation(
|
|
1500
|
+
hook=ValidationHook.COMPLETE,
|
|
1501
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1502
|
+
)
|
|
1503
|
+
def rule_EC8049W(
|
|
1504
|
+
pluginData: ControllerPluginData,
|
|
1505
|
+
cntlr: Cntlr,
|
|
1506
|
+
fileSource: FileSource,
|
|
1507
|
+
*args: Any,
|
|
1508
|
+
**kwargs: Any,
|
|
1509
|
+
) -> Iterable[Validation]:
|
|
1510
|
+
"""
|
|
1511
|
+
EDINET.EC8049W: The cash flow statement is not tagged in detail.
|
|
1512
|
+
If WhetherConsolidatedFinancialStatementsArePreparedDEI is FALSE, then an SCF must exist using one of the specified roles.
|
|
1513
|
+
"""
|
|
1514
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1515
|
+
return
|
|
1516
|
+
|
|
1517
|
+
if pluginData.isConsolidated() != False:
|
|
1518
|
+
return
|
|
1519
|
+
|
|
1520
|
+
roleUris = (
|
|
1521
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfCashFlows-direct',
|
|
1522
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfCashFlows-direct',
|
|
1523
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfCashFlows-direct',
|
|
1524
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfCashFlows-direct',
|
|
1525
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualStatementOfCashFlows-direct',
|
|
1526
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualStatementOfCashFlows-direct',
|
|
1527
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyStatementOfCashFlows-direct',
|
|
1528
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyStatementOfCashFlows-direct',
|
|
1529
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_StatementOfCashFlows-indirect',
|
|
1530
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_StatementOfCashFlows-indirect',
|
|
1531
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_SemiAnnualStatementOfCashFlows-indirect',
|
|
1532
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_SemiAnnualStatementOfCashFlows-indirect',
|
|
1533
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_Type1SemiAnnualStatementOfCashFlows-indirect',
|
|
1534
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_Type1SemiAnnualStatementOfCashFlows-indirect',
|
|
1535
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_QuarterlyStatementOfCashFlows-indirect',
|
|
1536
|
+
'http://disclosure.edinet-fsa.go.jp/role/jppfs/rol_std_QuarterlyStatementOfCashFlows-indirect',
|
|
1537
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfCashFlowsIFRS',
|
|
1538
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfCashFlowsIFRS',
|
|
1539
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfCashFlowsIFRS',
|
|
1540
|
+
)
|
|
1541
|
+
|
|
1542
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1543
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1544
|
+
return
|
|
1545
|
+
|
|
1546
|
+
yield Validation.warning(
|
|
1547
|
+
codes='EDINET.EC8049W',
|
|
1548
|
+
msg=_("The cash flow statement is not tagged in detail. "
|
|
1549
|
+
"Please provide detailed tagging for the cash flow statement. "
|
|
1550
|
+
"If you do not provide a cash flow statement, please provide the DEI information with "
|
|
1551
|
+
'"Whether or not consolidated financial statements are provided."'),
|
|
1552
|
+
)
|
|
1553
|
+
|
|
1554
|
+
|
|
1555
|
+
@validation(
|
|
1556
|
+
hook=ValidationHook.COMPLETE,
|
|
1557
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1558
|
+
)
|
|
1559
|
+
def rule_EC8050W(
|
|
1560
|
+
pluginData: ControllerPluginData,
|
|
1561
|
+
cntlr: Cntlr,
|
|
1562
|
+
fileSource: FileSource,
|
|
1563
|
+
*args: Any,
|
|
1564
|
+
**kwargs: Any,
|
|
1565
|
+
) -> Iterable[Validation]:
|
|
1566
|
+
"""
|
|
1567
|
+
EDINET.EC8050W: Segment information is not tagged in detail.
|
|
1568
|
+
Based on AccountingStandardsDEI, segment information with ReportableSegmentsMember must exist.
|
|
1569
|
+
"""
|
|
1570
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT, }):
|
|
1571
|
+
return
|
|
1572
|
+
|
|
1573
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1574
|
+
if accountingStandard == AccountingStandard.JAPAN_GAAP.value:
|
|
1575
|
+
roleUris: tuple[str, ...] = (
|
|
1576
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcType1SemiAnnualFinancialStatements-01',
|
|
1577
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcType1SemiAnnualFinancialStatements-02',
|
|
1578
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcType1SemiAnnualFinancialStatements-03',
|
|
1579
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcType1SemiAnnualConsolidatedFinancialStatements-01',
|
|
1580
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcType1SemiAnnualConsolidatedFinancialStatements-02',
|
|
1581
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcType1SemiAnnualConsolidatedFinancialStatements-03',
|
|
1582
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-01',
|
|
1583
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-02',
|
|
1584
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-03',
|
|
1585
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-04',
|
|
1586
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-05',
|
|
1587
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-06',
|
|
1588
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-07',
|
|
1589
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-08',
|
|
1590
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualFinancialStatements-09',
|
|
1591
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-01',
|
|
1592
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-02',
|
|
1593
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-03',
|
|
1594
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-04',
|
|
1595
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-05',
|
|
1596
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-06',
|
|
1597
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-07',
|
|
1598
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-08',
|
|
1599
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-09',
|
|
1600
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcQuarterlyFinancialStatements-01',
|
|
1601
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcQuarterlyFinancialStatements-02',
|
|
1602
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcQuarterlyFinancialStatements-03',
|
|
1603
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcQuarterlyConsolidatedFinancialStatements-01',
|
|
1604
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcQuarterlyConsolidatedFinancialStatements-02',
|
|
1605
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcQuarterlyConsolidatedFinancialStatements-03',
|
|
1606
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-01',
|
|
1607
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-02',
|
|
1608
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-03',
|
|
1609
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-04',
|
|
1610
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-05',
|
|
1611
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-06',
|
|
1612
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-07',
|
|
1613
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-08',
|
|
1614
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcFinancialStatements-09',
|
|
1615
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-01',
|
|
1616
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-02',
|
|
1617
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-03',
|
|
1618
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-04',
|
|
1619
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-05',
|
|
1620
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-06',
|
|
1621
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-07',
|
|
1622
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-08',
|
|
1623
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_std_NotesSegmentInformationEtcConsolidatedFinancialStatements-09',
|
|
1624
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcType1SemiAnnualFinancialStatements-01',
|
|
1625
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcType1SemiAnnualFinancialStatements-02',
|
|
1626
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcType1SemiAnnualFinancialStatements-03',
|
|
1627
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcType1SemiAnnualConsolidatedFinancialStatements-01',
|
|
1628
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcType1SemiAnnualConsolidatedFinancialStatements-02',
|
|
1629
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcType1SemiAnnualConsolidatedFinancialStatements-03',
|
|
1630
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-01',
|
|
1631
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-02',
|
|
1632
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-03',
|
|
1633
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-04',
|
|
1634
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-05',
|
|
1635
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-06',
|
|
1636
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-07',
|
|
1637
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-08',
|
|
1638
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualFinancialStatements-09',
|
|
1639
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-01',
|
|
1640
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-02',
|
|
1641
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-03',
|
|
1642
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-04',
|
|
1643
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-05',
|
|
1644
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-06',
|
|
1645
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-07',
|
|
1646
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-08',
|
|
1647
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcSemiAnnualConsolidatedFinancialStatements-09',
|
|
1648
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcQuarterlyFinancialStatements-01',
|
|
1649
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcQuarterlyFinancialStatements-02',
|
|
1650
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcQuarterlyFinancialStatements-03',
|
|
1651
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcQuarterlyConsolidatedFinancialStatements-01',
|
|
1652
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcQuarterlyConsolidatedFinancialStatements-02',
|
|
1653
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcQuarterlyConsolidatedFinancialStatements-03',
|
|
1654
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-01',
|
|
1655
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-02',
|
|
1656
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-03',
|
|
1657
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-04',
|
|
1658
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-05',
|
|
1659
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-06',
|
|
1660
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-07',
|
|
1661
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-08',
|
|
1662
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcFinancialStatements-09',
|
|
1663
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-01',
|
|
1664
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-02',
|
|
1665
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-03',
|
|
1666
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-04',
|
|
1667
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-05',
|
|
1668
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-06',
|
|
1669
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-07',
|
|
1670
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-08',
|
|
1671
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_NotesSegmentInformationEtcConsolidatedFinancialStatements-09',
|
|
1672
|
+
)
|
|
1673
|
+
elif accountingStandard == AccountingStandard.IFRS.value:
|
|
1674
|
+
roleUris = (
|
|
1675
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_NotesSegmentInformationConsolidatedFinancialStatementsIFRS-01',
|
|
1676
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_NotesSegmentInformationConsolidatedFinancialStatementsIFRS-02',
|
|
1677
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_NotesSegmentInformationConsolidatedFinancialStatementsIFRS-03',
|
|
1678
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationFinancialStatementsIFRS-01',
|
|
1679
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationFinancialStatementsIFRS-02',
|
|
1680
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationFinancialStatementsIFRS-03',
|
|
1681
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationConsolidatedFinancialStatementsIFRS-01',
|
|
1682
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationConsolidatedFinancialStatementsIFRS-02',
|
|
1683
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationConsolidatedFinancialStatementsIFRS-03',
|
|
1684
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedSemiAnnualFinancialStatementsIFRS-01',
|
|
1685
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedSemiAnnualFinancialStatementsIFRS-02',
|
|
1686
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedSemiAnnualFinancialStatementsIFRS-03',
|
|
1687
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedSemiAnnualConsolidatedFinancialStatementsIFRS-01',
|
|
1688
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedSemiAnnualConsolidatedFinancialStatementsIFRS-02',
|
|
1689
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedSemiAnnualConsolidatedFinancialStatementsIFRS-03',
|
|
1690
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedQuarterlyFinancialStatementsIFRS-01',
|
|
1691
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedQuarterlyFinancialStatementsIFRS-02',
|
|
1692
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedQuarterlyFinancialStatementsIFRS-03',
|
|
1693
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedQuarterlyConsolidatedFinancialStatementsIFRS-01',
|
|
1694
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedQuarterlyConsolidatedFinancialStatementsIFRS-02',
|
|
1695
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_NotesSegmentInformationCondensedQuarterlyConsolidatedFinancialStatementsIFRS-03',
|
|
1696
|
+
)
|
|
1697
|
+
else:
|
|
1698
|
+
return
|
|
1699
|
+
|
|
1700
|
+
reportableSegmentsMemberQn = qname(pluginData.jpcrpNamespace, "ReportableSegmentsMember")
|
|
1701
|
+
|
|
1702
|
+
def _getConceptAndDescendantQNames(
|
|
1703
|
+
modelXbrl: ModelXbrl,
|
|
1704
|
+
concept: ModelConcept,
|
|
1705
|
+
relSet: ModelRelationshipSet,
|
|
1706
|
+
) -> Iterable[QName]:
|
|
1707
|
+
# This is crude (doesn't handle target roles), but appears to be good enough for EDINET.
|
|
1708
|
+
if concept.qname is None:
|
|
1709
|
+
return
|
|
1710
|
+
yield concept.qname
|
|
1711
|
+
for rel in relSet.fromModelObject(concept):
|
|
1712
|
+
if isinstance(rel.toModelObject, ModelConcept):
|
|
1713
|
+
yield from _getConceptAndDescendantQNames(modelXbrl, rel.toModelObject, relSet)
|
|
1714
|
+
|
|
1715
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1716
|
+
reportableSegmentsMember = modelXbrl.qnameConcepts.get(reportableSegmentsMemberQn)
|
|
1717
|
+
if reportableSegmentsMember is None:
|
|
1718
|
+
continue
|
|
1719
|
+
for roleUri in roleUris:
|
|
1720
|
+
domainMemberRelSet = modelXbrl.relationshipSet(XbrlConst.domainMember, roleUri)
|
|
1721
|
+
members = set(_getConceptAndDescendantQNames(modelXbrl, reportableSegmentsMember, domainMemberRelSet))
|
|
1722
|
+
if members and hasPresentationalConceptsWithFacts(modelXbrl, [roleUri], members):
|
|
1723
|
+
return
|
|
1724
|
+
|
|
1725
|
+
yield Validation.warning(
|
|
1726
|
+
codes='EDINET.EC8050W',
|
|
1727
|
+
msg=_("Segment information is not tagged in detail. "
|
|
1728
|
+
"Please provide detailed tagging of segment information."),
|
|
1729
|
+
)
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
@validation(
|
|
1733
|
+
hook=ValidationHook.COMPLETE,
|
|
1734
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1735
|
+
)
|
|
1736
|
+
def rule_EC8061W(
|
|
1737
|
+
pluginData: ControllerPluginData,
|
|
1738
|
+
cntlr: Cntlr,
|
|
1739
|
+
fileSource: FileSource,
|
|
1740
|
+
*args: Any,
|
|
1741
|
+
**kwargs: Any,
|
|
1742
|
+
) -> Iterable[Validation]:
|
|
1743
|
+
"""
|
|
1744
|
+
EDINET.EC8061W: The consolidated statement of financial position has not been tagged in detail.
|
|
1745
|
+
If AccountingStandardsDEI = "IFRS" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "true",
|
|
1746
|
+
then a section must exist using one of the specified roles.
|
|
1747
|
+
"""
|
|
1748
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1749
|
+
return
|
|
1750
|
+
|
|
1751
|
+
if pluginData.isConsolidated() != True:
|
|
1752
|
+
return
|
|
1753
|
+
|
|
1754
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1755
|
+
if accountingStandard != AccountingStandard.IFRS.value:
|
|
1756
|
+
return
|
|
1757
|
+
|
|
1758
|
+
roleUris = (
|
|
1759
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfFinancialPositionIFRS',
|
|
1760
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfFinancialPositionIFRS',
|
|
1761
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfFinancialPositionIFRS',
|
|
1762
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfFinancialPositionIFRS',
|
|
1763
|
+
)
|
|
1764
|
+
|
|
1765
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1766
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1767
|
+
return
|
|
1768
|
+
|
|
1769
|
+
yield Validation.warning(
|
|
1770
|
+
codes='EDINET.EC8061W',
|
|
1771
|
+
msg=_("The consolidated statement of financial position has not been tagged in detail. "
|
|
1772
|
+
"Please provide a detailed tag for the consolidated statement of financial position. "
|
|
1773
|
+
"If you do not provide a consolidated statement of financial position, please confirm that "
|
|
1774
|
+
'the "Consolidated Financial Statements" field in the DEI information is correct.'),
|
|
1775
|
+
)
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
@validation(
|
|
1779
|
+
hook=ValidationHook.COMPLETE,
|
|
1780
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1781
|
+
)
|
|
1782
|
+
def rule_EC8063W(
|
|
1783
|
+
pluginData: ControllerPluginData,
|
|
1784
|
+
cntlr: Cntlr,
|
|
1785
|
+
fileSource: FileSource,
|
|
1786
|
+
*args: Any,
|
|
1787
|
+
**kwargs: Any,
|
|
1788
|
+
) -> Iterable[Validation]:
|
|
1789
|
+
"""
|
|
1790
|
+
EDINET.EC8063W: The statement of financial position has not been tagged in detail.
|
|
1791
|
+
If AccountingStandardsDEI = "IFRS" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "false",
|
|
1792
|
+
then a section must exist using one of the specified roles.
|
|
1793
|
+
"""
|
|
1794
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1795
|
+
return
|
|
1796
|
+
|
|
1797
|
+
if pluginData.isConsolidated() != False:
|
|
1798
|
+
return
|
|
1799
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1800
|
+
if accountingStandard != AccountingStandard.IFRS.value:
|
|
1801
|
+
return
|
|
1802
|
+
|
|
1803
|
+
roleUris = (
|
|
1804
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfFinancialPositionIFRS',
|
|
1805
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfFinancialPositionIFRS',
|
|
1806
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfFinancialPositionIFRS',
|
|
1807
|
+
)
|
|
1808
|
+
|
|
1809
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1810
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1811
|
+
return
|
|
1812
|
+
|
|
1813
|
+
yield Validation.warning(
|
|
1814
|
+
codes='EDINET.EC8063W',
|
|
1815
|
+
msg=_("The statement of financial position has not been tagged in detail. "
|
|
1816
|
+
"Please provide detailed tagging of the statement of financial position."),
|
|
1817
|
+
)
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
@validation(
|
|
1821
|
+
hook=ValidationHook.COMPLETE,
|
|
1822
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1823
|
+
)
|
|
1824
|
+
def rule_EC8065W(
|
|
1825
|
+
pluginData: ControllerPluginData,
|
|
1826
|
+
cntlr: Cntlr,
|
|
1827
|
+
fileSource: FileSource,
|
|
1828
|
+
*args: Any,
|
|
1829
|
+
**kwargs: Any,
|
|
1830
|
+
) -> Iterable[Validation]:
|
|
1831
|
+
"""
|
|
1832
|
+
EDINET.EC8065W: The consolidated statement of comprehensive income has not been tagged in detail.
|
|
1833
|
+
If AccountingStandardsDEI = "IFRS" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "true",
|
|
1834
|
+
then a section must exist using one of the specified roles.
|
|
1835
|
+
"""
|
|
1836
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1837
|
+
return
|
|
1838
|
+
|
|
1839
|
+
if pluginData.isConsolidated() != True:
|
|
1840
|
+
return
|
|
1841
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1842
|
+
if accountingStandard != AccountingStandard.IFRS.value:
|
|
1843
|
+
return
|
|
1844
|
+
|
|
1845
|
+
roleUris = (
|
|
1846
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_ConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1847
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1848
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1849
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodConsolidatedStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1850
|
+
)
|
|
1851
|
+
|
|
1852
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1853
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1854
|
+
return
|
|
1855
|
+
|
|
1856
|
+
yield Validation.warning(
|
|
1857
|
+
codes='EDINET.EC8065W',
|
|
1858
|
+
msg=_("The consolidated statement of comprehensive income has not been tagged in detail. "
|
|
1859
|
+
"Please provide detailed tagging for the consolidated statement of comprehensive income. "
|
|
1860
|
+
"If you do not provide a consolidated statement of comprehensive income, please confirm that "
|
|
1861
|
+
'the "Consolidated Financial Statements" field in the DEI information is correct.'),
|
|
1862
|
+
)
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
@validation(
|
|
1866
|
+
hook=ValidationHook.COMPLETE,
|
|
1867
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1868
|
+
)
|
|
1869
|
+
def rule_EC8066W(
|
|
1870
|
+
pluginData: ControllerPluginData,
|
|
1871
|
+
cntlr: Cntlr,
|
|
1872
|
+
fileSource: FileSource,
|
|
1873
|
+
*args: Any,
|
|
1874
|
+
**kwargs: Any,
|
|
1875
|
+
) -> Iterable[Validation]:
|
|
1876
|
+
"""
|
|
1877
|
+
EDINET.EC8066W: The statement of comprehensive income has not been tagged in detail.
|
|
1878
|
+
If AccountingStandardsDEI = "IFRS" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "false",
|
|
1879
|
+
then a section must exist using one of the specified roles.
|
|
1880
|
+
"""
|
|
1881
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1882
|
+
return
|
|
1883
|
+
|
|
1884
|
+
if pluginData.isConsolidated() != False:
|
|
1885
|
+
return
|
|
1886
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1887
|
+
if accountingStandard != AccountingStandard.IFRS.value:
|
|
1888
|
+
return
|
|
1889
|
+
|
|
1890
|
+
roleUris = (
|
|
1891
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1892
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1893
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedYearToQuarterEndStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1894
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterPeriodStatementOfComprehensiveIncomeSingleStatementIFRS',
|
|
1895
|
+
)
|
|
1896
|
+
|
|
1897
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1898
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1899
|
+
return
|
|
1900
|
+
|
|
1901
|
+
yield Validation.warning(
|
|
1902
|
+
codes='EDINET.EC8066W',
|
|
1903
|
+
msg=_("The statement of comprehensive income has not been tagged in detail. "
|
|
1904
|
+
"Please provide detailed tagging for the statement of comprehensive income."),
|
|
1905
|
+
)
|
|
1906
|
+
|
|
1907
|
+
|
|
1908
|
+
@validation(
|
|
1909
|
+
hook=ValidationHook.COMPLETE,
|
|
1910
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1911
|
+
)
|
|
1912
|
+
def rule_EC8067W(
|
|
1913
|
+
pluginData: ControllerPluginData,
|
|
1914
|
+
cntlr: Cntlr,
|
|
1915
|
+
fileSource: FileSource,
|
|
1916
|
+
*args: Any,
|
|
1917
|
+
**kwargs: Any,
|
|
1918
|
+
) -> Iterable[Validation]:
|
|
1919
|
+
"""
|
|
1920
|
+
EDINET.EC8067W: The consolidated statement of changes in equity has not been tagged in detail.
|
|
1921
|
+
If AccountingStandardsDEI = "IFRS" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "true",
|
|
1922
|
+
then a section must exist using one of the specified roles.
|
|
1923
|
+
"""
|
|
1924
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1925
|
+
return
|
|
1926
|
+
|
|
1927
|
+
if pluginData.isConsolidated() != True:
|
|
1928
|
+
return
|
|
1929
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1930
|
+
if accountingStandard != AccountingStandard.IFRS.value:
|
|
1931
|
+
return
|
|
1932
|
+
|
|
1933
|
+
roleUris = (
|
|
1934
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyConsolidatedStatementOfChangesInEquityIFRS',
|
|
1935
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualConsolidatedStatementOfChangesInEquityIFRS',
|
|
1936
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_std_ConsolidatedStatementOfChangesInEquityIFRS',
|
|
1937
|
+
)
|
|
1938
|
+
|
|
1939
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1940
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1941
|
+
return
|
|
1942
|
+
|
|
1943
|
+
yield Validation.warning(
|
|
1944
|
+
codes='EDINET.EC8067W',
|
|
1945
|
+
msg=_("The consolidated statement of changes in equity has not been tagged in detail. "
|
|
1946
|
+
"Please tag the details of the consolidated statement of changes in equity. "
|
|
1947
|
+
"If you do not include a consolidated statement of changes in equity, please confirm that "
|
|
1948
|
+
'the "Consolidated" field in the DEI information is correct.'),
|
|
1949
|
+
)
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
@validation(
|
|
1953
|
+
hook=ValidationHook.COMPLETE,
|
|
1954
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
1955
|
+
)
|
|
1956
|
+
def rule_EC8068W(
|
|
1957
|
+
pluginData: ControllerPluginData,
|
|
1958
|
+
cntlr: Cntlr,
|
|
1959
|
+
fileSource: FileSource,
|
|
1960
|
+
*args: Any,
|
|
1961
|
+
**kwargs: Any,
|
|
1962
|
+
) -> Iterable[Validation]:
|
|
1963
|
+
"""
|
|
1964
|
+
EDINET.EC8068W: The statement of changes in equity is not tagged in detail.
|
|
1965
|
+
If AccountingStandardsDEI = "IFRS" and WhetherConsolidatedFinancialStatementsArePreparedDEI = "false",
|
|
1966
|
+
then a section must exist using one of the specified roles.
|
|
1967
|
+
"""
|
|
1968
|
+
if not pluginData.hasDocumentType({DocumentType.ANNUAL_SECURITIES_REPORT, DocumentType.SEMI_ANNUAL_REPORT}):
|
|
1969
|
+
return
|
|
1970
|
+
|
|
1971
|
+
if pluginData.isConsolidated() != False:
|
|
1972
|
+
return
|
|
1973
|
+
accountingStandard = pluginData.getDeiValue('AccountingStandardsDEI')
|
|
1974
|
+
if accountingStandard != AccountingStandard.IFRS.value:
|
|
1975
|
+
return
|
|
1976
|
+
|
|
1977
|
+
roleUris = (
|
|
1978
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_StatementOfChangesInEquityIFRS',
|
|
1979
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedSemiAnnualStatementOfChangesInEquityIFRS',
|
|
1980
|
+
'http://disclosure.edinet-fsa.go.jp/role/jpigp/rol_CondensedQuarterlyStatementOfChangesInEquityIFRS',
|
|
1981
|
+
)
|
|
1982
|
+
|
|
1983
|
+
for modelXbrl in pluginData.loadedModelXbrls:
|
|
1984
|
+
if hasPresentationalConceptsWithFacts(modelXbrl, roleUris):
|
|
1985
|
+
return
|
|
1986
|
+
|
|
1987
|
+
yield Validation.warning(
|
|
1988
|
+
codes='EDINET.EC8068W',
|
|
1989
|
+
msg=_("The statement of changes in equity is not tagged in detail. "
|
|
1990
|
+
"Please provide detailed tagging of the statement of changes in equity."),
|
|
1991
|
+
)
|