infrahub-server 1.3.1__tar.gz → 1.3.3__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 (813) hide show
  1. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/PKG-INFO +1 -1
  2. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/db.py +194 -13
  3. infrahub_server-1.3.3/backend/infrahub/core/branch/enums.py +8 -0
  4. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/branch/models.py +28 -5
  5. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/branch/tasks.py +5 -7
  6. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/calculator.py +4 -1
  7. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/coordinator.py +32 -34
  8. infrahub_server-1.3.3/backend/infrahub/core/diff/diff_locker.py +26 -0
  9. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query_parser.py +23 -32
  10. infrahub_server-1.3.3/backend/infrahub/core/graph/__init__.py +1 -0
  11. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/initialization.py +4 -3
  12. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/merge.py +31 -16
  13. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/__init__.py +24 -0
  14. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m012_convert_account_generic.py +4 -3
  15. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m013_convert_git_password_credential.py +4 -3
  16. infrahub_server-1.3.3/backend/infrahub/core/migrations/graph/m032_cleanup_orphaned_branch_relationships.py +105 -0
  17. infrahub_server-1.3.3/backend/infrahub/core/migrations/graph/m033_deduplicate_relationship_vertices.py +97 -0
  18. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/__init__.py +3 -0
  19. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/constraints/grouped_uniqueness.py +88 -132
  20. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/resource_manager/ip_address_pool.py +5 -3
  21. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/resource_manager/ip_prefix_pool.py +7 -4
  22. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/resource_manager/number_pool.py +3 -1
  23. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/standard.py +4 -0
  24. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/branch.py +25 -56
  25. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/node.py +78 -24
  26. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/relationship.py +11 -8
  27. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/model.py +10 -5
  28. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/uniqueness/model.py +17 -0
  29. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/uniqueness/query.py +212 -1
  30. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/coordinator.py +3 -0
  31. infrahub_server-1.3.3/backend/infrahub/dependencies/builder/diff/locker.py +8 -0
  32. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/main.py +25 -4
  33. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/tasks.py +2 -0
  34. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/pyproject.toml +1 -1
  35. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/node.py +22 -10
  36. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/related_node.py +7 -0
  37. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/container.py +1 -1
  38. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/docker-compose-cluster.test.yml +3 -0
  39. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/docker-compose.test.yml +1 -0
  40. infrahub_server-1.3.1/backend/infrahub/core/graph/__init__.py +0 -1
  41. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/LICENSE.txt +0 -0
  42. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/README.md +0 -0
  43. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/__init__.py +0 -0
  44. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/__init__.py +0 -0
  45. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/constants.py +0 -0
  46. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/gather.py +0 -0
  47. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/models.py +0 -0
  48. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/parsers.py +0 -0
  49. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/schema.py +0 -0
  50. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/tasks.py +0 -0
  51. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/actions/triggers.py +0 -0
  52. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/__init__.py +0 -0
  53. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/artifact.py +0 -0
  54. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/auth.py +0 -0
  55. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/dependencies.py +0 -0
  56. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/diff/__init__.py +0 -0
  57. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/diff/diff.py +0 -0
  58. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/diff/validation_models.py +0 -0
  59. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/exception_handlers.py +0 -0
  60. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/exceptions.py +0 -0
  61. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/file.py +0 -0
  62. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/internal.py +0 -0
  63. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/menu.py +0 -0
  64. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/oauth2.py +0 -0
  65. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/oidc.py +0 -0
  66. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/query.py +0 -0
  67. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/schema.py +0 -0
  68. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/static/redoc.standalone.js +0 -0
  69. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/static/swagger-ui-bundle.js +0 -0
  70. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/static/swagger-ui.css +0 -0
  71. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/storage.py +0 -0
  72. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/api/transformation.py +0 -0
  73. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/artifacts/__init__.py +0 -0
  74. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/artifacts/models.py +0 -0
  75. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/artifacts/tasks.py +0 -0
  76. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/auth.py +0 -0
  77. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/branch/__init__.py +0 -0
  78. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/branch/tasks.py +0 -0
  79. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/branch/triggers.py +0 -0
  80. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/__init__.py +0 -0
  81. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/constants.py +0 -0
  82. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/context.py +0 -0
  83. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/events.py +0 -0
  84. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/git_agent.py +0 -0
  85. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/patch.py +0 -0
  86. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/server.py +0 -0
  87. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/tasks.py +0 -0
  88. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/cli/upgrade.py +0 -0
  89. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/components.py +0 -0
  90. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/computed_attribute/__init__.py +0 -0
  91. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/computed_attribute/constants.py +0 -0
  92. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/computed_attribute/gather.py +0 -0
  93. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/computed_attribute/models.py +0 -0
  94. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/computed_attribute/tasks.py +0 -0
  95. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/computed_attribute/triggers.py +0 -0
  96. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/config.py +0 -0
  97. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/constants/__init__.py +0 -0
  98. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/constants/database.py +0 -0
  99. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/context.py +0 -0
  100. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/__init__.py +0 -0
  101. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/account.py +0 -0
  102. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/attribute.py +0 -0
  103. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/branch/__init__.py +0 -0
  104. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/changelog/__init__.py +0 -0
  105. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/changelog/diff.py +0 -0
  106. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/changelog/models.py +0 -0
  107. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constants/__init__.py +0 -0
  108. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constants/database.py +0 -0
  109. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constants/infrahubkind.py +0 -0
  110. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constants/relationship_label.py +0 -0
  111. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constants/schema.py +0 -0
  112. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constraint/__init__.py +0 -0
  113. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constraint/node/__init__.py +0 -0
  114. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/constraint/node/runner.py +0 -0
  115. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/convert_object_type/__init__.py +0 -0
  116. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/convert_object_type/conversion.py +0 -0
  117. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/convert_object_type/schema_mapping.py +0 -0
  118. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/__init__.py +0 -0
  119. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/artifacts/__init__.py +0 -0
  120. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/artifacts/calculator.py +0 -0
  121. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/branch_differ.py +0 -0
  122. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/combiner.py +0 -0
  123. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/conflict_transferer.py +0 -0
  124. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/conflicts_enricher.py +0 -0
  125. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/conflicts_extractor.py +0 -0
  126. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/data_check_synchronizer.py +0 -0
  127. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/__init__.py +0 -0
  128. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/aggregated.py +0 -0
  129. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/cardinality_one.py +0 -0
  130. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/hierarchy.py +0 -0
  131. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/interface.py +0 -0
  132. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/labels.py +0 -0
  133. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/path_identifier.py +0 -0
  134. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/enricher/summary_counts.py +0 -0
  135. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/exceptions.py +0 -0
  136. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/ipam_diff_parser.py +0 -0
  137. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/merger/__init__.py +0 -0
  138. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/merger/merger.py +0 -0
  139. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/merger/model.py +0 -0
  140. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/merger/serializer.py +0 -0
  141. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/model/__init__.py +0 -0
  142. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/model/diff.py +0 -0
  143. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/model/field_specifiers_map.py +0 -0
  144. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/model/path.py +0 -0
  145. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/models.py +0 -0
  146. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/parent_node_adder.py +0 -0
  147. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/payload_builder.py +0 -0
  148. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/__init__.py +0 -0
  149. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/all_conflicts.py +0 -0
  150. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/artifact.py +0 -0
  151. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/delete_query.py +0 -0
  152. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/diff_get.py +0 -0
  153. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/diff_summary.py +0 -0
  154. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/drop_nodes.py +0 -0
  155. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/field_specifiers.py +0 -0
  156. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/field_summary.py +0 -0
  157. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/filters.py +0 -0
  158. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/get_conflict_query.py +0 -0
  159. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/has_conflicts_query.py +0 -0
  160. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/merge.py +0 -0
  161. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/merge_tracking_id.py +0 -0
  162. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/roots_metadata.py +0 -0
  163. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/save.py +0 -0
  164. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/summary_counts_enricher.py +0 -0
  165. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/time_range_query.py +0 -0
  166. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/query/update_conflict_query.py +0 -0
  167. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/repository/__init__.py +0 -0
  168. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/repository/deserializer.py +0 -0
  169. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/repository/repository.py +0 -0
  170. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/diff/tasks.py +0 -0
  171. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/enums.py +0 -0
  172. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/graph/constraints.py +0 -0
  173. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/graph/index.py +0 -0
  174. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/graph/schema.py +0 -0
  175. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/integrity/__init__.py +0 -0
  176. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/integrity/object_conflict/__init__.py +0 -0
  177. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/integrity/object_conflict/conflict_recorder.py +0 -0
  178. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/__init__.py +0 -0
  179. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/constants.py +0 -0
  180. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/kinds_getter.py +0 -0
  181. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/model.py +0 -0
  182. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/reconciler.py +0 -0
  183. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/size.py +0 -0
  184. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/tasks.py +0 -0
  185. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/ipam/utilization.py +0 -0
  186. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/manager.py +0 -0
  187. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/__init__.py +0 -0
  188. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m001_add_version_to_graph.py +0 -0
  189. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m002_attribute_is_default.py +0 -0
  190. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m003_relationship_parent_optional.py +0 -0
  191. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m004_add_attr_documentation.py +0 -0
  192. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m005_add_rel_read_only.py +0 -0
  193. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m006_add_rel_on_delete.py +0 -0
  194. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m007_add_rel_allow_override.py +0 -0
  195. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m008_add_human_friendly_id.py +0 -0
  196. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m009_add_generate_profile_attr.py +0 -0
  197. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m010_add_generate_profile_attr_generic.py +0 -0
  198. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m011_remove_profile_relationship_schema.py +0 -0
  199. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m014_remove_index_attr_value.py +0 -0
  200. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m015_diff_format_update.py +0 -0
  201. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py +0 -0
  202. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m017_add_core_profile.py +0 -0
  203. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m018_uniqueness_nulls.py +0 -0
  204. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m019_restore_rels_to_time.py +0 -0
  205. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m020_duplicate_edges.py +0 -0
  206. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +0 -0
  207. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m022_add_generate_template_attr.py +0 -0
  208. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +0 -0
  209. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m024_missing_hierarchy_backfill.py +0 -0
  210. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m025_uniqueness_nulls.py +0 -0
  211. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m026_0000_prefix_fix.py +0 -0
  212. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m027_delete_isolated_nodes.py +0 -0
  213. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m028_delete_diffs.py +0 -0
  214. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m029_duplicates_cleanup.py +0 -0
  215. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m030_illegal_edges.py +0 -0
  216. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/graph/m031_check_number_attributes.py +0 -0
  217. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/__init__.py +0 -0
  218. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/attribute_add.py +0 -0
  219. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/attribute_rename.py +0 -0
  220. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/delete_element_in_schema.py +0 -0
  221. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/node_duplicate.py +0 -0
  222. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/relationship_duplicate.py +0 -0
  223. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/query/schema_attribute_update.py +0 -0
  224. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/__init__.py +0 -0
  225. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/attribute_name_update.py +0 -0
  226. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/models.py +0 -0
  227. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/node_attribute_add.py +0 -0
  228. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/node_attribute_remove.py +0 -0
  229. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/node_kind_update.py +0 -0
  230. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/node_remove.py +0 -0
  231. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/placeholder_dummy.py +0 -0
  232. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/schema/tasks.py +0 -0
  233. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/migrations/shared.py +0 -0
  234. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/models.py +0 -0
  235. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/base.py +0 -0
  236. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/constraints/__init__.py +0 -0
  237. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/constraints/attribute_uniqueness.py +0 -0
  238. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/constraints/interface.py +0 -0
  239. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/create.py +0 -0
  240. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/delete_validator.py +0 -0
  241. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/ipam.py +0 -0
  242. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/permissions.py +0 -0
  243. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/node/resource_manager/__init__.py +0 -0
  244. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/path.py +0 -0
  245. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/property.py +0 -0
  246. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/protocols.py +0 -0
  247. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/protocols_base.py +0 -0
  248. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/__init__.py +0 -0
  249. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/attribute.py +0 -0
  250. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/delete.py +0 -0
  251. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/diff.py +0 -0
  252. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/ipam.py +0 -0
  253. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/resource_manager.py +0 -0
  254. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/standard_node.py +0 -0
  255. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/subquery.py +0 -0
  256. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/task.py +0 -0
  257. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/task_log.py +0 -0
  258. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/query/utils.py +0 -0
  259. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/registry.py +0 -0
  260. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/__init__.py +0 -0
  261. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/__init__.py +0 -0
  262. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/count.py +0 -0
  263. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/interface.py +0 -0
  264. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/peer_kind.py +0 -0
  265. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/peer_parent.py +0 -0
  266. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/peer_relatives.py +0 -0
  267. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/relationship/constraints/profiles_kind.py +0 -0
  268. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/root.py +0 -0
  269. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/__init__.py +0 -0
  270. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/attribute_parameters.py +0 -0
  271. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/attribute_schema.py +0 -0
  272. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/basenode_schema.py +0 -0
  273. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/computed_attribute.py +0 -0
  274. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/constants.py +0 -0
  275. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/__init__.py +0 -0
  276. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/__init__.py +0 -0
  277. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/account.py +0 -0
  278. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/artifact.py +0 -0
  279. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/builtin.py +0 -0
  280. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/check.py +0 -0
  281. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/core.py +0 -0
  282. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/generator.py +0 -0
  283. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/graphql_query.py +0 -0
  284. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/group.py +0 -0
  285. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/ipam.py +0 -0
  286. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/lineage.py +0 -0
  287. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/menu.py +0 -0
  288. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/permission.py +0 -0
  289. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/profile.py +0 -0
  290. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/propose_change.py +0 -0
  291. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/propose_change_comment.py +0 -0
  292. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/propose_change_validator.py +0 -0
  293. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/repository.py +0 -0
  294. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/resource_pool.py +0 -0
  295. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/template.py +0 -0
  296. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/transform.py +0 -0
  297. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/core/webhook.py +0 -0
  298. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/deprecated.py +0 -0
  299. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/definitions/internal.py +0 -0
  300. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/dropdown.py +0 -0
  301. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generated/__init__.py +0 -0
  302. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generated/attribute_schema.py +0 -0
  303. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generated/base_node_schema.py +0 -0
  304. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generated/genericnode_schema.py +0 -0
  305. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generated/node_schema.py +0 -0
  306. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generated/relationship_schema.py +0 -0
  307. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/generic_schema.py +0 -0
  308. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/manager.py +0 -0
  309. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/node_schema.py +0 -0
  310. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/profile_schema.py +0 -0
  311. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/relationship_schema.py +0 -0
  312. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/schema_branch.py +0 -0
  313. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/schema_branch_computed.py +0 -0
  314. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/schema/template_schema.py +0 -0
  315. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/task/__init__.py +0 -0
  316. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/task/task.py +0 -0
  317. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/task/task_log.py +0 -0
  318. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/task/user_task.py +0 -0
  319. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/timestamp.py +0 -0
  320. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/utils.py +0 -0
  321. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/__init__.py +0 -0
  322. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/aggregated_checker.py +0 -0
  323. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/__init__.py +0 -0
  324. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/choices.py +0 -0
  325. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/enum.py +0 -0
  326. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/kind.py +0 -0
  327. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/length.py +0 -0
  328. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/min_max.py +0 -0
  329. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/number_pool.py +0 -0
  330. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/optional.py +0 -0
  331. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/regex.py +0 -0
  332. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/attribute/unique.py +0 -0
  333. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/checks_runner.py +0 -0
  334. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/determiner.py +0 -0
  335. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/enum.py +0 -0
  336. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/interface.py +0 -0
  337. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/model.py +0 -0
  338. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/models/__init__.py +0 -0
  339. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/models/validate_migration.py +0 -0
  340. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/models/violation.py +0 -0
  341. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/node/__init__.py +0 -0
  342. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/node/attribute.py +0 -0
  343. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/node/generate_profile.py +0 -0
  344. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/node/hierarchy.py +0 -0
  345. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/node/inherit_from.py +0 -0
  346. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/node/relationship.py +0 -0
  347. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/query.py +0 -0
  348. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/relationship/__init__.py +0 -0
  349. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/relationship/count.py +0 -0
  350. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/relationship/optional.py +0 -0
  351. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/relationship/peer.py +0 -0
  352. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/shared.py +0 -0
  353. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/tasks.py +0 -0
  354. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/uniqueness/__init__.py +0 -0
  355. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/uniqueness/checker.py +0 -0
  356. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/core/validators/uniqueness/index.py +0 -0
  357. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/database/__init__.py +0 -0
  358. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/database/index.py +0 -0
  359. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/database/memgraph.py +0 -0
  360. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/database/metrics.py +0 -0
  361. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/database/neo4j.py +0 -0
  362. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/database/validation.py +0 -0
  363. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/__init__.py +0 -0
  364. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/__init__.py +0 -0
  365. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/grouped/__init__.py +0 -0
  366. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -0
  367. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/node/__init__.py +0 -0
  368. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/node/grouped_uniqueness.py +0 -0
  369. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/node/uniqueness.py +0 -0
  370. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/relationship_manager/__init__.py +0 -0
  371. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/relationship_manager/count.py +0 -0
  372. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_kind.py +0 -0
  373. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_parent.py +0 -0
  374. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_relatives.py +0 -0
  375. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/relationship_manager/profiles_kind.py +0 -0
  376. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/__init__.py +0 -0
  377. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/aggregated.py +0 -0
  378. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_choices.py +0 -0
  379. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_enum.py +0 -0
  380. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_kind.py +0 -0
  381. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_length.py +0 -0
  382. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_optional.py +0 -0
  383. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_regex.py +0 -0
  384. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/attribute_uniqueness.py +0 -0
  385. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/generate_profile.py +0 -0
  386. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/inherit_from.py +0 -0
  387. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/node_attribute.py +0 -0
  388. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/node_relationship.py +0 -0
  389. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/relationship_count.py +0 -0
  390. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/relationship_optional.py +0 -0
  391. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/relationship_peer.py +0 -0
  392. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/constraint/schema/uniqueness.py +0 -0
  393. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/__init__.py +0 -0
  394. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/calculator.py +0 -0
  395. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/combiner.py +0 -0
  396. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/conflict_transferer.py +0 -0
  397. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/conflicts_enricher.py +0 -0
  398. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/conflicts_extractor.py +0 -0
  399. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/data_check_conflict_recorder.py +0 -0
  400. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/data_check_synchronizer.py +0 -0
  401. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/deserializer.py +0 -0
  402. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/diff_merger.py +0 -0
  403. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/__init__.py +0 -0
  404. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/aggregated.py +0 -0
  405. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/cardinality_one.py +0 -0
  406. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/hierarchy.py +0 -0
  407. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/labels.py +0 -0
  408. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/path_identifier.py +0 -0
  409. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/enricher/summary_counts.py +0 -0
  410. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/ipam_diff_parser.py +0 -0
  411. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/parent_node_adder.py +0 -0
  412. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/diff/repository.py +0 -0
  413. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/ip/__init__.py +0 -0
  414. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/ip/kinds_getter.py +0 -0
  415. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/node/__init__.py +0 -0
  416. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/builder/node/delete_validator.py +0 -0
  417. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/component/__init__.py +0 -0
  418. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/component/exceptions.py +0 -0
  419. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/component/registry.py +0 -0
  420. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/interface.py +0 -0
  421. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/dependencies/registry.py +0 -0
  422. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/__init__.py +0 -0
  423. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/artifact_action.py +0 -0
  424. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/branch_action.py +0 -0
  425. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/constants.py +0 -0
  426. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/generator.py +0 -0
  427. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/group_action.py +0 -0
  428. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/models.py +0 -0
  429. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/node_action.py +0 -0
  430. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/repository_action.py +0 -0
  431. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/schema_action.py +0 -0
  432. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/utils.py +0 -0
  433. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/events/validator_action.py +0 -0
  434. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/exceptions.py +0 -0
  435. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/generators/__init__.py +0 -0
  436. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/generators/models.py +0 -0
  437. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/generators/tasks.py +0 -0
  438. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/__init__.py +0 -0
  439. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/base.py +0 -0
  440. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/constants.py +0 -0
  441. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/directory.py +0 -0
  442. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/integrator.py +0 -0
  443. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/models.py +0 -0
  444. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/repository.py +0 -0
  445. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/tasks.py +0 -0
  446. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/utils.py +0 -0
  447. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git/worktree.py +0 -0
  448. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git_credential/__init__.py +0 -0
  449. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git_credential/askpass.py +0 -0
  450. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/git_credential/helper.py +0 -0
  451. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/__init__.py +0 -0
  452. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/analyzer.py +0 -0
  453. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/api/__init__.py +0 -0
  454. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/api/dependencies.py +0 -0
  455. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/api/endpoints.py +0 -0
  456. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/app.py +0 -0
  457. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/__init__.py +0 -0
  458. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/__init__.py +0 -0
  459. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/anonymous_checker.py +0 -0
  460. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/checker.py +0 -0
  461. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/default_branch_checker.py +0 -0
  462. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/interface.py +0 -0
  463. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/merge_operation_checker.py +0 -0
  464. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/object_permission_checker.py +0 -0
  465. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/auth/query_permission_checker/super_admin_checker.py +0 -0
  466. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/constants.py +0 -0
  467. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/context.py +0 -0
  468. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/directives.py +0 -0
  469. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/enums.py +0 -0
  470. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/initialization.py +0 -0
  471. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/loaders/__init__.py +0 -0
  472. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/loaders/node.py +0 -0
  473. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/loaders/peers.py +0 -0
  474. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/loaders/shared.py +0 -0
  475. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/manager.py +0 -0
  476. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/metrics.py +0 -0
  477. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/models.py +0 -0
  478. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/__init__.py +0 -0
  479. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/account.py +0 -0
  480. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/action.py +0 -0
  481. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/artifact_definition.py +0 -0
  482. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/attribute.py +0 -0
  483. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/branch.py +0 -0
  484. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/computed_attribute.py +0 -0
  485. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/convert_object_type.py +0 -0
  486. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/diff.py +0 -0
  487. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/diff_conflict.py +0 -0
  488. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/generator.py +0 -0
  489. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/graphql_query.py +0 -0
  490. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/ipam.py +0 -0
  491. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/menu.py +0 -0
  492. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/models.py +0 -0
  493. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/node_getter/__init__.py +0 -0
  494. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/node_getter/by_default_filter.py +0 -0
  495. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/node_getter/by_hfid.py +0 -0
  496. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/node_getter/by_id.py +0 -0
  497. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/node_getter/interface.py +0 -0
  498. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/proposed_change.py +0 -0
  499. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/relationship.py +0 -0
  500. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/repository.py +0 -0
  501. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/resource_manager.py +0 -0
  502. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/schema.py +0 -0
  503. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/mutations/webhook.py +0 -0
  504. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/parser.py +0 -0
  505. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/permissions.py +0 -0
  506. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/__init__.py +0 -0
  507. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/account.py +0 -0
  508. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/branch.py +0 -0
  509. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/convert_object_type_mapping.py +0 -0
  510. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/diff/__init__.py +0 -0
  511. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/diff/tree.py +0 -0
  512. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/event.py +0 -0
  513. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/internal.py +0 -0
  514. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/ipam.py +0 -0
  515. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/relationship.py +0 -0
  516. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/resource_manager.py +0 -0
  517. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/search.py +0 -0
  518. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/status.py +0 -0
  519. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/queries/task.py +0 -0
  520. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/resolvers/__init__.py +0 -0
  521. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/resolvers/many_relationship.py +0 -0
  522. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/resolvers/resolver.py +0 -0
  523. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/resolvers/single_relationship.py +0 -0
  524. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/schema.py +0 -0
  525. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/subscription/__init__.py +0 -0
  526. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/subscription/events.py +0 -0
  527. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/subscription/graphql_query.py +0 -0
  528. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/__init__.py +0 -0
  529. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/attribute.py +0 -0
  530. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/branch.py +0 -0
  531. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/common.py +0 -0
  532. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/context.py +0 -0
  533. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/enums.py +0 -0
  534. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/event.py +0 -0
  535. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/interface.py +0 -0
  536. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/node.py +0 -0
  537. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/permission.py +0 -0
  538. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/relationship.py +0 -0
  539. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/standard_node.py +0 -0
  540. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/task.py +0 -0
  541. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/types/task_log.py +0 -0
  542. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/graphql/utils.py +0 -0
  543. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/groups/__init__.py +0 -0
  544. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/groups/ancestors.py +0 -0
  545. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/groups/models.py +0 -0
  546. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/groups/parsers.py +0 -0
  547. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/groups/tasks.py +0 -0
  548. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/helpers.py +0 -0
  549. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/lock.py +0 -0
  550. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/log.py +0 -0
  551. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/__init__.py +0 -0
  552. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/constants.py +0 -0
  553. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/generator.py +0 -0
  554. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/menu.py +0 -0
  555. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/models.py +0 -0
  556. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/repository.py +0 -0
  557. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/menu/utils.py +0 -0
  558. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/__init__.py +0 -0
  559. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/__init__.py +0 -0
  560. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/git_file_get.py +0 -0
  561. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/git_repository_connectivity.py +0 -0
  562. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/refresh_git_fetch.py +0 -0
  563. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/refresh_registry_branches.py +0 -0
  564. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/refresh_registry_rebasedbranch.py +0 -0
  565. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/messages/send_echo_request.py +0 -0
  566. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/__init__.py +0 -0
  567. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/git/__init__.py +0 -0
  568. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/git/file.py +0 -0
  569. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/git/repository.py +0 -0
  570. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/refresh/__init__.py +0 -0
  571. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/refresh/registry.py +0 -0
  572. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/send/__init__.py +0 -0
  573. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/operations/send/echo.py +0 -0
  574. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/message_bus/types.py +0 -0
  575. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/middleware.py +0 -0
  576. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/models.py +0 -0
  577. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/__init__.py +0 -0
  578. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/constants.py +0 -0
  579. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/edge_adder.py +0 -0
  580. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/edge_deleter.py +0 -0
  581. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/edge_updater.py +0 -0
  582. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/models.py +0 -0
  583. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/plan_reader.py +0 -0
  584. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/plan_writer.py +0 -0
  585. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/queries/__init__.py +0 -0
  586. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/queries/base.py +0 -0
  587. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/queries/delete_duplicated_edges.py +0 -0
  588. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/runner.py +0 -0
  589. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/vertex_adder.py +0 -0
  590. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/vertex_deleter.py +0 -0
  591. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/patch/vertex_updater.py +0 -0
  592. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/__init__.py +0 -0
  593. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/backend.py +0 -0
  594. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/constants.py +0 -0
  595. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/globals.py +0 -0
  596. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/local_backend.py +0 -0
  597. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/manager.py +0 -0
  598. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/report.py +0 -0
  599. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/permissions/types.py +0 -0
  600. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/__init__.py +0 -0
  601. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/address.py +0 -0
  602. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/models.py +0 -0
  603. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/number.py +0 -0
  604. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/prefix.py +0 -0
  605. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/registration.py +0 -0
  606. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pools/tasks.py +0 -0
  607. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/prefect_server/__init__.py +0 -0
  608. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/prefect_server/app.py +0 -0
  609. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/prefect_server/database.py +0 -0
  610. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/prefect_server/events.py +0 -0
  611. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/prefect_server/models.py +0 -0
  612. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/proposed_change/__init__.py +0 -0
  613. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/proposed_change/branch_diff.py +0 -0
  614. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/proposed_change/constants.py +0 -0
  615. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/proposed_change/models.py +0 -0
  616. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/proposed_change/tasks.py +0 -0
  617. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/pytest_plugin.py +0 -0
  618. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/schema/__init__.py +0 -0
  619. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/schema/tasks.py +0 -0
  620. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/schema/triggers.py +0 -0
  621. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/serve/__init__.py +0 -0
  622. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/serve/gunicorn_config.py +0 -0
  623. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/serve/log.py +0 -0
  624. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/serve/worker.py +0 -0
  625. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/server.py +0 -0
  626. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/__init__.py +0 -0
  627. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/__init__.py +0 -0
  628. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/cache/__init__.py +0 -0
  629. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/cache/nats.py +0 -0
  630. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/cache/redis.py +0 -0
  631. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/event/__init__.py +0 -0
  632. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/http/__init__.py +0 -0
  633. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/http/httpx.py +0 -0
  634. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/message_bus/__init__.py +0 -0
  635. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/message_bus/local.py +0 -0
  636. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/message_bus/nats.py +0 -0
  637. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/message_bus/rabbitmq.py +0 -0
  638. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/workflow/__init__.py +0 -0
  639. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/workflow/local.py +0 -0
  640. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/adapters/workflow/worker.py +0 -0
  641. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/component.py +0 -0
  642. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/protocols.py +0 -0
  643. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/services/scheduler.py +0 -0
  644. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/storage.py +0 -0
  645. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/task_manager/__init__.py +0 -0
  646. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/task_manager/constants.py +0 -0
  647. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/task_manager/event.py +0 -0
  648. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/task_manager/models.py +0 -0
  649. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/task_manager/task.py +0 -0
  650. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/__init__.py +0 -0
  651. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/artifact.py +0 -0
  652. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/check.py +0 -0
  653. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/dummy.py +0 -0
  654. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/keepalive.py +0 -0
  655. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/recurring.py +0 -0
  656. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/tasks/registry.py +0 -0
  657. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/__init__.py +0 -0
  658. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/constants.py +0 -0
  659. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/database.py +0 -0
  660. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/models.py +0 -0
  661. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/task_manager.py +0 -0
  662. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/tasks.py +0 -0
  663. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/telemetry/utils.py +0 -0
  664. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trace.py +0 -0
  665. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/transformations/__init__.py +0 -0
  666. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/transformations/constants.py +0 -0
  667. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/transformations/models.py +0 -0
  668. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/transformations/tasks.py +0 -0
  669. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trigger/__init__.py +0 -0
  670. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trigger/catalogue.py +0 -0
  671. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trigger/constants.py +0 -0
  672. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trigger/models.py +0 -0
  673. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trigger/setup.py +0 -0
  674. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/trigger/tasks.py +0 -0
  675. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/types.py +0 -0
  676. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/utils.py +0 -0
  677. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/validators/__init__.py +0 -0
  678. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/validators/events.py +0 -0
  679. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/validators/tasks.py +0 -0
  680. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/visuals.py +0 -0
  681. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/webhook/__init__.py +0 -0
  682. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/webhook/gather.py +0 -0
  683. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/webhook/models.py +0 -0
  684. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/webhook/tasks.py +0 -0
  685. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/webhook/triggers.py +0 -0
  686. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/worker.py +0 -0
  687. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workers/__init__.py +0 -0
  688. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workers/infrahub_async.py +0 -0
  689. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workers/utils.py +0 -0
  690. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workflows/__init__.py +0 -0
  691. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workflows/catalogue.py +0 -0
  692. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workflows/constants.py +0 -0
  693. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workflows/initialization.py +0 -0
  694. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workflows/models.py +0 -0
  695. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/backend/infrahub/workflows/utils.py +0 -0
  696. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/__init__.py +0 -0
  697. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/_importer.py +0 -0
  698. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/analyzer.py +0 -0
  699. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/async_typer.py +0 -0
  700. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/batch.py +0 -0
  701. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/branch.py +0 -0
  702. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/checks.py +0 -0
  703. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/client.py +0 -0
  704. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/config.py +0 -0
  705. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/constants.py +0 -0
  706. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/context.py +0 -0
  707. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/__init__.py +0 -0
  708. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/branch.py +0 -0
  709. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/check.py +0 -0
  710. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/cli.py +0 -0
  711. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/cli_commands.py +0 -0
  712. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/client.py +0 -0
  713. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/config.py +0 -0
  714. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/exceptions.py +0 -0
  715. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/exporter.py +0 -0
  716. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/generator.py +0 -0
  717. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/importer.py +0 -0
  718. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/menu.py +0 -0
  719. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/object.py +0 -0
  720. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/parameters.py +0 -0
  721. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/render.py +0 -0
  722. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/repository.py +0 -0
  723. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/schema.py +0 -0
  724. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/transform.py +0 -0
  725. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/utils.py +0 -0
  726. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/ctl/validate.py +0 -0
  727. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/data.py +0 -0
  728. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/diff.py +0 -0
  729. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/exceptions.py +0 -0
  730. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/generator.py +0 -0
  731. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/graphql.py +0 -0
  732. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/groups.py +0 -0
  733. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/jinja2.py +0 -0
  734. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/__init__.py +0 -0
  735. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/attribute.py +0 -0
  736. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/constants.py +0 -0
  737. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/parsers.py +0 -0
  738. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/property.py +0 -0
  739. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/node/relationship.py +0 -0
  740. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/object_store.py +0 -0
  741. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/operation.py +0 -0
  742. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/playback.py +0 -0
  743. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/protocols.py +0 -0
  744. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/protocols_base.py +0 -0
  745. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/protocols_generator/__init__.py +0 -0
  746. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/protocols_generator/constants.py +0 -0
  747. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/protocols_generator/generator.py +0 -0
  748. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/protocols_generator/template.j2 +0 -0
  749. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/__init__.py +0 -0
  750. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/exceptions.py +0 -0
  751. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/items/__init__.py +0 -0
  752. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/items/base.py +0 -0
  753. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/items/check.py +0 -0
  754. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/items/graphql_query.py +0 -0
  755. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/items/jinja2_transform.py +0 -0
  756. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/items/python_transform.py +0 -0
  757. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/loader.py +0 -0
  758. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/models.py +0 -0
  759. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/plugin.py +0 -0
  760. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/pytest_plugin/utils.py +0 -0
  761. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/queries.py +0 -0
  762. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/query_groups.py +0 -0
  763. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/recorder.py +0 -0
  764. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/repository.py +0 -0
  765. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/schema/__init__.py +0 -0
  766. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/schema/main.py +0 -0
  767. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/schema/repository.py +0 -0
  768. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/spec/__init__.py +0 -0
  769. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/spec/menu.py +0 -0
  770. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/spec/object.py +0 -0
  771. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/store.py +0 -0
  772. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/task/__init__.py +0 -0
  773. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/task/constants.py +0 -0
  774. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/task/exceptions.py +0 -0
  775. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/task/manager.py +0 -0
  776. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/task/models.py +0 -0
  777. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/template/__init__.py +0 -0
  778. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/template/exceptions.py +0 -0
  779. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/template/filters.py +0 -0
  780. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/template/models.py +0 -0
  781. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/testing/__init__.py +0 -0
  782. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/testing/docker.py +0 -0
  783. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/testing/repository.py +0 -0
  784. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/testing/schemas/__init__.py +0 -0
  785. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/testing/schemas/animal.py +0 -0
  786. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/testing/schemas/car_person.py +0 -0
  787. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/timestamp.py +0 -0
  788. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/topological_sort.py +0 -0
  789. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/__init__.py +0 -0
  790. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/constants.py +0 -0
  791. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/exceptions.py +0 -0
  792. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/exporter/__init__.py +0 -0
  793. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/exporter/interface.py +0 -0
  794. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/exporter/json.py +0 -0
  795. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/importer/__init__.py +0 -0
  796. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/importer/interface.py +0 -0
  797. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/importer/json.py +0 -0
  798. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transfer/schema_sorter.py +0 -0
  799. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/transforms.py +0 -0
  800. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/types.py +0 -0
  801. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/utils.py +0 -0
  802. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/uuidt.py +0 -0
  803. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_sdk/infrahub_sdk/yaml.py +0 -0
  804. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/__init__.py +0 -0
  805. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/constants.py +0 -0
  806. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/haproxy.cfg +0 -0
  807. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/helpers.py +0 -0
  808. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/host.py +0 -0
  809. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/measurements.py +0 -0
  810. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/models.py +0 -0
  811. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/performance_test.py +0 -0
  812. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/plugin.py +0 -0
  813. {infrahub_server-1.3.1 → infrahub_server-1.3.3}/python_testcontainers/infrahub_testcontainers/prometheus.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: infrahub-server
3
- Version: 1.3.1
3
+ Version: 1.3.3
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: AGPL-3.0-only
6
6
  Author: OpsMill
@@ -8,7 +8,7 @@ from csv import DictReader, DictWriter
8
8
  from datetime import datetime, timezone
9
9
  from enum import Enum
10
10
  from pathlib import Path
11
- from typing import TYPE_CHECKING, Any
11
+ from typing import TYPE_CHECKING, Any, Sequence
12
12
 
13
13
  import typer
14
14
  import ujson
@@ -38,7 +38,7 @@ from infrahub.core.initialization import (
38
38
  initialization,
39
39
  initialize_registry,
40
40
  )
41
- from infrahub.core.migrations.graph import get_graph_migrations
41
+ from infrahub.core.migrations.graph import get_graph_migrations, get_migration_by_number
42
42
  from infrahub.core.migrations.schema.models import SchemaApplyMigrationData
43
43
  from infrahub.core.migrations.schema.tasks import schema_apply_migrations
44
44
  from infrahub.core.schema import SchemaRoot, core_models, internal_schema
@@ -58,8 +58,15 @@ from infrahub.services.adapters.workflow.local import WorkflowLocalExecution
58
58
  from .constants import ERROR_BADGE, FAILED_BADGE, SUCCESS_BADGE
59
59
  from .patch import patch_app
60
60
 
61
+
62
+ def get_timestamp_string() -> str:
63
+ """Generate a timestamp string in the format YYYYMMDD-HHMMSS."""
64
+ return datetime.now(tz=timezone.utc).strftime("%Y%m%d-%H%M%S")
65
+
66
+
61
67
  if TYPE_CHECKING:
62
68
  from infrahub.cli.context import CliContext
69
+ from infrahub.core.migrations.shared import ArbitraryMigration, GraphMigration, InternalSchemaMigration
63
70
  from infrahub.database import InfrahubDatabase
64
71
  from infrahub.database.index import IndexManagerBase
65
72
 
@@ -154,6 +161,7 @@ async def migrate_cmd(
154
161
  ctx: typer.Context,
155
162
  check: bool = typer.Option(False, help="Check the state of the database without applying the migrations."),
156
163
  config_file: str = typer.Argument("infrahub.toml", envvar="INFRAHUB_CONFIG"),
164
+ migration_number: int | None = typer.Option(None, help="Apply a specific migration by number"),
157
165
  ) -> None:
158
166
  """Check the current format of the internal graph and apply the necessary migrations"""
159
167
  logging.getLogger("infrahub").setLevel(logging.WARNING)
@@ -165,7 +173,7 @@ async def migrate_cmd(
165
173
  context: CliContext = ctx.obj
166
174
  dbdriver = await context.init_db(retry=1)
167
175
 
168
- await migrate_database(db=dbdriver, initialize=True, check=check)
176
+ await migrate_database(db=dbdriver, initialize=True, check=check, migration_number=migration_number)
169
177
 
170
178
  await dbdriver.close()
171
179
 
@@ -287,7 +295,9 @@ async def index(
287
295
  await dbdriver.close()
288
296
 
289
297
 
290
- async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check: bool = False) -> bool:
298
+ async def migrate_database(
299
+ db: InfrahubDatabase, initialize: bool = False, check: bool = False, migration_number: int | str | None = None
300
+ ) -> bool:
291
301
  """Apply the latest migrations to the database, this function will print the status directly in the console.
292
302
 
293
303
  Returns a boolean indicating whether a migration failed or if all migrations succeeded.
@@ -295,6 +305,7 @@ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check
295
305
  Args:
296
306
  db: The database object.
297
307
  check: If True, the function will only check the status of the database and not apply the migrations. Defaults to False.
308
+ migration_number: If provided, the function will only apply the migration with the given number. Defaults to None.
298
309
  """
299
310
  rprint("Checking current state of the Database")
300
311
 
@@ -302,15 +313,28 @@ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check
302
313
  await initialize_registry(db=db)
303
314
 
304
315
  root_node = await get_root_node(db=db)
305
- migrations = await get_graph_migrations(root=root_node)
306
-
307
- if not migrations:
308
- rprint(f"Database up-to-date (v{root_node.graph_version}), no migration to execute.")
309
- return True
316
+ if migration_number:
317
+ migration = get_migration_by_number(migration_number)
318
+ migrations: Sequence[GraphMigration | InternalSchemaMigration | ArbitraryMigration] = [migration]
319
+ if check:
320
+ if root_node.graph_version > migration.minimum_version:
321
+ rprint(
322
+ f"Migration {migration_number} already applied. To apply again, run the command without the --check flag."
323
+ )
324
+ return True
325
+ rprint(
326
+ f"Migration {migration_number} needs to be applied. Run `infrahub db migrate` to apply all outstanding migrations."
327
+ )
328
+ return False
329
+ else:
330
+ migrations = await get_graph_migrations(root=root_node)
331
+ if not migrations:
332
+ rprint(f"Database up-to-date (v{root_node.graph_version}), no migration to execute.")
333
+ return True
310
334
 
311
- rprint(
312
- f"Database needs to be updated (v{root_node.graph_version} -> v{GRAPH_VERSION}), {len(migrations)} migrations pending"
313
- )
335
+ rprint(
336
+ f"Database needs to be updated (v{root_node.graph_version} -> v{GRAPH_VERSION}), {len(migrations)} migrations pending"
337
+ )
314
338
 
315
339
  if check:
316
340
  return True
@@ -529,7 +553,7 @@ WITH n, edges + root_edges AS edges, CASE
529
553
  END AS vertices
530
554
  RETURN vertices, edges
531
555
  """ % {"id_func": db.get_id_function_name()}
532
- timestamp_str = datetime.now(tz=timezone.utc).strftime("%Y%m%d-%H%M%S")
556
+ timestamp_str = get_timestamp_string()
533
557
  export_dir /= Path(f"export-{timestamp_str}")
534
558
  if not export_dir.exists():
535
559
  export_dir.mkdir(parents=True)
@@ -737,3 +761,160 @@ async def load_export(db: InfrahubDatabase, export_dir: Path, query_limit: int =
737
761
  await load_edges(db=db, edge_type=edge_type, edge_dicts=edge_dicts)
738
762
  rprint("Edges loaded")
739
763
  rprint(f"{SUCCESS_BADGE} Export loaded")
764
+
765
+
766
+ @app.command(name="check")
767
+ async def check_cmd(
768
+ ctx: typer.Context,
769
+ output_dir: Path = typer.Option( # noqa: B008
770
+ None, help="Directory to save detailed check results (defaults to infrahub_db_check_YYYYMMDD-HHMMSS)"
771
+ ),
772
+ config_file: str = typer.Option(
773
+ "infrahub.toml", envvar="INFRAHUB_CONFIG", help="Location of the configuration file to use for Infrahub"
774
+ ),
775
+ ) -> None:
776
+ """Run database sanity checks and output the results to the CSV files."""
777
+ logging.getLogger("infrahub").setLevel(logging.WARNING)
778
+ logging.getLogger("neo4j").setLevel(logging.ERROR)
779
+ logging.getLogger("prefect").setLevel(logging.ERROR)
780
+
781
+ config.load_and_exit(config_file_name=config_file)
782
+
783
+ # Create output directory if not specified
784
+ if output_dir is None:
785
+ timestamp_str = get_timestamp_string()
786
+ output_dir = Path(f"infrahub_db_check_{timestamp_str}")
787
+
788
+ if not output_dir.exists():
789
+ output_dir.mkdir(parents=True)
790
+
791
+ context: CliContext = ctx.obj
792
+ dbdriver = await context.init_db(retry=1)
793
+
794
+ await run_database_checks(db=dbdriver, output_dir=output_dir)
795
+
796
+ await dbdriver.close()
797
+
798
+
799
+ async def run_database_checks(db: InfrahubDatabase, output_dir: Path) -> None:
800
+ """Run a series of database health checks and output the results to the terminal.
801
+
802
+ Args:
803
+ db: The database object.
804
+ output_dir: Directory to save detailed check results.
805
+ """
806
+ rprint("Running database health checks...")
807
+
808
+ # Check 1: Duplicate active relationships
809
+ rprint("\n[bold cyan]Check 1: Duplicate Active Relationships[/bold cyan]")
810
+ duplicate_active_rels_query = """
811
+ MATCH (a:Node)-[e1:IS_RELATED {status: "active"}]-(r:Relationship)-[e2:IS_RELATED {branch: e1.branch, status: "active"}]-(b:Node)
812
+ WHERE a.uuid < b.uuid
813
+ AND e1.to IS NULL
814
+ AND e2.to IS NULL
815
+ WITH DISTINCT a.uuid AS a_uuid,
816
+ b.uuid AS b_uuid,
817
+ r.name AS r_name,
818
+ e1.branch AS branch,
819
+ CASE
820
+ WHEN startNode(e1) = a AND startNode(e2) = r THEN "out"
821
+ WHEN startNode(e1) = r AND startNode(e2) = b THEN "in"
822
+ ELSE "bidir"
823
+ END AS direction,
824
+ count(*) AS num_paths,
825
+ collect(DISTINCT a.kind) AS a_kinds,
826
+ collect(DISTINCT b.kind) AS b_kinds
827
+ WHERE num_paths > 1
828
+ RETURN a_uuid, a_kinds, b_uuid, b_kinds, r_name, branch, direction, num_paths
829
+ """
830
+
831
+ results = await db.execute_query(query=duplicate_active_rels_query)
832
+ if results:
833
+ rprint(f"[red]Found {len(results)} duplicate active relationships[/red]")
834
+ # Write detailed results to file
835
+ output_file = output_dir / "duplicate_active_relationships.csv"
836
+ with output_file.open(mode="w", newline="") as f:
837
+ writer = DictWriter(
838
+ f, fieldnames=["a_uuid", "a_kinds", "b_uuid", "b_kinds", "r_name", "branch", "direction", "num_paths"]
839
+ )
840
+ writer.writeheader()
841
+ for result in results:
842
+ writer.writerow(dict(result))
843
+ rprint(f" Detailed results written to: {output_file}")
844
+ else:
845
+ rprint(f"{SUCCESS_BADGE} No duplicate active relationships found")
846
+
847
+ # Check 2: Duplicated relationship nodes
848
+ rprint("\n[bold cyan]Check 2: Duplicated Relationship Nodes[/bold cyan]")
849
+ duplicate_rel_nodes_query = """
850
+ MATCH (r:Relationship)
851
+ WITH r.uuid AS r_uuid, COUNT(*) AS num_rels
852
+ WHERE num_rels > 1
853
+ MATCH (n:Node)-[:IS_RELATED]-(r:Relationship {uuid: r_uuid})
854
+ WITH DISTINCT r_uuid, n.uuid AS n_uuid, n.kind AS n_kind
855
+ WITH r_uuid, collect([n_uuid, n_kind]) AS node_details
856
+ RETURN r_uuid, node_details
857
+ """
858
+
859
+ results = await db.execute_query(query=duplicate_rel_nodes_query)
860
+ if results:
861
+ rprint(f"[red]Found {len(results)} duplicated relationship nodes[/red]")
862
+ # Write detailed results to file
863
+ output_file = output_dir / "duplicated_relationship_nodes.csv"
864
+ with output_file.open(mode="w", newline="") as f:
865
+ writer = DictWriter(f, fieldnames=["r_uuid", "node_details"])
866
+ writer.writeheader()
867
+ for result in results:
868
+ writer.writerow(dict(result))
869
+ rprint(f" Detailed results written to: {output_file}")
870
+ else:
871
+ rprint(f"{SUCCESS_BADGE} No duplicated relationship nodes found")
872
+
873
+ # Check 3: Duplicated edges
874
+ rprint("\n[bold cyan]Check 3: Duplicated Edges[/bold cyan]")
875
+ duplicate_edges_query = """
876
+ MATCH (a)
877
+ CALL (a) {
878
+ MATCH (a)-[e]->(b)
879
+ WHERE elementId(a) < elementId(b)
880
+ WITH DISTINCT a, b, type(e) AS e_type, count(*) AS total_num_edges
881
+ WHERE total_num_edges > 1
882
+ MATCH (a)-[e]->(b)
883
+ WHERE type(e) = e_type
884
+ WITH
885
+ elementId(a) AS a_id,
886
+ labels(a) AS a_labels,
887
+ elementId(b) AS b_id,
888
+ labels(b) AS b_labels,
889
+ type(e) AS e_type,
890
+ e.branch AS branch,
891
+ e.status AS status,
892
+ e.from AS time,
893
+ collect(e) AS edges
894
+ WITH a_id, a_labels, b_id, b_labels, e_type, branch, status, time, size(edges) AS num_edges
895
+ WHERE num_edges > 1
896
+ WITH a_id, a_labels, b_id, b_labels, e_type, branch, status, time, num_edges
897
+ RETURN a_id, a_labels, b_id, b_labels, e_type, branch, status, time, num_edges
898
+ }
899
+ RETURN a_id, a_labels, b_id, b_labels, e_type, branch, status, time, num_edges
900
+ """
901
+
902
+ results = await db.execute_query(query=duplicate_edges_query)
903
+ if results:
904
+ rprint(f"[red]Found {len(results)} sets of duplicated edges[/red]")
905
+ # Write detailed results to file
906
+ output_file = output_dir / "duplicated_edges.csv"
907
+ with output_file.open(mode="w", newline="") as f:
908
+ writer = DictWriter(
909
+ f,
910
+ fieldnames=["a_id", "a_labels", "b_id", "b_labels", "e_type", "branch", "status", "time", "num_edges"],
911
+ )
912
+ writer.writeheader()
913
+ for result in results:
914
+ writer.writerow(dict(result))
915
+ rprint(f" Detailed results written to: {output_file}")
916
+ else:
917
+ rprint(f"{SUCCESS_BADGE} No duplicated edges found")
918
+
919
+ rprint(f"\n{SUCCESS_BADGE} Database health checks completed")
920
+ rprint(f"Detailed results saved to: {output_dir.absolute()}")
@@ -0,0 +1,8 @@
1
+ from infrahub.utils import InfrahubStringEnum
2
+
3
+
4
+ class BranchStatus(InfrahubStringEnum):
5
+ OPEN = "OPEN"
6
+ NEED_REBASE = "NEED_REBASE"
7
+ CLOSED = "CLOSED"
8
+ DELETING = "DELETING"
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import re
4
- from typing import TYPE_CHECKING, Any, Optional, Union
4
+ from typing import TYPE_CHECKING, Any, Optional, Self, Union
5
5
 
6
6
  from pydantic import Field, field_validator
7
7
 
@@ -21,6 +21,8 @@ from infrahub.core.registry import registry
21
21
  from infrahub.core.timestamp import Timestamp
22
22
  from infrahub.exceptions import BranchNotFoundError, InitializationError, ValidationError
23
23
 
24
+ from .enums import BranchStatus
25
+
24
26
  if TYPE_CHECKING:
25
27
  from infrahub.database import InfrahubDatabase
26
28
 
@@ -29,7 +31,7 @@ class Branch(StandardNode):
29
31
  name: str = Field(
30
32
  max_length=250, min_length=3, description="Name of the branch (git ref standard)", validate_default=True
31
33
  )
32
- status: str = "OPEN" # OPEN, CLOSED
34
+ status: BranchStatus = BranchStatus.OPEN
33
35
  description: str = ""
34
36
  origin_branch: str = "main"
35
37
  branched_from: Optional[str] = Field(default=None, validate_default=True)
@@ -131,14 +133,17 @@ class Branch(StandardNode):
131
133
  return True
132
134
 
133
135
  @classmethod
134
- async def get_by_name(cls, name: str, db: InfrahubDatabase) -> Branch:
136
+ async def get_by_name(cls, name: str, db: InfrahubDatabase, ignore_deleting: bool = True) -> Branch:
135
137
  query = """
136
138
  MATCH (n:Branch)
137
139
  WHERE n.name = $name
140
+ AND NOT n.status IN $ignore_statuses
138
141
  RETURN n
139
142
  """
140
143
 
141
- params = {"name": name}
144
+ params: dict[str, Any] = {"name": name}
145
+ if ignore_deleting:
146
+ params["ignore_statuses"] = [BranchStatus.DELETING.value]
142
147
 
143
148
  results = await db.execute_query(query=query, params=params, name="branch_get_by_name", type=QueryType.READ)
144
149
 
@@ -147,6 +152,20 @@ class Branch(StandardNode):
147
152
 
148
153
  return cls.from_db(results[0].values()[0])
149
154
 
155
+ @classmethod
156
+ async def get_list(
157
+ cls,
158
+ db: InfrahubDatabase,
159
+ limit: int = 1000,
160
+ ids: list[str] | None = None,
161
+ name: str | None = None,
162
+ **kwargs: dict[str, Any],
163
+ ) -> list[Self]:
164
+ branches = await super().get_list(db=db, limit=limit, ids=ids, name=name, **kwargs)
165
+ branches = [branch for branch in branches if branch.status != BranchStatus.DELETING]
166
+
167
+ return branches
168
+
150
169
  @classmethod
151
170
  def isinstance(cls, obj: Any) -> bool:
152
171
  return isinstance(obj, cls)
@@ -248,9 +267,13 @@ class Branch(StandardNode):
248
267
  raise ValidationError(f"Unable to delete {self.name} it is the default branch.")
249
268
  if self.is_global:
250
269
  raise ValidationError(f"Unable to delete {self.name} this is an internal branch.")
251
- await super().delete(db=db)
270
+
271
+ self.status = BranchStatus.DELETING
272
+ await self.save(db=db)
273
+
252
274
  query = await DeleteBranchRelationshipsQuery.init(db=db, branch_name=self.name)
253
275
  await query.execute(db=db)
276
+ await super().delete(db=db)
254
277
 
255
278
  def get_query_filter_relationships(
256
279
  self, rel_labels: list, at: Optional[Union[Timestamp, str]] = None, include_outside_parentheses: bool = False
@@ -15,6 +15,7 @@ from infrahub.core.branch import Branch
15
15
  from infrahub.core.changelog.diff import DiffChangelogCollector, MigrationTracker
16
16
  from infrahub.core.constants import MutationAction
17
17
  from infrahub.core.diff.coordinator import DiffCoordinator
18
+ from infrahub.core.diff.diff_locker import DiffLocker
18
19
  from infrahub.core.diff.ipam_diff_parser import IpamDiffParser
19
20
  from infrahub.core.diff.merger.merger import DiffMerger
20
21
  from infrahub.core.diff.model.path import BranchTrackingId, EnrichedDiffRoot, EnrichedDiffRootMetadata
@@ -31,7 +32,7 @@ from infrahub.dependencies.registry import get_component_registry
31
32
  from infrahub.events.branch_action import BranchCreatedEvent, BranchDeletedEvent, BranchMergedEvent, BranchRebasedEvent
32
33
  from infrahub.events.models import EventMeta, InfrahubEvent
33
34
  from infrahub.events.node_action import get_node_event
34
- from infrahub.exceptions import BranchNotFoundError, MergeFailedError, ValidationError
35
+ from infrahub.exceptions import BranchNotFoundError, ValidationError
35
36
  from infrahub.graphql.mutations.models import BranchCreateModel # noqa: TC001
36
37
  from infrahub.services import InfrahubServices # noqa: TC001 needed for prefect flow
37
38
  from infrahub.workflows.catalogue import (
@@ -65,6 +66,7 @@ async def rebase_branch(branch: str, context: InfrahubContext, service: Infrahub
65
66
  diff_merger=diff_merger,
66
67
  diff_repository=diff_repository,
67
68
  source_branch=obj,
69
+ diff_locker=DiffLocker(),
68
70
  service=service,
69
71
  )
70
72
 
@@ -221,14 +223,10 @@ async def merge_branch(
221
223
  diff_merger=diff_merger,
222
224
  diff_repository=diff_repository,
223
225
  source_branch=obj,
226
+ diff_locker=DiffLocker(),
224
227
  service=service,
225
228
  )
226
- try:
227
- branch_diff = await merger.merge()
228
- except Exception as exc:
229
- log.exception("Merge failed, beginning rollback")
230
- await merger.rollback()
231
- raise MergeFailedError(branch_name=branch) from exc
229
+ branch_diff = await merger.merge()
232
230
  await merger.update_schema()
233
231
 
234
232
  changelog_collector = DiffChangelogCollector(diff=branch_diff, branch=obj, db=db)
@@ -181,8 +181,11 @@ class DiffCalculator:
181
181
  log.info("Diff property-level calculation queries for branch complete")
182
182
 
183
183
  if base_branch.name != diff_branch.name:
184
- current_node_field_specifiers = diff_parser.get_current_node_field_specifiers()
185
184
  new_node_field_specifiers = diff_parser.get_new_node_field_specifiers()
185
+ current_node_field_specifiers = None
186
+ if previous_node_specifiers is not None:
187
+ current_node_field_specifiers = previous_node_specifiers - new_node_field_specifiers
188
+
186
189
  base_calculation_request = DiffCalculationRequest(
187
190
  base_branch=base_branch,
188
191
  diff_branch=base_branch,
@@ -6,8 +6,7 @@ from uuid import uuid4
6
6
 
7
7
  from prefect import flow
8
8
 
9
- from infrahub import lock
10
- from infrahub.core.branch import Branch # noqa: TC001
9
+ from infrahub.core.branch import Branch
11
10
  from infrahub.core.timestamp import Timestamp
12
11
  from infrahub.exceptions import ValidationError
13
12
  from infrahub.log import get_logger
@@ -26,12 +25,14 @@ from .model.path import (
26
25
 
27
26
  if TYPE_CHECKING:
28
27
  from infrahub.core.node import Node
28
+ from infrahub.database import InfrahubDatabase
29
29
 
30
30
  from .calculator import DiffCalculator
31
31
  from .combiner import DiffCombiner
32
32
  from .conflict_transferer import DiffConflictTransferer
33
33
  from .conflicts_enricher import ConflictsEnricher
34
34
  from .data_check_synchronizer import DiffDataCheckSynchronizer
35
+ from .diff_locker import DiffLocker
35
36
  from .enricher.aggregated import AggregatedDiffEnricher
36
37
  from .enricher.labels import DiffLabelsEnricher
37
38
  from .repository.repository import DiffRepository
@@ -59,10 +60,9 @@ class EnrichedDiffRequest:
59
60
 
60
61
 
61
62
  class DiffCoordinator:
62
- lock_namespace = "diff-update"
63
-
64
63
  def __init__(
65
64
  self,
65
+ db: InfrahubDatabase,
66
66
  diff_repo: DiffRepository,
67
67
  diff_calculator: DiffCalculator,
68
68
  diff_enricher: AggregatedDiffEnricher,
@@ -71,7 +71,9 @@ class DiffCoordinator:
71
71
  labels_enricher: DiffLabelsEnricher,
72
72
  data_check_synchronizer: DiffDataCheckSynchronizer,
73
73
  conflict_transferer: DiffConflictTransferer,
74
+ diff_locker: DiffLocker,
74
75
  ) -> None:
76
+ self.db = db
75
77
  self.diff_repo = diff_repo
76
78
  self.diff_calculator = diff_calculator
77
79
  self.diff_enricher = diff_enricher
@@ -80,7 +82,7 @@ class DiffCoordinator:
80
82
  self.labels_enricher = labels_enricher
81
83
  self.data_check_synchronizer = data_check_synchronizer
82
84
  self.conflict_transferer = conflict_transferer
83
- self.lock_registry = lock.registry
85
+ self.diff_locker = diff_locker
84
86
 
85
87
  async def run_update(
86
88
  self,
@@ -113,37 +115,35 @@ class DiffCoordinator:
113
115
  name=name,
114
116
  )
115
117
 
116
- def _get_lock_name(self, base_branch_name: str, diff_branch_name: str, is_incremental: bool) -> str:
117
- lock_name = f"{base_branch_name}__{diff_branch_name}"
118
- if is_incremental:
119
- lock_name += "__incremental"
120
- return lock_name
121
-
122
118
  async def update_branch_diff(self, base_branch: Branch, diff_branch: Branch) -> EnrichedDiffRootMetadata:
119
+ tracking_id = BranchTrackingId(name=diff_branch.name)
123
120
  log.info(f"Received request to update branch diff for {base_branch.name} - {diff_branch.name}")
124
- incremental_lock_name = self._get_lock_name(
125
- base_branch_name=base_branch.name, diff_branch_name=diff_branch.name, is_incremental=True
126
- )
127
- existing_incremental_lock = self.lock_registry.get_existing(
128
- name=incremental_lock_name, namespace=self.lock_namespace
121
+ existing_incremental_lock = self.diff_locker.get_existing_lock(
122
+ target_branch_name=base_branch.name, source_branch_name=diff_branch.name, is_incremental=True
129
123
  )
130
124
  if existing_incremental_lock and await existing_incremental_lock.locked():
131
125
  log.info(f"Branch diff update for {base_branch.name} - {diff_branch.name} already in progress")
132
- async with self.lock_registry.get(name=incremental_lock_name, namespace=self.lock_namespace):
126
+ async with self.diff_locker.acquire_lock(
127
+ target_branch_name=base_branch.name, source_branch_name=diff_branch.name, is_incremental=True
128
+ ):
133
129
  log.info(f"Existing branch diff update for {base_branch.name} - {diff_branch.name} complete")
134
- return await self.diff_repo.get_one(
135
- tracking_id=BranchTrackingId(name=diff_branch.name), diff_branch_name=diff_branch.name
136
- )
137
- general_lock_name = self._get_lock_name(
138
- base_branch_name=base_branch.name, diff_branch_name=diff_branch.name, is_incremental=False
139
- )
130
+ return await self.diff_repo.get_one(tracking_id=tracking_id, diff_branch_name=diff_branch.name)
140
131
  from_time = Timestamp(diff_branch.get_branched_from())
141
132
  to_time = Timestamp()
142
- tracking_id = BranchTrackingId(name=diff_branch.name)
143
133
  async with (
144
- self.lock_registry.get(name=general_lock_name, namespace=self.lock_namespace),
145
- self.lock_registry.get(name=incremental_lock_name, namespace=self.lock_namespace),
134
+ self.diff_locker.acquire_lock(
135
+ target_branch_name=base_branch.name, source_branch_name=diff_branch.name, is_incremental=True
136
+ ),
137
+ self.diff_locker.acquire_lock(
138
+ target_branch_name=base_branch.name, source_branch_name=diff_branch.name, is_incremental=False
139
+ ),
146
140
  ):
141
+ refreshed_branch = await Branch.get_by_name(db=self.db, name=diff_branch.name)
142
+ if refreshed_branch.get_branched_from() != diff_branch.get_branched_from():
143
+ log.info(
144
+ f"Branch {diff_branch.name} was merged or rebased while waiting for lock, returning latest diff"
145
+ )
146
+ return await self.diff_repo.get_one(tracking_id=tracking_id, diff_branch_name=diff_branch.name)
147
147
  log.info(f"Acquired lock to run branch diff update for {base_branch.name} - {diff_branch.name}")
148
148
  enriched_diffs, node_identifiers_to_drop = await self._update_diffs(
149
149
  base_branch=base_branch,
@@ -169,10 +169,9 @@ class DiffCoordinator:
169
169
  name: str,
170
170
  ) -> EnrichedDiffRootMetadata:
171
171
  tracking_id = NameTrackingId(name=name)
172
- general_lock_name = self._get_lock_name(
173
- base_branch_name=base_branch.name, diff_branch_name=diff_branch.name, is_incremental=False
174
- )
175
- async with self.lock_registry.get(name=general_lock_name, namespace=self.lock_namespace):
172
+ async with self.diff_locker.acquire_lock(
173
+ target_branch_name=base_branch.name, source_branch_name=diff_branch.name, is_incremental=False
174
+ ):
176
175
  log.info(f"Acquired lock to run arbitrary diff update for {base_branch.name} - {diff_branch.name}")
177
176
  enriched_diffs, node_identifiers_to_drop = await self._update_diffs(
178
177
  base_branch=base_branch,
@@ -196,10 +195,9 @@ class DiffCoordinator:
196
195
  diff_branch: Branch,
197
196
  diff_id: str,
198
197
  ) -> EnrichedDiffRoot:
199
- general_lock_name = self._get_lock_name(
200
- base_branch_name=base_branch.name, diff_branch_name=diff_branch.name, is_incremental=False
201
- )
202
- async with self.lock_registry.get(name=general_lock_name, namespace=self.lock_namespace):
198
+ async with self.diff_locker.acquire_lock(
199
+ target_branch_name=base_branch.name, source_branch_name=diff_branch.name, is_incremental=False
200
+ ):
203
201
  log.info(f"Acquired lock to recalculate diff for {base_branch.name} - {diff_branch.name}")
204
202
  current_branch_diff = await self.diff_repo.get_one(diff_branch_name=diff_branch.name, diff_id=diff_id)
205
203
  current_base_diff = await self.diff_repo.get_one(
@@ -0,0 +1,26 @@
1
+ from infrahub import lock
2
+
3
+
4
+ class DiffLocker:
5
+ lock_namespace = "diff-update"
6
+
7
+ def __init__(self) -> None:
8
+ self.lock_registry = lock.registry
9
+
10
+ def get_lock_name(self, base_branch_name: str, diff_branch_name: str, is_incremental: bool) -> str:
11
+ lock_name = f"{base_branch_name}__{diff_branch_name}"
12
+ if is_incremental:
13
+ lock_name += "__incremental"
14
+ return lock_name
15
+
16
+ def get_existing_lock(
17
+ self, target_branch_name: str, source_branch_name: str, is_incremental: bool = False
18
+ ) -> lock.InfrahubLock | None:
19
+ name = self.get_lock_name(target_branch_name, source_branch_name, is_incremental)
20
+ return self.lock_registry.get_existing(name=name, namespace=self.lock_namespace)
21
+
22
+ def acquire_lock(
23
+ self, target_branch_name: str, source_branch_name: str, is_incremental: bool = False
24
+ ) -> lock.InfrahubLock:
25
+ name = self.get_lock_name(target_branch_name, source_branch_name, is_incremental)
26
+ return self.lock_registry.get(name=name, namespace=self.lock_namespace)