port-ocean 0.12.2.dev14__py3-none-any.whl → 0.12.2.dev17__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/cli/commands/list_integrations.py +5 -8
- port_ocean/cli/commands/pull.py +16 -20
- port_ocean/clients/port/authentication.py +13 -12
- port_ocean/clients/port/client.py +8 -9
- port_ocean/clients/port/mixins/blueprints.py +14 -14
- port_ocean/clients/port/mixins/entities.py +8 -7
- port_ocean/clients/port/mixins/integrations.py +11 -11
- port_ocean/clients/port/mixins/migrations.py +5 -5
- port_ocean/clients/port/retry_transport.py +35 -13
- port_ocean/clients/port/utils.py +23 -32
- port_ocean/core/defaults/clean.py +3 -3
- port_ocean/core/defaults/common.py +3 -3
- port_ocean/core/defaults/initialize.py +47 -48
- port_ocean/core/integrations/mixins/sync_raw.py +3 -3
- port_ocean/core/utils.py +3 -4
- port_ocean/helpers/async_client.py +53 -0
- port_ocean/helpers/retry.py +221 -71
- port_ocean/ocean.py +22 -20
- port_ocean/run.py +3 -3
- port_ocean/tests/clients/port/mixins/test_entities.py +4 -3
- port_ocean/tests/test_smoke.py +3 -3
- port_ocean/utils/async_http.py +8 -13
- port_ocean/utils/repeat.py +2 -6
- port_ocean/utils/signal.py +2 -1
- {port_ocean-0.12.2.dev14.dist-info → port_ocean-0.12.2.dev17.dist-info}/METADATA +1 -2
- {port_ocean-0.12.2.dev14.dist-info → port_ocean-0.12.2.dev17.dist-info}/RECORD +29 -28
- {port_ocean-0.12.2.dev14.dist-info → port_ocean-0.12.2.dev17.dist-info}/LICENSE.md +0 -0
- {port_ocean-0.12.2.dev14.dist-info → port_ocean-0.12.2.dev17.dist-info}/WHEEL +0 -0
- {port_ocean-0.12.2.dev14.dist-info → port_ocean-0.12.2.dev17.dist-info}/entry_points.txt +0 -0
port_ocean/ocean.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import sys
|
|
3
|
+
import threading
|
|
3
4
|
from contextlib import asynccontextmanager
|
|
4
5
|
from typing import Callable, Any, Dict, AsyncIterator, Type
|
|
5
6
|
|
|
@@ -17,11 +18,8 @@ from port_ocean.context.ocean import (
|
|
|
17
18
|
ocean,
|
|
18
19
|
initialize_port_ocean_context,
|
|
19
20
|
)
|
|
20
|
-
from port_ocean.core.handlers.resync_state_updater import ResyncStateUpdater
|
|
21
21
|
from port_ocean.core.integrations.base import BaseIntegration
|
|
22
22
|
from port_ocean.core.models import Runtime
|
|
23
|
-
from port_ocean.log.sensetive import sensitive_log_filter
|
|
24
|
-
from port_ocean.middlewares import request_handler
|
|
25
23
|
from port_ocean.utils.repeat import repeat_every
|
|
26
24
|
from port_ocean.utils.signal import signal_handler
|
|
27
25
|
from port_ocean.version import __integration_version__
|
|
@@ -29,16 +27,16 @@ from port_ocean.version import __integration_version__
|
|
|
29
27
|
|
|
30
28
|
class Ocean:
|
|
31
29
|
def __init__(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
self,
|
|
31
|
+
app: FastAPI | None = None,
|
|
32
|
+
integration_class: Callable[[PortOceanContext], BaseIntegration] | None = None,
|
|
33
|
+
integration_router: APIRouter | None = None,
|
|
34
|
+
config_factory: Type[BaseModel] | None = None,
|
|
35
|
+
config_override: Dict[str, Any] | None = None,
|
|
38
36
|
):
|
|
39
37
|
initialize_port_ocean_context(self)
|
|
40
38
|
self.fast_api_app = app or FastAPI()
|
|
41
|
-
self.fast_api_app.middleware("http")(request_handler)
|
|
39
|
+
# self.fast_api_app.middleware("http")(request_handler)
|
|
42
40
|
|
|
43
41
|
self.config = IntegrationConfiguration(
|
|
44
42
|
# type: ignore
|
|
@@ -47,10 +45,10 @@ class Ocean:
|
|
|
47
45
|
)
|
|
48
46
|
|
|
49
47
|
# add the integration sensitive configuration to the sensitive patterns to mask out
|
|
50
|
-
sensitive_log_filter.hide_sensitive_strings(
|
|
51
|
-
|
|
52
|
-
)
|
|
53
|
-
self.integration_router = integration_router or APIRouter()
|
|
48
|
+
# sensitive_log_filter.hide_sensitive_strings(
|
|
49
|
+
# *self.config.get_sensitive_fields_data()
|
|
50
|
+
# )
|
|
51
|
+
# self.integration_router = integration_router or APIRouter()
|
|
54
52
|
|
|
55
53
|
self.port_client = PortClient(
|
|
56
54
|
base_url=self.config.port.base_url,
|
|
@@ -64,15 +62,15 @@ class Ocean:
|
|
|
64
62
|
integration_class(ocean) if integration_class else BaseIntegration(ocean)
|
|
65
63
|
)
|
|
66
64
|
|
|
67
|
-
self.resync_state_updater = ResyncStateUpdater(
|
|
68
|
-
|
|
69
|
-
)
|
|
65
|
+
# self.resync_state_updater = ResyncStateUpdater(
|
|
66
|
+
# self.port_client, self.config.scheduled_resync_interval
|
|
67
|
+
# )
|
|
70
68
|
|
|
71
69
|
def is_saas(self) -> bool:
|
|
72
70
|
return self.config.runtime == Runtime.Saas
|
|
73
71
|
|
|
74
72
|
async def _setup_scheduled_resync(
|
|
75
|
-
|
|
73
|
+
self,
|
|
76
74
|
) -> None:
|
|
77
75
|
async def execute_resync_all() -> None:
|
|
78
76
|
# await self.resync_state_updater.update_before_resync()
|
|
@@ -102,12 +100,16 @@ class Ocean:
|
|
|
102
100
|
# Not running the resync immediately because the event listener should run resync on startup
|
|
103
101
|
wait_first=False,
|
|
104
102
|
)(
|
|
105
|
-
|
|
103
|
+
lambda: threading.Thread(
|
|
104
|
+
target=lambda: asyncio.run_coroutine_threadsafe(
|
|
105
|
+
execute_resync_all(), loop
|
|
106
|
+
)
|
|
107
|
+
).start()
|
|
106
108
|
)
|
|
107
109
|
await repeated_function()
|
|
108
110
|
|
|
109
111
|
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
110
|
-
self.fast_api_app.include_router(self.integration_router, prefix="/integration")
|
|
112
|
+
# self.fast_api_app.include_router(self.integration_router, prefix="/integration")
|
|
111
113
|
|
|
112
114
|
@asynccontextmanager
|
|
113
115
|
async def lifecycle(_: FastAPI) -> AsyncIterator[None]:
|
port_ocean/run.py
CHANGED
|
@@ -7,8 +7,8 @@ from pydantic import BaseModel
|
|
|
7
7
|
|
|
8
8
|
from port_ocean.bootstrap import create_default_app
|
|
9
9
|
from port_ocean.config.dynamic import default_config_factory
|
|
10
|
-
from port_ocean.config.settings import
|
|
11
|
-
from port_ocean.core.defaults
|
|
10
|
+
from port_ocean.config.settings import LogLevelType, ApplicationSettings
|
|
11
|
+
from port_ocean.core.defaults import initialize_defaults
|
|
12
12
|
from port_ocean.core.utils import validate_integration_runtime
|
|
13
13
|
from port_ocean.log.logger_setup import setup_logger
|
|
14
14
|
from port_ocean.ocean import Ocean
|
|
@@ -60,4 +60,4 @@ def run(
|
|
|
60
60
|
|
|
61
61
|
initialize_defaults(app.integration.AppConfigHandlerClass.CONFIG_CLASS, app.config)
|
|
62
62
|
|
|
63
|
-
uvicorn.run(app, host="0.0.0.0", port=
|
|
63
|
+
uvicorn.run(app, host="0.0.0.0", port=8000, loop="none")
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
from unittest.mock import MagicMock
|
|
3
3
|
|
|
4
|
-
import aiohttp
|
|
5
4
|
import pytest
|
|
6
5
|
|
|
7
6
|
from port_ocean.clients.port.mixins.entities import EntityClientMixin
|
|
8
7
|
from port_ocean.core.models import Entity
|
|
8
|
+
from httpx import ReadTimeout
|
|
9
|
+
|
|
9
10
|
|
|
10
11
|
errored_entity_identifier: str = "a"
|
|
11
12
|
expected_result_entities = [
|
|
@@ -19,7 +20,7 @@ all_entities = [
|
|
|
19
20
|
|
|
20
21
|
async def mock_upsert_entity(entity: Entity, *args: Any, **kwargs: Any) -> Entity:
|
|
21
22
|
if entity.identifier == errored_entity_identifier:
|
|
22
|
-
raise
|
|
23
|
+
raise ReadTimeout("")
|
|
23
24
|
else:
|
|
24
25
|
return entity
|
|
25
26
|
|
|
@@ -46,7 +47,7 @@ async def test_batch_upsert_entities_read_timeout_should_raise_false(
|
|
|
46
47
|
async def test_batch_upsert_entities_read_timeout_should_raise_true(
|
|
47
48
|
entity_client: EntityClientMixin,
|
|
48
49
|
) -> None:
|
|
49
|
-
with pytest.raises(
|
|
50
|
+
with pytest.raises(ReadTimeout):
|
|
50
51
|
await entity_client.batch_upsert_entities(
|
|
51
52
|
entities=all_entities, request_options=MagicMock(), should_raise=True
|
|
52
53
|
)
|
port_ocean/tests/test_smoke.py
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from os import environ
|
|
2
2
|
from typing import Tuple
|
|
3
|
-
|
|
4
3
|
import pytest
|
|
5
4
|
|
|
6
5
|
from port_ocean.clients.port.client import PortClient
|
|
7
6
|
from port_ocean.clients.port.types import UserAgentType
|
|
8
7
|
from port_ocean.tests.helpers.smoke_test import SmokeTestDetails
|
|
9
8
|
|
|
9
|
+
|
|
10
10
|
pytestmark = pytest.mark.smoke
|
|
11
11
|
|
|
12
12
|
|
|
@@ -54,7 +54,7 @@ async def test_valid_fake_persons(
|
|
|
54
54
|
headers=headers,
|
|
55
55
|
)
|
|
56
56
|
|
|
57
|
-
fake_person_entities =
|
|
57
|
+
fake_person_entities = fake_person_entities_result.json()["entities"]
|
|
58
58
|
assert len(fake_person_entities)
|
|
59
59
|
|
|
60
60
|
fake_departments_result = await port_client.client.get(
|
|
@@ -62,7 +62,7 @@ async def test_valid_fake_persons(
|
|
|
62
62
|
headers=headers,
|
|
63
63
|
)
|
|
64
64
|
|
|
65
|
-
departments = [x["identifier"] for x in
|
|
65
|
+
departments = [x["identifier"] for x in fake_departments_result.json()["entities"]]
|
|
66
66
|
|
|
67
67
|
for department in departments:
|
|
68
68
|
assert len(
|
port_ocean/utils/async_http.py
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import aiohttp
|
|
4
|
-
from aiohttp import ClientTimeout
|
|
1
|
+
import httpx
|
|
5
2
|
from werkzeug.local import LocalStack, LocalProxy
|
|
6
3
|
|
|
7
4
|
from port_ocean.context.ocean import ocean
|
|
8
|
-
from port_ocean.helpers.
|
|
9
|
-
from port_ocean.
|
|
5
|
+
from port_ocean.helpers.async_client import OceanAsyncClient
|
|
6
|
+
from port_ocean.helpers.retry import RetryTransport
|
|
10
7
|
|
|
11
|
-
_http_client: LocalStack[
|
|
8
|
+
_http_client: LocalStack[httpx.AsyncClient] = LocalStack()
|
|
12
9
|
|
|
13
10
|
|
|
14
|
-
def _get_http_client_context() ->
|
|
11
|
+
def _get_http_client_context() -> httpx.AsyncClient:
|
|
15
12
|
client = _http_client.top
|
|
16
13
|
if client is None:
|
|
17
|
-
client =
|
|
18
|
-
timeout=ClientTimeout(total=ocean.config.client_timeout))
|
|
14
|
+
client = OceanAsyncClient(RetryTransport, timeout=ocean.config.client_timeout)
|
|
19
15
|
_http_client.push(client)
|
|
20
|
-
signal_handler.register(lambda: ensure_future(client.close()))
|
|
21
16
|
|
|
22
17
|
return client
|
|
23
18
|
|
|
24
19
|
|
|
25
20
|
"""
|
|
26
21
|
Utilize this client for all outbound integration requests to the third-party application. It functions as a wrapper
|
|
27
|
-
around the
|
|
22
|
+
around the httpx.AsyncClient, incorporating retry logic at the transport layer for handling retries on 5xx errors and
|
|
28
23
|
connection errors.
|
|
29
24
|
|
|
30
25
|
The client is instantiated lazily, only coming into existence upon its initial access. It should not be closed when in
|
|
31
26
|
use, as it operates as a singleton shared across all events in the thread. It also takes care of recreating the client
|
|
32
27
|
in scenarios such as the creation of a new event loop, such as when initiating a new thread.
|
|
33
28
|
"""
|
|
34
|
-
http_async_client:
|
|
29
|
+
http_async_client: httpx.AsyncClient = LocalProxy(lambda: _get_http_client_context()) # type: ignore
|
port_ocean/utils/repeat.py
CHANGED
|
@@ -7,8 +7,6 @@ from typing import Callable, Coroutine, Any
|
|
|
7
7
|
from loguru import logger
|
|
8
8
|
from starlette.concurrency import run_in_threadpool
|
|
9
9
|
|
|
10
|
-
from port_ocean.utils.signal import signal_handler
|
|
11
|
-
|
|
12
10
|
NoArgsNoReturnFuncT = Callable[[], None]
|
|
13
11
|
NoArgsNoReturnAsyncFuncT = Callable[[], Coroutine[Any, Any, None]]
|
|
14
12
|
NoArgsNoReturnDecorator = Callable[
|
|
@@ -65,9 +63,7 @@ def repeat_every(
|
|
|
65
63
|
repetitions += 1
|
|
66
64
|
try:
|
|
67
65
|
if is_coroutine:
|
|
68
|
-
|
|
69
|
-
signal_handler.register(lambda: task.cancel())
|
|
70
|
-
ensure_future(task)
|
|
66
|
+
await func() # type: ignore
|
|
71
67
|
else:
|
|
72
68
|
await run_in_threadpool(func)
|
|
73
69
|
except Exception as exc:
|
|
@@ -77,7 +73,7 @@ def repeat_every(
|
|
|
77
73
|
logger.error(formatted_exception)
|
|
78
74
|
if raise_exceptions:
|
|
79
75
|
raise exc
|
|
80
|
-
|
|
76
|
+
await asyncio.sleep(seconds)
|
|
81
77
|
|
|
82
78
|
ensure_future(loop())
|
|
83
79
|
|
port_ocean/utils/signal.py
CHANGED
|
@@ -3,7 +3,8 @@ from typing import Callable, Any
|
|
|
3
3
|
from werkzeug.local import LocalProxy, LocalStack
|
|
4
4
|
|
|
5
5
|
from port_ocean.exceptions.utils import (
|
|
6
|
-
|
|
6
|
+
SignalHandlerNotInitialized,
|
|
7
|
+
SignalHandlerAlreadyInitialized,
|
|
7
8
|
)
|
|
8
9
|
from port_ocean.utils.misc import generate_uuid
|
|
9
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: port-ocean
|
|
3
|
-
Version: 0.12.2.
|
|
3
|
+
Version: 0.12.2.dev17
|
|
4
4
|
Summary: Port Ocean is a CLI tool for managing your Port projects.
|
|
5
5
|
Home-page: https://app.getport.io
|
|
6
6
|
Keywords: ocean,port-ocean,port
|
|
@@ -22,7 +22,6 @@ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
|
22
22
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
23
|
Classifier: Topic :: Utilities
|
|
24
24
|
Provides-Extra: cli
|
|
25
|
-
Requires-Dist: aiohttp (>=3.10.10,<4.0.0)
|
|
26
25
|
Requires-Dist: aiostream (>=0.5.2,<0.7.0)
|
|
27
26
|
Requires-Dist: click (>=8.1.3,<9.0.0) ; extra == "cli"
|
|
28
27
|
Requires-Dist: confluent-kafka (>=2.1.1,<3.0.0)
|
|
@@ -7,10 +7,10 @@ port_ocean/cli/commands/defaults/__init___.py,sha256=5OKgakO79bTbplFv1_yWCrw1x_J
|
|
|
7
7
|
port_ocean/cli/commands/defaults/clean.py,sha256=b3MVxAc9pASGxG3O6AjbDJiFngw82UqclVuCZObVPGM,1544
|
|
8
8
|
port_ocean/cli/commands/defaults/dock.py,sha256=pFtHrU_LTvb5Ddrzj09Wxy-jg1Ym10wBYD-0tpDRugE,1104
|
|
9
9
|
port_ocean/cli/commands/defaults/group.py,sha256=hii_4CYoQ7jSMePbnP4AmruO_RKWCUcoV7dXXBlZafc,115
|
|
10
|
-
port_ocean/cli/commands/list_integrations.py,sha256=
|
|
10
|
+
port_ocean/cli/commands/list_integrations.py,sha256=DVVioFruGUE-_v6UUHlcemWNN6RlWwCrf1X4HmAXsf8,1134
|
|
11
11
|
port_ocean/cli/commands/main.py,sha256=gj0lmuLep2XeLNuabB7Wk0UVYPT7_CD_rAw5AoUQWSE,1057
|
|
12
12
|
port_ocean/cli/commands/new.py,sha256=uNDzb2cmUdOHBGsBujWmlB9FrlJvB8CD9dnXY_btGUc,3777
|
|
13
|
-
port_ocean/cli/commands/pull.py,sha256=
|
|
13
|
+
port_ocean/cli/commands/pull.py,sha256=VvrRjLNlfPuLIf7KzeIcbzzdi98Z0M9wCRpXC3QPxdI,2306
|
|
14
14
|
port_ocean/cli/commands/sail.py,sha256=rY7rEMjfy_KXiWvtL0T72TTLgeQ3HW4SOzKkz9wL9nI,2282
|
|
15
15
|
port_ocean/cli/commands/version.py,sha256=hEuIEIcm6Zkamz41Z9nxeSM_4g3oNlAgWwQyDGboh-E,536
|
|
16
16
|
port_ocean/cli/cookiecutter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -39,16 +39,16 @@ port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.
|
|
|
39
39
|
port_ocean/cli/utils.py,sha256=IUK2UbWqjci-lrcDdynZXqVP5B5TcjF0w5CpEVUks-k,54
|
|
40
40
|
port_ocean/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
41
|
port_ocean/clients/port/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
-
port_ocean/clients/port/authentication.py,sha256=
|
|
43
|
-
port_ocean/clients/port/client.py,sha256=
|
|
42
|
+
port_ocean/clients/port/authentication.py,sha256=t3z6h4vld-Tzkpth15sstaMJg0rccX-pXXjNtOa-nCY,2949
|
|
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
|
-
port_ocean/clients/port/mixins/blueprints.py,sha256=
|
|
46
|
-
port_ocean/clients/port/mixins/entities.py,sha256=
|
|
47
|
-
port_ocean/clients/port/mixins/integrations.py,sha256=
|
|
48
|
-
port_ocean/clients/port/mixins/migrations.py,sha256=
|
|
49
|
-
port_ocean/clients/port/retry_transport.py,sha256=
|
|
45
|
+
port_ocean/clients/port/mixins/blueprints.py,sha256=POBl4uDocrgJBw4rvCAzwRcD4jk-uBL6pDAuKMTajdg,4633
|
|
46
|
+
port_ocean/clients/port/mixins/entities.py,sha256=WdqT1gyS81pByUl9xIfZz_xEHRaBfDuZ-ekKX53oBSE,8870
|
|
47
|
+
port_ocean/clients/port/mixins/integrations.py,sha256=HnWXaJt41SUcha-bhvLdJW07j-l7xIo91GUzzwl2f_E,4859
|
|
48
|
+
port_ocean/clients/port/mixins/migrations.py,sha256=A6896oJF6WbFL2WroyTkMzr12yhVyWqGoq9dtLNSKBY,1457
|
|
49
|
+
port_ocean/clients/port/retry_transport.py,sha256=PtIZOAZ6V-ncpVysRUsPOgt8Sf01QLnTKB5YeKBxkJk,1861
|
|
50
50
|
port_ocean/clients/port/types.py,sha256=nvlgiAq4WH5_F7wQbz_GAWl-faob84LVgIjZ2Ww5mTk,451
|
|
51
|
-
port_ocean/clients/port/utils.py,sha256=
|
|
51
|
+
port_ocean/clients/port/utils.py,sha256=5B6rHgiVrtiL4YWh7Eq7_ncIeDwrDsB7jIvRik5xH8c,2373
|
|
52
52
|
port_ocean/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
port_ocean/config/base.py,sha256=x1gFbzujrxn7EJudRT81C6eN9WsYAb3vOHwcpcpX8Tc,6370
|
|
54
54
|
port_ocean/config/dynamic.py,sha256=qOFkRoJsn_BW7581omi_AoMxoHqasf_foxDQ_G11_SI,2030
|
|
@@ -61,9 +61,9 @@ port_ocean/context/ocean.py,sha256=2EreWOj-N2H7QUjEt5wGiv5KHP4pTZc70tn_wHcpF4w,4
|
|
|
61
61
|
port_ocean/context/resource.py,sha256=yDj63URzQelj8zJPh4BAzTtPhpKr9Gw9DRn7I_0mJ1s,1692
|
|
62
62
|
port_ocean/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
63
|
port_ocean/core/defaults/__init__.py,sha256=8qCZg8n06WAdMu9s_FiRtDYLGPGHbOuS60vapeUoAks,142
|
|
64
|
-
port_ocean/core/defaults/clean.py,sha256=
|
|
65
|
-
port_ocean/core/defaults/common.py,sha256=
|
|
66
|
-
port_ocean/core/defaults/initialize.py,sha256=
|
|
64
|
+
port_ocean/core/defaults/clean.py,sha256=S3UAfca-oU89WJKIB4OgGjGjPr0vxBQ2aRZsLTZhQ04,2185
|
|
65
|
+
port_ocean/core/defaults/common.py,sha256=uVUg6VEn4RqtXQwLwMNGfkmT5zYRN_h5USfKw3poVyo,3561
|
|
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
68
|
port_ocean/core/event_listener/base.py,sha256=1Nmpg00OfT2AD2L8eFm4VQEcdG2TClpSWJMhWhAjkEE,2356
|
|
69
69
|
port_ocean/core/event_listener/factory.py,sha256=AYYfSHPAF7P5H-uQECXT0JVJjKDHrYkWJJBSL4mGkg8,3697
|
|
@@ -94,11 +94,11 @@ 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=tZFWCPthhSaQ1x2TsBDnSN_G_WgzYVX0xE6kBvDCtHc,19000
|
|
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
|
|
101
|
-
port_ocean/core/utils.py,sha256=
|
|
101
|
+
port_ocean/core/utils.py,sha256=40UjRauRJO47WDSNn9bkCRD2bfhfB3e-dnOLULnuVzE,3631
|
|
102
102
|
port_ocean/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
103
|
port_ocean/exceptions/api.py,sha256=TLmTMqn4uHGaHgZK8PMIJ0TVJlPB4iP7xl9rx7GtCyY,426
|
|
104
104
|
port_ocean/exceptions/base.py,sha256=uY4DX7fIITDFfemCJDWpaZi3bD51lcANc5swpoNvMJA,46
|
|
@@ -108,18 +108,19 @@ port_ocean/exceptions/core.py,sha256=Zmb1m6NnkSPWpAiQA5tgejm3zpDMt1WQEN47OJNo54A
|
|
|
108
108
|
port_ocean/exceptions/port_defaults.py,sha256=45Bno5JEB-GXztvKsy8mw7TrydQmw13-4JAo2oQmXkE,438
|
|
109
109
|
port_ocean/exceptions/utils.py,sha256=gjOqpi-HpY1l4WlMFsGA9yzhxDhajhoGGdDDyGbLnqI,197
|
|
110
110
|
port_ocean/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
-
port_ocean/helpers/
|
|
111
|
+
port_ocean/helpers/async_client.py,sha256=SRlP6o7_FCSY3UHnRlZdezppePVxxOzZ0z861vE3K40,1783
|
|
112
|
+
port_ocean/helpers/retry.py,sha256=IQ0RfQ2T5o6uoZh2WW2nrFH5TT6K_k3y2Im0HDp5j9Y,15059
|
|
112
113
|
port_ocean/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
114
|
port_ocean/log/handlers.py,sha256=k9G_Mb4ga2-Jke9irpdlYqj6EYiwv0gEsh4TgyqqOmI,2853
|
|
114
115
|
port_ocean/log/logger_setup.py,sha256=qSeVwnivV4WoLx_4SfBwn2PtmUpNdkSEgfm0C8B3yUw,2332
|
|
115
116
|
port_ocean/log/sensetive.py,sha256=lVKiZH6b7TkrZAMmhEJRhcl67HNM94e56x12DwFgCQk,2920
|
|
116
117
|
port_ocean/middlewares.py,sha256=9wYCdyzRZGK1vjEJ28FY_DkfwDNENmXp504UKPf5NaQ,2727
|
|
117
|
-
port_ocean/ocean.py,sha256=
|
|
118
|
+
port_ocean/ocean.py,sha256=7NV-QVP-NivyZNoJXp2Mz6NGjkR0ngqml2zfdV5Qulc,4861
|
|
118
119
|
port_ocean/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
-
port_ocean/run.py,sha256=
|
|
120
|
+
port_ocean/run.py,sha256=6FHXSLkb7Lkyf15iQH7tifo-z2Z1RolkNaNju9rWFoM,2193
|
|
120
121
|
port_ocean/sonar-project.properties,sha256=X_wLzDOkEVmpGLRMb2fg9Rb0DxWwUFSvESId8qpvrPI,73
|
|
121
122
|
port_ocean/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
-
port_ocean/tests/clients/port/mixins/test_entities.py,sha256=
|
|
123
|
+
port_ocean/tests/clients/port/mixins/test_entities.py,sha256=A9myrnkLhKSQrnOLv1Zz2wiOVSxW65Q9RIUIRbn_V7w,1586
|
|
123
124
|
port_ocean/tests/conftest.py,sha256=JXASSS0IY0nnR6bxBflhzxS25kf4iNaABmThyZ0mZt8,101
|
|
124
125
|
port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py,sha256=Yv03P-LDcJCKZ21exiTFrcT1eu0zn6Z954dilxrb52Y,10842
|
|
125
126
|
port_ocean/tests/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -128,19 +129,19 @@ port_ocean/tests/helpers/integration.py,sha256=_RxS-RHpu11lrbhUXYPZp862HLWx8AoD7
|
|
|
128
129
|
port_ocean/tests/helpers/ocean_app.py,sha256=Dp1bwEDhWsx_G-KVxOfJX1eVIS4168ajLu39wAY275g,1693
|
|
129
130
|
port_ocean/tests/helpers/port_client.py,sha256=5d6GNr8vNNSOkrz1AdOhxBUKuusr_-UPDP7AVpHasQw,599
|
|
130
131
|
port_ocean/tests/helpers/smoke_test.py,sha256=_9aJJFRfuGJEg2D2YQJVJRmpreS6gEPHHQq8Q01x4aQ,2697
|
|
131
|
-
port_ocean/tests/test_smoke.py,sha256=
|
|
132
|
+
port_ocean/tests/test_smoke.py,sha256=uix2uIg_yOm8BHDgHw2hTFPy1fiIyxBGW3ENU_KoFlo,2557
|
|
132
133
|
port_ocean/utils/__init__.py,sha256=KMGnCPXZJbNwtgxtyMycapkDz8tpSyw23MSYT3iVeHs,91
|
|
133
|
-
port_ocean/utils/async_http.py,sha256=
|
|
134
|
+
port_ocean/utils/async_http.py,sha256=arnH458TExn2Dju_Sy6pHas_vF5RMWnOp-jBz5WAAcE,1226
|
|
134
135
|
port_ocean/utils/async_iterators.py,sha256=iw3cUHxfQm3zUSPdw2FmSXDU8E1Ppnys4TGhswNuQ8s,1569
|
|
135
136
|
port_ocean/utils/cache.py,sha256=3KItZDE2yVrbVDr-hoM8lNna8s2dlpxhP4ICdLjH4LQ,2231
|
|
136
137
|
port_ocean/utils/misc.py,sha256=0q2cJ5psqxn_5u_56pT7vOVQ3shDM02iC1lzyWQ_zl0,2098
|
|
137
138
|
port_ocean/utils/queue_utils.py,sha256=KWWl8YVnG-glcfIHhM6nefY-2sou_C6DVP1VynQwzB4,2762
|
|
138
|
-
port_ocean/utils/repeat.py,sha256=
|
|
139
|
-
port_ocean/utils/signal.py,sha256=
|
|
139
|
+
port_ocean/utils/repeat.py,sha256=0EFWM9d8lLXAhZmAyczY20LAnijw6UbIECf5lpGbOas,3231
|
|
140
|
+
port_ocean/utils/signal.py,sha256=K-6kKFQTltcmKDhtyZAcn0IMa3sUpOHGOAUdWKgx0_E,1369
|
|
140
141
|
port_ocean/utils/time.py,sha256=pufAOH5ZQI7gXvOvJoQXZXZJV-Dqktoj9Qp9eiRwmJ4,1939
|
|
141
142
|
port_ocean/version.py,sha256=UsuJdvdQlazzKGD3Hd5-U7N69STh8Dq9ggJzQFnu9fU,177
|
|
142
|
-
port_ocean-0.12.2.
|
|
143
|
-
port_ocean-0.12.2.
|
|
144
|
-
port_ocean-0.12.2.
|
|
145
|
-
port_ocean-0.12.2.
|
|
146
|
-
port_ocean-0.12.2.
|
|
143
|
+
port_ocean-0.12.2.dev17.dist-info/LICENSE.md,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
144
|
+
port_ocean-0.12.2.dev17.dist-info/METADATA,sha256=r6PD39j-z-I0Fb1a_bEg6t7cueWWA1hs8As9lACIufk,6671
|
|
145
|
+
port_ocean-0.12.2.dev17.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
146
|
+
port_ocean-0.12.2.dev17.dist-info/entry_points.txt,sha256=F_DNUmGZU2Kme-8NsWM5LLE8piGMafYZygRYhOVtcjA,54
|
|
147
|
+
port_ocean-0.12.2.dev17.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|