apsbits 2.0.3__tar.gz → 2.0.4__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.
Files changed (151) hide show
  1. {apsbits-2.0.3 → apsbits-2.0.4}/.github/dependabot.yml +6 -0
  2. {apsbits-2.0.3 → apsbits-2.0.4}/.github/workflows/code.yml +7 -0
  3. {apsbits-2.0.3 → apsbits-2.0.4}/.github/workflows/docs.yml +10 -0
  4. {apsbits-2.0.3 → apsbits-2.0.4}/.github/workflows/pypi.yml +2 -2
  5. {apsbits-2.0.3 → apsbits-2.0.4}/.gitignore +5 -0
  6. {apsbits-2.0.3 → apsbits-2.0.4}/HISTORY.rst +8 -2
  7. apsbits-2.0.4/PKG-INFO +112 -0
  8. apsbits-2.0.4/README.md +46 -0
  9. apsbits-2.0.4/apsbits.egg-info/PKG-INFO +112 -0
  10. {apsbits-2.0.3 → apsbits-2.0.4}/apsbits.egg-info/SOURCES.txt +6 -2
  11. {apsbits-2.0.3 → apsbits-2.0.4}/apsbits.egg-info/entry_points.txt +0 -2
  12. {apsbits-2.0.3 → apsbits-2.0.4}/apsbits.egg-info/requires.txt +3 -6
  13. apsbits-2.0.4/apsbits.egg-info/scm_file_list.json +136 -0
  14. apsbits-2.0.4/apsbits.egg-info/scm_version.json +8 -0
  15. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/api.rst +2 -10
  16. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/index.rst +0 -1
  17. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/creating_instrument.rst +1 -1
  18. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/qserver.rst +1 -1
  19. {apsbits-2.0.3 → apsbits-2.0.4}/pyproject.toml +9 -61
  20. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/_version.py +3 -3
  21. apsbits-2.0.4/src/apsbits/api/__init__.py +6 -0
  22. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/api/create_new_instrument.py +22 -18
  23. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/api/delete_instrument.py +1 -0
  24. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/core/instrument_init.py +28 -12
  25. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/core/run_engine_init.py +4 -12
  26. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/callbacks/demo_nexus_callback.py +1 -1
  27. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/conftest.py +57 -22
  28. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_catalog_init.py +72 -6
  29. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_config.py +47 -4
  30. apsbits-2.0.4/src/apsbits/tests/test_create_new_instrument.py +83 -0
  31. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_delete_instrument.py +30 -26
  32. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_general.py +39 -3
  33. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_import_purity.py +20 -5
  34. apsbits-2.0.4/src/apsbits/tests/test_instrument_init.py +91 -0
  35. apsbits-2.0.4/src/apsbits/tests/test_make_devices.py +19 -0
  36. apsbits-2.0.4/src/apsbits/tests/test_run_engine_init.py +27 -0
  37. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_stored_dict.py +57 -0
  38. apsbits-2.0.4/src/apsbits/tests/test_units.py +136 -0
  39. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/aps_functions.py +5 -1
  40. apsbits-2.0.4/src/apsbits/utils/config_loaders.py +157 -0
  41. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/controls_setup.py +7 -1
  42. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/helper_functions.py +6 -2
  43. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/logging_setup.py +8 -5
  44. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/metadata.py +5 -2
  45. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/sim_creator.py +0 -2
  46. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/stored_dict.py +53 -27
  47. apsbits-2.0.3/PKG-INFO +0 -216
  48. apsbits-2.0.3/README.md +0 -147
  49. apsbits-2.0.3/apsbits.egg-info/PKG-INFO +0 -216
  50. apsbits-2.0.3/src/apsbits/api/__init__.py +0 -6
  51. apsbits-2.0.3/src/apsbits/api/run_instrument.py +0 -95
  52. apsbits-2.0.3/src/apsbits/tests/test_make_devices.py +0 -32
  53. apsbits-2.0.3/src/apsbits/tests/test_run_instrument.py +0 -310
  54. apsbits-2.0.3/src/apsbits/utils/config_loaders.py +0 -239
  55. {apsbits-2.0.3 → apsbits-2.0.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  56. {apsbits-2.0.3 → apsbits-2.0.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  57. {apsbits-2.0.3 → apsbits-2.0.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  58. {apsbits-2.0.3 → apsbits-2.0.4}/.github/ISSUE_TEMPLATE/other.md +0 -0
  59. {apsbits-2.0.3 → apsbits-2.0.4}/.github/ISSUE_TEMPLATE/question-issue-template.md +0 -0
  60. {apsbits-2.0.3 → apsbits-2.0.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  61. {apsbits-2.0.3 → apsbits-2.0.4}/.pre-commit-config.yaml +0 -0
  62. {apsbits-2.0.3 → apsbits-2.0.4}/LICENSE +0 -0
  63. {apsbits-2.0.3 → apsbits-2.0.4}/apsbits.egg-info/dependency_links.txt +0 -0
  64. {apsbits-2.0.3 → apsbits-2.0.4}/apsbits.egg-info/top_level.txt +0 -0
  65. {apsbits-2.0.3 → apsbits-2.0.4}/docs/Makefile +0 -0
  66. {apsbits-2.0.3 → apsbits-2.0.4}/docs/make.bat +0 -0
  67. {apsbits-2.0.3 → apsbits-2.0.4}/docs/resources/create-repository-name.webp +0 -0
  68. {apsbits-2.0.3 → apsbits-2.0.4}/docs/resources/create-repository-owner.webp +0 -0
  69. {apsbits-2.0.3 → apsbits-2.0.4}/docs/resources/demo.ipynb +0 -0
  70. {apsbits-2.0.3 → apsbits-2.0.4}/docs/resources/use-this-template-button.webp +0 -0
  71. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/_static/.gitkeep +0 -0
  72. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/core.rst +0 -0
  73. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/demo_instrument.rst +0 -0
  74. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/demo_qserver.rst +0 -0
  75. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.api.create_new_instrument.rst +0 -0
  76. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.api.delete_instrument.rst +0 -0
  77. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.core.best_effort_init.rst +0 -0
  78. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.core.catalog_init.rst +0 -0
  79. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.core.run_engine_init.rst +0 -0
  80. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.callbacks.demo_nexus_callback.rst +0 -0
  81. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.callbacks.demo_spec_callback.rst +0 -0
  82. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.callbacks.rst +0 -0
  83. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.configs.rst +0 -0
  84. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.devices.rst +0 -0
  85. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.plans.rst +0 -0
  86. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.plans.sim_plans.rst +0 -0
  87. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.rst +0 -0
  88. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.startup.rst +0 -0
  89. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.suspenders.rst +0 -0
  90. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_instrument.utils.rst +0 -0
  91. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.demo_qserver.rst +0 -0
  92. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.utils.config_loaders.rst +0 -0
  93. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.utils.controls_setup.rst +0 -0
  94. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.utils.helper_functions.rst +0 -0
  95. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.utils.logging_setup.rst +0 -0
  96. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.utils.metadata.rst +0 -0
  97. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/generated/apsbits.utils.stored_dict.rst +0 -0
  98. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/api/utils.rst +0 -0
  99. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/bits_overview.rst +0 -0
  100. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/conf.py +0 -0
  101. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/deprecated/console.rst +0 -0
  102. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/deprecated/dm.md +0 -0
  103. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/deprecated/logging_config.rst +0 -0
  104. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/deprecated/notebook.rst +0 -0
  105. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/deprecated/script.rst +0 -0
  106. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/creating_devices.rst +0 -0
  107. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/developing_bits.rst +0 -0
  108. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/dm.rst +0 -0
  109. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/index.rst +0 -0
  110. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/logging.rst +0 -0
  111. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/qserver_service.rst +0 -0
  112. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/sessions.rst +0 -0
  113. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/setting_iconfig.rst +0 -0
  114. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/startup.rst +0 -0
  115. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/guides/template_creation.rst +0 -0
  116. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/history.rst +0 -0
  117. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/index.rst +0 -0
  118. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/install.rst +0 -0
  119. {apsbits-2.0.3 → apsbits-2.0.4}/docs/source/license.rst +0 -0
  120. {apsbits-2.0.3 → apsbits-2.0.4}/setup.cfg +0 -0
  121. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/__init__.py +0 -0
  122. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/configs/logging.yml +0 -0
  123. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/core/__init__.py +0 -0
  124. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/core/best_effort_init.py +0 -0
  125. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/core/catalog_init.py +0 -0
  126. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/core/session_setup.py +0 -0
  127. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/README.md +0 -0
  128. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/__init__.py +0 -0
  129. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/callbacks/__init__.py +0 -0
  130. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/callbacks/demo_spec_callback.py +0 -0
  131. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/configs/__init__.py +0 -0
  132. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/configs/devices.yml +0 -0
  133. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/configs/devices_aps_only.yml +0 -0
  134. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/configs/extra_logging.yml +0 -0
  135. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/configs/iconfig.yml +0 -0
  136. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/devices/__init__.py +0 -0
  137. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/plans/__init__.py +0 -0
  138. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/plans/sim_plans.py +0 -0
  139. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/qserver/qs-config.yml +0 -0
  140. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/qserver/user_group_permissions.yaml +0 -0
  141. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/startup.py +0 -0
  142. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/suspenders/__init__.py +0 -0
  143. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_instrument/utils/__init__.py +0 -0
  144. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/demo_scripts/qs_host.sh +0 -0
  145. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/py.typed +0 -0
  146. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/__init__.py +0 -0
  147. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_controls_setup.py +0 -0
  148. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_device_factories.py +0 -0
  149. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/tests/test_side_effect_fixes.py +0 -0
  150. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/__init__.py +0 -0
  151. {apsbits-2.0.3 → apsbits-2.0.4}/src/apsbits/utils/baseline_setup.py +0 -0
@@ -10,3 +10,9 @@ updates:
10
10
  schedule:
11
11
  # Check for updates to GitHub Actions every week
12
12
  interval: "weekly"
13
+
14
+ - package-ecosystem: "pip"
15
+ directory: "/"
16
+ schedule:
17
+ # Check for updates to Python dependencies every week
18
+ interval: "weekly"
@@ -10,6 +10,13 @@ on:
10
10
  - main
11
11
  workflow_dispatch: # allow manual triggering
12
12
 
13
+ permissions:
14
+ contents: read
15
+
16
+ concurrency:
17
+ group: ${{ github.workflow }}-${{ github.ref }}
18
+ cancel-in-progress: true
19
+
13
20
  defaults:
14
21
  run:
15
22
  shell: bash -l {0}
@@ -20,6 +20,13 @@ on:
20
20
  required: true
21
21
  default: false
22
22
 
23
+ permissions:
24
+ contents: read
25
+
26
+ concurrency:
27
+ group: ${{ github.workflow }}-${{ github.ref }}
28
+ cancel-in-progress: true
29
+
23
30
  defaults:
24
31
  run:
25
32
  shell: bash -l {0}
@@ -29,6 +36,9 @@ jobs:
29
36
  pages:
30
37
  name: Publish documentation
31
38
  runs-on: ubuntu-latest
39
+ # The gh-pages deploy step (peaceiris) pushes to the gh-pages branch.
40
+ permissions:
41
+ contents: write
32
42
 
33
43
  steps:
34
44
 
@@ -1,4 +1,4 @@
1
- name: Publish Python 🐍 distributions 📦 to PyPI and TestPyPI
1
+ name: Publish Python 🐍 distributions 📦 to PyPI
2
2
 
3
3
  on:
4
4
  # Triggers the workflow on push events but only for the main branch
@@ -14,7 +14,7 @@ permissions:
14
14
 
15
15
  jobs:
16
16
  build-n-publish:
17
- name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
17
+ name: Build and publish Python 🐍 distributions 📦 to PyPI
18
18
  runs-on: ubuntu-latest
19
19
 
20
20
  steps:
@@ -111,6 +111,11 @@ ipython_config.py
111
111
  .pdm-python
112
112
  .pdm-build/
113
113
 
114
+ # uv
115
+ # apsbits is a distributed library, so uv.lock is not committed — pyproject.toml's flexible
116
+ # ranges govern what consumers resolve. Run `uv lock` locally if you want a lockfile.
117
+ uv.lock
118
+
114
119
  # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
115
120
  __pypackages__/
116
121
 
@@ -24,7 +24,7 @@ Releases
24
24
 
25
25
  Brief notes describing each release and what's new.
26
26
 
27
- Project `milestones <https://github.com/prjemian/hklpy2/milestones>`_
27
+ Project `milestones <https://github.com/BCDA-APS/BITS/milestones>`_
28
28
  describe future plans.
29
29
 
30
30
  .. Coming release content can be gathered here.
@@ -35,6 +35,12 @@ describe future plans.
35
35
 
36
36
  release expected ?
37
37
 
38
+ Breaking Changes
39
+ ----------------
40
+
41
+ * Removed the ``create-bits`` console script (back-compat alias for ``bits-create``);
42
+ use ``bits-create`` instead.
43
+
38
44
  New Features
39
45
  ---------------
40
46
 
@@ -98,7 +104,7 @@ Maintenance
98
104
  ---------------
99
105
 
100
106
  * Add a release history file
101
- * Documentation overhaul1
107
+ * Documentation overhaul
102
108
  * adding install docs given new workflow
103
109
  * Feature/API_functionalities and Makedevices
104
110
 
apsbits-2.0.4/PKG-INFO ADDED
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.4
2
+ Name: apsbits
3
+ Version: 2.0.4
4
+ Summary: Model of a Bluesky Data Acquisition Instrument in console, notebook, & queueserver.
5
+ Author-email: Eric Codrea <ecodrea@anl.gov>, Pete Jemian <prjemian+instrument@gmail.com>, Rafael Vescovi <rvescovi@anl.gov>
6
+ Maintainer-email: Eric Codrea <ecodrea@anl.gov>, Pete Jemian <prjemian+instrument@gmail.com>, Rafael Vescovi <rvescovi@anl.gov>
7
+ License-Expression: LicenseRef-ANL-Open-Source-License
8
+ Project-URL: Homepage, https://BCDA-APS.github.io/BITS/
9
+ Project-URL: Bug Tracker, https://github.com/BCDA-APS/BITS/issues
10
+ Keywords: bluesky,queueserver
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Utilities
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: apstools
21
+ Requires-Dist: bluesky-queueserver>=0.0.22
22
+ Requires-Dist: bluesky-queueserver-api
23
+ Requires-Dist: bluesky-tiled-plugins
24
+ Requires-Dist: bluesky-widgets
25
+ Requires-Dist: bluesky
26
+ Requires-Dist: caproto
27
+ Requires-Dist: databroker==1.2.5
28
+ Requires-Dist: guarneri>=0.4.0
29
+ Requires-Dist: ipython
30
+ Requires-Dist: jupyterlab
31
+ Requires-Dist: matplotlib
32
+ Requires-Dist: ophyd-async
33
+ Requires-Dist: ophyd-registry
34
+ Requires-Dist: ophyd
35
+ Requires-Dist: PyQt5>5.15
36
+ Requires-Dist: pyRestTable
37
+ Requires-Dist: pysumreg
38
+ Requires-Dist: qtpy
39
+ Requires-Dist: tiled[all]
40
+ Provides-Extra: dev
41
+ Requires-Dist: build; extra == "dev"
42
+ Requires-Dist: pre-commit; extra == "dev"
43
+ Requires-Dist: pytest; extra == "dev"
44
+ Requires-Dist: pytest-cov; extra == "dev"
45
+ Requires-Dist: pytest-mock; extra == "dev"
46
+ Requires-Dist: pytest-qt; extra == "dev"
47
+ Requires-Dist: ruff; extra == "dev"
48
+ Requires-Dist: tomli-w; extra == "dev"
49
+ Provides-Extra: doc
50
+ Requires-Dist: babel; extra == "doc"
51
+ Requires-Dist: ipykernel; extra == "doc"
52
+ Requires-Dist: jinja2; extra == "doc"
53
+ Requires-Dist: markupsafe; extra == "doc"
54
+ Requires-Dist: myst_parser; extra == "doc"
55
+ Requires-Dist: nbsphinx; extra == "doc"
56
+ Requires-Dist: pydata-sphinx-theme; extra == "doc"
57
+ Requires-Dist: pygments-ipython-console; extra == "doc"
58
+ Requires-Dist: pygments; extra == "doc"
59
+ Requires-Dist: sphinx-design; extra == "doc"
60
+ Requires-Dist: sphinx-tabs; extra == "doc"
61
+ Requires-Dist: sphinx; extra == "doc"
62
+ Requires-Dist: graphviz; extra == "doc"
63
+ Provides-Extra: all
64
+ Requires-Dist: apsbits[dev,doc]; extra == "all"
65
+ Dynamic: license-file
66
+
67
+ # APSBITS: Template Package for Bluesky Instruments
68
+
69
+ | PyPI | Coverage |
70
+ | --- | --- |
71
+ [![PyPi](https://img.shields.io/pypi/v/apsbits.svg)](https://pypi.python.org/pypi/apsbits) | [![Coverage Status](https://coveralls.io/repos/github/BCDA-APS/BITS/badge.svg?branch=main)](https://coveralls.io/github/BCDA-APS/BITS?branch=main) |
72
+
73
+ BITS: **B**luesky **I**nstrument **T**emplate **S**tructure
74
+
75
+ Template of a Bluesky Data Acquisition Instrument in console, notebook, &
76
+ queueserver.
77
+
78
+ ## Production use of BITS
79
+
80
+ Please create a bits instrument using our template repository: https://github.com/BCDA-APS/DEMO-BITS
81
+
82
+
83
+ ## Installing the BITS Package
84
+
85
+ ```bash
86
+ export INSTALL_ENVIRONMENT_NAME=apsbits_env
87
+ conda create -y -n "${INSTALL_ENVIRONMENT_NAME}" python=3.11 pyepics
88
+ conda activate "${INSTALL_ENVIRONMENT_NAME}"
89
+ pip install apsbits
90
+ ```
91
+
92
+ Or with [uv](https://docs.astral.sh/uv/):
93
+
94
+ ```bash
95
+ uv pip install apsbits # into an active environment
96
+ # ...or, from a clone for development (uses the committed uv.lock):
97
+ uv sync --extra dev
98
+ ```
99
+
100
+ For development please reference our documentation
101
+
102
+ ## Testing the apsbits base installation
103
+
104
+ On an ipython console
105
+
106
+ ```py
107
+ from apsbits.demo_instrument.startup import *
108
+ listobjects()
109
+ RE(sim_print_plan())
110
+ RE(sim_count_plan())
111
+ RE(sim_rel_scan_plan())
112
+ ```
@@ -0,0 +1,46 @@
1
+ # APSBITS: Template Package for Bluesky Instruments
2
+
3
+ | PyPI | Coverage |
4
+ | --- | --- |
5
+ [![PyPi](https://img.shields.io/pypi/v/apsbits.svg)](https://pypi.python.org/pypi/apsbits) | [![Coverage Status](https://coveralls.io/repos/github/BCDA-APS/BITS/badge.svg?branch=main)](https://coveralls.io/github/BCDA-APS/BITS?branch=main) |
6
+
7
+ BITS: **B**luesky **I**nstrument **T**emplate **S**tructure
8
+
9
+ Template of a Bluesky Data Acquisition Instrument in console, notebook, &
10
+ queueserver.
11
+
12
+ ## Production use of BITS
13
+
14
+ Please create a bits instrument using our template repository: https://github.com/BCDA-APS/DEMO-BITS
15
+
16
+
17
+ ## Installing the BITS Package
18
+
19
+ ```bash
20
+ export INSTALL_ENVIRONMENT_NAME=apsbits_env
21
+ conda create -y -n "${INSTALL_ENVIRONMENT_NAME}" python=3.11 pyepics
22
+ conda activate "${INSTALL_ENVIRONMENT_NAME}"
23
+ pip install apsbits
24
+ ```
25
+
26
+ Or with [uv](https://docs.astral.sh/uv/):
27
+
28
+ ```bash
29
+ uv pip install apsbits # into an active environment
30
+ # ...or, from a clone for development (uses the committed uv.lock):
31
+ uv sync --extra dev
32
+ ```
33
+
34
+ For development please reference our documentation
35
+
36
+ ## Testing the apsbits base installation
37
+
38
+ On an ipython console
39
+
40
+ ```py
41
+ from apsbits.demo_instrument.startup import *
42
+ listobjects()
43
+ RE(sim_print_plan())
44
+ RE(sim_count_plan())
45
+ RE(sim_rel_scan_plan())
46
+ ```
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.4
2
+ Name: apsbits
3
+ Version: 2.0.4
4
+ Summary: Model of a Bluesky Data Acquisition Instrument in console, notebook, & queueserver.
5
+ Author-email: Eric Codrea <ecodrea@anl.gov>, Pete Jemian <prjemian+instrument@gmail.com>, Rafael Vescovi <rvescovi@anl.gov>
6
+ Maintainer-email: Eric Codrea <ecodrea@anl.gov>, Pete Jemian <prjemian+instrument@gmail.com>, Rafael Vescovi <rvescovi@anl.gov>
7
+ License-Expression: LicenseRef-ANL-Open-Source-License
8
+ Project-URL: Homepage, https://BCDA-APS.github.io/BITS/
9
+ Project-URL: Bug Tracker, https://github.com/BCDA-APS/BITS/issues
10
+ Keywords: bluesky,queueserver
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Utilities
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: apstools
21
+ Requires-Dist: bluesky-queueserver>=0.0.22
22
+ Requires-Dist: bluesky-queueserver-api
23
+ Requires-Dist: bluesky-tiled-plugins
24
+ Requires-Dist: bluesky-widgets
25
+ Requires-Dist: bluesky
26
+ Requires-Dist: caproto
27
+ Requires-Dist: databroker==1.2.5
28
+ Requires-Dist: guarneri>=0.4.0
29
+ Requires-Dist: ipython
30
+ Requires-Dist: jupyterlab
31
+ Requires-Dist: matplotlib
32
+ Requires-Dist: ophyd-async
33
+ Requires-Dist: ophyd-registry
34
+ Requires-Dist: ophyd
35
+ Requires-Dist: PyQt5>5.15
36
+ Requires-Dist: pyRestTable
37
+ Requires-Dist: pysumreg
38
+ Requires-Dist: qtpy
39
+ Requires-Dist: tiled[all]
40
+ Provides-Extra: dev
41
+ Requires-Dist: build; extra == "dev"
42
+ Requires-Dist: pre-commit; extra == "dev"
43
+ Requires-Dist: pytest; extra == "dev"
44
+ Requires-Dist: pytest-cov; extra == "dev"
45
+ Requires-Dist: pytest-mock; extra == "dev"
46
+ Requires-Dist: pytest-qt; extra == "dev"
47
+ Requires-Dist: ruff; extra == "dev"
48
+ Requires-Dist: tomli-w; extra == "dev"
49
+ Provides-Extra: doc
50
+ Requires-Dist: babel; extra == "doc"
51
+ Requires-Dist: ipykernel; extra == "doc"
52
+ Requires-Dist: jinja2; extra == "doc"
53
+ Requires-Dist: markupsafe; extra == "doc"
54
+ Requires-Dist: myst_parser; extra == "doc"
55
+ Requires-Dist: nbsphinx; extra == "doc"
56
+ Requires-Dist: pydata-sphinx-theme; extra == "doc"
57
+ Requires-Dist: pygments-ipython-console; extra == "doc"
58
+ Requires-Dist: pygments; extra == "doc"
59
+ Requires-Dist: sphinx-design; extra == "doc"
60
+ Requires-Dist: sphinx-tabs; extra == "doc"
61
+ Requires-Dist: sphinx; extra == "doc"
62
+ Requires-Dist: graphviz; extra == "doc"
63
+ Provides-Extra: all
64
+ Requires-Dist: apsbits[dev,doc]; extra == "all"
65
+ Dynamic: license-file
66
+
67
+ # APSBITS: Template Package for Bluesky Instruments
68
+
69
+ | PyPI | Coverage |
70
+ | --- | --- |
71
+ [![PyPi](https://img.shields.io/pypi/v/apsbits.svg)](https://pypi.python.org/pypi/apsbits) | [![Coverage Status](https://coveralls.io/repos/github/BCDA-APS/BITS/badge.svg?branch=main)](https://coveralls.io/github/BCDA-APS/BITS?branch=main) |
72
+
73
+ BITS: **B**luesky **I**nstrument **T**emplate **S**tructure
74
+
75
+ Template of a Bluesky Data Acquisition Instrument in console, notebook, &
76
+ queueserver.
77
+
78
+ ## Production use of BITS
79
+
80
+ Please create a bits instrument using our template repository: https://github.com/BCDA-APS/DEMO-BITS
81
+
82
+
83
+ ## Installing the BITS Package
84
+
85
+ ```bash
86
+ export INSTALL_ENVIRONMENT_NAME=apsbits_env
87
+ conda create -y -n "${INSTALL_ENVIRONMENT_NAME}" python=3.11 pyepics
88
+ conda activate "${INSTALL_ENVIRONMENT_NAME}"
89
+ pip install apsbits
90
+ ```
91
+
92
+ Or with [uv](https://docs.astral.sh/uv/):
93
+
94
+ ```bash
95
+ uv pip install apsbits # into an active environment
96
+ # ...or, from a clone for development (uses the committed uv.lock):
97
+ uv sync --extra dev
98
+ ```
99
+
100
+ For development please reference our documentation
101
+
102
+ ## Testing the apsbits base installation
103
+
104
+ On an ipython console
105
+
106
+ ```py
107
+ from apsbits.demo_instrument.startup import *
108
+ listobjects()
109
+ RE(sim_print_plan())
110
+ RE(sim_count_plan())
111
+ RE(sim_rel_scan_plan())
112
+ ```
@@ -19,6 +19,8 @@ apsbits.egg-info/SOURCES.txt
19
19
  apsbits.egg-info/dependency_links.txt
20
20
  apsbits.egg-info/entry_points.txt
21
21
  apsbits.egg-info/requires.txt
22
+ apsbits.egg-info/scm_file_list.json
23
+ apsbits.egg-info/scm_version.json
22
24
  apsbits.egg-info/top_level.txt
23
25
  docs/Makefile
24
26
  docs/make.bat
@@ -85,7 +87,6 @@ src/apsbits/py.typed
85
87
  src/apsbits/api/__init__.py
86
88
  src/apsbits/api/create_new_instrument.py
87
89
  src/apsbits/api/delete_instrument.py
88
- src/apsbits/api/run_instrument.py
89
90
  src/apsbits/configs/logging.yml
90
91
  src/apsbits/core/__init__.py
91
92
  src/apsbits/core/best_effort_init.py
@@ -117,14 +118,17 @@ src/apsbits/tests/conftest.py
117
118
  src/apsbits/tests/test_catalog_init.py
118
119
  src/apsbits/tests/test_config.py
119
120
  src/apsbits/tests/test_controls_setup.py
121
+ src/apsbits/tests/test_create_new_instrument.py
120
122
  src/apsbits/tests/test_delete_instrument.py
121
123
  src/apsbits/tests/test_device_factories.py
122
124
  src/apsbits/tests/test_general.py
123
125
  src/apsbits/tests/test_import_purity.py
126
+ src/apsbits/tests/test_instrument_init.py
124
127
  src/apsbits/tests/test_make_devices.py
125
- src/apsbits/tests/test_run_instrument.py
128
+ src/apsbits/tests/test_run_engine_init.py
126
129
  src/apsbits/tests/test_side_effect_fixes.py
127
130
  src/apsbits/tests/test_stored_dict.py
131
+ src/apsbits/tests/test_units.py
128
132
  src/apsbits/utils/__init__.py
129
133
  src/apsbits/utils/aps_functions.py
130
134
  src/apsbits/utils/baseline_setup.py
@@ -1,5 +1,3 @@
1
1
  [console_scripts]
2
2
  bits-create = apsbits.api.create_new_instrument:main
3
3
  bits-delete = apsbits.api.delete_instrument:main
4
- bits-run = apsbits.api.run_instrument:main
5
- create-bits = apsbits.api.create_new_instrument:main
@@ -18,20 +18,19 @@ pyRestTable
18
18
  pysumreg
19
19
  qtpy
20
20
  tiled[all]
21
- tomli-w
22
- tomli
23
21
 
24
22
  [all]
25
23
  apsbits[dev,doc]
26
24
 
27
25
  [dev]
28
26
  build
29
- isort
30
- mypy
31
27
  pre-commit
32
28
  pytest
29
+ pytest-cov
33
30
  pytest-mock
31
+ pytest-qt
34
32
  ruff
33
+ tomli-w
35
34
 
36
35
  [doc]
37
36
  babel
@@ -47,5 +46,3 @@ sphinx-design
47
46
  sphinx-tabs
48
47
  sphinx
49
48
  graphviz
50
- dot
51
- tomli-w
@@ -0,0 +1,136 @@
1
+ {
2
+ "files": [
3
+ ".github/ISSUE_TEMPLATE/bug_report.md",
4
+ ".github/ISSUE_TEMPLATE/config.yml",
5
+ ".github/ISSUE_TEMPLATE/feature_request.md",
6
+ ".github/ISSUE_TEMPLATE/other.md",
7
+ ".github/ISSUE_TEMPLATE/question-issue-template.md",
8
+ ".github/PULL_REQUEST_TEMPLATE.md",
9
+ ".github/dependabot.yml",
10
+ ".github/workflows/code.yml",
11
+ ".github/workflows/docs.yml",
12
+ ".github/workflows/pypi.yml",
13
+ ".gitignore",
14
+ ".pre-commit-config.yaml",
15
+ "HISTORY.rst",
16
+ "LICENSE",
17
+ "README.md",
18
+ "docs/Makefile",
19
+ "docs/make.bat",
20
+ "docs/resources/create-repository-name.webp",
21
+ "docs/resources/create-repository-owner.webp",
22
+ "docs/resources/demo.ipynb",
23
+ "docs/resources/use-this-template-button.webp",
24
+ "docs/source/_static/.gitkeep",
25
+ "docs/source/api/api.rst",
26
+ "docs/source/api/core.rst",
27
+ "docs/source/api/demo_instrument.rst",
28
+ "docs/source/api/demo_qserver.rst",
29
+ "docs/source/api/generated/apsbits.api.create_new_instrument.rst",
30
+ "docs/source/api/generated/apsbits.api.delete_instrument.rst",
31
+ "docs/source/api/generated/apsbits.core.best_effort_init.rst",
32
+ "docs/source/api/generated/apsbits.core.catalog_init.rst",
33
+ "docs/source/api/generated/apsbits.core.run_engine_init.rst",
34
+ "docs/source/api/generated/apsbits.demo_instrument.callbacks.demo_nexus_callback.rst",
35
+ "docs/source/api/generated/apsbits.demo_instrument.callbacks.demo_spec_callback.rst",
36
+ "docs/source/api/generated/apsbits.demo_instrument.callbacks.rst",
37
+ "docs/source/api/generated/apsbits.demo_instrument.configs.rst",
38
+ "docs/source/api/generated/apsbits.demo_instrument.devices.rst",
39
+ "docs/source/api/generated/apsbits.demo_instrument.plans.rst",
40
+ "docs/source/api/generated/apsbits.demo_instrument.plans.sim_plans.rst",
41
+ "docs/source/api/generated/apsbits.demo_instrument.rst",
42
+ "docs/source/api/generated/apsbits.demo_instrument.startup.rst",
43
+ "docs/source/api/generated/apsbits.demo_instrument.suspenders.rst",
44
+ "docs/source/api/generated/apsbits.demo_instrument.utils.rst",
45
+ "docs/source/api/generated/apsbits.demo_qserver.rst",
46
+ "docs/source/api/generated/apsbits.utils.config_loaders.rst",
47
+ "docs/source/api/generated/apsbits.utils.controls_setup.rst",
48
+ "docs/source/api/generated/apsbits.utils.helper_functions.rst",
49
+ "docs/source/api/generated/apsbits.utils.logging_setup.rst",
50
+ "docs/source/api/generated/apsbits.utils.metadata.rst",
51
+ "docs/source/api/generated/apsbits.utils.stored_dict.rst",
52
+ "docs/source/api/index.rst",
53
+ "docs/source/api/utils.rst",
54
+ "docs/source/bits_overview.rst",
55
+ "docs/source/conf.py",
56
+ "docs/source/deprecated/console.rst",
57
+ "docs/source/deprecated/dm.md",
58
+ "docs/source/deprecated/logging_config.rst",
59
+ "docs/source/deprecated/notebook.rst",
60
+ "docs/source/deprecated/script.rst",
61
+ "docs/source/guides/creating_devices.rst",
62
+ "docs/source/guides/creating_instrument.rst",
63
+ "docs/source/guides/developing_bits.rst",
64
+ "docs/source/guides/dm.rst",
65
+ "docs/source/guides/index.rst",
66
+ "docs/source/guides/logging.rst",
67
+ "docs/source/guides/qserver.rst",
68
+ "docs/source/guides/qserver_service.rst",
69
+ "docs/source/guides/sessions.rst",
70
+ "docs/source/guides/setting_iconfig.rst",
71
+ "docs/source/guides/startup.rst",
72
+ "docs/source/guides/template_creation.rst",
73
+ "docs/source/history.rst",
74
+ "docs/source/index.rst",
75
+ "docs/source/install.rst",
76
+ "docs/source/license.rst",
77
+ "pyproject.toml",
78
+ "src/apsbits/__init__.py",
79
+ "src/apsbits/api/__init__.py",
80
+ "src/apsbits/api/create_new_instrument.py",
81
+ "src/apsbits/api/delete_instrument.py",
82
+ "src/apsbits/configs/logging.yml",
83
+ "src/apsbits/core/__init__.py",
84
+ "src/apsbits/core/best_effort_init.py",
85
+ "src/apsbits/core/catalog_init.py",
86
+ "src/apsbits/core/instrument_init.py",
87
+ "src/apsbits/core/run_engine_init.py",
88
+ "src/apsbits/core/session_setup.py",
89
+ "src/apsbits/demo_instrument/README.md",
90
+ "src/apsbits/demo_instrument/__init__.py",
91
+ "src/apsbits/demo_instrument/callbacks/__init__.py",
92
+ "src/apsbits/demo_instrument/callbacks/demo_nexus_callback.py",
93
+ "src/apsbits/demo_instrument/callbacks/demo_spec_callback.py",
94
+ "src/apsbits/demo_instrument/configs/__init__.py",
95
+ "src/apsbits/demo_instrument/configs/devices.yml",
96
+ "src/apsbits/demo_instrument/configs/devices_aps_only.yml",
97
+ "src/apsbits/demo_instrument/configs/extra_logging.yml",
98
+ "src/apsbits/demo_instrument/configs/iconfig.yml",
99
+ "src/apsbits/demo_instrument/devices/__init__.py",
100
+ "src/apsbits/demo_instrument/plans/__init__.py",
101
+ "src/apsbits/demo_instrument/plans/sim_plans.py",
102
+ "src/apsbits/demo_instrument/qserver/qs-config.yml",
103
+ "src/apsbits/demo_instrument/qserver/user_group_permissions.yaml",
104
+ "src/apsbits/demo_instrument/startup.py",
105
+ "src/apsbits/demo_instrument/suspenders/__init__.py",
106
+ "src/apsbits/demo_instrument/utils/__init__.py",
107
+ "src/apsbits/demo_scripts/qs_host.sh",
108
+ "src/apsbits/py.typed",
109
+ "src/apsbits/tests/__init__.py",
110
+ "src/apsbits/tests/conftest.py",
111
+ "src/apsbits/tests/test_catalog_init.py",
112
+ "src/apsbits/tests/test_config.py",
113
+ "src/apsbits/tests/test_controls_setup.py",
114
+ "src/apsbits/tests/test_create_new_instrument.py",
115
+ "src/apsbits/tests/test_delete_instrument.py",
116
+ "src/apsbits/tests/test_device_factories.py",
117
+ "src/apsbits/tests/test_general.py",
118
+ "src/apsbits/tests/test_import_purity.py",
119
+ "src/apsbits/tests/test_instrument_init.py",
120
+ "src/apsbits/tests/test_make_devices.py",
121
+ "src/apsbits/tests/test_run_engine_init.py",
122
+ "src/apsbits/tests/test_side_effect_fixes.py",
123
+ "src/apsbits/tests/test_stored_dict.py",
124
+ "src/apsbits/tests/test_units.py",
125
+ "src/apsbits/utils/__init__.py",
126
+ "src/apsbits/utils/aps_functions.py",
127
+ "src/apsbits/utils/baseline_setup.py",
128
+ "src/apsbits/utils/config_loaders.py",
129
+ "src/apsbits/utils/controls_setup.py",
130
+ "src/apsbits/utils/helper_functions.py",
131
+ "src/apsbits/utils/logging_setup.py",
132
+ "src/apsbits/utils/metadata.py",
133
+ "src/apsbits/utils/sim_creator.py",
134
+ "src/apsbits/utils/stored_dict.py"
135
+ ]
136
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.0.4",
3
+ "distance": 0,
4
+ "node": "gfe869f87b40572bc9df31e8402f4bcb702b53ec8",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-16"
8
+ }
@@ -11,13 +11,11 @@ The API module provides command-line interfaces for instrument management:
11
11
 
12
12
  apsbits.api.create_new_instrument
13
13
  apsbits.api.delete_instrument
14
- apsbits.api.run_instrument
15
14
 
16
15
  These command-line tools help with:
17
16
 
18
17
  1. Creating new instruments from templates
19
18
  2. Deleting instruments and their associated qserver configurations
20
- 3. Running instruments and retrieving their ophyd registry information
21
19
 
22
20
  Example Usage
23
21
  -------------
@@ -26,19 +24,13 @@ Create a new instrument:
26
24
 
27
25
  .. code-block:: bash
28
26
 
29
- create-bits --name my_instrument --path /path/to/instrument
27
+ bits-create my_instrument
30
28
 
31
29
  Delete an instrument:
32
30
 
33
31
  .. code-block:: bash
34
32
 
35
- delete-bits --name my_instrument --path /path/to/instrument
36
-
37
- Run an instrument:
38
-
39
- .. code-block:: bash
40
-
41
- run-bits --name my_instrument --path /path/to/instrument
33
+ bits-delete my_instrument
42
34
 
43
35
  API Reference
44
36
  -------------
@@ -102,4 +102,3 @@ The API module provides command-line interfaces for instrument management:
102
102
 
103
103
  apsbits.api.create_new_instrument
104
104
  apsbits.api.delete_instrument
105
- apsbits.api.run_instrument
@@ -11,7 +11,7 @@ Inside the root folder inside of the templated repository run create
11
11
  .. code-block:: bash
12
12
 
13
13
  export YOUR_INSTRUMENT_NAME=new_instrument
14
- create-bits $YOUR_INSTRUMENT_NAME
14
+ bits-create $YOUR_INSTRUMENT_NAME
15
15
  pip install -e .
16
16
 
17
17
 
@@ -3,7 +3,7 @@
3
3
  Queue Server
4
4
  ============
5
5
 
6
- The Queue Server provides a way to run Bluesky plans remotely. We assume you have created used the create-bits command to create an instrument named ``new_instrument``.
6
+ The Queue Server provides a way to run Bluesky plans remotely. We assume you have created used the bits-create command to create an instrument named ``new_instrument``.
7
7
 
8
8
  Configuration
9
9
  --------------------