Releases: PrefectHQ/prefect
Releases · PrefectHQ/prefect
Version 0.4.1
Major Features
- 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
Minor Features
- 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
Fixes
- 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
Breaking Changes
- 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
Version 0.4.0
Major Features
- 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
Minor Features
- 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
Fixes
- 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
Breaking Changes
- 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
Version 0.3.3
Major Features
- 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
Minor Features
- Add a new method
flow.get_tasks()
for easily filtering flow tasks by attribute - #242 - Add new
JinjaTemplateTask
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
Fixes
- Flow consistently raises if passed a parameter that doesn't exist - #149
Breaking Changes
Version 0.3.2
Major Features
- 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
Minor Features
- 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
Fixes
- 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
Breaking Changes
Version 0.3.1
Version 0.3.0
Major Features
- 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
Minor Features
- 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
Fixes
- None
Breaking Changes
- None