jararaca 0.3.12a0__tar.gz → 0.3.12a2__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 (84) hide show
  1. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/PKG-INFO +1 -1
  2. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/pyproject.toml +1 -1
  3. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/tools/typescript/interface_parser.py +29 -4
  4. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/LICENSE +0 -0
  5. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/README.md +0 -0
  6. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/CNAME +0 -0
  7. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/architecture.md +0 -0
  8. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
  9. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
  10. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/assets/tracing_example.png +0 -0
  11. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/index.md +0 -0
  12. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/messagebus.md +0 -0
  13. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/retry.md +0 -0
  14. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/scheduler.md +0 -0
  15. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/stylesheets/custom.css +0 -0
  16. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/docs/websocket.md +0 -0
  17. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/__init__.py +0 -0
  18. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/__main__.py +0 -0
  19. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/broker_backend/__init__.py +0 -0
  20. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/broker_backend/mapper.py +0 -0
  21. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
  22. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/cli.py +0 -0
  23. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/common/__init__.py +0 -0
  24. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/core/__init__.py +0 -0
  25. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/core/providers.py +0 -0
  26. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/core/uow.py +0 -0
  27. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/di.py +0 -0
  28. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/files/entity.py.mako +0 -0
  29. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/lifecycle.py +0 -0
  30. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/__init__.py +0 -0
  31. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/bus_message_controller.py +0 -0
  32. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/consumers/__init__.py +0 -0
  33. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/decorators.py +0 -0
  34. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
  35. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
  36. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
  37. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/message.py +0 -0
  38. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/publisher.py +0 -0
  39. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/messagebus/worker.py +0 -0
  40. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/microservice.py +0 -0
  41. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/observability/decorators.py +0 -0
  42. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/observability/interceptor.py +0 -0
  43. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/observability/providers/__init__.py +0 -0
  44. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/observability/providers/otel.py +0 -0
  45. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/base.py +0 -0
  46. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/exports.py +0 -0
  47. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/interceptors/__init__.py +0 -0
  48. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
  49. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/session.py +0 -0
  50. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/sort_filter.py +0 -0
  51. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/persistence/utilities.py +0 -0
  52. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/__init__.py +0 -0
  53. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/decorators.py +0 -0
  54. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/hooks.py +0 -0
  55. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/http_microservice.py +0 -0
  56. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/server.py +0 -0
  57. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/__init__.py +0 -0
  58. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/base_types.py +0 -0
  59. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/context.py +0 -0
  60. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/decorators.py +0 -0
  61. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/redis.py +0 -0
  62. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/types.py +0 -0
  63. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
  64. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/py.typed +0 -0
  65. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/reflect/__init__.py +0 -0
  66. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/reflect/controller_inspect.py +0 -0
  67. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/reflect/metadata.py +0 -0
  68. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/__init__.py +0 -0
  69. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/http/__init__.py +0 -0
  70. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/http/backends/__init__.py +0 -0
  71. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/http/backends/httpx.py +0 -0
  72. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/http/backends/otel.py +0 -0
  73. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/http/decorators.py +0 -0
  74. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/rpc/http/httpx.py +0 -0
  75. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/scheduler/__init__.py +0 -0
  76. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/scheduler/beat_worker.py +0 -0
  77. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/scheduler/decorators.py +0 -0
  78. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/scheduler/types.py +0 -0
  79. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/tools/app_config/__init__.py +0 -0
  80. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/tools/app_config/decorators.py +0 -0
  81. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/tools/app_config/interceptor.py +0 -0
  82. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/utils/__init__.py +0 -0
  83. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/src/jararaca/utils/rabbitmq_utils.py +0 -0
  84. {jararaca-0.3.12a0 → jararaca-0.3.12a2}/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.12a0
3
+ Version: 0.3.12a2
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.12a0"
3
+ version = "0.3.12a2"
4
4
  description = "A simple and fast API framework for Python"
5
5
  authors = ["Lucas S <me@luscasleo.dev>"]
6
6
  readme = "README.md"
@@ -406,6 +406,7 @@ export type ResponseType =
406
406
  export interface HttpBackendRequest {
407
407
  method: string;
408
408
  path: string;
409
+ pathParams: { [key: string]: string };
409
410
  headers: { [key: string]: string };
410
411
  query: { [key: string]: unknown };
411
412
  body: unknown;
@@ -543,6 +544,16 @@ def write_rest_controller_to_typescript_interface(
543
544
  )
544
545
  class_buffer.write(f"\t\t\tpath: `/{final_path}`,\n")
545
546
 
547
+ # Sort path params
548
+ path_params = sorted(
549
+ [param for param in arg_params_spec if param.type_ == "path"],
550
+ key=lambda x: x.name,
551
+ )
552
+ class_buffer.write("\t\t\tpathParams: {\n")
553
+ for param in path_params:
554
+ class_buffer.write(f'\t\t\t\t"{param.name}": {param.name},\n')
555
+ class_buffer.write("\t\t\t},\n")
556
+
546
557
  # Sort headers
547
558
  header_params = sorted(
548
559
  [param for param in arg_params_spec if param.type_ == "header"],
@@ -592,8 +603,19 @@ class HttpParemeterSpec:
592
603
 
593
604
 
594
605
  def parse_path_with_params(path: str, parameters: list[HttpParemeterSpec]) -> str:
606
+ # Use a regular expression to match both simple parameters {param} and
607
+ # parameters with converters {param:converter}
608
+ import re
609
+
610
+ pattern = re.compile(r"{([^:}]+)(?::[^}]*)?}")
611
+
612
+ # For each parameter found in the path, replace it with :param format
595
613
  for parameter in parameters:
596
- path = path.replace(f"{{{parameter.name}}}", f"${{{parameter.name}}}")
614
+ path = pattern.sub(
615
+ lambda m: f":{m.group(1)}" if m.group(1) == parameter.name else m.group(0),
616
+ path,
617
+ )
618
+
597
619
  return path
598
620
 
599
621
 
@@ -717,7 +739,9 @@ def extract_parameters(
717
739
  )
718
740
  mapped_types.update(rec_mapped_types)
719
741
  parameters_list.extend(rec_parameters)
720
- elif controller.path.find(f":{parameter_name}") != -1:
742
+ elif (
743
+ re.search(f":{parameter_name}(?:/|$)", controller.path) is not None
744
+ ):
721
745
  mapped_types.add(annotated_type)
722
746
  parameters_list.append(
723
747
  HttpParemeterSpec(
@@ -751,8 +775,9 @@ def extract_parameters(
751
775
  )
752
776
  )
753
777
  elif (
754
- controller.path.find(f"{{{parameter_name}}}") != -1
755
- or mapping.path.find(f"{{{parameter_name}}}") != -1
778
+ # Match both simple parameters {param} and parameters with converters {param:converter}
779
+ re.search(f"{{{parameter_name}(:.*?)?}}", controller.path) is not None
780
+ or re.search(f"{{{parameter_name}(:.*?)?}}", mapping.path) is not None
756
781
  ):
757
782
  mapped_types.add(parameter_type)
758
783
  parameters_list.append(
File without changes
File without changes
File without changes
File without changes
File without changes