A professional Python client library for the Teable API
Project description
🔌 Teable Client Library
A professional Python client library for interacting with the Teable API. This library provides an object-oriented interface for managing tables, records, fields, and views in Teable.
For full documentation, please visit: https://volkantasci.github.io/teable-client-docs/
✨ Features
-
Complete API Coverage 🌐
- Full Teable API support with an intuitive object-oriented interface
- Comprehensive field type support with validation
- Dashboard and plugin management
- Data aggregation and analytics
- User authentication and profile management
- File attachment handling
- Selection and range operations
-
Data Management 💾
- Efficient batch operations for creating, updating, and deleting records
- Advanced querying capabilities with a fluent query builder
- Field calculation planning and conversion
- Table and view management
- Record selection and manipulation
-
Performance & Reliability ⚡
- Automatic rate limiting and retry handling
- Resource caching for improved performance
- Connection pooling and management
- Error handling and validation
-
Developer Experience 👨💻
- Type hints for better IDE support
- Detailed documentation and examples
- Comprehensive test coverage
- Professional logging and debugging
📦 Installation
You can install the package using pip:
pip install teable-client==1.1.0 # Recommended stable version
Or for the latest version:
pip install teable-client
🛠️ Manager Classes
The Teable client provides several specialized manager classes for different aspects of the API:
- TableManager: Handle table operations, metadata, and structure
- FieldManager: Manage field definitions, types, and calculations
- RecordManager: Create, update, and delete records
- ViewManager: Configure and manage table views
- DashboardManager: Create and manage dashboards and widgets
- AggregationManager: Perform data aggregation and analytics
- SelectionManager: Handle table selection and range operations
- AttachmentManager: Manage file uploads and attachments
- AuthManager: Handle user authentication and profile management
🚀 Quick Start
from teable import TeableClient, TeableConfig
# Initialize the client
config = TeableConfig(
api_url="https://your-teable-instance.com/api",
api_key="your-api-key"
)
client = TeableClient(config)
# Get a table
table = client.get_table("table_id")
# Create a record
record = table.create_record({
"name": "John Doe",
"email": "john@example.com",
"age": 30
})
# Query records
query = table.query()\
.filter("age", ">", 25)\
.sort("name")\
.paginate(take=10)
records = table.get_records(query)
# Batch create records
records_data = [
{"name": "Alice", "age": 28},
{"name": "Bob", "age": 32}
]
batch_result = table.batch_create_records(records_data)
print(f"Created {batch_result.success_count} records")
📚 Advanced Usage
📧 Working with Invitations
# Accept an invitation link
result = client.accept_invitation_link(
invitation_code="code123",
invitation_id="inv123"
)
print(f"Space ID: {result['spaceId']}")
print(f"Base ID: {result['baseId']}")
🔗 Database Connections
# Create a database connection
connection = client.create_db_connection(base_id="base123")
print(f"Connection URL: {connection['url']}")
# Get connection info
info = client.get_db_connection(base_id="base123")
print(f"Current connections: {info['connection']['current']}")
print(f"Max connections: {info['connection']['max']}")
# Delete connection
client.delete_db_connection(base_id="base123")
📊 Working with Dashboards
# Create a dashboard
dashboard = client.dashboards.create_dashboard(
name="Sales Overview",
description="Key sales metrics and KPIs"
)
# Add a widget
widget = dashboard.add_widget({
"type": "chart",
"name": "Monthly Sales",
"config": {
"chartType": "bar",
"dataSource": {
"tableId": "table_id",
"aggregation": "sum",
"field": "amount"
}
}
})
# Get dashboard data
data = dashboard.get_data()
📈 Data Aggregation
# Get aggregated data
result = client.aggregation.get_aggregation(
table_id="table_id",
group_by=["category"],
metrics=[
{"field": "amount", "function": "sum"},
{"field": "quantity", "function": "avg"}
]
)
# Get calendar view
calendar = client.aggregation.get_calendar_daily_collection(
table_id="table_id",
date_field="due_date"
)
# Search and count
count = client.aggregation.get_search_count(
table_id="table_id",
search_text="urgent"
)
🏷️ Working with Fields
from teable import FieldType, Field
# Get table fields
fields = table.fields
# Access field properties
for field in fields:
print(f"{field.name} ({field.field_type})")
if field.is_required:
print(" Required field")
if field.is_primary:
print(" Primary field")
# Validate field values
field = table.get_field("field_id")
try:
field.validate_value(some_value)
except ValidationError as e:
print(f"Invalid value: {e}")
[Rest of the documentation continues with similar formatting...]
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
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
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 teable_client-1.1.1.tar.gz.
File metadata
- Download URL: teable_client-1.1.1.tar.gz
- Upload date:
- Size: 79.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
341dc42fffa3139350d3c2c6d45f285f4da0042fab21d259d24b86a2777638df
|
|
| MD5 |
6f50bca3b1a8fa5b0167dd77ea9859ff
|
|
| BLAKE2b-256 |
7ae147e4398052631171ed17299f8b6e3171187bab0042382e0d9da1200856f6
|
File details
Details for the file teable_client-1.1.1-py3-none-any.whl.
File metadata
- Download URL: teable_client-1.1.1-py3-none-any.whl
- Upload date:
- Size: 108.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8e9e3c0a7664f01e9a8d552c4e14e102489681367b2270412782aa1e9f10c83
|
|
| MD5 |
82557c12bfa42eb3c3713d5da9a99f19
|
|
| BLAKE2b-256 |
bbd27e5417c9517be8e503e5614d64e8c948b92bdb315f2fc9d20316b7d1e4dd
|