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.dev8.tar.gz (29.0 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.dev8-py3-none-any.whl (33.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lark_helper-0.1.0.dev8.tar.gz
  • Upload date:
  • Size: 29.0 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.dev8.tar.gz
Algorithm Hash digest
SHA256 112379746eca79f0daf5a88a7954d354a3882b838ee72881ad27cae30be192ad
MD5 dcc8cb7cd8aad3aae84f73aaa6523fad
BLAKE2b-256 b38b8397a586260601764c7b6f01b1539775bc3e8d927f055d0cc617f22e8247

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lark_helper-0.1.0.dev8-py3-none-any.whl
Algorithm Hash digest
SHA256 1e1d5552e299698224f2b8b3d03403619cb17fe6d8d4055029bab31482a5dd01
MD5 f632a35d0bedbec03896261e2caa982e
BLAKE2b-256 901068fd15533287458595cb98ac3bf9293ff1b7edfbb059be8214bcff7b0268

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