port-ocean 0.10.1__tar.gz → 0.10.5__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.
Files changed (139) hide show
  1. {port_ocean-0.10.1 → port_ocean-0.10.5}/PKG-INFO +1 -1
  2. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/mixins/entities.py +18 -5
  3. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/ocean.py +4 -1
  4. port_ocean-0.10.5/port_ocean/tests/helpers/__init__.py +75 -0
  5. {port_ocean-0.10.1 → port_ocean-0.10.5}/pyproject.toml +14 -7
  6. {port_ocean-0.10.1 → port_ocean-0.10.5}/LICENSE.md +0 -0
  7. {port_ocean-0.10.1 → port_ocean-0.10.5}/README.md +0 -0
  8. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/__init__.py +0 -0
  9. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/bootstrap.py +0 -0
  10. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/__init__.py +0 -0
  11. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cli.py +0 -0
  12. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/__init__.py +0 -0
  13. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  14. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/defaults/clean.py +0 -0
  15. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/defaults/dock.py +0 -0
  16. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/defaults/group.py +0 -0
  17. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/list_integrations.py +0 -0
  18. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/main.py +0 -0
  19. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/new.py +0 -0
  20. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/pull.py +0 -0
  21. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/sail.py +0 -0
  22. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/commands/version.py +0 -0
  23. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/__init__.py +0 -0
  24. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  25. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  26. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  27. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.dockerignore +0 -0
  28. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
  29. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  30. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  31. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
  32. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
  33. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  34. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  35. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
  36. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Dockerfile +0 -0
  37. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Makefile +0 -0
  38. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  39. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  40. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  41. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  42. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  43. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  44. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  45. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
  46. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
  47. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/cli/utils.py +0 -0
  48. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/__init__.py +0 -0
  49. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/__init__.py +0 -0
  50. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/authentication.py +0 -0
  51. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/client.py +0 -0
  52. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/mixins/__init__.py +0 -0
  53. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  54. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/mixins/integrations.py +0 -0
  55. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/mixins/migrations.py +0 -0
  56. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/retry_transport.py +0 -0
  57. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/types.py +0 -0
  58. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/clients/port/utils.py +0 -0
  59. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/config/__init__.py +0 -0
  60. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/config/base.py +0 -0
  61. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/config/dynamic.py +0 -0
  62. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/config/settings.py +0 -0
  63. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/consumers/__init__.py +0 -0
  64. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/consumers/kafka_consumer.py +0 -0
  65. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/context/__init__.py +0 -0
  66. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/context/event.py +0 -0
  67. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/context/ocean.py +0 -0
  68. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/context/resource.py +0 -0
  69. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/__init__.py +0 -0
  70. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/defaults/__init__.py +0 -0
  71. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/defaults/clean.py +0 -0
  72. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/defaults/common.py +0 -0
  73. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/defaults/initialize.py +0 -0
  74. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/__init__.py +0 -0
  75. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/base.py +0 -0
  76. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/factory.py +0 -0
  77. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/http.py +0 -0
  78. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/kafka.py +0 -0
  79. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/once.py +0 -0
  80. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/event_listener/polling.py +0 -0
  81. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/__init__.py +0 -0
  82. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/base.py +0 -0
  83. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  84. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  85. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
  86. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  87. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  88. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  89. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  90. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  91. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
  92. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  93. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  94. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  95. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  96. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
  97. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
  98. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/__init__.py +0 -0
  99. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/base.py +0 -0
  100. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  101. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/mixins/events.py +0 -0
  102. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/mixins/handler.py +0 -0
  103. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/mixins/sync.py +0 -0
  104. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
  105. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/integrations/mixins/utils.py +0 -0
  106. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/models.py +0 -0
  107. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/ocean_types.py +0 -0
  108. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/core/utils.py +0 -0
  109. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/__init__.py +0 -0
  110. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/api.py +0 -0
  111. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/base.py +0 -0
  112. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/clients.py +0 -0
  113. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/context.py +0 -0
  114. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/core.py +0 -0
  115. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/port_defaults.py +0 -0
  116. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/exceptions/utils.py +0 -0
  117. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/helpers/__init__.py +0 -0
  118. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/helpers/async_client.py +0 -0
  119. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/helpers/retry.py +0 -0
  120. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/log/__init__.py +0 -0
  121. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/log/handlers.py +0 -0
  122. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/log/logger_setup.py +0 -0
  123. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/log/sensetive.py +0 -0
  124. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/middlewares.py +0 -0
  125. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/py.typed +0 -0
  126. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/run.py +0 -0
  127. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/sonar-project.properties +0 -0
  128. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/tests/__init__.py +0 -0
  129. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/tests/test_sample.py +0 -0
  130. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/__init__.py +0 -0
  131. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/async_http.py +0 -0
  132. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/async_iterators.py +0 -0
  133. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/cache.py +0 -0
  134. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/misc.py +0 -0
  135. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/queue_utils.py +0 -0
  136. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/repeat.py +0 -0
  137. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/signal.py +0 -0
  138. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/utils/time.py +0 -0
  139. {port_ocean-0.10.1 → port_ocean-0.10.5}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.10.1
3
+ Version: 0.10.5
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
@@ -58,11 +58,24 @@ class EntityClientMixin:
58
58
  )
59
59
  handle_status_code(response, should_raise)
60
60
  result = response.json()
61
- result_entity = Entity.parse_obj(result["entity"])
62
- # Set the results of the search relation and identifier to the entity
63
- entity.identifier = result_entity.identifier or entity.identifier
64
- entity.relations = result_entity.relations or entity.relations
65
- return entity
61
+ result_entity = (
62
+ Entity.parse_obj(result["entity"]) if result.get("entity") else entity
63
+ )
64
+ # In order to save memory we'll keep only the identifier, blueprint and relations of the
65
+ # upserted entity result for later calculations
66
+ reduced_entity = Entity(
67
+ identifier=result_entity.identifier, blueprint=result_entity.blueprint
68
+ )
69
+
70
+ # Turning dict typed relations (raw search relations) is required
71
+ # for us to be able to successfully calculate the participation related entities
72
+ # and ignore the ones that don't as they weren't upserted
73
+ reduced_entity.relations = {
74
+ key: None if isinstance(relation, dict) else relation
75
+ for key, relation in result_entity.relations.items()
76
+ }
77
+
78
+ return reduced_entity
66
79
 
67
80
  async def batch_upsert_entities(
68
81
  self,
@@ -89,6 +89,7 @@ class Ocean:
89
89
  raise e
90
90
 
91
91
  interval = self.config.scheduled_resync_interval
92
+ loop = asyncio.get_event_loop()
92
93
  if interval is not None:
93
94
  logger.info(
94
95
  f"Setting up scheduled resync, the integration will automatically perform a full resync every {interval} minutes)"
@@ -99,7 +100,9 @@ class Ocean:
99
100
  wait_first=True,
100
101
  )(
101
102
  lambda: threading.Thread(
102
- target=lambda: asyncio.run(execute_resync_all())
103
+ target=lambda: asyncio.run_coroutine_threadsafe(
104
+ execute_resync_all(), loop
105
+ )
103
106
  ).start()
104
107
  )
105
108
  await repeated_function()
@@ -0,0 +1,75 @@
1
+ import sys
2
+ from inspect import getmembers
3
+ from typing import Dict, List, Set, Tuple, Union
4
+
5
+ from yaml import safe_load
6
+
7
+ from port_ocean.bootstrap import create_default_app
8
+ from port_ocean.core.handlers.port_app_config.models import ResourceConfig
9
+ from port_ocean.core.ocean_types import RESYNC_RESULT
10
+ from port_ocean.ocean import Ocean
11
+ from port_ocean.utils.misc import load_module
12
+
13
+
14
+ def get_integration_ocean_app(integration_path: str) -> Ocean:
15
+ default_app = create_default_app(
16
+ integration_path,
17
+ None,
18
+ {
19
+ "port": {
20
+ "client_id": "bla",
21
+ "client_secret": "bla",
22
+ },
23
+ },
24
+ )
25
+ main_path = f"{integration_path}/main.py"
26
+ sys.path.append(integration_path)
27
+ app_module = load_module(main_path)
28
+ app: Ocean = {name: item for name, item in getmembers(app_module)}.get(
29
+ "app", default_app
30
+ )
31
+
32
+ return app
33
+
34
+
35
+ def get_integation_resource_configs(integration_path: str) -> List[ResourceConfig]:
36
+ with open(
37
+ f"{integration_path}/.port/resources/port-app-config.yml"
38
+ ) as port_app_config_file:
39
+ resource_configs = safe_load(port_app_config_file)
40
+
41
+ return [ResourceConfig(**item) for item in resource_configs["resources"]]
42
+
43
+
44
+ def get_integation_resource_config_by_name(
45
+ integration_path: str, kind: str
46
+ ) -> Union[ResourceConfig, None]:
47
+ resource_configs = get_integation_resource_configs(integration_path)
48
+
49
+ relevant_configs = [x for x in resource_configs if x.kind == kind]
50
+
51
+ return relevant_configs[0] if len(relevant_configs) else None
52
+
53
+
54
+ async def get_raw_result_on_integration_sync_kinds(
55
+ integration_path: str, override_kinds: Union[Set[str], None] = None
56
+ ) -> Dict[str, List[Tuple[RESYNC_RESULT, List[Exception]]]]:
57
+ app = get_integration_ocean_app(integration_path)
58
+
59
+ resource_configs = get_integation_resource_configs(integration_path)
60
+
61
+ if override_kinds:
62
+ resource_configs = [x for x in resource_configs if x.kind in override_kinds]
63
+
64
+ results: Dict[str, List[Tuple[RESYNC_RESULT, List[Exception]]]] = {}
65
+
66
+ for resource_config in resource_configs:
67
+ resource_result = await app.integration._get_resource_raw_results(
68
+ resource_config
69
+ )
70
+
71
+ results[resource_config.kind] = results.get(resource_config.kind, []) + [
72
+ resource_result
73
+ ]
74
+
75
+ return results
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.10.1"
3
+ version = "0.10.5"
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"
@@ -64,18 +64,20 @@ cli = ["click", "rich", "cookiecutter", "jinja2-time"]
64
64
 
65
65
 
66
66
  [tool.poetry.group.dev.dependencies]
67
- pytest = ">=7.2,<9.0"
68
67
  black = ">=23.3,<25.0"
69
68
  mypy = "^1.3.0"
69
+ pre-commit = "^3.7.1"
70
70
  pylint = ">=2.17.4,<4.0.0"
71
- types-pyyaml = "^6.0.12.10"
71
+ pytest = ">=8.2,<9.0"
72
+ pytest-asyncio = ">=0.24.0"
73
+ pytest-httpx = ">=0.30.0"
74
+ pytest-xdist = "^3.6.1"
72
75
  ruff = ">=0.0.278,<0.4.11"
73
- types-toml = "^0.10.8.6"
74
76
  towncrier = "^23.6.0"
75
- yamllint = "^1.32.0"
76
77
  types-python-dateutil = "^2.9.0.20240316"
77
- pytest-xdist = "^3.6.1"
78
- pre-commit = "^3.7.1"
78
+ types-pyyaml = "^6.0.12.10"
79
+ types-toml = "^0.10.8.6"
80
+ yamllint = "^1.32.0"
79
81
 
80
82
  [tool.towncrier]
81
83
  directory = "changelog"
@@ -168,3 +170,8 @@ exclude = '''
168
170
  |node_modules
169
171
  )/
170
172
  '''
173
+
174
+ [tool.pytest.ini_options]
175
+ asyncio_mode = "auto"
176
+ asyncio_default_fixture_loop_scope = "function"
177
+ addopts = "-vv -n auto --ignore-glob='./integrations/*' ./port_ocean/tests"
File without changes
File without changes