instance-repo 1.0.9.dev5__tar.gz → 1.0.9.dev6__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 (47) hide show
  1. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/PKG-INFO +1 -1
  2. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/__init__.py +1 -1
  3. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/instances.py +46 -0
  4. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/versions.py +6 -3
  5. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo.egg-info/PKG-INFO +1 -1
  6. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/pyproject.toml +1 -1
  7. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/README.md +0 -0
  8. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/_routing.py +0 -0
  9. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/_site_defaults.py +0 -0
  10. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/bootstrap.py +0 -0
  11. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/cache.py +0 -0
  12. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/cli.py +0 -0
  13. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/__init__.py +0 -0
  14. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/benchmarks.py +0 -0
  15. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/config.py +0 -0
  16. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/datasets.py +0 -0
  17. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/images.py +0 -0
  18. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/reports.py +0 -0
  19. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/scaffold.py +0 -0
  20. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/splits.py +0 -0
  21. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/clients/workflows.py +0 -0
  22. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/concurrency.py +0 -0
  23. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/content.py +0 -0
  24. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/endpoints.py +0 -0
  25. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/errors.py +0 -0
  26. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/image.py +0 -0
  27. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/layout.py +0 -0
  28. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/loader.py +0 -0
  29. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/models.py +0 -0
  30. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/paths.py +0 -0
  31. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/release.py +0 -0
  32. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/repo.py +0 -0
  33. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/retry.py +0 -0
  34. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/store/__init__.py +0 -0
  35. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/store/acr.py +0 -0
  36. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/store/base.py +0 -0
  37. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/store/oss.py +0 -0
  38. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/store/registry.py +0 -0
  39. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/tasktoml.py +0 -0
  40. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/transport.py +0 -0
  41. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo/validate.py +0 -0
  42. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo.egg-info/SOURCES.txt +0 -0
  43. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo.egg-info/dependency_links.txt +0 -0
  44. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo.egg-info/entry_points.txt +0 -0
  45. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo.egg-info/requires.txt +0 -0
  46. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/instance_repo.egg-info/top_level.txt +0 -0
  47. {instance_repo-1.0.9.dev5 → instance_repo-1.0.9.dev6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instance-repo
3
- Version: 1.0.9.dev5
3
+ Version: 1.0.9.dev6
4
4
  Summary: InstanceRepo SDK — 评测 Instance 统一存储客户端(SDK-only;控制面由 apiserver 承载)
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -18,7 +18,7 @@ from .errors import (
18
18
  TransportError,
19
19
  )
20
20
 
21
- __version__ = "1.0.9.dev5"
21
+ __version__ = "1.0.9.dev6"
22
22
 
23
23
  __all__ = [
24
24
  "Repo", "load_instances",
@@ -714,6 +714,52 @@ class InstancesClient:
714
714
  return self._content.get(dataset, version, instance_id, split, dest,
715
715
  expected_digest=expected, layout=lay)
716
716
 
717
+ def pull_many(self, instance_ids: list[str], dataset: str, version: str,
718
+ dest_dir, *, split: str = "default",
719
+ concurrency: int = 8, continue_on_error: bool = False,
720
+ verify: bool = True) -> list[Path]:
721
+ """Batch-download instances concurrently (parallel counterpart of :meth:`pull`).
722
+
723
+ Uses :func:`map_concurrent` to download up to *concurrency* instances in
724
+ parallel. Results preserve input order.
725
+
726
+ Parameters
727
+ ----------
728
+ instance_ids:
729
+ Instance IDs to download.
730
+ dataset, version, split:
731
+ Dataset coordinates (same semantics as :meth:`pull`).
732
+ dest_dir:
733
+ Root directory under which each instance is materialised.
734
+ concurrency:
735
+ Maximum number of parallel downloads (default 8).
736
+ continue_on_error:
737
+ ``False`` (default) — first failure raises ``ItemError`` (all-or-nothing).
738
+ ``True`` — failures are captured as ``ItemError`` placeholders in the
739
+ returned list; successful entries contain the downloaded :class:`Path`.
740
+ verify:
741
+ When ``True`` (default), validate content digest against registry
742
+ metadata (see :meth:`pull`).
743
+
744
+ Returns
745
+ -------
746
+ list[Path]
747
+ Downloaded paths in the same order as *instance_ids*.
748
+ When *continue_on_error* is ``True``, failed entries are
749
+ ``ItemError`` instances instead of paths.
750
+ """
751
+ ids = list(instance_ids)
752
+ if not ids:
753
+ return []
754
+ dest = Path(dest_dir)
755
+
756
+ def _one(iid):
757
+ return self.pull(dataset, version, iid, dest,
758
+ split=split, verify=verify)
759
+
760
+ return map_concurrent(_one, ids, concurrency=concurrency,
761
+ return_exceptions=continue_on_error)
762
+
717
763
 
718
764
  def _tags(metadata: dict) -> dict:
719
765
  t = metadata.get("tags", {})
@@ -376,10 +376,13 @@ class VersionsClient:
376
376
  "storage_type": storage_type, "status": status}
377
377
  if splits:
378
378
  body["splits"] = splits
379
+ # environment 必须放 query(apiserver createVersionRequest 无该字段,
380
+ # 只从 datasetEnvironmentFromQuery 读);放 body 会被静默丢弃导致
381
+ # 版本落到默认 online 而 list/get/update 走 profile 派生的 pre。
382
+ q = f"dataset_name={quote(dataset, safe='')}"
379
383
  if env:
380
- body["environment"] = env
381
- data = self._t.post(
382
- f"{self._BASE}?dataset_name={quote(dataset, safe='')}", body)
384
+ q += f"&environment={quote(env, safe='')}"
385
+ data = self._t.post(f"{self._BASE}?{q}", body)
383
386
  return DatasetVersion(**_pick(data))
384
387
 
385
388
  def update(self, dataset: str, version: str, *, status: str | None = None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: instance-repo
3
- Version: 1.0.9.dev5
3
+ Version: 1.0.9.dev6
4
4
  Summary: InstanceRepo SDK — 评测 Instance 统一存储客户端(SDK-only;控制面由 apiserver 承载)
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "instance-repo"
7
- version = "1.0.9.dev5"
7
+ version = "1.0.9.dev6"
8
8
  description = "InstanceRepo SDK — 评测 Instance 统一存储客户端(SDK-only;控制面由 apiserver 承载)"
9
9
  requires-python = ">=3.10"
10
10
  readme = "README.md"