vocker 0.3.1__tar.gz → 0.3.2__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 (35) hide show
  1. {vocker-0.3.1 → vocker-0.3.2}/CHANGELOG.md +6 -0
  2. {vocker-0.3.1/src/vocker.egg-info → vocker-0.3.2}/PKG-INFO +1 -1
  3. {vocker-0.3.1 → vocker-0.3.2}/pyproject.toml +1 -1
  4. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/repo/io.py +13 -0
  5. {vocker-0.3.1 → vocker-0.3.2/src/vocker.egg-info}/PKG-INFO +1 -1
  6. {vocker-0.3.1 → vocker-0.3.2}/tests/test_repo.py +2 -1
  7. {vocker-0.3.1 → vocker-0.3.2}/DESIGN.md +0 -0
  8. {vocker-0.3.1 → vocker-0.3.2}/MANIFEST.in +0 -0
  9. {vocker-0.3.1 → vocker-0.3.2}/README.md +0 -0
  10. {vocker-0.3.1 → vocker-0.3.2}/setup.cfg +0 -0
  11. {vocker-0.3.1 → vocker-0.3.2}/setup.py +0 -0
  12. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/__init__.py +0 -0
  13. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/__main__.py +0 -0
  14. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/cli.py +0 -0
  15. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/dedup.py +0 -0
  16. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/dedup_models.py +0 -0
  17. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/image.py +0 -0
  18. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/integer_to_path.py +0 -0
  19. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/multihash.py +0 -0
  20. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/py.typed +0 -0
  21. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/repo/__init__.py +0 -0
  22. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/repo/compression.py +0 -0
  23. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/system.py +0 -0
  24. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/util.py +0 -0
  25. {vocker-0.3.1 → vocker-0.3.2}/src/vocker/util_models.py +0 -0
  26. {vocker-0.3.1 → vocker-0.3.2}/src/vocker.egg-info/SOURCES.txt +0 -0
  27. {vocker-0.3.1 → vocker-0.3.2}/src/vocker.egg-info/dependency_links.txt +0 -0
  28. {vocker-0.3.1 → vocker-0.3.2}/src/vocker.egg-info/requires.txt +0 -0
  29. {vocker-0.3.1 → vocker-0.3.2}/src/vocker.egg-info/top_level.txt +0 -0
  30. {vocker-0.3.1 → vocker-0.3.2}/tests/__init__.py +0 -0
  31. {vocker-0.3.1 → vocker-0.3.2}/tests/conftest.py +0 -0
  32. {vocker-0.3.1 → vocker-0.3.2}/tests/test_dedup.py +0 -0
  33. {vocker-0.3.1 → vocker-0.3.2}/tests/test_image_venv.py +0 -0
  34. {vocker-0.3.1 → vocker-0.3.2}/tests/test_integer_to_path.py +0 -0
  35. {vocker-0.3.1 → vocker-0.3.2}/tests/test_manifest.py +0 -0
@@ -4,6 +4,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.3.2] - 2026-02-03
8
+
9
+ ### Fixed
10
+
11
+ - Fix `ImageNotFoundError` due to incorrect manifest parsing when reusing cached content.
12
+
7
13
  ## [0.3.1] - 2026-02-02
8
14
 
9
15
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vocker
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Docker-like manager for virtualenvs
5
5
  Author-email: Eduard Christian Dumitrescu <eduard.c.dumitrescu@gmail.com>
6
6
  License: General Public License v3
@@ -3,7 +3,7 @@ line-length = 100
3
3
 
4
4
  [project]
5
5
  name = "vocker"
6
- version = "0.3.1"
6
+ version = "0.3.2"
7
7
  description = "Docker-like manager for virtualenvs"
8
8
  readme = "README.md"
9
9
  license = { text = "General Public License v3" }
@@ -236,6 +236,15 @@ class RepoTransfer:
236
236
  req = self.make_manifest_link_request(digest, destination, dict(open_file_once=_open))
237
237
  self.dedup.run_batch([req])
238
238
 
239
+ if not reader.parser.eof:
240
+ # We skipped the download because we found cached content, so we need to feed the
241
+ # remaining cached content into the parser.
242
+ with destination.open("rb") as file:
243
+ file.seek(reader.input_position)
244
+ while block := file.read(65536):
245
+ _feed(block)
246
+ _feed(None)
247
+
239
248
  return digest, reader.out_verified_data
240
249
 
241
250
  @staticmethod
@@ -664,6 +673,10 @@ class ManifestNodeReader:
664
673
 
665
674
  self.out_verified_data = ManifestNode.from_cbor_decoded(hf, cbor2.loads(bytes(q2)))
666
675
 
676
+ @property
677
+ def input_position(self) -> int:
678
+ return self.parser.position + len(self.parser.queue)
679
+
667
680
  @classmethod
668
681
  def from_bytes(cls, data):
669
682
  (self := cls()).parser.feed(data).feed(None)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vocker
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Docker-like manager for virtualenvs
5
5
  Author-email: Eduard Christian Dumitrescu <eduard.c.dumitrescu@gmail.com>
6
6
  License: General Public License v3
@@ -81,12 +81,13 @@ def test_repo_end_to_end(tmp_path):
81
81
  run_cli(b2, ["repo", "remote", "add", "@foo", remote_path.as_uri()])
82
82
 
83
83
  _export_image(b2, "@foo", image_id, import_path, tmp_path / "vex")
84
+ _export_image(b2, "@foo", image_id, import_path, tmp_path / "vex2")
84
85
 
85
86
  # setup yet another system instance and clone the full thing, then export
86
87
  b3 = tmp_path / "b3"
87
88
  run_cli(b3, ["repo", "remote", "add", "@foo", remote_path.as_uri()])
88
89
  run_cli(b3, ["repo", "download", "@foo", "loc"])
89
- _export_image(b3, "loc", image_id, import_path, tmp_path / "vex2")
90
+ _export_image(b3, "loc", image_id, import_path, tmp_path / "vex3")
90
91
 
91
92
 
92
93
  def _export_image(b, source_repo: str, image_id: str, import_path: Path, export_path: Path):
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