Skip to content

Commit 820a2d7

Browse files
committed
rename
1 parent 9190867 commit 820a2d7

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

examples/ex_basic.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from gitevo import GitEvo, ParsedCommit
2+
3+
remote = 'https://github.com/pallets/flask'
4+
evo = GitEvo(repo=remote, extension='.py')
5+
6+
@evo.metric('Lines of code (LOC)')
7+
def loc(commit: ParsedCommit):
8+
return commit.loc
9+
10+
@evo.metric('Python files')
11+
def python_files(commit: ParsedCommit):
12+
return len(commit.parsed_files)
13+
14+
@evo.metric('Test files')
15+
def test_files(commit: ParsedCommit):
16+
test_files = [f for f in commit.parsed_files if 'test_' in f.name.lower()]
17+
return len(test_files)
18+
19+
@evo.metric('LOC / Python files')
20+
def loc_per_file(commit: ParsedCommit):
21+
python_files = len(commit.parsed_files)
22+
if python_files == 0: return 0
23+
return commit.loc / python_files
24+
25+
evo.run()

examples/ex_custom_1.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from gitevo import GitEvo, ParsedCommit
2+
3+
remote = 'https://github.com/pallets/flask'
4+
evo = GitEvo(repo=remote, extension='.py')
5+
6+
@evo.metric('Data structures', categorical=True)
7+
def data_structures(commit: ParsedCommit):
8+
data_structure_types = ['dictionary', 'list', 'set', 'tuple']
9+
return commit.find_node_types(data_structure_types)
10+
11+
@evo.metric('Loops', categorical=True)
12+
def loops(commit: ParsedCommit):
13+
loop_types = ['for_statement', 'while_statement', 'for_in_clause']
14+
return commit.find_node_types(loop_types)
15+
16+
evo.run()

examples/ex_custom_2.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from gitevo import GitEvo, ParsedCommit
2+
3+
remote = 'https://github.com/pallets/flask'
4+
evo = GitEvo(repo=remote, extension='.py')
5+
6+
@evo.metric('Async functions')
7+
def async_functions(commit: ParsedCommit):
8+
functions = commit.find_nodes_by_type(['function_definition'])
9+
async_functions = [f for f in functions if as_str(f.child(0).text) == 'async']
10+
return len(async_functions)
11+
12+
@evo.metric('@pytest decorated functions')
13+
def decorated_functions(commit: ParsedCommit):
14+
decorators = commit.find_nodes_by_type(['decorated_definition'])
15+
decorated_functions = [d for d in decorators if d.child_by_field_name('definition').type == 'function_definition']
16+
pytest_decorated = [dc for dc in decorated_functions if as_str(dc.child(0).text).startswith('@pytest')]
17+
return len(pytest_decorated)
18+
19+
evo.run()

0 commit comments

Comments
 (0)