def test_artifact_extension(tmp_path: Path) -> None: a0 = Artifact(tmp_path / 'a0') a0.b = [b'hello'] a0.c__bin = data_file(tmp_path / 'c0.bin') a0.d = {'e': [[0.0, 1.0]], 'f.bin': data_file(tmp_path / 'f0.bin')} a1 = Artifact(tmp_path / 'a1') a1.b = [b'good', b'bye'] a1.c__bin = data_file(tmp_path / 'c1.bin') a1.d = {'e': np.empty((0, 2)), 'f.bin': data_file(tmp_path / 'f1.bin')} a2 = Artifact(tmp_path / 'a2') a2.extend('subartifact', a0) a2.extend('subartifact', a1) assert_artifact_equals( a2, { 'subartifact': { 'b': [b'hello', b'good', b'bye'], 'c.bin': data_file_concat(tmp_path / 'c2.bin', [tmp_path / 'c0.bin', tmp_path / 'c1.bin']), 'd': { 'e': [[0.0, 1.0]], 'f.bin': data_file_concat( tmp_path / 'f2.bin', [tmp_path / 'f0.bin', tmp_path / 'f1.bin']) } } })
def test_opaque_file_deletion(tmp_path: Path) -> None: a = Artifact(tmp_path / 'a') a.b__bin = data_file(tmp_path / 'b.bin') a.c__bin = data_file(tmp_path / 'c.bin') a.d = [7, 8] a.e = {'blue': b'jeans'} a.f__bin = data_file(tmp_path / 'data.bin') del a.b__bin del a['c.bin'] assert_artifact_equals(a, { 'd': [7, 8], 'e': { 'blue': b'jeans' }, 'f.bin': tmp_path / 'data.bin' })