Released on July 14, 2020.
- Improve output formatting of
prefect describe
CLI - #2934 - Add new
wait
kwarg to Flow Run Task for reflecting the flow run state in the task - #2935 - Separate build-time and run-time job spec details in KubernetsJobEnvironment - #2950
- Implement RunNamespacedJob task for Kubernetes - #2916
- Add
log_stderr
option toShellTask
andDbtShellTask
for logging the full output from stderr - #2961
- Ensure
is_serializable
always uses same executable for subprocess. - #1262 - Fix issue with Mapped tasks not always reloading child state results on reruns - #2656
- Fix
FargateTaskEnvironment
attempting to retrieve authorization token when not present - #2940 - Fix issue with Metastates compounding - #2965
Released on July 8, 2020.
- Update
flow.slugs
duringflow.replace
- #2919 flow.update
accepts the optional kwargmerge_parameters
that allows flows to be updated with commonParameters
- #2501- Added poke handler to notify agent process of available flow runs - #2914
- Add
Cancelling
state for indicating a flow-run that is being cancelled, but may still have tasks running - #2923
- Add
ReadAirtableRow
task - #2843 - Add
container_name
kwarg toCreateContainer
Docker task - #2904 - Adds an
extra_docker_kwargs
argument toCreateContainer
Docker task - #2915
- Fix issue with short-interval IntervalClocks that had a start_date far in the past - #2906
- When terminating early, executors ensure all pending work is cancelled/completed before returning, ensuring no lingering background processing - #2920
Released on June 30, 2020.
- Add
apply_map
, a function to simplify creating complex mapped pipelines - #2846
- Make storage location inside Docker storage configurable - #2865
- Send heartbeats on each iteration of the Cloud task runner's retry loop - #2893
- Add option to BigQueryTask to return query as dataframe - #2862
- None
- Add more context keys when running locally so that templating is consistent between local and Cloud runs - #2662
- Fix Fargate agent not parsing string provided containerDefinitions - #2875
- Fix Fargate agent providing empty parameters if not set - #2878
- Fix issue with Queued task runs flooding agents with work - #2884
- Add missing
prefect register flow
to CLI help text - #2895
- None
- None
Released on June 25, 2020.
- Task slugs are now stable across rebuilds of the same Flow - #2531
- Support configuring executors for
LocalEnvironment
,KubernetesJobEnvironment
, andFargateTaskEnvironment
- #2805 - Flows can now be stored and executed using file-based storage - #2840
- Add option to set
repositoryCredentials
on Fargate AgentcontainerDefinitions
- #2822 - Update GraphQL endpoint to
/graphql
- #2669 - Allow Cloud Flow Runners to interact properly with Queued runs - #2741
- Add
Result
serializers - #2755 - Simplify
DaskExecutor
internals - #2817 - Set task names in
LocalDaskExecutor
- #2819 - Flows registered without an image set will default to
all_extras
- #2828 - Improve error message when sending unauthorized requests to Cloud - #2810
- Forward state change status back to core - #2839
- Add GitHub storage for storing flows as files in a GitHub repo - #2840
- Add
prefect register flow
CLI command for registering flows from files - #2840 - Add default
GITHUB_ACCESS_TOKEN
secret - #2840 - Create utility function for getting Kubernetes client - #2845
- Adds a MySQL task using pymysql driver - #2124
- Add some tasks for working with Google Sheets - #2614
- Add support for HTML content in the EmailTask - #2811
- Failing to set a state raises errors more aggressively - #2708
- Fix
all_extras
tag not being set during CI job to build image - #2801 - Quiet no candidate Cached states were valid debug logging - #2815
- Fix
LocalEnvironment
execute function's use of the flow object - #2804 - Properly set task names when using
DaskExecutor
- #2814 - Fix the
LocalDaskExecutor
to only compute tasks once, not multiple times - #2819 - Generate key names for mapped tasks that work better with Dask's dashboard - #2831
- Fix FlowRunTask when running against locally deployed Server - #2832
- Make sure image from Docker storage is always used with KubernetesJobEnvironment - #2838
- Change Environment.run_flow() to prefer executor from flow's environment - #2849
- Deprecate
RemoteEnvironment
in favor ofLocalEnvironment
- #2805 - Deprecate
RemoteDaskEnvironment
in favor ofLocalEnvironment
with aDaskExecutor
- #2805 - Deprecate
executor_kwargs
inKubernetesJobEnvironment
andFargateTaskEnvironment
in favor ofexecutor
- #2805
- Remove previously deprecated
SynchronousExecutor
- #2826
Released on June 17, 2020.
- Depth First Execution with Mapping on Dask - #2646
- Support use of cloud storage with containerized environments - #2517,#2796
- Add flag to include hostname on local storage - #2653
- Add option to set
image_pull_secret
directly onDaskKubernetesEnvironment
- #2657 - Allow for custom callables for Result locations - #2577
- Ensure all Parameter values, included non-required defaults, are present in context - #2698
- Use absolute path for
LocalResult
location for disambiguation - #2698 - Retry client requests when receiving an
API_ERROR
code in the response - #2705 - Reduce size of serialized tasks when running on Dask - #2707
- Extend run state signatures for future development - #2718
- Update set_flow_run_state for future meta state use - #2725
- Add an optional
flow
argument tomerge
to support using it when not inside a flow context - #2727 - Add option to set service account name on Prefect jobs created by Kubernetes agent - #2547
- Add option to set imagePullPolicy on Prefect jobs created by Kubernetes agent - #2721
- Add option to set API url on agent start CLI command - #2633
- Add CI step to build
prefecthq/prefect:all_extras
Docker image for bundling all Prefect dependencies - #2745 - Move
Parameter
to a standalone module - #2758 - Validate Cached states based on hashed inputs - #2763
- Add
validate_configuration
utility to Fargate Agent for verifying it can manage tasks properly - #2768 - Add option to specify task targets as callables - #2769
- Improve
State.__repr__
when there is no message - #2773 - Add support for db argument at run time in the SQLiteQuery and SQLiteScript - #2782
- Add support for mapped argument in control flows - #2784
- Use pagination in kubernetes resource manager to reduce memory usage - #2794
- Adds a task to expose Great Expectations checkpoints as a node in a Prefect pipeline - #2489
- None
- Fix flow.visualize cleanup of source files when using
filename
- #2726 - Fix
S3Result
handling of AWS credentials provided through kwargs - #2747 - Fix
DaskKubernetesEnvironment
requiring that anenv
block is set when using custom specs - #2657 - Fix
PostgresExecute
task auto commit when commit is set toFalse
- #2658 - Remove need for
{filename}
in mapped templates - #2640 - Fix issue with Results erroring out on multi-level mapped pipelines - #2716
- Fix issue with dask resource tags not being respected - #2735
- Ensure state deserialization works even when another StateSchema exists - #2738
- Remove implicit payload size restriction from Apollo - #2764
- Fix issue with declared storage secrets in K8s job environment and Dask K8s environment - #2780
- Fix context handling for Cloud when working with in-process retries - #2783
- Accessing
prefect.core.task.Parameter
is deprecated in favor ofprefect.core.parameter.Parameter
- #2758
- Environment
setup
andexecute
function signatures now accept Flow objects - #2796 create_flow_run_job
logic has been moved intoexecute
forDaskKubernetesEnvironment
andKubernetesJobEnvironment
- #2796
Released on June 2, 2020.
- None
- Allow for manual approval of locally Paused tasks - #2693
- Task instances define a
__signature__
attribute, for improved introspection and tab-completion - #2602 - Tasks created with
@task
forward the wrapped function's docstring - #2602 - Support creating temporary dask clusters from within a
DaskExecutor
- #2667 - Add option for setting any build kwargs on Docker storage - #2668
- Add flow run ID option to
get logs
CLI command - #2671 - Add ID to output of
get
command forflows
andflow-runs
- #2671
- None
- None
- Fix issue with Google imports being tied together - #2661
- Don't warn about unused tasks defined inline and copied - #2677
- Remove unnecessary volume mount from dev infrastructure Docker compose - #2676
- Fix issue with instantiating LocalResult on Windows with dir from other drive - #2683
- Fix invalid IP address error when running
server start
on Ubuntu using rootless Docker - #2691
- Deprecate
local_processes
and**kwargs
arguments forDaskExecutor
- #2667 - Deprecate
address='local'
forDaskExecutor
- #2667
- None
Released on May 27, 2020.
- Revert GraphQL endpoint change - #2660
Released on May 27, 2020.
- None
- Add option to set volumes on
server start
CLI command - #2560 - Add
case
to top-level namespace - #2609 - Use host IP for
hostname
label in cases whereLocalAgent
is in container using host network - #2618 - Add option to set TLS configuration on client created by Docker storage - #2626
- The
start_time
of aPaused
state defaults toNone
- #2617 - Raise more informative error when Cloud Secret doesn't exist - #2620
- Update GraphQL endpoint to
/graphql
- #2651
- None
- Kubernetes agent resource manager is more strict about what resources it manages - #2641
- Fix error when adding
Parameter
to flow undercase
statement - #2608 - Fix
S3Result
attempting to load data when checking existence - #2623
- Deprecate
private_registry
anddocker_secret
options onDaskKubernetesEnvironment
- #2630
- Kubernetes labels associated with Prefect flow runs now have a
prefect.io/
prefix (e.g.prefect.io/identifier
) - #2641
Released on May 19, 2020.
- None
- Allow log configuration in Fargate Agent - #2589
- Reuse
prefect.context
for openingFlow
contexts - #2581 - Show a warning when tasks are created in a flow context but not added to a flow - #2584
- Add API healthcheck tile to the UI - #2395
- None
- Fix type for Dask Security in RemoteDaskEnvironment - #2571
- Fix issue with
log_stdout
not correctly storing returned data on the task run state - #2585 - Ensure result locations are updated from targets when copying tasks with
task_args
- #2590 - Fix
S3Result
exists function handling ofNoSuchKey
error - #2585 - Fix confusing language in Telemetry documentation - #2593
- Fix
LocalAgent
not registering with Cloud using default labels - #2587 - Fix flow's
run_agent
function passing aset
of labels to Agent instead of alist
- #2600
- None
- None
Released on May 15, 2020.
- Fix duplicate agent label literal eval parsing - #2569
Released on May 14, 2020.
- Allow slack_task to accept a dictionary for the message parameter to build a specially-structured JSON Block - #2541
- Support using
case
for control flow with the imperative api - #2546 flow.visualize
is now able to accept aformat
argument to specify the output file type - #2447- Docker storage now writes flows to
/opt
dir to remove need for root permissions - #2025 - Add option to set secrets on Storage objects - #2507
- Add reserved default Secret names and formats for working with cloud platforms - #2507
- Add unique naming option to the jobs created by the
KubernetesJobEnvironment
- #2553 - Use
ast.literal_eval
for configuration values - #2536 - Prevent local cycles even if flow validation is deferred - #2565
- Add "cancellation-lite" semantic by preventing task runs from running if the flow run isn't running - #2535
- Add minimal telemetry to Prefect Server - #2467
- Add tasks to create issues for Jira and Jira Service Desk #2431
- Add
DbtShellTask
, an extension of ShellTask for working with data build tool (dbt) - #2526 - Add
prefect.tasks.gcp.bigquery.BigQueryLoadFile
- #2423
- Fix bug in Kubernetes agent
deployment.yaml
with a misconfigured liveness probe - #2519 - Fix checkpointing feature not being able to be disabled when using server backend - #2438
- Result Handlers are now deprecated in favor of the new Result interface - #2507
- Allow for setting docker daemon at build time using DOCKER_HOST env var to override base_url in docker storage - #2482
- Ensure all calls to
flow.run()
use the same execution logic - #1994 - Moved
prefect.tasks.cloud
toprefect.tasks.prefect
- #2404 - Trigger signature now accepts a dictionary of
[Edge, State]
to allow for more customizable trigger behavior - #2298 - Remove all uses of
credentials_secret
from task library in favor ofPrefectSecret
tasks - #2507 - Remove
Bytes
andMemory
storage objects - #2507
Released on May 6, 2020.
- None
- Agents now support an optional HTTP health check, for use by their backing orchestration layer (e.g. k8s, docker, supervisord, ...) - #2406
- Sets dask scheduler default to "threads" on LocalDaskExecutor to provide parallelism - #2494
- Enhance agent verbose logs to include provided kwargs at start - #2486
- Add
no_cloud_logs
option to all Agent classes for an easier way to disable sending logs to backend - #2484 - Add option to set flow run environment variables on Kubernetes agent install - #2424
- Add new
case
control-flow construct, for nicer management of conditional tasks - #2443
- Give a better error for non-serializable callables when registering with cloud/server - #2491
- Fix runners retrieving invalid
context.caches
on runs started directly from a flow runner - #2403
- None
- Remove the Nomad agent - #2492
- None
Released on May 5, 2020.
- Add DaskCloudProviderEnvironment to dynamically launch Dask clusters, e.g. on AWS Fargate - #2360
- Add
botocore_config
option to Fargate agent for setting botocore configuration when interacting with boto3 client - #2170 - Don't create a
None
task for a null condition when usingifelse
- #2449 - Add support for EC2 launch type in Fargate Agent and
FargateTaskEnvironment
- #2421 - Add
flow_id
to context for Flow runs - #2461 - Allow users to inject custom context variables into their logger formats - #2462
- Add option to set backend on
agent install
CLI command - #2478
- None
- Fix
start_server.sh
script when an env var is undefined - #2450 - Fix
server start
CLI command not respectingversion
kwarg on tagged releases - #2435 - Fix issue with non-JSON serializable args being used to format log messages preventing them from shipping to Cloud - #2407
- Fix issue where ordered Prefect collections use lexical sorting, not numerical sorting, which can result in unexpected ordering - #2452
- Fix issue where Resource Manager was failing due to non-JSON timestamp in log writing - #2474
- Fix periodic error in local agent process management loop - #2419
- None
- None
Released on Apr 28, 2020.
- None
- Added serializer for
RemoteDaskEnvironment
- #2369 server start
CLI command now defaults to image build based on current Prefect installation version - #2375- Add option to set
executor_kwargs
onKubernetesJobEnvironment
andFargateTaskEnvironment
- #2258 - Add map index to task logs for mapped task runs - #2402
- Agents can now register themselves with Cloud for better management - #2312
- Adding support for
environment
,secrets
, andmountPoints
via configurablecontainerDefinitions
to the Fargate Agent - #2397 - Add flag for disabling Docker agent interface check on Linux - #2361
- Add Pushbullet notification task to send notifications to mobile - #2366
- Add support for Docker volumes and filtering in
prefect.tasks.docker
- #2384
- Fix Docker storage path issue when registering flows on Windows machines - #2332
- Fix issue with refreshing Prefect Cloud tokens - #2409
- Resolve invalid escape sequence deprecation warnings - #2414
- None
- None
Released on Apr 21, 2020.
- Agent connection step shows which endpoint it is connected to and checks API connectivity - #2372
- Revert changes to
ifelse
&switch
(added in #2310), removing implicit creation ofmerge
tasks - #2379
Released on Apr 21, 2020.
- None
- Allow GraphQL endpoint configuration via
config.toml
for remote deployments of the UI - #2338 - Add option to connect containers created by Docker agent to an existing Docker network - #2334
- Expose
datefmt
as a configurable logging option in Prefect configuration - #2340 - The Docker agent configures containers to auto-remove on completion - #2347
- Use YAML's safe load and dump commands for the
server start
CLI command - #2352 - New
RemoteDaskEnvironment
specifically for running Flows on an existing Dask cluster - #2367
- None
- Fix
auth create-token
CLI command specifying deprecatedrole
instead ofscope
- #2336 - Fix local schedules not continuing to schedule on errors outside of runner's control - #2133
- Fix
get_latest_cached_states
pulling incorrect upstream cached states when using Core server as the backend - #2343
- None
- None
Released on Apr 14, 2020.
- None
- Task logical operators (e.g.
And
,Or
, ...) no longer implicitly cast tobool
- #2303 - Allow for dynamically changing secret names at runtime - #2302
- Update
ifelse
andswitch
to return tasks representing the output of the run branch - #2310
- Rename the base secret tasks for clarity - #2302
- Fix possible subprocess deadlocks when sending stdout to
subprocess.PIPE
- #2293, #2295 - Fix issue with Flow registration to non-standard Cloud backends - #2292
- Fix issue with registering Flows with Server that have required scheduled Parameters - #2296
- Fix interpolation of config for dev services CLI for Apollo - #2299
- Fix pytest Cloud and Core server backend fixtures - #2319
- Fix
AzureResultHandler
choosing an empty Secret over provided connection string - #2316 - Fix containers created by Docker agent not being able to reach out to host API - #2324
- None
- Remove
env_var
initialization fromEnvVarSecret
in favor ofname
- #2302
Released on Apr 7, 2020.
- Add flags to
prefect server start
for disabling service port mapping - #2228 - Add options to
prefect server start
for mapping to host ports - #2228 - Return
flow_run_id
from CLIrun
methods for programmatic use - #2242 - Add JSON output option to
describe
CLI commands - #1813 - Add ConstantResult for eventually replacing ConstantResultHandler - #2145
- Add new
diagnostics
mode for timing requests made to Cloud - #2283
- Make
project_name
optional forFlowRunTask
to allow for use with Prefect Core's server - #2266 - Adds
prefect.tasks.docker.container.RemoveContainer
- Fix
S3ResultHandler
safe retrieval of_client
attribute - #2232 - Change default log
timestamp
value in database to be identical to other tables instead of a hard coded value - #2230
- None
- None
Released on Mar 29, 2020.
- Open source database backend, GraphQL API and UI - #2218
- Add
prefect server start
CLI command for spinning up database and UI - #2214
- Add ValidationFailed state and signal in anticipation of validating task outputs - #2143
- Add max polling option to all agents - #2037
- Add GCSResult type #2141
- Add Result.validate method that runs validator functions initialized on Result #2144
- Convert all GraphQL calls to have consistent casing - #2185 #2198
- Add
prefect backend
CLI command for switching between Prefect Core server and Prefect Cloud - #2203 - Add
prefect run server
CLI command for starting flow runs without use of project name - #2203 - Make
project_name
optional during flow registration to support Prefect Core's server - #2203 - Send flow run and task run heartbeat at beginning of run time - #2203
- None
- Fix issue with heartbeat failing if any Cloud config var is not present - #2190
- Fix issue where
run cloud
CLI command would pull final state before last batch of logs - #2192 - Fix issue where the
S3ResultHandler
would attempt to access uninitialized attribute - #2204
- None
- Drop support for Python 3.5 - #2191
- Remove
Client.write_run_log
- #2184 - Remove
Client.deploy
andflow.deploy
- #2183
- None
Released on Mar 18, 2020.
- None
- Update Cloud config name for heartbeat settings - #2081
- Add examples to Interactive API Docs - #2122
- Allow users to skip Docker healthchecks - #2150
- Add exists, read, and write interfaces to Result #2139
- Add Cloud UI links to Slack Notifications - #2112
- None
- Fix S3ResultHandler use of a new boto3 session per thread - #2108
- Fix issue with stateful function reference deserialization logic mutating state - #2159
- Fix issue with
DateClock
serializer - #2166 - Fix issue with scheduling required parameters - #2166
- Deprecate cache_* and result_handler options on Task and Flow objects #2140
- None
Released on Mar 4, 2020.
- Change
task.log_stdout
retrieval from task runner togetattr
in order to preserve running flows of older 0.9.x versions - #2120
Released on Mar 4, 2020.
- Add new diagnostics utility to assist in troubleshooting issues - #2062
- Add a jira_notification state handler to create jira tickets for failed tasks or flows - #1861
- Add support for Python 3.8 - #2080
- Add PIN 15 (skip refactor) - #2070
- Update docs and docstrings related to Result Handlers - #1792
- Add volume option to Docker Agent - #2013
DaskKubernetesEnvironment
now elevates important autoscaling logs as well as possible Kubernetes issues - #2089- Add optional
scheduler_logs
kwarg to theDaskKubernetesEnvironment
- #2089 - Add ERROR log if heartbeat process dies - #2097
- Enable stdout logging from inside a task with the kwarg
log_stdout=True
- #2092 - Direct links to Cloud flows and flow runs now shown on creation time - #2109
- Update docs related to using Context - #2077
- Fix expanding of
V1DeleteOptions
kwargs for Kubernetes tasks - #2083
- Fix
extra_loggers
config variable not being able to be set via environment variable - #2089 - Fix environments not passing down their
extra_loggers
to any created infrastructure - #2089 - Don't mutate data when serializing or deserializing - #2098
- None
- None
Released on Feb 21, 2020.
- None
- Better exception for unsubscriptable mapping arguments - #1821
- Upload package to PyPI on tag push to master - #2030
- Add DaskGateway tip to docs - #1959
- Improve package import time - #2046
- Fix
V1DeleteOptions
call for Kubernetes tasks - #2050 - Add kwargs to
V1DeleteOptions
for Kubernetes tasks - #2051
- Ensure microseconds are respected on
start_date
provided to CronClock - #2031 - Fix duplicate Client connections when using
--logs
flag fromrun cloud
CLI command - #2056
- None
- None
Released on Feb 14, 2020.
- None
- Add incremental tutorial - #1953
- Improve error handling for unsupported callables - #1993
- Accept additional
boto3
client parameters in S3 storage - #2000 - Add optional
version_group_id
kwarg tocreate_flow_run
for a stable API for flow runs - #1987 - Add
extra_loggers
logging configuration for non-Prefect logs in stdout and cloud - #2010
- None
- Ensure
ifelse
casts its condition tobool
prior to evaluation - #1991 - Do not perform
ast.literal_eval
on cpu and memory task_definition kwargs for Fargate Agent - #2010 - Fix new agent processing with Threadpool causing problem for Fargate Agent with task revisions enabled - #2022
- None
- Remove Airflow Tasks - #1992
Released on Feb 05, 2020.
- None
- Improve heartbeat functionality to be robust across platforms - #1973
- Run storage healthchecks on other options besides Docker - 1963
- Cloud logger now attempts to elevate logger errors to flow run logs - #1961
- Attach Flow and Task attributes to LogRecords - #1938
- None
- Fix uncaught Fargate Agent kwarg parse SyntaxError from
literal_eval
- #1968 - Fix FargateTaskEnvironment passing empty auth token to run task - #1976
- Fix imagePullSecrets not being automatically passed to jobs created by Kubernetes Agent - #1982
- None
- Remove cancellation hooks - #1973
- None
Released on Jan 30, 2020.
- Allow for parameter defaults to vary based on clock - #1946
- More graceful handling of Agents competing for work - #1956
- None
- Eliminated possible duplicate flow run issue in all agents - #1956
- None
- None
- None
Released on Jan 24, 2020.
- None
- Docker daemon reconnect attempts + exit on heartbeat failure -#1918
- More responsive agent shutdown - #1921
- Background all agent flow deployment attempts - #1928
- Add show_flow_logs to Docker agent #1929
- Add per-task checkpointing opt-out - #1933
- The Task 'checkpoint' kwarg will no longer be deprecated to allow opt-out - #1933
- None
- Fix the Fargate Agent not parsing kwargs as literals - #1926
- Fix issue with result handler default persisting from initialization - #1936
- None
- None
- None
Released on Jan 15, 2020.
- Added the ability to leverage native ECS task definition revisions for flow versions in Fargate agent - #1870
- Added the ability to pull in kwargs per flow version from S3 on flow submission in Fargate agent - #1870
- Add sensible default result handlers to non-Docker storage options - #1888
- Allow for task looping to beyond Python's maximum recursion depth - #1862
- Prevent duplication of stdout logs from multiple instantiated agents - #1866
- Allow intervals less than 60 seconds in
IntervalClock
s - #1880 - Introduce new
Secret.exists
method for checking whether a Secret is available - #1882 - Introduce new
-e
CLI options on agent start commands to allow passing environment variables to flow runs - #1878 - Stop persisting
None
when calling result handlers - #1894 - Change Cancelled state to indicate Finished instead of Failed - #1903
- All States now store
cached_inputs
for easier recovery from failure - #1898 - Always checkpoint tasks which have result handlers - #1898
- Remove implicit requirement that Google Tasks use Prefect Cloud Secrets - #1882
- Enforce provision of
max_retries
if specifyingretry_delay
for aTask
- #1875 - Fix issue with reduce tasks in
flow.visualize()
- #1793
- The checkpointing kwarg will be removed from Tasks as it is now a default behavior - #1898
- Remove default value for
aws_credentials_secret
on all S3 hooks - #1886 - Remove
config.engine.result_handler
section of Prefect config - #1888 - Remove default value for
credentials_secret
onGCSResultHandler
- #1888 - Remove default value for
azure_credentials_secret
onAzureResultHandler
- #1888
Released on Dec 17, 2019.
- None
- Enhanced treatment of nested and ordered constant values - #1829
- Add
on_datetime
,on_date
, andat_time
filters - #1837 - Add
--latest
flag for Kubernetes Agent install CLI command - #1842 - Add
--no-cloud-logs
flag for all agents to optionally opt-out of logs being sent to Prefect Cloud - #1843 - Agents mark Flow Runs as
Failed
if a deployment error occurs - #1848 Submitted
states from Agents include deployment identifier information - #1848- Update heartbeats to respect Cloud flow settings - #1851
- Add flow run name to
prefect.context
- #1855 - Add
--namespace
option for Kubernetes Agent start CLI command - #1859 - Add Prefect job resource configuration for Kubernetes Agent - #1859
- Add task for scheduling a flow run - #1871
- Fix Agent deployment errors interrupting full list of found Flow Runs - #1848
- Fix issue with a single bad log preventing all logs from being sent to Cloud - #1845
- Fix Kubernetes Agent passing empty default namespace - #1839
- None
- None
- None
Released on Dec 11, 2019.
- Added new Local Agent to run Flows from Local Storage, S3 Storage, and GCS Storage - #1819
- Added Azure Blob Storage for Flows - #1831
- Added GCS Storage for Flows - #1809
- Added S3 Storage for Flows - #1753
- Add
--rbac
flag toprefect agent install
for Kubernetes Agent - #1822 - Add
prefect agent install
option to outputsupervisord.conf
file for Local Agent - #1819 - Add convenience
parents()
andchildren()
classmethods to all State objects for navigating the hierarchy - #1784 - Add new
not_all_skipped
trigger and set it as the default for merge tasks - #1768
- Azure Blob tasks now use newer
BlockBlobService
with connection string authentication - #1831
- Fix issue with
flow.visualize()
for mapped tasks which are skipped - #1765 - Fix issue with timeouts only being softly enforced - #1145, #1686
- Log agent errors using
write_run_logs
instead of the deprecatedwrite_run_log
- #1791 - Fix issue with
flow.update()
not transferring constants - #1785
flow.deploy
is deprecated in favor offlow.register
- #1819
- Default Flow storage is now
Local
instead ofDocker
- #1819 - Docker based
LocalAgent
is renamedDockerAgent
- #1819 prefect agent start
now defaults to newLocalAgent
- #1819
- None
Released on Nov 26, 2019.
- Add graceful cancellation hooks to Flow and Task runners - #1758
- Add option to specify a run name for
cloud run
CLI command - #1756 - Add
work_stealing
option toDaskKubernetesEnvironment
- #1760 - Improve heartbeat thread management - #1770
- Add unique scheduler Job name to
DaskKubernetesEnvironment
- #1772 - Add informative error when trying to map with the
LocalDaskExecutor
using processes - #1777
- None
- Fix issue with heartbeat thread deadlocking dask execution when using a
worker_client
- #1750 - Fix issue with Environments not calling
run_flow
on Environment stored on Flow object - #1752 - Fix issue with Docker build context when providing custom docker files - #1762
- None
- None
- None
Released on Nov 15, 2019.
- Allow users to provide a custom version group ID for controlling Cloud versioning - #1665
- Stop autogenerating constant tasks - #1730
- Raise an informative error when context objects are pickled - #1710
- Add an option to pass in
run_name
to a flow run to override the auto-generated names when callingcreate_flow_run
#1661 - Add informative logs in the event that a heartbeat thread dies - #1721
- Loosen Job spec requirements for
KubernetesJobEnvironment
- #1713 - Loosen
containerDefinitions
requirements forFargateTaskEnvironment
- #1713 - Local Docker agent proactively fails flow runs if image cannot be pulled - #1395
- Add graceful keyboard interrupt shutdown for all agents - #1731
agent start
CLI command now allows for Agent kwargs - #1737- Add users to specify a custom Dockerfile for Docker storage - #1738
- Expose
labels
kwarg inflow.deploy
for convenient labeling of Flows - #1742
- None
FargateTaskEnvironment
now uses providedfamily
for task definition naming - #1713- Fix executor initialization missing
self
inKubernetesJobEnvironment
- #1713 - Fix
identifier_label
not being generated on each run for Kubernetes based environments - #1718 - Fix issue where users could not override their user config path when deploying Docker to Cloud - #1719
- Respect order of inputs in merge - #1736
- None
- None
Released on Nov 5, 2019
- None
- Add a
save
/load
interface to Flows - #1685, #1695 - Add option to specify
aws_session_token
for theFargateTaskEnvironment
- #1688 - Add
EnvVarSecrets
for loading sensitive information from environment variables - #1683 - Add an informative version header to all Cloud client requests - #1690
- Auto-label Flow environments when using Local storage - #1696
- Batch upload logs to Cloud in a background thread for improved performance - #1691
- Include agent labels within each flow's configuration environment - #1671
- None
- Fix Fargate Agent access defaults and environment variable support - #1687
- Removed default python version for docker builds - #1705
- Attempt to install prefect in any docker image (if it is not already installed) - #1704
- Kubernetes Agent deployment yaml now respects new
prefecthq/prefect
image tagging convention - #1707
- None
- None
- None
Released October 29, 2019
- Flow Affinity: Environments and Agents now support labeling for execution specification - #1651
- Add new Secret Tasks for a pluggable and reusable Secrets API - #1346, #1587
- Add the ability to delete task tag limits using the client - #1622
- Adds an "Ask for help" button with a link to the prefect.io support page - #1637
- Reduces the size of the
prefecthq/prefect
Docker image by ~400MB, which is now the base Docker image used in Flows - #1648 - Add a new healthcheck for environment dependencies - #1653
- Add default 30 second timeout to Client requests - #1672
- Add new Secret Tasks for a pluggable and reusable Secrets API - #1346, #1587
- Add support for directly passing credentials to task library tasks, instead of passing secret names - #1667
- Fix defaults for unspecified ARNs in the Fargate Agent - #1634
- Fix ShellTask return value on empty stdout - #1632
- Fix issue with some Cloud Secrets not being converted from strings - #1655
- Fix issue with Agent logging config setting not working - #1657
- Fix issue with SnowflakeQuery tasks not working - #1663
- Tasks that accepted the name of a secret (often
credentials_secret
) will raise a deprecation warning - #1667
- Fargate Agent now takes in all boto3 camel case arguments instead of specific snake case options - #1649
kubernetes
is no longer installed by default in deployed flow images - #1653- Tasks that accepted the name of a secret (often
credentials_secret
) no longer have a default value for that argument, as it has been deprecated - #1667
Released October 16, 2019
- Environments now allow for optional
on_start
andon_exit
callbacks - #1610
- Raise more informative error when calling
flow.visualize()
if Graphviz executable not installed - #1602 - Allow authentication to Azure Blob Storage with SAS token - #1600
- Additional debug logs to
Docker Container
andDocker Image
tasks - #920 - Changes to Fargate agent to support temporary credentials and IAM role based credentials within AWS compute such as a container or ec2 instance. #1607
- Local Secrets set through environment variable now retain their casing - #1601
- Agents can accept an optional
name
for logging and debugging - #1612 - Added AWS configuration options for Fargate Agent (task_role_arn, execution_role_arn) - #1614
- Change EmailTask to accept SMTP server settings as well as an email_from kwarg - #1619
- Add the ability to delete task tag limits using the client - #1622
- Add
return_all
kwarg toShellTask
for optionally returning all lines of stdout - #1598 - Add
CosmosDBCreateItem
,CosmosDBReadItems
,CosmosDBQueryItems
and for interacting with data stored on Azure Cosmos DB - #1617
- Fix issue with running local Flow without a schedule containing cached tasks - #1599
- Remove blank string for
task_run_id
in k8s resource manager - #1604 - Fix issue with merge task not working for pandas dataframes and numpy arrays - #1609
- None
- Local Secrets set through environment variable now retain their casing - #1601
Released October 3, 2019
- Added
KubernetesJobEnvironment
- #1548 - Add ability to enforce Task concurrency limits by tag in Prefect Cloud - #1570
- Added
FargateTaskEnvironment
- #1592
- Allow the
Client
to more gracefully handle failed login attempts on initialization - #1535 - Replace
DotDict
withbox.Box
- #1518 - Store
cached_inputs
on Failed states and call their result handlers if they were provided - #1557 raise_on_exception
no longer raises for Prefect Signals, as these are typically intentional / for control flow - #1562run cloud
CLI command takes in optional--parameters
as a file path pointing to a JSON file - #1582- Always consider
Constant
tasks successful and unpack them immediately instead of submitting them for execution - #1527
- Add
BlobStorageDownload
andBlobStorageUpload
for interacting with data stored on Azure Blob Storage - #1538 - Loosen Kubernetes Tasks' requirement of an API secret key - #1559
- Add tasks for working in Azure Machine Learning Serviec with Datastores and Datasets - #1590
- Fix issue with certain Pause / Resume / Retry pipelines retrying indefinitely - #1177
- Kubernetes Agent deployment YAML generation defaults to local Prefect version - #1573
- Fix issue with custom result handlers not working when called in
cached_inputs
- #1585
- None
- None
Released September 20, 2019
- Added Fargate agent - #1521
- Custom user-written environments can be deployed to Prefect Cloud - #1534, #1537
- Allow for Agents to correctly run in environments with differently calibrated clocks - #1402
- Refactor
RemoteEnvironment
to utilize theget_flow
storage interface - #1476 - Ensure Task logger is available in context throughout every pipeline step of the run - #1509
- Skip Docker registry pushing and pulling on empty
registry_url
attribute - #1525 - Agents now log platform errors to flow runs which cannot deploy - #1528
- Updating
ShellTask
to work more like Airflow Bash Operator for streaming logs and returning values - #1451 - Agents now have a verbose/debug logging option for granular output - #1532
DaskKubernetesEnvironment
now allows for custom scheduler and worker specs - #1543, #1537
- None
- Fix map error by removing
imagePullSecrets
from Kubernetes Agent install if not provided - #1524 - Fix issue with two INFO logs not being associated with the Task Run in Cloud - #1526
execute
CLI command can now load custom environments off of the flow object - #1534
- None
- Update
ShellTask
to return only the last line of stdout, as a string - #1451
Released September 10, 2019
- Improve Windows compatibility for local development and deploying to Prefect Cloud - #1441, #1456, #1465, #1466
- Add OS platform check to Local Agent for running on Windows machines - #1441
- Add
--base-url
argument for Docker daemons toagent start
CLI command - #1441 - Add environment labels for organizing / tagging different Flow execution environments - #1438
- Use
-U
option when installingprefect
in Docker containers to override base image version - #1461 - Remove restriction that prevented
DotDict
classes from having keys that shadowed dict methods - #1462 - Added livenessProbe to Kubernetes Agent - #1474
- Ensure external Dask Clusters do not require Prefect Cloud environment variables to run Cloud flows - #1481
- None
- Fix incorrect import in
DaskKubernetesEnvironment
job template - #1458 - Raise error on Agents started without an appropriate API token - #1459
- Fix bug when calling
as_nested_dict
onDotDicts
with anitems
key - #1462 - Fix
--resource-manager
flag on agent install invalidatingimagePullSecrets
- #1469 - Fix issue with user-written result handlers in Prefect Cloud preventing some states from being set - #1480
- None
- None
Released August 30, 2019
Maintenance release.
- Fix issue with reduced mapped tasks not respecting retries - #1436
Released August 30, 2019
- Added Local, Kubernetes, and Nomad agents - #1341
- Add the ability for Tasks to sequentially loop - #1356
- Adds a copy to clipboard button for codeblocks - #213
- Updates Vuepress to v1.0.3 - #770
- Introduce configurable default for storage class on Flows - #1044
- Allow for min and max workers to be specified in
DaskKubernetesEnvironment
- #1338 - Use task and flow names for corresponding logger names for better organization - #1355
Paused
states subclassScheduled
and can have predefined expirations - #1375- Introduce new Flow health checks prior to Cloud deployment - #1372
- Improve logging functionality to include tracebacks - #1374
- Improve CLI user experience while working with Cloud - #1384
- Users can now create projects from the CLI - #1388
- Add a health check to confirm that serialized flows are valid prior to Cloud deploy - #1397
- Add
task_slug
,flow_id
, andflow_run_id
to context - #1405 - Support persistent
scheduled_start_time
for scheduled flow runs when run locally withflow.run()
- #1418, #1429 - Add
task_args
toTask.map
- #1390 - Add auth flows for
USER
-scoped Cloud API tokens - #1423 - Add
AzureResultHandler
for handling results to / from Azure Blob storage containers - #1421 - Add new configurable
LocalDaskExecutor
- #1336 - Add CLI commands for working with Prefect Cloud auth - #1431
- Add new
SnowflakeQuery
task for using snowflake data warehouse - #1113
- Fix issue with Docker storage not respecting user-provided image names - #1335
- Fix issue with local retries in Cloud not always running in-process - #1348
- Rename
SynchronousExecutor
asLocalDaskExecutor
- #1434
- Rename
CloudEnvironment
toDaskKubernetesEnvironment
- #1250 - Remove unused
queue
method from all executors - #1434
Released August 8, 2019
- Introduce new
flows.checkpointing
configuration setting for checkpointing Tasks in local execution - #1283 - Introduce new, flexible
Schedule
objects - #1320
- Allow passing of custom headers in
Client
calls - #1255 - Autogenerate informative names and tags for Docker images built for Flow storage - #1237
- Allow mixed-case configuration keys (environment variables are interpolated as lowercase) - #1288
- Ensure state handler errors are logged informatively - #1326
- Add
BigQueryLoadGoogleCloudStorage
task for loading data into BigQuery from Google Cloud Storage #1317
- Fix issue with logs not always arriving in long-standing Dask clusters - #1244
- Fix issue with
BuildImage
docker task not actually running to completion - #1243 - Fix
run --logs
CLI command not exiting on flow run finished state - #1319
OneTimeSchedule
andUnionSchedule
are deprecated, but remain callable as convenience functions - #1320- Old-style schedules can be deserialized as new-style schedules, but support will eventually be dropped - #1320
prefect.Client.graphql()
andprefect.Client.post()
now use an explicit keyword, not**kwargs
, for variables or parameters - #1259auth add
CLI command replaced withauth login
- #1319
- None
Released July 16, 2019
- Add the Prefect CLI for working with core objects both locally and in cloud - #1059
- Add RemoteEnvironment for simple executor based executions - #1215
- Add the ability to share caches across Tasks and Flows - #1222
- Add the ability to submit tasks to specific dask workers for task / worker affinity - #1229
- Refactor mapped caching to be independent of order - #1082
- Refactor caching to allow for caching across multiple runs - #1082
- Allow for custom secret names in Result Handlers - #1098
- Have
execute cloud-flow
CLI immediately set the flow run state toFailed
if environment fails - #1122 - Validate configuration objects on initial load - #1136
- Add
auto_generated
property to Tasks for convenient filtering - #1135 - Disable dask work-stealing in Kubernetes via scheduler config - #1166
- Implement backoff retry settings on Client calls - #1187
- Explicitly set Dask keys for a better Dask visualization experience - #1218
- Implement a local cache which persists for the duration of a Python session - #1221
- Implement in-process retries for Cloud Tasks which request retry in less than one minute - #1228
- Support
Client.login()
with API tokens - #1240 - Add live log streaming for
prefect run cloud
command - #1241
- Add task to trigger AWS Step function workflow #1012
- Add task to copy files within Google Cloud Storage - #1206
- Add task for downloading files from Dropbox - #1205
- Fix issue with mapped caching in Prefect Cloud - #1096
- Fix issue with Result Handlers deserializing incorrectly in Cloud - #1112
- Fix issue caused by breaking change in
marshmallow==3.0.0rc7
- #1151 - Fix issue with passing results to Prefect signals - #1163
- Fix issue with
flow.update
not preserving mapped edges - #1164 - Fix issue with Parameters and Context not being raw dictionaries - #1186
- Fix issue with asynchronous, long-running mapped retries in Prefect Cloud - #1208
- Fix issue with automatically applied collections to task call arguments when using the imperative API - #1211
- The CLI command
prefect execute-flow
andprefect execute-cloud-flow
no longer exist - #1059 - The
slack_notifier
state handler now uses awebhook_secret
kwarg to pull the URL from a Secret - #1075 - Use GraphQL for Cloud logging - #1193
- Remove the
CloudResultHandler
default result handler - #1198 - Rename
LocalStorage
toLocal
- #1236
Released May 31, 2019
Bugfix to address an unpinned dependency
Released May 28, 2019
- Add new
UnionSchedule
for combining multiple schedules, allowing for complex schedule specifications - #428 - Allow for Cloud users to securely pull Docker images from private registries - #1028
- Add
prefect_version
kwarg toDocker
storage for controlling the version of prefect installed into your containers - #1010, #533 - Warn users if their Docker storage base image uses a different python version than their local machine - #999
- Add flow run id to k8s labels on Cloud Environment jobs / pods for easier filtering in deployment - #1016
- Allow for
SlackTask
to pull the Slack webhook URL from a custom named Secret - #1023 - Raise informative errors when Docker storage push / pull fails - #1029
- Standardized
__repr__
s for various classes, to remove inconsistencies - #617 - Allow for use of local images in Docker storage - #1052
- Allow for doc tests and doc generation to run without installing
all_extras
- #1057
- Add task for creating new branches in a GitHub repository - #1011
- Add tasks to create, delete, invoke, and list AWS Lambda functions #1009
- Add tasks for integration with spaCy pipelines #1018
- Add tasks for querying Postgres database #1022
- Add task for waiting on a Docker container to run and optionally raising for nonzero exit code - #1061
- Add tasks for communicating with Redis #1021
- Ensure that state change handlers are called even when unexpected initialization errors occur - #1015
- Fix an issue where a mypy assert relied on an unavailable import - #1034
- Fix an issue where user configurations were loaded after config interpolation had already taken place - #1037
- Fix an issue with saving a flow visualization to a file from a notebook - #1056
- Fix an issue in which mapped tasks incorrectly tried to run when their upstream was skipped - #1068
- Fix an issue in which mapped tasks were not using their caches locally - #1067
- Changed the signature of
configuration.load_configuration()
- #1037 - Local Secrets now raise
ValueError
s when not found in context - #1047
Released May 7, 2019
- Flow now has optional
storage
keyword - #936 - Flow
environment
argument now defaults to aCloudEnvironment
- #936 Queued
states acceptstart_time
arguments - #955- Add new
Bytes
andMemory
storage classes for local testing - #956, #961 - Add new
LocalEnvironment
execution environment for local testing - #957 - Add new
Aborted
state for Flow runs which are cancelled by users - #959 - Added an
execute-cloud-flow
CLI command for working with cloud deployed flows - #971 - Add new
flows.run_on_schedule
configuration option for affecting the behavior offlow.run
- #972 - Allow for Tasks with
manual_only
triggers to be root tasks - #667 - Allow compression of serialized flows #993
- Allow for serialization of user written result handlers - #623
- Allow for state to be serialized in certain triggers and cache validators - #949
- Add new
filename
keyword toflow.visualize
for automatically saving visualizations - #1001 - Add new
LocalStorage
option for storing Flows locally - #1006
- None
- Fix Docker storage not pulling correct flow path - #968
- Fix
run_flow
loading to decode properly by use cloudpickle - #978 - Fix Docker storage for handling flow names with spaces and weird characters - #969
- Fix non-deterministic issue with mapping in the DaskExecutor - #943
- Remove
flow.id
andtask.id
attributes - #940 - Removed old WIP environments - #936 (Note: Changes from #936 regarding environments don't break any Prefect code because environments weren't used yet outside of Cloud.)
- Update
flow.deploy
andclient.deploy
to useset_schedule_active
kwarg to match Cloud - #991 - Removed
Flow.generate_local_task_ids()
- #992
- None
Released April 19, 2019
- Implement two new triggers that allow for specifying bounds on the number of failures or successes - #933
DaskExecutor(local_processes=True)
supports timeouts - #886- Calling
Secret.get()
from within a Flow context raises an informative error - #927 - Add new keywords to
Task.set_upstream
andTask.set_downstream
for handling keyed and mapped dependencies - #823 - Downgrade default logging level to "INFO" from "DEBUG" - #935
- Add start times to queued states - #937
- Add
is_submitted
to states - #944 - Introduce new
ClientFailed
state - #938
- Add task for sending Slack notifications via Prefect Slack App - #932
- Fix issue with timeouts behaving incorrectly with unpickleable objects - #886
- Fix issue with Flow validation being performed even when eager validation was turned off - #919
- Fix issue with downstream tasks with
all_failed
triggers running if an upstream Client call fails in Cloud - #938
- Remove
prefect make user config
from cli commands - #904 - Change
set_schedule_active
keyword in Flow deployments toset_schedule_inactive
to match Cloud - #941
- None
Released April 4, 2019
- API reference documentation is now versioned - #270
- Add
S3ResultHandler
for handling results to / from S3 buckets - #879 - Add ability to use
Cached
states across flow runs in Cloud - #885
- Bump to latest version of
pytest
(4.3) - #814 Client.deploy
accepts optionalbuild
kwarg for avoiding building Flow environment - #876- Bump
distributed
to 1.26.1 for enhanced security features - #878 - Local secrets automatically attempt to load secrets as JSON - #883
- Add task logger to context for easily creating custom logs during task runs - #884
- Add
ParseRSSFeed
for parsing a remote RSS feed - #856 - Add tasks for working with Docker containers and imaged - #864
- Add task for creating a BigQuery table - #895
- Only checkpoint tasks if running in cloud - #839, #854
- Adjusted small flake8 issues for names, imports, and comparisons - #849
- Fix bug preventing
flow.run
from properly using cached tasks - #861 - Fix tempfile usage in
flow.visualize
so that it runs on Windows machines - #858 - Fix issue caused by Python 3.5.2 bug for Python 3.5.2 compatibility - #857
- Fix issue in which
GCSResultHandler
was not pickleable - #879 - Fix issue with automatically converting callables and dicts to tasks - #894
- Change the call signature of
Dict
task fromrun(**task_results)
torun(keys, values)
- #894
Released March 24, 2019
- Add
checkpoint
option for individualTask
s, as well as a globalcheckpoint
config setting for storing the results of Tasks using their result handlers - #649 - Add
defaults_from_attrs
decorator to easily constructTask
s whose attributes serve as defaults forTask.run
- #293 - Environments follow new hierarchy (PIN-3) - #670
- Add
OneTimeSchedule
for one-time execution at a specified time - #680 flow.run
is now a blocking call which will run the Flow, on its schedule, and execute full state-based execution (including retries) - #690- Pre-populate
prefect.context
with various formatted date strings during execution - #704 - Add ability to overwrite task attributes such as "name" when calling tasks in the functional API - #717
- Release Prefect Core under the Apache 2.0 license - #762
- Refactor all
State
objects to store fully hydratedResult
objects which track information about how results should be handled - #612, #616 - Add
google.cloud.storage
as an optional extra requirement so that theGCSResultHandler
can be exposed better - #626 - Add a
start_time
check for Scheduled flow runs, similar to the one for Task runs - #605 - Project names can now be specified for deployments instead of IDs - #633
- Add a
createProject
mutation function to the client - #633 - Add timestamp to auto-generated API docs footer - #639
- Refactor
Result
interface intoResult
andSafeResult
- #649 - The
manual_only
trigger will pass ifresume=True
is found in context, which indicates that aResume
state was passed - #664 - Added DockerOnKubernetes environment (PIN-3) - #670
- Added Prefect docker image (PIN-3) - #670
defaults_from_attrs
now accepts a splatted list of arguments - #676- Add retry functionality to
flow.run(on_schedule=True)
for local execution - #680 - Add
helper_fns
keyword toShellTask
for pre-populating helper functions to commands - #681 - Convert a few DEBUG level logs to INFO level logs - #682
- Added DaskOnKubernetes environment (PIN-3) - #695
- Load
context
from Cloud when running flows - #699 - Add
Queued
state - #705 flow.serialize()
will always serialize its environment, regardless ofbuild
- #696flow.deploy()
now raises an informative error if your container cannot deserialize the Flow - #711- Add
_MetaState
as a parent class for states that modify other states - #726 - Add
flow
keyword argument toTask.set_upstream()
andTask.set_downstream()
- #749 - Add
is_retrying()
helper method to allState
objects - #753 - Allow for state handlers which return
None
- #753 - Add daylight saving time support for
CronSchedule
- #729 - Add
idempotency_key
andcontext
arguments toClient.create_flow_run
- #757 - Make
EmailTask
more secure by pulling credentials from secrets - #706
- Add
GCSUpload
andGCSDownload
for uploading / retrieving string data to / from Google Cloud Storage - #673 - Add
BigQueryTask
andBigQueryInsertTask
for executing queries against BigQuery tables and inserting data - #678, #685 - Add
FilterTask
for filtering out lists of results - #637 - Add
S3Download
andS3Upload
for interacting with data stored on AWS S3 - #692 - Add
AirflowTask
andAirflowTriggerDAG
tasks to the task library for running individual Airflow tasks / DAGs - #735 - Add
OpenGitHubIssue
andCreateGitHubPR
tasks for interacting with GitHub repositories - #771 - Add Kubernetes tasks for deployments, jobs, pods, and services - #779
- Add Airtable tasks - #803
- Add Twitter tasks - #803
- Add
GetRepoInfo
for pulling GitHub repository information - #816
- Fix edge case in doc generation in which some
Exception
s' call signature could not be inspected - #513 - Fix bug in which exceptions raised within flow runner state handlers could not be sent to Cloud - #628
- Fix issue wherein heartbeats were not being called on a fixed interval - #669
- Fix issue wherein code blocks inside of method docs couldn't use
**kwargs
- #658 - Fix bug in which Prefect-generated Keys for S3 buckets were not properly converted to strings - #698
- Fix next line after Docker Environment push/pull from overwriting progress bar - #702
- Fix issue with
JinjaTemplate
not being pickleable - #710 - Fix issue with creating secrets from JSON documents using the Core Client - #715
- Fix issue with deserialization of JSON secrets unnecessarily calling
json.loads
- #716 - Fix issue where
IntervalSchedules
didn't respect daylight saving time after serialization - #729
- Remove the
BokehRunner
and associated webapp - #609 - Rename
ResultHandler
methods fromserialize
/deserialize
towrite
/read
- #612 - Refactor all
State
objects to store fully hydratedResult
objects which track information about how results should be handled - #612, #616 Client.create_flow_run
now returns a string instead of aGraphQLResult
object to match the API ofdeploy
- #630flow.deploy
andclient.deploy
require aproject_name
instead of an ID - #633- Upstream state results now take precedence for task inputs over
cached_inputs
- #591 - Rename
Match
task (used inside control flow) toCompareValue
- #638 Client.graphql()
now returns a response with up to two keys (data
anderrors
). Previously thedata
key was automatically selected - #642ContainerEnvironment
was changed toDockerEnvironment
- #670- The environment
from_file
was moved toutilities.environments
- #670 - Removed
start_tasks
argument fromFlowRunner.run()
andcheck_upstream
argument fromTaskRunner.run()
- #672 - Remove support for Python 3.4 - #671
flow.run
is now a blocking call which will run the Flow, on its schedule, and execute full state-based execution (including retries) - #690- Remove
make_return_failed_handler
asflow.run
now returns all task states - #693 - Refactor Airflow migration tools into a single
AirflowTask
in the task library for running individual Airflow tasks - #735 name
is now required on all Flow objects - #732- Separate installation "extras" packages into multiple, smaller extras - #739
Flow.parameters()
always returns a set of parameters - #756
Released January 31, 2019
- Add ability to run scheduled flows locally via
on_schedule
kwarg inflow.run()
- #519 - Allow tasks to specify their own result handlers, ensure inputs and outputs are stored only when necessary, and ensure no raw data is sent to the database - #587
- Allow for building
ContainerEnvironment
s locally without pushing to registry - #514 - Make mapping more robust when running children tasks multiple times - #541
- Always prefer
cached_inputs
over upstream states, if available - #546 - Add hooks to
FlowRunner.initialize_run()
for manipulating task states and contexts - #548 - Improve state-loading strategy for Prefect Cloud - #555
- Introduce
on_failure
kwarg to Tasks and Flows for user-friendly failure callbacks - #551 - Include
scheduled_start_time
in context for Flow runs - #524 - Add GitHub PR template - #542
- Allow flows to be deployed to Prefect Cloud without a project id - #571
- Introduce serialization schemas for ResultHandlers - #572
- Add new
metadata
attribute to States for managing user-generated results - #573 - Add new 'JSONResultHandler' for serializing small bits of data without external storage - #576
- Use
JSONResultHandler
for all Parameter caching - #590
- Fixed
flow.deploy()
attempting to access a nonexistent string attribute - #503 - Ensure all logs make it to the logger service in deployment - #508, #552
- Fix a situation where
Paused
tasks would be treated asPending
and run - #535 - Ensure errors raised in state handlers are trapped appropriately in Cloud Runners - #554
- Ensure unexpected errors raised in FlowRunners are robustly handled - #568
- Fixed non-deterministic errors in mapping caused by clients resolving futures of other clients - #569
- Older versions of Prefect will now ignore fields added by newer versions when deserializing objects - #583
- Result handler failures now result in clear task run failures - #575
- Fix issue deserializing old states with empty metadata - #590
- Fix issue serializing
cached_inputs
- #594
- Move
prefect.client.result_handlers
toprefect.engine.result_handlers
- #512 - Removed
inputs
kwarg fromTaskRunner.run()
- #546 - Moves the
start_task_ids
argument fromFlowRunner.run()
toEnvironment.run()
- #544, #545 - Convert
timeout
kwarg fromtimedelta
tointeger
- #540 - Remove
timeout
kwarg fromexecutor.wait
- #569 - Serialization of States will ignore any result data that hasn't been processed - #581
- Removes
VersionedSchema
in favor of implicit versioning: serializers will ignore unknown fields and thecreate_object
method is responsible for recreating missing ones - #583 - Convert and rename
CachedState
to a successful state namedCached
, and also remove the superfluouscached_result
attribute - #586
Released January 8, 2019
- Add support for Prefect Cloud - #374, #406, #473, #491
- Add versioned serialization schemas for
Flow
,Task
,Parameter
,Edge
,State
,Schedule
, andEnvironment
objects - #310, #318, #319, #340 - Add ability to provide
ResultHandler
s for storing private result data - #391, #394, #430 - Support depth-first execution of mapped tasks and tracking of both the static "parent" and dynamic "children" via
Mapped
states - #485
- Add new
TimedOut
state for task execution timeouts - #255 - Use timezone-aware dates throughout Prefect - #325
- Add
description
andtags
arguments toParameters
- #318 - Allow edge
key
checks to be skipped in order to create "dummy" flows from metadata - #319 - Add new
names_only
keyword toflow.parameters
- #337 - Add utility for building GraphQL queries and simple schemas from Python objects - #342
- Add links to downloadable Jupyter notebooks for all tutorials - #212
- Add
to_dict
convenience method forDotDict
class - #341 - Refactor requirements to a custom
ini
file specification - #347 - Refactor API documentation specification to
toml
file - #361 - Add new SQLite tasks for basic SQL scripting and querying - #291
- Executors now pass
map_index
into theTaskRunner
s - #373 - All schedules support
start_date
andend_date
parameters - #375 - Add
DateTime
marshmallow field for timezone-aware serialization - #378 - Adds ability to put variables into context via the config - #381
- Adds new
client.deploy
method for adding new flows to the Prefect Cloud - #388 - Add
id
attribute toTask
class - #416 - Add new
Resume
state for resuming fromPaused
tasks - #435 - Add support for heartbeats - #436
- Add new
Submitted
state for signaling thatScheduled
tasks have been handled - #445 - Add ability to add custom environment variables and copy local files into
ContainerEnvironment
s - #453 - Add
set_secret
method to Client for creating and setting the values of user secrets - #452 - Refactor runners into
CloudTaskRunner
andCloudFlowRunner
classes - #431 - Added functions for loading default
engine
classes from config - #477
- Fixed issue with
GraphQLResult
reprs - #374 CronSchedule
produces expected results across daylight savings time transitions - #375utilities.serialization.Nested
properly respectsmarshmallow.missing
values - #398- Fixed issue in capturing unexpected mapping errors during task runs - #409
- Fixed issue in
flow.visualize()
so that mapped flow states can be passed and colored - #387 - Fixed issue where
IntervalSchedule
was serialized at "second" resolution, not lower - #427 - Fixed issue where
SKIP
signals were preventing multiple layers of mapping - #455 - Fixed issue with multi-layer mapping in
flow.visualize()
- #454 - Fixed issue where Prefect Cloud
cached_inputs
weren't being used locally - #434 - Fixed issue where
Config.set_nested
would have an error if the provided key was nested deeper than an existing terminal key - #479 - Fixed issue where
state_handlers
were not called for certain signals - #494
- Remove
NoSchedule
andDateSchedule
schedule classes - #324 - Change
serialize()
method to use schemas rather than custom dict - #318 - Remove
timestamp
property fromState
classes - #305 - Remove the custom JSON encoder library at
prefect.utilities.json
- #336 flow.parameters
now returns a set of parameters instead of a dictionary - #337- Renamed
to_dotdict
->as_nested_dict
- #339 - Moved
prefect.utilities.collections.GraphQLResult
toprefect.utilities.graphql.GraphQLResult
- #371 SynchronousExecutor
now does not do depth first execution for mapped tasks - #373- Renamed
prefect.utilities.serialization.JSONField
->JSONCompatible
, removed itsmax_size
feature, and no longer automatically serialize payloads as strings - #376 - Renamed
prefect.utilities.serialization.NestedField
->Nested
- #376 - Renamed
prefect.utilities.serialization.NestedField.dump_fn
->NestedField.value_selection_fn
for clarity - #377 - Local secrets are now pulled from
secrets
in context instead of_secrets
- #382 - Remove Task and Flow descriptions, Flow project & version attributes - #383
- Changed
Schedule
parameter fromon_or_after
toafter
- #396 - Environments are immutable and return
dict
keys instead ofstr
; some arguments forContainerEnvironment
are removed - #398 environment.run()
andenvironment.build()
; removed theflows
CLI and replaced it with a top-level CLI command,prefect run
- #400- The
set_temporary_config
utility now accepts a single dict of multiple config values, instead of just a key/value pair, and is located inutilities.configuration
- #401 - Bump
click
requirement to 7.0, which changes underscores to hyphens at CLI - #409 IntervalSchedule
rejects intervals of less than one minute - #427FlowRunner
returns aRunning
state, not aPending
state, when flows do not finish - #433- Remove the
task_contexts
argument fromFlowRunner.run()
- #440 - Remove the leading underscore from Prefect-set context keys - #446
- Removed throttling tasks within the local cluster - #470
- Even
start_tasks
will not run before their state'sstart_time
(if the state isScheduled
) - #474 DaskExecutor
's "processes" keyword argument was renamed "local_processes" - #477- Removed the
mapped
andmap_index
kwargs fromTaskRunner.run()
. These values are now inferred automatically - #485 - The
upstream_states
dictionary used by the Runners only includesState
values, not lists ofStates
. The use case that required lists ofStates
is now covered by theMapped
state. - #485
Released October 30, 2018
- Refactor
FlowRunner
andTaskRunner
into a modularRunner
pipelines - #260, #267 - Add configurable
state_handlers
forFlowRunners
,Flows
,TaskRunners
, andTasks
- #264, #267 - Add gmail and slack notification state handlers w/ tutorial - #274, #294
- Add a new method
flow.get_tasks()
for easily filtering flow tasks by attribute - #242 - Add new
JinjaTemplate
for easily rendering jinja templates - #200 - Add new
PAUSE
signal for halting task execution - #246 - Add new
Paused
state corresponding toPAUSE
signal, and newpause_task
utility - #251 - Add ability to timeout task execution for all executors except
DaskExecutor(processes=True)
- #240 - Add explicit unit test to check Black formatting (Python 3.6+) - #261
- Add ability to set local secrets in user config file - #231, #274
- Add
is_skipped()
andis_scheduled()
methods forState
objects - #266, #278 - Adds
now()
as a defaultstart_time
forScheduled
states - #278 Signal
classes now pass arguments to underlyingState
objects - #279- Run counts are tracked via
Retrying
states - #281
- Flow consistently raises if passed a parameter that doesn't exist - #149
- Renamed
scheduled_time
->start_time
inScheduled
state objects - #278 TaskRunner.check_for_retry
no longer checks forRetry
states withoutstart_time
set - #278- Swapped the position of
result
andmessage
attributes in State initializations, and started storing caught exceptions as results - #283
Released October 2, 2018
- Local parallelism with
DaskExecutor
- #151, #186 - Resource throttling based on
tags
- #158, #186 Task.map
for mapping tasks - #186- Added
AirFlow
utility for importing Airflow DAGs as Prefect Flows - #232
- Use Netlify to deploy docs - #156
- Add changelog - #153
- Add
ShellTask
- #150 - Base
Task
class can now be run as a dummy task - #191 - New
return_failed
keyword toflow.run()
for returning failed tasks - #205 - some minor changes to
flow.visualize()
for visualizing mapped tasks and coloring nodes by state - #202 - Added new
flow.replace()
method for swapping out tasks within flows - #230 - Add
debug
kwarg toDaskExecutor
for optionally silencing dask logs - #209 - Update
BokehRunner
for visualizing mapped tasks - #220 - Env var configuration settings are typed - #204
- Implement
map
functionality for theLocalExecutor
- #233
- Fix issue with Versioneer not picking up git tags - #146
DotDicts
can have non-string keys - #193- Fix unexpected behavior in assigning tags using contextmanagers - #190
- Fix bug in initialization of Flows with only
edges
- #225 - Remove "bottleneck" when creating pipelines of mapped tasks - #224
- Runner refactor - #221
- Cleaned up signatures of
TaskRunner
methods - #171 - Locally, Python 3.4 users can not run the more advanced parallel executors (
DaskExecutor
) #186
Released September 6, 2018
- Support for user configuration files - #195
- None
- None
Released August 20, 2018
- BokehRunner - #104, #128
- Control flow:
ifelse
,switch
, andmerge
- #92 - Set state from
reference_tasks
- #95, #137 - Add flow
Registry
- #90 - Output caching with various
cache_validators
- #84, #107 - Dask executor - #82, #86
- Automatic input caching for retries, manual-only triggers - #78
- Functional API for
Flow
definition State
classesSignals
to transmitState
- Add custom syntax highlighting to docs - #141
- Add
bind()
method for tasks to call without copying - #132 - Cache expensive flow graph methods - #125
- Docker environments - #71
- Automatic versioning via Versioneer - #70
TriggerFail
state - #67- State classes - #59
- None
- None