pangea-sdk 6.5.0b1__py3-none-any.whl → 6.6.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.
@@ -6,15 +6,12 @@
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- from collections.abc import Mapping, Sequence
10
- from typing import Dict, List, Literal, Optional, Union, cast, overload
11
-
12
- from pydantic import TypeAdapter
9
+ from typing import Dict, List, Optional, Union
13
10
 
14
11
  import pangea.services.redact as m
15
12
  from pangea.asyncio.services.base import ServiceBaseAsync
16
13
  from pangea.config import PangeaConfig
17
- from pangea.response import PangeaResponse, PangeaResponseResult
14
+ from pangea.response import PangeaResponse
18
15
 
19
16
 
20
17
  class RedactAsync(ServiceBaseAsync):
@@ -71,7 +68,7 @@ class RedactAsync(ServiceBaseAsync):
71
68
  rules: Optional[List[str]] = None,
72
69
  rulesets: Optional[List[str]] = None,
73
70
  return_result: Optional[bool] = None,
74
- redaction_method_overrides: Mapping[str, m.RedactionMethodOverrides] | None = None,
71
+ redaction_method_overrides: Optional[m.RedactionMethodOverrides] = None,
75
72
  llm_request: Optional[bool] = None,
76
73
  vault_parameters: Optional[m.VaultParameters] = None,
77
74
  ) -> PangeaResponse[m.RedactResult]:
@@ -126,7 +123,7 @@ class RedactAsync(ServiceBaseAsync):
126
123
  rules: Optional[List[str]] = None,
127
124
  rulesets: Optional[List[str]] = None,
128
125
  return_result: Optional[bool] = None,
129
- redaction_method_overrides: Mapping[str, m.RedactionMethodOverrides] | None = None,
126
+ redaction_method_overrides: Optional[m.RedactionMethodOverrides] = None,
130
127
  llm_request: bool | None = None,
131
128
  vault_parameters: m.VaultParameters | None = None,
132
129
  ) -> PangeaResponse[m.StructuredResult]:
@@ -207,261 +204,3 @@ class RedactAsync(ServiceBaseAsync):
207
204
  """
208
205
  input = m.UnredactRequest(redacted_data=redacted_data, fpe_context=fpe_context)
209
206
  return await self.request.post("v1/unredact", m.UnredactResult, data=input.model_dump(exclude_none=True))
210
-
211
- async def get_service_config(self, config_id: str) -> PangeaResponse[m.ServiceConfigResult]:
212
- """
213
- Get a service config.
214
-
215
-
216
- OperationId: redact_post_v1beta_config
217
- """
218
- response = await self.request.post("v1beta/config", PangeaResponseResult, data={"id": config_id})
219
- response.result = TypeAdapter(m.ServiceConfigResult).validate_python(response.json["result"])
220
- return cast(PangeaResponse[m.ServiceConfigResult], response)
221
-
222
- @overload
223
- async def create_service_config(
224
- self,
225
- name: str,
226
- *,
227
- version: Literal["1.0.0"],
228
- enabled_rules: Sequence[str] | None = None,
229
- redactions: Mapping[str, m.Redaction] | None = None,
230
- vault_service_config_id: str | None = None,
231
- salt_vault_secret_id: str | None = None,
232
- rules: Mapping[str, m.RuleV1] | None = None,
233
- rulesets: Mapping[str, m.RulesetV1] | None = None,
234
- supported_languages: Sequence[Literal["en"]] | None = None,
235
- ) -> PangeaResponse[m.ServiceConfigResult]:
236
- """
237
- Create a v1.0.0 service config.
238
-
239
- OperationId: redact_post_v1beta_config_create
240
-
241
- Args:
242
- vault_service_config_id: Service config used to create the secret
243
- salt_vault_secret_id: Pangea only allows hashing to be done using a salt value to prevent brute-force attacks.
244
- """
245
-
246
- @overload
247
- async def create_service_config(
248
- self,
249
- name: str,
250
- *,
251
- version: Literal["2.0.0"] | None = None,
252
- enabled_rules: Sequence[str] | None = None,
253
- enforce_enabled_rules: bool | None = None,
254
- redactions: Mapping[str, m.Redaction] | None = None,
255
- vault_service_config_id: str | None = None,
256
- salt_vault_secret_id: str | None = None,
257
- fpe_vault_secret_id: str | None = None,
258
- rules: Mapping[str, m.RuleV2] | None = None,
259
- rulesets: Mapping[str, m.RulesetV2] | None = None,
260
- supported_languages: Sequence[Literal["en"]] | None = None,
261
- ) -> PangeaResponse[m.ServiceConfigResult]:
262
- """
263
- Create a v2.0.0 service config.
264
-
265
- OperationId: redact_post_v1beta_config_create
266
-
267
- Args:
268
- enforce_enabled_rules: Always run service config enabled rules across all redact calls regardless of flags?
269
- vault_service_config_id: Service config used to create the secret
270
- salt_vault_secret_id: Pangea only allows hashing to be done using a salt value to prevent brute-force attacks.
271
- fpe_vault_secret_id: The ID of the key used by FF3 Encryption algorithms for FPE.
272
- """
273
-
274
- async def create_service_config(
275
- self,
276
- name: str,
277
- *,
278
- version: Literal["1.0.0", "2.0.0"] | None = None,
279
- enabled_rules: Sequence[str] | None = None,
280
- enforce_enabled_rules: bool | None = None,
281
- fpe_vault_secret_id: str | None = None,
282
- redactions: Mapping[str, m.Redaction] | None = None,
283
- rules: Mapping[str, m.RuleV1 | m.RuleV2] | None = None,
284
- rulesets: Mapping[str, m.RulesetV1 | m.RulesetV2] | None = None,
285
- salt_vault_secret_id: str | None = None,
286
- supported_languages: Sequence[Literal["en"]] | None = None,
287
- vault_service_config_id: str | None = None,
288
- ) -> PangeaResponse[m.ServiceConfigResult]:
289
- """
290
- Create a service config.
291
-
292
- OperationId: redact_post_v1beta_config_create
293
-
294
- Args:
295
- enforce_enabled_rules: Always run service config enabled rules across all redact calls regardless of flags?
296
- fpe_vault_secret_id: The ID of the key used by FF3 Encryption algorithms for FPE.
297
- salt_vault_secret_id: Pangea only allows hashing to be done using a salt value to prevent brute-force attacks.
298
- vault_service_config_id: Service config used to create the secret
299
- """
300
-
301
- response = await self.request.post(
302
- "v1beta/config/create",
303
- PangeaResponseResult,
304
- data={
305
- "name": name,
306
- "version": version,
307
- "enabled_rules": enabled_rules,
308
- "enforce_enabled_rules": enforce_enabled_rules,
309
- "fpe_vault_secret_id": fpe_vault_secret_id,
310
- "redactions": redactions,
311
- "rules": rules,
312
- "rulesets": rulesets,
313
- "salt_vault_secret_id": salt_vault_secret_id,
314
- "supported_languages": supported_languages,
315
- "vault_service_config_id": vault_service_config_id,
316
- },
317
- )
318
- response.result = TypeAdapter(m.ServiceConfigResult).validate_python(response.json["result"])
319
- return cast(PangeaResponse[m.ServiceConfigResult], response)
320
-
321
- @overload
322
- async def update_service_config(
323
- self,
324
- config_id: str,
325
- *,
326
- version: Literal["1.0.0"],
327
- name: str,
328
- updated_at: str,
329
- enabled_rules: Sequence[str] | None = None,
330
- redactions: Mapping[str, m.Redaction] | None = None,
331
- vault_service_config_id: str | None = None,
332
- salt_vault_secret_id: str | None = None,
333
- rules: Mapping[str, m.RuleV1] | None = None,
334
- rulesets: Mapping[str, m.RulesetV1] | None = None,
335
- supported_languages: Sequence[Literal["en"]] | None = None,
336
- ) -> PangeaResponse[m.ServiceConfigResult]:
337
- """
338
- Update a v1.0.0 service config.
339
-
340
- OperationId: redact_post_v1beta_config_update
341
-
342
- Args:
343
- vault_service_config_id: Service config used to create the secret
344
- salt_vault_secret_id: Pangea only allows hashing to be done using a salt value to prevent brute-force attacks.
345
- """
346
-
347
- @overload
348
- async def update_service_config(
349
- self,
350
- config_id: str,
351
- *,
352
- version: Literal["2.0.0"] | None = None,
353
- name: str,
354
- updated_at: str,
355
- enabled_rules: Sequence[str] | None = None,
356
- enforce_enabled_rules: bool | None = None,
357
- redactions: Mapping[str, m.Redaction] | None = None,
358
- vault_service_config_id: str | None = None,
359
- salt_vault_secret_id: str | None = None,
360
- fpe_vault_secret_id: str | None = None,
361
- rules: Mapping[str, m.RuleV2] | None = None,
362
- rulesets: Mapping[str, m.RulesetV2] | None = None,
363
- supported_languages: Sequence[Literal["en"]] | None = None,
364
- ) -> PangeaResponse[m.ServiceConfigResult]:
365
- """
366
- Update a v2.0.0 service config.
367
-
368
- OperationId: redact_post_v1beta_config_update
369
-
370
- Args:
371
- enforce_enabled_rules: Always run service config enabled rules across all redact calls regardless of flags?
372
- vault_service_config_id: Service config used to create the secret
373
- salt_vault_secret_id: Pangea only allows hashing to be done using a salt value to prevent brute-force attacks.
374
- fpe_vault_secret_id: The ID of the key used by FF3 Encryption algorithms for FPE.
375
- """
376
-
377
- async def update_service_config(
378
- self,
379
- config_id: str,
380
- *,
381
- version: Literal["1.0.0", "2.0.0"] | None = None,
382
- name: str,
383
- updated_at: str,
384
- enabled_rules: Sequence[str] | None = None,
385
- enforce_enabled_rules: bool | None = None,
386
- fpe_vault_secret_id: str | None = None,
387
- redactions: Mapping[str, m.Redaction] | None = None,
388
- rules: Mapping[str, m.RuleV1 | m.RuleV2] | None = None,
389
- rulesets: Mapping[str, m.RulesetV1 | m.RulesetV2] | None = None,
390
- salt_vault_secret_id: str | None = None,
391
- supported_languages: Sequence[Literal["en"]] | None = None,
392
- vault_service_config_id: str | None = None,
393
- ) -> PangeaResponse[m.ServiceConfigResult]:
394
- """
395
- Update a service config.
396
-
397
- OperationId: redact_post_v1beta_config_update
398
-
399
- Args:
400
- enforce_enabled_rules: Always run service config enabled rules across all redact calls regardless of flags?
401
- fpe_vault_secret_id: The ID of the key used by FF3 Encryption algorithms for FPE.
402
- salt_vault_secret_id: Pangea only allows hashing to be done using a salt value to prevent brute-force attacks.
403
- vault_service_config_id: Service config used to create the secret
404
- """
405
-
406
- response = await self.request.post(
407
- "v1beta/config/update",
408
- PangeaResponseResult,
409
- data={
410
- "id": config_id,
411
- "updated_at": updated_at,
412
- "name": name,
413
- "version": version,
414
- "enabled_rules": enabled_rules,
415
- "enforce_enabled_rules": enforce_enabled_rules,
416
- "fpe_vault_secret_id": fpe_vault_secret_id,
417
- "redactions": redactions,
418
- "rules": rules,
419
- "rulesets": rulesets,
420
- "salt_vault_secret_id": salt_vault_secret_id,
421
- "supported_languages": supported_languages,
422
- "vault_service_config_id": vault_service_config_id,
423
- },
424
- )
425
- response.result = TypeAdapter(m.ServiceConfigResult).validate_python(response.json["result"])
426
- return cast(PangeaResponse[m.ServiceConfigResult], response)
427
-
428
- async def delete_service_config(self, config_id: str) -> PangeaResponse[m.ServiceConfigResult]:
429
- """
430
- Delete a service config.
431
-
432
- OperationId: redact_post_v1beta_config_delete
433
-
434
- Args:
435
- config_id: An ID for a service config
436
- """
437
-
438
- response = await self.request.post("v1beta/config/delete", PangeaResponseResult, data={"id": config_id})
439
- response.result = TypeAdapter(m.ServiceConfigResult).validate_python(response.json["result"])
440
- return cast(PangeaResponse[m.ServiceConfigResult], response)
441
-
442
- async def list_service_configs(
443
- self,
444
- *,
445
- filter: m.ServiceConfigFilter | None = None,
446
- last: str | None = None,
447
- order: Literal["asc", "desc"] | None = None,
448
- order_by: Literal["id", "created_at", "updated_at"] | None = None,
449
- size: int | None = None,
450
- ) -> PangeaResponse[m.ServiceConfigListResult]:
451
- """
452
- List service configs.
453
-
454
- OperationId: redact_post_v1beta_config_list
455
-
456
- Args:
457
- last: Reflected value from a previous response to obtain the next page of results.
458
- order: Order results asc(ending) or desc(ending).
459
- order_by: Which field to order results by.
460
- size: Maximum results to include in the response.
461
- """
462
-
463
- return await self.request.post(
464
- "v1beta/config/list",
465
- m.ServiceConfigListResult,
466
- data={"filter": filter, "last": last, "order": order, "order_by": order_by, "size": size},
467
- )
pangea/config.py CHANGED
@@ -6,6 +6,8 @@ from typing import Any, Optional
6
6
 
7
7
  from pydantic import BaseModel, model_validator
8
8
 
9
+ __all__ = ("PangeaConfig",)
10
+
9
11
 
10
12
  class PangeaConfig(BaseModel):
11
13
  """Holds run time configuration information used by SDK components."""
@@ -34,12 +36,12 @@ class PangeaConfig(BaseModel):
34
36
 
35
37
  request_backoff: float = 0.5
36
38
  """
37
- Backoff strategy passed to 'requests'
39
+ A backoff factor to apply between request attempts.
38
40
  """
39
41
 
40
42
  request_timeout: int = 5
41
43
  """
42
- Timeout used on initial request attempts
44
+ Unused.
43
45
  """
44
46
 
45
47
  poll_result_timeout: int = 30
pangea/file_uploader.py CHANGED
@@ -8,9 +8,12 @@ import io
8
8
  import logging
9
9
  from typing import Dict, Optional
10
10
 
11
- from pangea.request import PangeaConfig, PangeaRequest
11
+ from pangea.config import PangeaConfig
12
+ from pangea.request import PangeaRequest
12
13
  from pangea.response import TransferMethod
13
14
 
15
+ __all__ = ("FileUploader",)
16
+
14
17
 
15
18
  class FileUploader:
16
19
  def __init__(self):