Skip to main content

Tools designed to simplify routine tasks for analysts, enabling faster and more efficient data processing and analysis

Project description

BobrTools


Содержание


Установка

Установить библиотеку можно с помощью pip:

pip install BobrTools

Переменные окружения

Перед использованием библиотеки необходимо настроить следующие переменные окружения:

  • SNOWFLAKE_USER: Ваше имя пользователя для Snowflake.
  • SNOWFLAKE_PASSWORD: Ваш пароль для Snowflake.
  • SNOWFLAKE_ACCOUNT: Идентификатор вашего аккаунта в Snowflake.
  • SNOWFLAKE_ROLE: Роль для использования в Snowflake.
  • SNOWFLAKE_WAREHOUSE: Склад данных (warehouse) для Snowflake.
  • SNOWFLAKE_DATABASE: База данных для Snowflake.
  • SNOWFLAKE_SCHEMA: Схема для Snowflake.
  • PROXY_HOST: Хост прокси-сервера (если используется).
  • PROXY_PORT: Порт прокси-сервера (если используется).
  • PROXY_USERNAME: Имя пользователя прокси (если используется).
  • PROXY_PASSWORD: Пароль прокси (если используется).
  • SNOWFLAKE_USER: Ваше имя пользователя для Snowflake.
  • TELEGRAM_BOT_TOKEN: Токен вашего бота Telegram для отправки сообщений.

После того как эти переменные будут настроены, библиотека будет автоматически их использовать, и нет необходимости прописывать их в коде.


Класс GoogleDocs

Параметры:

  • keyfile (str, необязательный, по умолчанию None): Путь к файлу JSON, содержащему учетные данные сервисного аккаунта Google API. Если параметр не передан, используется значение по умолчанию ./credentials.json.

Метод get_dataframe

Метод для получения данных из Google Таблицы и преобразования их в pandas DataFrame.

Параметры:

  • spreadsheet_key (str, обязательный): Идентификатор Google Spreadsheet, который можно найти в URL таблицы.
  • worksheet_index (int, необязательный, по умолчанию 0): Индекс листа в таблице (начинается с 0).
  • worksheet_title (str, необязательный, по умолчанию None): Заголовок листа. Если задан, он будет использован вместо индекса для поиска листа.

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

docs = GoogleDocs()

df = docs.get_dataframe(
    spreadsheet_key="1A580_BbPyrhWLrbAq0342EmPqipDhqSFGQFx4TWvX56", 
    worksheet_title="Выгрузка"
)
print(df)

Метод write_dataframe

Метод для записи pandas DataFrame в Google Таблицу.

Параметры:

  • dataframe (pd.DataFrame, обязательный): Данные, которые нужно записать в Google Таблицу. Это объект pandas DataFrame, который будет преобразован в таблицу.
  • worksheet_title (str, обязательный): Заголовок листа, в который будет записан DataFrame. Если лист с таким заголовком уже существует, он будет перезаписан, иначе будет создан новый лист с таким именем.
  • default_dataframe_formatting (bool, необязательный, по умолчанию False): Если True, то данные на листе будут отформатированы. Это включает в себя заморозку первой строки (с заголовками столбцов).
  • spreadsheet_key (str, необязательный, по умолчанию None): Идентификатор Google Spreadsheet. Если не указан, будет создан новый документ.

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

docs = GoogleDocs()

df = pd.DataFrame({'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']})
docs.write_dataframe(
    dataframe=df, 
    worksheet_title="Sheet1", 
    default_dataframe_formatting=True, 
    spreadsheet_key="1A580_BbPyrhWLrbAq0342EmPqipDhqSFGQFx4TWvX56"
)

Метод write_dataframes

Метод для записи нескольких pandas DataFrame в Google Таблицу.

Параметры:

  • dataframes (Dict[str, pd.DataFrame], обязательный): Словарь, где ключ – название листа, а значение – соответствующий pandas DataFrame, который будет записан в этот лист.
  • spreadsheet_key (str, необязательный, по умолчанию None): Идентификатор Google Spreadsheet, в который будут записаны данные. Если не указан, будет создан новый документ.
  • spreadsheet_title (str, необязательный, по умолчанию None): Заголовок Google Spreadsheet, используемый при создании нового документа.
  • folder_id (str, необязательный, по умолчанию None): Идентификатор папки на Google Диске, в которую будет сохранён новый документ.
  • default_dataframe_formatting (bool, необязательный, по умолчанию False): Если True, к каждому DataFrame будет применено форматирование по умолчанию (например, заморозка первой строки с заголовками).
  • drop_existing_sheets (bool, необязательный, по умолчанию True): Если True, из документа будут удалены все листы, имена которых отсутствуют среди ключей словаря dataframes.

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

docs = GoogleDocs()

df = pd.DataFrame({'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']})
docs.write_dataframe(
    dataframe=df, 
    worksheet_title="Sheet1", 
    default_dataframe_formatting=True, 
    spreadsheet_key="1A580_BbPyrhWLrbAq0342EmPqipDhqSFGQFx4TWvX56"
)

Класс SnowflakeConnector

Метод upload_dataframe

Метод для загрузки pandas DataFrame в таблицу Snowflake.

Параметры:

  • dataframe (pd.DataFrame, обязательный): pandas DataFrame, который нужно загрузить.
  • table_name (str, обязательный): Имя таблицы в Snowflake, в которую будут загружены данные.
  • overwrite (bool, необязательный, по умолчанию True): Если True, то таблица будет перезаписана, если она существует.
  • auto_create_table (bool, необязательный, по умолчанию True): Если True, то таблица будет автоматически создана, если не существует.
  • warehouse (str, необязательный, по умолчанию None): Имя склада данных для подключения. Если не указано, будет использовано значение из окруженной переменной SNOWFLAKE_WAREHOUSE.
  • database (str, необязательный, по умолчанию None): Имя базы данных для подключения. Если не указано, будет использовано значение из окруженной переменной SNOWFLAKE_DATABASE.
  • schema (str, необязательный, по умолчанию None): Имя схемы для подключения. Если не указано, будет использовано значение из окруженной переменной SNOWFLAKE_SCHEMA.

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

snowflake = SnowflakeConnector()

data = pd.DataFrame({'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']})
snowflake.upload_dataframe(
    data, 
    table_name="my_table", 
    overwrite=True, 
    auto_create_table=True
)

Метод get_dataframe

Метод для выполнения SQL-запроса в Snowflake и преобразования результата в pandas DataFrame.

Параметры:

  • query (str, обязательный): SQL-запрос для получения данных. Можно передавать набор разделенных ;
  • warehouse (str, необязательный, по умолчанию None): Имя склада данных для подключения. Если не указано, будет использовано значение из окруженной переменной SNOWFLAKE_WAREHOUSE.
  • database (str, необязательный, по умолчанию None): Имя базы данных для подключения. Если не указано, будет использовано значение из окруженной переменной SNOWFLAKE_DATABASE.
  • schema (str, необязательный, по умолчанию None): Имя схемы для подключения. Если не указано, будет использовано значение из окруженной переменной SNOWFLAKE_SCHEMA.

Возвращаемое значение:

  • pandas DataFrame: Результат выполнения SQL-запроса, преобразованный в pandas DataFrame, где имена столбцов соответствуют именам колонок в ответе SQL-запроса.

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

snowflake = SnowflakeConnector()

query = "USE WAREHOUSE MY_WAREHOUSE; SELECT * FROM my_table"
data = snowflake.get_dataframe(
    query=query
)
print(data)

Класс TelegramClient

Параметры:

  • token (str, необязательный, по умолчанию None): Токен бота Telegram. Если параметр не передан, то значение токена будет взято из окруженной переменной TELEGRAM_BOT_TOKEN.

Метод send_message

Метод для отправки сообщений в Telegram чат или канал через бота.

Параметры:

  • chat_id (int или str, обязательный): Идентификатор чата или канала, куда будет отправлено сообщение.
  • text (str, обязательный): Текст сообщения, которое будет отправлено в чат.
  • parse_mode (str, необязательный, по умолчанию None): Форматирование текста (например, "HTML" или "Markdown"). Если не указано, то форматирование будет отключено.
  • disable_notification (bool, необязательный, по умолчанию False): Если True, сообщение будет отправлено без уведомления (по умолчанию уведомление будет включено).
  • max_retries (int, необязательный, по умолчанию 5): Максимальное количество попыток отправить сообщение в случае ошибки. Если метод не может отправить сообщение, он попробует повторить отправку до достижения максимального числа попыток.
  • timeout_delay (int, необязательный, по умолчанию 5): Время (в секундах), которое бот будет ожидать перед повторной попыткой отправки сообщения в случае ошибки тайм-аута (например, при временной потере соединения).

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

telegram = TelegramClient()

await telegram_client.send_message(
    chat_id=-1002181072995,
    text="Hello, world!",
    parse_mode="HTML",
    disable_notification=True
)

Класс SlackClient

Параметры:

  • token (str, необязательный, по умолчанию None): Токен для доступа к Slack API. Если параметр не передан, то значение токена будет взято из окруженной переменной SLACK_BOT_TOKEN.

Метод send_message

Метод для отправки сообщения в Slack канал через API.

Параметры:

  • channel (str, обязательный): Идентификатор канала, куда будет отправлено сообщение (например, #general или ID канала).
  • text (str, обязательный): Текст сообщения, которое будет отправлено.
  • thread_ts (str, необязательный, по умолчанию None): Временная метка родительского сообщения для отправки ответа в треде.
  • parse (str, необязательный, по умолчанию None): Параметр, определяющий форматирование сообщения).

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

slack = SlackClient()

slack_client.send_message(
    channel="#general",
    text="Привет, Slack!"
)

Обновление библиотеки

Для обновления библиотеки до следующей версии нужно:

  1. В файле setup.py указать следующую версию
  2. Для сборки и обновления библиотеки в pypi используйте команды:
python3 setup.py sdist bdist_wheel
python3 -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bobrtools-0.1.31.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bobrtools-0.1.31-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file bobrtools-0.1.31.tar.gz.

File metadata

  • Download URL: bobrtools-0.1.31.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for bobrtools-0.1.31.tar.gz
Algorithm Hash digest
SHA256 65cffb4f7dc2f34c30adc9390218c0a89d3618b5a170eb289738beba3534ee8d
MD5 75d120ca5a4b8b4c7e635cf24c56e5d7
BLAKE2b-256 7c929e239948bdf8a275a3a463c0d6fcf99a664b5543d85fe6a824b50b4d3be5

See more details on using hashes here.

File details

Details for the file bobrtools-0.1.31-py3-none-any.whl.

File metadata

  • Download URL: bobrtools-0.1.31-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for bobrtools-0.1.31-py3-none-any.whl
Algorithm Hash digest
SHA256 fce0614a45f60df7027a1aacdbbf46d2877f3f27e8245c5bec72fb4d1f76bf95
MD5 24f32c2359cdc51bc678418b44d4047d
BLAKE2b-256 3c73f3587f42a14e78e5af8d631ac31d88b16902bd8162bc10d102b833057b0d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page