@@ -9,7 +9,8 @@ class Requirement:
99 """
1010 def __init__ (self , ref , * , headers = None , libs = None , build = False , run = None , visible = None ,
1111 transitive_headers = None , transitive_libs = None , test = None , package_id_mode = None ,
12- force = None , override = None , direct = None , options = None , no_skip = False ):
12+ force = None , override = None , direct = None , options = None , no_skip = False ,
13+ consistent = None ):
1314 # * prevents the usage of more positional parameters, always ref + **kwargs
1415 # By default this is a generic library requirement
1516 self .ref = ref
@@ -26,6 +27,7 @@ def __init__(self, ref, *, headers=None, libs=None, build=False, run=None, visib
2627 self ._force = force
2728 self ._override = override
2829 self ._direct = direct
30+ self ._consistent = consistent
2931 self .options = options
3032 # Meta and auxiliary information
3133 # The "defining_require" is the require that defines the current value. If this require is
@@ -102,6 +104,15 @@ def direct(self):
102104 def direct (self , value ):
103105 self ._direct = value
104106
107+ @property
108+ def consistent (self ):
109+ default_consistent = self .visible or self .test
110+ return self ._default_if_none (self ._consistent , default_consistent )
111+
112+ @consistent .setter
113+ def consistent (self , value ):
114+ self ._consistent = value
115+
105116 @property
106117 def build (self ):
107118 return self ._build
@@ -229,8 +240,7 @@ def __eq__(self, other):
229240 (self .headers and other .headers ) or
230241 (self .libs and other .libs ) or
231242 (self .run and other .run ) or
232- (self .test and other .test ) or
233- (self .visible or other .visible ) or # THIS IS AN OR!!
243+ (self .consistent and other .consistent ) or
234244 (self .ref == other .ref and self .options == other .options )))
235245
236246 def aggregate (self , other ):
@@ -350,6 +360,8 @@ def transform_downstream(self, pkg_type, require, dep_pkg_type):
350360 # if required.run is not None:
351361 # downstream_require.run = required.run
352362
363+ downstream_require .consistent = require .consistent and self .consistent
364+
353365 if self .test :
354366 downstream_require .test = True
355367
0 commit comments