infrahub-server 1.6.3__py3-none-any.whl → 1.7.0b0__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.
- infrahub/actions/tasks.py +4 -2
- infrahub/api/schema.py +3 -1
- infrahub/artifacts/tasks.py +1 -0
- infrahub/auth.py +2 -2
- infrahub/cli/db.py +6 -6
- infrahub/computed_attribute/gather.py +3 -4
- infrahub/computed_attribute/tasks.py +23 -6
- infrahub/config.py +8 -0
- infrahub/constants/enums.py +12 -0
- infrahub/core/account.py +5 -8
- infrahub/core/attribute.py +106 -108
- infrahub/core/branch/models.py +44 -71
- infrahub/core/branch/tasks.py +5 -3
- infrahub/core/changelog/diff.py +1 -20
- infrahub/core/changelog/models.py +0 -7
- infrahub/core/constants/__init__.py +17 -0
- infrahub/core/constants/database.py +0 -1
- infrahub/core/constants/schema.py +0 -1
- infrahub/core/convert_object_type/repository_conversion.py +3 -4
- infrahub/core/diff/data_check_synchronizer.py +3 -2
- infrahub/core/diff/enricher/cardinality_one.py +1 -1
- infrahub/core/diff/merger/merger.py +27 -1
- infrahub/core/diff/merger/serializer.py +3 -10
- infrahub/core/diff/model/diff.py +1 -1
- infrahub/core/diff/query/merge.py +376 -135
- infrahub/core/graph/__init__.py +1 -1
- infrahub/core/graph/constraints.py +2 -2
- infrahub/core/graph/schema.py +2 -12
- infrahub/core/manager.py +132 -126
- infrahub/core/metadata/__init__.py +0 -0
- infrahub/core/metadata/interface.py +37 -0
- infrahub/core/metadata/model.py +31 -0
- infrahub/core/metadata/query/__init__.py +0 -0
- infrahub/core/metadata/query/node_metadata.py +301 -0
- infrahub/core/migrations/graph/__init__.py +4 -0
- infrahub/core/migrations/graph/m013_convert_git_password_credential.py +3 -8
- infrahub/core/migrations/graph/m017_add_core_profile.py +5 -2
- infrahub/core/migrations/graph/m018_uniqueness_nulls.py +2 -1
- infrahub/core/migrations/graph/m019_restore_rels_to_time.py +0 -10
- infrahub/core/migrations/graph/m020_duplicate_edges.py +0 -8
- infrahub/core/migrations/graph/m025_uniqueness_nulls.py +2 -1
- infrahub/core/migrations/graph/m026_0000_prefix_fix.py +2 -1
- infrahub/core/migrations/graph/m029_duplicates_cleanup.py +0 -1
- infrahub/core/migrations/graph/m031_check_number_attributes.py +2 -2
- infrahub/core/migrations/graph/m038_redo_0000_prefix_fix.py +2 -1
- infrahub/core/migrations/graph/m049_remove_is_visible_relationship.py +38 -0
- infrahub/core/migrations/graph/m050_backfill_vertex_metadata.py +168 -0
- infrahub/core/migrations/query/attribute_add.py +17 -6
- infrahub/core/migrations/query/attribute_remove.py +19 -5
- infrahub/core/migrations/query/attribute_rename.py +21 -5
- infrahub/core/migrations/query/node_duplicate.py +19 -4
- infrahub/core/migrations/schema/attribute_kind_update.py +25 -7
- infrahub/core/migrations/schema/attribute_supports_profile.py +3 -1
- infrahub/core/migrations/schema/models.py +3 -0
- infrahub/core/migrations/schema/node_attribute_add.py +4 -1
- infrahub/core/migrations/schema/node_remove.py +24 -2
- infrahub/core/migrations/schema/tasks.py +4 -1
- infrahub/core/migrations/shared.py +13 -6
- infrahub/core/models.py +6 -6
- infrahub/core/node/__init__.py +156 -57
- infrahub/core/node/create.py +7 -3
- infrahub/core/node/standard.py +100 -14
- infrahub/core/property.py +0 -1
- infrahub/core/protocols_base.py +6 -2
- infrahub/core/query/__init__.py +6 -7
- infrahub/core/query/attribute.py +161 -46
- infrahub/core/query/branch.py +57 -69
- infrahub/core/query/diff.py +4 -4
- infrahub/core/query/node.py +618 -180
- infrahub/core/query/relationship.py +449 -300
- infrahub/core/query/standard_node.py +25 -5
- infrahub/core/query/utils.py +2 -4
- infrahub/core/relationship/constraints/profiles_removal.py +168 -0
- infrahub/core/relationship/model.py +293 -139
- infrahub/core/schema/attribute_parameters.py +1 -28
- infrahub/core/schema/attribute_schema.py +17 -11
- infrahub/core/schema/manager.py +63 -43
- infrahub/core/schema/relationship_schema.py +6 -2
- infrahub/core/schema/schema_branch.py +48 -76
- infrahub/core/task/task.py +4 -2
- infrahub/core/utils.py +0 -22
- infrahub/core/validators/attribute/kind.py +2 -5
- infrahub/core/validators/determiner.py +3 -3
- infrahub/database/__init__.py +3 -3
- infrahub/dependencies/builder/constraint/grouped/node_runner.py +2 -0
- infrahub/dependencies/builder/constraint/relationship_manager/profiles_removal.py +8 -0
- infrahub/dependencies/registry.py +2 -0
- infrahub/display_labels/tasks.py +12 -3
- infrahub/git/integrator.py +18 -18
- infrahub/git/tasks.py +1 -1
- infrahub/graphql/app.py +2 -2
- infrahub/graphql/constants.py +3 -0
- infrahub/graphql/context.py +1 -1
- infrahub/graphql/initialization.py +11 -0
- infrahub/graphql/loaders/account.py +134 -0
- infrahub/graphql/loaders/node.py +5 -12
- infrahub/graphql/loaders/peers.py +5 -7
- infrahub/graphql/manager.py +158 -18
- infrahub/graphql/metadata.py +91 -0
- infrahub/graphql/models.py +33 -3
- infrahub/graphql/mutations/account.py +5 -5
- infrahub/graphql/mutations/attribute.py +0 -2
- infrahub/graphql/mutations/branch.py +9 -5
- infrahub/graphql/mutations/computed_attribute.py +1 -1
- infrahub/graphql/mutations/display_label.py +1 -1
- infrahub/graphql/mutations/hfid.py +1 -1
- infrahub/graphql/mutations/ipam.py +4 -6
- infrahub/graphql/mutations/main.py +9 -4
- infrahub/graphql/mutations/profile.py +16 -22
- infrahub/graphql/mutations/proposed_change.py +4 -4
- infrahub/graphql/mutations/relationship.py +40 -10
- infrahub/graphql/mutations/repository.py +14 -12
- infrahub/graphql/mutations/schema.py +2 -2
- infrahub/graphql/queries/branch.py +62 -6
- infrahub/graphql/queries/diff/tree.py +5 -5
- infrahub/graphql/resolvers/account_metadata.py +84 -0
- infrahub/graphql/resolvers/ipam.py +6 -8
- infrahub/graphql/resolvers/many_relationship.py +77 -35
- infrahub/graphql/resolvers/resolver.py +16 -12
- infrahub/graphql/resolvers/single_relationship.py +87 -23
- infrahub/graphql/subscription/graphql_query.py +2 -0
- infrahub/graphql/types/__init__.py +0 -1
- infrahub/graphql/types/attribute.py +10 -5
- infrahub/graphql/types/branch.py +40 -53
- infrahub/graphql/types/enums.py +3 -0
- infrahub/graphql/types/metadata.py +28 -0
- infrahub/graphql/types/node.py +22 -2
- infrahub/graphql/types/relationship.py +10 -2
- infrahub/graphql/types/standard_node.py +4 -3
- infrahub/hfid/tasks.py +12 -3
- infrahub/profiles/gather.py +56 -0
- infrahub/profiles/mandatory_fields_checker.py +116 -0
- infrahub/profiles/models.py +66 -0
- infrahub/profiles/node_applier.py +153 -12
- infrahub/profiles/queries/get_profile_data.py +143 -31
- infrahub/profiles/tasks.py +79 -27
- infrahub/profiles/triggers.py +22 -0
- infrahub/proposed_change/tasks.py +4 -1
- infrahub/tasks/artifact.py +1 -0
- infrahub/transformations/tasks.py +2 -2
- infrahub/trigger/catalogue.py +2 -0
- infrahub/trigger/models.py +1 -0
- infrahub/trigger/setup.py +3 -3
- infrahub/trigger/tasks.py +3 -0
- infrahub/validators/tasks.py +1 -0
- infrahub/webhook/models.py +1 -1
- infrahub/webhook/tasks.py +1 -1
- infrahub/workers/dependencies.py +9 -3
- infrahub/workers/infrahub_async.py +13 -4
- infrahub/workflows/catalogue.py +19 -0
- infrahub_sdk/node/constants.py +1 -0
- infrahub_sdk/node/related_node.py +13 -4
- infrahub_sdk/node/relationship.py +8 -0
- {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0b0.dist-info}/METADATA +17 -16
- {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0b0.dist-info}/RECORD +161 -143
- infrahub_testcontainers/container.py +3 -3
- infrahub_testcontainers/docker-compose-cluster.test.yml +7 -7
- infrahub_testcontainers/docker-compose.test.yml +13 -5
- {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0b0.dist-info}/WHEEL +0 -0
- {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0b0.dist-info}/entry_points.txt +0 -0
- {infrahub_server-1.6.3.dist-info → infrahub_server-1.7.0b0.dist-info}/licenses/LICENSE.txt +0 -0
infrahub/trigger/models.py
CHANGED
infrahub/trigger/setup.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, Awaitable, Callable
|
|
1
|
+
from typing import TYPE_CHECKING, Awaitable, Callable, Sequence
|
|
2
2
|
|
|
3
3
|
from prefect import get_run_logger, task
|
|
4
4
|
from prefect.automations import AutomationCore
|
|
@@ -46,7 +46,7 @@ def compare_automations(
|
|
|
46
46
|
|
|
47
47
|
@task(name="trigger-setup-specific", task_run_name="Setup triggers of a specific kind", cache_policy=NONE) # type: ignore[arg-type]
|
|
48
48
|
async def setup_triggers_specific(
|
|
49
|
-
gatherer: Callable[[InfrahubDatabase | None], Awaitable[
|
|
49
|
+
gatherer: Callable[[InfrahubDatabase | None], Awaitable[Sequence[TriggerDefinition]]],
|
|
50
50
|
trigger_type: TriggerType,
|
|
51
51
|
db: InfrahubDatabase | None = None,
|
|
52
52
|
) -> TriggerSetupReport:
|
|
@@ -69,7 +69,7 @@ async def setup_triggers_specific(
|
|
|
69
69
|
@task(name="trigger-setup", task_run_name="Setup triggers", cache_policy=NONE)
|
|
70
70
|
async def setup_triggers(
|
|
71
71
|
client: PrefectClient,
|
|
72
|
-
triggers:
|
|
72
|
+
triggers: Sequence[TriggerDefinition],
|
|
73
73
|
trigger_type: TriggerType | None = None,
|
|
74
74
|
force_update: bool = False,
|
|
75
75
|
) -> TriggerSetupReport:
|
infrahub/trigger/tasks.py
CHANGED
|
@@ -8,6 +8,7 @@ from infrahub.computed_attribute.gather import (
|
|
|
8
8
|
)
|
|
9
9
|
from infrahub.display_labels.gather import gather_trigger_display_labels_jinja2
|
|
10
10
|
from infrahub.hfid.gather import gather_trigger_hfid
|
|
11
|
+
from infrahub.profiles.gather import gather_trigger_profile_refresh
|
|
11
12
|
from infrahub.trigger.catalogue import builtin_triggers
|
|
12
13
|
from infrahub.webhook.gather import gather_trigger_webhook
|
|
13
14
|
from infrahub.workers.dependencies import get_database
|
|
@@ -28,6 +29,7 @@ async def trigger_configure_all() -> None:
|
|
|
28
29
|
computed_attribute_python_query_triggers,
|
|
29
30
|
) = await gather_trigger_computed_attribute_python(db=db)
|
|
30
31
|
action_rules = await gather_trigger_action_rules(db=db)
|
|
32
|
+
profile_refresh_triggers = await gather_trigger_profile_refresh()
|
|
31
33
|
triggers = (
|
|
32
34
|
computed_attribute_j2_triggers
|
|
33
35
|
+ computed_attribute_python_triggers
|
|
@@ -35,6 +37,7 @@ async def trigger_configure_all() -> None:
|
|
|
35
37
|
+ display_label_triggers
|
|
36
38
|
+ human_friendly_id_triggers
|
|
37
39
|
+ builtin_triggers
|
|
40
|
+
+ profile_refresh_triggers
|
|
38
41
|
+ webhook_trigger
|
|
39
42
|
+ action_rules
|
|
40
43
|
)
|
infrahub/validators/tasks.py
CHANGED
|
@@ -29,6 +29,7 @@ async def start_validator[ValidatorType: CoreValidator](
|
|
|
29
29
|
validator = cast("ValidatorType", validator)
|
|
30
30
|
else:
|
|
31
31
|
data["proposed_change"] = proposed_change
|
|
32
|
+
client.request_context = context.to_request_context()
|
|
32
33
|
validator = await client.create(kind=validator_type, data=data)
|
|
33
34
|
await validator.save()
|
|
34
35
|
|
infrahub/webhook/models.py
CHANGED
|
@@ -233,7 +233,7 @@ class TransformWebhook(Webhook):
|
|
|
233
233
|
convert_query_response=self.convert_query_response,
|
|
234
234
|
data={"data": {"data": data, **context.model_dump()}},
|
|
235
235
|
client=client,
|
|
236
|
-
) # type: ignore[
|
|
236
|
+
) # type: ignore[call-overload]
|
|
237
237
|
|
|
238
238
|
@classmethod
|
|
239
239
|
def from_object(cls, obj: CoreCustomWebhook, transform: CoreTransformPython) -> Self:
|
infrahub/webhook/tasks.py
CHANGED
|
@@ -118,7 +118,7 @@ async def configure_webhook_all() -> None:
|
|
|
118
118
|
triggers = await gather_trigger_webhook(db=db)
|
|
119
119
|
|
|
120
120
|
log.info(f"{len(triggers)} Webhooks automation configuration completed")
|
|
121
|
-
await setup_triggers_specific(gatherer=gather_trigger_webhook, db=database, trigger_type=TriggerType.WEBHOOK) # type: ignore[
|
|
121
|
+
await setup_triggers_specific(gatherer=gather_trigger_webhook, db=database, trigger_type=TriggerType.WEBHOOK) # type: ignore[arg-type]
|
|
122
122
|
|
|
123
123
|
|
|
124
124
|
@flow(name="webhook-setup-automation-one", flow_run_name="Configurate webhook for {webhook_name}")
|
infrahub/workers/dependencies.py
CHANGED
|
@@ -60,9 +60,15 @@ def get_installation_type(installation_type: str = Depends(build_installation_ty
|
|
|
60
60
|
return installation_type
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
async def build_database() -> InfrahubDatabase:
|
|
64
|
-
if "database" not in _singletons:
|
|
65
|
-
|
|
63
|
+
async def build_database(singleton: bool = True) -> InfrahubDatabase:
|
|
64
|
+
if not singleton or "database" not in _singletons:
|
|
65
|
+
db = InfrahubDatabase(driver=await get_db(retry=5))
|
|
66
|
+
|
|
67
|
+
if singleton:
|
|
68
|
+
_singletons["database"] = db
|
|
69
|
+
|
|
70
|
+
return db
|
|
71
|
+
|
|
66
72
|
return _singletons["database"]
|
|
67
73
|
|
|
68
74
|
|
|
@@ -24,6 +24,7 @@ from infrahub.core import registry
|
|
|
24
24
|
from infrahub.core.initialization import initialization
|
|
25
25
|
from infrahub.database.graph import validate_graph_version
|
|
26
26
|
from infrahub.dependencies.registry import build_component_registry
|
|
27
|
+
from infrahub.exceptions import InitializationError
|
|
27
28
|
from infrahub.git import initialize_repositories_directory
|
|
28
29
|
from infrahub.lock import initialize_lock
|
|
29
30
|
from infrahub.services import InfrahubServices
|
|
@@ -182,9 +183,17 @@ class InfrahubWorkerAsync(BaseWorker):
|
|
|
182
183
|
async def _init_infrahub_client(self, client: InfrahubClient | None = None) -> InfrahubClient:
|
|
183
184
|
if not client:
|
|
184
185
|
self._logger.debug(f"Using Infrahub API at {config.SETTINGS.main.internal_address}")
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
try:
|
|
187
|
+
client = InfrahubClient(
|
|
188
|
+
config=Config(
|
|
189
|
+
address=config.SETTINGS.main.infrahub_address, retry_on_failure=True, log=self._logger
|
|
190
|
+
)
|
|
191
|
+
)
|
|
192
|
+
except InitializationError as err:
|
|
193
|
+
self._logger.error(
|
|
194
|
+
"Infrahub client initialization failed due to missing configuration for internal_address."
|
|
195
|
+
)
|
|
196
|
+
raise typer.Exit(1) from err
|
|
188
197
|
|
|
189
198
|
try:
|
|
190
199
|
await client.branch.all()
|
|
@@ -194,7 +203,7 @@ class InfrahubWorkerAsync(BaseWorker):
|
|
|
194
203
|
|
|
195
204
|
return client
|
|
196
205
|
|
|
197
|
-
async def _init_services(self, client: InfrahubClient) -> None:
|
|
206
|
+
async def _init_services(self, client: InfrahubClient | None) -> None:
|
|
198
207
|
client = await self._init_infrahub_client(client=client)
|
|
199
208
|
|
|
200
209
|
service = await InfrahubServices.new(
|
infrahub/workflows/catalogue.py
CHANGED
|
@@ -623,6 +623,23 @@ PROFILE_REFRESH = WorkflowDefinition(
|
|
|
623
623
|
)
|
|
624
624
|
|
|
625
625
|
|
|
626
|
+
PROFILE_REFRESH_SETUP = WorkflowDefinition(
|
|
627
|
+
name="profile-refresh-setup",
|
|
628
|
+
type=WorkflowType.CORE,
|
|
629
|
+
module="infrahub.profiles.tasks",
|
|
630
|
+
function="profile_refresh_setup",
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
PROFILE_REFRESH_PROCESS = WorkflowDefinition(
|
|
635
|
+
name="profile-refresh-process",
|
|
636
|
+
type=WorkflowType.CORE,
|
|
637
|
+
module="infrahub.profiles.tasks",
|
|
638
|
+
function="profile_refresh_process",
|
|
639
|
+
tags=[WorkflowTag.DATABASE_CHANGE],
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
|
|
626
643
|
CLEAN_UP_DEADLOCKS = WorkflowDefinition(
|
|
627
644
|
name="clean-up-deadlocks",
|
|
628
645
|
type=WorkflowType.INTERNAL,
|
|
@@ -685,6 +702,8 @@ WORKFLOWS = [
|
|
|
685
702
|
IPAM_RECONCILIATION,
|
|
686
703
|
PROFILE_REFRESH,
|
|
687
704
|
PROFILE_REFRESH_MULTIPLE,
|
|
705
|
+
PROFILE_REFRESH_PROCESS,
|
|
706
|
+
PROFILE_REFRESH_SETUP,
|
|
688
707
|
PROPOSED_CHANGE_MERGE,
|
|
689
708
|
QUERY_COMPUTED_ATTRIBUTE_TRANSFORM_TARGETS,
|
|
690
709
|
REMOVE_ADD_NODE_FROM_GROUP,
|
infrahub_sdk/node/constants.py
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import re
|
|
3
4
|
from typing import TYPE_CHECKING, Any
|
|
4
5
|
|
|
5
|
-
from ..exceptions import
|
|
6
|
-
Error,
|
|
7
|
-
)
|
|
6
|
+
from ..exceptions import Error
|
|
8
7
|
from ..protocols_base import CoreNodeBase
|
|
9
|
-
from .constants import PROPERTIES_FLAG, PROPERTIES_OBJECT
|
|
8
|
+
from .constants import PROFILE_KIND_PREFIX, PROPERTIES_FLAG, PROPERTIES_OBJECT
|
|
10
9
|
|
|
11
10
|
if TYPE_CHECKING:
|
|
12
11
|
from ..client import InfrahubClient, InfrahubClientSync
|
|
@@ -40,6 +39,7 @@ class RelatedNodeBase:
|
|
|
40
39
|
self._display_label: str | None = None
|
|
41
40
|
self._typename: str | None = None
|
|
42
41
|
self._kind: str | None = None
|
|
42
|
+
self._source_typename: str | None = None
|
|
43
43
|
|
|
44
44
|
if isinstance(data, (CoreNodeBase)):
|
|
45
45
|
self._peer = data
|
|
@@ -74,6 +74,8 @@ class RelatedNodeBase:
|
|
|
74
74
|
prop_data = properties_data.get(prop, properties_data.get(f"_relation__{prop}", None))
|
|
75
75
|
if prop_data and isinstance(prop_data, dict) and "id" in prop_data:
|
|
76
76
|
setattr(self, prop, prop_data["id"])
|
|
77
|
+
if prop == "source" and "__typename" in prop_data:
|
|
78
|
+
self._source_typename = prop_data["__typename"]
|
|
77
79
|
elif prop_data and isinstance(prop_data, (str, bool)):
|
|
78
80
|
setattr(self, prop, prop_data)
|
|
79
81
|
else:
|
|
@@ -125,6 +127,13 @@ class RelatedNodeBase:
|
|
|
125
127
|
return self._peer.get_kind()
|
|
126
128
|
return self._kind
|
|
127
129
|
|
|
130
|
+
@property
|
|
131
|
+
def is_from_profile(self) -> bool:
|
|
132
|
+
"""Return whether this relationship was set from a profile. Done by checking if the source is of a profile kind."""
|
|
133
|
+
if not self._source_typename:
|
|
134
|
+
return False
|
|
135
|
+
return bool(re.match(rf"^{PROFILE_KIND_PREFIX}[A-Z]", self._source_typename))
|
|
136
|
+
|
|
128
137
|
def _generate_input_data(self, allocate_from_pool: bool = False) -> dict[str, Any]:
|
|
129
138
|
data: dict[str, Any] = {}
|
|
130
139
|
|
|
@@ -56,6 +56,14 @@ class RelationshipManagerBase:
|
|
|
56
56
|
def has_update(self) -> bool:
|
|
57
57
|
return self._has_update
|
|
58
58
|
|
|
59
|
+
@property
|
|
60
|
+
def is_from_profile(self) -> bool:
|
|
61
|
+
"""Return whether this relationship was set from a profile. All its peers must be from a profile."""
|
|
62
|
+
if not self.peers:
|
|
63
|
+
return False
|
|
64
|
+
all_profiles = [p.is_from_profile for p in self.peers]
|
|
65
|
+
return bool(all_profiles) and all(all_profiles)
|
|
66
|
+
|
|
59
67
|
def _generate_input_data(self, allocate_from_pool: bool = False) -> list[dict]:
|
|
60
68
|
return [peer._generate_input_data(allocate_from_pool=allocate_from_pool) for peer in self.peers]
|
|
61
69
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: infrahub-server
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.0b0
|
|
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
|
-
|
|
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.
|
|
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==
|
|
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
|
|
37
|
-
Requires-Dist: neo4j
|
|
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
|
|
41
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.
|
|
42
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.
|
|
43
|
-
Requires-Dist: opentelemetry-instrumentation-aio-pika==0.
|
|
44
|
-
Requires-Dist: opentelemetry-instrumentation-fastapi==0.
|
|
45
|
-
Requires-Dist: prefect-redis==0.2.
|
|
46
|
-
Requires-Dist: prefect==3.
|
|
47
|
-
Requires-Dist: pyarrow
|
|
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.
|
|
50
|
+
Requires-Dist: pydantic<2.13,>=2.12
|
|
50
51
|
Requires-Dist: pyjwt<2.9,>=2.8
|
|
51
|
-
Requires-Dist: pytest<
|
|
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
|