arelle-release 2.37.45__py3-none-any.whl → 2.37.46__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/ErrorManager.py CHANGED
@@ -13,7 +13,7 @@ from arelle import UrlUtil, XmlUtil, ModelValue, XbrlConst
13
13
  from arelle.FileSource import FileSource
14
14
  from arelle.Locale import format_string
15
15
  from arelle.ModelObject import ModelObject, ObjectPropertyViewWrapper
16
- from arelle.PluginManager import pluginClassMethods
16
+ from arelle.PluginManager import hasPluginWithHook, pluginClassMethods
17
17
  from arelle.PythonUtil import flattenSequence
18
18
 
19
19
  if TYPE_CHECKING:
@@ -26,10 +26,10 @@ EMPTY_TUPLE: EmptyTuple = ()
26
26
 
27
27
 
28
28
  class ErrorManager:
29
+ logHasRelevelerPlugin: bool | None
29
30
  _errorCaptureLevel: int
30
31
  _errors: list[str | None]
31
32
  _logCount: dict[str, int] = {}
32
- _logHasRelevelerPlugin: bool
33
33
  _logRefFileRelUris: defaultdict[Any, dict[str, str]]
34
34
  _modelManager: ModelManager
35
35
 
@@ -39,6 +39,7 @@ class ErrorManager:
39
39
  self._logCount = {}
40
40
  self._logRefFileRelUris = defaultdict(dict)
41
41
  self._modelManager = modelManager
42
+ self.logHasRelevelerPlugin = None
42
43
 
43
44
  @property
44
45
  def errors(self) -> list[str | None]:
@@ -111,7 +112,9 @@ class ErrorManager:
111
112
  if messageCode == "asrtNoLog":
112
113
  self._errors.append(args["assertionResults"])
113
114
  return
114
- if sourceModelXbrl is not None and any(True for m in pluginClassMethods("Logging.Severity.Releveler")):
115
+ if self.logHasRelevelerPlugin is None:
116
+ self.logHasRelevelerPlugin = hasPluginWithHook("Logging.Severity.Releveler")
117
+ if sourceModelXbrl is not None and self.logHasRelevelerPlugin:
115
118
  for pluginXbrlMethod in pluginClassMethods("Logging.Severity.Releveler"):
116
119
  level, messageCode = pluginXbrlMethod(sourceModelXbrl, level, messageCode, args) # args must be passed as dict because it may contain modelXbrl or messageCode key value
117
120
  if (messageCode and
@@ -157,10 +160,7 @@ class ErrorManager:
157
160
  fmtArgs: dict[str, LoggableValue] = {}
158
161
  extras: dict[str, Any] = {"messageCode":messageCode}
159
162
  modelObjectArgs: tuple[Any, ...] | list[Any] = ()
160
- sourceModelDocument = None
161
- if sourceModelXbrl is not None:
162
- sourceModelDocument = sourceModelXbrl.modelDocument
163
-
163
+ sourceModelDocument = getattr(sourceModelXbrl, "modelDocument", None)
164
164
  for argName, argValue in codedArgs.items():
165
165
  if argName in ("modelObject", "modelXbrl", "modelDocument"):
166
166
  if sourceModelDocument is not None:
arelle/PluginManager.py CHANGED
@@ -602,6 +602,10 @@ def loadModule(moduleInfo: dict[str, Any], packagePrefix: str="") -> None:
602
602
  logPluginTrace(_msg, logging.ERROR)
603
603
 
604
604
 
605
+ def hasPluginWithHook(name: str) -> bool:
606
+ return next(pluginClassMethods(name), None) is not None
607
+
608
+
605
609
  def pluginClassMethods(className: str) -> Iterator[Callable[..., Any]]:
606
610
  if pluginConfig:
607
611
  try:
arelle/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '2.37.45'
21
- __version_tuple__ = version_tuple = (2, 37, 45)
20
+ __version__ = version = '2.37.46'
21
+ __version_tuple__ = version_tuple = (2, 37, 46)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.45
3
+ Version: 2.37.46
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License-Expression: Apache-2.0
@@ -21,7 +21,7 @@ arelle/DialogRssWatch.py,sha256=mjc4pqyFDISY4tQtME0uSRQ3NlcWnNsOsMu9Zj8tTd0,1378
21
21
  arelle/DialogURL.py,sha256=JH88OPFf588E8RW90uMaieok7A_4kOAURQ8kHWVhnao,4354
22
22
  arelle/DialogUserPassword.py,sha256=kWPlCCihhwvsykDjanME9qBDtv6cxZlsrJyoMqiRep4,13769
23
23
  arelle/DisclosureSystem.py,sha256=mQlz8eezPpJuG6gHBV-x4-5Hne3LVh8TQf-Qm9jiFxI,24757
24
- arelle/ErrorManager.py,sha256=_E-kselWxG8tpCyh7J13x7U0-VUDLQIc8zo7VQajERc,15808
24
+ arelle/ErrorManager.py,sha256=z1Se8JmetoVXGy7gbAR_n4hqazSrJxCCC3WEHH1cRMo,15908
25
25
  arelle/FileSource.py,sha256=asaX2wM47T7S6kELwmXm-YjGIoV6poWz_YdYThY0lpk,47983
26
26
  arelle/FunctionCustom.py,sha256=d1FsBG14eykvpLpgaXpN8IdxnlG54dfGcsXPYfdpA9Q,5880
27
27
  arelle/FunctionFn.py,sha256=BcZKah1rpfquSVPwjvknM1pgFXOnK4Hr1e_ArG_mcJY,38058
@@ -53,7 +53,7 @@ arelle/ModelVersObject.py,sha256=cPD1IzhkCfuV1eMgVFWes88DH_6WkUj5kj7sgGF2M0I,260
53
53
  arelle/ModelVersReport.py,sha256=bXEA9K3qkH57aABn5l-m3CTY0FAcF1yX6O4fo-URjl8,73326
54
54
  arelle/ModelXbrl.py,sha256=w7x74hBV-Ub4gRQ-iT4lIC13KCxp699W2FJ-AO7cebw,60639
55
55
  arelle/PackageManager.py,sha256=BvPExMcxh8rHMxogOag-PGbX6vXdhCiXAHcDLA6Ypsc,32592
56
- arelle/PluginManager.py,sha256=foSgWvRI1Ret-6KVRQMFSv4RtpEf_0UB7468N_NjPGU,42116
56
+ arelle/PluginManager.py,sha256=Gnh7xmvyIQX2PyCwjDMFZVanCM9KW09I-x5x8YfDpJs,42220
57
57
  arelle/PluginUtils.py,sha256=0vFQ29wVVpU0cTY3YOBL6FhNQhhCTwShBH4qTJGLnvc,2426
58
58
  arelle/PrototypeDtsObject.py,sha256=0lf60VcXR_isx57hBPrc7vEMkFpYkVuK4JVBSmopzkQ,7989
59
59
  arelle/PrototypeInstanceObject.py,sha256=CXUoDllhDqpMvSQjqIYi1Ywp-J8fLhQRV9wVD2YXgVo,13204
@@ -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=PpZpsQ46i8_2AumMdLQ4lTPEnxAAp7fQNliASDQaahI,515
128
+ arelle/_version.py,sha256=ZgN-ogSNFWAQ504386PbDyZuKkBJ4dAt59Sr2FBIt5A,515
129
129
  arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
130
130
  arelle/api/Session.py,sha256=27HVuK3Bz1_21l4_RLn1IQg6v0MNsUEYrHajymyWwxI,7429
131
131
  arelle/archive/CustomLogger.py,sha256=v_JXOCQLDZcfaFWzxC9FRcEf9tQi4rCI4Sx7jCuAVQI,1231
@@ -763,9 +763,9 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
763
763
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
764
764
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
765
765
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
766
- arelle_release-2.37.45.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
767
- arelle_release-2.37.45.dist-info/METADATA,sha256=IzXpgdPmfhmjqvo9OBzx7jdAMDfjjO97Li1C29T5kw0,9137
768
- arelle_release-2.37.45.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
769
- arelle_release-2.37.45.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
770
- arelle_release-2.37.45.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
771
- arelle_release-2.37.45.dist-info/RECORD,,
766
+ arelle_release-2.37.46.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
767
+ arelle_release-2.37.46.dist-info/METADATA,sha256=ynsP2UuXS5p9fVY8x_U_8o8ZXrqi0CBjkZNDuDEH9M0,9137
768
+ arelle_release-2.37.46.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
769
+ arelle_release-2.37.46.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
770
+ arelle_release-2.37.46.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
771
+ arelle_release-2.37.46.dist-info/RECORD,,