hutch-python 1.23.1__tar.gz → 1.24.0__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.
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -2
- hutch_python-1.24.0/.github/dependabot.yml +11 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.github/workflows/standard.yml +1 -1
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.gitignore +3 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/PKG-INFO +2 -2
- hutch_python-1.24.0/docs/source/releases.rst +4 -0
- hutch_python-1.24.0/hutch_python/_version.py +24 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cam_load.py +7 -2
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cli.py +13 -2
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/env_version.py +3 -4
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_cli.py +2 -1
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python.egg-info/PKG-INFO +2 -2
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python.egg-info/SOURCES.txt +3 -5
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python.egg-info/requires.txt +1 -1
- hutch_python-1.24.0/hutch_python.egg-info/scm_file_list.json +138 -0
- hutch_python-1.24.0/hutch_python.egg-info/scm_version.json +8 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/requirements.txt +1 -1
- hutch_python-1.23.1/.github/ISSUE_TEMPLATE.md +0 -26
- hutch_python-1.23.1/docs/pre-release-notes.sh +0 -37
- hutch_python-1.23.1/docs/release_notes.py +0 -114
- hutch_python-1.23.1/docs/source/releases.rst +0 -801
- hutch_python-1.23.1/docs/source/upcoming_release_notes/template-full.rst +0 -36
- hutch_python-1.23.1/docs/source/upcoming_release_notes/template-short.rst +0 -22
- hutch_python-1.23.1/hutch_python/_version.py +0 -21
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.coveragerc +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.flake8 +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.git_archival.txt +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.gitattributes +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.github/CODEOWNERS +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.landscape.yml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/.pre-commit-config.yaml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/AUTHORS.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/CONTRIBUTING.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/LICENSE +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/MANIFEST.in +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/README.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/bin/hutch-python +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/conda-recipe/meta.yaml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/dev-requirements.txt +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/Makefile +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/hutch_python.ipynb +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/beamline.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/bug.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/cache.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/cli.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/conf.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/daq.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/database.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/debug.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/environment.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/experiment.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/hutch_setup.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/index.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/ipython_log.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/load_conf.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/load_parts.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/log_setup.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/namespace.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/object_configuration.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/other_modules.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/presets.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/report.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/start.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/startup.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/tips.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/tutorial.ipynb +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/user_utils.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/utils.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs/source/yaml_files.rst +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/docs-requirements.txt +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/__init__.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/__main__.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/bug.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cache.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/calc_defaults.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/constants.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/cookiecutter.json +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/.gitignore +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/README.md +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/conf.yml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/experiments/__init__.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/set-dev +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}/__init__.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}/beamline.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}env +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}python +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/debug.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/epics_arch.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/exp_load.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/happi.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/ipython_log.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/ipython_session_timer.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/lcls.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/load_conf.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/log_setup.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/logging.yml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/mpl_config.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/namespace.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/obj_config.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/ophyd_settings.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/options.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/plan_defaults.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/plan_wrappers.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/print_hint_banner.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/pt_app_config.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/qs_load.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/sim.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/startup_script.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/templates/issue.template +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/__init__.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/bad_script.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/camviewer.cfg +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/conf.yaml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/conftest.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/envs/pcds-1.0.0 +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/envs/pcds-2.0.0 +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/envs/z-env +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/experiments/sample_expname.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/experiments/x010.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/experiments/x011.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/happi_db.json +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/sample_module_1.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/sample_module_2.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/script.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_bug.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_cache.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_cam_load.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_epics_arch.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_experiment.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_happi.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_ipython_log.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_ipython_session_timer.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_load_conf.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_log_setup.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_namespace.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_obj_config.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_plan_wrappers.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_questionnaire.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_tstpython.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_user_load.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/test_utils.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/tst/__init__.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/tst/beamline.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/tests/tstpython +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/user_load.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/utils.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python/version.py +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python.egg-info/dependency_links.txt +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python.egg-info/entry_points.txt +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/hutch_python.egg-info/top_level.txt +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/pyproject.toml +0 -0
- {hutch_python-1.23.1 → hutch_python-1.24.0}/setup.cfg +0 -0
|
@@ -25,5 +25,3 @@
|
|
|
25
25
|
- [ ] New/changed functions and methods are covered in the test suite where possible
|
|
26
26
|
- [ ] Test suite passes locally
|
|
27
27
|
- [ ] Test suite passes on GitHub Actions
|
|
28
|
-
- [ ] Ran ``docs/pre-release-notes.sh`` and created a pre-release documentation page
|
|
29
|
-
- [ ] Pre-release docs include context, functional descriptions, and contributors as appropriate
|
|
@@ -9,7 +9,7 @@ on:
|
|
|
9
9
|
|
|
10
10
|
jobs:
|
|
11
11
|
standard:
|
|
12
|
-
uses: pcdshub/pcds-ci-helpers/.github/workflows/python-standard.yml@
|
|
12
|
+
uses: pcdshub/pcds-ci-helpers/.github/workflows/python-standard.yml@52a413e9d77c09f9e7617c3a75fc19a7d6cf4e11
|
|
13
13
|
secrets: inherit
|
|
14
14
|
with:
|
|
15
15
|
# The workflow needs to know the package name. This can be determined
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hutch-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.24.0
|
|
4
4
|
Summary: Launcher and Config Reader for LCLS Interactive IPython Sessions
|
|
5
5
|
Author: SLAC National Accelerator Laboratory
|
|
6
6
|
License: Copyright (c) 2023, The Board of Trustees of the Leland Stanford Junior
|
|
@@ -55,7 +55,7 @@ Requires-Dist: bluesky>=1.8.0
|
|
|
55
55
|
Requires-Dist: coloredlogs>=15.0.0
|
|
56
56
|
Requires-Dist: cookiecutter>=1.7.0
|
|
57
57
|
Requires-Dist: happi>=1.9.0
|
|
58
|
-
Requires-Dist: ipython
|
|
58
|
+
Requires-Dist: ipython>=9.0.0
|
|
59
59
|
Requires-Dist: jinja2>=2.11.0
|
|
60
60
|
Requires-Dist: lightpath>=1.0.1
|
|
61
61
|
Requires-Dist: matplotlib>=3.4.0
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"__version__",
|
|
7
|
+
"__version_tuple__",
|
|
8
|
+
"version",
|
|
9
|
+
"version_tuple",
|
|
10
|
+
"__commit_id__",
|
|
11
|
+
"commit_id",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
version: str
|
|
15
|
+
__version__: str
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
20
|
+
|
|
21
|
+
__version__ = version = '1.24.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 24, 0)
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = 'g39d8f6346'
|
|
@@ -123,7 +123,11 @@ def load_cams(info):
|
|
|
123
123
|
"""
|
|
124
124
|
# Any cam that needs the event loop has to have one set in the thread
|
|
125
125
|
global main_thread_loop
|
|
126
|
-
|
|
126
|
+
try:
|
|
127
|
+
main_thread_loop = asyncio.get_event_loop()
|
|
128
|
+
except RuntimeError:
|
|
129
|
+
# No loop, no worries
|
|
130
|
+
main_thread_loop = None
|
|
127
131
|
|
|
128
132
|
objs = {}
|
|
129
133
|
logger.debug(info)
|
|
@@ -150,7 +154,8 @@ def build_and_log(info_part):
|
|
|
150
154
|
The loaded detector, or None.
|
|
151
155
|
"""
|
|
152
156
|
# We sync with the main thread's loop so that they work as expected later
|
|
153
|
-
|
|
157
|
+
if main_thread_loop is not None:
|
|
158
|
+
asyncio.set_event_loop(main_thread_loop)
|
|
154
159
|
try:
|
|
155
160
|
obj = build_cam(*info_part)
|
|
156
161
|
logger.success('Loaded %s', obj.name)
|
|
@@ -85,6 +85,14 @@ def configure_tab_completion(ipy_config):
|
|
|
85
85
|
"""
|
|
86
86
|
Disable Jedi and tweak IPython tab completion.
|
|
87
87
|
|
|
88
|
+
At some IPython version this became no longer needed due to fixed performance issues
|
|
89
|
+
stemming from no longer by default executing properties.
|
|
90
|
+
|
|
91
|
+
At some IPython version this became counterproductive because the non-jedi
|
|
92
|
+
completer no longer works properly for us.
|
|
93
|
+
|
|
94
|
+
This change happend somewhere between 8.4.0 and 8.36.0
|
|
95
|
+
|
|
88
96
|
Parameters
|
|
89
97
|
----------
|
|
90
98
|
ipy_config : traitlets.config.Config
|
|
@@ -135,8 +143,11 @@ def configure_ipython_session(args: HutchPythonArgs):
|
|
|
135
143
|
|
|
136
144
|
# Disable reformatting input with black
|
|
137
145
|
ipy_config.TerminalInteractiveShell.autoformatter = None
|
|
138
|
-
|
|
139
|
-
|
|
146
|
+
|
|
147
|
+
if IPython.version_info[:3] <= (8, 4, 0):
|
|
148
|
+
# Set up tab completion modifications
|
|
149
|
+
# The last IPython version we deployed that needed this is 8.4.0
|
|
150
|
+
configure_tab_completion(ipy_config)
|
|
140
151
|
|
|
141
152
|
# disable default banner
|
|
142
153
|
ipy_config.TerminalIPythonApp.display_banner = False
|
|
@@ -3,13 +3,12 @@ Utilities for getting relevant environment information.
|
|
|
3
3
|
"""
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import importlib.metadata
|
|
6
7
|
import logging
|
|
7
8
|
import os
|
|
8
9
|
import os.path
|
|
9
10
|
import pkgutil
|
|
10
11
|
|
|
11
|
-
import pkg_resources
|
|
12
|
-
|
|
13
12
|
logger = logging.getLogger(__name__)
|
|
14
13
|
|
|
15
14
|
_dev_ignore_list = ['ami', 'pdsapp']
|
|
@@ -42,10 +41,10 @@ def log_env() -> None:
|
|
|
42
41
|
def dump_env() -> list[str]:
|
|
43
42
|
"""
|
|
44
43
|
Get all packages and versions from the current environment.
|
|
45
|
-
conda list is slow, use
|
|
44
|
+
conda list is slow, use importlib.metadata.distributions instead
|
|
46
45
|
this might miss dev overrides
|
|
47
46
|
"""
|
|
48
|
-
return sorted(str(
|
|
47
|
+
return sorted(str(dist.name) for dist in importlib.metadata.distributions())
|
|
49
48
|
|
|
50
49
|
|
|
51
50
|
def get_conda_env_name() -> str:
|
|
@@ -116,7 +116,7 @@ def test_hist_file_arg():
|
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
@pytest.mark.timeout(30)
|
|
119
|
-
@pytest.mark.parametrize("filepath
|
|
119
|
+
@pytest.mark.parametrize("filepath", (
|
|
120
120
|
(CFG_PATH.parent / "aesefiudh" / "history.sqlite").resolve(),
|
|
121
121
|
":memory:",
|
|
122
122
|
))
|
|
@@ -156,6 +156,7 @@ def test_run_script():
|
|
|
156
156
|
main()
|
|
157
157
|
|
|
158
158
|
|
|
159
|
+
@pytest.mark.skipif(IPython.version_info[:3] > (8, 4, 0), reason="IPython completer API too unstable to test against")
|
|
159
160
|
def test_ipython_tab_completion():
|
|
160
161
|
class MyTest:
|
|
161
162
|
THIS_SHOULD_NOT_BE_THERE = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hutch-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.24.0
|
|
4
4
|
Summary: Launcher and Config Reader for LCLS Interactive IPython Sessions
|
|
5
5
|
Author: SLAC National Accelerator Laboratory
|
|
6
6
|
License: Copyright (c) 2023, The Board of Trustees of the Leland Stanford Junior
|
|
@@ -55,7 +55,7 @@ Requires-Dist: bluesky>=1.8.0
|
|
|
55
55
|
Requires-Dist: coloredlogs>=15.0.0
|
|
56
56
|
Requires-Dist: cookiecutter>=1.7.0
|
|
57
57
|
Requires-Dist: happi>=1.9.0
|
|
58
|
-
Requires-Dist: ipython
|
|
58
|
+
Requires-Dist: ipython>=9.0.0
|
|
59
59
|
Requires-Dist: jinja2>=2.11.0
|
|
60
60
|
Requires-Dist: lightpath>=1.0.1
|
|
61
61
|
Requires-Dist: matplotlib>=3.4.0
|
|
@@ -15,15 +15,13 @@ docs-requirements.txt
|
|
|
15
15
|
pyproject.toml
|
|
16
16
|
requirements.txt
|
|
17
17
|
.github/CODEOWNERS
|
|
18
|
-
.github/ISSUE_TEMPLATE.md
|
|
19
18
|
.github/PULL_REQUEST_TEMPLATE.md
|
|
19
|
+
.github/dependabot.yml
|
|
20
20
|
.github/workflows/standard.yml
|
|
21
21
|
bin/hutch-python
|
|
22
22
|
conda-recipe/meta.yaml
|
|
23
23
|
docs/Makefile
|
|
24
24
|
docs/hutch_python.ipynb
|
|
25
|
-
docs/pre-release-notes.sh
|
|
26
|
-
docs/release_notes.py
|
|
27
25
|
docs/source/beamline.rst
|
|
28
26
|
docs/source/bug.rst
|
|
29
27
|
docs/source/cache.rst
|
|
@@ -53,8 +51,6 @@ docs/source/tutorial.ipynb
|
|
|
53
51
|
docs/source/user_utils.rst
|
|
54
52
|
docs/source/utils.rst
|
|
55
53
|
docs/source/yaml_files.rst
|
|
56
|
-
docs/source/upcoming_release_notes/template-full.rst
|
|
57
|
-
docs/source/upcoming_release_notes/template-short.rst
|
|
58
54
|
hutch_python/__init__.py
|
|
59
55
|
hutch_python/__main__.py
|
|
60
56
|
hutch_python/_version.py
|
|
@@ -95,6 +91,8 @@ hutch_python.egg-info/SOURCES.txt
|
|
|
95
91
|
hutch_python.egg-info/dependency_links.txt
|
|
96
92
|
hutch_python.egg-info/entry_points.txt
|
|
97
93
|
hutch_python.egg-info/requires.txt
|
|
94
|
+
hutch_python.egg-info/scm_file_list.json
|
|
95
|
+
hutch_python.egg-info/scm_version.json
|
|
98
96
|
hutch_python.egg-info/top_level.txt
|
|
99
97
|
hutch_python/cookiecutter/cookiecutter.json
|
|
100
98
|
hutch_python/cookiecutter/{{ cookiecutter.hutch }}/.gitignore
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": [
|
|
3
|
+
".coveragerc",
|
|
4
|
+
".flake8",
|
|
5
|
+
".git_archival.txt",
|
|
6
|
+
".gitattributes",
|
|
7
|
+
".github/CODEOWNERS",
|
|
8
|
+
".github/PULL_REQUEST_TEMPLATE.md",
|
|
9
|
+
".github/dependabot.yml",
|
|
10
|
+
".github/workflows/standard.yml",
|
|
11
|
+
".gitignore",
|
|
12
|
+
".landscape.yml",
|
|
13
|
+
".pre-commit-config.yaml",
|
|
14
|
+
"AUTHORS.rst",
|
|
15
|
+
"CONTRIBUTING.rst",
|
|
16
|
+
"LICENSE",
|
|
17
|
+
"MANIFEST.in",
|
|
18
|
+
"README.rst",
|
|
19
|
+
"bin/hutch-python",
|
|
20
|
+
"conda-recipe/meta.yaml",
|
|
21
|
+
"dev-requirements.txt",
|
|
22
|
+
"docs-requirements.txt",
|
|
23
|
+
"docs/Makefile",
|
|
24
|
+
"docs/hutch_python.ipynb",
|
|
25
|
+
"docs/source/beamline.rst",
|
|
26
|
+
"docs/source/bug.rst",
|
|
27
|
+
"docs/source/cache.rst",
|
|
28
|
+
"docs/source/cli.rst",
|
|
29
|
+
"docs/source/conf.py",
|
|
30
|
+
"docs/source/daq.rst",
|
|
31
|
+
"docs/source/database.rst",
|
|
32
|
+
"docs/source/debug.rst",
|
|
33
|
+
"docs/source/environment.rst",
|
|
34
|
+
"docs/source/experiment.rst",
|
|
35
|
+
"docs/source/hutch_setup.rst",
|
|
36
|
+
"docs/source/index.rst",
|
|
37
|
+
"docs/source/ipython_log.rst",
|
|
38
|
+
"docs/source/load_conf.rst",
|
|
39
|
+
"docs/source/load_parts.rst",
|
|
40
|
+
"docs/source/log_setup.rst",
|
|
41
|
+
"docs/source/namespace.rst",
|
|
42
|
+
"docs/source/object_configuration.rst",
|
|
43
|
+
"docs/source/other_modules.rst",
|
|
44
|
+
"docs/source/presets.rst",
|
|
45
|
+
"docs/source/releases.rst",
|
|
46
|
+
"docs/source/report.rst",
|
|
47
|
+
"docs/source/start.rst",
|
|
48
|
+
"docs/source/startup.rst",
|
|
49
|
+
"docs/source/tips.rst",
|
|
50
|
+
"docs/source/tutorial.ipynb",
|
|
51
|
+
"docs/source/user_utils.rst",
|
|
52
|
+
"docs/source/utils.rst",
|
|
53
|
+
"docs/source/yaml_files.rst",
|
|
54
|
+
"hutch_python/__init__.py",
|
|
55
|
+
"hutch_python/__main__.py",
|
|
56
|
+
"hutch_python/bug.py",
|
|
57
|
+
"hutch_python/cache.py",
|
|
58
|
+
"hutch_python/calc_defaults.py",
|
|
59
|
+
"hutch_python/cam_load.py",
|
|
60
|
+
"hutch_python/cli.py",
|
|
61
|
+
"hutch_python/constants.py",
|
|
62
|
+
"hutch_python/cookiecutter/cookiecutter.json",
|
|
63
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/.gitignore",
|
|
64
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/README.md",
|
|
65
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/conf.yml",
|
|
66
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/experiments/__init__.py",
|
|
67
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/set-dev",
|
|
68
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}/__init__.py",
|
|
69
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}/beamline.py",
|
|
70
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}env",
|
|
71
|
+
"hutch_python/cookiecutter/{{ cookiecutter.hutch }}/{{ cookiecutter.hutch }}python",
|
|
72
|
+
"hutch_python/debug.py",
|
|
73
|
+
"hutch_python/env_version.py",
|
|
74
|
+
"hutch_python/epics_arch.py",
|
|
75
|
+
"hutch_python/exp_load.py",
|
|
76
|
+
"hutch_python/happi.py",
|
|
77
|
+
"hutch_python/ipython_log.py",
|
|
78
|
+
"hutch_python/ipython_session_timer.py",
|
|
79
|
+
"hutch_python/lcls.py",
|
|
80
|
+
"hutch_python/load_conf.py",
|
|
81
|
+
"hutch_python/log_setup.py",
|
|
82
|
+
"hutch_python/logging.yml",
|
|
83
|
+
"hutch_python/mpl_config.py",
|
|
84
|
+
"hutch_python/namespace.py",
|
|
85
|
+
"hutch_python/obj_config.py",
|
|
86
|
+
"hutch_python/ophyd_settings.py",
|
|
87
|
+
"hutch_python/options.py",
|
|
88
|
+
"hutch_python/plan_defaults.py",
|
|
89
|
+
"hutch_python/plan_wrappers.py",
|
|
90
|
+
"hutch_python/print_hint_banner.py",
|
|
91
|
+
"hutch_python/pt_app_config.py",
|
|
92
|
+
"hutch_python/qs_load.py",
|
|
93
|
+
"hutch_python/sim.py",
|
|
94
|
+
"hutch_python/startup_script.py",
|
|
95
|
+
"hutch_python/templates/issue.template",
|
|
96
|
+
"hutch_python/tests/__init__.py",
|
|
97
|
+
"hutch_python/tests/bad_script.py",
|
|
98
|
+
"hutch_python/tests/camviewer.cfg",
|
|
99
|
+
"hutch_python/tests/conf.yaml",
|
|
100
|
+
"hutch_python/tests/conftest.py",
|
|
101
|
+
"hutch_python/tests/envs/pcds-1.0.0",
|
|
102
|
+
"hutch_python/tests/envs/pcds-2.0.0",
|
|
103
|
+
"hutch_python/tests/envs/z-env",
|
|
104
|
+
"hutch_python/tests/experiments/sample_expname.py",
|
|
105
|
+
"hutch_python/tests/experiments/x010.py",
|
|
106
|
+
"hutch_python/tests/experiments/x011.py",
|
|
107
|
+
"hutch_python/tests/happi_db.json",
|
|
108
|
+
"hutch_python/tests/sample_module_1.py",
|
|
109
|
+
"hutch_python/tests/sample_module_2.py",
|
|
110
|
+
"hutch_python/tests/script.py",
|
|
111
|
+
"hutch_python/tests/test_bug.py",
|
|
112
|
+
"hutch_python/tests/test_cache.py",
|
|
113
|
+
"hutch_python/tests/test_cam_load.py",
|
|
114
|
+
"hutch_python/tests/test_cli.py",
|
|
115
|
+
"hutch_python/tests/test_epics_arch.py",
|
|
116
|
+
"hutch_python/tests/test_experiment.py",
|
|
117
|
+
"hutch_python/tests/test_happi.py",
|
|
118
|
+
"hutch_python/tests/test_ipython_log.py",
|
|
119
|
+
"hutch_python/tests/test_ipython_session_timer.py",
|
|
120
|
+
"hutch_python/tests/test_load_conf.py",
|
|
121
|
+
"hutch_python/tests/test_log_setup.py",
|
|
122
|
+
"hutch_python/tests/test_namespace.py",
|
|
123
|
+
"hutch_python/tests/test_obj_config.py",
|
|
124
|
+
"hutch_python/tests/test_plan_wrappers.py",
|
|
125
|
+
"hutch_python/tests/test_questionnaire.py",
|
|
126
|
+
"hutch_python/tests/test_tstpython.py",
|
|
127
|
+
"hutch_python/tests/test_user_load.py",
|
|
128
|
+
"hutch_python/tests/test_utils.py",
|
|
129
|
+
"hutch_python/tests/tst/__init__.py",
|
|
130
|
+
"hutch_python/tests/tst/beamline.py",
|
|
131
|
+
"hutch_python/tests/tstpython",
|
|
132
|
+
"hutch_python/user_load.py",
|
|
133
|
+
"hutch_python/utils.py",
|
|
134
|
+
"hutch_python/version.py",
|
|
135
|
+
"pyproject.toml",
|
|
136
|
+
"requirements.txt"
|
|
137
|
+
]
|
|
138
|
+
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
<!--- Provide a general summary of the issue in the Title above -->
|
|
2
|
-
## Expected Behavior
|
|
3
|
-
<!--- If you're describing a bug, tell us what should happen -->
|
|
4
|
-
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
|
5
|
-
|
|
6
|
-
## Current Behavior
|
|
7
|
-
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
|
8
|
-
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
|
|
9
|
-
|
|
10
|
-
## Possible Solution
|
|
11
|
-
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
|
12
|
-
<!--- or ideas how to implement the addition or change -->
|
|
13
|
-
|
|
14
|
-
## Steps to Reproduce (for bugs)
|
|
15
|
-
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
|
16
|
-
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
|
17
|
-
1.
|
|
18
|
-
2.
|
|
19
|
-
3.
|
|
20
|
-
|
|
21
|
-
## Context
|
|
22
|
-
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
|
23
|
-
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
|
24
|
-
|
|
25
|
-
## Your Environment
|
|
26
|
-
<!--- Include as many relevant details about the environment you experienced the bug in -->
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
ISSUE=$1
|
|
4
|
-
shift
|
|
5
|
-
DESCRIPTION=$*
|
|
6
|
-
|
|
7
|
-
if [[ -z "$ISSUE" || -z "$DESCRIPTION" ]]; then
|
|
8
|
-
echo "Usage: $0 (ISSUE NUMBER) (DESCRIPTION)"
|
|
9
|
-
exit 1
|
|
10
|
-
fi
|
|
11
|
-
|
|
12
|
-
re_issue_number='^[1-9][0-9]*$'
|
|
13
|
-
|
|
14
|
-
if ! [[ "$ISSUE" =~ $re_issue_number ]]; then
|
|
15
|
-
echo "Error: Issue number is not a number: $ISSUE"
|
|
16
|
-
echo
|
|
17
|
-
echo "This should preferably be the issue number that this pull request solves."
|
|
18
|
-
echo "We may also accept the Pull Request number in place of the issue."
|
|
19
|
-
exit 1
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
echo "Issue: $ISSUE"
|
|
23
|
-
echo "Description: $DESCRIPTION"
|
|
24
|
-
|
|
25
|
-
FILENAME=source/upcoming_release_notes/${ISSUE}-${DESCRIPTION// /_}.rst
|
|
26
|
-
|
|
27
|
-
pushd "$(dirname "$0")" || exit 1
|
|
28
|
-
|
|
29
|
-
sed -e "s/IssueNumber Title/${ISSUE} ${DESCRIPTION}/" \
|
|
30
|
-
"source/upcoming_release_notes/template-short.rst" > "${FILENAME}"
|
|
31
|
-
|
|
32
|
-
if ${EDITOR} "${FILENAME}"; then
|
|
33
|
-
echo "Adding ${FILENAME} to the git repository..."
|
|
34
|
-
git add "${FILENAME}"
|
|
35
|
-
fi
|
|
36
|
-
|
|
37
|
-
popd || exit 0
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import time
|
|
3
|
-
from collections import defaultdict
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
|
|
6
|
-
# find the pre-release directory and release notes file
|
|
7
|
-
THIS_DIR = Path(__file__).resolve().parent
|
|
8
|
-
PRE_RELEASE = THIS_DIR / 'source' / 'upcoming_release_notes'
|
|
9
|
-
TEMPLATE = PRE_RELEASE / 'template-short.rst'
|
|
10
|
-
RELEASE_NOTES = THIS_DIR / 'source' / 'releases.rst'
|
|
11
|
-
|
|
12
|
-
# Set up underline constants
|
|
13
|
-
TITLE_UNDER = '#'
|
|
14
|
-
RELEASE_UNDER = '='
|
|
15
|
-
SECTION_UNDER = '-'
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def parse_pre_release_file(path):
|
|
19
|
-
"""
|
|
20
|
-
Return dict mapping of release notes section to lines.
|
|
21
|
-
|
|
22
|
-
Uses empty list when no info was entered for the section.
|
|
23
|
-
"""
|
|
24
|
-
print(f'Checking {path} for release notes.')
|
|
25
|
-
with path.open('r') as fd:
|
|
26
|
-
lines = fd.readlines()
|
|
27
|
-
|
|
28
|
-
section_dict = defaultdict(list)
|
|
29
|
-
prev = None
|
|
30
|
-
section = None
|
|
31
|
-
|
|
32
|
-
for line in lines:
|
|
33
|
-
if prev is not None:
|
|
34
|
-
if line.startswith(SECTION_UNDER * 2):
|
|
35
|
-
section = prev.strip()
|
|
36
|
-
continue
|
|
37
|
-
if section is not None and line[0] in ' -':
|
|
38
|
-
notes = section_dict[section]
|
|
39
|
-
if len(line) > 6:
|
|
40
|
-
notes.append(line)
|
|
41
|
-
section_dict[section] = notes
|
|
42
|
-
prev = line
|
|
43
|
-
|
|
44
|
-
return section_dict
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def extend_release_notes(path, version, release_notes):
|
|
48
|
-
"""
|
|
49
|
-
Given dict mapping of section to lines, extend the release notes file.
|
|
50
|
-
"""
|
|
51
|
-
with path.open('r') as fd:
|
|
52
|
-
lines = fd.readlines()
|
|
53
|
-
|
|
54
|
-
new_lines = ['\n', '\n']
|
|
55
|
-
date = time.strftime('%Y-%m-%d')
|
|
56
|
-
release_title = f'{version} ({date})'
|
|
57
|
-
new_lines.append(release_title + '\n')
|
|
58
|
-
new_lines.append(len(release_title) * RELEASE_UNDER + '\n')
|
|
59
|
-
new_lines.append('\n')
|
|
60
|
-
for section, section_lines in release_notes.items():
|
|
61
|
-
if section == 'Contributors':
|
|
62
|
-
section_lines = sorted(list(set(section_lines)))
|
|
63
|
-
if len(section_lines) > 0:
|
|
64
|
-
new_lines.append(section + '\n')
|
|
65
|
-
new_lines.append(SECTION_UNDER * len(section) + '\n')
|
|
66
|
-
new_lines.extend(section_lines)
|
|
67
|
-
new_lines.append('\n')
|
|
68
|
-
|
|
69
|
-
output_lines = lines[:2] + new_lines + lines[2:]
|
|
70
|
-
|
|
71
|
-
print('Writing out release notes file')
|
|
72
|
-
for line in new_lines:
|
|
73
|
-
print(line.strip('\n'))
|
|
74
|
-
with path.open('w') as fd:
|
|
75
|
-
fd.writelines(output_lines)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
def main(version_number: str):
|
|
79
|
-
section_notes = parse_pre_release_file(TEMPLATE)
|
|
80
|
-
to_delete = []
|
|
81
|
-
for path in PRE_RELEASE.iterdir():
|
|
82
|
-
if path.name[0] in '1234567890':
|
|
83
|
-
to_delete.append(path)
|
|
84
|
-
extra_notes = parse_pre_release_file(path)
|
|
85
|
-
for section, notes in section_notes.items():
|
|
86
|
-
notes.extend(extra_notes[section])
|
|
87
|
-
section_notes[section] = notes
|
|
88
|
-
|
|
89
|
-
extend_release_notes(RELEASE_NOTES, version_number, section_notes)
|
|
90
|
-
|
|
91
|
-
print(
|
|
92
|
-
"* Wrote release notes. Please perform the following manually:",
|
|
93
|
-
file=sys.stderr,
|
|
94
|
-
)
|
|
95
|
-
for path in to_delete:
|
|
96
|
-
print(f" git rm {path}", file=sys.stderr)
|
|
97
|
-
print(f" git add {RELEASE_NOTES}", file=sys.stderr)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if __name__ == '__main__':
|
|
101
|
-
if len(sys.argv) != 2:
|
|
102
|
-
print(f"Usage: {sys.argv[0]} VERSION_NUMBER", file=sys.stderr)
|
|
103
|
-
sys.exit(1)
|
|
104
|
-
|
|
105
|
-
version_number = sys.argv[1]
|
|
106
|
-
|
|
107
|
-
if not version_number.startswith("v"):
|
|
108
|
-
print(
|
|
109
|
-
f"Version number should start with 'v': {version_number}",
|
|
110
|
-
file=sys.stderr
|
|
111
|
-
)
|
|
112
|
-
sys.exit(1)
|
|
113
|
-
|
|
114
|
-
main(version_number)
|