Skip to content

Releases: deeppavlov/chatsky

v0.9.0

27 Sep 22:16
8ea8c7a
Compare
Choose a tag to compare

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)

v0.7.2

18 Sep 18:52
fe78537
Compare
Choose a tag to compare

Fixes #391 -- pyTelegramBotAPI update

v0.6.5

18 Sep 18:37
84946e4
Compare
Choose a tag to compare

Fixes #391 -- pyTelegramBotAPI update

v1.0.0rc1

07 Sep 22:26
60a1887
Compare
Choose a tag to compare

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 tutorials)

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)

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)

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)

Documentation

  • 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)

Chatsky release

03 Jul 14:53
dfefedb
Compare
Choose a tag to compare

Changelog

General

  • Framework renamed from DFF to Chatsky (#368)

Features

  • New has_text condition for asserting that specific text is contained inside the last request (#335)
  • Validation stage reworked.
    Pipeline.validation_stage, Pipeline.verbose and Context.validation fields are removed.
    Added new type for annotating labels dff.script.ConstLabel (#289)
  • Functions cnd.exact_match and check_happy_path now accept both Message and str.
    The following are now equivalent: exact_match(Message("text")) == exact_match("text")
    (#337)
  • CLIMessengerInterface moved to messengers.console (#328)
  • Attachments reworked (#328):
    • Session, Command, Link, Button, Keyboard and Attachments classes removed, Message.commands field removed.
    • Added CallbackQuery, Contact, Invoice, Poll, Animation, Sticker, VoiceMessage, VideoMessage and MediaGroup classes.
    • Added attachment caching feature.
    • Added has_callback_query condition.
    • Removed title field from Data Attachments. Use caption instead.
  • Telegram Messenger interface reworked (#328):
    • Now provides methods for attachment byte download.
    • Added support for receiving attachment types as members of Message.attachments. Others may be accessed via Message.original_message.
    • Added support for sending new attachment types (Sticker, Poll, e.t.c.).
    • Added support for extra options such as disable_notification, message_effect_id or caption.
    • Telegram tutorials rewritten to reflect all the changes.
  • Added slots that simplify the process of extracting arbitrary data from user messages and accessing it later (#36):
    • New user guide and tutorials on slots

Documentation

  • Return PRE_RESPONSE_PROCESSING and PRE_TRANSITION_PROCESSING tutorials
  • New telegram interface tutorials (#328)
  • Slots user guide and tutorials (#36)

Contrib

  • Added poe quick_test to run tests that are not slow and do not require docker (#344)
  • Context.framework_states renamed to Context.framework_data and made Pydantic.BaseModel (#359)
  • Added MessengerInterfaceWithAttachments class (#328)
  • Added tools for enabling json serialization via pickle (#328)
  • Telegram tests made independent from telegram servers (#328)
  • wrap_sync_function_in_async moved to utils.devel (#36)

Script Parser (DEV RELEASE)

27 May 10:21
ce18579
Compare
Choose a tag to compare
Pre-release
v0.6.4.dev0

prepare parser for dev release

Release v0.7.0

01 Mar 20:06
224eaf1
Compare
Choose a tag to compare

Release Notes

Deprecations

  • Remove MultiMessage #330. See the corresponding tutorial for an alternative.
  • Validation Stage now does not run user functions #331. It is no longer necessary to use ctx.validation.
  • Tutorials for PRE_TRANSITION_PROCESSING and PRE_RESPONSE_PROCESSING are removed 08672c0. The support for these keywords will be removed in a later release.

Improvements

  • Update user function signatures (allow any such function to be async; remove *args, **kwargs; Context is no longer supported as a return argument, modify it in-place instead) #253
  • Add more info for the README file #294 #295
  • Allow initializing Message class without specifying the first argument as text (e.g. Message("Hi")) #327
  • More verbose exception logging e968fd0
  • Switch to poetry #132. CONTRIBUTING.md has been updated to reflect the changes in our workflow.
  • Pipeline typing improvements #310

Release v0.6.4

11 Dec 15:32
d388322
Compare
Choose a tag to compare

Release Notes

  • Fix attachment sending via Telegram interfaces (81673b5)
  • Fix PollingTelegramInterface dying whenever an error occurred while responding (ec19921)
  • Fix Pipeline._run_pipeline failing when ctx_id=None (5c22cc7)
  • Docker improvements (#279)
  • Various tutorial improvements
  • Add release checklist

Release v0.6.3

21 Nov 16:53
Compare
Choose a tag to compare

Release notes

Release v0.6.2

10 Nov 10:45
8b397d0
Compare
Choose a tag to compare

Release notes

dff.stats

  • Fix tests for statistics module (#272)
  • Dashboard config now persists after restart (#227)
  • Fix several bugs with SQL statements for datasets (#227)
  • Update guide with information about custom charts (#227)
  • Add text descriptions for charts in dashboard (#227)
  • Various chart fixes (#227)

Other

  • Update PR template (#258)
  • Small doc fixes