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

Function analyze_patterns

simple_time_analysis.py:207–256  ·  view source on GitHub ↗

Analyze programming patterns.

(sessions, daily_data)

Source from the content-addressed store, hash-verified

205
206
207def analyze_patterns(sessions, daily_data):
208 """Analyze programming patterns."""
209 print("PROGRAMMING PATTERNS ANALYSIS")
210 print("=" * 40)
211
212 # Hour of day analysis
213 hour_counts = defaultdict(int)
214 hour_duration = defaultdict(float)
215
216 for session in sessions:
217 for commit in session["commits"]:
218 hour = commit["datetime"].hour
219 hour_counts[hour] += 1
220 # Distribute session time across commits
221 hour_duration[hour] += session["duration_minutes"] / len(session["commits"])
222
223 print("MOST ACTIVE HOURS (by commits):")
224 top_hours = sorted(hour_counts.items(), key=lambda x: x[1], reverse=True)[:5]
225 for hour, count in top_hours:
226 avg_duration = hour_duration[hour] / count if count > 0 else 0
227 print(f" {hour:2d}:00 - {count:3d} commits ({avg_duration:.1f} min avg)")
228 print()
229
230 # Day of week analysis
231 weekday_data = defaultdict(lambda: {"duration": 0, "commits": 0, "days": 0})
232 weekday_names = [
233 "Monday",
234 "Tuesday",
235 "Wednesday",
236 "Thursday",
237 "Friday",
238 "Saturday",
239 "Sunday",
240 ]
241
242 for date, data in daily_data.items():
243 weekday = date.weekday()
244 weekday_data[weekday]["duration"] += data["duration_minutes"]
245 weekday_data[weekday]["commits"] += data["commits"]
246 weekday_data[weekday]["days"] += 1
247
248 print("PROGRAMMING BY DAY OF WEEK:")
249 for i in range(7):
250 data = weekday_data[i]
251 if data["days"] > 0:
252 avg_hours = data["duration"] / 60 / data["days"]
253 avg_commits = data["commits"] / data["days"]
254 print(
255 f" {weekday_names[i]:<9}: {avg_hours:5.1f}h avg ({avg_commits:4.1f} commits avg, {data['days']} days)"
256 )
257
258
259def main():

Callers 1

mainFunction · 0.85

Calls 1

itemsMethod · 0.45

Tested by

no test coverage detected