Skip to content

@kirsle kirsle released this Apr 10, 2020


1.15.0 - Mar 29 2020

This release provides a major (~5x) speedup for RiveScripts that have
a large number of substitutions, and also fixes the following issues:

  • Add a prepare_brain_transplant method to clear the RiveScript brain
    in preparation to load in a new one, while optionally preserving
    much of the current state (enh #81)
  • Implement the trigger_info method (bug #120)
  • Fix the issue of a "=" appearing in a variable value (bug #130)
  • Allow nested brackets (bug #132)
  • Fix trigger sorting to only count the existance of stars, optionals,
    etc. instead of how many there are in a trigger (bug #133)
  • Fix the debug message for incomment (bug #138)
  • Fix substitutions if they occur more than 3 times on a line (bug #140)
  • Fix crash in set_substitution method (bug #142)
  • Fix issue in set_person method (bug #143)
  • Significantly improve code coverage of tests (add
Assets 3

@kirsle kirsle released this Sep 21, 2017


This release fixes some regular expressions and adds better Unicode
compatibility for trigger matching.

  • Fix the regexp that matches {weight} tags in replies to use
    instead of re.match(). This ensures that random replies are chosen with the
    correct weighting applied (bug #102; PR #106)
  • Fix the way arrays are interpolated into triggers so that array names are
    now allowed to contain underscores (bug #101; PR #107)
  • Fix Unicode handling in regular expressions by using the re.UNICODE flag.
    This allows for a trigger containing optionals, like [*], to match
    correctly when adjacent to Unicode symbols such as umlauts (bug #37; PR #108)
Assets 3

@kirsle kirsle released this Sep 5, 2017


This release focuses on bug fixes and backwards compatible improvements.

  • Improvements to the new trigger sorting algorithm:
    • Triggers containing no text (wildcards only) are sorted nearer to the end
      (bug #94)
  • Trigger components containing an empty string between pipes (e.g. [|]) now
    raises a syntax error at parsing time (bug #87)
  • Fix the parsing of ^ when used on a +Trigger not being fully evaluated
    before syntax checking for the trigger was done (bug #86)
  • Remove extra space characters inside optionals (bug #98)
  • Improve the syntax checker by having it raise errors when certain "tag
    characters" are mismatched or opened and closed in the wrong order -- for
    example {<}> (PR #103)
  • Fix the deparse() and write() functions so they work again with the
    latest version of RiveScript (bug #76)
Assets 3

@kirsle kirsle released this May 19, 2017


  • Various fixes and improvements that catch RiveScript-Python up with the other
    implementations, to pass the RiveScript Test Suite (PR #89):
    • Implement arrays in replies -- so you could write a reply like
      My favorite color is (@colors) and the array gets expanded to a random
      item from the !array by the same name.
    • Fix the regexp for {weight} tag removal so that it still works if you
      include extra spaces on either end of the tag.
    • Fix the _ wildcard to allow matching Unicode letters.
    • Fix division with the <div> tag to use integer division for Python 3.
  • Improvements to the trigger sorting algorithm:
    • Add special handling so that a trigger of [*] gets sorted above the
      usual catch-all trigger of * (PR #92)
    • Fix a logic bug with bitwise operators for handling the case that a trigger
      contains * wildcards but does not contain any optionals or wildcards of
      different types (bug #90, PR #91)
Assets 4

@kirsle kirsle released this Mar 23, 2017


  • Fix regexp for validating RiveScript syntax to use instead of
    re.match (bug #82).
  • Allow object macros to contain capital letters in their names (PR #83).
Assets 4

@kirsle kirsle released this Feb 21, 2017


  • Bugfix when storing the user's last_match variable when a %Previous is
    active (it was storing a regexp object and not a string), to help third party
    session drivers (e.g. Redis) to work.
Assets 4

@kirsle kirsle released this Dec 14, 2016


  • Fix the last_match() function so that it returns None when there was no
    match instead of "undefined" (PR #63).
  • Strip leading and trailing whitespace from user messages, and consolidate
    repeated whitespace into a single space character (PR #62).
Assets 4

@kirsle kirsle released this Dec 8, 2016


1.14.3 Dec 8 2016

  • Fix sorting algorithm for triggers with %Previous, making their sort order
    deterministic and correct regardless of the order they appeared in the
    source file (PR #60; bug #59)
  • Fix a possible crash when interpolating a <star> tag when the trigger
    had captured no stars. In this cases the <star> tag will become the string
    "None"; it is a user error that this situation arises anyway and this fix
    just prevents Python from crashing (bugs #51 and #54)
  • Fix a possible crash when calling random.choice on an empty list by
    wrapping it in a safety function at rivescript.utils.random_choice
    (bug #36)
  • Better error reporting on the JSON Interactive Mode: if there is an
    exception raised when decoding the input JSON, the output JSON now contains
    an error key with the text of the exception to help diagnose what went
Assets 4

@kirsle kirsle released this Oct 18, 2016


1.14.2 Oct 18 2016

  • Fix numeric tags like <add> raising a TypeError exception.
Assets 4

@kirsle kirsle released this Aug 9, 2016


1.14.1 Aug 9 2016

  • Fix a regression when handling Unicode strings under Python 2 (bug #40).
Assets 4