dump_detective

dump_detective(file)
Параметры:

file (str | Path | BufferedReader) – Путь к файлу или файловый объект

Результат:

Объект читателя соответствующего формата

Тип результата:

PGCopyReader | PGPackReader | NativeReader

Исключение:

ValueError – Если передан неподдерживаемый тип файла

Автоматическое определение формата дампа и создание соответствующего читателя.

Описание:

Анализирует заголовок файла и определяет его формат, возвращая готовый объект для чтения данных. Поддерживает все форматы, используемые в системе DBHose.

Определяемые форматы:

  1. PGPack - сигнатура PGPACK\n\x00

  2. PGCopy - сигнатура PGCOPY\n\xff

  3. Native - любой другой файл (определение по исключению)

Поддерживаемые входные типы:

  • Строка с путем к файлу

  • Объект pathlib.Path

  • Файловый объект (BufferedReader, BytesIO)

  • Любой объект с методом read()

Примеры использования:

# Определение по пути к файлу
reader = dump_detective("data.pgpack")
print(type(reader))  # <class 'PGPackReader'>

# Определение по файловому объекту
with open("unknown_dump.bin", "rb") as f:
    reader = dump_detective(f)
    # Автоматическое определение формата

# Использование в цепочке
data = list(dump_detective("archive.native").to_rows())

Особенности:

  • Автоматическое определение сжатия (через define_reader)

  • Сохранение позиции в файле при определении

  • Возврат готового к использованию объекта читателя

  • Поддержка всех форматов DBHose без явного указания типа

Использование:

Для универсального открытия файлов дампов без необходимости знать их точный формат заранее.