File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,7 +13,9 @@ cdef class EbuildPkg(Pkg):
1313 cdef object _pdepend
1414 cdef object _rdepend
1515 cdef object _license
16+ cdef object _properties
1617 cdef object _required_use
18+ cdef object _restrict
1719 cdef object _src_uri
1820 cdef tuple _homepage
1921 cdef tuple _keywords
Original file line number Diff line number Diff line change @@ -16,8 +16,10 @@ cdef class EbuildPkg(Pkg):
1616 self ._pdepend = SENTINEL
1717 self ._rdepend = SENTINEL
1818 self ._license = SENTINEL
19- self ._src_uri = SENTINEL
19+ self ._properties = SENTINEL
2020 self ._required_use = SENTINEL
21+ self ._restrict = SENTINEL
22+ self ._src_uri = SENTINEL
2123
2224 @property
2325 def repo (self ):
@@ -127,6 +129,15 @@ cdef class EbuildPkg(Pkg):
127129 self ._license = None if deps is NULL else DepSet.from_ptr(deps)
128130 return self ._license
129131
132+ @property
133+ def properties (self ):
134+ """ Get a package's PROPERTIES."""
135+ cdef C.DepSet * deps
136+ if self ._properties is SENTINEL:
137+ deps = C.pkgcraft_ebuild_pkg_properties(self ._ebuild_pkg)
138+ self ._properties = None if deps is NULL else DepSet.from_ptr(deps)
139+ return self ._properties
140+
130141 @property
131142 def required_use (self ):
132143 """ Get a package's REQUIRED_USE."""
@@ -136,6 +147,15 @@ cdef class EbuildPkg(Pkg):
136147 self ._required_use = None if deps is NULL else DepSet.from_ptr(deps)
137148 return self ._required_use
138149
150+ @property
151+ def restrict (self ):
152+ """ Get a package's RESTRICT."""
153+ cdef C.DepSet * deps
154+ if self ._restrict is SENTINEL:
155+ deps = C.pkgcraft_ebuild_pkg_restrict(self ._ebuild_pkg)
156+ self ._restrict = None if deps is NULL else DepSet.from_ptr(deps)
157+ return self ._restrict
158+
139159 @property
140160 def src_uri (self ):
141161 """ Get a package's SRC_URI."""
Original file line number Diff line number Diff line change @@ -436,6 +436,14 @@ cdef extern from "pkgcraft.h":
436436 # The argument must be a non-null EbuildPkg pointer.
437437 DepSet * pkgcraft_ebuild_pkg_pdepend(EbuildPkg * p);
438438
439+ # Return a package's PROPERTIES.
440+ #
441+ # Returns NULL on nonexistence.
442+ #
443+ # # Safety
444+ # The argument must be a non-null EbuildPkg pointer.
445+ DepSet * pkgcraft_ebuild_pkg_properties(EbuildPkg * p);
446+
439447 # Return a package's RDEPEND.
440448 #
441449 # Returns NULL on nonexistence.
@@ -452,6 +460,14 @@ cdef extern from "pkgcraft.h":
452460 # The argument must be a non-null EbuildPkg pointer.
453461 DepSet * pkgcraft_ebuild_pkg_required_use(EbuildPkg * p);
454462
463+ # Return a package's RESTRICT.
464+ #
465+ # Returns NULL on nonexistence.
466+ #
467+ # # Safety
468+ # The argument must be a non-null EbuildPkg pointer.
469+ DepSet * pkgcraft_ebuild_pkg_restrict(EbuildPkg * p);
470+
455471 # Return a package's slot.
456472 #
457473 # # Safety
Original file line number Diff line number Diff line change @@ -98,12 +98,24 @@ def test_license(self, repo):
9898 pkg = repo .create_pkg (license = 'BSD' )
9999 assert str (pkg .license ) == 'BSD'
100100
101+ def test_properties (self , repo ):
102+ pkg = repo .create_pkg ()
103+ assert not pkg .properties
104+ pkg = repo .create_pkg (properties = 'live' )
105+ assert str (pkg .properties ) == 'live'
106+
101107 def test_required_use (self , repo ):
102108 pkg = repo .create_pkg ()
103109 assert not pkg .required_use
104110 pkg = repo .create_pkg (required_use = 'use' )
105111 assert str (pkg .required_use ) == 'use'
106112
113+ def test_restrict (self , repo ):
114+ pkg = repo .create_pkg ()
115+ assert not pkg .restrict
116+ pkg = repo .create_pkg (restrict = 'fetch' )
117+ assert str (pkg .restrict ) == 'fetch'
118+
107119 def test_src_uri (self , repo ):
108120 pkg = repo .create_pkg ()
109121 assert not pkg .src_uri
You can’t perform that action at this time.
0 commit comments