Skip to content

0.8.0 (2023-05-31)

Критические изменения

  • Переименованы методы классов FileConnection:

  • get_directoryresolve_dir

  • get_fileresolve_file
  • listdirlist_dir
  • mkdircreate_dir
  • rmdirremove_dir

Мы считаем, что новое именование будет более последовательным.

Эти методы были не задокументированы в предыдущих версиях, но кто-то мог использовать их, поэтому это изменение не является обратно совместимым. (#36)

  • Класс onetl.core.FileFilter устарел, его заменяют новые классы:

  • onetl.file.filter.Glob

  • onetl.file.filter.Regexp
  • onetl.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:
onETL < 0.8.0
FileDownloader(
    ...,
    filter=FileFilter(glob="*.txt", exclude_dir="/path"),
    limit=FileLimit(count_limit=10),
)
onETL >= 0.8.0
FileDownloader(
    ...,
    filters=[Glob("*.txt"), ExcludeDir("/path")],
    limits=[MaxFilesCount(10)],
)

Это позволяет разработчикам реализовывать свои собственные классы фильтров и лимитов, а также комбинировать их с существующими.

Старое поведение все еще поддерживается, но будет удалено в v1.0.0. (#45)

  • Удалено значение по умолчанию для FileDownloader.limits, теперь пользователь должен явно передавать список лимитов. (#45)

  • Классы из модуля onetl.core:

before
from onetl.core import DBReader
from onetl.core import DBWriter
from onetl.core import FileDownloader
from onetl.core import FileUploader

перемещены в новые модули onetl.db и onetl.file:

after
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.

Метод был добавлен к следующим подключениям:

  • FTP
  • FTPS
  • HDFS
  • SFTP
  • WebDAV

Он позволяет переименовывать/перемещать каталог со всем его содержимым в новое расположение / новый путь.

S3 не имеет каталогов, поэтому для этого подключения нет такого метода. (#40)

  • Добавлен класс onetl.file.FileMover.

Он позволяет перемещать файлы между каталогами удаленной файловой системы. Сигнатура почти такая же, как и в FileDownloader, но без поддержки HWM. (#42)

Improvements

  • Задокументированы все публичные методы в классах FileConnection:

  • download_file

  • resolve_dir
  • resolve_file
  • get_stat
  • is_dir
  • is_file
  • list_dir
  • create_dir
  • path_exists
  • remove_file
  • rename_file
  • remove_dir
  • upload_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)