@@ -18,14 +18,18 @@ class Solver(object):
1818 forced (dict, optional): Forces this distro requirement replacing any resolved
1919 requirements. Using this may lead to configuring your environment
2020 incorrectly, use with caution.
21+ omittable (list, optional): A list of distro names that are not required.
22+ If a suitable distro can not be found, normally an `InvalidRequirementError`
23+ is raised. If that distro name is in this list a warning is logged instead.
2124
2225 Attributes:
2326 invalid (dict, optional): If a recursive requirement makes a already resolved
2427 version invalid, that version is added to this list as an exclusive exclude.
2528 """
2629
27- def __init__ (self , requirements , resolver , forced = None ):
30+ def __init__ (self , requirements , resolver , forced = None , omittable = None ):
2831 self .forced = forced if forced else {}
32+ self .omittable = omittable if omittable else []
2933 self .invalid = {}
3034 self .max_redirects = 2
3135 self .requirements = requirements
@@ -126,6 +130,10 @@ def _resolve(
126130 logger .warning (f"Forced Requirement: { req } " )
127131 reported .add (name )
128132
133+ if name in self .omittable and name not in self .resolver .distros :
134+ logger .warning (f"Skipping missing omitted requirement: { req } " )
135+ continue
136+
129137 # Update the requirement to match all current requirements
130138 req = self .append_requirement (resolved , req )
131139 if name in self .invalid :
0 commit comments