port-ocean 0.5.4__tar.gz → 0.5.5__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 port-ocean might be problematic. Click here for more details.

Files changed (128) hide show
  1. {port_ocean-0.5.4 → port_ocean-0.5.5}/PKG-INFO +1 -1
  2. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/utils/cache.py +17 -5
  3. {port_ocean-0.5.4 → port_ocean-0.5.5}/pyproject.toml +1 -1
  4. {port_ocean-0.5.4 → port_ocean-0.5.5}/LICENSE.md +0 -0
  5. {port_ocean-0.5.4 → port_ocean-0.5.5}/README.md +0 -0
  6. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/__init__.py +0 -0
  7. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/bootstrap.py +0 -0
  8. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/__init__.py +0 -0
  9. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cli.py +0 -0
  10. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/__init__.py +0 -0
  11. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  12. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/defaults/clean.py +0 -0
  13. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/defaults/dock.py +0 -0
  14. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/defaults/group.py +0 -0
  15. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/list_integrations.py +0 -0
  16. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/main.py +0 -0
  17. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/new.py +0 -0
  18. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/pull.py +0 -0
  19. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/sail.py +0 -0
  20. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/commands/version.py +0 -0
  21. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/__init__.py +0 -0
  22. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  23. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  24. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  25. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.dockerignore +0 -0
  26. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  27. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  28. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  29. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  30. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Dockerfile +0 -0
  31. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Makefile +0 -0
  32. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  33. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  34. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/config.yaml +0 -0
  35. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  36. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  37. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  38. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  39. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  40. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
  41. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/cli/utils.py +0 -0
  42. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/__init__.py +0 -0
  43. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/__init__.py +0 -0
  44. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/authentication.py +0 -0
  45. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/client.py +0 -0
  46. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/mixins/__init__.py +0 -0
  47. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  48. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/mixins/entities.py +0 -0
  49. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/mixins/integrations.py +0 -0
  50. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/mixins/migrations.py +0 -0
  51. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/retry_transport.py +0 -0
  52. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/types.py +0 -0
  53. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/clients/port/utils.py +0 -0
  54. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/config/__init__.py +0 -0
  55. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/config/base.py +0 -0
  56. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/config/dynamic.py +0 -0
  57. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/config/settings.py +0 -0
  58. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/consumers/__init__.py +0 -0
  59. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/consumers/kafka_consumer.py +0 -0
  60. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/context/__init__.py +0 -0
  61. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/context/event.py +0 -0
  62. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/context/ocean.py +0 -0
  63. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/context/resource.py +0 -0
  64. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/__init__.py +0 -0
  65. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/defaults/__init__.py +0 -0
  66. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/defaults/clean.py +0 -0
  67. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/defaults/common.py +0 -0
  68. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/defaults/initialize.py +0 -0
  69. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/__init__.py +0 -0
  70. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/base.py +0 -0
  71. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/factory.py +0 -0
  72. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/http.py +0 -0
  73. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/kafka.py +0 -0
  74. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/once.py +0 -0
  75. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/event_listener/polling.py +0 -0
  76. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/__init__.py +0 -0
  77. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/base.py +0 -0
  78. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  79. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  80. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
  81. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  82. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  83. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  84. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entities_state_applier/port/validate_entity_relations.py +0 -0
  85. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  86. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  87. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
  88. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  89. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  90. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  91. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  92. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/__init__.py +0 -0
  93. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/base.py +0 -0
  94. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  95. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/mixins/events.py +0 -0
  96. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/mixins/handler.py +0 -0
  97. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/mixins/sync.py +0 -0
  98. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
  99. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/integrations/mixins/utils.py +0 -0
  100. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/models.py +0 -0
  101. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/ocean_types.py +0 -0
  102. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/core/utils.py +0 -0
  103. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/__init__.py +0 -0
  104. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/api.py +0 -0
  105. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/base.py +0 -0
  106. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/clients.py +0 -0
  107. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/context.py +0 -0
  108. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/core.py +0 -0
  109. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/port_defaults.py +0 -0
  110. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/exceptions/utils.py +0 -0
  111. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/helpers/__init__.py +0 -0
  112. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/helpers/async_client.py +0 -0
  113. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/helpers/retry.py +0 -0
  114. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/log/__init__.py +0 -0
  115. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/log/handlers.py +0 -0
  116. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/log/logger_setup.py +0 -0
  117. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/log/sensetive.py +0 -0
  118. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/middlewares.py +0 -0
  119. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/ocean.py +0 -0
  120. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/py.typed +0 -0
  121. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/run.py +0 -0
  122. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/sonar-project.properties +0 -0
  123. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/utils/__init__.py +0 -0
  124. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/utils/async_http.py +0 -0
  125. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/utils/misc.py +0 -0
  126. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/utils/repeat.py +0 -0
  127. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/utils/signal.py +0 -0
  128. {port_ocean-0.5.4 → port_ocean-0.5.5}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: Port Ocean is a CLI tool for managing your Port projects.
5
5
  Home-page: https://app.getport.io
6
6
  Keywords: ocean,port-ocean,port
@@ -1,14 +1,20 @@
1
1
  import functools
2
+ import hashlib
2
3
  from typing import Callable, AsyncIterator, Any
3
-
4
4
  from port_ocean.context.event import event
5
5
 
6
6
  AsyncIteratorCallable = Callable[..., AsyncIterator[list[Any]]]
7
7
 
8
8
 
9
- def cache_iterator_result(
10
- cache_key: str,
11
- ) -> Callable[[AsyncIteratorCallable], AsyncIteratorCallable]:
9
+ def hash_func(function_name: str, *args: Any, **kwargs: Any) -> str:
10
+ args_str = str(args)
11
+ kwargs_str = str(kwargs)
12
+ concatenated_string = args_str + kwargs_str
13
+ hash_object = hashlib.sha256(concatenated_string.encode())
14
+ return f"{function_name}_{hash_object.hexdigest()}"
15
+
16
+
17
+ def cache_iterator_result() -> Callable[[AsyncIteratorCallable], AsyncIteratorCallable]:
12
18
  """
13
19
  This decorator caches the results of an async iterator function. It checks if the result is already in the cache
14
20
  and if not, it fetches the all the data and caches it at ocean.attributes cache the end of the iteration.
@@ -18,9 +24,12 @@ def cache_iterator_result(
18
24
  For example, you can use this to cache data coming back from the third-party API to avoid making the same request
19
25
  multiple times for each kind.
20
26
 
27
+ The caching mechanism also detects changes in parameters.
28
+ If a function is called with different parameter values, it will be stored in different hash keys for each unique call.
29
+
21
30
  Usage:
22
31
  ```python
23
- @cache_iterator_result("my_cache_key")
32
+ @cache_iterator_result()
24
33
  async def my_async_iterator_function():
25
34
  # Your code here
26
35
  ```
@@ -29,6 +38,9 @@ def cache_iterator_result(
29
38
  def decorator(func: AsyncIteratorCallable) -> AsyncIteratorCallable:
30
39
  @functools.wraps(func)
31
40
  async def wrapper(*args: Any, **kwargs: Any) -> Any:
41
+ # Create Hash key from function name, args and kwargs
42
+ cache_key = hash_func(func.__name__, *args, **kwargs)
43
+
32
44
  # Check if the result is already in the cache
33
45
  if cache := event.attributes.get(cache_key):
34
46
  yield cache
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.5.4"
3
+ version = "0.5.5"
4
4
  description = "Port Ocean is a CLI tool for managing your Port projects."
5
5
  readme = "README.md"
6
6
  homepage = "https://app.getport.io"
File without changes
File without changes
File without changes