Files
py-wikijs/README.md
Claude cef6903cbc feat: implement production-ready features from improvement plan phase 2.5 & 2.6
Phase 2.5: Fix Foundation (CRITICAL)
- Fixed 4 failing tests by adding cache attribute to mock_client fixture
- Created comprehensive cache tests for Pages endpoint (test_pages_cache.py)
- Added missing dependencies: pydantic[email] and aiohttp to core requirements
- Updated requirements.txt with proper dependency versions
- Achieved 82.67% test coverage with 454 passing tests

Phase 2.6: Production Essentials
- Implemented structured logging (wikijs/logging.py)
  * JSON and text log formatters
  * Configurable log levels and output destinations
  * Integration with client operations

- Implemented metrics and telemetry (wikijs/metrics.py)
  * Request tracking with duration, status codes, errors
  * Latency percentiles (min, max, avg, p50, p95, p99)
  * Error rate calculation
  * Thread-safe metrics collection

- Implemented rate limiting (wikijs/ratelimit.py)
  * Token bucket algorithm for request throttling
  * Per-endpoint rate limiting support
  * Configurable timeout handling
  * Burst capacity management

- Created SECURITY.md policy
  * Vulnerability reporting procedures
  * Security best practices
  * Response timelines
  * Supported versions

Documentation
- Added comprehensive logging guide (docs/logging.md)
- Added metrics and telemetry guide (docs/metrics.md)
- Added rate limiting guide (docs/rate_limiting.md)
- Updated README.md with production features section
- Updated IMPROVEMENT_PLAN_2.md with completed checkboxes

Testing
- Created test suite for logging (tests/test_logging.py)
- Created test suite for metrics (tests/test_metrics.py)
- Created test suite for rate limiting (tests/test_ratelimit.py)
- All 454 tests passing
- Test coverage: 82.67%

Breaking Changes: None
Dependencies Added: pydantic[email], email-validator, dnspython

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:45:02 +00:00

6.7 KiB

Wiki.js Python SDK

License: MIT Python Support Repository Issues

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/py-wikijs.git

# Or clone and install locally
git clone https://gitea.hotserv.cloud/lmiranda/py-wikijs.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!"
))

Production Features

Structured Logging

from wikijs import WikiJSClient
import logging

# Enable detailed logging
client = WikiJSClient(
    'https://wiki.example.com',
    auth='your-api-key',
    log_level=logging.DEBUG
)

📚 Logging Guide

Metrics & Telemetry

# Get performance metrics
metrics = client.get_metrics()
print(f"Total requests: {metrics['total_requests']}")
print(f"Error rate: {metrics['error_rate']:.2f}%")
print(f"P95 latency: {metrics['latency']['p95']:.2f}ms")

📚 Metrics Guide

Rate Limiting

# Prevent API throttling
client = WikiJSClient(
    'https://wiki.example.com',
    auth='your-api-key',
    rate_limit=10.0  # 10 requests/second
)

📚 Rate Limiting Guide


🎯 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
Production Features Complete Logging, metrics, rate limiting
Testing Complete 85%+ test coverage with comprehensive test suite
Documentation Complete Complete API reference, user guide, and examples
Security Complete SECURITY.md policy and best practices

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

For Contributors

For Maintainers


🤝 Contributing

We welcome contributions! This project showcases systematic development with professional standards.

Getting Started:

  1. Check our Development Plan for current priorities
  2. Review the Architecture for technical context
  3. See Development Notes for development workflow
  4. 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/py-wikijs.git
cd wikijs-python-sdk
pip install -e ".[dev]"

# Run tests
pytest

# Run quality checks
pre-commit run --all-files

🏆 Project Features

Current Features

  • Core SDK: Synchronous HTTP client with connection pooling and retry logic
  • Authentication: Multiple methods (API key, JWT, custom)
  • Complete API Coverage: Pages, Users, Groups, and Assets APIs
  • Async Support: Full async/await implementation with aiohttp
  • Intelligent Caching: LRU cache with TTL support for performance
  • Batch Operations: Efficient create_many, update_many, delete_many methods
  • Auto-Pagination: iter_all() methods for seamless pagination
  • Error Handling: Comprehensive exception hierarchy with specific error types
  • Type Safety: Pydantic models with full validation
  • Testing: 87%+ test coverage with 270+ tests
  • Documentation: Complete API reference, user guide, and examples

Planned Enhancements

  • 💻 Advanced CLI tools with interactive mode
  • 🔧 Plugin system for extensibility
  • 🛡️ Enhanced security features and audit logging
  • 🔄 Circuit breaker for fault tolerance
  • 📊 Performance monitoring and metrics

📄 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!