pangea-sdk 6.1.1__py3-none-any.whl → 6.2.0b2__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 (54) 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 +199 -35
  5. pangea/asyncio/services/__init__.py +3 -0
  6. pangea/asyncio/services/ai_guard.py +91 -2
  7. pangea/asyncio/services/audit.py +307 -2
  8. pangea/asyncio/services/authn.py +12 -2
  9. pangea/asyncio/services/base.py +4 -0
  10. pangea/asyncio/services/file_scan.py +7 -1
  11. pangea/asyncio/services/intel.py +6 -2
  12. pangea/asyncio/services/management.py +576 -0
  13. pangea/asyncio/services/prompt_guard.py +112 -2
  14. pangea/asyncio/services/redact.py +269 -4
  15. pangea/asyncio/services/sanitize.py +5 -1
  16. pangea/asyncio/services/share.py +5 -1
  17. pangea/asyncio/services/vault.py +4 -0
  18. pangea/audit_logger.py +3 -1
  19. pangea/deep_verify.py +13 -13
  20. pangea/deprecated.py +1 -1
  21. pangea/dump_audit.py +2 -3
  22. pangea/exceptions.py +8 -5
  23. pangea/file_uploader.py +4 -0
  24. pangea/request.py +205 -52
  25. pangea/response.py +15 -12
  26. pangea/services/__init__.py +3 -0
  27. pangea/services/ai_guard.py +497 -16
  28. pangea/services/audit/audit.py +310 -8
  29. pangea/services/audit/models.py +279 -0
  30. pangea/services/audit/signing.py +1 -1
  31. pangea/services/audit/util.py +10 -10
  32. pangea/services/authn/authn.py +12 -2
  33. pangea/services/authn/models.py +3 -0
  34. pangea/services/authz.py +4 -0
  35. pangea/services/base.py +5 -1
  36. pangea/services/embargo.py +6 -0
  37. pangea/services/file_scan.py +7 -1
  38. pangea/services/intel.py +4 -0
  39. pangea/services/management.py +720 -0
  40. pangea/services/prompt_guard.py +193 -2
  41. pangea/services/redact.py +477 -7
  42. pangea/services/sanitize.py +5 -1
  43. pangea/services/share/share.py +13 -7
  44. pangea/services/vault/models/asymmetric.py +4 -0
  45. pangea/services/vault/models/common.py +4 -0
  46. pangea/services/vault/models/symmetric.py +4 -0
  47. pangea/services/vault/vault.py +2 -4
  48. pangea/tools.py +13 -9
  49. pangea/utils.py +3 -5
  50. pangea/verify_audit.py +23 -27
  51. {pangea_sdk-6.1.1.dist-info → pangea_sdk-6.2.0b2.dist-info}/METADATA +4 -4
  52. pangea_sdk-6.2.0b2.dist-info/RECORD +62 -0
  53. pangea_sdk-6.1.1.dist-info/RECORD +0 -60
  54. {pangea_sdk-6.1.1.dist-info → pangea_sdk-6.2.0b2.dist-info}/WHEEL +0 -0
pangea/tools.py CHANGED
@@ -1,5 +1,6 @@
1
1
  # Copyright 2022 Pangea Cyber Corporation
2
2
  # Author: Pangea Cyber Corporation
3
+ from __future__ import annotations
3
4
 
4
5
  import enum
5
6
  import io
@@ -7,9 +8,10 @@ import json
7
8
  import logging
8
9
  import os
9
10
  import sys
11
+ from collections.abc import Iterator
10
12
  from datetime import datetime, timezone
11
13
  from logging.handlers import TimedRotatingFileHandler
12
- from typing import Dict, Iterator, List, Optional
14
+ from typing import Optional
13
15
 
14
16
  from pangea.config import PangeaConfig
15
17
  from pangea.exceptions import PangeaException
@@ -17,6 +19,8 @@ from pangea.services import Audit
17
19
 
18
20
 
19
21
  class TestEnvironment(str, enum.Enum):
22
+ __test__ = False
23
+
20
24
  DEVELOP = "DEV"
21
25
  LIVE = "LVE"
22
26
  STAGING = "STG"
@@ -28,15 +32,15 @@ class TestEnvironment(str, enum.Enum):
28
32
  return str(self.value)
29
33
 
30
34
 
31
- class Root(Dict):
35
+ class Root(dict):
32
36
  size: int
33
37
  tree_name: str
34
38
 
35
39
 
36
- class Event(Dict):
40
+ class Event(dict):
37
41
  membership_proof: str
38
42
  leaf_index: Optional[int]
39
- event: Dict
43
+ event: dict
40
44
  hash: str
41
45
  tree_size: Optional[int]
42
46
 
@@ -68,7 +72,7 @@ def exit_with_error(message: str):
68
72
  sys.exit(1)
69
73
 
70
74
 
71
- def file_events(root_hashes: Dict[int, str], f: io.TextIOWrapper) -> Iterator[Event]:
75
+ def file_events(root_hashes: dict[int, str], f: io.TextIOWrapper) -> Iterator[Event]:
72
76
  """
73
77
  Reads a file containing Events in JSON format with the following fields:
74
78
  - membership_proof: str
@@ -111,8 +115,8 @@ def make_aware_datetime(d: datetime) -> datetime:
111
115
  return d
112
116
 
113
117
 
114
- def filter_deep_none(data: Dict) -> Dict:
115
- return {k: v if not isinstance(v, Dict) else filter_deep_none(v) for k, v in data.items() if v is not None}
118
+ def filter_deep_none(data: dict) -> dict:
119
+ return {k: v if not isinstance(v, dict) else filter_deep_none(v) for k, v in data.items() if v is not None}
116
120
 
117
121
 
118
122
  def _load_env_var(env_var_name: str) -> str:
@@ -183,7 +187,7 @@ class SequenceFollower:
183
187
  self.numbers.remove(min_val)
184
188
  min_val += 1
185
189
 
186
- def holes(self) -> List[int]:
190
+ def holes(self) -> list[int]:
187
191
  if not self.numbers:
188
192
  return []
189
193
 
@@ -192,7 +196,7 @@ class SequenceFollower:
192
196
  return [val for val in range(min_val, max_val) if val not in self.numbers]
193
197
 
194
198
 
195
- loggers: Dict[str, bool] = {}
199
+ loggers: dict[str, bool] = {}
196
200
 
197
201
 
198
202
  def logger_set_pangea_config(logger_name: str, level=logging.DEBUG):
pangea/utils.py CHANGED
@@ -60,7 +60,7 @@ def canonicalize(data: dict) -> str:
60
60
  return json.dumps(
61
61
  data, ensure_ascii=False, allow_nan=False, separators=(",", ":"), sort_keys=True, default=default_encoder
62
62
  )
63
- elif isinstance(data, datetime.datetime) or isinstance(data, datetime.date):
63
+ elif isinstance(data, (datetime.datetime, datetime.date)):
64
64
  return format_datetime(data)
65
65
  else:
66
66
  return str(data)
@@ -151,10 +151,8 @@ def get_crc32c(data: str) -> str:
151
151
 
152
152
 
153
153
  def hash_256_filepath(filepath: str) -> str:
154
- data = open(filepath, "rb")
155
- hash = sha256(data.read()).hexdigest()
156
- data.close()
157
- return hash
154
+ with open(filepath, "rb") as data:
155
+ return sha256(data.read()).hexdigest()
158
156
 
159
157
 
160
158
  def get_prefix(hash: str, len: int = 5):
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.1
3
+ Version: 6.2.0b2
4
4
  Summary: Pangea API SDK
5
5
  License: MIT
6
6
  Keywords: Pangea,SDK,Audit
@@ -10,7 +10,7 @@ Requires-Python: >=3.9.2,<4.0.0
10
10
  Classifier: Topic :: Software Development
11
11
  Classifier: Topic :: Software Development :: Libraries
12
12
  Requires-Dist: aiohttp (>=3.11.18,<4.0.0)
13
- Requires-Dist: cryptography (>=44.0.3,<44.0.4)
13
+ Requires-Dist: cryptography (>=45.0.2,<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
16
  Requires-Dist: pydantic (>=2.11.4,<3.0.0)
@@ -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
@@ -0,0 +1,62 @@
1
+ pangea/__init__.py,sha256=Z0Oh1E2jim94ZcLdnBpKol5ZXiY9NVGNhn6P0WwrKXE,375
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=9tUWOhr-2QHfnwFIYRCxWGQKT2CmXDOzm_52kZjLEpw,23273
5
+ pangea/asyncio/services/__init__.py,sha256=yBMNG1jQzNCjjhErNZ7douh-vJzwsUAHFUcAFA7DJw8,524
6
+ pangea/asyncio/services/ai_guard.py,sha256=0FQZ3Tc9DfvstcDT4o8NpItnXoEsDTwg5EVULv2Aa2E,9213
7
+ pangea/asyncio/services/audit.py,sha256=A40ewjj_KFh-49NNOKe-laoomq2ZEL5qu4A3t3OQlMA,39425
8
+ pangea/asyncio/services/authn.py,sha256=N7hmOe2sWOD_MCQGGCmy_HZLYDr5qMbR5VPywVrkREs,52355
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=2Sml4HQHZbtbvGwC9Bh1MHKzvjP_d4D_12NPl4SOLvw,40320
14
+ pangea/asyncio/services/management.py,sha256=YRAN5nkWhr1ahhVKtRuCYE0u0lEUD00EVSmTOmoAILc,20551
15
+ pangea/asyncio/services/prompt_guard.py,sha256=G-2z8GX51cTWkTIzJ4QD88EQSJRTBytULIxKv7xAd8U,6625
16
+ pangea/asyncio/services/redact.py,sha256=ZJIVQfFOZUzzWFdRXLYq11-VfyfA8yoEPb-DDiS45iI,18932
17
+ pangea/asyncio/services/sanitize.py,sha256=OybTAUfh_7vYRwb6Cjp4aHZoeHhIlg8caJ_BVrdbA1A,8691
18
+ pangea/asyncio/services/share.py,sha256=AV9FbA-IMU5TFhcBtUHoXKDQYfOIWAJJZKW6vFohBbs,30816
19
+ pangea/asyncio/services/vault.py,sha256=CTdibBag9kAHV38eDPMwtgk0Ak-nX_R4MCzcki2JVag,77417
20
+ pangea/audit_logger.py,sha256=DOzL5oyXwaPlsuK6VRHXn_lPdNc4Z7LHGj78RArXs5A,3861
21
+ pangea/config.py,sha256=Z2WT_UG0qBQzzVzBfloXYFxS21mSg1YXQ36cAVCqrJk,1963
22
+ pangea/crypto/rsa.py,sha256=mwSiNy571KAGr3F6oEM0CXWkl9D023ch8ldbZZeLj_4,4747
23
+ pangea/deep_verify.py,sha256=Z8vnrxEiwa3hcTJO6ckZpdSerQHjtgnUUllaWTAMdwI,8637
24
+ pangea/deprecated.py,sha256=3yiM7WnSOHq55ROtJvhjiTDSmOEIa0B85YPctVfp-WU,597
25
+ pangea/dump_audit.py,sha256=b89jKV3ewy77WA_AzVMIT04_E1CUxTplj94IURJM7nc,7081
26
+ pangea/exceptions.py,sha256=EiH7NiNDyN69ZYlVikF8d1tAO3_Do0bKl8dFXghY8t0,5585
27
+ pangea/file_uploader.py,sha256=bDX9jZTw4h_gwFf9AjtfJYxQchLM2lVMgH93WhgCXsY,1275
28
+ pangea/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ pangea/request.py,sha256=fPD6FbRfySwxP540SyA-YOF0NlcOcKcA3cWPT-YxzbY,29635
30
+ pangea/response.py,sha256=DIMn3BuD6nALn0vzQnW8mITDYyxKjsquY9RAkWdq1ds,7725
31
+ pangea/services/__init__.py,sha256=M5JK0OtyF6yVRHQS3wARAQroSFq0GdJN_B6R4fYsIhA,463
32
+ pangea/services/ai_guard.py,sha256=A9qIgd08TwHCAPF1eqlvHt7fk6hd63xMNtxH-u14jMg,30122
33
+ pangea/services/audit/audit.py,sha256=lBsXTnVJhL02CcJId9t0VKCCtm2N6E0m208aj21GrRs,52352
34
+ pangea/services/audit/exceptions.py,sha256=bhVuYe4ammacOVxwg98CChxvwZf5FKgR2DcgqILOcwc,471
35
+ pangea/services/audit/models.py,sha256=tycBH4oU9ImX-0z7XGi8ogFRtVtbHjrbXZ5coxEAYwA,23971
36
+ pangea/services/audit/signing.py,sha256=VsQkstQL1vxIdN2Ghxp4P-FLBpV_BIvDsBCkRAZQpk8,5593
37
+ pangea/services/audit/util.py,sha256=dna9AKodlJ-C_VAXFebMu2r57Fl1DdRWdb1SyG7VLpA,7651
38
+ pangea/services/authn/authn.py,sha256=Dp9e0077jhtWAFCEmtaApgOxaFbGcn5oo7uoKARUvRY,51276
39
+ pangea/services/authn/models.py,sha256=ipsDEyvjhEZQf4Uv_e0KDwbirYHBd91Z95f0vd2L0hc,25300
40
+ pangea/services/authz.py,sha256=difU7FcBKJoxg7-J8zW8gIRYoZnA0q3-dQcZsUbe5SA,14678
41
+ pangea/services/base.py,sha256=K49rD_dfmrtKUW0cQZ153SwGdgumjmsFK08YbayjN-k,3885
42
+ pangea/services/embargo.py,sha256=3rE3ImjBg2VUXQljGZICedsr14psWdymC2pmmdJF2co,4000
43
+ pangea/services/file_scan.py,sha256=DzFYJyBrByWZHUQN8ll8OvzsynT8qegMzaEMXJfiP2Q,7934
44
+ pangea/services/intel.py,sha256=5VpZh2uSqJAvwURHYvPr9dnDCM-RkYH8hByiiNwMd40,56541
45
+ pangea/services/management.py,sha256=HUM9_ocdO6JhY4DO3ZR_uH6NjWGec96T9YS-1Nn7lkI,24096
46
+ pangea/services/prompt_guard.py,sha256=61BbnIVgCaT2xS-VdciT00LFzB_WA_lVXBLmxnEQRN0,10031
47
+ pangea/services/redact.py,sha256=DnCe6YqQgIvZSckORSZE91Cccm6KO0yPC_K0aIAH01U,29760
48
+ pangea/services/sanitize.py,sha256=0ZlCrEg8imJtRyovy4qZJb1ZAZ8ppIOQTj_nocBJ2CM,13019
49
+ pangea/services/share/file_format.py,sha256=1svO1ee_aenA9zoO_AaU-Rk5Ulp7kcPOc_KwNoluyQE,2797
50
+ pangea/services/share/share.py,sha256=IhTilqWcQ2GlsJ7kHHuVbXfNu8jvFtPBnEeM26SNsY8,52403
51
+ pangea/services/vault/models/asymmetric.py,sha256=F6JMd9BlYJZSjfhJRavqcadmQJAbcd5drezLLQ_ZJEs,5058
52
+ pangea/services/vault/models/common.py,sha256=h9Cn8rRTDO5VHOrYYk5nqYa1LV5I1Melmn8LT-RJwCM,18048
53
+ pangea/services/vault/models/keys.py,sha256=duAuTiOby_D7MloRvN4gNj0P-b-jx9sdtplAWFxsShw,2786
54
+ pangea/services/vault/models/secret.py,sha256=ItGdkulM-SEySfcm4a5yGxMvo_omjC7kChv6gdbFnn8,1142
55
+ pangea/services/vault/models/symmetric.py,sha256=VqJ_C3xj2e4OtnFiPyngX6_sOcXKFf1yhatSF9PmB90,2629
56
+ pangea/services/vault/vault.py,sha256=z_N_1RiKUn4rxWK0UId9omWOFlWY6lnlPCS1Oxskp-Y,76425
57
+ pangea/tools.py,sha256=JkwVplvx7MCPRSdPhFTLvOl6h7btaUbXEuHgUy0EHBU,6452
58
+ pangea/utils.py,sha256=QwTODI_D8by86uXeA0MpdhJICvz5baKUtfv1rguQshU,4943
59
+ pangea/verify_audit.py,sha256=-VepQKHtSqZRqhIKiUtLufa7ywwdMNLN2SuhingMooU,17288
60
+ pangea_sdk-6.2.0b2.dist-info/METADATA,sha256=L3x4oC-m1DSrcTQ6JIRKkwd0Qfn70LRL68WNpc6bBzY,6888
61
+ pangea_sdk-6.2.0b2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
62
+ pangea_sdk-6.2.0b2.dist-info/RECORD,,
@@ -1,60 +0,0 @@
1
- pangea/__init__.py,sha256=4r063L50S_8ns4K9xQd4q4RNoY5giqoor2iJjA1M3Xo,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=TXBCCDHdjh9z0dWn21Jvj0itlBRzZzrJHarfx7fVAr4,18059
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=KPX_wTIidQRUEfek90owO5dCEc1m7OyxsSZMGX6tNF0,26040
8
- pangea/asyncio/services/authn.py,sha256=ZZIYu3lM-hP750BY7hAEKb8GGkE2hZUdLQpVq-pRuuI,52205
9
- pangea/asyncio/services/authz.py,sha256=3T0D97ACTx7RuGsopglm8G2Bg4GGNgvoAq3o8OP4lRc,9721
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=01vWZztp25At34Zi0soiu5A_hxScsCk3XH3LXvDKoZg,7110
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=NyreCHuZjNlOjr21V-tOWuqGCVXOx_LnKctSQ9U6iG0,7966
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=jkTwsQtoibx_6ob-ykDIjqloeLtyp3e6E2_BYMd9f1I,77369
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=QyTS3nY4rpmPQ1xEHnj5ND0aPL3x5PIrE4fFOAwyLaM,24708
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=41GVKkOH3ex8KMi6oOf_mCNwFqICpnoCH8jZpkvReXI,39098
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=lx_j92WCkyGV9G4EUYIIrhdisNNkSk8zAg-WUSWCErM,51126
38
- pangea/services/authn/models.py,sha256=EOoseAWVhr7Gy2HHqxqtvyUNimoi6OVc-x9OMxEeRX8,25253
39
- pangea/services/authz.py,sha256=tava276eskCtiz_GwOQQ4HVw71Zbz2xftLWTU8x7DWk,14611
40
- pangea/services/base.py,sha256=43pWQcR9CeT4sGzgctF3Sy4M_h7DaUzkuZD2Z7CcDUU,3845
41
- pangea/services/embargo.py,sha256=9Wfku4td5ORaIENKmnGmS5jxJJIRfWp6Q51L36Jsy0I,3897
42
- pangea/services/file_scan.py,sha256=Q0VGzRqBhE7OnrrunX7JQbcVmldybxZN_Trrpeoq4VA,7815
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=PWIeW2W5lC9DHLdzXBgOInie0AR2aCxmBPUXuAMEkvg,13158
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=2pg3oQrG3OnPeBJDgz6KJxGighifnsI4SUXXY0miXIg,76486
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.1.dist-info/METADATA,sha256=3NPp98heFZoHGZpELl9kzt5Put7X_u-G6xz0yB4MKeg,6886
59
- pangea_sdk-6.1.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
60
- pangea_sdk-6.1.1.dist-info/RECORD,,