infrahub-server 1.3.0b6__tar.gz → 1.3.1__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 (808) hide show
  1. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/PKG-INFO +1 -1
  2. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/db.py +7 -5
  3. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/upgrade.py +6 -1
  4. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/attribute.py +5 -0
  5. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/coordinator.py +8 -1
  6. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/field_specifiers.py +1 -1
  7. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/merge.py +2 -2
  8. infrahub_server-1.3.1/backend/infrahub/core/graph/__init__.py +1 -0
  9. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/__init__.py +2 -0
  10. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m012_convert_account_generic.py +1 -1
  11. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +2 -2
  12. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m029_duplicates_cleanup.py +2 -2
  13. infrahub_server-1.3.1/backend/infrahub/core/migrations/graph/m031_check_number_attributes.py +102 -0
  14. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/attribute_rename.py +1 -1
  15. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/__init__.py +5 -1
  16. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/delete.py +3 -3
  17. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/attribute_parameters.py +12 -5
  18. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/basenode_schema.py +107 -1
  19. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/schema_branch.py +17 -5
  20. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/min_max.py +7 -2
  21. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/app.py +5 -1
  22. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/nats.py +5 -1
  23. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/scheduler.py +5 -1
  24. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/pyproject.toml +1 -3
  25. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/__init__.py +2 -0
  26. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/node.py +21 -2
  27. infrahub_server-1.3.0b6/backend/infrahub/core/graph/__init__.py +0 -1
  28. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/LICENSE.txt +0 -0
  29. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/README.md +0 -0
  30. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/__init__.py +0 -0
  31. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/__init__.py +0 -0
  32. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/constants.py +0 -0
  33. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/gather.py +0 -0
  34. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/models.py +0 -0
  35. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/parsers.py +0 -0
  36. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/schema.py +0 -0
  37. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/tasks.py +0 -0
  38. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/triggers.py +0 -0
  39. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/__init__.py +0 -0
  40. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/artifact.py +0 -0
  41. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/auth.py +0 -0
  42. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/dependencies.py +0 -0
  43. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/diff/__init__.py +0 -0
  44. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/diff/diff.py +0 -0
  45. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/diff/validation_models.py +0 -0
  46. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/exception_handlers.py +0 -0
  47. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/exceptions.py +0 -0
  48. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/file.py +0 -0
  49. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/internal.py +0 -0
  50. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/menu.py +0 -0
  51. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/oauth2.py +0 -0
  52. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/oidc.py +0 -0
  53. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/query.py +0 -0
  54. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/schema.py +0 -0
  55. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/static/redoc.standalone.js +0 -0
  56. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/static/swagger-ui-bundle.js +0 -0
  57. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/static/swagger-ui.css +0 -0
  58. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/storage.py +0 -0
  59. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/transformation.py +0 -0
  60. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/artifacts/__init__.py +0 -0
  61. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/artifacts/models.py +0 -0
  62. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/artifacts/tasks.py +0 -0
  63. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/auth.py +0 -0
  64. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/branch/__init__.py +0 -0
  65. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/branch/tasks.py +0 -0
  66. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/branch/triggers.py +0 -0
  67. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/__init__.py +0 -0
  68. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/constants.py +0 -0
  69. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/context.py +0 -0
  70. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/events.py +0 -0
  71. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/git_agent.py +0 -0
  72. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/patch.py +0 -0
  73. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/server.py +0 -0
  74. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/tasks.py +0 -0
  75. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/components.py +0 -0
  76. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/__init__.py +0 -0
  77. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/constants.py +0 -0
  78. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/gather.py +0 -0
  79. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/models.py +0 -0
  80. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/tasks.py +0 -0
  81. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/triggers.py +0 -0
  82. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/config.py +0 -0
  83. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/constants/__init__.py +0 -0
  84. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/constants/database.py +0 -0
  85. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/context.py +0 -0
  86. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/__init__.py +0 -0
  87. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/account.py +0 -0
  88. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/branch/__init__.py +0 -0
  89. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/branch/models.py +0 -0
  90. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/branch/tasks.py +0 -0
  91. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/changelog/__init__.py +0 -0
  92. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/changelog/diff.py +0 -0
  93. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/changelog/models.py +0 -0
  94. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/__init__.py +0 -0
  95. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/database.py +0 -0
  96. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/infrahubkind.py +0 -0
  97. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/relationship_label.py +0 -0
  98. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/schema.py +0 -0
  99. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constraint/__init__.py +0 -0
  100. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constraint/node/__init__.py +0 -0
  101. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constraint/node/runner.py +0 -0
  102. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/convert_object_type/__init__.py +0 -0
  103. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/convert_object_type/conversion.py +0 -0
  104. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/convert_object_type/schema_mapping.py +0 -0
  105. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/__init__.py +0 -0
  106. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/artifacts/__init__.py +0 -0
  107. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/artifacts/calculator.py +0 -0
  108. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/branch_differ.py +0 -0
  109. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/calculator.py +0 -0
  110. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/combiner.py +0 -0
  111. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/conflict_transferer.py +0 -0
  112. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/conflicts_enricher.py +0 -0
  113. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/conflicts_extractor.py +0 -0
  114. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/data_check_synchronizer.py +0 -0
  115. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/__init__.py +0 -0
  116. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/aggregated.py +0 -0
  117. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/cardinality_one.py +0 -0
  118. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/hierarchy.py +0 -0
  119. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/interface.py +0 -0
  120. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/labels.py +0 -0
  121. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/path_identifier.py +0 -0
  122. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/summary_counts.py +0 -0
  123. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/exceptions.py +0 -0
  124. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/ipam_diff_parser.py +0 -0
  125. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/__init__.py +0 -0
  126. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/merger.py +0 -0
  127. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/model.py +0 -0
  128. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/serializer.py +0 -0
  129. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/__init__.py +0 -0
  130. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/diff.py +0 -0
  131. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/field_specifiers_map.py +0 -0
  132. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/path.py +0 -0
  133. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/models.py +0 -0
  134. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/parent_node_adder.py +0 -0
  135. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/payload_builder.py +0 -0
  136. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/__init__.py +0 -0
  137. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/all_conflicts.py +0 -0
  138. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/artifact.py +0 -0
  139. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/delete_query.py +0 -0
  140. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/diff_get.py +0 -0
  141. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/diff_summary.py +0 -0
  142. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/drop_nodes.py +0 -0
  143. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/field_summary.py +0 -0
  144. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/filters.py +0 -0
  145. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/get_conflict_query.py +0 -0
  146. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/has_conflicts_query.py +0 -0
  147. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/merge_tracking_id.py +0 -0
  148. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/roots_metadata.py +0 -0
  149. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/save.py +0 -0
  150. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/summary_counts_enricher.py +0 -0
  151. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/time_range_query.py +0 -0
  152. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/update_conflict_query.py +0 -0
  153. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query_parser.py +0 -0
  154. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/repository/__init__.py +0 -0
  155. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/repository/deserializer.py +0 -0
  156. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/repository/repository.py +0 -0
  157. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/tasks.py +0 -0
  158. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/enums.py +0 -0
  159. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/graph/constraints.py +0 -0
  160. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/graph/index.py +0 -0
  161. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/graph/schema.py +0 -0
  162. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/initialization.py +0 -0
  163. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/integrity/__init__.py +0 -0
  164. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/integrity/object_conflict/__init__.py +0 -0
  165. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/integrity/object_conflict/conflict_recorder.py +0 -0
  166. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/__init__.py +0 -0
  167. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/constants.py +0 -0
  168. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/kinds_getter.py +0 -0
  169. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/model.py +0 -0
  170. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/reconciler.py +0 -0
  171. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/size.py +0 -0
  172. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/tasks.py +0 -0
  173. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/utilization.py +0 -0
  174. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/manager.py +0 -0
  175. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/merge.py +0 -0
  176. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/__init__.py +0 -0
  177. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m001_add_version_to_graph.py +0 -0
  178. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m002_attribute_is_default.py +0 -0
  179. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m003_relationship_parent_optional.py +0 -0
  180. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m004_add_attr_documentation.py +0 -0
  181. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m005_add_rel_read_only.py +0 -0
  182. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m006_add_rel_on_delete.py +0 -0
  183. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m007_add_rel_allow_override.py +0 -0
  184. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m008_add_human_friendly_id.py +0 -0
  185. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m009_add_generate_profile_attr.py +0 -0
  186. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m010_add_generate_profile_attr_generic.py +0 -0
  187. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m011_remove_profile_relationship_schema.py +0 -0
  188. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m013_convert_git_password_credential.py +0 -0
  189. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m014_remove_index_attr_value.py +0 -0
  190. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m015_diff_format_update.py +0 -0
  191. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py +0 -0
  192. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m017_add_core_profile.py +0 -0
  193. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m018_uniqueness_nulls.py +0 -0
  194. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m019_restore_rels_to_time.py +0 -0
  195. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m020_duplicate_edges.py +0 -0
  196. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +0 -0
  197. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m022_add_generate_template_attr.py +0 -0
  198. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m024_missing_hierarchy_backfill.py +0 -0
  199. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m025_uniqueness_nulls.py +0 -0
  200. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m026_0000_prefix_fix.py +0 -0
  201. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m027_delete_isolated_nodes.py +0 -0
  202. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m028_delete_diffs.py +0 -0
  203. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m030_illegal_edges.py +0 -0
  204. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/__init__.py +0 -0
  205. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/attribute_add.py +0 -0
  206. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/delete_element_in_schema.py +0 -0
  207. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/node_duplicate.py +0 -0
  208. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/relationship_duplicate.py +0 -0
  209. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/schema_attribute_update.py +0 -0
  210. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/__init__.py +0 -0
  211. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/attribute_name_update.py +0 -0
  212. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/models.py +0 -0
  213. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_attribute_add.py +0 -0
  214. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_attribute_remove.py +0 -0
  215. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_kind_update.py +0 -0
  216. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_remove.py +0 -0
  217. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/placeholder_dummy.py +0 -0
  218. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/tasks.py +0 -0
  219. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/shared.py +0 -0
  220. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/models.py +0 -0
  221. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/base.py +0 -0
  222. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/__init__.py +0 -0
  223. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/attribute_uniqueness.py +0 -0
  224. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/grouped_uniqueness.py +0 -0
  225. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/interface.py +0 -0
  226. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/create.py +0 -0
  227. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/delete_validator.py +0 -0
  228. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/ipam.py +0 -0
  229. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/permissions.py +0 -0
  230. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/__init__.py +0 -0
  231. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/ip_address_pool.py +0 -0
  232. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/ip_prefix_pool.py +0 -0
  233. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/number_pool.py +0 -0
  234. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/standard.py +0 -0
  235. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/path.py +0 -0
  236. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/property.py +0 -0
  237. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/protocols.py +0 -0
  238. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/protocols_base.py +0 -0
  239. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/__init__.py +0 -0
  240. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/attribute.py +0 -0
  241. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/branch.py +0 -0
  242. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/diff.py +0 -0
  243. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/ipam.py +0 -0
  244. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/node.py +0 -0
  245. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/relationship.py +0 -0
  246. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/resource_manager.py +0 -0
  247. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/standard_node.py +0 -0
  248. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/subquery.py +0 -0
  249. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/task.py +0 -0
  250. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/task_log.py +0 -0
  251. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/utils.py +0 -0
  252. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/registry.py +0 -0
  253. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/__init__.py +0 -0
  254. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/__init__.py +0 -0
  255. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/count.py +0 -0
  256. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/interface.py +0 -0
  257. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/peer_kind.py +0 -0
  258. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/peer_parent.py +0 -0
  259. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/peer_relatives.py +0 -0
  260. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/profiles_kind.py +0 -0
  261. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/model.py +0 -0
  262. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/root.py +0 -0
  263. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/__init__.py +0 -0
  264. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/attribute_schema.py +0 -0
  265. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/computed_attribute.py +0 -0
  266. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/constants.py +0 -0
  267. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/__init__.py +0 -0
  268. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/__init__.py +0 -0
  269. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/account.py +0 -0
  270. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/artifact.py +0 -0
  271. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/builtin.py +0 -0
  272. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/check.py +0 -0
  273. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/core.py +0 -0
  274. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/generator.py +0 -0
  275. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/graphql_query.py +0 -0
  276. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/group.py +0 -0
  277. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/ipam.py +0 -0
  278. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/lineage.py +0 -0
  279. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/menu.py +0 -0
  280. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/permission.py +0 -0
  281. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/profile.py +0 -0
  282. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/propose_change.py +0 -0
  283. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/propose_change_comment.py +0 -0
  284. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/propose_change_validator.py +0 -0
  285. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/repository.py +0 -0
  286. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/resource_pool.py +0 -0
  287. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/template.py +0 -0
  288. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/transform.py +0 -0
  289. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/webhook.py +0 -0
  290. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/deprecated.py +0 -0
  291. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/internal.py +0 -0
  292. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/dropdown.py +0 -0
  293. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/__init__.py +0 -0
  294. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/attribute_schema.py +0 -0
  295. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/base_node_schema.py +0 -0
  296. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/genericnode_schema.py +0 -0
  297. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/node_schema.py +0 -0
  298. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/relationship_schema.py +0 -0
  299. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generic_schema.py +0 -0
  300. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/manager.py +0 -0
  301. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/node_schema.py +0 -0
  302. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/profile_schema.py +0 -0
  303. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/relationship_schema.py +0 -0
  304. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/schema_branch_computed.py +0 -0
  305. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/template_schema.py +0 -0
  306. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/__init__.py +0 -0
  307. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/task.py +0 -0
  308. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/task_log.py +0 -0
  309. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/user_task.py +0 -0
  310. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/timestamp.py +0 -0
  311. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/utils.py +0 -0
  312. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/__init__.py +0 -0
  313. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/aggregated_checker.py +0 -0
  314. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/__init__.py +0 -0
  315. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/choices.py +0 -0
  316. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/enum.py +0 -0
  317. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/kind.py +0 -0
  318. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/length.py +0 -0
  319. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/number_pool.py +0 -0
  320. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/optional.py +0 -0
  321. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/regex.py +0 -0
  322. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/unique.py +0 -0
  323. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/checks_runner.py +0 -0
  324. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/determiner.py +0 -0
  325. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/enum.py +0 -0
  326. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/interface.py +0 -0
  327. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/model.py +0 -0
  328. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/models/__init__.py +0 -0
  329. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/models/validate_migration.py +0 -0
  330. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/models/violation.py +0 -0
  331. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/__init__.py +0 -0
  332. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/attribute.py +0 -0
  333. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/generate_profile.py +0 -0
  334. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/hierarchy.py +0 -0
  335. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/inherit_from.py +0 -0
  336. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/relationship.py +0 -0
  337. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/query.py +0 -0
  338. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/__init__.py +0 -0
  339. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/count.py +0 -0
  340. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/optional.py +0 -0
  341. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/peer.py +0 -0
  342. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/shared.py +0 -0
  343. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/tasks.py +0 -0
  344. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/__init__.py +0 -0
  345. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/checker.py +0 -0
  346. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/index.py +0 -0
  347. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/model.py +0 -0
  348. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/query.py +0 -0
  349. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/__init__.py +0 -0
  350. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/index.py +0 -0
  351. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/memgraph.py +0 -0
  352. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/metrics.py +0 -0
  353. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/neo4j.py +0 -0
  354. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/validation.py +0 -0
  355. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/__init__.py +0 -0
  356. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/__init__.py +0 -0
  357. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/grouped/__init__.py +0 -0
  358. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -0
  359. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/node/__init__.py +0 -0
  360. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/node/grouped_uniqueness.py +0 -0
  361. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/node/uniqueness.py +0 -0
  362. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/__init__.py +0 -0
  363. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/count.py +0 -0
  364. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_kind.py +0 -0
  365. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_parent.py +0 -0
  366. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_relatives.py +0 -0
  367. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/profiles_kind.py +0 -0
  368. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/__init__.py +0 -0
  369. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/aggregated.py +0 -0
  370. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_choices.py +0 -0
  371. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_enum.py +0 -0
  372. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_kind.py +0 -0
  373. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_length.py +0 -0
  374. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_optional.py +0 -0
  375. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_regex.py +0 -0
  376. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_uniqueness.py +0 -0
  377. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/generate_profile.py +0 -0
  378. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/inherit_from.py +0 -0
  379. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/node_attribute.py +0 -0
  380. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/node_relationship.py +0 -0
  381. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/relationship_count.py +0 -0
  382. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/relationship_optional.py +0 -0
  383. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/relationship_peer.py +0 -0
  384. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/uniqueness.py +0 -0
  385. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/__init__.py +0 -0
  386. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/calculator.py +0 -0
  387. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/combiner.py +0 -0
  388. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/conflict_transferer.py +0 -0
  389. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/conflicts_enricher.py +0 -0
  390. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/conflicts_extractor.py +0 -0
  391. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/coordinator.py +0 -0
  392. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/data_check_conflict_recorder.py +0 -0
  393. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/data_check_synchronizer.py +0 -0
  394. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/deserializer.py +0 -0
  395. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/diff_merger.py +0 -0
  396. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/__init__.py +0 -0
  397. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/aggregated.py +0 -0
  398. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/cardinality_one.py +0 -0
  399. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/hierarchy.py +0 -0
  400. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/labels.py +0 -0
  401. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/path_identifier.py +0 -0
  402. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/summary_counts.py +0 -0
  403. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/ipam_diff_parser.py +0 -0
  404. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/parent_node_adder.py +0 -0
  405. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/repository.py +0 -0
  406. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/ip/__init__.py +0 -0
  407. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/ip/kinds_getter.py +0 -0
  408. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/node/__init__.py +0 -0
  409. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/node/delete_validator.py +0 -0
  410. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/component/__init__.py +0 -0
  411. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/component/exceptions.py +0 -0
  412. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/component/registry.py +0 -0
  413. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/interface.py +0 -0
  414. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/registry.py +0 -0
  415. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/__init__.py +0 -0
  416. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/artifact_action.py +0 -0
  417. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/branch_action.py +0 -0
  418. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/constants.py +0 -0
  419. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/generator.py +0 -0
  420. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/group_action.py +0 -0
  421. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/models.py +0 -0
  422. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/node_action.py +0 -0
  423. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/repository_action.py +0 -0
  424. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/schema_action.py +0 -0
  425. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/utils.py +0 -0
  426. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/validator_action.py +0 -0
  427. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/exceptions.py +0 -0
  428. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/generators/__init__.py +0 -0
  429. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/generators/models.py +0 -0
  430. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/generators/tasks.py +0 -0
  431. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/__init__.py +0 -0
  432. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/base.py +0 -0
  433. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/constants.py +0 -0
  434. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/directory.py +0 -0
  435. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/integrator.py +0 -0
  436. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/models.py +0 -0
  437. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/repository.py +0 -0
  438. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/tasks.py +0 -0
  439. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/utils.py +0 -0
  440. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/worktree.py +0 -0
  441. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git_credential/__init__.py +0 -0
  442. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git_credential/askpass.py +0 -0
  443. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git_credential/helper.py +0 -0
  444. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/__init__.py +0 -0
  445. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/analyzer.py +0 -0
  446. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/api/__init__.py +0 -0
  447. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/api/dependencies.py +0 -0
  448. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/api/endpoints.py +0 -0
  449. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/__init__.py +0 -0
  450. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/__init__.py +0 -0
  451. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/anonymous_checker.py +0 -0
  452. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/checker.py +0 -0
  453. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/default_branch_checker.py +0 -0
  454. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/interface.py +0 -0
  455. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/merge_operation_checker.py +0 -0
  456. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/object_permission_checker.py +0 -0
  457. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/super_admin_checker.py +0 -0
  458. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/constants.py +0 -0
  459. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/context.py +0 -0
  460. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/directives.py +0 -0
  461. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/enums.py +0 -0
  462. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/initialization.py +0 -0
  463. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/__init__.py +0 -0
  464. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/node.py +0 -0
  465. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/peers.py +0 -0
  466. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/shared.py +0 -0
  467. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/manager.py +0 -0
  468. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/metrics.py +0 -0
  469. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/models.py +0 -0
  470. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/__init__.py +0 -0
  471. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/account.py +0 -0
  472. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/action.py +0 -0
  473. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/artifact_definition.py +0 -0
  474. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/attribute.py +0 -0
  475. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/branch.py +0 -0
  476. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/computed_attribute.py +0 -0
  477. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/convert_object_type.py +0 -0
  478. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/diff.py +0 -0
  479. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/diff_conflict.py +0 -0
  480. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/generator.py +0 -0
  481. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/graphql_query.py +0 -0
  482. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/ipam.py +0 -0
  483. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/main.py +0 -0
  484. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/menu.py +0 -0
  485. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/models.py +0 -0
  486. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/__init__.py +0 -0
  487. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/by_default_filter.py +0 -0
  488. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/by_hfid.py +0 -0
  489. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/by_id.py +0 -0
  490. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/interface.py +0 -0
  491. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/proposed_change.py +0 -0
  492. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/relationship.py +0 -0
  493. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/repository.py +0 -0
  494. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/resource_manager.py +0 -0
  495. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/schema.py +0 -0
  496. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/tasks.py +0 -0
  497. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/webhook.py +0 -0
  498. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/parser.py +0 -0
  499. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/permissions.py +0 -0
  500. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/__init__.py +0 -0
  501. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/account.py +0 -0
  502. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/branch.py +0 -0
  503. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/convert_object_type_mapping.py +0 -0
  504. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/diff/__init__.py +0 -0
  505. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/diff/tree.py +0 -0
  506. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/event.py +0 -0
  507. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/internal.py +0 -0
  508. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/ipam.py +0 -0
  509. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/relationship.py +0 -0
  510. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/resource_manager.py +0 -0
  511. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/search.py +0 -0
  512. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/status.py +0 -0
  513. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/task.py +0 -0
  514. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/__init__.py +0 -0
  515. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/many_relationship.py +0 -0
  516. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/resolver.py +0 -0
  517. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/single_relationship.py +0 -0
  518. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/schema.py +0 -0
  519. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/subscription/__init__.py +0 -0
  520. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/subscription/events.py +0 -0
  521. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/subscription/graphql_query.py +0 -0
  522. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/__init__.py +0 -0
  523. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/attribute.py +0 -0
  524. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/branch.py +0 -0
  525. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/common.py +0 -0
  526. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/context.py +0 -0
  527. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/enums.py +0 -0
  528. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/event.py +0 -0
  529. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/interface.py +0 -0
  530. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/node.py +0 -0
  531. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/permission.py +0 -0
  532. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/relationship.py +0 -0
  533. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/standard_node.py +0 -0
  534. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/task.py +0 -0
  535. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/task_log.py +0 -0
  536. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/utils.py +0 -0
  537. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/__init__.py +0 -0
  538. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/ancestors.py +0 -0
  539. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/models.py +0 -0
  540. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/parsers.py +0 -0
  541. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/tasks.py +0 -0
  542. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/helpers.py +0 -0
  543. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/lock.py +0 -0
  544. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/log.py +0 -0
  545. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/__init__.py +0 -0
  546. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/constants.py +0 -0
  547. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/generator.py +0 -0
  548. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/menu.py +0 -0
  549. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/models.py +0 -0
  550. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/repository.py +0 -0
  551. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/utils.py +0 -0
  552. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/__init__.py +0 -0
  553. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/__init__.py +0 -0
  554. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/git_file_get.py +0 -0
  555. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/git_repository_connectivity.py +0 -0
  556. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/refresh_git_fetch.py +0 -0
  557. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/refresh_registry_branches.py +0 -0
  558. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/refresh_registry_rebasedbranch.py +0 -0
  559. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/send_echo_request.py +0 -0
  560. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/__init__.py +0 -0
  561. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/git/__init__.py +0 -0
  562. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/git/file.py +0 -0
  563. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/git/repository.py +0 -0
  564. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/refresh/__init__.py +0 -0
  565. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/refresh/registry.py +0 -0
  566. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/send/__init__.py +0 -0
  567. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/send/echo.py +0 -0
  568. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/types.py +0 -0
  569. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/middleware.py +0 -0
  570. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/models.py +0 -0
  571. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/__init__.py +0 -0
  572. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/constants.py +0 -0
  573. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/edge_adder.py +0 -0
  574. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/edge_deleter.py +0 -0
  575. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/edge_updater.py +0 -0
  576. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/models.py +0 -0
  577. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/plan_reader.py +0 -0
  578. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/plan_writer.py +0 -0
  579. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/queries/__init__.py +0 -0
  580. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/queries/base.py +0 -0
  581. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/queries/delete_duplicated_edges.py +0 -0
  582. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/runner.py +0 -0
  583. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/vertex_adder.py +0 -0
  584. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/vertex_deleter.py +0 -0
  585. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/vertex_updater.py +0 -0
  586. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/__init__.py +0 -0
  587. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/backend.py +0 -0
  588. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/constants.py +0 -0
  589. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/globals.py +0 -0
  590. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/local_backend.py +0 -0
  591. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/manager.py +0 -0
  592. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/report.py +0 -0
  593. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/types.py +0 -0
  594. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/__init__.py +0 -0
  595. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/address.py +0 -0
  596. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/models.py +0 -0
  597. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/number.py +0 -0
  598. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/prefix.py +0 -0
  599. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/registration.py +0 -0
  600. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/tasks.py +0 -0
  601. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/__init__.py +0 -0
  602. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/app.py +0 -0
  603. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/database.py +0 -0
  604. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/events.py +0 -0
  605. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/models.py +0 -0
  606. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/__init__.py +0 -0
  607. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/branch_diff.py +0 -0
  608. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/constants.py +0 -0
  609. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/models.py +0 -0
  610. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/tasks.py +0 -0
  611. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pytest_plugin.py +0 -0
  612. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/schema/__init__.py +0 -0
  613. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/schema/tasks.py +0 -0
  614. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/schema/triggers.py +0 -0
  615. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/__init__.py +0 -0
  616. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/gunicorn_config.py +0 -0
  617. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/log.py +0 -0
  618. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/worker.py +0 -0
  619. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/server.py +0 -0
  620. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/__init__.py +0 -0
  621. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/__init__.py +0 -0
  622. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/cache/__init__.py +0 -0
  623. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/cache/nats.py +0 -0
  624. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/cache/redis.py +0 -0
  625. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/event/__init__.py +0 -0
  626. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/http/__init__.py +0 -0
  627. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/http/httpx.py +0 -0
  628. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/__init__.py +0 -0
  629. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/local.py +0 -0
  630. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/rabbitmq.py +0 -0
  631. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/workflow/__init__.py +0 -0
  632. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/workflow/local.py +0 -0
  633. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/workflow/worker.py +0 -0
  634. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/component.py +0 -0
  635. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/protocols.py +0 -0
  636. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/storage.py +0 -0
  637. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/__init__.py +0 -0
  638. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/constants.py +0 -0
  639. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/event.py +0 -0
  640. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/models.py +0 -0
  641. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/task.py +0 -0
  642. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/__init__.py +0 -0
  643. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/artifact.py +0 -0
  644. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/check.py +0 -0
  645. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/dummy.py +0 -0
  646. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/keepalive.py +0 -0
  647. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/recurring.py +0 -0
  648. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/registry.py +0 -0
  649. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/__init__.py +0 -0
  650. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/constants.py +0 -0
  651. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/database.py +0 -0
  652. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/models.py +0 -0
  653. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/task_manager.py +0 -0
  654. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/tasks.py +0 -0
  655. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/utils.py +0 -0
  656. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trace.py +0 -0
  657. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/__init__.py +0 -0
  658. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/constants.py +0 -0
  659. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/models.py +0 -0
  660. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/tasks.py +0 -0
  661. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/__init__.py +0 -0
  662. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/catalogue.py +0 -0
  663. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/constants.py +0 -0
  664. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/models.py +0 -0
  665. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/setup.py +0 -0
  666. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/tasks.py +0 -0
  667. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/types.py +0 -0
  668. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/utils.py +0 -0
  669. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/validators/__init__.py +0 -0
  670. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/validators/events.py +0 -0
  671. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/validators/tasks.py +0 -0
  672. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/visuals.py +0 -0
  673. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/__init__.py +0 -0
  674. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/gather.py +0 -0
  675. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/models.py +0 -0
  676. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/tasks.py +0 -0
  677. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/triggers.py +0 -0
  678. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/worker.py +0 -0
  679. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workers/__init__.py +0 -0
  680. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workers/infrahub_async.py +0 -0
  681. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workers/utils.py +0 -0
  682. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/__init__.py +0 -0
  683. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/catalogue.py +0 -0
  684. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/constants.py +0 -0
  685. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/initialization.py +0 -0
  686. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/models.py +0 -0
  687. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/utils.py +0 -0
  688. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/__init__.py +0 -0
  689. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/_importer.py +0 -0
  690. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/analyzer.py +0 -0
  691. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/async_typer.py +0 -0
  692. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/batch.py +0 -0
  693. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/branch.py +0 -0
  694. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/checks.py +0 -0
  695. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/client.py +0 -0
  696. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/config.py +0 -0
  697. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/constants.py +0 -0
  698. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/context.py +0 -0
  699. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/__init__.py +0 -0
  700. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/branch.py +0 -0
  701. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/check.py +0 -0
  702. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/cli.py +0 -0
  703. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/cli_commands.py +0 -0
  704. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/client.py +0 -0
  705. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/config.py +0 -0
  706. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/exceptions.py +0 -0
  707. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/exporter.py +0 -0
  708. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/generator.py +0 -0
  709. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/importer.py +0 -0
  710. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/menu.py +0 -0
  711. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/object.py +0 -0
  712. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/parameters.py +0 -0
  713. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/render.py +0 -0
  714. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/repository.py +0 -0
  715. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/schema.py +0 -0
  716. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/transform.py +0 -0
  717. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/utils.py +0 -0
  718. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/validate.py +0 -0
  719. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/data.py +0 -0
  720. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/diff.py +0 -0
  721. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/exceptions.py +0 -0
  722. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/generator.py +0 -0
  723. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/graphql.py +0 -0
  724. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/groups.py +0 -0
  725. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/jinja2.py +0 -0
  726. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/attribute.py +0 -0
  727. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/constants.py +0 -0
  728. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/parsers.py +0 -0
  729. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/property.py +0 -0
  730. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/related_node.py +0 -0
  731. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/relationship.py +0 -0
  732. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/object_store.py +0 -0
  733. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/operation.py +0 -0
  734. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/playback.py +0 -0
  735. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols.py +0 -0
  736. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_base.py +0 -0
  737. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/__init__.py +0 -0
  738. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/constants.py +0 -0
  739. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/generator.py +0 -0
  740. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/template.j2 +0 -0
  741. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/__init__.py +0 -0
  742. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/exceptions.py +0 -0
  743. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/__init__.py +0 -0
  744. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/base.py +0 -0
  745. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/check.py +0 -0
  746. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/graphql_query.py +0 -0
  747. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/jinja2_transform.py +0 -0
  748. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/python_transform.py +0 -0
  749. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/loader.py +0 -0
  750. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/models.py +0 -0
  751. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/plugin.py +0 -0
  752. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/utils.py +0 -0
  753. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/queries.py +0 -0
  754. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/query_groups.py +0 -0
  755. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/recorder.py +0 -0
  756. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/repository.py +0 -0
  757. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/schema/__init__.py +0 -0
  758. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/schema/main.py +0 -0
  759. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/schema/repository.py +0 -0
  760. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/spec/__init__.py +0 -0
  761. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/spec/menu.py +0 -0
  762. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/spec/object.py +0 -0
  763. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/store.py +0 -0
  764. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/__init__.py +0 -0
  765. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/constants.py +0 -0
  766. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/exceptions.py +0 -0
  767. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/manager.py +0 -0
  768. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/models.py +0 -0
  769. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/__init__.py +0 -0
  770. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/exceptions.py +0 -0
  771. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/filters.py +0 -0
  772. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/models.py +0 -0
  773. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/__init__.py +0 -0
  774. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/docker.py +0 -0
  775. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/repository.py +0 -0
  776. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/schemas/__init__.py +0 -0
  777. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/schemas/animal.py +0 -0
  778. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/schemas/car_person.py +0 -0
  779. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/timestamp.py +0 -0
  780. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/topological_sort.py +0 -0
  781. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/__init__.py +0 -0
  782. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/constants.py +0 -0
  783. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exceptions.py +0 -0
  784. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exporter/__init__.py +0 -0
  785. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exporter/interface.py +0 -0
  786. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exporter/json.py +0 -0
  787. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/importer/__init__.py +0 -0
  788. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/importer/interface.py +0 -0
  789. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/importer/json.py +0 -0
  790. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/schema_sorter.py +0 -0
  791. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transforms.py +0 -0
  792. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/types.py +0 -0
  793. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/utils.py +0 -0
  794. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/uuidt.py +0 -0
  795. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/yaml.py +0 -0
  796. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/__init__.py +0 -0
  797. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/constants.py +0 -0
  798. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/container.py +0 -0
  799. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/docker-compose-cluster.test.yml +0 -0
  800. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/docker-compose.test.yml +0 -0
  801. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/haproxy.cfg +0 -0
  802. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/helpers.py +0 -0
  803. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/host.py +0 -0
  804. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/measurements.py +0 -0
  805. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/models.py +0 -0
  806. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/performance_test.py +0 -0
  807. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/plugin.py +0 -0
  808. {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/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.0b6
3
+ Version: 1.3.1
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
@@ -287,10 +287,10 @@ async def index(
287
287
  await dbdriver.close()
288
288
 
289
289
 
290
- async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check: bool = False) -> None:
290
+ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check: bool = False) -> bool:
291
291
  """Apply the latest migrations to the database, this function will print the status directly in the console.
292
292
 
293
- This function is expected to run on an empty
293
+ Returns a boolean indicating whether a migration failed or if all migrations succeeded.
294
294
 
295
295
  Args:
296
296
  db: The database object.
@@ -306,14 +306,14 @@ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check
306
306
 
307
307
  if not migrations:
308
308
  rprint(f"Database up-to-date (v{root_node.graph_version}), no migration to execute.")
309
- return
309
+ return True
310
310
 
311
311
  rprint(
312
312
  f"Database needs to be updated (v{root_node.graph_version} -> v{GRAPH_VERSION}), {len(migrations)} migrations pending"
313
313
  )
314
314
 
315
315
  if check:
316
- return
316
+ return True
317
317
 
318
318
  for migration in migrations:
319
319
  execution_result = await migration.execute(db=db)
@@ -333,7 +333,9 @@ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check
333
333
  if validation_result and not validation_result.success:
334
334
  for error in validation_result.errors:
335
335
  rprint(f" {error}")
336
- break
336
+ return False
337
+
338
+ return True
337
339
 
338
340
 
339
341
  async def initialize_internal_schema() -> None:
@@ -75,7 +75,12 @@ async def upgrade_cmd(
75
75
  # -------------------------------------------
76
76
  # Upgrade Infrahub Database and Schema
77
77
  # -------------------------------------------
78
- await migrate_database(db=dbdriver, initialize=False, check=check)
78
+
79
+ if not await migrate_database(db=dbdriver, initialize=False, check=check):
80
+ # A migration failed, stop the upgrade process
81
+ rprint("Upgrade cancelled due to migration failure.")
82
+ await dbdriver.close()
83
+ return
79
84
 
80
85
  await initialize_internal_schema()
81
86
  await update_core_schema(db=dbdriver, service=service, initialize=False)
@@ -31,6 +31,7 @@ from infrahub.helpers import hash_password
31
31
 
32
32
  from ..types import ATTRIBUTE_TYPES, LARGE_ATTRIBUTE_TYPES
33
33
  from .constants.relationship_label import RELATIONSHIP_TO_NODE_LABEL, RELATIONSHIP_TO_VALUE_LABEL
34
+ from .schema.attribute_parameters import NumberAttributeParameters
34
35
 
35
36
  if TYPE_CHECKING:
36
37
  from infrahub.core.branch import Branch
@@ -255,6 +256,10 @@ class BaseAttribute(FlagPropertyMixin, NodePropertyMixin):
255
256
  if len(value) > max_length:
256
257
  raise ValidationError({name: f"{value} must have a maximum length of {max_length!r}"})
257
258
 
259
+ # Some invalid values may exist due to https://github.com/opsmill/infrahub/issues/6714.
260
+ if config.SETTINGS.main.schema_strict_mode and isinstance(schema.parameters, NumberAttributeParameters):
261
+ schema.parameters.check_valid_value(value=value, name=name)
262
+
258
263
  if schema.enum:
259
264
  try:
260
265
  schema.convert_value_to_enum(value)
@@ -4,7 +4,10 @@ from dataclasses import dataclass, field
4
4
  from typing import TYPE_CHECKING, Iterable, Literal, Sequence, overload
5
5
  from uuid import uuid4
6
6
 
7
+ from prefect import flow
8
+
7
9
  from infrahub import lock
10
+ from infrahub.core.branch import Branch # noqa: TC001
8
11
  from infrahub.core.timestamp import Timestamp
9
12
  from infrahub.exceptions import ValidationError
10
13
  from infrahub.log import get_logger
@@ -22,7 +25,6 @@ from .model.path import (
22
25
  )
23
26
 
24
27
  if TYPE_CHECKING:
25
- from infrahub.core.branch import Branch
26
28
  from infrahub.core.node import Node
27
29
 
28
30
  from .calculator import DiffCalculator
@@ -301,6 +303,11 @@ class DiffCoordinator:
301
303
  force_branch_refresh: Literal[False] = ...,
302
304
  ) -> tuple[EnrichedDiffs | EnrichedDiffsMetadata, set[NodeIdentifier]]: ...
303
305
 
306
+ @flow( # type: ignore[misc]
307
+ name="update-diff",
308
+ flow_run_name="Update diff for {base_branch.name} - {diff_branch.name}: ({from_time}-{to_time}),tracking_id={tracking_id}",
309
+ validate_parameters=False,
310
+ )
304
311
  async def _update_diffs(
305
312
  self,
306
313
  base_branch: Branch,
@@ -15,7 +15,7 @@ class EnrichedDiffFieldSpecifiersQuery(Query):
15
15
  async def query_init(self, db: InfrahubDatabase, **kwargs: Any) -> None: # noqa: ARG002
16
16
  self.params["diff_id"] = self.diff_id
17
17
  query = """
18
- CALL {
18
+ CALL () {
19
19
  MATCH (root:DiffRoot {uuid: $diff_id})-[:DIFF_HAS_NODE]->(node:DiffNode)-[:DIFF_HAS_ATTRIBUTE]->(attr:DiffAttribute)
20
20
  WHERE (root.is_merged IS NULL OR root.is_merged <> TRUE)
21
21
  RETURN node.uuid AS node_uuid, node.kind AS node_kind, attr.name AS field_name
@@ -710,14 +710,14 @@ class DiffMergeRollbackQuery(Query):
710
710
  // ---------------------------
711
711
  // reset to times on target branch
712
712
  // ---------------------------
713
- CALL {
713
+ CALL () {
714
714
  OPTIONAL MATCH ()-[r_to {to: $at, branch: $target_branch}]-()
715
715
  SET r_to.to = NULL
716
716
  }
717
717
  // ---------------------------
718
718
  // reset from times on target branch
719
719
  // ---------------------------
720
- CALL {
720
+ CALL () {
721
721
  OPTIONAL MATCH ()-[r_from {from: $at, branch: $target_branch}]-()
722
722
  DELETE r_from
723
723
  }
@@ -0,0 +1 @@
1
+ GRAPH_VERSION = 31
@@ -32,6 +32,7 @@ from .m027_delete_isolated_nodes import Migration027
32
32
  from .m028_delete_diffs import Migration028
33
33
  from .m029_duplicates_cleanup import Migration029
34
34
  from .m030_illegal_edges import Migration030
35
+ from .m031_check_number_attributes import Migration031
35
36
 
36
37
  if TYPE_CHECKING:
37
38
  from infrahub.core.root import Root
@@ -69,6 +70,7 @@ MIGRATIONS: list[type[GraphMigration | InternalSchemaMigration | ArbitraryMigrat
69
70
  Migration028,
70
71
  Migration029,
71
72
  Migration030,
73
+ Migration031,
72
74
  ]
73
75
 
74
76
 
@@ -61,7 +61,7 @@ class Migration012RenameTypeAttributeData(AttributeRenameQuery):
61
61
  def render_match(self) -> str:
62
62
  query = """
63
63
  // Find all the active nodes
64
- CALL {
64
+ CALL () {
65
65
  MATCH (node:%(node_kind)s)
66
66
  WHERE exists((node)-[:HAS_ATTRIBUTE]-(:Attribute { name: $prev_attr.name }))
67
67
  AND NOT exists((node)-[:HAS_ATTRIBUTE]-(:Attribute { name: $new_attr.name }))
@@ -52,7 +52,7 @@ class DedupCardinalityOneRelsQuery(Query):
52
52
  # of a one-to-many BIDIR relationship.
53
53
  query = """
54
54
 
55
- CALL {
55
+ CALL () {
56
56
  MATCH (rel_node: Relationship)-[edge:IS_RELATED]->(n: Node)<-[edge_2:IS_RELATED]-(rel_node_2: Relationship {name: rel_node.name})
57
57
  WHERE rel_node.name in $rel_one_identifiers_inbound[n.kind]
58
58
  AND edge.branch = edge_2.branch
@@ -64,7 +64,7 @@ class DedupCardinalityOneRelsQuery(Query):
64
64
  DETACH DELETE rel_node
65
65
  }
66
66
 
67
- CALL {
67
+ CALL () {
68
68
  MATCH (rel_node_3: Relationship)<-[edge_3:IS_RELATED]-(n: Node)-[edge_4:IS_RELATED]->(rel_node_4: Relationship {name: rel_node_3.name})
69
69
  WHERE rel_node_3.name in $rel_one_identifiers_outbound[n.kind]
70
70
  AND edge_3.branch = edge_4.branch
@@ -535,12 +535,12 @@ class PerformHardDeletes(Query):
535
535
 
536
536
  async def query_init(self, db: InfrahubDatabase, **kwargs: dict[str, Any]) -> None: # noqa: ARG002
537
537
  query = """
538
- CALL {
538
+ CALL () {
539
539
  MATCH (n)
540
540
  WHERE n.to_delete = TRUE
541
541
  DETACH DELETE n
542
542
  }
543
- CALL {
543
+ CALL () {
544
544
  MATCH ()-[e]-()
545
545
  WHERE e.to_delete = TRUE
546
546
  DELETE e
@@ -0,0 +1,102 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Sequence
4
+
5
+ from infrahub import config
6
+ from infrahub.core import registry
7
+ from infrahub.core.branch import Branch
8
+ from infrahub.core.constants import SchemaPathType
9
+ from infrahub.core.initialization import initialization
10
+ from infrahub.core.migrations.shared import InternalSchemaMigration, MigrationResult, SchemaMigration
11
+ from infrahub.core.path import SchemaPath
12
+ from infrahub.core.schema import GenericSchema, NodeSchema
13
+ from infrahub.core.schema.attribute_parameters import NumberAttributeParameters
14
+ from infrahub.core.validators.attribute.min_max import AttributeNumberChecker
15
+ from infrahub.core.validators.enum import ConstraintIdentifier
16
+ from infrahub.core.validators.model import SchemaConstraintValidatorRequest
17
+ from infrahub.lock import initialize_lock
18
+ from infrahub.log import get_logger
19
+ from infrahub.types import Number
20
+
21
+ if TYPE_CHECKING:
22
+ from infrahub.database import InfrahubDatabase
23
+
24
+ log = get_logger()
25
+
26
+
27
+ class Migration031(InternalSchemaMigration):
28
+ """
29
+ Some nodes with invalid number attributes may have been created as min/max/excluded_values were not working properly.
30
+ This migration indicates corrupted nodes. If strict mode is disabled, both this migration and min/max/excludes_values constraints are disabled,
31
+ so that users can carry one with their corrupted data without any failure.
32
+ """
33
+
34
+ name: str = "031_check_number_attributes"
35
+ minimum_version: int = 30
36
+ migrations: Sequence[SchemaMigration] = []
37
+
38
+ async def execute(self, db: InfrahubDatabase) -> MigrationResult:
39
+ """Retrieve all number attributes that have a min/max/excluded_values
40
+ For any of these attributes, check if corresponding existing nodes are valid."""
41
+
42
+ if not config.SETTINGS.main.schema_strict_mode:
43
+ return MigrationResult()
44
+
45
+ # load schemas from database into registry
46
+ initialize_lock()
47
+ await initialization(db=db)
48
+
49
+ node_id_to_error_message = {}
50
+
51
+ branches = await Branch.get_list(db=db)
52
+ for branch in branches: # noqa
53
+ schema_branch = await registry.schema.load_schema_from_db(db=db, branch=branch)
54
+ for node_schema_kind in schema_branch.node_names:
55
+ schema = schema_branch.get_node(name=node_schema_kind, duplicate=False)
56
+ if not isinstance(schema, (NodeSchema, GenericSchema)):
57
+ continue
58
+
59
+ for attr in schema.attributes:
60
+ if attr.kind != Number.label:
61
+ continue
62
+
63
+ # Check if the attribute has a min/max/excluded_values being violated
64
+ if isinstance(attr.parameters, NumberAttributeParameters) and (
65
+ attr.parameters.min_value is not None
66
+ or attr.parameters.max_value is not None
67
+ or attr.parameters.excluded_values
68
+ ):
69
+ request = SchemaConstraintValidatorRequest(
70
+ branch=branch,
71
+ constraint_name=ConstraintIdentifier.ATTRIBUTE_PARAMETERS_MIN_VALUE_UPDATE.value,
72
+ node_schema=schema,
73
+ schema_path=SchemaPath(
74
+ path_type=SchemaPathType.ATTRIBUTE, schema_kind=schema.kind, field_name=attr.name
75
+ ),
76
+ schema_branch=db.schema.get_schema_branch(name=registry.default_branch),
77
+ )
78
+
79
+ constraint_checker = AttributeNumberChecker(db=db, branch=branch)
80
+ grouped_data_paths = await constraint_checker.check(request)
81
+ data_paths = grouped_data_paths[0].get_all_data_paths()
82
+ for data_path in data_paths:
83
+ # Avoid having duplicated error messages for nodes present on multiple branches.
84
+ if data_path.node_id not in node_id_to_error_message:
85
+ node_id_to_error_message[data_path.node_id] = (
86
+ f"Node {data_path.node_id} on branch {branch.name} "
87
+ f"has an invalid Number attribute {data_path.field_name}: {data_path.value}"
88
+ )
89
+
90
+ if len(node_id_to_error_message) == 0:
91
+ return MigrationResult()
92
+
93
+ error_str = (
94
+ "Following nodes attributes values must be updated to not violate corresponding min_value, "
95
+ "max_value or excluded_values schema constraints"
96
+ )
97
+ errors_messages = list(node_id_to_error_message.values())
98
+ return MigrationResult(errors=[error_str] + errors_messages)
99
+
100
+ async def validate_migration(self, db: InfrahubDatabase) -> MigrationResult: # noqa: ARG002
101
+ result = MigrationResult()
102
+ return result
@@ -38,7 +38,7 @@ class AttributeRenameQuery(Query):
38
38
  def render_match(self) -> str:
39
39
  query = """
40
40
  // Find all the active nodes
41
- CALL {
41
+ CALL () {
42
42
  MATCH (node:%(node_kind)s)
43
43
  WHERE exists((node)-[:HAS_ATTRIBUTE]-(:Attribute { name: $prev_attr.name }))
44
44
  RETURN node
@@ -70,7 +70,9 @@ log = get_logger()
70
70
 
71
71
  class Node(BaseNode, metaclass=BaseNodeMeta):
72
72
  @classmethod
73
- def __init_subclass_with_meta__(cls, _meta=None, default_filter=None, **options) -> None:
73
+ def __init_subclass_with_meta__(
74
+ cls, _meta: BaseNodeOptions | None = None, default_filter: None = None, **options: dict[str, Any]
75
+ ) -> None:
74
76
  if not _meta:
75
77
  _meta = BaseNodeOptions(cls)
76
78
 
@@ -959,6 +961,8 @@ class Node(BaseNode, metaclass=BaseNodeMeta):
959
961
  if relationship.kind == RelationshipKind.PARENT:
960
962
  return relationship.name
961
963
 
964
+ return None
965
+
962
966
  async def get_object_template(self, db: InfrahubDatabase) -> CoreObjectTemplate | None:
963
967
  object_template: RelationshipManager = getattr(self, OBJECT_TEMPLATE_RELATIONSHIP_NAME, None)
964
968
  return (
@@ -21,7 +21,7 @@ class DeleteAfterTimeQuery(Query):
21
21
  // ---------------------
22
22
  // Reset edges with to time after timestamp
23
23
  // ---------------------
24
- CALL {
24
+ CALL () {
25
25
  OPTIONAL MATCH (p)-[r]-(q)
26
26
  WHERE r.to > $timestamp
27
27
  SET r.to = NULL
@@ -33,7 +33,7 @@ class DeleteAfterTimeQuery(Query):
33
33
  // ---------------------
34
34
  // Delete edges with from time after timestamp timestamp
35
35
  // ---------------------
36
- CALL {
36
+ CALL () {
37
37
  OPTIONAL MATCH (p)-[r]->(q)
38
38
  WHERE r.from > $timestamp
39
39
  DELETE r
@@ -49,7 +49,7 @@ class DeleteAfterTimeQuery(Query):
49
49
  // ---------------------
50
50
  // Delete edges with from time after timestamp timestamp
51
51
  // ---------------------
52
- CALL {
52
+ CALL () {
53
53
  OPTIONAL MATCH (p)-[r]->(q)
54
54
  WHERE r.from > $timestamp
55
55
  DELETE r
@@ -8,6 +8,7 @@ from pydantic import ConfigDict, Field, model_validator
8
8
  from infrahub import config
9
9
  from infrahub.core.constants.schema import UpdateSupport
10
10
  from infrahub.core.models import HashableModel
11
+ from infrahub.exceptions import ValidationError
11
12
 
12
13
 
13
14
  def get_attribute_parameters_class_for_kind(kind: str) -> type[AttributeParameters]:
@@ -124,16 +125,22 @@ class NumberAttributeParameters(AttributeParameters):
124
125
  return ranges
125
126
 
126
127
  def is_valid_value(self, value: int) -> bool:
127
- if self.min_value is not None and value < self.min_value:
128
+ try:
129
+ self.check_valid_value(value=value, name="UNUSED")
130
+ except ValidationError:
128
131
  return False
132
+ return True
133
+
134
+ def check_valid_value(self, value: int, name: str) -> None:
135
+ if self.min_value is not None and value < self.min_value:
136
+ raise ValidationError({name: f"{value} is lower than the minimum allowed value {self.min_value!r}"})
129
137
  if self.max_value is not None and value > self.max_value:
130
- return False
138
+ raise ValidationError({name: f"{value} is higher than the maximum allowed value {self.max_value!r}"})
131
139
  if value in self.get_excluded_single_values():
132
- return False
140
+ raise ValidationError({name: f"{value} is in the excluded values"})
133
141
  for start, end in self.get_excluded_ranges():
134
142
  if start <= value <= end:
135
- return False
136
- return True
143
+ raise ValidationError({name: f"{value} is in an the excluded range {start}-{end}"})
137
144
 
138
145
 
139
146
  class NumberPoolParameters(AttributeParameters):
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  import hashlib
4
4
  import keyword
5
5
  import os
6
+ from collections import defaultdict
6
7
  from dataclasses import asdict, dataclass
7
8
  from enum import Enum
8
9
  from typing import TYPE_CHECKING, Any, Callable, Iterable, Literal, overload
@@ -10,7 +11,7 @@ from typing import TYPE_CHECKING, Any, Callable, Iterable, Literal, overload
10
11
  from infrahub_sdk.utils import compare_lists, intersection
11
12
  from pydantic import field_validator
12
13
 
13
- from infrahub.core.constants import RelationshipCardinality, RelationshipKind
14
+ from infrahub.core.constants import HashableModelState, RelationshipCardinality, RelationshipKind
14
15
  from infrahub.core.models import HashableModel, HashableModelDiff
15
16
 
16
17
  from .attribute_schema import AttributeSchema, get_attribute_schema_class_for_kind
@@ -514,7 +515,86 @@ class BaseNodeSchema(GeneratedBaseNodeSchema):
514
515
  return UniquenessConstraintType.SUBSET_OF_HFID
515
516
  return UniquenessConstraintType.STANDARD
516
517
 
518
+ def _update_schema_paths(
519
+ self, schema_paths_list: list[str], field_name_update_map: dict[str, str], deleted_field_names: set[str]
520
+ ) -> list[str]:
521
+ """
522
+ For each schema_path (eg name__value, device__name_value), update the field name if the current name is
523
+ in field_name_update_map, remove the path if the field name is in deleted_field_names
524
+ """
525
+ updated_element_list = []
526
+ for schema_path in schema_paths_list:
527
+ split_path = schema_path.split("__", maxsplit=1)
528
+ current_field_name = split_path[0]
529
+ if current_field_name in deleted_field_names:
530
+ continue
531
+ new_field_name = field_name_update_map.get(current_field_name)
532
+ if not new_field_name:
533
+ updated_element_list.append(schema_path)
534
+ continue
535
+ rest_of_path = f"__{split_path[1]}" if len(split_path) > 1 else ""
536
+ new_element_str = f"{new_field_name}{rest_of_path}"
537
+ updated_element_list.append(new_element_str)
538
+ return updated_element_list
539
+
540
+ def handle_field_renames_and_deletes(self, other: BaseNodeSchema) -> None:
541
+ properties_to_update = [self.uniqueness_constraints, self.human_friendly_id, self.display_labels, self.order_by]
542
+ if not any(p for p in properties_to_update):
543
+ return
544
+
545
+ deleted_names: set[str] = set()
546
+ field_names_by_id = defaultdict(list)
547
+ for field in self.attributes + self.relationships:
548
+ if not field.id:
549
+ continue
550
+ field_names_by_id[field.id].append(field.name)
551
+ for field in other.attributes + other.relationships:
552
+ # identify fields deleted in the other schema
553
+ if field.state is HashableModelState.ABSENT:
554
+ deleted_names.add(field.name)
555
+ if not field.id:
556
+ continue
557
+ if field.name not in field_names_by_id[field.id]:
558
+ field_names_by_id[field.id].append(field.name)
559
+ # identify fields renamed from this schema to the other schema
560
+ renamed_field_name_map = {v[0]: v[-1] for v in field_names_by_id.values() if len(v) > 1}
561
+
562
+ if self.uniqueness_constraints:
563
+ updated_constraints = []
564
+ for constraint in self.uniqueness_constraints:
565
+ updated_constraint = self._update_schema_paths(
566
+ schema_paths_list=constraint,
567
+ field_name_update_map=renamed_field_name_map,
568
+ deleted_field_names=deleted_names,
569
+ )
570
+ if updated_constraint:
571
+ updated_constraints.append(updated_constraint)
572
+ self.uniqueness_constraints = updated_constraints
573
+ if self.human_friendly_id:
574
+ self.human_friendly_id = self._update_schema_paths(
575
+ schema_paths_list=self.human_friendly_id,
576
+ field_name_update_map=renamed_field_name_map,
577
+ deleted_field_names=deleted_names,
578
+ )
579
+ if self.display_labels:
580
+ self.display_labels = self._update_schema_paths(
581
+ schema_paths_list=self.display_labels,
582
+ field_name_update_map=renamed_field_name_map,
583
+ deleted_field_names=deleted_names,
584
+ )
585
+ if self.order_by:
586
+ self.order_by = self._update_schema_paths(
587
+ schema_paths_list=self.order_by,
588
+ field_name_update_map=renamed_field_name_map,
589
+ deleted_field_names=deleted_names,
590
+ )
591
+
517
592
  def update(self, other: HashableModel) -> Self:
593
+ # handle renamed/deleted field updates for schema properties here
594
+ # so that they can still be overridden during the call to `update()` below
595
+ if isinstance(other, BaseNodeSchema):
596
+ self.handle_field_renames_and_deletes(other=other)
597
+
518
598
  super().update(other=other)
519
599
 
520
600
  # Allow to specify empty string to remove existing fields values
@@ -551,6 +631,24 @@ class SchemaAttributePath:
551
631
  attribute_schema: AttributeSchema | None = None
552
632
  attribute_property_name: str | None = None
553
633
 
634
+ def __str__(self) -> str:
635
+ return self.to_string()
636
+
637
+ def to_string(self, field_name_override: str | None = None) -> str:
638
+ str_path = ""
639
+ if self.relationship_schema:
640
+ str_path += field_name_override or self.relationship_schema.name
641
+ if self.attribute_schema:
642
+ if str_path:
643
+ str_path += "__"
644
+ attr_name = self.attribute_schema.name
645
+ else:
646
+ attr_name = field_name_override or self.attribute_schema.name
647
+ str_path += attr_name
648
+ if self.attribute_property_name:
649
+ str_path += f"__{self.attribute_property_name}"
650
+ return str_path
651
+
554
652
  @property
555
653
  def is_type_attribute(self) -> bool:
556
654
  return bool(self.attribute_schema and not self.related_schema and not self.relationship_schema)
@@ -563,6 +661,14 @@ class SchemaAttributePath:
563
661
  def has_property(self) -> bool:
564
662
  return bool(self.attribute_property_name)
565
663
 
664
+ @property
665
+ def field_name(self) -> str | None:
666
+ if self.relationship_schema:
667
+ return self.relationship_schema.name
668
+ if self.attribute_schema:
669
+ return self.attribute_schema.name
670
+ return None
671
+
566
672
  @property
567
673
  def active_relationship_schema(self) -> RelationshipSchema:
568
674
  if self.relationship_schema:
@@ -710,7 +710,9 @@ class SchemaBranch:
710
710
  ):
711
711
  unique_attrs_in_constraints.add(schema_attribute_path.attribute_schema.name)
712
712
 
713
- unique_attrs_in_attrs = {attr_schema.name for attr_schema in node_schema.unique_attributes}
713
+ unique_attrs_in_attrs = {
714
+ attr_schema.name for attr_schema in node_schema.unique_attributes if not attr_schema.inherited
715
+ }
714
716
  if unique_attrs_in_attrs == unique_attrs_in_constraints:
715
717
  continue
716
718
 
@@ -822,11 +824,16 @@ class SchemaBranch:
822
824
  ) from exc
823
825
 
824
826
  def _is_attr_combination_unique(
825
- self, attrs_paths: list[str], uniqueness_constraints: list[list[str]] | None
827
+ self, attrs_paths: list[str], uniqueness_constraints: list[list[str]] | None, unique_attribute_names: list[str]
826
828
  ) -> bool:
827
829
  """
828
- Return whether at least one combination of any length of `attrs_paths` is equal to a uniqueness constraint.
830
+ Return whether at least one combination of any length of `attrs_paths` is unique
829
831
  """
832
+ if unique_attribute_names:
833
+ for attr_path in attrs_paths:
834
+ for unique_attr_name in unique_attribute_names:
835
+ if attr_path.startswith(unique_attr_name):
836
+ return True
830
837
 
831
838
  if not uniqueness_constraints:
832
839
  return False
@@ -868,9 +875,14 @@ class SchemaBranch:
868
875
  if config.SETTINGS.main.schema_strict_mode:
869
876
  # For every relationship referred within hfid, check whether the combination of attributes is unique is the peer schema node
870
877
  for related_schema, attrs_paths in rel_schemas_to_paths.values():
871
- if not self._is_attr_combination_unique(attrs_paths, related_schema.uniqueness_constraints):
878
+ if not self._is_attr_combination_unique(
879
+ attrs_paths=attrs_paths,
880
+ uniqueness_constraints=related_schema.uniqueness_constraints,
881
+ unique_attribute_names=[a.name for a in related_schema.unique_attributes],
882
+ ):
872
883
  raise ValidationError(
873
- f"HFID of {node_schema.kind} refers peer {related_schema.kind} with a non-unique combination of attributes {attrs_paths}"
884
+ f"HFID of {node_schema.kind} refers to peer {related_schema.kind}"
885
+ f" with a non-unique combination of attributes {attrs_paths}"
874
886
  )
875
887
 
876
888
  def validate_required_relationships(self) -> None:
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any
4
4
 
5
+ from infrahub import config
5
6
  from infrahub.core.constants import PathType
6
7
  from infrahub.core.path import DataPath, GroupedDataPaths
7
8
  from infrahub.core.schema.attribute_parameters import NumberAttributeParameters
@@ -87,6 +88,10 @@ class AttributeNumberChecker(ConstraintCheckerInterface):
87
88
  return "attribute.number.update"
88
89
 
89
90
  def supports(self, request: SchemaConstraintValidatorRequest) -> bool:
91
+ # Some invalid values may exist due to https://github.com/opsmill/infrahub/issues/6714.
92
+ if not config.SETTINGS.main.schema_strict_mode:
93
+ return False
94
+
90
95
  return request.constraint_name in (
91
96
  ConstraintIdentifier.ATTRIBUTE_PARAMETERS_MIN_VALUE_UPDATE.value,
92
97
  ConstraintIdentifier.ATTRIBUTE_PARAMETERS_MAX_VALUE_UPDATE.value,
@@ -94,7 +99,6 @@ class AttributeNumberChecker(ConstraintCheckerInterface):
94
99
  )
95
100
 
96
101
  async def check(self, request: SchemaConstraintValidatorRequest) -> list[GroupedDataPaths]:
97
- grouped_data_paths_list: list[GroupedDataPaths] = []
98
102
  if not request.schema_path.field_name:
99
103
  raise ValueError("field_name is not defined")
100
104
  attribute_schema = request.node_schema.get_attribute(name=request.schema_path.field_name)
@@ -106,8 +110,9 @@ class AttributeNumberChecker(ConstraintCheckerInterface):
106
110
  and attribute_schema.parameters.max_value is None
107
111
  and attribute_schema.parameters.excluded_values is None
108
112
  ):
109
- return grouped_data_paths_list
113
+ return []
110
114
 
115
+ grouped_data_paths_list: list[GroupedDataPaths] = []
111
116
  for query_class in self.query_classes:
112
117
  # TODO add exception handling
113
118
  query = await query_class.init(
@@ -88,6 +88,8 @@ GQL_STOP = "stop"
88
88
  ContextValue = Any | Callable[[HTTPConnection], Any]
89
89
  RootValue = Any
90
90
 
91
+ subscription_tasks = set()
92
+
91
93
 
92
94
  class InfrahubGraphQLApp:
93
95
  def __init__(
@@ -446,7 +448,9 @@ class InfrahubGraphQLApp:
446
448
 
447
449
  asyncgen = cast(AsyncGenerator[Any, None], result)
448
450
  subscriptions[operation_id] = asyncgen
449
- asyncio.create_task(self._observe_subscription(asyncgen, operation_id, websocket))
451
+ task = asyncio.create_task(self._observe_subscription(asyncgen, operation_id, websocket))
452
+ subscription_tasks.add(task)
453
+ task.add_done_callback(subscription_tasks.discard)
450
454
  return []
451
455
 
452
456
  async def _observe_subscription(