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.
- {polyapi_python-0.3.9.dev12/polyapi_python.egg-info → polyapi_python-0.3.9.dev14}/PKG-INFO +1 -19
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/README.md +0 -18
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/__init__.py +1 -18
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/deployables.py +6 -3
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/execute.py +4 -3
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/schema.py +1 -6
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/sync.py +2 -2
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14/polyapi_python.egg-info}/PKG-INFO +1 -19
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/pyproject.toml +1 -1
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/LICENSE +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/__main__.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/api.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/auth.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/cli.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/client.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/config.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/constants.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/error_handler.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/exceptions.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/function_cli.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/generate.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/parser.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/poly_schemas.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/poly_tables.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/prepare.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/py.typed +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/rendered_spec.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/server.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/typedefs.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/utils.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/variables.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi/webhook.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/SOURCES.txt +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/dependency_links.txt +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/requires.txt +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/top_level.txt +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/setup.cfg +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_api.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_auth.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_deployables.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_generate.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_parser.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_rendered_spec.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_schema.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_server.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_tabi.py +0 -0
- {polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/tests/test_utils.py +0 -0
- {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.
|
|
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"),
|
|
81
|
-
("PolyClientFunction", "client-function"),
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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 = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/requires.txt
RENAMED
|
File without changes
|
{polyapi_python-0.3.9.dev12 → polyapi_python-0.3.9.dev14}/polyapi_python.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|