Skip to content

Commit d381824

Browse files
committed
dep: rename UseDep default field for consistency
Working around cython's apparent reserved keyword issues re-exporting via a property.
1 parent d86c7c7 commit d381824

4 files changed

Lines changed: 19 additions & 11 deletions

File tree

src/pkgcraft/C.pxd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ cdef extern from "pkgcraft.h":
211211
cdef struct UseDep:
212212
UseDepKind kind
213213
char *flag
214-
UseDepDefault *missing
214+
UseDepDefault *default_
215215
UseDepWrapper *dep
216216

217217
# C-compatible wrapper for pkgcraft::dep::Dependency.

src/pkgcraft/dep/use_dep.pxd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ cdef class UseDep:
55
cdef C.UseDep *ptr
66
cdef readonly object kind
77
cdef readonly str flag
8-
cdef readonly object missing
8+
cdef object default_
99
# cached fields
1010
cdef int _hash
1111

src/pkgcraft/dep/use_dep.pyx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ cdef class UseDep:
4343
'use'
4444
>>> u.kind == UseDepKind.DisabledConditional
4545
True
46-
>>> u.missing is None
46+
>>> u.default is None
4747
True
4848
>>> str(u)
4949
'!use?'
@@ -52,7 +52,7 @@ cdef class UseDep:
5252
'use'
5353
>>> u.kind == UseDepKind.Equal
5454
True
55-
>>> u.missing == UseDepDefault.Enabled
55+
>>> u.default == UseDepDefault.Enabled
5656
True
5757
>>> str(u)
5858
'use(+)='
@@ -71,10 +71,10 @@ cdef class UseDep:
7171

7272
self.kind = UseDepKind(ptr.kind)
7373
self.flag = ptr.flag.decode()
74-
if ptr.missing is NULL:
75-
self.missing = None
74+
if ptr.default_ is NULL:
75+
self.default_ = None
7676
else:
77-
self.missing = UseDepDefault(ptr.missing[0])
77+
self.default_ = UseDepDefault(ptr.default_[0])
7878
self.ptr = ptr
7979

8080
@staticmethod
@@ -84,12 +84,18 @@ cdef class UseDep:
8484
inst.ptr = <C.UseDep *>ptr
8585
inst.kind = UseDepKind(ptr.kind)
8686
inst.flag = ptr.flag.decode()
87-
if ptr.missing is NULL:
88-
inst.missing = None
87+
if ptr.default_ is NULL:
88+
inst.default_ = None
8989
else:
90-
inst.missing = UseDepDefault(ptr.missing[0])
90+
inst.default_ = UseDepDefault(ptr.default_[0])
9191
return inst
9292

93+
# Re-export the default field using its proper name, if exposed directly via
94+
# an attribute the bindings fail to compile.
95+
@property
96+
def default(self):
97+
return self.default_
98+
9399
def __lt__(self, other):
94100
if isinstance(other, UseDep):
95101
return C.pkgcraft_use_dep_cmp(self.ptr, (<UseDep>other).ptr) == -1

tests/dep/test_use_dep.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ def test_creation(self):
2525
use = UseDep(s)
2626
assert use.kind == kind
2727
assert use.flag == "u"
28-
assert use.missing == default
28+
assert use.default == default
29+
# verify the internal field is hidden from native python
30+
assert getattr(use, "default_", None) is None
2931
assert str(use) == s
3032
assert s in repr(use)
3133

0 commit comments

Comments
 (0)