-
Notifications
You must be signed in to change notification settings - Fork 0
Developer Guide
Mohammed Zahid Wadiwale edited this page Dec 12, 2025
·
1 revision
This page explains how to set up a development environment, run ExifPlus locally from source, test, and create pull requests.
git clone https://github.com/ZahidServers/ExifPlus.git
cd ExifPluspython3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt # if exists
pip install -e .Notes:
-
If
requirements.txtis not present, install main deps:pip install pyexiv2 hachoir ttkbootstrap exifread Pillow
python -m exifplus
# or
python app.pyThis runs the GUI directly using your editable install.
- Follow PEP8 for Python code.
- Use flake8 linting (we recommend adding a pre-commit hook).
- Tests (if any) use
pytest. Run:
pytest-
pyproject.tomlorsetup.pyshould contain metadata. - Build distributions:
python -m build- Upload with twine (make sure version is bumped):
twine upload dist/*Important: PyPI may reject invalid classifiers or license metadata. Use license = "BSD-3-Clause" and avoid invalid trove classifiers.
- Docs live in
docs/(Sphinx). Use pinned Sphinx + theme versions indocs/requirements-docs.txt. - To build docs locally:
pip install -r docs/requirements-docs.txt
pip install -e .
sphinx-build -b html docs/ docs/_build/html-
On ReadTheDocs, mock native libs in
docs/conf.py:autodoc_mock_imports = ["pyexiv2"]
- Bump package version in
exifplus/__init__.py(orpyproject.toml). - Tag git:
git tag vX.Y.Z && git push --tags - Build & upload to PyPI.
- Create a GitHub release (title: vX.Y.Z) and attach release notes.
- Fork repo → create a feature branch → push → open PR.
- Include clear description of changes and why.
- Add tests if the change modifies logic.
- Keep PR titles and commit messages descriptive.
- If GUI crashes on import, move heavy GUI imports into
if __name__ == "__main__":or lazily import inside functions to allow module import for tests/docs. - Use
loggingfor debug output; avoidprint()in library code.
Metadata Viewer • Editor • Analyzer
By Mohammed Zahid Wadiwale
- 🔍 Understanding Metadata Formats (EXIF / IPTC / XMP)
- 🛠 Editing Metadata
- 🗑 Deleting Rows & Adding New Keys
- 🌐 Opening Files From URL
- 🌍 Website: https://www.webaon.com
- 📦 PyPI: https://pypi.org/project/exifplus/
- 🐙 GitHub Repo: https://github.com/ZahidServers/ExifPlus
- 📖 ReadTheDocs: https://exifplus.readthedocs.io