These changes are available in the master branch.
- None
- 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
- None
- Fix defaults for unspecified ARNs in the Fargate Agent - #1634
- Fix ShellTask return value on empty stdout - #1632
- None
kubernetes
is no longer installed by default in deployed flow images - #1653
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
- 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 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