MCPcopy Index your code
hub / github.com/pex-tool/pex / ensure_devpi_server

Function ensure_devpi_server

testing/devpi.py:126–197  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

124
125
126def ensure_devpi_server():
127 # type: () -> DevpiServer
128
129 venv_dir = os.path.join(DEVPI_DIR, "venv")
130 try:
131 venv = Virtualenv(venv_dir=venv_dir)
132 except InvalidVirtualenvError as e:
133 logger.warning(str(e))
134 safe_rmtree(venv_dir)
135 with atomic_directory(venv_dir, source="venv") as atomic_venvdir:
136 if not atomic_venvdir.is_finalized():
137 logger.info("Installing devpi-server...")
138 locked_reqs = os.path.join(atomic_venvdir.work_dir, "devpi-server.requirements.txt")
139 subprocess.check_call(
140 args=[
141 "uv",
142 "export",
143 "--frozen",
144 "-q",
145 "--only-group",
146 "devpi-server",
147 # N.B.: The attrs package we lock is a VCS dependency which uv <-> pip can't
148 # currently agree on a usable lock for; so we exclude it here and add back
149 # below.
150 "--no-emit-package",
151 "attrs",
152 "-o",
153 locked_reqs,
154 ]
155 )
156 python = InterpreterSelectionStrategy.OLDEST.select(
157 InterpreterConstraint.parse(">=3.8,<3.15").iter_matching()
158 )
159 venv_workdir = os.path.join(atomic_venvdir.work_dir, "venv")
160 subprocess.check_call(
161 args=[
162 python.binary,
163 "-m",
164 "pex.cli",
165 "venv",
166 "create",
167 "--pip-version",
168 "latest-compatible",
169 "--intransitive",
170 "-r",
171 locked_reqs,
172 "-d",
173 venv_workdir,
174 ]
175 )
176 venv = Virtualenv(venv_workdir)
177 venv.ensure_pip()
178 venv.interpreter.execute(args=["-m", "pip", "install", "attrs"])
179 venv = Virtualenv(venv_dir=venv_dir)
180
181 serverdir = os.path.join(DEVPI_DIR, "serverdir")
182 with atomic_directory(serverdir) as atomic_serverdir:
183 if not atomic_serverdir.is_finalized():

Callers 1

launchFunction · 0.85

Calls 10

safe_rmtreeFunction · 0.90
atomic_directoryFunction · 0.90
DevpiServerClass · 0.85
is_finalizedMethod · 0.80
infoMethod · 0.80
iter_matchingMethod · 0.80
joinMethod · 0.45
selectMethod · 0.45
parseMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected