fractal-server 2.17.0a4__py3-none-any.whl → 2.17.0a6__py3-none-any.whl

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.
Files changed (67) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/__main__.py +22 -26
  3. fractal_server/app/models/security.py +19 -21
  4. fractal_server/app/models/user_settings.py +1 -0
  5. fractal_server/app/models/v2/task_group.py +1 -0
  6. fractal_server/app/routes/admin/v2/accounting.py +3 -3
  7. fractal_server/app/routes/admin/v2/impersonate.py +2 -2
  8. fractal_server/app/routes/admin/v2/job.py +6 -6
  9. fractal_server/app/routes/admin/v2/profile.py +18 -4
  10. fractal_server/app/routes/admin/v2/project.py +2 -2
  11. fractal_server/app/routes/admin/v2/resource.py +8 -8
  12. fractal_server/app/routes/admin/v2/task.py +11 -2
  13. fractal_server/app/routes/admin/v2/task_group.py +16 -12
  14. fractal_server/app/routes/admin/v2/task_group_lifecycle.py +4 -4
  15. fractal_server/app/routes/api/__init__.py +14 -5
  16. fractal_server/app/routes/api/v2/dataset.py +10 -19
  17. fractal_server/app/routes/api/v2/history.py +8 -8
  18. fractal_server/app/routes/api/v2/images.py +5 -5
  19. fractal_server/app/routes/api/v2/job.py +8 -8
  20. fractal_server/app/routes/api/v2/pre_submission_checks.py +3 -3
  21. fractal_server/app/routes/api/v2/project.py +6 -6
  22. fractal_server/app/routes/api/v2/status_legacy.py +2 -2
  23. fractal_server/app/routes/api/v2/submit.py +25 -29
  24. fractal_server/app/routes/api/v2/task.py +6 -7
  25. fractal_server/app/routes/api/v2/task_collection.py +4 -3
  26. fractal_server/app/routes/api/v2/task_collection_custom.py +4 -3
  27. fractal_server/app/routes/api/v2/task_collection_pixi.py +2 -2
  28. fractal_server/app/routes/api/v2/task_group.py +6 -6
  29. fractal_server/app/routes/api/v2/task_group_lifecycle.py +4 -4
  30. fractal_server/app/routes/api/v2/task_version_update.py +3 -3
  31. fractal_server/app/routes/api/v2/workflow.py +9 -9
  32. fractal_server/app/routes/api/v2/workflow_import.py +2 -2
  33. fractal_server/app/routes/api/v2/workflowtask.py +5 -5
  34. fractal_server/app/routes/auth/__init__.py +34 -5
  35. fractal_server/app/routes/auth/current_user.py +22 -72
  36. fractal_server/app/routes/auth/group.py +8 -35
  37. fractal_server/app/routes/auth/oauth.py +1 -1
  38. fractal_server/app/routes/auth/register.py +2 -2
  39. fractal_server/app/routes/auth/users.py +6 -48
  40. fractal_server/app/schemas/__init__.py +0 -1
  41. fractal_server/app/schemas/user.py +23 -0
  42. fractal_server/app/schemas/v2/__init__.py +1 -0
  43. fractal_server/app/schemas/v2/task_group.py +5 -0
  44. fractal_server/app/security/__init__.py +134 -46
  45. fractal_server/app/security/signup_email.py +52 -34
  46. fractal_server/config/__init__.py +6 -0
  47. fractal_server/config/_data.py +68 -0
  48. fractal_server/config/_email.py +10 -47
  49. fractal_server/config/_main.py +3 -56
  50. fractal_server/config/_oauth.py +2 -2
  51. fractal_server/main.py +3 -2
  52. fractal_server/migrations/versions/f65ee53991e3_user_settings_related.py +67 -0
  53. fractal_server/runner/executors/slurm_common/base_slurm_runner.py +1 -1
  54. fractal_server/runner/executors/slurm_common/slurm_config.py +5 -8
  55. fractal_server/runner/executors/slurm_ssh/runner.py +1 -1
  56. fractal_server/runner/executors/slurm_sudo/runner.py +1 -1
  57. fractal_server/runner/v2/_slurm_ssh.py +2 -1
  58. fractal_server/runner/v2/_slurm_sudo.py +1 -1
  59. fractal_server/runner/v2/submit_workflow.py +12 -12
  60. {fractal_server-2.17.0a4.dist-info → fractal_server-2.17.0a6.dist-info}/METADATA +4 -6
  61. {fractal_server-2.17.0a4.dist-info → fractal_server-2.17.0a6.dist-info}/RECORD +64 -65
  62. fractal_server/app/routes/aux/validate_user_settings.py +0 -76
  63. fractal_server/app/schemas/user_settings.py +0 -63
  64. fractal_server/app/user_settings.py +0 -32
  65. {fractal_server-2.17.0a4.dist-info → fractal_server-2.17.0a6.dist-info}/WHEEL +0 -0
  66. {fractal_server-2.17.0a4.dist-info → fractal_server-2.17.0a6.dist-info}/entry_points.txt +0 -0
  67. {fractal_server-2.17.0a4.dist-info → fractal_server-2.17.0a6.dist-info}/licenses/LICENSE +0 -0
@@ -1,13 +1,13 @@
1
- fractal_server/__init__.py,sha256=Km-7IFlZnTXL2BNs_1wfkjKQe7Fj63edH31p1rDJIlg,25
2
- fractal_server/__main__.py,sha256=sPwlrhE7utCWYUaQ7D9Z1wC0L-7dd-9tlFtBeYoEg_M,11721
1
+ fractal_server/__init__.py,sha256=m6ro3f4bjmvJJ9DFzqslf5NSM9OxOGIbAGvKTxl1rZQ,25
2
+ fractal_server/__main__.py,sha256=68FlTuST3zbzVofFI8JSYsSBrBQ07Bv3Mu3PsZX9Fw0,11423
3
3
  fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
4
4
  fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  fractal_server/app/db/__init__.py,sha256=sttX0mHVV0ESI1SJ1kcxUKiuEwqeP-BWsst0o_9Yo44,2810
6
6
  fractal_server/app/models/__init__.py,sha256=xJWiGAwpXmCpnFMC4c_HTqoUCzMOXrakoGLUH_uMvdA,415
7
7
  fractal_server/app/models/linkusergroup.py,sha256=3KkkE4QIUAlTrBAZs_tVy0pGvAxUAq6yOEjflct_z2M,678
8
8
  fractal_server/app/models/linkuserproject.py,sha256=hvaxh3Lkiy2uUCwB8gvn8RorCpvxSSdzWdCS_U1GL7g,315
9
- fractal_server/app/models/security.py,sha256=R20lgbRx8I_6xcaCUcg1TP8uhsnNAmqcswAXGad5xjw,3948
10
- fractal_server/app/models/user_settings.py,sha256=Mel2DGZzFSeS8xfWjiQcdpb6MR29c21e-W7zweLm_uI,1091
9
+ fractal_server/app/models/security.py,sha256=snHmvnjYnq37qcXlUfieTUDz9bf-djOMeXMixP5EW3g,3736
10
+ fractal_server/app/models/user_settings.py,sha256=6Cc4r6ZVcASwlcPtnKZfKe2OidzOafQlmzWYZNTpRYU,1126
11
11
  fractal_server/app/models/v2/__init__.py,sha256=A668GF4z_UPar6kAOwC-o_qUo3CIRJ3SmBGYTs3Xc7k,923
12
12
  fractal_server/app/models/v2/accounting.py,sha256=i-2TsjqyuclxFQ21C-TeDoss7ZBTRuXdzIJfVr2UxwE,1081
13
13
  fractal_server/app/models/v2/dataset.py,sha256=P_zy4dPQAqrCALQ6737VkAFk1SvcgYjnslGUZhPI8sc,1226
@@ -17,23 +17,23 @@ fractal_server/app/models/v2/profile.py,sha256=dH5xftMYThd6xqw86a--2MPCysxGTLTsy
17
17
  fractal_server/app/models/v2/project.py,sha256=b6QZaMutwTfT1e_1mDDuwccgKVs4pcB0SMSYTtvfMrg,866
18
18
  fractal_server/app/models/v2/resource.py,sha256=RPQqOp1auoiXdPf27QazSXvzuUz9iPN1qfh7cRwxF64,3536
19
19
  fractal_server/app/models/v2/task.py,sha256=iBIQB8POQE5MyKvLZhw7jZWlBhbrThzCDzRTcgiAczQ,1493
20
- fractal_server/app/models/v2/task_group.py,sha256=kqjm76Ozb5BrklV_qMR9Q_ONzGMH9gu7h-3f-Xg5Eeg,4702
20
+ fractal_server/app/models/v2/task_group.py,sha256=sOlBhOkDyIJN19yD358TsQtDJOVSeGhHffrxgB3KkkQ,4753
21
21
  fractal_server/app/models/v2/workflow.py,sha256=gBjDXO-RytVT81aAlesImBhmVHrwNUrmsF_UsGa1qLM,1057
22
22
  fractal_server/app/models/v2/workflowtask.py,sha256=qkTc-hcFLpJUVsEUbnDq2BJL0qg9jagy2doZeusF1ek,1266
23
23
  fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  fractal_server/app/routes/admin/v2/__init__.py,sha256=SzLurEzKBRWHcIFh2mpac2wrGAWJwv9WW-Ry2DiNkZY,1161
26
26
  fractal_server/app/routes/admin/v2/_aux_functions.py,sha256=fqA5sUCFuD2iVANQt2WUUfVOEVz5egQA7inzUKYGCw0,1684
27
- fractal_server/app/routes/admin/v2/accounting.py,sha256=-eLzBirENvdhjhrCf6bs1pTriIui19DAr_k-zuJB7Y8,3593
28
- fractal_server/app/routes/admin/v2/impersonate.py,sha256=gc4lshfEPFR6W2asH7aKu6hqE6chzusdhAUVV9p51eU,1131
29
- fractal_server/app/routes/admin/v2/job.py,sha256=6NG93I-yQTlJZ1AIhMPwuizQcQvFlvI7kGJ8jG94Igg,8595
30
- fractal_server/app/routes/admin/v2/profile.py,sha256=yK42jYTo2cEETx6oWbe3ZJCORtZHqCVS2uQq91H6wG8,2745
31
- fractal_server/app/routes/admin/v2/project.py,sha256=MA_LdoEuSuisSGRO43TapMuJ080y5iaUGSAUgKuuKOg,1188
32
- fractal_server/app/routes/admin/v2/resource.py,sha256=jSI8TruayQHgdzpchbp-KlUBpgsUCQpbGDKHv4TU1j0,7820
33
- fractal_server/app/routes/admin/v2/task.py,sha256=e1UxsA6CWeYqvnHqxySE78ckRuE0EK60X02VMnkG2gg,4309
34
- fractal_server/app/routes/admin/v2/task_group.py,sha256=7-Axk5SG6Nw02p7pc6Q6_EtO9Ncy74pVXvt2GCG-Iuc,6043
35
- fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=h3OYIwhzG8eCaXFGTZlAIQlpgvlaknrskbVVaTBwCp8,10006
36
- fractal_server/app/routes/api/__init__.py,sha256=wyEcQ8hXPvqU8M-YPVaRHMFheuDdfRvdX2sDQtMgxpg,1423
27
+ fractal_server/app/routes/admin/v2/accounting.py,sha256=DjgMqzdrL8hYMn19cZj2pkwtLKl3QfBwxd473kH4KaI,3584
28
+ fractal_server/app/routes/admin/v2/impersonate.py,sha256=ictDjuvBr3iLv3YtwkVRMNQRq5qtPAeAXbbC7STSsEg,1125
29
+ fractal_server/app/routes/admin/v2/job.py,sha256=sFgMbOtUCIJ-ri6YD3ZWP7XETZZDQsLqPfT1kaH9RHQ,8577
30
+ fractal_server/app/routes/admin/v2/profile.py,sha256=0Y_1Qv-BA6cHVrxPTDDBOpttpfuJN8g1FqFlG6JiOD8,3164
31
+ fractal_server/app/routes/admin/v2/project.py,sha256=rRq7ZDngr_29skASnte1xfycZCjK-WPdeTf7siBXiCU,1182
32
+ fractal_server/app/routes/admin/v2/resource.py,sha256=uel-MN3f9TkkIJ7flEC4yPH7q2qGQxoaxPB0LxfZzYs,7796
33
+ fractal_server/app/routes/admin/v2/task.py,sha256=aACI0RXVODclIqfaFYyQ3ncB8YCcd36qy3a0vFGnsfo,4621
34
+ fractal_server/app/routes/admin/v2/task_group.py,sha256=RV697PI79X9w5zEKQTlQplAsp-vDS4fGyXwqsHc5eY0,6210
35
+ fractal_server/app/routes/admin/v2/task_group_lifecycle.py,sha256=W7LjIBAheyjrn0fEz0SsWINqcZK5HMB5GRGMjPrc6a4,9994
36
+ fractal_server/app/routes/api/__init__.py,sha256=ewprevw6hZ0FWM-GPHoQZU0w-yfItqLeQT-Jr_Nbjnw,1658
37
37
  fractal_server/app/routes/api/v2/__init__.py,sha256=D3sRRsqkmZO6kBxUjg40q0aRDsnuXI4sOOfn0xF9JsM,2820
38
38
  fractal_server/app/routes/api/v2/_aux_functions.py,sha256=8xnXYPjzo1yZfcg18b5ZY5tu9OQ1e55fOnX1IEmDSHk,15019
39
39
  fractal_server/app/routes/api/v2/_aux_functions_history.py,sha256=PXsqMQ3sfkABqAMI7v1_VAzUEDF_-kvaZyyhEicqsCw,4431
@@ -41,44 +41,42 @@ fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py,sha256=5gNt35r
41
41
  fractal_server/app/routes/api/v2/_aux_functions_task_version_update.py,sha256=PKjV7r8YsPRXoNiVSnOK4KBYVV3l_Yb_ZPrqAkMkXrQ,1182
42
42
  fractal_server/app/routes/api/v2/_aux_functions_tasks.py,sha256=eAXGnC7yEYGn1g2VDfSGvApN2mw79r4fW7ykRlDY2CY,12468
43
43
  fractal_server/app/routes/api/v2/_aux_task_group_disambiguation.py,sha256=8x1_q9FyCzItnPmdSdLQuwUTy4B9xCsXscp97_lJcpM,4635
44
- fractal_server/app/routes/api/v2/dataset.py,sha256=7hSqqE3sFjQjJOZf_QvYbMersjXXbS3YM3a1WDgv1rM,8893
45
- fractal_server/app/routes/api/v2/history.py,sha256=kEhD-TKkORenUUsfyODNBi1jOsGc82h_EWbRKyRkD5k,17102
46
- fractal_server/app/routes/api/v2/images.py,sha256=foA5ZNjMzZWlcYMgYuGSZsm1I-po-8NSYBIMz4ZbkPc,7867
47
- fractal_server/app/routes/api/v2/job.py,sha256=FyK4Aa9XoIcfD0ZpKM-4Bkj3ZcIc93UzDc8jF85uHps,6478
48
- fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=AEN6w2X5kCkSpZydudvuTPhl_VZUQ4zUav6D3NiF6r8,4935
49
- fractal_server/app/routes/api/v2/project.py,sha256=4NFnMV2pTCwAE5C2dA6NJr_7J1fB-QovAMqoUGFPrhs,4746
50
- fractal_server/app/routes/api/v2/status_legacy.py,sha256=GG-AUdAngFL1QpE8Alo3xPxyKC4csG7DbomYlIfqTEs,6318
51
- fractal_server/app/routes/api/v2/submit.py,sha256=5K7Q7xBCwuBpTHJaC3a3danKWIEBva1HPSbmGp1BU7k,9400
52
- fractal_server/app/routes/api/v2/task.py,sha256=zGB9fMLv71o9aCS6DWXpccHyNvTbYVbnKHhaNHGSLmY,7214
53
- fractal_server/app/routes/api/v2/task_collection.py,sha256=QeT9Eidp1Sm7nhzWgHw_kWYxjRkNSwqxCjXRzCgaSKg,12279
54
- fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=JaO8CQrN5z3hB_YNqE3kOpEsBUXqYOStlN-xf01qK7U,7008
55
- fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=B8xF9w2nZt-VTiHtAeQ-SCXEg383aLKEFqlXk8Yyl0Y,7250
56
- fractal_server/app/routes/api/v2/task_group.py,sha256=An8EAwZDNx53TVnGBhjgeW7RI_uk-bAlu-6NrqYuaWY,8068
57
- fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=3jWQcUvnFlcGsHbSyQSem5TwzP08ADGgO3YIxFZQWIs,10569
58
- fractal_server/app/routes/api/v2/task_version_update.py,sha256=zBYlyqN0UvCfnkqcg945b5jNMRNjSUKJvBz6IPxC0qo,8236
59
- fractal_server/app/routes/api/v2/workflow.py,sha256=iTIasNP2I5ovhHafQ2P8JJuImAl41ucy5y64J7FiP3w,10701
60
- fractal_server/app/routes/api/v2/workflow_import.py,sha256=fsYnFAOwtOR7u2Hod1ij7i_BQjnA2jv2EKzuSPG_pEc,9083
61
- fractal_server/app/routes/api/v2/workflowtask.py,sha256=gwFvC-qU4yb-Q5ey30rOD4u3D0-4jlJzBTuq8udqpzc,7930
62
- fractal_server/app/routes/auth/__init__.py,sha256=fao6CS0WiAjHDTvBzgBVV_bSXFpEAeDBF6Z6q7rRkPc,1658
44
+ fractal_server/app/routes/api/v2/dataset.py,sha256=HhRrReo_isFJFMaUhQfxEQkLj0_lXNfGblzwpLG81VU,8623
45
+ fractal_server/app/routes/api/v2/history.py,sha256=T-7GDLZ_x4cp9PMEozJoEFt4cGFYPDqv9-akYmN2JSU,17150
46
+ fractal_server/app/routes/api/v2/images.py,sha256=_R-F1qrsFv3PPukrwXSa-5swNS4kNghY0DTrxjLC_7E,7897
47
+ fractal_server/app/routes/api/v2/job.py,sha256=fyIYGcplsxzx91FxYWlImp1ATPk5IC8bfIcJkuZOhws,6526
48
+ fractal_server/app/routes/api/v2/pre_submission_checks.py,sha256=DEnlFj6PMNMy9DrnH6_pMW9evdKl6iTlAb0zlzBR1Qs,4953
49
+ fractal_server/app/routes/api/v2/project.py,sha256=eQcQs0ElMpUN0OTcgG7DXk70t9Dn8Fdd6oHeQ0WbgJI,4782
50
+ fractal_server/app/routes/api/v2/status_legacy.py,sha256=vZA4AYMehXbNFgekl4j6p8idETC3IylQQL64CmFCr98,6330
51
+ fractal_server/app/routes/api/v2/submit.py,sha256=l12Duakx0lV43LCyX4C6cCIBsg-BEc-XxjRRe8l8Wys,9203
52
+ fractal_server/app/routes/api/v2/task.py,sha256=KDIBrQpIbbVrffOBtxah-gXiOnN-EG84ujXeGPOqKhg,7160
53
+ fractal_server/app/routes/api/v2/task_collection.py,sha256=A0mfajyJVVrWNuI7YaPih7juSWOnks78NnJDwnGfvdo,12281
54
+ fractal_server/app/routes/api/v2/task_collection_custom.py,sha256=9SqiMPuED5LEGKo3Tiq5KfXFqmjaZPg9KWL-Yn5jdLo,7010
55
+ fractal_server/app/routes/api/v2/task_collection_pixi.py,sha256=QHqdnaddTW-DZKrnzLKwCPP5j3UiqxOtFO04aZeexdk,7244
56
+ fractal_server/app/routes/api/v2/task_group.py,sha256=_M_munannm0wMmLdOwo-qATqrl0Vu_TsrpLb-2554fs,8104
57
+ fractal_server/app/routes/api/v2/task_group_lifecycle.py,sha256=ZSn8Ibjwkp89v87OPBquULPc9xsdpBfRvV1PiQdiicw,10593
58
+ fractal_server/app/routes/api/v2/task_version_update.py,sha256=JO5xggiRqay4zNlbjlRa26ygMEue2klSFPyLrXS215k,8254
59
+ fractal_server/app/routes/api/v2/workflow.py,sha256=szb6t9OWOjr0CwboF0fJUyO5jUPj_HRpf5N0CDuHkqc,10755
60
+ fractal_server/app/routes/api/v2/workflow_import.py,sha256=iFy8jPuMMt1DpIcs5iJc5Gzcq-wbMtnk05NdU1y5nkQ,9095
61
+ fractal_server/app/routes/api/v2/workflowtask.py,sha256=-V7WjTfYb2L7i3_dQ0Am_ydqepdqs-j3BY67_5iZPfU,7960
62
+ fractal_server/app/routes/auth/__init__.py,sha256=Y-RQMwY5V25ZVgyYYoFIXvEDQgm6PGTDgxH755oa_NM,2358
63
63
  fractal_server/app/routes/auth/_aux_auth.py,sha256=fyGxBVb6yrVrsE7-2tTyiJ7orb9Jzkg36m_q-rP7Zs8,4868
64
- fractal_server/app/routes/auth/current_user.py,sha256=jvr5AX3tSmxV7HMY8OIiojcYxcX4mF-UIUNwG8CqvVo,7110
65
- fractal_server/app/routes/auth/group.py,sha256=gSyB9iuwCqT6CMDHyO8hYIQ1J341gs8SDrRdHppOMT0,7890
64
+ fractal_server/app/routes/auth/current_user.py,sha256=BsM_lm9iNiaL8_iMY8NZnfgSXhzEY8xgkQUgtC40h8o,5517
65
+ fractal_server/app/routes/auth/group.py,sha256=wZnqzIOZHpoUW2Yp6dkAMRqIiM_otVdG4fZuBYmLocA,6919
66
66
  fractal_server/app/routes/auth/login.py,sha256=tSu6OBLOieoBtMZB4JkBAdEgH2Y8KqPGSbwy7NIypIo,566
67
- fractal_server/app/routes/auth/oauth.py,sha256=iI2vEdvDlEE5BrFz5Krq96VUk39HDuE0NzqW9fS3dDE,2261
68
- fractal_server/app/routes/auth/register.py,sha256=DlHq79iOvGd_gt2v9uwtsqIKeO6i_GKaW59VIkllPqY,587
67
+ fractal_server/app/routes/auth/oauth.py,sha256=3TaGZpjgjUyqqbhdcUv1PwgiHdkUk41X5tc98FOIw-s,2288
68
+ fractal_server/app/routes/auth/register.py,sha256=Ola-lNdYYEOK8Wh0Q-TFKwIJ25e6UswlUojJ8QGBCfc,581
69
69
  fractal_server/app/routes/auth/router.py,sha256=-E87A8h2UvcLucy5xjzKiWbXHVKcqxUmmZGeV_utEzA,598
70
- fractal_server/app/routes/auth/users.py,sha256=8QMjZ3nq-UGX4pamCTesEtWO8I9BYalLh1FlLwRp9BA,8310
70
+ fractal_server/app/routes/auth/users.py,sha256=Gjj3_W4Zu1RZJv0r578wPJrbicMmiSELmJGJDeStyus,6878
71
71
  fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  fractal_server/app/routes/aux/_job.py,sha256=nqqdcW5B7fL_PbvHf57_TcifjUfcMgl04tKNvG2sV1U,628
73
73
  fractal_server/app/routes/aux/_runner.py,sha256=SDzI7glEfkW_XecWFuRQitbSWSvAPegI-J5c7i5d0_w,957
74
74
  fractal_server/app/routes/aux/validate_user_profile.py,sha256=fGqJDdAFkbQoEIjqZ5F9-SDY_4os63R2EUMqODC7eBg,1969
75
- fractal_server/app/routes/aux/validate_user_settings.py,sha256=C_V5QhnBppyr-YYoni_yVrooU5bKfSTrwM-ea2m5pqU,2405
76
75
  fractal_server/app/routes/pagination.py,sha256=IGy8Ll5lYr6ENYE18h3huH5s0GMX1DCs5VdCi6j1cdk,1174
77
- fractal_server/app/schemas/__init__.py,sha256=stURAU_t3AOBaH0HSUbV-GKhlPKngnnIMoqWc3orFyI,135
78
- fractal_server/app/schemas/user.py,sha256=gMvnEZcbHIoFTzyZE9VX-GGut3iYcpbs0Xo33eKC9aw,2136
76
+ fractal_server/app/schemas/__init__.py,sha256=VIWJCaqokte3OljDLX00o-EC2d12rFoPb5HOLKQI94Y,86
77
+ fractal_server/app/schemas/user.py,sha256=MGggiWGqQV97426IzoaKNIkqHUMEuadW7BbJgom6tB8,2898
79
78
  fractal_server/app/schemas/user_group.py,sha256=x3-kqbo0q2wTP7QI0iZ7PU_9Dr957UYrFMKqS7BXLhE,1425
80
- fractal_server/app/schemas/user_settings.py,sha256=x-MS4Hq0RWkE3in6Su454Yk_cmbfY1lnIzjM82jij5U,1692
81
- fractal_server/app/schemas/v2/__init__.py,sha256=ShdbfHQe_MNMQzyjaEl7NGj30h2u8mUD9-UX3hsS3sA,3669
79
+ fractal_server/app/schemas/v2/__init__.py,sha256=XQex5ojpELgO0xvq2l-Y8oV85ZgM3GBj6lrGGctPb1g,3729
82
80
  fractal_server/app/schemas/v2/accounting.py,sha256=C_ekrYQwhi7PtrxxB07oVAG2y1NLigXjYwyp4E38fao,396
83
81
  fractal_server/app/schemas/v2/dataset.py,sha256=NKCjBwGBC7mPiSlXktZAcleJsvlLY6KfNKw7Wx4Zfqk,1728
84
82
  fractal_server/app/schemas/v2/dumps.py,sha256=LCYiNF_FNYiA6HYp5GyFao3IKRX0RpzgNpiX56IwgCE,2293
@@ -91,18 +89,18 @@ fractal_server/app/schemas/v2/resource.py,sha256=4iXzZJeHVLcXYY08-okoJM_4gqpzhG4
91
89
  fractal_server/app/schemas/v2/status_legacy.py,sha256=eQT1zGxbkzSwd0EqclsOdZ60n1x6J3DB1CZ3m4LYyxc,955
92
90
  fractal_server/app/schemas/v2/task.py,sha256=IJv8loB4kx9FBkaIHoiMsswQyq02FxvyAnHK1u074fU,4364
93
91
  fractal_server/app/schemas/v2/task_collection.py,sha256=BzHQXq2_zLZTbigWauOR5Zi-mlsqCIF2NEF_z12Nqxg,4480
94
- fractal_server/app/schemas/v2/task_group.py,sha256=DzgcUvn3rZvttk6Zrbyr3Kw8YYYF-rPiGkGzV_fdzSQ,3415
92
+ fractal_server/app/schemas/v2/task_group.py,sha256=4hNZUXnWYSozpLXR3JqBvGzfZBG2TbjqydckHHu2Aq0,3506
95
93
  fractal_server/app/schemas/v2/workflow.py,sha256=L-dW6SzCH_VNoH6ENip44lTgGGqVYHHBk_3PtM-Ooy8,1772
96
94
  fractal_server/app/schemas/v2/workflowtask.py,sha256=6eweAMyziwaoMT-7R1fVJYunIeZKzT0-7fAVgPO_FEc,3639
97
- fractal_server/app/security/__init__.py,sha256=eiYSoUA0XrRGKGKnBOK1KxLhQT9gK0H11ndok2md46c,13841
98
- fractal_server/app/security/signup_email.py,sha256=RgU9ia092778j35W4Iil3Ke9wNpPzKH6rjpE0zM9Zb4,1486
95
+ fractal_server/app/security/__init__.py,sha256=gtfJkwdXTm_F38sFgb5LH3AcdvKs42fOUJa8jo8Cmbw,17484
96
+ fractal_server/app/security/signup_email.py,sha256=kphjq6TAygvPpYpg95QJWefyqmzdVrGz7fyRMctUJWE,1982
99
97
  fractal_server/app/shutdown.py,sha256=ViSNJyXWU_iWPSDOOMGNh_iQdUFrdPh_jvf8vVKLpAo,1950
100
- fractal_server/app/user_settings.py,sha256=5thFLR6de-CiaUyDZG9Bpn-P97vraDk4TP85eDuh8io,898
101
- fractal_server/config/__init__.py,sha256=WvcoE3qiY1qnkumv3qspcemCFw5iFG5NkSFR78vN4ks,562
98
+ fractal_server/config/__init__.py,sha256=ZCmroNB50sUxJiFtkW0a4fFtmfyPnL4LWhtKY5FbQfg,737
99
+ fractal_server/config/_data.py,sha256=9Jyt83yrSsr_0_9ANWDAXz88_jjyFlcB5VWJGXq8aUY,2311
102
100
  fractal_server/config/_database.py,sha256=YOBi3xuJno5wLGw1hKsjLm-bftaxVWiBNIQWVTMX3Ag,1661
103
- fractal_server/config/_email.py,sha256=iiUP5Be9AzDDJmVsWfTFzLt9XreTFt9pRcX7f9eRNvw,5682
104
- fractal_server/config/_main.py,sha256=NaKnNjkGZQdHjWPRuwa42I2a024Yqg3zuFUM0vMJzlo,3630
105
- fractal_server/config/_oauth.py,sha256=OYWqJnL0yn8ymagKb4fK-2zNqXVBbumRWwZrr9TFUms,1926
101
+ fractal_server/config/_email.py,sha256=j1QmZCyspNbD1xxkypc9Kv299tU3vTO1AqDFJ8-LZzQ,4201
102
+ fractal_server/config/_main.py,sha256=y1WQPFjEyctsVpRX2LVKfR_nJjFQHAey_i8e6Hmsq6E,1605
103
+ fractal_server/config/_oauth.py,sha256=7J4FphGVFfVmtQycCkas6scEJQJGZUGEzQ-t2PZiqSo,1934
106
104
  fractal_server/config/_settings_config.py,sha256=tsyXQOnn9QKCFJD6hRo_dJXlQQyl70DbqgHMJoZ1xnY,144
107
105
  fractal_server/data_migrations/2_14_10.py,sha256=jzMg2c1zNO8C_Nho_9_EZJD6kR1-gkFNpNrMR5Hr8hM,1598
108
106
  fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
@@ -114,7 +112,7 @@ fractal_server/images/models.py,sha256=6WchcIzLLLwdkLNRfg71Dl4Y-9UFLPyrrzh1lWgju
114
112
  fractal_server/images/status_tools.py,sha256=KICcThwHniHNkDftzJmK_n2gQK2IeTKlR_PFAesf204,4912
115
113
  fractal_server/images/tools.py,sha256=37jVIU6RiAGbiyucNDlKe9J3yN3Y47NOvv-RJor9Jm0,4154
116
114
  fractal_server/logger.py,sha256=2_IN0WcIzLEX20HFUUkwyZGSIi0yLbE0JamkzXREDZw,5302
117
- fractal_server/main.py,sha256=uTKl1XH3tZ1jvaGeZDEgVXC5WMWRM1Ep4gB-vYRPb-8,4313
115
+ fractal_server/main.py,sha256=4HJO8EiGJp0Iw0p3xEm_zhwjnT4joFG1KuGccIIndjo,4419
118
116
  fractal_server/migrations/env.py,sha256=nfyBpMIOT3kny6t-b-tUjyRjZ4k906bb1_wCQ7me1BI,1353
119
117
  fractal_server/migrations/naming_convention.py,sha256=htbKrVdetx3pklowb_9Cdo5RqeF0fJ740DNecY5de_M,265
120
118
  fractal_server/migrations/versions/034a469ec2eb_task_groups.py,sha256=vrPhC8hfFu1c4HmLHNZyCuqEfecFD8-bWc49bXMNes0,6199
@@ -161,6 +159,7 @@ fractal_server/migrations/versions/e81103413827_add_job_type_filters.py,sha256=t
161
159
  fractal_server/migrations/versions/efa89c30e0a4_add_project_timestamp_created.py,sha256=jilQW3QIqYQ4Q6hCnUiG7UtNMpA41ujqrB3tPFiPM1Q,1221
162
160
  fractal_server/migrations/versions/f37aceb45062_make_historyunit_logfile_required.py,sha256=jLHcVq9z0Ou20u-mwPf6EICDKY4dwFAzBgbRRx9_xDw,1007
163
161
  fractal_server/migrations/versions/f384e1c0cf5d_drop_task_default_args_columns.py,sha256=9BwqUS9Gf7UW_KjrzHbtViC880qhD452KAytkHWWZyk,746
162
+ fractal_server/migrations/versions/f65ee53991e3_user_settings_related.py,sha256=q9oaVpp85X4EZt3f33ThyBDZD3_9trO2va9uAIh2yK0,1883
164
163
  fractal_server/migrations/versions/fbce16ff4e47_new_history_items.py,sha256=TDWCaIoM0Q4SpRWmR9zr_rdp3lJXhCfBPTMhtrP5xYE,3950
165
164
  fractal_server/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
166
165
  fractal_server/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -179,31 +178,31 @@ fractal_server/runner/executors/local/runner.py,sha256=cwQyPfSXyvLTigU4hfyQuCTps
179
178
  fractal_server/runner/executors/slurm_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
179
  fractal_server/runner/executors/slurm_common/_batching.py,sha256=la_FXt4ErYU63vkmk2SGZcSOqq-Jzp_L9tZfzBY7rlU,8806
181
180
  fractal_server/runner/executors/slurm_common/_job_states.py,sha256=nuV-Zba38kDrRESOVB3gaGbrSPZc4q7YGichQaeqTW0,238
182
- fractal_server/runner/executors/slurm_common/base_slurm_runner.py,sha256=MiyRBurrSuvqMdyZd7uPj_hOcEp_HPCB32mps-1X0P0,41008
181
+ fractal_server/runner/executors/slurm_common/base_slurm_runner.py,sha256=jnUuoHDwNu1UL0FWu61PjY8GLgK20PvVBpJRwRCKJP8,40969
183
182
  fractal_server/runner/executors/slurm_common/get_slurm_config.py,sha256=kQQtc4o5Ya3gLMB6x9xuuyDX6jKpa0bSqkHeiAz7lTM,7071
184
183
  fractal_server/runner/executors/slurm_common/remote.py,sha256=2ByWIHFKL1bW6CS04ijrJvX4jH8CpX2Pp-QhAncc-Hs,3806
185
- fractal_server/runner/executors/slurm_common/slurm_config.py,sha256=5P-kd2DejimRrZISJ6DGkTJwb0oX94JO6z6nvwrOnxc,8048
184
+ fractal_server/runner/executors/slurm_common/slurm_config.py,sha256=hnZWxgXZsawubPNRHPXMHe1eD8cT44z1BTuKaYqPLTU,7895
186
185
  fractal_server/runner/executors/slurm_common/slurm_job_task_models.py,sha256=wOVtACSFLulc0gUwXlj_SXJHIQmgHpseohw-SahT1DM,3517
187
186
  fractal_server/runner/executors/slurm_ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
187
  fractal_server/runner/executors/slurm_ssh/run_subprocess.py,sha256=SyW6t4egvbiARph2YkFjc88Hj94fCamZVi50L7ph8VM,996
189
- fractal_server/runner/executors/slurm_ssh/runner.py,sha256=ejViETgV0GF5tRipJy_-PlZu-Y8pDQwO6C4j5S9oILI,10217
188
+ fractal_server/runner/executors/slurm_ssh/runner.py,sha256=1ehjRxcbChvk9mZgqCUCQY69Xpn8JyYH-Db6cQ7Xrt4,10203
190
189
  fractal_server/runner/executors/slurm_ssh/tar_commands.py,sha256=yqBjWTLmh_FzhCllt_KfbuCUGvRhsHLVWlPOZlRWLzY,1762
191
190
  fractal_server/runner/executors/slurm_sudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
191
  fractal_server/runner/executors/slurm_sudo/_subprocess_run_as_user.py,sha256=9pN0N409M24TXIyhuWJb-Tj0Ztaud68xtQ7wfAibmfk,2566
193
- fractal_server/runner/executors/slurm_sudo/runner.py,sha256=h5YYtgBz2WQ5fu6_ny5B9aK7bgVde5g5nMLKqrDLZf8,5955
192
+ fractal_server/runner/executors/slurm_sudo/runner.py,sha256=a_9c29735U3xqiWGv8WsyBN8SX9SgkGTY1mepNUUh64,5916
194
193
  fractal_server/runner/filenames.py,sha256=lPnxKHtdRizr6FqG3zOdjDPyWA7GoaJGTtiuJV0gA8E,70
195
194
  fractal_server/runner/set_start_and_last_task_index.py,sha256=NsioSzfEpGyo9ZKrV5KsbxeI7d5V3tE678Y3IAo5rHM,1218
196
195
  fractal_server/runner/task_files.py,sha256=MvOrklZrN8iLj3oPx7G-iaEFj2N_mkTOnxIBX-okH1E,4037
197
196
  fractal_server/runner/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
197
  fractal_server/runner/v2/_local.py,sha256=js1W8_9QQad_kbvMM8ytjfWX_BEoq8OER9BLdxH0JRs,3759
199
- fractal_server/runner/v2/_slurm_ssh.py,sha256=mZ4G1MTXR1-gI9FY1ckwTzpUROwWSfZ4oTA2odweMZ0,4412
200
- fractal_server/runner/v2/_slurm_sudo.py,sha256=Vi82KecepFM0AH5XXNV3eJ174JZVnMqbdSIJxpf30Gs,4358
198
+ fractal_server/runner/v2/_slurm_ssh.py,sha256=F7Zcs9NpmXDktTX_fQQke99Ov06Hi4XUUDsDKZwOmOI,4437
199
+ fractal_server/runner/v2/_slurm_sudo.py,sha256=f34B6KWtn1Wwm7Y-D95Ecub0vKpA03zYL7jZAF53tfI,4344
201
200
  fractal_server/runner/v2/db_tools.py,sha256=kLB0sGYNuCMPPoP4XDSClPIf7x5lSseTKUjzGk6gAfc,3318
202
201
  fractal_server/runner/v2/deduplicate_list.py,sha256=vidkd7K6u3w0A4zVgsGZkc9mwoP6ihTYJZQUhBNorfE,667
203
202
  fractal_server/runner/v2/merge_outputs.py,sha256=0ahaSwdMFAoEhxVaEaO9nSJuKIcWg9pDZ356ktSHcC0,897
204
203
  fractal_server/runner/v2/runner.py,sha256=1vj6m_ir6RrYNr3Ew98h5hnEAms_TaHPhee52swQ_gA,19404
205
204
  fractal_server/runner/v2/runner_functions.py,sha256=w_i74LCt_9f07w511wslTFhoDUtoE1R-IKcglEGWPIc,19618
206
- fractal_server/runner/v2/submit_workflow.py,sha256=T8Y9OuX9eudNP_b2qpKlsnVOq956oDgaiKDXOIG5W8E,11447
205
+ fractal_server/runner/v2/submit_workflow.py,sha256=s3mo5pLZH5x8V01IZjoJXcbpCl9geZwvISEr5StSBeI,11458
207
206
  fractal_server/runner/v2/task_interface.py,sha256=ftPPpOU16rbJD8q-QV7o_3ey8W7MQTFuWJiYUr4OmF4,2532
208
207
  fractal_server/runner/versions.py,sha256=uz59Dxj7BphnFnr-p0kyaZRH0h4w5Xkd0UJNVGtt4ds,474
209
208
  fractal_server/ssh/__init__.py,sha256=sVUmzxf7_DuXG1xoLQ1_00fo5NPhi2LJipSmU5EAkPs,124
@@ -258,8 +257,8 @@ fractal_server/types/validators/_workflow_task_arguments_validators.py,sha256=HL
258
257
  fractal_server/urls.py,sha256=QjIKAC1a46bCdiPMu3AlpgFbcv6a4l3ABcd5xz190Og,471
259
258
  fractal_server/utils.py,sha256=SYVVUuXe_nWyrJLsy7QA-KJscwc5PHEXjvsW4TK7XQI,2180
260
259
  fractal_server/zip_tools.py,sha256=H0w7wS5yE4ebj7hw1_77YQ959dl2c-L0WX6J_ro1TY4,4884
261
- fractal_server-2.17.0a4.dist-info/METADATA,sha256=ZMzqbkf3Z7bm6P9mWPHsIWpwt1FUEIxSSe3sgbqXNMQ,4319
262
- fractal_server-2.17.0a4.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
263
- fractal_server-2.17.0a4.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
264
- fractal_server-2.17.0a4.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
265
- fractal_server-2.17.0a4.dist-info/RECORD,,
260
+ fractal_server-2.17.0a6.dist-info/METADATA,sha256=X3vrUW4wnIOGZ8jAWbE4Ks9CaPszKHL2WuSPHtBk_aM,4226
261
+ fractal_server-2.17.0a6.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
262
+ fractal_server-2.17.0a6.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
263
+ fractal_server-2.17.0a6.dist-info/licenses/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
264
+ fractal_server-2.17.0a6.dist-info/RECORD,,
@@ -1,76 +0,0 @@
1
- from fastapi import HTTPException
2
- from fastapi import status
3
- from pydantic import ValidationError
4
-
5
- from fractal_server.app.db import AsyncSession
6
- from fractal_server.app.models import UserOAuth
7
- from fractal_server.app.models import UserSettings
8
- from fractal_server.app.schemas.v2 import ResourceType
9
- from fractal_server.app.user_settings import SlurmSshUserSettings
10
- from fractal_server.app.user_settings import SlurmSudoUserSettings
11
- from fractal_server.logger import set_logger
12
-
13
-
14
- logger = set_logger(__name__)
15
-
16
-
17
- def verify_user_has_settings(user: UserOAuth) -> None:
18
- """
19
- Check that the `user.user_settings_id` foreign-key is set.
20
-
21
- NOTE: This check will become useless when we make the foreign-key column
22
- required, but for the moment (as of v2.6.0) we have to keep it in place.
23
-
24
- Args:
25
- user: The user to be checked.
26
- """
27
- if user.user_settings_id is None:
28
- raise HTTPException(
29
- status_code=status.HTTP_422_UNPROCESSABLE_CONTENT,
30
- detail=f"Error: user '{user.email}' has no settings.",
31
- )
32
-
33
-
34
- async def validate_user_settings(
35
- *, user: UserOAuth, backend: str, db: AsyncSession
36
- ) -> UserSettings:
37
- """
38
- Get a UserSettings object and validate it based on a given Fractal backend.
39
-
40
- Args:
41
- user: The user whose settings we should validate.
42
- backend: The value of `FRACTAL_RUNNER_BACKEND`
43
- db: An async DB session
44
-
45
- Returns:
46
- `UserSetting` object associated to `user`, if valid.
47
- """
48
-
49
- verify_user_has_settings(user)
50
-
51
- user_settings = await db.get(UserSettings, user.user_settings_id)
52
-
53
- match backend:
54
- case ResourceType.SLURM_SSH:
55
- UserSettingsValidationModel = SlurmSshUserSettings
56
- case ResourceType.SLURM_SUDO:
57
- UserSettingsValidationModel = SlurmSudoUserSettings
58
- case _:
59
- # For other backends, we don't validate anything
60
- return user_settings
61
-
62
- try:
63
- UserSettingsValidationModel(**user_settings.model_dump())
64
- except ValidationError as e:
65
- error_msg = (
66
- "User settings are not valid for "
67
- f"FRACTAL_RUNNER_BACKEND='{backend}'. "
68
- f"Original error: {str(e)}"
69
- )
70
- logger.warning(error_msg)
71
- raise HTTPException(
72
- status_code=status.HTTP_422_UNPROCESSABLE_CONTENT,
73
- detail=error_msg,
74
- )
75
-
76
- return user_settings
@@ -1,63 +0,0 @@
1
- from pydantic import BaseModel
2
- from pydantic import ConfigDict
3
- from pydantic import field_validator
4
-
5
- from fractal_server.string_tools import validate_cmd
6
- from fractal_server.types import AbsolutePathStr
7
- from fractal_server.types import ListUniqueNonEmptyString
8
- from fractal_server.types import NonEmptyStr
9
-
10
- __all__ = (
11
- "UserSettingsRead",
12
- "UserSettingsReadStrict",
13
- "UserSettingsUpdate",
14
- "UserSettingsUpdateStrict",
15
- )
16
-
17
-
18
- class UserSettingsRead(BaseModel):
19
- """
20
- Schema reserved for superusers
21
- """
22
-
23
- id: int
24
- ssh_host: str | None = None
25
- ssh_username: str | None = None
26
- ssh_private_key_path: str | None = None
27
- slurm_user: str | None = None
28
- slurm_accounts: list[str]
29
- project_dir: str | None = None
30
-
31
-
32
- class UserSettingsReadStrict(BaseModel):
33
- slurm_user: str | None = None
34
- slurm_accounts: list[str]
35
- ssh_username: str | None = None
36
- project_dir: str | None = None
37
-
38
-
39
- class UserSettingsUpdate(BaseModel):
40
- """
41
- Schema reserved for superusers
42
- """
43
-
44
- model_config = ConfigDict(extra="forbid")
45
-
46
- ssh_host: NonEmptyStr | None = None
47
- ssh_username: NonEmptyStr | None = None
48
- ssh_private_key_path: AbsolutePathStr | None = None
49
- slurm_user: NonEmptyStr | None = None
50
- slurm_accounts: ListUniqueNonEmptyString | None = None
51
- project_dir: AbsolutePathStr | None = None
52
-
53
- @field_validator("project_dir", mode="after")
54
- @classmethod
55
- def validate_project_dir(cls, value):
56
- if value is not None:
57
- validate_cmd(value)
58
- return value
59
-
60
-
61
- class UserSettingsUpdateStrict(BaseModel):
62
- model_config = ConfigDict(extra="forbid")
63
- slurm_accounts: ListUniqueNonEmptyString | None = None
@@ -1,32 +0,0 @@
1
- # TODO: move this file to the appropriate path
2
- from pydantic import BaseModel
3
-
4
-
5
- class SlurmSshUserSettings(BaseModel):
6
- """
7
- Subset of user settings which must be present for task collection and job
8
- execution when using the Slurm-SSH runner.
9
-
10
- Attributes:
11
- project_dir: Folder where `slurm_user` can write.
12
- slurm_accounts:
13
- List of SLURM accounts, to be used upon Fractal job submission.
14
- """
15
-
16
- project_dir: str
17
- slurm_accounts: list[str]
18
-
19
-
20
- class SlurmSudoUserSettings(BaseModel):
21
- """
22
- Subset of user settings which must be present for task collection and job
23
- execution when using the Slurm-sudo runner.
24
-
25
- Attributes:
26
- project_dir: Folder where `slurm_user` can write.
27
- slurm_accounts:
28
- List of SLURM accounts, to be used upon Fractal job submission.
29
- """
30
-
31
- project_dir: str
32
- slurm_accounts: list[str]