tensorfs 0.3.79__tar.gz → 0.3.80__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.
- {tensorfs-0.3.79 → tensorfs-0.3.80}/Cargo.lock +2 -2
- {tensorfs-0.3.79 → tensorfs-0.3.80}/Cargo.toml +1 -1
- {tensorfs-0.3.79 → tensorfs-0.3.80}/PKG-INFO +1 -1
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/pull.rs +3 -1
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/tests.rs +64 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/pyproject.toml +1 -1
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/Cargo.toml +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/build.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/examples/h3-swiglu-layout.md +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/examples/optional-cache-backfill.md +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/examples/resident-conversion.md +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/examples/resident_conversion_profile.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/asset_update.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/b64.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/ckpt.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/conform.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/ensure.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/fetch.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/ingest.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/main.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/rd.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/repo.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/snap.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/bin/tfs/watch.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/cache_roots.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/canon.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/capability.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/catalog/lock.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/catalog.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/cbor.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/checkpoint.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/checkpoint_root.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/corpus.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/adoption.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/companion_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/estimate.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/graft_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/group_commit_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/history_cost_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/part_rows_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/progress.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/resume_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/retention.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived/roots.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/derived.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/descriptors.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/disk.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/dtype.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/durability.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ensure/admission.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ensure/flight.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ensure.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/err.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/fetch.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/filesystem_identity.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/fill.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/fit.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/gc.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/header.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/home.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ids.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/carrier.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/convert.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/custody.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/fingerprint.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/gguf.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/h3_lora.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/journal.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/mod.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/narrow.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/preflight.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/routes/anima.routes.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/routes/anima.spec.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/routes/sdxl.routes.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/routes/sdxl.spec.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/routes.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/source.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/stamp.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/transaction.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/jcs.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/lib.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/limits.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/machine.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/manifest.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/meta.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/project.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/providers.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/read.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/receipt.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/reclaim.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/registry.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/relation.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/repo_cache.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/repository.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/sha256.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/source_artifact.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/spec.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/staging.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/stats.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/storage.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/store.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/api.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/http.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/http_reuse_tests.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/hub.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/ledger.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/memory.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/mod.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/pace.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/policy.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/prefix.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/push.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/ranged.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/transport/speculate.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/unsynced.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/vectors.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/additive_fields.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/anima_hf_profile.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/as_is.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/catalog_owner_probe.c +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/checkpoint_roots.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/civitai_anima.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/civitai_sdxl_profile.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/ensure.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fd_budget.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fd_headroom.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fetch_url_progress.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fit.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/blobs.jsonl +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/expected_list.jsonl +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/expected_repository.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/expected_rows.jsonl +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/header.cbor +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/manifest.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/mutation.json +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/foreign_json.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/h3_lora.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/h3_swiglu.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/home.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/hub_tls.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/import_tree.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/instrument_profiles.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/liveness.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/qwen_image21_profile.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/read_plan.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/reclaim.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/reclaim_run.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/repo_cache.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/repo_store.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/resident_admission.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/routed_single_file.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/sha256_backends.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/sharded_cas.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/source_artifacts.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/source_download.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/source_plan.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/source_prefixes.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/source_preflight.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/staging.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/store_boundaries.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/tensor_schema.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/transfer_memory.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/trust_index.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/version.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/write_through.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/Cargo.toml +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/src/docs.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/src/ensure.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/src/errors.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/src/ingest.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/src/lib.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-py/src/store.rs +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/__init__.py +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/_derived_channel.py +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/_ext.pyi +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/_source_channel.py +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/_tensors.py +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/derived.py +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/errors.py +0 -0
- {tensorfs-0.3.79 → tensorfs-0.3.80}/python/tensorfs/py.typed +0 -0
|
@@ -439,7 +439,7 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
|
439
439
|
|
|
440
440
|
[[package]]
|
|
441
441
|
name = "tensorfs-core"
|
|
442
|
-
version = "0.3.
|
|
442
|
+
version = "0.3.80"
|
|
443
443
|
dependencies = [
|
|
444
444
|
"fs2",
|
|
445
445
|
"libc",
|
|
@@ -454,7 +454,7 @@ dependencies = [
|
|
|
454
454
|
|
|
455
455
|
[[package]]
|
|
456
456
|
name = "tensorfs-py"
|
|
457
|
-
version = "0.3.
|
|
457
|
+
version = "0.3.80"
|
|
458
458
|
dependencies = [
|
|
459
459
|
"pyo3",
|
|
460
460
|
"tensorfs-core",
|
|
@@ -1396,7 +1396,9 @@ pub fn pull(request: &PullRequest<'_>) -> Result<PullReport> {
|
|
|
1396
1396
|
.or_else(|| pinned_local_closure(request))
|
|
1397
1397
|
{
|
|
1398
1398
|
if let Ok((plan, report)) = plan_against_store(request, &closure) {
|
|
1399
|
-
|
|
1399
|
+
// A canceled pull can land every object before recording its source.
|
|
1400
|
+
// Supplied closures still need that custody committed below.
|
|
1401
|
+
if plan.wanted.is_empty() && records_checkpoint(request.store, &closure) {
|
|
1400
1402
|
if let Some(observer) = request.on_plan {
|
|
1401
1403
|
observer(&plan);
|
|
1402
1404
|
}
|
|
@@ -1290,6 +1290,70 @@ fn pull_records_the_release_it_resolved() {
|
|
|
1290
1290
|
let _ = std::fs::remove_dir_all(root);
|
|
1291
1291
|
}
|
|
1292
1292
|
|
|
1293
|
+
#[test]
|
|
1294
|
+
fn ensure_records_source_after_cancellation_lands_the_last_object() {
|
|
1295
|
+
let root = temporary("ensure-canceled-custody");
|
|
1296
|
+
let store = Store::init(&root).unwrap();
|
|
1297
|
+
let checkpoint = Arc::new(checkpoint(3, 8 * 1024));
|
|
1298
|
+
let origin = hub_origin(Arc::clone(&checkpoint), |_, _| None);
|
|
1299
|
+
let policy = SourcePolicy::default();
|
|
1300
|
+
let token = super::PullCancellation::default();
|
|
1301
|
+
let landed = AtomicUsize::new(0);
|
|
1302
|
+
let on_object = |_: &ObjectRef, _: u64, _: ObjectSource| {
|
|
1303
|
+
if landed.fetch_add(1, Ordering::Relaxed) + 1 == checkpoint.bodies.len() {
|
|
1304
|
+
// Every immutable object is admitted, but pull has not recorded the source.
|
|
1305
|
+
token.cancel();
|
|
1306
|
+
}
|
|
1307
|
+
};
|
|
1308
|
+
let mut canceled = request_for(&store, &origin.base, &policy);
|
|
1309
|
+
canceled.cancellation = Some(token.clone());
|
|
1310
|
+
canceled.on_object = Some(&on_object);
|
|
1311
|
+
assert_eq!(pull(&canceled).unwrap_err().code, Code::TRANSFER_FAILED);
|
|
1312
|
+
assert_eq!(landed.load(Ordering::Relaxed), checkpoint.bodies.len());
|
|
1313
|
+
assert_eq!(
|
|
1314
|
+
crate::checkpoint_root::check_source(&store, "acme/model", &checkpoint.manifest)
|
|
1315
|
+
.unwrap_err()
|
|
1316
|
+
.code,
|
|
1317
|
+
Code::REPOSITORY_ABSENT
|
|
1318
|
+
);
|
|
1319
|
+
let (held, _) = FetchPlan::of(
|
|
1320
|
+
&store,
|
|
1321
|
+
"after-cancel",
|
|
1322
|
+
&checkpoint.manifest,
|
|
1323
|
+
&checkpoint.objects,
|
|
1324
|
+
)
|
|
1325
|
+
.unwrap();
|
|
1326
|
+
assert!(held.wanted.is_empty(), "cancellation must retain all bytes");
|
|
1327
|
+
|
|
1328
|
+
// ensure supplies its resolved closure to pull. An empty wanted set must still
|
|
1329
|
+
// complete the source record that the canceled flight never committed.
|
|
1330
|
+
let refspec = format!("acme/model@r1@{}", checkpoint.manifest.id());
|
|
1331
|
+
let mut resumed =
|
|
1332
|
+
crate::ensure::Request::new(&store, &origin.base, &refspec, &Anonymous, &policy);
|
|
1333
|
+
resumed.lane = "public";
|
|
1334
|
+
resumed.cancellation = Some(super::PullCancellation::default());
|
|
1335
|
+
let calls = origin.total_hits();
|
|
1336
|
+
let presigns = origin.hits("/v1/tensorfs/presign");
|
|
1337
|
+
let result = crate::ensure::ensure(&resumed).unwrap();
|
|
1338
|
+
assert_eq!(result.bytes_held, held.declared_bytes());
|
|
1339
|
+
assert_eq!(result.bytes_fetched, 0);
|
|
1340
|
+
assert_eq!(origin.total_hits() - calls, 1, "only resolve the closure");
|
|
1341
|
+
assert_eq!(origin.hits("/v1/tensorfs/presign"), presigns);
|
|
1342
|
+
crate::checkpoint_root::check_source(&store, "acme/model", &checkpoint.manifest).unwrap();
|
|
1343
|
+
let census = crate::storage::Census::open(&root).unwrap();
|
|
1344
|
+
assert!(census.gc_plan(&[]).unwrap().is_empty());
|
|
1345
|
+
|
|
1346
|
+
// Once source custody exists, the pinned warm path stays entirely local.
|
|
1347
|
+
let opened = crate::catalog::connections_opened(&root);
|
|
1348
|
+
let calls = origin.total_hits();
|
|
1349
|
+
let warm = crate::ensure::ensure(&resumed).unwrap();
|
|
1350
|
+
assert_eq!(warm.bytes_fetched, 0);
|
|
1351
|
+
assert_eq!(warm.bytes_held, result.bytes_total);
|
|
1352
|
+
assert_eq!(origin.total_hits(), calls);
|
|
1353
|
+
assert_eq!(crate::catalog::connections_opened(&root), opened);
|
|
1354
|
+
let _ = std::fs::remove_dir_all(root);
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1293
1357
|
#[test]
|
|
1294
1358
|
fn corrupt_object_heals_into_wanted_and_refetches() {
|
|
1295
1359
|
let root = temporary("heal");
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/examples/optional-cache-backfill.md
RENAMED
|
File without changes
|
|
File without changes
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/examples/resident_conversion_profile.rs
RENAMED
|
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
|
|
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
|
|
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
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/src/ingest/routes/anima.routes.json
RENAMED
|
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
|
|
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
|
|
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
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/blobs.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/header.cbor
RENAMED
|
File without changes
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/manifest.json
RENAMED
|
File without changes
|
{tensorfs-0.3.79 → tensorfs-0.3.80}/crates/tensorfs-core/tests/fixtures/repo_apply/mutation.json
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|