port-ocean 0.21.4__tar.gz → 0.21.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.
Potentially problematic release.
This version of port-ocean might be problematic. Click here for more details.
- {port_ocean-0.21.4 → port_ocean-0.21.5}/PKG-INFO +1 -1
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/webhook/processor_manager.py +5 -3
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/webhook/webhook_event.py +0 -5
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/webhook/test_processor_manager.py +79 -44
- {port_ocean-0.21.4 → port_ocean-0.21.5}/pyproject.toml +1 -1
- {port_ocean-0.21.4 → port_ocean-0.21.5}/LICENSE.md +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/README.md +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/Dockerfile.Deb +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/Dockerfile.alpine +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/Dockerfile.base.builder +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/Dockerfile.base.runner +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/Dockerfile.dockerignore +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/Makefile +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/grpcio.sh +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/integrations/_infra/init.sh +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/new.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/auth/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/auth/auth_client.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/auth/oauth_client.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/mixins/organization.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/config/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/config/dynamic.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/config/settings.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/context/event.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/kafka.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/event_listener/webhooks_only.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/port_app_config/models.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/queue/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/queue/abstract_queue.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/queue/local_queue.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/webhook/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/webhook/abstract_webhook_processor.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/live_events.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/integrations/mixins/utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/models.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/utils/entity_topological_sorter.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/utils/utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/debug_cli.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/exceptions/webhook_processor.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/log/logger_setup.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/ocean.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/py.typed +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/run.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/clients/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/clients/oauth/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/clients/oauth/test_oauth_client.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/clients/port/mixins/test_organization_mixin.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/conftest.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/defaults/test_common.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/entities_state_applier/test_applier.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/mixins/test_live_events.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/port_app_config/test_api.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/port_app_config/test_base.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/queue/test_local_queue.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/webhook/test_abstract_webhook_processor.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/test_utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/utils/test_entity_topological_sorter.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/utils/test_resolve_entities_diff.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/fake_port_api.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/fixtures.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/integration.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/ocean_app.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/port_client.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/helpers/smoke_test.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/log/test_handlers.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/test_ocean.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/test_smoke.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/utils/test_async_iterators.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/utils/test_cache.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/async_iterators.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/misc.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/queue_utils.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/signal.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/utils/time.py +0 -0
- {port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/version.py +0 -0
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/webhook/processor_manager.py
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
from copy import deepcopy
|
|
2
1
|
from typing import Dict, Type, Set
|
|
3
2
|
from fastapi import APIRouter, Request
|
|
4
3
|
from loguru import logger
|
|
5
4
|
import asyncio
|
|
6
5
|
|
|
6
|
+
from port_ocean.context.ocean import ocean
|
|
7
7
|
from port_ocean.context.event import EventType, event_context
|
|
8
8
|
from port_ocean.core.handlers.port_app_config.models import ResourceConfig
|
|
9
9
|
from port_ocean.core.integrations.mixins.events import EventsMixin
|
|
@@ -89,8 +89,11 @@ class LiveEventsProcessorManager(LiveEventsMixin, EventsMixin):
|
|
|
89
89
|
async with event_context(
|
|
90
90
|
EventType.HTTP_REQUEST,
|
|
91
91
|
trigger_type="machine",
|
|
92
|
-
parent_override=webhook_event.event_context,
|
|
93
92
|
):
|
|
93
|
+
# This forces the Processor manager to fetch the latest port app config for each event
|
|
94
|
+
await ocean.integration.port_app_config_handler.get_port_app_config(
|
|
95
|
+
use_cache=False
|
|
96
|
+
)
|
|
94
97
|
matching_processors_with_resource = (
|
|
95
98
|
await self._extract_matching_processors(webhook_event, path)
|
|
96
99
|
)
|
|
@@ -246,7 +249,6 @@ class LiveEventsProcessorManager(LiveEventsMixin, EventsMixin):
|
|
|
246
249
|
try:
|
|
247
250
|
webhook_event = await WebhookEvent.from_request(request)
|
|
248
251
|
webhook_event.set_timestamp(LiveEventTimestamp.AddedToQueue)
|
|
249
|
-
webhook_event.set_event_context(deepcopy(event))
|
|
250
252
|
await self._event_queues[path].put(webhook_event)
|
|
251
253
|
return {"status": "ok"}
|
|
252
254
|
except Exception as e:
|
|
@@ -5,7 +5,6 @@ from uuid import uuid4
|
|
|
5
5
|
from fastapi import Request
|
|
6
6
|
from loguru import logger
|
|
7
7
|
|
|
8
|
-
from port_ocean.context.event import EventContext
|
|
9
8
|
from port_ocean.core.handlers.port_app_config.models import ResourceConfig
|
|
10
9
|
from port_ocean.core.ocean_types import RAW_ITEM
|
|
11
10
|
|
|
@@ -57,7 +56,6 @@ class WebhookEvent(LiveEvent):
|
|
|
57
56
|
self.payload = payload
|
|
58
57
|
self.headers = headers
|
|
59
58
|
self._original_request = original_request
|
|
60
|
-
self.event_context: EventContext | None = None
|
|
61
59
|
|
|
62
60
|
@classmethod
|
|
63
61
|
async def from_request(
|
|
@@ -103,9 +101,6 @@ class WebhookEvent(LiveEvent):
|
|
|
103
101
|
},
|
|
104
102
|
)
|
|
105
103
|
|
|
106
|
-
def set_event_context(self, event_context: EventContext) -> None:
|
|
107
|
-
self.event_context = event_context
|
|
108
|
-
|
|
109
104
|
|
|
110
105
|
class WebhookEventRawResults:
|
|
111
106
|
"""
|
|
@@ -12,6 +12,7 @@ from port_ocean.core.handlers.webhook.webhook_event import (
|
|
|
12
12
|
EventPayload,
|
|
13
13
|
)
|
|
14
14
|
from fastapi import APIRouter
|
|
15
|
+
from port_ocean.core.integrations.mixins.handler import HandlerMixin
|
|
15
16
|
from port_ocean.utils.signal import SignalHandler
|
|
16
17
|
from typing import Dict, Any
|
|
17
18
|
import asyncio
|
|
@@ -19,7 +20,7 @@ from fastapi.testclient import TestClient
|
|
|
19
20
|
from fastapi import FastAPI
|
|
20
21
|
from port_ocean.context.ocean import PortOceanContext
|
|
21
22
|
from unittest.mock import AsyncMock
|
|
22
|
-
from port_ocean.context.event import event_context, EventType
|
|
23
|
+
from port_ocean.context.event import EventContext, event_context, EventType
|
|
23
24
|
from port_ocean.context.ocean import ocean
|
|
24
25
|
from unittest.mock import MagicMock, patch
|
|
25
26
|
from httpx import Response
|
|
@@ -571,6 +572,16 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessed_en
|
|
|
571
572
|
"sync_raw_results",
|
|
572
573
|
patched_export_single_resource,
|
|
573
574
|
)
|
|
575
|
+
monkeypatch.setattr(
|
|
576
|
+
HandlerMixin,
|
|
577
|
+
"port_app_config_handler",
|
|
578
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
579
|
+
)
|
|
580
|
+
monkeypatch.setattr(
|
|
581
|
+
EventContext,
|
|
582
|
+
"port_app_config",
|
|
583
|
+
mock_port_app_config,
|
|
584
|
+
)
|
|
574
585
|
test_path = "/webhook-test"
|
|
575
586
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
576
587
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -589,12 +600,7 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessed_en
|
|
|
589
600
|
|
|
590
601
|
test_payload = {"test": "data"}
|
|
591
602
|
|
|
592
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request")
|
|
593
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
594
|
-
event.port_app_config = (
|
|
595
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
596
|
-
)
|
|
597
|
-
|
|
603
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
598
604
|
response = client.post(
|
|
599
605
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
600
606
|
)
|
|
@@ -685,6 +691,16 @@ async def test_integrationTest_postRequestSent_reachedTimeout_entityNotUpserted(
|
|
|
685
691
|
"_process_single_event",
|
|
686
692
|
patched_process_single_event,
|
|
687
693
|
)
|
|
694
|
+
monkeypatch.setattr(
|
|
695
|
+
HandlerMixin,
|
|
696
|
+
"port_app_config_handler",
|
|
697
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
698
|
+
)
|
|
699
|
+
monkeypatch.setattr(
|
|
700
|
+
EventContext,
|
|
701
|
+
"port_app_config",
|
|
702
|
+
mock_port_app_config,
|
|
703
|
+
)
|
|
688
704
|
test_path = "/webhook-test"
|
|
689
705
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
690
706
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -703,12 +719,7 @@ async def test_integrationTest_postRequestSent_reachedTimeout_entityNotUpserted(
|
|
|
703
719
|
|
|
704
720
|
test_payload = {"test": "data"}
|
|
705
721
|
|
|
706
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request")
|
|
707
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
708
|
-
event.port_app_config = (
|
|
709
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
710
|
-
)
|
|
711
|
-
|
|
722
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
712
723
|
response = client.post(
|
|
713
724
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
714
725
|
)
|
|
@@ -802,6 +813,16 @@ async def test_integrationTest_postRequestSent_noMatchingHandlers_entityNotUpser
|
|
|
802
813
|
"_extract_matching_processors",
|
|
803
814
|
patched_extract_matching_processors,
|
|
804
815
|
)
|
|
816
|
+
monkeypatch.setattr(
|
|
817
|
+
HandlerMixin,
|
|
818
|
+
"port_app_config_handler",
|
|
819
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
820
|
+
)
|
|
821
|
+
monkeypatch.setattr(
|
|
822
|
+
EventContext,
|
|
823
|
+
"port_app_config",
|
|
824
|
+
mock_port_app_config,
|
|
825
|
+
)
|
|
805
826
|
test_path = "/webhook-test"
|
|
806
827
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
807
828
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -819,13 +840,7 @@ async def test_integrationTest_postRequestSent_noMatchingHandlers_entityNotUpser
|
|
|
819
840
|
client = TestClient(mock_context.app.fast_api_app)
|
|
820
841
|
|
|
821
842
|
test_payload = {"test": "data"}
|
|
822
|
-
|
|
823
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request") as event:
|
|
824
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
825
|
-
event.port_app_config = (
|
|
826
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
827
|
-
)
|
|
828
|
-
|
|
843
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
829
844
|
response = client.post(
|
|
830
845
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
831
846
|
)
|
|
@@ -982,6 +997,16 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessedFor
|
|
|
982
997
|
"sync_raw_results",
|
|
983
998
|
patched_export_single_resource,
|
|
984
999
|
)
|
|
1000
|
+
monkeypatch.setattr(
|
|
1001
|
+
HandlerMixin,
|
|
1002
|
+
"port_app_config_handler",
|
|
1003
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
1004
|
+
)
|
|
1005
|
+
monkeypatch.setattr(
|
|
1006
|
+
EventContext,
|
|
1007
|
+
"port_app_config",
|
|
1008
|
+
mock_port_app_config,
|
|
1009
|
+
)
|
|
985
1010
|
test_path = "/webhook-test"
|
|
986
1011
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
987
1012
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -1004,12 +1029,7 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessedFor
|
|
|
1004
1029
|
|
|
1005
1030
|
test_payload = {"test": "data"}
|
|
1006
1031
|
|
|
1007
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request")
|
|
1008
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
1009
|
-
event.port_app_config = (
|
|
1010
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
1011
|
-
)
|
|
1012
|
-
|
|
1032
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
1013
1033
|
response = client.post(
|
|
1014
1034
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
1015
1035
|
)
|
|
@@ -1112,6 +1132,16 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessedwit
|
|
|
1112
1132
|
"sync_raw_results",
|
|
1113
1133
|
patched_export_single_resource,
|
|
1114
1134
|
)
|
|
1135
|
+
monkeypatch.setattr(
|
|
1136
|
+
HandlerMixin,
|
|
1137
|
+
"port_app_config_handler",
|
|
1138
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
1139
|
+
)
|
|
1140
|
+
monkeypatch.setattr(
|
|
1141
|
+
EventContext,
|
|
1142
|
+
"port_app_config",
|
|
1143
|
+
mock_port_app_config,
|
|
1144
|
+
)
|
|
1115
1145
|
test_path = "/webhook-test"
|
|
1116
1146
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
1117
1147
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -1130,12 +1160,7 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessedwit
|
|
|
1130
1160
|
|
|
1131
1161
|
test_payload = {"test": "data"}
|
|
1132
1162
|
|
|
1133
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request")
|
|
1134
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
1135
|
-
event.port_app_config = (
|
|
1136
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
1137
|
-
)
|
|
1138
|
-
|
|
1163
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
1139
1164
|
response = client.post(
|
|
1140
1165
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
1141
1166
|
)
|
|
@@ -1242,6 +1267,16 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessedwit
|
|
|
1242
1267
|
"_process_webhook_request",
|
|
1243
1268
|
patched_process_webhook_request,
|
|
1244
1269
|
)
|
|
1270
|
+
monkeypatch.setattr(
|
|
1271
|
+
HandlerMixin,
|
|
1272
|
+
"port_app_config_handler",
|
|
1273
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
1274
|
+
)
|
|
1275
|
+
monkeypatch.setattr(
|
|
1276
|
+
EventContext,
|
|
1277
|
+
"port_app_config",
|
|
1278
|
+
mock_port_app_config,
|
|
1279
|
+
)
|
|
1245
1280
|
test_path = "/webhook-test"
|
|
1246
1281
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
1247
1282
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -1260,12 +1295,7 @@ async def test_integrationTest_postRequestSent_webhookEventRawResultProcessedwit
|
|
|
1260
1295
|
|
|
1261
1296
|
test_payload = {"test": "data"}
|
|
1262
1297
|
|
|
1263
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request")
|
|
1264
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
1265
|
-
event.port_app_config = (
|
|
1266
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
1267
|
-
)
|
|
1268
|
-
|
|
1298
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
1269
1299
|
response = client.post(
|
|
1270
1300
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
1271
1301
|
)
|
|
@@ -1381,6 +1411,16 @@ async def test_integrationTest_postRequestSent_oneProcessorThrowsException_onlyS
|
|
|
1381
1411
|
"sync_raw_results",
|
|
1382
1412
|
patched_export_single_resource,
|
|
1383
1413
|
)
|
|
1414
|
+
monkeypatch.setattr(
|
|
1415
|
+
HandlerMixin,
|
|
1416
|
+
"port_app_config_handler",
|
|
1417
|
+
AsyncMock(return_value=mock_port_app_config),
|
|
1418
|
+
)
|
|
1419
|
+
monkeypatch.setattr(
|
|
1420
|
+
EventContext,
|
|
1421
|
+
"port_app_config",
|
|
1422
|
+
mock_port_app_config,
|
|
1423
|
+
)
|
|
1384
1424
|
test_path = "/webhook-test"
|
|
1385
1425
|
mock_context.app.integration = BaseIntegration(ocean)
|
|
1386
1426
|
mock_context.app.webhook_manager = LiveEventsProcessorManager(
|
|
@@ -1401,12 +1441,7 @@ async def test_integrationTest_postRequestSent_oneProcessorThrowsException_onlyS
|
|
|
1401
1441
|
|
|
1402
1442
|
test_payload = {"test": "data"}
|
|
1403
1443
|
|
|
1404
|
-
async with event_context(EventType.HTTP_REQUEST, trigger_type="request")
|
|
1405
|
-
mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config = AsyncMock(return_value=mock_port_app_config) # type: ignore
|
|
1406
|
-
event.port_app_config = (
|
|
1407
|
-
await mock_context.app.webhook_manager.port_app_config_handler.get_port_app_config()
|
|
1408
|
-
)
|
|
1409
|
-
|
|
1444
|
+
async with event_context(EventType.HTTP_REQUEST, trigger_type="request"):
|
|
1410
1445
|
response = client.post(
|
|
1411
1446
|
test_path, json=test_payload, headers={"Content-Type": "application/json"}
|
|
1412
1447
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.21.4 → port_ocean-0.21.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.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.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.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/entity_processor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.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.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/resync_state_updater/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/core/handlers/resync_state_updater/updater.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
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/clients/port/mixins/test_entities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/mixins/test_live_events.py
RENAMED
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/mixins/test_sync_raw.py
RENAMED
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/port_app_config/test_api.py
RENAMED
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/port_app_config/test_base.py
RENAMED
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/queue/test_local_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.5}/port_ocean/tests/core/handlers/webhook/test_webhook_event.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{port_ocean-0.21.4 → port_ocean-0.21.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
|