fractal-server 2.14.0a32__tar.gz → 2.14.0a34__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/PKG-INFO +1 -1
- fractal_server-2.14.0a34/fractal_server/__init__.py +1 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/local/runner.py +95 -35
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/base_slurm_runner.py +283 -237
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_ssh/runner.py +60 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_sudo/runner.py +13 -1
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/runner_functions.py +12 -1
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/ssh/_fabric.py +24 -12
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/pyproject.toml +2 -2
- fractal_server-2.14.0a32/fractal_server/__init__.py +0 -1
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/LICENSE +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/README.md +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/__main__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/alembic.ini +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/db/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/history/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/linkusergroup.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/linkuserproject.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/security.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/user_settings.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/accounting.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/dataset.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/history.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/job.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/project.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/task.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/task_group.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/workflow.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/models/v2/workflowtask.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/accounting.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/impersonate.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/job.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/project.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/task.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/admin/v2/task_group_lifecycle.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/_aux_functions.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/_aux_functions_history.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/dataset.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/history.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/images.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/job.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/project.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/status_legacy.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/submit.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/task.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/task_collection.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/task_group.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/task_group_lifecycle.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/verify_image_types.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/workflow.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/api/v2/workflowtask.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/current_user.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/group.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/login.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/oauth.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/register.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/router.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/auth/users.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/aux/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/aux/_job.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/aux/_runner.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/aux/validate_user_settings.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/routes/pagination.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/components.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/compress_folder.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/exceptions.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/base_runner.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/local/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/local/get_local_config.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/_batching.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/_job_states.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/_slurm_config.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/get_slurm_config.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/remote.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/slurm_job_task_models.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_common/utils_executors.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_ssh/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_sudo/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/executors/slurm_sudo/_subprocess_run_as_user.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/extract_archive.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/filenames.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/run_subprocess.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/set_start_and_last_task_index.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/shutdown.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/task_files.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/_local.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/_slurm_ssh.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/_slurm_sudo.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/db_tools.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/deduplicate_list.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/merge_outputs.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/runner.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/runner_functions_low_level.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/submit_workflow.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/v2/task_interface.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/runner/versions.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/_filter_validators.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/_validators.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/user.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/user_group.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/user_settings.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/accounting.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/dataset.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/dumps.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/history.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/job.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/manifest.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/project.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/status_legacy.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/task.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/task_collection.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/task_group.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/workflow.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/schemas/v2/workflowtask.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/security/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/security/signup_email.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/app/user_settings.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/config.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/data_migrations/README.md +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/data_migrations/tools.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/gunicorn_fractal.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/images/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/images/models.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/images/tools.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/logger.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/main.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/env.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/naming_convention.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/py.typed +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/ssh/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/string_tools.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/syringe.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/utils.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/local/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/local/_utils.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/local/collect.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/local/deactivate.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/local/reactivate.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/ssh/__init__.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/ssh/_utils.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/ssh/collect.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/ssh/deactivate.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/ssh/reactivate.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/templates/1_create_venv.sh +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/templates/2_pip_install.sh +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/templates/3_pip_freeze.sh +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/templates/4_pip_show.sh +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/templates/5_get_venv_size_and_file_number.sh +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/templates/6_pip_install_from_freeze.sh +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/utils_background.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/utils_database.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/utils_package_names.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/tasks/v2/utils_templates.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/urls.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/utils.py +0 -0
- {fractal_server-2.14.0a32 → fractal_server-2.14.0a34}/fractal_server/zip_tools.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__VERSION__ = "2.14.0a34"
|
@@ -9,6 +9,9 @@ from fractal_server.app.db import get_sync_db
|
|
9
9
|
from fractal_server.app.runner.exceptions import TaskExecutionError
|
10
10
|
from fractal_server.app.runner.executors.base_runner import BaseRunner
|
11
11
|
from fractal_server.app.runner.task_files import TaskFiles
|
12
|
+
from fractal_server.app.runner.v2.db_tools import (
|
13
|
+
bulk_update_status_of_history_unit,
|
14
|
+
)
|
12
15
|
from fractal_server.app.runner.v2.db_tools import update_status_of_history_unit
|
13
16
|
from fractal_server.app.schemas.v2 import HistoryUnitStatus
|
14
17
|
from fractal_server.logger import set_logger
|
@@ -58,16 +61,31 @@ class LocalRunner(BaseRunner):
|
|
58
61
|
) -> tuple[Any, Exception]:
|
59
62
|
logger.debug("[submit] START")
|
60
63
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
+
try:
|
65
|
+
self.validate_submit_parameters(parameters, task_type=task_type)
|
66
|
+
workdir_local = task_files.wftask_subfolder_local
|
67
|
+
workdir_local.mkdir()
|
64
68
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
69
|
+
# SUBMISSION PHASE
|
70
|
+
future = self.executor.submit(
|
71
|
+
func,
|
72
|
+
parameters=parameters,
|
73
|
+
remote_files=task_files.remote_files_dict,
|
74
|
+
)
|
75
|
+
except Exception as e:
|
76
|
+
logger.error(
|
77
|
+
"[submit] Unexpected exception during submission. "
|
78
|
+
f"Original error {str(e)}"
|
79
|
+
)
|
80
|
+
result = None
|
81
|
+
exception = TaskExecutionError(str(e))
|
82
|
+
with next(get_sync_db()) as db:
|
83
|
+
update_status_of_history_unit(
|
84
|
+
history_unit_id=history_unit_id,
|
85
|
+
status=HistoryUnitStatus.FAILED,
|
86
|
+
db_sync=db,
|
87
|
+
)
|
88
|
+
return None, exception
|
71
89
|
|
72
90
|
# RETRIEVAL PHASE
|
73
91
|
with next(get_sync_db()) as db:
|
@@ -105,29 +123,50 @@ class LocalRunner(BaseRunner):
|
|
105
123
|
input images, while for compound tasks these can differ.
|
106
124
|
"""
|
107
125
|
|
108
|
-
self.validate_multisubmit_parameters(
|
109
|
-
list_parameters=list_parameters,
|
110
|
-
task_type=task_type,
|
111
|
-
list_task_files=list_task_files,
|
112
|
-
history_unit_ids=history_unit_ids,
|
113
|
-
)
|
114
|
-
|
115
126
|
logger.debug(f"[multisubmit] START, {len(list_parameters)=}")
|
127
|
+
results: dict[int, Any] = {}
|
128
|
+
exceptions: dict[int, BaseException] = {}
|
116
129
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
130
|
+
try:
|
131
|
+
|
132
|
+
self.validate_multisubmit_parameters(
|
133
|
+
list_parameters=list_parameters,
|
134
|
+
task_type=task_type,
|
135
|
+
list_task_files=list_task_files,
|
136
|
+
history_unit_ids=history_unit_ids,
|
137
|
+
)
|
138
|
+
|
139
|
+
workdir_local = list_task_files[0].wftask_subfolder_local
|
140
|
+
if task_type == "parallel":
|
141
|
+
workdir_local.mkdir()
|
142
|
+
|
143
|
+
# Set `n_elements` and `parallel_tasks_per_job`
|
144
|
+
n_elements = len(list_parameters)
|
145
|
+
parallel_tasks_per_job = config.parallel_tasks_per_job
|
146
|
+
if parallel_tasks_per_job is None:
|
147
|
+
parallel_tasks_per_job = n_elements
|
148
|
+
|
149
|
+
except Exception as e:
|
150
|
+
logger.error(
|
151
|
+
"[multisubmit] Unexpected exception during preliminary phase. "
|
152
|
+
f"Original error {str(e)}"
|
153
|
+
)
|
154
|
+
exception = TaskExecutionError(str(e))
|
155
|
+
exceptions = {
|
156
|
+
ind: exception for ind in range(len(list_parameters))
|
157
|
+
}
|
158
|
+
if task_type == "parallel":
|
159
|
+
with next(get_sync_db()) as db:
|
160
|
+
bulk_update_status_of_history_unit(
|
161
|
+
history_unit_ids=history_unit_ids,
|
162
|
+
status=HistoryUnitStatus.FAILED,
|
163
|
+
db_sync=db,
|
164
|
+
)
|
165
|
+
return results, exceptions
|
126
166
|
|
127
167
|
# Execute tasks, in chunks of size `parallel_tasks_per_job`
|
128
|
-
results: dict[int, Any] = {}
|
129
|
-
exceptions: dict[int, BaseException] = {}
|
130
168
|
for ind_chunk in range(0, n_elements, parallel_tasks_per_job):
|
169
|
+
|
131
170
|
list_parameters_chunk = list_parameters[
|
132
171
|
ind_chunk : ind_chunk + parallel_tasks_per_job
|
133
172
|
]
|
@@ -135,15 +174,31 @@ class LocalRunner(BaseRunner):
|
|
135
174
|
active_futures: dict[int, Future] = {}
|
136
175
|
for ind_within_chunk, kwargs in enumerate(list_parameters_chunk):
|
137
176
|
positional_index = ind_chunk + ind_within_chunk
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
177
|
+
try:
|
178
|
+
future = self.executor.submit(
|
179
|
+
func,
|
180
|
+
parameters=kwargs,
|
181
|
+
remote_files=list_task_files[
|
182
|
+
positional_index
|
183
|
+
].remote_files_dict,
|
184
|
+
)
|
185
|
+
active_futures[positional_index] = future
|
186
|
+
except Exception as e:
|
187
|
+
logger.error(
|
188
|
+
"[multisubmit] Unexpected exception during submission."
|
189
|
+
f" Original error {str(e)}"
|
190
|
+
)
|
191
|
+
current_history_unit_id = history_unit_ids[
|
142
192
|
positional_index
|
143
|
-
]
|
144
|
-
|
145
|
-
|
146
|
-
|
193
|
+
]
|
194
|
+
exceptions[positional_index] = TaskExecutionError(str(e))
|
195
|
+
if task_type == "parallel":
|
196
|
+
with next(get_sync_db()) as db:
|
197
|
+
update_status_of_history_unit(
|
198
|
+
history_unit_id=current_history_unit_id,
|
199
|
+
status=HistoryUnitStatus.FAILED,
|
200
|
+
db_sync=db,
|
201
|
+
)
|
147
202
|
while active_futures:
|
148
203
|
finished_futures = [
|
149
204
|
index_and_future
|
@@ -171,6 +226,11 @@ class LocalRunner(BaseRunner):
|
|
171
226
|
)
|
172
227
|
|
173
228
|
except Exception as e:
|
229
|
+
logger.debug(
|
230
|
+
"Multisubmit failed in retrieval "
|
231
|
+
"phase with the following error "
|
232
|
+
f"{str(e)}"
|
233
|
+
)
|
174
234
|
exceptions[positional_index] = TaskExecutionError(
|
175
235
|
str(e)
|
176
236
|
)
|