MCPcopy Create free account
hub / github.com/KentBeck/BPlusTree3 / calculate_programming_sessions

Function calculate_programming_sessions

visualize_programming_time.py:61–98  ·  view source on GitHub ↗

Calculate programming sessions based on commit gaps.

(commits, max_gap_minutes=120)

Source from the content-addressed store, hash-verified

59
60
61def calculate_programming_sessions(commits, max_gap_minutes=120):
62 """Calculate programming sessions based on commit gaps."""
63 if not commits:
64 return []
65
66 sessions = []
67 current_session = {
68 "start": commits[0]["datetime"],
69 "end": commits[0]["datetime"],
70 "commits": [commits[0]],
71 "duration_minutes": 0,
72 }
73
74 for i in range(1, len(commits)):
75 prev_commit = commits[i - 1]
76 curr_commit = commits[i]
77
78 gap_minutes = (
79 curr_commit["datetime"] - prev_commit["datetime"]
80 ).total_seconds() / 60
81
82 if gap_minutes <= max_gap_minutes:
83 current_session["end"] = curr_commit["datetime"]
84 current_session["commits"].append(curr_commit)
85 current_session["duration_minutes"] = (
86 current_session["end"] - current_session["start"]
87 ).total_seconds() / 60
88 else:
89 sessions.append(current_session)
90 current_session = {
91 "start": curr_commit["datetime"],
92 "end": curr_commit["datetime"],
93 "commits": [curr_commit],
94 "duration_minutes": 0,
95 }
96
97 sessions.append(current_session)
98 return sessions
99
100
101def analyze_daily_programming(sessions):

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected