1010from typing import Any
1111
1212try :
13- from azure .identity import DefaultAzureCredential
14- from azure .storage .blob import BlobServiceClient
13+ from azure .identity import (
14+ DefaultAzureCredential , # type: ignore[reportAssignmentType]
15+ )
16+ from azure .storage .blob import (
17+ BlobServiceClient , # type: ignore[reportAssignmentType]
18+ )
1519
1620 _AZURE_AVAILABLE = True
1721except ImportError :
2125 class DefaultAzureCredential : # type: ignore
2226 """Dummy class when Azure is not available."""
2327
28+ def __init__ (self ): # type: ignore
29+ """Initialize dummy credential."""
30+
2431 class BlobServiceClient : # type: ignore
2532 """Dummy class when Azure is not available."""
2633
@@ -31,7 +38,7 @@ class BlobServiceClient: # type: ignore
3138class BlobWorkflowCallbacks (WorkflowHandlerBase ):
3239 """A workflow callback handler that writes to a blob storage account."""
3340
34- _blob_service_client : BlobServiceClient
41+ _blob_service_client : " BlobServiceClient"
3542 _container_name : str
3643 _max_block_count : int = 25000 # 25k blocks per blob
3744
@@ -62,29 +69,29 @@ def __init__(
6269 self ._storage_account_blob_url = storage_account_blob_url
6370
6471 if self ._connection_string :
65- self ._blob_service_client = BlobServiceClient .from_connection_string (
72+ self ._blob_service_client = BlobServiceClient .from_connection_string ( # type: ignore[reportAttributeAccessIssue,reportAssignmentType]
6673 self ._connection_string
6774 )
6875 else :
6976 if storage_account_blob_url is None :
7077 msg = "Either connection_string or storage_account_blob_url must be provided."
7178 raise ValueError (msg )
7279
73- self ._blob_service_client = BlobServiceClient (
74- storage_account_blob_url ,
75- credential = DefaultAzureCredential (),
80+ self ._blob_service_client = BlobServiceClient ( # type: ignore[reportCallIssue,reportAssignmentType]
81+ storage_account_blob_url , # type: ignore[reportCallIssue]
82+ credential = DefaultAzureCredential (), # type: ignore[reportCallIssue,reportAssignmentType]
7683 )
7784
7885 if blob_name == "" :
7986 blob_name = f"report/{ datetime .now (tz = timezone .utc ).strftime ('%Y-%m-%d-%H:%M:%S:%f' )} .logs.json"
8087
8188 self ._blob_name = str (Path (base_dir or "" ) / blob_name )
8289 self ._container_name = container_name
83- self ._blob_client = self ._blob_service_client .get_blob_client (
90+ self ._blob_client = self ._blob_service_client .get_blob_client ( # type: ignore[reportAttributeAccessIssue]
8491 self ._container_name , self ._blob_name
8592 )
86- if not self ._blob_client .exists ():
87- self ._blob_client .create_append_blob ()
93+ if not self ._blob_client .exists (): # type: ignore[reportAttributeAccessIssue]
94+ self ._blob_client .create_append_blob () # type: ignore[reportAttributeAccessIssue]
8895
8996 self ._num_blocks = 0 # refresh block counter
9097
@@ -98,12 +105,12 @@ def emit(self, record):
98105 }
99106
100107 # Add additional fields if they exist
101- if hasattr (record , "details" ) and record .details :
102- log_data ["details" ] = record .details
108+ if hasattr (record , "details" ) and record .details : # type: ignore[reportAttributeAccessIssue]
109+ log_data ["details" ] = record .details # type: ignore[reportAttributeAccessIssue]
103110 if record .exc_info and record .exc_info [1 ]:
104111 log_data ["cause" ] = str (record .exc_info [1 ])
105- if hasattr (record , "stack" ) and record .stack :
106- log_data ["stack" ] = record .stack
112+ if hasattr (record , "stack" ) and record .stack : # type: ignore[reportAttributeAccessIssue]
113+ log_data ["stack" ] = record .stack # type: ignore[reportAttributeAccessIssue]
107114
108115 self ._write_log (log_data )
109116 except (OSError , ValueError ):
@@ -129,10 +136,10 @@ def _write_log(self, log: dict[str, Any]):
129136 storage_account_blob_url = self ._storage_account_blob_url ,
130137 )
131138
132- blob_client = self ._blob_service_client .get_blob_client (
139+ blob_client = self ._blob_service_client .get_blob_client ( # type: ignore[reportAttributeAccessIssue]
133140 self ._container_name , self ._blob_name
134141 )
135- blob_client .append_block (json .dumps (log , indent = 4 , ensure_ascii = False ) + "\n " )
142+ blob_client .append_block (json .dumps (log , indent = 4 , ensure_ascii = False ) + "\n " ) # type: ignore[reportAttributeAccessIssue]
136143
137144 # update the blob's block count
138145 self ._num_blocks += 1
0 commit comments