Skip to content

Commit c78284b

Browse files
committed
Add enum BlameFlag
1 parent 70dc59f commit c78284b

File tree

6 files changed

+46
-23
lines changed

6 files changed

+46
-23
lines changed

docs/blame.rst

+8-8
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ Getters:
3939
Constants
4040
=========
4141

42-
.. py:data:: GIT_BLAME_NORMAL
43-
.. py:data:: GIT_BLAME_TRACK_COPIES_SAME_FILE
44-
.. py:data:: GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES
45-
.. py:data:: GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES
46-
.. py:data:: GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES
47-
.. py:data:: GIT_BLAME_FIRST_PARENT
48-
.. py:data:: GIT_BLAME_USE_MAILMAP
49-
.. py:data:: GIT_BLAME_IGNORE_WHITESPACE
42+
.. py:data:: enums.BlameFlag.NORMAL
43+
.. py:data:: enums.BlameFlag.TRACK_COPIES_SAME_FILE
44+
.. py:data:: enums.BlameFlag.TRACK_COPIES_SAME_COMMIT_MOVES
45+
.. py:data:: enums.BlameFlag.TRACK_COPIES_SAME_COMMIT_COPIES
46+
.. py:data:: enums.BlameFlag.TRACK_COPIES_ANY_COMMIT_COPIES
47+
.. py:data:: enums.BlameFlag.FIRST_PARENT
48+
.. py:data:: enums.BlameFlag.USE_MAILMAP
49+
.. py:data:: enums.BlameFlag.IGNORE_WHITESPACE

pygit2/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from .enums import (
4343
AttrCheck,
4444
ApplyLocation,
45-
AttrCheckFlags,
45+
BlameFlag,
4646
BranchType,
4747
CheckoutNotify,
4848
CheckoutStrategy,

pygit2/_pygit2.pyi

-8
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ from .enums import MergePreference
99
from .enums import ReferenceFilter
1010
from .enums import SortMode
1111

12-
GIT_BLAME_FIRST_PARENT: int
13-
GIT_BLAME_IGNORE_WHITESPACE: int
14-
GIT_BLAME_NORMAL: int
15-
GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES: int
16-
GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES: int
17-
GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES: int
18-
GIT_BLAME_TRACK_COPIES_SAME_FILE: int
19-
GIT_BLAME_USE_MAILMAP: int
2012
GIT_CONFIG_LEVEL_GLOBAL: int
2113
GIT_CONFIG_LEVEL_LOCAL: int
2214
GIT_CONFIG_LEVEL_SYSTEM: int

pygit2/enums.py

+30
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,36 @@ class AttrCheck(IntFlag):
6060
INCLUDE_COMMIT = C.GIT_ATTR_CHECK_INCLUDE_COMMIT
6161

6262

63+
class BlameFlag(IntFlag):
64+
NORMAL = _pygit2.GIT_BLAME_NORMAL
65+
"Normal blame, the default"
66+
67+
TRACK_COPIES_SAME_FILE = _pygit2.GIT_BLAME_TRACK_COPIES_SAME_FILE
68+
"Not yet implemented and reserved for future use (as of libgit2 1.7.1)."
69+
70+
TRACK_COPIES_SAME_COMMIT_MOVES = _pygit2.GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES
71+
"Not yet implemented and reserved for future use (as of libgit2 1.7.1)."
72+
73+
TRACK_COPIES_SAME_COMMIT_COPIES = _pygit2.GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES
74+
"Not yet implemented and reserved for future use (as of libgit2 1.7.1)."
75+
76+
TRACK_COPIES_ANY_COMMIT_COPIES = _pygit2.GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES
77+
"Not yet implemented and reserved for future use (as of libgit2 1.7.1)."
78+
79+
FIRST_PARENT = _pygit2.GIT_BLAME_FIRST_PARENT
80+
"Restrict the search of commits to those reachable following only the first parents."
81+
82+
USE_MAILMAP = _pygit2.GIT_BLAME_USE_MAILMAP
83+
"""
84+
Use mailmap file to map author and committer names and email addresses
85+
to canonical real names and email addresses. The mailmap will be read
86+
from the working directory, or HEAD in a bare repository.
87+
"""
88+
89+
IGNORE_WHITESPACE = _pygit2.GIT_BLAME_IGNORE_WHITESPACE
90+
"Ignore whitespace differences"
91+
92+
6393
class BranchType(IntFlag):
6494
LOCAL = _pygit2.GIT_BRANCH_LOCAL
6595
REMOTE = _pygit2.GIT_BRANCH_REMOTE

pygit2/repository.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
from .config import Config
4444
from .enums import (
4545
AttrCheck,
46+
BlameFlag,
4647
BranchType,
4748
CheckoutStrategy,
4849
DiffOption,
@@ -534,7 +535,7 @@ def state_cleanup(self):
534535
#
535536
# blame
536537
#
537-
def blame(self, path, flags=None, min_match_characters=None,
538+
def blame(self, path, flags: BlameFlag = BlameFlag.NORMAL, min_match_characters=None,
538539
newest_commit=None, oldest_commit=None, min_line=None,
539540
max_line=None):
540541
"""
@@ -546,7 +547,7 @@ def blame(self, path, flags=None, min_match_characters=None,
546547
Path to the file to blame.
547548
548549
flags
549-
A GIT_BLAME_* constant.
550+
An enums.BlameFlag constant.
550551
551552
min_match_characters
552553
The number of alphanum chars that must be detected as moving/copying
@@ -566,13 +567,13 @@ def blame(self, path, flags=None, min_match_characters=None,
566567
567568
Examples::
568569
569-
repo.blame('foo.c', flags=GIT_BLAME_TRACK_COPIES_SAME_FILE)
570+
repo.blame('foo.c', flags=enums.BlameFlag.IGNORE_WHITESPACE)
570571
"""
571572

572573
options = ffi.new('git_blame_options *')
573574
C.git_blame_options_init(options, C.GIT_BLAME_OPTIONS_VERSION)
574575
if flags:
575-
options.flags = flags
576+
options.flags = int(flags)
576577
if min_match_characters:
577578
options.min_match_characters = min_match_characters
578579
if newest_commit:

test/test_blame.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import pytest
2929

30-
from pygit2 import Signature, Oid, GIT_BLAME_IGNORE_WHITESPACE
30+
from pygit2 import Signature, Oid, BlameFlag
3131

3232

3333
PATH = 'hello.txt'
@@ -63,7 +63,7 @@ def test_blame_index(testrepo):
6363

6464

6565
def test_blame_flags(blameflagsrepo):
66-
blame = blameflagsrepo.blame(PATH, flags=GIT_BLAME_IGNORE_WHITESPACE)
66+
blame = blameflagsrepo.blame(PATH, flags=BlameFlag.IGNORE_WHITESPACE)
6767

6868
assert len(blame) == 3
6969

0 commit comments

Comments
 (0)