Em-aiml

Latest version: v1.0.1

Safety actively analyzes 681866 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 3

0.8.2

- Added protection against infinite AIML recursion.
- Removed the deprecated Kernel.getBotName and Kernel.setBotName functions.
- Added workaround for Unicode input crash. Feeding the Kernel Unicode
input no longer crashes the interpreter, but some internal input-formatting
operations must be skipped, which could cause some nonsensical replies
(like you're not already used to nonsensical replies, though...)

0.8.1

- "system" elements now attempt to intelligently convert between UNIX-style
and Windows-style pathnames as appropriate. For cross-platform compatibility,
all AIML files should use UNIX-style paths inside their "system" elements.
- Fixed crashes under Windows9X when a "system" element is executed when
w9xpopen.exe is unavailable.
- Re-piped most errors and warnings to go to stderr instead of stdout.
- Fixed bug that would cause the the bot to stop responding to any input in a session
if the "that" or "topic" strings were 100% whitespace (but still not empty).
- Fixed bug that would cause multi-line "that" strings to become corrupted. For
example, "Hello there.\nNice to meet you" would become "HELLO THERENICE TO MEET
YOU" when queried for that-matching.

0.8

- Removed support for non-standard "mode" attribute in "system" elements.
It just wasn't worth breaking the AIML standard for.
- Reworked persistent session support (I warned you!). The old method involving
Kernel.persistentSessions() has been removed. Instead, there is a new
Kernel.getSessionData() method which gives the bot author access to the session
data. You can store this data however you wish. Session data can be restored
later by repeated calls to Kernel.setPredicate().
- Improved AIML parser error handling; instead of aborting the entire file, a
parse error now only ignores the current category and forges ahead. To check for
parse errors, check the return value of AimlParser.getNumErrors() after parsing.

0.7

- Further improved AIML parsing; missing or invalid XML attributes are now
detected at parse-time. There's also a first stab at support for Forward
Compatibility Mode: if the "version" attribute of an AIML tag is not 1.0.1,
the parser is much more forgiving of unknown or missing XML tags and attributes.
- Added "support" for the 'gossip' tag. The specific behavior of this tag is
totally undefined; currently, the PyAIML implementation treats it as a big
no-op. Its contents are ignored, and it returns the empty string (but at least
it isn't flagged as a syntax error!)
- Oops; I've implemented 'person' as 'person2' and vice versa this whole time!
Swapped them back; they should each behave correctly now.
- A bit of code cleanup, with an emphasis on using proper XML/AIML terminology
whenever possible.
- Fixed some exception-masking in the 'condition' element processor, which could
prevent AIML parse errors from being reported.
- Added full support for the "bot" tag (previously only the 'bot name="name"'
form was supported). Bot predicates are set using the Kernel.setBotPredicate()
function. Note that Kernel.getBotName() and Kernel.setBotName() have been
deprecated, and will disappear in a future release.

0.6.1

- Fixed undefined variable exception that was thrown whenever there was no
match for the user's input.
- Fixed an infinite recursion bug caused by processing two or more nested
'srai' or 'sr' elements.

0.6

- Completely rewrote the LearnHandler class (which handles all AIML parsing)
to be much less forgiving of incorrect AIML. Currently, any AIML errors
outside of "template" elements should be caught and reported at load-time.
AIML errors inside templates are still not detected until run-time.
- Added support for atomic 'person' and 'person2' tags (they implicitly use
'star' as their contents if none are provided).
- Oops; Kernel.respond() was DEFINITELY not thread-safe. Now it is, provided
you're using Python's standard 'threading' module. If not, you'll have to
provide your own mutual-exclusion system to ensure that only one thread
is calling Kernel.respond() at a time.
- Recursive tags ('srai' and 'sr') no longer add their intermediate results
to the input and output history.
- EXPERIMENTAL FEATURE: persistent sessions. If enabled using
Kernel.persistentSessions(True), session data will be written to disk
after every response. This lets session data be preserved when the
Kernel is destroyed, at the expense of a small performance hit (all
that extra disk I/O). The semantics of this feature may change in future
releases!
- Added support for the "id" tag (it returns the session ID).
- Added support for the "topic", "topicstar" and "thatstar" tags.
- Commented up the test.py file.
- Added a summary to the end of the Kernel.py self-test (since there are now
too many tests to fit on screen).
- Added support for multi-sentence input. The user's input is split into
individual sentences, each of which is treated as a completely separate
piece of input. I'm *pretty* sure this is the Right Way(tm).

Page 2 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.