Перейти к основному содержимому

Python

Пакет для Python читает тот же .tdc-конфиг и при том же сиде выдаёт тот же результат, что и реализации на TypeScript, Java, C# и Rust — эта межъязыковая гарантия и есть одно из ключевых обещаний TDC.

Где взять

На PyPI — версия 0.3.2
pip install tdcv2

Ставит и библиотеку, и команду tdcv2, а стартовый набор паков лежит внутри колеса. Полная картина — на странице Установка.

Как пользоваться

from tdcv2 import TDC

data = TDC(config_file="users.tdc")
print(data)

for row in data:
print(row["Gender"])

data.write_file("users.csv")

Весь вывод — это str(data), строки — то, по чему идёт цикл, одна строка — data[3], а сколько их всего — len(data): объект ведёт себя как обычный питоновский.

Рядом с этим пакет отзывается на имена, общие для всех реализаций — to_string, to_array, iterate, get_at, to_columns, write_file, seed_info, preflight, — так что пример, написанный на другом языке, читается здесь без перевода. См. одни и те же имена везде. Собственные питоновские to_list, rows, uses_http, diagnostics, count и engine не затронуты и не устарели.

Разбираться в диагностике удобно через CLI: tdcv2 check печатает те же ошибки с подсветкой места в конфиге.

Одно значение без конфига

Пакет экспортирует ещё и tdc — он вытягивает одно значение из тех же пакетов данных, которые читает конфиг: ни файла, ни <env>, один вызов.

from tdcv2 import tdc

tdc.person.lastName() # Jones
tdc.country.usa.docs.ssn() # 699209702, с настоящими контрольными цифрами
tdc.person.lastName.many(5) # сразу пять
tdc.seed("demo").locale("ru").person.lastName() # закреплено и по-русски

Сегменты здесь остаются в camelCase, в отличие от имён методов выше. Это адреса, которые уже несут пакеты, а не идентификаторы, выбранные этим пакетом: person.lastName обязан читаться одинаково в конфиге, в справочнике и в четырёх других реализациях. Вся поверхность — на странице По одному значению.