这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions conda/cli/main_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@
import json
import os
from os.path import abspath, join
from subprocess import PIPE, Popen
import sys
from tempfile import NamedTemporaryFile

from ..base.context import context
from ..common.compat import ensure_binary, iteritems, on_win
from ..gateways.disk.delete import rm_rf
from ..gateways.subprocess import subprocess_call


def get_activated_env_vars():
Expand All @@ -37,26 +36,23 @@ def _get_activated_env_vars_win(env_location):
"@%CONDA_PYTHON_EXE% -c \"import os, json; print(json.dumps(dict(os.environ)))\""
))
# TODO: refactor into single function along with code in conda.core.link.run_script
cmd_builder = [
"%s" % os.getenv('COMSPEC', 'cmd.exe'),
"/C \"",
inner_builder = (
"@SET PROMPT= ",
"&&",
"@SET CONDA_CHANGEPS1=false",
"&&",
"@CALL {0} activate \"{1}\"".format(conda_bat, env_location),
"&&",
"\"{0}\"".format(tf.name),
"\"",
]
cmd = " ".join(cmd_builder)
result = subprocess_call(cmd)
)
cmd = "{0} /C \"{1}\"".format(os.getenv('COMSPEC', 'cmd.exe'), " ".join(inner_builder))
stdout = _check_output(cmd)
finally:
if temp_path:
from ..gateways.disk.delete import rm_rf
rm_rf(temp_path)

assert not result.stderr, result.stderr
env_var_map = json.loads(result.stdout)
env_var_map = json.loads(stdout)
return env_var_map


Expand All @@ -66,22 +62,26 @@ def _get_activated_env_vars_unix(env_location):
except KeyError:
conda_exe = abspath(join(sys.prefix, 'bin', 'conda'))

cmd_builder = [
"sh -c \'"
inner_builder = (
"eval \"$(\"{0}\" shell.posix hook)\"".format(conda_exe),
"&&",
"conda activate \"{0}\"".format(env_location),
"&&",
"\"$CONDA_PYTHON_EXE\" -c \"import os, json; print(json.dumps(dict(os.environ)))\"",
"\'",
]
cmd = " ".join(cmd_builder)
result = subprocess_call(cmd)
assert not result.stderr, result.stderr
env_var_map = json.loads(result.stdout)
)
cmd = ("sh", "-c", " ".join(inner_builder))
env_var_map = json.loads(_check_output(cmd))
return env_var_map


def _check_output(cmd):
p = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
rc = p.returncode
assert rc == 0 and not stderr, (rc, stderr)
return stdout


def execute(args, parser):
from .conda_argparse import _exec
env_vars = get_activated_env_vars()
Expand Down
25 changes: 11 additions & 14 deletions conda/gateways/connection/adapters/s3.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,14 @@ def _send_boto3(self, boto3, resp, request):

try:
response = key.get()
except (BotoCoreError, ClientError) as exc:
except (BotoCoreError, ClientError) as e:
resp.status_code = 404
message = {
"error": "error downloading file from s3",
"path": request.url,
"exception": repr(exc),
"exception": repr(e),
}
fh = SpooledTemporaryFile()
fh.write(ensure_binary(json.dumps(message)))
fh.seek(0)
resp.raw = fh
resp.raw = self._write_tempfile(lambda x: x.write(ensure_binary(json.dumps(message))))
resp.close = resp.raw.close
return resp

Expand All @@ -72,10 +69,7 @@ def _send_boto3(self, boto3, resp, request):
"Last-Modified": key_headers['last-modified'],
})

f = SpooledTemporaryFile()
key.download_fileobj(f)
f.seek(0)
resp.raw = f
resp.raw = self._write_tempfile(key.download_fileobj)
resp.close = resp.raw.close

return resp
Expand All @@ -101,12 +95,15 @@ def _send_boto(self, boto, resp, request):
"Last-Modified": modified,
})

fh = SpooledTemporaryFile()
key.get_contents_to_file(fh)
fh.seek(0)
resp.raw = fh
resp.raw = self._write_tempfile(key.get_contents_to_file)
resp.close = resp.raw.close
else:
resp.status_code = 404

return resp

def _write_tempfile(self, writer_callable):
fh = SpooledTemporaryFile()
writer_callable(fh)
fh.seek(0)
return fh