From 09c73429e54fdae0cb4dee6e9954e95b31e059aa Mon Sep 17 00:00:00 2001 From: Albert Torosyan Date: Tue, 27 Jun 2023 15:54:46 +0400 Subject: [PATCH] [feat] Add server functions for release board --- chatbot_logger/src/chatbot_logger/__init__.py | 7 +++-- .../src/chatbot_logger/boards/dev/release.py | 30 +++++-------------- .../src/chatbot_logger/logging/functions.py | 27 +++++++++++++++++ 3 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 chatbot_logger/src/chatbot_logger/logging/functions.py diff --git a/chatbot_logger/src/chatbot_logger/__init__.py b/chatbot_logger/src/chatbot_logger/__init__.py index 0f80888..1b79331 100644 --- a/chatbot_logger/src/chatbot_logger/__init__.py +++ b/chatbot_logger/src/chatbot_logger/__init__.py @@ -2,6 +2,7 @@ from chatbot_logger.logging.chat import * from chatbot_logger.logging.analytics import * +from chatbot_logger.logging.functions import * __all__ = [ 'Session', 'SessionProd', 'SessionDev', @@ -15,5 +16,7 @@ MessagesSequence, UserActivity, UserActions, ] -for aim_type in __aim_types__: - setattr(aim_type, '__aim_package__', 'chatbot_logger') +__aim_functions__ = [ + get_release_by_version, + get_last_experiment +] diff --git a/chatbot_logger/src/chatbot_logger/boards/dev/release.py b/chatbot_logger/src/chatbot_logger/boards/dev/release.py index 77ba74b..8a975ce 100644 --- a/chatbot_logger/src/chatbot_logger/boards/dev/release.py +++ b/chatbot_logger/src/chatbot_logger/boards/dev/release.py @@ -1,6 +1,8 @@ from datetime import datetime from chatbot_logger import Release, Experiment +from chatbot_logger import get_release_by_version, get_last_experiment + ################## # Utils @@ -13,30 +15,14 @@ def get_releases(query = '', param = None): return [session.get(param) or session['params'].get(param) for session in sessions] return sessions -def get_release(release_version): - sessions = Release.filter(f'c.version == "{release_version}"') - if sessions and len(sessions): - return sessions[0] - return None - -def get_last_experiment(release_version): - experiments = Experiment.filter(f'c.version == "{release_version}"') - last = None - for experiment in experiments: - if last is None or not last['params'].get('started'): - last = experiment - continue - if experiment['params'].get('started') and last['params']['started'] < experiment['params']['started']: - last = experiment - return last ################## -def experiment(release_version): +def render_experiment(release_version): if not release_version: return - exp = get_last_experiment(release_version) + exp = get_last_experiment(version=release_version) if not exp: ui.text('No experiment') return @@ -56,8 +42,8 @@ def experiment(release_version): tools.json(exp['params'].get('tools')) agent.json(exp['params'].get('agent')) -def release(release_version): - release = get_release(release_version) +def render_release(release_version): + release = get_release_by_version(version=release_version) if not release: ui.text('Pick a release') return @@ -80,5 +66,5 @@ def release(release_version): default_release = releases.index(release_version) if release_version != '' else 0 release_version = ui.select(options=releases, index=default_release) -release(release_version) -experiment(release_version) +render_release(release_version) +render_experiment(release_version) diff --git a/chatbot_logger/src/chatbot_logger/logging/functions.py b/chatbot_logger/src/chatbot_logger/logging/functions.py new file mode 100644 index 0000000..c71b62e --- /dev/null +++ b/chatbot_logger/src/chatbot_logger/logging/functions.py @@ -0,0 +1,27 @@ +from .chat import Release, Experiment + + +def get_release_by_version(version: str): + try: + release = Release.filter(f'c.version == "{version}"').first() + return { + 'hash': release.hash, + 'params': release[...], + 'container_type': release.get_typename(), + 'container_full_type': release.get_full_typename(), + } + except StopIteration: + return None + + +def get_last_experiment(version): + try: + exp = sorted(Experiment.filter(f'c.version == "{version}"'), key=lambda x: x['started'])[0] + return { + 'hash': exp.hash, + 'params': exp[...], + 'container_type': exp.get_typename(), + 'container_full_type': exp.get_full_typename(), + } + except IndexError: + return None