dls-dodal 1.29.4__tar.gz → 1.30.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.
- dls_dodal-1.30.0/.copier-answers.yml +16 -0
- dls_dodal-1.30.0/.devcontainer/devcontainer.json +46 -0
- dls_dodal-1.30.0/.github/CONTRIBUTING.md +27 -0
- dls_dodal-1.30.0/.github/actions/install_requirements/action.yml +34 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.github/dependabot.yml +6 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.github/pages/make_switcher.py +12 -17
- dls_dodal-1.30.0/.github/workflows/_check.yml +27 -0
- dls_dodal-1.30.0/.github/workflows/_dist.yml +35 -0
- dls_dodal-1.29.4/.github/workflows/docs.yml → dls_dodal-1.30.0/.github/workflows/_docs.yml +14 -15
- dls_dodal-1.30.0/.github/workflows/_pypi.yml +17 -0
- dls_dodal-1.30.0/.github/workflows/_release.yml +32 -0
- dls_dodal-1.30.0/.github/workflows/_test.yml +62 -0
- dls_dodal-1.30.0/.github/workflows/_tox.yml +24 -0
- dls_dodal-1.30.0/.github/workflows/ci.yml +59 -0
- dls_dodal-1.30.0/.github/workflows/periodic.yml +13 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.gitignore +4 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.pre-commit-config.yaml +1 -0
- dls_dodal-1.30.0/.vscode/extensions.json +5 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.vscode/launch.json +4 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.vscode/settings.json +7 -3
- dls_dodal-1.30.0/Dockerfile +13 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/PKG-INFO +27 -42
- dls_dodal-1.30.0/README.md +40 -0
- dls_dodal-1.30.0/catalog-info.yaml +12 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/docs/_templates/autosummary/module.rst +0 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/docs/conf.py +11 -21
- dls_dodal-1.30.0/docs/explanations/decisions/0001-record-architecture-decisions.md +18 -0
- dls_dodal-1.30.0/docs/explanations/decisions/0002-switched-to-python-copier-template.md +28 -0
- dls_dodal-1.30.0/docs/explanations/decisions/COPYME +19 -0
- dls_dodal-1.30.0/docs/explanations/decisions.md +12 -0
- dls_dodal-1.30.0/docs/explanations.md +10 -0
- dls_dodal-1.30.0/docs/genindex.md +3 -0
- dls_dodal-1.30.0/docs/how-to/build-docs.md +39 -0
- dls_dodal-1.30.0/docs/how-to/contribute.md +2 -0
- dls_dodal-1.30.0/docs/how-to/coverage.md +8 -0
- {dls_dodal-1.29.4/docs/developer → dls_dodal-1.30.0/docs}/how-to/create-beamline.rst +0 -1
- dls_dodal-1.30.0/docs/how-to/dev-install.md +56 -0
- dls_dodal-1.30.0/docs/how-to/excalidraw.md +19 -0
- dls_dodal-1.30.0/docs/how-to/lint.md +34 -0
- dls_dodal-1.30.0/docs/how-to/lock-requirements.md +39 -0
- {dls_dodal-1.29.4/docs/developer → dls_dodal-1.30.0/docs}/how-to/make-new-ophyd-async-device.rst +1 -1
- dls_dodal-1.30.0/docs/how-to/make-release.md +32 -0
- dls_dodal-1.30.0/docs/how-to/pypi.md +24 -0
- dls_dodal-1.30.0/docs/how-to/run-tests.md +20 -0
- dls_dodal-1.30.0/docs/how-to/static-analysis.md +7 -0
- dls_dodal-1.30.0/docs/how-to/update-template.md +9 -0
- {dls_dodal-1.29.4/docs/developer → dls_dodal-1.30.0/docs}/how-to/zocalo.rst +2 -2
- dls_dodal-1.30.0/docs/how-to.md +10 -0
- dls_dodal-1.30.0/docs/images/dls-logo.svg +11 -0
- dls_dodal-1.30.0/docs/images/excalidraw-example.svg +16 -0
- dls_dodal-1.30.0/docs/index.md +56 -0
- dls_dodal-1.29.4/docs/user/reference/api.rst → dls_dodal-1.30.0/docs/reference/api.md +5 -5
- {dls_dodal-1.29.4/docs/developer → dls_dodal-1.30.0/docs}/reference/device-standards.rst +1 -1
- {dls_dodal-1.29.4/docs/developer → dls_dodal-1.30.0/docs}/reference/standards.rst +11 -5
- dls_dodal-1.30.0/docs/reference.md +12 -0
- {dls_dodal-1.29.4/docs/user → dls_dodal-1.30.0/docs}/tutorials/get_started.rst +1 -1
- dls_dodal-1.30.0/docs/tutorials/installation.md +42 -0
- dls_dodal-1.30.0/docs/tutorials.md +10 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/pyproject.toml +44 -19
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dls_dodal.egg-info/PKG-INFO +27 -42
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dls_dodal.egg-info/SOURCES.txt +60 -34
- dls_dodal-1.30.0/src/dls_dodal.egg-info/entry_points.txt +3 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dls_dodal.egg-info/requires.txt +7 -2
- dls_dodal-1.30.0/src/dodal/__init__.py +3 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/_version.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/__init__.py +3 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i03.py +28 -23
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i04.py +34 -12
- dls_dodal-1.30.0/src/dodal/beamlines/i13_1.py +66 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i22.py +5 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i24.py +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/p38.py +7 -7
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/p45.py +7 -5
- dls_dodal-1.30.0/src/dodal/beamlines/p99.py +61 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/cli.py +6 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/beamlines/beamline_parameters.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/beamlines/beamline_utils.py +6 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/maths.py +1 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/types.py +2 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/udc_directory_provider.py +14 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/visit.py +2 -3
- dls_dodal-1.30.0/src/dodal/devices/CTAB.py +41 -0
- dls_dodal-1.30.0/src/dodal/devices/aperturescatterguard.py +282 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/areadetector/adaravis.py +8 -6
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/areadetector/adsim.py +2 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/areadetector/adutils.py +20 -12
- dls_dodal-1.30.0/src/dodal/devices/cryostream.py +21 -0
- dls_dodal-1.30.0/src/dodal/devices/detector/__init__.py +13 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/detector/det_dim_constants.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/detector/detector.py +5 -5
- dls_dodal-1.30.0/src/dodal/devices/detector/detector_motion.py +44 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/eiger.py +11 -15
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/eiger_odin.py +9 -10
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/fast_grid_scan.py +4 -3
- dls_dodal-1.30.0/src/dodal/devices/fluorescence_detector_motion.py +18 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/focusing_mirror.py +4 -4
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/hutch_shutter.py +4 -4
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i22/dcm.py +4 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i22/fswitch.py +4 -4
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i22/nxsas.py +23 -32
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/pmac.py +47 -8
- dls_dodal-1.30.0/src/dodal/devices/ipin.py +11 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/linkam3.py +11 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/logging_ophyd_device.py +1 -1
- dls_dodal-1.30.0/src/dodal/devices/motors.py +36 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/grid_overlay.py +1 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/microns_for_zoom_levels.json +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/oav_detector.py +2 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/oav_parameters.py +18 -10
- dls_dodal-1.30.0/src/dodal/devices/oav/oav_to_redis_forwarder.py +100 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +6 -6
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +5 -6
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/utils.py +2 -2
- dls_dodal-1.30.0/src/dodal/devices/p99/sample_stage.py +43 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/robot.py +30 -18
- dls_dodal-1.30.0/src/dodal/devices/scintillator.py +10 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/smargon.py +3 -3
- dls_dodal-1.30.0/src/dodal/devices/status.py +12 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/tetramm.py +4 -4
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/thawer.py +5 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/undulator_dcm.py +6 -8
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/util/adjuster_plans.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/util/epics_util.py +5 -7
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/util/lookup_tables.py +2 -3
- dls_dodal-1.30.0/src/dodal/devices/util/save_panda.py +87 -0
- dls_dodal-1.30.0/src/dodal/devices/util/test_utils.py +17 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/webcam.py +3 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/xbpm_feedback.py +0 -23
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/zebra.py +10 -10
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/zebra_controlled_shutter.py +3 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/zocalo/zocalo_interaction.py +10 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/zocalo/zocalo_results.py +31 -18
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/log.py +14 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/plans/data_session_metadata.py +1 -0
- dls_dodal-1.30.0/src/dodal/plans/motor_util_plans.py +117 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/utils.py +65 -22
- dls_dodal-1.30.0/tests/beamlines/unit_tests/test_i03.py +14 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/common/beamlines/test_beamline_utils.py +25 -12
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/common/beamlines/test_device_instantiation.py +3 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/common/test_coordination.py +1 -1
- dls_dodal-1.30.0/tests/common/test_udc_directory_provider.py +79 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/conftest.py +21 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/i22/test_dcm.py +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/i22/test_fswitch.py +4 -4
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_aperturescatterguard_system.py +57 -44
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_eiger_system.py +1 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_oav_system.py +7 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_zebra_system.py +8 -8
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_zocalo_results.py +3 -3
- dls_dodal-1.30.0/tests/devices/unit_tests/conftest.py +35 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/detector/test_detector.py +6 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/i24/test_pmac.py +10 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +1 -0
- dls_dodal-1.30.0/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +71 -0
- dls_dodal-1.30.0/tests/devices/unit_tests/p99/test_p99_stage.py +42 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_OAVCentring.json +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +156 -130
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_beam_converter.py +12 -13
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_eiger.py +37 -34
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_focusing_mirror.py +4 -3
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_hutch_shutter.py +1 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_oav.py +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_odin.py +12 -12
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_slits.py +2 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_smargon.py +2 -4
- dls_dodal-1.30.0/tests/devices/unit_tests/test_status.py +14 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_synchrotron.py +10 -9
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_thawer.py +11 -7
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_undulator_dcm.py +11 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_utils.py +7 -7
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_webcam.py +5 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_xspress3.py +3 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_zebra.py +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_zocalo_interaction.py +5 -5
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_zocalo_results.py +45 -1
- dls_dodal-1.30.0/tests/devices/unit_tests/util/test_save_panda.py +144 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_beamline.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_beamline_all_devices_raise_exception.py +2 -2
- dls_dodal-1.30.0/tests/fake_beamline_broken_dependency.py +24 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_beamline_dependencies.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_beamline_disordered_dependencies.py +2 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_zocalo/README.rst +0 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_zocalo/__main__.py +2 -2
- dls_dodal-1.30.0/tests/plans/test_motor_util_plans.py +334 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/preprocessors/test_filesystem_metadata.py +5 -12
- dls_dodal-1.30.0/tests/test_cli.py +12 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/test_beamline_dcm_roll_converter.txt +1 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/test_beamline_parameters.txt +0 -1
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/test_det_dist_converter.txt +0 -2
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_utils.py +41 -0
- dls_dodal-1.30.0/tests/unit_tests/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/unit_tests/test_log.py +21 -4
- dls_dodal-1.29.4/.devcontainer/devcontainer.json +0 -54
- dls_dodal-1.29.4/.github/CONTRIBUTING.rst +0 -35
- dls_dodal-1.29.4/.github/actions/install_requirements/action.yml +0 -60
- dls_dodal-1.29.4/.github/workflows/code.yml +0 -159
- dls_dodal-1.29.4/.github/workflows/docs_clean.yml +0 -43
- dls_dodal-1.29.4/.github/workflows/linkcheck.yml +0 -29
- dls_dodal-1.29.4/.vscode/extensions.json +0 -10
- dls_dodal-1.29.4/Dockerfile +0 -25
- dls_dodal-1.29.4/README.rst +0 -61
- dls_dodal-1.29.4/docs/developer/explanations/decisions/0001-record-architecture-decisions.rst +0 -26
- dls_dodal-1.29.4/docs/developer/explanations/decisions/0002-switched-to-pip-skeleton.rst +0 -35
- dls_dodal-1.29.4/docs/developer/explanations/decisions.rst +0 -17
- dls_dodal-1.29.4/docs/developer/how-to/build-docs.rst +0 -38
- dls_dodal-1.29.4/docs/developer/how-to/contribute.rst +0 -1
- dls_dodal-1.29.4/docs/developer/how-to/lint.rst +0 -34
- dls_dodal-1.29.4/docs/developer/how-to/make-release.rst +0 -31
- dls_dodal-1.29.4/docs/developer/how-to/run-tests.rst +0 -12
- dls_dodal-1.29.4/docs/developer/how-to/static-analysis.rst +0 -8
- dls_dodal-1.29.4/docs/developer/how-to/update-tools.rst +0 -16
- dls_dodal-1.29.4/docs/developer/index.rst +0 -67
- dls_dodal-1.29.4/docs/developer/tutorials/dev-install.rst +0 -68
- dls_dodal-1.29.4/docs/genindex.rst +0 -5
- dls_dodal-1.29.4/docs/images/dls-favicon.ico +0 -0
- dls_dodal-1.29.4/docs/images/dls-logo.svg +0 -11
- dls_dodal-1.29.4/docs/index.rst +0 -29
- dls_dodal-1.29.4/docs/user/explanations/docs-structure.rst +0 -18
- dls_dodal-1.29.4/docs/user/index.rst +0 -56
- dls_dodal-1.29.4/docs/user/tutorials/installation.rst +0 -38
- dls_dodal-1.29.4/src/dls_dodal.egg-info/entry_points.txt +0 -2
- dls_dodal-1.29.4/src/dodal/__init__.py +0 -6
- dls_dodal-1.29.4/src/dodal/devices/CTAB.py +0 -36
- dls_dodal-1.29.4/src/dodal/devices/aperturescatterguard.py +0 -304
- dls_dodal-1.29.4/src/dodal/devices/cryostream.py +0 -9
- dls_dodal-1.29.4/src/dodal/devices/detector/__init__.py +0 -2
- dls_dodal-1.29.4/src/dodal/devices/detector/detector_motion.py +0 -37
- dls_dodal-1.29.4/src/dodal/devices/fluorescence_detector_motion.py +0 -9
- dls_dodal-1.29.4/src/dodal/devices/ipin.py +0 -8
- dls_dodal-1.29.4/src/dodal/devices/motors.py +0 -10
- dls_dodal-1.29.4/src/dodal/devices/qbpm1.py +0 -8
- dls_dodal-1.29.4/src/dodal/devices/scintillator.py +0 -7
- dls_dodal-1.29.4/src/dodal/devices/status.py +0 -41
- dls_dodal-1.29.4/tests/beamlines/unit_tests/test_i03.py +0 -36
- dls_dodal-1.29.4/tests/common/test_udc_directory_provider.py +0 -46
- dls_dodal-1.29.4/tests/devices/unit_tests/conftest.py +0 -56
- dls_dodal-1.29.4/tests/devices/unit_tests/test_status.py +0 -29
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/LICENSE +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.29.4/docs/developer → dls_dodal-1.30.0/docs}/how-to/move-code.rst +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/pull_request_template.md +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/setup.cfg +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/adsim.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i04_1.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/beamlines/i23.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/adsim.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/areadetector/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/attenuator.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/backlight.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/beamstop.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/dcm.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/aperture.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/dcm.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/dual_backlight.py +0 -0
- /dls_dodal-1.29.4/src/dodal/devices/i24/I24_detector_motion.py → /dls_dodal-1.30.0/src/dodal/devices/i24/i24_detector_motion.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/i24/i24_vgonio.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/oav_errors.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.29.4/src/dodal/devices/util → dls_dodal-1.30.0/src/dodal/devices/p99}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/scatterguard.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/synchrotron.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/undulator.py +0 -0
- {dls_dodal-1.29.4/tests → dls_dodal-1.30.0/src/dodal/devices/util}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/util/motor_utils.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/xspress3/xspress3.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/src/dodal/plans/check_topup.py +0 -0
- {dls_dodal-1.29.4/tests/beamlines → dls_dodal-1.30.0/tests}/__init__.py +0 -0
- {dls_dodal-1.29.4/tests/beamlines/unit_tests → dls_dodal-1.30.0/tests/beamlines}/__init__.py +0 -0
- {dls_dodal-1.29.4/tests/common → dls_dodal-1.30.0/tests/beamlines/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/beamlines/unit_tests/test_i24.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.29.4/tests/common/beamlines → dls_dodal-1.30.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.29.4/tests/devices → dls_dodal-1.30.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/common/beamlines/test_beamline_parameters.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/common/beamlines/test_device_helpers.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.29.4/tests/devices/i04 → dls_dodal-1.30.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.29.4/tests/devices/system_tests → dls_dodal-1.30.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/i22/test_metadataholder.py +0 -0
- {dls_dodal-1.29.4/tests/devices/unit_tests → dls_dodal-1.30.0/tests/devices/system_tests}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_gridscan_system.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_slit_gaps_system.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_smargon_system.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_synchrotron_system.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/system_tests/test_undulator_system.py +0 -0
- {dls_dodal-1.29.4/tests/devices/unit_tests/i24 → dls_dodal-1.30.0/tests/devices/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/areadetector/plugins/test_MJPG.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
- {dls_dodal-1.29.4/tests/devices/unit_tests/oav → dls_dodal-1.30.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
- {dls_dodal-1.29.4/tests/devices/unit_tests/util → dls_dodal-1.30.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/oav/test_oav.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_backlight.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_dcm.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_display.configuration +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_grid_overlay.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_gridscan.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_linkam3.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_shutter.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_tetramm.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_undulator.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
- {dls_dodal-1.29.4/tests/fake_zocalo → dls_dodal-1.30.0/tests/devices/unit_tests/util}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/devices/unit_tests/util/test_lookup_tables.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.29.4/tests/unit_tests → dls_dodal-1.30.0/tests/fake_zocalo}/__init__.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/plans/test_topup_plan.py +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.29.4 → dls_dodal-1.30.0}/tests/unit_tests/test_cli.py +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changes here will be overwritten by Copier
|
|
2
|
+
_commit: 2.2.0
|
|
3
|
+
_src_path: gh:DiamondLightSource/python-copier-template
|
|
4
|
+
author_email: dominic.oram@diamond.ac.uk
|
|
5
|
+
author_name: Dominic Oram
|
|
6
|
+
component_owner: group:data-acquisition
|
|
7
|
+
description: Ophyd devices and other utils that could be used across DLS beamlines
|
|
8
|
+
distribution_name: dls-dodal
|
|
9
|
+
docker: false
|
|
10
|
+
docs_type: sphinx
|
|
11
|
+
git_platform: github.com
|
|
12
|
+
github_org: DiamondLightSource
|
|
13
|
+
package_name: dodal
|
|
14
|
+
pypi: true
|
|
15
|
+
repo_name: dodal
|
|
16
|
+
type_checker: pyright
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// For format details, see https://containers.dev/implementors/json_reference/
|
|
2
|
+
{
|
|
3
|
+
"name": "Python 3 Developer Container",
|
|
4
|
+
"build": {
|
|
5
|
+
"dockerfile": "../Dockerfile",
|
|
6
|
+
"target": "developer"
|
|
7
|
+
},
|
|
8
|
+
"remoteEnv": {
|
|
9
|
+
// Allow X11 apps to run inside the container
|
|
10
|
+
"DISPLAY": "${localEnv:DISPLAY}"
|
|
11
|
+
},
|
|
12
|
+
"customizations": {
|
|
13
|
+
"vscode": {
|
|
14
|
+
// Set *default* container specific settings.json values on container create.
|
|
15
|
+
"settings": {
|
|
16
|
+
"python.defaultInterpreterPath": "/venv/bin/python"
|
|
17
|
+
},
|
|
18
|
+
// Add the IDs of extensions you want installed when the container is created.
|
|
19
|
+
"extensions": [
|
|
20
|
+
"ms-python.python",
|
|
21
|
+
"github.vscode-github-actions",
|
|
22
|
+
"tamasfe.even-better-toml",
|
|
23
|
+
"redhat.vscode-yaml",
|
|
24
|
+
"ryanluker.vscode-coverage-gutters",
|
|
25
|
+
"charliermarsh.ruff",
|
|
26
|
+
"ms-azuretools.vscode-docker"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"features": {
|
|
31
|
+
// Some default things like git config
|
|
32
|
+
"ghcr.io/devcontainers/features/common-utils:2": {
|
|
33
|
+
"upgradePackages": false
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"runArgs": [
|
|
37
|
+
// Allow the container to access the host X11 display and EPICS CA
|
|
38
|
+
"--net=host",
|
|
39
|
+
// Make sure SELinux does not disable with access to host filesystems like tmp
|
|
40
|
+
"--security-opt=label=disable"
|
|
41
|
+
],
|
|
42
|
+
// Mount the parent as /workspaces so we can pip install peers as editable
|
|
43
|
+
"workspaceMount": "source=${localWorkspaceFolder}/..,target=/workspaces,type=bind",
|
|
44
|
+
// After the container is created, install the python project in editable form
|
|
45
|
+
"postCreateCommand": "pip install $([ -f dev-requirements.txt ] && echo '-c dev-requirements.txt') -e '.[dev]' && pre-commit install"
|
|
46
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Contribute to the project
|
|
2
|
+
|
|
3
|
+
Contributions and issues are most welcome! All issues and pull requests are
|
|
4
|
+
handled through [GitHub](https://github.com/DiamondLightSource/dodal/issues). Also, please check for any existing issues before
|
|
5
|
+
filing a new one. If you have a great idea but it involves big changes, please
|
|
6
|
+
file a ticket before making a pull request! We want to make sure you don't spend
|
|
7
|
+
your time coding something that might not fit the scope of the project.
|
|
8
|
+
|
|
9
|
+
## Issue or Discussion?
|
|
10
|
+
|
|
11
|
+
Github also offers [discussions](https://github.com/DiamondLightSource/dodal/discussions) as a place to ask questions and share ideas. If
|
|
12
|
+
your issue is open ended and it is not obvious when it can be "closed", please
|
|
13
|
+
raise it as a discussion instead.
|
|
14
|
+
|
|
15
|
+
## Code Coverage
|
|
16
|
+
|
|
17
|
+
While 100% code coverage does not make a library bug-free, it significantly
|
|
18
|
+
reduces the number of easily caught bugs! Please make sure coverage remains the
|
|
19
|
+
same or is improved by a pull request!
|
|
20
|
+
|
|
21
|
+
## Developer Information
|
|
22
|
+
|
|
23
|
+
It is recommended that developers use a [vscode devcontainer](https://code.visualstudio.com/docs/devcontainers/containers). This repository contains configuration to set up a containerized development environment that suits its own needs.
|
|
24
|
+
|
|
25
|
+
This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.
|
|
26
|
+
|
|
27
|
+
For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/2.2.0/how-to.html).
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Install requirements
|
|
2
|
+
description: Install a version of python then call pip install and report what was installed
|
|
3
|
+
inputs:
|
|
4
|
+
python-version:
|
|
5
|
+
description: Python version to install, default is from Dockerfile
|
|
6
|
+
default: "dev"
|
|
7
|
+
pip-install:
|
|
8
|
+
description: Parameters to pass to pip install
|
|
9
|
+
default: "$([ -f dev-requirements.txt ] && echo '-c dev-requirements.txt') -e .[dev]"
|
|
10
|
+
|
|
11
|
+
runs:
|
|
12
|
+
using: composite
|
|
13
|
+
steps:
|
|
14
|
+
- name: Get version of python
|
|
15
|
+
run: |
|
|
16
|
+
PYTHON_VERSION="${{ inputs.python-version }}"
|
|
17
|
+
if [ $PYTHON_VERSION == "dev" ]; then
|
|
18
|
+
PYTHON_VERSION=$(sed -n "s/ARG PYTHON_VERSION=//p" Dockerfile)
|
|
19
|
+
fi
|
|
20
|
+
echo "PYTHON_VERSION=$PYTHON_VERSION" >> "$GITHUB_ENV"
|
|
21
|
+
shell: bash
|
|
22
|
+
|
|
23
|
+
- name: Setup python
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
27
|
+
|
|
28
|
+
- name: Install packages
|
|
29
|
+
run: pip install ${{ inputs.pip-install }}
|
|
30
|
+
shell: bash
|
|
31
|
+
|
|
32
|
+
- name: Report what was installed
|
|
33
|
+
run: pip freeze
|
|
34
|
+
shell: bash
|
|
@@ -10,11 +10,15 @@ updates:
|
|
|
10
10
|
schedule:
|
|
11
11
|
interval: "weekly"
|
|
12
12
|
groups:
|
|
13
|
-
|
|
13
|
+
actions:
|
|
14
14
|
patterns:
|
|
15
|
-
-
|
|
15
|
+
- "*"
|
|
16
16
|
|
|
17
17
|
- package-ecosystem: "pip"
|
|
18
18
|
directory: "/"
|
|
19
19
|
schedule:
|
|
20
20
|
interval: "weekly"
|
|
21
|
+
groups:
|
|
22
|
+
dev-dependencies:
|
|
23
|
+
patterns:
|
|
24
|
+
- "*"
|
|
@@ -3,28 +3,27 @@ import logging
|
|
|
3
3
|
from argparse import ArgumentParser
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from subprocess import CalledProcessError, check_output
|
|
6
|
-
from typing import List
|
|
7
6
|
|
|
8
7
|
|
|
9
|
-
def report_output(stdout: bytes, label: str) ->
|
|
8
|
+
def report_output(stdout: bytes, label: str) -> list[str]:
|
|
10
9
|
ret = stdout.decode().strip().split("\n")
|
|
11
10
|
print(f"{label}: {ret}")
|
|
12
11
|
return ret
|
|
13
12
|
|
|
14
13
|
|
|
15
|
-
def get_branch_contents(ref: str) ->
|
|
14
|
+
def get_branch_contents(ref: str) -> list[str]:
|
|
16
15
|
"""Get the list of directories in a branch."""
|
|
17
16
|
stdout = check_output(["git", "ls-tree", "-d", "--name-only", ref])
|
|
18
17
|
return report_output(stdout, "Branch contents")
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
def get_sorted_tags_list() ->
|
|
20
|
+
def get_sorted_tags_list() -> list[str]:
|
|
22
21
|
"""Get a list of sorted tags in descending order from the repository."""
|
|
23
22
|
stdout = check_output(["git", "tag", "-l", "--sort=-v:refname"])
|
|
24
23
|
return report_output(stdout, "Tags list")
|
|
25
24
|
|
|
26
25
|
|
|
27
|
-
def get_versions(ref: str, add: str | None
|
|
26
|
+
def get_versions(ref: str, add: str | None) -> list[str]:
|
|
28
27
|
"""Generate the file containing the list of all GitHub Pages builds."""
|
|
29
28
|
# Get the directories (i.e. builds) from the GitHub Pages branch
|
|
30
29
|
try:
|
|
@@ -36,15 +35,12 @@ def get_versions(ref: str, add: str | None, remove: str | None) -> List[str]:
|
|
|
36
35
|
# Add and remove from the list of builds
|
|
37
36
|
if add:
|
|
38
37
|
builds.add(add)
|
|
39
|
-
if remove:
|
|
40
|
-
assert remove in builds, f"Build '{remove}' not in {sorted(builds)}"
|
|
41
|
-
builds.remove(remove)
|
|
42
38
|
|
|
43
39
|
# Get a sorted list of tags
|
|
44
40
|
tags = get_sorted_tags_list()
|
|
45
41
|
|
|
46
42
|
# Make the sorted versions list from main branches and tags
|
|
47
|
-
versions:
|
|
43
|
+
versions: list[str] = []
|
|
48
44
|
for version in ["master", "main"] + tags:
|
|
49
45
|
if version in builds:
|
|
50
46
|
versions.append(version)
|
|
@@ -58,9 +54,12 @@ def get_versions(ref: str, add: str | None, remove: str | None) -> List[str]:
|
|
|
58
54
|
|
|
59
55
|
def write_json(path: Path, repository: str, versions: str):
|
|
60
56
|
org, repo_name = repository.split("/")
|
|
57
|
+
pages_url = f"https://{org}.github.io"
|
|
58
|
+
if repo_name != f"{org}.github.io":
|
|
59
|
+
# Only add the repo name if it isn't the source for the org pages site
|
|
60
|
+
pages_url += f"/{repo_name}"
|
|
61
61
|
struct = [
|
|
62
|
-
{"version": version, "url": f"
|
|
63
|
-
for version in versions
|
|
62
|
+
{"version": version, "url": f"{pages_url}/{version}/"} for version in versions
|
|
64
63
|
]
|
|
65
64
|
text = json.dumps(struct, indent=2)
|
|
66
65
|
print(f"JSON switcher:\n{text}")
|
|
@@ -69,16 +68,12 @@ def write_json(path: Path, repository: str, versions: str):
|
|
|
69
68
|
|
|
70
69
|
def main(args=None):
|
|
71
70
|
parser = ArgumentParser(
|
|
72
|
-
description="Make a versions.
|
|
71
|
+
description="Make a versions.json file from gh-pages directories"
|
|
73
72
|
)
|
|
74
73
|
parser.add_argument(
|
|
75
74
|
"--add",
|
|
76
75
|
help="Add this directory to the list of existing directories",
|
|
77
76
|
)
|
|
78
|
-
parser.add_argument(
|
|
79
|
-
"--remove",
|
|
80
|
-
help="Remove this directory from the list of existing directories",
|
|
81
|
-
)
|
|
82
77
|
parser.add_argument(
|
|
83
78
|
"repository",
|
|
84
79
|
help="The GitHub org and repository name: ORG/REPO",
|
|
@@ -91,7 +86,7 @@ def main(args=None):
|
|
|
91
86
|
args = parser.parse_args(args)
|
|
92
87
|
|
|
93
88
|
# Write the versions file
|
|
94
|
-
versions = get_versions("origin/gh-pages", args.add
|
|
89
|
+
versions = get_versions("origin/gh-pages", args.add)
|
|
95
90
|
write_json(args.output, args.repository, versions)
|
|
96
91
|
|
|
97
92
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
outputs:
|
|
4
|
+
branch-pr:
|
|
5
|
+
description: The PR number if the branch is in one
|
|
6
|
+
value: ${{ jobs.pr.outputs.branch-pr }}
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
pr:
|
|
10
|
+
runs-on: "ubuntu-latest"
|
|
11
|
+
outputs:
|
|
12
|
+
branch-pr: ${{ steps.script.outputs.result }}
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/github-script@v7
|
|
15
|
+
id: script
|
|
16
|
+
if: github.event_name == 'push'
|
|
17
|
+
with:
|
|
18
|
+
script: |
|
|
19
|
+
const prs = await github.rest.pulls.list({
|
|
20
|
+
owner: context.repo.owner,
|
|
21
|
+
repo: context.repo.repo,
|
|
22
|
+
head: context.repo.owner + ':${{ github.ref_name }}'
|
|
23
|
+
})
|
|
24
|
+
if (prs.data.length) {
|
|
25
|
+
console.log(`::notice ::Skipping CI on branch push as it is already run in PR #${prs.data[0]["number"]}`)
|
|
26
|
+
return prs.data[0]["number"]
|
|
27
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
build:
|
|
6
|
+
runs-on: "ubuntu-latest"
|
|
7
|
+
|
|
8
|
+
steps:
|
|
9
|
+
- name: Checkout
|
|
10
|
+
uses: actions/checkout@v4
|
|
11
|
+
with:
|
|
12
|
+
# Need this to get version number from last tag
|
|
13
|
+
fetch-depth: 0
|
|
14
|
+
|
|
15
|
+
- name: Build sdist and wheel
|
|
16
|
+
run: >
|
|
17
|
+
export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) &&
|
|
18
|
+
pipx run build
|
|
19
|
+
|
|
20
|
+
- name: Upload sdist and wheel as artifacts
|
|
21
|
+
uses: actions/upload-artifact@v4
|
|
22
|
+
with:
|
|
23
|
+
name: dist
|
|
24
|
+
path: dist
|
|
25
|
+
|
|
26
|
+
- name: Check for packaging errors
|
|
27
|
+
run: pipx run twine check --strict dist/*
|
|
28
|
+
|
|
29
|
+
- name: Install produced wheel
|
|
30
|
+
uses: ./.github/actions/install_requirements
|
|
31
|
+
with:
|
|
32
|
+
pip-install: dist/*.whl
|
|
33
|
+
|
|
34
|
+
- name: Test module --version works using the installed wheel
|
|
35
|
+
run: python -m dodal --version
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
name: Docs CI
|
|
2
|
-
|
|
3
1
|
on:
|
|
4
|
-
|
|
5
|
-
pull_request:
|
|
2
|
+
workflow_call:
|
|
6
3
|
|
|
7
4
|
jobs:
|
|
8
|
-
|
|
9
|
-
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository
|
|
5
|
+
build:
|
|
10
6
|
runs-on: ubuntu-latest
|
|
11
7
|
|
|
12
8
|
steps:
|
|
13
9
|
- name: Avoid git conflicts when tag and branch pushed at same time
|
|
14
|
-
if:
|
|
10
|
+
if: github.ref_type == 'tag'
|
|
15
11
|
run: sleep 60
|
|
16
12
|
|
|
17
13
|
- name: Checkout
|
|
@@ -21,20 +17,23 @@ jobs:
|
|
|
21
17
|
fetch-depth: 0
|
|
22
18
|
|
|
23
19
|
- name: Install system packages
|
|
24
|
-
# Can delete this if you don't use graphviz in your docs
|
|
25
20
|
run: sudo apt-get install graphviz
|
|
26
21
|
|
|
27
22
|
- name: Install python packages
|
|
28
23
|
uses: ./.github/actions/install_requirements
|
|
29
|
-
with:
|
|
30
|
-
requirements_file: requirements-dev-3.x.txt
|
|
31
|
-
install_options: -e .[dev]
|
|
32
|
-
python_version: "3.11"
|
|
33
|
-
artifact_name: docs
|
|
34
24
|
|
|
35
25
|
- name: Build docs
|
|
36
26
|
run: tox -e docs
|
|
37
27
|
|
|
28
|
+
- name: Remove environment.pickle
|
|
29
|
+
run: rm build/html/.doctrees/environment.pickle
|
|
30
|
+
|
|
31
|
+
- name: Upload built docs artifact
|
|
32
|
+
uses: actions/upload-artifact@v4
|
|
33
|
+
with:
|
|
34
|
+
name: docs
|
|
35
|
+
path: build
|
|
36
|
+
|
|
38
37
|
- name: Sanitize ref name for docs version
|
|
39
38
|
run: echo "DOCS_VERSION=${GITHUB_REF_NAME//[^A-Za-z0-9._-]/_}" >> $GITHUB_ENV
|
|
40
39
|
|
|
@@ -45,10 +44,10 @@ jobs:
|
|
|
45
44
|
run: python .github/pages/make_switcher.py --add $DOCS_VERSION ${{ github.repository }} .github/pages/switcher.json
|
|
46
45
|
|
|
47
46
|
- name: Publish Docs to gh-pages
|
|
48
|
-
if: github.
|
|
47
|
+
if: github.ref_type == 'tag' || github.ref_name == 'main'
|
|
49
48
|
# We pin to the SHA, not the tag, for security reasons.
|
|
50
49
|
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
|
|
51
|
-
uses: peaceiris/actions-gh-pages@
|
|
50
|
+
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0
|
|
52
51
|
with:
|
|
53
52
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
54
53
|
publish_dir: .github/pages
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
upload:
|
|
6
|
+
runs-on: ubuntu-latest
|
|
7
|
+
environment: release
|
|
8
|
+
|
|
9
|
+
steps:
|
|
10
|
+
- name: Download dist artifact
|
|
11
|
+
uses: actions/download-artifact@v4
|
|
12
|
+
with:
|
|
13
|
+
name: dist
|
|
14
|
+
path: dist
|
|
15
|
+
|
|
16
|
+
- name: Publish to PyPI using trusted publishing
|
|
17
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
artifacts:
|
|
6
|
+
runs-on: ubuntu-latest
|
|
7
|
+
|
|
8
|
+
steps:
|
|
9
|
+
- name: Download artifacts
|
|
10
|
+
uses: actions/download-artifact@v4
|
|
11
|
+
with:
|
|
12
|
+
merge-multiple: true
|
|
13
|
+
|
|
14
|
+
- name: Zip up docs
|
|
15
|
+
run: |
|
|
16
|
+
set -vxeuo pipefail
|
|
17
|
+
if [ -d html ]; then
|
|
18
|
+
mv html $GITHUB_REF_NAME
|
|
19
|
+
zip -r docs.zip $GITHUB_REF_NAME
|
|
20
|
+
rm -rf $GITHUB_REF_NAME
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
- name: Create GitHub Release
|
|
24
|
+
# We pin to the SHA, not the tag, for security reasons.
|
|
25
|
+
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
|
|
26
|
+
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
|
|
27
|
+
with:
|
|
28
|
+
prerelease: ${{ contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
|
|
29
|
+
files: "*"
|
|
30
|
+
generate_release_notes: true
|
|
31
|
+
env:
|
|
32
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
inputs:
|
|
4
|
+
python-version:
|
|
5
|
+
type: string
|
|
6
|
+
description: The version of python to install
|
|
7
|
+
required: true
|
|
8
|
+
runs-on:
|
|
9
|
+
type: string
|
|
10
|
+
description: The runner to run this job on
|
|
11
|
+
required: true
|
|
12
|
+
secrets:
|
|
13
|
+
CODECOV_TOKEN:
|
|
14
|
+
required: true
|
|
15
|
+
|
|
16
|
+
env:
|
|
17
|
+
# https://github.com/pytest-dev/pytest/issues/2042
|
|
18
|
+
PY_IGNORE_IMPORTMISMATCH: "1"
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
run:
|
|
22
|
+
runs-on: ${{ inputs.runs-on }}
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
with:
|
|
28
|
+
# Need this to get version number from last tag
|
|
29
|
+
fetch-depth: 0
|
|
30
|
+
|
|
31
|
+
- if: inputs.python-version == 'dev'
|
|
32
|
+
name: Install dev versions of python packages
|
|
33
|
+
uses: ./.github/actions/install_requirements
|
|
34
|
+
|
|
35
|
+
- if: inputs.python-version == 'dev'
|
|
36
|
+
name: Write the requirements as an artifact
|
|
37
|
+
run: pip freeze --exclude-editable > /tmp/dev-requirements.txt
|
|
38
|
+
|
|
39
|
+
- if: inputs.python-version == 'dev'
|
|
40
|
+
name: Upload dev-requirements.txt
|
|
41
|
+
uses: actions/upload-artifact@v4
|
|
42
|
+
with:
|
|
43
|
+
name: dev-requirements
|
|
44
|
+
path: /tmp/dev-requirements.txt
|
|
45
|
+
|
|
46
|
+
- if: inputs.python-version != 'dev'
|
|
47
|
+
name: Install latest versions of python packages
|
|
48
|
+
uses: ./.github/actions/install_requirements
|
|
49
|
+
with:
|
|
50
|
+
python-version: ${{ inputs.python-version }}
|
|
51
|
+
pip-install: ".[dev]"
|
|
52
|
+
|
|
53
|
+
- name: Run tests
|
|
54
|
+
run: tox -e tests
|
|
55
|
+
|
|
56
|
+
- name: Upload coverage to Codecov
|
|
57
|
+
uses: codecov/codecov-action@v4
|
|
58
|
+
with:
|
|
59
|
+
name: ${{ inputs.python-version }}/${{ inputs.runs-on }}
|
|
60
|
+
files: cov.xml
|
|
61
|
+
env:
|
|
62
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
inputs:
|
|
4
|
+
tox:
|
|
5
|
+
type: string
|
|
6
|
+
description: What to run under tox
|
|
7
|
+
required: true
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
run:
|
|
12
|
+
runs-on: "ubuntu-latest"
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
|
|
20
|
+
- name: Install python packages
|
|
21
|
+
uses: ./.github/actions/install_requirements
|
|
22
|
+
|
|
23
|
+
- name: Run tox
|
|
24
|
+
run: tox -e ${{ inputs.tox }}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
check:
|
|
9
|
+
uses: ./.github/workflows/_check.yml
|
|
10
|
+
|
|
11
|
+
lint:
|
|
12
|
+
needs: check
|
|
13
|
+
if: needs.check.outputs.branch-pr == ''
|
|
14
|
+
uses: ./.github/workflows/_tox.yml
|
|
15
|
+
with:
|
|
16
|
+
tox: pre-commit,type-checking
|
|
17
|
+
|
|
18
|
+
test:
|
|
19
|
+
needs: check
|
|
20
|
+
if: needs.check.outputs.branch-pr == ''
|
|
21
|
+
strategy:
|
|
22
|
+
matrix:
|
|
23
|
+
runs-on: ["ubuntu-latest"] # can add windows-latest, macos-latest
|
|
24
|
+
python-version: ["3.10", "3.11"] # add 3.12 when p4p #145 is fixed
|
|
25
|
+
include:
|
|
26
|
+
# Include one that runs in the dev environment
|
|
27
|
+
- runs-on: "ubuntu-latest"
|
|
28
|
+
python-version: "dev"
|
|
29
|
+
fail-fast: false
|
|
30
|
+
uses: ./.github/workflows/_test.yml
|
|
31
|
+
with:
|
|
32
|
+
runs-on: ${{ matrix.runs-on }}
|
|
33
|
+
python-version: ${{ matrix.python-version }}
|
|
34
|
+
secrets:
|
|
35
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
36
|
+
|
|
37
|
+
docs:
|
|
38
|
+
needs: check
|
|
39
|
+
if: needs.check.outputs.branch-pr == ''
|
|
40
|
+
uses: ./.github/workflows/_docs.yml
|
|
41
|
+
|
|
42
|
+
dist:
|
|
43
|
+
needs: check
|
|
44
|
+
if: needs.check.outputs.branch-pr == ''
|
|
45
|
+
uses: ./.github/workflows/_dist.yml
|
|
46
|
+
|
|
47
|
+
pypi:
|
|
48
|
+
if: github.ref_type == 'tag'
|
|
49
|
+
needs: dist
|
|
50
|
+
uses: ./.github/workflows/_pypi.yml
|
|
51
|
+
permissions:
|
|
52
|
+
id-token: write
|
|
53
|
+
|
|
54
|
+
release:
|
|
55
|
+
if: github.ref_type == 'tag'
|
|
56
|
+
needs: [dist, docs]
|
|
57
|
+
uses: ./.github/workflows/_release.yml
|
|
58
|
+
permissions:
|
|
59
|
+
contents: write
|
|
@@ -8,7 +8,6 @@ __pycache__/
|
|
|
8
8
|
# Distribution / packaging
|
|
9
9
|
.Python
|
|
10
10
|
env/
|
|
11
|
-
.venv
|
|
12
11
|
build/
|
|
13
12
|
develop-eggs/
|
|
14
13
|
dist/
|
|
@@ -57,7 +56,7 @@ tmp/
|
|
|
57
56
|
|
|
58
57
|
# Sphinx documentation
|
|
59
58
|
docs/_build/
|
|
60
|
-
docs/
|
|
59
|
+
docs/reference/generated/
|
|
61
60
|
|
|
62
61
|
# PyBuilder
|
|
63
62
|
target/
|
|
@@ -71,3 +70,6 @@ lockfiles/
|
|
|
71
70
|
|
|
72
71
|
# ruff cache
|
|
73
72
|
.ruff_cache/
|
|
73
|
+
|
|
74
|
+
# pycharm project files
|
|
75
|
+
.idea/
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"configurations": [
|
|
7
7
|
{
|
|
8
8
|
"name": "Debug Unit Test",
|
|
9
|
-
"type": "
|
|
9
|
+
"type": "debugpy",
|
|
10
10
|
"request": "launch",
|
|
11
11
|
"justMyCode": false,
|
|
12
12
|
"program": "${file}",
|
|
@@ -16,10 +16,9 @@
|
|
|
16
16
|
"console": "integratedTerminal",
|
|
17
17
|
"preLaunchTask": "load_dials_env",
|
|
18
18
|
"env": {
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"PYTEST_ADDOPTS": "--no-cov"
|
|
19
|
+
// Enable break on exception when debugging tests (see: tests/conftest.py)
|
|
20
|
+
"PYTEST_RAISE": "1",
|
|
21
|
+
"PYTEST_ADDOPTS": "--no-cov -vv"
|
|
23
22
|
},
|
|
24
23
|
}
|
|
25
24
|
]
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"python.testing.pytestArgs": [],
|
|
3
2
|
"python.testing.unittestEnabled": false,
|
|
4
3
|
"python.testing.pytestEnabled": true,
|
|
5
4
|
"editor.formatOnSave": true,
|
|
5
|
+
"editor.codeActionsOnSave": {
|
|
6
|
+
"source.organizeImports": "explicit"
|
|
7
|
+
},
|
|
8
|
+
"files.insertFinalNewline": true,
|
|
6
9
|
"[python]": {
|
|
10
|
+
"editor.defaultFormatter": "charliermarsh.ruff",
|
|
7
11
|
"editor.rulers": [
|
|
8
12
|
88
|
|
9
13
|
],
|
|
@@ -15,5 +19,5 @@
|
|
|
15
19
|
"python.analysis.extraPaths": [
|
|
16
20
|
"./src"
|
|
17
21
|
],
|
|
18
|
-
"python.analysis.typeCheckingMode": "basic"
|
|
19
|
-
}
|
|
22
|
+
"python.analysis.typeCheckingMode": "basic"
|
|
23
|
+
}
|