A Python library for interacting with Lark APIs, providing both synchronous and asynchronous interfaces
Project description
Lark Helper
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:
- Package Page: lark-helper on PyPI
Related Projects
- lark-oapi - Official Lark Open API SDK
- Lark Developer Documentation
Made with ❤️ for the Lark developer community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lark_helper-0.1.0.dev2.tar.gz.
File metadata
- Download URL: lark_helper-0.1.0.dev2.tar.gz
- Upload date:
- Size: 26.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbd7e1613041fb248d638f179ca396764b49eb3f6b5385905efe67ed9b0eea64
|
|
| MD5 |
ed10907640c2df7002ef6a20c886aff7
|
|
| BLAKE2b-256 |
ad80b5716b300ff9cd7f3fc7e82da96120f7dbd0ac4bf8e7212e8f50e0a62571
|
File details
Details for the file lark_helper-0.1.0.dev2-py3-none-any.whl.
File metadata
- Download URL: lark_helper-0.1.0.dev2-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33e4aabdf3978fee472232b1f1fcd2c97a5e398e6049bc2ddc94fb9458959526
|
|
| MD5 |
dd14de504794c8406bd70fd4811b78e1
|
|
| BLAKE2b-256 |
cc8fbe3c02d425e66e8779860506502f260299b6a5923ff73867bde72f97f501
|