polyapi-python 0.3.9.dev13__tar.gz → 0.3.9.dev15__tar.gz

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 (48) hide show
  1. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/PKG-INFO +1 -19
  2. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/README.md +0 -18
  3. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/deployables.py +6 -3
  4. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/poly_tables.py +13 -0
  5. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/sync.py +2 -2
  6. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi_python.egg-info/PKG-INFO +1 -19
  7. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/pyproject.toml +1 -1
  8. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_tabi.py +8 -0
  9. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/LICENSE +0 -0
  10. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/__init__.py +0 -0
  11. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/__main__.py +0 -0
  12. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/api.py +0 -0
  13. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/auth.py +0 -0
  14. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/cli.py +0 -0
  15. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/client.py +0 -0
  16. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/config.py +0 -0
  17. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/constants.py +0 -0
  18. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/error_handler.py +0 -0
  19. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/exceptions.py +0 -0
  20. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/execute.py +0 -0
  21. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/function_cli.py +0 -0
  22. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/generate.py +0 -0
  23. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/parser.py +0 -0
  24. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/poly_schemas.py +0 -0
  25. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/prepare.py +0 -0
  26. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/py.typed +0 -0
  27. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/rendered_spec.py +0 -0
  28. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/schema.py +0 -0
  29. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/server.py +0 -0
  30. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/typedefs.py +0 -0
  31. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/utils.py +0 -0
  32. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/variables.py +0 -0
  33. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi/webhook.py +0 -0
  34. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi_python.egg-info/SOURCES.txt +0 -0
  35. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi_python.egg-info/dependency_links.txt +0 -0
  36. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi_python.egg-info/requires.txt +0 -0
  37. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/polyapi_python.egg-info/top_level.txt +0 -0
  38. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/setup.cfg +0 -0
  39. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_api.py +0 -0
  40. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_auth.py +0 -0
  41. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_deployables.py +0 -0
  42. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_generate.py +0 -0
  43. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_parser.py +0 -0
  44. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_rendered_spec.py +0 -0
  45. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_schema.py +0 -0
  46. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_server.py +0 -0
  47. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_utils.py +0 -0
  48. {polyapi_python-0.3.9.dev13 → polyapi_python-0.3.9.dev15}/tests/test_variables.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyapi-python
3
- Version: 0.3.9.dev13
3
+ Version: 0.3.9.dev15
4
4
  Summary: The Python Client for PolyAPI, the IPaaS by Developers for Developers
5
5
  Author-email: Dan Fellin <dan@polyapi.io>
6
6
  License: MIT License
@@ -110,24 +110,6 @@ def bar():
110
110
  return "Hello World"
111
111
  ```
112
112
 
113
- ## See Server Function Logs
114
-
115
- In order to see function logs, please first set `logsEnabled` to `true` in Canopy for the function.
116
-
117
- https://na1.polyapi.io/canopy/polyui/collections/server-functions
118
-
119
- Then in your code, get the poly logger and log with it like so:
120
-
121
- ```python
122
- logger = logging.getLogger("poly")
123
- def bar():
124
- logger.warning("I AM THE LOG")
125
- return "Hello World"
126
- ```
127
-
128
- Finally, click the "Show Logs" button to see your server function logs in Canopy!
129
-
130
-
131
113
  ## Complex Types In Server Functions
132
114
 
133
115
  You can define arbitrarily complex argument and return types using TypedDicts.
@@ -70,24 +70,6 @@ def bar():
70
70
  return "Hello World"
71
71
  ```
72
72
 
73
- ## See Server Function Logs
74
-
75
- In order to see function logs, please first set `logsEnabled` to `true` in Canopy for the function.
76
-
77
- https://na1.polyapi.io/canopy/polyui/collections/server-functions
78
-
79
- Then in your code, get the poly logger and log with it like so:
80
-
81
- ```python
82
- logger = logging.getLogger("poly")
83
- def bar():
84
- logger.warning("I AM THE LOG")
85
- return "Hello World"
86
- ```
87
-
88
- Finally, click the "Show Logs" button to see your server function logs in Canopy!
89
-
90
-
91
73
  ## Complex Types In Server Functions
92
74
 
93
75
  You can define arbitrarily complex argument and return types using TypedDicts.
@@ -1,4 +1,6 @@
1
1
  import os
2
+ import string
3
+ import random
2
4
  import subprocess
3
5
  import json
4
6
  import hashlib
@@ -76,9 +78,10 @@ class SyncDeployment(TypedDict, total=False):
76
78
  id: Optional[str]
77
79
  deployed: Optional[str]
78
80
 
81
+
79
82
  DeployableTypeEntries: List[Tuple[DeployableTypeNames, DeployableTypes]] = [
80
- ("PolyServerFunction", "server-function"), # type: ignore
81
- ("PolyClientFunction", "client-function"), # type: ignore
83
+ ("PolyServerFunction", "server-function"), # type: ignore
84
+ ("PolyClientFunction", "client-function"), # type: ignore
82
85
  ]
83
86
 
84
87
  DeployableTypeToName: Dict[DeployableTypeNames, DeployableTypes] = {name: type for name, type in DeployableTypeEntries}
@@ -175,7 +178,7 @@ def get_git_revision(branch_or_tag: str = "HEAD") -> str:
175
178
  return check_output(["git", "rev-parse", "--short", branch_or_tag], text=True).strip()
176
179
  except CalledProcessError:
177
180
  # Return a random 7-character hash as a fallback
178
- return "".join(format(ord(str(c)), 'x') for c in os.urandom(4))[:7]
181
+ return "".join([random.choice(string.ascii_letters + string.digits) for _ in range(7)])
179
182
 
180
183
  def get_cache_deployments_revision() -> str:
181
184
  """Retrieve the cache deployments revision from a file."""
@@ -7,6 +7,19 @@ from polyapi.typedefs import TableSpecDto
7
7
  from polyapi.constants import JSONSCHEMA_TO_PYTHON_TYPE_MAP
8
8
 
9
9
 
10
+ def scrub_keys(e: Exception) -> Dict[str, Any]:
11
+ """
12
+ Scrub the keys of an exception to remove sensitive information.
13
+ Returns a dictionary with the error message and type.
14
+ """
15
+ return {
16
+ "error": str(e),
17
+ "type": type(e).__name__,
18
+ "message": str(e),
19
+ "args": getattr(e, 'args', None)
20
+ }
21
+
22
+
10
23
  def execute_query(table_id, method, query):
11
24
  from polyapi import polyCustom
12
25
  from polyapi.poly.client_id import client_id
@@ -24,7 +24,7 @@ def read_file(file_path: str) -> str:
24
24
  return file.read()
25
25
 
26
26
  def group_by(items: List[Dict], key: str) -> Dict[str, List[Dict]]:
27
- grouped = {}
27
+ grouped = {} # type: ignore
28
28
  for item in items:
29
29
  grouped.setdefault(item[key], []).append(item)
30
30
  return grouped
@@ -32,7 +32,7 @@ def group_by(items: List[Dict], key: str) -> Dict[str, List[Dict]]:
32
32
  def remove_deployable_function(deployable: SyncDeployment) -> bool:
33
33
  api_key, _ = get_api_key_and_url()
34
34
  if not api_key:
35
- raise Error("Missing api key!")
35
+ raise Exception("Missing api key!")
36
36
  headers = get_auth_headers(api_key)
37
37
  url = f'{deployable["instance"]}/functions/{deployable["type"].replace("-function", "")}/{deployable["id"]}'
38
38
  response = requests.get(url, headers=headers)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyapi-python
3
- Version: 0.3.9.dev13
3
+ Version: 0.3.9.dev15
4
4
  Summary: The Python Client for PolyAPI, the IPaaS by Developers for Developers
5
5
  Author-email: Dan Fellin <dan@polyapi.io>
6
6
  License: MIT License
@@ -110,24 +110,6 @@ def bar():
110
110
  return "Hello World"
111
111
  ```
112
112
 
113
- ## See Server Function Logs
114
-
115
- In order to see function logs, please first set `logsEnabled` to `true` in Canopy for the function.
116
-
117
- https://na1.polyapi.io/canopy/polyui/collections/server-functions
118
-
119
- Then in your code, get the poly logger and log with it like so:
120
-
121
- ```python
122
- logger = logging.getLogger("poly")
123
- def bar():
124
- logger.warning("I AM THE LOG")
125
- return "Hello World"
126
- ```
127
-
128
- Finally, click the "Show Logs" button to see your server function logs in Canopy!
129
-
130
-
131
113
  ## Complex Types In Server Functions
132
114
 
133
115
  You can define arbitrarily complex argument and return types using TypedDicts.
@@ -3,7 +3,7 @@ requires = ["setuptools>=61.2", "wheel"]
3
3
 
4
4
  [project]
5
5
  name = "polyapi-python"
6
- version = "0.3.9.dev13"
6
+ version = "0.3.9.dev15"
7
7
  description = "The Python Client for PolyAPI, the IPaaS by Developers for Developers"
8
8
  authors = [{ name = "Dan Fellin", email = "dan@polyapi.io" }]
9
9
  dependencies = [
@@ -38,6 +38,9 @@ MyTableColumns = Literal["id","createdAt","updatedAt","name","age","active","opt
38
38
 
39
39
 
40
40
 
41
+ from typing_extensions import Required
42
+
43
+
41
44
  class MyTableRow(TypedDict, total=False):
42
45
  id: Required[str]
43
46
  """ Required property """
@@ -347,6 +350,9 @@ MyTableColumns = Literal["id","createdAt","updatedAt","data"]
347
350
 
348
351
 
349
352
 
353
+ from typing_extensions import Required
354
+
355
+
350
356
  class MyTableRow(TypedDict, total=False):
351
357
  id: Required[str]
352
358
  """ Required property """
@@ -611,9 +617,11 @@ class MyTable:
611
617
 
612
618
  class T(unittest.TestCase):
613
619
  def test_render_simple(self):
620
+ self.maxDiff = 20000
614
621
  output = _render_table(TABLE_SPEC_SIMPLE)
615
622
  self.assertEqual(output, EXPECTED_SIMPLE)
616
623
 
617
624
  def test_render_complex(self):
625
+ self.maxDiff = 20000
618
626
  output = _render_table(TABLE_SPEC_COMPLEX)
619
627
  self.assertEqual(output, EXPECTED_COMPLEX)