Note: Numbers like (#1234) point to closed Pull Requests on the fractal-server repository.
2.17.0 - prereleases¶
This version requires a data-migration script (
fractalctl update-db-data), see instructions at TBD.
The main content of this release is the introduction of the computational resource&profile concepts, and a review of the application settings.
- API (main PRs: #2809, #2870, #2877, #2884, #2911, #2915, #2925, #2940, #2941, #2943):- Introduce API for ResourceandProfilemodels.
- Drop API for user settings.
- Drop handling of deprecated DatasetV2.filtersattribute when creating dataset dumps (#2917).
- Enable querying users by resource_id(#2877).
- Check matching-resource_idupon job submission (#2896).
- Treat TaskGroupV2.resource_idas not nullable (#2896).
- Split /api/settings/into smaller-scope endpoints.
- Update rules for read access to task groups with resource information (#2941).
- Only show tasks and task groups associated to current user's Resource(#2906, #2943).
 
- Introduce API for 
- Task-group lifecycle:- Rely on resource and profile rather than user settings (#2809).
 
- Runner- Rely on resource and profile rather than user settings (#2809).
- Make extra_linesa non-optional list in SLURM configuration (#2893).
- Enable user_local_exportson SLURM-SSH runner.
 
- Database and models (also #2931):- Introduce ResourceandProfilemodels (#2809).
- Introduce resource_idforeign key for task-group and project models (#).
- Move project_dirandslurm_accountsfromUserSettingstoUserOAuth.
- Make project_dirrequired.
- Discontinue usage of UserSettingstable.
 
- Introduce 
- Authentication API:- Drop OAuth-based self registration (#2890).
 
- App settings (#2874, #2882, #2895, #2898, #2916, #2922):- Remove all configuration variables that are now part of Resources.
- Split main Settingsmodel into smaller-scope models.
- Remove email-password encryption.
- Introduce init-db-datacommand.
- Set default FRACTAL_API_MAX_JOB_LIST_LENGTHto 25 (#2928).
- Introduce FRACTAL_DEFAULT_GROUP_NAME, set to either"All"orNone(#2939).
 
- Remove all configuration variables that are now part of 
- Dependencies:- Bump fastapito v0.120 (#2921).
- Bump uvicornto v0.38 (#2921).
- Bump fastapi-usersto v15 (#2907).
 
- Bump 
- Testing and GitHub actions:- Simplify Python environment in documentation GitHub action (#2919).
- Simplify PyPI-publish GitHub action (#2927).
- Drop explicit dependency on `python-dotenv (#2921).
 
- Testing:- Introduce pytest-envdependency.
- Update testing database to version 2.16.6 (#2909).
- Test OAuth flow with pytestand remove OAuth GHA (#2929).
 
- Introduce 
2.16.6¶
- API:- Fix bug in import-workflow endpoint, leading to the wrong task-group being selected (#2863).
 
- Models:- Fix use of custom AttributeFilterstype in SQLModel model (#2830).
 
- Fix use of custom 
- Dependencies:- Bump pydanticto 2.12.0 (#2830).
- Bump poetryto 2.2.1 in GitHub actions (#2830).
 
- Bump 
- Testing:- Add pre-commit rule to prevent custom types is models (#2830).
 
2.16.5¶
- Dependencies:- Bump fastapi,sqlmodel,uvicorn,pydantic-settingsversions (#2827).
 
- Bump 
2.16.4¶
- Task life cycle:- Switch to PyPI Index API for finding latest package versions (#2790).
 
- SSH:- Bump default lock-acquisition timeout from 250 to 500 seconds (#XXX).
- Introduce structured logs for SSH-lock dynamics (#XXX).
 
- API:- Replace HTTP_422_UNPROCESSABLE_CONTENTwithHTTP_422_UNPROCESSABLE_CONTENT(#2790).
 
- Replace 
- Internal:- Move app.runnerintorunner(#2814).
 
- Move 
- Testing:- Use function-scoped base folder for backend (#2793).
 
- Dependencies:- Bump fastapiversion (#2790).
- Bump uvicorn-workerandsqlmodelversions (#2792).
 
- Bump 
2.16.3¶
- Task life cycle:- Move post-pixi-installation logic into the same SLURM job as pixi install, for SSH/SLURM deployment (#2787).
 
- Move post-pixi-installation logic into the same SLURM job as 
- Dependencies:- Bump cryptography(#2788).
 
- Bump 
2.16.2¶
- Task life cycle:- Move pixi installexecution to SLURM jobs, for SSH/SLURM deployment (#2784).
- Add SLURM_CONFIGtoPixiSettings(#2784).
 
- Move 
2.16.1¶
- Runner:- Drop top-level executor-error-related logs (#2783).
- Drop obsolete FRACTAL_SLURM_SBATCH_SLEEPconfiguration variable (#2785).
 
2.16.0¶
- Runner:- Record SLURM-job stderr in JobV2.executor_error_log(#2750, #2771, #2773).
 
- Record SLURM-job stderr in 
- Task life cycle:- Support both pre-pinning and post-pinning of dependencies (#2761).
- Drop FRACTAL_MAX_PIP_VERSIONconfiguration variable (#2766).
- Make TaskGroup deletion a lifecycle operation (#2759).
 
- Testing:- Add out_of_memorymock task (#2770).
- Make fixtures sync when possible (#2776).
- Bump pytest-related dependencies (#2776).
 
- Add 
2.15.9¶
- API:- In POST /api/v2/project/{project_id}/status/images/, include all available types&attributes (#2762).
 
- In 
- Internal:- Optimize fractal_server.images.tools.aggregate_attributes(#2762).
 
- Optimize 
2.15.8¶
- Runner:- Split SlurmJobsubmission into three steps, reducing SSH connections (#2749).
- Deprecate experimental pre_submission_commandsfeature (#2749).
 
- Split 
- Documentation:- Fix Fractal Usersdocumentation page (#2738).
- Improve documentation for Pixi task collection (#2742).
 
- Fix 
- Task life cycle:- Add test to lock FRACTAL_MAX_PIP_VERSIONwith latest version on PyPI (#2752).
- Use pixi v0.54.1 in tests (#2758).
 
- Add test to lock 
- Internal- Improve type hints (#2739).
 
- SSH:- Add a decorator to open a new connection (socket) if the decorated function hits a NoValidConnectionErroror aOSError(#2747).
- Remove multiple-attempts logic (#2747).
 
- Add a decorator to open a new connection (socket) if the decorated function hits a 
2.15.7¶
- API:- Capture SSH related failure in submit-job endpoint (#2734).
 
- Task life cycle:- Also edit tool.pixi.project.platformssection ofpyproject.toml, forpixi-based task collection (#2711).
 
- Also edit 
- Internal:- Extend use of UnreachableBranchErrorin API and runner (#2726).
 
- Extend use of 
- Dependencies:- Bump fastapito version0.116.*(#2718).
- Bump all docsoptional dependencies (#2722).
- Add support for Python 3.13 (#2716).
 
- Bump 
- Documentation:- Remove/fix several obsolete docs pages (#2722).
 
- Testing:- Improve/optimize several tests (#2727).
- Use poetry2.1.3 in all GitHub Actions and always install it usingpipx(#2731).
- Move all GitHub Action runners to ubuntu-24.04(#2732).
- Avoid using threadingprivate method (#2733).
 
2.15.6¶
- Runner:- Remove obsolete JobExecutionErrorattributes andTaskExecutionErrorhandling (#2708).
- Always interpret needs_gpustring as a boolean (#2706).
 
- Remove obsolete 
- Task life cycle:- Use bash --loginforpixi installexecution over SSH (#2709).
 
- Use 
- Development:- Move examplefolder to root directory (#2720).
 
- Move 
2.15.5¶
- API:- Update HistoryRunandHistoryUnits statuses whenWorkflows are manually labeled as failed (#2705).
 
- Update 
2.15.4¶
- Task lifecycle:- Edit pyproject.tomlin-place before runningpixi install(#2696).
 
- Edit 
2.15.3¶
- API:- Ongoing WorkflowTasks are marked as submitted duringJobexecution (#2692).
 
- Ongoing 
2.15.2¶
- API:- Improve logging for PATCH /admin/v2/job/{job_id}/(#2686).
- Prevent deletion and reordering of WorkflowTasks inWorkflows associated to submittedJobs (#2689).
 
- Improve logging for 
- Database:- Set pool_pre_ping=Truefor sync db engine (#2676).
 
- Set 
- Runner:- Update chmod ... -Rtochmod -R ...(#2681).
- Add custom handling of some slurm_load_jobssocket-timeout error (#2683).
- Remove redundant mkdirin SLURM SSH runner (#2671).
- Do not write to SLURM stderr from remote worker (#2691).
- Fix spurious version-mismatch warning in remote worker (#2691).
 
- Update 
- SSH:- Always set in_stream=Falseforfabric.Connection.run(#2694).
 
- Always set 
- Testing:- Fix test_FractalSSH.py::test_folder_utilsfor MacOS (#2678).
- Add pytest marker fails_on_macos(#2681).
- Remove patching of sys.stdin, thanks to updates tofabric.Connection.runarguments (#2694).
 
- Fix 
2.15.1¶
This release fixes the reason for yanking 2.15.0.
- Database:- Modify JSON->JSONBdatabase schema migration in-place, so that columns which represent JSON Schemas ormeta_*fields remain in JSON form rather than JSONB (#2664, #2666).
 
- Modify 
2.15.0 [yanked]¶
This release was yanked on PyPI, because its conversion of all JSON columns into JSONB changes the key order, see https://github.com/fractal-analytics-platform/fractal-server/issues/2663.
- Database:- Rename TaskGroupV2.wheel_pathintoTaskGroupV2.archive_path(#2627).
- Rename TaskGroupV2.pip_freezeintoTaskGroupV2.env_info(#2627).
- Add TaskGroupV2.pixi_version(#2627).
- Transform every JSON column to JSONB (#2662).
 
- Rename 
- API:- Introduce new value TaskGroupV2OriginEnum.PIXI(#2627).
- Exclude TaskGroupV2.env_infofrom API responses (#2627).
- Introduce POST /api/v2/task/collect/pixi/(#2627).
- Extend deactivation/reactivation endpoints to pixi task groups (#2627).
- Block DELETE /api/v2/task-group/{task_group_id}/if a task-group activity is ongoing (#2642).
- Introduce _verify_non_duplication_group_pathauxiliary function (#2643).
 
- Introduce new value 
- Task lifecycle:- Introduce full support for pixi task-group lifecycle (#2627, #2651, #2652, #2654).
 
- SSH:- Introduce FractalSSH.read_remote_text_file(#2627).
 
- Introduce 
- Runner:- Fix use of worker_init/extra_linesfor multi-image job execution (#2660).
- Support SLURM configuration options nodelistandexclude(#2660).
 
- Fix use of 
- App configuration:- Introduce new configuration variable FRACTAL_PIXI_CONFIG_FILEand new attributeSettings.pixi(#2627, #2650).
 
- Introduce new configuration variable 
2.14.16¶
- Internal:- Refactor and optimize enrich-image functions (#2620).
 
- Database:- Add indices to HistoryImageCachetable (#2620).
 
- Add indices to 
- SSH:- Increase Paramiko banner_timeoutfrom the default 15 seconds to 30 seconds (#2632).
- Re-include check_connectionuponSlurmSSHRunnerstartup (#2636).
 
- Increase Paramiko 
- Testing:- Introduce benchmarks for database operations (#2620).
 
- Dependencies:- Update cryptography,packagingandpython-dotenvdependencies (#2630).
 
- Update 
2.14.15¶
- API:- Add required workflowtask_idquery parameter toverify-unique-typesendpoint (#2619).
- Enrich images with status within verify-unique-typesendpoint, when necessary (#2619).
 
- Add required 
2.14.14¶
- API:- Fix GET /api/v2/task-group/by adding missing sorting beforeitertools.groupby(#2614).
 
- Fix 
- Internal:- Drop execute_command_asyncfunction (#2611).
- Introduce TaskTypeenum (#2612).
 
- Drop 
2.14.13¶
- API:- Group response items of GET /api/v2/task-group/bypkg_name(#2596).
- Disambiguate response items of GET /api/v2/task-group/(#2596).
 
- Group response items of 
- Internal:- Introduce UnreachableBranchError(#2596).
 
- Introduce 
- Testing:- Enforce task-group non-duplication constraints in task_factory_v2fixture (#2596).
 
- Enforce task-group non-duplication constraints in 
2.14.12¶
- Runner:- Enable status-based selection of images to process (#2588).
 
- API:- Remove unit_statusquery parameter from/project/{project_id}/status/images/(#2588).
- Remove default type filters from /project/{project_id}/status/images/(#2588).
- Sort lists of existing attribute values in aggregate_attributes(#2588).
 
- Remove 
- Task-group lifecycle:- Split pip installcommand into two steps (#2600).
 
- Split 
2.14.11¶
- Task-group lifecycle:- Support version-pinning for two dependencies in task collection (#2590, #2599).
- Support version-pinning for previously-missing dependencies in task collection (#2590, #2599).
 
- Development:- Improve mypyconfiguration inpyproject.toml(#2595).
 
- Improve 
2.14.10¶
This version requires a data-migration script (
fractalctl update-db-data).
- Database:- Improve data-migration script that is necessary for 2.14.8 (#2594).
 
2.14.9¶
WARNING: Do not release this version, but go directly to 2.14.10.
- Task-group lifecycle:- Improve handling of SSH-related errors (#2589).
 
- Database:- Rename data-migration script that is necessary for 2.14.8 (#2592).
 
2.14.8¶
WARNING: Do not release this version, but go directly to 2.14.10.
- API:- Update POST /project/{project_id}/workflow/{workflow_id}/wftask/replace-task/so that it re-uses existing workflow task (#2565).
 
- Update 
- Database:- Add HistoryRun.task_idcolumn (#2565).
 
- Add 
- Internal:- Refactor: extract enrich_image_listfunction from/project/{project_id}/status/images/endpoint (#2585).
 
- Refactor: extract 
2.14.7¶
- Runner:- Re-include SLURM accounts for both sudo-slurm and ssh-slurm runners (#2580)
- Re-include use of worker_initfor both sudo-slurm and ssh-slurm runners (#2580)
 
- Testing:- Use Optionalfor argument type hints in mock tasks (#2575).
 
- Use 
2.14.6¶
- API:- Introduce api/v2/project/{project.id}/workflow/{workflow.id}/version-update-candidates/endpoint (#2556).
 
- Introduce 
- Task lifecycle:- Use dedicated SSH connections for lifecycle background tasks (#2569).
- Also set TaskGroup.versionfor custom task collections (#2573).
 
- Internal:- Inherit from StrEnumrather thanstr, Enum(#2561).
- Run pyupgradeon codebase (#2563).
- Remove init file of obsolete folder (#2571).
 
- Inherit from 
- Dependencies:- Deprecate Python 3.10 (#2561).
 
2.14.5¶
This version introduces an important internal refactor of the runner component, with the goal of simplifying the SLURM version.
- Runner:- Make submit/multisubmitmethod take static arguments, rather than a callable (#2549).
- Replace input/output pickle files with JSON files (#2549).
- Drop possibility of non-utf-8encoding for_run_command_as_userfunction (#2549).
- Avoid local-remote-local round trip for task parameters, by writing the local file first (#2549).
- Stop relying on positive/negative return codes to produce either TaskExecutionError/JobExecutionError, in favor of only producingTaskExecutionErrorat the lowest task-execution level (#2549).
- Re-implement run_single_taskwithin SLURM remoteworkerfunction (#2549).
- Drop TaskFiles.remote_files_dict(#2549).
- Drop obsolete FRACTAL_SLURM_ERROR_HANDLING_INTERVALconfig variable (#2549).
- Drop obsolete utils_executors.pymodule (#2549).
 
- Make 
- Dependencies:- Drop cloudpickledependency (#2549).
- Remove copyright references to clusterfutures(#2549).
 
- Drop 
- Testing:- Introduce slurm_alivefixture that checksscontrol pingresults (#2549).
 
- Introduce 
2.14.4¶
- API:- Replace most field_validators withAnnotatedtypes, and reviewmodel_validators (#2504).
 
- Replace most 
- SSH:- Remove Python-wrapper layer for tarcommands (#2554).
- Add elapsedinformation to SSH-lock-was-acquired log (#2558).
 
- Remove Python-wrapper layer for 
2.14.3¶
- Runner:- Skip creation/removal of folder copy in compress-folder module (#2553).
- Drop obsolete --extra-import-pathsoption from SLURM remote worker (#2550).
 
2.14.2¶
- API:- Handle inaccessible python_interpreterorpackage_rootin custom task collection (#2536).
- Do not raise non-processed-images warning if the previous task is a converter (#2546).
 
- Handle inaccessible 
- App:- Use Enumvalues in f-strings, for filenames and error messages (#2540).
 
- Use 
- Runner:- Handle exceptions in post-task-execution runner code (#2543).
 
2.14.1¶
- API:- Add POST /project/{project_id}/dataset/{dataset_id}/images/non-processed/endpoint (#2524, #2533).
 
- Add 
- Runner:- Do not create temporary output-pickle files (#2539).
- Set logging level to DEBUGwithincompress_folderandextract_archivemodules (#2539).
- Transform job-error log into warning (#2539).
- Drop FRACTAL_SLURM_INTERVAL_BEFORE_RETRIEVAL(#2525, #2531).
- Increase MAX_NUM_THREADSfrom 4 to 12 (#2520).
- Support re-deriving an existing image with a non-trivial origin(#2527).
 
- Testing:- Adopt ubuntu24 containers for CI (#2530).
- Do not run Python3.11 container CI for PRs, but only for merges (#2519).
- Add mock wheel file and update assertion for pip 25.1 (#2523).
- Optimize test_reactivate_local_fail(#2511).
- Replace fractal-tasks-corewithtesting-tasks-mockin tests (#2511).
- Improve flaky test (#2513).
 
2.14.0¶
This release mostly concerns the new database/runner integration in view of providing more granular history/status information. This includes a full overhaul of the runner.
- API:- Add all new status endpoints.
- Add GET /job/latest/endpoint (#2389).
- Make request body required for replace-taskendpoint (#2355).
- Introduce shared tools for pagination.
- Remove valstrvalidator and introduceNonEmptyStringin schemas (#2352).
 
- Database- New tables HistoryRun,HistoryUnitandHistoryImageCachetables.
- Drop attribute/type filters from dataset table.
- Add type_filterscolumn to job table.
- Use ondeleteflag in place of custom DELETE-endpoint logics.
 
- New tables 
- Runner- Full overhaul of runners. Among the large number of changes, this includes:- Fully drop the concurrent.futuresinterface.
- Fully drop the multithreaded nature of SLURM runners, in favor of a more linear submission/retrieval flow.
- New BaseRunner,LocalRunner,BaseSlurmRunner,SlurmSSHRunnerandSlurmSudoRunnerobjects.
- The two SLURM runners now share a large part of base logic.
- Database updates to HistoryRun,HistoryUnitandHistoryImageCachetables.
- We do not fill Dataset.historyany more.
 
- Fully drop the 
 
- Full overhaul of runners. Among the large number of changes, this includes:
- Task lifecycle:- Drop hard-coded use of --no-cache-dirforpip installcommand (#2357).
 
- Drop hard-coded use of 
- App:- Obfuscate sensitive information from settings using SecretStr(#2333).
- Drop FRACTAL_RUNNER_TASKS_INCLUDE_IMAGEobsolete configuration variable (#2359).
 
- Obfuscate sensitive information from settings using 
- Testing:- Use fractal-task-toolsto buildfractal-tasks-mockmanifest (#2374).
 
- Use 
- Development:- Add codespellto precommit (#2358).
- Drop obsolete examplesfolder (#2405).
 
- Add 
2.13.1¶
- API:- Add AccountingRecordandAccountingRecordSlurmtables (#2267).
- Add /admin/v2/impersonateendpoint (#2280).
- Replace _raise_if_naive_datetimewithAwareDatetime(#2283).
 
- Add 
- Database:- Add /admin/v2/accounting/and/admin/v2/accounting/slurm/endpoints (#2267).
 
- Add 
- Runner:- Populate AccountingRecordfrom runner (#2267).
 
- Populate 
- App:- Review configuration variables for email-sending (#2269).
- Reduce error-level log records(#2282).
 
- Testing:- Drop obsolete files/folders from tests/data(#2281).
 
- Drop obsolete files/folders from 
- Dependencies:- Bump httpxto version0.28.*(#2284).
 
- Bump 
2.13.0¶
With this release we switch to Pydantic v2.
- Runner:- Deprecate FRACTAL_BACKEND_RUNNER="local_experimental"(#2273).
- Fully replace clusterfuturesclasses with custom ones (#2272).
 
- Deprecate 
- Dependencies:- Bump pydanticto v2 (#2270).
- Drop clusterfuturesdependency (#2272).
- Drop psutildependency (#2273).
- Bump cryptographyto version44.0.*(#2274).
- Bump sqlmodelto version0.0.22(#2275).
- Bump packagingto version24.*.*(#2275).
- Bump cloudpickleto version3.1.*(#2275).
- Bump uvicorn-workersto version0.3.0(#2275).
- Bump gunicornto version23.*.*(#2275).
- Bump httpxto version0.27.*(#2275).
 
- Bump 
2.12.1¶
Note: this version requires a manual update of email-related configuration variables.
- API:- Deprecate use_dataset_filtersquery parameter for/project/{project_id}/dataset/{dataset_id}/images/query/(#2231).
 
- Deprecate 
- App:- Add fractal-server version to logs (#2228).
- Review configuration variables for email-sending (#2241).
 
- Database:- Remove run_migrations_offlinefromenv.pyand makerun_migrations_onlinesync (#2239).
 
- Remove 
- Task lifecycle:- Reset logger handlers upon success of a background lifecycle operation, to avoid open file descriptors (#2256).
 
- Runner- Sudo/SLURM executor checks the fractal-server version using FRACTAL_SLURM_WORKER_PYTHONconfig variable, if set (#2240).
- Add uname -nto SLURM submission scripts (#2247).
- Handle _COMPONENT_KEY_-related errors in sudo/SLURM executor, to simplify testing (#2245).
- Drop obsolete SlurmJob.workflow_task_file_prefixfor both SSH/sudo executors (#2245).
- Drop obsolete keep_pickle_filesattribute from slurm executors (#2246).
 
- Sudo/SLURM executor checks the fractal-server version using 
- Dependencies:- Bump uvicornversion (#2242).
 
- Bump 
- Testing:- Improve testing of sudo-Slurm executor (#2245, #2246).
- Introduce containerpytest marker (#2249).
- Split CI GitHub Actions in three jobs: API, not API and Containers (#2249).
 
2.12.0¶
WARNING: The database schema update introduced via this version is non-reversible.
- API:- Drop V1 endpoints (#2230).
 
- Database:- Drop V1 tables (#2230).
 
- Runner:- Drop V1 runners (#2230).
 
- Testing:- Drop V1 tests (#2230).
- Update V2 tests to keep coverage stable (#2230).
 
2.11.1¶
- Database- Drop columns DatasetV2.filtersandWorkflowTaskV2.input_filters(#2232).
 
- Drop columns 
2.11.0¶
This version revamps the filters data structure, and it introduces complex attribute filters.
Note: This release requires running
fractalctl update-db-data. Some legacy columns will be removed from the database, either as part of the2.11.0data-migration or as part of the2.11.1schema migration. Please make sure you have a database dump.
- API:- Align API with new database schemas for filters-related columns (#2168, #2196, #2202).
- Support importing workflows or datasets with legacy (pre-2.11.0) filters-related fields (#2185, #2227).
- Avoid blocking operations from the download-job-logs endpoint, when the zip archive of a running job is requested (#2225).
- Update and simplify /api/v2/project/{project_id}/status/, dropping use of temporary job files (#2169).
- Add new (experimental) /project/{project_id}/workflow/{workflow_id}/type-filters-flow/endpoint (#2208).
 
- Database:- Update table schemas for all filters-related columns:- Always handle attribute- and type-filters in different columns (#2168).
- Update attribute-filter-values type from scalar to list (#2168, #2196).
- Deprecate attribute filters for WorkflowTaskV2(#2168).
- Add attribute filters to JobV2(#2168).
 
- 2.11.0data-migration script (#2168, #2202, #2208, #2209).
 
- Update table schemas for all filters-related columns:
- Runner:- Introduce database writes in runner component, to replace the use of temporary files (#2169).
- Use TaskV2.input_typesfor filtering, rather than validation (#2191, #2196).
- Make job-execution background-task function sync, to make it transparent that it runs on a thread (#2220).
- Remove all filters from TaskOutput(#2190).
 
- Task Collection:- Improve logs handling for failed task collections (#2192)
 
- Testing:- Speed up CI by splitting it into more jobs (#2210).
 
2.10.6¶
- Task lifecycle:- Use unique logger names for task-lifecycle operations (#2204).
 
2.10.5¶
- App:- Add missing space in "To" field for email settings (#2173).
 
- Testing:- Improve configuration for coverage GitHub Action step (#2175).
- Add persist-credentials: falsetoactions/checkout@v4GitHub Action steps (#2176).
 
- Dependencies:- Require bumpver>2024.0(#2179).
 
- Require 
2.10.4¶
- Switch to poetry v2 (#2165).
- Require Python <3.13 (#2165).
2.10.3¶
Note: this version fixes a bug introduced in version 2.10.1.
- API:- Fix bug in POST /api/v2/project/{p_id}/workflow/{w_id}/wftask/replace-task/endpoint (#2163).
- Add validation for .whlfilename (#2147).
- Trim whitespaces in DatasetCreateV2.zarr_dir(#2138).
- Support sending emails upon new OAuth signup (#2150).
 
- Fix bug in 
- App:- Introduce configuration for email settings (#2150).
 
- Command-line interface:- Add fractalctl email-settings(#2150).
 
- Add 
- Dependencies:- Add direct dependency on cryptography(#2150).
 
- Add direct dependency on 
- Testing:- Introduce mailpit-based end-to-end test of email sending (#2150).
 
- Introduce 
2.10.2¶
- App:- Add FRACTAL_PIP_CACHE_DIRconfiguration variable (#2141).
 
- Add 
- Tasks life cycle:- Prevent deactivation of task groups with "github.com"in pip-freeze information (#2144).
 
- Prevent deactivation of task groups with 
- Runner:- Handle early shutdown for sudo SLURM executor (#2132).
- Fix repeated setting of timestamp_endedin task-group reactivation (#2140).
 
2.10.1¶
- API:- Add POST /api/v2/project/{p_id}/workflow/{w_id}/wftask/replace-task/endpoint (#2129).
 
- Add 
- Testing:- Use system postgresql in GitHub actions, rather than independent container (#2199).
 
2.10.0¶
- API:- Major update of POST /api/v2/task/collect/pip/, to support wheel-file upload (#2113).
 
- Major update of 
- Testing:- Add test of private task collection (#2126).
 
2.9.2¶
- API- Remove cache_dirand useproject_dir/.fractal_cache(#2121).
 
- Remove 
- Docs- Improve docstrings and reduce mkdocs warnings (#2122).
 
2.9.1¶
- Task collection:- Fix bug in wheel-based SSH task-collection (#2119).
 
- Testing:- Re-include a specific test previously skipped for Python 3.12 (#2114).
- Add metadata to fractal-tasks-mockpackage (#2117).
 
- Docs:- Add info about working versions.
 
2.9.0¶
WARNING 1: This version drops support for sqlite, and removes the configuration variables
DB_ENGINEandSQLITE_PATH.WARNING 2: This version removes the
CollectionStateV2database table. Make sure you have a database dump before runningfractalctl set-db, since this operation cannot be undone.
- API- Remove GET /api/v2/task/collect/{state_id}/endpoint (#2010).
- Remove activeproperty fromPATCH /api/v2/task-group/{task_group_id}/(#2033).
- Add GET /api/v2/task-group/activity/endpoint (#2005, #2027).
- Add GET /api/v2/task-group/activity/{task_group_activity_id}/endpoint (#2005).
- Add GET /admin/v2/task-group/activity/endpoint (#2005, #2027).
- Add POST /api/v2/task-group/{task_group_id}/{deactivate|reactivate}endpoints (#2033, #2066, #2078).
- Add POST /admin/v2/task-group/{task_group_id}/{deactivate|reactivate}endpoints (#2062, #2078).
- Remove GET /auth/current-user/viewer-paths/(#2096).
- Add GET /auth/current-user/allowed-viewer-paths/, with logic forfractal-vizarr-viewerauthorization (#2096).
- Add category,modalityandauthorquery parameters toGET /admin/v2/task/(#2102).
- Add POST /auth/group/{group_id}/add-user/{user_id}/(#2101).
- Add POST /auth/group/{group_id}/remove-user/{user_id}/(#2101, #2111).
- Add POST /auth/users/{user_id}/set-groups/(#2106).
- Remove new_user_idsproperty fromPATCH /auth/group/{group_id}/(#2101).
- Remove new_group_idsproperty fromPATCH /auth/users/{user_id}/(#2106).
- Internals:
- Fix bug in _get_collection_task_group_activity_status_message(#2047).
- Remove valutcvalidator for timestamps from API schemas, since it does not match withpsycopg3behavior (#2064).
- Add query parameters timestamp_last_used_{min|max}toGET /admin/v2/task-group/(#2061).
- Remove _convert_to_db_timestampand add_raise_if_naive_datetime: now API only accepts timezone-aware datetimes as query parameters (#2068).
- Remove _encode_as_utc: now timestamps are serialized in JSONs with their own timezone (#2081).
 
- Remove 
- Database- Drop support for sqlite, and remove the DB_ENGINEandSQLITE_PATHconfiguration variables (#2052).
- Add TaskGroupActivityV2table (#2005).
- Drop CollectionStateV2table (#2010).
- Add TaskGroupV2.pip_freezenullable column (#2017).
- Add  venv_size_in_kBandvenv_file_numbertoTaskGroupV2(#2034).
- Add TaskGroupV2.timestamp_last_usedcolumn, updated on job submission (#2049, #2061, #2086).
 
- Drop support for sqlite, and remove the 
- Task-lifecycle internals:- Refactor task collection and database-session management in background tasks (#2030).
- Update TaskGroupActivityV2objects (#2005).
- Update filename and path for task-collection scripts (#2008).
- Copy wheel file into task_group.pathand updatetask_group.wheel_path, for local task collection (#2020).
- Set TaskGroupActivityV2.timestamp_endedwhen collections terminate (#2026).
- Refactor bash templates and add install_from_freeze.sh(#2029).
- Introduce background operations for local reactivate/deactivate (#2033).
- Introduce background operations for SSH reactivate/deactivate (#2066).
- Fix escaping of newlines within f-strings, in logs (#2028).
- Improve handling of task groups created before 2.9.0 (#2050).
- Add TaskGroupCreateV2Strictfor task collections (#2080).
- Always create script_dir_remotein SSH lifecycle background tasks (#2089).
- Postpone setting active=Falsein task-group deactivation to after all preliminary checks (#2100).
 
- Runner:- Improve error handling in _zip_folder_to_file_and_remove(#2057).
- Improve error handling in FractalSlurmSSHExecutorhandshakemethod (#2083).
- Use the "spawn" start method for the multiprocessing context, for the ProcessPoolExecutor-based runner (#2084).
- Extract common functionalities from SLURM/sudo and SLURM/SSH executors (#2107).
 
- Improve error handling in 
- SSH internals:- Add FractalSSH.remote_existsmethod (#2008).
- Drop FractalSSH.{_get,_put}wrappers ofSFTPClientmethods (#2077).
- Try re-opening the connection in FractalSSH.check_connectionwhen an error occurs (#2035).
- Move NoValidConnectionErrorexception handling intoFractalSSH.log_and_raisemethod (#2070).
- Improve closed-socket testing (#2076).
 
- Add 
- App:
- Add FRACTAL_VIEWER_AUTHORIZATION_SCHEMEandFRACTAL_VIEWER_BASE_FOLDERconfiguration variables (#2096).
- Testing:- Drop fetch-depthfromcheckoutin GitHub actions (#2039).
 
- Drop 
- Scripts:- Introduce scripts/export_v1_workflows.py(#2043).
 
- Introduce 
- Dependencies:- Remove passlibdependency (#2112).
- Bump fastapi-usersto v14, which includes switch topwdlib(#2112).
 
- Remove 
2.8.1¶
- API:- Validate all user-provided strings that end up in pip-install commands (#2003).
 
2.8.0¶
- Task collection- Now both the local and SSH versions of the task collection use the bash templates (#1980).
- Update task-collections database logs incrementally (#1980).
- Add TaskGroupV2.pinned_package_versions_stringproperty (#1980).
- Support pinned-package versions for SSH task collection (#1980).
- Now pip installuses--no-cache(#1980).
 
- API- Deprecate the verbosequery parameter inGET /api/v2/task/collect/{state_id}/(#1980).
- Add project_dirattribute toUserSettings(#1990).
- Set a default for DatasetV2.zarr_dir(#1990).
- Combine the args_schema_parallelandargs_schema_non_parallelquery parameters inGET /api/v2/task/into a single parameterargs_schema(#1998).
 
- Deprecate the 
2.7.1¶
WARNING: As of this version, all extras for
pip installare deprecated and the corresponding dependencies become required.
- Database:- Drop TaskV2.ownercolumn (#1977).
- Make TaskV2.taskgroupv2_idcolumn required (#1977).
 
- Drop 
- Dependencies:- Make psycopg[binary]dependency required, and droppostgres-pyscopg-binaryextra (#1970).
- Make gunicorndependency required, and dropgunicornextra (#1970).
 
- Make 
- Testing:- Switch from SQLite to Postgres in the OAuth Github action (#1981).
 
2.7.0¶
WARNING: This release comes with several specific notes:
- It requires running
fractalctl update-db-data(afterfractalctl set-db).- When running
fractalctl update-db-data, the environment variableFRACTAL_V27_DEFAULT_USER_EMAILmust be set, e.g. as inFRACTAL_V27_DEFAULT_USER_EMAIL=admin@fractal.yx fractalctl update-db-data. This user must exist, and they will own all previously-common tasks/task-groups.- The pip extra
postgresis deprecated, in favor ofpostgres-psycopg-binary.- The configuration variable
DB_ENGINE="postgres"is deprecated, in favor ofDB_ENGINE="postgres-psycopg".- Python3.9 is deprecated.
- API:- Users and user groups:- Replace UserRead.group_namesandUserRead.group_idswithUserRead.group_ids_namesordered list (#1844, #1850).
- Deprecate GET /auth/group-names/(#1844).
- Add DELETE /auth/group/{id}/endpoint (#1885).
- Add PATCH auth/group/{group_id}/user-settings/bulk endpoint (#1936).
 
- Replace 
- Task groups:- Introduce /api/v2/task-group/routes (#1817, #1847, #1852, #1856, #1943).
- Respond with 422 error when any task-creating endpoint would break a non-duplication constraint (#1861).
- Enforce non-duplication constraints on TaskGroupV2(#1865).
- Fix non-duplication check in PATCH /api/v2/task-group/{id}/(#1911).
- Add cascade operations to DELETE /api/v2/task-group/{task_group_id}/and toDELETE /admin/v2/task-group/{task_group_id}/(#1867).
- Expand use and validators for TaskGroupCreateV2schema (#1861).
- Do not process task sources in task/task-group CRUD operations (#1861).
- Do not process task owners in task/task-group CRUD operations (#1861).
 
- Introduce 
- Tasks:- Drop TaskCreateV2.source(#1909).
- Drop TaskUpdateV2.version(#1905).
- Revamp access-control for /api/v2/task/endpoints, based on task-group attributes (#1817).
- Update /api/v2/task/endpoints and schemas with new task attributes (#1856).
- Forbid changing TaskV2.name(#1925).
 
- Drop 
- Task collection:- Improve preliminary checks in task-collection endpoints (#1861).
- Refactor split between task-collection endpoints and background tasks (#1861).
- Create TaskGroupV2object within task-collection endpoints (#1861).
- Fix response of task-collection endpoint (#1902).
- Automatically discover PyPI package version if missing or invalid (#1858, #1861, #1902).
- Use appropriate log-file path in collection-status endpoint (#1902).
- Add task authorsto manifest schema (#1856).
- Do not use sourcefor custom task collection (#1893).
- Rename custom-task-collection request-body field from sourcetolabel(#1896).
- Improve error messages from task collection (#1913).
- Forbid non-unique task names in ManifestV2(#1925).
 
- Workflows and workflow tasks:- Introduce additional checks in POST-workflowtask endpoint, concerning non-active or non-accessible tasks (#1817).
- Introduce additional intormation in GET-workflow endpoint, concerning non-active or non-accessible tasks (#1817).
- Introduce additional intormation in PATCH-workflow endpoint, concerning non-active or non-accessible tasks (#1868, #1869).
- Stop logging warnings for non-common tasks in workflow export (#1893).
- Drop WorkflowTaskCreateV2.order(#1906).
- Update endpoints for workflow import/export (#1925, #1939, #1960).
 
- Datasets:- Remove TaskDumpV2.ownerattribute (#1909).
 
- Remove 
- Jobs:- Prevent job submission if includes non-active or non-accessible tasks (#1817).
- Remove rate limit for POST /project/{project_id}/job/submit/(#1944).
 
- Admin:- Remove ownerfromGET admin/v2/task/(#1909).
- Deprecate kindquery parameter for/admin/v2/task/(#1893).
- Add originandpkg_namequery parameters toGET /admin/v2/task-group/(#1979).
 
- Remove 
- Schemas:- Forbid extras in TaskCollectPipV2(#1891).
- Forbid extras in all Create/Update/Import schemas (#1895).
- Deprecate internal TaskCollectPipschema in favor ofTaskGroupV2(#1861).
 
- Forbid extras in 
 
- Users and user groups:
- Database:- Introduce TaskGroupV2table (#1817, #1856).
- Add  timestamp_createdcolumn toLinkUserGrouptable (#1850).
- Add TaskV2attributesauthors,tags,categoryandmodality(#1856).
- Add update-db-datascript (#1820, #1888).
- Add taskgroupv2_idforeign key toCollectionStateV2(#1867).
- Make TaskV2.sourcenullable and drop its uniqueness constraint (#1861).
- Add TaskGroupV2columnswheel_path,pinned_package_versions(#1861).
- Clean up alembicmigration scripts (#1894).
- Verify task-group non-duplication constraint in 2.7.0data-migration script (#1927).
- Normalize pkg_namein2.7.0data-migration script (#1930).
- Deprecate DB_ENGINE="postgres"configuration variable (#1946).
 
- Introduce 
- Runner:- Do not create local folders with 755 permissions unless FRACTAL_BACKEND_RUNNER="slurm"(#1923).
- Fix bug of SSH/SFTP commands not acquiring lock (#1949).
- Fix bug of unhandled exception in SSH/SLURM executor (#1963).
- Always remove task-subfolder compressed archive (#1949).
 
- Do not create local folders with 755 permissions unless 
- Task collection:- Create base directory (in SSH mode), if missing (#1949).
- Fix bug of SSH/SFTP commands not acquiring lock (#1949).
 
- SSH:- Improve logging for SSH-connection-locking flow (#1949).
- Introduce FractalSSH.fetch_fileandFractalSSH.read_remote_json_file(#1949).
- Use paramiko.sftp_client.SFTPClientmethods directly rathen thanfabricwrappers (#1949).
- Disable prefetching for SFTPClient.get(#1949).
 
- Internal:- Update _create_first_groupso that it only searches forUserGroupswith a given name (#1964).
 
- Update 
- Dependencies:- Bump fastapi to 0.115(#1942).
- Remove pip extra postgres, corresponding topsycopg2+asyncpg(#1946).
- Deprecate python3.9 (#1946).
 
- Bump fastapi to 
- Testing:- Benchmark GET /api/v2/task-group/(#1922).
- Use new ubuntu22-slurm-multipyimage, with Python3.12 and with Python-version specific venvs (#1946, #1969).
- Get DB_ENGINEvariable fromos.environrather than from installed packages (#1968).
 
- Benchmark 
2.6.4¶
- Database- Fix use of naming convention for database schema-migration scripts (#1819).
 
- Testing:- Test alembic downgrade base(#1819).
- Add GET /api/v2/task/to benchmarks (#1825).
 
- Test 
2.6.3¶
- API:- Introduce GET /auth/current-user/viewer-paths/endpoint (#1816).
- Add viewer_pathsattribute toUserGroupendpoints (#1816).
 
- Introduce 
- Database:- Add  viewer_pathscolumn toUserGrouptable (#1816).
 
- Add  
- Runner:- Anticipate wait_thread.shutdown_callbackassignment inFractalSlurmExecutor, to avoid an uncaught exception (#1815).
 
- Anticipate 
2.6.2¶
- Allow setting UserSettingsattributes toNonein standard/strict PATCH endpoints (#1814).
2.6.1¶
- App (internal):- Remove FRACTAL_SLURM_SSH_HOST,FRACTAL_SLURM_SSH_USER,FRACTAL_SLURM_SSH_PRIVATE_KEY_PATHandFRACTAL_SLURM_SSH_WORKING_BASE_DIRfromSettings(#1804).
 
- Remove 
- Database:- Drop slurm_user,slurm_accountsandcache_dircolumns fromUserOAuth(#1804)
 
- Drop 
2.6.0¶
WARNING: This release requires running
fractalctl update-db-data(afterfractalctl set-db).
- API:- Introduce user-settings API, in /auth/users/{user_id}/settings/and/auth/current-user/settings/(#1778, #1807).
- Add the creation of empty settings to UserManager.on_after_registerhook (#1778).
- Remove deprecated user's attributes (slurm_user,cache_dir,slurm_accounts) from API, in favor of newUserSettingones (#1778).
- Validate user settings in endpoints that rely on them (#1778).
- Propagate user settings to background tasks when needed (#1778).
 
- Introduce user-settings API, in 
- Database:- Introduce new user_settingstable, and link it touser_oauth(#1778).
 
- Introduce new 
- Internal:
- Remove redundant string validation in FractalSSH.remove_folderandTaskCollectCustomV2(#1810).
- Make validate_cmdmore strict about non-string arguments (#1810).
2.5.2¶
- App:- Replace fractal_sshattribute withfractal_ssh_list, inapp.state(#1790).
- Move creation of SSH connections from app startup to endpoints (#1790).
 
- Replace 
- Internal- Introduce FractalSSHList, in view of support for multiple SSH/Slurm service users (#1790).
- Make FractalSSH.close()more aggressively closeTransportattribute (#1790).
- Set look_for_keys=Falsefor paramiko/fabric connection (#1790).
 
- Introduce 
- Testing:- Add fixture to always test that threads do not accumulate during tests (#1790).
 
2.5.1¶
- API:- Make WorkflowTaskDumpV2attributestask_idandtaskoptional (#1784).
- Add validation for user-provided strings that execute commands with subprocess or remote-shell (#1767).
 
- Make 
- Runner and task collection:- Validate commands before running them via subprocessorfabric(#1767).
 
- Validate commands before running them via 
2.5.0¶
WARNING: This release has a minor API bug when displaying a V2 dataset with a history that contains legacy tasks. It's recommended to update to 2.5.1.
This release removes support for including V1 tasks in V2 workflows. This comes with changes to the database (data and metadata), to the API, and to the V2 runner.
- Runner:- Deprecate running v1 tasks within v2 workflows (#1721).
 
- Database:- Remove Task.is_v2_compatiblecolumn (#1721).
- For table WorkflowTaskV2, dropis_legacy_taskandtask_legacy_idcolumns, removetask_legacyORM attribute, maketask_idrequired, maketaskrequired (#1721).
 
- Remove 
- API:- Drop v1-v2-task-compatibility admin endpoint (#1721).
- Drop /task-legacy/endpoint (#1721).
- Remove legacy task code branches from WorkflowTaskV2CRUD endpoints (#1721).
- Add OAuth accounts info to UserReadat.oauth_accounts(#1765).
 
- Testing:- Improve OAuth Github Action to test OAuth account flow (#1765).
 
2.4.2¶
- App:- Improve logging in fractalctl set-db(#1764).
 
- Improve logging in 
- Runner:- Add --set-hometosudo -uimpersonation command, to fix Ubuntu18 behavior (#1762).
 
- Add 
- Testing:- Start tests of migrations from valid v2.4.0 database (#1764).
 
2.4.1¶
This is mainly a bugfix release, re-implementing a check that was removed in 2.4.0.
- API:- Re-introduce check for existing-user-email in PATCH /auth/users/{id}/(#1760).
 
- Re-introduce check for existing-user-email in 
2.4.0¶
This release introduces support for user groups, but without linking it to any access-control rules (which will be introduced later).
NOTE: This release requires running the
fractalctl update-db-datascript.
- App:- Move creation of first user from application startup into fractalctl set-dbcommand (#1738, #1748).
- Add creation of default user group into fractalctl set-dbcommand (#1738).
- Create update-db-scriptfor current version, that adds all users to default group (#1738).
 
- Move creation of first user from application startup into 
- API:- Added /auth/group/and/auth/group-names/routers (#1738, #1752).
- Implement /auth/users/{id}/POST/PATCH routes infractal-server(#1738, #1747, #1752).
- Introduce UserUpdateWithNewGroupIdsschema forPATCH /auth/users/{id}/(#1747, #1752).
- Add UserManager.on_after_registerhook to add new users to default user group (#1738).
 
- Added 
- Database:- Added new usergroupandlinkusergrouptables (#1738).
 
- Added new 
- Internal- Refactored fractal_server.app.authandfractal_server.app.security(#1738)/
- Export all relevant modules in app.models, since it matters e.g. forautogenerate-ing migration scripts (#1738).
 
- Refactored 
- Testing- Add UserGroupvalidation toscripts/validate_db_data_with_read_schemas.py(#1746).
 
- Add 
2.3.11¶
- SSH runner:- Move remote-folder creation from submit_workflowto more specific_process_workflow(#1728).
 
- Move remote-folder creation from 
- Benchmarks:- Add GET /auth/token/login/to tested endpoints (#1720).
 
- Add 
- Testing:- Update GitHub actions upload-artifactanddownload-artifacttov4(#1725).
 
- Update GitHub actions 
2.3.10¶
- Fix minor bug in zipping-job logging (#1716).
2.3.9¶
- Add logging for zipping-job-folder operations (#1714).
2.3.8¶
NOTE:
FRACTAL_API_V1_MODE="include_without_submission"is now transformed intoFRACTAL_API_V1_MODE="include_read_only".
- API:- Support read-only mode for V1 (#1701).
- Improve handling of zipped job-folder in download-logs endpoints (#1702).
 
- Runner:- Improve database-error handling in V2 job execution (#1702).
- Zip job folder after job execution (#1702).
 
- App:- UvicornWorkeris now imported from- uvicorn-worker(#1690).
 
- Testing:- Remove HAS_LOCAL_SBATCHvariable and related if-branches (#1699).
 
- Remove 
- Benchmarks:- Add GET /auth/current-user/to tested endpoints (#1700).
 
- Add 
- Dependencies:- Update mkdocstringsto^0.25.2(#1707).
- Update fastapito^0.112.0(#1705).
 
- Update 
2.3.7¶
- SSH SLURM executor:- Handle early shutdown in SSH executor (#1696).
 
- Task collection:- Introduce a new configuration variable FRACTAL_MAX_PIP_VERSIONto pin task-collection pip (#1675).
 
- Introduce a new configuration variable 
2.3.6¶
- API:- When creating a WorkflowTask, do not pre-populate its top-level arguments based on JSON Schema default values (#1688).
 
- Dependencies:- Update sqlmodelto^0.0.21(#1674).
- Add uvicorn-worker(#1690).
 
- Update 
2.3.5¶
WARNING: The
pre_submission_commandsSLURM configuration is included as an experimental feature, since it is still not useful for its main intended goal (callingmodule loadbefore runningsbatch).
- SLURM runners:- Expose gpusSLURM parameter (#1678).
- For SSH executor, add pre_submission_commands(#1678).
- Removed obsolete arguments from get_slurm_configfunction (#1678).
 
- Expose 
- SSH features:- Add FractalSSH.write_remote_filemethod (#1678).
 
- Add 
2.3.4¶
- SSH SLURM runner:- Refactor compress_folderandextract_archivemodules, and stop usingtarfilelibrary (#1641).
 
- Refactor 
- API:- Introduce FRACTAL_API_V1_MODE=include_without_submissionto include V1 API but forbid job submission (#1664).
 
- Introduce 
- Testing:- Do not test V1 API with DB_ENGINE="postgres-psycopg"(#1667).
- Use new Fractal SLURM containers in CI (#1663).
- Adapt tests so that they always refer to the current Python version (the one running pytest), when needed; this means that we don't require the presence of any additional Python version in the development environment, apart from the current one (#1633).
- Include Python3.11 in some tests (#1669).
- Simplify CI SLURM Dockerfile after base-image updates (#1670).
- Cache ubuntu22-slurm-multipyDocker image in CI (#1671).
- Add oauth.yamlGitHub action to test OIDC authentication (#1665).
 
- Do not test V1 API with 
2.3.3¶
This release fixes a SSH-task-collection bug introduced in version 2.3.1.
- API:- Expose new superuser-restricted endpoint GET /api/settings/(#1662).
 
- Expose new superuser-restricted endpoint 
- SLURM runner:- Make FRACTAL_SLURM_SBATCH_SLEEPconfiguration variablefloat(#1658).
 
- Make 
- SSH features:- Fix wrong removal of task-package folder upon task-collection failure (#1649).
- Remove FractalSSH.rename_foldermethod (#1654).
 
- Testing:- Refactor task-collection fixtures (#1637).
 
2.3.2¶
WARNING: The remove-remote-venv-folder in the SSH task collection is broken (see issue 1633). Do not deploy this version in an SSH-based
fractal-serverinstance.
- API:- Fix incorrect zipping of structured job-log folders (#1648).
 
2.3.1¶
This release includes a bugfix for task names with special characters.
WARNING: The remove-remote-venv-folder in the SSH task collection is broken (see issue 1633). Do not deploy this version in an SSH-based
fractal-serverinstance.
- Runner:- Improve sanitization of subfolder names (commits from 3d89d6ba104d1c6f11812bc9de5cbdff25f81aa2 to 426fa3522cf2eef90d8bd2da3b2b8a5b646b9bf4).
 
- API:- Improve error message when task-collection Python is not defined (#1640).
- Use a single endpoint for standard and SSH task collection (#1640).
 
- SSH features:- Remove remote venv folder upon failed task collection in SSH mode (#1634, #1640).
- Refactor FractalSSH(#1635).
- Set fabric.Connection.forward_agent=False(#1639).
 
- Testing:- Improved testing of SSH task-collection API (#1640).
- Improved testing of FractalSSHmethods (#1635).
- Stop testing SQLite database for V1 in CI (#1630).
 
2.3.0¶
This release includes two important updates: 1. An Update update to task-collection configuration variables and logic. 2. The first released version of the experimental SSH features.
Re: task-collection configuration, we now support two main use cases:
- 
When running a production instance (including on a SLURM cluster), you should set e.g. FRACTAL_TASKS_PYTHON_DEFAULT_VERSION=3.10, and make sure thatFRACTAL_TASKS_PYTHON_3_10=/some/pythonis an absolute path. Optionally, you can define other variables likeFRACTAL_TASKS_PYTHON_3_9,FRACTAL_TASKS_PYTHON_3_11orFRACTAL_TASKS_PYTHON_3_12.
- 
If you leave FRACTAL_TASKS_PYTHON_DEFAULT_VERSIONunset, then only the Python interpreter that is currently runningfractal-servercan be used for task collection.
WARNING: If you don't set
FRACTAL_TASKS_PYTHON_DEFAULT_VERSION, then you will only have a single Python interpreter available for tasks (namely the one runningfractal-server).
- API:- Introduce api/v2/task/collect/custom/endpoint (#1607, #1613, #1617, #1629).
 
- Introduce 
- Task collection:- Introduce task-collection Python-related configuration variables (#1587).
- Always set Python version for task collection, and only use FRACTAL_TASKS_PYTHON_X_Yvariables (#1587).
- Refactor task-collection functions and schemas (#1587, #1617).
- Remove TaskCollectStatusV2andget_collection_datainternal schema/function (#1598).
- Introduce CollectionStatusV2enum for task-collection status (#1598).
- Reject task-collection request if it includes a wheel file and a version (#1608). SSH features:
- Introduce fractal_server/sshsubpackage (#1545, #1599, #1611).
- Introduce SSH executor and runner (#1545).
- Introduce SSH task collection (#1545, #1599, #1626).
- Introduce SSH-related configuration variables (#1545).
- Modify app lifespan to handle SSH connection (#1545).
- Split app/runner/executor/slurmintosudoandsshsubfolders (#1545).
- Introduce FractalSSH object which is a wrapper class around fabric.Connection object.
It provides a lockto avoid loss of ssh instructions and a custom timeout (#1618)
 
- Dependencies:- Update sqlmodelto^0.0.19(#1584).
- Update pytest-asyncioto^0.23(#1558).
 
- Update 
- Testing:- Test the way FractalProcessPoolExecutorspawns processes and threads (#1579).
- Remove event_loopfixture: every test will run on its own event loop (#1558).
- Test task collection with non-canonical package name (#1602).
 
- Test the way 
2.2.0¶
This release streamlines options for the Gunicorn startup command, and includes two new experimental features.
NOTE 1: you can now enable custom Gunicorn worker/logger by adding the following options to the
gunicornstartup command: ---worker-class fractal_server.gunicorn_fractal.FractalWorker---logger-class fractal_server.gunicorn_fractal.FractalGunicornLoggerNOTE 2: A new experimental local runner is available, which uses processes instead of threads and support shutdown. You can try it out with the configuration variable
FRACTAL_BACKEND_RUNNER=local_experimentalNOTE 3: A new PostgreSQL database adapter is available, fully based on
psycopg3(rather thanpyscopg2+asyncpg). You can try it out with the configuration variableDB_ENGINE=postgres-psycopg(note that this requires thepip installextrapostgres-psycopg-binary).
- API:- Add extensive logs to DELETE /api/v2/project/{project_id}(#1532).
- Remove catch of IntegrityErrorinPOST /api/v1/project(#1530).
 
- Add extensive logs to 
- App and deployment:- Move FractalGunicornLoggerandFractalWorkerintofractal_server/gunicorn_fractal.py(#1535).
- Add custom gunicorn/uvicorn worker to handle SIGABRT signal (#1526).
- Store list of submitted jobs in app state (#1538).
- Add logic for graceful shutdown for job slurm executors (#1547).
 
- Move 
- Runner:- Change structure of job folders, introducing per-task subfolders (#1523).
- Rename internal workflow_dirandworkflow_dir_uservariables to local/remote (#1534).
- Improve handling of errors in submit_workflowbackground task (#1556, #1566).
- Add new local_experimentalrunner, based onProcessPoolExecutor(#1544, #1566).
 
- Database:- Add new Postgres adapter psycopg(#1562).
 
- Add new Postgres adapter 
- Dependencies- Add fabrictodevdependencies (#1518).
- Add new postgres-psycopg-binaryextra (#1562).
 
- Add 
- Testing:- Extract pytest-dockerfixtures into a dedicated module (#1516).
- Rename SLURM containers in CI (#1516).
- Install and run SSH daemon in CI containers (#1518).
- Add unit test of SSH connection via fabric/paramiko (#1518).
- Remove obsolete folders from tests/data(#1517).
 
- Extract 
2.1.0¶
This release fixes a severe bug where SLURM-executor auxiliary threads are not joined when a Fractal job ends.
- App:- Add missing join for wait_threaduponFractalSlurmExecutorexit (#1511).
- Replace startup/shutdownevents withlifespanevent (#1501).
 
- Add missing join for 
- API:- Remove Path.resolvefrom the submit-job endpoints and add validator forSettings.FRACTAL_RUNNER_WORKING_BASE_DIR(#1497).
 
- Remove 
- Testing:- Improve dockerfiles for SLURM (#1495, #1496).
- Set short timeout for docker compose down(#1500).
 
2.0.6¶
NOTE: This version changes log formats. For
uvicornlogs, this change requires no action. Forgunicorn, logs formats are only changed by adding the following command-line option:gunicorn ... --logger-class fractal_server.logger.gunicorn_logger.FractalGunicornLogger.
- API:- Add FRACTAL_API_V1_MODEenvironment variable to include/exclude V1 API (#1480).
- Change format of uvicorn loggers (#1491).
- Introduce FractalGunicornLoggerclass (#1491).
 
- Add 
- Runner:- Fix missing .logfiles in server folder for SLURM jobs (#1479).
 
- Fix missing 
- Database:- Remove UserOAuth.project_listandUserOAuth.project_list_v2relationships (#1482).
 
- Remove 
- Dev dependencies:- Bump pytestto8.1.*(#1486).
- Bump coverageto7.5.*(#1486).
- Bump pytest-dockerto3.1.*(#1486).
- Bump pytest-subprocessto^1.5(#1486).
 
- Bump 
- Benchmarks:- Move populate_dbscripts intobenchmarkfolder (#1489).
 
- Move 
2.0.5¶
- API:- Add GET /admin/v2/task/(#1465).
- Improve error message in DELETE-task endpoint (#1471).
 
- Add 
- Set JobV2folder attributes from within the submit-job endpoint (#1464).
- Tests:- Make SLURM CI work on MacOS (#1476).
 
2.0.4¶
- Add FRACTAL_SLURM_SBATCH_SLEEPconfiguration variable (#1467).
2.0.3¶
WARNING: This update requires running a fix-db script, via
fractalctl update-db-data.
- Database:- Create fix-db script to remove imagesandhistoryfrom dataset dumps in V1/V2 jobs (#1456).
 
- Create fix-db script to remove 
- Tests:- Split test_full_workflow_v2.pyinto local/slurm files (#1454).
 
- Split 
2.0.2¶
WARNING: Running this version on a pre-existing database (where the
jobsv2table has some entries) is broken. Running this version on a freshly-created database works as expected.
- API:- Fix bug in status endpoint (#1449).
- Improve handling of out-of-scope scenario in status endpoint (#1449).
- Do not include dataset historyinJobV2.dataset_dump(#1445).
- Forbid extra arguments in DumpV2schemas (#1445).
 
- API V1:- Do not include dataset historyinApplyWorkflow.{input,output}_dataset_dump(#1453).
 
- Do not include dataset 
- Move settings logs to check_settingsand use fractal-serverset_logger(#1452).
- Benchmarks:- Handle some more errors in benchmark flow (#1445).
 
- Tests:- Update testing database to version 2.0.1 (#1445).
 
2.0.1¶
- Database/API:- Do not include dataset_dump.imagesinJobV2table (#1441).
 
- Do not include 
- Internal functions:- Introduce more robust reset_logger_handlersfunction (#1425).
 
- Introduce more robust 
- Benchmarks:- Add POST /api/v2/project/project_id/dataset/dataset_id/images/query/in bechmarks to evaluate the impact of the number of images during the query (#1441).
 
- Add 
- Development:- Use poetry1.8.2 in GitHub actions and documentation.
 
- Use 
2.0.0¶
Major update.
1.4.10¶
WARNING: Starting from this version, the dependencies for the
slurmextra are required; commands likepip install fractal-server[slurm,postgres]must be replaced bypip install fractal-server[postgres].
- Dependencies:- Make clusterfuturesandcloudpicklerequired dependencies (#1255).
- Remove slurmextra from package (#1255).
 
- Make 
- API:- Handle invalid history file in GET /project/{project_id}/dataset/{dataset_id}/status/(#1259).
 
- Handle invalid history file in 
- Runner:- Add custom _jobs_finishedfunction to check the job status and to avoid squeue errors (#1266)
 
- Add custom 
1.4.9¶
This release is a follow-up of 1.4.7 and 1.4.8, to mitigate the risk of job folders becoming very large.
- Runner:- Exclude historyfromTaskParametersobject for parallel tasks, so that it does not end up in input pickle files (#1247).
 
- Exclude 
1.4.8¶
This release is a follow-up of 1.4.7, to mitigate the risk of job folders becoming very large.
- Runner:- Exclude metadata["image"]fromTaskParametersobject for parallel tasks, so that it does not end up in input pickle files (#1245).
- Exclude components list from workflow.loglogs (#1245).
 
- Exclude 
- Database:- Remove spurious logging of fractal_server.app.dbstring (#1245).
 
- Remove spurious logging of 
1.4.7¶
This release provides a bugfix (PR 1239) and a workaround (PR 1238) for the SLURM runner, which became relevant for the use case of processing a large dataset (300 wells with 25 cycles each).
- Runner:- Do not include metadata["image"]in JSON file with task arguments (#1238).
- Add FRACTAL_RUNNER_TASKS_INCLUDE_IMAGEconfiguration variable, to define exceptions where tasks still requiremetadata["image"](#1238).
- Fix bug in globbing patterns, when copying files from user-side to server-side job folder in SLURM executor (#1239).
 
- Do not include 
- API:- Fix error message for rate limits in apply-workflow endpoint (#1231).
 
- Benchmarks:- Add more scenarios, as per issue #1184 (#1232).
 
1.4.6¶
- API:- Add GET /admin/job/{job_id}(#1230).
- Handle FileNotFoundinGET /project/{project_id}/job/{job_id}/(#1230).
 
- Add 
1.4.5¶
- Remove CORS middleware (#1228).
- Testing:- Fix migrations.ymlGitHub action (#1225).
 
- Fix 
1.4.4¶
- API:- Add rate limiting to POST /{project_id}/workflow/{workflow_id}/apply/(#1199).
- Allow users to read the logs of ongoing jobs with GET /project/{project_id}/job/{job_id}/, usingshow_tmp_logsquery parameter (#1216).
- Add logquery parameter inGET {/api/v1/job/,/api/v1/{project.id}/job/,/admin/job/}, to trim response body (#1218).
- Add args_schemaquery parameter inGET /api/v1/task/to trim response body (#1218).
- Add historyquery parameter inGET {/api/v1/dataset/,/api/v1/project/{project.id}/dataset/}to trim response body (#1219).
- Remove task_listfromjob.workflow_dumpcreation in/api/v1/{project_id}/workflow/{workflow_id}/apply/(#1219)
- Remove task_listfromWorkflowDumpPydantic schema (#1219)
 
- Add rate limiting to 
- Dependencies:- Update fastapi to ^0.109.0(#1222).
- Update gunicorn to ^21.2.0(#1222).
- Update aiosqlite to ^0.19.0(#1222).
- Update uvicorn to ^0.27.0(#1222).
 
- Update fastapi to 
1.4.3¶
WARNING:
This update requires running a fix-db script, via
fractalctl update-db-data.
- API:- Improve validation of UserCreate.slurm_accounts(#1162).
- Add timestamp_createdtoWorkflowRead,WorkflowDump,DatasetReadandDatasetDump(#1152).
- Make all dumps in ApplyWorkflowReadnon optional (#1175).
- Ensure that timestamps in Readschemas are timezone-aware, regardless ofDB_ENGINE(#1186).
- Add timezone-aware timestamp query parameters to all /adminendpoints (#1186).
 
- Improve validation of 
- API (internal):- Change the class method Workflow.insert_taskinto the auxiliary function_workflow_insert_task(#1149).
 
- Change the class method 
- Database:- Make WorkflowTask.workflow_idandWorkflowTask.task_idnot nullable (#1137).
- Add Workflow.timestamp_createdandDataset.timestamp_createdcolumns (#1152).
- Start a new current.pyfix-db script (#1152, #1195).
- Add to migrations.ymla new script (validate_db_data_with_read_schemas.py) that validates test-DB data with Read schemas (#1187).
- Expose fix-dbscripts via command-line optionfractalctl update-db-data(#1197).
 
- Make 
- App (internal):- Check in Settingsthatpsycopg2,asyngpgandcfut, if required, are installed (#1167).
- Split DB.set_dbinto sync/async methods (#1165).
- Rename DB.get_dbintoDB.get_async_db(#1183).
- Normalize names of task packages (#1188).
 
- Check in 
- Testing:- Update clean_db_fractal_1.4.1.sqltoclean_db_fractal_1.4.2.sql, and changemigrations.ymltarget version (#1152).
- Reorganise the test directory into subdirectories, named according to the order in which we want the CI to execute them (#1166).
- Split the CI into two independent jobs, CoreandRunner, to save time through parallelisation (#1204).
 
- Update 
- Dependencies:- Update python-dotenvto version 0.21.0 (#1172).
 
- Update 
- Runner:- Remove JobStatusType.RUNNING, incorporating it intoJobStatusType.SUBMITTED(#1179).
 
- Remove 
- Benchmarks:- Add fractal_client.pyandpopulate_script_v2.pyfor creating different database status scenarios (#1178).
- Add a custom benchmark suite in api_bench.py.
- Remove locust.
 
- Add 
- Documentation:- Add the minimum set of environment variables required to set the database and start the server (#1198).
 
1.4.2¶
WARNINGs:
- This update requires running a fix-db script, available at https://raw.githubusercontent.com/fractal-analytics-platform/fractal-server/1.4.2/scripts/fix_db/current.py.
- Starting from this version, non-verified users have limited access to
/api/v1/endpoints. Before the upgrade, all existing users must be manually set to verified.
- API:- Prevent access to GET/PATCHtask endpoints for non-verified users (#1114).
- Prevent access to task-collection and workflow-apply endpoints for non-verified users (#1099).
- Make first-admin-user verified (#1110).
- Add the automatic setting of ApplyWorkflow.end_timestampwhen patchingApplyWorkflow.statusviaPATCH /admin/job/{job_id}(#1121).
- Change ProjectDump.timestamp_createdtype fromdatetimetostr(#1120).
- Change _DatasetHistoryItem.workflowtasktype intoWorkflowTaskDump(#1139).
- Change status code of stop-job endpoints to 202 (#1151).
 
- Prevent access to 
- API (internal):- Implement cascade operations explicitly, in DELETEendpoints for datasets, workflows and projects (#1130).
- Update GET /project/{project_id}/workflow/{workflow_id}/job/to avoid usingWorkflow.job_list(#1130).
- Remove obsolete sync-database dependency from apply-workflow endpoint (#1144).
 
- Implement cascade operations explicitly, in 
- Database:- Add ApplyWorkflow.project_dumpcolumn (#1070).
- Provide more meaningful names to fix-db scripts (#1107).
- Add Project.timestamp_createdcolumn, with timezone-aware default (#1102, #1131).
- Remove Dataset.list_jobs_inputandDataset.list_jobs_outputrelationships (#1130).
- Remove Workflow.job_list(#1130).
 
- Add 
- Runner:- In SLURM backend, use slurm_account(as received from apply-workflow endpoint) with top priority (#1145).
- Forbid setting of SLURM account from WorkflowTask.metaor as part ofworker_initvariable (#1145).
- Include more info in error message upon sbatchfailure (#1142).
- Replace sbatch--chdiroption with-D, to support also slurm versions before 17.11 (#1159).
 
- In SLURM backend, use 
- Testing:- Extended systematic testing of database models (#1078).
- Review MockCurrentUserfixture, to handle different kinds of users (#1099).
- Remove persistfromMockCurrentUser(#1098).
- Update migrations.ymlGitHub Action to use up-to-date database and also test fix-db script (#1101).
- Add more schema-based validation to fix-db current script (#1107).
- Update .dict()to.model_dump()forSQLModelobjects, to fix someDeprecationWarnings(##1133).
- Small improvement in schema coverage (#1125).
- Add unit test for securitymodule (#1036).
 
- Dependencies:- Update sqlmodelto version 0.0.14 (#1124).
 
- Update 
- Benchmarks:- Add automatic benchmark system for API's performances (#1123)
 
- App (internal):- Move _create_first_userfrommaintosecuritymodule, and allow it to create multiple regular users (#1036).
 
- Move 
1.4.1¶
- API:- Add GET /admin/job/{job_id}/stop/andGET /admin/job/{job_id}/download/endpoints (#1059).
- Use DatasetDumpandWorkflowDumpmodels for "dump" attributes ofApplyWorkflowRead(#1049, #1082).
- Add slurm_accountstoUserschemas and addslurm_accounttoApplyWorkflowschemas (#1067).
- Prevent providing a package_versionfor task collection from a.whllocal package (#1069).
- Add DatasetRead.projectandWorkflowRead.projectattributes (#1082).
 
- Add 
- Database:- Make ApplyWorkflow.workflow_dumpcolumn non-nullable (#1049).
- Add UserOAuth.slurm_accountsandApplyWorkflow.slurm_accountcolumns (#1067).
- Add script for adding ApplyWorkflow.user_email(#1058).
- Add Dataset.projectandWorkflow.projectrelationships (#1082).
- Avoid using Projectrelationshipsdataset_listorworkflow_listwithin someGETendpoints (#1082).
- Fully remove Projectrelationshipsdataset_list,workflow_listandjob_list(#1091).
 
- Make 
- Testing:- Only use ubuntu-22.04 in GitHub actions (#1061).
- Improve unit testing of database models (#1082).
 
- Dependencies:- Pin bcryptto 4.0.1 to avoid warning in passlib (#1060).
 
- Pin 
- Runner:- Set SLURM-job working directory to job.working_dir_userthrough--chdiroption (#1064).
 
- Set SLURM-job working directory to 
1.4.0¶
- API:- Major endpoint changes:- Add trailing slash to all endpoints' paths (#1003).
- Add new admin-area endpoints restricted to superusers at /admin(#947, #1009, #1032).
- Add new GETendpointsapi/v1/job/andapi/v1/project/{project_id}/workflow/{workflow_id}/job/(#969, #1003).
- Add new GETendpointsapi/v1/dataset/andapi/v1/workflow/(#988, #1003).
- Add new GETendpointapi/v1/project/{project_id}/dataset/(#993).
- Add PATCH /admin/job/{job_id}/endpoint (#1030, #1053).
- Move GET /auth/whoami/toGET /auth/current-user/(#1013).
- Move PATCH /auth/users/me/toPATCH /auth/current-user/(#1013, #1035).
- Remove DELETE /auth/users/{id}/endpoint (#994).
- Remove GET /auth/users/me/(#1013).
- Remove POST/auth/forgot-password/,/auth/reset-password/,/auth/request-verify-token/,/auth/verify/(#1033).
- Move GET /auth/userlist/toGET /auth/users/(#1033).
 
- New behaviors or responses of existing endpoints:- Change response of /api/v1/project/{project_id}/job/{job_id}/stop/endpoint to 204 no-content (#967).
- Remove dataset_listattribute fromProjectRead, which affects allGETendpoints that return some project (#993).
- Make it possible to delete a Dataset,WorkfloworProject, even when it is in relationship to anApplyWorkflow- provided that theApplyWorkflowis not pending or running (#927, #973).
- Align ApplyWorkflowReadwith newApplyWorkflow, which has optional foreign keysproject_id,workflow_id,input_dataset_id, andoutput_dataset_id(#984).
- Define types for ApplyWorkflowRead"dump" attributes (#990). WARNING: reverted with #999.
 
- Change response of 
- Internal changes:- Move all routes definitions into fractal_server/app/routes(#976).
- Fix construction of ApplyWorkflow.workflow_dump, within apply endpoint (#968).
- Fix construction of ApplyWorkflowattributesinput_dataset_dumpandoutput_dataset_dump, within apply endpoint (#990).
- Remove asyncio.gather, in view of SQLAlchemy2 update (#1004).
 
- Move all routes definitions into 
 
- Major endpoint changes:
- Database:- Make foreign-keys of ApplyWorkflow(project_id,workflow_id,input_dataset_id,output_dataset_id) optional (#927).
- Add columns input_dataset_dump,output_dataset_dumpanduser_emailtoApplyWorkflow(#927).
- Add relations Dataset.list_jobs_inputandDataset.list_jobs_output(#927).
- Make ApplyWorkflow.start_timestampnon-nullable (#927).
- Remove "cascade": "all, delete-orphan"fromProject.job_list(#927).
- Add Workflow.job_listrelation (#927).
- Do not use Enums as column types (e.g. forApplyWorkflow.status), but only for (de-)serialization (#974).
- Set pool_pre_pingoption toTrue, for asyncpg driver (#1037).
- Add script for updating DB from 1.4.0 to 1.4.1 (#1010)
- Fix missing try/except in sync session (#1020).
 
- Make foreign-keys of 
- App:- Skip creation of first-superuser when one superuser already exists (#1006).
 
- Dependencies:- Update sqlalchemy to version >=2.0.23,<2.1(#1044).
- Update sqlmodel to version 0.0.12 (#1044).
- Upgrade asyncpg to version 0.29.0 (#1036).
 
- Update sqlalchemy to version 
- Runner:- Refresh DB objects within submit_workflow(#927).
 
- Refresh DB objects within 
- Testing:- Add await db_engine.dispose()indb_create_tablesfixture (#1047).
- Set debug=Falseinevent_loopfixture (#1044).
- Improve test_full_workflow.py(#971).
- Update pytest-asyncioto v0.21 (#1008).
- Fix CI issue related to event loop and asyncpg (#1012).
- Add GitHub Action testing database migrations (#1010).
- Use greenlet v3 in poetry.lock(#1044).
 
- Add 
- Documentation:- Add OAuth2 example endpoints to Web API page (#1034, #1038).
 
- Development:- Use poetry 1.7.1 (#1043).
 
1.3.14 (do not use!)¶
WARNING: This version introduces a change that is then reverted in 1.4.0, namely it sets the
ApplyWorkflow.statustype toEnum, when used with PostgreSQL. It is recommended to not use it, and upgrade to 1.4.0 directly.
- Make Dataset.resource_listanordering_list, ordered byResource.id(#951).
- Expose redirect_urlfor OAuth clients (#953).
- Expose JSON Schema for the ManifestV1Pydantic model (#942).
- Improve delete-resource endpoint (#943).
- Dependencies:- Upgrade sqlmodel to 0.0.11 (#949).
 
- Testing:- Fix bug in local tests with Docker/SLURM (#948).
 
1.3.13¶
- Configure sqlite WAL to avoid "database is locked" errors (#860).
- Dependencies:- Add sqlalchemy[asyncio]extra, and do not directly requiregreenlet(#895).
- Fix cloudpickle-version definition inpyproject.toml(#937).
- Remove obsolete sqlalchemy_utilsdependency (#939).
 
- Add 
- Testing:- Use ubuntu-22 for GitHub CI (#909).
- Run GitHub CI both with SQLite and Postgres (#915).
- Disable postgresservice in GitHub action when running tests with SQLite (#931).
- Make test_commands.pytests stateless, also when running with Postgres (#917).
 
- Documentation:- Add information about minimal supported SQLite version (#916).
 
1.3.12¶
- Project creation:- Do not automatically create a dataset upon project creation (#897).
- Remove ProjectCreate.default_dataset_nameattribute (#897).
 
- Dataset history:- Create a new (non-nullable) history column in Datasettable (#898, #901).
- Deprecate history handling in /project/{project_id}/job/{job_id}endpoint (#898).
- Deprecate HISTORY_LEGACY(#898).
 
- Create a new (non-nullable) history column in 
- Testing:- Remove obsolete fixture slurm_config(#903).
 
- Remove obsolete fixture 
1.3.11¶
This is mainly a bugfix release for the PermissionError issue.
- Fix PermissionErrors in parallel-task metadata aggregation for the SLURM backend (#893).
- Documentation:- Bump mkdocs-render-swagger-pluginto 0.1.0 (#889).
 
- Bump 
- Testing:- Fix poetry installcommand andpoetryversion in GitHub CI (#889).
 
- Fix 
1.3.10¶
Warning: updating to this version requires changes to the configuration variable
- Updates to SLURM interface:- Remove sudo-requiringlscalls fromFractalFileWaitThread.check(#885);
- Change default of FRACTAL_SLURM_POLL_INTERVALto 5 seconds (#885);
- Rename FRACTAL_SLURM_OUTPUT_FILE_GRACE_TIMEconfiguration variables intoFRACTAL_SLURM_ERROR_HANDLING_INTERVAL(#885);
- Remove FRACTAL_SLURM_KILLWAIT_INTERVALvariable and corresponding logic (#885);
- Remove _multiple_paths_exist_as_userhelper function (#885);
- Review type hints and default values of SLURM-related configuration variables (#885).
 
- Remove 
- Dependencies:- Update fastapito version^0.103.0(#877);
- Update fastapi-usersto version^12.1.0(#877).
 
- Update 
1.3.9¶
- Make updated-metadata collection robust for metadiff files consisting of a single nullvalue (#879).
- Automate procedure for publishing package to PyPI (#881).
1.3.8¶
- Backend runner:- Add aggregation logic for parallel-task updated metadata (#852);
- Make updated-metadata collection robust for missing files (#852, #863).
 
- Database interface:
- API:- Prevent user from bypassing workflow-name constraint via the PATCH endpoint (#867).
- Handle error upon task collection, when tasks exist in the database but not on-disk (#874).
- Add _check_project_existshelper function (#872).
 
- Configuration variables:- Remove DEPLOYMENT_TYPEvariable and updatealiveendpoint (#875);
- Introduce Settings.check_dbmethod, and call it during inline/offline migrations (#855);
- Introduce Settings.check_runnermethod (#875);
- Fail if FRACTAL_BACKEND_RUNNERis"local"andFRACTAL_LOCAL_CONFIG_FILEis set but missing on-disk (#875);
- Clean up Settings.checkmethod and improve its coverage (#875);
 
- Remove 
- Package, repository, documentation:- Change fractal_server.commonfrom being a git-submodule to being a regular folder (#859).
- Pin documentation dependencies (#865).
- Split app/models/project.pyinto two modules for dataset and project (#871).
- Revamp documentation on database interface and on the corresponding configuration variables (#855).
 
- Change 
1.3.7¶
- Oauth2-related updates (#822):- Update configuration of OAuth2 clients, to support OIDC/GitHub/Google;
- Merge SQLModelBaseOAuthAccountandOAuthAccountmodels;
- Update UserOAuth.oauth_accountsrelationship and fixlist_usersendpoint accordingly;
- Introduce dummy UserManager.on_after_loginmethod;
- Rename OAuthClientintoOAuthClientConfig;
- Revamp users-related parts of documentation.
 
1.3.6¶
- Update output_dataset.metaalso when workflow execution fails (#843).
- Improve error message for unknown errors in job execution (#843).
- Fix log message incorrectly marked as "error" (#846).
1.3.5¶
- Review structure of dataset history (#803):- Re-define structure for historyproperty ofDataset.meta;
- Introduce "api/v1/project/{project_id}/dataset/{dataset_id}/status/"endpoint;
- Introduce "api/v1/project/{project_id}/dataset/{dataset_id}/export_history/"endpoint;
- Move legacy history to Dataset.meta["HISTORY_LEGACY"].
 
- Re-define structure for 
- Make first_task_indexandlast_task_indexproperties ofApplyWorkflowrequired (#803).
- Add docs_infoanddocs_linkto Task model (#814)
- Accept TaskUpdate.version=Nonein task-patch endpoint (#818).
- Store a copy of the Workflowinto the optional columnApplyWorkflow.workflow_dumpat the time of submission (#804, #834).
- Prevent execution of multiple jobs with the same output dataset (#801).
- Transform non-absolute FRACTAL_TASKS_DIRinto absolute paths, relative to the current working directory (#825).
- Error handling:- Raise an appropriate error if a task command is not executable (#800).
- Improve handling of errors raised in get_slurm_config(#800).
 
- Documentation:- Clarify documentation about SlurmConfig(#798).
- Update documentation configuration and GitHub actions (#811).
 
- Clarify documentation about 
- Tests:- Move tests/test_common.pyintofractal-commonrepository (#808).
- Switch to docker composev2 and unpinpyyamlversion (#816).
 
- Move 
1.3.4¶
- Support execution of a workflow subset (#784).
- Fix internal server error for invalid task_idincreate_workflowtaskendpoint (#782).
- Improve logging in background task collection (#776).
- Handle failures in submit_workflowwithout raising errors (#787).
- Simplify internal function for execution of a list of task (#780).
- Exclude common/testsand other git-related files from build (#795).
- Remove development dependencies Pillowandpytest-mock(#795).
- Remove obsolete folders from tests/datafolder (#795).
1.3.3¶
- Pin Pydantic to v1 (#779).
1.3.2¶
- Add sqlalchemy naming convention for DB constraints, and add render_as_batch=Truetodo_run_migrations(#757).
- Fix bug in job-stop endpoint, due to missing default for FractalSlurmExecutor.wait_thread.shutdown_file(#768, #769).
- Fix bug upon inserting a task with meta=Noneinto a Workflow (#772).
1.3.1¶
- Fix return value of stop-job endpoint (#764).
- Expose new GET WorkflowTaskendpoint (#762).
- Clean up API modules (#762):- Split workflow/workflowtask modules;
- Split tasks/task-collection modules.
 
1.3.0¶
- Refactor user model:- Switch from UUID4 to int for IDs (#660, #684).
- Fix many-to-many relationship between users and project (#660).
- Rename Project.user_member_listintoProject.user_list(#660).
- Add usernamecolumn (#704).
 
- Update endpoints (see also 1.2->1.3 upgrade info in the documentation):- Review endpoint URLs (#669).
- Remove foreign keys from payloads (#669).
 
- Update Taskmodels, task collection and task-related endpoints:- Add versionandownercolumns toTaskmodel (#704).
- Set Task.versionduring task collection (#719).
- Set Task.owneras part of create-task endpoint (#704).
- For custom tasks, prepend ownerto user-providedsource(#725).
- Remove default_argsfromTasksmodel and from manifest tasks (#707).
- Add args_schemaandargs_schema_versiontoTaskmodel (#707).
- Expose args_schemaandargs_schema_versionin task POST/PATCH endpoints (#749).
- Make Task.sourcetask-specific rather than package-specific (#719).
- Make Task.sourceunique (#725).
- Update _TaskCollectPipmethods, attributes and properties (#719).
- Remove private/public options for task collection (#704).
- Improve error message for missing package manifest (#704).
- Improve behavior when task-collection folder already exists (#704).
- Expose pinned_package_versionfor tasks collection (#744).
- Restrict Task editing to superusers and task owners (#733).
- Implement delete_taskendpoint (#745).
 
- Add 
- Update WorkflowandWorkflowTaskendpoints:- Always merge new WorkflowTask.argswith defaults fromTask.args_schema, inupdate_workflowtaskendpoint (#759).
- Remove WorkflowTask.overridden_metaproperty and on-the-fly overriding ofmeta(#752).
- Add warning when exporting workflows which include custom tasks (#728).
- When importing a workflow, only use tasks' sourcevalues, instead of(source,name)pairs (#719).
 
- Always merge new 
- Job execution:- Add FractalSlurmExecutor.shutdownand corresponding endpoint (#631, #691, #696).
- In FractalSlurmExecutor, makeworking_dir*attributes required (#679).
- Remove ApplyWorkflow.overwrite_inputcolumn (#684, #694).
- Make output_dataset_ida required argument of apply-workflow endpoint (#681).
- Improve error message related to out-of-space disk (#699).
- Include timestamp in job working directory, to avoid name clashes (#756).
 
- Add 
- Other updates to endpoints and database:- Add ApplyWorkflow.end_timestampcolumn (#687, #684).
- Prevent deletion of a Workflow/Datasetin relationship with existingApplyWorkflow(#703).
- Add project-name uniqueness constraint in project-edit endpoint (#689).
 
- Add 
- Other updates to internal logic:- Drop WorkflowTask.argumentsproperty andWorkflowTask.assemble_argsmethod (#742).
- Add test for collection of tasks packages with tasks in a subpackage (#743).
- Expose FRACTAL_CORS_ALLOW_ORIGINenvironment variable (#688).
- Expose FRACTAL_DEFAULT_ADMIN_USERNAMEenvironment variable (#751).
 
- Drop 
- Package and repository:- Remove fastapi-users-db-sqlmodeldependency (#660).
- Make coverage measure more accurate (#676) and improve coverage (#678).
- Require pydantic version to be >=1.10.8(#711, #713).
- Include multiple fractal-commonupdates (#705, #719).
- Add test equivalent to alembic check(#722).
- Update poetry.lockto address security alerts (#723).
- Remove sqlmodelfromfractal-common, and declare database models with multiple inheritance (#710).
- Make email generation more robust in MockCurrentUser(#730).
- Update poetry.locktocryptography=41, to address security alert (#739).
- Add greenletas a direct dependency (#748).
- Removed tests for IntegrityError(#754).
 
- Remove 
1.2.5¶
- Fix bug in task collection when using sqlite (#664, #673).
- Fix bug in task collection from local package, where package extras were not considered (#671).
- Improve error handling in workflow-apply endpoint (#665).
- Fix a bug upon project removal in the presence of project-related jobs (#666). Note: this removes the ApplyWorkflow.Projectattribute.
1.2.4¶
- Review setup for database URLs, especially to allow using UNIX-socket connections for postgresql (#657).
1.2.3¶
- Fix bug that was keeping multiple database conection open (#649).
1.2.2¶
- Fix bug related to user_local_exportsin SLURM-backend configuration (#642).
1.2.1¶
- Fix bug upon creation of first user when using multiple workers (#632).
- Allow both ports 5173 and 4173 as CORS origins (#637).
1.2.0¶
- Drop project.project_dirand replace it withuser.cache_dir(#601).
- Update SLURM backend (#582, #612, #614); this includes (1) combining several tasks in a single SLURM job, and (2) offering more granular sources for SLURM configuration options.
- Expose local user exports in SLURM configuration file (#625).
- Make local backend rely on custom FractalThreadPoolExecutor, whereparallel_tasks_per_jobcan affect parallelism (#626).
- Review logging configuration (#619, #623).
- Update to fastapi 0.95(#587).
- Minor improvements in dataset-edit endpoint (#593) and tests (#589).
- Include test of non-python task (#594).
- Move dummy tasks from package to tests (#601).
- Remove deprecated parsl backend (#607).
- Improve error handling in workflow-import endpoint (#595).
- Also show logs for successful workflow execution (#635).
1.1.1¶
- Include reordered_workflowtask_idsin workflow-edit endpoint payload, to reorder the task list of a workflow (#585).
1.1.0¶
- Align with new tasks interface in fractal-tasks-core>=0.8.0, and removeglob_patterncolumn fromresourcedatabase table (#544).
- Drop python 3.8 support (#527).
- Improve validation of API request payloads (#545).
- Improve request validation in project-creation endpoint (#537).
- Update the endpoint to patch a Task(#526).
- Add new project-update endpoint, and relax constraints on project_dirin new-project endpoint (#563).
- Update DatasetUpdateschema (#558 and #565).
- Fix redundant task-error logs in slurm backend (#552).
- Improve handling of task-collection errors (#559).
- If FRACTAL_BACKEND_RUNNER=slurm, include some configuration checks at server startup (#529).
- Fail if FRACTAL_SLURM_WORKER_PYTHONhas different versions offractal-serverorcloudpickle(#533).
1.0.8¶
- Fix handling of parallel-tasks errors in FractalSlurmExecutor(#497).
- Add test for custom tasks (#500).
- Improve formatting of job logs (#503).
- Improve error handling in workflow-execution server endpoint (#515).
- Update _TaskBaseschema from fractal-common (#517).
1.0.7¶
- Update endpoints to import/export a workflow (#495).
1.0.6¶
- Add new endpoints to import/export a workflow (#490).
1.0.5¶
- Separate workflow-execution folder into two (server- and user-owned) folders, to avoid permission issues (#475).
- Explicitly pin sqlalchemy to v1 (#480).
1.0.4¶
- Add new POST endpoint to create new Task (#486).
1.0.3¶
Missing due to releasing error.
1.0.2¶
- Add FRACTAL_RUNNER_MAX_TASKS_PER_WORKFLOWconfiguration variable (#469).
1.0.1¶
- Fix bug with environment variable names (#468).
1.0.0¶
- First release listed in CHANGELOG.