port-ocean 0.5.5__tar.gz → 0.5.7__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.5.5 → port_ocean-0.5.7}/PKG-INFO +13 -7
- {port_ocean-0.5.5 → port_ocean-0.5.7}/README.md +12 -7
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/config/dynamic.py +2 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +59 -9
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/port_app_config/models.py +1 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/pyproject.toml +1 -1
- {port_ocean-0.5.5 → port_ocean-0.5.7}/LICENSE.md +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/bootstrap.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/defaults/clean.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/new.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/sail.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.dockerignore +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Dockerfile +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Makefile +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/config.yaml +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/authentication.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/client.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/mixins/blueprints.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/mixins/entities.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/mixins/integrations.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/retry_transport.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/clients/port/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/config/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/config/settings.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/context/event.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/context/ocean.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/defaults/clean.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/defaults/common.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/defaults/initialize.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/factory.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/http.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/kafka.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/once.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/event_listener/polling.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/port/validate_entity_relations.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entity_processor/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/port_app_config/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/mixins/events.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/mixins/sync.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/integrations/mixins/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/models.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/ocean_types.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/core/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/core.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/port_defaults.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/helpers/retry.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/log/handlers.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/log/logger_setup.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/log/sensetive.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/middlewares.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/ocean.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/py.typed +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/run.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/utils/cache.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/utils/misc.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/utils/signal.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.5.7}/port_ocean/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: port-ocean
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.7
|
|
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
|
|
@@ -42,8 +42,7 @@ Requires-Dist: werkzeug (>=2.3.4,<4.0.0)
|
|
|
42
42
|
Project-URL: Repository, https://github.com/port-labs/Port-Ocean
|
|
43
43
|
Description-Content-Type: text/markdown
|
|
44
44
|
|
|
45
|
-
<img src="./assets/Thumbnail.
|
|
46
|
-
|
|
45
|
+
<img src="./assets/Thumbnail.png" alt="Ocean">
|
|
47
46
|
|
|
48
47
|
# Ocean <img src="./assets/OceanSymbol.svg" alt="Ocean" width="100" height="100" align="right">
|
|
49
48
|
|
|
@@ -56,9 +55,8 @@ empowering engineers to effortlessly prioritize key features and streamline the
|
|
|
56
55
|
|
|
57
56
|
- Python 3.11
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
|
|
61
58
|
## Installation
|
|
59
|
+
|
|
62
60
|
In order to install the Ocean Framework, run the following command:
|
|
63
61
|
|
|
64
62
|
```bash
|
|
@@ -73,7 +71,7 @@ poetry add port-ocean[cli]
|
|
|
73
71
|
|
|
74
72
|
## Run Integration
|
|
75
73
|
|
|
76
|
-
1. source the integration venv
|
|
74
|
+
1. source the integration venv
|
|
77
75
|
|
|
78
76
|
```bash
|
|
79
77
|
. .venv/bin/activate
|
|
@@ -91,14 +89,15 @@ poetry add port-ocean[cli]
|
|
|
91
89
|

|
|
92
90
|
|
|
93
91
|
## Real-Time updates Architecture
|
|
92
|
+
|
|
94
93
|

|
|
95
94
|
|
|
96
95
|
## Integration Lifecycle
|
|
97
96
|
|
|
98
97
|

|
|
99
98
|
|
|
100
|
-
|
|
101
99
|
## Folder Structure
|
|
100
|
+
|
|
102
101
|
The Ocean Integration Framework follows a specific folder structure within this mono repository. This structure ensures proper organization and easy identification of integration modules. The suggested folder structure is as follows:
|
|
103
102
|
|
|
104
103
|
```
|
|
@@ -122,9 +121,11 @@ port-ocean/
|
|
|
122
121
|
- The `pyproject.toml` file inside each integration folder lists the required dependencies for that integration.
|
|
123
122
|
|
|
124
123
|
## Configuration
|
|
124
|
+
|
|
125
125
|
The Integration Framework utilizes a `config.yaml` file for its configuration. This file defines both the framework configuration and the integration configuration within it. Each integration is identified by its type and unique identifier, which are utilized during initialization to appropriately update Port.
|
|
126
126
|
|
|
127
127
|
Example `config.yaml`:
|
|
128
|
+
|
|
128
129
|
```yaml
|
|
129
130
|
# This is an example configuration file for the integration service.
|
|
130
131
|
# Please copy this file to config.yaml file in the integration folder and edit it to your needs.
|
|
@@ -153,6 +154,7 @@ The reason Ocean is open source is that we aim for the Port integration library
|
|
|
153
154
|
In order to learn how you can contribute to Ocean, read our [contributing guide](./CONTRIBUTING.md)
|
|
154
155
|
|
|
155
156
|
### Local Development (Framework)
|
|
157
|
+
|
|
156
158
|
1. Clone the repository
|
|
157
159
|
|
|
158
160
|
2. Install dependencies:
|
|
@@ -174,6 +176,7 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
174
176
|
```
|
|
175
177
|
|
|
176
178
|
### Local Development (Integration)
|
|
179
|
+
|
|
177
180
|
1. Clone the repository
|
|
178
181
|
|
|
179
182
|
2. For new integration run
|
|
@@ -209,7 +212,10 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
209
212
|
```
|
|
210
213
|
|
|
211
214
|
## License
|
|
215
|
+
|
|
212
216
|
The Ocean Framework is open-source software licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). See the [LICENSE](./LICENSE) file for more information.
|
|
213
217
|
|
|
214
218
|
## Contact
|
|
219
|
+
|
|
215
220
|
For any questions or inquiries, please reach out to our team at support@getport.io
|
|
221
|
+
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
<img src="./assets/Thumbnail.
|
|
2
|
-
|
|
1
|
+
<img src="./assets/Thumbnail.png" alt="Ocean">
|
|
3
2
|
|
|
4
3
|
# Ocean <img src="./assets/OceanSymbol.svg" alt="Ocean" width="100" height="100" align="right">
|
|
5
4
|
|
|
@@ -12,9 +11,8 @@ empowering engineers to effortlessly prioritize key features and streamline the
|
|
|
12
11
|
|
|
13
12
|
- Python 3.11
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
14
|
## Installation
|
|
15
|
+
|
|
18
16
|
In order to install the Ocean Framework, run the following command:
|
|
19
17
|
|
|
20
18
|
```bash
|
|
@@ -29,7 +27,7 @@ poetry add port-ocean[cli]
|
|
|
29
27
|
|
|
30
28
|
## Run Integration
|
|
31
29
|
|
|
32
|
-
1. source the integration venv
|
|
30
|
+
1. source the integration venv
|
|
33
31
|
|
|
34
32
|
```bash
|
|
35
33
|
. .venv/bin/activate
|
|
@@ -47,14 +45,15 @@ poetry add port-ocean[cli]
|
|
|
47
45
|

|
|
48
46
|
|
|
49
47
|
## Real-Time updates Architecture
|
|
48
|
+
|
|
50
49
|

|
|
51
50
|
|
|
52
51
|
## Integration Lifecycle
|
|
53
52
|
|
|
54
53
|

|
|
55
54
|
|
|
56
|
-
|
|
57
55
|
## Folder Structure
|
|
56
|
+
|
|
58
57
|
The Ocean Integration Framework follows a specific folder structure within this mono repository. This structure ensures proper organization and easy identification of integration modules. The suggested folder structure is as follows:
|
|
59
58
|
|
|
60
59
|
```
|
|
@@ -78,9 +77,11 @@ port-ocean/
|
|
|
78
77
|
- The `pyproject.toml` file inside each integration folder lists the required dependencies for that integration.
|
|
79
78
|
|
|
80
79
|
## Configuration
|
|
80
|
+
|
|
81
81
|
The Integration Framework utilizes a `config.yaml` file for its configuration. This file defines both the framework configuration and the integration configuration within it. Each integration is identified by its type and unique identifier, which are utilized during initialization to appropriately update Port.
|
|
82
82
|
|
|
83
83
|
Example `config.yaml`:
|
|
84
|
+
|
|
84
85
|
```yaml
|
|
85
86
|
# This is an example configuration file for the integration service.
|
|
86
87
|
# Please copy this file to config.yaml file in the integration folder and edit it to your needs.
|
|
@@ -109,6 +110,7 @@ The reason Ocean is open source is that we aim for the Port integration library
|
|
|
109
110
|
In order to learn how you can contribute to Ocean, read our [contributing guide](./CONTRIBUTING.md)
|
|
110
111
|
|
|
111
112
|
### Local Development (Framework)
|
|
113
|
+
|
|
112
114
|
1. Clone the repository
|
|
113
115
|
|
|
114
116
|
2. Install dependencies:
|
|
@@ -130,6 +132,7 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
130
132
|
```
|
|
131
133
|
|
|
132
134
|
### Local Development (Integration)
|
|
135
|
+
|
|
133
136
|
1. Clone the repository
|
|
134
137
|
|
|
135
138
|
2. For new integration run
|
|
@@ -165,7 +168,9 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
165
168
|
```
|
|
166
169
|
|
|
167
170
|
## License
|
|
171
|
+
|
|
168
172
|
The Ocean Framework is open-source software licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). See the [LICENSE](./LICENSE) file for more information.
|
|
169
173
|
|
|
170
174
|
## Contact
|
|
171
|
-
|
|
175
|
+
|
|
176
|
+
For any questions or inquiries, please reach out to our team at support@getport.io
|
|
@@ -2,6 +2,7 @@ import asyncio
|
|
|
2
2
|
import functools
|
|
3
3
|
from functools import lru_cache
|
|
4
4
|
from typing import Any
|
|
5
|
+
from loguru import logger
|
|
5
6
|
|
|
6
7
|
import pyjq as jq # type: ignore
|
|
7
8
|
|
|
@@ -67,25 +68,74 @@ class JQEntityProcessor(BaseEntityProcessor):
|
|
|
67
68
|
|
|
68
69
|
return result
|
|
69
70
|
|
|
71
|
+
async def _get_entity_if_passed_selector(
|
|
72
|
+
self,
|
|
73
|
+
data: dict[str, Any],
|
|
74
|
+
raw_entity_mappings: dict[str, Any],
|
|
75
|
+
selector_query: str,
|
|
76
|
+
) -> dict[str, Any]:
|
|
77
|
+
should_run = await self._search_as_bool(data, selector_query)
|
|
78
|
+
if should_run:
|
|
79
|
+
return await self._search_as_object(data, raw_entity_mappings)
|
|
80
|
+
return {}
|
|
81
|
+
|
|
82
|
+
async def _calculate_entity(
|
|
83
|
+
self,
|
|
84
|
+
data: dict[str, Any],
|
|
85
|
+
raw_entity_mappings: dict[str, Any],
|
|
86
|
+
items_to_parse: str | None,
|
|
87
|
+
selector_query: str,
|
|
88
|
+
) -> list[dict[str, Any]]:
|
|
89
|
+
if items_to_parse:
|
|
90
|
+
items = await self._search(data, items_to_parse)
|
|
91
|
+
if isinstance(items, list):
|
|
92
|
+
return await asyncio.gather(
|
|
93
|
+
*[
|
|
94
|
+
self._get_entity_if_passed_selector(
|
|
95
|
+
{"item": item, **data},
|
|
96
|
+
raw_entity_mappings,
|
|
97
|
+
selector_query,
|
|
98
|
+
)
|
|
99
|
+
for item in items
|
|
100
|
+
]
|
|
101
|
+
)
|
|
102
|
+
logger.warning(
|
|
103
|
+
f"Failed to parse items for JQ expression {items_to_parse}, Expected list but got {type(items)}."
|
|
104
|
+
f" Skipping..."
|
|
105
|
+
)
|
|
106
|
+
else:
|
|
107
|
+
return [
|
|
108
|
+
await self._get_entity_if_passed_selector(
|
|
109
|
+
data, raw_entity_mappings, selector_query
|
|
110
|
+
)
|
|
111
|
+
]
|
|
112
|
+
return [{}]
|
|
113
|
+
|
|
70
114
|
async def _calculate_entities(
|
|
71
115
|
self, mapping: ResourceConfig, raw_data: list[dict[str, Any]]
|
|
72
116
|
) -> list[Entity]:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
117
|
+
raw_entity_mappings: dict[str, Any] = mapping.port.entity.mappings.dict(
|
|
118
|
+
exclude_unset=True
|
|
119
|
+
)
|
|
120
|
+
entities_tasks = [
|
|
121
|
+
asyncio.create_task(
|
|
122
|
+
self._calculate_entity(
|
|
123
|
+
data,
|
|
124
|
+
raw_entity_mappings,
|
|
125
|
+
mapping.port.items_to_parse,
|
|
126
|
+
mapping.selector.query,
|
|
78
127
|
)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
128
|
+
)
|
|
129
|
+
for data in raw_data
|
|
130
|
+
]
|
|
82
131
|
entities = await asyncio.gather(*entities_tasks)
|
|
83
132
|
|
|
84
133
|
return [
|
|
85
134
|
Entity.parse_obj(entity_data)
|
|
135
|
+
for flatten in entities
|
|
86
136
|
for entity_data in filter(
|
|
87
137
|
lambda entity: entity.get("identifier") and entity.get("blueprint"),
|
|
88
|
-
|
|
138
|
+
flatten,
|
|
89
139
|
)
|
|
90
140
|
]
|
|
91
141
|
|
|
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
|
|
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.5.5 → port_ocean-0.5.7}/port_ocean/core/handlers/entities_state_applier/__init__.py
RENAMED
|
File without changes
|
{port_ocean-0.5.5 → port_ocean-0.5.7}/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
|
|
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
|