NEW: merge the v1.0.0b1 version of the new scientific-spinbox

Current architecture

The project follows a modular architecture with a Qt widget (ScientificSpinBox) extending QDoubleSpinBox as the main UI component, a pluggable backend system using the PintInterface (by default) for unit handling and conversions, and custom validators for scientific notation input. The architecture separates concerns through dedicated modules, enabling flexible integration with different Qt bindings via QtPy abstraction:

  • widget.py for UI logic,
  • backend/interfaces.py for unit system abstractions,
  • validators.py for input validation,
  • errors/* for custom exception handling.

Current development status

The project is currently in Beta status (version 1.0.0b1) and actively under development. It supports Python 3.10-3.12 with PyQt5, PyQt6, and PySide6 compatibility (PySide2 support is deprecated). The codebase includes comprehensive test coverage using pytest and pytest-qt, with CI/CD pipelines running on CircleCI and GitLab CI for automated testing across multiple Python and Qt binding combinations, and automated documentation builds using Sphinx.

Documentation

Documentation is built using Sphinx with the sphinx-immaterial theme and hosted on ReadTheDocs. It includes comprehensive guides covering widget usage, customization, validation workflows, and backend interfaces, along with auto-generated API reference documentation. The docs support multiple output formats (HTML, PDF) and include tutorials for setup and integration, with source code available in RST format under the docs directory.

Known bugs

  • ...

Notes

The project is designed primarily for STEM applications requiring physical quantity input with unit conversion capabilities, originally developed for the PyMR framework for Magnetic Resonance experiments. It uses Pint as the default backend for unit handling but maintains an interface-based design allowing for alternative backends, with extensive configuration options for decimal precision, thousand separators, and tooltip behaviors.

Related issues

Edited by Breno Pelegrin

Merge request reports

Loading