From 8d77bd2a520b34f94157f4fea0208ba67fd45198 Mon Sep 17 00:00:00 2001
From: Matan <51418643+matan84@users.noreply.github.com>
Date: Tue, 31 Dec 2024 17:20:14 +0200
Subject: [PATCH] [Core] Added None type for wrapper (#1279)
# Description
What - lint fix
Why - pipeline fails for two resync kinds on one resource
How - add none as possible value
## Type of change
Please leave one option from the following and delete the rest:
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] New Integration (non-breaking change which adds a new integration)
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] Non-breaking change (fix of existing functionality that will not
change current behavior)
- [ ] Documentation (added/updated documentation)
All tests should be run against the port production
environment(using a testing org).
### Core testing checklist
- [ ] Integration able to create all default resources from scratch
- [ ] Resync finishes successfully
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Scheduled resync able to abort existing resync and start a new one
- [ ] Tested with at least 2 integrations from scratch
- [ ] Tested with Kafka and Polling event listeners
- [ ] Tested deletion of entities that don't pass the selector
### Integration testing checklist
- [ ] Integration able to create all default resources from scratch
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Resync finishes successfully
- [ ] If new resource kind is added or updated in the integration, add
example raw data, mapping and expected result to the `examples` folder
in the integration directory.
- [ ] If resource kind is updated, run the integration with the example
data and check if the expected result is achieved
- [ ] If new resource kind is added or updated, validate that
live-events for that resource are working as expected
- [ ] Docs PR link [here](#)
### Preflight checklist
- [ ] Handled rate limiting
- [ ] Handled pagination
- [ ] Implemented the code in async
- [ ] Support Multi account
## Screenshots
Include screenshots from your environment showing how the resources of
the integration will look.
## API Documentation
Provide links to the API documentation used for this integration.
---
CHANGELOG.md | 8 ++++++++
port_ocean/context/ocean.py | 4 +++-
port_ocean/core/integrations/mixins/events.py | 4 +++-
pyproject.toml | 2 +-
4 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b9cc13fc6..aea86a3f1f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.17.1 (2024-12-31)
+
+
+### Bug Fixes
+
+- Fixed lint failure for resources that have two `on_resync` decorators
+
+
## 0.17.0 (2024-12-31)
diff --git a/port_ocean/context/ocean.py b/port_ocean/context/ocean.py
index c9d37f37db..a414568c13 100644
--- a/port_ocean/context/ocean.py
+++ b/port_ocean/context/ocean.py
@@ -74,7 +74,9 @@ def on_resync(
self,
kind: str | None = None,
) -> Callable[[RESYNC_EVENT_LISTENER], RESYNC_EVENT_LISTENER | None]:
- def wrapper(function: RESYNC_EVENT_LISTENER) -> RESYNC_EVENT_LISTENER | None:
+ def wrapper(
+ function: RESYNC_EVENT_LISTENER | None,
+ ) -> RESYNC_EVENT_LISTENER | None:
if not self.app.config.event_listener.should_resync:
logger.debug(
"Webhook only event listener is used, resync events are ignored"
diff --git a/port_ocean/core/integrations/mixins/events.py b/port_ocean/core/integrations/mixins/events.py
index c422d05458..b760c86a85 100644
--- a/port_ocean/core/integrations/mixins/events.py
+++ b/port_ocean/core/integrations/mixins/events.py
@@ -46,7 +46,7 @@ def on_start(self, func: START_EVENT_LISTENER) -> START_EVENT_LISTENER:
return func
def on_resync(
- self, func: RESYNC_EVENT_LISTENER, kind: str | None = None
+ self, func: RESYNC_EVENT_LISTENER| None, kind: str | None = None
) -> RESYNC_EVENT_LISTENER:
"""Register a function as a listener for a "resync" event.
@@ -57,6 +57,8 @@ def on_resync(
Returns:
RESYNC_EVENT_LISTENER: The input function, unchanged.
"""
+ if func is None:
+ return None
if kind is None:
logger.debug(f"Registering resync event listener any kind")
else:
diff --git a/pyproject.toml b/pyproject.toml
index d991bc34d0..61268f0d55 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "port-ocean"
-version = "0.17.0"
+version = "0.17.1"
description = "Port Ocean is a CLI tool for managing your Port projects."
readme = "README.md"
homepage = "https://app.getport.io"