panther 4.2.1__tar.gz → 4.2.3__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 (82) hide show
  1. {panther-4.2.1 → panther-4.2.3}/PKG-INFO +10 -10
  2. {panther-4.2.1 → panther-4.2.3}/README.md +1 -1
  3. {panther-4.2.1 → panther-4.2.3}/panther/__init__.py +1 -1
  4. {panther-4.2.1 → panther-4.2.3}/panther/base_websocket.py +9 -5
  5. {panther-4.2.1 → panther-4.2.3}/panther/db/utils.py +1 -1
  6. {panther-4.2.1 → panther-4.2.3}/panther.egg-info/PKG-INFO +10 -10
  7. panther-4.2.3/panther.egg-info/requires.txt +16 -0
  8. {panther-4.2.1 → panther-4.2.3}/setup.py +8 -8
  9. panther-4.2.1/panther.egg-info/requires.txt +0 -16
  10. {panther-4.2.1 → panther-4.2.3}/LICENSE +0 -0
  11. {panther-4.2.1 → panther-4.2.3}/panther/_load_configs.py +0 -0
  12. {panther-4.2.1 → panther-4.2.3}/panther/_utils.py +0 -0
  13. {panther-4.2.1 → panther-4.2.3}/panther/app.py +0 -0
  14. {panther-4.2.1 → panther-4.2.3}/panther/authentications.py +0 -0
  15. {panther-4.2.1 → panther-4.2.3}/panther/background_tasks.py +0 -0
  16. {panther-4.2.1 → panther-4.2.3}/panther/base_request.py +0 -0
  17. {panther-4.2.1 → panther-4.2.3}/panther/caching.py +0 -0
  18. {panther-4.2.1 → panther-4.2.3}/panther/cli/__init__.py +0 -0
  19. {panther-4.2.1 → panther-4.2.3}/panther/cli/create_command.py +0 -0
  20. {panther-4.2.1 → panther-4.2.3}/panther/cli/main.py +0 -0
  21. {panther-4.2.1 → panther-4.2.3}/panther/cli/monitor_command.py +0 -0
  22. {panther-4.2.1 → panther-4.2.3}/panther/cli/run_command.py +0 -0
  23. {panther-4.2.1 → panther-4.2.3}/panther/cli/template.py +0 -0
  24. {panther-4.2.1 → panther-4.2.3}/panther/cli/utils.py +0 -0
  25. {panther-4.2.1 → panther-4.2.3}/panther/configs.py +0 -0
  26. {panther-4.2.1 → panther-4.2.3}/panther/db/__init__.py +0 -0
  27. {panther-4.2.1 → panther-4.2.3}/panther/db/connections.py +0 -0
  28. {panther-4.2.1 → panther-4.2.3}/panther/db/cursor.py +0 -0
  29. {panther-4.2.1 → panther-4.2.3}/panther/db/models.py +0 -0
  30. {panther-4.2.1 → panther-4.2.3}/panther/db/queries/__init__.py +0 -0
  31. {panther-4.2.1 → panther-4.2.3}/panther/db/queries/base_queries.py +0 -0
  32. {panther-4.2.1 → panther-4.2.3}/panther/db/queries/mongodb_queries.py +0 -0
  33. {panther-4.2.1 → panther-4.2.3}/panther/db/queries/pantherdb_queries.py +0 -0
  34. {panther-4.2.1 → panther-4.2.3}/panther/db/queries/queries.py +0 -0
  35. {panther-4.2.1 → panther-4.2.3}/panther/events.py +0 -0
  36. {panther-4.2.1 → panther-4.2.3}/panther/exceptions.py +0 -0
  37. {panther-4.2.1 → panther-4.2.3}/panther/file_handler.py +0 -0
  38. {panther-4.2.1 → panther-4.2.3}/panther/generics.py +0 -0
  39. {panther-4.2.1 → panther-4.2.3}/panther/logging.py +0 -0
  40. {panther-4.2.1 → panther-4.2.3}/panther/main.py +0 -0
  41. {panther-4.2.1 → panther-4.2.3}/panther/middlewares/__init__.py +0 -0
  42. {panther-4.2.1 → panther-4.2.3}/panther/middlewares/base.py +0 -0
  43. {panther-4.2.1 → panther-4.2.3}/panther/monitoring.py +0 -0
  44. {panther-4.2.1 → panther-4.2.3}/panther/pagination.py +0 -0
  45. {panther-4.2.1 → panther-4.2.3}/panther/panel/__init__.py +0 -0
  46. {panther-4.2.1 → panther-4.2.3}/panther/panel/apis.py +0 -0
  47. {panther-4.2.1 → panther-4.2.3}/panther/panel/urls.py +0 -0
  48. {panther-4.2.1 → panther-4.2.3}/panther/panel/utils.py +0 -0
  49. {panther-4.2.1 → panther-4.2.3}/panther/permissions.py +0 -0
  50. {panther-4.2.1 → panther-4.2.3}/panther/request.py +0 -0
  51. {panther-4.2.1 → panther-4.2.3}/panther/response.py +0 -0
  52. {panther-4.2.1 → panther-4.2.3}/panther/routings.py +0 -0
  53. {panther-4.2.1 → panther-4.2.3}/panther/serializer.py +0 -0
  54. {panther-4.2.1 → panther-4.2.3}/panther/status.py +0 -0
  55. {panther-4.2.1 → panther-4.2.3}/panther/test.py +0 -0
  56. {panther-4.2.1 → panther-4.2.3}/panther/throttling.py +0 -0
  57. {panther-4.2.1 → panther-4.2.3}/panther/utils.py +0 -0
  58. {panther-4.2.1 → panther-4.2.3}/panther/websocket.py +0 -0
  59. {panther-4.2.1 → panther-4.2.3}/panther.egg-info/SOURCES.txt +0 -0
  60. {panther-4.2.1 → panther-4.2.3}/panther.egg-info/dependency_links.txt +0 -0
  61. {panther-4.2.1 → panther-4.2.3}/panther.egg-info/entry_points.txt +0 -0
  62. {panther-4.2.1 → panther-4.2.3}/panther.egg-info/top_level.txt +0 -0
  63. {panther-4.2.1 → panther-4.2.3}/pyproject.toml +0 -0
  64. {panther-4.2.1 → panther-4.2.3}/setup.cfg +0 -0
  65. {panther-4.2.1 → panther-4.2.3}/tests/test_authentication.py +0 -0
  66. {panther-4.2.1 → panther-4.2.3}/tests/test_background_tasks.py +0 -0
  67. {panther-4.2.1 → panther-4.2.3}/tests/test_caching.py +0 -0
  68. {panther-4.2.1 → panther-4.2.3}/tests/test_cli.py +0 -0
  69. {panther-4.2.1 → panther-4.2.3}/tests/test_database.py +0 -0
  70. {panther-4.2.1 → panther-4.2.3}/tests/test_events.py +0 -0
  71. {panther-4.2.1 → panther-4.2.3}/tests/test_generics.py +0 -0
  72. {panther-4.2.1 → panther-4.2.3}/tests/test_multipart.py +0 -0
  73. {panther-4.2.1 → panther-4.2.3}/tests/test_panel_apis.py +0 -0
  74. {panther-4.2.1 → panther-4.2.3}/tests/test_request.py +0 -0
  75. {panther-4.2.1 → panther-4.2.3}/tests/test_response.py +0 -0
  76. {panther-4.2.1 → panther-4.2.3}/tests/test_routing.py +0 -0
  77. {panther-4.2.1 → panther-4.2.3}/tests/test_run.py +0 -0
  78. {panther-4.2.1 → panther-4.2.3}/tests/test_serializer.py +0 -0
  79. {panther-4.2.1 → panther-4.2.3}/tests/test_status.py +0 -0
  80. {panther-4.2.1 → panther-4.2.3}/tests/test_throttling.py +0 -0
  81. {panther-4.2.1 → panther-4.2.3}/tests/test_utils.py +0 -0
  82. {panther-4.2.1 → panther-4.2.3}/tests/test_websockets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: panther
3
- Version: 4.2.1
3
+ Version: 4.2.3
4
4
  Summary: Fast & Friendly, Web Framework For Building Async APIs
5
5
  Home-page: https://github.com/alirn76/panther
6
6
  Author: Ali RajabNezhad
@@ -13,20 +13,20 @@ Classifier: Programming Language :: Python :: 3.12
13
13
  Requires-Python: >=3.10
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
- Requires-Dist: httptools~=0.6
17
- Requires-Dist: pantherdb==2.1.0
18
- Requires-Dist: pydantic~=2.6
19
- Requires-Dist: rich~=13.7
20
- Requires-Dist: uvicorn~=0.27
16
+ Requires-Dist: httptools~=0.6.1
17
+ Requires-Dist: pantherdb~=2.1.0
18
+ Requires-Dist: pydantic~=2.7.4
19
+ Requires-Dist: rich~=13.7.1
20
+ Requires-Dist: uvicorn~=0.27.1
21
21
  Requires-Dist: pytz~=2024.1
22
22
  Provides-Extra: full
23
23
  Requires-Dist: redis==5.0.1; extra == "full"
24
- Requires-Dist: motor~=3.3; extra == "full"
24
+ Requires-Dist: motor~=3.5.0; extra == "full"
25
25
  Requires-Dist: bpython~=0.24; extra == "full"
26
26
  Requires-Dist: ruff~=0.1.9; extra == "full"
27
- Requires-Dist: python-jose~=3.3; extra == "full"
27
+ Requires-Dist: python-jose~=3.3.0; extra == "full"
28
28
  Requires-Dist: websockets~=12.0; extra == "full"
29
- Requires-Dist: cryptography~=42.0; extra == "full"
29
+ Requires-Dist: cryptography~=42.0.8; extra == "full"
30
30
  Requires-Dist: watchfiles~=0.21.0; extra == "full"
31
31
 
32
32
 
@@ -56,7 +56,7 @@ Requires-Dist: watchfiles~=0.21.0; extra == "full"
56
56
  - Support Custom **Middlewares**
57
57
  - Support Custom **Throttling**
58
58
  - Support **Function-Base** and **Class-Base** APIs
59
- - It's One Of The **Fastest Python Framework**
59
+ - It's One Of The **Fastest Python Framework** ([Benchmark](https://www.techempower.com/benchmarks/#section=test&runid=d3364379-1bf7-465f-bcb1-e9c65b4840f9&hw=ph&test=fortune&l=zik0zj-6bi))
60
60
  ---
61
61
 
62
62
  ### Supported by
@@ -25,7 +25,7 @@
25
25
  - Support Custom **Middlewares**
26
26
  - Support Custom **Throttling**
27
27
  - Support **Function-Base** and **Class-Base** APIs
28
- - It's One Of The **Fastest Python Framework**
28
+ - It's One Of The **Fastest Python Framework** ([Benchmark](https://www.techempower.com/benchmarks/#section=test&runid=d3364379-1bf7-465f-bcb1-e9c65b4840f9&hw=ph&test=fortune&l=zik0zj-6bi))
29
29
  ---
30
30
 
31
31
  ### Supported by
@@ -1,6 +1,6 @@
1
1
  from panther.main import Panther # noqa: F401
2
2
 
3
- __version__ = '4.2.1'
3
+ __version__ = '4.2.3'
4
4
 
5
5
 
6
6
  def version():
@@ -1,12 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- import logging
4
+ import orjson as json
5
5
  from multiprocessing.managers import SyncManager
6
6
  from typing import TYPE_CHECKING, Literal
7
7
 
8
- import orjson as json
9
-
8
+ import logging
10
9
  from panther import status
11
10
  from panther.base_request import BaseRequest
12
11
  from panther.configs import config
@@ -53,9 +52,14 @@ class WebsocketConnections(Singleton):
53
52
  logger.info("Subscribed to 'websocket_connections' queue")
54
53
  while True:
55
54
  try:
56
- received_message = queue.get()
55
+ received_message = await asyncio.to_thread(queue.get)
56
+ if received_message is None:
57
+ # The None came from the CancelledError, so break the loop
58
+ break
57
59
  await self._handle_received_message(received_message=received_message)
58
- except InterruptedError:
60
+ except (InterruptedError, asyncio.CancelledError):
61
+ # Put the None to the queue, so the executor knows that it ends
62
+ queue.put(None)
59
63
  break
60
64
  else:
61
65
  # We have a redis connection, so use it for pubsub
@@ -29,7 +29,7 @@ def log_query(func):
29
29
  def check_connection(func):
30
30
  async def wrapper(*args, **kwargs):
31
31
  if config.QUERY_ENGINE is None:
32
- msg = "You don't have active database connection, Check your middlewares"
32
+ msg = "You don't have active database connection, Check your DATABASE block in configs"
33
33
  raise NotImplementedError(msg)
34
34
  return await func(*args, **kwargs)
35
35
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: panther
3
- Version: 4.2.1
3
+ Version: 4.2.3
4
4
  Summary: Fast & Friendly, Web Framework For Building Async APIs
5
5
  Home-page: https://github.com/alirn76/panther
6
6
  Author: Ali RajabNezhad
@@ -13,20 +13,20 @@ Classifier: Programming Language :: Python :: 3.12
13
13
  Requires-Python: >=3.10
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
- Requires-Dist: httptools~=0.6
17
- Requires-Dist: pantherdb==2.1.0
18
- Requires-Dist: pydantic~=2.6
19
- Requires-Dist: rich~=13.7
20
- Requires-Dist: uvicorn~=0.27
16
+ Requires-Dist: httptools~=0.6.1
17
+ Requires-Dist: pantherdb~=2.1.0
18
+ Requires-Dist: pydantic~=2.7.4
19
+ Requires-Dist: rich~=13.7.1
20
+ Requires-Dist: uvicorn~=0.27.1
21
21
  Requires-Dist: pytz~=2024.1
22
22
  Provides-Extra: full
23
23
  Requires-Dist: redis==5.0.1; extra == "full"
24
- Requires-Dist: motor~=3.3; extra == "full"
24
+ Requires-Dist: motor~=3.5.0; extra == "full"
25
25
  Requires-Dist: bpython~=0.24; extra == "full"
26
26
  Requires-Dist: ruff~=0.1.9; extra == "full"
27
- Requires-Dist: python-jose~=3.3; extra == "full"
27
+ Requires-Dist: python-jose~=3.3.0; extra == "full"
28
28
  Requires-Dist: websockets~=12.0; extra == "full"
29
- Requires-Dist: cryptography~=42.0; extra == "full"
29
+ Requires-Dist: cryptography~=42.0.8; extra == "full"
30
30
  Requires-Dist: watchfiles~=0.21.0; extra == "full"
31
31
 
32
32
 
@@ -56,7 +56,7 @@ Requires-Dist: watchfiles~=0.21.0; extra == "full"
56
56
  - Support Custom **Middlewares**
57
57
  - Support Custom **Throttling**
58
58
  - Support **Function-Base** and **Class-Base** APIs
59
- - It's One Of The **Fastest Python Framework**
59
+ - It's One Of The **Fastest Python Framework** ([Benchmark](https://www.techempower.com/benchmarks/#section=test&runid=d3364379-1bf7-465f-bcb1-e9c65b4840f9&hw=ph&test=fortune&l=zik0zj-6bi))
60
60
  ---
61
61
 
62
62
  ### Supported by
@@ -0,0 +1,16 @@
1
+ httptools~=0.6.1
2
+ pantherdb~=2.1.0
3
+ pydantic~=2.7.4
4
+ rich~=13.7.1
5
+ uvicorn~=0.27.1
6
+ pytz~=2024.1
7
+
8
+ [full]
9
+ redis==5.0.1
10
+ motor~=3.5.0
11
+ bpython~=0.24
12
+ ruff~=0.1.9
13
+ python-jose~=3.3.0
14
+ websockets~=12.0
15
+ cryptography~=42.0.8
16
+ watchfiles~=0.21.0
@@ -15,12 +15,12 @@ with open('README.md', encoding='utf-8') as file:
15
15
  EXTRAS_REQUIRE = {
16
16
  'full': [
17
17
  'redis==5.0.1',
18
- 'motor~=3.3',
18
+ 'motor~=3.5.0',
19
19
  'bpython~=0.24',
20
20
  'ruff~=0.1.9',
21
- 'python-jose~=3.3',
21
+ 'python-jose~=3.3.0',
22
22
  'websockets~=12.0',
23
- 'cryptography~=42.0',
23
+ 'cryptography~=42.0.8',
24
24
  'watchfiles~=0.21.0',
25
25
  ],
26
26
  }
@@ -50,11 +50,11 @@ setup(
50
50
  'panther': ['cli/*'],
51
51
  },
52
52
  install_requires=[
53
- 'httptools~=0.6',
54
- 'pantherdb==2.1.0',
55
- 'pydantic~=2.6',
56
- 'rich~=13.7',
57
- 'uvicorn~=0.27',
53
+ 'httptools~=0.6.1',
54
+ 'pantherdb~=2.1.0',
55
+ 'pydantic~=2.7.4',
56
+ 'rich~=13.7.1',
57
+ 'uvicorn~=0.27.1',
58
58
  'pytz~=2024.1',
59
59
  ],
60
60
  extras_require=EXTRAS_REQUIRE,
@@ -1,16 +0,0 @@
1
- httptools~=0.6
2
- pantherdb==2.1.0
3
- pydantic~=2.6
4
- rich~=13.7
5
- uvicorn~=0.27
6
- pytz~=2024.1
7
-
8
- [full]
9
- redis==5.0.1
10
- motor~=3.3
11
- bpython~=0.24
12
- ruff~=0.1.9
13
- python-jose~=3.3
14
- websockets~=12.0
15
- cryptography~=42.0
16
- watchfiles~=0.21.0
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
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
File without changes
File without changes