port-ocean 0.24.10__tar.gz → 0.24.12__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 (207) hide show
  1. {port_ocean-0.24.10 → port_ocean-0.24.12}/PKG-INFO +5 -5
  2. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/webhook/processor_manager.py +19 -1
  3. port_ocean-0.24.12/port_ocean/exceptions/webhook_processor.py +17 -0
  4. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/helpers/async_client.py +3 -4
  5. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +87 -3
  6. {port_ocean-0.24.10 → port_ocean-0.24.12}/pyproject.toml +6 -6
  7. port_ocean-0.24.10/port_ocean/exceptions/webhook_processor.py +0 -4
  8. {port_ocean-0.24.10 → port_ocean-0.24.12}/LICENSE.md +0 -0
  9. {port_ocean-0.24.10 → port_ocean-0.24.12}/README.md +0 -0
  10. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Dockerfile.Deb +0 -0
  11. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Dockerfile.alpine +0 -0
  12. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Dockerfile.base.builder +0 -0
  13. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Dockerfile.base.runner +0 -0
  14. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Dockerfile.dockerignore +0 -0
  15. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Dockerfile.local +0 -0
  16. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/Makefile +0 -0
  17. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/entry_local.sh +0 -0
  18. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/grpcio.sh +0 -0
  19. {port_ocean-0.24.10 → port_ocean-0.24.12}/integrations/_infra/init.sh +0 -0
  20. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/__init__.py +0 -0
  21. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/bootstrap.py +0 -0
  22. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cache/__init__.py +0 -0
  23. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cache/base.py +0 -0
  24. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cache/disk.py +0 -0
  25. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cache/errors.py +0 -0
  26. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cache/memory.py +0 -0
  27. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/__init__.py +0 -0
  28. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cli.py +0 -0
  29. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/__init__.py +0 -0
  30. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  31. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/defaults/clean.py +0 -0
  32. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/defaults/dock.py +0 -0
  33. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/defaults/group.py +0 -0
  34. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/list_integrations.py +0 -0
  35. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/main.py +0 -0
  36. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/new.py +0 -0
  37. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/pull.py +0 -0
  38. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/sail.py +0 -0
  39. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/commands/version.py +0 -0
  40. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/__init__.py +0 -0
  41. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  42. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  43. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  44. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
  45. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  46. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  47. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
  48. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
  49. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  50. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  51. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
  52. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  53. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  54. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  55. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  56. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  57. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  58. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  59. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
  60. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
  61. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/cli/utils.py +0 -0
  62. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/__init__.py +0 -0
  63. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/auth/__init__.py +0 -0
  64. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/auth/auth_client.py +0 -0
  65. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/auth/oauth_client.py +0 -0
  66. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/__init__.py +0 -0
  67. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/authentication.py +0 -0
  68. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/client.py +0 -0
  69. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/mixins/__init__.py +0 -0
  70. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  71. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/mixins/entities.py +0 -0
  72. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/mixins/integrations.py +0 -0
  73. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/mixins/migrations.py +0 -0
  74. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/mixins/organization.py +0 -0
  75. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/retry_transport.py +0 -0
  76. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/types.py +0 -0
  77. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/clients/port/utils.py +0 -0
  78. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/config/__init__.py +0 -0
  79. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/config/base.py +0 -0
  80. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/config/dynamic.py +0 -0
  81. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/config/settings.py +0 -0
  82. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/consumers/__init__.py +0 -0
  83. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/consumers/kafka_consumer.py +0 -0
  84. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/context/__init__.py +0 -0
  85. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/context/event.py +0 -0
  86. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/context/metric_resource.py +0 -0
  87. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/context/ocean.py +0 -0
  88. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/context/resource.py +0 -0
  89. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/__init__.py +0 -0
  90. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/defaults/__init__.py +0 -0
  91. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/defaults/clean.py +0 -0
  92. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/defaults/common.py +0 -0
  93. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/defaults/initialize.py +0 -0
  94. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/__init__.py +0 -0
  95. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/base.py +0 -0
  96. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/factory.py +0 -0
  97. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/http.py +0 -0
  98. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/kafka.py +0 -0
  99. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/once.py +0 -0
  100. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/polling.py +0 -0
  101. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/event_listener/webhooks_only.py +0 -0
  102. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/__init__.py +0 -0
  103. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/base.py +0 -0
  104. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  105. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  106. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
  107. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  108. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  109. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  110. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  111. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  112. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
  113. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  114. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  115. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  116. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  117. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/queue/__init__.py +0 -0
  118. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
  119. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/queue/local_queue.py +0 -0
  120. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
  121. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
  122. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/webhook/__init__.py +0 -0
  123. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
  124. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/handlers/webhook/webhook_event.py +0 -0
  125. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/__init__.py +0 -0
  126. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/base.py +0 -0
  127. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  128. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/events.py +0 -0
  129. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/handler.py +0 -0
  130. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/live_events.py +0 -0
  131. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/sync.py +0 -0
  132. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
  133. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/integrations/mixins/utils.py +0 -0
  134. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/models.py +0 -0
  135. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/ocean_types.py +0 -0
  136. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
  137. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/core/utils/utils.py +0 -0
  138. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/debug_cli.py +0 -0
  139. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/__init__.py +0 -0
  140. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/api.py +0 -0
  141. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/base.py +0 -0
  142. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/clients.py +0 -0
  143. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/context.py +0 -0
  144. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/core.py +0 -0
  145. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/port_defaults.py +0 -0
  146. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/exceptions/utils.py +0 -0
  147. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/helpers/__init__.py +0 -0
  148. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/helpers/metric/metric.py +0 -0
  149. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/helpers/metric/utils.py +0 -0
  150. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/helpers/retry.py +0 -0
  151. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/log/__init__.py +0 -0
  152. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/log/handlers.py +0 -0
  153. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/log/logger_setup.py +0 -0
  154. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/log/sensetive.py +0 -0
  155. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/middlewares.py +0 -0
  156. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/ocean.py +0 -0
  157. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/py.typed +0 -0
  158. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/run.py +0 -0
  159. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/sonar-project.properties +0 -0
  160. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/__init__.py +0 -0
  161. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/cache/__init__.py +0 -0
  162. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/cache/test_disk_cache.py +0 -0
  163. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/cache/test_memory_cache.py +0 -0
  164. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/clients/__init__.py +0 -0
  165. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/clients/oauth/__init__.py +0 -0
  166. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
  167. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
  168. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
  169. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/conftest.py +0 -0
  170. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/conftest.py +0 -0
  171. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/defaults/test_common.py +0 -0
  172. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
  173. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
  174. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
  175. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
  176. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
  177. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
  178. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
  179. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
  180. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
  181. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/test_utils.py +0 -0
  182. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
  183. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
  184. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/__init__.py +0 -0
  185. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/fake_port_api.py +0 -0
  186. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/fixtures.py +0 -0
  187. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/integration.py +0 -0
  188. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/ocean_app.py +0 -0
  189. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/port_client.py +0 -0
  190. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/helpers/smoke_test.py +0 -0
  191. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/log/test_handlers.py +0 -0
  192. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/test_metric.py +0 -0
  193. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/test_ocean.py +0 -0
  194. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/test_smoke.py +0 -0
  195. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/utils/test_async_iterators.py +0 -0
  196. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/tests/utils/test_cache.py +0 -0
  197. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/__init__.py +0 -0
  198. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/async_http.py +0 -0
  199. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/async_iterators.py +0 -0
  200. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/cache.py +0 -0
  201. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/ipc.py +0 -0
  202. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/misc.py +0 -0
  203. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/queue_utils.py +0 -0
  204. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/repeat.py +0 -0
  205. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/signal.py +0 -0
  206. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/utils/time.py +0 -0
  207. {port_ocean-0.24.10 → port_ocean-0.24.12}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.24.10
3
+ Version: 0.24.12
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
@@ -24,10 +24,10 @@ Classifier: Topic :: Utilities
24
24
  Provides-Extra: cli
25
25
  Requires-Dist: aiostream (>=0.5.2,<0.7.0)
26
26
  Requires-Dist: click (>=8.1.3,<9.0.0) ; extra == "cli"
27
- Requires-Dist: confluent-kafka (>=2.8.2,<3.0.0)
27
+ Requires-Dist: confluent-kafka (>=2.10.1,<3.0.0)
28
28
  Requires-Dist: cookiecutter (>=2.1.1,<3.0.0) ; extra == "cli"
29
29
  Requires-Dist: fastapi (>=0.115.3,<0.116.0)
30
- Requires-Dist: httpx (>=0.24.1,<0.28.0)
30
+ Requires-Dist: httpx (>=0.28.1,<0.29.0)
31
31
  Requires-Dist: jinja2-time (>=0.2.0,<0.3.0) ; extra == "cli"
32
32
  Requires-Dist: jq (>=1.8.0,<2.0.0)
33
33
  Requires-Dist: loguru (>=0.7.0,<0.8.0)
@@ -41,8 +41,8 @@ Requires-Dist: pyyaml (>=6.0,<7.0)
41
41
  Requires-Dist: rich (>=13.4.1,<14.0.0) ; extra == "cli"
42
42
  Requires-Dist: six (>=1.16.0,<2.0.0)
43
43
  Requires-Dist: tomli (>=2.0.1,<3.0.0)
44
- Requires-Dist: urllib3 (>=1.26.16,<3.0.0)
45
- Requires-Dist: uvicorn (>=0.22,<0.31)
44
+ Requires-Dist: urllib3 (>=2.5.0,<3.0.0)
45
+ Requires-Dist: uvicorn (>=0.34.3,<0.35.0)
46
46
  Requires-Dist: werkzeug (>=2.3.4,<4.0.0)
47
47
  Project-URL: Repository, https://github.com/port-labs/Port-Ocean
48
48
  Description-Content-Type: text/markdown
@@ -8,6 +8,7 @@ from port_ocean.context.event import EventType, event_context
8
8
  from port_ocean.core.handlers.port_app_config.models import ResourceConfig
9
9
  from port_ocean.core.integrations.mixins.events import EventsMixin
10
10
  from port_ocean.core.integrations.mixins.live_events import LiveEventsMixin
11
+ from port_ocean.exceptions.webhook_processor import WebhookEventNotSupportedError
11
12
  from .webhook_event import WebhookEvent, WebhookEventRawResults, LiveEventTimestamp
12
13
  from port_ocean.context.event import event
13
14
 
@@ -53,10 +54,12 @@ class LiveEventsProcessorManager(LiveEventsMixin, EventsMixin):
53
54
  """Find and extract the matching processor for an event"""
54
55
 
55
56
  created_processors: list[tuple[ResourceConfig, AbstractWebhookProcessor]] = []
57
+ event_processor_names = []
56
58
 
57
59
  for processor_class in self._processors_classes[path]:
58
60
  processor = processor_class(webhook_event.clone())
59
61
  if await processor.should_process_event(webhook_event):
62
+ event_processor_names.append(processor.__class__.__name__)
60
63
  kinds = await processor.get_matching_kinds(webhook_event)
61
64
  for kind in kinds:
62
65
  for resource in event.port_app_config.resources:
@@ -64,7 +67,22 @@ class LiveEventsProcessorManager(LiveEventsMixin, EventsMixin):
64
67
  created_processors.append((resource, processor))
65
68
 
66
69
  if not created_processors:
67
- raise ValueError("No matching processors found")
70
+ if event_processor_names:
71
+ logger.info(
72
+ "Webhook processors are available to handle this webhook event, but the corresponding kinds are not configured in the integration's mapping",
73
+ processors_available=event_processor_names,
74
+ webhook_path=path,
75
+ )
76
+ return []
77
+ else:
78
+ logger.warning(
79
+ "Unknown webhook event type received",
80
+ webhook_path=path,
81
+ message="No processors registered to handle this webhook event type.",
82
+ )
83
+ raise WebhookEventNotSupportedError(
84
+ "No matching processors found for webhook event"
85
+ )
68
86
 
69
87
  logger.info(
70
88
  "Found matching processors for webhook event",
@@ -0,0 +1,17 @@
1
+ from port_ocean.exceptions.base import BaseOceanException
2
+
3
+
4
+ class RetryableError(Exception):
5
+ """Base exception class for errors that should trigger a retry."""
6
+
7
+ pass
8
+
9
+
10
+ class WebhookProcessingError(BaseOceanException):
11
+ """Base exception for webhook processing errors"""
12
+
13
+ pass
14
+
15
+
16
+ class WebhookEventNotSupportedError(WebhookProcessingError):
17
+ pass
@@ -1,4 +1,4 @@
1
- from typing import Any, Callable, Type
1
+ from typing import Any, Type
2
2
 
3
3
  import httpx
4
4
  from loguru import logger
@@ -26,11 +26,10 @@ class OceanAsyncClient(httpx.AsyncClient):
26
26
  def _init_transport( # type: ignore[override]
27
27
  self,
28
28
  transport: httpx.AsyncBaseTransport | None = None,
29
- app: Callable[..., Any] | None = None,
30
29
  **kwargs: Any,
31
30
  ) -> httpx.AsyncBaseTransport:
32
- if transport is not None or app is not None:
33
- return super()._init_transport(transport=transport, app=app, **kwargs)
31
+ if transport is not None:
32
+ return super()._init_transport(transport=transport, **kwargs)
34
33
 
35
34
  return self._transport_class(
36
35
  wrapped_transport=httpx.AsyncHTTPTransport(
@@ -37,7 +37,10 @@ from port_ocean.core.handlers.port_app_config.models import (
37
37
  )
38
38
  from port_ocean.core.integrations.mixins.live_events import LiveEventsMixin
39
39
  from port_ocean.core.models import Entity
40
- from port_ocean.exceptions.webhook_processor import RetryableError
40
+ from port_ocean.exceptions.webhook_processor import (
41
+ RetryableError,
42
+ WebhookEventNotSupportedError,
43
+ )
41
44
  from port_ocean.core.handlers.queue import LocalQueue
42
45
 
43
46
 
@@ -354,7 +357,9 @@ async def test_extractMatchingProcessors_noMatch(
354
357
  test_path = "/test"
355
358
  processor_manager.register_processor(test_path, MockProcessorFalse)
356
359
 
357
- with pytest.raises(ValueError, match="No matching processors found"):
360
+ with pytest.raises(
361
+ WebhookEventNotSupportedError, match="No matching processors found"
362
+ ):
358
363
  async with event_context(
359
364
  EventType.HTTP_REQUEST, trigger_type="request"
360
365
  ) as event:
@@ -409,6 +414,82 @@ async def test_extractMatchingProcessors_onlyOneMatches(
409
414
  assert processor.event.payload == webhook_event.payload
410
415
 
411
416
 
417
+ @pytest.mark.asyncio
418
+ async def test_extractMatchingProcessors_noProcessorsRegistered(
419
+ processor_manager: LiveEventsProcessorManager,
420
+ webhook_event: WebhookEvent,
421
+ mock_port_app_config: PortAppConfig,
422
+ ) -> None:
423
+ """Test that WebhookEventNotSupportedError is raised for unknown events without any registered processors"""
424
+ test_path = "/unknown_path"
425
+ # No processors registered for this path
426
+
427
+ # Manually add the path to _processors_classes to simulate a path with no processors
428
+ processor_manager._processors_classes[test_path] = []
429
+
430
+ with pytest.raises(
431
+ WebhookEventNotSupportedError, match="No matching processors found"
432
+ ):
433
+ async with event_context(
434
+ EventType.HTTP_REQUEST, trigger_type="request"
435
+ ) as event:
436
+ event.port_app_config = mock_port_app_config
437
+ await processor_manager._extract_matching_processors(
438
+ webhook_event, test_path
439
+ )
440
+
441
+
442
+ @pytest.mark.asyncio
443
+ async def test_extractMatchingProcessors_processorsAvailableButKindsNotConfigured(
444
+ processor_manager: LiveEventsProcessorManager,
445
+ webhook_event: WebhookEvent,
446
+ ) -> None:
447
+ """Test that processors available but kinds not configured returns empty list"""
448
+ test_path = "/test"
449
+
450
+ from port_ocean.core.handlers.port_app_config.models import (
451
+ PortAppConfig,
452
+ ResourceConfig,
453
+ )
454
+
455
+ # Create a mock processor that will match the event but return a kind not in the port app config
456
+ class MockProcessorWithUnmappedKind(AbstractWebhookProcessor):
457
+ async def authenticate(
458
+ self, payload: Dict[str, Any], headers: Dict[str, str]
459
+ ) -> bool:
460
+ return True
461
+
462
+ async def validate_payload(self, payload: Dict[str, Any]) -> bool:
463
+ return True
464
+
465
+ async def handle_event(
466
+ self, payload: EventPayload, resource: ResourceConfig
467
+ ) -> WebhookEventRawResults:
468
+ return WebhookEventRawResults(
469
+ updated_raw_results=[], deleted_raw_results=[]
470
+ )
471
+
472
+ async def should_process_event(self, event: WebhookEvent) -> bool:
473
+ return True # This processor will match
474
+
475
+ async def get_matching_kinds(self, event: WebhookEvent) -> list[str]:
476
+ return ["unmapped_kind"] # This kind is not in the mock_port_app_config
477
+
478
+ processor_manager.register_processor(test_path, MockProcessorWithUnmappedKind)
479
+
480
+ empty_port_app_config = PortAppConfig(
481
+ resources=[],
482
+ )
483
+
484
+ async with event_context(EventType.HTTP_REQUEST, trigger_type="request") as event:
485
+ event.port_app_config = empty_port_app_config
486
+ processors = await processor_manager._extract_matching_processors(
487
+ webhook_event, test_path
488
+ )
489
+
490
+ assert len(processors) == 0
491
+
492
+
412
493
  def test_registerProcessor_registrationWorks(
413
494
  processor_manager: LiveEventsProcessorManager,
414
495
  ) -> None:
@@ -853,7 +934,10 @@ async def test_integrationTest_postRequestSent_noMatchingHandlers_entityNotUpser
853
934
  except asyncio.TimeoutError:
854
935
  pytest.fail("Event processing timed out")
855
936
 
856
- assert isinstance(test_state["exception_thrown"], ValueError) is True
937
+ assert (
938
+ isinstance(test_state["exception_thrown"], WebhookEventNotSupportedError)
939
+ is True
940
+ )
857
941
 
858
942
  mock_upsert.assert_not_called()
859
943
  mock_delete.assert_not_called()
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.24.10"
3
+ version = "0.24.12"
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"
@@ -45,11 +45,11 @@ loguru = "^0.7.0"
45
45
  pyyaml = "^6.0"
46
46
  werkzeug = ">=2.3.4,<4.0.0"
47
47
  fastapi = "^0.115.3"
48
- uvicorn = ">=0.22,<0.31"
49
- confluent-kafka = "^2.8.2"
50
- httpx = ">=0.24.1,<0.28.0"
48
+ uvicorn = "^0.34.3"
49
+ confluent-kafka = "^2.10.1"
50
+ httpx = "^0.28.1"
51
51
  jq = "^1.8.0"
52
- urllib3 = ">=1.26.16,<3.0.0"
52
+ urllib3 = "^2.5.0"
53
53
  six = "^1.16.0"
54
54
  pyhumps = "^3.8.0"
55
55
  pydispatcher = "^2.0.7"
@@ -72,7 +72,7 @@ cli = ["click", "rich", "cookiecutter", "jinja2-time"]
72
72
  [tool.poetry.group.dev.dependencies]
73
73
  black = ">=23.3,<25.0"
74
74
  mypy = "^1.3.0"
75
- pre-commit = "^3.7.1"
75
+ pre-commit = "^4.2.0"
76
76
  pylint = ">=2.17.4,<4.0.0"
77
77
  pytest = ">=8.2,<9.0"
78
78
  pytest-asyncio = ">=0.24.0"
@@ -1,4 +0,0 @@
1
- class RetryableError(Exception):
2
- """Base exception class for errors that should trigger a retry."""
3
-
4
- pass
File without changes
File without changes