pangea-sdk 6.1.0__py3-none-any.whl → 6.2.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.
Files changed (51) hide show
  1. pangea/__init__.py +9 -1
  2. pangea/asyncio/__init__.py +1 -0
  3. pangea/asyncio/file_uploader.py +4 -2
  4. pangea/asyncio/request.py +53 -18
  5. pangea/asyncio/services/__init__.py +2 -0
  6. pangea/asyncio/services/ai_guard.py +9 -12
  7. pangea/asyncio/services/audit.py +12 -7
  8. pangea/asyncio/services/authn.py +36 -25
  9. pangea/asyncio/services/authz.py +6 -6
  10. pangea/asyncio/services/base.py +4 -0
  11. pangea/asyncio/services/file_scan.py +8 -2
  12. pangea/asyncio/services/intel.py +26 -28
  13. pangea/asyncio/services/redact.py +7 -3
  14. pangea/asyncio/services/sanitize.py +5 -1
  15. pangea/asyncio/services/share.py +5 -1
  16. pangea/asyncio/services/vault.py +19 -15
  17. pangea/audit_logger.py +3 -1
  18. pangea/deep_verify.py +13 -13
  19. pangea/deprecated.py +1 -1
  20. pangea/dump_audit.py +2 -3
  21. pangea/exceptions.py +8 -5
  22. pangea/file_uploader.py +4 -0
  23. pangea/request.py +64 -48
  24. pangea/response.py +21 -18
  25. pangea/services/__init__.py +2 -0
  26. pangea/services/ai_guard.py +35 -24
  27. pangea/services/audit/audit.py +16 -13
  28. pangea/services/audit/models.py +71 -34
  29. pangea/services/audit/signing.py +1 -1
  30. pangea/services/audit/util.py +10 -10
  31. pangea/services/authn/authn.py +36 -25
  32. pangea/services/authn/models.py +10 -56
  33. pangea/services/authz.py +10 -6
  34. pangea/services/base.py +7 -4
  35. pangea/services/embargo.py +6 -0
  36. pangea/services/file_scan.py +8 -2
  37. pangea/services/intel.py +36 -19
  38. pangea/services/redact.py +7 -3
  39. pangea/services/sanitize.py +5 -1
  40. pangea/services/share/share.py +13 -7
  41. pangea/services/vault/models/asymmetric.py +4 -0
  42. pangea/services/vault/models/common.py +4 -0
  43. pangea/services/vault/models/symmetric.py +4 -0
  44. pangea/services/vault/vault.py +17 -19
  45. pangea/tools.py +13 -9
  46. pangea/utils.py +3 -5
  47. pangea/verify_audit.py +23 -27
  48. {pangea_sdk-6.1.0.dist-info → pangea_sdk-6.2.0.dist-info}/METADATA +36 -17
  49. pangea_sdk-6.2.0.dist-info/RECORD +60 -0
  50. {pangea_sdk-6.1.0.dist-info → pangea_sdk-6.2.0.dist-info}/WHEEL +1 -1
  51. pangea_sdk-6.1.0.dist-info/RECORD +0 -60
pangea/verify_audit.py CHANGED
@@ -9,14 +9,16 @@ You can provide a single event (obtained from the PUC) or the result from a sear
9
9
  In the latter case, all the events are verified.
10
10
  """
11
11
 
12
+ from __future__ import annotations
13
+
12
14
  import argparse
13
15
  import json
14
16
  import logging
15
17
  import os
16
18
  import sys
17
- from collections.abc import Set
19
+ from collections.abc import Iterable, Set
18
20
  from enum import Enum
19
- from typing import Dict, Iterable, List, Optional, Union
21
+ from typing import Optional, Union
20
22
 
21
23
  from pangea.config import PangeaConfig
22
24
  from pangea.exceptions import TreeNotFoundException
@@ -36,8 +38,8 @@ from pangea.services.audit.util import (
36
38
  )
37
39
 
38
40
  logger = logging.getLogger("audit")
39
- arweave_roots: Dict[int, PublishedRoot] = {} # roots fetched from Arweave
40
- pangea_roots: Dict[int, Root] = {} # roots fetched from Pangea
41
+ arweave_roots: dict[int, PublishedRoot] = {} # roots fetched from Arweave
42
+ pangea_roots: dict[int, Root] = {} # roots fetched from Pangea
41
43
  audit: Optional[Audit] = None
42
44
 
43
45
 
@@ -72,10 +74,7 @@ class VerifierLogFormatter(logging.Formatter):
72
74
  self.in_section = True
73
75
  return f"{' ' * self.indent}⎾ {record.msg}"
74
76
  else:
75
- if self.in_section:
76
- pre = f"{' ' * (self.indent+4)}⌲ "
77
- else:
78
- pre = ""
77
+ pre = f"{' ' * (self.indent + 4)}⌲ " if self.in_section else ""
79
78
  return f"{pre}{record.msg}"
80
79
 
81
80
 
@@ -100,8 +99,8 @@ formatter = VerifierLogFormatter()
100
99
  InvalidTokenError = ValueError("Invalid Pangea Token provided")
101
100
 
102
101
 
103
- def get_pangea_roots(tree_name: str, tree_sizes: Iterable[int]) -> Dict[int, Root]:
104
- ans: Dict[int, Root] = {}
102
+ def get_pangea_roots(tree_name: str, tree_sizes: Iterable[int]) -> dict[int, Root]:
103
+ ans: dict[int, Root] = {}
105
104
  if audit is None:
106
105
  return ans
107
106
 
@@ -125,7 +124,7 @@ def get_pangea_roots(tree_name: str, tree_sizes: Iterable[int]) -> Dict[int, Roo
125
124
  return ans
126
125
 
127
126
 
128
- def _verify_hash(data: Dict, data_hash: str) -> Status:
127
+ def _verify_hash(data: dict, data_hash: str) -> Status:
129
128
  log_section("Checking data hash")
130
129
  status = Status.SKIPPED
131
130
  try:
@@ -213,7 +212,7 @@ def _fetch_roots(tree_name: str, tree_size: int, leaf_index: Optional[int]) -> S
213
212
  logger.debug(f"Fetching root(s) {comma_sep(pending_roots)} from Arweave")
214
213
  arweave_roots |= {int(k): v for k, v in get_arweave_published_roots(tree_name, pending_roots).items()}
215
214
  update_pending_roots()
216
- except:
215
+ except: # noqa: E722
217
216
  pass
218
217
 
219
218
  if pending_roots:
@@ -227,7 +226,7 @@ def _fetch_roots(tree_name: str, tree_size: int, leaf_index: Optional[int]) -> S
227
226
  pangea_roots |= {int(k): v for k, v in get_pangea_roots(tree_name, pending_roots).items()}
228
227
  update_pending_roots()
229
228
  status = Status.SUCCEEDED_PANGEA
230
- except:
229
+ except: # noqa: E722
231
230
  pass
232
231
 
233
232
  if pending_roots:
@@ -244,7 +243,7 @@ def _fetch_roots(tree_name: str, tree_size: int, leaf_index: Optional[int]) -> S
244
243
 
245
244
 
246
245
  def _verify_membership_proof(tree_size: int, node_hash: str, proof: Optional[str]) -> Status:
247
- pub_roots: Dict[int, Union[Root, PublishedRoot]] = arweave_roots | pangea_roots
246
+ pub_roots: dict[int, Union[Root, PublishedRoot]] = arweave_roots | pangea_roots
248
247
 
249
248
  log_section("Checking membership proof")
250
249
 
@@ -277,7 +276,7 @@ def _verify_membership_proof(tree_size: int, node_hash: str, proof: Optional[str
277
276
  return status
278
277
 
279
278
 
280
- def _consistency_proof_ok(pub_roots: Dict[int, Union[Root, PublishedRoot]], leaf_index: int) -> bool:
279
+ def _consistency_proof_ok(pub_roots: dict[int, Union[Root, PublishedRoot]], leaf_index: int) -> bool:
281
280
  """returns true if a consistency proof is correct"""
282
281
 
283
282
  curr_root = pub_roots[leaf_index + 1]
@@ -296,7 +295,7 @@ def _consistency_proof_ok(pub_roots: Dict[int, Union[Root, PublishedRoot]], leaf
296
295
  # Due to an (already fixed) bug, some proofs from Arweave may be wrong.
297
296
  # Try the proof from Pangea instead. If the root hash in both Arweave and Pangea is the same,
298
297
  # it doesn't matter where the proof came from.
299
- def _fix_consistency_proof(pub_roots: Dict[int, Union[Root, PublishedRoot]], tree_name: str, leaf_index: int):
298
+ def _fix_consistency_proof(pub_roots: dict[int, Union[Root, PublishedRoot]], tree_name: str, leaf_index: int):
300
299
  logger.debug("Consistency proof from Arweave failed to verify")
301
300
  size = leaf_index + 1
302
301
  logger.debug(f"Fetching root from Pangea for size {size}")
@@ -305,13 +304,13 @@ def _fix_consistency_proof(pub_roots: Dict[int, Union[Root, PublishedRoot]], tre
305
304
  raise ValueError("Error fetching root from Pangea")
306
305
  pangea_roots[size] = new_roots[size]
307
306
  pub_roots[size] = pangea_roots[size]
308
- logger.debug(f"Comparing Arweave root hash with Pangea root hash")
307
+ logger.debug("Comparing Arweave root hash with Pangea root hash")
309
308
  if pangea_roots[size].root_hash != arweave_roots[size].root_hash:
310
309
  raise ValueError("Hash does not match")
311
310
 
312
311
 
313
312
  def _verify_consistency_proof(tree_name: str, leaf_index: Optional[int]) -> Status:
314
- pub_roots: Dict[int, Union[Root, PublishedRoot]] = arweave_roots | pangea_roots
313
+ pub_roots: dict[int, Union[Root, PublishedRoot]] = arweave_roots | pangea_roots
315
314
 
316
315
  log_section("Checking consistency proof")
317
316
 
@@ -336,10 +335,7 @@ def _verify_consistency_proof(tree_name: str, leaf_index: Optional[int]) -> Stat
336
335
  _fix_consistency_proof(pub_roots, tree_name, leaf_index)
337
336
 
338
337
  # check again
339
- if _consistency_proof_ok(pub_roots, leaf_index):
340
- status = Status.SUCCEEDED
341
- else:
342
- status = Status.FAILED
338
+ status = Status.SUCCEEDED if _consistency_proof_ok(pub_roots, leaf_index) else Status.FAILED
343
339
 
344
340
  else:
345
341
  logger.debug(
@@ -356,11 +352,11 @@ def _verify_consistency_proof(tree_name: str, leaf_index: Optional[int]) -> Stat
356
352
  return status
357
353
 
358
354
 
359
- def create_signed_event(event: Dict) -> Dict:
355
+ def create_signed_event(event: dict) -> dict:
360
356
  return {k: v for k, v in event.items() if v is not None}
361
357
 
362
358
 
363
- def _verify_signature(data: Dict) -> Status:
359
+ def _verify_signature(data: dict) -> Status:
364
360
  log_section("Checking signature")
365
361
  if "signature" not in data:
366
362
  logger.debug("Signature is not present")
@@ -383,13 +379,13 @@ def _verify_signature(data: Dict) -> Status:
383
379
  return status
384
380
 
385
381
 
386
- def verify_multiple(root: Dict, unpublished_root: Dict, events: List[Dict]) -> Status:
382
+ def verify_multiple(root: dict, unpublished_root: dict, events: list[dict]) -> Status:
387
383
  """
388
384
  Verify a list of events.
389
385
  Returns a status.
390
386
  """
391
387
 
392
- statuses: List[Status] = []
388
+ statuses: list[Status] = []
393
389
  for counter, event in enumerate(events):
394
390
  event.update({"root": root, "unpublished_root": unpublished_root})
395
391
  event_status = verify_single(event, counter + 1)
@@ -403,7 +399,7 @@ def verify_multiple(root: Dict, unpublished_root: Dict, events: List[Dict]) -> S
403
399
  return Status.SUCCEEDED
404
400
 
405
401
 
406
- def verify_single(data: Dict, counter: Optional[int] = None) -> Status:
402
+ def verify_single(data: dict, counter: Optional[int] = None) -> Status:
407
403
  """
408
404
  Verify a single event.
409
405
  Returns a status.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pangea-sdk
3
- Version: 6.1.0
3
+ Version: 6.2.0
4
4
  Summary: Pangea API SDK
5
5
  License: MIT
6
6
  Keywords: Pangea,SDK,Audit
@@ -9,16 +9,16 @@ Author-email: glenn.gallien@pangea.cloud
9
9
  Requires-Python: >=3.9.2,<4.0.0
10
10
  Classifier: Topic :: Software Development
11
11
  Classifier: Topic :: Software Development :: Libraries
12
- Requires-Dist: aiohttp (>=3.11.16,<4.0.0)
13
- Requires-Dist: cryptography (>=44.0.2,<44.0.3)
12
+ Requires-Dist: aiohttp (>=3.12.13,<4.0.0)
13
+ Requires-Dist: cryptography (>=45.0.4,<46.0.0)
14
14
  Requires-Dist: deprecated (>=1.2.18,<2.0.0)
15
15
  Requires-Dist: google-crc32c (>=1.7.1,<2.0.0)
16
- Requires-Dist: pydantic (>=2.11.3,<3.0.0)
16
+ Requires-Dist: pydantic (>=2.11.7,<3.0.0)
17
17
  Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
18
- Requires-Dist: requests (>=2.32.3,<3.0.0)
18
+ Requires-Dist: requests (>=2.32.4,<3.0.0)
19
19
  Requires-Dist: requests-toolbelt (>=1.0.0,<2.0.0)
20
- Requires-Dist: typing-extensions (>=4.13.2,<5.0.0)
21
- Requires-Dist: yarl (>=1.20.0,<2.0.0)
20
+ Requires-Dist: typing-extensions (>=4.14.0,<5.0.0)
21
+ Requires-Dist: yarl (>=1.20.1,<2.0.0)
22
22
  Description-Content-Type: text/markdown
23
23
 
24
24
  <a href="https://pangea.cloud?utm_source=github&utm_medium=python-sdk" target="_blank" rel="noopener noreferrer">
@@ -63,13 +63,13 @@ the same compatibility guarantees as stable releases.
63
63
  Via pip:
64
64
 
65
65
  ```bash
66
- $ pip3 install pangea-sdk==5.5.0b2
66
+ $ pip3 install pangea-sdk==6.2.0b2
67
67
  ```
68
68
 
69
69
  Via poetry:
70
70
 
71
71
  ```bash
72
- $ poetry add pangea-sdk==5.5.0b2
72
+ $ poetry add pangea-sdk==6.2.0b2
73
73
  ```
74
74
 
75
75
  ## Usage
@@ -102,6 +102,26 @@ audit = Audit(token, config)
102
102
  response = audit.log(message="Hello, World!")
103
103
  ```
104
104
 
105
+ ## Configuration
106
+
107
+ The SDK supports the following configuration options via `PangeaConfig`:
108
+
109
+ - `base_url_template` — Template for constructing the base URL for API requests.
110
+ The placeholder `{SERVICE_NAME}` will be replaced with the service name slug.
111
+ This is a more powerful version of `domain` that allows for setting more than
112
+ just the host of the API server. Defaults to
113
+ `https://{SERVICE_NAME}.aws.us.pangea.cloud`.
114
+ - `domain` — Base domain for API requests. This is a weaker version of
115
+ `base_url_template` that only allows for setting the host of the API server.
116
+ Use `base_url_template` for more control over the URL, such as setting
117
+ service-specific paths. Defaults to `aws.us.pangea.cloud`.
118
+ - `request_retries` — Number of retries on the initial request.
119
+ - `request_backoff` — Backoff strategy passed to 'requests'.
120
+ - `request_timeout` — Timeout used on initial request attempts.
121
+ - `poll_result_timeout` — Timeout used to poll results after 202 (in secs).
122
+ - `queued_retry_enabled` — Enable queued request retry support.
123
+ - `custom_user_agent` — Custom user agent to be used in the request headers.
124
+
105
125
  ## asyncio support
106
126
 
107
127
  asyncio support is available through the `pangea.asyncio.services` module. The
@@ -156,6 +176,7 @@ options:
156
176
  ```
157
177
 
158
178
  It accepts multiple file formats:
179
+
159
180
  - a Verification Artifact from the Pangea User Console
160
181
  - a search response from the REST API:
161
182
 
@@ -163,7 +184,6 @@ It accepts multiple file formats:
163
184
  $ curl -H "Authorization: Bearer ${PANGEA_TOKEN}" -X POST -H 'Content-Type: application/json' --data '{"verbose": true}' https://audit.aws.us.pangea.cloud/v1/search
164
185
  ```
165
186
 
166
-
167
187
  ### Bulk Download Audit Data
168
188
 
169
189
  Download all audit logs for a given time range. Start and end date should be provided,
@@ -213,15 +233,14 @@ options:
213
233
  ```
214
234
 
215
235
  It accepts multiple file formats:
236
+
216
237
  - a Verification Artifact from the Pangea User Console
217
238
  - a file generated by the `dump_audit` command
218
239
  - a search response from the REST API (see `verify_audit`)
219
240
 
220
-
221
-
222
- [Documentation]: https://pangea.cloud/docs/sdk/python/
223
- [GA Examples]: https://github.com/pangeacyber/pangea-python/tree/main/examples
224
- [Beta Examples]: https://github.com/pangeacyber/pangea-python/tree/beta/examples
225
- [Pangea Console]: https://console.pangea.cloud/
226
- [Secure Audit Log]: https://pangea.cloud/docs/audit
241
+ [Documentation]: https://pangea.cloud/docs/sdk/python/
242
+ [GA Examples]: https://github.com/pangeacyber/pangea-python/tree/main/examples
243
+ [Beta Examples]: https://github.com/pangeacyber/pangea-python/tree/beta/examples
244
+ [Pangea Console]: https://console.pangea.cloud/
245
+ [Secure Audit Log]: https://pangea.cloud/docs/audit
227
246
 
@@ -0,0 +1,60 @@
1
+ pangea/__init__.py,sha256=30dNDO2Z8iXabFhscMxSzEeTR37R7-K5pL8xODQkG0k,370
2
+ pangea/asyncio/__init__.py,sha256=TIiYYY-DR4X6d3rGBqpCBQkPMFkogzYLXYvi_RvmCEM,64
3
+ pangea/asyncio/file_uploader.py,sha256=FwR-p-Xgtmq3UDW6_ptRQLTL4_2AIzdaY358WjxwJBw,1436
4
+ pangea/asyncio/request.py,sha256=VX5e7xIUmtP8TBan6efiAcc9cCdXGUJOAYZN-mhgRqQ,19395
5
+ pangea/asyncio/services/__init__.py,sha256=m0nqw9_7mlachetzNxyJKZDOtEe2j2_UHFCELAE3Irg,484
6
+ pangea/asyncio/services/ai_guard.py,sha256=QaeiKZSn8aDuBPfEsF_KgUbkAtaaauSd_RTGBAbBU3g,6274
7
+ pangea/asyncio/services/audit.py,sha256=smZwzCKa37Wzo7yNqa-Rp7WCWNXXQCfjKA25PvxL8fo,26127
8
+ pangea/asyncio/services/authn.py,sha256=o9t5Jvn_p9LpwUy83KIzx5CSKKgAlNRwsNQZ8wl1Yz8,52407
9
+ pangea/asyncio/services/authz.py,sha256=3T0D97ACTx7RuGsopglm8G2Bg4GGNgvoAq3o8OP4lRc,9721
10
+ pangea/asyncio/services/base.py,sha256=ntvuwfyAuhyfrptlBg1NFViGlFb3tf9uqxnC1PiBX6U,3206
11
+ pangea/asyncio/services/embargo.py,sha256=ctzj3kip6xos-Eu3JuOskrCGYC8T3JlsgAopZHiPSXM,3068
12
+ pangea/asyncio/services/file_scan.py,sha256=OCKvrTZgsTCKA6P261PSRl4anWcU-CvDPtXfrTqAxgE,7210
13
+ pangea/asyncio/services/intel.py,sha256=SKDOye-b73SSmnvepuRQ_ej4on71uCeChtIfM0mcwTM,40193
14
+ pangea/asyncio/services/prompt_guard.py,sha256=NbYt-0tRtO5VH7kLmC1lJ5JSV-ztlb9dNFaKKs_fZUM,2553
15
+ pangea/asyncio/services/redact.py,sha256=356Kd5sww6wJsxA6DFIJvVEJle00n7HijdINb61YX9E,8014
16
+ pangea/asyncio/services/sanitize.py,sha256=OybTAUfh_7vYRwb6Cjp4aHZoeHhIlg8caJ_BVrdbA1A,8691
17
+ pangea/asyncio/services/share.py,sha256=AV9FbA-IMU5TFhcBtUHoXKDQYfOIWAJJZKW6vFohBbs,30816
18
+ pangea/asyncio/services/vault.py,sha256=CTdibBag9kAHV38eDPMwtgk0Ak-nX_R4MCzcki2JVag,77417
19
+ pangea/audit_logger.py,sha256=DOzL5oyXwaPlsuK6VRHXn_lPdNc4Z7LHGj78RArXs5A,3861
20
+ pangea/config.py,sha256=Z2WT_UG0qBQzzVzBfloXYFxS21mSg1YXQ36cAVCqrJk,1963
21
+ pangea/crypto/rsa.py,sha256=mwSiNy571KAGr3F6oEM0CXWkl9D023ch8ldbZZeLj_4,4747
22
+ pangea/deep_verify.py,sha256=Z8vnrxEiwa3hcTJO6ckZpdSerQHjtgnUUllaWTAMdwI,8637
23
+ pangea/deprecated.py,sha256=3yiM7WnSOHq55ROtJvhjiTDSmOEIa0B85YPctVfp-WU,597
24
+ pangea/dump_audit.py,sha256=b89jKV3ewy77WA_AzVMIT04_E1CUxTplj94IURJM7nc,7081
25
+ pangea/exceptions.py,sha256=EiH7NiNDyN69ZYlVikF8d1tAO3_Do0bKl8dFXghY8t0,5585
26
+ pangea/file_uploader.py,sha256=bDX9jZTw4h_gwFf9AjtfJYxQchLM2lVMgH93WhgCXsY,1275
27
+ pangea/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ pangea/request.py,sha256=g5kQiV_hB4A38FVQnPX5Y64Y-N9LePWnf7QiFbxleOw,25541
29
+ pangea/response.py,sha256=gE5m82v8BruKwGTMZlT_Krv1YwYAmp6dhpKnVWGZpWg,7597
30
+ pangea/services/__init__.py,sha256=CzgsgeO-wR4xTn7OUE2DhoIF4HoYQO-uA-yBhjNSF4g,428
31
+ pangea/services/ai_guard.py,sha256=bXf4hFFeNYvmdeiSwcDgAwgveTNwLXe5-KirOea3Qt0,15986
32
+ pangea/services/audit/audit.py,sha256=sBRghIhGscR46CxvWYN7FGHjZyqqtFOB4xH8CwxAsw4,39172
33
+ pangea/services/audit/exceptions.py,sha256=bhVuYe4ammacOVxwg98CChxvwZf5FKgR2DcgqILOcwc,471
34
+ pangea/services/audit/models.py,sha256=pE4jtYAn_c5JdPrXBfpKHwpRAqO_DTSCOy-QHkPMajw,15471
35
+ pangea/services/audit/signing.py,sha256=VsQkstQL1vxIdN2Ghxp4P-FLBpV_BIvDsBCkRAZQpk8,5593
36
+ pangea/services/audit/util.py,sha256=dna9AKodlJ-C_VAXFebMu2r57Fl1DdRWdb1SyG7VLpA,7651
37
+ pangea/services/authn/authn.py,sha256=rDoa182OKMAke7x63pJfoDyRqRyetODm594brpwHZk4,51328
38
+ pangea/services/authn/models.py,sha256=dSw9pfDlaxjgDERUgmmmdq0ZLOsuLvX-eENxnf1YpwA,23365
39
+ pangea/services/authz.py,sha256=difU7FcBKJoxg7-J8zW8gIRYoZnA0q3-dQcZsUbe5SA,14678
40
+ pangea/services/base.py,sha256=ShkR0elPiYPln323x4L4F_hGhjQ5fB0zpGZ9J4SLk4g,3835
41
+ pangea/services/embargo.py,sha256=3rE3ImjBg2VUXQljGZICedsr14psWdymC2pmmdJF2co,4000
42
+ pangea/services/file_scan.py,sha256=DzFYJyBrByWZHUQN8ll8OvzsynT8qegMzaEMXJfiP2Q,7934
43
+ pangea/services/intel.py,sha256=UronzgnzG5ZsmG9Km12Jw_at5bYAXoF-NqgYkH7WWfg,56958
44
+ pangea/services/prompt_guard.py,sha256=Cq8ume2_YPfHre4iN6FYkyTV7NrdwLXlr_wnilfKotE,3446
45
+ pangea/services/redact.py,sha256=LJMHPK8hDxPLEVNfRgESAWgL4GBMiJC_pr1wXGb79W8,13225
46
+ pangea/services/sanitize.py,sha256=0ZlCrEg8imJtRyovy4qZJb1ZAZ8ppIOQTj_nocBJ2CM,13019
47
+ pangea/services/share/file_format.py,sha256=1svO1ee_aenA9zoO_AaU-Rk5Ulp7kcPOc_KwNoluyQE,2797
48
+ pangea/services/share/share.py,sha256=IhTilqWcQ2GlsJ7kHHuVbXfNu8jvFtPBnEeM26SNsY8,52403
49
+ pangea/services/vault/models/asymmetric.py,sha256=F6JMd9BlYJZSjfhJRavqcadmQJAbcd5drezLLQ_ZJEs,5058
50
+ pangea/services/vault/models/common.py,sha256=h9Cn8rRTDO5VHOrYYk5nqYa1LV5I1Melmn8LT-RJwCM,18048
51
+ pangea/services/vault/models/keys.py,sha256=duAuTiOby_D7MloRvN4gNj0P-b-jx9sdtplAWFxsShw,2786
52
+ pangea/services/vault/models/secret.py,sha256=ItGdkulM-SEySfcm4a5yGxMvo_omjC7kChv6gdbFnn8,1142
53
+ pangea/services/vault/models/symmetric.py,sha256=VqJ_C3xj2e4OtnFiPyngX6_sOcXKFf1yhatSF9PmB90,2629
54
+ pangea/services/vault/vault.py,sha256=z_N_1RiKUn4rxWK0UId9omWOFlWY6lnlPCS1Oxskp-Y,76425
55
+ pangea/tools.py,sha256=JkwVplvx7MCPRSdPhFTLvOl6h7btaUbXEuHgUy0EHBU,6452
56
+ pangea/utils.py,sha256=QwTODI_D8by86uXeA0MpdhJICvz5baKUtfv1rguQshU,4943
57
+ pangea/verify_audit.py,sha256=-VepQKHtSqZRqhIKiUtLufa7ywwdMNLN2SuhingMooU,17288
58
+ pangea_sdk-6.2.0.dist-info/METADATA,sha256=VBhC4XnINIWTUJLELzlY1usyC3IpKQ61ziUnmks_C0E,8015
59
+ pangea_sdk-6.2.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
60
+ pangea_sdk-6.2.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.2
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,60 +0,0 @@
1
- pangea/__init__.py,sha256=SsSFodzFjA5wp7MeTcC2YDLJyt4DeR98QUsA7pVkhf0,246
2
- pangea/asyncio/__init__.py,sha256=kjEMkqMQ521LlMSu5jn3_WgweyArwVZ2C-s3x7mR6Pk,45
3
- pangea/asyncio/file_uploader.py,sha256=wI7epib7Rc5jtZw4eJ1L1SlmutDG6CPv59C8N2UPhtY,1436
4
- pangea/asyncio/request.py,sha256=lpLY-o405r3-VUfrAE5uxYxI8UjM4hjPqUzAUtOGE5o,18040
5
- pangea/asyncio/services/__init__.py,sha256=L6Tdhjfx_ZECHskhLMPaCcOefi-r-imw6q_zlU4j-FY,464
6
- pangea/asyncio/services/ai_guard.py,sha256=rFksT8LQkyioW3QOq4fLCEZbW5SXiYWpWjLbVovRouE,6294
7
- pangea/asyncio/services/audit.py,sha256=Ue3KDmTn-a2KsqlzxbakLQJAWiRyLaJrYVi1hO7a6sw,26030
8
- pangea/asyncio/services/authn.py,sha256=apa0kcxmSXH2ChJbTYVFvXTB4cn69cN9O7tW_jOXy_w,52100
9
- pangea/asyncio/services/authz.py,sha256=ocImj2g-P9wAo6CqAvZs7YR4wOTUAx0ZWmenKh6HwLk,9691
10
- pangea/asyncio/services/base.py,sha256=vRFVcO_uEAGJte3OUUBLD43RoiiFB1vC7SPyN6yEMoA,3158
11
- pangea/asyncio/services/embargo.py,sha256=ctzj3kip6xos-Eu3JuOskrCGYC8T3JlsgAopZHiPSXM,3068
12
- pangea/asyncio/services/file_scan.py,sha256=PLG1O-PL4Yk9uY9D6NbMrZ5LHg70Z311s7bFe46UMZA,7108
13
- pangea/asyncio/services/intel.py,sha256=BcxGKSoZ1nJiEHyZM9yOwKSSPJUrB6ibJ19KR27VlgQ,40261
14
- pangea/asyncio/services/prompt_guard.py,sha256=NbYt-0tRtO5VH7kLmC1lJ5JSV-ztlb9dNFaKKs_fZUM,2553
15
- pangea/asyncio/services/redact.py,sha256=JPJcmeKFloMZRpkjAHAZbpZJpO993WsTfEwA-S5ov18,7951
16
- pangea/asyncio/services/sanitize.py,sha256=EbSdq_v9yZWce9xEYWvZharE9bJcxw8cg5Pv8LVxdxc,8627
17
- pangea/asyncio/services/share.py,sha256=Qd2Oh4UsLwu7Zo4Xy1KABHuP4TJ9AtcN-XzldvilFVo,30773
18
- pangea/asyncio/services/vault.py,sha256=VqrJGSEdq6MlZRI6cJpkthhIsqLClSQdgVxwYCbIwEk,77079
19
- pangea/audit_logger.py,sha256=gRkCfUUT5LDNaycwxkhZUySgY47jDfn1ZeKOul4XCQI,3842
20
- pangea/config.py,sha256=Z2WT_UG0qBQzzVzBfloXYFxS21mSg1YXQ36cAVCqrJk,1963
21
- pangea/crypto/rsa.py,sha256=mwSiNy571KAGr3F6oEM0CXWkl9D023ch8ldbZZeLj_4,4747
22
- pangea/deep_verify.py,sha256=ZGraaL7TCxwRBIDqjBFR0clKlhAC-Yce6kD-1LClhG8,8616
23
- pangea/deprecated.py,sha256=IjFYEVvY1E0ld0SMkEYC1o62MAleX3nnT1If2dFVbHo,608
24
- pangea/dump_audit.py,sha256=IevqaUUh7GDepdIW7slSxeZbkPrWIVbcX3sr4DgpJXI,7090
25
- pangea/exceptions.py,sha256=OBtzUECpNa6vNp8ySkHC-tm4QjFRCOAHBkMHqzAlOu8,5656
26
- pangea/file_uploader.py,sha256=4RQ44xt-faApC61nn2PlwHT7XYrJ4GeQA8Ug4tySEAg,1227
27
- pangea/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- pangea/request.py,sha256=4ZVD1F3CS4XdLM45vfhlCazZ5NQF1jUzu4j31yjH3KE,24689
29
- pangea/response.py,sha256=lPAcYsF9Xg166CiyhCofVmQA-W4jevh0MQXxUa8Re68,7737
30
- pangea/services/__init__.py,sha256=h36HzyIGaI5kO6l3UCwKHx_Kd-m_9mYVwn5MLRVzblI,408
31
- pangea/services/ai_guard.py,sha256=X1DR1JTYZnLqBFFAHgmRk4xqyGF3GQMO1B3_cqLLVfU,15774
32
- pangea/services/audit/audit.py,sha256=TbDiO5eAHWCWAynQ4PChonTEN7z7ehZaR-duxbIFZ6Q,39068
33
- pangea/services/audit/exceptions.py,sha256=bhVuYe4ammacOVxwg98CChxvwZf5FKgR2DcgqILOcwc,471
34
- pangea/services/audit/models.py,sha256=1h1B9eSYQMYG3f8WNi1UcDX2-impRrET_ErjJYUnj7M,14678
35
- pangea/services/audit/signing.py,sha256=5A4hvPtpfP2kMz8bsiiKUACriXbh5dv9gb_rbqiUtuI,5583
36
- pangea/services/audit/util.py,sha256=Zq1qvfeplYfhCP_ud5YMvntSB0UvnCdsuYbOzZkHbjg,7620
37
- pangea/services/authn/authn.py,sha256=AkGyjGz5eHpMkxMn0F-xP94DCV7Ai88yaI4pSqAQ_qc,51021
38
- pangea/services/authn/models.py,sha256=EOoseAWVhr7Gy2HHqxqtvyUNimoi6OVc-x9OMxEeRX8,25253
39
- pangea/services/authz.py,sha256=fOPucOMdoYee5B4FXYgM8d6HHUeGg8QwiyTfKcD1JCk,14581
40
- pangea/services/base.py,sha256=43pWQcR9CeT4sGzgctF3Sy4M_h7DaUzkuZD2Z7CcDUU,3845
41
- pangea/services/embargo.py,sha256=9Wfku4td5ORaIENKmnGmS5jxJJIRfWp6Q51L36Jsy0I,3897
42
- pangea/services/file_scan.py,sha256=QiO80uKqB_BnAOiYQKznXfxpa5j40qqETE3-zBRT_QE,7813
43
- pangea/services/intel.py,sha256=y1EX2ctYIxQc52lmHp6-Q_UIDM--t3fOpXDssWiRPfo,56474
44
- pangea/services/prompt_guard.py,sha256=Cq8ume2_YPfHre4iN6FYkyTV7NrdwLXlr_wnilfKotE,3446
45
- pangea/services/redact.py,sha256=ZTZgx3w4X923ZjWcBpI4c0gVh9cpJpcUpWuTNVVuHeY,13143
46
- pangea/services/sanitize.py,sha256=eAN1HhObiKqygy6HHcfl0NmxYfPMvqSKepwEAVVIIEE,12936
47
- pangea/services/share/file_format.py,sha256=1svO1ee_aenA9zoO_AaU-Rk5Ulp7kcPOc_KwNoluyQE,2797
48
- pangea/services/share/share.py,sha256=hlhkIr6ScJ5oMFUs9no4HtHNoUEbYU4KoLkiGLxex30,52343
49
- pangea/services/vault/models/asymmetric.py,sha256=vspijmEvHm5WXri_fjOWfQc4maYyZfhDkLuaTM8-PZo,4991
50
- pangea/services/vault/models/common.py,sha256=PSZRFqHTUtEMJJGwywEFM2AU3aV8S-sbcoo3LLQ6uTc,17981
51
- pangea/services/vault/models/keys.py,sha256=duAuTiOby_D7MloRvN4gNj0P-b-jx9sdtplAWFxsShw,2786
52
- pangea/services/vault/models/secret.py,sha256=ItGdkulM-SEySfcm4a5yGxMvo_omjC7kChv6gdbFnn8,1142
53
- pangea/services/vault/models/symmetric.py,sha256=t8xCM1wGGKDBpOqTggFueO4-4-2IFmyxqcs7_PDr7U0,2562
54
- pangea/services/vault/vault.py,sha256=ow-Zm7PYzfWIfUcA4UNnpeL2DHfZM4C7inRDmNR3zQU,76196
55
- pangea/tools.py,sha256=icHduOfZLi02UYdGb5Xl1fQqu-PBRB4tiDPT_nL2Q8E,6380
56
- pangea/utils.py,sha256=dZ6MwFVEWXUgXvvDg-k6JnvVfsgslvtaBd7ez7afrqk,4983
57
- pangea/verify_audit.py,sha256=nSP17OzoSPdvezRExwfcf45H8ZPZnxZu-CbEp3qFJO0,17354
58
- pangea_sdk-6.1.0.dist-info/METADATA,sha256=PaLI_RGtc8TJeHm1gv4Mg7sYe8vK1zwEdDHVm_8hr1Y,6886
59
- pangea_sdk-6.1.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
60
- pangea_sdk-6.1.0.dist-info/RECORD,,