port-ocean 0.23.1__tar.gz → 0.23.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.

Potentially problematic release.


This version of port-ocean might be problematic. Click here for more details.

Files changed (205) hide show
  1. {port_ocean-0.23.1 → port_ocean-0.23.3}/PKG-INFO +1 -1
  2. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.Deb +5 -1
  3. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.base.builder +6 -3
  4. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.base.runner +3 -2
  5. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.local +5 -0
  6. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/entry_local.sh +0 -2
  7. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/sync_raw.py +4 -0
  8. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/utils.py +19 -0
  9. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/metric/metric.py +17 -2
  10. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/ocean.py +0 -1
  11. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/ipc.py +1 -1
  12. {port_ocean-0.23.1 → port_ocean-0.23.3}/pyproject.toml +1 -1
  13. {port_ocean-0.23.1 → port_ocean-0.23.3}/LICENSE.md +0 -0
  14. {port_ocean-0.23.1 → port_ocean-0.23.3}/README.md +0 -0
  15. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.alpine +0 -0
  16. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Dockerfile.dockerignore +0 -0
  17. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/Makefile +0 -0
  18. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/grpcio.sh +0 -0
  19. {port_ocean-0.23.1 → port_ocean-0.23.3}/integrations/_infra/init.sh +0 -0
  20. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/__init__.py +0 -0
  21. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/bootstrap.py +0 -0
  22. {port_ocean-0.23.1/port_ocean/tests/helpers → port_ocean-0.23.3/port_ocean/cache}/__init__.py +0 -0
  23. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/base.py +0 -0
  24. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/disk.py +0 -0
  25. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/errors.py +0 -0
  26. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cache/memory.py +0 -0
  27. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/__init__.py +0 -0
  28. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cli.py +0 -0
  29. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/__init__.py +0 -0
  30. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  31. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/clean.py +0 -0
  32. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/dock.py +0 -0
  33. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/defaults/group.py +0 -0
  34. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/list_integrations.py +0 -0
  35. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/main.py +0 -0
  36. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/new.py +0 -0
  37. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/pull.py +0 -0
  38. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/sail.py +0 -0
  39. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/commands/version.py +0 -0
  40. {port_ocean-0.23.1/port_ocean/tests/clients/oauth → port_ocean-0.23.3/port_ocean/cli/cookiecutter}/__init__.py +0 -0
  41. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  42. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  43. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  44. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
  45. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  46. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  47. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
  48. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
  49. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  50. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  51. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
  52. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  53. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  54. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  55. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  56. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  57. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  58. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  59. {port_ocean-0.23.1/port_ocean/tests/clients → port_ocean-0.23.3/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests}/__init__.py +0 -0
  60. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
  61. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/cli/utils.py +0 -0
  62. {port_ocean-0.23.1/port_ocean/tests → port_ocean-0.23.3/port_ocean/clients}/__init__.py +0 -0
  63. {port_ocean-0.23.1/port_ocean/log → port_ocean-0.23.3/port_ocean/clients/auth}/__init__.py +0 -0
  64. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/auth/auth_client.py +0 -0
  65. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/auth/oauth_client.py +0 -0
  66. {port_ocean-0.23.1/port_ocean/helpers → port_ocean-0.23.3/port_ocean/clients/port}/__init__.py +0 -0
  67. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/authentication.py +0 -0
  68. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/client.py +0 -0
  69. {port_ocean-0.23.1/port_ocean/exceptions → port_ocean-0.23.3/port_ocean/clients/port/mixins}/__init__.py +0 -0
  70. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  71. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/entities.py +0 -0
  72. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/integrations.py +0 -0
  73. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/migrations.py +0 -0
  74. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/mixins/organization.py +0 -0
  75. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/retry_transport.py +0 -0
  76. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/types.py +0 -0
  77. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/clients/port/utils.py +0 -0
  78. {port_ocean-0.23.1/port_ocean/core/integrations → port_ocean-0.23.3/port_ocean/config}/__init__.py +0 -0
  79. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/config/base.py +0 -0
  80. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/config/dynamic.py +0 -0
  81. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/config/settings.py +0 -0
  82. {port_ocean-0.23.1/port_ocean/core/handlers/webhook → port_ocean-0.23.3/port_ocean/consumers}/__init__.py +0 -0
  83. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/consumers/kafka_consumer.py +0 -0
  84. {port_ocean-0.23.1/port_ocean/core/handlers/entities_state_applier/port → port_ocean-0.23.3/port_ocean/context}/__init__.py +0 -0
  85. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/context/event.py +0 -0
  86. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/context/ocean.py +0 -0
  87. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/context/resource.py +0 -0
  88. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/__init__.py +0 -0
  89. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/__init__.py +0 -0
  90. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/clean.py +0 -0
  91. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/common.py +0 -0
  92. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/defaults/initialize.py +0 -0
  93. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/__init__.py +0 -0
  94. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/base.py +0 -0
  95. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/factory.py +0 -0
  96. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/http.py +0 -0
  97. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/kafka.py +0 -0
  98. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/once.py +0 -0
  99. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/polling.py +0 -0
  100. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/event_listener/webhooks_only.py +0 -0
  101. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/__init__.py +0 -0
  102. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/base.py +0 -0
  103. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  104. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  105. {port_ocean-0.23.1/port_ocean/context → port_ocean-0.23.3/port_ocean/core/handlers/entities_state_applier/port}/__init__.py +0 -0
  106. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  107. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  108. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  109. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  110. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  111. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
  112. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  113. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  114. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  115. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  116. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/queue/__init__.py +0 -0
  117. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
  118. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/queue/local_queue.py +0 -0
  119. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
  120. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
  121. {port_ocean-0.23.1/port_ocean/consumers → port_ocean-0.23.3/port_ocean/core/handlers/webhook}/__init__.py +0 -0
  122. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
  123. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/processor_manager.py +0 -0
  124. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/handlers/webhook/webhook_event.py +0 -0
  125. {port_ocean-0.23.1/port_ocean/config → port_ocean-0.23.3/port_ocean/core/integrations}/__init__.py +0 -0
  126. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/base.py +0 -0
  127. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  128. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/events.py +0 -0
  129. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/handler.py +0 -0
  130. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/live_events.py +0 -0
  131. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/integrations/mixins/sync.py +0 -0
  132. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/models.py +0 -0
  133. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/ocean_types.py +0 -0
  134. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
  135. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/core/utils/utils.py +0 -0
  136. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/debug_cli.py +0 -0
  137. {port_ocean-0.23.1/port_ocean/clients/port/mixins → port_ocean-0.23.3/port_ocean/exceptions}/__init__.py +0 -0
  138. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/api.py +0 -0
  139. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/base.py +0 -0
  140. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/clients.py +0 -0
  141. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/context.py +0 -0
  142. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/core.py +0 -0
  143. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/port_defaults.py +0 -0
  144. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/utils.py +0 -0
  145. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/exceptions/webhook_processor.py +0 -0
  146. {port_ocean-0.23.1/port_ocean/clients/port → port_ocean-0.23.3/port_ocean/helpers}/__init__.py +0 -0
  147. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/async_client.py +0 -0
  148. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/metric/utils.py +0 -0
  149. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/helpers/retry.py +0 -0
  150. {port_ocean-0.23.1/port_ocean/clients/auth → port_ocean-0.23.3/port_ocean/log}/__init__.py +0 -0
  151. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/log/handlers.py +0 -0
  152. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/log/logger_setup.py +0 -0
  153. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/log/sensetive.py +0 -0
  154. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/middlewares.py +0 -0
  155. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/py.typed +0 -0
  156. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/run.py +0 -0
  157. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/sonar-project.properties +0 -0
  158. {port_ocean-0.23.1/port_ocean/clients → port_ocean-0.23.3/port_ocean/tests}/__init__.py +0 -0
  159. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/cache/__init__.py +0 -0
  160. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/cache/test_disk_cache.py +0 -0
  161. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/cache/test_memory_cache.py +0 -0
  162. {port_ocean-0.23.1/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests → port_ocean-0.23.3/port_ocean/tests/clients}/__init__.py +0 -0
  163. {port_ocean-0.23.1/port_ocean/cli/cookiecutter → port_ocean-0.23.3/port_ocean/tests/clients/oauth}/__init__.py +0 -0
  164. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
  165. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
  166. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
  167. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/conftest.py +0 -0
  168. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/conftest.py +0 -0
  169. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/defaults/test_common.py +0 -0
  170. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
  171. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
  172. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
  173. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
  174. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
  175. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
  176. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
  177. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
  178. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +0 -0
  179. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
  180. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/test_utils.py +0 -0
  181. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
  182. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
  183. {port_ocean-0.23.1/port_ocean/cache → port_ocean-0.23.3/port_ocean/tests/helpers}/__init__.py +0 -0
  184. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/fake_port_api.py +0 -0
  185. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/fixtures.py +0 -0
  186. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/integration.py +0 -0
  187. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/ocean_app.py +0 -0
  188. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/port_client.py +0 -0
  189. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/helpers/smoke_test.py +0 -0
  190. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/log/test_handlers.py +0 -0
  191. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/test_metric.py +0 -0
  192. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/test_ocean.py +0 -0
  193. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/test_smoke.py +0 -0
  194. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/utils/test_async_iterators.py +0 -0
  195. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/tests/utils/test_cache.py +0 -0
  196. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/__init__.py +0 -0
  197. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/async_http.py +0 -0
  198. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/async_iterators.py +0 -0
  199. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/cache.py +0 -0
  200. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/misc.py +0 -0
  201. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/queue_utils.py +0 -0
  202. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/repeat.py +0 -0
  203. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/signal.py +0 -0
  204. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/utils/time.py +0 -0
  205. {port_ocean-0.23.1 → port_ocean-0.23.3}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.23.1
3
+ Version: 0.23.3
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
@@ -5,11 +5,15 @@ FROM ${BASE_BUILDER_PYTHON_IMAGE} AS base
5
5
 
6
6
  ARG BUILD_CONTEXT
7
7
  ARG BUILDPLATFORM
8
+ ARG PROMETHEUS_MULTIPROC_DIR=/tmp/ocean/prometheus/metrics
8
9
 
9
10
  ENV LIBRDKAFKA_VERSION=2.8.2 \
10
11
  PYTHONUNBUFFERED=1 \
11
12
  POETRY_VIRTUALENVS_IN_PROJECT=1 \
12
- PIP_ROOT_USER_ACTION=ignore
13
+ PIP_ROOT_USER_ACTION=ignore \
14
+ PROMETHEUS_MULTIPROC_DIR=${PROMETHEUS_MULTIPROC_DIR}
15
+
16
+ RUN mkdir -p ${PROMETHEUS_MULTIPROC_DIR}
13
17
 
14
18
  WORKDIR /app
15
19
 
@@ -1,5 +1,6 @@
1
- ARG BASE_PYTHON_IMAGE=debian:trixie-slim
2
- # debian:trixie-slim - Python 3.12
1
+ ARG ACCOUNT_ID=1
2
+ ARG BASE_PYTHON_IMAGE=${ACCOUNT_ID}.dkr.ecr.eu-west-1.amazonaws.com/echo/python:3.13
3
+
3
4
  FROM ${BASE_PYTHON_IMAGE}
4
5
 
5
6
  LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
@@ -7,7 +8,9 @@ LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
7
8
  ENV LIBRDKAFKA_VERSION=2.8.2 \
8
9
  PYTHONUNBUFFERED=1 \
9
10
  POETRY_VIRTUALENVS_IN_PROJECT=1 \
10
- PIP_ROOT_USER_ACTION=ignore
11
+ PIP_ROOT_USER_ACTION=ignore \
12
+ POETRY_VIRTUALENVS_PREFER_ACTIVE_PYTHON=true \
13
+ POETRY_PYTHON=/usr/local/bin/python3.13
11
14
 
12
15
  RUN apt-get update \
13
16
  && apt-get install -y \
@@ -1,5 +1,6 @@
1
- ARG BASE_PYTHON_IMAGE=debian:trixie-slim
2
- # debian:trixie-slim - Python 3.12
1
+ ARG ACCOUNT_ID=1
2
+ ARG BASE_PYTHON_IMAGE=${ACCOUNT_ID}.dkr.ecr.eu-west-1.amazonaws.com/echo/python:3.13
3
+
3
4
  FROM ${BASE_PYTHON_IMAGE}
4
5
 
5
6
  LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
@@ -25,6 +25,11 @@ RUN apt-get update \
25
25
  && apt-get clean
26
26
 
27
27
  ARG BUILD_CONTEXT
28
+ ARG PROMETHEUS_MULTIPROC_DIR=/tmp/ocean/prometheus/metrics
29
+
30
+ ENV PROMETHEUS_MULTIPROC_DIR=${PROMETHEUS_MULTIPROC_DIR}
31
+
32
+ RUN mkdir -p ${PROMETHEUS_MULTIPROC_DIR}
28
33
 
29
34
  WORKDIR /app
30
35
 
@@ -1,6 +1,4 @@
1
1
  #!/bin/bash
2
- mkdir -p /tmp/prometheus_multiproc_dir
3
- export PROMETHEUS_MULTIPROC_DIR=/tmp/prometheus_multiproc_dir
4
2
  if [ -z "$BUILD_CONTEXT" ]; then
5
3
  echo "BUILD_CONTEXT is not set"
6
4
  exit 1
@@ -16,6 +16,7 @@ from port_ocean.core.handlers.port_app_config.models import ResourceConfig
16
16
  from port_ocean.core.integrations.mixins import HandlerMixin, EventsMixin
17
17
  from port_ocean.core.integrations.mixins.utils import (
18
18
  ProcessWrapper,
19
+ clear_http_client_context,
19
20
  is_resource_supported,
20
21
  unsupported_kind_response,
21
22
  resync_generator_wrapper,
@@ -594,6 +595,7 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
594
595
  ) -> None:
595
596
  logger.info(f"process started successfully for {resource.kind} with index {index}")
596
597
 
598
+ clear_http_client_context()
597
599
  async def process_resource_task() -> None:
598
600
  result = await self._process_resource(
599
601
  resource, index, user_agent_type
@@ -775,3 +777,5 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
775
777
  return True
776
778
  finally:
777
779
  await ocean.app.cache_provider.clear()
780
+ if ocean.app.process_execution_mode == ProcessExecutionMode.multi_process:
781
+ ocean.metrics.cleanup_prometheus_metrics()
@@ -19,6 +19,10 @@ from port_ocean.exceptions.core import (
19
19
  KindNotImplementedException,
20
20
  )
21
21
 
22
+ from port_ocean.utils.async_http import _http_client
23
+ from port_ocean.clients.port.utils import _http_client as _port_http_client
24
+
25
+ from port_ocean.context.ocean import ocean
22
26
 
23
27
  @contextmanager
24
28
  def resync_error_handling() -> Generator[None, None, None]:
@@ -76,6 +80,7 @@ def unsupported_kind_response(
76
80
  logger.error(f"Kind {kind} is not supported in this integration")
77
81
  return [], [KindNotImplementedException(kind, available_resync_kinds)]
78
82
 
83
+
79
84
  class ProcessWrapper(multiprocessing.Process):
80
85
  def __init__(self, *args, **kwargs):
81
86
  super().__init__(*args, **kwargs)
@@ -87,4 +92,18 @@ class ProcessWrapper(multiprocessing.Process):
87
92
  logger.error(f"Process {self.pid} failed with exit code {self.exitcode}")
88
93
  else:
89
94
  logger.info(f"Process {self.pid} finished with exit code {self.exitcode}")
95
+ ocean.metrics.cleanup_prometheus_metrics(self.pid)
90
96
  return super().join()
97
+
98
+ def clear_http_client_context() -> None:
99
+ try:
100
+ while _http_client.top is not None:
101
+ _http_client.pop()
102
+ except (RuntimeError, AttributeError):
103
+ pass
104
+
105
+ try:
106
+ while _port_http_client.top is not None:
107
+ _port_http_client.pop()
108
+ except (RuntimeError, AttributeError):
109
+ pass
@@ -1,9 +1,10 @@
1
+ import os
1
2
  from typing import Any, TYPE_CHECKING, Optional, Dict, List, Tuple
2
3
  from fastapi import APIRouter
3
4
  from port_ocean.exceptions.context import ResourceContextNotFoundError
4
5
  import prometheus_client
5
6
  from httpx import AsyncClient
6
-
7
+ from fastapi.responses import PlainTextResponse
7
8
  from loguru import logger
8
9
  from port_ocean.context import resource
9
10
  from prometheus_client import Gauge
@@ -193,7 +194,21 @@ class Metrics:
193
194
  """
194
195
  self.get_metric(name, labels).set(value)
195
196
 
197
+ @staticmethod
198
+ def cleanup_prometheus_metrics(pid: int | None = None) -> None:
199
+ try:
200
+ prometheus_multiproc_dir = os.environ.get("PROMETHEUS_MULTIPROC_DIR")
201
+ for file in os.listdir(prometheus_multiproc_dir):
202
+ if pid:
203
+ if file.endswith(".db") and file[0:-3].split("_")[-1] == str(pid):
204
+ os.remove(f"{prometheus_multiproc_dir}/{file}")
205
+ else:
206
+ os.remove(f"{prometheus_multiproc_dir}/{file}")
207
+ except Exception as e:
208
+ logger.error(f"Failed to cleanup prometheus metrics: {e}")
209
+
196
210
  def initialize_metrics(self, kind_blockes: list[str]) -> None:
211
+ self.cleanup_prometheus_metrics()
197
212
  for kind in kind_blockes:
198
213
  self.set_metric(MetricType.SUCCESS_NAME, [kind, MetricPhase.RESYNC], 0)
199
214
  self.set_metric(MetricType.DURATION_NAME, [kind, MetricPhase.RESYNC], 0)
@@ -241,7 +256,7 @@ class Metrics:
241
256
  return APIRouter()
242
257
  router = APIRouter()
243
258
 
244
- @router.get("/")
259
+ @router.get("/", response_class=PlainTextResponse)
245
260
  async def prom_metrics() -> str:
246
261
  return self.generate_latest()
247
262
 
@@ -96,7 +96,6 @@ class Ocean:
96
96
  self.resync_state_updater = ResyncStateUpdater(
97
97
  self.port_client, self.config.scheduled_resync_interval
98
98
  )
99
-
100
99
  self.app_initialized = False
101
100
 
102
101
  def _get_process_execution_mode(self) -> ProcessExecutionMode:
@@ -7,7 +7,7 @@ class FileIPC:
7
7
  def __init__(self, process_id: str, name: str, default_return: Any = None):
8
8
  self.process_id = process_id
9
9
  self.name = name
10
- self.dir_path = f"/tmp/p_{self.process_id}"
10
+ self.dir_path = f"/tmp/ocean/processes/p_{self.process_id}"
11
11
  self.file_path = f"{self.dir_path}/{self.name}.pkl"
12
12
  self.default_return = default_return
13
13
  os.makedirs(self.dir_path, exist_ok=True)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.23.1"
3
+ version = "0.23.3"
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