jararaca 0.3.12a6__tar.gz → 0.3.12a7__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.

Potentially problematic release.


This version of jararaca might be problematic. Click here for more details.

Files changed (88) hide show
  1. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/PKG-INFO +1 -1
  2. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/pyproject.toml +1 -1
  3. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/tools/typescript/decorators.py +16 -5
  4. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/tools/typescript/interface_parser.py +18 -5
  5. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/LICENSE +0 -0
  6. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/README.md +0 -0
  7. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/CNAME +0 -0
  8. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/architecture.md +0 -0
  9. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
  10. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
  11. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/assets/tracing_example.png +0 -0
  12. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/http-rpc.md +0 -0
  13. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/index.md +0 -0
  14. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/interceptors.md +0 -0
  15. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/messagebus.md +0 -0
  16. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/retry.md +0 -0
  17. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/scheduler.md +0 -0
  18. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/stylesheets/custom.css +0 -0
  19. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/docs/websocket.md +0 -0
  20. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/__init__.py +0 -0
  21. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/__main__.py +0 -0
  22. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/broker_backend/__init__.py +0 -0
  23. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/broker_backend/mapper.py +0 -0
  24. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
  25. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/cli.py +0 -0
  26. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/common/__init__.py +0 -0
  27. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/core/__init__.py +0 -0
  28. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/core/providers.py +0 -0
  29. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/core/uow.py +0 -0
  30. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/di.py +0 -0
  31. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/files/entity.py.mako +0 -0
  32. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/lifecycle.py +0 -0
  33. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/__init__.py +0 -0
  34. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/bus_message_controller.py +0 -0
  35. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/consumers/__init__.py +0 -0
  36. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/decorators.py +0 -0
  37. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
  38. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
  39. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
  40. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/message.py +0 -0
  41. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/publisher.py +0 -0
  42. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/messagebus/worker.py +0 -0
  43. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/microservice.py +0 -0
  44. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/observability/decorators.py +0 -0
  45. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/observability/interceptor.py +0 -0
  46. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/observability/providers/__init__.py +0 -0
  47. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/observability/providers/otel.py +0 -0
  48. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/base.py +0 -0
  49. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/exports.py +0 -0
  50. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/interceptors/__init__.py +0 -0
  51. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
  52. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/session.py +0 -0
  53. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/sort_filter.py +0 -0
  54. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/persistence/utilities.py +0 -0
  55. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/__init__.py +0 -0
  56. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/decorators.py +0 -0
  57. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/hooks.py +0 -0
  58. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/http_microservice.py +0 -0
  59. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/server.py +0 -0
  60. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/__init__.py +0 -0
  61. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/base_types.py +0 -0
  62. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/context.py +0 -0
  63. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/decorators.py +0 -0
  64. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/redis.py +0 -0
  65. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/types.py +0 -0
  66. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
  67. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/py.typed +0 -0
  68. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/reflect/__init__.py +0 -0
  69. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/reflect/controller_inspect.py +0 -0
  70. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/reflect/metadata.py +0 -0
  71. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/__init__.py +0 -0
  72. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/http/__init__.py +0 -0
  73. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/http/backends/__init__.py +0 -0
  74. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/http/backends/httpx.py +0 -0
  75. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/http/backends/otel.py +0 -0
  76. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/http/decorators.py +0 -0
  77. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/rpc/http/httpx.py +0 -0
  78. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/scheduler/__init__.py +0 -0
  79. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/scheduler/beat_worker.py +0 -0
  80. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/scheduler/decorators.py +0 -0
  81. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/scheduler/types.py +0 -0
  82. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/tools/app_config/__init__.py +0 -0
  83. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/tools/app_config/decorators.py +0 -0
  84. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/tools/app_config/interceptor.py +0 -0
  85. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/tools/typescript/__init__.py +0 -0
  86. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/utils/__init__.py +0 -0
  87. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/utils/rabbitmq_utils.py +0 -0
  88. {jararaca-0.3.12a6 → jararaca-0.3.12a7}/src/jararaca/utils/retry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jararaca
3
- Version: 0.3.12a6
3
+ Version: 0.3.12a7
4
4
  Summary: A simple and fast API framework for Python
5
5
  Home-page: https://github.com/LuscasLeo/jararaca
6
6
  Author: Lucas S
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "jararaca"
3
- version = "0.3.12a6"
3
+ version = "0.3.12a7"
4
4
  description = "A simple and fast API framework for Python"
5
5
  authors = ["Lucas S <me@luscasleo.dev>"]
6
6
  readme = "README.md"
@@ -1,4 +1,4 @@
1
- from typing import Any, Callable, TypeVar
1
+ from typing import Any, Callable, TypeVar, cast
2
2
 
3
3
  DECORATED_FUNC = TypeVar("DECORATED_FUNC", bound=Callable[..., Any])
4
4
 
@@ -10,21 +10,32 @@ class QueryEndpoint:
10
10
 
11
11
  METADATA_KEY = "__jararaca_query_endpoint__"
12
12
 
13
- def __init__(self) -> None: ...
13
+ def __init__(self, has_infinite_query: bool = False) -> None:
14
+ """
15
+ Initialize the QueryEndpoint decorator.
16
+
17
+ Args:
18
+ has_infinite_query: Whether the query endpoint supports infinite queries.
19
+ Important:
20
+ - Make sure a PaginatedQuery child instance is on the first argument
21
+ - Make sure the endpoint is a Patch (recommended) or Put method
22
+ - Make sure the endpoint returns a Paginated[T]
23
+ """
24
+ self.has_infinite_query = has_infinite_query
14
25
 
15
26
  def __call__(self, func: DECORATED_FUNC) -> DECORATED_FUNC:
16
27
  """
17
28
  Decorate the function to mark it as a query endpoint.
18
29
  """
19
- setattr(func, self.METADATA_KEY, True)
30
+ setattr(func, self.METADATA_KEY, self)
20
31
  return func
21
32
 
22
33
  @staticmethod
23
- def is_query(func: Any) -> bool:
34
+ def extract_query_endpoint(func: Any) -> "QueryEndpoint":
24
35
  """
25
36
  Check if the function is marked as a query endpoint.
26
37
  """
27
- return getattr(func, QueryEndpoint.METADATA_KEY, False)
38
+ return cast(QueryEndpoint, getattr(func, QueryEndpoint.METADATA_KEY, None))
28
39
 
29
40
 
30
41
  class MutationEndpoint:
@@ -389,7 +389,7 @@ def write_microservice_to_typescript_interface(
389
389
 
390
390
  final_buffer.write(
391
391
  """
392
- import { createClassQueryHooks , createClassMutationHooks, createClassInfiniteQueryHooks } from "@jararaca/core";
392
+ import { createClassQueryHooks , createClassMutationHooks, createClassInfiniteQueryHooks, paginationModelByFirstArgPaginationFilter } from "@jararaca/core";
393
393
  export type WebSocketMessageMap = {
394
394
  %s
395
395
  }
@@ -512,7 +512,7 @@ def write_rest_controller_to_typescript_interface(
512
512
 
513
513
  class_name = controller.__name__
514
514
 
515
- decorated_queries: list[tuple[str, FunctionType]] = []
515
+ decorated_queries: list[tuple[str, FunctionType, QueryEndpoint]] = []
516
516
  decorated_mutations: list[tuple[str, FunctionType]] = []
517
517
 
518
518
  class_buffer = StringIO()
@@ -533,8 +533,8 @@ def write_rest_controller_to_typescript_interface(
533
533
  if return_type is None:
534
534
  return_type = NoneType
535
535
 
536
- if QueryEndpoint.is_query(member):
537
- decorated_queries.append((name, member))
536
+ if query_endpoint := QueryEndpoint.extract_query_endpoint(member):
537
+ decorated_queries.append((name, member, query_endpoint))
538
538
  if MutationEndpoint.is_mutation(member):
539
539
  decorated_mutations.append((name, member))
540
540
 
@@ -624,9 +624,22 @@ def write_rest_controller_to_typescript_interface(
624
624
  controller_hooks_builder.write(
625
625
  f"\t...createClassQueryHooks({class_name},\n"
626
626
  )
627
- for name, member in decorated_queries:
627
+ for name, member, _ in decorated_queries:
628
628
  controller_hooks_builder.write(f'\t\t"{snake_to_camel(name)}",\n')
629
629
  controller_hooks_builder.write("\t),\n")
630
+
631
+ if decorated_queries and any(
632
+ query.has_infinite_query for _, _, query in decorated_queries
633
+ ):
634
+ controller_hooks_builder.write(
635
+ f"\t...createClassInfiniteQueryHooks({class_name}, {{\n"
636
+ )
637
+ for name, member, query in decorated_queries:
638
+ if query.has_infinite_query:
639
+ controller_hooks_builder.write(
640
+ f'\t\t"{snake_to_camel(name)}": paginationModelByFirstArgPaginationFilter(),\n'
641
+ )
642
+ controller_hooks_builder.write("\t}),\n")
630
643
  if decorated_mutations:
631
644
  controller_hooks_builder.write(
632
645
  f"\t...createClassMutationHooks({class_name},\n"
File without changes
File without changes
File without changes
File without changes
File without changes