Metadata-Version: 2.4
Name: bapsf_motion
Version: 2025.4.1b1
Summary: Package for controlling motion devices in a BaPSF DAQ system
Author: Basic Plasma Science Facility
Keywords: plasma physics,plasma,science,bapsf,motion
Classifier: Development Status :: 1 - Planning
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: Astronomy
Provides: bapsf_motion
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: kiwisolver<1.4.7
Requires-Dist: numpy<2.0,>=1.18.1
Requires-Dist: matplotlib<3.9.0,>=3.3.0
Requires-Dist: pandas<=2.0.3
Requires-Dist: astropy
Requires-Dist: importlib_metadata; python_version < "3.8"
Requires-Dist: numpydoc
Requires-Dist: tomli; python_version < "3.11"
Requires-Dist: tomli_w
Requires-Dist: tqdm
Requires-Dist: xarray
Provides-Extra: gui
Requires-Dist: pygame; extra == "gui"
Requires-Dist: PySide6; python_version >= "3.10" and extra == "gui"
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "gui"
Requires-Dist: qtawesome; extra == "gui"
Provides-Extra: tests
Requires-Dist: pygame; extra == "tests"
Requires-Dist: PySide6; python_version >= "3.10" and extra == "tests"
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "tests"
Requires-Dist: qtawesome; extra == "tests"
Requires-Dist: pytest>=5.1; extra == "tests"
Provides-Extra: docs
Requires-Dist: pygame; extra == "docs"
Requires-Dist: PySide6; python_version >= "3.10" and extra == "docs"
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "docs"
Requires-Dist: qtawesome; extra == "docs"
Requires-Dist: docutils>=0.18.1; extra == "docs"
Requires-Dist: ipython; extra == "docs"
Requires-Dist: jinja2>=3.1.2; extra == "docs"
Requires-Dist: nbsphinx>=0.9.1; extra == "docs"
Requires-Dist: numpydoc>=1.5.0; extra == "docs"
Requires-Dist: pillow>=9.5.0; extra == "docs"
Requires-Dist: pygments>=2.15.0; extra == "docs"
Requires-Dist: sphinx<=7.3.7,>=6.1.3; extra == "docs"
Requires-Dist: sphinx-changelog>=1.3.0; extra == "docs"
Requires-Dist: sphinx-codeautolink>=0.15.0; extra == "docs"
Requires-Dist: sphinx-copybutton>=0.5.1; extra == "docs"
Requires-Dist: sphinx-gallery>=0.12.2; extra == "docs"
Requires-Dist: sphinx-hoverxref>=1.1.1; extra == "docs"
Requires-Dist: sphinx-issues>=3.0.1; extra == "docs"
Requires-Dist: sphinx-notfound-page>=0.8.3; extra == "docs"
Requires-Dist: sphinx-reredirects>=0.1.1; extra == "docs"
Requires-Dist: sphinx_rtd_theme>=1.2.0; extra == "docs"
Requires-Dist: sphinx_tabs<=3.4.5,>=3.4.1; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex>=2.5.0; extra == "docs"
Requires-Dist: towncrier>=22.12; extra == "docs"
Requires-Dist: tox>=4.4.0; extra == "docs"
Requires-Dist: plasmapy_sphinx; extra == "docs"
Provides-Extra: extras
Requires-Dist: black; extra == "extras"
Requires-Dist: isort; extra == "extras"
Provides-Extra: developer
Requires-Dist: pygame; extra == "developer"
Requires-Dist: PySide6; python_version >= "3.10" and extra == "developer"
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "developer"
Requires-Dist: qtawesome; extra == "developer"
Requires-Dist: pygame; extra == "developer"
Requires-Dist: PySide6; python_version >= "3.10" and extra == "developer"
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "developer"
Requires-Dist: qtawesome; extra == "developer"
Requires-Dist: docutils>=0.18.1; extra == "developer"
Requires-Dist: ipython; extra == "developer"
Requires-Dist: jinja2>=3.1.2; extra == "developer"
Requires-Dist: nbsphinx>=0.9.1; extra == "developer"
Requires-Dist: numpydoc>=1.5.0; extra == "developer"
Requires-Dist: pillow>=9.5.0; extra == "developer"
Requires-Dist: pygments>=2.15.0; extra == "developer"
Requires-Dist: sphinx<=7.3.7,>=6.1.3; extra == "developer"
Requires-Dist: sphinx-changelog>=1.3.0; extra == "developer"
Requires-Dist: sphinx-codeautolink>=0.15.0; extra == "developer"
Requires-Dist: sphinx-copybutton>=0.5.1; extra == "developer"
Requires-Dist: sphinx-gallery>=0.12.2; extra == "developer"
Requires-Dist: sphinx-hoverxref>=1.1.1; extra == "developer"
Requires-Dist: sphinx-issues>=3.0.1; extra == "developer"
Requires-Dist: sphinx-notfound-page>=0.8.3; extra == "developer"
Requires-Dist: sphinx-reredirects>=0.1.1; extra == "developer"
Requires-Dist: sphinx_rtd_theme>=1.2.0; extra == "developer"
Requires-Dist: sphinx_tabs<=3.4.5,>=3.4.1; extra == "developer"
Requires-Dist: sphinxcontrib-bibtex>=2.5.0; extra == "developer"
Requires-Dist: towncrier>=22.12; extra == "developer"
Requires-Dist: tox>=4.4.0; extra == "developer"
Requires-Dist: plasmapy_sphinx; extra == "developer"
Requires-Dist: pygame; extra == "developer"
Requires-Dist: PySide6; python_version >= "3.10" and extra == "developer"
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "developer"
Requires-Dist: qtawesome; extra == "developer"
Requires-Dist: pytest>=5.1; extra == "developer"
Requires-Dist: black; extra == "developer"
Requires-Dist: isort; extra == "developer"
Dynamic: provides

# bapsf_motion

[![Documentation Status](https://readthedocs.org/projects/bapsf-motion/badge/?version=latest)](https://bapsf-motion.readthedocs.io/en/latest/?badge=latest)

``bapsf_motion`` is a module developed for the 
[Basic Plasma Facility (BaPSF)](https://plasma.physics.ucla.edu/) at the
University of California, Los Angeles to integrate with its DAQ system
and control motion devices, such as probe drives.

## GUI Development

This package uses ``PySide6`` to develop its GUI interface.  In attempts
to keep the code pythonic, we are using the feature
[`from __feature__ import snake_case`](https://doc.qt.io/qtforpython/feature-why.html).
This will allow us to write code like `QMainWindow.set_window_title()`
instead of `QMainWindow.setWindowTitle()`.  To get a module set up the 
`__feature__` import must occur after the first `PySide6` import, for
example:

```python
from PySide6.QtWidgets import QMainWindow

from __feature__ import snake_case  # noqa
```

Note the `# noqa`, this is needed to prevent linters and code inspection
from complaining about the import order.

When this is first implement your linters and code inspection will
likely complain with unresolved instances.  This is because the
[Python stub files](https://peps.python.org/pep-0484/#stub-files)
(i.e. ``.pyi`` files) were generated without this feature enabled.  To
update your stub files follow the procedure below:

1. Determine where `PySide6` is installed.  This can be done by 
   executing `python -m pip show pyside6` in the command prompt.  This
   show be the `site-packages` directory for you Python distribution.
2. Navigate to the directory indicated by step 1.
3. Navigate into the `PySide6/` directory.
4. Now execute the following command in your command prompt:

   ```bash
   pyside6-genpyi all --feature snake_case
   ```
   
   This will update all the stub files accordingly, and should only take
   a few seconds.
