0.8.0 (2023-05-31)
Критические изменения
-
Переименованы методы классов
FileConnection: -
get_directory→resolve_dir get_file→resolve_filelistdir→list_dirmkdir→create_dirrmdir→remove_dir
Мы считаем, что новое именование будет более последовательным.
Эти методы были не задокументированы в предыдущих версиях, но кто-то мог использовать их, поэтому это изменение не является обратно совместимым. (#36)
-
Класс
onetl.core.FileFilterустарел, его заменяют новые классы: -
onetl.file.filter.Glob onetl.file.filter.Regexponetl.file.filter.ExcludeDir
Старый класс будет удален в v1.0.0. (#43)
- Класс
onetl.core.FileLimitтакже устарел, его заменяетonetl.file.limit.MaxFilesCount.
Старый класс будет удален в v1.0.0. (#44)
- Изменено поведение метода
BaseFileLimit.reset.
Этот метод теперь возвращает self вместо None.
Возвращаемое значение может быть тем же объектом или его копией, это зависит от конкретной реализации. (#44)
FileDownloader.filterи.limitзаменены новыми опциями.filtersи.limits:
FileDownloader(
...,
filter=FileFilter(glob="*.txt", exclude_dir="/path"),
limit=FileLimit(count_limit=10),
)
FileDownloader(
...,
filters=[Glob("*.txt"), ExcludeDir("/path")],
limits=[MaxFilesCount(10)],
)
Это позволяет разработчикам реализовывать свои собственные классы фильтров и лимитов, а также комбинировать их с существующими.
Старое поведение все еще поддерживается, но будет удалено в v1.0.0. (#45)
-
Удалено значение по умолчанию для
FileDownloader.limits, теперь пользователь должен явно передавать список лимитов. (#45) -
Классы из модуля
onetl.core:
from onetl.core import DBReader
from onetl.core import DBWriter
from onetl.core import FileDownloader
from onetl.core import FileUploader
перемещены в новые модули onetl.db и onetl.file:
from onetl.db import DBReader
from onetl.db import DBWriter
from onetl.file import FileDownloader
from onetl.file import FileUploader
Импорты из старого модуля onetl.core все еще можно использовать, но они помечены как устаревшие. Модуль будет удален в v1.0.0. (#46)
Features
- Добавлен метод
rename_dir.
Метод был добавлен к следующим подключениям:
FTPFTPSHDFSSFTPWebDAV
Он позволяет переименовывать/перемещать каталог со всем его содержимым в новое расположение / новый путь.
S3 не имеет каталогов, поэтому для этого подключения нет такого метода. (#40)
- Добавлен класс
onetl.file.FileMover.
Он позволяет перемещать файлы между каталогами удаленной файловой системы.
Сигнатура почти такая же, как и в FileDownloader, но без поддержки HWM. (#42)
Improvements
-
Задокументированы все публичные методы в классах
FileConnection: -
download_file resolve_dirresolve_fileget_statis_diris_filelist_dircreate_dirpath_existsremove_filerename_fileremove_dirupload_file-
walk(#39) -
Обновлена документация метода
checkдля всех подключений - добавлен пример использования и задокументирован тип результата. (#39) -
Добавлен новый тип исключения
FileSizeMismatchError.
Если целевой файл после загрузки/выгрузки имеет размер, отличный от исходного методы connection.download_file и connection.upload_file теперь вызывают новый тип исключения вместо RuntimeError. (#39)
-
Добавлен новый тип исключения
DirectoryExistsError- он возникает, если целевой каталог уже существует. (#40) -
Улучшено логирование исключений
FileDownloader/FileUploader.
Если включено логирование DEBUG, то вместо вывода только сообщения об исключении выводится исключение со стектрейсом . (#42)
-
Обновлена документация
FileUploader. -
В документацию добавлено примечание, что класс не поддерживает стратегии чтения.
- Добавлены примеры использования метода
runс явной передачей списка файлов, посредством как абсолютных, так и относительных путей. -
Исправлены устаревшие импорты и имена классов в примерах. (#42)
-
Обновлена документация класса
DownloadResult- исправлены устаревшие импорты и имена классов. (#42) -
Улучшен раздел документации по фильтрам файлов.
Задокументирован интерфейсный класс onetl.base.BaseFileFilter и функция match_all_filters. (#43)
- Улучшен раздел документации по лимитам файлов.
Задокументирован интерфейсный класс onetl.base.BaseFileLimit и функции limits_stop_at / limits_reached / reset_limits. (#44)
- Добавлен changelog.
Changelog генерируется из отдельных файлов новостей с использованием towncrier. (#47)
Misc
-
Улучшен CI для тестов.
-
Если разработчик не изменил исходный код конкретного коннектора или его зависимости, запускать тесты только для максимально поддерживаемых версий Spark, Python, Java и поключения к БД или файловому хранилищу.
- Если разработчик внес какие-либо изменения в конкретный коннектор, в основные классы или в зависимости, запускать тесты для минимальной и максимальной версий.
- Раз в неделю запускать все тесты для минимальной и последней версий, чтобы выявить критические изменения в зависимостях.
- Минимальная протестированная версия Spark - 2.3.1 вместо 2.4.8. (#32)