Add MarkiTectLib
47
MarkiTectLib.md
Normal file
47
MarkiTectLib.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
Guidance
|
||||||
|
|
||||||
|
Abstractor: MarkiTect python library
|
||||||
|
|
||||||
|
We will provide MarkiTect functionality as python library well suited for reuse in a commandline cli, as the basis of a service offering and as a foundation for reuse in third party projects.
|
||||||
|
|
||||||
|
Here are the key best practices for a reusable Python library we want to respect:
|
||||||
|
|
||||||
|
**Project Structure**
|
||||||
|
- Use a clear package hierarchy with `__init__.py` files
|
||||||
|
- Separate concerns: core logic, utilities, interfaces, and tests in distinct modules
|
||||||
|
- Keep modules focused on single responsibilities
|
||||||
|
|
||||||
|
**API Design**
|
||||||
|
- Design for simplicity: expose only what users need
|
||||||
|
- Use clear, consistent naming conventions
|
||||||
|
- Provide sensible defaults but allow configuration
|
||||||
|
- Make functions pure and idempotent where possible
|
||||||
|
|
||||||
|
**Testing**
|
||||||
|
- Write tests first (TDD approach)
|
||||||
|
- Aim for high coverage of public APIs
|
||||||
|
- Use fixtures and mocks to isolate unit tests
|
||||||
|
- Include integration tests for key workflows
|
||||||
|
|
||||||
|
**Dependencies**
|
||||||
|
- Minimize external dependencies
|
||||||
|
- Pin dependency versions in `setup.py`/`pyproject.toml`
|
||||||
|
- Use optional dependencies for non-core features
|
||||||
|
|
||||||
|
**Documentation**
|
||||||
|
- Write clear docstrings (Google or NumPy style)
|
||||||
|
- Include type hints for all public functions
|
||||||
|
- Provide a comprehensive README with usage examples
|
||||||
|
- Document edge cases and error conditions
|
||||||
|
|
||||||
|
**Code Quality**
|
||||||
|
- Use consistent formatting (Black, Ruff)
|
||||||
|
- Run linters (pylint, flake8, mypy)
|
||||||
|
- Keep functions small and composable
|
||||||
|
- Avoid side effects; make dependencies explicit
|
||||||
|
|
||||||
|
**Distribution**
|
||||||
|
- Use `pyproject.toml` for modern packaging
|
||||||
|
- Semantic versioning for releases
|
||||||
|
- Include a CHANGELOG
|
||||||
|
- Set up CI/CD for automated testing and publishing
|
||||||
Reference in New Issue
Block a user