infrahub-server 1.6.3__py3-none-any.whl → 1.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. infrahub/actions/tasks.py +4 -2
  2. infrahub/api/exceptions.py +2 -2
  3. infrahub/api/schema.py +3 -1
  4. infrahub/artifacts/tasks.py +1 -0
  5. infrahub/auth.py +2 -2
  6. infrahub/cli/db.py +54 -28
  7. infrahub/computed_attribute/gather.py +3 -4
  8. infrahub/computed_attribute/tasks.py +23 -6
  9. infrahub/config.py +8 -0
  10. infrahub/constants/enums.py +12 -0
  11. infrahub/core/account.py +4 -4
  12. infrahub/core/attribute.py +106 -108
  13. infrahub/core/branch/models.py +44 -71
  14. infrahub/core/branch/tasks.py +5 -3
  15. infrahub/core/changelog/diff.py +1 -20
  16. infrahub/core/changelog/models.py +0 -7
  17. infrahub/core/constants/__init__.py +17 -0
  18. infrahub/core/constants/database.py +0 -1
  19. infrahub/core/constants/schema.py +0 -1
  20. infrahub/core/convert_object_type/repository_conversion.py +3 -4
  21. infrahub/core/diff/branch_differ.py +1 -1
  22. infrahub/core/diff/conflict_transferer.py +1 -1
  23. infrahub/core/diff/data_check_synchronizer.py +4 -3
  24. infrahub/core/diff/enricher/cardinality_one.py +2 -2
  25. infrahub/core/diff/enricher/hierarchy.py +1 -1
  26. infrahub/core/diff/enricher/labels.py +1 -1
  27. infrahub/core/diff/merger/merger.py +28 -2
  28. infrahub/core/diff/merger/serializer.py +3 -10
  29. infrahub/core/diff/model/diff.py +1 -1
  30. infrahub/core/diff/query/merge.py +376 -135
  31. infrahub/core/diff/repository/repository.py +3 -1
  32. infrahub/core/graph/__init__.py +1 -1
  33. infrahub/core/graph/constraints.py +3 -3
  34. infrahub/core/graph/schema.py +2 -12
  35. infrahub/core/ipam/reconciler.py +8 -6
  36. infrahub/core/ipam/utilization.py +8 -15
  37. infrahub/core/manager.py +133 -152
  38. infrahub/core/merge.py +1 -1
  39. infrahub/core/metadata/__init__.py +0 -0
  40. infrahub/core/metadata/interface.py +37 -0
  41. infrahub/core/metadata/model.py +31 -0
  42. infrahub/core/metadata/query/__init__.py +0 -0
  43. infrahub/core/metadata/query/node_metadata.py +301 -0
  44. infrahub/core/migrations/graph/__init__.py +4 -0
  45. infrahub/core/migrations/graph/m012_convert_account_generic.py +12 -12
  46. infrahub/core/migrations/graph/m013_convert_git_password_credential.py +7 -12
  47. infrahub/core/migrations/graph/m017_add_core_profile.py +5 -2
  48. infrahub/core/migrations/graph/m018_uniqueness_nulls.py +2 -1
  49. infrahub/core/migrations/graph/m019_restore_rels_to_time.py +0 -10
  50. infrahub/core/migrations/graph/m020_duplicate_edges.py +0 -8
  51. infrahub/core/migrations/graph/m025_uniqueness_nulls.py +2 -1
  52. infrahub/core/migrations/graph/m026_0000_prefix_fix.py +2 -1
  53. infrahub/core/migrations/graph/m029_duplicates_cleanup.py +0 -1
  54. infrahub/core/migrations/graph/m031_check_number_attributes.py +2 -2
  55. infrahub/core/migrations/graph/m038_redo_0000_prefix_fix.py +2 -1
  56. infrahub/core/migrations/graph/m041_deleted_dup_edges.py +1 -1
  57. infrahub/core/migrations/graph/m049_remove_is_visible_relationship.py +53 -0
  58. infrahub/core/migrations/graph/m050_backfill_vertex_metadata.py +168 -0
  59. infrahub/core/migrations/query/__init__.py +2 -2
  60. infrahub/core/migrations/query/attribute_add.py +17 -6
  61. infrahub/core/migrations/query/attribute_remove.py +19 -5
  62. infrahub/core/migrations/query/attribute_rename.py +21 -5
  63. infrahub/core/migrations/query/node_duplicate.py +19 -4
  64. infrahub/core/migrations/query/schema_attribute_update.py +1 -1
  65. infrahub/core/migrations/schema/attribute_kind_update.py +21 -2
  66. infrahub/core/migrations/schema/attribute_name_update.py +1 -1
  67. infrahub/core/migrations/schema/attribute_supports_profile.py +5 -3
  68. infrahub/core/migrations/schema/models.py +3 -0
  69. infrahub/core/migrations/schema/node_attribute_add.py +5 -2
  70. infrahub/core/migrations/schema/node_attribute_remove.py +1 -1
  71. infrahub/core/migrations/schema/node_kind_update.py +1 -1
  72. infrahub/core/migrations/schema/node_remove.py +24 -2
  73. infrahub/core/migrations/schema/tasks.py +4 -1
  74. infrahub/core/migrations/shared.py +13 -6
  75. infrahub/core/models.py +6 -6
  76. infrahub/core/node/__init__.py +157 -58
  77. infrahub/core/node/base.py +9 -5
  78. infrahub/core/node/create.py +7 -3
  79. infrahub/core/node/delete_validator.py +1 -1
  80. infrahub/core/node/standard.py +100 -14
  81. infrahub/core/order.py +30 -0
  82. infrahub/core/property.py +0 -1
  83. infrahub/core/protocols.py +1 -0
  84. infrahub/core/protocols_base.py +10 -2
  85. infrahub/core/query/__init__.py +5 -3
  86. infrahub/core/query/attribute.py +164 -49
  87. infrahub/core/query/branch.py +58 -70
  88. infrahub/core/query/delete.py +1 -1
  89. infrahub/core/query/diff.py +7 -7
  90. infrahub/core/query/ipam.py +104 -43
  91. infrahub/core/query/node.py +1072 -281
  92. infrahub/core/query/relationship.py +531 -325
  93. infrahub/core/query/resource_manager.py +107 -18
  94. infrahub/core/query/standard_node.py +25 -5
  95. infrahub/core/query/utils.py +2 -4
  96. infrahub/core/relationship/constraints/count.py +1 -1
  97. infrahub/core/relationship/constraints/peer_kind.py +1 -1
  98. infrahub/core/relationship/constraints/peer_parent.py +1 -1
  99. infrahub/core/relationship/constraints/peer_relatives.py +1 -1
  100. infrahub/core/relationship/constraints/profiles_kind.py +1 -1
  101. infrahub/core/relationship/constraints/profiles_removal.py +168 -0
  102. infrahub/core/relationship/model.py +293 -139
  103. infrahub/core/schema/attribute_schema.py +2 -2
  104. infrahub/core/schema/basenode_schema.py +3 -0
  105. infrahub/core/schema/definitions/core/__init__.py +8 -2
  106. infrahub/core/schema/definitions/core/account.py +10 -10
  107. infrahub/core/schema/definitions/core/artifact.py +14 -8
  108. infrahub/core/schema/definitions/core/check.py +10 -4
  109. infrahub/core/schema/definitions/core/generator.py +26 -6
  110. infrahub/core/schema/definitions/core/graphql_query.py +1 -1
  111. infrahub/core/schema/definitions/core/group.py +9 -2
  112. infrahub/core/schema/definitions/core/ipam.py +80 -10
  113. infrahub/core/schema/definitions/core/menu.py +41 -7
  114. infrahub/core/schema/definitions/core/permission.py +16 -2
  115. infrahub/core/schema/definitions/core/profile.py +16 -2
  116. infrahub/core/schema/definitions/core/propose_change.py +24 -4
  117. infrahub/core/schema/definitions/core/propose_change_comment.py +23 -11
  118. infrahub/core/schema/definitions/core/propose_change_validator.py +50 -21
  119. infrahub/core/schema/definitions/core/repository.py +10 -0
  120. infrahub/core/schema/definitions/core/resource_pool.py +8 -1
  121. infrahub/core/schema/definitions/core/template.py +19 -2
  122. infrahub/core/schema/definitions/core/transform.py +11 -5
  123. infrahub/core/schema/definitions/core/webhook.py +27 -9
  124. infrahub/core/schema/manager.py +63 -43
  125. infrahub/core/schema/relationship_schema.py +6 -2
  126. infrahub/core/schema/schema_branch.py +48 -10
  127. infrahub/core/task/task.py +4 -2
  128. infrahub/core/utils.py +3 -25
  129. infrahub/core/validators/aggregated_checker.py +1 -1
  130. infrahub/core/validators/attribute/choices.py +1 -1
  131. infrahub/core/validators/attribute/enum.py +1 -1
  132. infrahub/core/validators/attribute/kind.py +1 -1
  133. infrahub/core/validators/attribute/length.py +1 -1
  134. infrahub/core/validators/attribute/min_max.py +1 -1
  135. infrahub/core/validators/attribute/number_pool.py +1 -1
  136. infrahub/core/validators/attribute/optional.py +1 -1
  137. infrahub/core/validators/attribute/regex.py +1 -1
  138. infrahub/core/validators/determiner.py +3 -3
  139. infrahub/core/validators/node/attribute.py +1 -1
  140. infrahub/core/validators/node/relationship.py +1 -1
  141. infrahub/core/validators/relationship/peer.py +1 -1
  142. infrahub/database/__init__.py +4 -4
  143. infrahub/dependencies/builder/constraint/grouped/node_runner.py +2 -0
  144. infrahub/dependencies/builder/constraint/relationship_manager/profiles_removal.py +8 -0
  145. infrahub/dependencies/registry.py +2 -0
  146. infrahub/display_labels/tasks.py +12 -3
  147. infrahub/git/integrator.py +18 -18
  148. infrahub/git/tasks.py +1 -1
  149. infrahub/git/utils.py +1 -1
  150. infrahub/graphql/constants.py +3 -0
  151. infrahub/graphql/context.py +1 -1
  152. infrahub/graphql/field_extractor.py +1 -1
  153. infrahub/graphql/initialization.py +11 -0
  154. infrahub/graphql/loaders/account.py +134 -0
  155. infrahub/graphql/loaders/node.py +5 -12
  156. infrahub/graphql/loaders/peers.py +5 -7
  157. infrahub/graphql/manager.py +175 -21
  158. infrahub/graphql/metadata.py +91 -0
  159. infrahub/graphql/mutations/account.py +6 -6
  160. infrahub/graphql/mutations/attribute.py +0 -2
  161. infrahub/graphql/mutations/branch.py +9 -5
  162. infrahub/graphql/mutations/computed_attribute.py +1 -1
  163. infrahub/graphql/mutations/display_label.py +1 -1
  164. infrahub/graphql/mutations/hfid.py +1 -1
  165. infrahub/graphql/mutations/ipam.py +4 -6
  166. infrahub/graphql/mutations/main.py +9 -4
  167. infrahub/graphql/mutations/profile.py +16 -22
  168. infrahub/graphql/mutations/proposed_change.py +4 -4
  169. infrahub/graphql/mutations/relationship.py +40 -10
  170. infrahub/graphql/mutations/repository.py +14 -12
  171. infrahub/graphql/mutations/schema.py +2 -2
  172. infrahub/graphql/order.py +14 -0
  173. infrahub/graphql/queries/branch.py +62 -6
  174. infrahub/graphql/queries/resource_manager.py +25 -24
  175. infrahub/graphql/resolvers/account_metadata.py +84 -0
  176. infrahub/graphql/resolvers/ipam.py +6 -8
  177. infrahub/graphql/resolvers/many_relationship.py +77 -35
  178. infrahub/graphql/resolvers/resolver.py +59 -14
  179. infrahub/graphql/resolvers/single_relationship.py +87 -23
  180. infrahub/graphql/subscription/graphql_query.py +2 -0
  181. infrahub/graphql/types/__init__.py +0 -1
  182. infrahub/graphql/types/attribute.py +10 -5
  183. infrahub/graphql/types/branch.py +40 -53
  184. infrahub/graphql/types/enums.py +3 -0
  185. infrahub/graphql/types/metadata.py +28 -0
  186. infrahub/graphql/types/node.py +22 -2
  187. infrahub/graphql/types/relationship.py +10 -2
  188. infrahub/graphql/types/standard_node.py +12 -7
  189. infrahub/hfid/tasks.py +12 -3
  190. infrahub/lock.py +7 -0
  191. infrahub/menu/repository.py +1 -1
  192. infrahub/patch/queries/base.py +1 -1
  193. infrahub/pools/number.py +1 -8
  194. infrahub/profiles/gather.py +56 -0
  195. infrahub/profiles/mandatory_fields_checker.py +116 -0
  196. infrahub/profiles/models.py +66 -0
  197. infrahub/profiles/node_applier.py +154 -13
  198. infrahub/profiles/queries/get_profile_data.py +143 -31
  199. infrahub/profiles/tasks.py +79 -27
  200. infrahub/profiles/triggers.py +22 -0
  201. infrahub/proposed_change/action_checker.py +1 -1
  202. infrahub/proposed_change/tasks.py +4 -1
  203. infrahub/services/__init__.py +1 -1
  204. infrahub/services/adapters/cache/nats.py +1 -1
  205. infrahub/services/adapters/cache/redis.py +7 -0
  206. infrahub/tasks/artifact.py +1 -0
  207. infrahub/transformations/tasks.py +2 -2
  208. infrahub/trigger/catalogue.py +2 -0
  209. infrahub/trigger/models.py +1 -0
  210. infrahub/trigger/setup.py +3 -3
  211. infrahub/trigger/tasks.py +3 -0
  212. infrahub/validators/tasks.py +1 -0
  213. infrahub/webhook/gather.py +1 -1
  214. infrahub/webhook/models.py +1 -1
  215. infrahub/webhook/tasks.py +23 -7
  216. infrahub/workers/dependencies.py +9 -3
  217. infrahub/workers/infrahub_async.py +13 -4
  218. infrahub/workflows/catalogue.py +19 -0
  219. infrahub_sdk/analyzer.py +2 -2
  220. infrahub_sdk/branch.py +12 -39
  221. infrahub_sdk/checks.py +4 -4
  222. infrahub_sdk/client.py +36 -0
  223. infrahub_sdk/ctl/cli_commands.py +2 -1
  224. infrahub_sdk/ctl/graphql.py +15 -4
  225. infrahub_sdk/ctl/utils.py +2 -2
  226. infrahub_sdk/enums.py +6 -0
  227. infrahub_sdk/graphql/renderers.py +21 -0
  228. infrahub_sdk/graphql/utils.py +85 -0
  229. infrahub_sdk/node/attribute.py +12 -2
  230. infrahub_sdk/node/constants.py +12 -0
  231. infrahub_sdk/node/metadata.py +69 -0
  232. infrahub_sdk/node/node.py +65 -14
  233. infrahub_sdk/node/property.py +3 -0
  234. infrahub_sdk/node/related_node.py +37 -5
  235. infrahub_sdk/node/relationship.py +18 -1
  236. infrahub_sdk/operation.py +2 -2
  237. infrahub_sdk/schema/repository.py +1 -2
  238. infrahub_sdk/transforms.py +2 -2
  239. infrahub_sdk/types.py +18 -2
  240. {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0.dist-info}/METADATA +17 -16
  241. {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0.dist-info}/RECORD +249 -228
  242. infrahub_testcontainers/container.py +3 -3
  243. infrahub_testcontainers/docker-compose-cluster.test.yml +7 -7
  244. infrahub_testcontainers/docker-compose.test.yml +13 -5
  245. infrahub_testcontainers/models.py +3 -3
  246. infrahub_testcontainers/performance_test.py +1 -1
  247. infrahub/graphql/models.py +0 -6
  248. {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0.dist-info}/WHEEL +0 -0
  249. {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0.dist-info}/entry_points.txt +0 -0
  250. {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -10,6 +10,7 @@ from ..exceptions import (
10
10
  )
11
11
  from ..types import Order
12
12
  from .constants import PROPERTIES_FLAG, PROPERTIES_OBJECT
13
+ from .metadata import NodeMetadata, RelationshipMetadata
13
14
  from .related_node import RelatedNode, RelatedNodeSync
14
15
 
15
16
  if TYPE_CHECKING:
@@ -56,6 +57,14 @@ class RelationshipManagerBase:
56
57
  def has_update(self) -> bool:
57
58
  return self._has_update
58
59
 
60
+ @property
61
+ def is_from_profile(self) -> bool:
62
+ """Return whether this relationship was set from a profile. All its peers must be from a profile."""
63
+ if not self.peers:
64
+ return False
65
+ all_profiles = [p.is_from_profile for p in self.peers]
66
+ return bool(all_profiles) and all(all_profiles)
67
+
59
68
  def _generate_input_data(self, allocate_from_pool: bool = False) -> list[dict]:
60
69
  return [peer._generate_input_data(allocate_from_pool=allocate_from_pool) for peer in self.peers]
61
70
 
@@ -64,12 +73,16 @@ class RelationshipManagerBase:
64
73
  return {}
65
74
 
66
75
  @classmethod
67
- def _generate_query_data(cls, peer_data: dict[str, Any] | None = None, property: bool = False) -> dict:
76
+ def _generate_query_data(
77
+ cls, peer_data: dict[str, Any] | None = None, property: bool = False, include_metadata: bool = False
78
+ ) -> dict:
68
79
  """Generates the basic structure of a GraphQL query for relationships with multiple nodes.
69
80
 
70
81
  Args:
71
82
  peer_data (dict[str, Union[Any, Dict]], optional): Additional data to be included in the query for each node.
72
83
  This is used to add extra fields when prefetching related node data in many-to-many relationships.
84
+ property (bool, optional): If True, includes property fields (is_protected, source, owner, etc.).
85
+ include_metadata (bool, optional): If True, includes node_metadata and relationship_metadata fields.
73
86
 
74
87
  Returns:
75
88
  Dict: A dictionary representing the basic structure of a GraphQL query for multiple related nodes.
@@ -89,6 +102,10 @@ class RelationshipManagerBase:
89
102
  properties[prop_name] = {"id": None, "display_label": None, "__typename": None}
90
103
  data["edges"]["properties"] = properties
91
104
 
105
+ if include_metadata:
106
+ data["edges"]["node_metadata"] = NodeMetadata._generate_query_data()
107
+ data["edges"]["relationship_metadata"] = RelationshipMetadata._generate_query_data()
108
+
92
109
  if peer_data:
93
110
  data["edges"]["node"].update(peer_data)
94
111
 
infrahub_sdk/operation.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- import os
3
+ import pathlib
4
4
  from typing import TYPE_CHECKING
5
5
 
6
6
  from .repository import GitRepoManager
@@ -22,7 +22,7 @@ class InfrahubOperation:
22
22
  ) -> None:
23
23
  self.branch = branch
24
24
  self.convert_query_response = convert_query_response
25
- self.root_directory = root_directory or os.getcwd()
25
+ self.root_directory = root_directory or str(pathlib.Path.cwd())
26
26
  self.infrahub_node = infrahub_node
27
27
  self._nodes: list[InfrahubNode] = []
28
28
  self._related_nodes: list[InfrahubNode] = []
@@ -151,8 +151,7 @@ class InfrahubRepositoryGraphQLConfig(InfrahubRepositoryConfigElement):
151
151
 
152
152
  def load_query(self, relative_path: str = ".") -> str:
153
153
  file_name = Path(f"{relative_path}/{self.file_path}")
154
- with file_name.open("r", encoding="UTF-8") as file:
155
- return file.read()
154
+ return file_name.read_text(encoding="UTF-8")
156
155
 
157
156
 
158
157
  class InfrahubObjectConfig(InfrahubRepositoryConfigElement):
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- import asyncio
3
+ import inspect
4
4
  import os
5
5
  from abc import abstractmethod
6
6
  from typing import TYPE_CHECKING, Any
@@ -75,7 +75,7 @@ class InfrahubTransform(InfrahubOperation):
75
75
  unpacked = data.get("data") or data
76
76
  await self.process_nodes(data=unpacked)
77
77
 
78
- if asyncio.iscoroutinefunction(self.transform):
78
+ if inspect.iscoroutinefunction(self.transform):
79
79
  return await self.transform(data=unpacked)
80
80
 
81
81
  return self.transform(data=unpacked)
infrahub_sdk/types.py CHANGED
@@ -4,7 +4,9 @@ import enum
4
4
  from logging import Logger
5
5
  from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable
6
6
 
7
- from pydantic import BaseModel
7
+ from pydantic import BaseModel, Field, model_validator
8
+
9
+ from infrahub_sdk.enums import OrderDirection # noqa: TC001
8
10
 
9
11
  if TYPE_CHECKING:
10
12
  import httpx
@@ -68,5 +70,19 @@ class InfrahubLogger(Protocol):
68
70
  InfrahubLoggers = InfrahubLogger | Logger
69
71
 
70
72
 
73
+ class NodeMetaOrder(BaseModel):
74
+ created_at: OrderDirection | None = None
75
+ updated_at: OrderDirection | None = None
76
+
77
+ @model_validator(mode="after")
78
+ def validate_selection(self) -> NodeMetaOrder:
79
+ if self.created_at and self.updated_at:
80
+ raise ValueError("'created_at' and 'updated_at' are mutually exclusive")
81
+ return self
82
+
83
+
71
84
  class Order(BaseModel):
72
- disable: bool | None = None
85
+ disable: bool | None = Field(
86
+ default=None, description="Disable default ordering, can be used to improve performance"
87
+ )
88
+ node_metadata: NodeMetaOrder | None = Field(default=None, description="Order by node meta fields")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: infrahub-server
3
- Version: 1.6.3
3
+ Version: 1.7.0
4
4
  Summary: Infrahub is taking a new approach to Infrastructure Management by providing a new generation of datastore to organize and control all the data that defines how an infrastructure should run.
5
5
  Project-URL: Homepage, https://opsmill.com
6
6
  Project-URL: Repository, https://github.com/opsmill/infrahub
@@ -11,9 +11,10 @@ License-File: LICENSE.txt
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.12
14
- Requires-Python: <3.13,>=3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Requires-Python: <3.14,>=3.12
15
16
  Requires-Dist: aio-pika<9.5,>=9.4
16
- Requires-Dist: aiodataloader==0.4.0
17
+ Requires-Dist: aiodataloader==0.4.3
17
18
  Requires-Dist: ariadne-codegen==0.15.3
18
19
  Requires-Dist: asgi-correlation-id==4.2.0
19
20
  Requires-Dist: authlib==1.6.5
@@ -24,7 +25,7 @@ Requires-Dist: click==8.1.7
24
25
  Requires-Dist: deepdiff==8.6.1
25
26
  Requires-Dist: dulwich==0.22.7
26
27
  Requires-Dist: email-validator<2.2,>=2.1
27
- Requires-Dist: fast-depends==2.4.12
28
+ Requires-Dist: fast-depends==3.0.5
28
29
  Requires-Dist: fastapi-storages<0.4,>=0.3
29
30
  Requires-Dist: fastapi==0.121.1
30
31
  Requires-Dist: gitpython<4,>=3
@@ -33,22 +34,22 @@ Requires-Dist: gunicorn<24,>=23.0.0
33
34
  Requires-Dist: jinja2<4,>=3
34
35
  Requires-Dist: lunr<0.8,>=0.7.0.post1
35
36
  Requires-Dist: nats-py==2.7.2
36
- Requires-Dist: neo4j-rust-ext<5.29,>=5.28
37
- Requires-Dist: neo4j<5.29,>=5.28
37
+ Requires-Dist: neo4j-rust-ext==6.0.3.0
38
+ Requires-Dist: neo4j==6.0.3
38
39
  Requires-Dist: netaddr==1.3.0
39
40
  Requires-Dist: netutils==1.12.0
40
- Requires-Dist: numpy==1.26.2
41
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.28.1
42
- Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.28.1
43
- Requires-Dist: opentelemetry-instrumentation-aio-pika==0.49b1
44
- Requires-Dist: opentelemetry-instrumentation-fastapi==0.49b1
45
- Requires-Dist: prefect-redis==0.2.6
46
- Requires-Dist: prefect==3.5.0
47
- Requires-Dist: pyarrow<15,>=14
41
+ Requires-Dist: numpy>=1.26.2
42
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.39.0
43
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.39.0
44
+ Requires-Dist: opentelemetry-instrumentation-aio-pika==0.60b0
45
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.60b0
46
+ Requires-Dist: prefect-redis==0.2.8
47
+ Requires-Dist: prefect==3.6.7
48
+ Requires-Dist: pyarrow>=14
48
49
  Requires-Dist: pydantic-settings<2.9,>=2.8
49
- Requires-Dist: pydantic<2.11,>=2.10
50
+ Requires-Dist: pydantic<2.13,>=2.12
50
51
  Requires-Dist: pyjwt<2.9,>=2.8
51
- Requires-Dist: pytest<7.5,>=7.4
52
+ Requires-Dist: pytest<9.1,>=9.0
52
53
  Requires-Dist: python-multipart==0.0.18
53
54
  Requires-Dist: pyyaml<7,>=6
54
55
  Requires-Dist: redis[hiredis]==6.0.0