port-ocean 0.28.1__tar.gz → 0.28.2__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.28.1 → port_ocean-0.28.2}/PKG-INFO +1 -1
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/resync_state_updater/updater.py +4 -2
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/log/logger_setup.py +6 -4
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/ocean.py +16 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/misc.py +5 -3
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/signal.py +23 -8
- {port_ocean-0.28.1 → port_ocean-0.28.2}/pyproject.toml +1 -1
- {port_ocean-0.28.1 → port_ocean-0.28.2}/LICENSE.md +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/README.md +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Dockerfile.Deb +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Dockerfile.alpine +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Dockerfile.base.builder +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Dockerfile.base.runner +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Dockerfile.dockerignore +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Dockerfile.local +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/Makefile +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/README.md +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/entry_local.sh +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/grpcio.sh +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/integrations/_infra/init.sh +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cache/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cache/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cache/disk.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cache/errors.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cache/memory.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/new.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/auth/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/auth/auth_client.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/auth/oauth_client.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/mixins/organization.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/config/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/config/dynamic.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/config/settings.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/context/event.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/context/metric_resource.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/kafka.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/event_listener/webhooks_only.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/port_app_config/models.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/queue/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/queue/group_queue.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/queue/local_queue.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/webhook/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/webhook/processor_manager.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/webhook/webhook_event.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/live_events.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/integrations/mixins/utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/models.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/utils/utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/debug_cli.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/exceptions/webhook_processor.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/helpers/metric/metric.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/helpers/metric/utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/helpers/stream.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/py.typed +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/run.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/cache/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/cache/test_disk_cache.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/cache/test_memory_cache.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/oauth/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/port/mixins/test_integrations.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/config/test_config.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/conftest.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/conftest.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/defaults/test_common.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/event_listener/test_kafka.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/queue/test_group_queue.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/test_utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/fake_port_api.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/fixtures.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/integration.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/ocean_app.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/port_client.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/smoke_test.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/helpers/test_retry.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/log/test_handlers.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/test_metric.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/test_ocean.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/test_smoke.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/utils/test_async_iterators.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/utils/test_cache.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/async_iterators.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/ipc.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/queue_utils.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/utils/time.py +0 -0
- {port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/version.py +0 -0
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/resync_state_updater/updater.py
RENAMED
@@ -1,10 +1,11 @@
|
|
1
1
|
import datetime
|
2
2
|
from typing import Any, Literal
|
3
|
+
|
3
4
|
from port_ocean.clients.port.client import PortClient
|
5
|
+
from port_ocean.context.ocean import ocean
|
6
|
+
from port_ocean.helpers.metric.metric import MetricPhase, MetricType
|
4
7
|
from port_ocean.utils.misc import IntegrationStateStatus
|
5
8
|
from port_ocean.utils.time import get_next_occurrence
|
6
|
-
from port_ocean.context.ocean import ocean
|
7
|
-
from port_ocean.helpers.metric.metric import MetricType, MetricPhase
|
8
9
|
|
9
10
|
|
10
11
|
class ResyncStateUpdater:
|
@@ -99,3 +100,4 @@ class ResyncStateUpdater:
|
|
99
100
|
await ocean.metrics.report_sync_metrics(
|
100
101
|
kinds=[ocean.metrics.current_resource_kind()]
|
101
102
|
)
|
103
|
+
ocean.metrics.event_id = ""
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import sys
|
2
1
|
import os
|
2
|
+
import sys
|
3
|
+
import uuid
|
3
4
|
from logging import LogRecord
|
4
5
|
from logging.handlers import QueueHandler, QueueListener
|
5
6
|
from queue import Queue
|
6
|
-
import uuid
|
7
7
|
|
8
8
|
import loguru
|
9
9
|
from loguru import logger
|
@@ -60,8 +60,10 @@ def _http_loguru_handler(level: LogLevelType) -> None:
|
|
60
60
|
logger.configure(patcher=exception_deserializer)
|
61
61
|
|
62
62
|
http_memory_handler = HTTPMemoryHandler()
|
63
|
-
signal_handler.register(
|
64
|
-
|
63
|
+
signal_handler.register(
|
64
|
+
http_memory_handler.wait_for_lingering_threads, priority=-200
|
65
|
+
)
|
66
|
+
signal_handler.register(http_memory_handler.flush, priority=-200)
|
65
67
|
|
66
68
|
queue_listener = QueueListener(queue, http_memory_handler)
|
67
69
|
queue_listener.start()
|
@@ -97,6 +97,22 @@ class Ocean:
|
|
97
97
|
)
|
98
98
|
self.app_initialized = False
|
99
99
|
|
100
|
+
signal_handler.register(self._report_resync_aborted)
|
101
|
+
|
102
|
+
async def _report_resync_aborted(self) -> None:
|
103
|
+
"""
|
104
|
+
Report resync status as aborted when the app receives a kill signal.
|
105
|
+
This ensures Port is notified that the integration was interrupted.
|
106
|
+
"""
|
107
|
+
try:
|
108
|
+
if self.metrics.event_id != "":
|
109
|
+
await self.resync_state_updater.update_after_resync(
|
110
|
+
IntegrationStateStatus.Aborted
|
111
|
+
)
|
112
|
+
logger.info("Resync status reported as aborted due to app shutdown")
|
113
|
+
except Exception as e:
|
114
|
+
logger.warning(f"Failed to report resync status on shutdown: {e}")
|
115
|
+
|
100
116
|
def _get_process_execution_mode(self) -> ProcessExecutionMode:
|
101
117
|
if self.config.process_execution_mode:
|
102
118
|
return self.config.process_execution_mode
|
@@ -1,11 +1,12 @@
|
|
1
|
-
from enum import Enum
|
2
1
|
import inspect
|
3
|
-
from
|
2
|
+
from enum import Enum
|
3
|
+
from importlib.util import module_from_spec, spec_from_file_location
|
4
4
|
from pathlib import Path
|
5
5
|
from time import time
|
6
6
|
from types import ModuleType
|
7
|
-
from typing import
|
7
|
+
from typing import Any, Callable
|
8
8
|
from uuid import uuid4
|
9
|
+
|
9
10
|
import tomli
|
10
11
|
import yaml
|
11
12
|
|
@@ -14,6 +15,7 @@ class IntegrationStateStatus(Enum):
|
|
14
15
|
Running = "running"
|
15
16
|
Failed = "failed"
|
16
17
|
Completed = "completed"
|
18
|
+
Aborted = "aborted"
|
17
19
|
|
18
20
|
|
19
21
|
def get_time(seconds_precision: bool = True) -> float:
|
@@ -1,37 +1,52 @@
|
|
1
1
|
from asyncio import iscoroutinefunction
|
2
|
-
from typing import
|
2
|
+
from typing import Any, Callable
|
3
3
|
|
4
4
|
from werkzeug.local import LocalProxy, LocalStack
|
5
5
|
|
6
6
|
from port_ocean.exceptions.utils import (
|
7
|
-
SignalHandlerNotInitialized,
|
8
7
|
SignalHandlerAlreadyInitialized,
|
8
|
+
SignalHandlerNotInitialized,
|
9
9
|
)
|
10
10
|
from port_ocean.utils.misc import generate_uuid
|
11
11
|
|
12
12
|
|
13
13
|
class SignalHandler:
|
14
14
|
def __init__(self) -> None:
|
15
|
-
self._handlers: dict[str, Callable[[], Any]] = {}
|
15
|
+
self._handlers: dict[str, tuple[Callable[[], Any], int]] = {}
|
16
16
|
|
17
17
|
async def exit(self) -> None:
|
18
18
|
"""
|
19
19
|
Handles the exit signal.
|
20
|
+
Executes handlers in priority order (highest priority first).
|
20
21
|
"""
|
21
|
-
|
22
|
-
|
22
|
+
# Sort handlers by priority (highest first) and execute them
|
23
|
+
sorted_handlers = sorted(
|
24
|
+
self._handlers.items(), key=lambda x: x[1][1], reverse=True
|
25
|
+
)
|
26
|
+
|
27
|
+
for _id, (handler, _) in sorted_handlers:
|
23
28
|
if iscoroutinefunction(handler):
|
24
29
|
await handler()
|
25
30
|
else:
|
26
31
|
handler()
|
27
32
|
|
28
|
-
def register(self, callback: Callable[[], Any]) -> str:
|
29
|
-
|
30
|
-
|
33
|
+
def register(self, callback: Callable[[], Any], priority: int = 0) -> str:
|
34
|
+
"""
|
35
|
+
Register a callback with a priority.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
callback: The callback function to register
|
39
|
+
priority: Priority level (higher numbers execute first, default: 0)
|
31
40
|
|
41
|
+
Returns:
|
42
|
+
Unique identifier for the registered callback
|
43
|
+
"""
|
44
|
+
_id = generate_uuid()
|
45
|
+
self._handlers[_id] = (callback, priority)
|
32
46
|
return _id
|
33
47
|
|
34
48
|
def unregister(self, _id: str) -> None:
|
49
|
+
"""Unregister a callback by its ID."""
|
35
50
|
del self._handlers[_id]
|
36
51
|
|
37
52
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.28.1 → port_ocean-0.28.2}/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
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/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.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/entity_processor/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/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
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/core/handlers/resync_state_updater/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/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
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/clients/port/mixins/test_entities.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/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
|
File without changes
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/mixins/test_live_events.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/port_app_config/test_api.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/port_app_config/test_base.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/queue/test_group_queue.py
RENAMED
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/queue/test_local_queue.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{port_ocean-0.28.1 → port_ocean-0.28.2}/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
|