polyapi-python 0.2.3.dev0__tar.gz → 0.2.3.dev1__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 (35) hide show
  1. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/PKG-INFO +1 -1
  2. polyapi-python-0.2.3.dev1/polyapi/error_handler.py +52 -0
  3. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi_python.egg-info/PKG-INFO +1 -1
  4. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi_python.egg-info/SOURCES.txt +1 -0
  5. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/pyproject.toml +1 -1
  6. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/LICENSE +0 -0
  7. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/README.md +0 -0
  8. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/__init__.py +0 -0
  9. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/__main__.py +0 -0
  10. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/api.py +0 -0
  11. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/auth.py +0 -0
  12. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/cli.py +0 -0
  13. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/config.py +0 -0
  14. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/constants.py +0 -0
  15. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/exceptions.py +0 -0
  16. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/execute.py +0 -0
  17. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/function_cli.py +0 -0
  18. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/generate.py +0 -0
  19. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/py.typed +0 -0
  20. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/schema.py +0 -0
  21. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/server.py +0 -0
  22. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/typedefs.py +0 -0
  23. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/utils.py +0 -0
  24. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/variables.py +0 -0
  25. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi/webhook.py +0 -0
  26. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi_python.egg-info/dependency_links.txt +0 -0
  27. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi_python.egg-info/requires.txt +0 -0
  28. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/polyapi_python.egg-info/top_level.txt +0 -0
  29. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/setup.cfg +0 -0
  30. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/tests/test_api.py +0 -0
  31. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/tests/test_auth.py +0 -0
  32. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/tests/test_function_cli.py +0 -0
  33. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/tests/test_server.py +0 -0
  34. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/tests/test_utils.py +0 -0
  35. {polyapi-python-0.2.3.dev0 → polyapi-python-0.2.3.dev1}/tests/test_variables.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: polyapi-python
3
- Version: 0.2.3.dev0
3
+ Version: 0.2.3.dev1
4
4
  Summary: The PolyAPI Python Client
5
5
  Author-email: Dan Fellin <dan@polyapi.io>
6
6
  License: MIT License
@@ -0,0 +1,52 @@
1
+ import asyncio
2
+ import copy
3
+ import socketio # type: ignore
4
+ from typing import Any, Callable, Dict, Optional
5
+
6
+ from polyapi.config import get_api_key_and_url
7
+
8
+
9
+ local_error_handlers: Dict[str, Any] = {}
10
+
11
+
12
+ def on(path: str, callback: Callable, options: Optional[Dict[str, Any]] = None) -> Callable:
13
+ assert not local_error_handlers
14
+ socket = socketio.AsyncClient()
15
+ api_key, base_url = get_api_key_and_url()
16
+
17
+ async def _inner():
18
+ await socket.connect(base_url, transports=["websocket"], namespaces=["/events"])
19
+
20
+ handler_id = None
21
+ data = copy.deepcopy(options or {})
22
+ data["path"] = path
23
+ data["apiKey"] = api_key
24
+
25
+ def registerCallback(id: int):
26
+ nonlocal handler_id, socket
27
+ handler_id = id
28
+ socket.on(f"handleError:{handler_id}", callback, namespace="/events")
29
+
30
+ await socket.emit("registerErrorHandler", data, "/events", registerCallback)
31
+ if local_error_handlers.get(path):
32
+ local_error_handlers[path].append(callback)
33
+ else:
34
+ local_error_handlers[path] = [callback]
35
+
36
+ async def unregister():
37
+ nonlocal handler_id, socket
38
+ if handler_id and socket:
39
+ await socket.emit(
40
+ "unregisterErrorHandler",
41
+ {"id": handler_id, "path": path, "apiKey": api_key},
42
+ namespace="/events",
43
+ )
44
+
45
+ if local_error_handlers.get(path):
46
+ local_error_handlers[path].remove(callback)
47
+
48
+ await socket.wait()
49
+
50
+ return unregister
51
+
52
+ return asyncio.run(_inner())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: polyapi-python
3
- Version: 0.2.3.dev0
3
+ Version: 0.2.3.dev1
4
4
  Summary: The PolyAPI Python Client
5
5
  Author-email: Dan Fellin <dan@polyapi.io>
6
6
  License: MIT License
@@ -8,6 +8,7 @@ polyapi/auth.py
8
8
  polyapi/cli.py
9
9
  polyapi/config.py
10
10
  polyapi/constants.py
11
+ polyapi/error_handler.py
11
12
  polyapi/exceptions.py
12
13
  polyapi/execute.py
13
14
  polyapi/function_cli.py
@@ -3,7 +3,7 @@ requires = ["setuptools>=61.2", "wheel"]
3
3
 
4
4
  [project]
5
5
  name = "polyapi-python"
6
- version = "0.2.3.dev0"
6
+ version = "0.2.3.dev1"
7
7
  description = "The PolyAPI Python Client"
8
8
  authors = [{ name = "Dan Fellin", email = "dan@polyapi.io" }]
9
9
  dependencies = [