fractal-server 2.19.0a1__tar.gz → 2.19.1__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.19.0a1 → fractal_server-2.19.1}/PKG-INFO +1 -1
- fractal_server-2.19.1/fractal_server/__init__.py +1 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/dataset.py +0 -4
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/job.py +4 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/task_group.py +4 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/workflow.py +2 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/workflowtask.py +3 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/task_group_lifecycle.py +6 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/__init__.py +0 -2
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions.py +6 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/submit.py +3 -1
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task_collection.py +2 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task_collection_pixi.py +2 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task_group_lifecycle.py +6 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/workflow.py +1 -1
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/workflowtask.py +3 -6
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/workflow.py +5 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/workflowtask.py +12 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/security/__init__.py +11 -6
- fractal_server-2.19.1/fractal_server/migrations/versions/18a26fcdea5d_drop_dataset_history.py +41 -0
- fractal_server-2.19.1/fractal_server/migrations/versions/1bf8785755f9_add_description_to_workflow_and_.py +53 -0
- fractal_server-2.19.1/fractal_server/migrations/versions/cfd13f7954e7_add_fractal_server_version_to_jobv2_and_.py +52 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/config/_slurm.py +2 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/base_slurm_runner.py +1 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/get_slurm_config.py +1 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/slurm_config.py +3 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/submit_workflow.py +0 -2
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/pyproject.toml +7 -8
- fractal_server-2.19.0a1/fractal_server/__init__.py +0 -1
- fractal_server-2.19.0a1/fractal_server/app/routes/api/v2/status_legacy.py +0 -156
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/LICENSE +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/README.md +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/__main__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/alembic.ini +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/db/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/linkusergroup.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/linkuserproject.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/security.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/accounting.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/history.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/profile.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/project.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/resource.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/task.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/_aux_functions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/accounting.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/impersonate.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/job.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/profile.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/resource.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/sharing.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/task.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/admin/v2/task_group.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/alive.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/settings.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions_history.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions_sharing.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions_task_version_update.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions_tasks.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/dataset.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/history.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/images.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/job.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/pre_submission_checks.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/project.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/sharing.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task_collection_custom.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task_group.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/task_version_update.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/workflow_import.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/_aux_auth.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/current_user.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/group.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/login.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/oauth.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/register.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/router.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/users.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/auth/viewer_paths.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/aux/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/aux/_job.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/aux/_runner.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/aux/_versions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/aux/validate_user_profile.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/pagination.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/user.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/user_group.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/accounting.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/dataset.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/dumps.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/history.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/job.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/manifest.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/profile.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/project.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/resource.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/sharing.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/status_legacy.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/task.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/task_collection.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/task_group.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/security/signup_email.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/shutdown.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/_data.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/_database.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/_email.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/_main.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/_oauth.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/config/_settings_config.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/data_migrations/tools.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/exceptions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/gunicorn_fractal.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/images/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/images/models.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/images/status_tools.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/images/tools.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/logger.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/main.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/env.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/naming_convention.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/034a469ec2eb_task_groups.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/068496367952_drop_taskgroup_venv_size_and_files_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/091b01f51f88_add_usergroup_and_linkusergroup_table.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/0f5f85bb2ae7_add_pre_pinned_packages.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/19eca0dd47a9_user_settings_project_dir.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/1a83a5260664_rename.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/1eac13a26c83_drop_v1_tables.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/316140ff7ee1_remove_usersettings_cache_dir.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/40d6d6511b20_add_index_to_history_models.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/45fbb391d7af_make_resource_id_fk_non_nullable.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/47351f8c7ebc_drop_dataset_filters.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/49d0856e9569_drop_table.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/4c308bcaea2b_add_task_args_schema_and_task_args_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/4cedeb448a53_workflowtask_foreign_keys_not_nullables.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/501961cfcd85_remove_link_between_v1_and_v2_tasks_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/50a13d6138fd_initial_schema.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/5bf02391cfef_v2.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/5fb08bf05b14_drop_taskv2_source.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/70e77f1c38b0_add_applyworkflow_first_task_index_and_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/71eefd1dd202_add_slurm_accounts.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/7673fe18c05d_remove_project_dir_server_default.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/7910eed4cf97_user_project_dirs_and_usergroup_viewer_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/791ce783d3d8_add_indices.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/83bc2ad3ffcc_2_17_0.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/84bf0fffde30_add_dumps_to_applyworkflow.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/88270f589c9b_add_prevent_new_submissions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/8e8f227a3e36_update_taskv2_post_2_7_0.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/8f79bd162e35_add_docs_info_and_docs_link_to_task_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/94a47ea2d3ff_remove_cache_dir_slurm_user_and_slurm_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/969d84257cac_add_historyrun_task_id.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/97f444d47249_add_applyworkflow_project_dump.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/981d588fe248_add_executor_error_log.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/99ea79d9e5d2_add_dataset_history.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/9c5ae74c9b98_add_user_settings_table.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/9db60297b8b2_set_ondelete.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/9fd26a2b0de4_add_workflow_timestamp_created.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/a7f4d6137b53_add_workflow_dump_to_applyworkflow.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/af1ef1c83c9b_add_accounting_tables.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/af8673379a5c_drop_old_filter_columns.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/b1e7f7a1ff71_task_group_for_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/b3ffb095f973_json_to_jsonb.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/b7477cc98f45_2_18_1.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/bc0e8b3327a7_project_sharing.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/c90a7c76e996_job_id_in_history_run.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/caba9fb1ea5e_drop_useroauth_user_settings_id.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/d256a7379ab8_taskgroup_activity_and_venv_info_to_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/d4fe3708d309_make_applyworkflow_workflow_dump_non_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/da2cb2ac4255_user_group_viewer_paths.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/db09233ad13a_split_filters_and_keep_old_columns.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/e0e717ae2f26_delete_linkuserproject_ondelete_project.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/e53dc51fdf93_add_useroauth_is_guest.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/e75cac726012_make_applyworkflow_start_timestamp_not_.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/e81103413827_add_job_type_filters.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/f0702066b007_one_submitted_job_per_dataset.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/py.typed +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/components.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/config/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/config/_local.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/config/slurm_mem_to_MB.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/exceptions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/base_runner.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/call_command_wrapper.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/local/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/local/get_local_config.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/local/runner.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/_batching.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/_job_states.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/remote.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_common/slurm_job_task_models.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_ssh/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_ssh/run_subprocess.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_ssh/runner.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_ssh/tar_commands.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_sudo/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/executors/slurm_sudo/runner.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/filenames.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/set_start_and_last_task_index.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/task_files.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/_local.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/_slurm_ssh.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/_slurm_sudo.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/db_tools.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/deduplicate_list.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/merge_outputs.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/runner.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/runner_functions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/task_interface.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/versions.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/ssh/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/ssh/_fabric.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/string_tools.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/syringe.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/config/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/config/_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/config/_python.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/utils.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/_utils.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/collect.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/collect_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/deactivate.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/deactivate_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/delete.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/reactivate.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/local/reactivate_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/_pixi_slurm_ssh.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/_utils.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/collect.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/collect_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/deactivate.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/deactivate_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/delete.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/reactivate.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/ssh/reactivate_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/1_create_venv.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/2_pip_install.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/3_pip_freeze.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/4_pip_show.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/5_pip_install_from_freeze.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/pixi_1_extract.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/pixi_2_install.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/templates/pixi_3_post_install.sh +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/utils_background.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/utils_database.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/utils_package_names.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/utils_pixi.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/utils_python_interpreter.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/tasks/v2/utils_templates.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/types/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/types/validators/__init__.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/types/validators/_common_validators.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/types/validators/_filter_validators.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/types/validators/_workflow_task_arguments_validators.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/urls.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/utils.py +0 -0
- {fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/zip_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fractal-server
|
|
3
|
-
Version: 2.19.
|
|
3
|
+
Version: 2.19.1
|
|
4
4
|
Summary: Backend component of the Fractal analytics platform
|
|
5
5
|
Author: Tommaso Comparin, Marco Franzon, Yuri Chiucconi, Jacopo Nespolo
|
|
6
6
|
Author-email: Tommaso Comparin <tommaso.comparin@exact-lab.it>, Marco Franzon <marco.franzon@exact-lab.it>, Yuri Chiucconi <yuri.chiucconi@exact-lab.it>, Jacopo Nespolo <jacopo.nespolo@exact-lab.it>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__VERSION__ = "2.19.1"
|
|
@@ -27,10 +27,6 @@ class DatasetV2(SQLModel, table=True):
|
|
|
27
27
|
sa_relationship_kwargs=dict(lazy="selectin"),
|
|
28
28
|
)
|
|
29
29
|
|
|
30
|
-
history: list[dict[str, Any]] = Field(
|
|
31
|
-
sa_column=Column(JSONB, server_default="[]", nullable=False)
|
|
32
|
-
)
|
|
33
|
-
|
|
34
30
|
timestamp_created: datetime = Field(
|
|
35
31
|
default_factory=get_timestamp,
|
|
36
32
|
sa_column=Column(DateTime(timezone=True), nullable=False),
|
|
@@ -5,6 +5,7 @@ from pydantic import ConfigDict
|
|
|
5
5
|
from sqlalchemy import Column
|
|
6
6
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
7
7
|
from sqlalchemy.types import DateTime
|
|
8
|
+
from sqlalchemy.types import String
|
|
8
9
|
from sqlmodel import Field
|
|
9
10
|
from sqlmodel import Index
|
|
10
11
|
from sqlmodel import SQLModel
|
|
@@ -44,6 +45,9 @@ class JobV2(SQLModel, table=True):
|
|
|
44
45
|
project_dump: dict[str, Any] = Field(
|
|
45
46
|
sa_column=Column(JSONB, nullable=False)
|
|
46
47
|
)
|
|
48
|
+
fractal_server_version: str = Field(
|
|
49
|
+
sa_column=Column(String, server_default="pre-2.19.0", nullable=False)
|
|
50
|
+
)
|
|
47
51
|
|
|
48
52
|
worker_init: str | None = None
|
|
49
53
|
working_dir: str | None = None
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/task_group.py
RENAMED
|
@@ -4,6 +4,7 @@ from datetime import timezone
|
|
|
4
4
|
from sqlalchemy import Column
|
|
5
5
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
6
6
|
from sqlalchemy.types import DateTime
|
|
7
|
+
from sqlalchemy.types import String
|
|
7
8
|
from sqlmodel import Field
|
|
8
9
|
from sqlmodel import Relationship
|
|
9
10
|
from sqlmodel import SQLModel
|
|
@@ -151,3 +152,6 @@ class TaskGroupActivityV2(SQLModel, table=True):
|
|
|
151
152
|
default=None,
|
|
152
153
|
sa_column=Column(DateTime(timezone=True)),
|
|
153
154
|
)
|
|
155
|
+
fractal_server_version: str = Field(
|
|
156
|
+
sa_column=Column(String, server_default="pre-2.19.0", nullable=False)
|
|
157
|
+
)
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/models/v2/workflowtask.py
RENAMED
|
@@ -39,3 +39,6 @@ class WorkflowTaskV2(SQLModel, table=True):
|
|
|
39
39
|
task_type: str
|
|
40
40
|
task_id: int = Field(foreign_key="taskv2.id")
|
|
41
41
|
task: TaskV2 = Relationship(sa_relationship_kwargs=dict(lazy="selectin"))
|
|
42
|
+
|
|
43
|
+
alias: str | None = Field(default=None, nullable=True)
|
|
44
|
+
description: str | None = Field(default=None, nullable=True)
|
|
@@ -5,6 +5,7 @@ from fastapi import HTTPException
|
|
|
5
5
|
from fastapi import Response
|
|
6
6
|
from fastapi import status
|
|
7
7
|
|
|
8
|
+
from fractal_server import __VERSION__
|
|
8
9
|
from fractal_server.app.db import AsyncSession
|
|
9
10
|
from fractal_server.app.db import get_async_db
|
|
10
11
|
from fractal_server.app.models import UserOAuth
|
|
@@ -93,6 +94,7 @@ async def deactivate_task_group(
|
|
|
93
94
|
),
|
|
94
95
|
timestamp_started=get_timestamp(),
|
|
95
96
|
timestamp_ended=get_timestamp(),
|
|
97
|
+
fractal_server_version=__VERSION__,
|
|
96
98
|
)
|
|
97
99
|
db.add(task_group)
|
|
98
100
|
db.add(task_group_activity)
|
|
@@ -108,6 +110,7 @@ async def deactivate_task_group(
|
|
|
108
110
|
pkg_name=task_group.pkg_name,
|
|
109
111
|
version=task_group.version,
|
|
110
112
|
timestamp_started=get_timestamp(),
|
|
113
|
+
fractal_server_version=__VERSION__,
|
|
111
114
|
)
|
|
112
115
|
db.add(task_group_activity)
|
|
113
116
|
await db.commit()
|
|
@@ -188,6 +191,7 @@ async def reactivate_task_group(
|
|
|
188
191
|
),
|
|
189
192
|
timestamp_started=get_timestamp(),
|
|
190
193
|
timestamp_ended=get_timestamp(),
|
|
194
|
+
fractal_server_version=__VERSION__,
|
|
191
195
|
)
|
|
192
196
|
db.add(task_group)
|
|
193
197
|
db.add(task_group_activity)
|
|
@@ -211,6 +215,7 @@ async def reactivate_task_group(
|
|
|
211
215
|
pkg_name=task_group.pkg_name,
|
|
212
216
|
version=task_group.version,
|
|
213
217
|
timestamp_started=get_timestamp(),
|
|
218
|
+
fractal_server_version=__VERSION__,
|
|
214
219
|
)
|
|
215
220
|
db.add(task_group_activity)
|
|
216
221
|
await db.commit()
|
|
@@ -264,6 +269,7 @@ async def delete_task_group(
|
|
|
264
269
|
pkg_name=task_group.pkg_name,
|
|
265
270
|
version=(task_group.version or "N/A"),
|
|
266
271
|
timestamp_started=get_timestamp(),
|
|
272
|
+
fractal_server_version=__VERSION__,
|
|
267
273
|
)
|
|
268
274
|
db.add(task_group_activity)
|
|
269
275
|
await db.commit()
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/__init__.py
RENAMED
|
@@ -14,7 +14,6 @@ from .job import router as job_router
|
|
|
14
14
|
from .pre_submission_checks import router as pre_submission_checks_router
|
|
15
15
|
from .project import router as project_router
|
|
16
16
|
from .sharing import router as sharing_router
|
|
17
|
-
from .status_legacy import router as status_legacy_router
|
|
18
17
|
from .submit import router as submit_job_router
|
|
19
18
|
from .task import router as task_router
|
|
20
19
|
from .task_collection import router as task_collection_router
|
|
@@ -37,7 +36,6 @@ router_api.include_router(sharing_router, tags=["Project Sharing"])
|
|
|
37
36
|
router_api.include_router(project_router, tags=["Project"])
|
|
38
37
|
router_api.include_router(submit_job_router, tags=["Job"])
|
|
39
38
|
router_api.include_router(history_router, tags=["History"])
|
|
40
|
-
router_api.include_router(status_legacy_router, tags=["Status Legacy"])
|
|
41
39
|
|
|
42
40
|
|
|
43
41
|
settings = Inject(get_settings)
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/_aux_functions.py
RENAMED
|
@@ -400,6 +400,8 @@ async def _workflow_insert_task(
|
|
|
400
400
|
args_non_parallel: dict[str, Any] | None = None,
|
|
401
401
|
args_parallel: dict[str, Any] | None = None,
|
|
402
402
|
type_filters: dict[str, bool] | None = None,
|
|
403
|
+
description: str | None = None,
|
|
404
|
+
alias: str | None = None,
|
|
403
405
|
db: AsyncSession,
|
|
404
406
|
) -> WorkflowTaskV2:
|
|
405
407
|
"""
|
|
@@ -414,6 +416,8 @@ async def _workflow_insert_task(
|
|
|
414
416
|
args_non_parallel:
|
|
415
417
|
args_parallel:
|
|
416
418
|
type_filters:
|
|
419
|
+
description:
|
|
420
|
+
alias:
|
|
417
421
|
db:
|
|
418
422
|
"""
|
|
419
423
|
db_workflow = await db.get(WorkflowV2, workflow_id)
|
|
@@ -448,6 +452,8 @@ async def _workflow_insert_task(
|
|
|
448
452
|
meta_parallel=final_meta_parallel,
|
|
449
453
|
meta_non_parallel=final_meta_non_parallel,
|
|
450
454
|
type_filters=(type_filters or dict()),
|
|
455
|
+
description=description,
|
|
456
|
+
alias=alias,
|
|
451
457
|
)
|
|
452
458
|
db_workflow.task_list.append(wf_task)
|
|
453
459
|
flag_modified(db_workflow, "task_list")
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/submit.py
RENAMED
|
@@ -11,6 +11,7 @@ from fastapi import status
|
|
|
11
11
|
from sqlmodel import select
|
|
12
12
|
from sqlmodel import update
|
|
13
13
|
|
|
14
|
+
from fractal_server import __VERSION__
|
|
14
15
|
from fractal_server.app.db import AsyncSession
|
|
15
16
|
from fractal_server.app.db import get_async_db
|
|
16
17
|
from fractal_server.app.models import Profile
|
|
@@ -216,11 +217,12 @@ async def submit_job(
|
|
|
216
217
|
dataset.model_dump_json(exclude={"images", "history"})
|
|
217
218
|
),
|
|
218
219
|
workflow_dump=json.loads(
|
|
219
|
-
workflow.model_dump_json(exclude={"task_list"})
|
|
220
|
+
workflow.model_dump_json(exclude={"task_list", "description"})
|
|
220
221
|
),
|
|
221
222
|
project_dump=json.loads(
|
|
222
223
|
project.model_dump_json(exclude={"resource_id"})
|
|
223
224
|
),
|
|
225
|
+
fractal_server_version=__VERSION__,
|
|
224
226
|
**job_create.model_dump(),
|
|
225
227
|
)
|
|
226
228
|
|
|
@@ -14,6 +14,7 @@ from pydantic import BaseModel
|
|
|
14
14
|
from pydantic import ValidationError
|
|
15
15
|
from pydantic import model_validator
|
|
16
16
|
|
|
17
|
+
from fractal_server import __VERSION__
|
|
17
18
|
from fractal_server.app.db import AsyncSession
|
|
18
19
|
from fractal_server.app.db import get_async_db
|
|
19
20
|
from fractal_server.app.models import UserOAuth
|
|
@@ -332,6 +333,7 @@ async def collect_tasks_pip(
|
|
|
332
333
|
action=TaskGroupActivityAction.COLLECT,
|
|
333
334
|
pkg_name=task_group.pkg_name,
|
|
334
335
|
version=task_group.version,
|
|
336
|
+
fractal_server_version=__VERSION__,
|
|
335
337
|
)
|
|
336
338
|
db.add(task_group_activity)
|
|
337
339
|
await db.commit()
|
|
@@ -10,6 +10,7 @@ from fastapi import Response
|
|
|
10
10
|
from fastapi import UploadFile
|
|
11
11
|
from fastapi import status
|
|
12
12
|
|
|
13
|
+
from fractal_server import __VERSION__
|
|
13
14
|
from fractal_server.app.db import AsyncSession
|
|
14
15
|
from fractal_server.app.db import get_async_db
|
|
15
16
|
from fractal_server.app.models import UserOAuth
|
|
@@ -182,6 +183,7 @@ async def collect_task_pixi(
|
|
|
182
183
|
action=TaskGroupActivityAction.COLLECT,
|
|
183
184
|
pkg_name=task_group.pkg_name,
|
|
184
185
|
version=task_group.version,
|
|
186
|
+
fractal_server_version=__VERSION__,
|
|
185
187
|
)
|
|
186
188
|
db.add(task_group_activity)
|
|
187
189
|
await db.commit()
|
|
@@ -5,6 +5,7 @@ from fastapi import HTTPException
|
|
|
5
5
|
from fastapi import Response
|
|
6
6
|
from fastapi import status
|
|
7
7
|
|
|
8
|
+
from fractal_server import __VERSION__
|
|
8
9
|
from fractal_server.app.db import AsyncSession
|
|
9
10
|
from fractal_server.app.db import get_async_db
|
|
10
11
|
from fractal_server.app.models import UserOAuth
|
|
@@ -99,6 +100,7 @@ async def deactivate_task_group(
|
|
|
99
100
|
),
|
|
100
101
|
timestamp_started=get_timestamp(),
|
|
101
102
|
timestamp_ended=get_timestamp(),
|
|
103
|
+
fractal_server_version=__VERSION__,
|
|
102
104
|
)
|
|
103
105
|
db.add(task_group)
|
|
104
106
|
db.add(task_group_activity)
|
|
@@ -114,6 +116,7 @@ async def deactivate_task_group(
|
|
|
114
116
|
pkg_name=task_group.pkg_name,
|
|
115
117
|
version=task_group.version,
|
|
116
118
|
timestamp_started=get_timestamp(),
|
|
119
|
+
fractal_server_version=__VERSION__,
|
|
117
120
|
)
|
|
118
121
|
task_group.active = False
|
|
119
122
|
db.add(task_group)
|
|
@@ -202,6 +205,7 @@ async def reactivate_task_group(
|
|
|
202
205
|
),
|
|
203
206
|
timestamp_started=get_timestamp(),
|
|
204
207
|
timestamp_ended=get_timestamp(),
|
|
208
|
+
fractal_server_version=__VERSION__,
|
|
205
209
|
)
|
|
206
210
|
db.add(task_group)
|
|
207
211
|
db.add(task_group_activity)
|
|
@@ -225,6 +229,7 @@ async def reactivate_task_group(
|
|
|
225
229
|
pkg_name=task_group.pkg_name,
|
|
226
230
|
version=task_group.version,
|
|
227
231
|
timestamp_started=get_timestamp(),
|
|
232
|
+
fractal_server_version=__VERSION__,
|
|
228
233
|
)
|
|
229
234
|
db.add(task_group_activity)
|
|
230
235
|
await db.commit()
|
|
@@ -288,6 +293,7 @@ async def delete_task_group(
|
|
|
288
293
|
pkg_name=task_group.pkg_name,
|
|
289
294
|
version=(task_group.version or "N/A"),
|
|
290
295
|
timestamp_started=get_timestamp(),
|
|
296
|
+
fractal_server_version=__VERSION__,
|
|
291
297
|
)
|
|
292
298
|
db.add(task_group_activity)
|
|
293
299
|
await db.commit()
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/routes/api/v2/workflowtask.py
RENAMED
|
@@ -93,6 +93,8 @@ async def create_workflowtask(
|
|
|
93
93
|
args_non_parallel=wftask.args_non_parallel,
|
|
94
94
|
args_parallel=wftask.args_parallel,
|
|
95
95
|
type_filters=wftask.type_filters,
|
|
96
|
+
description=wftask.description,
|
|
97
|
+
alias=wftask.alias,
|
|
96
98
|
db=db,
|
|
97
99
|
)
|
|
98
100
|
|
|
@@ -193,13 +195,8 @@ async def update_workflowtask(
|
|
|
193
195
|
if not actual_args:
|
|
194
196
|
actual_args = None
|
|
195
197
|
setattr(db_wf_task, key, actual_args)
|
|
196
|
-
elif key in ["meta_parallel", "meta_non_parallel", "type_filters"]:
|
|
197
|
-
setattr(db_wf_task, key, value)
|
|
198
198
|
else:
|
|
199
|
-
|
|
200
|
-
status_code=status.HTTP_422_UNPROCESSABLE_CONTENT,
|
|
201
|
-
detail=f"patch_workflow_task endpoint cannot set {key=}",
|
|
202
|
-
)
|
|
199
|
+
setattr(db_wf_task, key, value)
|
|
203
200
|
|
|
204
201
|
await db.commit()
|
|
205
202
|
await db.refresh(db_wf_task)
|
|
@@ -20,6 +20,7 @@ class WorkflowCreate(BaseModel):
|
|
|
20
20
|
model_config = ConfigDict(extra="forbid")
|
|
21
21
|
|
|
22
22
|
name: NonEmptyStr
|
|
23
|
+
description: NonEmptyStr | None = None
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class WorkflowRead(BaseModel):
|
|
@@ -29,6 +30,7 @@ class WorkflowRead(BaseModel):
|
|
|
29
30
|
task_list: list[WorkflowTaskRead]
|
|
30
31
|
project: ProjectRead
|
|
31
32
|
timestamp_created: AwareDatetime
|
|
33
|
+
description: str | None
|
|
32
34
|
|
|
33
35
|
@field_serializer("timestamp_created")
|
|
34
36
|
def serialize_datetime(v: datetime) -> str:
|
|
@@ -44,6 +46,7 @@ class WorkflowUpdate(BaseModel):
|
|
|
44
46
|
|
|
45
47
|
name: NonEmptyStr = None
|
|
46
48
|
reordered_workflowtask_ids: ListUniqueNonNegativeInt | None = None
|
|
49
|
+
description: NonEmptyStr | None = None
|
|
47
50
|
|
|
48
51
|
|
|
49
52
|
class WorkflowImport(BaseModel):
|
|
@@ -56,6 +59,7 @@ class WorkflowImport(BaseModel):
|
|
|
56
59
|
|
|
57
60
|
model_config = ConfigDict(extra="forbid")
|
|
58
61
|
name: NonEmptyStr
|
|
62
|
+
description: NonEmptyStr | None = None
|
|
59
63
|
task_list: list[WorkflowTaskImport]
|
|
60
64
|
|
|
61
65
|
|
|
@@ -68,4 +72,5 @@ class WorkflowExport(BaseModel):
|
|
|
68
72
|
"""
|
|
69
73
|
|
|
70
74
|
name: str
|
|
75
|
+
description: str | None
|
|
71
76
|
task_list: list[WorkflowTaskExport]
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/app/schemas/v2/workflowtask.py
RENAMED
|
@@ -6,6 +6,7 @@ from pydantic import Field
|
|
|
6
6
|
from pydantic import model_validator
|
|
7
7
|
|
|
8
8
|
from fractal_server.types import DictStrAny
|
|
9
|
+
from fractal_server.types import NonEmptyStr
|
|
9
10
|
from fractal_server.types import TypeFilters
|
|
10
11
|
from fractal_server.types import WorkflowTaskArgument
|
|
11
12
|
|
|
@@ -23,6 +24,8 @@ class WorkflowTaskCreate(BaseModel):
|
|
|
23
24
|
args_non_parallel: WorkflowTaskArgument | None = None
|
|
24
25
|
args_parallel: WorkflowTaskArgument | None = None
|
|
25
26
|
type_filters: TypeFilters = Field(default_factory=dict)
|
|
27
|
+
description: NonEmptyStr | None = None
|
|
28
|
+
alias: NonEmptyStr | None = None
|
|
26
29
|
|
|
27
30
|
|
|
28
31
|
class WorkflowTaskReplace(BaseModel):
|
|
@@ -49,6 +52,9 @@ class WorkflowTaskRead(BaseModel):
|
|
|
49
52
|
task_id: int
|
|
50
53
|
task: TaskRead
|
|
51
54
|
|
|
55
|
+
alias: str | None = None
|
|
56
|
+
description: str | None = None
|
|
57
|
+
|
|
52
58
|
|
|
53
59
|
class WorkflowTaskReadWithWarning(WorkflowTaskRead):
|
|
54
60
|
warning: str | None = None
|
|
@@ -62,6 +68,8 @@ class WorkflowTaskUpdate(BaseModel):
|
|
|
62
68
|
args_non_parallel: WorkflowTaskArgument | None = None
|
|
63
69
|
args_parallel: WorkflowTaskArgument | None = None
|
|
64
70
|
type_filters: TypeFilters = None
|
|
71
|
+
description: NonEmptyStr | None = None
|
|
72
|
+
alias: NonEmptyStr | None = None
|
|
65
73
|
|
|
66
74
|
|
|
67
75
|
class WorkflowTaskImport(BaseModel):
|
|
@@ -73,6 +81,8 @@ class WorkflowTaskImport(BaseModel):
|
|
|
73
81
|
args_parallel: DictStrAny | None = None
|
|
74
82
|
type_filters: TypeFilters | None = None
|
|
75
83
|
input_filters: dict[str, Any] | None = None
|
|
84
|
+
description: NonEmptyStr | None = None
|
|
85
|
+
alias: NonEmptyStr | None = None
|
|
76
86
|
|
|
77
87
|
task: TaskImport
|
|
78
88
|
|
|
@@ -111,5 +121,7 @@ class WorkflowTaskExport(BaseModel):
|
|
|
111
121
|
args_non_parallel: dict[str, Any] | None = None
|
|
112
122
|
args_parallel: dict[str, Any] | None = None
|
|
113
123
|
type_filters: dict[str, bool] = Field(default_factory=dict)
|
|
124
|
+
description: str | None = None
|
|
125
|
+
alias: str | None = None
|
|
114
126
|
|
|
115
127
|
task: TaskExport
|
|
@@ -191,17 +191,22 @@ class UserManager(IntegerIDMixin, BaseUserManager[UserOAuth, int]):
|
|
|
191
191
|
|
|
192
192
|
@override
|
|
193
193
|
async def validate_password(self, password: str, user: UserOAuth) -> None:
|
|
194
|
-
# check password length
|
|
195
194
|
min_length = 4
|
|
196
|
-
|
|
197
|
-
if
|
|
195
|
+
len_password = len(password)
|
|
196
|
+
if len_password < min_length:
|
|
198
197
|
raise InvalidPasswordException(
|
|
199
|
-
|
|
198
|
+
"The password is too short "
|
|
199
|
+
f"(length = {len_password}, minimum length = {min_length})."
|
|
200
200
|
)
|
|
201
|
-
|
|
201
|
+
max_length_in_bytes = 72
|
|
202
|
+
len_password_in_bytes = len(password.encode("utf-8"))
|
|
203
|
+
if len_password_in_bytes > max_length_in_bytes:
|
|
204
|
+
# See:
|
|
205
|
+
# https://github.com/pyca/bcrypt/blob/f0451e42e3ab6f6e1b9ac8b09bf04104bf8bdef8/src/_bcrypt/src/lib.rs#L85-L89
|
|
202
206
|
raise InvalidPasswordException(
|
|
203
207
|
"The password is too long "
|
|
204
|
-
f"(
|
|
208
|
+
f"(length = {len_password_in_bytes} bytes, "
|
|
209
|
+
f"maximum length = {max_length_in_bytes} bytes)."
|
|
205
210
|
)
|
|
206
211
|
|
|
207
212
|
@override
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""drop dataset.history
|
|
2
|
+
|
|
3
|
+
Revision ID: 18a26fcdea5d
|
|
4
|
+
Revises: 1bf8785755f9
|
|
5
|
+
Create Date: 2026-01-29 10:15:18.467384
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
from sqlalchemy.dialects import postgresql
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "18a26fcdea5d"
|
|
15
|
+
down_revision = "1bf8785755f9"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade() -> None:
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table("datasetv2", schema=None) as batch_op:
|
|
23
|
+
batch_op.drop_column("history")
|
|
24
|
+
|
|
25
|
+
# ### end Alembic commands ###
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def downgrade() -> None:
|
|
29
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
30
|
+
with op.batch_alter_table("datasetv2", schema=None) as batch_op:
|
|
31
|
+
batch_op.add_column(
|
|
32
|
+
sa.Column(
|
|
33
|
+
"history",
|
|
34
|
+
postgresql.JSONB(astext_type=sa.Text()),
|
|
35
|
+
server_default=sa.text("'[]'::json"),
|
|
36
|
+
autoincrement=False,
|
|
37
|
+
nullable=False,
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""Add description to workflow and description and alias to workflow task
|
|
2
|
+
|
|
3
|
+
Revision ID: 1bf8785755f9
|
|
4
|
+
Revises: 5fb08bf05b14
|
|
5
|
+
Create Date: 2026-01-26 09:03:18.396841
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
import sqlmodel
|
|
11
|
+
from alembic import op
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "1bf8785755f9"
|
|
15
|
+
down_revision = "5fb08bf05b14"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade() -> None:
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table("workflowtaskv2", schema=None) as batch_op:
|
|
23
|
+
batch_op.add_column(
|
|
24
|
+
sa.Column(
|
|
25
|
+
"alias", sqlmodel.sql.sqltypes.AutoString(), nullable=True
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
batch_op.add_column(
|
|
29
|
+
sa.Column(
|
|
30
|
+
"description", sqlmodel.sql.sqltypes.AutoString(), nullable=True
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
with op.batch_alter_table("workflowv2", schema=None) as batch_op:
|
|
35
|
+
batch_op.add_column(
|
|
36
|
+
sa.Column(
|
|
37
|
+
"description", sqlmodel.sql.sqltypes.AutoString(), nullable=True
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# ### end Alembic commands ###
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def downgrade() -> None:
|
|
45
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
46
|
+
with op.batch_alter_table("workflowv2", schema=None) as batch_op:
|
|
47
|
+
batch_op.drop_column("description")
|
|
48
|
+
|
|
49
|
+
with op.batch_alter_table("workflowtaskv2", schema=None) as batch_op:
|
|
50
|
+
batch_op.drop_column("description")
|
|
51
|
+
batch_op.drop_column("alias")
|
|
52
|
+
|
|
53
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""add fractal_server_version to jobv2 and taskgroupactivityv2
|
|
2
|
+
|
|
3
|
+
Revision ID: cfd13f7954e7
|
|
4
|
+
Revises: 18a26fcdea5d
|
|
5
|
+
Create Date: 2026-01-29 12:33:00.064562
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "cfd13f7954e7"
|
|
14
|
+
down_revision = "18a26fcdea5d"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade() -> None:
|
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
21
|
+
with op.batch_alter_table("jobv2", schema=None) as batch_op:
|
|
22
|
+
batch_op.add_column(
|
|
23
|
+
sa.Column(
|
|
24
|
+
"fractal_server_version",
|
|
25
|
+
sa.String(),
|
|
26
|
+
server_default="pre-2.19.0",
|
|
27
|
+
nullable=False,
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
with op.batch_alter_table("taskgroupactivityv2", schema=None) as batch_op:
|
|
32
|
+
batch_op.add_column(
|
|
33
|
+
sa.Column(
|
|
34
|
+
"fractal_server_version",
|
|
35
|
+
sa.String(),
|
|
36
|
+
server_default="pre-2.19.0",
|
|
37
|
+
nullable=False,
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# ### end Alembic commands ###
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def downgrade() -> None:
|
|
45
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
46
|
+
with op.batch_alter_table("taskgroupactivityv2", schema=None) as batch_op:
|
|
47
|
+
batch_op.drop_column("fractal_server_version")
|
|
48
|
+
|
|
49
|
+
with op.batch_alter_table("jobv2", schema=None) as batch_op:
|
|
50
|
+
batch_op.drop_column("fractal_server_version")
|
|
51
|
+
|
|
52
|
+
# ### end Alembic commands ###
|
|
@@ -31,6 +31,7 @@ class SlurmConfigSet(BaseModel):
|
|
|
31
31
|
time:
|
|
32
32
|
exclude:
|
|
33
33
|
nodelist:
|
|
34
|
+
nodes:
|
|
34
35
|
account:
|
|
35
36
|
extra_lines:
|
|
36
37
|
gpus:
|
|
@@ -47,6 +48,7 @@ class SlurmConfigSet(BaseModel):
|
|
|
47
48
|
gres: NonEmptyStr | None = None
|
|
48
49
|
exclude: NonEmptyStr | None = None
|
|
49
50
|
nodelist: NonEmptyStr | None = None
|
|
51
|
+
nodes: int | None = None
|
|
50
52
|
time: NonEmptyStr | None = None
|
|
51
53
|
account: NonEmptyStr | None = None
|
|
52
54
|
extra_lines: list[NonEmptyStr] = Field(default_factory=list)
|
|
@@ -39,6 +39,7 @@ class SlurmConfig(BaseModel):
|
|
|
39
39
|
gpus: Corresponds to SLURM option.
|
|
40
40
|
time: Corresponds to SLURM option (WARNING: not fully supported).
|
|
41
41
|
nodelist: Corresponds to SLURM option.
|
|
42
|
+
nodes: Corresponds to SLURM option.
|
|
42
43
|
exclude: Corresponds to SLURM option.
|
|
43
44
|
prefix: Prefix of configuration lines in SLURM submission scripts.
|
|
44
45
|
shebang_line: Shebang line for SLURM submission scripts.
|
|
@@ -87,6 +88,7 @@ class SlurmConfig(BaseModel):
|
|
|
87
88
|
time: str | None = None
|
|
88
89
|
account: str | None = None
|
|
89
90
|
nodelist: str | None = None
|
|
91
|
+
nodes: int | None = None
|
|
90
92
|
exclude: str | None = None
|
|
91
93
|
|
|
92
94
|
# Free-field attribute for extra lines to be added to the SLURM job
|
|
@@ -188,6 +190,7 @@ class SlurmConfig(BaseModel):
|
|
|
188
190
|
"account",
|
|
189
191
|
"exclude",
|
|
190
192
|
"nodelist",
|
|
193
|
+
"nodes",
|
|
191
194
|
]:
|
|
192
195
|
value = getattr(self, key)
|
|
193
196
|
if value is not None:
|
{fractal_server-2.19.0a1 → fractal_server-2.19.1}/fractal_server/runner/v2/submit_workflow.py
RENAMED
|
@@ -13,7 +13,6 @@ from typing import Protocol
|
|
|
13
13
|
|
|
14
14
|
from sqlalchemy.orm import Session as DBSyncSession
|
|
15
15
|
|
|
16
|
-
from fractal_server import __VERSION__
|
|
17
16
|
from fractal_server.app.db import DB
|
|
18
17
|
from fractal_server.app.models.v2 import DatasetV2
|
|
19
18
|
from fractal_server.app.models.v2 import JobV2
|
|
@@ -224,7 +223,6 @@ def submit_workflow(
|
|
|
224
223
|
f'Start execution of workflow "{workflow.name}"; '
|
|
225
224
|
f"more logs at {str(log_file_path)}"
|
|
226
225
|
)
|
|
227
|
-
logger.debug(f"fractal_server.__VERSION__: {__VERSION__}")
|
|
228
226
|
logger.debug(f"Resource name: {resource.name}")
|
|
229
227
|
logger.debug(f"Profile name: {profile.name}")
|
|
230
228
|
logger.debug(f"Username: {profile.username}")
|