Thank you for considering contributing to FileSystemPro! We appreciate your interest in improving this cross-platform file system toolkit. Whether it's fixing bugs, adding features, enhancing documentation, or refining code, your contributions help make the library more robust and user-friendly.
Before starting, please read this guide to understand our contribution process. By participating, you agree to abide by our Code of Conduct.
We follow the Contributor Covenant Code of Conduct. All contributors are expected to uphold this standard. If you encounter issues, contact us at heitor.bardemaker@live.com or via GitHub issues.
We welcome all kinds of contributions! Here are some ideas:
- Bug Reports: Found an issue? Open an issue with a clear description, steps to reproduce, and environment details (OS, Python version,
psutilif used). - Feature Requests: Have an idea? Suggest it here. Include use cases and rationale.
- Documentation: Typos, clarifications, or new examples? Edit READMEs or submodule docs directly via PR.
- Code: Implement features, fix bugs, or refactor. See below for details.
- Tests: Add or improve tests in
tests/. - Other: Translations, performance benchmarks, or tooling scripts.
-
Fork and Clone:
git clone https://github.com/YOUR_USERNAME/FileSystemPro.git cd FileSystemPro git remote add upstream https://github.com/hbisneto/FileSystemPro.git -
Virtual Environment:
python -m venv .venv source .venv/bin/activate # On Unix/macOS # Or: .venv\Scripts\activate # On Windows
-
Install Dependencies:
pip install -e .[dev] # Editable install + dev extras (pytest, black, flake8) pip install psutil # Optional, for device module
-
Verify Setup:
pytest tests/ # Run tests black --check . # Check formatting flake8 . # Lint
- Python Version: Target 3.10+; test on 3.10, 3.12.
- Style Guide: Follow PEP 8. Use Black for formatting:
black . - Linting: Flake8 for style checks:
flake8 . - Type Hints: Use mypy where practical (not enforced yet).
- Docstrings: Google style for functions/classes.
- Commit Messages: Conventional commits (e.g.,
feat: add network monitoring). - Branches: Feature branches from
main(e.g.,feat/new-module).
-
Discuss First: For non-trivial changes, open an issue to align on scope.
-
Branch and Commit:
git checkout -b your-branch-name git add . git commit -m "feat: brief description"
-
Test Locally:
- Run
pytestto ensure no regressions. - Verify with examples from submodule READMEs.
- Check cross-platform (e.g., via GitHub Actions or local VMs).
- Run
-
Push and PR:
git push origin your-branch-name
- Open a Pull Request (PR) to
main. - Reference related issues (e.g., "Fixes #123").
- Include changelog entry if breaking (in
CHANGELOG.md).
- Open a Pull Request (PR) to
-
Review and Merge:
- Expect feedback; iterate as needed.
- Once approved, merge via squash/rebase (maintain clean history).
- Delete branch post-merge.
- Title: Clear and concise (e.g., "fix: resolve path resolution on Windows").
- Description:
- What/Why: Problem solved and motivation.
- How: Key changes.
- Tests: New/updated tests.
- Docs: Updated READMEs/examples.
- Scope: Small, focused PRs (<300 lines preferred).
- CI Checks: Must pass (linting, tests); re-run if needed.
Releases are managed by maintainers:
- Bump version in
pyproject.toml/setup.py. - Tag:
git tag vX.Y.Z. - Push:
git push --tags. - Upload to PyPI:
twine upload dist/*.
- Issues/PRs: Use GitHub for tracking.
- Discussions: Start one for ideas.
- Direct: Email heitor.bardemaker@live.com or DM @BisnetoDev on X.
Thanks for contributing—we're excited to collaborate! 🚀