Changelog
This release includes a huge rework of core library features.
It is highly recommended to reread documentation relating to scripting.
(basic concepts user guide; script and pipeline (now service) tutorials)
Changes in bold indicate new changes compared to the previous pre-release (v1.0.0rc1).
Breaking Changes
- Removed
Pipeline.from_script
. Use__init__
instead (#372) - All conditions (standard and slot) moved to
chatsky.conditions
(#381) - All labels (standard) moved to
chatsky.destinations
(#381) - All processing functions (slot) moved to
chatsky.processing
(#381) - All responses (standard and slot) moved to
chatsky.responses
(#381) - All conditions, destinations, processing functions, responses are now upper camel case (#381)
script.core
module moved tochatsky.core
(#381)Pipeline
moved tochatsky.core
(#381)pipeline.service
submodule moved tochatsky.core.service
(#381)- Added class
Transition
.TRANSITIONS
is now a list of such objects instead of a dict.
Destination, condition and priority are all fields of this class. Priority is now separate from node label (#381) - Removed
cnd.true
andcnd.false
. Condition field ofTransition
now acceptsTrue
andFalse
literals.
If condition field ofTransition
is not set, it defaults toTrue
. (#381) - Removed
lbl.repeat
renamed todst.Current
. Addeddst.FromHistory
to get labels from history pastdst.Previous
. (#381) - Custom script functions now have to be subclassed from
BaseScriptFunction
.
e.g. custom response function now have to be subclassed fromBaseResponse
. (#381) - All keywords from
chatsky.script.core.keywords
moved tochatsky.core.script
(#381) PRE_TRANSITIONS_PROCESSING
renamed toPRE_TRANSITION
(#381)PRE_RESPONSE_PROCESSING
renamed toPRE_RESPONSE
(#381)- Removed
chatsky.utils.turn_caching
(#381) - Turn id
0
is now reserved for start label. Actual turns start at id 1.
Context has methodinit
to init from a start label (#381) - Removed
proc.ExtractAll
-- the function is unsafe as it overwrites the entire slot storage. it is still available as method of the slot manager (#385) - The order of execution for pre-transition, pre-response processing is reversed: global processings will be the last ones. (#387)
- Service changes: (#378)
- Pipeline no longer has
optimization_warnings
option -- not necessary with the service changes - Pipeline service group now has an empty name
- Removed
Pipeline.add_global_handler
-- usePipeline.services_pipeline.add_extra_handler
instead - Replaced async flags with
concurrent
flag for components - Removed
pipeline
from component and extra handler arguments. Usectx.pipeline
instead - Component start condition now accepts
BaseCondition
instead of functions - Changed the logic behind giving names to components with no name
- Removed
GlobalExtraHandlerType
:add_extra_handler
acceptsExtraHandlerType
instead - Removed ServiceRuntimeInfo: now
Service
can be subclassed allowing access to its fields - Extra handler runtime info now does not contain
func
andcomponent
is the instance of the component
- Pipeline no longer has
Features
RESPONSE
can now be a string. It will be converted toMessage(text=)
automatically (#381)- Custom functions do validation (e.g. response function can now return a string and it will be cast to
Message
) (#381) - Current instance of
Pipeline
can now be accessed viaContext.pipeline
(#381) - Added
NodeLabel
class to replace tuple node labels (#381) - Added method
Script.get_inherited_node
to get a node that inherits global and local properties.
ctx.current_node
is obtained via this method (#381) - Renamed response_comparer of
check_happy_path
to response_comparator, removed default comparators, removed context from signature;
messages inhappy_path
can now be any ofMessage
,dict
,str
;
printout_enable
flag renamed toprintout
and madeFalse
by default. (#381) - Added
ModifyResponse
base processing class which allows modifying current node response. (#381) - Added Pipeline from file import (#385)
- Added function that creates an index of commonly-used Chatsky objects (#385)
ServiceFinished
condition now has an option to wait for the specified component to complete; Service states are now initialized before services are executed (#378)
Fixes
- Slot template filling now works for numerical slot names (e.g.
slot_name="0"
) (#381) - Slot Groups can now be initialized from a dictionary (#381)
- Exceptions in user functions are now properly handled: (#381)
- response errors result in an empty message
- processing errors are ignored
- transition errors mark that specific transition as failed
- Slot extraction will now not write the value to the slot storage if value was not successfully extracted. Can be changed via the
success_only
flag (#385) - Service component timeout is now always applied (#378)
- Unsuccessful stat extraction no longer fails the component (#378)
Documentation
- Pipeline tutorials renamed to service tutorials and rewritten for more clarity (#378)
- Some improvements to basic conceptions user guide and global tutorial (#381)
- Added a tip on getting previous nodes to pre transition tutorial (#381)
- Removed
responses.1_basics
tutorial (#381) - Updated copyright year (a7df04a)
- Updated logos (8649446)
Devel
Pipeline
and all its components are nowBaseModel
s (#372)- Added
log_event_catcher
fixture to help test captured logs (#381) - Added
TYPE_CHECKING
exclude from coverage; now only certain exception raises are excluded from coverage (#381) - Removed
run_interactive_mode
. Just usepipeline.run()
. (#381) - Removed Annotated values with pickle serializer/validators. Better to use field_validators/field_serializers to preserve model schema (#381)
- Added
InitTypes
for various BaseModels to indicate types that can be validated into that model (#381) Actor
now doesn't have any parameters (#381)normalization
utils replaced with pydantic validators (#381)- An instance of
Script
can now be validated from a script dict (without thescript
field) (#381) - Removed
Context.cast
. Usemodel_validate
andmodel_validate_json
instead. (#381) - Added aliases to script keywords (#385)
FrameworkData.service_states
now contains objects of a new classServiceState
(#378)- Added support for non-function callables for
wrap_sync_function_in_async
(#378)