diff --git a/src/dabdatasync/datasync.py b/src/dabdatasync/datasync.py index b71dc4f..808507e 100644 --- a/src/dabdatasync/datasync.py +++ b/src/dabdatasync/datasync.py @@ -35,6 +35,8 @@ def urljoin(*args): class A_DataSync_Compressor(ABC): """abstract compressor class""" + suffix: str + @abstractmethod def compress(self, path_in: Path, file_out: IO): """compress method - virtual""" @@ -47,6 +49,8 @@ class A_DataSync_Compressor(ABC): class DataSync_Compressor_targz(A_DataSync_Compressor): """Concrete compressor class - .tar.gz compressor""" + suffix: str = ".tar.gz" + def compress(self, path_in: Path, file_out: IO): """compress method - .tar.gz concrete""" with tarfile.open(fileobj=file_out, mode="w:gz") as tar: @@ -64,7 +68,6 @@ class A_DataSync_Record(BaseModel, ABC): name: str rec_type: str value: str - suffix: str @abstractmethod def compress(self, compressor: A_DataSync_Compressor, file_out: IO) -> None: @@ -100,7 +103,6 @@ class C_DataSync_Record_FS(A_DataSync_Record): """Concrete DataSync Record class - FileSystem""" rec_type: str = "fs" - suffix: str = ".tar.gz" path: Optional[Path] = None def model_post_init(self, __context) -> None: @@ -189,8 +191,8 @@ class I_DataSync(ABC): self.connect() with TemporaryDirectory() as tmpdir: for datasync_record in self.ar_datasync_record: - self._impl_read_data(Path(datasync_record.name + datasync_record.suffix), Path(tmpdir)) - datasync_record.decompress(self.compressor, Path(tmpdir) / (datasync_record.name + datasync_record.suffix)) + self._impl_read_data(Path(datasync_record.name + self.compressor.suffix), Path(tmpdir)) + datasync_record.decompress(self.compressor, Path(tmpdir) / (datasync_record.name + self.compressor.suffix)) @abstractmethod def _impl_read_data(self, file_in: Path, file_out: Path) -> None: @@ -202,7 +204,7 @@ class I_DataSync(ABC): self._impl_wipe_data() for datasync_record in self.ar_datasync_record: try: - with NamedTemporaryFile("wb", suffix=datasync_record.suffix, delete=False) as tmp_file: + with NamedTemporaryFile("wb", suffix=self.compressor.suffix, delete=False) as tmp_file: datasync_record.compress(self.compressor, tmp_file) tmp_file.seek(0) tmp_file.close() diff --git a/test/test_datasync.py b/test/test_datasync.py index c055b32..c031ff0 100644 --- a/test/test_datasync.py +++ b/test/test_datasync.py @@ -49,8 +49,6 @@ class TestDabDataSync(unittest.TestCase): self.assertEqual(datasync.ar_datasync_record[1].rec_type, "fs") self.assertEqual(datasync.ar_datasync_record[0].value, "test/test_data") self.assertEqual(datasync.ar_datasync_record[1].value, "test/test_data2/SAVE_FILE.txt") - self.assertEqual(datasync.ar_datasync_record[0].suffix, ".tar.gz") - self.assertEqual(datasync.ar_datasync_record[1].suffix, ".tar.gz") with open(testdir_path / "test_data" / "SAVE_FILE.txt", "rt", encoding="utf-8") as testfile: self.assertEqual(testfile.read(), "SAVED_VALUE")