datajunction 0.0.142__tar.gz → 0.0.143__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 (170) hide show
  1. {datajunction-0.0.142 → datajunction-0.0.143}/PKG-INFO +1 -1
  2. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/__about__.py +1 -1
  3. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/builder.py +4 -0
  4. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_builder.py +29 -4
  5. {datajunction-0.0.142 → datajunction-0.0.143}/.coveragerc +0 -0
  6. {datajunction-0.0.142 → datajunction-0.0.143}/.gitignore +0 -0
  7. {datajunction-0.0.142 → datajunction-0.0.143}/.isort.cfg +0 -0
  8. {datajunction-0.0.142 → datajunction-0.0.143}/.pre-commit-config.yaml +0 -0
  9. {datajunction-0.0.142 → datajunction-0.0.143}/LICENSE.txt +0 -0
  10. {datajunction-0.0.142 → datajunction-0.0.143}/Makefile +0 -0
  11. {datajunction-0.0.142 → datajunction-0.0.143}/README.md +0 -0
  12. {datajunction-0.0.142 → datajunction-0.0.143}/claude_desktop_config.example.json +0 -0
  13. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/__init__.py +0 -0
  14. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/_base.py +0 -0
  15. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/_internal.py +0 -0
  16. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/admin.py +0 -0
  17. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/cli.py +0 -0
  18. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/client.py +0 -0
  19. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/compile.py +0 -0
  20. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/deployment.py +0 -0
  21. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/exceptions.py +0 -0
  22. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/mcp/__init__.py +0 -0
  23. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/mcp/cli.py +0 -0
  24. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/mcp/config.py +0 -0
  25. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/mcp/formatters.py +0 -0
  26. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/mcp/server.py +0 -0
  27. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/mcp/tools.py +0 -0
  28. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/models.py +0 -0
  29. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/nodes.py +0 -0
  30. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/rendering.py +0 -0
  31. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/init_system_nodes.py +0 -0
  32. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/date.dimension.yaml +0 -0
  33. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/dimension_link.dimension.yaml +0 -0
  34. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/dj.yaml +0 -0
  35. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/is_active.dimension.yaml +0 -0
  36. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/materialization.dimension.yaml +0 -0
  37. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/node_type.dimension.yaml +0 -0
  38. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/node_without_description.metric.yaml +0 -0
  39. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/nodes.dimension.yaml +0 -0
  40. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/number_of_materializations.metric.yaml +0 -0
  41. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/number_of_nodes.metric.yaml +0 -0
  42. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/seed/nodes/user.dimension.yaml +0 -0
  43. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/skills/datajunction.md +0 -0
  44. {datajunction-0.0.142 → datajunction-0.0.143}/datajunction/tags.py +0 -0
  45. {datajunction-0.0.142 → datajunction-0.0.143}/pyproject.toml +0 -0
  46. {datajunction-0.0.142 → datajunction-0.0.143}/setup.cfg +0 -0
  47. {datajunction-0.0.142 → datajunction-0.0.143}/tests/__init__.py +0 -0
  48. {datajunction-0.0.142 → datajunction-0.0.143}/tests/conftest.py +0 -0
  49. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/dj.yaml +0 -0
  50. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/roads/companies.yaml +0 -0
  51. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/roads/companies_dim.yaml +0 -0
  52. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/roads/contractor.yaml +0 -0
  53. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/roads/contractors.yaml +0 -0
  54. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/roads/us_state.yaml +0 -0
  55. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/deploy0/roads/us_states.yaml +0 -0
  56. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/dj.yaml +0 -0
  57. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/avg_length_of_employment.metric.yaml +0 -0
  58. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/avg_repair_price.metric.yaml +0 -0
  59. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/avg_time_to_dispatch.metric.yaml +0 -0
  60. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/contractor.dimension.yaml +0 -0
  61. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/contractors.source.yaml +0 -0
  62. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/date.source.yaml +0 -0
  63. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/date_dim.dimension.yaml +0 -0
  64. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/dispatcher.dimension.yaml +0 -0
  65. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/dispatchers.source.yaml +0 -0
  66. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/hard_hat.dimension.yaml +0 -0
  67. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/hard_hat_state.source.yaml +0 -0
  68. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/hard_hats.source.yaml +0 -0
  69. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/local_hard_hats.dimension.yaml +0 -0
  70. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/municipality.source.yaml +0 -0
  71. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/municipality_dim.dimension.yaml +0 -0
  72. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/municipality_municipality_type.source.yaml +0 -0
  73. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/municipality_type.source.yaml +0 -0
  74. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/national_level_agg.transform.yaml +0 -0
  75. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/num_repair_orders.metric.yaml +0 -0
  76. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/regional_level_agg.transform.yaml +0 -0
  77. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/regional_repair_efficiency.metric.yaml +0 -0
  78. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/repair_order.dimension.yaml +0 -0
  79. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/repair_order_details.source.yaml +0 -0
  80. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/repair_order_transform.transform.yaml +0 -0
  81. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/repair_orders.source.yaml +0 -0
  82. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/repair_orders_cube.cube.yaml +0 -0
  83. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/repair_type.source.yaml +0 -0
  84. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/total_repair_cost.metric.yaml +0 -0
  85. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/total_repair_order_discounts.metric.yaml +0 -0
  86. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/us_region.source.yaml +0 -0
  87. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/us_state.dimension.yaml +0 -0
  88. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project1/roads/us_states.source.yaml +0 -0
  89. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project10/dj.yaml +0 -0
  90. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/avg_length_of_employment.metric.yaml +0 -0
  91. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/avg_repair_price.metric.yaml +0 -0
  92. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/avg_time_to_dispatch.metric.yaml +0 -0
  93. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/contractor.dimension.yaml +0 -0
  94. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/contractors.source.yaml +0 -0
  95. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/date.source.yaml +0 -0
  96. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/date_dim.dimension.yaml +0 -0
  97. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/dispatcher.dimension.yaml +0 -0
  98. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/dispatchers.source.yaml +0 -0
  99. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/dj.yaml +0 -0
  100. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/hard_hat.dimension.yaml +0 -0
  101. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/hard_hat_state.source.yaml +0 -0
  102. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/hard_hats.source.yaml +0 -0
  103. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/local_hard_hats.dimension.yaml +0 -0
  104. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/municipality.source.yaml +0 -0
  105. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/municipality_dim.dimension.yaml +0 -0
  106. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/municipality_municipality_type.source.yaml +0 -0
  107. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/municipality_type.source.yaml +0 -0
  108. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/national_level_agg.transform.yaml +0 -0
  109. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/num_repair_orders.metric.yaml +0 -0
  110. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/regional_level_agg.transform.yaml +0 -0
  111. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/regional_repair_efficiency.metric.yaml +0 -0
  112. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/repair_order.dimension.yaml +0 -0
  113. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/repair_order_details.source.yaml +0 -0
  114. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/repair_order_transform.transform.yaml +0 -0
  115. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/repair_orders.source.yaml +0 -0
  116. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/repair_orders_cube.cube.yaml +0 -0
  117. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/repair_type.source.yaml +0 -0
  118. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/total_repair_cost.metric.yaml +0 -0
  119. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/total_repair_order_discounts.metric.yaml +0 -0
  120. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/us_region.source.yaml +0 -0
  121. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/us_state.dimension.yaml +0 -0
  122. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project11/us_states.source.yaml +0 -0
  123. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/dj.yaml +0 -0
  124. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/roads/companies.source.yaml +0 -0
  125. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/roads/companies_dim.dimension.yaml +0 -0
  126. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/roads/contractor.dimension.yaml +0 -0
  127. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/roads/contractors.source.yaml +0 -0
  128. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/roads/us_state.dimension.yaml +0 -0
  129. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project12/roads/us_states.source.yaml +0 -0
  130. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project2/dj.yaml +0 -0
  131. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project2/some_node.source.yaml +0 -0
  132. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project3/dj.yaml +0 -0
  133. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project3/some_node.yaml +0 -0
  134. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project4/dj.yaml +0 -0
  135. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project4/very/very/deeply/nested/namespace/some_node.source.yaml +0 -0
  136. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project5/dj.yaml +0 -0
  137. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project5/some_node.a.b.c.source.yaml +0 -0
  138. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project6/dj.yaml +0 -0
  139. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project6/roads/contractor.dimension.yaml +0 -0
  140. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project6/roads/contractors.source.yaml +0 -0
  141. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project7/dj.yaml +0 -0
  142. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project7/roads/contractor.dimension.yaml +0 -0
  143. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project7/roads/contractors.source.yaml +0 -0
  144. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project8/dj.yaml +0 -0
  145. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/dj.yaml +0 -0
  146. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/roads/companies.source.yaml +0 -0
  147. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/roads/companies_dim.dimension.yaml +0 -0
  148. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/roads/contractor.dimension.yaml +0 -0
  149. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/roads/contractors.source.yaml +0 -0
  150. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/roads/us_state.dimension.yaml +0 -0
  151. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples/project9/roads/us_states.source.yaml +0 -0
  152. {datajunction-0.0.142 → datajunction-0.0.143}/tests/examples.py +0 -0
  153. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/README.md +0 -0
  154. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/__init__.py +0 -0
  155. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/test_cli.py +0 -0
  156. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/test_formatters.py +0 -0
  157. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/test_server_tools.py +0 -0
  158. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/test_tools.py +0 -0
  159. {datajunction-0.0.142 → datajunction-0.0.143}/tests/mcp/test_visualize_metrics.py +0 -0
  160. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test__internal.py +0 -0
  161. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_admin.py +0 -0
  162. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_base.py +0 -0
  163. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_cli.py +0 -0
  164. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_client.py +0 -0
  165. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_compile.py +0 -0
  166. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_deploy.py +0 -0
  167. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_generated_client.py +0 -0
  168. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_integration.py +0 -0
  169. {datajunction-0.0.142 → datajunction-0.0.143}/tests/test_models.py +0 -0
  170. {datajunction-0.0.142 → datajunction-0.0.143}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datajunction
3
- Version: 0.0.142
3
+ Version: 0.0.143
4
4
  Summary: DataJunction client library for connecting to a DataJunction server
5
5
  Project-URL: repository, https://github.com/DataJunction/dj
6
6
  Author-email: DataJunction Authors <yian.shang@gmail.com>
@@ -2,4 +2,4 @@
2
2
  Version for Hatch
3
3
  """
4
4
 
5
- __version__ = "0.0.142"
5
+ __version__ = "0.0.143"
@@ -99,6 +99,8 @@ class DJBuilder(DJClient): # pylint: disable=too-many-public-methods
99
99
  "cascade": cascade,
100
100
  },
101
101
  )
102
+ if response.status_code == 404:
103
+ return
102
104
  if not response.status_code < 400:
103
105
  raise DJClientException(response.json()["message"])
104
106
 
@@ -176,6 +178,8 @@ class DJBuilder(DJClient): # pylint: disable=too-many-public-methods
176
178
  timeout=self._timeout,
177
179
  params={"delete_git_branch": delete_git_branch},
178
180
  )
181
+ if response.status_code == 404:
182
+ return
179
183
  if not response.status_code < 400:
180
184
  raise DJClientException(response.json()["message"])
181
185
 
@@ -1038,18 +1038,43 @@ class TestDJBuilder: # pylint: disable=too-many-public-methods, protected-acces
1038
1038
  params={"delete_git_branch": True},
1039
1039
  )
1040
1040
 
1041
- def test_delete_branch_error(self, client):
1041
+ def test_delete_branch_404_is_idempotent(self, client):
1042
1042
  """
1043
- Verifies that delete_branch raises on error.
1043
+ Verifies that delete_branch treats a 404 as success — DELETE is idempotent.
1044
1044
  """
1045
1045
  mock_response = MagicMock(
1046
1046
  status_code=404,
1047
1047
  json=lambda: {"message": "Branch not found"},
1048
1048
  )
1049
1049
  with patch.object(client._session, "request", return_value=mock_response):
1050
- with pytest.raises(DJClientException) as exc_info:
1050
+ assert (
1051
1051
  client.delete_branch(namespace="myns", branch_name="nonexistent")
1052
- assert "Branch not found" in str(exc_info.value)
1052
+ is None
1053
+ )
1054
+
1055
+ def test_delete_branch_error(self, client):
1056
+ """
1057
+ Verifies that delete_branch raises on non-404 errors.
1058
+ """
1059
+ mock_response = MagicMock(
1060
+ status_code=500,
1061
+ json=lambda: {"message": "Internal server error"},
1062
+ )
1063
+ with patch.object(client._session, "request", return_value=mock_response):
1064
+ with pytest.raises(DJClientException) as exc_info:
1065
+ client.delete_branch(namespace="myns", branch_name="feature-x")
1066
+ assert "Internal server error" in str(exc_info.value)
1067
+
1068
+ def test_delete_namespace_404_is_idempotent(self, client):
1069
+ """
1070
+ Verifies that delete_namespace treats a 404 as success — DELETE is idempotent.
1071
+ """
1072
+ mock_response = MagicMock(
1073
+ status_code=404,
1074
+ json=lambda: {"message": "Namespace not found"},
1075
+ )
1076
+ with patch.object(client._session, "request", return_value=mock_response):
1077
+ assert client.delete_namespace(namespace="nonexistent") is None
1053
1078
 
1054
1079
  #
1055
1080
  # Git config
File without changes
File without changes
File without changes
File without changes