port-ocean 0.27.2__tar.gz → 0.27.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.
- {port_ocean-0.27.2 → port_ocean-0.27.5}/PKG-INFO +2 -2
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/kafka.py +14 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +3 -1
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/port_app_config/models.py +1 -0
- port_ocean-0.27.5/port_ocean/tests/core/event_listener/test_kafka.py +70 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +1 -1
- {port_ocean-0.27.2 → port_ocean-0.27.5}/pyproject.toml +2 -2
- {port_ocean-0.27.2 → port_ocean-0.27.5}/LICENSE.md +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/README.md +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Dockerfile.Deb +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Dockerfile.alpine +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Dockerfile.base.builder +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Dockerfile.base.runner +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Dockerfile.dockerignore +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Dockerfile.local +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/Makefile +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/README.md +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/entry_local.sh +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/grpcio.sh +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/integrations/_infra/init.sh +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cache/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cache/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cache/disk.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cache/errors.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cache/memory.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/new.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/auth/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/auth/auth_client.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/auth/oauth_client.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/mixins/organization.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/config/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/config/dynamic.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/config/settings.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/context/event.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/context/metric_resource.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/event_listener/webhooks_only.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/queue/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/queue/group_queue.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/queue/local_queue.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/webhook/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/webhook/processor_manager.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/webhook/webhook_event.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/live_events.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/integrations/mixins/utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/models.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/utils/utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/debug_cli.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/exceptions/webhook_processor.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/helpers/metric/metric.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/helpers/metric/utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/log/logger_setup.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/ocean.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/py.typed +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/run.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/cache/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/cache/test_disk_cache.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/cache/test_memory_cache.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/oauth/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/port/mixins/test_integrations.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/config/test_config.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/conftest.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/conftest.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/defaults/test_common.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/queue/test_group_queue.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/test_utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/fake_port_api.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/fixtures.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/integration.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/ocean_app.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/port_client.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/helpers/smoke_test.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/log/test_handlers.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/test_metric.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/test_ocean.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/test_smoke.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/utils/test_async_iterators.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/utils/test_cache.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/async_iterators.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/ipc.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/misc.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/queue_utils.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/signal.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/utils/time.py +0 -0
- {port_ocean-0.27.2 → port_ocean-0.27.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.27.
|
3
|
+
Version: 0.27.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
|
@@ -26,7 +26,7 @@ Requires-Dist: aiostream (>=0.5.2,<0.7.0)
|
|
26
26
|
Requires-Dist: click (>=8.1.3,<9.0.0) ; extra == "cli"
|
27
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
|
-
Requires-Dist: fastapi (>=0.
|
29
|
+
Requires-Dist: fastapi (>=0.116.0,<0.117.0)
|
30
30
|
Requires-Dist: httpx (>=0.28.1,<0.29.0)
|
31
31
|
Requires-Dist: jinja2 (>=3.1.6)
|
32
32
|
Requires-Dist: jinja2-time (>=0.2.0,<0.3.0) ; extra == "cli"
|
@@ -16,6 +16,7 @@ from port_ocean.core.event_listener.base import (
|
|
16
16
|
EventListenerEvents,
|
17
17
|
EventListenerSettings,
|
18
18
|
)
|
19
|
+
from pydantic import validator
|
19
20
|
|
20
21
|
|
21
22
|
class KafkaEventListenerSettings(EventListenerSettings):
|
@@ -46,6 +47,19 @@ class KafkaEventListenerSettings(EventListenerSettings):
|
|
46
47
|
kafka_security_enabled: bool = True
|
47
48
|
consumer_poll_timeout: int = 1
|
48
49
|
|
50
|
+
@validator("brokers")
|
51
|
+
@classmethod
|
52
|
+
def parse_brokers(cls, v: str) -> str:
|
53
|
+
# If it's a JSON array string, parse and join
|
54
|
+
if v.strip().startswith("[") and v.strip().endswith("]"):
|
55
|
+
try:
|
56
|
+
parsed = json.loads(v)
|
57
|
+
if isinstance(parsed, list):
|
58
|
+
return ",".join(parsed)
|
59
|
+
except json.JSONDecodeError:
|
60
|
+
pass
|
61
|
+
return v
|
62
|
+
|
49
63
|
def get_changelog_destination_details(self) -> dict[str, Any]:
|
50
64
|
"""
|
51
65
|
Returns the changelog destination configuration for the Kafka event listener.
|
@@ -242,6 +242,7 @@ class JQEntityProcessor(BaseEntityProcessor):
|
|
242
242
|
data: dict[str, Any],
|
243
243
|
raw_entity_mappings: dict[str, Any],
|
244
244
|
items_to_parse: str | None,
|
245
|
+
items_to_parse_name: str,
|
245
246
|
selector_query: str,
|
246
247
|
parse_all: bool = False,
|
247
248
|
) -> tuple[list[MappedEntity], list[Exception]]:
|
@@ -255,7 +256,7 @@ class JQEntityProcessor(BaseEntityProcessor):
|
|
255
256
|
f" Skipping..."
|
256
257
|
)
|
257
258
|
return [], []
|
258
|
-
raw_data = [{
|
259
|
+
raw_data = [{items_to_parse_name: item, **data} for item in items]
|
259
260
|
|
260
261
|
entities, errors = await gather_and_split_errors_from_results(
|
261
262
|
[
|
@@ -304,6 +305,7 @@ class JQEntityProcessor(BaseEntityProcessor):
|
|
304
305
|
self._calculate_entity,
|
305
306
|
raw_entity_mappings,
|
306
307
|
mapping.port.items_to_parse,
|
308
|
+
mapping.port.items_to_parse_name,
|
307
309
|
mapping.selector.query,
|
308
310
|
parse_all,
|
309
311
|
)
|
@@ -39,6 +39,7 @@ class MappingsConfig(BaseModel):
|
|
39
39
|
class PortResourceConfig(BaseModel):
|
40
40
|
entity: MappingsConfig
|
41
41
|
items_to_parse: str | None = Field(alias="itemsToParse")
|
42
|
+
items_to_parse_name: str | None = Field(alias="itemsToParseName", default="item")
|
42
43
|
|
43
44
|
|
44
45
|
class Selector(BaseModel):
|
@@ -0,0 +1,70 @@
|
|
1
|
+
from port_ocean.core.event_listener.kafka import KafkaEventListenerSettings
|
2
|
+
import pytest
|
3
|
+
from pydantic import ValidationError
|
4
|
+
|
5
|
+
|
6
|
+
def test_default_kafka_settings() -> None:
|
7
|
+
"""Test default values are properly set"""
|
8
|
+
config = KafkaEventListenerSettings(type="KAFKA")
|
9
|
+
assert config.type == "KAFKA"
|
10
|
+
assert config.security_protocol == "SASL_SSL"
|
11
|
+
assert config.authentication_mechanism == "SCRAM-SHA-512"
|
12
|
+
assert config.kafka_security_enabled is True
|
13
|
+
assert config.consumer_poll_timeout == 1
|
14
|
+
assert "b-1-public.publicclusterprod" in config.brokers
|
15
|
+
|
16
|
+
|
17
|
+
def test_brokers_json_array_parsing() -> None:
|
18
|
+
"""Test that JSON array strings get converted to comma-separated"""
|
19
|
+
json_brokers = '["broker1:9092", "broker2:9092", "broker3:9092"]'
|
20
|
+
config = KafkaEventListenerSettings(type="KAFKA", brokers=json_brokers)
|
21
|
+
assert config.brokers == "broker1:9092,broker2:9092,broker3:9092"
|
22
|
+
|
23
|
+
|
24
|
+
def test_brokers_regular_string_unchanged() -> None:
|
25
|
+
"""Test that regular comma-separated strings pass through unchanged"""
|
26
|
+
regular_brokers = "broker1:9092,broker2:9092"
|
27
|
+
config = KafkaEventListenerSettings(type="KAFKA", brokers=regular_brokers)
|
28
|
+
assert config.brokers == regular_brokers
|
29
|
+
|
30
|
+
|
31
|
+
def test_brokers_malformed_json_unchanged() -> None:
|
32
|
+
"""Test that malformed JSON strings don't break validation"""
|
33
|
+
bad_json = "[broker1:9092, broker2:9092"
|
34
|
+
config = KafkaEventListenerSettings(type="KAFKA", brokers=bad_json)
|
35
|
+
assert config.brokers == bad_json
|
36
|
+
|
37
|
+
|
38
|
+
def test_custom_values() -> None:
|
39
|
+
"""Test overriding default values"""
|
40
|
+
config = KafkaEventListenerSettings(
|
41
|
+
type="KAFKA",
|
42
|
+
brokers="custom:9092",
|
43
|
+
security_protocol="PLAINTEXT",
|
44
|
+
authentication_mechanism="PLAIN",
|
45
|
+
kafka_security_enabled=False,
|
46
|
+
consumer_poll_timeout=5,
|
47
|
+
)
|
48
|
+
assert config.brokers == "custom:9092"
|
49
|
+
assert config.security_protocol == "PLAINTEXT"
|
50
|
+
assert config.authentication_mechanism == "PLAIN"
|
51
|
+
assert config.kafka_security_enabled is False
|
52
|
+
assert config.consumer_poll_timeout == 5
|
53
|
+
|
54
|
+
|
55
|
+
def test_type_literal_validation() -> None:
|
56
|
+
"""Test that type field only accepts KAFKA"""
|
57
|
+
with pytest.raises(ValidationError):
|
58
|
+
KafkaEventListenerSettings(type="RABBITMQ") # type: ignore[arg-type]
|
59
|
+
|
60
|
+
|
61
|
+
def test_empty_brokers_array() -> None:
|
62
|
+
"""Test empty JSON array becomes empty string"""
|
63
|
+
config = KafkaEventListenerSettings(type="KAFKA", brokers="[]")
|
64
|
+
assert config.brokers == ""
|
65
|
+
|
66
|
+
|
67
|
+
def test_single_broker_array() -> None:
|
68
|
+
"""Test single broker in JSON array"""
|
69
|
+
config = KafkaEventListenerSettings(type="KAFKA", brokers='["single:9092"]')
|
70
|
+
assert config.brokers == "single:9092"
|
@@ -60,7 +60,7 @@ class TestJQEntityProcessor:
|
|
60
60
|
raw_entity_mappings = {"foo": ".foo"}
|
61
61
|
selector_query = '.foo == "bar"'
|
62
62
|
result, errors = await mocked_processor._calculate_entity(
|
63
|
-
data, raw_entity_mappings, None, selector_query
|
63
|
+
data, raw_entity_mappings, None, "item", selector_query
|
64
64
|
)
|
65
65
|
assert len(result) == 1
|
66
66
|
assert result[0].entity == {"foo": "bar"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "port-ocean"
|
3
|
-
version = "0.27.
|
3
|
+
version = "0.27.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"
|
@@ -44,7 +44,7 @@ pydantic = { version = "^1.10.8", extras = ["dotenv"] }
|
|
44
44
|
loguru = "^0.7.0"
|
45
45
|
pyyaml = "^6.0"
|
46
46
|
werkzeug = ">=2.3.4,<4.0.0"
|
47
|
-
fastapi = "^0.
|
47
|
+
fastapi = "^0.116.0"
|
48
48
|
uvicorn = "^0.34.3"
|
49
49
|
confluent-kafka = "^2.10.1"
|
50
50
|
httpx = "^0.28.1"
|
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
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/cli/cookiecutter/hooks/post_gen_project.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
|
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
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entities_state_applier/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/entity_processor/__init__.py
RENAMED
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/port_app_config/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/resync_state_updater/__init__.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/resync_state_updater/updater.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/core/handlers/webhook/processor_manager.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
|
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
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/port/mixins/test_entities.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/clients/port/mixins/test_integrations.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/mixins/test_live_events.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/port_app_config/test_api.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/port_app_config/test_base.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/queue/test_group_queue.py
RENAMED
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/queue/test_local_queue.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.2 → port_ocean-0.27.5}/port_ocean/tests/core/utils/test_resolve_entities_diff.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
|
File without changes
|
File without changes
|