port-ocean 0.27.1__tar.gz → 0.27.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.
- {port_ocean-0.27.1 → port_ocean-0.27.3}/PKG-INFO +1 -1
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/config/settings.py +2 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +12 -9
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/port_app_config/models.py +1 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/sync_raw.py +1 -1
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/utils.py +26 -3
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +1 -1
- {port_ocean-0.27.1 → port_ocean-0.27.3}/pyproject.toml +1 -1
- {port_ocean-0.27.1 → port_ocean-0.27.3}/LICENSE.md +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/README.md +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Dockerfile.Deb +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Dockerfile.alpine +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Dockerfile.base.builder +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Dockerfile.base.runner +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Dockerfile.dockerignore +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Dockerfile.local +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/Makefile +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/README.md +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/entry_local.sh +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/grpcio.sh +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/integrations/_infra/init.sh +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cache/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cache/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cache/disk.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cache/errors.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cache/memory.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/new.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/auth/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/auth/auth_client.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/auth/oauth_client.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/mixins/organization.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/config/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/config/dynamic.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/context/event.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/context/metric_resource.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/kafka.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/event_listener/webhooks_only.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/queue/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/queue/group_queue.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/queue/local_queue.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/webhook/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/webhook/processor_manager.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/webhook/webhook_event.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/live_events.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/models.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/utils/utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/debug_cli.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/exceptions/webhook_processor.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/helpers/metric/metric.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/helpers/metric/utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/log/logger_setup.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/ocean.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/py.typed +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/run.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/cache/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/cache/test_disk_cache.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/cache/test_memory_cache.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/oauth/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/port/mixins/test_integrations.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/config/test_config.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/conftest.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/conftest.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/defaults/test_common.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/queue/test_group_queue.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/test_utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/fake_port_api.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/fixtures.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/integration.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/ocean_app.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/port_client.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/helpers/smoke_test.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/log/test_handlers.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/test_metric.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/test_ocean.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/test_smoke.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/utils/test_async_iterators.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/utils/test_cache.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/async_iterators.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/ipc.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/misc.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/queue_utils.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/signal.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/utils/time.py +0 -0
- {port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/version.py +0 -0
@@ -111,6 +111,8 @@ class IntegrationConfiguration(BaseOceanSettings, extra=Extra.allow):
|
|
111
111
|
upsert_entities_batch_max_length: int = 20
|
112
112
|
upsert_entities_batch_max_size_in_bytes: int = 1024 * 1024
|
113
113
|
lakehouse_enabled: bool = False
|
114
|
+
yield_items_to_parse: bool = False
|
115
|
+
yield_items_to_parse_batch_size: int = 10
|
114
116
|
|
115
117
|
@validator("process_execution_mode")
|
116
118
|
def validate_process_execution_mode(
|
@@ -242,19 +242,21 @@ 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]]:
|
248
249
|
raw_data = [data.copy()]
|
249
|
-
if
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
250
|
+
if not ocean.config.yield_items_to_parse:
|
251
|
+
if items_to_parse:
|
252
|
+
items = await self._search(data, items_to_parse)
|
253
|
+
if not isinstance(items, list):
|
254
|
+
logger.warning(
|
255
|
+
f"Failed to parse items for JQ expression {items_to_parse}, Expected list but got {type(items)}."
|
256
|
+
f" Skipping..."
|
257
|
+
)
|
258
|
+
return [], []
|
259
|
+
raw_data = [{items_to_parse_name: item, **data} for item in items]
|
258
260
|
|
259
261
|
entities, errors = await gather_and_split_errors_from_results(
|
260
262
|
[
|
@@ -303,6 +305,7 @@ class JQEntityProcessor(BaseEntityProcessor):
|
|
303
305
|
self._calculate_entity,
|
304
306
|
raw_entity_mappings,
|
305
307
|
mapping.port.items_to_parse,
|
308
|
+
mapping.port.items_to_parse_name,
|
306
309
|
mapping.selector.query,
|
307
310
|
parse_all,
|
308
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):
|
@@ -116,7 +116,7 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
|
|
116
116
|
logger.info(
|
117
117
|
f"Found async generator function for {resource_config.kind} name: {task.__qualname__}"
|
118
118
|
)
|
119
|
-
results.append(resync_generator_wrapper(task, resource_config.kind))
|
119
|
+
results.append(resync_generator_wrapper(task, resource_config.kind,resource_config.port.items_to_parse))
|
120
120
|
else:
|
121
121
|
logger.info(
|
122
122
|
f"Found sync function for {resource_config.kind} name: {task.__qualname__}"
|
@@ -1,11 +1,13 @@
|
|
1
1
|
from contextlib import contextmanager
|
2
|
-
from typing import Awaitable, Generator, Callable
|
2
|
+
from typing import Awaitable, Generator, Callable, cast
|
3
3
|
|
4
4
|
from loguru import logger
|
5
5
|
|
6
6
|
import asyncio
|
7
7
|
import multiprocessing
|
8
8
|
|
9
|
+
from port_ocean.core.handlers.entity_processor.jq_entity_processor import JQEntityProcessor
|
10
|
+
from port_ocean.core.handlers.port_app_config.models import ResourceConfig
|
9
11
|
from port_ocean.core.ocean_types import (
|
10
12
|
ASYNC_GENERATOR_RESYNC_TYPE,
|
11
13
|
RAW_RESULT,
|
@@ -49,7 +51,7 @@ async def resync_function_wrapper(
|
|
49
51
|
|
50
52
|
|
51
53
|
async def resync_generator_wrapper(
|
52
|
-
fn: Callable[[str], ASYNC_GENERATOR_RESYNC_TYPE], kind: str
|
54
|
+
fn: Callable[[str], ASYNC_GENERATOR_RESYNC_TYPE], kind: str, items_to_parse: str | None = None
|
53
55
|
) -> ASYNC_GENERATOR_RESYNC_TYPE:
|
54
56
|
generator = fn(kind)
|
55
57
|
errors = []
|
@@ -58,7 +60,28 @@ async def resync_generator_wrapper(
|
|
58
60
|
try:
|
59
61
|
with resync_error_handling():
|
60
62
|
result = await anext(generator)
|
61
|
-
|
63
|
+
if not ocean.config.yield_items_to_parse:
|
64
|
+
yield validate_result(result)
|
65
|
+
else:
|
66
|
+
batch_size = ocean.config.yield_items_to_parse_batch_size
|
67
|
+
if items_to_parse:
|
68
|
+
for data in result:
|
69
|
+
items = await cast(JQEntityProcessor, ocean.app.integration.entity_processor)._search(data, items_to_parse)
|
70
|
+
if not isinstance(items, list):
|
71
|
+
logger.warning(
|
72
|
+
f"Failed to parse items for JQ expression {items_to_parse}, Expected list but got {type(items)}."
|
73
|
+
f" Skipping..."
|
74
|
+
)
|
75
|
+
yield []
|
76
|
+
raw_data = [{"item": item, **data} for item in items]
|
77
|
+
while True:
|
78
|
+
raw_data_batch = raw_data[:batch_size]
|
79
|
+
yield raw_data_batch
|
80
|
+
raw_data = raw_data[batch_size:]
|
81
|
+
if len(raw_data) == 0:
|
82
|
+
break
|
83
|
+
else:
|
84
|
+
yield validate_result(result)
|
62
85
|
except OceanAbortException as error:
|
63
86
|
errors.append(error)
|
64
87
|
ocean.metrics.inc_metric(
|
@@ -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"}
|
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.1 → port_ocean-0.27.3}/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.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/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.1 → port_ocean-0.27.3}/port_ocean/core/handlers/entity_processor/__init__.py
RENAMED
File without changes
|
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/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.1 → port_ocean-0.27.3}/port_ocean/core/handlers/resync_state_updater/__init__.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/core/handlers/resync_state_updater/updater.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/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
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/clients/port/mixins/test_entities.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/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.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/mixins/test_live_events.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/port_app_config/test_api.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/port_app_config/test_base.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/queue/test_group_queue.py
RENAMED
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/queue/test_local_queue.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.27.1 → port_ocean-0.27.3}/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
|