jararaca 0.3.12a6__tar.gz → 0.3.12a8__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.
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/PKG-INFO +1 -1
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/pyproject.toml +1 -1
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/tools/typescript/decorators.py +16 -5
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/tools/typescript/interface_parser.py +18 -36
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/LICENSE +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/README.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/CNAME +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/architecture.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/http-rpc.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/index.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/interceptors.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/messagebus.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/retry.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/scheduler.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/stylesheets/custom.css +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/websocket.md +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/__main__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/broker_backend/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/broker_backend/mapper.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/cli.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/di.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/bus_message_controller.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/consumers/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/message.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/microservice.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/observability/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/observability/providers/otel.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/sort_filter.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/py.typed +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/reflect/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/reflect/controller_inspect.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/reflect/metadata.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/scheduler/beat_worker.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/scheduler/types.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/tools/typescript/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/utils/__init__.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/utils/rabbitmq_utils.py +0 -0
- {jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/utils/retry.py +0 -0
|
@@ -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,
|
|
30
|
+
setattr(func, self.METADATA_KEY, self)
|
|
20
31
|
return func
|
|
21
32
|
|
|
22
33
|
@staticmethod
|
|
23
|
-
def
|
|
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,
|
|
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 { HttpService, HttpBackend, HttpBackendRequest, ResponseType, createClassQueryHooks , createClassMutationHooks, createClassInfiniteQueryHooks, paginationModelByFirstArgPaginationFilter } from "@jararaca/core";
|
|
393
393
|
export type WebSocketMessageMap = {
|
|
394
394
|
%s
|
|
395
395
|
}
|
|
@@ -405,37 +405,6 @@ export type WebSocketMessageMap = {
|
|
|
405
405
|
)
|
|
406
406
|
)
|
|
407
407
|
|
|
408
|
-
final_buffer.write(
|
|
409
|
-
"""
|
|
410
|
-
export type ResponseType =
|
|
411
|
-
| "arraybuffer"
|
|
412
|
-
| "blob"
|
|
413
|
-
| "document"
|
|
414
|
-
| "json"
|
|
415
|
-
| "text"
|
|
416
|
-
| "stream"
|
|
417
|
-
| "formdata";
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
export interface HttpBackendRequest {
|
|
421
|
-
method: string;
|
|
422
|
-
path: string;
|
|
423
|
-
pathParams: { [key: string]: any };
|
|
424
|
-
headers: { [key: string]: string };
|
|
425
|
-
query: { [key: string]: unknown };
|
|
426
|
-
body: unknown;
|
|
427
|
-
responseType?: ResponseType;
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
export interface HttpBackend {
|
|
431
|
-
request<T>(request: HttpBackendRequest): Promise<T>;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
export abstract class HttpService {
|
|
435
|
-
constructor(protected readonly httpBackend: HttpBackend) {}
|
|
436
|
-
}
|
|
437
|
-
"""
|
|
438
|
-
)
|
|
439
408
|
processed_types: set[Any] = set()
|
|
440
409
|
backlog: set[Any] = mapped_types_set.copy()
|
|
441
410
|
|
|
@@ -512,7 +481,7 @@ def write_rest_controller_to_typescript_interface(
|
|
|
512
481
|
|
|
513
482
|
class_name = controller.__name__
|
|
514
483
|
|
|
515
|
-
decorated_queries: list[tuple[str, FunctionType]] = []
|
|
484
|
+
decorated_queries: list[tuple[str, FunctionType, QueryEndpoint]] = []
|
|
516
485
|
decorated_mutations: list[tuple[str, FunctionType]] = []
|
|
517
486
|
|
|
518
487
|
class_buffer = StringIO()
|
|
@@ -533,8 +502,8 @@ def write_rest_controller_to_typescript_interface(
|
|
|
533
502
|
if return_type is None:
|
|
534
503
|
return_type = NoneType
|
|
535
504
|
|
|
536
|
-
if QueryEndpoint.
|
|
537
|
-
decorated_queries.append((name, member))
|
|
505
|
+
if query_endpoint := QueryEndpoint.extract_query_endpoint(member):
|
|
506
|
+
decorated_queries.append((name, member, query_endpoint))
|
|
538
507
|
if MutationEndpoint.is_mutation(member):
|
|
539
508
|
decorated_mutations.append((name, member))
|
|
540
509
|
|
|
@@ -624,9 +593,22 @@ def write_rest_controller_to_typescript_interface(
|
|
|
624
593
|
controller_hooks_builder.write(
|
|
625
594
|
f"\t...createClassQueryHooks({class_name},\n"
|
|
626
595
|
)
|
|
627
|
-
for name, member in decorated_queries:
|
|
596
|
+
for name, member, _ in decorated_queries:
|
|
628
597
|
controller_hooks_builder.write(f'\t\t"{snake_to_camel(name)}",\n')
|
|
629
598
|
controller_hooks_builder.write("\t),\n")
|
|
599
|
+
|
|
600
|
+
if decorated_queries and any(
|
|
601
|
+
query.has_infinite_query for _, _, query in decorated_queries
|
|
602
|
+
):
|
|
603
|
+
controller_hooks_builder.write(
|
|
604
|
+
f"\t...createClassInfiniteQueryHooks({class_name}, {{\n"
|
|
605
|
+
)
|
|
606
|
+
for name, member, query in decorated_queries:
|
|
607
|
+
if query.has_infinite_query:
|
|
608
|
+
controller_hooks_builder.write(
|
|
609
|
+
f'\t\t"{snake_to_camel(name)}": paginationModelByFirstArgPaginationFilter(),\n'
|
|
610
|
+
)
|
|
611
|
+
controller_hooks_builder.write("\t}),\n")
|
|
630
612
|
if decorated_mutations:
|
|
631
613
|
controller_hooks_builder.write(
|
|
632
614
|
f"\t...createClassMutationHooks({class_name},\n"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg
RENAMED
|
File without changes
|
{jararaca-0.3.12a6 → jararaca-0.3.12a8}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp
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
|
|
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
|
{jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py
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
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.12a6 → jararaca-0.3.12a8}/src/jararaca/presentation/websocket/websocket_interceptor.py
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
|
|
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
|