comparison env/lib/python3.7/site-packages/virtualenv/__main__.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 from __future__ import absolute_import, print_function, unicode_literals
2
3 import argparse
4 import logging
5 import os
6 import sys
7 from datetime import datetime
8
9 from virtualenv.util.six import ensure_text
10
11
12 def run(args=None, options=None):
13 start = datetime.now()
14 from virtualenv.error import ProcessCallFailed
15 from virtualenv.run import cli_run
16
17 if args is None:
18 args = sys.argv[1:]
19 try:
20 session = cli_run(args, options)
21 logging.warning(LogSession(session, start))
22 except ProcessCallFailed as exception:
23 print("subprocess call failed for {} with code {}".format(exception.cmd, exception.code))
24 print(exception.out, file=sys.stdout, end="")
25 print(exception.err, file=sys.stderr, end="")
26 raise SystemExit(exception.code)
27
28
29 class LogSession(object):
30 def __init__(self, session, start):
31 self.session = session
32 self.start = start
33
34 def __str__(self):
35 spec = self.session.creator.interpreter.spec
36 elapsed = (datetime.now() - self.start).total_seconds() * 1000
37 lines = [
38 "created virtual environment {} in {:.0f}ms".format(spec, elapsed),
39 " creator {}".format(ensure_text(str(self.session.creator))),
40 ]
41 if self.session.seeder.enabled:
42 lines += (" seeder {}".format(ensure_text(str(self.session.seeder)),),)
43 if self.session.activators:
44 lines.append(" activators {}".format(",".join(i.__class__.__name__ for i in self.session.activators)))
45 return os.linesep.join(lines)
46
47
48 def run_with_catch(args=None):
49 options = argparse.Namespace()
50 try:
51 run(args, options)
52 except (KeyboardInterrupt, Exception) as exception:
53 if getattr(options, "with_traceback", False):
54 logging.shutdown() # force flush of log messages before the trace is printed
55 raise
56 else:
57 logging.error("%s: %s", type(exception).__name__, exception)
58 sys.exit(1)
59
60
61 if __name__ == "__main__":
62 run_with_catch()