From 892745e817df1668959ca5851f2c99fef8db0ede Mon Sep 17 00:00:00 2001 From: bruno-f-cruz Date: Sun, 3 Nov 2024 18:57:14 +0000 Subject: [PATCH] deploy: d53c1435c682ea4ee52b7ca73a106397306b4be4 --- .buildinfo | 4 + ...ment_launcher.apps.app_service.App.doctree | Bin 0 -> 12876 bytes ...auncher.apps.app_service.BonsaiApp.doctree | Bin 0 -> 57648 bytes ...periment_launcher.apps.app_service.doctree | Bin 0 -> 6754 bytes ..._behavior_experiment_launcher.apps.doctree | Bin 0 -> 5613 bytes ...ta_schema.AindDataSchemaDataMapper.doctree | Bin 0 -> 18851 bytes ...schema.AindDataSchemaRigDataMapper.doctree | Bin 0 -> 17929 bytes ...ma.AindDataSchemaSessionDataMapper.doctree | Bin 0 -> 18141 bytes ...cher.data_mappers.aind_data_schema.doctree | Bin 0 -> 8602 bytes ...a_mapper_service.DataMapperService.doctree | Bin 0 -> 15599 bytes ...r.data_mappers.data_mapper_service.doctree | Bin 0 -> 12177 bytes ...rs.data_mapper_service.get_cameras.doctree | Bin 0 -> 8946 bytes ..._mapper_service.get_fields_of_type.doctree | Bin 0 -> 13192 bytes ...ervice.snapshot_bonsai_environment.doctree | Bin 0 -> 7698 bytes ...ervice.snapshot_python_environment.doctree | Bin 0 -> 6344 bytes ...r_experiment_launcher.data_mappers.doctree | Bin 0 -> 7130 bytes ...ansfer_service.DataTransferService.doctree | Bin 0 -> 12890 bytes ...ata_transfer.data_transfer_service.doctree | Bin 0 -> 6055 bytes ..._experiment_launcher.data_transfer.doctree | Bin 0 -> 8489 bytes ...r.robocopy_service.RobocopyService.doctree | Bin 0 -> 28467 bytes ...her.data_transfer.robocopy_service.doctree | Bin 0 -> 6034 bytes ...ervice.WatchdogDataTransferService.doctree | Bin 0 -> 77270 bytes ...her.data_transfer.watchdog_service.doctree | Bin 0 -> 6090 bytes .../aind_behavior_experiment_launcher.doctree | Bin 0 -> 14602 bytes ...ent_launcher.launcher.BaseLauncher.doctree | Bin 0 -> 62821 bytes ...behavior_launcher.BehaviorLauncher.doctree | Bin 0 -> 31680 bytes ...her.BehaviorServicesFactoryManager.doctree | Bin 0 -> 36554 bytes ...auncher.launcher.behavior_launcher.doctree | Bin 0 -> 10915 bytes ...her.robocopy_data_transfer_factory.doctree | Bin 0 -> 8098 bytes ...her.watchdog_data_transfer_factory.doctree | Bin 0 -> 11558 bytes ...avior_experiment_launcher.launcher.doctree | Bin 0 -> 7842 bytes ...her.logging_helper.add_file_logger.doctree | Bin 0 -> 6878 bytes ...logging_helper.close_file_handlers.doctree | Bin 0 -> 6245 bytes ...experiment_launcher.logging_helper.doctree | Bin 0 -> 8028 bytes ...her.logging_helper.shutdown_logger.doctree | Bin 0 -> 6041 bytes ...havior_experiment_launcher.records.doctree | Bin 0 -> 5644 bytes ...xperiment_launcher.records.subject.doctree | Bin 0 -> 3205 bytes ...periment_launcher.resource_monitor.doctree | Bin 0 -> 5971 bytes ...esource_monitor_service.Constraint.doctree | Bin 0 -> 21273 bytes ...ce_monitor_service.ResourceMonitor.doctree | Bin 0 -> 21782 bytes ...ailable_storage_constraint_factory.doctree | Bin 0 -> 8341 bytes ...e_monitor.resource_monitor_service.doctree | Bin 0 -> 11380 bytes ...mote_dir_exists_constraint_factory.doctree | Bin 0 -> 6809 bytes ...eriment_launcher.services.IService.doctree | Bin 0 -> 9439 bytes ...t_launcher.services.ServiceFactory.doctree | Bin 0 -> 20104 bytes ...er.services.ServicesFactoryManager.doctree | Bin 0 -> 24141 bytes ...avior_experiment_launcher.services.doctree | Bin 0 -> 8147 bytes ...riment_launcher.ui_helper.UIHelper.doctree | Bin 0 -> 18609 bytes ...vior_experiment_launcher.ui_helper.doctree | Bin 0 -> 7764 bytes ....ui_helper.prompt_field_from_input.doctree | Bin 0 -> 8977 bytes .doctrees/articles.doctree | Bin 0 -> 2804 bytes .doctrees/environment.pickle | Bin 0 -> 1002852 bytes .doctrees/index.doctree | Bin 0 -> 16175 bytes .nojekyll | 0 ...eriment_launcher.apps.app_service.App.html | 447 +++++++++ ...t_launcher.apps.app_service.BonsaiApp.html | 493 ++++++++++ ..._experiment_launcher.apps.app_service.html | 408 ++++++++ ...ind_behavior_experiment_launcher.apps.html | 405 ++++++++ ..._data_schema.AindDataSchemaDataMapper.html | 460 +++++++++ ...ta_schema.AindDataSchemaRigDataMapper.html | 460 +++++++++ ...chema.AindDataSchemaSessionDataMapper.html | 460 +++++++++ ...auncher.data_mappers.aind_data_schema.html | 411 ++++++++ ...data_mapper_service.DataMapperService.html | 454 +++++++++ ...ppers.data_mapper_service.get_cameras.html | 419 ++++++++ ...ata_mapper_service.get_fields_of_type.html | 419 ++++++++ ...cher.data_mappers.data_mapper_service.html | 424 ++++++++ ...r_service.snapshot_bonsai_environment.html | 419 ++++++++ ...r_service.snapshot_python_environment.html | 419 ++++++++ ...vior_experiment_launcher.data_mappers.html | 408 ++++++++ ..._transfer_service.DataTransferService.html | 444 +++++++++ ...r.data_transfer.data_transfer_service.html | 405 ++++++++ ...ior_experiment_launcher.data_transfer.html | 411 ++++++++ ...sfer.robocopy_service.RobocopyService.html | 444 +++++++++ ...uncher.data_transfer.robocopy_service.html | 405 ++++++++ ...g_service.WatchdogDataTransferService.html | 486 +++++++++ ...uncher.data_transfer.watchdog_service.html | 405 ++++++++ .../aind_behavior_experiment_launcher.html | 429 ++++++++ ...riment_launcher.launcher.BaseLauncher.html | 488 +++++++++ ...er.behavior_launcher.BehaviorLauncher.html | 488 +++++++++ ...uncher.BehaviorServicesFactoryManager.html | 493 ++++++++++ ...t_launcher.launcher.behavior_launcher.html | 421 ++++++++ ...uncher.robocopy_data_transfer_factory.html | 419 ++++++++ ...uncher.watchdog_data_transfer_factory.html | 419 ++++++++ ...behavior_experiment_launcher.launcher.html | 415 ++++++++ ...uncher.logging_helper.add_file_logger.html | 419 ++++++++ ...er.logging_helper.close_file_handlers.html | 419 ++++++++ ...or_experiment_launcher.logging_helper.html | 411 ++++++++ ...uncher.logging_helper.shutdown_logger.html | 419 ++++++++ ..._behavior_experiment_launcher.records.html | 405 ++++++++ ...r_experiment_launcher.records.subject.html | 395 ++++++++ ..._experiment_launcher.resource_monitor.html | 405 ++++++++ ...r.resource_monitor_service.Constraint.html | 463 +++++++++ ...ource_monitor_service.ResourceMonitor.html | 450 +++++++++ ....available_storage_constraint_factory.html | 419 ++++++++ ...urce_monitor.resource_monitor_service.html | 421 ++++++++ ....remote_dir_exists_constraint_factory.html | 419 ++++++++ ...experiment_launcher.services.IService.html | 439 +++++++++ ...ment_launcher.services.ServiceFactory.html | 455 +++++++++ ...ncher.services.ServicesFactoryManager.html | 469 +++++++++ ...behavior_experiment_launcher.services.html | 411 ++++++++ ...xperiment_launcher.ui_helper.UIHelper.html | 466 +++++++++ ...ehavior_experiment_launcher.ui_helper.html | 415 ++++++++ ...her.ui_helper.prompt_field_from_input.html | 419 ++++++++ ...ment_launcher.apps.app_service.App.rst.txt | 28 + ...auncher.apps.app_service.BonsaiApp.rst.txt | 46 + ...periment_launcher.apps.app_service.rst.txt | 32 + ..._behavior_experiment_launcher.apps.rst.txt | 32 + ...ta_schema.AindDataSchemaDataMapper.rst.txt | 35 + ...schema.AindDataSchemaRigDataMapper.rst.txt | 35 + ...ma.AindDataSchemaSessionDataMapper.rst.txt | 35 + ...cher.data_mappers.aind_data_schema.rst.txt | 33 + ...a_mapper_service.DataMapperService.rst.txt | 33 + ...rs.data_mapper_service.get_cameras.rst.txt | 6 + ..._mapper_service.get_fields_of_type.rst.txt | 6 + ...r.data_mappers.data_mapper_service.rst.txt | 41 + ...ervice.snapshot_bonsai_environment.rst.txt | 6 + ...ervice.snapshot_python_environment.rst.txt | 6 + ...r_experiment_launcher.data_mappers.rst.txt | 33 + ...ansfer_service.DataTransferService.rst.txt | 27 + ...ata_transfer.data_transfer_service.rst.txt | 31 + ...r.robocopy_service.RobocopyService.rst.txt | 27 + ...her.data_transfer.robocopy_service.rst.txt | 31 + ..._experiment_launcher.data_transfer.rst.txt | 34 + ...ervice.WatchdogDataTransferService.rst.txt | 39 + ...her.data_transfer.watchdog_service.rst.txt | 31 + ...ent_launcher.launcher.BaseLauncher.rst.txt | 42 + ...behavior_launcher.BehaviorLauncher.rst.txt | 42 + ...her.BehaviorServicesFactoryManager.rst.txt | 46 + ...her.robocopy_data_transfer_factory.rst.txt | 6 + ...auncher.launcher.behavior_launcher.rst.txt | 40 + ...her.watchdog_data_transfer_factory.rst.txt | 6 + ...avior_experiment_launcher.launcher.rst.txt | 40 + ...her.logging_helper.add_file_logger.rst.txt | 6 + ...logging_helper.close_file_handlers.rst.txt | 6 + ...experiment_launcher.logging_helper.rst.txt | 32 + ...her.logging_helper.shutdown_logger.rst.txt | 6 + ...havior_experiment_launcher.records.rst.txt | 32 + ...xperiment_launcher.records.subject.rst.txt | 23 + ...esource_monitor_service.Constraint.rst.txt | 36 + ...ce_monitor_service.ResourceMonitor.rst.txt | 29 + ...ailable_storage_constraint_factory.rst.txt | 6 + ...mote_dir_exists_constraint_factory.rst.txt | 6 + ...e_monitor.resource_monitor_service.rst.txt | 40 + ...periment_launcher.resource_monitor.rst.txt | 32 + .../aind_behavior_experiment_launcher.rst.txt | 40 + ...eriment_launcher.services.IService.rst.txt | 25 + ...t_launcher.services.ServiceFactory.rst.txt | 32 + ...er.services.ServicesFactoryManager.rst.txt | 38 + ...avior_experiment_launcher.services.rst.txt | 33 + ...riment_launcher.ui_helper.UIHelper.rst.txt | 37 + ....ui_helper.prompt_field_from_input.rst.txt | 6 + ...vior_experiment_launcher.ui_helper.rst.txt | 38 + _sources/articles.rst.txt | 8 + _sources/index.rst.txt | 35 + _static/autodoc_pydantic.css | 11 + _static/basic.css | 925 ++++++++++++++++++ _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 ++ _static/copybutton.js | 248 +++++ _static/copybutton_funcs.js | 73 ++ _static/dark-logo.svg | 129 +++ _static/debug.css | 69 ++ _static/doctools.js | 156 +++ _static/documentation_options.js | 13 + _static/favicon.ico | Bin 0 -> 259838 bytes _static/file.png | Bin 0 -> 286 bytes _static/language_data.js | 199 ++++ _static/light-logo.svg | 128 +++ _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 258 +++++ _static/scripts/furo-extensions.js | 0 _static/scripts/furo.js | 3 + _static/scripts/furo.js.LICENSE.txt | 7 + _static/scripts/furo.js.map | 1 + _static/searchtools.js | 574 +++++++++++ _static/skeleton.css | 296 ++++++ _static/sphinx_highlight.js | 154 +++ _static/styles/furo-extensions.css | 2 + _static/styles/furo-extensions.css.map | 1 + _static/styles/furo.css | 2 + _static/styles/furo.css.map | 1 + articles.html | 389 ++++++++ genindex.html | 783 +++++++++++++++ index.html | 555 +++++++++++ objects.inv | Bin 0 -> 1798 bytes py-modindex.html | 494 ++++++++++ search.html | 382 ++++++++ searchindex.js | 1 + 191 files changed, 28560 insertions(+) create mode 100644 .buildinfo create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.apps.app_service.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.apps.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.records.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.records.subject.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.services.IService.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.services.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.doctree create mode 100644 .doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.doctree create mode 100644 .doctrees/articles.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/index.doctree create mode 100644 .nojekyll create mode 100644 _autosummary/aind_behavior_experiment_launcher.apps.app_service.App.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.apps.app_service.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.apps.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_mappers.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.launcher.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.logging_helper.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.records.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.records.subject.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.resource_monitor.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.services.IService.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.services.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.ui_helper.html create mode 100644 _autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.html create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.apps.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.launcher.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.records.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.records.subject.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.services.IService.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.services.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.rst.txt create mode 100644 _sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.rst.txt create mode 100644 _sources/articles.rst.txt create mode 100644 _sources/index.rst.txt create mode 100644 _static/autodoc_pydantic.css create mode 100644 _static/basic.css create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js create mode 100644 _static/dark-logo.svg create mode 100644 _static/debug.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/favicon.ico create mode 100644 _static/file.png create mode 100644 _static/language_data.js create mode 100644 _static/light-logo.svg create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/scripts/furo-extensions.js create mode 100644 _static/scripts/furo.js create mode 100644 _static/scripts/furo.js.LICENSE.txt create mode 100644 _static/scripts/furo.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/skeleton.css create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/furo-extensions.css create mode 100644 _static/styles/furo-extensions.css.map create mode 100644 _static/styles/furo.css create mode 100644 _static/styles/furo.css.map create mode 100644 articles.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..f68509e --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 3b516d57ebcc3a46f8e8081883f8af76 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0c1780db814e44313f1c02fcbdd498dbefd544b3 GIT binary patch literal 12876 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 D*-tLj literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.apps.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.apps.doctree new file mode 100644 index 0000000000000000000000000000000000000000..72fa3c369a6bd8538b5c2dc72ff49524001ae40e GIT binary patch literal 5613 zcmdT|-EJI76?S6JjA#6xU0aJ1FIl18bwp+cvRtf;75>BxVdny&6#_@SHQhB+ZFhI| zR#)3&ts;R?P>gB;kwQXfh2WZZ;DSfs5qJ^!PIdQ8dltt|BoK@=_SC7WQ&p$F^PO|* zr;XqJV|&4U%tn@qFq!mN5F|3-nKjFS^z)b}+CI1UerBK8J=0d~G?TgVxit$I;fpW| z6i@79Yu0JF4x_AB&TnPh*P%?N(?vrxMeDKM6K&Jbp^kX1%iLpO5*&I%F4##Z)uG2H zDOVwF;LwX$p7?^R9!t~Ak`m}x`XQgt=8CBc)2R!!sS9&cpW5Oi&6Hu^+KMgH_NE6F zi>6tgZ(x?9FyVHP51HvOtyMV8HS9umSPX-V&fM}NmSqs)cOzkO@oPEA(^+H4{A0yO zG$uDK&BoMa#fG>oR>d8$D0aP zLuGxBYBtOxraWIp zUY7Fu2Cg#Vk{fR}4}bK@SD$?H;7Rr0(sF~@a^}zfYslGu@4@~-4Rj9yC0v8qDd`0s z+pBe3vsG((Fxf>?c)x?s^-w_6;ALE$gg)M4&73WTRH*|l7c!b?z2g{DT{;Vxo9US~&Gf8`3$eV;u7ry}0$6`Q zP`VsRP1q6aZ_RtJK>rp&o~Fk*rWJoNEwuDmih#dJ+c7I>BQi&!A8Px|b)Pbo*mKhc zgbLoa=AG*q2`L07xgcr>Zeh*Tm}~n=RwnEG9^v%=f)pR!z&%IjZ9PMW*qs(_XRh$A1 zcj5Rk=9Y<^_(_p-9GZ>V!k&gNRw?u}4lE!Sl)hHHo&;Z&7p#VfALRibg;9}ee&ZE9 zydEemt0!!Oqc?6WEc^n(<(N$Zo+6rk@1OXXrEw&OaM6~}QkT;YOb4~VEZ4&w9Iaro zxP7#Ye=oA-(Gmt6HE0wjHQl5+3(hWmPaG6v(ya=E?yN58R%Jogl?A*?Mz2jjtV&x6 zLLFS>V&Q)-jY9(bB9blZ1aaTIt`$qNh>>BuRLL>mQPc?yEj6OZqXpBc#_#~moYuQx z*8N;j72-{6j@3$1)E;Iz<60v&q8!_r)>k7X6OEXOAn_rKav-5Xmubper@6KRu>n3E zbJP<|OGV@wFjOy^#VHyq#eyDIIYzTnHggrBwFX>zRJBkqQshs~t&x;Ek($@Uk8YSX zD)5p#_9i2#VhhQ7hTK0z#v4=FmO4buqtFdt*Nb&5rlOF%DYF(hpm-sf~2M62~Mfpt8d z_>wXX#JXIMy6<O+(_+o;T+f_}qYr^~ zvtH<(?V*}|=VHg)WV1nT&8uSR@R9QgFz`il$j7rt)SYb29|6)`C2yY`O#=4C@3TaHkRm)*YA)CvmW* z>z|3zjOT&$K$sY{32&7d_v$kpN__2|gjraCbHfY5jB9aD#?D_%~gO7_Z z{0&xiCdBMxluzgG;m5t^lss?_^hiHUM!-Nt47Z3XvV1rQn1!m$Q z58%RQ*n;3l2hYv6k5R`SM_L+rc%veUb=%%5Uzq^bXjBl|xmo1N3BBBy<$_M&zknj1 zGD0|qMwv-TrhB#7!lnQ%jh8EsHzF$$x4CseTD;{z3~i%ngR*RT27( z@Fz2E5>xI>gIvdXCf>rsiR(wmJD}HzGUKf%e3~FkQ?Ub9#kDG0;Z-I>rfr{50R4;t z=&t$ef8r$|Q~uSjMtusteGj+*Gkb82eOy10Wiq}iN7sGxDKlA@N#(=btkps7th|Pb zqlmGvd?6w3s>T)9S(lK*IVqeV9^w_|!qC^}gwxUO3&Yygs!r3b3;Gd;l%}}1J+G_m zLEHzk`Z6cpMD2uxH39$uH3an5cS`wlz~ia?0ayaHIrs+8h#CB%Sa3?P7sM-5v4i$X XnHR#9#`G512`C1XbV(^qKJ5JqFE@g| literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..487380a5d3b1e43cb9c6b2b1dd394c9d8d9e3f39 GIT binary patch literal 18851 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e86c4a688c978dda08dc0f85ee8a48670087ccf1 GIT binary patch literal 17929 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 Uq^C&;Fl`X*B?v(qInuEI0~^##TL1t6 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2ab4eec1e3604dbdb45e63cb02f7425fcc49565 GIT binary patch literal 8602 zcmds7?~fZt8Fuc@_TA-vrcG2SNt+0@y@=X|svpo11xj0rn$#a!R8{n%?RaOI* zb~b0LiUg{HaxkTW3=$wj`3eOg@dXJ9TKE@0;!ofM5>h`P#3y)WcGuqZ#lEz65ws^c z_WXKh_MPW_X7+jWjp`5HzF0ATay^ci8w{Gnae~mHv672UXeT}mgu0_HeN)|3TXKn$ zy*Ny`O_i*mhs|8i;WSX!m0Z)^h3m!5YG@Mmgjn%KKEw&`9!WAAZG|A_P z8#p^whca@*4f&2m2NC72Ucip!ktDDgTqjS17hAm#mS4*u1P|erd}E&kd+*CmkY} zi4ffFBm(}_{+oB5So^AOdnArgiQm>tP9f9O^U6vvuuT( zWAp61{CSIoK5g+N2q$I0cTFC{Uk_iMOFFC~t1w0fg^f=!!5)Es*hTE!r|@|cpU3gJqHlL#);oiX`mQtTEo8HhUN_02*sN>2TLB zJhiMplR>}$_RP4PAq`f(m~L}wg-rF3p7hFiQuYLVy=i>CAxJ0j2)FFev*L&r7jT%{ z7fgS-vGeL1pS}6UlQ;8krKf9;r<1??*nn{R$)~n27l3^QsKoxrGa2=PF`9*DB{vHt z3%)E9R(BbHI^LcIQM_!}NB?@!aMRYMgRL*Qz1baJrg03yEO*Kotvb1YYzKiZ(c@tf z70@;2**doVL+<<{hU~eHVCw3!-fSP6-3Ok6^bp8dd@3GsEQ}0%t!O~AekXK>cU|Z_ z5BKicP}T8&a15eq30zEioJ6cJP`2KGeJBDHI5{1o8&F^CVzJ;DRE57Z5}(?dhaFB}m_xI)32xeTbbS&<;TM}?BF9?|kth#LO> zAubOeZ{EIo0>DvVr89DF>rw%dst8Fs6;>L1-)HC9pKw@eQ*Y10pziz@I(-}SeRqNd z?@W}Z-DA=T&$2(?<3zKUejBT~h1KkrXWyE>Jh?xGaZ0DsaZ_W-_yjxtC|~|YrTo-Na0X-Ngx{ksUeGMjC&U)%!;{&N;CaDhxoko~sETmAVHmCC(S z7yCW?1ADK{-j}Z(FT0eTqLKayA(#*DLNFf`cY1b|f?)cmu|*lj{A1P@=N$9*qjOCE zG0b_7bIpE$k3ciun?f@O?zYDr&j%)$N;lv6KU(4h?et&JaM2RR8Tm+=c@8|^n0@-! z^eCeV-0fxYo(QP_l|w)?je}mnxR1g?*70)CLHB%ec&PuZ*_+9`j;Stg`|M!WY{WEB z%#El2^dbA55mNt3I`~i|v+Q_B$##m`@-4#YtI$T$}M*U)mTyT{6x!yiT;T>TvygoyW=(FqtBHaCI-t5{R}`^%-|x= zkol@df?h&;6drd#?sLe7$p<*KL+)4zcwhw6==?=n*6c9o;xXY7*8xhw!vn=?a!s?n zHLj9#E`YV_Bz|O#zz4^g3KzKJ0l~@Dmg}a*z*=wrxGIWi;)E6s9rW5je1|c$iX#n5 zY+>DSV>booy5+dB*0}K?*(&RKP$0lo@GvpLz(g2~u4dh={49}Y^e;?;qs>Gi4YV}} zTYeJ6hOJ7Afas=I_#P%(!ZiR<&g`D!w% z84v6OJ)!LeU0@(5hEtj<;-oXt&-FEUy^y5QsI!;53YhUb)IkUju>?jTN$$(jHhS$^ z$g;XPV;v-ZO%C(6+{`k)0ISzc32k4_)8K~Ag385|P7uFVA0o}x+ z04;&+F~}RY6HVOmRH-)2i=rCVx}$=YMRZCP^>tmD{_g)(ABTUzKe1fW)mqrqolL`i z%q}9=Xxec|Ue@WkOm)pEe00egiFubve&FS&6%v^-WMFk$AGyziR3NGT?S7=fVs0Ov zfo*BX<{8+uyQxW!YlO-+;GoGf=v@fAM^2k&f`+-aCY?mC7SV6EV->o2dKhDi(i%;2 zdB1eui#0kjO)a9u?;u}U>iXbB<*4^ksoPRMtFd&dWFO}h7y5uaJ!vaz!36;nY=?;^ zSY!b3cHjZ2z$8xo`ZHPm9pLDedI@xb>=TFyx%(IalukHe;!^d=QMHMIli4L4G1t@o S0btqDhegJ#`tFl-n*Rl_;_BG| literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.doctree new file mode 100644 index 0000000000000000000000000000000000000000..176aa6f7b91821398183858bc3f39bf0c3f61b53 GIT binary patch literal 15599 zcmeHOYiwLc6?XhsdmYD)lg0w_U{Qc$~?Z z_YvEm@K6NQVgQw1pn?{JkU&DJ#7`t7$`1+^P*KW1KnM^ZM0vj?e!+KU?qlxm-gOe& zMFb*cedl#%=FB>+Ok5Bn+W;*LNz1ei!rr}3?tm!twmf-}^BhktC zM^~aMFMIl$?}lE(i1+|%G?-~OJ;RAEMSPN~2d3@U;`XDy(Fjb}Nt?3~R$`-!#CO(&`4&FPpBnq#5gN!!v0BOPZ~RPJ_r0l2@g+4$cG- zo91OLWhEQprI>?@eAqS}BU%jWIv>}Az%%P%0L~Mqhs>r=TpexLy6+G6SOu@D)SZ_Kj5Ie4Q$w;LtI9)NF%Jye* zGU6AuPo=HoACIMad+UXub*22tqHXcL%#zQ9UUX zhT2VucDm!Zf!?9Z{ML)7j|Whw`N|2wx)WzkRZb`UXntF781t31O6A0vGguO#{xf_; zw1{F|!BiHcpr%tv2P_FGlj3_SQlDq&E2D6)N8ex^1Mi_;L%>a;=#yfDry9MuUy;^E;pm$(rv7txRg%VyUU}y-=80EWDTx-$&CEax2n? zDp1T~t0Wk$OfZ-Y(2|TP3&wPEWx7l8k~#J$$wvJCej^^E5zFC@QK!WteQ(c^4!e%M zp)6gDu4Pz$W7z;FVEMC!O-oCrBTQLW(F`BED9zoaSXI&O<9@wEKlfcWjkN~09kU>_ z+O4afL90h$CX01-%ya_7b96h}j&(F=Rm;npxwT9c8J8Rp9vuK2# zZr{EE_L#6?XSXtifoB+VElBYkDdx^-rT~&pVq%Z`Nq=vl1U$4sBb=9J|WLwZLs? z*aZcC#GYbTKNw*nL|JhK(wFn>sMHfo>NXN=1xOk$mQ>k&s@umh$m%Pe-e!t8^5@R! z*ecCe=7D=+O!E)EXX^>Z+eW{3XS`i}@Kl~cy-_=R?tDjXu+avn*4|=ZLuED|T&i58 zUcv2a>QhB-v5W2823^1g_JaFhW-&+OxhWR!ITZ5D83W zK5CoLGANm%=sy*kYbbicK4pZzP)C^8-YOp!!{meQ4KlAAvr>w3f=VLtGl<4d`l<-& zJIq|f^4pi1Q8)g73q6%xe=isvp`H1z7Jw-E? zG8#cuh-jdDD@G9U*WQ4{3SjsV_WA$cjKJnXV4eex%<#ce>IN~dETI^14$!SNd z>{8-?o>a2N_Y4fgf<6Q=$Yk7_pb~M)l5pH1=InRZBH`8;s9ckfvwx~0Xw9JA^++N6 z7kkPYpdnwi_K3E+oN*#T)({o;<{~lHud|GGhgH^fAYvy6YebjM;WKX$*bQUSxgu}RR-`2DO*S&?!nG|(3BV1b zm)~E+ux;IagUj(iemRDygJNLq66rg)M$l`tzs2jgC)v+dNhwsxRkmXtz6fH=v+Ss< zVb4%YU{x&vn(J|AuzAij&2-E_)2b&c)g732*O8>sG6Lo{;n29W8{})r_#>9{YzV%v zqp>^S&3W!r+3iUNKhibglw|70cwbt3EbC4pQI?S&u&j@5A^DtrB)3UP&VD#iSszZ@ z-baZ3KkgbxmxBCv@+f>j9EEB34#6@!+k|s3+f4Goc+mYV;$*Ur&Q}Jpx1d&Wnb!YBjIRjJ%Ory&CY-C>D2o2R&$dFRQ5GOH=Ios z73e&kS|0>0c|v7RvTx*-=$kuo7G>XJSJ}7uONvn;VozH?#5i~lCkxNu;6oAn&KBT8 z6UO;96+F!SArOuc{d*lUR^(+QD&JL_Dg-;7lU2EsEJ;Ytn_OOMy5dk`{fZ_x3X>_$ zCDyMgDSSa{+Hq&4BONCc$4x#blk8b?ns4CDG7%Rh>1ou6&*gqvY07bvyrdpcqW*j% z2yh~eHffq?gqb|do=Jhd3|~!H$N5>sfYG~z$$`@#-Yq8S45I%L^En}u-*c;uIrMA& zjcQZ3Vt>g_0VVbeKg0e&uZOnoX${wgpV?4{v6Uen7WMi5rTgCfnk(|c96*Yj=_rOhHXW9WD(skj$%=-b4|z4WX)^_ELs?+WjrpH z(W>B2Shrq|Ki8<#xEW0;-QPt?Tz}TxX1Al2#y#Y@Ydt44B9$w%mN6TCkPM2ir>BO5 zy_M6ux@$WFzt>WADY-Ao4u;+fKa$SV%_1#c@hA#64?n?l*DKx}=Ev#Evf zlvsBNn#Gbp7;v7dAGU52Rju3cCsEu^MUK<`whYgL(v|D&wC|LxGje=ylH+@G*Z8V^ z$IRcAs(gy(yM#U|{X+N&{u5*A1fb6oKP3Q_(;+JY_XR57CIWp2|d)xPR{jS%$g^>*5K zO524XCsljwAa@CTK)Dch*bCKvC)E6n#6UvL5C*7#%s;4Pn;`R-Ef%>5WCn(|1v2;T z3dj(9ZgzP2gIKUGc%f`n7W(R0kAY#H+*c(XY5FAEr}ggvW{4;2o1~4)@>`KcpOqE4J&b$TMxHJJEWvq;aSR4b`oY zxIqt!>WOQ^nx-V3&8@$~=aFnL`S{uFacK+_YF4%fzL(a!5G~XJ(0qINRgR$R5ey>f zdJ8jRO`)!}A3sFzCi9xS_BFk{Ce|$qd-w!-KLAN>qZ#`WxtS z8iCNR8>OWBHDXHhUE{Q_`xxP>HWX~xJu?pCu;jv&R+T&L+$Li82heHCKTRqqO?gQQ zhGNYh>#LvDHxYHd4S=Va>lvE#zV0VL`B12ndd2f5k^d)t#{BPhW4ReW#RI^ABGG)!3R#m@1~) z%bLHl2YG7&nMJ0%)uVxGISWj;jb_4h7Y~ot5m!a>p=9!Kvfz>^evX#AW3zsXO@TEy zjGyP}Ylyynmwx>oUz^q+#P1))@1Ml)pT+NA#P46}m&TFYxG=yeN!>KG|t(HCUO12sC(mQlJM4U@~%1l3qJ*YO62PtrL>%d+^O3EA4$ z3|nnPm59q+YCb74k~jC1GbM6_WYh9zS#944o34gf8r0ekFmQbXkCx z--`&wGzk%%Cgp?>aVI`DJSTW)lar<{!ZD--gBQzWvh zh8-D7#{C5uzXVAz-7Tgv|hzc?52nV6~Ub` z4s1et+=l5aLk1FHI6zS0hxLwnW{ZT^c6F(Z6dt)6L1tQYqX`w>zz~>$H`1H@Py@AA zH3Lr`Yz-l+gtB7T({a!#gw4CgY1S@JOnC(vJrB3?b1P>ujM)b#RN2+lMH z1&_<>w5g)fL~P+LwD^a!0|Hc@?)GUc~5K{mFGAD@>gTRe(DB~h^H zvzH-mQIsQ8^EA6dJdqJkXhObET}MH9AKsKp%Yx2i4ykKWPtHKiAsG|7Soc;Pj~sGU zZ|TTPYnOA?%1N(+(t#X(Ag>n?)F0}k6_>!;0ZbZhND7ZfoN$-e;5oPpGd6lY&VK|P z`9Sn`CTOfe;wy*JGktGU;78g|$u=~*EJ7;h5n#Rx%$9N|Cz28Pk7 AZ2$lO literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6b9e0dc058e861ed2d7e5af09adb3ed96f9becbb GIT binary patch literal 12177 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.doctree new file mode 100644 index 0000000000000000000000000000000000000000..82eb0e60347397541e486a44f962892725f81f43 GIT binary patch literal 8946 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 atz@|D1-dKkheNXaC6}CC?iX|p*Zm(yY*!xu literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cfedf7a1eaa9136c09ef5e695be9dcd9d188a1f3 GIT binary patch literal 13192 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 N7Li@b3o@gt{}&d-G}{0G literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0a99c1893778363ac89bea0001fcf40ae304c520 GIT binary patch literal 7698 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dc277d309dffb96a21bdef522e94b3c85f2c47ed GIT binary patch literal 12890 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7fbddbe572cc3743c99d9a03f8958e7c8ea7cc26 GIT binary patch literal 6055 zcmds5TW=#t74{^t9Xt1#odJ}|k`-Du18W;bJfIMbfMs9Et{;{aSC4wj-DOuN-Ca#} zbz*BZ0)z%lP%TJIAtAJ&edmF{fcOji6n+4FRef>WlT1JgLSV^>>vYwr>QmqO&gG}| z-+uh5n*FG)BxZgz=@QS2xJMJMRz2>fA&sPdt{?nNKhX!OCCGWgQ{hsrYM9|NKkx*N z^kc0y&2;GpNjG2LOsFe;9+k^koi$kVu|8leRhPaDXyuVQCVu1%oFQf8%;#d@&`C^% zZw@eU0+L29qoV5(Nd}G-BuYjv3U zVXajDRA<&`#02jyHQP}wr!*E@R*l?7eYFz!5!L;4NK~6hDg0q7VOwL%W#3DT-I{Jd zk_1Bhu16%yeyw_GJR1y&dn)M2%t=*KlCgQD*%sSn>+C*TW_#+-J;p=Y6KNDt(L3kj zwD%1dwENB6p53=gbH0-s^ZE&RsifzSRPrPZLn5X#`y%ViuB^{q1u%fphDe9PcPkc9&9`z;SRmh)X(hWb0Q*rp<2LI#`apheIqbJW(1u!uIs)% zmn33LrB*+<5&f6J)H3hykO=%gFz)d!U`d0T?y04N2Njg+DoW{!uNJ8A`NH_BoFvaMy-w55F$wH_wI;Ps@XRBI9jhe=FKWw06xY7%j3G5Hv4^CXr1 zC`)+;YOAubBS8s8iBSfj8uDE3Nd}!OWNGy1=85J~=Ofjmw14uM zTeaFRG*PP|nRqlt#QpX^@KGz{fDb_lO_#*BH0rB1N~&2ti>o?W$6~g7(!#%&nf#=V z2`3FR3yYd|(So68*f?NE8Mk$c`l>T4uR29_)$x$2bc*6?VN{e>w8+PAiY!Ty*c+U- zftKaW$!)5N65(Y5B`>tto9Y#N?0^`vIXJ)@#N(Q37jvkGVQTifr8eDE zm@>{Oi?;Pbk`-@iHK9@>;G-tqDT~~Z;E_ZkfPna25~P4z0b$kPsf<&p`)mvBKc*Y&R z($JZVxCk{Qn+d9;7+HO2YUc#Xb~6bLsFgV9zGO~Oc4Du5L0)q7)w-ZD7t#sn8HM4N zRGX2Y9M;tio%pbqBr;8kNp)5C=rA2)yG;{VO@aiyl!TD9V0f3B*Fosr^dnfup^?i? z8il}}%2DU5oy5oQ`|}SSDg+k}Bas(Slz9zvR2PACE3cB=cBY z|4bAoH1)UxR>rJt_&QIhQ(b9M;!5YtPy7s=TaM=^rhvhV zx{*(FO0vCYeqj?Zh4n%j8Eqb}d<`UrtICFe=#KF$AO``50skRVvUj)NP@6H09h0ZQ zA6;uOru?2XWGkr;_og%f+~-)m<~w9sn~PNkd$Zw84nRo!7tg z71(oAjNAqFMlw_X`9i(nK?B)Sw3vJA*Fc~_fdzLSN zqS_$jLTxA0NRo-e{4opg1%6jdwAE@oL03gOKThG-2@G||j(*{{o6= z_V{oPiCWpD#J26VgF^vY6755fH^R3eZgqQ3nl-~9hPF{TFcpRAqe0#@!tD1+$Arc& z;7_7jMr;ZJGs!-3Vo{tWrKcZ!tWnU z_}x=~|4(!~65(FocIz3)mW{UgQQ3AwQ36mH3XR75d~`#-vOLGOIbJ$U)kf75?A2_b z=E?#yt}Bxm!Yk%w7^q5&ms%-2Cmf}oaLp3{%mC8P?hH2~M&x`2YX_ literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6fef92f323f25d18a8f77e7aa3d6abf911204ee2 GIT binary patch literal 8489 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 QAlMTpoGemDj{R@`A8xQOMgRZ+ literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c8b372c854dfbc7c28c83b244bd3361c9589bee5 GIT binary patch literal 6034 zcmdT|eQz5{8F!o5j-B`3wSd|jsnBsL#5Pn2p%7IErxS>97CI0h>S%AgJN9g{yR*#B zCXP;(K&a55Igsdp5CX*C+()?o_zHXqJ_Y<{_Qh+5G@uluv*g4xJM+x!^ZcIQ^YWAW zZ-4QLn*FHtBxZgz=@QS2xJMJMmOSpJA&sPdt{?nVKhZm?CCF*QQ{hsrYFObiKkx*N z^r2R3X1Vl(q?_+=Ce)QakIL<=&Kj(FsCQUP)uk^3T6v`2CVu1%oFQf8#OGq*&`C^% zZ!R!!0+L29qoV5(Nd}G-BuYjY3O?j6kIx29LdA)Xdzk|ufAM>CVlJMEt(9VH6|uEh zv9*h0Yo*wyI@3TSCU{?|*`{harGnUkYUFz9tHr>NsP3mjqS{1C;SW;@eH#5O_+Dak z)pP@rB$&kSdPKtP*OHgU)4`Cq$AXT`np8C<8JkC%t+Tsqh23KdY)k#M$9PD4B8?&{ zdZ%0*_r3-tcE6tMu={qY!f)paym|p%D(N{Sl{`tqkchLMF-)nzivDKRcTszV^132{ z!d^SLnGRV^)gg^eDwfYc!9EQIvHLLIXYhR;-#74mV3Y-Y3*V|}M=i$07g~KYV1tx5 zGfQVu$fY_mhd!Df%66gcO{?tPz*UN0wCmNz;D_&j@yYuSpA`SK zIj%oFPJQ(8!QtM+hkN@Ka6bYtVIXxUr$4YpxAIu4&C1AuGG|Ha%WZt#%}MCH83pZR zOt8BR7L|TP3I+UE~gsMu6;9gGd|O* z5ubHn3{9&nZ7}g?fa(tjdzYiA0sSDpX!XuZ4KNysi4hzE4VrzZni$Em7)i>4xu{yk z7}-SNyS~)V?Bi1+B7Lq}09MBTTD^H)EFmF+I2+n^-(E=)F{VfDFK;@T9Qi~>DXry0wL59_IUZlER33A}LXq?3* zGVkFoc02RCtBX`?5(axoOiYEa6bow7a%$0fh`o8@${uG~(Lk+N4t6A%p(r)Vh*U%F z%UvmGwOF_+b6N2tH%L7?@`Eh3K76TsbHN))HA(Fsedq!lrrk8B-zg+^*nUQD zoua(zOslI-QCxLQan&hmtB%Oinodz#(IPc}2~K8TW-URD6eG(I zO~IT%*xhV~2Gq_tr@mxPQFr33d_!J>^wo->F&EMa=m~}5ZmKpTK{>3eO*-+RFG*yY z6pQMr?$Kd7#&K&VqM95Caw!Qh(}Ln%YF-C1cg>HW9fw9PH<=P5b}C1muXGY0zwgaH zbf^$qIE+MIKvC>9%vD{4(e+Hn6)ANqMXRm3Cvzf>egOYaYnj~X9g5xeW*^LLRvYFW z5-5s6MS-QZ)qq6fl#D4f?t$uVq6ea05!B_vbKvs82#zsDYhN{79*yvt(1`B=rC_Cr zW(~DwxX+nRshd84wd$o|jLJC&9~5gReBe$*1U%kX>vksdQ<#4`6(=PbM4gt|k<5@rsq6-85L*!!bY`me?Vj4RpL4!ZKR$)k|W8fWkH*TRm$)t>v zypRQLor>Hgp2+l00Z_xeV2i3&Usr1}$3^V)rph!*knmvwgIj z2hM>W?)uRP7$}J0mZ6Fy9nP)uLj&G`lgt}U&+1qMGvSbWaN#ptfl;Kc=jyhLRmToR zaveD64jPKJ*WS$gdjM-N$_VXTEzs!1^uE+mMknxJKoKn;AI>3BK%0cv_PsW7DL_l2 zX9(CJRvY40w`OLuZWyK^ZB!0S6=51_m~WcN?DtW}1jNtbPoi38+Ef5$k$rHUu={8* z+2;t8`=%q4XXgclmnlb?-0hPh;uX;f-Kzxkf_`R#?w?H1-BSPfUvxhb;a=T$>lw(F zeYai_u*<$1suAG9uxB*h=A-L3%knhZrg7;oRjXC}TZ62k#LB`kjFin7nk&|2maonj z-?X#vmvD$C)y&dY=O)Y5t(j%5;#4c?){J~aEFn#Zyge@~e}WVNB<%9kP%Mf?WXl1t z3REKYH{Z(Vp94ux^}8Sxv?xGL=-DQ4q3pnti)W^n%W3Nc%Xv}?uN#}jZ`(8B!YT_{ K13J3tu=_9E?Iy7R literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.doctree new file mode 100644 index 0000000000000000000000000000000000000000..859cd8d395d3e6e4ca04106a8e7fbb2a8d1367b1 GIT binary patch literal 77270 zcmeHw3zQ{Qd2aX2bWiuZAIu2188}>pIivjmQ6%j!aezS)7?2rZWO{O_KBu~?s?Rxf ztg15)5G1}}V)=+1KqY~7jV2L6xsR1=mWnYe@m{a8RwB9Usxd1Iz0u^}wKP|JM5E^Z z`%$%bRqgs~pGOa)3~SMIPMy8~*Z%kS|Fw7RzwQ}%U}$J~i2N6B^jntQJU(sIYE8Fh z`kipB=2qJcvl(>m@9g^R&Rv~yIPMw8e7EgY%}zK3EvlAXuX$#(bEFe)Ak722?oadn zt9`Q?*lsiKZjD%@*6JgjvNax#1a?q2rJq8>u$#5H%DibAM{U=etC+`Ire_lY<|=ig z-K<)sH(fIVW3Cc-M$=z_ug8p_YSrAuxr%RkNA0RPeJj6mH8ecPn;l@kbqI6dz3QNO zoG8Uu4#g~oB$h)-mP1*VLs~4~*_@OP;wv+O)&ffw4$_ z>R21C32U8ouC>zI5q@#TavSE1*KRgVZ|0cmEzRr&<4<47Z9ly)HvRS7@Wl;4DSxJ7 zv;)^~HyVa_VulQ8Y+T8q&F+hRzPt*Y5%0B#7A+x&DFj_F-p`E5}SbKk(Hm4MPfQW`My%)TJ zO#cJ)>jB1tT)2U9D7~e$-))+uE9gIyCDN~aCu0kf+Y{?Hi(Sb0526ZD?aJ@#P7mzV3OwdXLfEMtQq2^7zA;@**zSr%& z<=Pu>E)%L(?2M*mOl#+4$(Wz_%%e6n?G-yC(A)_URgIQUw6SYSdHkwpw*rtRIMD*P zpT63z28TiJ$@t3kwok7dIg-}JzqB&nt}dCRyRdo$#*sSEs@}1i zHk-AUYez(`DDAX@pfx)~F=&d|d@5=>#UsUx(XwZbUNYmi=NooVaol+y?0VFw+hn8@ ze0I^uL1xHCIzx>bqpB~2~->) zT-)GDxu7|IyiuQ}dO+xJc_uNW*&%(eg}(b3ze6LCP%KA$@x5wsM46$}D;nyVC_RWH zO6$ZdiBo|6&Bcm5 zXN)I;Gzr2@(F}+Z!nhMf4U%Zmyh-j8-44-Pwe9iUk(kww=FjSIxS0)WzYo**LllM2 zqEnVIZNbfC(9Q(#;n@gb;FI9^B*w9o<@ia?@gTct2AI!@(4WsIY~8Mm&qR?&VzOfi zyFzxdt_5ijM7GLtxB--`%I}7@hoXm2?-@i2`Ic!MXx7{YM66D@qICl9q2K}}k#OI{ zvlmz%fGdW#Xa=2dt#l&*-{2R&WmfG4yV^M!jzb)VsR3zfCwxu6F_0u9CuUg!wV%YB zzlH&L8g8SLnapDui*nb<&v>E$_7D)fA58zj*!0`Lm&Bb-VjRlS2(6WxMZT4|CWhf> z$S|ly|1n7PsaPVl^EzXYjUkjjlQ9bMUP8IZd!6k#Wwiqn%DE2w)kqo4U!5|}H^*hI zXNA97-|op%t$$QFn)4D6N7L6p`CfeOwRD0gZMIdtSzy+cqkqe4*N5>dTQfwuo((B#|fYd3yntL zdQy%Q4qp*F!xfT6zm2jChuus9=sZihOhiyosMHTo4(d!WB0e6D+D*D|AgwB}@!}bD z+Cx^rooRkTKjf1b*7t)qw_UP7aS~E4XNXXZR89@K z!tWQ5KX&;{5Qa_LBtDYkQ8{J)39*VKZ0wgwjG-( z&bL6V=!PUOI6R5ccfJQC(l=O9bkLpbPoXSwq61f982ZL4oRyeqd;=>&N%fBcEWd(E z;jD+B6N(mx3MOJ|v?X`T4;AMZ?73wE!#cS`q;c}1(DWZrO>@G+v(QN=EIfx3R|5qn zUg+$@E3wF)<0+iD2n%b(CR}b*SP5;Ups*EZEDfq=P@wd?&NnxL7&;3VJ8^N(1sCDqRp%Oc$_Jk zm3`3=K3PI_>IK`F!o6VI4)j5-3{b5R%_F18mxPYLf$Eq8R`0aiUEu!}h3?xCu;1h&csq0mlu;^M09#EBOsuqSci>JiqJ{2`n;DtR{Q zq?a~7hEvxV#(^cU%pfUPP$#guv*Yu)c52%(;#wi)X_P)1Qgl`LTa-mkNZ~5zC$Rs7 za_I%+nFy)Tl-wylfqiN8xUG21Ht+G;4C0Tnz7g6-Uj@>y7{QW&9HjpxSVsrxH{rz9 zIKYV)BG`F2akVdV;sWU>5TkNyDnNsDk`^y6#zm1vIWJAkg2r0u+3N1o(MgafIYNgc z9~eF?Nq#jhxq5^+@vL1^YdSaM#5K&4ddi}=keIc_WNeE`$rcN^xTq}(y*0pztGzYX z(5nalNTR0kK)8N%(6@l$R66a;A#6K(kOl! z7ZQRJtN^%EPF-IXUI6&?%X*D4(QuY@E0n4LI>a zG&qJ6S9>%kF3hw>*p=BS3lwq_VYrhxdue?0^2k)Yx=bv0M#q12PS|yyZ@!a`p4RfG z?pXW*ZVYTJw9w^0qV!R8(N*E|D2p6)VZ@WmpId}SMF$?E8L0Y6c+}IV1ic^+6R#KK zIXmx!W(H?QXv;`L{!J+L9aO0teEAl1(!rM>;>6YX!ig8+%Zk-KL`+Ux!k6y1*U!Qk zcaJQ+-HL4jF<=l1?Nr9aRnL7+yfB}<3@5H0VO`0u#)+enXTwA~pS&5Tt}%=Q%O{yZ zQaGT_Cv|5>9oJ56J4Rd!@$W$CqlmAo!hI-<9K`1;=;xCUqFj1GbtXb;G$nV+&nI`F zr|UD&zA4>2Liy|u0`NbD>YD@jpMXv}fd4t1xEc;P@j@W`GEQ9W(ww*e{8gl00W*{W zBj}I9SbvAJlm=BZiDcZnzTx~jwZB$MsB6ui;HqKP)B=c+F)Tcz0HLeGR+L2!KrrIT zlyDU(UJ*?m_C@%>1t^zZ0D_6o3qaf$-+2tCzD5R8HfI<_W>NeiY&477CzxJBc4Q*%X+JK6HT^WyNen5II2l6sKwOm1+}&*i}+-)XDn(K zSwUP7di^D;R}RvA0Xpd*%`-T0HPUe6g-G)(PFy`bIB|hAU8OJ2;ViqynjX`a?^FA0 zfsL*;*Nnfv8K#gP78Z%iExDru=|B(Z--Cn&~x- zI+WcQg(@6v&+ddDCe_h=D37*i2UdH2y6QG&_SWlWbHCa4jQZ6lpd6A74JtE`|=ryUQ_j?nS>Zg>^4Xx zNT{a?RbV>d8d3uaPCG;WzD}ZWRX94h;w09$twXO!!?z_trFi0{EqWZ zBJkVa1qZI_Ro;d;;#JlT=78XkuOTOPA)-Ku7kY*n3hM=OVOF`a>NxT0MbBtil1GM( zD-Eb1F}Eq$6cww})F5nn`**n$jZ~Zpz^*T7-v{%7Fqk zQ>;Ku!q14S|2`oz;d}`GLFX}`-pGuaQ=+^!+M3}Bg3NU=r|D%ZMkJ5?Rc4tdw_^%H0lprl2EI zF0cfZ`7E~v)ppJ0WHTM<)3M~TyG~>(YX`@<-%J{;Y+W5)IJ6dyiy)fBEY6hKJyT{^ z=OF;)BO#}MncdRV9$J%`rw{i;^CKJ+bBx7iaY5Xwf0JWVG~rSK*$S=qB%*J$F9HQV zov+1x4{d-$`)BIcl2ZD@=&WYz2cq#fQ{MDU#c%TZgB zoVC2tAr&Y^3J&SkCC%QlkehNSE$Zw5kutYx>Zd1|4WtE#)O#qR5CjEAo&U>5TDaW6 zYm7SkaAT@<*h|$duGM$|C$9EDPQ1_q4V<{z13B?NJ!jUg*vL87HpxW=>pq^C_%6`j@!C-OqvNv+`&@vVVa& zN8$K=9XE%1{5bK#M;yP46IXkluH-+$iKCLo>$LG+M*0!Qm21%?M8i#bc*L=2I8)e% z!b0K5@4z)w+mFp$t!==Uq4d#hKwa?p4U|RBHXv6axeZ853Fed;eJ#qRmu)~MLTWT6 zmqK%?Q(s>6cGLhl+5Q}K(#iIlIB_*baN>nN{uZ3L+Q&I@5uJJ}FZy1bwKUqA&p+yy z7tM!}-(iDNXt$5x!mI7Zi5EtNCvoEH5!aRcDV#Ved2v+u3Qk>PPzM?nm{C$VqK*o> zGv+(EhHCpU;#yJRhbVnCD(I@PVjUW~Q56zVL0w6dM+x$U4Ctes8PT<7VqpU0Wy*P1H^5UrQ08U+FCILGM!aYLVa@8Ka3so}*vra%K9n5++PF#&yoOmH-eF!J6o;RGhz^oop+E3t&yGN|v zQ`$db15s$J&*LJiZN-TfrnFDv#MPs$EBW8z#8JtMQ`&#RscQ`7KvP;~loUd!Q(E0w zvT_5OHmL2#h-*cc%_w~|y6CEKKFT5|x^NZrQ`#w%OD}lOL`aRMn<_8FYG+Nn8lk!s4NM{`z11W<6xAySW-fwGIxurNPFxK$oOmJ3T!Rx=`vfO0!A$o>N)O?Ty9b!wZ_*C3fhe?9 z9T!<`D^9#H!@L70t{!Dw$?wC7qmmbAm=EIAHHLDa874DI3KG;ArtU0x64y{|KSo>& z{GUSUqu{Tr!dFlhIT zD6r_N@GX=@4zMudNnq)<_9(wY?X|nOi~VO*lU~4!so5iV4YGRa_!czZP-oF2&`Aey zUW5}@0}dx%2sjtw#MLu|6BmHfRWkD`oMrcr(?>FMDIEhX%+a;z8*ue7i)vv`1*MN- zj;;y~ltm8aFycwfL6ey~Q7*mU0TZDcJiyyJH$$z6s9LF1yU6)Jq{Ij-))SSA^vs~` zHGQeZVJO}56|V;T9%>CsV^$1wHQ<9FPA1Ejgy8p&&Vxj3xvrCB8|NUHDXL|}Yqh>9 zdr7`cj*mQ#Wy`mI7Fearw>pbJ&ycM{>gf%wphEp=fezuXa?RF1DN>HrY<2Dg0}-3B zimj3pr;D~a&rnm6x~5`Pe^!Fgc{hAa`mvQ)g^`&0 zcSuh`Kq8wi1X*TfOGjA+#dLAps3Pe9Bbu*<0=n?JW3%J@fP5Vz^=akrO?L{42%E=A zZP2D0ecTXTo`N#A-U;||9se=!{kK6N}U6rwL^$oO0q#xCQkH3rjaK%<;@SM_068O+LPFi!$w92hD35dK2 z5~`taQ((-u>xNgUy7h|RGG$4Ms%WmF?ZZuThwi-Ot~+0TSM)C}d%P*lH2h!7QNj-D z&-yc`to-b>=LfTwzI=AK(GFa{-Dnuzi9H?by#4L@aJ%2K?B?-l^LQ{V{oDyROW!JB z?z&u;`_KZ^_FDu0MV0M%J6MqpMNM$=w^7BFtj z1$(iw;JJ;8QS+e&vhPEeGIW6USJBobqjUpre-&+BVkM?yYR8PAYH?C!`o*kOYPJVu zs9o;_{pfp{Y7O7%s}U+K&n3mNE2Jtl`zflx%f3Y~P$(bfhGO<1RM~tQ4@c5t!2KL1 zW3cGC?Upnd*-vFsnHeTXm-Ax`x*W4>fz`Qg4Vi~CY)VYRKka$vV)#cBDMN|UZ5c`+ z+(A%j}a<-Ois7no?OhX92oOHMCa}HuSNpxPtb5 zQUz`2v(TR|csrkiPmr8EMF^gvYQ~^3l)KyU>l{gFA?$;6IHBJAxmYxi&KQyovM1%= zs}ZMp9~rqF&T-O-)zE$eWti_jq}Pq4`Gj*lZR*?v|0K~X0UQOXLoCIFbFy33xNfg! zQofc+d0j@za*^cW7h(v}47JOQh?-I`z$CbsMa575s;Z>G)F;RQGfds7X&Pywe2VlQ z2;_c(dRYFHK_K@}p=;le`;KJ|!@8Dzp&;@f(a{D(9-)b~WJ&2pGxU${cL2%tgB?N@RS;=^(HI3;z@GFNTHd6Y5Eh`(H?#f#lgw z7WfeYf=@x$zCqAgRuD|u?}dVXkJB*)^xLY~XOz5%w3EFEhX|fr{}t)P;P2y zA#FN1_}Cay4l% z5NKNolzLo3*bH6!hPK6Jg*M4}FBDw+H#+G7*H*v-S>iUDT$VispXwaOUQFDK!Pw9B zvE-+;>EK}O6$LH|BOC2NGS;|m{lnOYWx&Wjd$Ro4k>!~SZk^LnRt4l8BCf^~x@|CP zvl>did>d&y5cIpHz_pOXt_EHEMn7-4(NAH=7YY#GOvg3@gygd9JUCczAUsMsF(AB= zlGV!RuBS~02ZZ-_%Np0Me;~Xk2AAkbyJg0{h)pisiHE$Rrl(9I1*m<3xD5lfu}B^X z$DSZR4+O_PUf>xBj{R5Y+Bc3Z??Ya(>0T(%^)Wh}8R#OHWq-k^H;1k-kxmS{K0?WA zLD!?S>ENL28{M+Tb?YCx#F9S^k?`E~G6O}#CR%@Ed&G16$!g`|n*g(@^C^>20cO7> zj>N$%l1Bowq3ucMOuAV&TMj=j@D&8i)_@SFIhe(!d!c~YztG_XFx#AY@LqBs(yD80 zJD2zz!?qt4IE{3Z_ygK>aM(5lQeaCc8P;838{TvudHQO?VW$T2n}(~%0fo+WD~Kd7 zWqo!k_WZ+b(s7hh-EA(i;}DsXffq6w7bs}RkCsQL8_#FWL-K4fO?R9f&7U4}`uD(nv&6k%TgjP#w$8cmhmg!1 zVLEgL9M)NmQ%t^BohiIaoT(XsQHk=T8T!af&0T~OKi*NhYEHvR4RRU^jN4o+xeKL2 zg3}3t(;0&Fu@2yHHSj&?8BKq|^bT-l{OPBnV@R`?sLo0`C22^)^T@F#Dl9*{RH1S; zj8@C^_^}=5BB=*IsPeMRrE;%_YUJZNchi~PD<%1O4ySZYMoy=f=h7dJ@5AzJwake_ z9$QFuXeLp%#5o+XdY0Ggc@tKV^?Z~d4a<7Y&XZRPV}FPOQ#V=AN2sqQvnUzZkSyp) z=-PJ{)TY|bo0f6ZcD)K5`7u4a0SCh>b)(&^TBg?zM&z0jz?GciIRmEyfKz&4=n?8i z)^=-Dgims<>tyTCNhg+UJxpol`zDEy{PD97(x!t;w!Yde>-@BcNXc&`AJCx6lP!ka z`BYWO)}0FS&Ku!kUS@Sn(LtX4`I*&G=t(mxYdT7+3KE-eH975RL&^m;3#{4jeVXyR zysK1RPK+qA{PtS6$DX=9%U60d_imvP3)420nCxY7LMyPm`B{9KPH2 zr*DE|>(|>$=8@7{O8ecWS-OJ$Gg*oq)_{e8_!>~+lxSP&Wnvbdms5Ij z5<2Nrg4=@=S671L#0x9IU5^u2*Dd43g{fA{HWc?xJd$q@74 z8->(66E4((OI8qoRKKtnpjOSva2(be0MFV`$|S$~?QL|Zx){~`d@F*ShX8WQl&mEj zb5{b(DTe3ZcaFERFp%_CeodJEZMf;xbqnuivPz}dXCpSlv(g>q`*GrGZ{@@bz4Z~C zxY}DeapA4ol!oONjc@#8=S{!E>q%S)4bRQiY>Qqd*ZVuX9?y)A`ekx|flIF*A5J`L zo3Y3}B@g&2&OyUIshPc2N@IGPzggp`-?{Z2Ty)eph0gm!oVeO~vy!XdxwYbKEc3DY zlYA3S9F;ulGwFA3orhD`@R#g->f@bT%;G5kM=`N*JSJO-U~lE#xbaWx)r;)VYF5Kdg}&z!gj!#%vt`{OucX$U4CoUyhYSjNSPFy|8x{`k#Cyq*9jQZcjscQ`7KvAC=C501e)YqLQ!{@{y`GG&5 z8lwNvrOwoSgxZjdix&KE6pR$~QTW%@We3V42mZMV`tbiUluIx0&qPQKtK?f*_{ZBO zYeS1ABWEW`?&uOjh7mBvsJu4me3Tp(;HGNZ6c<;9<`vnB(DjOucmj^J&NDc zJ5R3x6|l!s_>e_4sMTXI*c#Lhh}2aL>cs*bex++r*NT)=*Ps>ym8n6!5hjmeozfcA zR}Emfo|mY857?uiM78!(c2vQ7-vGpu3S39%1Zz%P_+2PGO_VKgohW=*SXPU#)9Y8? zdJrrn@8hNdp@hq1uaiFzyqO~_$bLWXkHG`!$xCrZszQOt$N=4x;&y%vK<+#NJe{AA zPoE^8{w4nOQ}}e!`5FEDuk`QF>EB<_zrUn^|Bd`5TX4ye*$&eQo+s;h*Yj==a`nBn&{@J6PXt?~q0kJ2(7sbCXV z^=`E4Ce-BsQ=n6hg&Y1jJ@# zODq6w&NPme%oM)}qy8&u)SPv*pFk&_b+hq*ho&g%6%|graFV|WC$664oVYNX*mI#y zm|bcS4TRBl;jE?9OY_FC|4o?-L8MG3r(SYlHo$MqNt#7ARi9%cEqwAqbROh-=LFI% z@>8^pF#Zj=@zpwCOU+|RYk=wv*TXn*wa0Seg&u3;#MK_liTCNTcjBy{505=Yha?r6 zvC-?%W6#4gB96MkzH6oSk!vQd30Hg+x2js1hpFDhuJ{B_T0DuQExhYA1AIJWnIaCffGk1&ql)ZR`c2k zG`edH)pug8}Bg&|IZgMkNAH6jT?uH|%moEvVw@?Lh(&QR+(n*t#;>6V$z=;?7 z@H=qgY9Hpr1=4r*cG?GVmeMF{rpJA}o%REC479QgU5h@6tA|-s3l*M1>7%HitHM`M z7CETEh*ZY@$y zz2ztdDzoMI6s!`Q;w{G+I&<(t=(1n)?Zw@od%^aiauqV#O1z{?w$ip?wC)J2DqrA> zZW`N$=!+8gx+&U5M`VK@go z*@oc}@`-L3(og+t7&4t;!!SQM2tBOVFq>I*wrHH}!!;PG)(ziJzJ`%0;KT|n#R||* zy(nO&7xNPw+@}w zB;qhWm55I-XTl@KYCbz*4`|mB`Wopq)`Yc^o1MIpcm?Kiuw&%5y{g%VHx#ak+L$%?+9oTV!{LT%+w;izc1~-5xGuUle9+U&!Nd!d|0JFwx<9=u(*8JNvlCmg-SsJG!5ZS>mIaMW!Ft#;7aZ*ANkjxU-` z(=*_uxj<;Z~jt{V>5`|$ePX1h^24kf)C9k{ZAl>BJHc6NiD-1mXr1iNC^O?str%nsn~zQlDw za$v_h#240iX3O>9(7$=q1lz3$*H}h9{yGwFHjmq2GVq$VA2k{YM{4GLdlBeuIA(a{ z)xFRH-aOWTE8}4Ms!8PT+!t=Jn_!@d*{r%XXw?bF+rh%rHxV6tFq8!* zs)J6QaDClqF1C$D6D(eX?<>q^C)^6JN_IVXXR_G>Hvu-}sP+DEl)ZhJSj4V@qnZo$ z@s2ebZXh*yD&kVO!Uo@3Pv2A#`yUvVUa-OSyru!gefEbN=@mA4Vfe+RmT$IeZsmA` z_|ql;2iG?%a!=|d@Z#j7wr?~4+z6Y?K6xEAe-Z*Zu8!sf%&~Q#O#B9F_-#FJR#~v? z^c;D(oqPf&fFa~9)i5@MS`CJLt!EsIzk-WyCX)+12Z{|@Fa;WR(79pL&TvD^Y*oN0 zCQQjHHP||GW!?bU$;=4Pwt}GL&(6%iWgiOM1eV*JcD==!PPmP#NB{_Sp$Y%zZQb@xyU)8P0Rl&h&?qzI6eF2KqZh z*4@@V=NYI{<$R6&Ay3iKQ_K!YZs~@9JA}7QaOeegl-c^KO&;R`Y2zzo3Puw`S74{^t9Xt2g%>c?|$qFr-fw2uEgiwe^3(E>bSpR?(i@>Aaa(CI)Nq1LM zU7a{ujRb;06I2TlQ%DHGir?@E{6OLrcnY2ZzN)^s?b#%t3=(U}iR*OLsp?bT`Of7h z_22&O6E*u$8%fOkXwoH~7jcg!S}l9rO+y+<{Y>BcseY{YRZEbwgr~x#TGcSaWq#lZ z8tF$`t()o650Y-azL`*0`aCL^vpQ?A<|Dn&TB zW2>eckR*W+zv~eRvtP?z8czp9;+_aPGILVZlw@okX|}<3*ebir7TK=)bC2J##Uo0W0>KHQ)2rD~#6_ z2@Lki(Ly?8HC2Z;I;q@z1`76R7>K=!%lizzui^VTzW0o=U~l1D6YZ;|nD|1gZ-v}T z1Nzmyo1RUpZ)U1GH`c@&eW^*xKF>PSJL}`wt!$ z|Fzk!Kiy9K_2YxXg9i@|4lCe(2w>uZ)SaCEz#84kW39F-BL~KuC9N;F@p(5Vp>Kej z-pQHidl?<=XRL644~#1Ph!{S+*KQXqRi9UwUkTtM$AYJE1uj$WY~n8e%d1?*k~80v zOdqw)?S;6#V*n(|h`nIuO92L|FBSZ-s=zS$kbCFP9TbpX6#VQtxg~$&(I2^_1$rf8 zL1I=}s6IT1&ky+U_~5-OOuct_QxEQ5q5a`|gS|n1n}eC_9Ne?FxesbvjcMfh(b$=Q zxT`Pl^Z$nzC_vW?d`SffDhFhL$SG*&3KQrlE&b_oS^`Dew^s}CxmJz%yn~C=w94oP zKOX{szek9?9B~cU5V1(Bw_j*5(nw;A;t*)j>@TW`kvxx)&@7sRsuhfpc?7=eOa0V7 zJ|iO17pesiX0bx6H*ShGBu`Lh(*WJKN0LO0snlw4Q`J|&*i!fJkUD(KDf{Ra@S{Os zchvSra%=^xx(Zf$Dc}q$f5Ud!-w`{F_FrFxPBZxfO!_5`@T)lveKt3~EV0Qp++qLt z4>!8{=udH)C)a8E876`DFW01&Ol;9e)$oE0v+2A_wOt8_djXHeSqvld9`0hbGrzhz zNwp?naFE2rR1?dwpeBW<7NL)@HcxWdkFpGEpf)NSI}*%LlqF^Ksv%G2t`xLdSX`Io ztoo4~q#hmlL6(O5FO+Yt^hQ!mZu`fdx>c+FLKC$dl8HxSMC)(=3m>&K4)_o>(R4{{ zE2_R~qY|6u#kj5GRV-#Z$1VK3%Ie2;OgL_sSy&^Im^?bPEnH4BBg%;v`LDxzyP!jm@H=AZBt$p7*_?9yh3C5)ywvuxGc{pXa`-fAJqsy?-xP>D=$i~@SAtcXW~ zM-sUK0^;{ckOF4~c2$F?GESxLvkk<7F-0XuBo`(qz^up`Nf=|Wl5OZb$i6QjJTu~@zE`{W=irX4V}q|i%>(do}jjhQ5}S)&`zLiCzH^C zT8VS!OXd{yD)!13`hIgrX9mL;tKZ11}8oAtLR*2rI9Cg0ZNqqdiJNwX~LU7?Q5_thd zk=QUtbrDiGG8%gE;BN=aTWL z%f+~-)wY>w4}h7Dq#>?H+9*Wh&TC)z670DyM(&(?BbloIY@yz;pMmTN`cXcWBfAG& zzsF=4V6zqiB)rHLU(0G2m<*lLJ*TYeK9(K}mUGTXnYomh->`(8FCn8UX_Z zG2Av(k)*@9d46cX8*q|&qv>^>XkaEBQV%YCjw3LNH1S7`HtWF08STHJ}rm4!i#bNVGqh literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.doctree new file mode 100644 index 0000000000000000000000000000000000000000..eb31517fca87c92d175f00e75378eafda6129d6d GIT binary patch literal 14602 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 iv|4CBoHfgUKAgND06kfIV!Q~BS~-LJb}|NW+S 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 CqkriD literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e740d8980af671bd924764be55f4a4d631622108 GIT binary patch literal 31680 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 lFh-YD@!q(Y%XP0+FIR&K>Cpb(E} literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.doctree new file mode 100644 index 0000000000000000000000000000000000000000..038d8b671f0380382fec04ea57737bdfc4660887 GIT binary patch literal 36554 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 L1Wx2|ulWB0@d6Td literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bfc1e32a57459e4cf5bbfae3b8905359b0f403fd GIT binary patch literal 10915 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b27a104a1a54fd3477fae73a6e85fa9e36b1c0f6 GIT binary patch literal 8098 zcmdT}-EJI76&^bt+vDFjn?#_EvtF&1wS#8{BrcE@7DC7c%C5EAMQEiYG(FulQ$6nK zZn~>&k3=H4ScIhlgth^R3*ZJJu}CWf`vfRAJOM}uo?v+d#CNK?x_f5gv5_|ySQ@$O z@0_Z0zVlP3zE}U*FJ7vtKe?Vn+zXCdw(AC=%aTkkx}lQ}SRk_Zvz_l}kF#yri0z{! zOk;;-vW6KB_k1^ILG~z45YfY zBf@x?5qB`3`vyCvQ)!;Hf@iJ5vo?iiWz6ubDW0{0XRYA*UZ!O?AK8$U$oPhAScPc$ zB{`obv}4O9TZq`}qym~C$zSr^grvOS_;!+@6W{f~9_X({H;u|h$94{4 z)}=YATo87ThBCg+U*s$N2EW8N<Unbq<2$Eed>3a(C73&+HlA_$oR6WE#h4lH-pGj)haUwDDDB zKeJWv+N$vS%`{#|le~VF^LniFJh-sM5wRmOtVAquVL8?@Qj5xQ^FVvOvZ6fmN2l+j zDq!T5tm}pYxXnz?Mni;WbRags(bSbU%G4Brz`;Z&mn)$KEy{Hw=6GGt$xdVgcCI6I zCU0NF5tEY}?rHY>gn>UnN*^LQ8}Xq0y4(2gK+7l#I$$s?zoTU8OAgeS} zlWUb2>8~MVPtjNfxm8Q$f2o-1rLfZ7LfR3a|Su{z+eww z1={+rOyB-5Ckzy>_1wfie*xl?(!V^Op;nIZ<>{Qxp#}bQ#7(|=5${)A1x+sfN$5}K z&d6+L9#szh&h&$ySAV+&ICd+;|4?nY{|Ee= zNJgqaSo8v9>w)bfDVj%)l*V2rf6j%7lD&4j=Lw#6T244<-|>AG?6Wks{jUv?Q+p`m z+&QZnBx1(el(DtxVs_D+8QmiLzt;!*-B|~lLuD||iT_IrPSG;7 z#}lz_osr`}xb09mcT8w`-roNhwB!N=tMc~#zp1INo7Hv@Hg%=$L@orO`CK#IO{&Tb zf!CFM(6l!&BR^qMOj-|6?p3Ew%siq*{1PT`CGF{i?{$^iQ1Nqf92>d{*EGd~W?6G? zno2_XQOqiajMkc@wWg^zH%+-&;f^jk&$rlTo2n*dw@bjrC7sOiU0oj?yRcM!gsDCA zU3pb)-&faJD~iJ&3Ou^@To<8$7r9@POJ)vp(M*Zoj9hclm@3;=QO8~}J-VJP7jt#s zQDLKaCFsUVcWx%1zP>LTJ%$>!y6>O?L8IDW529=zr7QIm zL7DymnoD^zjeWFM$>gXKPNQI4*AS6cx?w1SP_WA2{TaDRj}<{Wu#UT7Jjl?qMwOz- zf`geEl3$;u=9vt%pd4YakuEZ<~V`2I1kU@O2a*5l1(X7i2cI-iF z0;Sf(OsdPe%Q|Tf?AA~x4d})Vy38J+rvdRhj1HCkP_B6aWMm-_g>)~6KS@Qm`NgJk zayLc?Ef&XNY;ikqeFoP#Pg{lmlj~a26)JT_C6k+DBV#1`yR)$GHBGnNgIRrJbYN_; zyi8|EASezI`Kq9}>f1ptwR;Q_cX98Z#jBEhA!be(yOztS`T#amvEP^TF#9fiIV9q_ zz$)u{$0&KrHF|rn$}TzU0bZ+aI*6n%W}PhirF|wzRLw;8ZfgJ9HuCjVft!5&FXr-dXA9S=?hGd zXpz5#Zit!-l`rG@t!M(G8)RQVPS67oeQ)52?9I!s$+d_@7KEa+6gmuwHxclTy_0ds zPnjeD-AOAN3LXZnFz&T8d5vbO4Pd4v*Z}Ggs@}_@=BuCk0_3?Ccbzfv)KilGj3G~6 zksy13hdYmnuHpd)(5A=@W({F?U`4Lr+5JVi2}};G!aR!uI+ zWbOw}fS%Ctf-W#%9K#iI6-n9|o97J(ynbkFYoxclgAAA%beIbh9%2iep?Y;9uQ`}? zU@>G*zJ=!la4Rb(V s2g8C`697OnEIi3b_j1v#bhzvVj-R@OnI1joF1h6FbUArnXLqgt0;PT_ng9R* literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3ad37dd31423dfda9f1da620147e3684b32bb600 GIT binary patch literal 11558 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..96173c472016b4bfa1d45ca0abb19350e7d5a838 GIT binary patch literal 8028 zcmdT}?TaKw8Q5b=}#p6c$Ip1ys#y*1)3%+7Rm z)l*f^^Lu_(^{a2ye)ReiQ|3>v#*uJ?!8UW8Aar<~>Uk%$6Q2hveJ8#0?euoKr57aI zi^D|PJk?XEVGGxDBoES?sa~P#%Jt&yynQ|9wsON@)LhiWoT%SSx5R?3DOY*C^h!U^ z+`wsD9WK}{HwgmU^IwgBBH~UpSpmAnarbbq# zN>--svocj!xszt|n~NA`qf)W17p&3r#f+ZIXWi1Xo*VGAm2{Y1WJ*c5lPGwLyffoE zF?phHdn}Goh~Kq<`Pr{|CyB-n9cJ%J-laN;t}E7~SE*PP7sZmeBxb~A{ccl)K5xn- z2)JzSg>tv~5?r+Xx!gnBUl=*))!aSDSHPs=ro|E!#)KNB%0g>ppMg&f1nS z9Q62&>7*m3bPcWfpcKa}#Nr7!L_CSud>o&r@OcKGE94ybSGvX}TY5HPu1xg{e&{3~ z|IFq|$CBz#Wlb9=ZYkzkDrJfIglLR?-V%=^vcS`vOghrFOY_nTUjzgR&v6F23+0j= zK(O>;7QM_8JJb)<@%3@X;wn74Y&^QASSRtAwCvEc;)s_Aah!8!O?|!A{@Pp5-G1wn zw~OzTx@(QQ)A#;=v9V zmY*L^Euc~}6FnUbQ#}_A8}M$*%gjqr{uyBME|#vtaWMyfV2w!iXHT_Aq}VEuAs^vP z#XVielNv_YHq6k#^jSP(efM13Rq0*xdXLE<-3MTXI~k{^`q`6$0b3F@H_LC@GDA>I z_P9#*izhWz#g(DZA7fd5#HjPe8N@sVHC)ge2l8GCU}+g({7{e(l71*Ii$7w`BI`dm z3Q<(~ZB+UmhVcCgJH1nRK5WyFb$C(y`2jmRdgymCnmZWH{$%f4hYwFjBUU(Ig?I?g zI>5>VZxuxKlVXV4`Cp76y;w#` z;Cc>*ntE_v5x*0^7w@;k2m0j`Gr>W#CrCc3Z1ACBgZW}-Q;Ot={C1RsI|Di)4O|M9k@((b>}b0zKj zuTWU&T#emGrMod!`ma(gb5cF%tn)yL-~aM4!8|PY-$1*E$^Db>0;=YW9p_C2EFX8$f|pE8?CKs>vAQ%Fz~&dIAWy2%}0{QT;Ael ze|i&bbNNVoBhxb4I8lt%9!p_wU&wi*QzCK+DNwm zWVmm`tzSQ#y@QtR(~hx92Yf=$YW3d-GQXR)`XA)qe=y%%&--lP@CfJiSN@GZJ=^ob z4vr{wn?*(=ZRtg5t7B~pIO_ifjm5?Oukm#h9{TrCq5n&&g+{+JjVdS@19wYY%Z^oz zLTGJ_b=F29vo>;>wUMi=ypZu8;z-5{>5o!l5dfXZXvRoh5D_Ogj1xdFR9A6TKc*xL zVvmuttVo7Ez&=x5YbsPYO5d2$i$xvo;4z{8&gd08k)-KbBL#P4Jed#B6^Vc)}R|oKSjw(4E;2MI_Q%$ z9>dthtb}{qlvsPN5>}x>qp!R{E=srblH^e+mF4kU9FCjTi-LKh$C_T}0~h{MOeJwq zsitcV?<75Rw?Zd%(oSHPGan@jaJ5xe+(Y4WAT zr3|H&Yi;l~4b{eReKl9+##U;^N~$kc-c(HV&rD-$u#(xmzxAcb7nR0(jphK9#R4w! z48bmYEa)Yy$Ki1YggcGf4t-v7JCu%vlma3EmR>a_2G$h*aZwcW#0f1d1gN!!3?|*O+|r=L zR@N;yb~A9UT8UL*sdE?HRoi@yH_K2l;3lhe3vmfOm|Y(n5bsC>6y! z%_fTD?P#b(7;J~K*G%;W)ieV@O-pef;ZbJ&<5ANK;0T z-Nl8H%T?F(fz)pb<$LIC0ZTKo$jGbn`Z6%-Tch+GO#tFNA!J{##lt|cfhF9Y@bCeC zXK8^?^-_#07G-@iL0-pj)OquqJwimbS+;cQ%eH__Y9sJjz9E#xg=oDC(Rklnu9+LN zoCo%Sp3ruKE-+9K!#SdgIO$aCxjuo{3t5(pbbqy*0yBPxJ4oRnh9Ed3vVFaQ6_f2+ z9HO0PL53uXHN#%dZ}I?EubUCtzMkR1ExHHO^BJAsG7eD0b&!kXP!Qrtcr(CR$DjZ$ zh1)@pH+Bp}-1^)^X?8P)Vp!{r9_Z*#mue`lQ(^YI|5sY@{(^t8UZ7%97O9eXu^)>k zartE4V;Q_gw>h~ASWx(A<1-SRuCZc;D^@GqY{k$a)4Q~&ehH)k>F-Y;#jQy!?c?v@ zn)!lU+`&QRMEr>@gWhJ?J^961erz|J#iWzynmP;u2 zOeylg@8I%kqUvLn!cpyoiE0Z)ug2233Hw-)q@pEoqiQREgDn6^)(#V*P>9UflY77- zP=~d>{`tK89U$dS`V|lc?j}GzxSx%YB3XwcuAL}8J1RCPKbvoT=^ltKc^4g84szzC J-A&Tj{tw^m8ma&Q literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.doctree new file mode 100644 index 0000000000000000000000000000000000000000..496a35c933fc115c8f13df5345b04018a05ec178 GIT binary patch literal 6041 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 XiU^0A*hk8)Z(mUh(zJ<9HtPQyr*4l6 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.records.subject.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.records.subject.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f94cc16d6c4ca2c80d9ddd4373bf9d9466d8faf9 GIT binary patch literal 3205 zcmcImOK)5?6i$=OB$LM^=>s9PDMhF>6`dK7x+tZKLd7bO1wyP^S)O}6W0QOBiyz4Z zsS+$IHIjEVEB*%mfkB>ip-#O>E&L6*SEtNmNV+t4XKpgcS)FS*n=~FM{vK6k%`i zT7c`VXbrUiLbnf>-Iy==4z{z|!b4VX%s&Dm{9`=MC-~pR{~rGLBRT+BixQIqzgkeC zga0yDsms_`ciuag;2%|c2k*a?caLnKj(^4nbJ&mgZ9Fb(<3Hd}{1?&ppkd}sC`~G8#2V3azG^ znTn_#t1QjJ;ga8I*02;q7tg!m`-#(02BanZR%5Bi@7E2pR>&!`#9k}=iB{4wnFine ziDnKj+~$q0a<*_b9Pyna-kLZWQq zEDr8O9-Re$b)uA&%Cd#Y!z+F}W*_NtGMgx!2Uz+Byemke@|aT$T;8lKEMujGoC?cH zBVL?XZ>ZILuHg;1S*FU9N0yV7A zjOMWP0Dr>brNV397ZMl|CKHunRq#D$Cxb@=Bk+Ce;v`{OD@{0+X~rO+ZVVOa(C<`8 zFL>#cUV`7hG;_%Xm%d*)od?ity>)To(oVk{F94z$4tz3PDERG+%BiDM2DnpZ;*N=wP?`1W&CVVFx5ndOmByO6Omj4bXfDUw)nB8;f`xkFN6=s1fPsiRzLbODWR z;W7qFC`AUR+x0Rs5m}ky{0H$1hZv?yAu<`grFid66jQuYH3UERqPRdCIRy(dkqaBX z-@WJi1uF_!+QK{@jbJvz;>>a-he}UJ!QY50%K)&FSeD~? zES_T>_QBoH9|F(5o+OvtN6Xy(r;U3kl}5fEqYMjXC*>JX|A^Z>!(ly3$BMhEyLcc`yY@sn^ZaN+^;Zs61xY#UgZ*q z7gR)f5fFzZmg*@(ZbF^hLr|cWMNftNoyK0_C9>TGYt>J{3~!Tm(2Wv8D+2pkG*;jI z8GmYgFBJimu}c`lxOdK%2RnmTg{ep3r~QoQ^Q4!QpkR9)F>6 z`TPH9T#QcM-Kvc0GCZowFx2oEFCLSloZeBB|IlBc;$CUG12=Yldy#@mU2FybQt z_sSA8SF^5q%tcGJ4o?gTGgtnvo)8*-V`#) WTpEQmjhx;{WBXnw%h=Pn@$et{Uiyvz literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..93c11a20423c19735622c8b7ccfb52a025993ede GIT binary patch literal 5971 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 AYybcN literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.doctree new file mode 100644 index 0000000000000000000000000000000000000000..deb7ed601d41cdbe20aa808566a7469ed50faa70 GIT binary patch literal 21273 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..36b7988dcc0bf7eded38d63f0b875bd652034b2b GIT binary patch literal 21782 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 Dkxf+~ literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.doctree new file mode 100644 index 0000000000000000000000000000000000000000..700825441f6d2e36e8ed641ba2fddedf3eb94030 GIT binary patch literal 8341 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4c6b1bd00bcdaa305c6b407844e62093fbbc3c06 GIT binary patch literal 11380 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2ad3334081236356e36de55640cfec5765f6a60d GIT binary patch literal 6809 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.services.IService.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.services.IService.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f985af8f9357c235f9d09f6845cd6ff7c18ac0d9 GIT binary patch literal 9439 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 PY;t?4hoC@??&yC2gPrEp literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c9c802986523a88cb72803c7a151d0e5b801cf27 GIT binary patch literal 20104 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 Hq-pzqM_)c7 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.services.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.services.doctree new file mode 100644 index 0000000000000000000000000000000000000000..12f2177ea0afa1bf5f41dad6d17d03bff7ee6713 GIT binary patch literal 8147 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2a3f06415a4007a4ff1784710817bd000d8ccdec GIT binary patch literal 18609 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

dy+!O?fDg#Sv~g*|y3Xwy5` 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9286813f752b71091eb77058669e4e652e3185a9 GIT binary patch literal 7764 zcmdT}ZI2sA9e3`|=kw(rljd5QTzXYi>Zq{|p%Udt)0XfQ0tO*Kl=!+G?~XmYw@=K@ z=6tFmfgmVXrXZ261gHXD@d7>oub_zcyy6`n0Ey4Q3;50KgV)YEm%9RLE!p0go%zqq z|M~x$?^WNqaj~L5ay1H>?GIbTvi!iJQ6d+tz>GcWi{yTC>HEo@q#^5^>_tJ$O`6CG zMwrZYEl&MpCy^^^xUk)*mCdh3)D(8$7t>jl&9mB0(qMI26}E6`>6L5~+qb$#k1}%G z4tUp~!;o@YZJ=woB=${4c`LTN2BR+CB#IO$&3%Io)fQ6%m4ZN}M4(b8P{|40P0~}% zhXiL330s$Sqc}91mGjwIJ95soeVTOQ9+8Vg2yXXc0Ujxy%-U9@&R;WK5=H35bJZta z`m|uh;i%Cg<}RmwH71rdK?dqo!dBUNw!|*5S+*(PX|uqiZ65nR;J&*8x&Fq3zB~FzYmGP;?Bk<gm4LGBv zkouPG4~!waYI(DR|I=o39jdvupq#j+J+OCmfZC9cPdREb@+QBT?oHq`_2J}9xSz=R zaK8x|B(&^el`8xSy7Wtgr|HTw4;CQ~B=W_R27(0fU(xU&=Y;)U*3c6BA##CPwI_KR zZ3J!CHf@pI)35gk_mcxzhw7xxJCV;HLraiiV5SbNNk^|P2p>?9$m_?TGELXCyZkv~ z?uW-s-aG|4C-4~?^2zDGt)y8=S+nR=?NBQ8Gq%b8g7~DC`02w`NezA*gWkeEelp>^ z?oYI*r3LAN=h@#LaiNEA{T_C6_b5s~z#zEW>6GN0^63c@9UPEhG@T?V&y^z4mK*qk zG>D!g(w``ytgjkBvo_Xt@H`$IW7arQCq(eo4bNA@T7UWffzzHpqh zqBygP7a!z2;z2`ILEaf?=0bYs4mHk_DAmZa|C=5|6)TWPI6qc1bS~jodYS1mR8x>n zI3(T9`^+eucaOE)!%u>|!g>7>=pnVpJj8T*li7vy*~19`>#$V9dF8O7C6Hw-;IUEy z;k=BQI)`u;@RXZw>Smqg2fC&vh|c2}3pD4|6XyqowGih?O{?Sl9skG$oK5`eEWo*l zr;hWK{@ubaaI#U@|0_C98umww7)hwXuBO#UGY1`;Bh0axLypbZZf1xh&B3kX6)_~o z!jz^jBD9AE)WdjPNl8At-63rsOMFsIfG)|`r8dzl)&Bd%4a~G{;B&&wPL)BYgZEwpn{U8v2 zAZV%k<|(_DK*4bf)yfR;etDKt zGvJni6dpQ)Wfa2Ok@IHY_i;>c#I~TNC@h8vo0lu9d@)8{a>j;YEnBe{8in$KvAP3! zBIQ0oDb|szx<{+E691?xjA(2H2C68GT7%sN5e4QqnyIzK6vk~kvQy<;H7q+)=phc0 z?Xs2|1q^HnhlyYY+QL9|IU5F0F)NNX)Dsp#t){Jz`ihzbk)KAX0#T(+sOY+~ENBi2 zLWft-YCPWx*x7+BBTH(H6f!_-Fpq85RcHsBMqC+e(VMCbA|WK3G%9EME;{Wd6+3tD!Yp-6`P8_UIV7zX2Nr^ zSRHjOtVm;(3vv@W=^2H276$-stu*97u0{L4AVY)M1Looj{hd?QaUz!@TsH{gyD{uK z0;A6AcG@)Dz$6)KH%$i6(S-O?djpp>3o&~a2<(BrUeb3)nIAZS_5`Nw_n`y1V>qK+ zMHKfY#@U`yUN<1AHLAOu-2^)0^{53C-p3Xg1*mi&&zTstYfvCuu7R5{GW$#sW(UIY1 zxeG5)g94wqO7h^AM=Me`&ADieb zM%TxN)$>&~r88sn5r?=?f$!WTt?Uf~KU}LB#LE2vhXst~LIa^|i0HNJS^s_L$KB-X wa1+4y;c#$68No2p1q%;5)_uC@*1CN0XsIBO`Ae14#J$#k04;@hV*mgE literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.doctree b/.doctrees/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a534b9bf119afcbb4546b248ca2420521c337c9f GIT binary patch literal 8977 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 literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..295043da227a7aac3a30c7c1184508995182bdca GIT binary patch literal 16175 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 PXp+s(%p*m{NwfaHva_@w literal 0 HcmV?d00001 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.html b/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.html new file mode 100644 index 0000000..59a282f --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.html @@ -0,0 +1,447 @@ + + + + + + + + + aind_behavior_experiment_launcher.apps.app_service.App - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Hide navigation sidebar
+ + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.apps.app_service.App

+
+
+class aind_behavior_experiment_launcher.apps.app_service.App[source]
+

Bases: IService, ABC

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + +

__init__()

output_from_result(allow_stderr)

prompt_input(*args, **kwargs)

run()

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.html b/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.html new file mode 100644 index 0000000..ca084c6 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.html @@ -0,0 +1,493 @@ + + + + + + + + + aind_behavior_experiment_launcher.apps.app_service.BonsaiApp - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.apps.app_service.BonsaiApp

+
+
+class aind_behavior_experiment_launcher.apps.app_service.BonsaiApp(workflow: PathLike, executable: PathLike = PosixPath('bonsai/bonsai.exe'), is_editor_mode: bool = True, is_start_flag: bool = True, layout: PathLike | None = None, layout_dir: PathLike | None = None, additional_properties: Dict[str, str] | None = None, cwd: PathLike | None = None, timeout: float | None = None, print_cmd: bool = False, **kwargs)[source]
+

Bases: App

+
+
+__init__(workflow: PathLike, executable: PathLike = PosixPath('bonsai/bonsai.exe'), is_editor_mode: bool = True, is_start_flag: bool = True, layout: PathLike | None = None, layout_dir: PathLike | None = None, additional_properties: Dict[str, str] | None = None, cwd: PathLike | None = None, timeout: float | None = None, print_cmd: bool = False, **kwargs) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + + + + +

__init__(workflow[, executable, ...])

output_from_result(allow_stderr)

prompt_input(*args, **kwargs)

prompt_visualizer_layout_input([directory])

run()

validate(*args, **kwargs)

+
+

Attributes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

result

executable

workflow

is_editor_mode

is_start_flag

layout

layout_directory

additional_properties

cwd

timeout

print_cmd

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.apps.app_service.html b/_autosummary/aind_behavior_experiment_launcher.apps.app_service.html new file mode 100644 index 0000000..6e33493 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.apps.app_service.html @@ -0,0 +1,408 @@ + + + + + + + + + aind_behavior_experiment_launcher.apps.app_service - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.apps.app_service

+

Classes

+
+ + + + + + + + + +

App()

BonsaiApp(workflow[, executable, ...])

+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.apps.html b/_autosummary/aind_behavior_experiment_launcher.apps.html new file mode 100644 index 0000000..35013db --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.apps.html @@ -0,0 +1,405 @@ + + + + + + + + + aind_behavior_experiment_launcher.apps - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.html new file mode 100644 index 0000000..30d3bf7 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.html @@ -0,0 +1,460 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper

+
+
+class aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper[source]
+

Bases: DataMapperService[TAdsObject], ABC, Generic[TAdsObject]

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + + + + + + + +

__init__()

is_mapped()

map()

+
+

Attributes

+
+ + + + + + + + + + + + +

mapped

session_directory

session_name

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.html new file mode 100644 index 0000000..689c66d --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.html @@ -0,0 +1,460 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper

+
+
+class aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper[source]
+

Bases: AindDataSchemaDataMapper[Rig], ABC

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + + + + + + + +

__init__()

is_mapped()

map()

+
+

Attributes

+
+ + + + + + + + + + + + +

mapped

session_directory

session_name

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.html new file mode 100644 index 0000000..5e8c1af --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.html @@ -0,0 +1,460 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper

+
+
+class aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper[source]
+

Bases: AindDataSchemaDataMapper[Session], ABC

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + + + + + + + +

__init__()

is_mapped()

map()

+
+

Attributes

+
+ + + + + + + + + + + + +

mapped

session_directory

session_name

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.html new file mode 100644 index 0000000..cf5f915 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.html @@ -0,0 +1,411 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.aind_data_schema - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.html new file mode 100644 index 0000000..faab4b8 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.html @@ -0,0 +1,454 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService

+
+
+class aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService[source]
+

Bases: IService, ABC, Generic[TMapTo]

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + + + + + + + +

__init__()

is_mapped()

map()

+
+

Attributes

+
+ + + + + + +

mapped

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.html new file mode 100644 index 0000000..0dba4ad --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras

+
+
+aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras(rig_instance: AindBehaviorRigModel, exclude_without_video_writer: bool = True) Dict[str, WebCamera | SpinnakerCamera][source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.html new file mode 100644 index 0000000..9cc93ef --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type

+
+
+aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type(searchable: BaseModel | Dict | List, target_type: Type[T], *args, recursive: bool = True, stop_recursion_on_type: bool = True, **kwargs) List[Tuple[str | None, T]][source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.html new file mode 100644 index 0000000..28e6380 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.html @@ -0,0 +1,424 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.data_mapper_service - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.html new file mode 100644 index 0000000..299679c --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment

+
+
+aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment(config_file: PathLike = PosixPath('bonsai/bonsai.config')) Dict[str, str][source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.html new file mode 100644 index 0000000..ccecd24 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment

+
+
+aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment() Dict[str, str][source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_mappers.html b/_autosummary/aind_behavior_experiment_launcher.data_mappers.html new file mode 100644 index 0000000..71ae863 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_mappers.html @@ -0,0 +1,408 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_mappers - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.html new file mode 100644 index 0000000..f20b170 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.html @@ -0,0 +1,444 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService

+
+
+class aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService[source]
+

Bases: IService, ABC

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + + + + + + + +

__init__()

transfer()

validate()

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.html new file mode 100644 index 0000000..046d251 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.html @@ -0,0 +1,405 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer.data_transfer_service - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_transfer.data_transfer_service

+

Classes

+
+ + + + + + +

DataTransferService()

+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.html new file mode 100644 index 0000000..30a896a --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.html @@ -0,0 +1,411 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.html new file mode 100644 index 0000000..b6033b0 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.html @@ -0,0 +1,444 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService

+
+
+class aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService(source: PathLike, destination: PathLike, log: PathLike | None = None, extra_args: str | None = None, delete_src: bool = False, overwrite: bool = False, force_dir: bool = True)[source]
+

Bases: DataTransferService

+
+
+__init__(source: PathLike, destination: PathLike, log: PathLike | None = None, extra_args: str | None = None, delete_src: bool = False, overwrite: bool = False, force_dir: bool = True)[source]
+
+ +

Methods

+
+ + + + + + + + + + + + +

__init__(source, destination[, log, ...])

transfer()

validate()

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.html new file mode 100644 index 0000000..6e629d7 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.html @@ -0,0 +1,405 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer.robocopy_service - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_transfer.robocopy_service

+

Classes

+
+ + + + + + +

RobocopyService(source, destination[, log, ...])

+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.html new file mode 100644 index 0000000..606d582 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.html @@ -0,0 +1,486 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService

+
+
+class aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService(source: PathLike, destination: PathLike, aind_session_data_mapper: AindDataSchemaSessionDataMapper | None = None, schedule_time: time | None = datetime.time(20, 0), project_name: str | None = None, platform: Platform = BEHAVIOR(name='Behavior platform', abbreviation='behavior'), capsule_id: str | None = None, script: Dict[str, List[str]] | None = None, s3_bucket: BucketType = BucketType.PRIVATE, mount: str | None = None, force_cloud_sync: bool = True, transfer_endpoint: str = 'http://aind-data-transfer-service/api/v1/submit_jobs', validate: bool = True)[source]
+

Bases: DataTransferService

+
+
+__init__(source: PathLike, destination: PathLike, aind_session_data_mapper: AindDataSchemaSessionDataMapper | None = None, schedule_time: time | None = datetime.time(20, 0), project_name: str | None = None, platform: Platform = BEHAVIOR(name='Behavior platform', abbreviation='behavior'), capsule_id: str | None = None, script: Dict[str, List[str]] | None = None, s3_bucket: BucketType = BucketType.PRIVATE, mount: str | None = None, force_cloud_sync: bool = True, transfer_endpoint: str = 'http://aind-data-transfer-service/api/v1/submit_jobs', validate: bool = True) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

__init__(source, destination[, ...])

create_manifest_config_from_ads_session(...)

Create a ManifestConfig object

create_watch_config(watched_directory, ...)

Create a WatchConfig object

dump_manifest_config([path, make_dir])

force_restart([kill_if_running])

is_running()

is_valid_project_name()

transfer()

validate([create_config])

+
+

Attributes

+
+ + + + + + +

aind_session_data_mapper

+
+
+
+create_manifest_config_from_ads_session(ads_session: Session, ads_schemas: List[PathLike] | None = None, session_name: str | None = None) ManifestConfig[source]
+

Create a ManifestConfig object

+
+ +
+
+static create_watch_config(watched_directory: PathLike, manifest_complete_directory: PathLike, webhook_url: str | None = None, create_dir: bool = True) WatchConfig[source]
+

Create a WatchConfig object

+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.html b/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.html new file mode 100644 index 0000000..695aa3c --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.html @@ -0,0 +1,405 @@ + + + + + + + + + aind_behavior_experiment_launcher.data_transfer.watchdog_service - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.data_transfer.watchdog_service

+

Classes

+
+ + + + + + +

WatchdogDataTransferService(source, destination)

+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.html b/_autosummary/aind_behavior_experiment_launcher.html new file mode 100644 index 0000000..56afee7 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.html @@ -0,0 +1,429 @@ + + + + + + + + + aind_behavior_experiment_launcher - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.html b/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.html new file mode 100644 index 0000000..4d4ba73 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.html @@ -0,0 +1,488 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher.BaseLauncher - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.launcher.BaseLauncher

+
+
+class aind_behavior_experiment_launcher.launcher.BaseLauncher(rig_schema_model: Type[TRig], session_schema_model: Type[TSession], task_logic_schema_model: Type[TTaskLogic], data_dir: PathLike, config_library_dir: PathLike, temp_dir: PathLike = PosixPath('local/.temp'), repository_dir: PathLike | None = None, allow_dirty: bool = False, skip_hardware_validation: bool = False, debug_mode: bool = False, group_by_subject_log: bool = False, services: ServicesFactoryManager | None = None, validate_init: bool = True, attached_logger: Logger | None = None)[source]
+

Bases: Generic[TRig, TSession, TTaskLogic]

+
+
+__init__(rig_schema_model: Type[TRig], session_schema_model: Type[TSession], task_logic_schema_model: Type[TTaskLogic], data_dir: PathLike, config_library_dir: PathLike, temp_dir: PathLike = PosixPath('local/.temp'), repository_dir: PathLike | None = None, allow_dirty: bool = False, skip_hardware_validation: bool = False, debug_mode: bool = False, group_by_subject_log: bool = False, services: ServicesFactoryManager | None = None, validate_init: bool = True, attached_logger: Logger | None = None) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + +

__init__(rig_schema_model, ...[, temp_dir, ...])

abspath(path)

dispose()

main()

validate()

Validates the dependencies required for the launcher to run.

+
+

Attributes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

RIG_DIR

SUBJECT_DIR

TASK_LOGIC_DIR

rig_schema

services_factory_manager

session_directory

session_schema

task_logic_schema

+
+
+
+validate() None[source]
+

Validates the dependencies required for the launcher to run.

+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.html b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.html new file mode 100644 index 0000000..d2c7cf8 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.html @@ -0,0 +1,488 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher

+
+
+class aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher(*args, **kwargs)[source]
+

Bases: BaseLauncher, Generic[TRig, TSession, TTaskLogic]

+
+
+__init__(*args, **kwargs) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + +

__init__(*args, **kwargs)

abspath(path)

dispose()

main()

validate()

Validates the dependencies required for the launcher to run.

+
+

Attributes

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

RIG_DIR

SUBJECT_DIR

TASK_LOGIC_DIR

rig_schema

services_factory_manager

session_directory

session_schema

task_logic_schema

+
+
+
+validate() None[source]
+

Validates the dependencies required for the launcher to run.

+
+ +
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.html b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.html new file mode 100644 index 0000000..a82c93e --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.html @@ -0,0 +1,493 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager

+
+
+class aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager(launcher: BehaviorLauncher | None = None, **kwargs)[source]
+

Bases: ServicesFactoryManager

+
+
+__init__(launcher: BehaviorLauncher | None = None, **kwargs) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

__init__([launcher])

attach_bonsai_app(value)

attach_data_mapper(value)

attach_data_transfer(value)

attach_resource_monitor(value)

attach_service_factory(name, service_factory)

detach_service_factory(name)

get_services_of_type(service_type)

map(delegate)

register_launcher(launcher)

try_get_service(name)

+
+

Attributes

+
+ + + + + + + + + + + + + + + + + + + + + +

bonsai_app

data_mapper

data_transfer

launcher

resource_monitor

services

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.html b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.html new file mode 100644 index 0000000..bf95f87 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.html @@ -0,0 +1,421 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher.behavior_launcher - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.html b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.html new file mode 100644 index 0000000..2937c10 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory

+
+
+aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory(destination: PathLike, **robocopy_kwargs) Callable[[BehaviorLauncher], RobocopyService][source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.html b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.html new file mode 100644 index 0000000..ac71e08 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory

+
+
+aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory(*, destination: PathLike, schedule_time: time | None = datetime.time(20, 0), project_name: str | None = None, **watchdog_kwargs) Callable[[BehaviorLauncher], WatchdogDataTransferService][source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.launcher.html b/_autosummary/aind_behavior_experiment_launcher.launcher.html new file mode 100644 index 0000000..507208c --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.launcher.html @@ -0,0 +1,415 @@ + + + + + + + + + aind_behavior_experiment_launcher.launcher - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.html b/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.html new file mode 100644 index 0000000..df30006 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.logging_helper.add_file_logger - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.logging_helper.add_file_logger

+
+
+aind_behavior_experiment_launcher.logging_helper.add_file_logger(logger: TLogger, output_path: PathLike) TLogger[source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.html b/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.html new file mode 100644 index 0000000..80bf715 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.logging_helper.close_file_handlers - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.logging_helper.close_file_handlers

+
+
+aind_behavior_experiment_launcher.logging_helper.close_file_handlers(logger: TLogger) TLogger[source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.logging_helper.html b/_autosummary/aind_behavior_experiment_launcher.logging_helper.html new file mode 100644 index 0000000..32ae7cf --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.logging_helper.html @@ -0,0 +1,411 @@ + + + + + + + + + aind_behavior_experiment_launcher.logging_helper - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.html b/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.html new file mode 100644 index 0000000..772d789 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.logging_helper.shutdown_logger - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.logging_helper.shutdown_logger

+
+
+aind_behavior_experiment_launcher.logging_helper.shutdown_logger(logger: TLogger) None[source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.records.html b/_autosummary/aind_behavior_experiment_launcher.records.html new file mode 100644 index 0000000..a73b503 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.records.html @@ -0,0 +1,405 @@ + + + + + + + + + aind_behavior_experiment_launcher.records - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.records.subject.html b/_autosummary/aind_behavior_experiment_launcher.records.subject.html new file mode 100644 index 0000000..8c1737d --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.records.subject.html @@ -0,0 +1,395 @@ + + + + + + + + + aind_behavior_experiment_launcher.records.subject - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.records.subject

+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.resource_monitor.html b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.html new file mode 100644 index 0000000..236aadb --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.html @@ -0,0 +1,405 @@ + + + + + + + + + aind_behavior_experiment_launcher.resource_monitor - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.html b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.html new file mode 100644 index 0000000..4da460a --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.html @@ -0,0 +1,463 @@ + + + + + + + + + aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint

+
+
+class aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint(name: 'str', constraint: 'Callable[..., bool]', args: 'List' = <factory>, kwargs: 'dict' = <factory>, fail_msg_handler: 'Optional[Callable[..., str]]' = None)[source]
+

Bases: object

+
+
+__init__(name: str, constraint: ~typing.Callable[[...], bool], args: ~typing.List = <factory>, kwargs: dict = <factory>, fail_msg_handler: ~typing.Callable[[...], str] | None = None) None[source]
+
+ +

Methods

+
+ + + + + + + + + +

__init__(name, constraint[, args, kwargs, ...])

on_fail()

+
+

Attributes

+
+ + + + + + + + + + + + + + + + + + +

fail_msg_handler

name

constraint

args

kwargs

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.html b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.html new file mode 100644 index 0000000..af00bbb --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.html @@ -0,0 +1,450 @@ + + + + + + + + + aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor

+
+
+class aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor(*args, constrains: List[Constraint] | None = None, **kwargs)[source]
+

Bases: IService

+
+
+__init__(*args, constrains: List[Constraint] | None = None, **kwargs) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + +

__init__(*args[, constrains])

add_constraint(constraint)

evaluate_constraints()

remove_constraint(constraint)

validate(*args, **kwargs)

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.html b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.html new file mode 100644 index 0000000..51a5417 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory

+
+
+aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory(drive: str = 'C:\\', min_bytes: float = 200000000000.0) Constraint[source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.html b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.html new file mode 100644 index 0000000..d2caa23 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.html @@ -0,0 +1,421 @@ + + + + + + + + + aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.html b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.html new file mode 100644 index 0000000..acbfa66 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory

+
+
+aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory(dir_path: PathLike) Constraint[source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.services.IService.html b/_autosummary/aind_behavior_experiment_launcher.services.IService.html new file mode 100644 index 0000000..d3db832 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.services.IService.html @@ -0,0 +1,439 @@ + + + + + + + + + aind_behavior_experiment_launcher.services.IService - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.services.IService

+
+
+class aind_behavior_experiment_launcher.services.IService[source]
+

Bases: ABC

+

A base class for all services that defines a minimal interface

+
+
+__init__()[source]
+
+ +

Methods

+
+ + + + + + +

__init__()

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.html b/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.html new file mode 100644 index 0000000..6775fd7 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.html @@ -0,0 +1,455 @@ + + + + + + + + + aind_behavior_experiment_launcher.services.ServiceFactory - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.services.ServiceFactory

+
+
+class aind_behavior_experiment_launcher.services.ServiceFactory(service_or_factory: TService)[source]
+
+class aind_behavior_experiment_launcher.services.ServiceFactory(service_or_factory: Callable[[BaseLauncher], TService])
+

Bases: Generic[TService]

+
+
+__init__(service_or_factory: TService) None[source]
+
+__init__(service_or_factory: Callable[[BaseLauncher], TService]) None
+
+ +

Methods

+
+ + + + + + + + + +

__init__()

build(launcher, *args, **kwargs)

+
+

Attributes

+
+ + + + + + +

service

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.html b/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.html new file mode 100644 index 0000000..85d1414 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.html @@ -0,0 +1,469 @@ + + + + + + + + + aind_behavior_experiment_launcher.services.ServicesFactoryManager - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.services.ServicesFactoryManager

+
+
+class aind_behavior_experiment_launcher.services.ServicesFactoryManager(launcher: BaseLauncher | None = None, **kwargs)[source]
+

Bases: object

+
+
+__init__(launcher: BaseLauncher | None = None, **kwargs) None[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + + + + + + + +

__init__([launcher])

attach_service_factory(name, service_factory)

detach_service_factory(name)

get_services_of_type(service_type)

map(delegate)

register_launcher(launcher)

try_get_service(name)

+
+

Attributes

+
+ + + + + + + + + +

launcher

services

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.services.html b/_autosummary/aind_behavior_experiment_launcher.services.html new file mode 100644 index 0000000..f418f4d --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.services.html @@ -0,0 +1,411 @@ + + + + + + + + + aind_behavior_experiment_launcher.services - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.html b/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.html new file mode 100644 index 0000000..a983944 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.html @@ -0,0 +1,466 @@ + + + + + + + + + aind_behavior_experiment_launcher.ui_helper.UIHelper - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.ui_helper.UIHelper

+
+
+class aind_behavior_experiment_launcher.ui_helper.UIHelper(print_func: ~typing.Callable[[str], None] = <built-in function print>)[source]
+

Bases: object

+
+
+__init__(print_func: ~typing.Callable[[str], None] = <built-in function print>)[source]
+
+ +

Methods

+
+ + + + + + + + + + + + + + + + + + + + + + + + +

__init__([print_func])

choose_subject(subject_list)

make_header(task_logic_schema_model, ...)

prompt_experimenter([strict])

prompt_get_notes()

prompt_pick_file_from_list(available_files)

prompt_yes_no_question(prompt)

+
+

Attributes

+
+ + + + + + +

T

+
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.ui_helper.html b/_autosummary/aind_behavior_experiment_launcher.ui_helper.html new file mode 100644 index 0000000..c227124 --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.ui_helper.html @@ -0,0 +1,415 @@ + + + + + + + + + aind_behavior_experiment_launcher.ui_helper - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.ui_helper

+

Functions

+
+ + + + + + +

prompt_field_from_input(model, field_name[, ...])

+
+

Classes

+
+ + + + + + +

UIHelper(print_func, None] =)

+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.html b/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.html new file mode 100644 index 0000000..9c8256c --- /dev/null +++ b/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.html @@ -0,0 +1,419 @@ + + + + + + + + + aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input - AIND Behavior Experiment Launcher + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+
+

aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input

+
+
+aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input(model: TModel, field_name: str, default: T | None = None) T | None[source]
+
+ +
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.rst.txt new file mode 100644 index 0000000..74452d7 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.App.rst.txt @@ -0,0 +1,28 @@ +aind\_behavior\_experiment\_launcher.apps.app\_service.App +========================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.apps.app_service + +.. autoclass:: App + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~App.__init__ + ~App.output_from_result + ~App.prompt_input + ~App.run + + + + + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.rst.txt new file mode 100644 index 0000000..e1b3f71 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.BonsaiApp.rst.txt @@ -0,0 +1,46 @@ +aind\_behavior\_experiment\_launcher.apps.app\_service.BonsaiApp +================================================================ + +.. currentmodule:: aind_behavior_experiment_launcher.apps.app_service + +.. autoclass:: BonsaiApp + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~BonsaiApp.__init__ + ~BonsaiApp.output_from_result + ~BonsaiApp.prompt_input + ~BonsaiApp.prompt_visualizer_layout_input + ~BonsaiApp.run + ~BonsaiApp.validate + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~BonsaiApp.result + ~BonsaiApp.executable + ~BonsaiApp.workflow + ~BonsaiApp.is_editor_mode + ~BonsaiApp.is_start_flag + ~BonsaiApp.layout + ~BonsaiApp.layout_directory + ~BonsaiApp.additional_properties + ~BonsaiApp.cwd + ~BonsaiApp.timeout + ~BonsaiApp.print_cmd + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.rst.txt new file mode 100644 index 0000000..6377344 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.app_service.rst.txt @@ -0,0 +1,32 @@ +aind\_behavior\_experiment\_launcher.apps.app\_service +====================================================== + +.. automodule:: aind_behavior_experiment_launcher.apps.app_service + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + App + BonsaiApp + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.apps.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.rst.txt new file mode 100644 index 0000000..aef7638 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.apps.rst.txt @@ -0,0 +1,32 @@ +aind\_behavior\_experiment\_launcher.apps +========================================= + +.. automodule:: aind_behavior_experiment_launcher.apps + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.apps.app_service + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.rst.txt new file mode 100644 index 0000000..134bc59 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaDataMapper.rst.txt @@ -0,0 +1,35 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.aind\_data\_schema.AindDataSchemaDataMapper +============================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.aind_data_schema + +.. autoclass:: AindDataSchemaDataMapper + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~AindDataSchemaDataMapper.__init__ + ~AindDataSchemaDataMapper.is_mapped + ~AindDataSchemaDataMapper.map + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~AindDataSchemaDataMapper.mapped + ~AindDataSchemaDataMapper.session_directory + ~AindDataSchemaDataMapper.session_name + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.rst.txt new file mode 100644 index 0000000..ab9149d --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaRigDataMapper.rst.txt @@ -0,0 +1,35 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.aind\_data\_schema.AindDataSchemaRigDataMapper +================================================================================================= + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.aind_data_schema + +.. autoclass:: AindDataSchemaRigDataMapper + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~AindDataSchemaRigDataMapper.__init__ + ~AindDataSchemaRigDataMapper.is_mapped + ~AindDataSchemaRigDataMapper.map + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~AindDataSchemaRigDataMapper.mapped + ~AindDataSchemaRigDataMapper.session_directory + ~AindDataSchemaRigDataMapper.session_name + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.rst.txt new file mode 100644 index 0000000..e805206 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.AindDataSchemaSessionDataMapper.rst.txt @@ -0,0 +1,35 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.aind\_data\_schema.AindDataSchemaSessionDataMapper +===================================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.aind_data_schema + +.. autoclass:: AindDataSchemaSessionDataMapper + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~AindDataSchemaSessionDataMapper.__init__ + ~AindDataSchemaSessionDataMapper.is_mapped + ~AindDataSchemaSessionDataMapper.map + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~AindDataSchemaSessionDataMapper.mapped + ~AindDataSchemaSessionDataMapper.session_directory + ~AindDataSchemaSessionDataMapper.session_name + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.rst.txt new file mode 100644 index 0000000..b5542e5 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.aind_data_schema.rst.txt @@ -0,0 +1,33 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.aind\_data\_schema +===================================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_mappers.aind_data_schema + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + AindDataSchemaDataMapper + AindDataSchemaRigDataMapper + AindDataSchemaSessionDataMapper + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.rst.txt new file mode 100644 index 0000000..edc4418 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.DataMapperService.rst.txt @@ -0,0 +1,33 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.data\_mapper\_service.DataMapperService +========================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.data_mapper_service + +.. autoclass:: DataMapperService + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~DataMapperService.__init__ + ~DataMapperService.is_mapped + ~DataMapperService.map + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~DataMapperService.mapped + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.rst.txt new file mode 100644 index 0000000..69eb637 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_cameras.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.data\_mapper\_service.get\_cameras +===================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.data_mapper_service + +.. autofunction:: get_cameras \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.rst.txt new file mode 100644 index 0000000..302db10 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.get_fields_of_type.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.data\_mapper\_service.get\_fields\_of\_type +============================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.data_mapper_service + +.. autofunction:: get_fields_of_type \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.rst.txt new file mode 100644 index 0000000..7f93286 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.rst.txt @@ -0,0 +1,41 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.data\_mapper\_service +======================================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_mappers.data_mapper_service + + + + + + + + .. rubric:: Functions + + .. autosummary:: + :toctree: + + get_cameras + get_fields_of_type + snapshot_bonsai_environment + snapshot_python_environment + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + DataMapperService + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.rst.txt new file mode 100644 index 0000000..8c8c874 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_bonsai_environment.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.data\_mapper\_service.snapshot\_bonsai\_environment +====================================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.data_mapper_service + +.. autofunction:: snapshot_bonsai_environment \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.rst.txt new file mode 100644 index 0000000..40ec6ba --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.data_mapper_service.snapshot_python_environment.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.data\_mappers.data\_mapper\_service.snapshot\_python\_environment +====================================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_mappers.data_mapper_service + +.. autofunction:: snapshot_python_environment \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.rst.txt new file mode 100644 index 0000000..b124ede --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_mappers.rst.txt @@ -0,0 +1,33 @@ +aind\_behavior\_experiment\_launcher.data\_mappers +================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_mappers + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.data_mappers.aind_data_schema + aind_behavior_experiment_launcher.data_mappers.data_mapper_service + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.rst.txt new file mode 100644 index 0000000..302acc3 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.DataTransferService.rst.txt @@ -0,0 +1,27 @@ +aind\_behavior\_experiment\_launcher.data\_transfer.data\_transfer\_service.DataTransferService +=============================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_transfer.data_transfer_service + +.. autoclass:: DataTransferService + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~DataTransferService.__init__ + ~DataTransferService.transfer + ~DataTransferService.validate + + + + + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.rst.txt new file mode 100644 index 0000000..3b935ee --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.data_transfer_service.rst.txt @@ -0,0 +1,31 @@ +aind\_behavior\_experiment\_launcher.data\_transfer.data\_transfer\_service +=========================================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_transfer.data_transfer_service + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + DataTransferService + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.rst.txt new file mode 100644 index 0000000..a46b533 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.RobocopyService.rst.txt @@ -0,0 +1,27 @@ +aind\_behavior\_experiment\_launcher.data\_transfer.robocopy\_service.RobocopyService +===================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.data_transfer.robocopy_service + +.. autoclass:: RobocopyService + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~RobocopyService.__init__ + ~RobocopyService.transfer + ~RobocopyService.validate + + + + + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.rst.txt new file mode 100644 index 0000000..f9a5171 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.robocopy_service.rst.txt @@ -0,0 +1,31 @@ +aind\_behavior\_experiment\_launcher.data\_transfer.robocopy\_service +===================================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_transfer.robocopy_service + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + RobocopyService + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.rst.txt new file mode 100644 index 0000000..56c1bd7 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.rst.txt @@ -0,0 +1,34 @@ +aind\_behavior\_experiment\_launcher.data\_transfer +=================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_transfer + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.data_transfer.data_transfer_service + aind_behavior_experiment_launcher.data_transfer.robocopy_service + aind_behavior_experiment_launcher.data_transfer.watchdog_service + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.rst.txt new file mode 100644 index 0000000..4d2c269 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.WatchdogDataTransferService.rst.txt @@ -0,0 +1,39 @@ +aind\_behavior\_experiment\_launcher.data\_transfer.watchdog\_service.WatchdogDataTransferService +================================================================================================= + +.. currentmodule:: aind_behavior_experiment_launcher.data_transfer.watchdog_service + +.. autoclass:: WatchdogDataTransferService + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~WatchdogDataTransferService.__init__ + ~WatchdogDataTransferService.create_manifest_config_from_ads_session + ~WatchdogDataTransferService.create_watch_config + ~WatchdogDataTransferService.dump_manifest_config + ~WatchdogDataTransferService.force_restart + ~WatchdogDataTransferService.is_running + ~WatchdogDataTransferService.is_valid_project_name + ~WatchdogDataTransferService.transfer + ~WatchdogDataTransferService.validate + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~WatchdogDataTransferService.aind_session_data_mapper + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.rst.txt new file mode 100644 index 0000000..d0f308c --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.data_transfer.watchdog_service.rst.txt @@ -0,0 +1,31 @@ +aind\_behavior\_experiment\_launcher.data\_transfer.watchdog\_service +===================================================================== + +.. automodule:: aind_behavior_experiment_launcher.data_transfer.watchdog_service + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + WatchdogDataTransferService + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.rst.txt new file mode 100644 index 0000000..acf4336 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.BaseLauncher.rst.txt @@ -0,0 +1,42 @@ +aind\_behavior\_experiment\_launcher.launcher.BaseLauncher +========================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.launcher + +.. autoclass:: BaseLauncher + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~BaseLauncher.__init__ + ~BaseLauncher.abspath + ~BaseLauncher.dispose + ~BaseLauncher.main + ~BaseLauncher.validate + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~BaseLauncher.RIG_DIR + ~BaseLauncher.SUBJECT_DIR + ~BaseLauncher.TASK_LOGIC_DIR + ~BaseLauncher.rig_schema + ~BaseLauncher.services_factory_manager + ~BaseLauncher.session_directory + ~BaseLauncher.session_schema + ~BaseLauncher.task_logic_schema + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.rst.txt new file mode 100644 index 0000000..49b978b --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorLauncher.rst.txt @@ -0,0 +1,42 @@ +aind\_behavior\_experiment\_launcher.launcher.behavior\_launcher.BehaviorLauncher +================================================================================= + +.. currentmodule:: aind_behavior_experiment_launcher.launcher.behavior_launcher + +.. autoclass:: BehaviorLauncher + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~BehaviorLauncher.__init__ + ~BehaviorLauncher.abspath + ~BehaviorLauncher.dispose + ~BehaviorLauncher.main + ~BehaviorLauncher.validate + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~BehaviorLauncher.RIG_DIR + ~BehaviorLauncher.SUBJECT_DIR + ~BehaviorLauncher.TASK_LOGIC_DIR + ~BehaviorLauncher.rig_schema + ~BehaviorLauncher.services_factory_manager + ~BehaviorLauncher.session_directory + ~BehaviorLauncher.session_schema + ~BehaviorLauncher.task_logic_schema + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.rst.txt new file mode 100644 index 0000000..15f8d1c --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.BehaviorServicesFactoryManager.rst.txt @@ -0,0 +1,46 @@ +aind\_behavior\_experiment\_launcher.launcher.behavior\_launcher.BehaviorServicesFactoryManager +=============================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.launcher.behavior_launcher + +.. autoclass:: BehaviorServicesFactoryManager + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~BehaviorServicesFactoryManager.__init__ + ~BehaviorServicesFactoryManager.attach_bonsai_app + ~BehaviorServicesFactoryManager.attach_data_mapper + ~BehaviorServicesFactoryManager.attach_data_transfer + ~BehaviorServicesFactoryManager.attach_resource_monitor + ~BehaviorServicesFactoryManager.attach_service_factory + ~BehaviorServicesFactoryManager.detach_service_factory + ~BehaviorServicesFactoryManager.get_services_of_type + ~BehaviorServicesFactoryManager.map + ~BehaviorServicesFactoryManager.register_launcher + ~BehaviorServicesFactoryManager.try_get_service + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~BehaviorServicesFactoryManager.bonsai_app + ~BehaviorServicesFactoryManager.data_mapper + ~BehaviorServicesFactoryManager.data_transfer + ~BehaviorServicesFactoryManager.launcher + ~BehaviorServicesFactoryManager.resource_monitor + ~BehaviorServicesFactoryManager.services + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.rst.txt new file mode 100644 index 0000000..270ea22 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.robocopy_data_transfer_factory.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.launcher.behavior\_launcher.robocopy\_data\_transfer\_factory +================================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.launcher.behavior_launcher + +.. autofunction:: robocopy_data_transfer_factory \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.rst.txt new file mode 100644 index 0000000..b6b8541 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.rst.txt @@ -0,0 +1,40 @@ +aind\_behavior\_experiment\_launcher.launcher.behavior\_launcher +================================================================ + +.. automodule:: aind_behavior_experiment_launcher.launcher.behavior_launcher + + + + + + + + .. rubric:: Functions + + .. autosummary:: + :toctree: + + robocopy_data_transfer_factory + watchdog_data_transfer_factory + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + BehaviorLauncher + BehaviorServicesFactoryManager + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.rst.txt new file mode 100644 index 0000000..0794f62 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.behavior_launcher.watchdog_data_transfer_factory.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.launcher.behavior\_launcher.watchdog\_data\_transfer\_factory +================================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.launcher.behavior_launcher + +.. autofunction:: watchdog_data_transfer_factory \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.rst.txt new file mode 100644 index 0000000..c8d15a3 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.launcher.rst.txt @@ -0,0 +1,40 @@ +aind\_behavior\_experiment\_launcher.launcher +============================================= + +.. automodule:: aind_behavior_experiment_launcher.launcher + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + BaseLauncher + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.launcher.behavior_launcher + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.rst.txt new file mode 100644 index 0000000..af47bd6 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.add_file_logger.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.logging\_helper.add\_file\_logger +====================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.logging_helper + +.. autofunction:: add_file_logger \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.rst.txt new file mode 100644 index 0000000..0633c18 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.close_file_handlers.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.logging\_helper.close\_file\_handlers +========================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.logging_helper + +.. autofunction:: close_file_handlers \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.rst.txt new file mode 100644 index 0000000..62022e6 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.rst.txt @@ -0,0 +1,32 @@ +aind\_behavior\_experiment\_launcher.logging\_helper +==================================================== + +.. automodule:: aind_behavior_experiment_launcher.logging_helper + + + + + + + + .. rubric:: Functions + + .. autosummary:: + :toctree: + + add_file_logger + close_file_handlers + shutdown_logger + + + + + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.rst.txt new file mode 100644 index 0000000..847b60e --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.logging_helper.shutdown_logger.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.logging\_helper.shutdown\_logger +===================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.logging_helper + +.. autofunction:: shutdown_logger \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.records.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.records.rst.txt new file mode 100644 index 0000000..2a7eaa6 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.records.rst.txt @@ -0,0 +1,32 @@ +aind\_behavior\_experiment\_launcher.records +============================================ + +.. automodule:: aind_behavior_experiment_launcher.records + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.records.subject + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.records.subject.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.records.subject.rst.txt new file mode 100644 index 0000000..7d033db --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.records.subject.rst.txt @@ -0,0 +1,23 @@ +aind\_behavior\_experiment\_launcher.records.subject +==================================================== + +.. automodule:: aind_behavior_experiment_launcher.records.subject + + + + + + + + + + + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.rst.txt new file mode 100644 index 0000000..75915ec --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.Constraint.rst.txt @@ -0,0 +1,36 @@ +aind\_behavior\_experiment\_launcher.resource\_monitor.resource\_monitor\_service.Constraint +============================================================================================ + +.. currentmodule:: aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service + +.. autoclass:: Constraint + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~Constraint.__init__ + ~Constraint.on_fail + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~Constraint.fail_msg_handler + ~Constraint.name + ~Constraint.constraint + ~Constraint.args + ~Constraint.kwargs + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.rst.txt new file mode 100644 index 0000000..6b56a94 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.ResourceMonitor.rst.txt @@ -0,0 +1,29 @@ +aind\_behavior\_experiment\_launcher.resource\_monitor.resource\_monitor\_service.ResourceMonitor +================================================================================================= + +.. currentmodule:: aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service + +.. autoclass:: ResourceMonitor + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~ResourceMonitor.__init__ + ~ResourceMonitor.add_constraint + ~ResourceMonitor.evaluate_constraints + ~ResourceMonitor.remove_constraint + ~ResourceMonitor.validate + + + + + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.rst.txt new file mode 100644 index 0000000..5f5021b --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.available_storage_constraint_factory.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.resource\_monitor.resource\_monitor\_service.available\_storage\_constraint\_factory +========================================================================================================================= + +.. currentmodule:: aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service + +.. autofunction:: available_storage_constraint_factory \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.rst.txt new file mode 100644 index 0000000..48f4a96 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.remote_dir_exists_constraint_factory.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.resource\_monitor.resource\_monitor\_service.remote\_dir\_exists\_constraint\_factory +========================================================================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service + +.. autofunction:: remote_dir_exists_constraint_factory \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.rst.txt new file mode 100644 index 0000000..2fe31df --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service.rst.txt @@ -0,0 +1,40 @@ +aind\_behavior\_experiment\_launcher.resource\_monitor.resource\_monitor\_service +================================================================================= + +.. automodule:: aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service + + + + + + + + .. rubric:: Functions + + .. autosummary:: + :toctree: + + available_storage_constraint_factory + remote_dir_exists_constraint_factory + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + Constraint + ResourceMonitor + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.rst.txt new file mode 100644 index 0000000..e0455f4 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.resource_monitor.rst.txt @@ -0,0 +1,32 @@ +aind\_behavior\_experiment\_launcher.resource\_monitor +====================================================== + +.. automodule:: aind_behavior_experiment_launcher.resource_monitor + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.resource_monitor.resource_monitor_service + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.rst.txt new file mode 100644 index 0000000..8fb396f --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.rst.txt @@ -0,0 +1,40 @@ +aind\_behavior\_experiment\_launcher +==================================== + +.. automodule:: aind_behavior_experiment_launcher + + + + + + + + + + + + + + + + + + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :template: custom-module-template.rst + :recursive: + + aind_behavior_experiment_launcher.apps + aind_behavior_experiment_launcher.data_mappers + aind_behavior_experiment_launcher.data_transfer + aind_behavior_experiment_launcher.launcher + aind_behavior_experiment_launcher.logging_helper + aind_behavior_experiment_launcher.records + aind_behavior_experiment_launcher.resource_monitor + aind_behavior_experiment_launcher.services + aind_behavior_experiment_launcher.ui_helper + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.services.IService.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.services.IService.rst.txt new file mode 100644 index 0000000..9a52b13 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.services.IService.rst.txt @@ -0,0 +1,25 @@ +aind\_behavior\_experiment\_launcher.services.IService +====================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.services + +.. autoclass:: IService + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~IService.__init__ + + + + + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.rst.txt new file mode 100644 index 0000000..5006eb5 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.services.ServiceFactory.rst.txt @@ -0,0 +1,32 @@ +aind\_behavior\_experiment\_launcher.services.ServiceFactory +============================================================ + +.. currentmodule:: aind_behavior_experiment_launcher.services + +.. autoclass:: ServiceFactory + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~ServiceFactory.__init__ + ~ServiceFactory.build + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~ServiceFactory.service + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.rst.txt new file mode 100644 index 0000000..3435dc6 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.services.ServicesFactoryManager.rst.txt @@ -0,0 +1,38 @@ +aind\_behavior\_experiment\_launcher.services.ServicesFactoryManager +==================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.services + +.. autoclass:: ServicesFactoryManager + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~ServicesFactoryManager.__init__ + ~ServicesFactoryManager.attach_service_factory + ~ServicesFactoryManager.detach_service_factory + ~ServicesFactoryManager.get_services_of_type + ~ServicesFactoryManager.map + ~ServicesFactoryManager.register_launcher + ~ServicesFactoryManager.try_get_service + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~ServicesFactoryManager.launcher + ~ServicesFactoryManager.services + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.services.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.services.rst.txt new file mode 100644 index 0000000..9818aa0 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.services.rst.txt @@ -0,0 +1,33 @@ +aind\_behavior\_experiment\_launcher.services +============================================= + +.. automodule:: aind_behavior_experiment_launcher.services + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + IService + ServiceFactory + ServicesFactoryManager + + + + + + + + + diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.rst.txt new file mode 100644 index 0000000..9fa7dca --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.UIHelper.rst.txt @@ -0,0 +1,37 @@ +aind\_behavior\_experiment\_launcher.ui\_helper.UIHelper +======================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.ui_helper + +.. autoclass:: UIHelper + :members: + :show-inheritance: + :inherited-members: + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~UIHelper.__init__ + ~UIHelper.choose_subject + ~UIHelper.make_header + ~UIHelper.prompt_experimenter + ~UIHelper.prompt_get_notes + ~UIHelper.prompt_pick_file_from_list + ~UIHelper.prompt_yes_no_question + + + + + + .. rubric:: Attributes + + .. autosummary:: + + ~UIHelper.T + + \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.rst.txt new file mode 100644 index 0000000..0dd4250 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.prompt_field_from_input.rst.txt @@ -0,0 +1,6 @@ +aind\_behavior\_experiment\_launcher.ui\_helper.prompt\_field\_from\_input +========================================================================== + +.. currentmodule:: aind_behavior_experiment_launcher.ui_helper + +.. autofunction:: prompt_field_from_input \ No newline at end of file diff --git a/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.rst.txt b/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.rst.txt new file mode 100644 index 0000000..408c5b8 --- /dev/null +++ b/_sources/_autosummary/aind_behavior_experiment_launcher.ui_helper.rst.txt @@ -0,0 +1,38 @@ +aind\_behavior\_experiment\_launcher.ui\_helper +=============================================== + +.. automodule:: aind_behavior_experiment_launcher.ui_helper + + + + + + + + .. rubric:: Functions + + .. autosummary:: + :toctree: + + prompt_field_from_input + + + + + + .. rubric:: Classes + + .. autosummary:: + :toctree: + :template: custom-class-template.rst + + UIHelper + + + + + + + + + diff --git a/_sources/articles.rst.txt b/_sources/articles.rst.txt new file mode 100644 index 0000000..02e5869 --- /dev/null +++ b/_sources/articles.rst.txt @@ -0,0 +1,8 @@ +Articles +-------------- +.. toctree:: + :maxdepth: 4 + :caption: Contents: + :glob: + + articles/* diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 0000000..6389143 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,35 @@ +Welcome to AIND Behavior Experiment Launcher's documentation! +================================================================= + +.. mdinclude:: ../README.md + + +.. autosummary:: + + :toctree: _autosummary + :caption: API + :template: custom-module-template.rst + :recursive: + + + aind_behavior_experiment_launcher + + +.. toctree:: + :maxdepth: 4 + :caption: Contents: + + self + _autosummary/aind_behavior_experiment_launcher + articles + GitHub Source Code + + + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`search` diff --git a/_static/autodoc_pydantic.css b/_static/autodoc_pydantic.css new file mode 100644 index 0000000..994a3e5 --- /dev/null +++ b/_static/autodoc_pydantic.css @@ -0,0 +1,11 @@ +.autodoc_pydantic_validator_arrow { + padding-left: 8px; + } + +.autodoc_pydantic_collapsable_json { + cursor: pointer; + } + +.autodoc_pydantic_collapsable_erd { + cursor: pointer; + } \ No newline at end of file diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..30fee9d --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/dark-logo.svg b/_static/dark-logo.svg new file mode 100644 index 0000000..dcc68fb --- /dev/null +++ b/_static/dark-logo.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/debug.css b/_static/debug.css new file mode 100644 index 0000000..74d4aec --- /dev/null +++ b/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..e5baf5a --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.2.0-rc6', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/favicon.ico b/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4cec150488e1d2c857ce6e4c1f73b0f048a6bc42 GIT binary patch literal 259838 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 literal 0 HcmV?d00001 diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/light-logo.svg b/_static/light-logo.svg new file mode 100644 index 0000000..b20cb67 --- /dev/null +++ b/_static/light-logo.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..02b4b12 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,258 @@ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #204a87; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #000000; font-style: italic } /* Generic.Output */ +.highlight .gp { color: #8f5902 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #204a87 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #404040 } +body[data-theme="dark"] .highlight { background: #202020; color: #d0d0d0 } +body[data-theme="dark"] .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #d0d0d0 } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #d0d0d0 } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #d0d0d0 } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #d0d0d0 } /* Name */ +body[data-theme="dark"] .highlight .o { color: #d0d0d0 } /* Operator */ +body[data-theme="dark"] .highlight .x { color: #d0d0d0 } /* Other */ +body[data-theme="dark"] .highlight .p { color: #d0d0d0 } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #cccccc } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #51b2fd } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #ed9d13 } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #40ffff } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #71adff } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #d0d0d0 } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #40ffff } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #666666 } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } +body:not([data-theme="light"]) .highlight { background: #202020; color: #d0d0d0 } +body:not([data-theme="light"]) .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #d0d0d0 } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #d0d0d0 } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #d0d0d0 } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #d0d0d0 } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #d0d0d0 } /* Operator */ +body:not([data-theme="light"]) .highlight .x { color: #d0d0d0 } /* Other */ +body:not([data-theme="light"]) .highlight .p { color: #d0d0d0 } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #cccccc } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #51b2fd } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #ed9d13 } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #40ffff } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #71adff } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #d0d0d0 } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #40ffff } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #666666 } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/_static/scripts/furo-extensions.js b/_static/scripts/furo-extensions.js new file mode 100644 index 0000000..e69de29 diff --git a/_static/scripts/furo.js b/_static/scripts/furo.js new file mode 100644 index 0000000..0abb2af --- /dev/null +++ b/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={856:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(856),e=n.n(t),o=null,r=null,c=document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;(function(t){const e=Math.floor(r.getBoundingClientRect().top);console.log(`headerTop: ${e}`),0==e&&t!=e?r.classList.add("scrolled"):r.classList.remove("scrolled")})(n=t),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+2.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/_static/scripts/furo.js.LICENSE.txt b/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 0000000..1632189 --- /dev/null +++ b/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/_static/scripts/furo.js.map b/_static/scripts/furo.js.map new file mode 100644 index 0000000..80ea12b --- /dev/null +++ b/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader(positionY) {\n const headerTop = Math.floor(header.getBoundingClientRect().top);\n\n console.log(`headerTop: ${headerTop}`);\n if (headerTop == 0 && positionY != headerTop) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader(positionY);\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 2.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","headerTop","floor","scrollHandlerForHeader","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..7918c3f --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/skeleton.css b/_static/skeleton.css new file mode 100644 index 0000000..467c878 --- /dev/null +++ b/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/styles/furo-extensions.css b/_static/styles/furo-extensions.css new file mode 100644 index 0000000..8229587 --- /dev/null +++ b/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo-extensions.css.map b/_static/styles/furo-extensions.css.map new file mode 100644 index 0000000..c26eac7 --- /dev/null +++ b/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAEE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cAIA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UCzCN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/_static/styles/furo.css b/_static/styles/furo.css new file mode 100644 index 0000000..05a56b1 --- /dev/null +++ b/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,p,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;background:var(--color-background-primary);border:0!important;color:var(--color-foreground-primary);white-space:nowrap!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-stack--headings:var(--font-stack);--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#6b6f76;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#0a4bff;--color-brand-content:#2757dd;--color-brand-visited:#872ee0;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-api-added:#21632c;--color-api-added-border:#38a84d;--color-api-changed:#046172;--color-api-changed-border:#06a1bc;--color-api-deprecated:#605706;--color-api-deprecated-border:#f0d90f;--color-api-removed:#b30000;--color-api-removed-border:#ff5c5c;--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link--hover:var(--color-brand-content);--color-link-underline--hover:var(--color-foreground-border);--color-link--visited:var(--color-brand-visited);--color-link-underline--visited:var(--color-background-border);--color-link--visited--hover:var(--color-brand-visited);--color-link-underline--visited--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:block}@media(prefers-color-scheme:dark){body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-dark{display:block}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:none}}body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-family:var(--font-stack--headings);font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:visited{color:var(--color-link--visited);text-decoration-color:var(--color-link-underline--visited)}a:visited:hover{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link:hover:visited{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{height:100%}.skip-to-content,body,html{background:var(--color-background-primary);color:var(--color-foreground-primary)}.skip-to-content{border-radius:1rem;left:.25rem;padding:1rem;position:fixed;top:.25rem;transform:translateY(-200%);transition:transform .3s ease-in-out;z-index:40}.skip-to-content:focus-within{transform:translateY(0)}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{display:flex}.theme-toggle{background:transparent;border:none;cursor:pointer;display:flex;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1.25rem;width:1.25rem}.theme-toggle-header{align-items:center;display:flex;justify-content:center}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1.5rem;width:1.5rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg,.content-icon-container .view-this-page svg{color:inherit;height:1.25rem;width:1.25rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.content{margin-left:auto;margin-right:auto;padding:0 1em}}@media(max-width:63em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.theme-toggle-header,.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.5rem;width:1.5rem}:target{scroll-margin-top:calc(var(--header-height) + 2.5rem)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}}@media(max-width:48em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){article[role=main] aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:4.25rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{border-left:.1875rem solid;border-radius:.125rem;padding-left:.75rem}div.deprecated p,div.versionadded p,div.versionchanged p,div.versionremoved p{margin-bottom:.125rem;margin-top:.125rem}div.versionadded{border-color:var(--color-api-added-border)}div.versionadded .versionmodified{color:var(--color-api-added)}div.versionchanged{border-color:var(--color-api-changed-border)}div.versionchanged .versionmodified{color:var(--color-api-changed)}div.deprecated{border-color:var(--color-api-deprecated-border)}div.deprecated .versionmodified{color:var(--color-api-deprecated)}div.versionremoved{border-color:var(--color-api-removed-border)}div.versionremoved .versionmodified{color:var(--color-api-removed)}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>:not(span),div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}[role=main] .table-wrapper.container{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:2.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(2.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(2.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover);color:var(--color-sidebar-link-text)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23607D8B' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Cpath stroke='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree a.reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling. Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo.css.map b/_static/styles/furo.css.map new file mode 100644 index 0000000..3ecc371 --- /dev/null +++ b/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"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sCAIA,aADF,WACE,CAKF,SACE,CAHJ,kBAEE,CAJE,gBAEJ,CAHI,iBAMA,yFAKA,aACA,eACA,cElbJ,iBAEE,aADA,iBACA,6BAEA,kCAEA,SACA,UAIA,gCACA,CALA,SAEA,SAEA,CAJA,0EAEA,CAFA,OAKA,CAGA,mDACE,iBAGF,gCACE,CADF,UACE,aAEJ,iCAEE,CAFF,UAEE,wCAEA,WACA,WADA,UACA,CACA,4CAGA,MACA,CADA,KACA,wCACA,UAGA,CAJA,UAIA,6DAUA,0CACE,CAFF,mBAEE,wEACA,CAVA,YACA,CAMF,mBAJE,OAOA,gBAJJ,gCACE,CANE,cACA,CAHA,oBACA,CAGA,QAGJ,CAII,0BACA,CADA,UACA,wCAEJ,kBACE,0DACA,gCACE,kBACA,CADA,YACA,oEACA,2CAMF,mDAII,CALN,YACE,CANE,cAKJ,CACE,iBAII,kEACA,yCACE,kDACA,yDACE,+CACA,uBANN,CAMM,+BANN,uCACE,qDACA,4BAEE,mBADA,0CACA,CADA,qBACA,0DACE,wCACA,sGALJ,oCACA,sBACE,kBAFF,UAEE,2CACA,wFACE,cACA,kEANN,uBACE,iDACA,CADA,UACA,0DACE,wDAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCrEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kE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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/variables/_layout.scss","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote, p\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto-light\n display: block\n\n @media (prefers-color-scheme: dark)\n .theme-toggle svg.theme-icon-when-auto-dark\n display: block\n .theme-toggle svg.theme-icon-when-auto-light\n display: none\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n --font-stack--headings: var(--font-stack);\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #6b6f76; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #0a4bff;\n --color-brand-content: #2757dd;\n --color-brand-visited: #872ee0;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n\n --color-api-added: #21632c;\n --color-api-added-border: #38a84d;\n --color-api-changed: #046172;\n --color-api-changed-border: #06a1bc;\n --color-api-deprecated: #605706;\n --color-api-deprecated-border: #f0d90f;\n --color-api-removed: #b30000;\n --color-api-removed-border: #ff5c5c;\n\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline--hover: var(--color-foreground-border);\n\n --color-link--visited: var(--color-brand-visited);\n --color-link-underline--visited: var(--color-background-border);\n --color-link--visited--hover: var(--color-brand-visited);\n --color-link-underline--visited--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #cfd0d0; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #3d94ff;\n --color-brand-content: #5ca5ff;\n --color-brand-visited: #b27aeb;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n --color-api-added: #3db854;\n --color-api-added-border: #267334;\n --color-api-changed: #09b0ce;\n --color-api-changed-border: #056d80;\n --color-api-deprecated: #b1a10b;\n --color-api-deprecated-border: #6e6407;\n --color-api-removed: #ff7575;\n --color-api-removed-border: #b03b3b;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-family: var(--font-stack--headings)\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:visited\n color: var(--color-link--visited)\n text-decoration-color: var(--color-link-underline--visited)\n &:hover\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &:visited\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n.skip-to-content\n position: fixed\n padding: 1rem\n border-radius: 1rem\n left: 0.25rem\n top: 0.25rem\n z-index: 40\n background: var(--color-background-primary)\n color: var(--color-foreground-primary)\n\n transform: translateY(-200%)\n transition: transform 300ms ease-in-out\n\n &:focus-within\n transform: translateY(0%)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n display: flex\n\n.theme-toggle\n display: flex\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n display: flex\n align-items: center\n justify-content: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1.5rem\n width: 1.5rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page, .view-this-page\n svg\n color: inherit\n height: 1.25rem\n width: 1.25rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $content-padded-width + $sidebar-width)\n // Center the page\n .content\n margin-left: auto\n margin-right: auto\n padding: 0 $content-padding--small\n\n@media (max-width: $content-padded-width--small + $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon, .theme-toggle-header\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.5rem\n width: 1.5rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: calc(var(--header-height) + 2.5rem)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n\n@media (max-width: $content-width + 2* $content-padding--small)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n article[role=main] aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","// Overall Layout Variables\n//\n// Because CSS variables can't be used in media queries. The fact that this\n// makes the layout non-user-configurable is a good thing.\n$content-padding: 3em;\n$content-padding--small: 1em;\n$content-width: 46em;\n$sidebar-width: 15em;\n$content-padded-width: $content-width + 2 * $content-padding;\n$content-padded-width--small: $content-width + 2 * $content-padding--small;\n$full-width: $content-padded-width + 2 * $sidebar-width;\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 4.25rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated,\ndiv.versionremoved\n border-left: 0.1875rem solid\n border-radius: 0.125rem\n\n padding-left: 0.75rem\n\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\ndiv.versionadded\n border-color: var(--color-api-added-border)\n .versionmodified\n color: var(--color-api-added)\n\ndiv.versionchanged\n border-color: var(--color-api-changed-border)\n .versionmodified\n color: var(--color-api-changed)\n\ndiv.deprecated\n border-color: var(--color-api-deprecated-border)\n .versionmodified\n color: var(--color-api-deprecated)\n\ndiv.versionremoved\n border-color: var(--color-api-removed-border)\n .versionmodified\n color: var(--color-api-removed)\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > *:not(span),\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n","[role=main] .table-wrapper.container\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 2.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(2.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(2.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n color: var(--color-sidebar-link-text)\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the