vilvik 0.2.2__tar.gz → 0.3.0__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 (33) hide show
  1. {vilvik-0.2.2 → vilvik-0.3.0}/PKG-INFO +1 -1
  2. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_client.py +38 -0
  3. vilvik-0.3.0/vilvik/_version.py +1 -0
  4. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/client.py +24 -0
  5. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/models.py +4 -0
  6. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik.egg-info/PKG-INFO +1 -1
  7. vilvik-0.2.2/vilvik/_version.py +0 -1
  8. {vilvik-0.2.2 → vilvik-0.3.0}/LICENSE +0 -0
  9. {vilvik-0.2.2 → vilvik-0.3.0}/README.md +0 -0
  10. {vilvik-0.2.2 → vilvik-0.3.0}/pyproject.toml +0 -0
  11. {vilvik-0.2.2 → vilvik-0.3.0}/setup.cfg +0 -0
  12. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_capture.py +0 -0
  13. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_credentials.py +0 -0
  14. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_extract.py +0 -0
  15. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_imports_resource.py +0 -0
  16. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_login.py +0 -0
  17. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_public_api.py +0 -0
  18. {vilvik-0.2.2 → vilvik-0.3.0}/tests/test_push.py +0 -0
  19. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/__init__.py +0 -0
  20. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/__main__.py +0 -0
  21. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/_capture.py +0 -0
  22. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/_credentials.py +0 -0
  23. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/_extract.py +0 -0
  24. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/_http.py +0 -0
  25. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/exceptions.py +0 -0
  26. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/login.py +0 -0
  27. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/push.py +0 -0
  28. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik/run.py +0 -0
  29. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik.egg-info/SOURCES.txt +0 -0
  30. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik.egg-info/dependency_links.txt +0 -0
  31. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik.egg-info/entry_points.txt +0 -0
  32. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik.egg-info/requires.txt +0 -0
  33. {vilvik-0.2.2 → vilvik-0.3.0}/vilvik.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vilvik
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Summary: Official Python SDK for the Vilvik optimization cloud API.
5
5
  Author-email: Vilvik <ahmed.f.gad@gmail.com>
6
6
  License: MIT
@@ -173,6 +173,44 @@ def test_results_continue_run(mock_api, client):
173
173
  assert body == {"sol_per_pop": 200}
174
174
 
175
175
 
176
+ def test_results_delete(mock_api, client):
177
+ mock_api.add("DELETE", f"{BASE}/results/res_1", status=204)
178
+ # Must not raise and returns None on 204.
179
+ assert client.results.delete("res_1") is None
180
+
181
+
182
+ def test_results_update_sends_patch_and_returns_result(mock_api, client):
183
+ mock_api.add(
184
+ "PATCH",
185
+ f"{BASE}/results/res_1",
186
+ json={
187
+ "id": "res_1",
188
+ "submission_id": "sub_abc",
189
+ "name": "renamed result",
190
+ "is_shared": True,
191
+ },
192
+ )
193
+ r = client.results.update("res_1", name="renamed result", is_shared=True)
194
+ assert mock_api.calls[0].request.method == "PATCH"
195
+ body = json.loads(mock_api.calls[0].request.body)
196
+ assert body == {"name": "renamed result", "is_shared": True}
197
+ assert r.name == "renamed result"
198
+ assert r.is_shared is True
199
+
200
+
201
+ def test_results_update_sends_only_provided_fields(mock_api, client):
202
+ """Partial update: passing only is_shared=False must send just that key
203
+ (False is a real value, not 'unset')."""
204
+ mock_api.add(
205
+ "PATCH",
206
+ f"{BASE}/results/res_1",
207
+ json={"id": "res_1", "submission_id": "sub_abc", "is_shared": False},
208
+ )
209
+ client.results.update("res_1", is_shared=False)
210
+ body = json.loads(mock_api.calls[0].request.body)
211
+ assert body == {"is_shared": False}
212
+
213
+
176
214
  def test_wait_for_returns_result_when_submission_succeeds(mock_api, client, monkeypatch):
177
215
  monkeypatch.setattr("vilvik.client.time.sleep", lambda *_a, **_k: None)
178
216
  # First poll: still running. Second poll: succeeded. Then list returns one row.
@@ -0,0 +1 @@
1
+ __version__ = "0.3.0"
@@ -141,6 +141,30 @@ class Results(_Resource):
141
141
  items = [Result.from_api(row) for row in payload.get("data", [])]
142
142
  return Page(items=items, next_cursor=payload.get("next_cursor"), raw=payload)
143
143
 
144
+ def update(
145
+ self,
146
+ result_id: str,
147
+ *,
148
+ name: Optional[str] = None,
149
+ is_shared: Optional[bool] = None,
150
+ ) -> Result:
151
+ """PATCH /results/{id} — rename a result or change its shared flag.
152
+
153
+ Only the fields you pass are sent, so `is_shared=False` updates just
154
+ that flag. Returns the updated result.
155
+ """
156
+ body: Dict[str, Any] = {}
157
+ if name is not None:
158
+ body["name"] = name
159
+ if is_shared is not None:
160
+ body["is_shared"] = is_shared
161
+ payload = self._t.request("PATCH", f"/results/{result_id}", json_body=body)
162
+ return Result.from_api(payload)
163
+
164
+ def delete(self, result_id: str) -> None:
165
+ """DELETE /results/{id} — remove a result. The submission is untouched."""
166
+ self._t.request("DELETE", f"/results/{result_id}")
167
+
144
168
  def continue_run(
145
169
  self,
146
170
  result_id: str,
@@ -70,6 +70,8 @@ class Result:
70
70
 
71
71
  id: str
72
72
  submission_id: str
73
+ name: Optional[str] = None
74
+ is_shared: Optional[bool] = None
73
75
  best_fitness: Optional[float] = None
74
76
  best_solution: Optional[List[Any]] = None
75
77
  num_generations_ran: Optional[int] = None
@@ -82,6 +84,8 @@ class Result:
82
84
  return cls(
83
85
  id=str(data.get("id", "")),
84
86
  submission_id=str(data.get("submission_id", "")),
87
+ name=data.get("name"),
88
+ is_shared=data.get("is_shared"),
85
89
  best_fitness=data.get("best_fitness"),
86
90
  best_solution=data.get("best_solution"),
87
91
  num_generations_ran=data.get("num_generations_ran"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vilvik
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Summary: Official Python SDK for the Vilvik optimization cloud API.
5
5
  Author-email: Vilvik <ahmed.f.gad@gmail.com>
6
6
  License: MIT
@@ -1 +0,0 @@
1
- __version__ = "0.2.2"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes