Thank you for your interest in contributing to LIULIAN! This guide will help you get started.
git clone https://github.com/jajupmochi/liulian-python.git
cd liulian-python
pip install uv
uv pip install -e ".[dev,logging]" --systemWe use the following tools to maintain consistent code quality:
- black — Code formatting (line length 88)
- isort — Import sorting (profile: black)
- flake8 — Linting
- mypy — Static type checking
Run all checks:
black --check liulian tests plugins
isort --check liulian tests plugins
flake8 liulian tests plugins
mypy liulianpytest tests/ -v
pytest --cov=liulian --cov-report=term-missing tests/All tests must pass in under 30 seconds. No GPU required.
See the Adapter Guide for the full contract. Key rules:
- One adapter per external library
- Inherit from
ExecutableModel - Keep adapter ≤ 200 LOC
- Use
_vendor.pyfor 3rd-party imports - Write a smoke test in
tests/adapters/
- Create
plugins/<domain>/with__init__.pyand adapter module - Inherit from
BaseDatasetorExecutableModel - Include a manifest YAML if applicable
- Add tests that run without the plugin's external dependencies
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Write tests for any new functionality
- Ensure all tests pass and coverage ≥ 60%
- Run code formatters:
black . && isort . - Submit a pull request with a clear description
When updating README.md, please also update README.zh.md to keep the Chinese translation current. If you are not comfortable translating, note the change in your PR and a maintainer will handle it.
Use conventional commits:
feat: add new adapter for ModelX
fix: correct batch slicing in PredictionTask
docs: update architecture diagram
test: add smoke test for InformerAdapter
Open a GitHub issue or start a discussion. We welcome all contributions, from bug reports to new adapters.