bapsf-motion 0.2.0b1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bapsf_motion-0.2.0b1/.gitattributes +10 -0
- bapsf_motion-0.2.0b1/.github/dependabot.yml +20 -0
- bapsf_motion-0.2.0b1/.github/workflows/python-publish.yml +48 -0
- bapsf_motion-0.2.0b1/.github/workflows/test.yml +217 -0
- bapsf_motion-0.2.0b1/.gitignore +151 -0
- bapsf_motion-0.2.0b1/.readthedocs.yml +23 -0
- bapsf_motion-0.2.0b1/PKG-INFO +140 -0
- bapsf_motion-0.2.0b1/README.md +47 -0
- bapsf_motion-0.2.0b1/bapsf_motion/__init__.py +59 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/__init__.py +18 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/axis_.py +328 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/base.py +281 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/demos/__init__.py +0 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/demos/drive_timed_run_1D.py +80 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/demos/drive_timed_run_2D.py +98 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/demos/mgroup_timed_run_2D.py +103 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/drive_.py +360 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/manager_.py +420 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/motion_group_.py +1059 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/motor_.py +1813 -0
- bapsf_motion-0.2.0b1/bapsf_motion/actors/tests/__init__.py +0 -0
- bapsf_motion-0.2.0b1/bapsf_motion/examples/benchtop_motion_group.toml +27 -0
- bapsf_motion-0.2.0b1/bapsf_motion/examples/benchtop_run.toml +30 -0
- bapsf_motion-0.2.0b1/bapsf_motion/examples/mg_1d.toml +24 -0
- bapsf_motion-0.2.0b1/bapsf_motion/examples/mg_2d_strb_test_setup.toml +37 -0
- bapsf_motion-0.2.0b1/bapsf_motion/examples/motion_group.toml +18 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/__init__.py +4 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/configure.py +3628 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/motor.py +313 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/widgets/__init__.py +24 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/widgets/buttons.py +233 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/widgets/logging.py +305 -0
- bapsf_motion-0.2.0b1/bapsf_motion/gui/widgets/misc.py +101 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/__init__.py +12 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/core.py +434 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/exclusions/__init__.py +37 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/exclusions/base.py +201 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/exclusions/circular.py +169 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/exclusions/divider.py +197 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/exclusions/helpers.py +176 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/exclusions/lapd.py +330 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/item.py +170 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/layers/__init__.py +27 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/layers/base.py +169 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/layers/helpers.py +178 -0
- bapsf_motion-0.2.0b1/bapsf_motion/motion_builder/layers/regular_grid.py +210 -0
- bapsf_motion-0.2.0b1/bapsf_motion/transform/__init__.py +12 -0
- bapsf_motion-0.2.0b1/bapsf_motion/transform/base.py +451 -0
- bapsf_motion-0.2.0b1/bapsf_motion/transform/helpers.py +153 -0
- bapsf_motion-0.2.0b1/bapsf_motion/transform/identity.py +80 -0
- bapsf_motion-0.2.0b1/bapsf_motion/transform/lapd.py +483 -0
- bapsf_motion-0.2.0b1/bapsf_motion/utils/__init__.py +112 -0
- bapsf_motion-0.2.0b1/bapsf_motion/utils/exceptions.py +13 -0
- bapsf_motion-0.2.0b1/bapsf_motion/utils/toml.py +55 -0
- bapsf_motion-0.2.0b1/bapsf_motion.egg-info/PKG-INFO +140 -0
- bapsf_motion-0.2.0b1/bapsf_motion.egg-info/SOURCES.txt +127 -0
- bapsf_motion-0.2.0b1/bapsf_motion.egg-info/dependency_links.txt +1 -0
- bapsf_motion-0.2.0b1/bapsf_motion.egg-info/requires.txt +90 -0
- bapsf_motion-0.2.0b1/bapsf_motion.egg-info/top_level.txt +1 -0
- bapsf_motion-0.2.0b1/docs/Makefile +32 -0
- bapsf_motion-0.2.0b1/docs/_static/BaPSF_Logo_Color_yellow_background_RGB_32px.ico +0 -0
- bapsf_motion-0.2.0b1/docs/_static/BaPSF_Logo_White_RGB.png +0 -0
- bapsf_motion-0.2.0b1/docs/_static/BaPSF_Logo_White_RGB_150px.png +0 -0
- bapsf_motion-0.2.0b1/docs/_static/css/overrides.css +4 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.axis_.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.base.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.drive_.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.manager_.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.motion_group_.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.motor_.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.actors.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.configure.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.motor.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.widgets.buttons.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.widgets.logging.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.widgets.misc.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.gui.widgets.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.core.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.exclusions.base.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.exclusions.circular.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.exclusions.divider.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.exclusions.helpers.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.exclusions.lapd.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.exclusions.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.item.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.layers.base.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.layers.helpers.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.layers.regular_grid.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.layers.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.motion_builder.rst +9 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.transform.base.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.transform.helpers.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.transform.identity.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.transform.lapd.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.transform.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.utils.exceptions.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.utils.rst +8 -0
- bapsf_motion-0.2.0b1/docs/api_static/bapsf_motion.utils.toml.rst +8 -0
- bapsf_motion-0.2.0b1/docs/available_transformers.rst +10 -0
- bapsf_motion-0.2.0b1/docs/bibliography.bib +10 -0
- bapsf_motion-0.2.0b1/docs/bibliography.rst +10 -0
- bapsf_motion-0.2.0b1/docs/common_links.rst +211 -0
- bapsf_motion-0.2.0b1/docs/conf.py +538 -0
- bapsf_motion-0.2.0b1/docs/glossary.rst +109 -0
- bapsf_motion-0.2.0b1/docs/index.rst +57 -0
- bapsf_motion-0.2.0b1/docs/make.bat +36 -0
- bapsf_motion-0.2.0b1/docs/motion_builder/index.rst +90 -0
- bapsf_motion-0.2.0b1/docs/notebooks/motion_list/exclusion_circular.ipynb +256 -0
- bapsf_motion-0.2.0b1/docs/notebooks/motion_list/exclusion_lapd_XY.ipynb +347 -0
- bapsf_motion-0.2.0b1/docs/notebooks/motion_list/motionlist.ipynb +371 -0
- bapsf_motion-0.2.0b1/docs/notebooks/transform/lapd_xy_transform.ipynb +1022 -0
- bapsf_motion-0.2.0b1/docs/robots.txt +6 -0
- bapsf_motion-0.2.0b1/docs/toml/index.rst +7 -0
- bapsf_motion-0.2.0b1/pyproject.toml +19 -0
- bapsf_motion-0.2.0b1/requirements/build.txt +5 -0
- bapsf_motion-0.2.0b1/requirements/docs.txt +27 -0
- bapsf_motion-0.2.0b1/requirements/extras.txt +5 -0
- bapsf_motion-0.2.0b1/requirements/gui.txt +6 -0
- bapsf_motion-0.2.0b1/requirements/install-32bit.txt +4 -0
- bapsf_motion-0.2.0b1/requirements/install.txt +12 -0
- bapsf_motion-0.2.0b1/requirements/tests.txt +4 -0
- bapsf_motion-0.2.0b1/requirements.txt +9 -0
- bapsf_motion-0.2.0b1/resources/README.md +2 -0
- bapsf_motion-0.2.0b1/resources/Remote module installation guide.pdf +0 -0
- bapsf_motion-0.2.0b1/setup.cfg +175 -0
- bapsf_motion-0.2.0b1/setup.py +13 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# as per
|
|
2
|
+
# https://docs.github.com/en/code-security/supply-chain-security/enabling-and-disabling-version-updates
|
|
3
|
+
# configuration options
|
|
4
|
+
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
+
#
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
|
|
9
|
+
# Maintain dependencies for GitHub Actions
|
|
10
|
+
- package-ecosystem: "github-actions"
|
|
11
|
+
directory: "/"
|
|
12
|
+
reviewers:
|
|
13
|
+
- "rocco8773"
|
|
14
|
+
assignees:
|
|
15
|
+
- "rocco8773"
|
|
16
|
+
schedule:
|
|
17
|
+
interval: "weekly"
|
|
18
|
+
day: "monday"
|
|
19
|
+
# Check for npm updates at 4am PST
|
|
20
|
+
time: "23:00"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# This workflow will upload a Python Package using Twine when a release
|
|
2
|
+
# is created. For more information see:
|
|
3
|
+
#
|
|
4
|
+
# https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
|
5
|
+
#
|
|
6
|
+
# PyPI's instructions on creating a new project
|
|
7
|
+
# https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#configuring-trusted-publishing
|
|
8
|
+
|
|
9
|
+
# This workflow uses actions that are not certified by GitHub.
|
|
10
|
+
# They are provided by a third-party and are governed by
|
|
11
|
+
# separate terms of service, privacy policy, and support
|
|
12
|
+
# documentation.
|
|
13
|
+
|
|
14
|
+
name: Upload Python Package
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
release:
|
|
18
|
+
types: [published]
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
deploy:
|
|
25
|
+
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
|
|
28
|
+
environment:
|
|
29
|
+
name: pypi
|
|
30
|
+
url: https://pypi.org/p/bapsf_motion
|
|
31
|
+
|
|
32
|
+
permissions:
|
|
33
|
+
id-token: write
|
|
34
|
+
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v4
|
|
37
|
+
- name: Set up Python
|
|
38
|
+
uses: actions/setup-python@v4
|
|
39
|
+
with:
|
|
40
|
+
python-version: 3.x
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install --upgrade pip
|
|
44
|
+
pip install build
|
|
45
|
+
- name: Build package
|
|
46
|
+
run: python -m build
|
|
47
|
+
- name: Publish package (to PyPI)
|
|
48
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
# run every Sunday at 10:13 am UTC (3:13 am PT)
|
|
6
|
+
- cron: '13 10 * * 0'
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
tags:
|
|
11
|
+
- "v*"
|
|
12
|
+
pull_request:
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
# base-tests:
|
|
17
|
+
# name: py${{ matrix.python }} ${{ matrix.name-modifier }} - on ${{ matrix.os }}
|
|
18
|
+
# runs-on: ${{ matrix.os }}
|
|
19
|
+
#
|
|
20
|
+
# strategy:
|
|
21
|
+
# fail-fast: false
|
|
22
|
+
# matrix:
|
|
23
|
+
# include:
|
|
24
|
+
# # mark default
|
|
25
|
+
# - python: '3.10'
|
|
26
|
+
# os: ubuntu-latest
|
|
27
|
+
# do-coverage: false
|
|
28
|
+
# name-modifier: ''
|
|
29
|
+
#
|
|
30
|
+
# # mark case for coverage reporting
|
|
31
|
+
# - python: '3.7'
|
|
32
|
+
# os: ubuntu-latest
|
|
33
|
+
# do-coverage: true
|
|
34
|
+
# name-modifier: 'with Coverage'
|
|
35
|
+
# steps:
|
|
36
|
+
# - name: Checkout code
|
|
37
|
+
# uses: actions/checkout@v4
|
|
38
|
+
# with:
|
|
39
|
+
# fetch-depth: 0
|
|
40
|
+
# - name: Setup Python
|
|
41
|
+
# uses: actions/setup-python@v5
|
|
42
|
+
# with:
|
|
43
|
+
# python-version: ${{ matrix.python }}
|
|
44
|
+
# - name: Install 'bapsflib' dependencies
|
|
45
|
+
# run: python -m pip install -r requirements/tests.txt
|
|
46
|
+
# - name: Run tests ${{ matrix.name-modifier }}
|
|
47
|
+
# run: |
|
|
48
|
+
# if ${{ matrix.do-coverage }}; then
|
|
49
|
+
# coverage run -m unittest discover
|
|
50
|
+
# else
|
|
51
|
+
# python -m unittest discover
|
|
52
|
+
# fi
|
|
53
|
+
# shell: bash
|
|
54
|
+
# - name: Report coverage
|
|
55
|
+
# if: ${{ matrix.do-coverage && !failure() }}
|
|
56
|
+
# uses: codecov/codecov-action@v3.1.4
|
|
57
|
+
# with:
|
|
58
|
+
# token: ${{ secrets.CODECOV_TOKEN }}
|
|
59
|
+
# files: .coverage
|
|
60
|
+
# fail_ci_if_error: true
|
|
61
|
+
#
|
|
62
|
+
# tests:
|
|
63
|
+
# needs: base-tests
|
|
64
|
+
# name: py${{ matrix.python }} - on ${{ matrix.os }}
|
|
65
|
+
# runs-on: ${{ matrix.os }}
|
|
66
|
+
#
|
|
67
|
+
# strategy:
|
|
68
|
+
# fail-fast: false
|
|
69
|
+
# matrix:
|
|
70
|
+
# python: ['3.7', '3.8', '3.9', '3.10']
|
|
71
|
+
# os: [ubuntu-latest, macos-latest, windows-latest]
|
|
72
|
+
#
|
|
73
|
+
# exclude:
|
|
74
|
+
# # these were done in base-tests
|
|
75
|
+
# - python: '3.10'
|
|
76
|
+
# os: ubuntu-latest
|
|
77
|
+
# - python: '3.7'
|
|
78
|
+
# os: ubuntu-latest
|
|
79
|
+
#
|
|
80
|
+
# steps:
|
|
81
|
+
# - name: Checkout code
|
|
82
|
+
# uses: actions/checkout@v4
|
|
83
|
+
# with:
|
|
84
|
+
# fetch-depth: 0
|
|
85
|
+
# - name: Setup Python
|
|
86
|
+
# uses: actions/setup-python@v5
|
|
87
|
+
# with:
|
|
88
|
+
# python-version: ${{ matrix.python }}
|
|
89
|
+
# - name: Install 'bapsflib' dependencies
|
|
90
|
+
# run: python -m pip install -r requirements/tests.txt
|
|
91
|
+
# - name: Run tests
|
|
92
|
+
# run: |
|
|
93
|
+
# python -m unittest discover
|
|
94
|
+
# shell: bash
|
|
95
|
+
#
|
|
96
|
+
# test-mins:
|
|
97
|
+
# # test min versions of key dependencies
|
|
98
|
+
# needs: tests
|
|
99
|
+
# name: Min Vers | py-${{ matrix.python }} | ${{ matrix.spec-name }}
|
|
100
|
+
# runs-on: ubuntu-latest
|
|
101
|
+
#
|
|
102
|
+
# strategy:
|
|
103
|
+
# fail-fast: true
|
|
104
|
+
# matrix:
|
|
105
|
+
# include:
|
|
106
|
+
# - spec-name: h5py v3.0
|
|
107
|
+
# min-install: h5py==3.0
|
|
108
|
+
# python: '3.7'
|
|
109
|
+
#
|
|
110
|
+
# - spec-name: h5py v3.0 numpy v1.20
|
|
111
|
+
# min-install: h5py==3.0 numpy==1.20
|
|
112
|
+
# python: '3.7'
|
|
113
|
+
#
|
|
114
|
+
# steps:
|
|
115
|
+
# - name: Checkout code
|
|
116
|
+
# uses: actions/checkout@v4
|
|
117
|
+
# with:
|
|
118
|
+
# fetch-depth: 0
|
|
119
|
+
# - name: Setup Python
|
|
120
|
+
# uses: actions/setup-python@v5
|
|
121
|
+
# with:
|
|
122
|
+
# python-version: ${{ matrix.python }}
|
|
123
|
+
# - name: Install 'bapsflib' dependencies
|
|
124
|
+
# run: |
|
|
125
|
+
# python -m pip install -r requirements/tests.txt ${{ matrix.min-install }}
|
|
126
|
+
# - name: Run tests
|
|
127
|
+
# run: python -m unittest discover
|
|
128
|
+
|
|
129
|
+
import-bapsf_motion:
|
|
130
|
+
name: Importing bapsf_motion
|
|
131
|
+
# needs: base-tests
|
|
132
|
+
runs-on: ${{ matrix.os }}
|
|
133
|
+
strategy:
|
|
134
|
+
fail-fast: false
|
|
135
|
+
matrix:
|
|
136
|
+
python: [ '3.10', '3.11', '3.12' ]
|
|
137
|
+
os: [ubuntu-latest]
|
|
138
|
+
architecture: [x64]
|
|
139
|
+
|
|
140
|
+
include:
|
|
141
|
+
- python: '3.7'
|
|
142
|
+
os: windows-2019
|
|
143
|
+
architecture: x64
|
|
144
|
+
|
|
145
|
+
- python: '3.10'
|
|
146
|
+
os: windows-2019
|
|
147
|
+
architecture: x64
|
|
148
|
+
|
|
149
|
+
- python: '3.10'
|
|
150
|
+
os: windows-2019
|
|
151
|
+
architecture: x86
|
|
152
|
+
|
|
153
|
+
steps:
|
|
154
|
+
- name: Checkout code
|
|
155
|
+
uses: actions/checkout@v4
|
|
156
|
+
with:
|
|
157
|
+
fetch-depth: 0
|
|
158
|
+
- name: Set up Python
|
|
159
|
+
uses: actions/setup-python@v5
|
|
160
|
+
with:
|
|
161
|
+
python-version: ${{ matrix.python }}
|
|
162
|
+
architecture: ${{ matrix.architecture }}
|
|
163
|
+
- name: Install 'bapsf_motion' dependencies
|
|
164
|
+
if: ${{ matrix.architecture == 'x64' }}
|
|
165
|
+
run: |
|
|
166
|
+
python -m pip install -r requirements/gui.txt
|
|
167
|
+
- name: Install additional PySide6 dependencies [Linux Systems ONLY]
|
|
168
|
+
if: ${{ matrix.architecture == 'x64' && runner.os != 'Windows'}}
|
|
169
|
+
run: |
|
|
170
|
+
sudo apt update && sudo apt install -y libegl1-mesa-dev
|
|
171
|
+
- name: Install 'bapsf_motion' dependencies (32bit)
|
|
172
|
+
if: ${{ matrix.architecture == 'x86' }}
|
|
173
|
+
run: |
|
|
174
|
+
python -m pip install -r requirements/install-32bit.txt
|
|
175
|
+
- name: Import 'bapsf_motion'
|
|
176
|
+
run: |
|
|
177
|
+
python -c 'import bapsf_motion'
|
|
178
|
+
- name: Import 'bapsf_motion.gui'
|
|
179
|
+
if: ${{ matrix.architecture == 'x64' }}
|
|
180
|
+
run: |
|
|
181
|
+
python -c 'import bapsf_motion.gui'
|
|
182
|
+
|
|
183
|
+
build-bapsf_motion:
|
|
184
|
+
name: Packaging
|
|
185
|
+
runs-on: ubuntu-latest
|
|
186
|
+
needs:
|
|
187
|
+
# - test-mins
|
|
188
|
+
- import-bapsf_motion
|
|
189
|
+
steps:
|
|
190
|
+
- name: Checkout code
|
|
191
|
+
uses: actions/checkout@v4
|
|
192
|
+
- name: Get history and tags for SCM versioning to work
|
|
193
|
+
run: |
|
|
194
|
+
git fetch --prune --unshallow
|
|
195
|
+
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
|
196
|
+
- name: Set up Python 3.10
|
|
197
|
+
uses: actions/setup-python@v5
|
|
198
|
+
with:
|
|
199
|
+
python-version: '3.10'
|
|
200
|
+
cache: pip
|
|
201
|
+
- name: Install requirements
|
|
202
|
+
run: |
|
|
203
|
+
pip install --progress-bar off --upgrade pip setuptools setuptools_scm twine build
|
|
204
|
+
pip install --progress-bar off -r requirements/install.txt
|
|
205
|
+
- name: Build a binary wheel
|
|
206
|
+
run: |
|
|
207
|
+
python -m build --wheel --outdir dist/
|
|
208
|
+
- name: Build a source tarball
|
|
209
|
+
run: |
|
|
210
|
+
python -m build --sdist --outdir dist/
|
|
211
|
+
- name: Twine check
|
|
212
|
+
run: |
|
|
213
|
+
twine check dist/*
|
|
214
|
+
- name: Install bapsf_motion in all variants
|
|
215
|
+
run: |
|
|
216
|
+
pip install --progress-bar off .[install]
|
|
217
|
+
pip install --progress-bar off -e .[install]
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# LabView files
|
|
2
|
+
# https://labviewwiki.org/wiki/ALIASES_File_Extension
|
|
3
|
+
*.aliases
|
|
4
|
+
# https://labviewwiki.org/wiki/LVLPS_File_Extension
|
|
5
|
+
*.lvlps
|
|
6
|
+
|
|
7
|
+
# Byte-compiled / optimized / DLL files
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.py[cod]
|
|
10
|
+
*$py.class
|
|
11
|
+
*.a
|
|
12
|
+
*.o
|
|
13
|
+
*.so
|
|
14
|
+
MANIFEST
|
|
15
|
+
|
|
16
|
+
# Ignore .c files by default to avoid including generated code. If you want to
|
|
17
|
+
# add a non-generated .c extension, use `git add -f filename.c`.
|
|
18
|
+
*.c
|
|
19
|
+
|
|
20
|
+
# Distribution / packaging
|
|
21
|
+
.Python
|
|
22
|
+
env/
|
|
23
|
+
build/
|
|
24
|
+
develop-eggs/
|
|
25
|
+
dist/
|
|
26
|
+
downloads/
|
|
27
|
+
eggs/
|
|
28
|
+
.eggs/
|
|
29
|
+
lib/
|
|
30
|
+
lib64/
|
|
31
|
+
parts/
|
|
32
|
+
sdist/
|
|
33
|
+
var/
|
|
34
|
+
wheels/
|
|
35
|
+
*.egg-info/
|
|
36
|
+
.installed.cfg
|
|
37
|
+
*.egg
|
|
38
|
+
|
|
39
|
+
# PyInstaller
|
|
40
|
+
# Usually these files are written by a python script from a template
|
|
41
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
42
|
+
*.manifest
|
|
43
|
+
*.spec
|
|
44
|
+
|
|
45
|
+
# Installer logs
|
|
46
|
+
pip-log.txt
|
|
47
|
+
pip-delete-this-directory.txt
|
|
48
|
+
|
|
49
|
+
# Unit test / coverage reports
|
|
50
|
+
htmlcov/
|
|
51
|
+
.tox/
|
|
52
|
+
.coverage
|
|
53
|
+
.coverage.*
|
|
54
|
+
.cache
|
|
55
|
+
nosetests.xml
|
|
56
|
+
coverage.xml
|
|
57
|
+
*,cover
|
|
58
|
+
.hypothesis/
|
|
59
|
+
.pytest_cache
|
|
60
|
+
|
|
61
|
+
# Translations
|
|
62
|
+
*.mo
|
|
63
|
+
*.pot
|
|
64
|
+
|
|
65
|
+
# Django stuff:
|
|
66
|
+
*.log
|
|
67
|
+
local_settings.py
|
|
68
|
+
|
|
69
|
+
# Flask stuff:
|
|
70
|
+
instance/
|
|
71
|
+
.webassets-cache
|
|
72
|
+
|
|
73
|
+
# Scrapy stuff:
|
|
74
|
+
.scrapy
|
|
75
|
+
|
|
76
|
+
# Sphinx documentation
|
|
77
|
+
docs/_build/
|
|
78
|
+
docs/api
|
|
79
|
+
docs/gen_modules
|
|
80
|
+
|
|
81
|
+
# PyBuilder
|
|
82
|
+
target/
|
|
83
|
+
|
|
84
|
+
# Jupyter Notebook
|
|
85
|
+
.ipynb_checkpoints
|
|
86
|
+
notebooks_for_proto
|
|
87
|
+
|
|
88
|
+
# pyenv
|
|
89
|
+
.python-version
|
|
90
|
+
|
|
91
|
+
# celery beat schedule file
|
|
92
|
+
celerybeat-schedule
|
|
93
|
+
|
|
94
|
+
# SageMath parsed files
|
|
95
|
+
*.sage.py
|
|
96
|
+
|
|
97
|
+
# dotenv
|
|
98
|
+
.env
|
|
99
|
+
|
|
100
|
+
# virtualenv
|
|
101
|
+
.venvs
|
|
102
|
+
.venv
|
|
103
|
+
venv/
|
|
104
|
+
venvs/
|
|
105
|
+
ENV/
|
|
106
|
+
|
|
107
|
+
# Spyder project settings
|
|
108
|
+
.spyderproject
|
|
109
|
+
|
|
110
|
+
# Rope project settings
|
|
111
|
+
.ropeproject
|
|
112
|
+
|
|
113
|
+
# VS code project settings
|
|
114
|
+
.vscode
|
|
115
|
+
|
|
116
|
+
# mkdocs documentation
|
|
117
|
+
/site
|
|
118
|
+
|
|
119
|
+
# Auxiliary files associated with emacs
|
|
120
|
+
*#
|
|
121
|
+
*~
|
|
122
|
+
*.#
|
|
123
|
+
.#*
|
|
124
|
+
|
|
125
|
+
# Auxilliary files associated with vim
|
|
126
|
+
*.swp
|
|
127
|
+
VIRTUAL/
|
|
128
|
+
|
|
129
|
+
# LaTeX and bibtex auxiliary files
|
|
130
|
+
|
|
131
|
+
*.aux
|
|
132
|
+
*.bbl
|
|
133
|
+
*.blg
|
|
134
|
+
|
|
135
|
+
# Miscellaneous files
|
|
136
|
+
.idea/
|
|
137
|
+
Untitled*
|
|
138
|
+
untitled*
|
|
139
|
+
*debuglog*
|
|
140
|
+
.DS_Store
|
|
141
|
+
*/cython_version.py
|
|
142
|
+
.mypy_cache
|
|
143
|
+
*.tmp
|
|
144
|
+
|
|
145
|
+
# Documentation files
|
|
146
|
+
auto_examples
|
|
147
|
+
|
|
148
|
+
# Version file
|
|
149
|
+
plasmapy/version.py
|
|
150
|
+
tags
|
|
151
|
+
docs/notebooks/*.md
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Read the Docs configuration file
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
formats:
|
|
7
|
+
- htmlzip
|
|
8
|
+
|
|
9
|
+
build:
|
|
10
|
+
os: ubuntu-22.04
|
|
11
|
+
tools:
|
|
12
|
+
python: '3.10'
|
|
13
|
+
apt_packages:
|
|
14
|
+
- graphviz
|
|
15
|
+
|
|
16
|
+
sphinx:
|
|
17
|
+
configuration: docs/conf.py
|
|
18
|
+
|
|
19
|
+
python:
|
|
20
|
+
install:
|
|
21
|
+
- requirements: requirements.txt
|
|
22
|
+
- method: pip
|
|
23
|
+
path: .
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: bapsf_motion
|
|
3
|
+
Version: 0.2.0b1
|
|
4
|
+
Summary: Package for controlling motion devices in a BaPSF DAQ system
|
|
5
|
+
Author: Basic Plasma Science Facility
|
|
6
|
+
Keywords: plasma physics,plasma,science,bapsf,motion
|
|
7
|
+
Classifier: Development Status :: 1 - Planning
|
|
8
|
+
Classifier: Intended Audience :: Science/Research
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
18
|
+
Provides: bapsf_motion
|
|
19
|
+
Requires-Python: >=3.7
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: astropy
|
|
22
|
+
Requires-Dist: importlib_metadata; python_version < "3.8"
|
|
23
|
+
Requires-Dist: matplotlib>=3.3.0
|
|
24
|
+
Requires-Dist: numpy>=1.18.1
|
|
25
|
+
Requires-Dist: numpydoc
|
|
26
|
+
Requires-Dist: tomli; python_version < "3.11"
|
|
27
|
+
Requires-Dist: tomli_w
|
|
28
|
+
Requires-Dist: tqdm
|
|
29
|
+
Requires-Dist: xarray
|
|
30
|
+
Provides-Extra: gui
|
|
31
|
+
Requires-Dist: PySide6; python_version >= "3.10" and extra == "gui"
|
|
32
|
+
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "gui"
|
|
33
|
+
Requires-Dist: qtawesome; extra == "gui"
|
|
34
|
+
Provides-Extra: tests
|
|
35
|
+
Requires-Dist: pytest>=5.1; extra == "tests"
|
|
36
|
+
Provides-Extra: 32bit
|
|
37
|
+
Requires-Dist: pandas<=2.0.3; extra == "32bit"
|
|
38
|
+
Provides-Extra: docs
|
|
39
|
+
Requires-Dist: docutils>=0.18.1; extra == "docs"
|
|
40
|
+
Requires-Dist: ipython; extra == "docs"
|
|
41
|
+
Requires-Dist: jinja2>=3.1.2; extra == "docs"
|
|
42
|
+
Requires-Dist: nbsphinx>=0.9.1; extra == "docs"
|
|
43
|
+
Requires-Dist: numpydoc>=1.5.0; extra == "docs"
|
|
44
|
+
Requires-Dist: pillow>=9.5.0; extra == "docs"
|
|
45
|
+
Requires-Dist: pygments>=2.15.0; extra == "docs"
|
|
46
|
+
Requires-Dist: sphinx>=6.1.3; extra == "docs"
|
|
47
|
+
Requires-Dist: sphinx-changelog>=1.3.0; extra == "docs"
|
|
48
|
+
Requires-Dist: sphinx-codeautolink>=0.15.0; extra == "docs"
|
|
49
|
+
Requires-Dist: sphinx-copybutton>=0.5.1; extra == "docs"
|
|
50
|
+
Requires-Dist: sphinx-gallery>=0.12.2; extra == "docs"
|
|
51
|
+
Requires-Dist: sphinx-hoverxref>=1.1.1; extra == "docs"
|
|
52
|
+
Requires-Dist: sphinx-issues>=3.0.1; extra == "docs"
|
|
53
|
+
Requires-Dist: sphinx-notfound-page>=0.8.3; extra == "docs"
|
|
54
|
+
Requires-Dist: sphinx-reredirects>=0.1.1; extra == "docs"
|
|
55
|
+
Requires-Dist: sphinx_rtd_theme>=1.2.0; extra == "docs"
|
|
56
|
+
Requires-Dist: sphinx_tabs>=3.4.1; extra == "docs"
|
|
57
|
+
Requires-Dist: sphinxcontrib-bibtex>=2.5.0; extra == "docs"
|
|
58
|
+
Requires-Dist: towncrier>=22.12; extra == "docs"
|
|
59
|
+
Requires-Dist: tox>=4.4.0; extra == "docs"
|
|
60
|
+
Requires-Dist: plasmapy_sphinx; extra == "docs"
|
|
61
|
+
Provides-Extra: extras
|
|
62
|
+
Requires-Dist: black; extra == "extras"
|
|
63
|
+
Requires-Dist: isort; extra == "extras"
|
|
64
|
+
Provides-Extra: developer
|
|
65
|
+
Requires-Dist: PySide6; python_version >= "3.10" and extra == "developer"
|
|
66
|
+
Requires-Dist: PySide6<=6.3.1; python_version < "3.10" and extra == "developer"
|
|
67
|
+
Requires-Dist: qtawesome; extra == "developer"
|
|
68
|
+
Requires-Dist: docutils>=0.18.1; extra == "developer"
|
|
69
|
+
Requires-Dist: ipython; extra == "developer"
|
|
70
|
+
Requires-Dist: jinja2>=3.1.2; extra == "developer"
|
|
71
|
+
Requires-Dist: nbsphinx>=0.9.1; extra == "developer"
|
|
72
|
+
Requires-Dist: numpydoc>=1.5.0; extra == "developer"
|
|
73
|
+
Requires-Dist: pillow>=9.5.0; extra == "developer"
|
|
74
|
+
Requires-Dist: pygments>=2.15.0; extra == "developer"
|
|
75
|
+
Requires-Dist: sphinx>=6.1.3; extra == "developer"
|
|
76
|
+
Requires-Dist: sphinx-changelog>=1.3.0; extra == "developer"
|
|
77
|
+
Requires-Dist: sphinx-codeautolink>=0.15.0; extra == "developer"
|
|
78
|
+
Requires-Dist: sphinx-copybutton>=0.5.1; extra == "developer"
|
|
79
|
+
Requires-Dist: sphinx-gallery>=0.12.2; extra == "developer"
|
|
80
|
+
Requires-Dist: sphinx-hoverxref>=1.1.1; extra == "developer"
|
|
81
|
+
Requires-Dist: sphinx-issues>=3.0.1; extra == "developer"
|
|
82
|
+
Requires-Dist: sphinx-notfound-page>=0.8.3; extra == "developer"
|
|
83
|
+
Requires-Dist: sphinx-reredirects>=0.1.1; extra == "developer"
|
|
84
|
+
Requires-Dist: sphinx_rtd_theme>=1.2.0; extra == "developer"
|
|
85
|
+
Requires-Dist: sphinx_tabs>=3.4.1; extra == "developer"
|
|
86
|
+
Requires-Dist: sphinxcontrib-bibtex>=2.5.0; extra == "developer"
|
|
87
|
+
Requires-Dist: towncrier>=22.12; extra == "developer"
|
|
88
|
+
Requires-Dist: tox>=4.4.0; extra == "developer"
|
|
89
|
+
Requires-Dist: plasmapy_sphinx; extra == "developer"
|
|
90
|
+
Requires-Dist: pytest>=5.1; extra == "developer"
|
|
91
|
+
Requires-Dist: black; extra == "developer"
|
|
92
|
+
Requires-Dist: isort; extra == "developer"
|
|
93
|
+
|
|
94
|
+
# bapsf_motion
|
|
95
|
+
|
|
96
|
+
[](https://bapsf-motion.readthedocs.io/en/latest/?badge=latest)
|
|
97
|
+
|
|
98
|
+
``bapsf_motion`` is a module developed for the
|
|
99
|
+
[Basic Plasma Facility (BaPSF)](https://plasma.physics.ucla.edu/) at the
|
|
100
|
+
University of California, Los Angeles to integrate with its DAQ system
|
|
101
|
+
and control motion devices, such as probe drives.
|
|
102
|
+
|
|
103
|
+
## GUI Development
|
|
104
|
+
|
|
105
|
+
This package uses ``PySide6`` to develop its GUI interface. In attempts
|
|
106
|
+
to keep the code pythonic, we are using the feature
|
|
107
|
+
[`from __feature__ import snake_case`](https://doc.qt.io/qtforpython/feature-why.html).
|
|
108
|
+
This will allow us to write code like `QMainWindow.set_window_title()`
|
|
109
|
+
instead of `QMainWindow.setWindowTitle()`. To get a module set up the
|
|
110
|
+
`__feature__` import must occur after the first `PySide6` import, for
|
|
111
|
+
example:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
from PySide6.QtWidgets import QMainWindow
|
|
115
|
+
|
|
116
|
+
from __feature__ import snake_case # noqa
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Note the `# noqa`, this is needed to prevent linters and code inspection
|
|
120
|
+
from complaining about the import order.
|
|
121
|
+
|
|
122
|
+
When this is first implement your linters and code inspection will
|
|
123
|
+
likely complain with unresolved instances. This is because the
|
|
124
|
+
[Python stub files](https://peps.python.org/pep-0484/#stub-files)
|
|
125
|
+
(i.e. ``.pyi`` files) were generated without this feature enabled. To
|
|
126
|
+
update your stub files follow the procedure below:
|
|
127
|
+
|
|
128
|
+
1. Determine where `PySide6` is installed. This can be done by
|
|
129
|
+
executing `python -m pip show pyside6` in the command prompt. This
|
|
130
|
+
show be the `site-packages` directory for you Python distribution.
|
|
131
|
+
2. Navigate to the directory indicated by step 1.
|
|
132
|
+
3. Navigate into the `PySide6/` directory.
|
|
133
|
+
4. Now execute the following command in your command prompt:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
pyside6-genpyi all --feature snake_case
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This will update all the stub files accordingly, and should only take
|
|
140
|
+
a few seconds.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# bapsf_motion
|
|
2
|
+
|
|
3
|
+
[](https://bapsf-motion.readthedocs.io/en/latest/?badge=latest)
|
|
4
|
+
|
|
5
|
+
``bapsf_motion`` is a module developed for the
|
|
6
|
+
[Basic Plasma Facility (BaPSF)](https://plasma.physics.ucla.edu/) at the
|
|
7
|
+
University of California, Los Angeles to integrate with its DAQ system
|
|
8
|
+
and control motion devices, such as probe drives.
|
|
9
|
+
|
|
10
|
+
## GUI Development
|
|
11
|
+
|
|
12
|
+
This package uses ``PySide6`` to develop its GUI interface. In attempts
|
|
13
|
+
to keep the code pythonic, we are using the feature
|
|
14
|
+
[`from __feature__ import snake_case`](https://doc.qt.io/qtforpython/feature-why.html).
|
|
15
|
+
This will allow us to write code like `QMainWindow.set_window_title()`
|
|
16
|
+
instead of `QMainWindow.setWindowTitle()`. To get a module set up the
|
|
17
|
+
`__feature__` import must occur after the first `PySide6` import, for
|
|
18
|
+
example:
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
from PySide6.QtWidgets import QMainWindow
|
|
22
|
+
|
|
23
|
+
from __feature__ import snake_case # noqa
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Note the `# noqa`, this is needed to prevent linters and code inspection
|
|
27
|
+
from complaining about the import order.
|
|
28
|
+
|
|
29
|
+
When this is first implement your linters and code inspection will
|
|
30
|
+
likely complain with unresolved instances. This is because the
|
|
31
|
+
[Python stub files](https://peps.python.org/pep-0484/#stub-files)
|
|
32
|
+
(i.e. ``.pyi`` files) were generated without this feature enabled. To
|
|
33
|
+
update your stub files follow the procedure below:
|
|
34
|
+
|
|
35
|
+
1. Determine where `PySide6` is installed. This can be done by
|
|
36
|
+
executing `python -m pip show pyside6` in the command prompt. This
|
|
37
|
+
show be the `site-packages` directory for you Python distribution.
|
|
38
|
+
2. Navigate to the directory indicated by step 1.
|
|
39
|
+
3. Navigate into the `PySide6/` directory.
|
|
40
|
+
4. Now execute the following command in your command prompt:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pyside6-genpyi all --feature snake_case
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
This will update all the stub files accordingly, and should only take
|
|
47
|
+
a few seconds.
|