.gitignore
.gitlab-ci.yml
.pre-commit-config.yaml
LICENSE
README.rst
pyproject.toml
.dae-devops/Makefile
.dae-devops/prepare_git_dependencies.sh
.dae-devops/project.yaml
.dae-devops/docs/conventions.rst
.dae-devops/docs/developing.rst
.dae-devops/docs/devops.rst
.dae-devops/docs/docs_structure.rst
.dae-devops/docs/installing.rst
.dae-devops/docs/testing.rst
.devcontainer/Dockerfile
.devcontainer/devcontainer.json
.github/CONTRIBUTING.rst
.github/dependabot.yml
.github/actions/install_requirements/action.yml
.github/pages/index.html
.github/pages/make_switcher.py
.github/workflows/code.yml
.github/workflows/docs.yml
.github/workflows/docs_clean.yml
.github/workflows/linkcheck.yml
.vscode/extensions.json
.vscode/launch.json
.vscode/settings.json
.vscode/tasks.json
docs/conf.py
docs/index.rst
docs/_static/css/custom.css
docs/api/classes.rst
docs/api/command_line.rst
docs/api/index.rst
docs/api/modules.rst
docs/images/dls-favicon.ico
docs/images/dls-logo.svg
src/dls_bxflow.egg-info/PKG-INFO
src/dls_bxflow.egg-info/SOURCES.txt
src/dls_bxflow.egg-info/dependency_links.txt
src/dls_bxflow.egg-info/entry_points.txt
src/dls_bxflow.egg-info/requires.txt
src/dls_bxflow.egg-info/top_level.txt
src/dls_bxflow_api/__init__.py
src/dls_bxflow_api/aiohttp_client.py
src/dls_bxflow_api/exceptions.py
src/dls_bxflow_api/remex.py
src/dls_bxflow_api/thing.py
src/dls_bxflow_api/things.py
src/dls_bxflow_api/bx_databases/__init__.py
src/dls_bxflow_api/bx_databases/constants.py
src/dls_bxflow_api/bx_datafaces/__init__.py
src/dls_bxflow_api/bx_datafaces/aiohttp.py
src/dls_bxflow_api/bx_datafaces/bx_datafaces.py
src/dls_bxflow_api/bx_datafaces/constants.py
src/dls_bxflow_api/bx_datafaces/context.py
src/dls_bxflow_cli/__init__.py
src/dls_bxflow_cli/main.py
src/dls_bxflow_cli/version.py
src/dls_bxflow_cli/contexts/dataface_client.py
src/dls_bxflow_cli/contexts/filestore.py
src/dls_bxflow_cli/contexts/news_consumer.py
src/dls_bxflow_cli/subcommands/__init__.py
src/dls_bxflow_cli/subcommands/base.py
src/dls_bxflow_cli/subcommands/execute_workflow.py
src/dls_bxflow_cli/subcommands/find_xanes.py
src/dls_bxflow_cli/subcommands/fire_i22.py
src/dls_bxflow_cli/subcommands/recipe_parser.py
src/dls_bxflow_cli/subcommands/report_dcg.py
src/dls_bxflow_cli/subcommands/report_ispyb.py
src/dls_bxflow_cli/subcommands/start_services.py
src/dls_bxflow_cli/subcommands/submit.py
src/dls_bxflow_lib/__init__.py
src/dls_bxflow_lib/__main__.py
src/dls_bxflow_lib/_version.py
src/dls_bxflow_lib/base_aiohttp.py
src/dls_bxflow_lib/envvar.py
src/dls_bxflow_lib/typing.py
src/dls_bxflow_lib/version.py
src/dls_bxflow_lib/bx_catalogs/__init__.py
src/dls_bxflow_lib/bx_catalogs/aiohttp.py
src/dls_bxflow_lib/bx_catalogs/bx_catalogs.py
src/dls_bxflow_lib/bx_catalogs/constants.py
src/dls_bxflow_lib/bx_catalogs/context.py
src/dls_bxflow_lib/bx_catalogs/ispyb.py
src/dls_bxflow_lib/bx_collectors/__init__.py
src/dls_bxflow_lib/bx_collectors/aiohttp.py
src/dls_bxflow_lib/bx_collectors/base.py
src/dls_bxflow_lib/bx_collectors/bx_collectors.py
src/dls_bxflow_lib/bx_collectors/constants.py
src/dls_bxflow_lib/bx_collectors/context.py
src/dls_bxflow_lib/bx_collectors/gda_parser_base.py
src/dls_bxflow_lib/bx_collectors/gdascan.py
src/dls_bxflow_lib/bx_collectors/manual.py
src/dls_bxflow_lib/bx_collectors/scraper.py
src/dls_bxflow_lib/bx_composers/__init__.py
src/dls_bxflow_lib/bx_composers/bx_composers.py
src/dls_bxflow_lib/bx_composers/html.py
src/dls_bxflow_lib/bx_composers/prettyhelper.py
src/dls_bxflow_lib/bx_composers/text.py
src/dls_bxflow_lib/bx_configurators/__init__.py
src/dls_bxflow_lib/bx_configurators/base.py
src/dls_bxflow_lib/bx_configurators/bx_configurators.py
src/dls_bxflow_lib/bx_configurators/yaml.py
src/dls_bxflow_lib/bx_contexts/__init__.py
src/dls_bxflow_lib/bx_contexts/base.py
src/dls_bxflow_lib/bx_contexts/bx_contexts.py
src/dls_bxflow_lib/bx_contexts/classic.py
src/dls_bxflow_lib/bx_databases/__init__.py
src/dls_bxflow_lib/bx_databases/aiosqlite.py
src/dls_bxflow_lib/bx_databases/bx_databases.py
src/dls_bxflow_lib/bx_datafaces/__init__.py
src/dls_bxflow_lib/bx_datafaces/aiohttp.py
src/dls_bxflow_lib/bx_datafaces/aiosqlite.py
src/dls_bxflow_lib/bx_datafaces/bx_datafaces.py
src/dls_bxflow_lib/bx_datafaces/context.py
src/dls_bxflow_lib/bx_datafaces/news_producer.py
src/dls_bxflow_lib/bx_filestores/__init__.py
src/dls_bxflow_lib/bx_filestores/base.py
src/dls_bxflow_lib/bx_filestores/bx_filestores.py
src/dls_bxflow_lib/bx_filestores/context.py
src/dls_bxflow_lib/bx_filestores/explicit.py
src/dls_bxflow_lib/bx_filestores/scandir.py
src/dls_bxflow_lib/bx_gamls/__init__.py
src/dls_bxflow_lib/bx_gamls/base.py
src/dls_bxflow_lib/bx_gamls/bx_gamls.py
src/dls_bxflow_lib/bx_gamls/html.py
src/dls_bxflow_lib/bx_guis/__init__.py
src/dls_bxflow_lib/bx_guis/aiohttp.py
src/dls_bxflow_lib/bx_guis/base.py
src/dls_bxflow_lib/bx_guis/bx_guis.py
src/dls_bxflow_lib/bx_guis/constants.py
src/dls_bxflow_lib/bx_guis/context.py
src/dls_bxflow_lib/bx_guis/curses.py
src/dls_bxflow_lib/bx_guis/html/index.html
src/dls_bxflow_lib/bx_guis/html/css/job_data_grid_ux.css
src/dls_bxflow_lib/bx_guis/html/css/job_details_ux.css
src/dls_bxflow_lib/bx_guis/html/css/job_submit_ux.css
src/dls_bxflow_lib/bx_guis/html/css/styles.css
src/dls_bxflow_lib/bx_guis/html/css/system_health_ux.css
src/dls_bxflow_lib/bx_guis/html/css/images/dls_logo_50x50.png
src/dls_bxflow_lib/bx_guis/html/images/green_dot_crosshair.png
src/dls_bxflow_lib/bx_guis/html/images/radial1.666.png
src/dls_bxflow_lib/bx_guis/html/javascript/index.js
src/dls_bxflow_lib/bx_guis/html/javascript/runtime.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/events.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/job_data_grid_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/job_details_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/job_news_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/job_submit_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/job_variables_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/page.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/recent_jobs_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/system_health_ux.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/tabs_manager.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/ux_auto_update.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/ux_base.js
src/dls_bxflow_lib/bx_guis/html/javascript/bxflow/version.js
src/dls_bxflow_lib/bx_guis/html/javascript/dls_common/base.js
src/dls_bxflow_lib/bx_guis/html/javascript/jquery/3.6.0/jquery.min.js
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/jquery-ui.min.css
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/jquery-ui.min.js
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/jquery-ui.css
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-icons_222222_256x240.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-icons_2e83ff_256x240.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-icons_454545_256x240.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-icons_888888_256x240.png
src/dls_bxflow_lib/bx_guis/html/javascript/jqueryui/1.13.1/themes/smoothness/images/ui-icons_cd0a0a_256x240.png
src/dls_bxflow_lib/bx_guis/html/javascript/protocolj/client.js
src/dls_bxflow_lib/bx_jobs/__init__.py
src/dls_bxflow_lib/bx_jobs/base.py
src/dls_bxflow_lib/bx_jobs/bx_jobs.py
src/dls_bxflow_lib/bx_jobs/context.py
src/dls_bxflow_lib/bx_jobs/standard.py
src/dls_bxflow_lib/bx_jobs/states.py
src/dls_bxflow_lib/bx_launchers/__init__.py
src/dls_bxflow_lib/bx_launchers/aiohttp.py
src/dls_bxflow_lib/bx_launchers/base.py
src/dls_bxflow_lib/bx_launchers/bx_launchers.py
src/dls_bxflow_lib/bx_launchers/constants.py
src/dls_bxflow_lib/bx_launchers/context.py
src/dls_bxflow_lib/bx_launchers/island.py
src/dls_bxflow_lib/bx_launchers/popener.py
src/dls_bxflow_lib/bx_launchers/qsubber.py
src/dls_bxflow_lib/bx_launchers/states.py
src/dls_bxflow_lib/bx_logstores/__init__.py
src/dls_bxflow_lib/bx_logstores/aiohttp.py
src/dls_bxflow_lib/bx_logstores/base.py
src/dls_bxflow_lib/bx_logstores/bx_logstores.py
src/dls_bxflow_lib/bx_logstores/constants.py
src/dls_bxflow_lib/bx_logstores/context.py
src/dls_bxflow_lib/bx_logstores/graylogger.py
src/dls_bxflow_lib/bx_news/__init__.py
src/dls_bxflow_lib/bx_news/aio_pika.py
src/dls_bxflow_lib/bx_news/aiohttp.py
src/dls_bxflow_lib/bx_news/base.py
src/dls_bxflow_lib/bx_news/bx_news.py
src/dls_bxflow_lib/bx_news/constants.py
src/dls_bxflow_lib/bx_news/context.py
src/dls_bxflow_lib/bx_news/pika.py
src/dls_bxflow_lib/bx_news/zmq_pubsub.py
src/dls_bxflow_lib/bx_schedulers/__init__.py
src/dls_bxflow_lib/bx_schedulers/aiohttp.py
src/dls_bxflow_lib/bx_schedulers/base.py
src/dls_bxflow_lib/bx_schedulers/bx_schedulers.py
src/dls_bxflow_lib/bx_schedulers/constants.py
src/dls_bxflow_lib/bx_schedulers/context.py
src/dls_bxflow_lib/bx_schedulers/dask.py
src/dls_bxflow_lib/bx_schedulers/naive.py
src/dls_bxflow_lib/bx_schedulers/zocalo.py
src/dls_bxflow_lib/bx_settings/__init__.py
src/dls_bxflow_lib/bx_settings/base.py
src/dls_bxflow_lib/bx_settings/boolean.py
src/dls_bxflow_lib/bx_settings/bx_settings.py
src/dls_bxflow_lib/bx_settings/constants.py
src/dls_bxflow_lib/bx_settings/float.py
src/dls_bxflow_lib/bx_settings/integer.py
src/dls_bxflow_lib/bx_settings/string.py
src/dls_bxflow_lib/bx_workflows/__init__.py
src/dls_bxflow_lib/bx_workflows/base.py
src/dls_bxflow_lib/bx_workflows/main.py
src/dls_bxflow_lib/bx_workflows/notebook_helper.py
src/dls_bxflow_lib/bx_workflows/workflow_finder.py
src/dls_bxflow_lib/dummies/__init__.py
src/dls_bxflow_lib/dummies/writer.py
src/dls_bxflow_lib/recipe_parser/__init__.py
src/dls_bxflow_lib/recipe_parser/overall.py
src/dls_bxflow_lib/recipe_parser/parser1.py
src/dls_bxflow_run/__init__.py
src/dls_bxflow_run/main_isolated.py
src/dls_bxflow_run/bx_gates/__init__.py
src/dls_bxflow_run/bx_gates/base.py
src/dls_bxflow_run/bx_gates/bx_gates.py
src/dls_bxflow_run/bx_gates/constants.py
src/dls_bxflow_run/bx_gates/standard.py
src/dls_bxflow_run/bx_gates/states.py
src/dls_bxflow_run/bx_tasks/__init__.py
src/dls_bxflow_run/bx_tasks/base.py
src/dls_bxflow_run/bx_tasks/bx_tasks.py
src/dls_bxflow_run/bx_tasks/constants.py
src/dls_bxflow_run/bx_tasks/dawn1.py
src/dls_bxflow_run/bx_tasks/dawn2.py
src/dls_bxflow_run/bx_tasks/dawn_base.py
src/dls_bxflow_run/bx_tasks/dummy.py
src/dls_bxflow_run/bx_tasks/filename_classname.py
src/dls_bxflow_run/bx_tasks/jupyter.py
src/dls_bxflow_run/bx_tasks/module_classname.py
src/dls_bxflow_run/bx_tasks/pickled_class.py
src/dls_bxflow_run/bx_tasks/ptypy_mpi.py
src/dls_bxflow_run/bx_tasks/ptyrex_mpi.py
src/dls_bxflow_run/bx_tasks/shell.py
src/dls_bxflow_run/bx_tasks/states.py
src/dls_bxflow_run/bx_tasks/symlink.py
src/dls_bxflow_run/bx_variables/__init__.py
src/dls_bxflow_run/bx_variables/bx_variables.py
src/dls_bxflow_run/bx_variables/simple.py
src/dls_bxflow_run/bx_variables/states.py
tests/__init__.py
tests/base.py
tests/base_context_tester.py
tests/base_specification_tester.py
tests/base_tester.py
tests/conftest.py
tests/gda_parser.py
tests/gda_workflow.py
tests/qacct
tests/qstat
tests/qsub
tests/test_catalog.py
tests/test_collector.py
tests/test_collector_scraper.py
tests/test_composer.py
tests/test_configurator.py
tests/test_database.py
tests/test_dataface.py
tests/test_dawn1.py
tests/test_dawn2.py
tests/test_extract_error_lines_dawn.py
tests/test_extract_error_lines_dummy.py
tests/test_filestore.py
tests/test_gaml.py
tests/test_gui.py
tests/test_job_a.py
tests/test_job_a_bc_d.py
tests/test_job_pubcon.py
tests/test_job_x.py
tests/test_jupyter.py
tests/test_launcher.py
tests/test_launcher_capacity.py
tests/test_launcher_direct.py
tests/test_launcher_multiple.py
tests/test_launcher_restart.py
tests/test_logstore.py
tests/test_news.py
tests/test_protocolj.py
tests/test_ptypy_mpi.py
tests/test_ptyrex_mpi.py
tests/test_scheduler_naive.py
tests/test_settings.py
tests/test_shell.py
tests/test_task.py
tests/test_workflow.py
tests/test_workflow_finder.py
tests/configurations/backend.yaml
tests/configurations/filestore.yaml
tests/configurations/ispyb-local.cfg
tests/configurations/ptypy_configfiles/i14_unknown_probe_dm.yaml
tests/configurations/ptyrex_configfiles/region_p4_p6.json
tests/datafiles/dawn2_configuration.json
tests/datafiles/i22-4996.nxs
tests/datafiles/gaml/workflow1/settings.yaml
tests/datafiles/gaml/workflow2/settings.yaml
tests/jupyter/execute.sh
tests/jupyter/jupyter1.ipynb
tests/jupyter/jupyter_bad_cell.ipynb
tests/notebooks/c.ipynb
tests/stub_commands/dawn
tests/stub_commands/mpirun
tests/stub_commands/ptychotools.ptypy_mpi_recipe
tests/task_classes/task_z.py
tests/workflows/__init__.py
tests/workflows/base.py
tests/workflows/utilities.py
tests/workflows/a/__init__.py
tests/workflows/a/workflow.py
tests/workflows/b/__init__.py
tests/workflows/b/workflow.py
tests/workflows/c/__init__.py
tests/workflows/c/workflow.py
tests/workflows/e/__init__.py
tests/workflows/e/workflow.py
tests/workflows/f/__init__.py
tests/workflows/f/workflow.py
tests/workflows/g/__init__.py
tests/workflows/g/workflow.py