From 81130e1881e9bcb31f6ab219b7ac1ab39e8f994f Mon Sep 17 00:00:00 2001 From: Mohammad Amin Date: Mon, 20 Jan 2025 09:46:14 +0330 Subject: [PATCH 1/3] chore: update version to 1.4.15 and add timezone support in date handling --- setup.py | 2 +- tc_analyzer_lib/metrics/analyzer_memberactivities.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 86d9d4c..fa24cbb 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ setup( name="tc-analyzer-lib", - version="1.4.14", + version="1.4.15", author="Mohammad Amin Dadgar, TogetherCrew", maintainer="Mohammad Amin Dadgar", maintainer_email="dadgaramin96@gmail.com", diff --git a/tc_analyzer_lib/metrics/analyzer_memberactivities.py b/tc_analyzer_lib/metrics/analyzer_memberactivities.py index 976ad10..ea2aab6 100644 --- a/tc_analyzer_lib/metrics/analyzer_memberactivities.py +++ b/tc_analyzer_lib/metrics/analyzer_memberactivities.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from tc_analyzer_lib.algorithms.compute_member_activity import compute_member_activity from tc_analyzer_lib.metrics.memberactivity_utils import MemberActivityUtils @@ -73,7 +73,9 @@ def analysis_member_activity( return (None, None) # get date range to be analyzed - today = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) + today = datetime.now().replace( + hour=0, minute=0, second=0, microsecond=0, tzinfo=timezone.utc + ) logging.info(f"{guild_msg} memberactivities Analysis started!") @@ -87,7 +89,7 @@ def analysis_member_activity( load_past_data = load_past_data and not from_start first_date = self.analyzer_period.replace( - hour=0, minute=0, second=0, microsecond=0 + hour=0, minute=0, second=0, microsecond=0, tzinfo=timezone.utc ) if first_date is None: logging.error( From 2726bf0c732950df9a01a828665763237d1b6ae7 Mon Sep 17 00:00:00 2001 From: Mohammad Amin Date: Mon, 20 Jan 2025 09:59:46 +0330 Subject: [PATCH 2/3] feat: add timezone support to analyzer_period in TCAnalyzer --- tc_analyzer_lib/tc_analyzer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tc_analyzer_lib/tc_analyzer.py b/tc_analyzer_lib/tc_analyzer.py index cb24734..d1a2d46 100644 --- a/tc_analyzer_lib/tc_analyzer.py +++ b/tc_analyzer_lib/tc_analyzer.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime +from datetime import datetime, timezone from tc_analyzer_lib.metrics.analyzer_memberactivities import MemberActivities from tc_analyzer_lib.metrics.heatmaps import Heatmaps @@ -105,7 +105,7 @@ async def run_once(self): action_config=self.action, window_config=self.window, analyzer_config=self.analyzer_config, - analyzer_period=self.period, + analyzer_period=self.period.replace(tzinfo=timezone.utc), ) ( member_activities_data, @@ -190,7 +190,7 @@ async def recompute(self): action_config=self.action, window_config=self.window, analyzer_config=self.analyzer_config, - analyzer_period=self.period, + analyzer_period=self.period.replace(tzinfo=timezone.utc), ) ( member_activities_data, From 4ccd1ff8ded24f2e46927b777cfb236d90124e7b Mon Sep 17 00:00:00 2001 From: Mohammad Amin Date: Mon, 20 Jan 2025 10:41:58 +0330 Subject: [PATCH 3/3] feat: add timezone handling for member activity dates --- tc_analyzer_lib/algorithms/member_activity_history.py | 9 +++------ tc_analyzer_lib/metrics/analyzer_memberactivities.py | 3 +++ tc_analyzer_lib/models/MemberActivityModel.py | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/tc_analyzer_lib/algorithms/member_activity_history.py b/tc_analyzer_lib/algorithms/member_activity_history.py index c26486f..72505d2 100644 --- a/tc_analyzer_lib/algorithms/member_activity_history.py +++ b/tc_analyzer_lib/algorithms/member_activity_history.py @@ -1,6 +1,6 @@ # checking the past history of member activities -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from tc_analyzer_lib.algorithms.utils.member_activity_history_utils import ( MemberActivityPastUtils, @@ -106,11 +106,8 @@ def check_past_history( # db_analysis_start_date = None db_analysis_end_date = None - # # the input date_range in format of datetime - # # converting the dates into datetime format - # date_format = "%y/%m/%d" - # date_range_start = datetime.datetime.strptime(date_range[0], date_format) - # date_range_end = datetime.datetime.strptime(date_range[1], date_format) + if db_analysis_end_date: + db_analysis_end_date = db_analysis_end_date.replace(tzinfo=timezone.utc) new_date_range: list[datetime] # if for the requested date_range, its results were available in db diff --git a/tc_analyzer_lib/metrics/analyzer_memberactivities.py b/tc_analyzer_lib/metrics/analyzer_memberactivities.py index ea2aab6..703a28c 100644 --- a/tc_analyzer_lib/metrics/analyzer_memberactivities.py +++ b/tc_analyzer_lib/metrics/analyzer_memberactivities.py @@ -138,6 +138,9 @@ def analysis_member_activity( if not from_start: # first date of storing the data first_storing_date = member_activity_c.get_last_date() + if first_storing_date: + first_storing_date = first_storing_date.replace(tzinfo=timezone.utc) + activities = self.utils.refine_memberactivities_data( activities, first_storing_date ) diff --git a/tc_analyzer_lib/models/MemberActivityModel.py b/tc_analyzer_lib/models/MemberActivityModel.py index c6f4121..0156340 100644 --- a/tc_analyzer_lib/models/MemberActivityModel.py +++ b/tc_analyzer_lib/models/MemberActivityModel.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import logging +from datetime import datetime import pymongo from tc_analyzer_lib.models.BaseModel import BaseModel @@ -12,7 +13,7 @@ def __init__(self, database=None): raise Exception("Database should not be None") super().__init__(collection_name="memberactivities", database=database) - def get_last_date(self): + def get_last_date(self) -> datetime | None: """ Gets the date of the last document """