port-ocean 0.5.5__tar.gz → 0.17.8__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.17.8}/PKG-INFO +27 -19
- {port_ocean-0.5.5 → port_ocean-0.17.8}/README.md +15 -11
- port_ocean-0.17.8/integrations/_infra/Dockerfile.Deb +56 -0
- port_ocean-0.17.8/integrations/_infra/Dockerfile.alpine +108 -0
- port_ocean-0.17.8/integrations/_infra/Dockerfile.base.builder +26 -0
- port_ocean-0.17.8/integrations/_infra/Dockerfile.base.runner +13 -0
- port_ocean-0.17.8/integrations/_infra/Dockerfile.dockerignore +94 -0
- {port_ocean-0.5.5/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}} → port_ocean-0.17.8/integrations/_infra}/Makefile +21 -8
- port_ocean-0.17.8/integrations/_infra/grpcio.sh +18 -0
- port_ocean-0.17.8/integrations/_infra/init.sh +5 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/bootstrap.py +1 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/defaults/clean.py +3 -1
- port_ocean-0.17.8/port_ocean/cli/commands/new.py +91 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/sail.py +7 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/cookiecutter.json +3 -0
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +30 -0
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +6 -0
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +41 -0
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +16 -0
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +15 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +1 -1
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +7 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +1 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +16 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +21 -10
- port_ocean-0.17.8/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +2 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/authentication.py +16 -4
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/client.py +17 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/mixins/blueprints.py +7 -8
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/mixins/entities.py +108 -53
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/mixins/integrations.py +23 -34
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/retry_transport.py +0 -5
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/utils.py +9 -3
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/config/base.py +16 -16
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/config/dynamic.py +2 -0
- port_ocean-0.17.8/port_ocean/config/settings.py +118 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/context/event.py +18 -5
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/context/ocean.py +14 -3
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/defaults/clean.py +10 -3
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/defaults/common.py +25 -9
- port_ocean-0.17.8/port_ocean/core/defaults/initialize.py +243 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/event_listener/__init__.py +8 -0
- port_ocean-0.17.8/port_ocean/core/event_listener/base.py +93 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/event_listener/factory.py +9 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/event_listener/http.py +11 -3
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/event_listener/kafka.py +24 -5
- port_ocean-0.17.8/port_ocean/core/event_listener/once.py +156 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/event_listener/polling.py +16 -14
- port_ocean-0.17.8/port_ocean/core/event_listener/webhooks_only.py +41 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/__init__.py +1 -2
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entities_state_applier/base.py +4 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entities_state_applier/port/applier.py +29 -87
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +5 -2
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entity_processor/base.py +26 -22
- port_ocean-0.17.8/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +313 -0
- port_ocean-0.17.8/port_ocean/core/handlers/port_app_config/base.py +84 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/port_app_config/models.py +24 -5
- port_ocean-0.17.8/port_ocean/core/handlers/resync_state_updater/__init__.py +5 -0
- port_ocean-0.17.8/port_ocean/core/handlers/resync_state_updater/updater.py +84 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/base.py +5 -7
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/mixins/events.py +3 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/mixins/sync.py +4 -2
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/mixins/sync_raw.py +209 -74
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/mixins/utils.py +1 -1
- port_ocean-0.17.8/port_ocean/core/models.py +80 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/ocean_types.py +29 -11
- port_ocean-0.17.8/port_ocean/core/utils/entity_topological_sorter.py +90 -0
- port_ocean-0.17.8/port_ocean/core/utils/utils.py +109 -0
- port_ocean-0.17.8/port_ocean/debug_cli.py +5 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/core.py +4 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/port_defaults.py +0 -2
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/helpers/retry.py +85 -24
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/log/handlers.py +23 -2
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/log/logger_setup.py +8 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/log/sensetive.py +25 -10
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/middlewares.py +10 -2
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/ocean.py +57 -24
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/run.py +10 -5
- port_ocean-0.17.8/port_ocean/tests/__init__.py +0 -0
- port_ocean-0.17.8/port_ocean/tests/clients/port/mixins/test_entities.py +53 -0
- port_ocean-0.17.8/port_ocean/tests/conftest.py +4 -0
- port_ocean-0.17.8/port_ocean/tests/core/defaults/test_common.py +166 -0
- port_ocean-0.17.8/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +350 -0
- port_ocean-0.17.8/port_ocean/tests/core/handlers/mixins/test_sync_raw.py +552 -0
- port_ocean-0.17.8/port_ocean/tests/core/test_utils.py +73 -0
- port_ocean-0.17.8/port_ocean/tests/core/utils/test_entity_topological_sorter.py +99 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/__init__.py +0 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/fake_port_api.py +191 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/fixtures.py +46 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/integration.py +31 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/ocean_app.py +66 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/port_client.py +21 -0
- port_ocean-0.17.8/port_ocean/tests/helpers/smoke_test.py +82 -0
- port_ocean-0.17.8/port_ocean/tests/log/test_handlers.py +71 -0
- port_ocean-0.17.8/port_ocean/tests/test_smoke.py +74 -0
- port_ocean-0.17.8/port_ocean/tests/utils/test_async_iterators.py +45 -0
- port_ocean-0.17.8/port_ocean/tests/utils/test_cache.py +189 -0
- port_ocean-0.17.8/port_ocean/utils/async_iterators.py +109 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/utils/cache.py +37 -1
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/utils/misc.py +22 -4
- port_ocean-0.17.8/port_ocean/utils/queue_utils.py +88 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/utils/signal.py +1 -4
- port_ocean-0.17.8/port_ocean/utils/time.py +54 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/pyproject.toml +62 -40
- port_ocean-0.5.5/port_ocean/cli/commands/new.py +0 -56
- port_ocean-0.5.5/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -13
- port_ocean-0.5.5/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.dockerignore +0 -94
- port_ocean-0.5.5/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -16
- port_ocean-0.5.5/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Dockerfile +0 -15
- port_ocean-0.5.5/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/config.yaml +0 -17
- port_ocean-0.5.5/port_ocean/config/settings.py +0 -50
- port_ocean-0.5.5/port_ocean/core/defaults/initialize.py +0 -232
- port_ocean-0.5.5/port_ocean/core/event_listener/base.py +0 -54
- port_ocean-0.5.5/port_ocean/core/event_listener/once.py +0 -64
- port_ocean-0.5.5/port_ocean/core/handlers/entities_state_applier/port/validate_entity_relations.py +0 -40
- port_ocean-0.5.5/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -105
- port_ocean-0.5.5/port_ocean/core/handlers/port_app_config/base.py +0 -44
- port_ocean-0.5.5/port_ocean/core/models.py +0 -36
- port_ocean-0.5.5/port_ocean/core/utils.py +0 -65
- {port_ocean-0.5.5 → port_ocean-0.17.8}/LICENSE.md +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cli.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/defaults/__init___.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/defaults/dock.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/defaults/group.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/list_integrations.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/main.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/pull.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/commands/version.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/extensions.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/cli/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/mixins/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/mixins/migrations.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/clients/port/types.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/config/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/consumers/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/consumers/kafka_consumer.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/context/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/context/resource.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/defaults/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/handlers/port_app_config/api.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/mixins/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/core/integrations/mixins/handler.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/api.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/base.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/clients.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/context.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/exceptions/utils.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/helpers/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/helpers/async_client.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/log/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/py.typed +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/sonar-project.properties +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/utils/__init__.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/utils/async_http.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/utils/repeat.py +0 -0
- {port_ocean-0.5.5 → port_ocean-0.17.8}/port_ocean/version.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: port-ocean
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.8
|
|
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
|
|
7
7
|
Author: Daniel Sinai
|
|
8
8
|
Author-email: daniel@getport.io
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.12,<4.0
|
|
10
10
|
Classifier: Framework :: FastAPI
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
12
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
@@ -14,36 +14,38 @@ Classifier: Natural Language :: English
|
|
|
14
14
|
Classifier: Operating System :: POSIX
|
|
15
15
|
Classifier: Programming Language :: Python
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
20
|
Classifier: Topic :: Software Development :: Libraries
|
|
20
21
|
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
21
22
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
23
|
Classifier: Topic :: Utilities
|
|
23
24
|
Provides-Extra: cli
|
|
25
|
+
Requires-Dist: aiostream (>=0.5.2,<0.7.0)
|
|
24
26
|
Requires-Dist: click (>=8.1.3,<9.0.0) ; extra == "cli"
|
|
25
27
|
Requires-Dist: confluent-kafka (>=2.1.1,<3.0.0)
|
|
26
28
|
Requires-Dist: cookiecutter (>=2.1.1,<3.0.0) ; extra == "cli"
|
|
27
|
-
Requires-Dist: fastapi (>=0.
|
|
28
|
-
Requires-Dist: httpx (>=0.24.1,<0.
|
|
29
|
+
Requires-Dist: fastapi (>=0.115.3,<0.116.0)
|
|
30
|
+
Requires-Dist: httpx (>=0.24.1,<0.28.0)
|
|
29
31
|
Requires-Dist: jinja2-time (>=0.2.0,<0.3.0) ; extra == "cli"
|
|
32
|
+
Requires-Dist: jq (>=1.8.0,<2.0.0)
|
|
30
33
|
Requires-Dist: loguru (>=0.7.0,<0.8.0)
|
|
31
|
-
Requires-Dist: pydantic (>=1.10.8,<2.0.0)
|
|
34
|
+
Requires-Dist: pydantic[dotenv] (>=1.10.8,<2.0.0)
|
|
32
35
|
Requires-Dist: pydispatcher (>=2.0.7,<3.0.0)
|
|
33
36
|
Requires-Dist: pyhumps (>=3.8.0,<4.0.0)
|
|
34
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
|
|
35
38
|
Requires-Dist: pyyaml (>=6.0,<7.0)
|
|
36
39
|
Requires-Dist: rich (>=13.4.1,<14.0.0) ; extra == "cli"
|
|
37
40
|
Requires-Dist: six (>=1.16.0,<2.0.0)
|
|
38
41
|
Requires-Dist: tomli (>=2.0.1,<3.0.0)
|
|
39
|
-
Requires-Dist: urllib3 (>=1.26.16,<
|
|
40
|
-
Requires-Dist: uvicorn (>=0.22
|
|
42
|
+
Requires-Dist: urllib3 (>=1.26.16,<3.0.0)
|
|
43
|
+
Requires-Dist: uvicorn (>=0.22,<0.31)
|
|
41
44
|
Requires-Dist: werkzeug (>=2.3.4,<4.0.0)
|
|
42
45
|
Project-URL: Repository, https://github.com/port-labs/Port-Ocean
|
|
43
46
|
Description-Content-Type: text/markdown
|
|
44
47
|
|
|
45
|
-
<img src="./assets/Thumbnail.
|
|
46
|
-
|
|
48
|
+
<img src="./assets/Thumbnail.png" alt="Ocean">
|
|
47
49
|
|
|
48
50
|
# Ocean <img src="./assets/OceanSymbol.svg" alt="Ocean" width="100" height="100" align="right">
|
|
49
51
|
|
|
@@ -56,24 +58,23 @@ empowering engineers to effortlessly prioritize key features and streamline the
|
|
|
56
58
|
|
|
57
59
|
- Python 3.11
|
|
58
60
|
|
|
59
|
-
|
|
60
|
-
|
|
61
61
|
## Installation
|
|
62
|
+
|
|
62
63
|
In order to install the Ocean Framework, run the following command:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
|
-
pip install port-ocean[cli]
|
|
66
|
+
pip install "port-ocean[cli]"
|
|
66
67
|
```
|
|
67
68
|
|
|
68
69
|
Or
|
|
69
70
|
|
|
70
71
|
```bash
|
|
71
|
-
poetry add port-ocean[cli]
|
|
72
|
+
poetry add "port-ocean[cli]"
|
|
72
73
|
```
|
|
73
74
|
|
|
74
75
|
## Run Integration
|
|
75
76
|
|
|
76
|
-
1. source the integration venv
|
|
77
|
+
1. source the integration venv
|
|
77
78
|
|
|
78
79
|
```bash
|
|
79
80
|
. .venv/bin/activate
|
|
@@ -82,8 +83,7 @@ poetry add port-ocean[cli]
|
|
|
82
83
|
2. Run
|
|
83
84
|
|
|
84
85
|
```bash
|
|
85
|
-
ocean sail ./path/to/
|
|
86
|
-
integration
|
|
86
|
+
ocean sail ./path/to/integration
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
# Export Architecture
|
|
@@ -91,14 +91,15 @@ poetry add port-ocean[cli]
|
|
|
91
91
|

|
|
92
92
|
|
|
93
93
|
## Real-Time updates Architecture
|
|
94
|
+
|
|
94
95
|

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

|
|
99
100
|
|
|
100
|
-
|
|
101
101
|
## Folder Structure
|
|
102
|
+
|
|
102
103
|
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
104
|
|
|
104
105
|
```
|
|
@@ -122,9 +123,11 @@ port-ocean/
|
|
|
122
123
|
- The `pyproject.toml` file inside each integration folder lists the required dependencies for that integration.
|
|
123
124
|
|
|
124
125
|
## Configuration
|
|
126
|
+
|
|
125
127
|
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
128
|
|
|
127
129
|
Example `config.yaml`:
|
|
130
|
+
|
|
128
131
|
```yaml
|
|
129
132
|
# This is an example configuration file for the integration service.
|
|
130
133
|
# Please copy this file to config.yaml file in the integration folder and edit it to your needs.
|
|
@@ -153,6 +156,7 @@ The reason Ocean is open source is that we aim for the Port integration library
|
|
|
153
156
|
In order to learn how you can contribute to Ocean, read our [contributing guide](./CONTRIBUTING.md)
|
|
154
157
|
|
|
155
158
|
### Local Development (Framework)
|
|
159
|
+
|
|
156
160
|
1. Clone the repository
|
|
157
161
|
|
|
158
162
|
2. Install dependencies:
|
|
@@ -174,6 +178,7 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
174
178
|
```
|
|
175
179
|
|
|
176
180
|
### Local Development (Integration)
|
|
181
|
+
|
|
177
182
|
1. Clone the repository
|
|
178
183
|
|
|
179
184
|
2. For new integration run
|
|
@@ -209,7 +214,10 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
209
214
|
```
|
|
210
215
|
|
|
211
216
|
## License
|
|
217
|
+
|
|
212
218
|
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
219
|
|
|
214
220
|
## Contact
|
|
221
|
+
|
|
215
222
|
For any questions or inquiries, please reach out to our team at support@getport.io
|
|
223
|
+
|
|
@@ -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,24 +11,23 @@ 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
|
|
21
|
-
pip install port-ocean[cli]
|
|
19
|
+
pip install "port-ocean[cli]"
|
|
22
20
|
```
|
|
23
21
|
|
|
24
22
|
Or
|
|
25
23
|
|
|
26
24
|
```bash
|
|
27
|
-
poetry add port-ocean[cli]
|
|
25
|
+
poetry add "port-ocean[cli]"
|
|
28
26
|
```
|
|
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
|
|
@@ -38,8 +36,7 @@ poetry add port-ocean[cli]
|
|
|
38
36
|
2. Run
|
|
39
37
|
|
|
40
38
|
```bash
|
|
41
|
-
ocean sail ./path/to/
|
|
42
|
-
integration
|
|
39
|
+
ocean sail ./path/to/integration
|
|
43
40
|
```
|
|
44
41
|
|
|
45
42
|
# Export Architecture
|
|
@@ -47,14 +44,15 @@ poetry add port-ocean[cli]
|
|
|
47
44
|

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

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

|
|
55
53
|
|
|
56
|
-
|
|
57
54
|
## Folder Structure
|
|
55
|
+
|
|
58
56
|
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
57
|
|
|
60
58
|
```
|
|
@@ -78,9 +76,11 @@ port-ocean/
|
|
|
78
76
|
- The `pyproject.toml` file inside each integration folder lists the required dependencies for that integration.
|
|
79
77
|
|
|
80
78
|
## Configuration
|
|
79
|
+
|
|
81
80
|
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
81
|
|
|
83
82
|
Example `config.yaml`:
|
|
83
|
+
|
|
84
84
|
```yaml
|
|
85
85
|
# This is an example configuration file for the integration service.
|
|
86
86
|
# Please copy this file to config.yaml file in the integration folder and edit it to your needs.
|
|
@@ -109,6 +109,7 @@ The reason Ocean is open source is that we aim for the Port integration library
|
|
|
109
109
|
In order to learn how you can contribute to Ocean, read our [contributing guide](./CONTRIBUTING.md)
|
|
110
110
|
|
|
111
111
|
### Local Development (Framework)
|
|
112
|
+
|
|
112
113
|
1. Clone the repository
|
|
113
114
|
|
|
114
115
|
2. Install dependencies:
|
|
@@ -130,6 +131,7 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
130
131
|
```
|
|
131
132
|
|
|
132
133
|
### Local Development (Integration)
|
|
134
|
+
|
|
133
135
|
1. Clone the repository
|
|
134
136
|
|
|
135
137
|
2. For new integration run
|
|
@@ -165,7 +167,9 @@ In order to learn how you can contribute to Ocean, read our [contributing guide]
|
|
|
165
167
|
```
|
|
166
168
|
|
|
167
169
|
## License
|
|
170
|
+
|
|
168
171
|
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
172
|
|
|
170
173
|
## Contact
|
|
171
|
-
|
|
174
|
+
|
|
175
|
+
For any questions or inquiries, please reach out to our team at support@getport.io
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
ARG BASE_BUILDER_PYTHON_IMAGE=ghcr.io/port-labs/port-ocean-base-builder:latest
|
|
2
|
+
ARG BASE_RUNNER_PYTHON_IMAGE=ghcr.io/port-labs/port-ocean-base-runner:latest
|
|
3
|
+
|
|
4
|
+
FROM ${BASE_BUILDER_PYTHON_IMAGE} AS base
|
|
5
|
+
|
|
6
|
+
ARG BUILD_CONTEXT
|
|
7
|
+
ARG BUILDPLATFORM
|
|
8
|
+
|
|
9
|
+
ENV LIBRDKAFKA_VERSION=1.9.2 \
|
|
10
|
+
PYTHONUNBUFFERED=1 \
|
|
11
|
+
POETRY_VIRTUALENVS_IN_PROJECT=1 \
|
|
12
|
+
PIP_ROOT_USER_ACTION=ignore
|
|
13
|
+
|
|
14
|
+
WORKDIR /app
|
|
15
|
+
|
|
16
|
+
COPY ./${BUILD_CONTEXT}/pyproject.toml ./${BUILD_CONTEXT}/poetry.lock /app/
|
|
17
|
+
|
|
18
|
+
RUN poetry install --without dev --no-root --no-interaction --no-ansi --no-cache
|
|
19
|
+
|
|
20
|
+
FROM ${BASE_RUNNER_PYTHON_IMAGE} AS prod
|
|
21
|
+
|
|
22
|
+
ARG INTEGRATION_VERSION
|
|
23
|
+
ARG BUILD_CONTEXT
|
|
24
|
+
|
|
25
|
+
ENV LIBRDKAFKA_VERSION=1.9.2
|
|
26
|
+
|
|
27
|
+
RUN apt-get update \
|
|
28
|
+
&& apt-get install -y \
|
|
29
|
+
ca-certificates \
|
|
30
|
+
openssl \
|
|
31
|
+
curl \
|
|
32
|
+
&& apt-get clean
|
|
33
|
+
|
|
34
|
+
LABEL INTEGRATION_VERSION=${INTEGRATION_VERSION}
|
|
35
|
+
# Used to ensure that new integrations will be public, see https://docs.github.com/en/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility
|
|
36
|
+
LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
37
|
+
|
|
38
|
+
ENV PIP_ROOT_USER_ACTION=ignore
|
|
39
|
+
|
|
40
|
+
WORKDIR /app
|
|
41
|
+
|
|
42
|
+
# Copy the application code
|
|
43
|
+
COPY ./${BUILD_CONTEXT} /app
|
|
44
|
+
|
|
45
|
+
# Copy dependencies from the build stage
|
|
46
|
+
COPY --from=base /app/.venv /app/.venv
|
|
47
|
+
|
|
48
|
+
COPY ./integrations/_infra/init.sh /app/init.sh
|
|
49
|
+
|
|
50
|
+
# Ensure that ocean is available for all in path
|
|
51
|
+
RUN chmod a+x /app/.venv/bin/ocean
|
|
52
|
+
|
|
53
|
+
RUN chmod a+x /app/init.sh
|
|
54
|
+
RUN ln -s /app/.venv/bin/ocean /usr/bin/ocean
|
|
55
|
+
# Run the application
|
|
56
|
+
CMD ["bash", "/app/init.sh"]
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
ARG BASE_PYTHON_IMAGE=alpine:3.20.1
|
|
2
|
+
|
|
3
|
+
FROM ${BASE_PYTHON_IMAGE} AS base
|
|
4
|
+
|
|
5
|
+
ARG BUILD_CONTEXT
|
|
6
|
+
ARG BUILDPLATFORM
|
|
7
|
+
|
|
8
|
+
ENV LIBRDKAFKA_VERSION=1.9.2 \
|
|
9
|
+
PYTHONUNBUFFERED=1 \
|
|
10
|
+
PIP_DISABLE_PIP_VERSION_CHECK=on \
|
|
11
|
+
POETRY_NO_INTERACTION=1 \
|
|
12
|
+
PIP_NO_CACHE_DIR=on \
|
|
13
|
+
PIP_DEFAULT_TIMEOUT=100 \
|
|
14
|
+
GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=1 \
|
|
15
|
+
PYTHONDONTWRITEBYTECODE=1
|
|
16
|
+
|
|
17
|
+
# Install system dependencies and libraries
|
|
18
|
+
RUN \
|
|
19
|
+
apk add --no-cache \
|
|
20
|
+
gcc \
|
|
21
|
+
g++ \
|
|
22
|
+
musl-dev \
|
|
23
|
+
build-base \
|
|
24
|
+
bash \
|
|
25
|
+
oniguruma-dev \
|
|
26
|
+
make \
|
|
27
|
+
autoconf \
|
|
28
|
+
automake \
|
|
29
|
+
libtool \
|
|
30
|
+
curl \
|
|
31
|
+
openssl-dev \
|
|
32
|
+
cargo \
|
|
33
|
+
pkgconfig \
|
|
34
|
+
linux-headers \
|
|
35
|
+
libstdc++ \
|
|
36
|
+
libffi-dev \
|
|
37
|
+
py3-grpcio \
|
|
38
|
+
py3-protobuf \
|
|
39
|
+
python3-dev \
|
|
40
|
+
# librdkafka-dev \
|
|
41
|
+
# Install community librdkafka-dev since the default in alpine is older
|
|
42
|
+
&& echo "@edge http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \
|
|
43
|
+
&& echo "@edgecommunity http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
|
|
44
|
+
&& apk add --no-cache \
|
|
45
|
+
alpine-sdk \
|
|
46
|
+
"librdkafka@edgecommunity>=${LIBRDKAFKA_VERSION}" \
|
|
47
|
+
"librdkafka-dev@edgecommunity>=${LIBRDKAFKA_VERSION}" \
|
|
48
|
+
&& curl -sSL https://install.python-poetry.org | python3 - \
|
|
49
|
+
&& apk upgrade gcc linux-headers libstdc++ gcc g++ --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main/ \
|
|
50
|
+
&& ln -s /root/.local/bin/poetry /usr/bin/poetry \
|
|
51
|
+
&& poetry config virtualenvs.in-project true
|
|
52
|
+
|
|
53
|
+
WORKDIR /app
|
|
54
|
+
|
|
55
|
+
COPY ./${BUILD_CONTEXT}/pyproject.toml ./${BUILD_CONTEXT}/poetry.lock /app/
|
|
56
|
+
|
|
57
|
+
COPY ./integrations/_infra/grpcio.sh /app/grpcio.sh
|
|
58
|
+
|
|
59
|
+
RUN chmod a+x /app/grpcio.sh && /app/grpcio.sh "${BUILDPLATFORM}"
|
|
60
|
+
|
|
61
|
+
RUN export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=1 \
|
|
62
|
+
&& poetry install --without dev --no-root --no-interaction --no-ansi --no-cache
|
|
63
|
+
|
|
64
|
+
FROM ${BASE_PYTHON_IMAGE} AS prod
|
|
65
|
+
|
|
66
|
+
ARG INTEGRATION_VERSION
|
|
67
|
+
ARG BUILD_CONTEXT
|
|
68
|
+
|
|
69
|
+
ENV LIBRDKAFKA_VERSION=1.9.2
|
|
70
|
+
|
|
71
|
+
LABEL INTEGRATION_VERSION=${INTEGRATION_VERSION}
|
|
72
|
+
# Used to ensure that new integrations will be public, see https://docs.github.com/en/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility
|
|
73
|
+
LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
74
|
+
|
|
75
|
+
# Install only runtime dependencies
|
|
76
|
+
RUN \
|
|
77
|
+
apk add --no-cache \
|
|
78
|
+
bash \
|
|
79
|
+
oniguruma-dev \
|
|
80
|
+
python3 \
|
|
81
|
+
# Install community librdkafka-dev since the default in alpine is older
|
|
82
|
+
&& echo "@edge http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \
|
|
83
|
+
&& echo "@edgecommunity http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
|
|
84
|
+
&& apk update \
|
|
85
|
+
&& apk add --no-cache \
|
|
86
|
+
alpine-sdk \
|
|
87
|
+
"librdkafka@edgecommunity>=${LIBRDKAFKA_VERSION}" \
|
|
88
|
+
"librdkafka-dev@edgecommunity>=${LIBRDKAFKA_VERSION}" \
|
|
89
|
+
# Fix security issues
|
|
90
|
+
&& apk upgrade busybox libcrypto3 libssl3 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main/
|
|
91
|
+
|
|
92
|
+
WORKDIR /app
|
|
93
|
+
|
|
94
|
+
# Copy the application code
|
|
95
|
+
COPY ./${BUILD_CONTEXT} /app
|
|
96
|
+
|
|
97
|
+
# Copy dependencies from the build stage
|
|
98
|
+
COPY --from=base /app/.venv /app/.venv
|
|
99
|
+
|
|
100
|
+
COPY ./integrations/_infra/init.sh /app/init.sh
|
|
101
|
+
|
|
102
|
+
# Ensure that ocean is available for all in path
|
|
103
|
+
RUN chmod a+x /app/.venv/bin/ocean
|
|
104
|
+
|
|
105
|
+
RUN chmod a+x /app/init.sh
|
|
106
|
+
RUN ln -s /app/.venv/bin/ocean /usr/bin/ocean
|
|
107
|
+
# Run the application
|
|
108
|
+
CMD ["bash", "/app/init.sh"]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
ARG BASE_PYTHON_IMAGE=debian:trixie-slim
|
|
2
|
+
# debian:trixie-slim - Python 3.12
|
|
3
|
+
FROM ${BASE_PYTHON_IMAGE}
|
|
4
|
+
|
|
5
|
+
LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
6
|
+
|
|
7
|
+
ENV LIBRDKAFKA_VERSION=1.9.2 \
|
|
8
|
+
PYTHONUNBUFFERED=1 \
|
|
9
|
+
POETRY_VIRTUALENVS_IN_PROJECT=1 \
|
|
10
|
+
PIP_ROOT_USER_ACTION=ignore
|
|
11
|
+
|
|
12
|
+
RUN apt-get update \
|
|
13
|
+
&& apt-get install -y \
|
|
14
|
+
--no-install-recommends \
|
|
15
|
+
wget \
|
|
16
|
+
g++ \
|
|
17
|
+
libssl-dev \
|
|
18
|
+
autoconf \
|
|
19
|
+
automake \
|
|
20
|
+
libtool \
|
|
21
|
+
curl \
|
|
22
|
+
librdkafka-dev \
|
|
23
|
+
python3 \
|
|
24
|
+
python3-pip \
|
|
25
|
+
python3-poetry \
|
|
26
|
+
&& apt-get clean
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
ARG BASE_PYTHON_IMAGE=debian:trixie-slim
|
|
2
|
+
# debian:trixie-slim - Python 3.12
|
|
3
|
+
FROM ${BASE_PYTHON_IMAGE}
|
|
4
|
+
|
|
5
|
+
LABEL org.opencontainers.image.source=https://github.com/port-labs/ocean
|
|
6
|
+
|
|
7
|
+
ENV LIBRDKAFKA_VERSION=1.9.2
|
|
8
|
+
|
|
9
|
+
ENV PIP_ROOT_USER_ACTION=ignore
|
|
10
|
+
|
|
11
|
+
RUN apt-get update \
|
|
12
|
+
&& apt-get install -y --no-install-recommends librdkafka-dev python3 \
|
|
13
|
+
&& apt-get clean
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
|
|
2
|
+
# Git
|
|
3
|
+
**/.git
|
|
4
|
+
**/.gitignore
|
|
5
|
+
**/.gitattributes
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# CI
|
|
9
|
+
**/.codeclimate.yml
|
|
10
|
+
**/.travis.yml
|
|
11
|
+
**/.taskcluster.yml
|
|
12
|
+
|
|
13
|
+
# Docker
|
|
14
|
+
**/docker-compose.yml
|
|
15
|
+
**/Dockerfile
|
|
16
|
+
**/.docker
|
|
17
|
+
**/.dockerignore
|
|
18
|
+
|
|
19
|
+
# Byte-compiled / optimized / DLL files
|
|
20
|
+
**/__pycache__/
|
|
21
|
+
**/*.py[cod]
|
|
22
|
+
|
|
23
|
+
# C extensions
|
|
24
|
+
**/*.so
|
|
25
|
+
|
|
26
|
+
# Distribution / packaging
|
|
27
|
+
**/.Python
|
|
28
|
+
**/env/
|
|
29
|
+
**/build/
|
|
30
|
+
**/develop-eggs/
|
|
31
|
+
**/dist/
|
|
32
|
+
**/downloads/
|
|
33
|
+
**/eggs/
|
|
34
|
+
**/lib/
|
|
35
|
+
**/lib64/
|
|
36
|
+
**/parts/
|
|
37
|
+
**/sdist/
|
|
38
|
+
**/var/
|
|
39
|
+
**/*.egg-info/
|
|
40
|
+
**/.installed.cfg
|
|
41
|
+
**/*.egg
|
|
42
|
+
|
|
43
|
+
# PyInstaller
|
|
44
|
+
# Usually these files are written by a python script from a template
|
|
45
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
46
|
+
**/*.manifest
|
|
47
|
+
**/*.spec
|
|
48
|
+
|
|
49
|
+
# Installer logs
|
|
50
|
+
**/pip-log.txt
|
|
51
|
+
**/pip-delete-this-directory.txt
|
|
52
|
+
|
|
53
|
+
# Unit test / coverage reports
|
|
54
|
+
**/htmlcov/
|
|
55
|
+
**/.tox/
|
|
56
|
+
**/.coverage
|
|
57
|
+
**/.cache
|
|
58
|
+
**/nosetests.xml
|
|
59
|
+
**/coverage.xml
|
|
60
|
+
|
|
61
|
+
# Translations
|
|
62
|
+
**/*.mo
|
|
63
|
+
**/*.pot
|
|
64
|
+
|
|
65
|
+
# Django stuff:
|
|
66
|
+
**/*.log
|
|
67
|
+
|
|
68
|
+
# Sphinx documentation
|
|
69
|
+
**/docs/_build/
|
|
70
|
+
|
|
71
|
+
# PyBuilder
|
|
72
|
+
**/target/
|
|
73
|
+
|
|
74
|
+
# Virtual environment
|
|
75
|
+
**/.env
|
|
76
|
+
**/.venv/
|
|
77
|
+
**/venv/
|
|
78
|
+
|
|
79
|
+
# PyCharm
|
|
80
|
+
**/.idea
|
|
81
|
+
|
|
82
|
+
# Python mode for VIM
|
|
83
|
+
**/.ropeproject
|
|
84
|
+
|
|
85
|
+
# Vim swap files
|
|
86
|
+
**/*.swp
|
|
87
|
+
|
|
88
|
+
# VS Code
|
|
89
|
+
**/.vscode/
|
|
90
|
+
|
|
91
|
+
**/*.md
|
|
92
|
+
**/.ruff_cache
|
|
93
|
+
**/changelog
|
|
94
|
+
**/tests
|
|
@@ -3,9 +3,13 @@ ACTIVATE := . .venv/bin/activate
|
|
|
3
3
|
define run_checks
|
|
4
4
|
exit_code=0; \
|
|
5
5
|
cd $1; \
|
|
6
|
+
echo "Running poetry check"; \
|
|
6
7
|
poetry check || exit_code=$$?;\
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
echo "Running mypy"; \
|
|
9
|
+
mypy . --exclude '/\.venv/' || exit_code=$$?; \
|
|
10
|
+
echo "Running ruff"; \
|
|
11
|
+
ruff check . || exit_code=$$?; \
|
|
12
|
+
echo "Running black"; \
|
|
9
13
|
black --check . || exit_code=$$?; \
|
|
10
14
|
if [ $$exit_code -eq 1 ]; then \
|
|
11
15
|
echo "\033[0;31mOne or more checks failed with exit code $$exit_code\033[0m"; \
|
|
@@ -18,7 +22,7 @@ endef
|
|
|
18
22
|
define install_poetry
|
|
19
23
|
if ! command -v poetry &> /dev/null; then \
|
|
20
24
|
pip install --upgrade pip; \
|
|
21
|
-
pip install poetry; \
|
|
25
|
+
pip install 'poetry>=1.0.0,<2.0.0'; \
|
|
22
26
|
else \
|
|
23
27
|
echo "Poetry is already installed."; \
|
|
24
28
|
fi
|
|
@@ -37,26 +41,35 @@ define deactivate_virtualenv
|
|
|
37
41
|
fi
|
|
38
42
|
endef
|
|
39
43
|
|
|
40
|
-
.SILENT: install install/prod lint run test clean
|
|
44
|
+
.SILENT: install install/prod install/local-core lint lint/fix run test clean
|
|
41
45
|
|
|
42
46
|
install:
|
|
43
47
|
$(call deactivate_virtualenv) && \
|
|
44
48
|
$(call install_poetry) && \
|
|
45
49
|
poetry install --with dev
|
|
46
50
|
|
|
51
|
+
install/local-core: install
|
|
52
|
+
# NOTE: This is a temporary change that shouldn't be committed
|
|
53
|
+
$(ACTIVATE) && pip install -e ../../
|
|
54
|
+
|
|
47
55
|
install/prod:
|
|
48
|
-
$(call install_poetry) && \
|
|
49
56
|
poetry install --without dev --no-root --no-interaction --no-ansi --no-cache
|
|
57
|
+
$(call install_poetry) && \
|
|
50
58
|
|
|
51
59
|
lint:
|
|
52
60
|
$(ACTIVATE) && \
|
|
53
61
|
$(call run_checks,.)
|
|
54
62
|
|
|
63
|
+
lint/fix:
|
|
64
|
+
$(ACTIVATE) && \
|
|
65
|
+
black .
|
|
66
|
+
ruff check --fix .
|
|
67
|
+
|
|
55
68
|
run:
|
|
56
69
|
$(ACTIVATE) && ocean sail
|
|
57
70
|
|
|
58
|
-
test:
|
|
59
|
-
$(ACTIVATE) && poetry run pytest
|
|
71
|
+
test:
|
|
72
|
+
$(ACTIVATE) && poetry run pytest -n auto
|
|
60
73
|
|
|
61
74
|
clean:
|
|
62
75
|
@find . -name '.venv' -type d -exec rm -rf {} \;
|
|
@@ -71,4 +84,4 @@ clean:
|
|
|
71
84
|
rm -rf htmlcov
|
|
72
85
|
rm -rf .tox/
|
|
73
86
|
rm -rf docs/_build
|
|
74
|
-
rm -rf dist/
|
|
87
|
+
rm -rf dist/
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
PLATFORM=${1}
|
|
3
|
+
|
|
4
|
+
if [[ ! $(grep -q 'grpcio' ./poetry.lock) ]]; then
|
|
5
|
+
echo 'grpcio not present, skipping explicit build'
|
|
6
|
+
else
|
|
7
|
+
echo 'found grpcio, checking platform'
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
if [[ "${PLATFORM}" == "linux/arm64" ]]; then
|
|
11
|
+
echo "On arm, need to explicitly install grpcio"
|
|
12
|
+
poetry env use "$(which python)"
|
|
13
|
+
echo "${VIRTUAL_ENV}"
|
|
14
|
+
poetry run pip install --upgrade pip
|
|
15
|
+
GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=1 poetry run pip install 'grpcio==1.66.2'
|
|
16
|
+
else
|
|
17
|
+
echo "Not on arm, no need to explicitly install grpcio"
|
|
18
|
+
fi
|