diff options
author | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
---|---|---|
committer | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
commit | 68df54d6629ec019142eb149dd037774f2d11e7c (patch) | |
tree | 345bc22d46b4e01a4ba8303b94278952a4ed2b9e /venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress |
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress')
5 files changed, 398 insertions, 0 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/__init__.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/__init__.py new file mode 100644 index 0000000..4aa97fc --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/__init__.py | |||
@@ -0,0 +1,127 @@ | |||
1 | # Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com> | ||
2 | # | ||
3 | # Permission to use, copy, modify, and distribute this software for any | ||
4 | # purpose with or without fee is hereby granted, provided that the above | ||
5 | # copyright notice and this permission notice appear in all copies. | ||
6 | # | ||
7 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
8 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
9 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
10 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
11 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
12 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
13 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
14 | |||
15 | from __future__ import division | ||
16 | |||
17 | from collections import deque | ||
18 | from datetime import timedelta | ||
19 | from math import ceil | ||
20 | from sys import stderr | ||
21 | from time import time | ||
22 | |||
23 | |||
24 | __version__ = '1.3' | ||
25 | |||
26 | |||
27 | class Infinite(object): | ||
28 | file = stderr | ||
29 | sma_window = 10 # Simple Moving Average window | ||
30 | |||
31 | def __init__(self, *args, **kwargs): | ||
32 | self.index = 0 | ||
33 | self.start_ts = time() | ||
34 | self.avg = 0 | ||
35 | self._ts = self.start_ts | ||
36 | self._xput = deque(maxlen=self.sma_window) | ||
37 | for key, val in kwargs.items(): | ||
38 | setattr(self, key, val) | ||
39 | |||
40 | def __getitem__(self, key): | ||
41 | if key.startswith('_'): | ||
42 | return None | ||
43 | return getattr(self, key, None) | ||
44 | |||
45 | @property | ||
46 | def elapsed(self): | ||
47 | return int(time() - self.start_ts) | ||
48 | |||
49 | @property | ||
50 | def elapsed_td(self): | ||
51 | return timedelta(seconds=self.elapsed) | ||
52 | |||
53 | def update_avg(self, n, dt): | ||
54 | if n > 0: | ||
55 | self._xput.append(dt / n) | ||
56 | self.avg = sum(self._xput) / len(self._xput) | ||
57 | |||
58 | def update(self): | ||
59 | pass | ||
60 | |||
61 | def start(self): | ||
62 | pass | ||
63 | |||
64 | def finish(self): | ||
65 | pass | ||
66 | |||
67 | def next(self, n=1): | ||
68 | now = time() | ||
69 | dt = now - self._ts | ||
70 | self.update_avg(n, dt) | ||
71 | self._ts = now | ||
72 | self.index = self.index + n | ||
73 | self.update() | ||
74 | |||
75 | def iter(self, it): | ||
76 | try: | ||
77 | for x in it: | ||
78 | yield x | ||
79 | self.next() | ||
80 | finally: | ||
81 | self.finish() | ||
82 | |||
83 | |||
84 | class Progress(Infinite): | ||
85 | def __init__(self, *args, **kwargs): | ||
86 | super(Progress, self).__init__(*args, **kwargs) | ||
87 | self.max = kwargs.get('max', 100) | ||
88 | |||
89 | @property | ||
90 | def eta(self): | ||
91 | return int(ceil(self.avg * self.remaining)) | ||
92 | |||
93 | @property | ||
94 | def eta_td(self): | ||
95 | return timedelta(seconds=self.eta) | ||
96 | |||
97 | @property | ||
98 | def percent(self): | ||
99 | return self.progress * 100 | ||
100 | |||
101 | @property | ||
102 | def progress(self): | ||
103 | return min(1, self.index / self.max) | ||
104 | |||
105 | @property | ||
106 | def remaining(self): | ||
107 | return max(self.max - self.index, 0) | ||
108 | |||
109 | def start(self): | ||
110 | self.update() | ||
111 | |||
112 | def goto(self, index): | ||
113 | incr = index - self.index | ||
114 | self.next(incr) | ||
115 | |||
116 | def iter(self, it): | ||
117 | try: | ||
118 | self.max = len(it) | ||
119 | except TypeError: | ||
120 | pass | ||
121 | |||
122 | try: | ||
123 | for x in it: | ||
124 | yield x | ||
125 | self.next() | ||
126 | finally: | ||
127 | self.finish() | ||
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/bar.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/bar.py new file mode 100644 index 0000000..3fdd703 --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/bar.py | |||
@@ -0,0 +1,88 @@ | |||
1 | # -*- coding: utf-8 -*- | ||
2 | |||
3 | # Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com> | ||
4 | # | ||
5 | # Permission to use, copy, modify, and distribute this software for any | ||
6 | # purpose with or without fee is hereby granted, provided that the above | ||
7 | # copyright notice and this permission notice appear in all copies. | ||
8 | # | ||
9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
16 | |||
17 | from __future__ import unicode_literals | ||
18 | from . import Progress | ||
19 | from .helpers import WritelnMixin | ||
20 | |||
21 | |||
22 | class Bar(WritelnMixin, Progress): | ||
23 | width = 32 | ||
24 | message = '' | ||
25 | suffix = '%(index)d/%(max)d' | ||
26 | bar_prefix = ' |' | ||
27 | bar_suffix = '| ' | ||
28 | empty_fill = ' ' | ||
29 | fill = '#' | ||
30 | hide_cursor = True | ||
31 | |||
32 | def update(self): | ||
33 | filled_length = int(self.width * self.progress) | ||
34 | empty_length = self.width - filled_length | ||
35 | |||
36 | message = self.message % self | ||
37 | bar = self.fill * filled_length | ||
38 | empty = self.empty_fill * empty_length | ||
39 | suffix = self.suffix % self | ||
40 | line = ''.join([message, self.bar_prefix, bar, empty, self.bar_suffix, | ||
41 | suffix]) | ||
42 | self.writeln(line) | ||
43 | |||
44 | |||
45 | class ChargingBar(Bar): | ||
46 | suffix = '%(percent)d%%' | ||
47 | bar_prefix = ' ' | ||
48 | bar_suffix = ' ' | ||
49 | empty_fill = '∙' | ||
50 | fill = '█' | ||
51 | |||
52 | |||
53 | class FillingSquaresBar(ChargingBar): | ||
54 | empty_fill = '▢' | ||
55 | fill = '▣' | ||
56 | |||
57 | |||
58 | class FillingCirclesBar(ChargingBar): | ||
59 | empty_fill = '◯' | ||
60 | fill = '◉' | ||
61 | |||
62 | |||
63 | class IncrementalBar(Bar): | ||
64 | phases = (' ', '▏', '▎', '▍', '▌', '▋', '▊', '▉', '█') | ||
65 | |||
66 | def update(self): | ||
67 | nphases = len(self.phases) | ||
68 | filled_len = self.width * self.progress | ||
69 | nfull = int(filled_len) # Number of full chars | ||
70 | phase = int((filled_len - nfull) * nphases) # Phase of last char | ||
71 | nempty = self.width - nfull # Number of empty chars | ||
72 | |||
73 | message = self.message % self | ||
74 | bar = self.phases[-1] * nfull | ||
75 | current = self.phases[phase] if phase > 0 else '' | ||
76 | empty = self.empty_fill * max(0, nempty - len(current)) | ||
77 | suffix = self.suffix % self | ||
78 | line = ''.join([message, self.bar_prefix, bar, current, empty, | ||
79 | self.bar_suffix, suffix]) | ||
80 | self.writeln(line) | ||
81 | |||
82 | |||
83 | class PixelBar(IncrementalBar): | ||
84 | phases = ('⡀', '⡄', '⡆', '⡇', '⣇', '⣧', '⣷', '⣿') | ||
85 | |||
86 | |||
87 | class ShadyBar(IncrementalBar): | ||
88 | phases = (' ', '░', '▒', '▓', '█') | ||
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/counter.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/counter.py new file mode 100644 index 0000000..e993a51 --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/counter.py | |||
@@ -0,0 +1,48 @@ | |||
1 | # -*- coding: utf-8 -*- | ||
2 | |||
3 | # Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com> | ||
4 | # | ||
5 | # Permission to use, copy, modify, and distribute this software for any | ||
6 | # purpose with or without fee is hereby granted, provided that the above | ||
7 | # copyright notice and this permission notice appear in all copies. | ||
8 | # | ||
9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
16 | |||
17 | from __future__ import unicode_literals | ||
18 | from . import Infinite, Progress | ||
19 | from .helpers import WriteMixin | ||
20 | |||
21 | |||
22 | class Counter(WriteMixin, Infinite): | ||
23 | message = '' | ||
24 | hide_cursor = True | ||
25 | |||
26 | def update(self): | ||
27 | self.write(str(self.index)) | ||
28 | |||
29 | |||
30 | class Countdown(WriteMixin, Progress): | ||
31 | hide_cursor = True | ||
32 | |||
33 | def update(self): | ||
34 | self.write(str(self.remaining)) | ||
35 | |||
36 | |||
37 | class Stack(WriteMixin, Progress): | ||
38 | phases = (' ', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█') | ||
39 | hide_cursor = True | ||
40 | |||
41 | def update(self): | ||
42 | nphases = len(self.phases) | ||
43 | i = min(nphases - 1, int(self.progress * nphases)) | ||
44 | self.write(self.phases[i]) | ||
45 | |||
46 | |||
47 | class Pie(Stack): | ||
48 | phases = ('○', '◔', '◑', '◕', '●') | ||
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/helpers.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/helpers.py new file mode 100644 index 0000000..96c8800 --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/helpers.py | |||
@@ -0,0 +1,91 @@ | |||
1 | # Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com> | ||
2 | # | ||
3 | # Permission to use, copy, modify, and distribute this software for any | ||
4 | # purpose with or without fee is hereby granted, provided that the above | ||
5 | # copyright notice and this permission notice appear in all copies. | ||
6 | # | ||
7 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
8 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
9 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
10 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
11 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
12 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
13 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
14 | |||
15 | from __future__ import print_function | ||
16 | |||
17 | |||
18 | HIDE_CURSOR = '\x1b[?25l' | ||
19 | SHOW_CURSOR = '\x1b[?25h' | ||
20 | |||
21 | |||
22 | class WriteMixin(object): | ||
23 | hide_cursor = False | ||
24 | |||
25 | def __init__(self, message=None, **kwargs): | ||
26 | super(WriteMixin, self).__init__(**kwargs) | ||
27 | self._width = 0 | ||
28 | if message: | ||
29 | self.message = message | ||
30 | |||
31 | if self.file.isatty(): | ||
32 | if self.hide_cursor: | ||
33 | print(HIDE_CURSOR, end='', file=self.file) | ||
34 | print(self.message, end='', file=self.file) | ||
35 | self.file.flush() | ||
36 | |||
37 | def write(self, s): | ||
38 | if self.file.isatty(): | ||
39 | b = '\b' * self._width | ||
40 | c = s.ljust(self._width) | ||
41 | print(b + c, end='', file=self.file) | ||
42 | self._width = max(self._width, len(s)) | ||
43 | self.file.flush() | ||
44 | |||
45 | def finish(self): | ||
46 | if self.file.isatty() and self.hide_cursor: | ||
47 | print(SHOW_CURSOR, end='', file=self.file) | ||
48 | |||
49 | |||
50 | class WritelnMixin(object): | ||
51 | hide_cursor = False | ||
52 | |||
53 | def __init__(self, message=None, **kwargs): | ||
54 | super(WritelnMixin, self).__init__(**kwargs) | ||
55 | if message: | ||
56 | self.message = message | ||
57 | |||
58 | if self.file.isatty() and self.hide_cursor: | ||
59 | print(HIDE_CURSOR, end='', file=self.file) | ||
60 | |||
61 | def clearln(self): | ||
62 | if self.file.isatty(): | ||
63 | print('\r\x1b[K', end='', file=self.file) | ||
64 | |||
65 | def writeln(self, line): | ||
66 | if self.file.isatty(): | ||
67 | self.clearln() | ||
68 | print(line, end='', file=self.file) | ||
69 | self.file.flush() | ||
70 | |||
71 | def finish(self): | ||
72 | if self.file.isatty(): | ||
73 | print(file=self.file) | ||
74 | if self.hide_cursor: | ||
75 | print(SHOW_CURSOR, end='', file=self.file) | ||
76 | |||
77 | |||
78 | from signal import signal, SIGINT | ||
79 | from sys import exit | ||
80 | |||
81 | |||
82 | class SigIntMixin(object): | ||
83 | """Registers a signal handler that calls finish on SIGINT""" | ||
84 | |||
85 | def __init__(self, *args, **kwargs): | ||
86 | super(SigIntMixin, self).__init__(*args, **kwargs) | ||
87 | signal(SIGINT, self._sigint_handler) | ||
88 | |||
89 | def _sigint_handler(self, signum, frame): | ||
90 | self.finish() | ||
91 | exit(0) | ||
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/spinner.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/spinner.py new file mode 100644 index 0000000..d67c679 --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/progress/spinner.py | |||
@@ -0,0 +1,44 @@ | |||
1 | # -*- coding: utf-8 -*- | ||
2 | |||
3 | # Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com> | ||
4 | # | ||
5 | # Permission to use, copy, modify, and distribute this software for any | ||
6 | # purpose with or without fee is hereby granted, provided that the above | ||
7 | # copyright notice and this permission notice appear in all copies. | ||
8 | # | ||
9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
16 | |||
17 | from __future__ import unicode_literals | ||
18 | from . import Infinite | ||
19 | from .helpers import WriteMixin | ||
20 | |||
21 | |||
22 | class Spinner(WriteMixin, Infinite): | ||
23 | message = '' | ||
24 | phases = ('-', '\\', '|', '/') | ||
25 | hide_cursor = True | ||
26 | |||
27 | def update(self): | ||
28 | i = self.index % len(self.phases) | ||
29 | self.write(self.phases[i]) | ||
30 | |||
31 | |||
32 | class PieSpinner(Spinner): | ||
33 | phases = ['◷', '◶', '◵', '◴'] | ||
34 | |||
35 | |||
36 | class MoonSpinner(Spinner): | ||
37 | phases = ['◑', '◒', '◐', '◓'] | ||
38 | |||
39 | |||
40 | class LineSpinner(Spinner): | ||
41 | phases = ['⎺', '⎻', '⎼', '⎽', '⎼', '⎻'] | ||
42 | |||
43 | class PixelSpinner(Spinner): | ||
44 | phases = ['⣾','⣷', '⣯', '⣟', '⡿', '⢿', '⣻', '⣽'] | ||