Datasets documentation
Классы-конструкторы
Классы-конструкторы
Создатели
🤗 Datasets опирается на два основных класса в процессе построения набора данных: DatasetBuilder и BuilderConfig.
класс datasets.DatasetBuilder
< source >( cache_dir: typing.Optional[str] = Nonedataset_name: typing.Optional[str] = Noneconfig_name: typing.Optional[str] = Nonehash: typing.Optional[str] = Nonebase_path: typing.Optional[str] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonetoken: typing.Union[bool, str, NoneType] = Nonerepo_id: typing.Optional[str] = Nonedata_files: typing.Union[str, list, dict, datasets.data_files.DataFilesDict, NoneType] = Nonedata_dir: typing.Optional[str] = Nonestorage_options: typing.Optional[dict] = Nonewriter_batch_size: typing.Optional[int] = Noneconfig_id: typing.Optional[str] = None**config_kwargs )
Параметры
- cache_dir (
str, необязательный) — Каталог для кэширования данных. По умолчанию"~/.cache/huggingface/datasets". - dataset_name (
str, необязательный) — Имя набора данных, если оно отличается от имени сборщика. Полезно для упакованных сборщиков, таких как csv, imagefolder, audiofolder и т. д., чтобы отразить различия между наборами данных, использующими один и тот же упакованный сборщик. - config_name (
str, необязательный) — Имя конфигурации набора данных. Оно влияет на данные, генерируемые на диске. Разные конфигурации будут иметь собственные подкаталоги и версии. Если не указано, используется конфигурация по умолчанию (если она существует).Добавлено в 2.3.0
Параметр
nameбыл переименован вconfig_name. - hash (
str, необязательный) — Хеш, специфичный для кода сборщика датасета. Используется для обновления кэширующего каталога при обновлении кода сборщика датасета (чтобы избежать повторного использования устаревших данных). Типичный кэширующий каталог (определённый вself._relative_data_dir) —name/version/hash/. - base_path (
str, необязательный) — Базовый путь для относительных путей, используемых для загрузки файлов. Это может быть удалённый URL. - features (Features, необязательный) — Типы признаков, используемые с этим набором данных. Можно использовать, например, для изменения типов Features набора данных.
- token (
strилиbool, необязательный) — Строка или логическое значение, используемое в качестве Bearer-токена для удалённых файлов на Datasets Hub. ЕслиTrue, токен будет получен из"~/.huggingface". - repo_id (
str, необязательный) — ID репозитория набора данных. Используется для различения сборщиков с одинаковым именем, но из разных пространств имён, например, ID репозиториев “rajpurkar/squad” и “lhoestq/squad”. Во втором случае имя сборщика будет “lhoestq___squad”. - data_files (
strилиSequenceилиMapping, необязательный) — Путь (или пути) к исходному файлу (или файлам) данных. Требуется для сборщиков, таких как «csv» или «json», где пользователь должен указать файлы данных. Это могут быть как локальные, так и удалённые файлы. Для удобства можно использоватьDataFilesDict. - data_dir (
str, необязательный) — Путь к каталогу, содержащему исходные файлы данных. Используйте только в том случае, еслиdata_filesне передан; в этом случае это эквивалентно передачеos.path.join(data_dir, "**")в качествеdata_files. Для сборщиков, требующих ручной загрузки, это должен быть путь к локальному каталогу, содержащему вручную загруженные данные. - storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему датасета, если она есть. - writer_batch_size (
int, необязательный) — Размер батча, используемый ArrowWriter. Определяет количество образцов, удерживаемых в памяти перед записью, а также длину чанков arrow. Значение None означает, что ArrowWriter будет использовать значение по умолчанию. - **config_kwargs (дополнительные именованные аргументы) — именованные аргументы, передаваемые в соответствующий класс конфигурации сборщика, заданный в атрибуте класса DatasetBuilder.BUILDER_CONFIG_CLASS. Классом конфигурации сборщика является BuilderConfig или его подкласс.
Абстрактный базовый класс для всех наборов данных.
DatasetBuilder имеет три ключевых метода:
DatasetBuilder.info: Описывает набор данных, включая имена, типы, формы, версию, разбиения, цитирование и т. д.- DatasetBuilder.download_and_prepare(): загружает исходные данные и записывает их на диск.
- DatasetBuilder.as_dataset(): создаёт Dataset.
Некоторые DatasetBuilder предоставляют несколько вариантов набора данных, определяя подкласс BuilderConfig и принимая объект конфигурации (или её имя) при создании. Настраиваемые наборы данных предоставляют заранее определённый набор конфигураций в DatasetBuilder.builder_configs().
as_dataset
< source >( split: typing.Union[str, datasets.splits.Split, list[str], list[datasets.splits.Split], NoneType] = Nonein_memory = False )
Параметры
- split (
datasets.Split) — Какой подмножество данных вернуть. - verification_mode (VerificationMode или
str, по умолчаниюBASIC_CHECKS) — Режим проверки, определяющий, какие проверки выполнять для информации о загруженном/обработанном наборе данных (контрольные суммы/размер/разбивки/…).Добавлено в 2.9.1
- in_memory (
bool, по умолчаниюFalse) — Скопировать ли данные в оперативную память.
Возвращает Dataset для указанного split.
download_and_prepare
< source >( output_dir: typing.Optional[str] = Nonedownload_config: typing.Optional[datasets.download.download_config.DownloadConfig] = Nonedownload_mode: typing.Union[datasets.download.download_manager.DownloadMode, str, NoneType] = Noneverification_mode: typing.Union[datasets.utils.info_utils.VerificationMode, str, NoneType] = Nonedl_manager: typing.Optional[datasets.download.download_manager.DownloadManager] = Nonebase_path: typing.Optional[str] = Nonefile_format: str = 'arrow'max_shard_size: typing.Union[str, int, NoneType] = Nonenum_proc: typing.Optional[int] = Nonestorage_options: typing.Optional[dict] = None**download_and_prepare_kwargs )
Параметры
- output_dir (
str, необязательный) — Каталог для сохранения набора данных. По умолчанию используетсяcache_dir, этого сборщика, который по умолчанию находится в~/.cache/huggingface/datasets.Добавлено в 2.5.0
- download_config (
DownloadConfig, необязательный) — Конкретные параметры конфигурации загрузки. - download_mode (DownloadMode или
str, необязательный) — Выбирает режим загрузки/генерации, по умолчаниюREUSE_DATASET_IF_EXISTS. - verification_mode (VerificationMode или
str, по умолчаниюBASIC_CHECKS) — Режим проверки, определяющий, какие проверки выполнять для информации о загруженном/обработанном наборе данных (контрольные суммы/размер/разбивки/…).Добавлено в 2.9.1
- dl_manager (
DownloadManager, необязательный) — КонкретныйDownloadMangerдля использования. - base_path (
str, необязательный) — Базовый путь для относительных путей, используемых для загрузки файлов. Это может быть удалённый URL. Если не указано, вместо этого будет использовано значение атрибутаbase_path(self.base_path). - file_format (
str, необязательный) — Формат файлов данных, в которые будет записан набор данных. Поддерживаемые форматы: «arrow», «parquet». По умолчанию используется формат «arrow». Если формат указан как «parquet», то данные изображений и аудио встраиваются в файлы Parquet, а не ссылаются на локальные файлы.Добавлено в 2.5.0
- max_shard_size (
Union[str, int], необязательный) — Максимальное количество байт, записываемых в каждый шард, по умолчанию «500MB». Размер основан на размере данных без сжатия, поэтому на практике файлы шардов могут быть меньшеmax_shard_sizeблагодаря, например, сжатию Parquet.Добавлено в 2.5.0
- num_proc (
int, необязательный, по умолчаниюNone) — Количество процессов при загрузке и локальной генерации набора данных. По умолчанию многопоточность отключена.Добавлено в 2.7.0
- storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему кэширования, если она используется.Добавлено в 2.5.0
- **download_and_prepare_kwargs (дополнительные именованные аргументы) — Именованные аргументы.
Загружает и подготавливает набор данных для чтения.
Пример:
Скачайте и подготовьте набор данных в виде файлов Arrow, которые можно загрузить как Dataset с помощью builder.as_dataset():
>>> from datasets import load_dataset_builder
>>> builder = load_dataset_builder("cornell-movie-review-data/rotten_tomatoes")
>>> builder.download_and_prepare()Скачайте и подготовьте набор данных в виде разбитых на части файлов Parquet локально:
>>> from datasets import load_dataset_builder
>>> builder = load_dataset_builder("cornell-movie-review-data/rotten_tomatoes")
>>> builder.download_and_prepare("./output_dir", file_format="parquet")Скачайте и подготовьте набор данных в виде разбитых на части файлов Parquet в облачном хранилище:
>>> from datasets import load_dataset_builder
>>> storage_options = {"key": aws_access_key_id, "secret": aws_secret_access_key}
>>> builder = load_dataset_builder("cornell-movie-review-data/rotten_tomatoes")
>>> builder.download_and_prepare("s3://my-bucket/my_rotten_tomatoes", storage_options=storage_options, file_format="parquet")Возвращает путь к модулю этого класса или его подкласса.
класс datasets.GeneratorBasedBuilder
< source >( cache_dir: typing.Optional[str] = Nonedataset_name: typing.Optional[str] = Noneconfig_name: typing.Optional[str] = Nonehash: typing.Optional[str] = Nonebase_path: typing.Optional[str] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonetoken: typing.Union[bool, str, NoneType] = Nonerepo_id: typing.Optional[str] = Nonedata_files: typing.Union[str, list, dict, datasets.data_files.DataFilesDict, NoneType] = Nonedata_dir: typing.Optional[str] = Nonestorage_options: typing.Optional[dict] = Nonewriter_batch_size: typing.Optional[int] = Noneconfig_id: typing.Optional[str] = None**config_kwargs )
Базовый класс для наборов данных с генерацией данных на основе генераторов словарей.
GeneratorBasedBuilder — это вспомогательный класс, который абстрагирует значительную часть операций записи и чтения данных в DatasetBuilder. Он ожидает, что подклассы реализуют генераторы словарей признаков для каждого разбиения набора данных (_split_generators). Подробности описаны в документации методов.
класс datasets.ArrowBasedBuilder
< source >( cache_dir: typing.Optional[str] = Nonedataset_name: typing.Optional[str] = Noneconfig_name: typing.Optional[str] = Nonehash: typing.Optional[str] = Nonebase_path: typing.Optional[str] = Noneinfo: typing.Optional[datasets.info.DatasetInfo] = Nonefeatures: typing.Optional[datasets.features.features.Features] = Nonetoken: typing.Union[bool, str, NoneType] = Nonerepo_id: typing.Optional[str] = Nonedata_files: typing.Union[str, list, dict, datasets.data_files.DataFilesDict, NoneType] = Nonedata_dir: typing.Optional[str] = Nonestorage_options: typing.Optional[dict] = Nonewriter_batch_size: typing.Optional[int] = Noneconfig_id: typing.Optional[str] = None**config_kwargs )
Базовый класс для наборов данных с генерацией данных на основе функций загрузки Arrow (CSV/JSON/Parquet).
класс datasets.BuilderConfig
< source >( name: str = 'default'version: typing.Union[datasets.utils.version.Version, str, NoneType] = 0.0.0data_dir: typing.Optional[str] = Nonedata_files: typing.Union[datasets.data_files.DataFilesDict, datasets.data_files.DataFilesPatternsDict, NoneType] = Nonedescription: typing.Optional[str] = None )
Параметры
- name (
str, по умолчаниюdefault) — Имя конфигурации. - version (
Versionилиstr, по умолчанию0.0.0) — Версия конфигурации. - data_dir (
str, необязательный) — Путь к каталогу, содержащему исходные данные. - data_files (
strилиSequenceилиMapping, необязательный) — Путь (или пути) к исходному файлу (или файлам) данных. - description (
str, необязательный) — Человекочитаемое описание конфигурации.
Базовый класс для конфигурации данных DatasetBuilder.
Подклассы DatasetBuilder с параметрами конфигурации данных должны наследоваться от BuilderConfig и добавлять собственные свойства.
create_config_id
< source >( config_kwargs: dictcustom_features: typing.Optional[datasets.features.features.Features] = None )
Идентификатор конфигурации используется для создания каталога кэша. По умолчанию он равен имени конфигурации. Однако имени конфигурации недостаточно, чтобы получить уникальный идентификатор генерируемого набора данных, поскольку оно не учитывает:
- параметры конфигурации, которые можно использовать для переопределения атрибутов
- кастомные признаки, использованные для записи набора данных
- the data_files для наборов данных json/text/csv/pandas
Следовательно, идентификатор конфигурации — это просто имя конфигурации с необязательным суффиксом, основанным на этих параметрах.
Загрузить
класс datasets.DownloadManager
< source >( dataset_name: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonedownload_config: typing.Optional[datasets.download.download_config.DownloadConfig] = Nonebase_path: typing.Optional[str] = Nonerecord_checksums = False )
загрузить
< source >( url_or_urls ) → str or list or dict
Загрузить указанные URL-адреса.
По умолчанию для загрузки используется только один процесс. Чтобы изменить это поведение, передайте настраиваемое значение download_config.num_proc.
download_and_extract
< source >( url_or_urls ) → extracted_path(s)
Скачайте и распакуйте указанные url_or_urls.
extract
< source >( path_or_paths ) → extracted_path(s)
Извлечь указанные пути.
iter_archive
< source >( path_or_buf: typing.Union[str, _io.BufferedReader] ) → tuple[str, io.BufferedReader]
Итерация по файлам внутри архива.
iter_files
< source >( paths: typing.Union[str, list[str]] ) → str
Перебирайте пути к файлам.
класс datasets.StreamingDownloadManager
< source >( dataset_name: typing.Optional[str] = Nonedata_dir: typing.Optional[str] = Nonedownload_config: typing.Optional[datasets.download.download_config.DownloadConfig] = Nonebase_path: typing.Optional[str] = None )
Менеджер загрузок, использующий разделитель ”::” для навигации по (возможно, удалённым) сжатым архивам.
В отличие от обычного DownloadManager, методы download и extract не выполняют фактическую загрузку или извлечение
данных, а возвращают путь или URL, который можно открыть с помощью функции xopen, расширяющей
встроенную функцию open для потоковой передачи данных из удалённых файлов.
загрузить
< source >( url_or_urls ) → url(s)
Нормализация URL файлов, из которых выполняется потоковая передача данных.
Это ленивая версия DownloadManager.download для потоковой передачи.
download_and_extract
< source >( url_or_urls ) → url(s)
Подготовьте указанные url_or_urls для потоковой передачи (добавьте протокол извлечения).
Это ленивая версия DownloadManager.download_and_extract для потоковой передачи.
extract
< source >( url_or_urls ) → url(s)
Добавьте протокол извлечения для указанных URL для потоковой обработки.
Это ленивая версия DownloadManager.extract для потоковой обработки.
iter_archive
< source >( urlpath_or_buf: typing.Union[str, _io.BufferedReader] ) → tuple[str, io.BufferedReader]
Итерация по файлам внутри архива.
iter_files
< source >( urlpaths: typing.Union[str, list[str]] ) → str
Перебирайте файлы.
класс datasets.DownloadConfig
< source >( cache_dir: typing.Union[str, pathlib.Path, NoneType] = Noneforce_download: bool = Falseresume_download: bool = Falselocal_files_only: bool = Falseproxies: typing.Optional[dict] = Noneuser_agent: typing.Optional[str] = Noneextract_compressed_file: bool = Falseforce_extract: bool = Falsedelete_extracted: bool = Falseextract_on_the_fly: bool = Falseuse_etag: bool = Truenum_proc: typing.Optional[int] = Nonemax_retries: int = 1token: typing.Union[str, bool, NoneType] = Nonestorage_options: dict = <factory>download_desc: typing.Optional[str] = Nonedisable_tqdm: bool = False )
Параметры
- cache_dir (
strилиPath, необязательный) — Укажите каталог кэша для сохранения файла (перезаписывает каталог кэша по умолчанию). - force_download (
bool, по умолчаниюFalse) — ЕслиTrue, файл будет скачан повторно, даже если он уже находится в кэше. - resume_download (
bool, по умолчаниюFalse) — ЕслиTrue, возобновить загрузку, если обнаружен неполностью полученный файл. - proxies (
dict, необязательный) — Устарело и игнорируется. Вместо этого задайте переменные окруженияHTTP_PROXY/HTTPS_PROXYили настройте HTTP-клиент с помощью huggingface_hub.set_client_factory. - user_agent (
str, необязательный) — Необязательная строка или словарь, которые будут добавлены к user-agent в удалённых запросах. - extract_compressed_file (
bool, по умолчаниюFalse) — ЕслиTrueи путь указывает на файл zip или tar, распаковать архив в папку рядом с ним. - force_extract (
bool, по умолчаниюFalse) — ЕслиTrue, аextract_compressed_fileтакжеTrue, и архив уже был распакован, архив будет распакован повторно, а содержимое папки, в которую он был распакован, будет перезаписано. - delete_extracted (
bool, по умолчаниюFalse) — Удалять (или сохранять) извлечённые файлы. - extract_on_the_fly (
bool, по умолчаниюFalse) — ЕслиTrue, извлекает сжатые файлы в процессе их чтения. - use_etag (
bool, по умолчаниюTrue) — Использовать ли заголовок ответа HTTP ETag для проверки кэшированных файлов. - num_proc (
int, необязательный) — Количество процессов, запускаемых для параллельной загрузки файлов. - max_retries (
int, по умолчанию1) — Количество повторных попыток выполнения HTTP-запроса в случае его неудачи. - token (
strилиbool, необязательный) — Необязательная строка или логическое значение, используемое в качестве Bearer-токена для удалённых файлов на Datasets Hub. Если указаноTrueили параметр не задан, токен будет получен из~/.huggingface. - storage_options (
dict, необязательный) — Пары ключ/значение, передаваемые в файловую систему датасета, если она есть. - download_desc (
str, необязательный) — Описание, отображаемое вместе с индикатором прогресса во время загрузки файлов. - disable_tqdm (
bool, по умолчаниюFalse) — Отключает ли индикатор прогресса загрузки отдельных файлов
Конфигурация для нашего кэшируемого менеджера путей.
класс datasets.DownloadMode
< source >( valuenames = Nonemodule = Nonequalname = Nonetype = Nonestart = 1 )
Enum для определения способа обработки уже загруженных данных.
Режим по умолчанию — REUSE_DATASET_IF_EXISTS, который повторно использует как исходные загрузки, так и подготовленный набор данных, если они уже существуют.
Режимы генерации:
| Загрузки | Набор данных | |
|---|---|---|
REUSE_DATASET_IF_EXISTS (по умолчанию) | Повторное использование | Повторное использование |
REUSE_CACHE_IF_EXISTS | Повторное использование | Свежие |
FORCE_REDOWNLOAD | Свежие | Свежие |
Проверка
класс datasets.VerificationMode
< source >( valuenames = Nonemodule = Nonequalname = Nonetype = Nonestart = 1 )
Enum, определяющий, какие проверки верификации выполнять.
Режим по умолчанию — BASIC_CHECKS, который выполняет только базовые проверки, чтобы избежать замедления при первом создании/загрузке набора данных.
Режимы проверки:
| Проверки | |
|---|---|
ALL_CHECKS | Разделение проверок и валидности (количество файлов, контрольные суммы) загруженных файлов |
BASIC_CHECKS (по умолчанию) | Аналогично ALL_CHECKS, но без проверки загруженных файлов |
NO_CHECKS | None |
Разделения
класс datasets.SplitGenerator
< source >( name: strgen_kwargs: dict = <factory> )
Определяет информацию о разбиении для генератора.
Это следует использовать в качестве возвращаемого значения GeneratorBasedBuilder._split_generators.
См. GeneratorBasedBuilder._split_generators для получения дополнительной информации и примера
использования.
Enum для разбиений набора данных.
Наборы данных обычно разделяются на различные подмножества, используемые на разных этапах обучения и оценки.
TRAIN: обучающие данные.VALIDATION: данные для валидации. Если присутствуют, обычно используются как данные для оценки при итеративной доработке модели (например, при изменении гиперпараметров, архитектуры модели и т. д.).TEST: тестовые данные. На них вычисляются метрики. Как правило, не следует использовать их на этапе итераций модели, так как это может привести к переобучению.ALL: объединение всех определённых разбиений набора данных.
Все разбиения, включая композиции, наследуются от datasets.SplitBase.
См. руководство по разбиениям для получения дополнительной информации.
Пример:
>>> datasets.SplitGenerator(
... name=datasets.Split.TRAIN,
... gen_kwargs={"split_key": "train", "files": dl_manager.download_and extract(url)},
... ),
... datasets.SplitGenerator(
... name=datasets.Split.VALIDATION,
... gen_kwargs={"split_key": "validation", "files": dl_manager.download_and extract(url)},
... ),
... datasets.SplitGenerator(
... name=datasets.Split.TEST,
... gen_kwargs={"split_key": "test", "files": dl_manager.download_and extract(url)},
... )Дескриптор, соответствующий именованному разбиению (train, test, …).
Пример:
Каждый дескриптор можно комбинировать с другими с помощью сложения или среза:
split = datasets.Split.TRAIN.subsplit(datasets.percent[0:25]) + datasets.Split.TESTПолученное разбиение будет соответствовать 25% обучающей выборки, объединённой с 100% тестовой выборки.
Один и тот же split нельзя добавить дважды, поэтому следующий код завершится ошибкой:
split = (
datasets.Split.TRAIN.subsplit(datasets.percent[:25]) +
datasets.Split.TRAIN.subsplit(datasets.percent[75:])
) # Error
split = datasets.Split.TEST + datasets.Split.ALL # ErrorРаздел, соответствующий объединению всех определённых разделов набора данных.
класс datasets.ReadInstruction
< source >( split_namerounding = Nonefrom_ = Noneto = Noneunit = None )
Инструкция по чтению набора данных.
Примеры:
# The following lines are equivalent:
ds = datasets.load_dataset('ylecun/mnist', split='test[:33%]')
ds = datasets.load_dataset('ylecun/mnist', split=datasets.ReadInstruction.from_spec('test[:33%]'))
ds = datasets.load_dataset('ylecun/mnist', split=datasets.ReadInstruction('test', to=33, unit='%'))
ds = datasets.load_dataset('ylecun/mnist', split=datasets.ReadInstruction(
'test', from_=0, to=33, unit='%'))
# The following lines are equivalent:
ds = datasets.load_dataset('ylecun/mnist', split='test[:33%]+train[1:-1]')
ds = datasets.load_dataset('ylecun/mnist', split=datasets.ReadInstruction.from_spec(
'test[:33%]+train[1:-1]'))
ds = datasets.load_dataset('ylecun/mnist', split=(
datasets.ReadInstruction('test', to=33, unit='%') +
datasets.ReadInstruction('train', from_=1, to=-1, unit='abs')))
# The following lines are equivalent:
ds = datasets.load_dataset('ylecun/mnist', split='test[:33%](pct1_dropremainder)')
ds = datasets.load_dataset('ylecun/mnist', split=datasets.ReadInstruction.from_spec(
'test[:33%](pct1_dropremainder)'))
ds = datasets.load_dataset('ylecun/mnist', split=datasets.ReadInstruction(
'test', from_=0, to=33, unit='%', rounding="pct1_dropremainder"))
# 10-fold validation:
tests = datasets.load_dataset(
'ylecun/mnist',
[datasets.ReadInstruction('train', from_=k, to=k+10, unit='%')
for k in range(0, 100, 10)])
trains = datasets.load_dataset(
'ylecun/mnist',
[datasets.ReadInstruction('train', to=k, unit='%') + datasets.ReadInstruction('train', from_=k+10, unit='%')
for k in range(0, 100, 10)])from_spec
< source >( spec )
Создаёт экземпляр ReadInstruction из строки спецификации.
Примеры:
test: test split.
test + validation: test split + validation split.
test[10:]: test split, minus its first 10 records.
test[:10%]: first 10% records of test split.
test[:20%](pct1_dropremainder): first 10% records, rounded with the pct1_dropremainder rounding.
test[:-5%]+train[40%:60%]: first 95% of test + middle 20% of train.to_absolute
< source >( name2len )
Переведите инструкцию в список абсолютных инструкций.
Затем эти абсолютные инструкции складываются вместе.
Версия
класс datasets.Version
< source >( version_str: strdescription: typing.Optional[str] = Nonemajor: typing.Union[str, int, NoneType] = Noneminor: typing.Union[str, int, NoneType] = Nonepatch: typing.Union[str, int, NoneType] = None )
Версия набора данных MAJOR.MINOR.PATCH.