- Clone the repository:
git clone https://github.com/mgflast/easymode.git
cd easymode- Create a virtual environment and install development dependencies:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e ".[dev]"- Install pre-commit hooks:
pre-commit installRun all tests:
pytestWith coverage:
pytest --cov --cov-report=htmlView coverage report:
open htmlcov/index.html # On macOS
xdg-open htmlcov/index.html # On LinuxThis project uses:
- ruff for linting and formatting
- mypy for type checking (gradual adoption)
- pre-commit for automated checks
Before committing, run:
pre-commit run --all-filesOr rely on the pre-commit hooks to run automatically on git commit.
- Line length: 88 characters (Black/Ruff default)
- Docstring convention: NumPy style
- Import sorting: isort via ruff
- Create a new branch for your feature or bugfix:
git checkout -b feature/your-feature-name- Make your changes and commit them:
git add .
git commit -m "Description of changes"- Push to your fork and create a pull request:
git push origin feature/your-feature-nameReleases are managed via git tags and automated through GitHub Actions:
- Update CHANGELOG.md with the new version
- Commit changes:
git add CHANGELOG.md
git commit -m "Prepare release vX.Y.Z"- Create and push a tag:
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z- GitHub Actions will automatically build and publish to PyPI
easymode/
├── src/easymode/ # Source code (src-layout)
│ ├── main.py # CLI entry point
│ ├── core/ # Core utilities
│ ├── segmentation/ # 3D UNet segmentation
│ ├── ddw/ # DeepDeWedge denoising
│ └── n2n/ # Noise2Noise denoising
├── tests/ # Test suite
├── .github/workflows/ # CI/CD configuration
└── pyproject.toml # Project configuration
- Open an issue on GitHub
- Check existing issues and pull requests first
- Provide minimal reproducible examples for bugs