1
1
"""Utilities for working with Azure blob storage"""
2
- import re
3
2
import io
3
+ import re
4
4
5
- from azure .storage .blob import BlobServiceClient
6
5
from azure .identity import EnvironmentCredential
6
+ from azure .storage .blob import BlobServiceClient
7
7
8
8
9
9
class AzureBlobStore :
@@ -20,7 +20,7 @@ class AzureBlobStore:
20
20
21
21
def _blob_service_client (self , account_name , sas_token = None ):
22
22
blob_service_client = BlobServiceClient (
23
- account_url = f" { account_name } .blob.core.windows.net" ,
23
+ account_url = f' { account_name } .blob.core.windows.net' ,
24
24
credential = sas_token or EnvironmentCredential (),
25
25
)
26
26
@@ -33,16 +33,16 @@ def _split_url(self, url):
33
33
abs://myaccount.blob.core.windows.net/sascontainer/sasblob.txt?sastoken
34
34
"""
35
35
match = re .match (
36
- r" abs://(.*)\.blob\.core\.windows\.net\/(.*?)\/([^\?]*)\??(.*)$" , url
36
+ r' abs://(.*)\.blob\.core\.windows\.net\/(.*?)\/([^\?]*)\??(.*)$' , url
37
37
)
38
38
if not match :
39
39
raise Exception (f"Invalid azure blob url '{ url } '" )
40
40
else :
41
41
params = {
42
- " account" : match .group (1 ),
43
- " container" : match .group (2 ),
44
- " blob" : match .group (3 ),
45
- " sas_token" : match .group (4 ),
42
+ ' account' : match .group (1 ),
43
+ ' container' : match .group (2 ),
44
+ ' blob' : match .group (3 ),
45
+ ' sas_token' : match .group (4 ),
46
46
}
47
47
return params
48
48
@@ -51,31 +51,31 @@ def read(self, url):
51
51
params = self ._split_url (url )
52
52
output_stream = io .BytesIO ()
53
53
blob_service_client = self ._blob_service_client (
54
- params [" account" ], params [" sas_token" ]
54
+ params [' account' ], params [' sas_token' ]
55
55
)
56
56
blob_client = blob_service_client .get_blob_client (
57
- params [" container" ], params [" blob" ]
57
+ params [' container' ], params [' blob' ]
58
58
)
59
59
blob_client .download_blob ().readinto (output_stream )
60
60
output_stream .seek (0 )
61
- return [line .decode (" utf-8" ) for line in output_stream ]
61
+ return [line .decode (' utf-8' ) for line in output_stream ]
62
62
63
63
def listdir (self , url ):
64
64
"""Returns a list of the files under the specified path"""
65
65
params = self ._split_url (url )
66
66
blob_service_client = self ._blob_service_client (
67
- params [" account" ], params [" sas_token" ]
67
+ params [' account' ], params [' sas_token' ]
68
68
)
69
- container_client = blob_service_client .get_container_client (params [" container" ])
70
- return list (container_client .list_blobs (params [" blob" ]))
69
+ container_client = blob_service_client .get_container_client (params [' container' ])
70
+ return list (container_client .list_blobs (params [' blob' ]))
71
71
72
72
def write (self , buf , url ):
73
73
"""Write buffer to storage at a given url"""
74
74
params = self ._split_url (url )
75
75
blob_service_client = self ._blob_service_client (
76
- params [" account" ], params [" sas_token" ]
76
+ params [' account' ], params [' sas_token' ]
77
77
)
78
78
blob_client = blob_service_client .get_blob_client (
79
- params [" container" ], params [" blob" ]
79
+ params [' container' ], params [' blob' ]
80
80
)
81
81
blob_client .upload_blob (data = buf , overwrite = True )
0 commit comments