port-ocean 0.12.2.dev5__py3-none-any.whl → 0.12.2.dev7__py3-none-any.whl
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/clients/port/mixins/entities.py +39 -40
- port_ocean/core/event_listener/base.py +2 -11
- port_ocean/core/handlers/entities_state_applier/port/applier.py +31 -32
- port_ocean/core/integrations/mixins/sync_raw.py +46 -44
- port_ocean/log/handlers.py +7 -8
- port_ocean/ocean.py +11 -12
- {port_ocean-0.12.2.dev5.dist-info → port_ocean-0.12.2.dev7.dist-info}/METADATA +1 -1
- {port_ocean-0.12.2.dev5.dist-info → port_ocean-0.12.2.dev7.dist-info}/RECORD +11 -11
- {port_ocean-0.12.2.dev5.dist-info → port_ocean-0.12.2.dev7.dist-info}/LICENSE.md +0 -0
- {port_ocean-0.12.2.dev5.dist-info → port_ocean-0.12.2.dev7.dist-info}/WHEEL +0 -0
- {port_ocean-0.12.2.dev5.dist-info → port_ocean-0.12.2.dev7.dist-info}/entry_points.txt +0 -0
|
@@ -56,33 +56,33 @@ class EntityClientMixin:
|
|
|
56
56
|
f"entity: {entity.identifier} of "
|
|
57
57
|
f"blueprint: {entity.blueprint}"
|
|
58
58
|
)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return
|
|
59
|
+
handle_status_code(response, should_raise)
|
|
60
|
+
result = response.json()
|
|
61
|
+
|
|
62
|
+
result_entity = (
|
|
63
|
+
Entity.parse_obj(result["entity"]) if result.get("entity") else entity
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Happens when upsert fails and search identifier is defined.
|
|
67
|
+
# We return None to ignore the entity later in the delete process
|
|
68
|
+
if result_entity.is_using_search_identifier:
|
|
69
|
+
return None
|
|
70
|
+
|
|
71
|
+
# In order to save memory we'll keep only the identifier, blueprint and relations of the
|
|
72
|
+
# upserted entity result for later calculations
|
|
73
|
+
reduced_entity = Entity(
|
|
74
|
+
identifier=result_entity.identifier, blueprint=result_entity.blueprint
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# Turning dict typed relations (raw search relations) is required
|
|
78
|
+
# for us to be able to successfully calculate the participation related entities
|
|
79
|
+
# and ignore the ones that don't as they weren't upserted
|
|
80
|
+
reduced_entity.relations = {
|
|
81
|
+
key: None if isinstance(relation, dict) else relation
|
|
82
|
+
for key, relation in result_entity.relations.items()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return reduced_entity
|
|
86
86
|
|
|
87
87
|
async def batch_upsert_entities(
|
|
88
88
|
self,
|
|
@@ -91,7 +91,7 @@ class EntityClientMixin:
|
|
|
91
91
|
user_agent_type: UserAgentType | None = None,
|
|
92
92
|
should_raise: bool = True,
|
|
93
93
|
) -> list[Entity]:
|
|
94
|
-
await asyncio.gather(
|
|
94
|
+
modified_entities_results = await asyncio.gather(
|
|
95
95
|
*(
|
|
96
96
|
self.upsert_entity(
|
|
97
97
|
entity,
|
|
@@ -103,18 +103,17 @@ class EntityClientMixin:
|
|
|
103
103
|
),
|
|
104
104
|
return_exceptions=True,
|
|
105
105
|
)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# return entity_results
|
|
106
|
+
entity_results = [
|
|
107
|
+
entity for entity in modified_entities_results if isinstance(entity, Entity)
|
|
108
|
+
]
|
|
109
|
+
if not should_raise:
|
|
110
|
+
return entity_results
|
|
111
|
+
|
|
112
|
+
for entity_result in modified_entities_results:
|
|
113
|
+
if isinstance(entity_result, Exception):
|
|
114
|
+
raise entity_result
|
|
115
|
+
|
|
116
|
+
return entity_results
|
|
118
117
|
|
|
119
118
|
async def delete_entity(
|
|
120
119
|
self,
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import asyncio
|
|
2
1
|
from abc import abstractmethod
|
|
3
|
-
from concurrent.futures import ProcessPoolExecutor
|
|
4
2
|
from typing import TypedDict, Callable, Any, Awaitable
|
|
5
3
|
|
|
6
4
|
from pydantic import Extra
|
|
7
5
|
|
|
8
6
|
from port_ocean.config.base import BaseOceanModel
|
|
7
|
+
from port_ocean.utils.signal import signal_handler
|
|
9
8
|
from port_ocean.context.ocean import ocean
|
|
10
9
|
from port_ocean.utils.misc import IntegrationStateStatus
|
|
11
|
-
from port_ocean.utils.signal import signal_handler
|
|
12
10
|
|
|
13
11
|
|
|
14
12
|
class EventListenerEvents(TypedDict):
|
|
@@ -69,14 +67,7 @@ class BaseEventListener:
|
|
|
69
67
|
"""
|
|
70
68
|
await self._before_resync()
|
|
71
69
|
try:
|
|
72
|
-
|
|
73
|
-
with ProcessPoolExecutor() as executor:
|
|
74
|
-
e = executor.submit(
|
|
75
|
-
lambda: asyncio.run_coroutine_threadsafe(
|
|
76
|
-
self.events["on_resync"](resync_args), loop
|
|
77
|
-
)
|
|
78
|
-
)
|
|
79
|
-
signal_handler.register(e.cancel)
|
|
70
|
+
await self.events["on_resync"](resync_args)
|
|
80
71
|
await self._after_resync()
|
|
81
72
|
except Exception as e:
|
|
82
73
|
await self._on_resync_failure(e)
|
|
@@ -97,38 +97,37 @@ class HttpEntitiesStateApplier(BaseEntitiesStateApplier):
|
|
|
97
97
|
self, entities: list[Entity], user_agent_type: UserAgentType
|
|
98
98
|
) -> list[Entity]:
|
|
99
99
|
logger.info(f"Upserting {len(entities)} entities")
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return []
|
|
100
|
+
modified_entities: list[Entity] = []
|
|
101
|
+
if event.port_app_config.create_missing_related_entities:
|
|
102
|
+
modified_entities = await self.context.port_client.batch_upsert_entities(
|
|
103
|
+
entities,
|
|
104
|
+
event.port_app_config.get_port_request_options(),
|
|
105
|
+
user_agent_type,
|
|
106
|
+
should_raise=False,
|
|
107
|
+
)
|
|
108
|
+
else:
|
|
109
|
+
entities_with_search_identifier: list[Entity] = []
|
|
110
|
+
entities_without_search_identifier: list[Entity] = []
|
|
111
|
+
for entity in entities:
|
|
112
|
+
if entity.is_using_search_identifier:
|
|
113
|
+
entities_with_search_identifier.append(entity)
|
|
114
|
+
else:
|
|
115
|
+
entities_without_search_identifier.append(entity)
|
|
116
|
+
|
|
117
|
+
ordered_created_entities = reversed(
|
|
118
|
+
entities_with_search_identifier
|
|
119
|
+
+ order_by_entities_dependencies(entities_without_search_identifier)
|
|
120
|
+
)
|
|
121
|
+
for entity in ordered_created_entities:
|
|
122
|
+
upsertedEntity = await self.context.port_client.upsert_entity(
|
|
123
|
+
entity,
|
|
124
|
+
event.port_app_config.get_port_request_options(),
|
|
125
|
+
user_agent_type,
|
|
126
|
+
should_raise=False,
|
|
127
|
+
)
|
|
128
|
+
if upsertedEntity:
|
|
129
|
+
modified_entities.append(upsertedEntity)
|
|
130
|
+
return modified_entities
|
|
132
131
|
|
|
133
132
|
async def delete(
|
|
134
133
|
self, entities: list[Entity], user_agent_type: UserAgentType
|
|
@@ -3,6 +3,7 @@ import inspect
|
|
|
3
3
|
import typing
|
|
4
4
|
from typing import Callable, Awaitable, Any
|
|
5
5
|
|
|
6
|
+
import httpx
|
|
6
7
|
from loguru import logger
|
|
7
8
|
|
|
8
9
|
from port_ocean.clients.port.types import UserAgentType
|
|
@@ -139,11 +140,11 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
|
|
|
139
140
|
objects_diff = await self._calculate_raw(
|
|
140
141
|
[(resource, results)], parse_all, send_raw_data_examples_amount
|
|
141
142
|
)
|
|
142
|
-
await self.entities_state_applier.upsert(
|
|
143
|
+
modified_objects = await self.entities_state_applier.upsert(
|
|
143
144
|
objects_diff[0].entity_selector_diff.passed, user_agent_type
|
|
144
145
|
)
|
|
145
146
|
return CalculationResult(
|
|
146
|
-
objects_diff[0].entity_selector_diff._replace(passed=
|
|
147
|
+
objects_diff[0].entity_selector_diff._replace(passed=modified_objects),
|
|
147
148
|
errors=objects_diff[0].errors,
|
|
148
149
|
)
|
|
149
150
|
|
|
@@ -172,48 +173,49 @@ class SyncRawMixin(HandlerMixin, EventsMixin):
|
|
|
172
173
|
self, resource_config: ResourceConfig, user_agent_type: UserAgentType
|
|
173
174
|
) -> tuple[list[Entity], list[Exception]]:
|
|
174
175
|
results, errors = await self._get_resource_raw_results(resource_config)
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
)
|
|
176
|
+
passed_entities = []
|
|
177
|
+
# async_generators: list[ASYNC_GENERATOR_RESYNC_TYPE] = []
|
|
178
|
+
# raw_results: RAW_RESULT = []
|
|
179
|
+
# for result in results:
|
|
180
|
+
# if isinstance(result, dict):
|
|
181
|
+
# raw_results.append(result)
|
|
182
|
+
# else:
|
|
183
|
+
# async_generators.append(result)
|
|
184
|
+
#
|
|
185
|
+
# send_raw_data_examples_amount = (
|
|
186
|
+
# SEND_RAW_DATA_EXAMPLES_AMOUNT if ocean.config.send_raw_data_examples else 0
|
|
187
|
+
# )
|
|
188
|
+
# all_entities, register_errors = await self._register_resource_raw(
|
|
189
|
+
# resource_config,
|
|
190
|
+
# raw_results,
|
|
191
|
+
# user_agent_type,
|
|
192
|
+
# send_raw_data_examples_amount=send_raw_data_examples_amount,
|
|
193
|
+
# )
|
|
194
|
+
# errors.extend(register_errors)
|
|
195
|
+
# passed_entities = list(all_entities.passed)
|
|
196
|
+
#
|
|
197
|
+
# for generator in async_generators:
|
|
198
|
+
# try:
|
|
199
|
+
# async for items in generator:
|
|
200
|
+
# if send_raw_data_examples_amount > 0:
|
|
201
|
+
# send_raw_data_examples_amount = max(
|
|
202
|
+
# 0, send_raw_data_examples_amount - len(passed_entities)
|
|
203
|
+
# )
|
|
204
|
+
#
|
|
205
|
+
# entities, register_errors = await self._register_resource_raw(
|
|
206
|
+
# resource_config,
|
|
207
|
+
# items,
|
|
208
|
+
# user_agent_type,
|
|
209
|
+
# send_raw_data_examples_amount=send_raw_data_examples_amount,
|
|
210
|
+
# )
|
|
211
|
+
# errors.extend(register_errors)
|
|
212
|
+
# passed_entities.extend(entities.passed)
|
|
213
|
+
# except* OceanAbortException as error:
|
|
214
|
+
# errors.append(error)
|
|
215
|
+
#
|
|
216
|
+
# logger.info(
|
|
217
|
+
# f"Finished registering change for {len(results)} raw results for kind: {resource_config.kind}. {len(passed_entities)} entities were affected"
|
|
218
|
+
# )
|
|
217
219
|
return passed_entities, errors
|
|
218
220
|
|
|
219
221
|
async def register_raw(
|
port_ocean/log/handlers.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import logging
|
|
3
3
|
import sys
|
|
4
|
+
import threading
|
|
4
5
|
import time
|
|
5
|
-
from concurrent.futures import ProcessPoolExecutor
|
|
6
6
|
from datetime import datetime
|
|
7
7
|
from logging.handlers import MemoryHandler
|
|
8
8
|
from typing import Any
|
|
@@ -65,19 +65,18 @@ class HTTPMemoryHandler(MemoryHandler):
|
|
|
65
65
|
if self.ocean is None or not self.buffer:
|
|
66
66
|
return
|
|
67
67
|
|
|
68
|
+
def _wrap_event_loop(_ocean: Ocean, logs_to_send: list[dict[str, Any]]) -> None:
|
|
69
|
+
loop = asyncio.new_event_loop()
|
|
70
|
+
loop.run_until_complete(self.send_logs(_ocean, logs_to_send))
|
|
71
|
+
loop.close()
|
|
72
|
+
|
|
68
73
|
self.acquire()
|
|
69
74
|
logs = list(self._serialized_buffer)
|
|
70
75
|
if logs:
|
|
71
76
|
self.buffer.clear()
|
|
72
77
|
self._serialized_buffer.clear()
|
|
73
78
|
self.last_flush_time = time.time()
|
|
74
|
-
|
|
75
|
-
with ProcessPoolExecutor() as executor:
|
|
76
|
-
executor.submit(
|
|
77
|
-
lambda: asyncio.run_coroutine_threadsafe(
|
|
78
|
-
self.send_logs(self.ocean, logs), loop
|
|
79
|
-
)
|
|
80
|
-
)
|
|
79
|
+
threading.Thread(target=_wrap_event_loop, args=(self.ocean, logs)).start()
|
|
81
80
|
self.release()
|
|
82
81
|
|
|
83
82
|
async def send_logs(
|
port_ocean/ocean.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import sys
|
|
3
|
-
|
|
3
|
+
import threading
|
|
4
4
|
from contextlib import asynccontextmanager
|
|
5
5
|
from typing import Callable, Any, Dict, AsyncIterator, Type
|
|
6
6
|
|
|
@@ -9,6 +9,8 @@ from loguru import logger
|
|
|
9
9
|
from pydantic import BaseModel
|
|
10
10
|
from starlette.types import Scope, Receive, Send
|
|
11
11
|
|
|
12
|
+
from port_ocean.core.handlers.resync_state_updater import ResyncStateUpdater
|
|
13
|
+
from port_ocean.core.models import Runtime
|
|
12
14
|
from port_ocean.clients.port.client import PortClient
|
|
13
15
|
from port_ocean.config.settings import (
|
|
14
16
|
IntegrationConfiguration,
|
|
@@ -18,15 +20,13 @@ from port_ocean.context.ocean import (
|
|
|
18
20
|
ocean,
|
|
19
21
|
initialize_port_ocean_context,
|
|
20
22
|
)
|
|
21
|
-
from port_ocean.core.handlers.resync_state_updater import ResyncStateUpdater
|
|
22
23
|
from port_ocean.core.integrations.base import BaseIntegration
|
|
23
|
-
from port_ocean.core.models import Runtime
|
|
24
24
|
from port_ocean.log.sensetive import sensitive_log_filter
|
|
25
25
|
from port_ocean.middlewares import request_handler
|
|
26
|
-
from port_ocean.utils.misc import IntegrationStateStatus
|
|
27
26
|
from port_ocean.utils.repeat import repeat_every
|
|
28
27
|
from port_ocean.utils.signal import signal_handler
|
|
29
28
|
from port_ocean.version import __integration_version__
|
|
29
|
+
from port_ocean.utils.misc import IntegrationStateStatus
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class Ocean:
|
|
@@ -92,13 +92,6 @@ class Ocean:
|
|
|
92
92
|
)
|
|
93
93
|
raise e
|
|
94
94
|
|
|
95
|
-
def pool_executor_wrapper(event_loop) -> None:
|
|
96
|
-
with ProcessPoolExecutor() as executor:
|
|
97
|
-
e = executor.submit(lambda: asyncio.run_coroutine_threadsafe(
|
|
98
|
-
execute_resync_all(), event_loop
|
|
99
|
-
))
|
|
100
|
-
signal_handler.register(e.cancel)
|
|
101
|
-
|
|
102
95
|
interval = self.config.scheduled_resync_interval
|
|
103
96
|
loop = asyncio.get_event_loop()
|
|
104
97
|
if interval is not None:
|
|
@@ -110,7 +103,13 @@ class Ocean:
|
|
|
110
103
|
seconds=interval * 60,
|
|
111
104
|
# Not running the resync immediately because the event listener should run resync on startup
|
|
112
105
|
wait_first=True,
|
|
113
|
-
)(
|
|
106
|
+
)(
|
|
107
|
+
lambda: threading.Thread(
|
|
108
|
+
target=lambda: asyncio.run_coroutine_threadsafe(
|
|
109
|
+
execute_resync_all(), loop
|
|
110
|
+
)
|
|
111
|
+
).start()
|
|
112
|
+
)
|
|
114
113
|
await repeated_function()
|
|
115
114
|
|
|
116
115
|
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
@@ -43,7 +43,7 @@ port_ocean/clients/port/authentication.py,sha256=t3z6h4vld-Tzkpth15sstaMJg0rccX-
|
|
|
43
43
|
port_ocean/clients/port/client.py,sha256=Xd8Jk25Uh4WXY_WW-z1Qbv6F3ZTBFPoOolsxHMfozKw,3366
|
|
44
44
|
port_ocean/clients/port/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
45
|
port_ocean/clients/port/mixins/blueprints.py,sha256=POBl4uDocrgJBw4rvCAzwRcD4jk-uBL6pDAuKMTajdg,4633
|
|
46
|
-
port_ocean/clients/port/mixins/entities.py,sha256=
|
|
46
|
+
port_ocean/clients/port/mixins/entities.py,sha256=WdqT1gyS81pByUl9xIfZz_xEHRaBfDuZ-ekKX53oBSE,8870
|
|
47
47
|
port_ocean/clients/port/mixins/integrations.py,sha256=HnWXaJt41SUcha-bhvLdJW07j-l7xIo91GUzzwl2f_E,4859
|
|
48
48
|
port_ocean/clients/port/mixins/migrations.py,sha256=A6896oJF6WbFL2WroyTkMzr12yhVyWqGoq9dtLNSKBY,1457
|
|
49
49
|
port_ocean/clients/port/retry_transport.py,sha256=PtIZOAZ6V-ncpVysRUsPOgt8Sf01QLnTKB5YeKBxkJk,1861
|
|
@@ -65,7 +65,7 @@ port_ocean/core/defaults/clean.py,sha256=S3UAfca-oU89WJKIB4OgGjGjPr0vxBQ2aRZsLTZ
|
|
|
65
65
|
port_ocean/core/defaults/common.py,sha256=uVUg6VEn4RqtXQwLwMNGfkmT5zYRN_h5USfKw3poVyo,3561
|
|
66
66
|
port_ocean/core/defaults/initialize.py,sha256=qg4JLIWjp0c5-9w09X99muHRYX4k1cGZ_77vYo-tnpU,8422
|
|
67
67
|
port_ocean/core/event_listener/__init__.py,sha256=mzJ33wRq0kh60fpVdOHVmvMTUQIvz3vxmifyBgwDn0E,889
|
|
68
|
-
port_ocean/core/event_listener/base.py,sha256=
|
|
68
|
+
port_ocean/core/event_listener/base.py,sha256=1Nmpg00OfT2AD2L8eFm4VQEcdG2TClpSWJMhWhAjkEE,2356
|
|
69
69
|
port_ocean/core/event_listener/factory.py,sha256=AYYfSHPAF7P5H-uQECXT0JVJjKDHrYkWJJBSL4mGkg8,3697
|
|
70
70
|
port_ocean/core/event_listener/http.py,sha256=N8HrfFqR3KGKz96pWdp_pP-m30jGtcz_1CkijovkBN8,2565
|
|
71
71
|
port_ocean/core/event_listener/kafka.py,sha256=ulidnp4sz-chXwHsbH9JayVjcxy_mG6ts_Im3YKmLpI,6983
|
|
@@ -76,7 +76,7 @@ port_ocean/core/handlers/base.py,sha256=cTarblazu8yh8xz2FpB-dzDKuXxtoi143XJgPbV_
|
|
|
76
76
|
port_ocean/core/handlers/entities_state_applier/__init__.py,sha256=kgLZDCeCEzi4r-0nzW9k78haOZNf6PX7mJOUr34A4c8,173
|
|
77
77
|
port_ocean/core/handlers/entities_state_applier/base.py,sha256=5wHL0icfFAYRPqk8iV_wN49GdJ3aRUtO8tumSxBi4Wo,2268
|
|
78
78
|
port_ocean/core/handlers/entities_state_applier/port/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
|
-
port_ocean/core/handlers/entities_state_applier/port/applier.py,sha256=
|
|
79
|
+
port_ocean/core/handlers/entities_state_applier/port/applier.py,sha256=EirgWhT_TNeEwfdCElEDGkJ2tSOz9HsaUJ1i2uD7z28,5922
|
|
80
80
|
port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py,sha256=1zncwCbE-Gej0xaWKlzZgoXxOBe9bgs_YxlZ8QW3NdI,1751
|
|
81
81
|
port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py,sha256=82BvU8t5w9uhsxX8hbnwuRPuWhW3cMeuT_5sVIkip1I,1550
|
|
82
82
|
port_ocean/core/handlers/entity_processor/__init__.py,sha256=FvFCunFg44wNQoqlybem9MthOs7p1Wawac87uSXz9U8,156
|
|
@@ -94,7 +94,7 @@ port_ocean/core/integrations/mixins/__init__.py,sha256=FA1FEKMM6P-L2_m7Q4L20mFa4
|
|
|
94
94
|
port_ocean/core/integrations/mixins/events.py,sha256=Ddfx2L4FpghV38waF8OfVeOV0bHBxNIgjU-q5ffillI,2341
|
|
95
95
|
port_ocean/core/integrations/mixins/handler.py,sha256=mZ7-0UlG3LcrwJttFbMe-R4xcOU2H_g33tZar7PwTv8,3771
|
|
96
96
|
port_ocean/core/integrations/mixins/sync.py,sha256=B9fEs8faaYLLikH9GBjE_E61vo0bQDjIGQsQ1SRXOlA,3931
|
|
97
|
-
port_ocean/core/integrations/mixins/sync_raw.py,sha256=
|
|
97
|
+
port_ocean/core/integrations/mixins/sync_raw.py,sha256=uJpcCDYXkS42snXkt6LXWTCO14xhQDWUDwJEEdRXAMk,19109
|
|
98
98
|
port_ocean/core/integrations/mixins/utils.py,sha256=7y1rGETZIjOQadyIjFJXIHKkQFKx_SwiP-TrAIsyyLY,2303
|
|
99
99
|
port_ocean/core/models.py,sha256=dJ2_olTdbjUpObQJNmg7e7EENU_zZiX6XOaknNp54B0,1342
|
|
100
100
|
port_ocean/core/ocean_types.py,sha256=3_d8-n626f1kWLQ_Jxw194LEyrOVupz05qs_Y1pvB-A,990
|
|
@@ -111,11 +111,11 @@ port_ocean/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
111
111
|
port_ocean/helpers/async_client.py,sha256=SRlP6o7_FCSY3UHnRlZdezppePVxxOzZ0z861vE3K40,1783
|
|
112
112
|
port_ocean/helpers/retry.py,sha256=IQ0RfQ2T5o6uoZh2WW2nrFH5TT6K_k3y2Im0HDp5j9Y,15059
|
|
113
113
|
port_ocean/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
-
port_ocean/log/handlers.py,sha256=
|
|
114
|
+
port_ocean/log/handlers.py,sha256=k9G_Mb4ga2-Jke9irpdlYqj6EYiwv0gEsh4TgyqqOmI,2853
|
|
115
115
|
port_ocean/log/logger_setup.py,sha256=BaXt-mh9CVXhneh37H46d04lqOdIBixG1pFyGfotuZs,2328
|
|
116
116
|
port_ocean/log/sensetive.py,sha256=lVKiZH6b7TkrZAMmhEJRhcl67HNM94e56x12DwFgCQk,2920
|
|
117
117
|
port_ocean/middlewares.py,sha256=9wYCdyzRZGK1vjEJ28FY_DkfwDNENmXp504UKPf5NaQ,2727
|
|
118
|
-
port_ocean/ocean.py,sha256=
|
|
118
|
+
port_ocean/ocean.py,sha256=Oe4H3kKtkj52uNO4Rd_47iY3MBdrTtshXZ_16q7A8bM,5071
|
|
119
119
|
port_ocean/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
120
|
port_ocean/run.py,sha256=rTxBlrQd4yyrtgErCFJCHCEHs7d1OXrRiJehUYmIbN0,2212
|
|
121
121
|
port_ocean/sonar-project.properties,sha256=X_wLzDOkEVmpGLRMb2fg9Rb0DxWwUFSvESId8qpvrPI,73
|
|
@@ -140,8 +140,8 @@ port_ocean/utils/repeat.py,sha256=0EFWM9d8lLXAhZmAyczY20LAnijw6UbIECf5lpGbOas,32
|
|
|
140
140
|
port_ocean/utils/signal.py,sha256=K-6kKFQTltcmKDhtyZAcn0IMa3sUpOHGOAUdWKgx0_E,1369
|
|
141
141
|
port_ocean/utils/time.py,sha256=pufAOH5ZQI7gXvOvJoQXZXZJV-Dqktoj9Qp9eiRwmJ4,1939
|
|
142
142
|
port_ocean/version.py,sha256=UsuJdvdQlazzKGD3Hd5-U7N69STh8Dq9ggJzQFnu9fU,177
|
|
143
|
-
port_ocean-0.12.2.
|
|
144
|
-
port_ocean-0.12.2.
|
|
145
|
-
port_ocean-0.12.2.
|
|
146
|
-
port_ocean-0.12.2.
|
|
147
|
-
port_ocean-0.12.2.
|
|
143
|
+
port_ocean-0.12.2.dev7.dist-info/LICENSE.md,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
144
|
+
port_ocean-0.12.2.dev7.dist-info/METADATA,sha256=o1pzpgK4cR7i9nTf5E7PQoq4oSQxSbcOehJEPNUd8AY,6619
|
|
145
|
+
port_ocean-0.12.2.dev7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
146
|
+
port_ocean-0.12.2.dev7.dist-info/entry_points.txt,sha256=F_DNUmGZU2Kme-8NsWM5LLE8piGMafYZygRYhOVtcjA,54
|
|
147
|
+
port_ocean-0.12.2.dev7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|