MCPcopy
hub / github.com/pex-tool/pex / DependencyConfiguration

Class DependencyConfiguration

pex/dependency_configuration.py:100–205  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

98
99@attr.s(frozen=True)
100class DependencyConfiguration(object):
101 @classmethod
102 def create(
103 cls,
104 excluded=(), # type: Iterable[Union[str, Requirement]]
105 overridden=(), # type: Iterable[Union[str, Override]]
106 ):
107 # type: (...) -> DependencyConfiguration
108
109 overridden_projects = defaultdict(
110 OrderedSet
111 ) # type: DefaultDict[ProjectName, OrderedSet[Requirement]]
112 for o in overridden:
113 override = o if isinstance(o, Override) else Override.parse(o)
114 overridden_projects[override.project_name].add(override.requirement)
115
116 return cls(
117 excluded=tuple(
118 OrderedSet(
119 req if isinstance(req, Requirement) else Requirement.parse(req)
120 for req in excluded
121 )
122 ),
123 overridden={
124 project_name: tuple(overrides)
125 for project_name, overrides in overridden_projects.items()
126 },
127 )
128
129 @classmethod
130 def from_pex_info(cls, pex_info):
131 # type: (PexInfo) -> DependencyConfiguration
132 return cls.create(pex_info.excluded, pex_info.overridden)
133
134 excluded = attr.ib(default=()) # type: Tuple[Requirement, ...]
135 overridden = attr.ib(factory=dict) # type: Mapping[ProjectName, Tuple[Requirement, ...]]
136
137 def configure(self, pex_info):
138 # type: (PexInfo) -> None
139 for excluded in self.excluded:
140 pex_info.add_exclude(excluded)
141 for project_name, overrides in self.overridden.items():
142 for override in sorted(overrides, key=lambda req: req.key):
143 pex_info.add_override(Override(project_name=project_name, requirement=override))
144
145 def excluded_by(self, item):
146 # type: (Union[Distribution, Requirement]) -> Tuple[Requirement, ...]
147 return tuple(req for req in self.excluded if item in req)
148
149 def all_overrides(self):
150 # type: () -> Tuple[Override, ...]
151 return tuple(
152 Override(project_name=project_name, requirement=requirement)
153 for project_name, requirements in self.overridden.items()
154 for requirement in requirements
155 )
156
157 def overrides_for(self, requirement):

Callers 15

resolve_distsMethod · 0.90
configureMethod · 0.90
_PipSessionClass · 0.90
__init__Method · 0.90
resolveFunction · 0.90
_download_internalFunction · 0.90
downloadFunction · 0.90
download_requestsFunction · 0.90
reportsFunction · 0.90
appliesMethod · 0.90
dependencyMethod · 0.90

Calls

no outgoing calls

Tested by 1

test_createFunction · 0.72