prefect 3.4.9.dev3__tar.gz → 3.4.9.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/PKG-INFO +1 -1
- prefect-3.4.9.dev5/src/prefect/_build_info.py +5 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/deployment.py +10 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/concurrency_limits_v2.py +193 -59
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/flow_runs.py +13 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/task_runs.py +13 -0
- prefect-3.4.9.dev5/src/prefect/server/concurrency/lease_storage/__init__.py +55 -0
- prefect-3.4.9.dev5/src/prefect/server/concurrency/lease_storage/filesystem.py +209 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/concurrency/lease_storage/memory.py +8 -6
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/deployments.py +38 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/flow_runs.py +17 -17
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/logs.py +12 -1
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/repossessor.py +5 -5
- prefect-3.4.9.dev5/src/prefect/server/ui/assets/404-DA3fjW_L.js +2 -0
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/404-CWchuO4q.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/404-DA3fjW_L.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AppRouterView-CeYN2cCj.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AppRouterView-C747KVVu.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AppRouterView-CeYN2cCj.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AppRouterView-C747KVVu.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Artifact-D-Ms4XpZ.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Artifact-CvLVYOBX.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Artifact-D-Ms4XpZ.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Artifact-CvLVYOBX.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/ArtifactKey-lM7sxe3d.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/ArtifactKey-DzUtABek.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/ArtifactKey-lM7sxe3d.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/ArtifactKey-DzUtABek.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Artifacts-Dv3blXKR.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Artifacts-CS4m3GfZ.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Artifacts-Dv3blXKR.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Artifacts-CS4m3GfZ.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Automation-wIt15gU_.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Automation-DQcrKvD7.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Automation-wIt15gU_.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Automation-DQcrKvD7.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AutomationCreate-DsV_cUzp.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AutomationCreate-CkmXl5ha.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AutomationCreate-DsV_cUzp.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AutomationCreate-CkmXl5ha.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AutomationEdit-C7nxdJ6k.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AutomationEdit-ClX53Rkp.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AutomationEdit-C7nxdJ6k.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AutomationEdit-ClX53Rkp.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AutomationWizard.vue_vue_type_script_setup_true_lang-CQQMIE-5.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AutomationWizard.vue_vue_type_script_setup_true_lang-CUP6FAQH.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/AutomationWizard.vue_vue_type_script_setup_true_lang-CQQMIE-5.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/AutomationWizard.vue_vue_type_script_setup_true_lang-CUP6FAQH.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Automations-DyvTyTYg.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Automations-wQgWWc7i.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Automations-DyvTyTYg.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Automations-wQgWWc7i.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlockEdit-DShEAl33.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlockEdit-C8TPOAo4.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlockEdit-DShEAl33.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlockEdit-C8TPOAo4.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlockView-CU3mRF1Z.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlockView-B2VDWbDy.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlockView-CU3mRF1Z.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlockView-B2VDWbDy.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Blocks-mOD6wU0R.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Blocks-5YTbCtvn.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Blocks-mOD6wU0R.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Blocks-5YTbCtvn.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlocksCatalog-Kkf9NBQY.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlocksCatalog-n45Ix5be.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlocksCatalog-Kkf9NBQY.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlocksCatalog-n45Ix5be.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlocksCatalogCreate-DdwWU2r-.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlocksCatalogCreate-BM5dweAT.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlocksCatalogCreate-DdwWU2r-.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlocksCatalogCreate-BM5dweAT.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlocksCatalogView-DGyifC5U.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlocksCatalogView-Bvf0hlcQ.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/BlocksCatalogView-DGyifC5U.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/BlocksCatalogView-Bvf0hlcQ.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/ConcurrencyLimit-DHI9KZJl.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/ConcurrencyLimit-F2cwn_2I.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/ConcurrencyLimit-DHI9KZJl.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/ConcurrencyLimit-F2cwn_2I.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/ConcurrencyLimits-DPYOMnQN.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/ConcurrencyLimits-fN-CSb5N.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/ConcurrencyLimits-DPYOMnQN.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/ConcurrencyLimits-fN-CSb5N.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Dashboard-ZEHiiZMn.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Dashboard-IPf0Dlyv.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Dashboard-ZEHiiZMn.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Dashboard-IPf0Dlyv.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Deployment-DMf8uL7N.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Deployment-D_ZqbuBo.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Deployment-DMf8uL7N.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Deployment-D_ZqbuBo.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/DeploymentDuplicate-C_VmqbOW.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/DeploymentDuplicate-DzGn-UDZ.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/DeploymentDuplicate-C_VmqbOW.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/DeploymentDuplicate-DzGn-UDZ.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/DeploymentEdit-CICik4BU.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/DeploymentEdit-DVF2IQyP.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/DeploymentEdit-CICik4BU.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/DeploymentEdit-DVF2IQyP.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Deployments-CBSmbrNF.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Deployments-Nct0ZT2-.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Deployments-CBSmbrNF.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Deployments-Nct0ZT2-.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Event-DyivDqiN.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Event-s2NCahO7.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Event-DyivDqiN.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Event-s2NCahO7.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Events-CpJc7Jcm.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Events-B75QHQxC.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Events-CpJc7Jcm.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Events-B75QHQxC.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Flow-BUcaLFH0.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Flow-BdGGltd_.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Flow-BUcaLFH0.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Flow-BdGGltd_.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/FlowRun-BP2-5rQg.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/FlowRun-CeGaDhI5.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/FlowRun-BP2-5rQg.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/FlowRun-CeGaDhI5.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/FlowRunCreate-CHR7NUrQ.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/FlowRunCreate-BRXqahA7.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/FlowRunCreate-CHR7NUrQ.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/FlowRunCreate-BRXqahA7.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Flows-7dIo6Cxv.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Flows-BKZZDBUm.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Flows-7dIo6Cxv.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Flows-BKZZDBUm.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Runs-6up39KNE.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Runs-ekI9Lfiw.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Runs-6up39KNE.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Runs-ekI9Lfiw.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/RunsPageWithDefaultFilter-BpHg3lPU-B2ixWUwH.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/RunsPageWithDefaultFilter-CtTS9hES-pjnumbRb.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/RunsPageWithDefaultFilter-BpHg3lPU-B2ixWUwH.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/RunsPageWithDefaultFilter-CtTS9hES-pjnumbRb.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Settings-D_1Fo85R.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Settings-DZ8ChiYG.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Settings-D_1Fo85R.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Settings-DZ8ChiYG.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/TaskRun-CmYlYlUb.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/TaskRun-DKj5L_vm.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/TaskRun-CmYlYlUb.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/TaskRun-DKj5L_vm.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Unauthenticated-Bw-ylWxd.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Unauthenticated-BWfwLPWB.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Unauthenticated-Bw-ylWxd.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Unauthenticated-BWfwLPWB.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Variables-CTj8tsYr.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Variables-BxE8wZT9.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/Variables-CTj8tsYr.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/Variables-BxE8wZT9.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPool-Bn_qnZCe.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPool-NWIqN73-.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPool-Bn_qnZCe.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPool-NWIqN73-.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolCreate-Cd79QFhB.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolCreate-D11fHoIJ.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolCreate-Cd79QFhB.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolCreate-D11fHoIJ.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolEdit-DorjaUj7.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolEdit-ByTTjGMI.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolEdit-DorjaUj7.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolEdit-ByTTjGMI.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolQueue-CDIR4Cs7.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolQueue-aX74mZf1.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolQueue-CDIR4Cs7.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolQueue-aX74mZf1.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolQueueCreate-DeAXjZ1m.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolQueueCreate-C-U5KBO8.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolQueueCreate-DeAXjZ1m.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolQueueCreate-C-U5KBO8.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolQueueEdit-C8Ii31Mu.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolQueueEdit-BEwj7tqg.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPoolQueueEdit-C8Ii31Mu.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPoolQueueEdit-BEwj7tqg.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPools-Cq5V5DP4.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPools-Dl0iWqBc.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkPools-Cq5V5DP4.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkPools-Dl0iWqBc.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkQueueToWorkPoolQueueRedirect-AX2VlRL5-WHZKtziO.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkQueueToWorkPoolQueueRedirect-BFuMULzc-DW8yCemh.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/WorkQueueToWorkPoolQueueRedirect-AX2VlRL5-WHZKtziO.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/WorkQueueToWorkPoolQueueRedirect-BFuMULzc-DW8yCemh.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/api-DGOAIix_.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/api-cWEoTY83.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/api-DGOAIix_.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/api-cWEoTY83.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/index-ei-kaitd.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/index-ASKQdhK_.js +5 -5
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/index-ei-kaitd.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/index-ASKQdhK_.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/mapper-BuxGYc8V.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/mapper-C5TGlQYt.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/mapper-BuxGYc8V.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/mapper-C5TGlQYt.js.map +1 -1
- prefect-3.4.9.dev5/src/prefect/server/ui/assets/useCan-DHMBsVej.js +2 -0
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/useCan-BQypyjc7.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/useCan-DHMBsVej.js.map +1 -1
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/usePageTitle-LeBMnqrg.js → prefect-3.4.9.dev5/src/prefect/server/ui/assets/usePageTitle-BasLTVLk.js +2 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/usePageTitle-LeBMnqrg.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/usePageTitle-BasLTVLk.js.map +1 -1
- prefect-3.4.9.dev5/src/prefect/server/ui/assets/usePrefectApi-DbKjxzWx.js +2 -0
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/usePrefectApi-qsKG6mzx.js.map → prefect-3.4.9.dev5/src/prefect/server/ui/assets/usePrefectApi-DbKjxzWx.js.map +1 -1
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/index.html +1 -1
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/leasing.py +6 -4
- prefect-3.4.9.dev5/src/prefect/settings/models/server/concurrency.py +17 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/root.py +5 -0
- prefect-3.4.9.dev3/src/prefect/_build_info.py +0 -5
- prefect-3.4.9.dev3/src/prefect/server/concurrency/lease_storage/__init__.py +0 -31
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/404-CWchuO4q.js +0 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/useCan-BQypyjc7.js +0 -2
- prefect-3.4.9.dev3/src/prefect/server/ui/assets/usePrefectApi-qsKG6mzx.js +0 -2
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/.gitignore +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/LICENSE +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/README.md +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/pyproject.toml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/.prefectignore +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/AGENTS.md +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/__main__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/bundles/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/bundles/execute.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/lineage.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/sla/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/sla/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_experimental/sla/objects.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/_logging.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/compatibility/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/compatibility/async_dispatch.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/compatibility/blocks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/compatibility/deprecated.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/compatibility/migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/api.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/calls.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/cancellation.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/event_loop.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/inspection.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/primitives.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/services.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/threads.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/concurrency/waiters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/integrations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/pydantic/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/pydantic/schemas.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/pydantic/v1_schema.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/pydantic/v2_schema.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/pydantic/v2_validated_func.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/pytz.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/retries.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/schemas/bases.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/schemas/fields.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/schemas/serializers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/schemas/validators.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/uuid7.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_internal/websockets.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_result_records.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_vendor/croniter/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_vendor/croniter/croniter.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_versioning.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/_waiters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/agent.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/artifacts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/assets/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/assets/core.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/assets/materialize.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/automations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/abstract.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/core.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/fields.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/notifications.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/redis.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/system.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/blocks/webhook.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cache_policies.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/_prompts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/_utilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/artifact.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/block.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/cloud/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/cloud/ip_allowlist.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/cloud/webhook.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/concurrency_limit.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/config.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/dashboard.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/deploy.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/dev.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/flow.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/flow_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/global_concurrency_limit.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/profile.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/root.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/server.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/shell.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/task.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/task_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/variable.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/work_pool.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/work_queue.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/cli/worker.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/cloud.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/collections.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/constants.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_artifacts/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_artifacts/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_automations/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_automations/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_blocks_documents/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_blocks_documents/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_blocks_schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_blocks_schemas/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_blocks_types/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_blocks_types/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_concurrency_limits/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_concurrency_limits/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_deployments/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_deployments/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_flow_runs/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_flow_runs/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_flows/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_flows/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_logs/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_logs/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_variables/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_variables/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_work_pools/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/_work_pools/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/orchestration/routes.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/actions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/filters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/objects.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/responses.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/schedules.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/schemas/sorting.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/subscriptions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/types/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/types/flexible_schedule_list.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/client/utilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/_asyncio.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/_events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/asyncio.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/context.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/services.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/sync.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/_asyncio.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/_events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/asyncio.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/context.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/services.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/concurrency/v1/sync.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/context.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/flow_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/azure/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/docker/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/docker-azure/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/docker-gcs/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/docker-git/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/docker-s3/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/gcs/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/git/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/local/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/recipes/s3/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/runner.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/schedules.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/steps/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/steps/core.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/steps/pull.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/steps/utility.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/deployments/templates/prefect.yaml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/docker/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/docker/docker_image.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/engine.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/actions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/cli/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/cli/automations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/clients.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/filters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/related.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/schemas/automations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/schemas/deployment_triggers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/schemas/events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/schemas/labelling.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/utilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/events/worker.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/exceptions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/filesystems.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/flow_engine.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/flow_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/flows.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/futures.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/provisioners/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/provisioners/cloud_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/provisioners/coiled.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/provisioners/container_instance.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/provisioners/ecs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/infrastructure/provisioners/modal.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/input/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/input/actions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/input/run_input.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/locking/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/locking/filesystem.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/locking/memory.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/locking/protocol.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/clients.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/configuration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/filters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/formatters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/handlers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/highlighters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/loggers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/logging/logging.yml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/main.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/plugins.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/py.typed +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/results.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/_observers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/runner.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/server.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/storage.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/submit.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runner/utils.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runtime/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runtime/deployment.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runtime/flow_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/runtime/task_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/schedules.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/serializers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/AGENTS.md +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/admin.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/artifacts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/automations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/block_capabilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/block_documents.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/block_schemas.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/block_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/clients.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/collections.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/collections_data/views/aggregate-worker-metadata.json +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/concurrency_limits.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/csrf_token.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/dependencies.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/flow_run_states.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/flows.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/logs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/middleware.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/root.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/run_history.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/saved_searches.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/server.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/static/prefect-logo-mark-gradient.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/task_run_states.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/task_workers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/templates.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/ui/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/ui/flow_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/ui/flows.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/ui/schemas.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/ui/task_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/validation.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/work_queues.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/api/workers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/collection_blocks_data.json +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/MIGRATION-NOTES.md +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/env.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/script.py.mako +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2021_01_20_122127_25f4b90a7a42_initial_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_13_125213_5f376def75c3_block_data.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_13_125213_679e695af6ba_add_configurations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_17_140821_5bff7878e700_add_agents_and_work_queue.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_19_205543_d9d98a9ebb6f_rename_block_data_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_20_103844_4799f657a6a1_add_block_spec_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_21_111050_d115556a8ab6_index_flowrun_flow_runner_type.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_02_21_150017_b68b3cad6b8a_add_block_spec_id_to_blocks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_03_10_102713_2e7e1428ffce_index_flow_created.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_04_20_113011_605ebb4e9155_add_flow_run_state_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_04_21_095519_14dc68cc5853_backfill_state_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_04_23_132803_d38c5e6a9115_rename_block_to_blockbasis_and_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_05_10_145956_1c9390e2f9c6_replace_version_with_checksum_and_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_05_12_202952_dc7a3c6fd3e9_add_flow_run_alerts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_05_26_135743_724e6dcc6b5d_add_block_schema_capabilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_05_28_081821_2fe6fe6ca16e_adds_block_schema_references_and_block_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_05_30_112549_cdcb4018dd0e_rename_run_alerts_to_run_notifications.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_04_133535_d60c18774a5d_add_indexes_for_partial_name_matches.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_08_121753_3a7c41d3b464_adds_description_and_code_example_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_13_104234_61c76ee09e02_add_anonymous_column_for_block_documents.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_17_204409_d335ad57d5ba_add_block_schema_indexes.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_20_123921_7296741dff68_add_protected_column_for_block_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_21_093732_29ad9bef6147_adds_indexes_for_block_filtering.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_29_135432_813ddf14e2de_add_descriptions_to_deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_06_29_152219_2f46fc3f3beb_remove_name_column_for_notification_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_06_152528_4cdc2ba709a4_migrates_block_schemas_with_new_secrets_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_07_112809_e905fd199258_removes_debugprintnotification_block_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_11_170700_112c68143fc3_add_infrastructure_document_id_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_14_114039_0f27d462bf6d_removing_default_storage_block_document.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_19_160058_bb4dc90d3e29_renames_existing_block_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_21_133134_e085c9cbf8ce_remove_flow_runners.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_21_205820_0cf7311d6ea6_add_crashed_state_type.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_25_214717_4ff2f2bf81f4_adds_block_type_slug.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_25_233637_add97ce1937d_update_deployments_to_include_more_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_07_29_181713_fa985d474982_add_index_to_flow_run_infrastructure_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_08_01_211251_97e212ea6545_add_deployment_version.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_08_06_145817_60e428f92a75_expand_deployment_schema_for_improved_ux.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_08_07_134410_77eb737fc759_add_work_queue_name_to_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_08_07_154550_7737221bf8a4_fix_concurrency_limit_tag_index_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_08_18_102804_2d5e000696f1_adds_block_schema_version.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_10_12_102048_22b7cb02e593_add_state_timestamp.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_10_14_172612_ad4b1b4d1e9d_index_deployment_created.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_10_19_093902_6d548701edef_add_created_by.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_10_19_165110_8ea825da948d_track_retries_restarts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_10_20_101423_3ced59d8806b_add_last_polled.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_10_31_161719_41e5ed9e1034_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_11_05_180555_54c1876c68ae_add_index_for_scheduled_deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_11_10_171740_8caf7c1fd82c_add_coalesced_start_time_indices.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_11_18_161056_5d526270ddb4_add_flowrun_infrastructure_pid.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_11_23_092449_5e4f924ff96c_add_paused_state_type.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2022_11_24_143620_f7587d6c5776_add_worker_tables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_08_180142_d481d5058a19_rename_worker_pools_to_work_pools.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_25_164028_9326a6aee18b_add_cancelling_to_state_type_enum.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_26_045500_2882cd2df463_implement_artifact_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_26_045501_2882cd2df464_create_migration_index.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_26_045501_2882cd2df465_migrate_artifact_data.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_26_045502_2882cd2df466_cleanup_artifact_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_26_152801_0a1250a5aa25_expand_work_queue_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_31_110543_f98ae6d8e2cc_work_queue_data_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_01_31_133052_2a88656f4a23_clean_up_work_queue_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_02_08_151958_cfdfec5d7557_remove_artifact_fk.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_03_01_154651_7d918a392297_remove_flowrun_deployment_fk.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_03_15_153039_4a1a0e4f89de_add_artifact_description_col.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_03_20_175243_aa84ac237ce8_remove_artifact_uq.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_03_20_185238_d20618ce678e_add_artifact_collection_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_03_20_185610_46bd82c6279a_add_index_on_artifact.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_04_04_132534_3bf47e3ce2dd_add_index_on_log.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_04_04_172310_6a1eb3d442e4_add_cols_to_artifact_collection.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_04_05_130406_43c94d4c7aa3_add_pull_steps_column_to_deployment.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_04_05_134520_310dda75f561_add_variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_04_06_122716_15f5083c16bd_migrate_artifact_data.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_08_02_133838_5f623ddbf7fe_create_concurrency_limit_v2_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_09_06_085747_50f8c182c3ca_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_09_20_134544_db0eb3973a54_adds_enforce_parameter_schema_column_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_09_21_130125_4e9a6f93eb6c_make_slot_decay_per_second_not_nullable.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_09_25_121806_05ea6f882b1d_remove_flow_run_id_requirement_from_task_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_10_12_224511_bfe653bbf62e_add_last_polled_to_deployment.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_10_30_075026_cef24af2ec34_add_block_type_name_to_block_document.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_11_20_084708_9c493c02ca6d_add_trgm_index_to_block_document_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_12_07_095320_733ca1903976_create_flow_run_input_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2023_12_07_121416_7c453555d3a5_make_flowruninput_flow_run_id_a_foreign_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_01_05_101034_6b63c51c31b4_add_sender_to_flowruninput.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_01_22_120615_8cf4d4933848_create_deployment_schedule_and_add_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_03_05_122228_121699507574_add_job_variables_column_to_flow_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_03_13_111215_7a653837d9ba_create_csrf_token_toble.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_03_112409_aeea5ee6f070_automations_models.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_04_094418_bd6efa529f03_add_deployment_version_to_flow_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_09_125658_916718e8330f_automation_event_follower.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_09_132036_954db7517015_trigger_in_index.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_10_194742_15768c2ec702_add_events_and_event_resources_tables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_23_094748_7ae9e431e67a_work_status_fields.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_04_25_155240_8905262ec07f_worker_status_field.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_05_01_105401_b23c83a12cb4_add_catchup_fields_to_deploymentschedule.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_05_21_101457_94622c1663e8_json_variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_07_15_145240_7495a5013e7e_adding_scope_to_followers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_08_14_150111_97429116795e_add_deployment_concurrency_limit.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_09_11_090317_555ed31b284d_add_concurrency_options.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_09_16_152051_eaec5004771f_add_deployment_to_global_concurrency_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_11_15_150706_68a44144428d_add_labels_column_to_flow_flowrun_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2024_12_04_165333_5d03c01be85e_sync_orm_models_and_migrations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_02_03_125146_c163acd7e8e3_add_parameters_column_to_deployment_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_02_05_152418_a03d00b8e275_add_slug_column_to_deployment_schedule.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_03_19_143502_b5f5644500d2_add_storage_configuration_to_work_pool.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_03_19_145033_06b7c293bc69_create_new_deployment_version_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_04_04_092158_7a73514ca2d6_add_ix_events__event_related_occurred_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_04_29_112902_4160a4841eed_remove_flow_run_notifications.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_05_04_193249_1c9bb7f78263_add_scope_leader_idx_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_06_12_144500_add_automation_tags_aa1234567890.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/postgresql/2025_06_13_160644_3b86c5ea017a_drop_task_run_state_id_foreign_key_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_01_20_115236_9725c1cbee35_initial_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_04_093838_619bea85701a_block_data.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_15_211737_28ae48128c75_add_configurations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_17_151416_7c91cb86dc4e_add_agents_and_work_queues.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_19_210255_4c4a6a138053_rename_block_data_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_20_103610_e1ff4973a9eb_add_block_spec_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_21_111238_f327e877e423_index_flowrun_flow_runner_type.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_02_21_145916_c8ff35f94028_add_block_spec_id_to_blocks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_03_10_102500_71a57ec351d1_index_flow_created.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_04_19_181604_7f5f335cace3_add_flow_run_state_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_04_21_113057_db6bde582447_backfill_state_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_04_23_114831_fd966d4ad99c_rename_block_to_blockbasis_and_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_04_25_135207_b75d279ba985_replace_version_with_checksum.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_05_12_203158_888a0bb0df7b_add_flow_run_alerts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_05_19_165808_33439667aeea_add_block_schema_capabilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_05_28_081650_e73c6f1fe752_adds_block_schema_referecnes_and_block_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_05_30_100855_d76326ed0d06_rename_run_alerts_to_run_notifications.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_04_104048_f65b6ad0b869_add_indexes_for_partial_name_matches.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_08_121702_84892301571a_adds_description_and_code_example_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_13_103943_2d900af9cd07_add_anonymous_column_for_block_documents.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_17_204530_9e2a1c08c6f1_add_block_schema_indexes.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_20_123823_dff8da7a6c2c_add_protected_column_for_block_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_21_093640_a205b458d997_adds_indexes_for_block_filtering.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_29_133432_3bd87ecdac38_add_descriptions_to_deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_06_29_151832_42762c37b7bc_remove_name_column_for_notification_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_06_142824_e2dae764a603_migrates_block_schemas_with_new_secrets_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_07_111208_061c7e518b40_removes_debugprintnotification_block_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_11_113314_638cbcc2a158_add_infrastructure_block_id_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_14_113138_56be24fdb383_removing_default_storage_block_document.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_19_153432_628a873f0d1a_renames_existing_block_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_20_113451_2fe8ef6a6514_remove_flow_runners.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_25_142515_f335f9633eec_adds_block_type_slug.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_25_151028_88c2112b668f_update_deployments_to_include_more_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_07_29_181111_905134444e17_add_index_to_flow_run_infrastructure_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_08_01_211039_24bb2e4a195c_add_deployment_version.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_08_06_130009_296e2665785f_expand_deployment_schema_for_improved_ux.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_08_07_134138_575634b7acd4_add_work_queue_name_to_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_08_07_154319_53c19b31aa09_fix_name_on_concurrency_limit_tag_idx.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_08_18_102527_e757138e954a_adds_block_schema_version.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_10_12_102048_22b7cb02e593_add_state_timestamp.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_10_14_172612_ad4b1b4d1e9d_index_deployment_created.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_10_19_093542_fa319f214160_add_created_by.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_10_19_155810_af52717cf201_track_retries_restarts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_10_20_101423_3ced59d8806b_add_last_polled.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_11_05_180619_a0284438370e_add_index_for_scheduled_deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_11_10_165921_4f90ad6349bd_add_coalesced_start_time_indices.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_11_18_161332_7201de756d85_add_flowrun_infrastructure_pid.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2022_11_24_143302_fe77ad0dda06_add_worker_tables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_08_175327_bb38729c471a_rename_worker_pools_to_work_pools.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_12_000042_f92143d30c24_implement_artifact_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_12_000043_f92143d30c25_create_migration_index.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_12_000043_f92143d30c26_migrate_artifact_data.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_12_000044_f92143d30c27_cleanup_artifact_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_25_114348_b9bda9f142f1_expand_work_queue_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_31_105442_1678f2fb8b33_work_queue_data_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_01_31_132409_bfe42b7090d6_clean_up_work_queue_migration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_02_08_152028_8d148e44e669_remove_artifact_fk.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_03_01_165551_f3df94dca3cc_remove_flowrun_deployment_fk.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_03_15_123850_cf1159bd0d3c_add_artifact_description_col.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_03_20_153925_1d7441c031d0_remove_uq_from_artifact_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_03_20_184534_b9aafc3ab936_add_artifact_collection_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_03_20_194204_422f8ba9541d_add_artifact_idx.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_04_04_115150_553920ec20e9_add_index_on_log.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_04_04_172555_3e1eb8281d5e_add_cols_to_artifact_collection.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_04_05_120713_340f457b315f_add_column_to_deployments_for_pull_steps.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_04_05_134301_3d46e23593d6_add_variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_04_06_122659_2dbcec43c857_migrate_artifact_data.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_08_02_113813_5b0bd3b41a23_create_concurrency_limit_v2_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_09_06_084729_c2d001b7dd06_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_09_20_134145_ef674d598dd3_adds_enforce_parameter_schema_column_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_09_21_121806_8167af8df781_make_slot_decay_per_second_not_nullable.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_09_25_121806_8167af8df781_remove_flow_run_id_requirement_from_task_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_10_12_175815_f3165ae0a213_add_last_polled_to_deployment.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_10_30_075026_cef24af2ec34_add_block_type_name_to_block_document.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_10_30_103720_22ef3915ccd8_index_and_backfill_block_type_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_11_20_084708_9c493c02ca6d_add_trgm_index_to_block_document_name.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_12_07_095112_a299308852a7_create_flow_run_input_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2023_12_07_121624_35659cc49969_make_flowruninput_flow_run_id_a_foreign_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_01_05_101041_c63a0a6dc787_add_sender_to_flowruninput.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_01_22_120214_265eb1a2da4c_create_deployment_schedule_and_add_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_03_05_115258_342220764f0b_add_job_variables_column_to_flow_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_03_13_111316_bacc60edce16_create_csrf_token_toble.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_03_111618_07ed05dfd4ec_automations_models.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_04_114538_8644a9595a08_add_deployment_version_to_flow_run.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_09_125712_cc510aec4689_automation_event_follower.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_09_131832_2b6c2b548f95_trigger_in_index.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_10_104304_824e9edafa60_adds_events_tables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_23_094701_75c8f17b8b51_work_status_fields.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_04_25_155120_a8e62d4c72cf_worker_status_field.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_05_01_103824_20fbd53b3cef_add_catchup_fields_to_deploymentschedule.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_05_21_123101_2ac65f1758c2_json_variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_07_15_145350_354f1ede7e9f_adding_scope_to_followers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_08_14_145052_f93e1439f022_add_deployment_concurrency_limit.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_09_11_090106_7d6350aea855_add_concurrency_options.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_09_16_162719_4ad4658cbefe_add_deployment_to_global_concurrency_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_11_15_151042_5952a5498b51_add_labels_column_to_flow_flowrun_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2024_12_04_144924_a49711513ad4_sync_orm_models_and_migrations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_02_03_125228_67f886da208e_add_parameters_column_to_deployment_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_02_05_152431_07ecde74d74d_add_slug_column_to_deployment_schedule.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_03_19_142603_3457c6ca2360_add_storage_configuration_to_work_pool.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_03_19_145018_bbca16f6f218_create_new_deployment_version_table.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_04_28_133722_7655f31c5157_remove_flow_run_notifications.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_05_04_193544_3c841a1800a1_add_scope_leader_idx_to_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_06_12_144500_add_automation_tags_bb2345678901.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/_migrations/versions/sqlite/2025_06_13_164506_8bb517bae6f9_drop_task_run_state_id_foreign_key_.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/alembic.ini +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/alembic_commands.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/configurations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/dependencies.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/interface.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/orm_models.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/query_components.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/sql/postgres/get-runs-from-worker-queues.sql.jinja +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/database/sql/sqlite/get-runs-from-worker-queues.sql.jinja +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/actions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/clients.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/counting.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/filters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/jinja_filters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/messaging.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/models/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/models/automations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/models/composite_trigger_child_firing.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/ordering.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/pipeline.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/schemas/automations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/schemas/events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/schemas/labelling.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/services/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/services/actions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/services/event_logger.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/services/event_persister.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/services/triggers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/storage/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/storage/database.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/stream.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/events/triggers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/exceptions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/logs/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/logs/messaging.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/logs/stream.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/artifacts.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/block_documents.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/block_registration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/block_schemas.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/block_types.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/concurrency_limits.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/concurrency_limits_v2.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/configuration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/csrf_token.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/flow_run_input.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/flow_run_states.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/flows.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/saved_searches.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/task_run_states.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/task_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/task_workers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/work_queues.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/models/workers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/core_policy.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/dependencies.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/global_policy.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/instrumentation_policies.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/policies.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/orchestration/rules.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/actions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/core.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/filters.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/graph.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/internal.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/responses.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/schedules.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/sorting.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/states.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/statuses.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/schemas/ui.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/cancellation_cleanup.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/foreman.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/late_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/pause_expirations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/scheduler.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/task_run_recorder.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/services/telemetry.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/task_queue.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/AppRouterView-jW8a5PTn.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Artifact-CRjdjQ-g.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/AutomationWizard-Blh7nUVF.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Automations-kevE_7lB.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/ConcurrencyLimits-BepjUWPD.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Dashboard-jojjFjuH.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Deployment-BXCR3zS7.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Events-DwBr0OvW.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Flow-B5bcVf8c.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/FlowRun-CrGsvBik.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Runs-DWzLEJoO.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/Settings-DTjaFxCR.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/TaskRun-CqNaY9YA.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/WorkPool-BtM-yFpt.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/WorkPoolQueue-CHGh2RsG.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/_commonjsHelpers-Cpj98o6Y.js +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/_commonjsHelpers-Cpj98o6Y.js.map +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/index-B4HswuBc.js +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/index-B4HswuBc.js.map +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/assets/index-BUa-2fbu.css +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/decorative_iso-pixel-grid_dark.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/decorative_iso-pixel-grid_light.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/android-chrome-192x192.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/android-chrome-512x512.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/apple-touch-icon.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/browserconfig.xml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/cancelled.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/completed.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/crashed.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/failed.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/favicon-16x16-dark.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/favicon-16x16.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/favicon-32x32-dark.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/favicon-32x32.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/favicon-dark.ico +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/favicon.ico +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/mstile-150x150.png +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/pending.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/running.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/safari-pinned-tab.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/scheduled.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/ico/site.webmanifest +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/marketing-banner-bg-dark.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/marketing-banner-bg-light.svg +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/ui/robots.txt +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/database.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/encryption.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/http.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/messaging/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/messaging/_consumer_names.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/messaging/memory.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/names.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/postgres_listener.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/schemas/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/schemas/bases.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/schemas/serializers.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/server.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/subscriptions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/server/utilities/user_templates.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/constants.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/context.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/legacy.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/_defaults.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/api.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/cli.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/client.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/cloud.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/experiments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/flows.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/internal.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/logging.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/results.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/root.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/runner.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/api.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/database.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/deployments.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/ephemeral.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/events.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/flow_run_graph.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/logs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/services.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/tasks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/server/ui.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/tasks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/testing.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/models/worker.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/profiles.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/profiles.toml +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/settings/sources.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/states.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/task_engine.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/task_runners.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/task_runs.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/task_worker.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/tasks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/bootstrap.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/instrumentation.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/logging.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/processors.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/run_telemetry.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/telemetry/services.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/cli.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/docker.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/fixtures.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/standard_test_suites/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/standard_test_suites/blocks.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/testing/utilities.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/transactions.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/types/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/types/_datetime.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/types/entrypoint.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/types/names.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/_ast.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/_deprecated.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/_engine.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/_git.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/annotations.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/asyncutils.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/callables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/collections.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/compat.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/context.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/dispatch.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/dockerutils.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/engine.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/filesystem.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/generics.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/hashing.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/importtools.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/math.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/names.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/processutils.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/pydantic.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/render_swagger.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/schema_tools/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/schema_tools/hydration.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/schema_tools/validation.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/services.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/slugify.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/templating.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/text.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/timeout.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/urls.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/utilities/visualization.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/variables.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/__init__.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/base.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/block.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/cloud.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/process.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/server.py +0 -0
- {prefect-3.4.9.dev3 → prefect-3.4.9.dev5}/src/prefect/workers/utilities.py +0 -0
|
@@ -873,6 +873,16 @@ async def run(
|
|
|
873
873
|
f"deployment: {listrepr(unknown_keys, sep=', ')}"
|
|
874
874
|
f"\n{available_parameters}"
|
|
875
875
|
)
|
|
876
|
+
templating_parameters = {**(deployment.parameters or {}), **(parameters or {})}
|
|
877
|
+
if flow_run_name:
|
|
878
|
+
try:
|
|
879
|
+
flow_run_name = flow_run_name.format(**templating_parameters)
|
|
880
|
+
except KeyError as e:
|
|
881
|
+
exit_with_error(
|
|
882
|
+
f"Missing parameter for flow run name: '{e.args[0]}' is undefined"
|
|
883
|
+
)
|
|
884
|
+
except Exception as e:
|
|
885
|
+
exit_with_error(f"Failed to format flow run name: {e}")
|
|
876
886
|
|
|
877
887
|
app.console.print(
|
|
878
888
|
f"Creating flow run for deployment '{flow.name}/{deployment.name}'...",
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
from datetime import timedelta
|
|
1
2
|
from typing import List, Literal, Optional, Union
|
|
2
3
|
from uuid import UUID
|
|
3
4
|
|
|
4
5
|
from fastapi import Body, Depends, HTTPException, Path, status
|
|
6
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
5
7
|
|
|
6
8
|
import prefect.server.models as models
|
|
7
9
|
import prefect.server.schemas as schemas
|
|
8
10
|
from prefect.server.api.dependencies import LimitBody
|
|
11
|
+
from prefect.server.concurrency.lease_storage import (
|
|
12
|
+
ConcurrencyLimitLeaseMetadata,
|
|
13
|
+
get_concurrency_lease_storage,
|
|
14
|
+
)
|
|
9
15
|
from prefect.server.database import PrefectDBInterface, provide_database_interface
|
|
10
16
|
from prefect.server.schemas import actions
|
|
11
17
|
from prefect.server.utilities.schemas import PrefectBaseModel
|
|
@@ -151,6 +157,97 @@ class MinimalConcurrencyLimitResponse(PrefectBaseModel):
|
|
|
151
157
|
limit: int
|
|
152
158
|
|
|
153
159
|
|
|
160
|
+
class ConcurrencyLimitWithLeaseResponse(PrefectBaseModel):
|
|
161
|
+
lease_id: UUID
|
|
162
|
+
limits: list[MinimalConcurrencyLimitResponse]
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
async def _acquire_concurrency_slots(
|
|
166
|
+
session: AsyncSession,
|
|
167
|
+
names: List[str],
|
|
168
|
+
slots: int,
|
|
169
|
+
mode: Literal["concurrency", "rate_limit"],
|
|
170
|
+
) -> tuple[list[schemas.core.ConcurrencyLimitV2], bool]:
|
|
171
|
+
limits = [
|
|
172
|
+
schemas.core.ConcurrencyLimitV2.model_validate(limit)
|
|
173
|
+
for limit in (
|
|
174
|
+
await models.concurrency_limits_v2.bulk_read_concurrency_limits(
|
|
175
|
+
session=session, names=names
|
|
176
|
+
)
|
|
177
|
+
)
|
|
178
|
+
]
|
|
179
|
+
|
|
180
|
+
active_limits = [limit for limit in limits if bool(limit.active)]
|
|
181
|
+
|
|
182
|
+
if any(limit.limit < slots for limit in active_limits):
|
|
183
|
+
raise HTTPException(
|
|
184
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
185
|
+
detail="Slots requested is greater than the limit",
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
non_decaying = [
|
|
189
|
+
str(limit.name) for limit in active_limits if limit.slot_decay_per_second == 0.0
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
if mode == "rate_limit" and non_decaying:
|
|
193
|
+
raise HTTPException(
|
|
194
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
195
|
+
detail=(
|
|
196
|
+
"Only concurrency limits with slot decay can be used for "
|
|
197
|
+
"rate limiting. The following limits do not have a decay "
|
|
198
|
+
f"configured: {','.join(non_decaying)!r}"
|
|
199
|
+
),
|
|
200
|
+
)
|
|
201
|
+
acquired = await models.concurrency_limits_v2.bulk_increment_active_slots(
|
|
202
|
+
session=session,
|
|
203
|
+
concurrency_limit_ids=[limit.id for limit in active_limits],
|
|
204
|
+
slots=slots,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
if not acquired:
|
|
208
|
+
await session.rollback()
|
|
209
|
+
|
|
210
|
+
return limits, acquired
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
async def _generate_concurrency_locked_response(
|
|
214
|
+
session: AsyncSession,
|
|
215
|
+
limits: list[schemas.core.ConcurrencyLimitV2],
|
|
216
|
+
slots: int,
|
|
217
|
+
) -> HTTPException:
|
|
218
|
+
active_limits = [limit for limit in limits if bool(limit.active)]
|
|
219
|
+
|
|
220
|
+
await models.concurrency_limits_v2.bulk_update_denied_slots(
|
|
221
|
+
session=session,
|
|
222
|
+
concurrency_limit_ids=[limit.id for limit in active_limits],
|
|
223
|
+
slots=slots,
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
def num_blocking_slots(limit: schemas.core.ConcurrencyLimitV2) -> float:
|
|
227
|
+
if limit.slot_decay_per_second > 0:
|
|
228
|
+
return slots + limit.denied_slots
|
|
229
|
+
else:
|
|
230
|
+
return (slots + limit.denied_slots) / limit.limit
|
|
231
|
+
|
|
232
|
+
blocking_limit = max((limit for limit in active_limits), key=num_blocking_slots)
|
|
233
|
+
blocking_slots = num_blocking_slots(blocking_limit)
|
|
234
|
+
|
|
235
|
+
wait_time_per_slot = (
|
|
236
|
+
blocking_limit.avg_slot_occupancy_seconds
|
|
237
|
+
if blocking_limit.slot_decay_per_second == 0.0
|
|
238
|
+
else (1.0 / blocking_limit.slot_decay_per_second)
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
retry_after = wait_time_per_slot * blocking_slots
|
|
242
|
+
|
|
243
|
+
return HTTPException(
|
|
244
|
+
status_code=status.HTTP_423_LOCKED,
|
|
245
|
+
headers={
|
|
246
|
+
"Retry-After": str(retry_after),
|
|
247
|
+
},
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
|
|
154
251
|
@router.post("/increment", status_code=status.HTTP_200_OK)
|
|
155
252
|
async def bulk_increment_active_slots(
|
|
156
253
|
slots: int = Body(..., gt=0),
|
|
@@ -163,86 +260,75 @@ async def bulk_increment_active_slots(
|
|
|
163
260
|
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
164
261
|
) -> List[MinimalConcurrencyLimitResponse]:
|
|
165
262
|
async with db.session_context(begin_transaction=True) as session:
|
|
166
|
-
|
|
167
|
-
schemas.core.ConcurrencyLimitV2.model_validate(limit)
|
|
168
|
-
for limit in (
|
|
169
|
-
await models.concurrency_limits_v2.bulk_read_concurrency_limits(
|
|
170
|
-
session=session, names=names
|
|
171
|
-
)
|
|
172
|
-
)
|
|
173
|
-
]
|
|
174
|
-
|
|
175
|
-
active_limits = [limit for limit in limits if bool(limit.active)]
|
|
176
|
-
|
|
177
|
-
if any(limit.limit < slots for limit in active_limits):
|
|
178
|
-
raise HTTPException(
|
|
179
|
-
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
180
|
-
detail="Slots requested is greater than the limit",
|
|
181
|
-
)
|
|
182
|
-
|
|
183
|
-
non_decaying = [
|
|
184
|
-
str(limit.name)
|
|
185
|
-
for limit in active_limits
|
|
186
|
-
if limit.slot_decay_per_second == 0.0
|
|
187
|
-
]
|
|
188
|
-
|
|
189
|
-
if mode == "rate_limit" and non_decaying:
|
|
190
|
-
raise HTTPException(
|
|
191
|
-
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
192
|
-
detail=(
|
|
193
|
-
"Only concurrency limits with slot decay can be used for "
|
|
194
|
-
"rate limiting. The following limits do not have a decay "
|
|
195
|
-
f"configured: {','.join(non_decaying)!r}"
|
|
196
|
-
),
|
|
197
|
-
)
|
|
198
|
-
acquired = await models.concurrency_limits_v2.bulk_increment_active_slots(
|
|
263
|
+
acquired_limits, acquired = await _acquire_concurrency_slots(
|
|
199
264
|
session=session,
|
|
200
|
-
|
|
265
|
+
names=names,
|
|
201
266
|
slots=slots,
|
|
267
|
+
mode=mode,
|
|
202
268
|
)
|
|
203
269
|
|
|
204
|
-
if not acquired:
|
|
205
|
-
await session.rollback()
|
|
206
|
-
|
|
207
270
|
if acquired:
|
|
208
271
|
return [
|
|
209
272
|
MinimalConcurrencyLimitResponse(
|
|
210
273
|
id=limit.id, name=str(limit.name), limit=limit.limit
|
|
211
274
|
)
|
|
212
|
-
for limit in
|
|
275
|
+
for limit in acquired_limits
|
|
213
276
|
]
|
|
214
277
|
else:
|
|
215
278
|
async with db.session_context(begin_transaction=True) as session:
|
|
216
|
-
await
|
|
279
|
+
raise await _generate_concurrency_locked_response(
|
|
217
280
|
session=session,
|
|
218
|
-
|
|
281
|
+
limits=acquired_limits,
|
|
219
282
|
slots=slots,
|
|
220
283
|
)
|
|
221
284
|
|
|
222
|
-
def num_blocking_slots(limit: schemas.core.ConcurrencyLimitV2) -> float:
|
|
223
|
-
if limit.slot_decay_per_second > 0.0:
|
|
224
|
-
return slots + limit.denied_slots
|
|
225
|
-
else:
|
|
226
|
-
return (slots + limit.denied_slots) / limit.limit
|
|
227
285
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
286
|
+
@router.post("/increment-with-lease", status_code=status.HTTP_200_OK)
|
|
287
|
+
async def bulk_increment_active_slots_with_lease(
|
|
288
|
+
slots: int = Body(..., gt=0),
|
|
289
|
+
names: List[str] = Body(..., min_items=1),
|
|
290
|
+
mode: Literal["concurrency", "rate_limit"] = Body("concurrency"),
|
|
291
|
+
lease_duration: float = Body(
|
|
292
|
+
300, # 5 minutes
|
|
293
|
+
ge=60, # 1 minute
|
|
294
|
+
le=60 * 60 * 24, # 1 day
|
|
295
|
+
description="The duration of the lease in seconds.",
|
|
296
|
+
),
|
|
297
|
+
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
298
|
+
) -> ConcurrencyLimitWithLeaseResponse:
|
|
299
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
300
|
+
acquired_limits, acquired = await _acquire_concurrency_slots(
|
|
301
|
+
session=session,
|
|
302
|
+
names=names,
|
|
303
|
+
slots=slots,
|
|
304
|
+
mode=mode,
|
|
235
305
|
)
|
|
236
306
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
307
|
+
if acquired:
|
|
308
|
+
lease_storage = get_concurrency_lease_storage()
|
|
309
|
+
lease = await lease_storage.create_lease(
|
|
310
|
+
resource_ids=[limit.id for limit in acquired_limits],
|
|
311
|
+
ttl=timedelta(seconds=lease_duration),
|
|
312
|
+
metadata=ConcurrencyLimitLeaseMetadata(slots=slots),
|
|
313
|
+
)
|
|
314
|
+
return ConcurrencyLimitWithLeaseResponse(
|
|
315
|
+
lease_id=lease.id,
|
|
316
|
+
limits=[
|
|
317
|
+
MinimalConcurrencyLimitResponse(
|
|
318
|
+
id=limit.id, name=str(limit.name), limit=limit.limit
|
|
319
|
+
)
|
|
320
|
+
for limit in acquired_limits
|
|
321
|
+
],
|
|
244
322
|
)
|
|
245
323
|
|
|
324
|
+
else:
|
|
325
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
326
|
+
raise await _generate_concurrency_locked_response(
|
|
327
|
+
session=session,
|
|
328
|
+
limits=acquired_limits,
|
|
329
|
+
slots=slots,
|
|
330
|
+
)
|
|
331
|
+
|
|
246
332
|
|
|
247
333
|
@router.post("/decrement", status_code=status.HTTP_200_OK)
|
|
248
334
|
async def bulk_decrement_active_slots(
|
|
@@ -276,3 +362,51 @@ async def bulk_decrement_active_slots(
|
|
|
276
362
|
)
|
|
277
363
|
for limit in limits
|
|
278
364
|
]
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
@router.post("/decrement-with-lease", status_code=status.HTTP_204_NO_CONTENT)
|
|
368
|
+
async def bulk_decrement_active_slots_with_lease(
|
|
369
|
+
lease_id: UUID = Body(
|
|
370
|
+
...,
|
|
371
|
+
description="The ID of the lease corresponding to the concurrency limits to decrement.",
|
|
372
|
+
),
|
|
373
|
+
occupancy_seconds: Optional[float] = Body(None, gt=0.0),
|
|
374
|
+
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
375
|
+
) -> None:
|
|
376
|
+
lease_storage = get_concurrency_lease_storage()
|
|
377
|
+
lease = await lease_storage.read_lease(lease_id)
|
|
378
|
+
if not lease:
|
|
379
|
+
return
|
|
380
|
+
|
|
381
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
382
|
+
await models.concurrency_limits_v2.bulk_decrement_active_slots(
|
|
383
|
+
session=session,
|
|
384
|
+
concurrency_limit_ids=lease.resource_ids,
|
|
385
|
+
slots=lease.metadata.slots if lease.metadata else 0,
|
|
386
|
+
occupancy_seconds=occupancy_seconds,
|
|
387
|
+
)
|
|
388
|
+
await lease_storage.revoke_lease(lease_id)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
@router.post("/leases/{lease_id}/renew", status_code=status.HTTP_204_NO_CONTENT)
|
|
392
|
+
async def renew_concurrency_lease(
|
|
393
|
+
lease_id: UUID = Path(..., description="The ID of the lease to renew"),
|
|
394
|
+
lease_duration: float = Body(
|
|
395
|
+
300, # 5 minutes
|
|
396
|
+
ge=60, # 1 minute
|
|
397
|
+
le=60 * 60 * 24, # 1 day
|
|
398
|
+
description="The duration of the lease in seconds.",
|
|
399
|
+
embed=True,
|
|
400
|
+
),
|
|
401
|
+
) -> None:
|
|
402
|
+
lease_storage = get_concurrency_lease_storage()
|
|
403
|
+
lease = await lease_storage.read_lease(lease_id)
|
|
404
|
+
if not lease:
|
|
405
|
+
raise HTTPException(
|
|
406
|
+
status_code=status.HTTP_404_NOT_FOUND, detail="Lease not found"
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
await lease_storage.renew_lease(
|
|
410
|
+
lease_id=lease_id,
|
|
411
|
+
ttl=timedelta(seconds=lease_duration),
|
|
412
|
+
)
|
|
@@ -11,6 +11,7 @@ from uuid import UUID
|
|
|
11
11
|
import orjson
|
|
12
12
|
import sqlalchemy as sa
|
|
13
13
|
from fastapi import (
|
|
14
|
+
BackgroundTasks,
|
|
14
15
|
Body,
|
|
15
16
|
Depends,
|
|
16
17
|
HTTPException,
|
|
@@ -570,6 +571,7 @@ async def read_flow_runs(
|
|
|
570
571
|
|
|
571
572
|
@router.delete("/{id:uuid}", status_code=status.HTTP_204_NO_CONTENT)
|
|
572
573
|
async def delete_flow_run(
|
|
574
|
+
background_tasks: BackgroundTasks,
|
|
573
575
|
flow_run_id: UUID = Path(..., description="The flow run id", alias="id"),
|
|
574
576
|
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
575
577
|
) -> None:
|
|
@@ -584,6 +586,17 @@ async def delete_flow_run(
|
|
|
584
586
|
raise HTTPException(
|
|
585
587
|
status_code=status.HTTP_404_NOT_FOUND, detail="Flow run not found"
|
|
586
588
|
)
|
|
589
|
+
background_tasks.add_task(delete_flow_run_logs, db, flow_run_id)
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
async def delete_flow_run_logs(db: PrefectDBInterface, flow_run_id: UUID) -> None:
|
|
593
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
594
|
+
await models.logs.delete_logs(
|
|
595
|
+
session=session,
|
|
596
|
+
log_filter=schemas.filters.LogFilter(
|
|
597
|
+
flow_run_id=schemas.filters.LogFilterFlowRunId(any_=[flow_run_id])
|
|
598
|
+
),
|
|
599
|
+
)
|
|
587
600
|
|
|
588
601
|
|
|
589
602
|
@router.post("/{id:uuid}/set_state")
|
|
@@ -8,6 +8,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
|
|
8
8
|
from uuid import UUID
|
|
9
9
|
|
|
10
10
|
from fastapi import (
|
|
11
|
+
BackgroundTasks,
|
|
11
12
|
Body,
|
|
12
13
|
Depends,
|
|
13
14
|
HTTPException,
|
|
@@ -267,6 +268,7 @@ async def paginate_task_runs(
|
|
|
267
268
|
|
|
268
269
|
@router.delete("/{id:uuid}", status_code=status.HTTP_204_NO_CONTENT)
|
|
269
270
|
async def delete_task_run(
|
|
271
|
+
background_tasks: BackgroundTasks,
|
|
270
272
|
task_run_id: UUID = Path(..., description="The task run id", alias="id"),
|
|
271
273
|
db: PrefectDBInterface = Depends(provide_database_interface),
|
|
272
274
|
) -> None:
|
|
@@ -279,6 +281,17 @@ async def delete_task_run(
|
|
|
279
281
|
)
|
|
280
282
|
if not result:
|
|
281
283
|
raise HTTPException(status.HTTP_404_NOT_FOUND, detail="Task not found")
|
|
284
|
+
background_tasks.add_task(delete_task_run_logs, db, task_run_id)
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
async def delete_task_run_logs(db: PrefectDBInterface, task_run_id: UUID) -> None:
|
|
288
|
+
async with db.session_context(begin_transaction=True) as session:
|
|
289
|
+
await models.logs.delete_logs(
|
|
290
|
+
session=session,
|
|
291
|
+
log_filter=schemas.filters.LogFilter(
|
|
292
|
+
task_run_id=schemas.filters.LogFilterTaskRunId(any_=[task_run_id])
|
|
293
|
+
),
|
|
294
|
+
)
|
|
282
295
|
|
|
283
296
|
|
|
284
297
|
@router.post("/{id:uuid}/set_state")
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from datetime import timedelta
|
|
5
|
+
import importlib
|
|
6
|
+
from typing import Protocol, runtime_checkable
|
|
7
|
+
from uuid import UUID
|
|
8
|
+
|
|
9
|
+
from prefect.server.utilities.leasing import LeaseStorage, ResourceLease
|
|
10
|
+
from prefect.settings.context import get_current_settings
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@runtime_checkable
|
|
14
|
+
class ConcurrencyLeaseStorageModule(Protocol):
|
|
15
|
+
ConcurrencyLeaseStorage: type[ConcurrencyLeaseStorage]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@dataclass
|
|
19
|
+
class ConcurrencyLimitLeaseMetadata:
|
|
20
|
+
slots: int
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ConcurrencyLeaseStorage(LeaseStorage[ConcurrencyLimitLeaseMetadata]):
|
|
24
|
+
async def create_lease(
|
|
25
|
+
self,
|
|
26
|
+
resource_ids: list[UUID],
|
|
27
|
+
ttl: timedelta,
|
|
28
|
+
metadata: ConcurrencyLimitLeaseMetadata | None = None,
|
|
29
|
+
) -> ResourceLease[ConcurrencyLimitLeaseMetadata]: ...
|
|
30
|
+
|
|
31
|
+
async def read_lease(
|
|
32
|
+
self, lease_id: UUID
|
|
33
|
+
) -> ResourceLease[ConcurrencyLimitLeaseMetadata] | None: ...
|
|
34
|
+
|
|
35
|
+
async def renew_lease(self, lease_id: UUID, ttl: timedelta) -> None: ...
|
|
36
|
+
|
|
37
|
+
async def revoke_lease(self, lease_id: UUID) -> None: ...
|
|
38
|
+
|
|
39
|
+
async def read_expired_lease_ids(self, limit: int = 100) -> list[UUID]: ...
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def get_concurrency_lease_storage() -> ConcurrencyLeaseStorage:
|
|
43
|
+
"""
|
|
44
|
+
Returns a ConcurrencyLeaseStorage instance based on the configured lease storage module.
|
|
45
|
+
|
|
46
|
+
Will raise a ValueError if the configured module does not pass a type check.
|
|
47
|
+
"""
|
|
48
|
+
concurrency_lease_storage_module = importlib.import_module(
|
|
49
|
+
get_current_settings().server.concurrency.lease_storage
|
|
50
|
+
)
|
|
51
|
+
if not isinstance(concurrency_lease_storage_module, ConcurrencyLeaseStorageModule):
|
|
52
|
+
raise ValueError(
|
|
53
|
+
f"The module {get_current_settings().server.concurrency.lease_storage} does not contain a ConcurrencyLeaseStorage class"
|
|
54
|
+
)
|
|
55
|
+
return concurrency_lease_storage_module.ConcurrencyLeaseStorage()
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from datetime import datetime, timedelta, timezone
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Any, TypedDict
|
|
7
|
+
from uuid import UUID
|
|
8
|
+
|
|
9
|
+
import anyio
|
|
10
|
+
|
|
11
|
+
from prefect.server.concurrency.lease_storage import (
|
|
12
|
+
ConcurrencyLeaseStorage as _ConcurrencyLeaseStorage,
|
|
13
|
+
)
|
|
14
|
+
from prefect.server.concurrency.lease_storage import (
|
|
15
|
+
ConcurrencyLimitLeaseMetadata,
|
|
16
|
+
)
|
|
17
|
+
from prefect.server.utilities.leasing import ResourceLease
|
|
18
|
+
from prefect.settings.context import get_current_settings
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class _LeaseFile(TypedDict):
|
|
22
|
+
resource_ids: list[str]
|
|
23
|
+
metadata: dict[str, Any] | None
|
|
24
|
+
expiration: str
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ConcurrencyLeaseStorage(_ConcurrencyLeaseStorage):
|
|
28
|
+
"""
|
|
29
|
+
A file-based concurrency lease storage implementation that stores leases on disk.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, storage_path: Path | None = None):
|
|
33
|
+
prefect_home = get_current_settings().home
|
|
34
|
+
self.storage_path: Path = Path(
|
|
35
|
+
storage_path or prefect_home / "concurrency_leases"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def _ensure_storage_path(self) -> None:
|
|
39
|
+
"""Ensure the storage path exists, creating it if necessary."""
|
|
40
|
+
self.storage_path.mkdir(parents=True, exist_ok=True)
|
|
41
|
+
|
|
42
|
+
def _lease_file_path(self, lease_id: UUID) -> Path:
|
|
43
|
+
return self.storage_path / f"{lease_id}.json"
|
|
44
|
+
|
|
45
|
+
def _expiration_index_path(self) -> anyio.Path:
|
|
46
|
+
return anyio.Path(self.storage_path / "expirations.json")
|
|
47
|
+
|
|
48
|
+
async def _load_expiration_index(self) -> dict[str, str]:
|
|
49
|
+
"""Load the expiration index from disk."""
|
|
50
|
+
expiration_file = self._expiration_index_path()
|
|
51
|
+
if not await expiration_file.exists():
|
|
52
|
+
return {}
|
|
53
|
+
|
|
54
|
+
try:
|
|
55
|
+
return json.loads(await expiration_file.read_text())
|
|
56
|
+
except (json.JSONDecodeError, KeyError, ValueError):
|
|
57
|
+
return {}
|
|
58
|
+
|
|
59
|
+
def _save_expiration_index(self, index: dict[str, str]) -> None:
|
|
60
|
+
"""Save the expiration index to disk."""
|
|
61
|
+
self._ensure_storage_path()
|
|
62
|
+
expiration_file = self._expiration_index_path()
|
|
63
|
+
|
|
64
|
+
with open(expiration_file, "w") as f:
|
|
65
|
+
json.dump(index, f)
|
|
66
|
+
|
|
67
|
+
async def _update_expiration_index(
|
|
68
|
+
self, lease_id: UUID, expiration: datetime
|
|
69
|
+
) -> None:
|
|
70
|
+
"""Update a single lease's expiration in the index."""
|
|
71
|
+
index = await self._load_expiration_index()
|
|
72
|
+
index[str(lease_id)] = expiration.isoformat()
|
|
73
|
+
self._save_expiration_index(index)
|
|
74
|
+
|
|
75
|
+
async def _remove_from_expiration_index(self, lease_id: UUID) -> None:
|
|
76
|
+
"""Remove a lease from the expiration index."""
|
|
77
|
+
index = await self._load_expiration_index()
|
|
78
|
+
index.pop(str(lease_id), None)
|
|
79
|
+
self._save_expiration_index(index)
|
|
80
|
+
|
|
81
|
+
def _serialize_lease(
|
|
82
|
+
self, lease: ResourceLease[ConcurrencyLimitLeaseMetadata], expiration: datetime
|
|
83
|
+
) -> _LeaseFile:
|
|
84
|
+
return {
|
|
85
|
+
"resource_ids": [str(rid) for rid in lease.resource_ids],
|
|
86
|
+
"metadata": {"slots": lease.metadata.slots} if lease.metadata else None,
|
|
87
|
+
"expiration": expiration.isoformat(),
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
def _deserialize_lease(
|
|
91
|
+
self, data: _LeaseFile
|
|
92
|
+
) -> ResourceLease[ConcurrencyLimitLeaseMetadata]:
|
|
93
|
+
resource_ids = [UUID(rid) for rid in data["resource_ids"]]
|
|
94
|
+
metadata = (
|
|
95
|
+
ConcurrencyLimitLeaseMetadata(slots=data["metadata"]["slots"])
|
|
96
|
+
if data["metadata"]
|
|
97
|
+
else None
|
|
98
|
+
)
|
|
99
|
+
expiration = datetime.fromisoformat(data["expiration"])
|
|
100
|
+
lease = ResourceLease(
|
|
101
|
+
resource_ids=resource_ids, metadata=metadata, expiration=expiration
|
|
102
|
+
)
|
|
103
|
+
return lease
|
|
104
|
+
|
|
105
|
+
async def create_lease(
|
|
106
|
+
self,
|
|
107
|
+
resource_ids: list[UUID],
|
|
108
|
+
ttl: timedelta,
|
|
109
|
+
metadata: ConcurrencyLimitLeaseMetadata | None = None,
|
|
110
|
+
) -> ResourceLease[ConcurrencyLimitLeaseMetadata]:
|
|
111
|
+
expiration = datetime.now(timezone.utc) + ttl
|
|
112
|
+
lease = ResourceLease(
|
|
113
|
+
resource_ids=resource_ids, metadata=metadata, expiration=expiration
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
self._ensure_storage_path()
|
|
117
|
+
lease_file = self._lease_file_path(lease.id)
|
|
118
|
+
lease_data = self._serialize_lease(lease, expiration)
|
|
119
|
+
|
|
120
|
+
with open(lease_file, "w") as f:
|
|
121
|
+
json.dump(lease_data, f)
|
|
122
|
+
|
|
123
|
+
# Update expiration index
|
|
124
|
+
await self._update_expiration_index(lease.id, expiration)
|
|
125
|
+
|
|
126
|
+
return lease
|
|
127
|
+
|
|
128
|
+
async def read_lease(
|
|
129
|
+
self, lease_id: UUID
|
|
130
|
+
) -> ResourceLease[ConcurrencyLimitLeaseMetadata] | None:
|
|
131
|
+
lease_file = self._lease_file_path(lease_id)
|
|
132
|
+
|
|
133
|
+
if not lease_file.exists():
|
|
134
|
+
return None
|
|
135
|
+
|
|
136
|
+
try:
|
|
137
|
+
with open(lease_file, "r") as f:
|
|
138
|
+
lease_data = json.load(f)
|
|
139
|
+
|
|
140
|
+
lease = self._deserialize_lease(lease_data)
|
|
141
|
+
|
|
142
|
+
# Check if lease is expired
|
|
143
|
+
if lease.expiration < datetime.now(timezone.utc):
|
|
144
|
+
# Clean up expired lease
|
|
145
|
+
lease_file.unlink(missing_ok=True)
|
|
146
|
+
await self._remove_from_expiration_index(lease_id)
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
return lease
|
|
150
|
+
except (json.JSONDecodeError, KeyError, ValueError):
|
|
151
|
+
# Clean up corrupted lease file
|
|
152
|
+
lease_file.unlink(missing_ok=True)
|
|
153
|
+
await self._remove_from_expiration_index(lease_id)
|
|
154
|
+
return None
|
|
155
|
+
|
|
156
|
+
async def renew_lease(self, lease_id: UUID, ttl: timedelta) -> None:
|
|
157
|
+
lease_file = self._lease_file_path(lease_id)
|
|
158
|
+
|
|
159
|
+
if not lease_file.exists():
|
|
160
|
+
return
|
|
161
|
+
|
|
162
|
+
try:
|
|
163
|
+
with open(lease_file, "r") as f:
|
|
164
|
+
lease_data = json.load(f)
|
|
165
|
+
|
|
166
|
+
# Update expiration time
|
|
167
|
+
new_expiration = datetime.now(timezone.utc) + ttl
|
|
168
|
+
lease_data["expiration"] = new_expiration.isoformat()
|
|
169
|
+
|
|
170
|
+
self._ensure_storage_path()
|
|
171
|
+
with open(lease_file, "w") as f:
|
|
172
|
+
json.dump(lease_data, f)
|
|
173
|
+
|
|
174
|
+
# Update expiration index
|
|
175
|
+
await self._update_expiration_index(lease_id, new_expiration)
|
|
176
|
+
except (json.JSONDecodeError, KeyError, ValueError):
|
|
177
|
+
# Clean up corrupted lease file
|
|
178
|
+
lease_file.unlink(missing_ok=True)
|
|
179
|
+
await self._remove_from_expiration_index(lease_id)
|
|
180
|
+
|
|
181
|
+
async def revoke_lease(self, lease_id: UUID) -> None:
|
|
182
|
+
lease_file = self._lease_file_path(lease_id)
|
|
183
|
+
lease_file.unlink(missing_ok=True)
|
|
184
|
+
|
|
185
|
+
# Remove from expiration index
|
|
186
|
+
await self._remove_from_expiration_index(lease_id)
|
|
187
|
+
|
|
188
|
+
async def read_expired_lease_ids(self, limit: int = 100) -> list[UUID]:
|
|
189
|
+
expired_leases: list[UUID] = []
|
|
190
|
+
now = datetime.now(timezone.utc)
|
|
191
|
+
|
|
192
|
+
# Load expiration index
|
|
193
|
+
expiration_index = await self._load_expiration_index()
|
|
194
|
+
|
|
195
|
+
for lease_id_str, expiration_str in expiration_index.items():
|
|
196
|
+
if len(expired_leases) >= limit:
|
|
197
|
+
break
|
|
198
|
+
|
|
199
|
+
try:
|
|
200
|
+
lease_id = UUID(lease_id_str)
|
|
201
|
+
expiration = datetime.fromisoformat(expiration_str)
|
|
202
|
+
|
|
203
|
+
if expiration < now:
|
|
204
|
+
expired_leases.append(lease_id)
|
|
205
|
+
except (ValueError, TypeError):
|
|
206
|
+
# Clean up corrupted index entry
|
|
207
|
+
continue
|
|
208
|
+
|
|
209
|
+
return expired_leases
|