arelle-release 2.37.54__py3-none-any.whl → 2.37.55__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arelle-release might be problematic. Click here for more details.
- arelle/CntlrCmdLine.py +5 -4
- arelle/Validate.py +2 -2
- arelle/_version.py +2 -2
- arelle/plugin/validate/EDINET/Constants.py +21 -0
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +14 -1
- arelle/plugin/validate/EDINET/rules/gfm.py +29 -0
- arelle/plugin/validate/EDINET/rules/upload.py +27 -0
- {arelle_release-2.37.54.dist-info → arelle_release-2.37.55.dist-info}/METADATA +1 -1
- {arelle_release-2.37.54.dist-info → arelle_release-2.37.55.dist-info}/RECORD +13 -13
- {arelle_release-2.37.54.dist-info → arelle_release-2.37.55.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.54.dist-info → arelle_release-2.37.55.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.54.dist-info → arelle_release-2.37.55.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.54.dist-info → arelle_release-2.37.55.dist-info}/top_level.txt +0 -0
arelle/CntlrCmdLine.py
CHANGED
|
@@ -1171,10 +1171,6 @@ class CntlrCmdLine(Cntlr.Cntlr):
|
|
|
1171
1171
|
for pluginXbrlMethod in PluginManager.pluginClassMethods("CntlrCmdLine.Xbrl.Run"):
|
|
1172
1172
|
pluginXbrlMethod(self, options, modelXbrl, _entrypoint, sourceZipStream=sourceZipStream, responseZipStream=responseZipStream)
|
|
1173
1173
|
|
|
1174
|
-
if options.validate:
|
|
1175
|
-
for pluginXbrlMethod in PluginManager.pluginClassMethods("Validate.Complete"):
|
|
1176
|
-
pluginXbrlMethod(self, filesource)
|
|
1177
|
-
|
|
1178
1174
|
except OSError as err:
|
|
1179
1175
|
self.addToLog(_("[IOError] Failed to save output:\n {0}").format(err),
|
|
1180
1176
|
messageCode="IOError",
|
|
@@ -1222,6 +1218,11 @@ class CntlrCmdLine(Cntlr.Cntlr):
|
|
|
1222
1218
|
self.modelManager.close(modelDiffReport)
|
|
1223
1219
|
elif modelXbrl:
|
|
1224
1220
|
self.modelManager.close(modelXbrl)
|
|
1221
|
+
|
|
1222
|
+
if options.validate:
|
|
1223
|
+
for pluginXbrlMethod in PluginManager.pluginClassMethods("Validate.Complete"):
|
|
1224
|
+
pluginXbrlMethod(self, filesource)
|
|
1225
|
+
|
|
1225
1226
|
if filesource is not None and not options.keepOpen:
|
|
1226
1227
|
# Archive filesource potentially used by multiple reports may still be open.
|
|
1227
1228
|
filesource.close()
|
arelle/Validate.py
CHANGED
|
@@ -488,13 +488,13 @@ class Validate:
|
|
|
488
488
|
self.instValidator.validate(model, parameters)
|
|
489
489
|
for pluginXbrlMethod in pluginClassMethods("TestcaseVariation.Xbrl.Validated"):
|
|
490
490
|
pluginXbrlMethod(self.modelXbrl, model)
|
|
491
|
-
for pluginXbrlMethod in pluginClassMethods("Validate.Complete"):
|
|
492
|
-
pluginXbrlMethod(self.modelXbrl.modelManager.cntlr, filesource)
|
|
493
491
|
except Exception as err:
|
|
494
492
|
model.error("exception:" + type(err).__name__,
|
|
495
493
|
_("Testcase variation validation exception: %(error)s, instance: %(instance)s"),
|
|
496
494
|
modelXbrl=model, instance=model.modelDocument.basename, error=err, exc_info=(type(err) is not AssertionError))
|
|
497
495
|
model.hasFormulae = _hasFormulae
|
|
496
|
+
for pluginXbrlMethod in pluginClassMethods("Validate.Complete"):
|
|
497
|
+
pluginXbrlMethod(self.modelXbrl.modelManager.cntlr, filesource)
|
|
498
498
|
errors = [error for model in loadedModels for error in model.errors]
|
|
499
499
|
for err in preLoadingErrors:
|
|
500
500
|
if err not in errors:
|
arelle/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '2.37.
|
|
32
|
-
__version_tuple__ = version_tuple = (2, 37,
|
|
31
|
+
__version__ = version = '2.37.55'
|
|
32
|
+
__version_tuple__ = version_tuple = (2, 37, 55)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -40,6 +40,27 @@ xhtmlDtdExtension = "xhtml1-strict-ix.dtd"
|
|
|
40
40
|
|
|
41
41
|
COVER_PAGE_FILENAME_PREFIX = "0000000_header_"
|
|
42
42
|
|
|
43
|
+
PROHIBITED_HTML_ATTRIBUTES = frozenset({
|
|
44
|
+
'onblur',
|
|
45
|
+
'onchange',
|
|
46
|
+
'onclick',
|
|
47
|
+
'ondblclick',
|
|
48
|
+
'onfocus',
|
|
49
|
+
'onkeydown',
|
|
50
|
+
'onkeypress',
|
|
51
|
+
'onkeyup',
|
|
52
|
+
'onload',
|
|
53
|
+
'onmousedown',
|
|
54
|
+
'onmousemove',
|
|
55
|
+
'onmouseout',
|
|
56
|
+
'onmouseover',
|
|
57
|
+
'onmouseup',
|
|
58
|
+
'onreset',
|
|
59
|
+
'onselect',
|
|
60
|
+
'onsubmit',
|
|
61
|
+
'onunload',
|
|
62
|
+
})
|
|
63
|
+
|
|
43
64
|
PROHIBITED_HTML_TAGS = frozenset({
|
|
44
65
|
'applet',
|
|
45
66
|
'embed',
|
|
@@ -31,7 +31,7 @@ from arelle.XhtmlValidate import htmlEltUriAttrs
|
|
|
31
31
|
from arelle.XmlValidate import VALID
|
|
32
32
|
from arelle.typing import TypeGetText
|
|
33
33
|
from arelle.utils.PluginData import PluginData
|
|
34
|
-
from .Constants import CORPORATE_FORMS, FormType, xhtmlDtdExtension, PROHIBITED_HTML_TAGS
|
|
34
|
+
from .Constants import CORPORATE_FORMS, FormType, xhtmlDtdExtension, PROHIBITED_HTML_TAGS, PROHIBITED_HTML_ATTRIBUTES
|
|
35
35
|
from .ControllerPluginData import ControllerPluginData
|
|
36
36
|
from .ManifestInstance import ManifestInstance
|
|
37
37
|
from .Statement import Statement, STATEMENTS, BalanceSheet, StatementInstance, StatementType
|
|
@@ -301,6 +301,19 @@ class PluginValidationDataExtension(PluginData):
|
|
|
301
301
|
controllerPluginData = ControllerPluginData.get(modelXbrl.modelManager.cntlr, self.name)
|
|
302
302
|
return controllerPluginData.matchManifestInstance(modelXbrl.ixdsDocUrls)
|
|
303
303
|
|
|
304
|
+
@lru_cache(1)
|
|
305
|
+
def getProhibitedAttributeElements(self, modelDocument: ModelDocument) -> list[tuple[ModelObject, str]]:
|
|
306
|
+
results: list[tuple[ModelObject, str]] = []
|
|
307
|
+
if modelDocument.type not in (ModelDocumentType.INLINEXBRL, ModelDocumentType.HTML):
|
|
308
|
+
return results
|
|
309
|
+
for elt in modelDocument.xmlRootElement.iter():
|
|
310
|
+
if not isinstance(elt, ModelObject):
|
|
311
|
+
continue
|
|
312
|
+
for attributeName in elt.attrib.keys():
|
|
313
|
+
if attributeName in PROHIBITED_HTML_ATTRIBUTES:
|
|
314
|
+
results.append((elt, str(attributeName)))
|
|
315
|
+
return results
|
|
316
|
+
|
|
304
317
|
@lru_cache(1)
|
|
305
318
|
def getProhibitedTagElements(self, modelDocument: ModelDocument) -> list[ModelObject]:
|
|
306
319
|
elts: list[ModelObject] = []
|
|
@@ -641,3 +641,32 @@ def rule_gfm_1_3_1(
|
|
|
641
641
|
msg=_("The submitter-specific taxonomy contains include elements."),
|
|
642
642
|
modelObject=warnings
|
|
643
643
|
)
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
@validation(
|
|
647
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
648
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
649
|
+
)
|
|
650
|
+
def rule_gfm_1_3_8(
|
|
651
|
+
pluginData: PluginValidationDataExtension,
|
|
652
|
+
val: ValidateXbrl,
|
|
653
|
+
*args: Any,
|
|
654
|
+
**kwargs: Any,
|
|
655
|
+
) -> Iterable[Validation]:
|
|
656
|
+
"""
|
|
657
|
+
EDINET.EC5700W: [GFM 1.3.8] TThe submitter-specific taxonomy has an embedded linkbase.
|
|
658
|
+
"""
|
|
659
|
+
embeddedElements = []
|
|
660
|
+
for modelDocument in val.modelXbrl.urlDocs.values():
|
|
661
|
+
if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl):
|
|
662
|
+
continue
|
|
663
|
+
rootElt = modelDocument.xmlRootElement
|
|
664
|
+
for elt in rootElt.iterdescendants(XbrlConst.qnLinkLinkbaseRef.clarkNotation):
|
|
665
|
+
if elt.attrib.get(XbrlConst.qnXlinkType.clarkNotation) in ('extended', 'arc', 'resource', 'locator'):
|
|
666
|
+
embeddedElements.append(elt)
|
|
667
|
+
if len(embeddedElements) > 0:
|
|
668
|
+
yield Validation.warning(
|
|
669
|
+
codes='EDINET.EC5700W.GFM.1.3.8',
|
|
670
|
+
msg=_("The submitter-specific taxonomy has an embedded linkbase."),
|
|
671
|
+
modelObject=embeddedElements
|
|
672
|
+
)
|
|
@@ -790,6 +790,33 @@ def rule_EC1020E(
|
|
|
790
790
|
)
|
|
791
791
|
|
|
792
792
|
|
|
793
|
+
@validation(
|
|
794
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
795
|
+
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
796
|
+
)
|
|
797
|
+
def rule_EC1031E(
|
|
798
|
+
pluginData: PluginValidationDataExtension,
|
|
799
|
+
val: ValidateXbrl,
|
|
800
|
+
*args: Any,
|
|
801
|
+
**kwargs: Any,
|
|
802
|
+
) -> Iterable[Validation]:
|
|
803
|
+
"""
|
|
804
|
+
EDINET.EC1031E: Prohibited attribute is used in HTML.
|
|
805
|
+
"""
|
|
806
|
+
for doc in val.modelXbrl.urlDocs.values():
|
|
807
|
+
for elt, attributeName in pluginData.getProhibitedAttributeElements(doc):
|
|
808
|
+
yield Validation.error(
|
|
809
|
+
codes='EDINET.EC1031E',
|
|
810
|
+
msg=_("Prohibited attribute '%(attributeName)s' is used in HTML. "
|
|
811
|
+
"File name: %(file)s (line %(line)s). "
|
|
812
|
+
"Please correct the tag attributes of the relevant file."),
|
|
813
|
+
attributeName=elt.qname.localName,
|
|
814
|
+
file=doc.basename,
|
|
815
|
+
line=elt.sourceline,
|
|
816
|
+
modelObject=elt,
|
|
817
|
+
)
|
|
818
|
+
|
|
819
|
+
|
|
793
820
|
@validation(
|
|
794
821
|
hook=ValidationHook.FILESOURCE,
|
|
795
822
|
disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
arelle/Aspect.py,sha256=Pn9I91D1os1RTVj6htuxTfRzVMhmVDtrbKvV_zy9xMI,5470
|
|
2
2
|
arelle/BetaFeatures.py,sha256=T_tPac-FiozHyYLCemt0RoHJ1JahUE71L-0tHmIRKpE,858
|
|
3
3
|
arelle/Cntlr.py,sha256=nwE_qIQMTa5R3sr_dLP6s3srLhiEA5zDOqfas2pDxoA,31691
|
|
4
|
-
arelle/CntlrCmdLine.py,sha256=
|
|
4
|
+
arelle/CntlrCmdLine.py,sha256=D5Xs847rIAMsI_fmJC27GSB0jIMGjE3VejpKvMTqncU,88717
|
|
5
5
|
arelle/CntlrComServer.py,sha256=h1KPf31uMbErpxTZn_iklDqUMGFgQnjZkFkFjd8gtLQ,1888
|
|
6
6
|
arelle/CntlrProfiler.py,sha256=2VQJudiUhxryVypxjODx2ccP1-n60icTiWs5lSEokhQ,972
|
|
7
7
|
arelle/CntlrQuickBooks.py,sha256=BMqd5nkNQOZyNFPefkTeWUUDCYNS6BQavaG8k1Lepu4,31543
|
|
@@ -67,7 +67,7 @@ arelle/UITkTable.py,sha256=N83cXi5c0lLZLsDbwSKcPrlYoUoGsNavGN5YRx6d9XY,39810
|
|
|
67
67
|
arelle/UiUtil.py,sha256=3G0xPclZI8xW_XQDbiFrmylB7Nd5muqi5n2x2oMkMZU,34218
|
|
68
68
|
arelle/Updater.py,sha256=IZ8cq44Rq88WbQcB1VOpMA6bxdfZxfYQ8rgu9Ehpbes,7448
|
|
69
69
|
arelle/UrlUtil.py,sha256=HrxZSG59EUMGMMGmWPuZkPi5-0BGqY3jAMkp7V4IdZo,32400
|
|
70
|
-
arelle/Validate.py,sha256=
|
|
70
|
+
arelle/Validate.py,sha256=cX1OA3JPiwmjNmxfecZc24GBW1qXdjcEEynJ9F1K7Zg,58764
|
|
71
71
|
arelle/ValidateDuplicateFacts.py,sha256=L556J1Dhz4ZmsMlRNoDCMpFgDQYiryd9vuBYDvE0Aq8,21769
|
|
72
72
|
arelle/ValidateFilingText.py,sha256=xnXc0xgdNiHQk0eyP7VSSpvw7qr-pRFRwqqoUb569is,54051
|
|
73
73
|
arelle/ValidateInfoset.py,sha256=Rz_XBi5Ha43KpxXYhjLolURcWVx5qmqyjLxw48Yt9Dg,20396
|
|
@@ -125,7 +125,7 @@ arelle/XmlValidateConst.py,sha256=U_wN0Q-nWKwf6dKJtcu_83FXPn9c6P8JjzGA5b0w7P0,33
|
|
|
125
125
|
arelle/XmlValidateParticles.py,sha256=Mn6vhFl0ZKC_vag1mBwn1rH_x2jmlusJYqOOuxFPO2k,9231
|
|
126
126
|
arelle/XmlValidateSchema.py,sha256=6frtZOc1Yrx_5yYF6V6oHbScnglWrVbWr6xW4EHtLQI,7428
|
|
127
127
|
arelle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
|
-
arelle/_version.py,sha256=
|
|
128
|
+
arelle/_version.py,sha256=Ob4Yjv_aHEp_grPDRfpg4fr4W3Qb5_yliBYKjfPLi7w,708
|
|
129
129
|
arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
|
|
130
130
|
arelle/api/Session.py,sha256=kgSxS7VckA1sQ7xp0pJiK7IK-vRxAdAZKUo8gEx27s8,7549
|
|
131
131
|
arelle/config/creationSoftwareNames.json,sha256=5MK7XUjfDJ9OpRCCHXeOErJ1SlTBZji4WEcEOdOacx0,3128
|
|
@@ -312,11 +312,11 @@ arelle/plugin/validate/DBA/rules/tm.py,sha256=ui9oKBqlAForwkQ9kk9KBiUogTJE5pv1Rb
|
|
|
312
312
|
arelle/plugin/validate/DBA/rules/tr.py,sha256=4TootFjl0HXsKZk1XNBCyj-vnjRs4lg35hfiz_b_4wU,14684
|
|
313
313
|
arelle/plugin/validate/EBA/__init__.py,sha256=x3zXNcdSDJ3kHfL7kMs0Ve0Vs9oWbzNFVf1TK4Avmy8,45924
|
|
314
314
|
arelle/plugin/validate/EBA/config.xml,sha256=37wMVUAObK-XEqakqD8zPNog20emYt4a_yfL1AKubF8,2022
|
|
315
|
-
arelle/plugin/validate/EDINET/Constants.py,sha256=
|
|
315
|
+
arelle/plugin/validate/EDINET/Constants.py,sha256=IkJ1R0ZQAs9kUXY8eB7e8azYlC4m500VILrQhniB5Q4,1949
|
|
316
316
|
arelle/plugin/validate/EDINET/ControllerPluginData.py,sha256=2hMPxpL0vZqmzcuvPl9o4_g79ZOtJgLI1p_VRW2YYVk,7259
|
|
317
317
|
arelle/plugin/validate/EDINET/DisclosureSystems.py,sha256=3rKG42Eg-17Xx_KXU_V5yHW6I3LTwQunvf4a44C9k_4,36
|
|
318
318
|
arelle/plugin/validate/EDINET/ManifestInstance.py,sha256=o6BGlaQHSsn6D0VKH4zn59UscKnjTKlo99kSGfGdYlU,6910
|
|
319
|
-
arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=
|
|
319
|
+
arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=aM3OtB0X6NSHouFDut68pkLfe143rTW6nL6tIcI84D4,16092
|
|
320
320
|
arelle/plugin/validate/EDINET/ReportFolderType.py,sha256=Q-9a-5tJfhK-cjY8WUB2AT1NI-Nn9cFtARVOIJoLRGU,2979
|
|
321
321
|
arelle/plugin/validate/EDINET/Statement.py,sha256=0Mw5IB7LMtvUZ-2xKZfxmq67xF_dCgJo3eNLweLFRHU,9350
|
|
322
322
|
arelle/plugin/validate/EDINET/UploadContents.py,sha256=IKQYl6lXYTfAZKLIDzRRGSRt3FXoL2Eldbx3Dh7T2I4,712
|
|
@@ -328,9 +328,9 @@ arelle/plugin/validate/EDINET/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
|
328
328
|
arelle/plugin/validate/EDINET/rules/contexts.py,sha256=KPoyWfRaURvxoGVcWP64mTMTAKPMSmQSX06RClCLddw,7590
|
|
329
329
|
arelle/plugin/validate/EDINET/rules/edinet.py,sha256=VYrDZaKbsQuQEvOY5F0Pv4Jzk9YZ4iETOkAFOggrhEY,12632
|
|
330
330
|
arelle/plugin/validate/EDINET/rules/frta.py,sha256=N0YglHYZuLD2IuwE26viR2ViwUYjneBuMFU9vlrS0aQ,7616
|
|
331
|
-
arelle/plugin/validate/EDINET/rules/gfm.py,sha256=
|
|
331
|
+
arelle/plugin/validate/EDINET/rules/gfm.py,sha256=3kV7jahj_Y8GxwgjebUtnIrnDTbZEYEDfzokDTGcehc,25490
|
|
332
332
|
arelle/plugin/validate/EDINET/rules/manifests.py,sha256=MoT9R_a4BzuYdQVbF7RC5wz134Ve68svSdJ3NlpO_AU,4026
|
|
333
|
-
arelle/plugin/validate/EDINET/rules/upload.py,sha256=
|
|
333
|
+
arelle/plugin/validate/EDINET/rules/upload.py,sha256=f9MLg7Dz9czsAHKE-SQHRlCe77AXWAPyp4RDeB0G8Rc,36818
|
|
334
334
|
arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
|
|
335
335
|
arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
|
|
336
336
|
arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
|
|
@@ -680,9 +680,9 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
|
|
|
680
680
|
arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
681
681
|
arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
682
682
|
arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
|
|
683
|
-
arelle_release-2.37.
|
|
684
|
-
arelle_release-2.37.
|
|
685
|
-
arelle_release-2.37.
|
|
686
|
-
arelle_release-2.37.
|
|
687
|
-
arelle_release-2.37.
|
|
688
|
-
arelle_release-2.37.
|
|
683
|
+
arelle_release-2.37.55.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
|
|
684
|
+
arelle_release-2.37.55.dist-info/METADATA,sha256=7zIMq7-ff7-wq1Vq8wfHYzjd4A_sMGZsPHuiIz2-nNY,9327
|
|
685
|
+
arelle_release-2.37.55.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
686
|
+
arelle_release-2.37.55.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
|
|
687
|
+
arelle_release-2.37.55.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
|
|
688
|
+
arelle_release-2.37.55.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|