Skip to content

v0.9.0

Latest
Compare
Choose a tag to compare
@RLKRo RLKRo released this 27 Sep 22:16
· 2 commits to master since this release
8ea8c7a

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 to chatsky.core (#381)
  • Pipeline moved to chatsky.core (#381)
  • pipeline.service submodule moved to chatsky.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 and cnd.false. Condition field of Transition now accepts True and False literals.
    If condition field of Transition is not set, it defaults to True. (#381)
  • Removed lbl.repeat renamed to dst.Current. Added dst.FromHistory to get labels from history past dst.Previous. (#381)
  • Custom script functions now have to be subclassed from BaseScriptFunction.
    e.g. custom response function now have to be subclassed from BaseResponse. (#381)
  • All keywords from chatsky.script.core.keywords moved to chatsky.core.script (#381)
  • PRE_TRANSITIONS_PROCESSING renamed to PRE_TRANSITION (#381)
  • PRE_RESPONSE_PROCESSING renamed to PRE_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 method init 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 -- use Pipeline.services_pipeline.add_extra_handler instead
    • Replaced async flags with concurrent flag for components
    • Removed pipeline from component and extra handler arguments. Use ctx.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 accepts ExtraHandlerType instead
    • Removed ServiceRuntimeInfo: now Service can be subclassed allowing access to its fields
    • Extra handler runtime info now does not contain func and component is the instance of the component

Features

  • RESPONSE can now be a string. It will be converted to Message(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 via Context.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 in happy_path can now be any of Message, dict, str;
    printout_enable flag renamed to printout and made False 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 now BaseModels (#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 use pipeline.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 the script field) (#381)
  • Removed Context.cast. Use model_validate and model_validate_json instead. (#381)
  • Added aliases to script keywords (#385)
  • FrameworkData.service_states now contains objects of a new class ServiceState (#378)
  • Added support for non-function callables for wrap_sync_function_in_async (#378)