-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpattern_detection.py
108 lines (97 loc) · 4.09 KB
/
pattern_detection.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import requests
import os
import json
from datetime import datetime, date, timedelta
from auth import oauth2
from compute_community_pattern import compute_community_patterns
from io_module import input_handler, repository_manager, output_handler
from data_retriever.data_retriever import (
retrieve_data_and_check_validity,
retrieve_structure_data,
retrieve_miscellaneous_data,
)
from console import console
from community.data import Data
from community.metrics import Metrics
from data_processor import (
dispersion_processor,
structure_processor,
formality_processor,
engagement_processor,
longevity_processor,
)
def main():
console.rule("Input information")
input_path, output_path = input_handler.get_input_files()
communities = input_handler.get_input_communities(input_path)
console.rule("GitHub Authentication")
pat = oauth2.get_access_token()
for community in communities:
"""
patterns = None
while patterns is None:
"""
console.rule(
"Community " + community.repo_name + " from " + community.repo_owner
)
repo = repository_manager.download_repo(
community.repo_owner, community.repo_name
)
community.data.all_commits = list(repo.iter_commits())
if not retrieve_data_and_check_validity(community):
console.print("[bold red]Invalid repository")
else:
console.print("[bold green]Repository is valid")
console.log("Retrieving data to compute community structure")
retrieve_structure_data(community)
console.log("[bold yellow] Computing COMMUNITY STRUCTURE")
structure = structure_processor.compute_structure_data(community)
if structure:
console.log(
"Retrieving data to compute community geodispersion, formality, engagement and longevity"
)
retrieve_miscellaneous_data(community)
console.log("[bold yellow] Computing COMMUNITY GEODISPERSION")
dispersion_processor.compute_distances(community)
console.log("[bold yellow] Computing COMMUNITY FORMALITY")
formality_processor.compute_formality_data(community)
console.log("[bold yellow] Computing COMMUNITY ENGAGEMENT")
engagement_success = engagement_processor.compute_engagement_data(
community
)
if engagement_success:
console.log("[bold yellow] Computing COMMUNITY LONGEVITY")
longevity_processor.compute_longevity_data(community)
console.print(community.metrics)
console.log("[bold purple] Computing COMMUNITY PATTERNS")
(
structure,
dispersion,
formality,
longevity,
engagement,
community_patterns,
) = compute_community_patterns(community.metrics)
console.print(
{
"structure ": structure,
"dispersion ": dispersion,
"formality ": formality,
"longevity ": longevity,
"engagement ": engagement,
}
)
console.print(community_patterns)
console.print(community.data.start_date, community.data.end_date)
patterns = community_patterns
output_handler.save_results(
output_path, community, community_patterns
)
"""
community.data.start_date = community.data.start_date + timedelta(days=30)
community.data.end_date = community.data.end_date + timedelta(days=30)
if community.data.end_date > datetime(2021, 6, 1):
patterns = "None"
"""
if __name__ == "__main__":
main()