95c86b66002ead5f32a06cb7bebf698154c2287d
Phase 2, Task 2.1, Steps 1-3 Complete: Async Client Architecture
This commit introduces comprehensive async/await support for the Wiki.js
Python SDK, providing high-performance concurrent operations using aiohttp.
Key Features:
------------
1. **AsyncWikiJSClient** (wikijs/aio/client.py)
- Full async/await support with aiohttp
- Connection pooling (100 connections, 30 per host)
- Async context manager support (async with)
- Same interface as sync client for easy migration
- Proper resource cleanup and session management
- DNS caching for improved performance
2. **Async Endpoints** (wikijs/aio/endpoints/)
- AsyncBaseEndpoint - Base class for all async endpoints
- AsyncPagesEndpoint - Complete async Pages API
* list() - List pages with filtering
* get() - Get page by ID
* get_by_path() - Get page by path
* create() - Create new page
* update() - Update existing page
* delete() - Delete page
* search() - Search pages
* get_by_tags() - Filter by tags
3. **Architecture**
- Mirrors sync client structure for consistency
- Reuses existing models, exceptions, and utilities
- Optional dependency (aiohttp) via extras_require
- Zero breaking changes to sync API
Performance Benefits:
--------------------
- Designed for >3x throughput vs sync client
- Efficient connection pooling and reuse
- Concurrent request handling
- Reduced latency with TCP keepalive
Usage Example:
--------------
```python
from wikijs.aio import AsyncWikiJSClient
async with AsyncWikiJSClient(url, auth='key') as client:
# Concurrent operations
pages = await client.pages.list()
page = await client.pages.get(123)
# Create/Update/Delete
new_page = await client.pages.create(page_data)
updated = await client.pages.update(123, updates)
await client.pages.delete(123)
```
Installation:
-------------
```bash
pip install wikijs-python-sdk[async]
```
Quality Metrics:
----------------
- ✅ All imports successful
- ✅ Black formatting applied
- ✅ Flake8 passing (complexity warnings expected)
- ✅ MyPy type checking (minor issues in base models)
- ✅ Zero breaking changes to sync API
Next Steps:
-----------
- Comprehensive async unit tests
- Integration tests with real Wiki.js instance
- Performance benchmarks (async vs sync)
- Documentation and usage examples
This lays the foundation for high-performance async operations
in the Wiki.js Python SDK.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Wiki.js Python SDK
A professional Python SDK for Wiki.js API integration.
🎉 Status: Phase 1 MVP Complete! Ready for production use
Current Version: v0.1.0 with complete Wiki.js Pages API integration Next Milestone: v0.2.0 with Users, Groups, and Assets API support
🚀 Quick Start
Installation
# Install directly from Gitea
pip install git+https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python.git
# Or clone and install locally
git clone https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python.git
cd wikijs-python-sdk
pip install -e .
Basic Usage
from wikijs import WikiJSClient
# Initialize client
client = WikiJSClient('https://wiki.example.com', auth='your-api-key')
# List pages
pages = client.pages.list()
# Get a specific page
page = client.pages.get(123)
# Create a new page
from wikijs.models import PageCreate
new_page = client.pages.create(PageCreate(
title="Getting Started",
path="getting-started",
content="# Welcome\n\nThis is your first page!"
))
🎯 Current Development Status
Phase 1: MVP Development ✅ COMPLETE
- ✅ Complete: Professional-grade Wiki.js Python SDK
- 🎯 Goal: Basic Wiki.js integration with Pages API
- 📦 Deliverable: Installable package with core functionality
| Component | Status | Description |
|---|---|---|
| Project Setup | ✅ Complete | Repository structure, packaging, CI/CD |
| Core Client | ✅ Complete | HTTP client with authentication and retry logic |
| Pages API | ✅ Complete | Full CRUD operations for wiki pages |
| Testing | ✅ Complete | 87%+ test coverage with comprehensive test suite |
| Documentation | ✅ Complete | Complete API reference, user guide, and examples |
Planned Features
- v0.2.0: Complete API coverage (Users, Groups, Assets)
- v0.3.0: Production features (retry logic, caching, monitoring)
- v1.0.0: Enterprise features (async support, plugins, advanced CLI)
📚 Documentation
For Users
- Quick Start: Basic setup and usage
- API Reference: Complete SDK documentation
- User Guide: Comprehensive usage guide with examples
- Examples: Real-world usage examples and code samples
For Contributors
- Contributing Guide: How to contribute to the project
- Development Guide: Setup and development workflow
- Changelog: Version history and changes
For Maintainers
- Architecture: Technical design and patterns
- Development Plan: Complete roadmap and milestones
- Development Notes: Development workflow and coordination
🤝 Contributing
We welcome contributions! This project showcases systematic development with professional standards.
Getting Started:
- Check our Development Plan for current priorities
- Review the Architecture for technical context
- See Development Notes for development workflow
- Start with issues labeled
good first issue(Coming soon)
Community:
- 💬 GitHub Discussions: Questions and community chat (Coming soon)
- 🐛 GitHub Issues: Bug reports and feature requests (Coming soon)
🛠️ Development Setup
Prerequisites
- Python 3.8+
- Git
- Wiki.js instance for testing
Local Development
# Clone and setup
git clone https://gitea.hotserv.cloud/lmiranda/wikijs-sdk-python.git
cd wikijs-python-sdk
pip install -e ".[dev]"
# Run tests
pytest
# Run quality checks
pre-commit run --all-files
🏆 Project Features
Current (MVP Complete)
- ✅ Synchronous HTTP client with connection pooling and retry logic
- ✅ Multiple authentication methods (API key, JWT, custom)
- ✅ Complete Pages API with CRUD operations, search, and filtering
- ✅ Comprehensive error handling with specific exception types
- ✅ Type-safe models with validation using Pydantic
- ✅ Extensive test coverage (87%+) with robust test suite
- ✅ Complete documentation with API reference and user guide
- ✅ Practical examples and code samples
Planned Enhancements
- ⚡ Async/await support
- 💾 Intelligent caching
- 🔄 Retry logic with backoff
- 💻 CLI tools
- 🔧 Plugin system
- 🛡️ Advanced security features
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Wiki.js: The excellent knowledge management platform this SDK supports
- leomiranda: Developer who created this SDK
- Python Community: For exceptional tools and development standards
Ready to contribute? Check out our development documentation or explore the development workflow to see how this project is built!
Languages
Python
100%