infrahub-server 1.5.1__py3-none-any.whl → 1.5.2__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.
@@ -141,8 +141,9 @@ class Branch(StandardNode):
141
141
  """
142
142
 
143
143
  params: dict[str, Any] = {"name": name}
144
+ params["ignore_statuses"] = []
144
145
  if ignore_deleting:
145
- params["ignore_statuses"] = [BranchStatus.DELETING.value]
146
+ params["ignore_statuses"].append(BranchStatus.DELETING.value)
146
147
 
147
148
  results = await db.execute_query(query=query, params=params, name="branch_get_by_name", type=QueryType.READ)
148
149
 
@@ -502,9 +502,13 @@ async def post_process_branch_merge(source_branch: str, target_branch: str, cont
502
502
  parameters={"branch": target_branch, "source": GeneratorDefinitionRunSource.MERGE},
503
503
  )
504
504
 
505
+ active_branches = await Branch.get_list(db=db)
506
+ active_branch_names = {branch.name for branch in active_branches}
507
+
505
508
  for diff_root in branch_diff_roots:
506
509
  if (
507
510
  diff_root.base_branch_name != diff_root.diff_branch_name
511
+ and diff_root.diff_branch_name in active_branch_names
508
512
  and diff_root.tracking_id
509
513
  and isinstance(diff_root.tracking_id, BranchTrackingId)
510
514
  ):
@@ -8,6 +8,7 @@ from infrahub.core.diff.coordinator import DiffCoordinator
8
8
  from infrahub.core.diff.models import RequestDiffUpdate # noqa: TC001 needed for prefect flow
9
9
  from infrahub.core.diff.repository.repository import DiffRepository
10
10
  from infrahub.dependencies.registry import get_component_registry
11
+ from infrahub.exceptions import BranchNotFoundError
11
12
  from infrahub.log import get_logger
12
13
  from infrahub.workers.dependencies import get_database, get_workflow
13
14
  from infrahub.workflows.catalogue import DIFF_REFRESH
@@ -24,7 +25,11 @@ async def update_diff(model: RequestDiffUpdate) -> None:
24
25
  async with database.start_session(read_only=False) as db:
25
26
  component_registry = get_component_registry()
26
27
  base_branch = await registry.get_branch(db=db, branch=registry.default_branch)
27
- diff_branch = await registry.get_branch(db=db, branch=model.branch_name)
28
+ try:
29
+ diff_branch = await registry.get_branch(db=db, branch=model.branch_name)
30
+ except BranchNotFoundError:
31
+ log.warn(f"Branch {model.branch_name} not found, skipping diff update")
32
+ return
28
33
 
29
34
  diff_coordinator = await component_registry.get_component(DiffCoordinator, db=db, branch=diff_branch)
30
35
 
@@ -1 +1 @@
1
- GRAPH_VERSION = 44
1
+ GRAPH_VERSION = 45
@@ -46,6 +46,7 @@ from .m041_deleted_dup_edges import Migration041
46
46
  from .m042_profile_attrs_in_db import Migration042
47
47
  from .m043_create_hfid_display_label_in_db import Migration043
48
48
  from .m044_backfill_hfid_display_label_in_db import Migration044
49
+ from .m045_backfill_hfid_display_label_in_db_profile_template import Migration045
49
50
 
50
51
  if TYPE_CHECKING:
51
52
  from ..shared import MigrationTypes
@@ -96,6 +97,7 @@ MIGRATIONS: list[type[MigrationTypes]] = [
96
97
  Migration042,
97
98
  Migration043,
98
99
  Migration044,
100
+ Migration045,
99
101
  ]
100
102
 
101
103
 
@@ -13,13 +13,15 @@ from infrahub.core.constants import GLOBAL_BRANCH_NAME, BranchSupportType, Relat
13
13
  from infrahub.core.initialization import get_root_node
14
14
  from infrahub.core.migrations.shared import MigrationResult, get_migration_console
15
15
  from infrahub.core.query import Query, QueryType
16
+ from infrahub.core.schema import NodeSchema
17
+ from infrahub.exceptions import SchemaNotFoundError
16
18
  from infrahub.types import is_large_attribute_type
17
19
 
18
20
  from ..shared import MigrationRequiringRebase
19
21
  from .load_schema_branch import get_or_load_schema_branch
20
22
 
21
23
  if TYPE_CHECKING:
22
- from infrahub.core.schema import AttributeSchema, NodeSchema
24
+ from infrahub.core.schema import AttributeSchema, NodeSchema, ProfileSchema, TemplateSchema
23
25
  from infrahub.core.schema.basenode_schema import SchemaAttributePath
24
26
  from infrahub.core.schema.schema_branch import SchemaBranch
25
27
  from infrahub.database import InfrahubDatabase
@@ -621,7 +623,7 @@ class Migration044(MigrationRequiringRebase):
621
623
  self,
622
624
  db: InfrahubDatabase,
623
625
  branch: Branch,
624
- schema: NodeSchema,
626
+ schema: NodeSchema | ProfileSchema | TemplateSchema,
625
627
  schema_branch: SchemaBranch,
626
628
  attribute_schema_map: dict[AttributeSchema, AttributeSchema],
627
629
  progress: Progress | None = None,
@@ -755,7 +757,7 @@ class Migration044(MigrationRequiringRebase):
755
757
  self,
756
758
  db: InfrahubDatabase,
757
759
  branch: Branch,
758
- schema: NodeSchema,
760
+ schema: NodeSchema | ProfileSchema | TemplateSchema,
759
761
  schema_branch: SchemaBranch,
760
762
  source_attribute_schema: AttributeSchema,
761
763
  destination_attribute_schema: AttributeSchema,
@@ -824,18 +826,30 @@ class Migration044(MigrationRequiringRebase):
824
826
  continue
825
827
 
826
828
  node_schema = schema_branch.get_node(name=node_schema_name, duplicate=False)
827
- default_node_schema = main_schema_branch.get_node(name=node_schema_name, duplicate=False)
829
+ try:
830
+ default_node_schema = main_schema_branch.get_node(name=node_schema_name, duplicate=False)
831
+ except SchemaNotFoundError:
832
+ default_node_schema = None
828
833
  schemas_for_universal_update_map = {}
829
834
  schemas_for_targeted_update_map = {}
830
- if default_node_schema.display_label != node_schema.display_label:
831
- schemas_for_universal_update_map[display_labels_attribute_schema] = display_label_attribute_schema
832
- elif node_schema.display_labels:
833
- schemas_for_targeted_update_map[display_labels_attribute_schema] = display_label_attribute_schema
834
-
835
- if default_node_schema.human_friendly_id != node_schema.human_friendly_id:
836
- schemas_for_universal_update_map[hfid_attribute_schema] = hfid_attribute_schema
837
- elif node_schema.human_friendly_id:
838
- schemas_for_targeted_update_map[hfid_attribute_schema] = hfid_attribute_schema
835
+ if node_schema.display_label:
836
+ if default_node_schema is None or default_node_schema.display_label != node_schema.display_label:
837
+ schemas_for_universal_update_map[display_labels_attribute_schema] = (
838
+ display_label_attribute_schema
839
+ )
840
+ else:
841
+ schemas_for_targeted_update_map[display_labels_attribute_schema] = (
842
+ display_label_attribute_schema
843
+ )
844
+
845
+ if node_schema.human_friendly_id:
846
+ if (
847
+ default_node_schema is None
848
+ or default_node_schema.human_friendly_id != node_schema.human_friendly_id
849
+ ):
850
+ schemas_for_universal_update_map[hfid_attribute_schema] = hfid_attribute_schema
851
+ else:
852
+ schemas_for_targeted_update_map[hfid_attribute_schema] = hfid_attribute_schema
839
853
 
840
854
  if schemas_for_universal_update_map:
841
855
  await self._do_one_schema_all(
@@ -0,0 +1,163 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from rich.progress import Progress
6
+
7
+ from infrahub.core import registry
8
+ from infrahub.core.branch import Branch
9
+ from infrahub.core.initialization import get_root_node
10
+ from infrahub.core.migrations.graph.m044_backfill_hfid_display_label_in_db import DefaultBranchNodeCount, Migration044
11
+ from infrahub.core.migrations.shared import MigrationResult, get_migration_console
12
+ from infrahub.exceptions import SchemaNotFoundError
13
+
14
+ from .load_schema_branch import get_or_load_schema_branch
15
+
16
+ if TYPE_CHECKING:
17
+ from infrahub.core.schema import ProfileSchema, TemplateSchema
18
+ from infrahub.database import InfrahubDatabase
19
+
20
+
21
+ console = get_migration_console()
22
+
23
+
24
+ class Migration045(Migration044):
25
+ """
26
+ Backfill `human_friendly_id` and `display_label` attributes for profile and template nodes with schemas that define them.
27
+ """
28
+
29
+ name: str = "045_backfill_hfid_display_label_in_db_profile_template"
30
+ minimum_version: int = 44
31
+ update_batch_size: int = 1000
32
+
33
+ async def execute(self, db: InfrahubDatabase) -> MigrationResult:
34
+ root_node = await get_root_node(db=db, initialize=False)
35
+ default_branch_name = root_node.default_branch
36
+ default_branch = await Branch.get_by_name(db=db, name=default_branch_name)
37
+
38
+ main_schema_branch = await get_or_load_schema_branch(db=db, branch=default_branch)
39
+ kinds_to_skip = self.kinds_to_skip + main_schema_branch.node_names
40
+
41
+ total_nodes_query = await DefaultBranchNodeCount.init(db=db, kinds_to_skip=kinds_to_skip)
42
+ await total_nodes_query.execute(db=db)
43
+ total_nodes_count = total_nodes_query.get_num_nodes()
44
+
45
+ base_node_schema = main_schema_branch.get("SchemaNode", duplicate=False)
46
+ display_label_attribute_schema = base_node_schema.get_attribute("display_label")
47
+ display_labels_attribute_schema = base_node_schema.get_attribute("display_labels")
48
+ hfid_attribute_schema = base_node_schema.get_attribute("human_friendly_id")
49
+
50
+ try:
51
+ with Progress(console=console) as progress:
52
+ update_task = progress.add_task(
53
+ f"Set display_label and human_friendly_id for {total_nodes_count} nodes on default branch",
54
+ total=total_nodes_count,
55
+ )
56
+ for node_schema_name in main_schema_branch.profile_names + main_schema_branch.template_names:
57
+ if node_schema_name in self.kinds_to_skip:
58
+ continue
59
+
60
+ node_schema: ProfileSchema | TemplateSchema
61
+ if node_schema_name in main_schema_branch.profile_names:
62
+ node_schema = main_schema_branch.get_profile(name=node_schema_name, duplicate=False)
63
+ else:
64
+ node_schema = main_schema_branch.get_template(name=node_schema_name, duplicate=False)
65
+
66
+ attribute_schema_map = {}
67
+ if node_schema.display_labels:
68
+ attribute_schema_map[display_labels_attribute_schema] = display_label_attribute_schema
69
+ if node_schema.human_friendly_id:
70
+ attribute_schema_map[hfid_attribute_schema] = hfid_attribute_schema
71
+ if not attribute_schema_map:
72
+ continue
73
+
74
+ await self._do_one_schema_all(
75
+ db=db,
76
+ branch=default_branch,
77
+ schema=node_schema,
78
+ schema_branch=main_schema_branch,
79
+ attribute_schema_map=attribute_schema_map,
80
+ progress=progress,
81
+ update_task=update_task,
82
+ )
83
+
84
+ except Exception as exc:
85
+ return MigrationResult(errors=[str(exc)])
86
+ return MigrationResult()
87
+
88
+ async def execute_against_branch(self, db: InfrahubDatabase, branch: Branch) -> MigrationResult:
89
+ default_branch = await Branch.get_by_name(db=db, name=registry.default_branch)
90
+ main_schema_branch = await get_or_load_schema_branch(db=db, branch=default_branch)
91
+ schema_branch = await get_or_load_schema_branch(db=db, branch=branch)
92
+
93
+ base_node_schema = schema_branch.get("SchemaNode", duplicate=False)
94
+ display_label_attribute_schema = base_node_schema.get_attribute("display_label")
95
+ display_labels_attribute_schema = base_node_schema.get_attribute("display_labels")
96
+ hfid_attribute_schema = base_node_schema.get_attribute("human_friendly_id")
97
+
98
+ try:
99
+ for node_schema_name in schema_branch.profile_names + schema_branch.template_names:
100
+ if node_schema_name in self.kinds_to_skip:
101
+ continue
102
+
103
+ node_schema: ProfileSchema | TemplateSchema
104
+ default_node_schema: ProfileSchema | TemplateSchema | None
105
+ if node_schema_name in schema_branch.profile_names:
106
+ node_schema = schema_branch.get_profile(name=node_schema_name, duplicate=False)
107
+ try:
108
+ default_node_schema = main_schema_branch.get_profile(name=node_schema_name, duplicate=False)
109
+ except SchemaNotFoundError:
110
+ default_node_schema = None
111
+ else:
112
+ node_schema = schema_branch.get_template(name=node_schema_name, duplicate=False)
113
+ try:
114
+ default_node_schema = main_schema_branch.get_template(name=node_schema_name, duplicate=False)
115
+ except SchemaNotFoundError:
116
+ default_node_schema = None
117
+
118
+ schemas_for_universal_update_map = {}
119
+ schemas_for_targeted_update_map = {}
120
+ if node_schema.display_labels:
121
+ if default_node_schema is None or default_node_schema.display_label != node_schema.display_label:
122
+ schemas_for_universal_update_map[display_labels_attribute_schema] = (
123
+ display_label_attribute_schema
124
+ )
125
+ else:
126
+ schemas_for_targeted_update_map[display_labels_attribute_schema] = (
127
+ display_label_attribute_schema
128
+ )
129
+
130
+ if node_schema.human_friendly_id:
131
+ if (
132
+ default_node_schema is None
133
+ or default_node_schema.human_friendly_id != node_schema.human_friendly_id
134
+ ):
135
+ schemas_for_universal_update_map[hfid_attribute_schema] = hfid_attribute_schema
136
+ else:
137
+ schemas_for_targeted_update_map[hfid_attribute_schema] = hfid_attribute_schema
138
+
139
+ if schemas_for_universal_update_map:
140
+ await self._do_one_schema_all(
141
+ db=db,
142
+ branch=branch,
143
+ schema=node_schema,
144
+ schema_branch=schema_branch,
145
+ attribute_schema_map=schemas_for_universal_update_map,
146
+ )
147
+
148
+ if not schemas_for_targeted_update_map:
149
+ continue
150
+
151
+ for source_attribute_schema, destination_attribute_schema in schemas_for_targeted_update_map.items():
152
+ await self._do_one_schema_branch(
153
+ db=db,
154
+ branch=branch,
155
+ schema=node_schema,
156
+ schema_branch=schema_branch,
157
+ source_attribute_schema=source_attribute_schema,
158
+ destination_attribute_schema=destination_attribute_schema,
159
+ )
160
+
161
+ except Exception as exc:
162
+ return MigrationResult(errors=[str(exc)])
163
+ return MigrationResult()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: infrahub-server
3
- Version: 1.5.1
3
+ Version: 1.5.2
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
  License: Apache-2.0
6
6
  Author: OpsMill
@@ -67,9 +67,9 @@ infrahub/core/account.py,sha256=6f1cIDWvL-HsbzL0UwWoCbDTzx55wzd_SkpQXiKDjcE,2747
67
67
  infrahub/core/attribute.py,sha256=4_FvQI5EgCmOGKb8_N0c7k2kV1EbXwLqRgFsvOtQbVw,44907
68
68
  infrahub/core/branch/__init__.py,sha256=h0oIj0gHp1xI-N1cYW8_N6VZ81CBOmLuiUt5cS5nKuk,49
69
69
  infrahub/core/branch/enums.py,sha256=wE_TvKxd-r3zeHgLOMuZhsyKRwDWWC8BMxAEC_aX7A8,212
70
- infrahub/core/branch/models.py,sha256=jNKf0C0hy9OnEVUm3D4kRpuxbBQze45sVQ8Caruzbgs,20574
70
+ infrahub/core/branch/models.py,sha256=wgTeFJCcrgW7soZrfJWhGaJg2jDmTnsAjabpjf0-KWI,20617
71
71
  infrahub/core/branch/needs_rebase_status.py,sha256=purrg93k9zWcV9NONjIdMF8cWLXEKHq6YjO0ayC3C04,407
72
- infrahub/core/branch/tasks.py,sha256=WxIdAuvfCRLctLABEsQCpjhWKe6naI84HCR3qwP1MSI,23358
72
+ infrahub/core/branch/tasks.py,sha256=RnQlWdFmAj3VIALb4WNaMiL7ZuvtGcW1zgdbnemjE-Q,23558
73
73
  infrahub/core/changelog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  infrahub/core/changelog/diff.py,sha256=0BxCpsgJ-38x5BBz5XDtAvc9FPy82M0NlzXl8nQ-c70,13752
75
75
  infrahub/core/changelog/models.py,sha256=oVy-j4pWXs9PAuQgaRohFYsmdPBPNc7FZU3FzxS_klc,29828
@@ -141,9 +141,9 @@ infrahub/core/diff/query_parser.py,sha256=ywb5ZH9O7fZ9G8XWHxEcCJNjwRAKNWJCvSoqcL
141
141
  infrahub/core/diff/repository/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
142
  infrahub/core/diff/repository/deserializer.py,sha256=bhN9ao8HxqKyRz273QGLNV9z9_SS4EQnM9JoY5ptx78,21337
143
143
  infrahub/core/diff/repository/repository.py,sha256=u0QTMY1e2dknG_DuRAwzFt-Lp1_mdj5lqF2ymt77k9E,25581
144
- infrahub/core/diff/tasks.py,sha256=jSXlenTJ5Fc189Xvm971e3-gBDRnfN19cxNaWvEFwAE,3306
144
+ infrahub/core/diff/tasks.py,sha256=lQMTcqvVC1p5hc3KmwR2ONA1M6qffDUl62vKOktTs5c,3514
145
145
  infrahub/core/enums.py,sha256=qGbhRVoH43Xi0iDkUfWdQiKapJbLT9UKsCobFk_paIk,491
146
- infrahub/core/graph/__init__.py,sha256=hC8X6p8rzSzwhe-sqICejw_qkEOt3Bd0yWcTKMwGKRw,19
146
+ infrahub/core/graph/__init__.py,sha256=KNVHBhDx3HVtzNMVi-7A8m-Cp_rbi61MeY-Ag62bZ78,19
147
147
  infrahub/core/graph/constraints.py,sha256=lmuzrKDFoeSKRiLtycB9PXi6zhMYghczKrPYvfWyy90,10396
148
148
  infrahub/core/graph/index.py,sha256=A9jzEE_wldBJsEsflODeMt4GM8sPmmbHAJRNdFioR1k,1736
149
149
  infrahub/core/graph/schema.py,sha256=o50Jcy6GBRk55RkDJSMIDDwHhLD7y_RWOirI9rCex4A,10776
@@ -163,7 +163,7 @@ infrahub/core/manager.py,sha256=IU5VfkHLCN4WhvqzI6DOEyCXo9fBT_st5BmN__A4vas,4418
163
163
  infrahub/core/merge.py,sha256=TNZpxjNYcl3dnvE8eYXaWSXFDYeEa8DDsS9XbR2XKlA,11217
164
164
  infrahub/core/migrations/__init__.py,sha256=ttA1YkKhiG9Zc0fwIIcMLIDCrIhN5xVOIh6ojFoy58o,1541
165
165
  infrahub/core/migrations/exceptions.py,sha256=gEAkWzjvN-IXr0YPqUrEqnu_GsR-uqucsu1QUaWhEmM,147
166
- infrahub/core/migrations/graph/__init__.py,sha256=P99qPwV4_sKPG6lNH33PUBckqZadRpBMVjMbxTPVvqc,4375
166
+ infrahub/core/migrations/graph/__init__.py,sha256=epa6L0I-ZMzHS2NkpTusTl_1LEDjGNRq7q_S_HukqqQ,4475
167
167
  infrahub/core/migrations/graph/load_schema_branch.py,sha256=OvjowaeDnx4djD1aGPjE7Rqyh1p843LSodOf_Frdt9U,1008
168
168
  infrahub/core/migrations/graph/m001_add_version_to_graph.py,sha256=YcLN6cFjE6IGheXR4Ujb6CcyY8bJ7WE289hcKJaENOc,1515
169
169
  infrahub/core/migrations/graph/m002_attribute_is_default.py,sha256=wB6f2N_ChTvGajqHD-OWCG5ahRMDhhXZuwo79ieq_II,1036
@@ -208,7 +208,8 @@ infrahub/core/migrations/graph/m040_duplicated_attributes.py,sha256=2LxsG-CfcZnB
208
208
  infrahub/core/migrations/graph/m041_deleted_dup_edges.py,sha256=eP2BqUfvwkjACJrKI5fVyBBmXxEDwxtAD9O_CcbwBMw,5409
209
209
  infrahub/core/migrations/graph/m042_profile_attrs_in_db.py,sha256=KdEaNPHovJxxiNL3CFRjWBnNzaMdidj1nmW5Jbhrt-4,6431
210
210
  infrahub/core/migrations/graph/m043_create_hfid_display_label_in_db.py,sha256=x7OgI5ZoX8yslg329VNFHXbZ2eDFwcdFhBeC-UWqVdk,7072
211
- infrahub/core/migrations/graph/m044_backfill_hfid_display_label_in_db.py,sha256=ZvQZQtd5P0C3Xd8_54_OGq5q1pc-gFBoZ3UUg3hMQbQ,38470
211
+ infrahub/core/migrations/graph/m044_backfill_hfid_display_label_in_db.py,sha256=mzw_sitDDDNQRMurvMo3mprUqhXNLJVh6Dgabh67cTw,39096
212
+ infrahub/core/migrations/graph/m045_backfill_hfid_display_label_in_db_profile_template.py,sha256=mnND7TIdPSVcN9uJeYMmRpVjlAU6QBqfu7e1CS31D9Q,7934
212
213
  infrahub/core/migrations/query/__init__.py,sha256=nUbKk8bX6Ei4RkLe0VNNAm7c-d2zDoAMgdFGkYW0Czw,850
213
214
  infrahub/core/migrations/query/attribute_add.py,sha256=wKChMnqcd8hb8YCTIU3rUrtVqwHFSI5bdvXAPUcnRIA,4969
214
215
  infrahub/core/migrations/query/attribute_remove.py,sha256=IhAPlv9jyZTWMf8f8HZJ8G0ImWebt-ER78NrP3vIWhU,5307
@@ -887,8 +888,8 @@ infrahub_testcontainers/models.py,sha256=hT7WEX2o7gxTFPE9uhtP5yigKgP5YSsy2c3tFB-
887
888
  infrahub_testcontainers/performance_test.py,sha256=_nf7Uk15mHwqpN4y7XUfI4JI54-UaXW-Yu4uwMIx21w,6185
888
889
  infrahub_testcontainers/plugin.py,sha256=I3RuZQ0dARyKHuqCf0y1Yj731P2Mwf3BJUehRJKeWrs,5645
889
890
  infrahub_testcontainers/prometheus.yml,sha256=610xQEyj3xuVJMzPkC4m1fRnCrjGpiRBrXA2ytCLa54,599
890
- infrahub_server-1.5.1.dist-info/LICENSE.txt,sha256=7GQO7kxVoQYnZtFrjZBKLRXbrGwwwimHPPOJtqXsozQ,11340
891
- infrahub_server-1.5.1.dist-info/METADATA,sha256=Ci9Q7X9kIG5Irx9yGBYFmcu63aWKr5I80qx1wblacYc,6127
892
- infrahub_server-1.5.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
893
- infrahub_server-1.5.1.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
894
- infrahub_server-1.5.1.dist-info/RECORD,,
891
+ infrahub_server-1.5.2.dist-info/LICENSE.txt,sha256=7GQO7kxVoQYnZtFrjZBKLRXbrGwwwimHPPOJtqXsozQ,11340
892
+ infrahub_server-1.5.2.dist-info/METADATA,sha256=FI3l6-MziBYaFBQiDqElU0MK6XgH67S3iQsq6jiJ4_8,6127
893
+ infrahub_server-1.5.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
894
+ infrahub_server-1.5.2.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
895
+ infrahub_server-1.5.2.dist-info/RECORD,,