port-ocean 0.8.0__tar.gz → 0.9.0__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.

Files changed (128) hide show
  1. {port_ocean-0.8.0 → port_ocean-0.9.0}/PKG-INFO +1 -1
  2. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/sail.py +7 -1
  3. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/config/settings.py +20 -2
  4. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +9 -5
  5. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/models.py +4 -1
  6. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/utils.py +19 -2
  7. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/core.py +4 -0
  8. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/run.py +7 -0
  9. {port_ocean-0.8.0 → port_ocean-0.9.0}/pyproject.toml +1 -1
  10. {port_ocean-0.8.0 → port_ocean-0.9.0}/LICENSE.md +0 -0
  11. {port_ocean-0.8.0 → port_ocean-0.9.0}/README.md +0 -0
  12. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/__init__.py +0 -0
  13. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/bootstrap.py +0 -0
  14. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/__init__.py +0 -0
  15. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cli.py +0 -0
  16. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/__init__.py +0 -0
  17. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  18. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/defaults/clean.py +0 -0
  19. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/defaults/dock.py +0 -0
  20. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/defaults/group.py +0 -0
  21. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/list_integrations.py +0 -0
  22. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/main.py +0 -0
  23. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/new.py +0 -0
  24. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/pull.py +0 -0
  25. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/commands/version.py +0 -0
  26. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/__init__.py +0 -0
  27. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  28. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  29. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  30. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.dockerignore +0 -0
  31. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  32. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  33. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  34. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  35. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Dockerfile +0 -0
  36. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Makefile +0 -0
  37. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  38. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  39. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  40. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  41. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  42. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  43. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  44. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
  45. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/cli/utils.py +0 -0
  46. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/__init__.py +0 -0
  47. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/__init__.py +0 -0
  48. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/authentication.py +0 -0
  49. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/client.py +0 -0
  50. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/mixins/__init__.py +0 -0
  51. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  52. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/mixins/entities.py +0 -0
  53. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/mixins/integrations.py +0 -0
  54. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/mixins/migrations.py +0 -0
  55. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/retry_transport.py +0 -0
  56. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/types.py +0 -0
  57. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/clients/port/utils.py +0 -0
  58. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/config/__init__.py +0 -0
  59. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/config/base.py +0 -0
  60. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/config/dynamic.py +0 -0
  61. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/consumers/__init__.py +0 -0
  62. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/consumers/kafka_consumer.py +0 -0
  63. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/context/__init__.py +0 -0
  64. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/context/event.py +0 -0
  65. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/context/ocean.py +0 -0
  66. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/context/resource.py +0 -0
  67. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/__init__.py +0 -0
  68. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/defaults/__init__.py +0 -0
  69. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/defaults/clean.py +0 -0
  70. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/defaults/common.py +0 -0
  71. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/defaults/initialize.py +0 -0
  72. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/__init__.py +0 -0
  73. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/base.py +0 -0
  74. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/factory.py +0 -0
  75. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/http.py +0 -0
  76. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/kafka.py +0 -0
  77. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/once.py +0 -0
  78. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/event_listener/polling.py +0 -0
  79. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/__init__.py +0 -0
  80. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/base.py +0 -0
  81. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  82. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  83. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
  84. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  85. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  86. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  87. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  88. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  89. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  90. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  91. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  92. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  93. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/__init__.py +0 -0
  94. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/base.py +0 -0
  95. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  96. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/mixins/events.py +0 -0
  97. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/mixins/handler.py +0 -0
  98. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/mixins/sync.py +0 -0
  99. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
  100. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/integrations/mixins/utils.py +0 -0
  101. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/core/ocean_types.py +0 -0
  102. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/__init__.py +0 -0
  103. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/api.py +0 -0
  104. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/base.py +0 -0
  105. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/clients.py +0 -0
  106. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/context.py +0 -0
  107. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/port_defaults.py +0 -0
  108. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/exceptions/utils.py +0 -0
  109. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/helpers/__init__.py +0 -0
  110. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/helpers/async_client.py +0 -0
  111. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/helpers/retry.py +0 -0
  112. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/log/__init__.py +0 -0
  113. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/log/handlers.py +0 -0
  114. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/log/logger_setup.py +0 -0
  115. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/log/sensetive.py +0 -0
  116. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/middlewares.py +0 -0
  117. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/ocean.py +0 -0
  118. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/py.typed +0 -0
  119. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/sonar-project.properties +0 -0
  120. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/__init__.py +0 -0
  121. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/async_http.py +0 -0
  122. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/async_iterators.py +0 -0
  123. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/cache.py +0 -0
  124. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/misc.py +0 -0
  125. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/queue_utils.py +0 -0
  126. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/repeat.py +0 -0
  127. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/utils/signal.py +0 -0
  128. {port_ocean-0.8.0 → port_ocean-0.9.0}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.8.0
3
+ Version: 0.9.0
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
@@ -71,4 +71,10 @@ def sail(
71
71
  console.print("Setting event listener to Once")
72
72
  override["event_listener"] = {"type": "ONCE"}
73
73
 
74
- run(path, log_level, port, initialize_port_resources, override)
74
+ run(
75
+ path,
76
+ log_level,
77
+ port,
78
+ initialize_port_resources=initialize_port_resources,
79
+ config_override=override,
80
+ )
@@ -2,9 +2,10 @@ from typing import Any, Literal
2
2
 
3
3
  from port_ocean.config.base import BaseOceanSettings, BaseOceanModel
4
4
  from port_ocean.core.event_listener import EventListenerSettingsType
5
- from port_ocean.utils.misc import get_integration_name
5
+ from port_ocean.core.models import Runtime
6
+ from port_ocean.utils.misc import get_integration_name, get_spec_file
6
7
  from pydantic import Extra, AnyHttpUrl, parse_obj_as
7
- from pydantic.class_validators import root_validator
8
+ from pydantic.class_validators import root_validator, validator
8
9
  from pydantic.env_settings import InitSettingsSource, EnvSettingsSource, BaseSettings
9
10
  from pydantic.fields import Field
10
11
  from pydantic.main import BaseModel
@@ -69,3 +70,20 @@ class IntegrationConfiguration(BaseOceanSettings, extra=Extra.allow):
69
70
  event_listener: EventListenerSettingsType
70
71
  # If an identifier or type is not provided, it will be generated based on the integration name
71
72
  integration: IntegrationSettings = IntegrationSettings(type="", identifier="")
73
+ runtime: Runtime = "OnPrem"
74
+
75
+ @validator("runtime")
76
+ def validate_runtime(cls, runtime: Literal["OnPrem", "Saas"]) -> Runtime:
77
+ if runtime == "Saas":
78
+ spec = get_spec_file()
79
+ if spec is None:
80
+ raise ValueError(
81
+ "Could not determine whether it's safe to run "
82
+ "the integration due to not found spec.yaml."
83
+ )
84
+
85
+ saas_config = spec.get("saas")
86
+ if saas_config and not saas_config["enabled"]:
87
+ raise ValueError("This integration can't be ran as Saas")
88
+
89
+ return runtime
@@ -71,11 +71,15 @@ class JQEntityProcessor(BaseEntityProcessor):
71
71
  async def _search_as_object(
72
72
  self, data: dict[str, Any], obj: dict[str, Any]
73
73
  ) -> dict[str, Any | None]:
74
- search_tasks: dict[str,Task[dict[str,Any | None]] | list[Task[dict[str,Any | None]]]] = {}
74
+ search_tasks: dict[
75
+ str, Task[dict[str, Any | None]] | list[Task[dict[str, Any | None]]]
76
+ ] = {}
75
77
  for key, value in obj.items():
76
-
77
- if isinstance(value,list):
78
- search_tasks[key] = [asyncio.create_task(self._search_as_object(data,obj)) for obj in value]
78
+ if isinstance(value, list):
79
+ search_tasks[key] = [
80
+ asyncio.create_task(self._search_as_object(data, obj))
81
+ for obj in value
82
+ ]
79
83
 
80
84
  elif isinstance(value, dict):
81
85
  search_tasks[key] = asyncio.create_task(
@@ -87,7 +91,7 @@ class JQEntityProcessor(BaseEntityProcessor):
87
91
  result: dict[str, Any | None] = {}
88
92
  for key, task in search_tasks.items():
89
93
  try:
90
- if isinstance(task,list):
94
+ if isinstance(task, list):
91
95
  result[key] = [await task for task in task]
92
96
  else:
93
97
  result[key] = await task
@@ -1,10 +1,13 @@
1
1
  from dataclasses import dataclass, field
2
- from typing import Any
2
+ from typing import Any, Literal
3
3
 
4
4
  from pydantic import BaseModel
5
5
  from pydantic.fields import Field
6
6
 
7
7
 
8
+ Runtime = Literal["OnPrem", "Saas"]
9
+
10
+
8
11
  class Entity(BaseModel):
9
12
  identifier: Any
10
13
  blueprint: Any
@@ -1,12 +1,17 @@
1
1
  import asyncio
2
2
  from typing import Iterable, Any, TypeVar, Callable, Awaitable
3
3
 
4
+ from loguru import logger
4
5
  from pydantic import parse_obj_as, ValidationError
5
6
 
6
- from port_ocean.core.models import Entity
7
+ from port_ocean.clients.port.client import PortClient
8
+ from port_ocean.core.models import Entity, Runtime
7
9
  from port_ocean.core.models import EntityPortDiff
8
10
  from port_ocean.core.ocean_types import RAW_RESULT
9
- from port_ocean.exceptions.core import RawObjectValidationException
11
+ from port_ocean.exceptions.core import (
12
+ RawObjectValidationException,
13
+ IntegrationRuntimeException,
14
+ )
10
15
 
11
16
  T = TypeVar("T", bound=tuple[list[Any], ...])
12
17
 
@@ -29,6 +34,18 @@ def is_same_entity(first_entity: Entity, second_entity: Entity) -> bool:
29
34
  )
30
35
 
31
36
 
37
+ async def validate_integration_runtime(
38
+ port_client: PortClient, requested_runtime: Runtime
39
+ ) -> None:
40
+ logger.debug("Validating integration runtime")
41
+ current_integration = await port_client.get_current_integration(should_raise=False)
42
+ current_runtime = current_integration.get("installationType", "OnPrem")
43
+ if current_integration and current_runtime != requested_runtime:
44
+ raise IntegrationRuntimeException(
45
+ f"Invalid Runtime! Requested to run existing {current_runtime} integration in {requested_runtime} runtime."
46
+ )
47
+
48
+
32
49
  Q = TypeVar("Q")
33
50
 
34
51
 
@@ -33,3 +33,7 @@ class IntegrationAlreadyStartedException(BaseOceanException):
33
33
 
34
34
  class IntegrationNotStartedException(BaseOceanException):
35
35
  pass
36
+
37
+
38
+ class IntegrationRuntimeException(BaseOceanException):
39
+ pass
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  from inspect import getmembers
2
3
  from typing import Dict, Any, Type
3
4
 
@@ -8,6 +9,7 @@ from port_ocean.bootstrap import create_default_app
8
9
  from port_ocean.config.dynamic import default_config_factory
9
10
  from port_ocean.config.settings import ApplicationSettings, LogLevelType
10
11
  from port_ocean.core.defaults.initialize import initialize_defaults
12
+ from port_ocean.core.utils import validate_integration_runtime
11
13
  from port_ocean.log.logger_setup import setup_logger
12
14
  from port_ocean.ocean import Ocean
13
15
  from port_ocean.utils.misc import get_spec_file, load_module
@@ -45,6 +47,11 @@ def run(
45
47
  "app", default_app
46
48
  )
47
49
 
50
+ # Validate that the current integration's runtime matches the execution parameters
51
+ asyncio.get_event_loop().run_until_complete(
52
+ validate_integration_runtime(app.port_client, app.config.runtime)
53
+ )
54
+
48
55
  # Override config with arguments
49
56
  if initialize_port_resources is not None:
50
57
  app.config.initialize_port_resources = initialize_port_resources
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.8.0"
3
+ version = "0.9.0"
4
4
  description = "Port Ocean is a CLI tool for managing your Port projects."
5
5
  readme = "README.md"
6
6
  homepage = "https://app.getport.io"
File without changes
File without changes