Skip to main content

A Python library for interacting with Lark APIs, providing both synchronous and asynchronous interfaces

Project description

Lark Helper

PyPI version Python Support License: MIT

A Python library for interacting with Lark (Feishu) APIs, providing both synchronous and asynchronous interfaces for seamless integration with Lark's collaboration platform.

Features

  • Dual Interface Support: Both synchronous and asynchronous API interfaces
  • Comprehensive API Coverage: Support for Bitable, Messaging, File operations, and more
  • Token Management: Automatic tenant access token management with refresh handling
  • Type Safety: Full type hints and Pydantic model validation
  • Easy Integration: Simple and intuitive API design
  • Enterprise Ready: Built for production use with proper error handling

Installation

Using pip (recommended)

pip install lark-helper

Using pip with extras

# Install with development dependencies
pip install "lark-helper[dev]"

# Install with testing dependencies
pip install "lark-helper[test]"

# Install with documentation dependencies
pip install "lark-helper[docs]"

Using uv (faster installation)

uv pip install lark-helper

Quick Start

Synchronous Usage

from lark_helper.token_manager import TenantAccessTokenManager
from lark_helper.v1 import message, bitable

# Initialize token manager
token_manager = TenantAccessTokenManager(
    app_id="your_app_id",
    app_secret="your_app_secret"
)

# Send a message
from lark_helper.constants.message import MessageType, ReceiveIdType

message_id = message.send_message(
    token_manager=token_manager,
    receive_id="user_id_or_chat_id",
    receive_id_type=ReceiveIdType.USER_ID,
    message_type=MessageType.TEXT,
    content="Hello from Lark Helper!"
)

Asynchronous Usage

import asyncio
from lark_helper.token_manager import TenantAccessTokenManager
from lark_helper.v1_async import message, bitable

async def main():
    # Initialize token manager
    token_manager = TenantAccessTokenManager(
        app_id="your_app_id",
        app_secret="your_app_secret"
    )
    
    # Send a message asynchronously
    message_id = await message.send_message(
        token_manager=token_manager,
        receive_id="user_id_or_chat_id",
        receive_id_type=ReceiveIdType.USER_ID,
        message_type=MessageType.TEXT,
        content="Hello from Lark Helper!"
    )
    
    # Work with Bitable asynchronously
    record = await bitable.add_bitable_record(
        token_manager=token_manager,
        app_token="your_app_token",
        table_id="your_table_id",
        fields={"Name": "Jane Doe", "Email": "jane@example.com"}
    )

# Run the async function
asyncio.run(main())

API Coverage

Messaging

  • Send messages (text, rich text, images, etc.)
  • Message content formatting
  • Support for different recipient types (user, chat, email)

Bitable (Multi-dimensional Tables)

  • Create, read, update, delete records
  • Search and filter records
  • Manage table views
  • Handle field types and validation

File Operations

  • Upload and download files
  • File metadata management
  • Batch file operations

User Management

  • User information retrieval
  • User search and lookup

Document Operations

  • Document creation and editing
  • Content management
  • Collaborative editing support

Token Management

The library automatically handles Lark tenant access tokens:

from lark_helper.token_manager import TenantAccessTokenManager

token_manager = TenantAccessTokenManager(
    app_id="your_app_id",
    app_secret="your_app_secret"
)

# Token is automatically refreshed when needed
# No manual token management required

Configuration

Environment Variables

You can set your Lark app credentials using environment variables:

export LARK_APP_ID="your_app_id"
export LARK_APP_SECRET="your_app_secret"

Error Handling

The library provides comprehensive error handling:

from lark_helper.exception import LarkHelperException

try:
    result = message.send_message(...)
except LarkHelperException as e:
    print(f"Lark API error: {e}")
except Exception as e:
    print(f"Unexpected error: {e}")

Requirements

  • Python 3.12+
  • aiohttp (for async operations)
  • requests (for sync operations)
  • pydantic (for data validation)
  • lark-oapi (official Lark SDK)

Development

Setting up Development Environment

# Clone the repository
git clone https://github.com/philo-veritas/lark-helper.git
cd lark-helper

# Create virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install development dependencies
uv pip install -e ".[dev]"

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=lark_helper

# Run async tests
pytest -m asyncio

Code Quality

# Format code
ruff format

# Lint code
ruff check

# Type checking
mypy src/lark_helper

Building and Publishing

# Build the package
python -m build

# Check the built package
twine check dist/*

# Upload to TestPyPI (for testing)
twine upload --repository testpypi dist/*

# Upload to PyPI (for production)
twine upload dist/*

License

This project is licensed under the MIT License - see the LICENSE file for details.

PyPI Package

This package is available on PyPI:

Related Projects


Made with ❤️ for the Lark developer community

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

lark_helper-0.1.0.dev13.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

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

lark_helper-0.1.0.dev13-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

Details for the file lark_helper-0.1.0.dev13.tar.gz.

File metadata

  • Download URL: lark_helper-0.1.0.dev13.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for lark_helper-0.1.0.dev13.tar.gz
Algorithm Hash digest
SHA256 fba850467eb18751fac722ac9464eb11a6ae4a0be46e205f7c44174e069c837e
MD5 7fb320048ca941cef9c21b4aa63f16c2
BLAKE2b-256 98816bc4d594b0ac1b3a8c7a1587108038c575d1aa6d461b470559dd88713be8

See more details on using hashes here.

File details

Details for the file lark_helper-0.1.0.dev13-py3-none-any.whl.

File metadata

File hashes

Hashes for lark_helper-0.1.0.dev13-py3-none-any.whl
Algorithm Hash digest
SHA256 927c5563cda298d43c9e8cce6ee56e8f9f114f2dbaa8500e914d779c3b273c8a
MD5 cab729ac5c63367f5f911363b57dfc5e
BLAKE2b-256 f893f82d69ebeb2a3eecdcbc612e147cef98831598fbeb647a65f86b9aad1860

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