polyapi-python 0.3.9.dev12__tar.gz → 0.3.9.dev14__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.dev12/polyapi_python.egg-info → polyapi_python-0.3.9.dev14}/PKG-INFO +1 -19
  2. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/README.md +0 -18
  3. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/__init__.py +1 -18
  4. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/deployables.py +6 -3
  5. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/execute.py +4 -3
  6. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/schema.py +1 -6
  7. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/sync.py +2 -2
  8. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14/polyapi_python.egg-info}/PKG-INFO +1 -19
  9. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/pyproject.toml +1 -1
  10. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/LICENSE +0 -0
  11. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/__main__.py +0 -0
  12. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/api.py +0 -0
  13. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/auth.py +0 -0
  14. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/cli.py +0 -0
  15. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/client.py +0 -0
  16. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/config.py +0 -0
  17. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/constants.py +0 -0
  18. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/error_handler.py +0 -0
  19. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/exceptions.py +0 -0
  20. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/function_cli.py +0 -0
  21. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/generate.py +0 -0
  22. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/parser.py +0 -0
  23. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/poly_schemas.py +0 -0
  24. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/poly_tables.py +0 -0
  25. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/prepare.py +0 -0
  26. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/py.typed +0 -0
  27. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/rendered_spec.py +0 -0
  28. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/server.py +0 -0
  29. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/typedefs.py +0 -0
  30. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/utils.py +0 -0
  31. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/variables.py +0 -0
  32. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/webhook.py +0 -0
  33. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/SOURCES.txt +0 -0
  34. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/dependency_links.txt +0 -0
  35. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/requires.txt +0 -0
  36. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/top_level.txt +0 -0
  37. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/setup.cfg +0 -0
  38. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_api.py +0 -0
  39. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_auth.py +0 -0
  40. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_deployables.py +0 -0
  41. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_generate.py +0 -0
  42. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_parser.py +0 -0
  43. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_rendered_spec.py +0 -0
  44. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_schema.py +0 -0
  45. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_server.py +0 -0
  46. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_tabi.py +0 -0
  47. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_utils.py +0 -0
  48. {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/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.dev12
3
+ Version: 0.3.9.dev14
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.
@@ -2,8 +2,6 @@ import os
2
2
  import sys
3
3
  import copy
4
4
  import truststore
5
- import logging
6
- import builtins
7
5
  from typing import Any, Dict, Optional, overload, Literal
8
6
  from typing_extensions import TypedDict
9
7
  truststore.inject_into_ssl()
@@ -100,19 +98,4 @@ class _PolyCustom:
100
98
  return new
101
99
 
102
100
 
103
- polyCustom: PolyCustomDict = _PolyCustom()
104
-
105
- original_print = print
106
-
107
- logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s')
108
-
109
- def log_prints(*objects, sep=' ', end='\n', file=sys.stdout, flush=False):
110
- message = sep.join(map(str, objects)) + end
111
- if file is sys.stdout:
112
- logging.info(message)
113
- elif file is sys.stderr:
114
- logging.error(message)
115
- else:
116
- original_print(*objects, sep=sep, end=end, file=file, flush=flush)
117
-
118
- builtins.print = log_prints
101
+ polyCustom: PolyCustomDict = _PolyCustom()
@@ -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."""
@@ -1,11 +1,12 @@
1
1
  from typing import Dict, Optional
2
2
  import requests
3
3
  import os
4
- import sys
4
+ import logging
5
5
  from requests import Response
6
6
  from polyapi.config import get_api_key_and_url, get_mtls_config
7
7
  from polyapi.exceptions import PolyApiException
8
8
 
9
+ logger = logging.getLogger("poly")
9
10
 
10
11
  def direct_execute(function_type, function_id, data) -> Response:
11
12
  """ execute a specific function id/type
@@ -48,7 +49,7 @@ def direct_execute(function_type, function_id, data) -> Response:
48
49
  if (resp.status_code < 200 or resp.status_code >= 300):
49
50
  error_content = resp.content.decode("utf-8", errors="ignore")
50
51
  if function_type == 'api' and os.getenv("LOGS_ENABLED"):
51
- print(f"Error executing api function with id: {function_id}. Status code: {resp.status_code}. Request data: {data}, Response: {error_content}", file=sys.stderr)
52
+ logger.error(f"Error executing api function with id: {function_id}. Status code: {resp.status_code}. Request data: {data}, Response: {error_content}")
52
53
  elif function_type != 'api':
53
54
  raise PolyApiException(f"{resp.status_code}: {error_content}")
54
55
 
@@ -72,7 +73,7 @@ def execute(function_type, function_id, data) -> Response:
72
73
  if (resp.status_code < 200 or resp.status_code >= 300) and os.getenv("LOGS_ENABLED"):
73
74
  error_content = resp.content.decode("utf-8", errors="ignore")
74
75
  if function_type == 'api' and os.getenv("LOGS_ENABLED"):
75
- print(f"Error executing api function with id: {function_id}. Status code: {resp.status_code}. Request data: {data}, Response: {error_content}", file=sys.stderr)
76
+ logger.error(f"Error executing api function with id: {function_id}. Status code: {resp.status_code}. Request data: {data}, Response: {error_content}")
76
77
  elif function_type != 'api':
77
78
  raise PolyApiException(f"{resp.status_code}: {error_content}")
78
79
 
@@ -3,8 +3,6 @@
3
3
  import logging
4
4
  import contextlib
5
5
  import re
6
- import polyapi
7
- import builtins
8
6
  from typing import Dict
9
7
  from jsonschema_gentypes.cli import process_config
10
8
  from jsonschema_gentypes import configuration
@@ -91,12 +89,9 @@ def generate_schema_types(input_data: Dict, root=None):
91
89
  }
92
90
 
93
91
  # jsonschema_gentypes prints source to stdout
94
- # no option to suppress so we do this
95
- # Not reverting the print monkeypatch causes print to bypass redirect
96
- builtins.print = polyapi.original_print
92
+ # no option to surpress so we do this
97
93
  with contextlib.redirect_stdout(None):
98
94
  process_config(config, [tmp_input])
99
- builtins.print = polyapi.log_prints
100
95
 
101
96
  with open(tmp_output, encoding='utf-8') as f:
102
97
  output = f.read()
@@ -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.dev12
3
+ Version: 0.3.9.dev14
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.dev12"
6
+ version = "0.3.9.dev14"
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 = [