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.dev11.tar.gz (30.6 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.dev11-py3-none-any.whl (35.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lark_helper-0.1.0.dev11.tar.gz
  • Upload date:
  • Size: 30.6 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.dev11.tar.gz
Algorithm Hash digest
SHA256 9de819d0b5e85e460ca8ff2a5eb8b96eea01f4e1750b0cdd11c3376d872c8415
MD5 59110eb89c6d4d07f2c85bd28cc0b25d
BLAKE2b-256 2880c69f0ed18e2d79821a39349fc71034e91805ec153e91c35a781bb92e3ba4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lark_helper-0.1.0.dev11-py3-none-any.whl
Algorithm Hash digest
SHA256 10ee1af2ff10641bf0b725d638006b1f37260c4ad5a7e5057daabbeed6939ab7
MD5 6ba96f248ddf8369bf48a8288ec24ae9
BLAKE2b-256 d506c7d6a79c759847a54f9f9e06b3bde90c899e011172310c6329bf081b1c3a

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