csc-cia-stne 0.1.14__py3-none-any.whl → 0.1.16__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.
@@ -1,7 +1,7 @@
1
+ import base64
1
2
  from google.oauth2 import service_account
2
3
  from google.cloud import storage
3
4
  from pydantic import ValidationError
4
-
5
5
  from .utilitarios.validations.gcp_bucket import InitParamsValidator,ListFilesValidator,GetFilesValidator,UploadFilesValidator,DeleteFilesValidator
6
6
 
7
7
 
@@ -112,7 +112,7 @@ class GCPBucket():
112
112
  }
113
113
 
114
114
  # Função para baixar os arquivos de um bucket
115
- def get_file(self, bucket_name:str, filename:str, destination:str=None, chunksize:int=256) -> dict:
115
+ def get_file(self, bucket_name:str, filename:str, destination:str=None, chunksize:int=256, download_as:str='file') -> dict:
116
116
  """
117
117
  Faz o download de um arquivo de um bucket do Google Cloud Storage para um destino local.
118
118
  Args:
@@ -122,6 +122,7 @@ class GCPBucket():
122
122
  Se não for especificado, o arquivo será salvo com o mesmo nome do arquivo no bucket.
123
123
  chunksize (int, opcional): Tamanho do chunk em megabytes para o download do arquivo.
124
124
  O padrão é 256 MB.
125
+ download_as (str, opcional): Define o formato do download.
125
126
  Returns:
126
127
  dict: Um dicionário contendo o status da operação.
127
128
  - 'success' (bool): Indica se a operação foi bem-sucedida.
@@ -133,7 +134,7 @@ class GCPBucket():
133
134
 
134
135
  try:
135
136
 
136
- GetFilesValidator(bucket_name=bucket_name, filename=filename, destination=destination, chunksize=chunksize)
137
+ GetFilesValidator(bucket_name=bucket_name, filename=filename, destination=destination, chunksize=chunksize, download_as=download_as)
137
138
 
138
139
  except ValidationError as e:
139
140
 
@@ -144,7 +145,7 @@ class GCPBucket():
144
145
  destination = filename
145
146
 
146
147
  try:
147
-
148
+
148
149
  bucket = self.client.bucket(bucket_name)
149
150
 
150
151
  except Exception as e:
@@ -161,12 +162,20 @@ class GCPBucket():
161
162
 
162
163
  blob.chunk_size = chunksize * 1024 * 1024 # 256M
163
164
 
164
- blob.download_to_filename(destination)
165
+ if download_as == 'file':
166
+ blob.download_to_filename(destination)
167
+ return {
168
+ 'success':True,
169
+ 'details':f'Arquivo baixado para o diretório: {str(destination)}'
170
+ }
165
171
 
166
- return {
167
- 'success':True,
168
- 'details':f'Arquivo baixado para o diretório: {str(destination)}'
169
- }
172
+ elif download_as == 'bytes':
173
+ b64_str = base64.b64encode(blob.download_as_bytes()).decode()
174
+ return {
175
+ 'success':True,
176
+ 'details':f'Arquivo baixado como bytes em base64',
177
+ 'data': b64_str
178
+ }
170
179
 
171
180
  except Exception as e:
172
181
 
@@ -1,7 +1,9 @@
1
1
  from __future__ import annotations
2
- from pydantic import BaseModel, field_validator, model_validator, ValidationError
3
- from typing import Optional, Mapping, Any
2
+ from pydantic import BaseModel, field_validator, model_validator, ValidationError, Field, ConfigDict
3
+ from typing import Optional, Mapping, Any, Annotated
4
4
 
5
+ NonEmptyStr = Annotated[str, Field(min_length=1)]
6
+ PositiveInt = Annotated[int, Field(gt=0)]
5
7
 
6
8
  class InitParamsValidator(BaseModel):
7
9
  """
@@ -22,10 +24,6 @@ class InitParamsValidator(BaseModel):
22
24
  )
23
25
  return self
24
26
 
25
-
26
-
27
-
28
-
29
27
  class ListFilesValidator(BaseModel):
30
28
  """
31
29
  Classe ListFilesValidator
@@ -47,6 +45,23 @@ class ListFilesValidator(BaseModel):
47
45
  return value
48
46
 
49
47
  class GetFilesValidator(BaseModel):
48
+
49
+ model_config = ConfigDict(strict=True) # não faz coerção: "1024" não vira 1024
50
+
51
+ bucket_name: NonEmptyStr
52
+ filename: NonEmptyStr
53
+ destination: NonEmptyStr
54
+ chunksize: PositiveInt
55
+ download_as: NonEmptyStr = 'file' # 'file' ou 'bytes'
56
+
57
+ # Opcional: se você quiser mensagens personalizadas além das do Field
58
+ @field_validator("bucket_name", "filename", "destination", "download_as")
59
+ def _not_blank(cls, v, info):
60
+ if not v.strip():
61
+ raise ValueError(f"O parametro '{info.field_name}' não pode ser vazio/whitespace.")
62
+ return v
63
+
64
+ class _GetFilesValidator(BaseModel):
50
65
  """
51
66
  Classe GetFilesValidator
52
67
  Valida os parâmetros necessários para operações relacionadas a arquivos em um bucket GCP.
@@ -131,6 +146,7 @@ class UploadFilesValidator(BaseModel):
131
146
  f"O parametro '{info.field_name}' deve ser uma string não vazia; recebido {type(value)}"
132
147
  )
133
148
  return value.strip()
149
+
134
150
  class DeleteFilesValidator(BaseModel):
135
151
  """
136
152
  Classe DeleteFilesValidator
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csc_cia_stne
3
- Version: 0.1.14
3
+ Version: 0.1.16
4
4
  Summary: Biblioteca do time CSC-CIA utilizada no desenvolvimento de RPAs
5
5
  License: MIT
6
6
  Keywords: karavela,csc,cia,stone,rpa,botcity,stne
@@ -4,7 +4,7 @@ csc_cia_stne/bc_sta.py,sha256=sE-aU-ZVSAqryQrT1-nor9eAFM5npNAKF1QSm-ChhGU,28945
4
4
  csc_cia_stne/email.py,sha256=y4xyPAe6_Mga5Wf6qAsDzYgn0f-zf2KshfItlWe58z8,8481
5
5
  csc_cia_stne/ftp.py,sha256=M9WCaq2hm56jGyszNaPinliFaZS0BNrT7VrVPMjkMg4,10988
6
6
  csc_cia_stne/gcp_bigquery.py,sha256=foq8azvvv_f7uikMDslX9RcUIrx7RAS-Sn0AGW0QFQc,7231
7
- csc_cia_stne/gcp_bucket.py,sha256=_Q3LS3Uy9tyi6LFHBedu38S1GS2CrI5iJCxRLu0rNaU,11007
7
+ csc_cia_stne/gcp_bucket.py,sha256=vMALWiW7IoBCuJAR8bUCpOV6BuBzI9AhRRk3b72OdMk,11515
8
8
  csc_cia_stne/google_drive.py,sha256=j1fvHpgU76_VqCtSEe05JXLOgNwNNfrP6GRKq6eU4b4,17074
9
9
  csc_cia_stne/karavela.py,sha256=jJCYX43D49gGuzmwwK6bN9XVnv2dXdp9iHnnV5H1LMQ,4794
10
10
  csc_cia_stne/logger_json.py,sha256=CXxSCOFGMymDi8XE9SKnPKjW4D0wJLqDLnxqePS26i8,3187
@@ -31,15 +31,15 @@ csc_cia_stne/utilitarios/validations/GoogleDriveValidator.py,sha256=Q1oZTae4hDJ2
31
31
  csc_cia_stne/utilitarios/validations/ServiceNowValidator.py,sha256=yleKUIo1ZfyloP9fDPNjv3JJXdLcocT81WIgRSYmqEA,14423
32
32
  csc_cia_stne/utilitarios/validations/__init__.py,sha256=O_qyEU2ji3u6LHUXZCXvUFsMpoMWL625qqHTXyXivTA,106
33
33
  csc_cia_stne/utilitarios/validations/ftp.py,sha256=LNYyS2c8eou3ML23bBtn87xJFIKSrb8w-2acG0Zugog,4988
34
- csc_cia_stne/utilitarios/validations/gcp_bucket.py,sha256=E94UCoph9FPo0y2y6UnGOO-zqJFfaHqRAXHWXee7FtM,6229
34
+ csc_cia_stne/utilitarios/validations/gcp_bucket.py,sha256=aDwytjpur6vDKGDMzrqtzDi4bclQ-ahiXuURhmDYZpk,6979
35
35
  csc_cia_stne/utilitarios/validations/waccess.py,sha256=8yfOrmIPUSLzbCt6P0F6vj3FkSgU_RgrJpJlRhlLyV0,7352
36
36
  csc_cia_stne/utilitarios/validations/web_validator.py,sha256=HYKYSpDv1RvRjZIuwTPt-AbEz-9392MxM_O329iYuSA,5722
37
37
  csc_cia_stne/utilitarios/web_screen/__init__.py,sha256=5QcOPXKd95SvP2DoZiHS0gaU68GlyFD9pQ9kae_9D1Q,100
38
38
  csc_cia_stne/utilitarios/web_screen/web_screen_abstract.py,sha256=PjL8Vgfj_JdKidia7RFyCkro3avYLQu4RZRos41sh3w,3241
39
39
  csc_cia_stne/utilitarios/web_screen/web_screen_botcity.py,sha256=Xi5YJjl2pcxlX3OimqcBWRNXZEpAE7asyUjDJ4Oho5U,12297
40
40
  csc_cia_stne/utilitarios/web_screen/web_screen_selenium.py,sha256=JLIcPJE9ZX3Pd6zG6oTRMqqUAY063UzLY3ReRlxmiSM,15581
41
- csc_cia_stne-0.1.14.dist-info/licenses/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
42
- csc_cia_stne-0.1.14.dist-info/METADATA,sha256=Pb4ndmVY2lwJTOZG-E2TyvZemsu4RwDTsQQrPhCPaPo,1464
43
- csc_cia_stne-0.1.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
- csc_cia_stne-0.1.14.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
45
- csc_cia_stne-0.1.14.dist-info/RECORD,,
41
+ csc_cia_stne-0.1.16.dist-info/licenses/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
42
+ csc_cia_stne-0.1.16.dist-info/METADATA,sha256=Namt43MLWsc_Ebf_VhYyrjRLBkUVc8XGDi7HsYzYfJ8,1464
43
+ csc_cia_stne-0.1.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
+ csc_cia_stne-0.1.16.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
45
+ csc_cia_stne-0.1.16.dist-info/RECORD,,