arelle-release 2.37.46__py3-none-any.whl → 2.38.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. arelle/BetaFeatures.py +0 -21
  2. arelle/Cntlr.py +15 -8
  3. arelle/CntlrCmdLine.py +121 -56
  4. arelle/CntlrWinMain.py +143 -70
  5. arelle/DialogFind.py +1 -1
  6. arelle/DialogPluginManager.py +6 -4
  7. arelle/DisclosureSystem.py +7 -0
  8. arelle/ErrorManager.py +21 -6
  9. arelle/FileSource.py +11 -4
  10. arelle/FunctionIxt.py +16 -11
  11. arelle/HtmlUtil.py +5 -4
  12. arelle/LeiUtil.py +63 -43
  13. arelle/ModelDocument.py +20 -15
  14. arelle/ModelDtsObject.py +8 -0
  15. arelle/ModelInstanceObject.py +1 -1
  16. arelle/ModelObject.py +16 -18
  17. arelle/ModelObjectFactory.py +35 -17
  18. arelle/ModelXbrl.py +28 -11
  19. arelle/PluginManager.py +130 -105
  20. arelle/RuntimeOptions.py +1 -0
  21. arelle/UrlUtil.py +14 -0
  22. arelle/Validate.py +17 -12
  23. arelle/ValidateDuplicateFacts.py +3 -1
  24. arelle/ValidateFileSource.py +38 -0
  25. arelle/ValidateFilingText.py +3 -3
  26. arelle/ValidateXbrl.py +5 -2
  27. arelle/ValidateXbrlCalcs.py +210 -186
  28. arelle/ValidateXbrlDTS.py +1 -1
  29. arelle/ViewFile.py +1 -0
  30. arelle/ViewFileFactTable.py +2 -2
  31. arelle/ViewWinDTS.py +4 -1
  32. arelle/WebCache.py +28 -24
  33. arelle/XbrlConst.py +22 -0
  34. arelle/XmlUtil.py +16 -21
  35. arelle/XmlValidate.py +6 -9
  36. arelle/_version.py +16 -3
  37. arelle/api/Session.py +11 -2
  38. arelle/config/disclosuresystems.xsd +2 -0
  39. arelle/config/rosettaEntitlements.plist +8 -0
  40. arelle/conformance/CSVTestcaseLoader.py +1 -1
  41. arelle/formula/XPathContext.py +3 -3
  42. arelle/logging/formatters/LogFormatter.py +3 -1
  43. arelle/packages/report/ReportPackage.py +26 -13
  44. arelle/packages/report/ReportPackageConst.py +0 -1
  45. arelle/plugin/inlineXbrlDocumentSet.py +19 -5
  46. arelle/plugin/validate/DBA/DisclosureSystems.py +19 -1
  47. arelle/plugin/validate/DBA/PluginValidationDataExtension.py +2 -4
  48. arelle/plugin/validate/DBA/ValidationPluginExtension.py +2 -1
  49. arelle/plugin/validate/DBA/resources/config.xml +5 -0
  50. arelle/plugin/validate/DBA/rules/__init__.py +2 -2
  51. arelle/plugin/validate/DBA/rules/fr.py +19 -2
  52. arelle/plugin/validate/DBA/rules/tc.py +2 -0
  53. arelle/plugin/validate/DBA/rules/th.py +6 -0
  54. arelle/plugin/validate/DBA/rules/tm.py +18 -5
  55. arelle/plugin/validate/DBA/rules/tr.py +11 -5
  56. arelle/plugin/validate/EDINET/Constants.py +193 -9
  57. arelle/plugin/validate/EDINET/ContextRequirement.py +58 -0
  58. arelle/plugin/validate/EDINET/ControllerPluginData.py +220 -1
  59. arelle/plugin/validate/EDINET/CoverItemRequirements.py +42 -0
  60. arelle/plugin/validate/EDINET/DeiRequirements.py +118 -0
  61. arelle/plugin/validate/EDINET/FilingFormat.py +275 -0
  62. arelle/plugin/validate/EDINET/FormType.py +134 -0
  63. arelle/plugin/validate/EDINET/ManifestInstance.py +72 -5
  64. arelle/plugin/validate/EDINET/NamespaceConfig.py +50 -0
  65. arelle/plugin/validate/EDINET/PluginValidationDataExtension.py +493 -132
  66. arelle/plugin/validate/EDINET/{InstanceType.py → ReportFolderType.py} +72 -15
  67. arelle/plugin/validate/EDINET/Statement.py +139 -0
  68. arelle/plugin/validate/EDINET/TableOfContentsBuilder.py +595 -0
  69. arelle/plugin/validate/EDINET/UploadContents.py +48 -0
  70. arelle/plugin/validate/EDINET/ValidationPluginExtension.py +20 -2
  71. arelle/plugin/validate/EDINET/__init__.py +31 -6
  72. arelle/plugin/validate/EDINET/resources/config.xml +8 -1
  73. arelle/plugin/validate/EDINET/resources/cover-item-requirements.json +793 -0
  74. arelle/plugin/validate/EDINET/resources/dei-requirements.csv +27 -0
  75. arelle/plugin/validate/EDINET/resources/edinet-taxonomies.xml +2 -0
  76. arelle/plugin/validate/EDINET/rules/contexts.py +375 -14
  77. arelle/plugin/validate/EDINET/rules/edinet.py +1934 -45
  78. arelle/plugin/validate/EDINET/rules/frta.py +122 -3
  79. arelle/plugin/validate/EDINET/rules/gfm.py +1907 -11
  80. arelle/plugin/validate/EDINET/rules/upload.py +989 -141
  81. arelle/plugin/validate/ESEF/Const.py +3 -1
  82. arelle/plugin/validate/ESEF/ESEF_2021/DTS.py +5 -0
  83. arelle/plugin/validate/ESEF/ESEF_2021/Image.py +2 -2
  84. arelle/plugin/validate/ESEF/ESEF_2021/ValidateXbrlFinally.py +23 -20
  85. arelle/plugin/validate/ESEF/ESEF_Current/DTS.py +47 -14
  86. arelle/plugin/validate/ESEF/ESEF_Current/ValidateXbrlFinally.py +100 -25
  87. arelle/plugin/validate/ESEF/__init__.py +20 -6
  88. arelle/plugin/validate/ESEF/resources/authority-validations.json +76 -9
  89. arelle/plugin/validate/ESEF/resources/config.xml +20 -0
  90. arelle/plugin/validate/NL/DisclosureSystems.py +22 -0
  91. arelle/plugin/validate/NL/PluginValidationDataExtension.py +27 -9
  92. arelle/plugin/validate/NL/ValidationPluginExtension.py +51 -7
  93. arelle/plugin/validate/NL/resources/config.xml +18 -0
  94. arelle/plugin/validate/NL/rules/br_kvk.py +17 -61
  95. arelle/plugin/validate/NL/rules/fg_nl.py +7 -38
  96. arelle/plugin/validate/NL/rules/fr_kvk.py +7 -42
  97. arelle/plugin/validate/NL/rules/fr_nl.py +31 -147
  98. arelle/plugin/validate/NL/rules/nl_kvk.py +142 -28
  99. arelle/plugin/validate/ROS/PluginValidationDataExtension.py +2 -0
  100. arelle/plugin/validate/ROS/ValidationPluginExtension.py +4 -1
  101. arelle/plugin/validate/ROS/rules/ros.py +41 -9
  102. arelle/plugin/validate/UK/ValidateUK.py +130 -66
  103. arelle/plugin/validate/UK/__init__.py +89 -103
  104. arelle/utils/EntryPointDetection.py +79 -13
  105. arelle/utils/PluginHooks.py +125 -0
  106. arelle/utils/validate/ESEFImage.py +6 -6
  107. arelle/utils/validate/Validation.py +18 -0
  108. arelle/utils/validate/ValidationPlugin.py +76 -11
  109. arelle/utils/validate/ValidationUtil.py +35 -3
  110. {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/METADATA +30 -20
  111. {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/RECORD +115 -191
  112. {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/licenses/LICENSE.md +0 -3
  113. arelle/archive/CustomLogger.py +0 -43
  114. arelle/archive/LoadEFMvalidate.py +0 -32
  115. arelle/archive/LoadSavePreLbCsv.py +0 -26
  116. arelle/archive/LoadValidate.cs +0 -31
  117. arelle/archive/LoadValidate.py +0 -36
  118. arelle/archive/LoadValidateCmdLine.java +0 -69
  119. arelle/archive/LoadValidatePostedZip.java +0 -57
  120. arelle/archive/LoadValidateWebService.java +0 -34
  121. arelle/archive/SaveTableToExelle.py +0 -140
  122. arelle/archive/TR3toTR4.py +0 -88
  123. arelle/archive/plugin/ESEF_2022/__init__.py +0 -47
  124. arelle/archive/plugin/bigInstance.py +0 -394
  125. arelle/archive/plugin/cmdWebServerExtension.py +0 -43
  126. arelle/archive/plugin/crashTest.py +0 -38
  127. arelle/archive/plugin/functionsXmlCreation.py +0 -106
  128. arelle/archive/plugin/hello_i18n.pot +0 -26
  129. arelle/archive/plugin/hello_i18n.py +0 -32
  130. arelle/archive/plugin/importTestChild1.py +0 -21
  131. arelle/archive/plugin/importTestChild2.py +0 -22
  132. arelle/archive/plugin/importTestGrandchild1.py +0 -21
  133. arelle/archive/plugin/importTestGrandchild2.py +0 -21
  134. arelle/archive/plugin/importTestImported1.py +0 -23
  135. arelle/archive/plugin/importTestImported11.py +0 -22
  136. arelle/archive/plugin/importTestParent.py +0 -48
  137. arelle/archive/plugin/instanceInfo.py +0 -306
  138. arelle/archive/plugin/loadFromOIM-2018.py +0 -1282
  139. arelle/archive/plugin/locale/fr/LC_MESSAGES/hello_i18n.po +0 -25
  140. arelle/archive/plugin/objectmaker.py +0 -285
  141. arelle/archive/plugin/packagedImportTest/__init__.py +0 -47
  142. arelle/archive/plugin/packagedImportTest/importTestChild1.py +0 -21
  143. arelle/archive/plugin/packagedImportTest/importTestChild2.py +0 -22
  144. arelle/archive/plugin/packagedImportTest/importTestGrandchild1.py +0 -21
  145. arelle/archive/plugin/packagedImportTest/importTestGrandchild2.py +0 -21
  146. arelle/archive/plugin/packagedImportTest/importTestImported1.py +0 -24
  147. arelle/archive/plugin/packagedImportTest/importTestImported11.py +0 -21
  148. arelle/archive/plugin/packagedImportTest/subdir/importTestImported111.py +0 -21
  149. arelle/archive/plugin/packagedImportTest/subdir/subsubdir/importTestImported1111.py +0 -21
  150. arelle/archive/plugin/sakaCalendar.py +0 -215
  151. arelle/archive/plugin/saveInstanceInfoset.py +0 -121
  152. arelle/archive/plugin/sphinx/FormulaGenerator.py +0 -823
  153. arelle/archive/plugin/sphinx/SphinxContext.py +0 -404
  154. arelle/archive/plugin/sphinx/SphinxEvaluator.py +0 -783
  155. arelle/archive/plugin/sphinx/SphinxMethods.py +0 -1287
  156. arelle/archive/plugin/sphinx/SphinxParser.py +0 -1093
  157. arelle/archive/plugin/sphinx/SphinxValidator.py +0 -163
  158. arelle/archive/plugin/sphinx/US-GAAP Ratios Example.xsr +0 -52
  159. arelle/archive/plugin/sphinx/__init__.py +0 -285
  160. arelle/archive/plugin/streamingExtensions.py +0 -335
  161. arelle/archive/plugin/updateTableLB.py +0 -242
  162. arelle/archive/plugin/validate/SBRnl/CustomLoader.py +0 -19
  163. arelle/archive/plugin/validate/SBRnl/DTS.py +0 -305
  164. arelle/archive/plugin/validate/SBRnl/Dimensions.py +0 -357
  165. arelle/archive/plugin/validate/SBRnl/Document.py +0 -799
  166. arelle/archive/plugin/validate/SBRnl/Filing.py +0 -467
  167. arelle/archive/plugin/validate/SBRnl/__init__.py +0 -75
  168. arelle/archive/plugin/validate/SBRnl/config.xml +0 -26
  169. arelle/archive/plugin/validate/SBRnl/sbr-nl-taxonomies.xml +0 -754
  170. arelle/archive/plugin/validate/USBestPractices.py +0 -570
  171. arelle/archive/plugin/validate/USCorpAction.py +0 -557
  172. arelle/archive/plugin/validate/USSecTagging.py +0 -337
  173. arelle/archive/plugin/validate/XDC/__init__.py +0 -77
  174. arelle/archive/plugin/validate/XDC/config.xml +0 -20
  175. arelle/archive/plugin/validate/XFsyntax/__init__.py +0 -64
  176. arelle/archive/plugin/validate/XFsyntax/xf.py +0 -2227
  177. arelle/archive/plugin/validate/calc2.py +0 -536
  178. arelle/archive/plugin/validateSchemaLxml.py +0 -156
  179. arelle/archive/plugin/validateTableInfoset.py +0 -52
  180. arelle/archive/us-gaap-dei-docType-extraction-frm.xml +0 -90
  181. arelle/archive/us-gaap-dei-ratio-cash-frm.xml +0 -150
  182. arelle/examples/plugin/formulaSuiteConverter.py +0 -212
  183. arelle/examples/plugin/functionsCustom.py +0 -59
  184. arelle/examples/plugin/hello_dolly.py +0 -64
  185. arelle/examples/plugin/multi.py +0 -58
  186. arelle/examples/plugin/rssSaveOim.py +0 -96
  187. arelle/examples/plugin/validate/XYZ/DisclosureSystems.py +0 -2
  188. arelle/examples/plugin/validate/XYZ/PluginValidationDataExtension.py +0 -10
  189. arelle/examples/plugin/validate/XYZ/ValidationPluginExtension.py +0 -49
  190. arelle/examples/plugin/validate/XYZ/__init__.py +0 -75
  191. arelle/examples/plugin/validate/XYZ/resources/config.xml +0 -16
  192. arelle/examples/plugin/validate/XYZ/rules/__init__.py +0 -0
  193. arelle/examples/plugin/validate/XYZ/rules/rules01.py +0 -110
  194. arelle/examples/plugin/validate/XYZ/rules/rules02.py +0 -59
  195. arelle/model/CommentBase.py +0 -9
  196. arelle/model/ElementBase.py +0 -11
  197. arelle/model/PIBase.py +0 -10
  198. arelle/model/__init__.py +0 -15
  199. arelle/scripts-macOS/startWebServer.command +0 -3
  200. arelle/scripts-unix/startWebServer.sh +0 -1
  201. arelle/scripts-windows/startWebServer.bat +0 -5
  202. {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/WHEEL +0 -0
  203. {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/entry_points.txt +0 -0
  204. {arelle_release-2.37.46.dist-info → arelle_release-2.38.0.dist-info}/top_level.txt +0 -0
@@ -1,110 +0,0 @@
1
- """
2
- See COPYRIGHT.md for copyright information.
3
- """
4
- from __future__ import annotations
5
-
6
- from collections.abc import Iterable
7
- from typing import Any, cast
8
-
9
- from arelle.ValidateXbrl import ValidateXbrl
10
- from arelle.XmlValidate import VALID
11
- from arelle.typing import TypeGetText
12
- from arelle.utils.PluginHooks import ValidationHook
13
- from arelle.utils.validate.Decorator import validation
14
- from arelle.utils.validate.Validation import Validation
15
- from ..DisclosureSystems import DISCLOSURE_SYSTEM_2022, DISCLOSURE_SYSTEM_2023
16
- from ..PluginValidationDataExtension import PluginValidationDataExtension
17
-
18
- _: TypeGetText
19
-
20
-
21
- # rule 01.01 (2022)
22
- @validation(
23
- hook=ValidationHook.XBRL_FINALLY,
24
- disclosureSystems=DISCLOSURE_SYSTEM_2022,
25
- )
26
- def rule01_01_2022(
27
- pluginData: PluginValidationDataExtension,
28
- val: ValidateXbrl,
29
- *args: Any,
30
- **kwargs: Any,
31
- ) -> Iterable[Validation]:
32
- if "Cash" not in val.modelXbrl.factsByLocalName:
33
- yield Validation.error(
34
- codes="XYZ.01.01",
35
- msg=_("Cash must be reported."),
36
- modelObject=val.modelXbrl,
37
- )
38
-
39
-
40
- # rule 01.01 (2023)
41
- @validation(
42
- hook=ValidationHook.XBRL_FINALLY,
43
- disclosureSystems=DISCLOSURE_SYSTEM_2023,
44
- )
45
- def rule01_01_2023(
46
- pluginData: PluginValidationDataExtension,
47
- val: ValidateXbrl,
48
- *args: Any,
49
- **kwargs: Any,
50
- ) -> Iterable[Validation]:
51
- conceptLocalNamesWithPositiveFactValues = pretendExpensiveOperation(pluginData, val)
52
- if "Cash" not in conceptLocalNamesWithPositiveFactValues:
53
- yield Validation.warning(
54
- codes="XYZ.01.01",
55
- msg=_("Cash should be reported."),
56
- modelObject=val.modelXbrl,
57
- )
58
-
59
-
60
- @validation(hook=ValidationHook.FINALLY)
61
- def rule01_02(
62
- pluginData: PluginValidationDataExtension,
63
- val: ValidateXbrl,
64
- *args: Any,
65
- **kwargs: Any,
66
- ) -> Iterable[Validation]:
67
- numXbrlErrors = len(val.modelXbrl.errors)
68
- if numXbrlErrors > 0:
69
- yield Validation.error(
70
- codes="XYZ.01.02",
71
- msg=_("Invalid report %(numXbrlErrors)s errors detected."),
72
- modelObject=val.modelXbrl,
73
- numXbrlErrors=numXbrlErrors,
74
- )
75
-
76
-
77
- @validation(
78
- hook=ValidationHook.XBRL_FINALLY,
79
- disclosureSystems=DISCLOSURE_SYSTEM_2023,
80
- )
81
- def rule01_03(
82
- pluginData: PluginValidationDataExtension,
83
- val: ValidateXbrl,
84
- *args: Any,
85
- **kwargs: Any,
86
- ) -> Iterable[Validation]:
87
- conceptLocalNamesWithPositiveFactValues = pretendExpensiveOperation(pluginData, val)
88
- if "UnitsSold" not in conceptLocalNamesWithPositiveFactValues:
89
- yield Validation.error(
90
- codes="XYZ.01.03",
91
- msg=_("UnitsSold must be reported."),
92
- modelObject=val.modelXbrl,
93
- )
94
-
95
-
96
- def pretendExpensiveOperation(
97
- pluginData: PluginValidationDataExtension,
98
- val: ValidateXbrl,
99
- ) -> set[str]:
100
- positiveFactConcepts = pluginData.positiveFactConcepts
101
- if positiveFactConcepts is None:
102
- positiveFactConcepts = {
103
- fact.concept.name
104
- for fact in val.modelXbrl.facts
105
- if fact.isNumeric
106
- and getattr(fact, "xValid", 0) >= VALID
107
- and cast(int, fact.xValue) > 0
108
- }
109
- pluginData.positiveFactConcepts = positiveFactConcepts
110
- return positiveFactConcepts
@@ -1,59 +0,0 @@
1
- """
2
- See COPYRIGHT.md for copyright information.
3
- """
4
- from __future__ import annotations
5
-
6
- from collections.abc import Iterable
7
- from typing import Any
8
-
9
- from arelle import XbrlConst
10
- from arelle.ModelDocument import ModelDocument, Type as ModelDocumentType
11
- from arelle.ValidateXbrl import ValidateXbrl
12
- from arelle.typing import TypeGetText
13
- from arelle.utils.PluginHooks import ValidationHook
14
- from arelle.utils.validate.Decorator import validation
15
- from arelle.utils.validate.Validation import Validation
16
- from ..DisclosureSystems import DISCLOSURE_SYSTEM_2022
17
- from ..PluginValidationDataExtension import PluginValidationDataExtension
18
-
19
- _: TypeGetText
20
-
21
-
22
- @validation(hook=ValidationHook.XBRL_DTS_DOCUMENT)
23
- def rule02_01(
24
- pluginData: PluginValidationDataExtension,
25
- val: ValidateXbrl,
26
- modelDocument: ModelDocument,
27
- isFilingDocument: bool,
28
- *args: Any,
29
- **kwargs: Any,
30
- ) -> Iterable[Validation]:
31
- if (
32
- modelDocument.type == ModelDocumentType.SCHEMA
33
- and modelDocument.targetNamespace is not None
34
- and len(modelDocument.targetNamespace) > 100
35
- ):
36
- yield Validation.error(
37
- codes="XYZ.02.01",
38
- msg=_("TargetNamespace is too long %(namespace)s."),
39
- modelObject=val.modelXbrl,
40
- namespace=modelDocument.targetNamespace,
41
- )
42
-
43
-
44
- @validation(
45
- hook=ValidationHook.XBRL_FINALLY,
46
- excludeDisclosureSystems=DISCLOSURE_SYSTEM_2022,
47
- )
48
- def rule02_02(
49
- pluginData: PluginValidationDataExtension,
50
- val: ValidateXbrl,
51
- *args: Any,
52
- **kwargs: Any,
53
- ) -> Iterable[Validation]:
54
- if val.modelXbrl.relationshipSet(XbrlConst.summationItem):
55
- yield Validation.error(
56
- codes="XYZ.02.02",
57
- msg=_("XBRL 2.1 calculations detected. XYZ 2023 taxonomy requires calc 1.1."),
58
- modelObject=val.modelXbrl,
59
- )
@@ -1,9 +0,0 @@
1
- """
2
- See COPYRIGHT.md for copyright information.
3
- """
4
- from __future__ import annotations
5
-
6
-
7
- class CommentBase:
8
- def __init__(self, text: str) -> None:
9
- self._text = text
@@ -1,11 +0,0 @@
1
- """
2
- See COPYRIGHT.md for copyright information.
3
- """
4
- from __future__ import annotations
5
-
6
-
7
- class ElementBase:
8
- def __init__(self, *children: ElementBase, attrib: dict[str, str] | None = None, nsmap: dict[str, str] | None = None, **extra: str) -> None:
9
- self._children = children
10
- self._attrib = attrib if attrib is not None else {}
11
- self._nsmap = nsmap if nsmap is not None else {}
arelle/model/PIBase.py DELETED
@@ -1,10 +0,0 @@
1
- """
2
- See COPYRIGHT.md for copyright information.
3
- """
4
- from __future__ import annotations
5
-
6
-
7
- class PIBase:
8
- def __init__(self, target: str, text: str | None = None) -> None:
9
- self._target = target
10
- self._text = text if text is not None else ""
arelle/model/__init__.py DELETED
@@ -1,15 +0,0 @@
1
- """
2
- See COPYRIGHT.md for copyright information.
3
- """
4
- from arelle.BetaFeatures import newObjectModelEnabled
5
-
6
- # The if statement is negated here so that from mypy's perspective the types
7
- # inherit from the lxml object model until the new models are ready to be used.
8
- if not newObjectModelEnabled():
9
- from lxml.etree import CommentBase as CommentBase
10
- from lxml.etree import ElementBase as ElementBase
11
- from lxml.etree import PIBase as PIBase
12
- else:
13
- from .CommentBase import CommentBase
14
- from .ElementBase import ElementBase # type: ignore[assignment]
15
- from .PIBase import PIBase
@@ -1,3 +0,0 @@
1
- cd `dirname $0`
2
- ./Arelle.App/contents/MacOS/arelleCmdLine --webserver localhost:8080
3
- exit
@@ -1 +0,0 @@
1
- ./arelleCmdLine --webserver localhost:8080
@@ -1,5 +0,0 @@
1
- rem Start Arelle Web Server
2
-
3
- @set ARELLE=c:\Program Files\Arelle\arelleCmdLine.exe
4
-
5
- "%ARELLE%" --webserver localhost:8080