Skip to content

Instantly share code, notes, and snippets.

@deeplook
Created October 13, 2017 13:36
Show Gist options
  • Save deeplook/2b7a92ec23d59b2c6affb96f4e4e97fb to your computer and use it in GitHub Desktop.
Save deeplook/2b7a92ec23d59b2c6affb96f4e4e97fb to your computer and use it in GitHub Desktop.
A simple module to allow Python scripts to upgrade themselves. (WIP)
{
"version": 1,
"width": 109,
"height": 25,
"duration": 80.986919,
"command": null,
"title": null,
"env": {
"TERM": "xterm-256color",
"SHELL": "/bin/bash"
},
"stdout": [
[
0.015803,
"\u001b[?1034hbash-3.2$ "
],
[
1.556997,
"l"
],
[
0.291984,
"s"
],
[
0.162914,
" "
],
[
0.192664,
"-"
],
[
0.199135,
"l"
],
[
0.558549,
"\r\n"
],
[
0.006517,
"total 24\r\n"
],
[
0.000513,
"-rw-r--r-- 1 gherman staff 0 Oct 13 15:30 autofib-screencast.json\r\n-rw-r--r--@ 1 gherman staff 1946 Oct 13 15:21 autofib.py\r\n-rw-r--r--@ 1 gherman staff 6110 Oct 13 15:20 autoupgrade.py\r\n"
],
[
0.000515,
"bash-3.2$ "
],
[
1.43796,
"p"
],
[
0.084078,
"y"
],
[
0.262352,
"t"
],
[
0.100149,
"h"
],
[
0.064283,
"o"
],
[
0.27102,
"n"
],
[
0.175998,
" "
],
[
0.892847,
"a"
],
[
0.315221,
"u"
],
[
0.361802,
"t"
],
[
0.155071,
"o"
],
[
0.274864,
"f"
],
[
0.240192,
"i"
],
[
0.353819,
"b"
],
[
0.525009,
"."
],
[
0.194093,
"p"
],
[
0.142917,
"y"
],
[
0.180099,
" "
],
[
0.372894,
"-"
],
[
0.113043,
"-"
],
[
0.216885,
"h"
],
[
0.191011,
"e"
],
[
0.155943,
"l"
],
[
0.180253,
"p"
],
[
0.639818,
"\r\n"
],
[
0.310689,
"usage: autofib.py [-h] [--version] [--verbose] [--upgrade-check] [--upgrade]\r\n\r\nReturn n-th Fibonacci number.\r\n\r\noptional arguments:\r\n -h, --help show this help message and exit\r\n --version Show version and quit.\r\n --verbose Be more verbose.\r\n --upgrade-check Check for available upgrade\r\n --upgrade Perform upgrade to latest version\r\n\r\nCopyleft 2017, Dinu Gherman\r\n\u001b[0m\u001b[0m\u001b[0m"
],
[
7.1e-05,
"\u001b[0m"
],
[
1.2e-05,
"\u001b[0m"
],
[
0.036665,
"bash-3.2$ "
],
[
1.297223,
"python autofib.py --help"
],
[
0.576441,
"\b\u001b[K"
],
[
0.12197,
"\b\u001b[K"
],
[
0.148097,
"\b\u001b[K"
],
[
0.154019,
"\b\u001b[K"
],
[
0.562655,
"v"
],
[
0.140884,
"e"
],
[
0.167702,
"r"
],
[
0.13838,
"s"
],
[
0.193448,
"i"
],
[
0.087987,
"o"
],
[
0.182892,
"n"
],
[
1.308141,
"\r\n"
],
[
0.3923,
"0.0.2\u001b[0m\u001b[0m"
],
[
2.4e-05,
"\u001b[0m\r\n\u001b[0m\u001b[0m"
],
[
0.000102,
"\u001b[0m"
],
[
0.000114,
"\u001b[0m"
],
[
3.4e-05,
"\u001b[0m"
],
[
0.035331,
"bash-3.2$ "
],
[
0.798211,
"python autofib.py --version"
],
[
0.864539,
"\b\u001b[K"
],
[
0.167561,
"\b\u001b[K"
],
[
0.022006,
"\b\u001b[K"
],
[
0.019704,
"\b\u001b[K"
],
[
0.017176,
"\b\u001b[K"
],
[
0.018293,
"\b\u001b[K"
],
[
0.167049,
"\b\u001b[K"
],
[
0.157049,
"\b\u001b[K"
],
[
0.163095,
"\b\u001b[K"
],
[
0.155199,
"\b\u001b[K"
],
[
0.325712,
"\r\n"
],
[
3.427333,
"v. 0.0.2\u001b[0m\u001b[0m\u001b[0m\r\n\u001b[0m\u001b[0m"
],
[
7.2e-05,
"\u001b[0m[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]\u001b[0m\u001b[0m\u001b[0m\r\n\u001b[0m\u001b[0m"
],
[
1.4e-05,
"\u001b[0m"
],
[
0.000106,
"\u001b[0m\u001b[0m"
],
[
0.032391,
"bash-3.2$ "
],
[
1.801228,
"python autofib.py"
],
[
0.842011,
" "
],
[
0.254813,
"-"
],
[
0.128066,
"-"
],
[
0.402924,
"u"
],
[
0.143147,
"p"
],
[
0.459206,
"g"
],
[
0.178838,
"r"
],
[
0.087718,
"a"
],
[
0.198101,
"d"
],
[
0.175017,
"e"
],
[
0.860941,
"-"
],
[
0.274989,
"c"
],
[
0.171124,
"h"
],
[
0.102814,
"e"
],
[
0.19306,
"c"
],
[
0.124991,
"k"
],
[
0.224082,
" "
],
[
0.239842,
"-"
],
[
0.126065,
"-"
],
[
0.453071,
"v"
],
[
0.119115,
"e"
],
[
0.167849,
"r"
],
[
0.30511,
"b"
],
[
0.209924,
"o"
],
[
0.096842,
"s"
],
[
0.092085,
"e"
],
[
1.271006,
"\r\n"
],
[
0.310605,
"\u001b[?25l\u001b[0m\u001b[0m\u001b[0m"
],
[
2.5e-05,
"\r\u001b[0m"
],
[
1.1e-05,
"\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
1.7e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
1.6e-05,
"\u001b[0m\u001b[0m"
],
[
0.0002,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
0.006119,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083302,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081275,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
3e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08069,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.9e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084018,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
3.1e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084703,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083869,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.1e-05,
"\u001b[0m"
],
[
0.082858,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085074,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08113,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.3e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084913,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.9e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084846,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.5e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084881,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084699,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.7e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083516,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
2.9e-05,
"\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08502,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085174,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084205,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081752,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083504,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.3e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085137,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083317,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083768,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080676,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080384,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084179,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084892,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084491,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.1e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084551,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084918,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082553,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082935,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082956,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082059,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.3e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085085,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083256,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080334,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081905,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08446,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
3.2e-05,
"\u001b[0m\u001b[0m\u001b[0m\u001b[?25h\u001b[0m\u001b[0m\u001b[0m\u001b[32m✔\u001b[39m Loaded gist 4812aff91b6e87fee79ee59308f41153\r\n"
],
[
1.1e-05,
"\u001b[0m\u001b[0m"
],
[
2.8e-05,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
1e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
1.5e-05,
"\u001b[0m\u001b[?25h\u001b[0m"
],
[
1.3e-05,
"\u001b[0m\u001b[0m"
],
[
0.000397,
"Available updates: ['0.0.3']. This version is 0.0.2.\u001b[0m\u001b[0m\u001b[0m\r\n\u001b[0m\u001b[0m"
],
[
1.7e-05,
"\u001b[0m"
],
[
6.1e-05,
"\u001b[0m"
],
[
1.7e-05,
"\u001b[0m"
],
[
0.038468,
"bash-3.2$ "
],
[
1.06327,
"python autofib.py --upgrade-check --verbose"
],
[
1.133303,
"\b\u001b[K"
],
[
0.166113,
"\b\u001b[K"
],
[
0.018382,
"\b\u001b[K"
],
[
0.017135,
"\b\u001b[K"
],
[
0.016342,
"\b\u001b[K"
],
[
0.016301,
"\b\u001b[K"
],
[
0.02184,
"\b\u001b[K"
],
[
0.020101,
"\b\u001b[K"
],
[
0.014498,
"\b\u001b[K"
],
[
0.019118,
"\b\u001b[K"
],
[
0.016164,
"\b\u001b[K"
],
[
0.222169,
"\b\u001b[K"
],
[
0.152664,
"\b\u001b[K"
],
[
0.160888,
"\b\u001b[K"
],
[
0.161083,
"\b\u001b[K"
],
[
0.254136,
"\b\u001b[K"
],
[
1.482187,
" "
],
[
0.193943,
"-"
],
[
0.103597,
"-"
],
[
0.465155,
"v"
],
[
0.106855,
"e"
],
[
0.170419,
"r"
],
[
0.213721,
"b"
],
[
0.183417,
"o"
],
[
0.063804,
"s"
],
[
0.083824,
"e"
],
[
1.007912,
"\r\n"
],
[
0.359289,
"\u001b[?25l\u001b[0m\u001b[0m\u001b[0m"
],
[
0.000133,
"\r\u001b[0m"
],
[
2.5e-05,
"\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.2e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
1.2e-05,
"\u001b[0m"
],
[
5.7e-05,
"\u001b[0m"
],
[
0.000247,
"\u001b[0m\r"
],
[
0.006432,
"\u001b[0m"
],
[
0.000883,
"\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.8e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083811,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.5e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083629,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085137,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084589,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.7e-05,
"\u001b[0m"
],
[
0.081433,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083635,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085055,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080727,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083979,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08065,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081439,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.2e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083542,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084504,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084498,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08458,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.1e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084258,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
2.4e-05,
"\u001b[0m\u001b[0m"
],
[
0.084538,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084715,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.2e-05,
"\u001b[0m"
],
[
0.084492,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.6e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084799,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
2.3e-05,
"\u001b[0m\u001b[0m"
],
[
0.082304,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085137,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083983,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.3e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084646,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
2.3e-05,
"\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082537,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084209,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
2.4e-05,
"\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083938,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084528,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.6e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082167,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085095,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081699,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081339,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084387,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
3.1e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085129,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
2.7e-05,
"\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084908,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.5e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084853,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085035,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.2e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084447,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.9e-05,
"\u001b[0m\u001b[0m\u001b[0m\u001b[?25h\u001b[0m\u001b[0m\u001b[0m\u001b[32m✔\u001b[39m Loaded gist 4812aff91b6e87fee79ee59308f41153\r\n\u001b[0m"
],
[
1.5e-05,
"\u001b[0m"
],
[
2.4e-05,
"\u001b[0m\r\u001b[0m"
],
[
1.4e-05,
"\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
1.4e-05,
"\u001b[0m\u001b[?25h\u001b[0m"
],
[
1.2e-05,
"\u001b[0m\u001b[0m"
],
[
0.000986,
"\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\u001b[?25h\u001b[0m\u001b[0m\u001b[0m"
],
[
3.6e-05,
"\u001b[32m✔\u001b[39m Upgraded /Users/gherman/tmp_macbook/autoupdate/demo/autofib.py from version 0.0.2 to 0.0.3.\r\n\u001b[0m\u001b[0m"
],
[
1.6e-05,
"\u001b[0m"
],
[
0.000129,
"\u001b[0m"
],
[
6.5e-05,
"\u001b[0m"
],
[
0.049425,
"bash-3.2$ "
],
[
2.872105,
"python autofib.py --upgrade --verbose"
],
[
0.645806,
"\b\u001b[K"
],
[
0.166659,
"\b\u001b[K"
],
[
0.016173,
"\b\u001b[K"
],
[
0.017193,
"\b\u001b[K"
],
[
0.019003,
"\b\u001b[K"
],
[
0.020947,
"\b\u001b[K"
],
[
0.016558,
"\b\u001b[K"
],
[
0.01847,
"\b\u001b[K"
],
[
0.017925,
"\b\u001b[K"
],
[
0.016703,
"\b\u001b[K"
],
[
0.01615,
"\b\u001b[K"
],
[
0.017693,
"\b\u001b[K"
],
[
0.019214,
"\b\u001b[K"
],
[
0.016343,
"\b\u001b[K"
],
[
0.018215,
"\b\u001b[K"
],
[
0.173701,
"\b\u001b[K"
],
[
0.154843,
"\b\u001b[K"
],
[
0.154941,
"\b\u001b[K"
],
[
0.156253,
"\b\u001b[K"
],
[
0.23981,
"\b\u001b[K"
],
[
1.036136,
"\r\n"
],
[
3.489239,
"v. 0.0.3\u001b[0m\u001b[0m\u001b[0m\r\n\u001b[0m\u001b[0m"
],
[
3e-05,
"\u001b[0m[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]\u001b[0m\u001b[0m\u001b[0m\r\n\u001b[0m\u001b[0m"
],
[
1.3e-05,
"\u001b[0m"
],
[
0.000104,
"\u001b[0m\u001b[0m"
],
[
0.031884,
"bash-3.2$ "
],
[
1.430347,
"python autofib.py"
],
[
0.732723,
" --upgrade --verbose"
],
[
2.548263,
"\r\n"
],
[
0.336087,
"\u001b[?25l\u001b[0m\u001b[0m\u001b[0m"
],
[
4.4e-05,
"\r\u001b[0m\u001b[0m"
],
[
1.1e-05,
"\u001b[0m\u001b[K\u001b[0m"
],
[
1.8e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
9e-06,
"\u001b[0m\u001b[0m"
],
[
0.000225,
"\u001b[0m\r"
],
[
0.006113,
"\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
3.4e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084483,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08359,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.0811,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084141,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.2e-05,
"\u001b[0m"
],
[
0.085017,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084429,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082495,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084714,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082787,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08204,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084491,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084065,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.3e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081453,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.2e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08508,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.3e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082751,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082775,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
9.4e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084322,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085148,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080848,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082037,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
2.3e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080349,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081133,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080432,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083421,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084964,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085111,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
3.4e-05,
"\u001b[0m\u001b[0m"
],
[
0.084185,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.3e-05,
"\u001b[0m"
],
[
0.083411,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081422,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085178,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084347,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
3.6e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083519,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08144,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
3.7e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084132,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
4e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084328,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083821,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084073,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08455,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084666,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085105,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
3.9e-05,
"\u001b[0m\u001b[0m\u001b[?25h\u001b[0m\u001b[0m\u001b[0m\u001b[32m✔\u001b[39m Loaded gist 4812aff91b6e87fee79ee59308f41153\r\n\u001b[0m"
],
[
2.5e-05,
"\u001b[0m"
],
[
5.2e-05,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
1.7e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\u001b[?25h\u001b[0m\u001b[0m\u001b[0m"
],
[
0.00098,
"\u001b[0m"
],
[
1.8e-05,
"\u001b[0m"
],
[
0.039547,
"bash-3.2$ "
],
[
2.432945,
"python autofib.py --upgrade --verbose"
],
[
3.139657,
"\b"
],
[
0.169338,
"\b"
],
[
0.016773,
"\b"
],
[
0.018256,
"\b"
],
[
0.021485,
"\b"
],
[
0.019205,
"\b"
],
[
0.016215,
"\b"
],
[
0.199661,
"\b"
],
[
0.198129,
"\b"
],
[
0.158803,
"\b"
],
[
0.624916,
"- --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.1064,
"- --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.324989,
"c --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.572395,
"\b\u001b[1P --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.126915,
"\b\u001b[1P --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.162993,
"\b\u001b[1P --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.754729,
"- --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.158848,
"c --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.213126,
"h --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.086112,
"e --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.819989,
"c --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
0.035855,
"k --verbose\b\b\b\b\b\b\b\b\b\b"
],
[
1.186396,
"\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C"
],
[
0.512598,
"\r\n"
],
[
0.334239,
"\u001b[?25l\u001b[0m"
],
[
3.4e-05,
"\u001b[0m"
],
[
1.9e-05,
"\u001b[0m"
],
[
0.000201,
"\r\u001b[0m"
],
[
1.8e-05,
"\u001b[0m"
],
[
0.0001,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153..."
],
[
2.3e-05,
"\u001b[0m\u001b[0m"
],
[
0.00028,
"\u001b[0m\r"
],
[
0.008649,
"\u001b[0m"
],
[
0.001241,
"\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m"
],
[
3.2e-05,
"\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083931,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084752,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.080273,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.4e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084936,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K"
],
[
3e-05,
"\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08473,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.3e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082641,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.4e-05,
"\u001b[0m"
],
[
0.082732,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085036,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084454,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.2e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081332,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084517,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084568,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08132,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083682,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084825,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.8e-05,
"\u001b[0m"
],
[
0.084728,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
2.1e-05,
"\u001b[0m"
],
[
0.084067,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.5e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083624,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.4e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085098,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.9e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085157,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08306,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084574,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.5e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083811,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084486,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08402,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081982,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.084017,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.08463,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.081388,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.8e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠋\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082935,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.5e-05,
"\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠙\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m"
],
[
1.1e-05,
"\u001b[0m"
],
[
0.084986,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠹\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083883,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠸\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.082538,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠼\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085129,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠴\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083257,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
2.9e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠦\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083543,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
3.2e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠧\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085006,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠇\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.083579,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\r\u001b[1m\u001b[36m⠏\u001b[0m Loading gist 4812aff91b6e87fee79ee59308f41153...\u001b[0m\u001b[0m"
],
[
0.085001,
"\u001b[0m\r\u001b[0m\u001b[0m\u001b[0m\u001b[K\u001b[0m"
],
[
2.7e-05,
"\u001b[0m\u001b[0m\u001b[?25h\u001b[0m\u001b[0m\u001b[0m\u001b[32m✔\u001b[39m Loaded gist 4812aff91b6e87fee79ee59308f41153\r\n\u001b[0m\u001b[0m"
],
[
3.4e-05,
"\u001b[0m\r\u001b[0m\u001b[0m"
],
[
1.7e-05,
"\u001b[0m\u001b[K\u001b[0m\u001b[0m\u001b[0m\u001b[?25h\u001b[0m"
],
[
1.3e-05,
"\u001b[0m\u001b[0m"
],
[
0.000396,
"This version (0.0.3) is up to date.\u001b[0m\u001b[0m\u001b[0m\r\n\u001b[0m\u001b[0m\u001b[0m"
],
[
7.4e-05,
"\u001b[0m"
],
[
1.8e-05,
"\u001b[0m"
],
[
0.044884,
"bash-3.2$ "
]
]
}
#!/usr/bin/env python
"""
A simple module to allow Python scripts to upgrade themselves.
So far this only supports upgrading single Python files from versioned
GitHub gists as "repositories", see https://gist.github.com. The gists
are accessed using the GitHub API with basic authentication and the
environment variables GITHUB_USER and GITHUB_PASSWORD.
WARNINGS:
- This is a proof of concept and not production level code!
Make sure you have backups of any files you are upgrading!
- If you find this script inside a GitHub gist, be warned that
its gist ID might change without notice! In this case please
look for similar filenames until this might become part of
a proper package...
"""
import re
import os
import sys
import json
import argparse
from distutils.version import LooseVersion
import requests
try:
from halo import Halo
HAVE_HALO = True
except ImportError:
HAVE_HALO = False
__version__ = "0.0.0"
class MockHalo(object):
"""
A mocking Halo context manager, only printing the passed text on stdout.
"""
def __init__(self, *args, **kwargs):
if "text" in kwargs:
print(kwargs["text"])
def __enter__(self):
return self
def __exit__(self, *exc):
return False
def succeed(self, text):
print(text)
def fail(self, text):
print(text)
class SilentHalo(MockHalo):
"""
A mocking Halo context manager doing nothing.
"""
def __init__(self, *args, **kwargs):
pass
def succeed(self, text):
pass
def fail(self, text):
pass
if not HAVE_HALO:
Halo = MockHalo
class GistUpgrader(object):
"""
Upgrader for code taking GitHub gists as repositories.
This provides access to a GitHub gist defined by its SHA-1 ID, allows
to pick any file with some known name and some desired version string
inside any of its revisions, and replace the locally installed file
with the same name.
Script versions have to be strings assigned to an __version__ variable
(as it is usually defined on the top level). Only the first found will be
used.
"""
def __init__(self, gist_id, auth=None, verbose=False):
self.gist_id = gist_id
self.version_pattern = "\d[\d.]*" # FIXME: improve lousy pattern!
self.auth = auth
if not self.auth:
self.auth = (os.getenv("GITHUB_USER"), os.getenv("GITHUB_PASSWORD"))
H = Halo if verbose else SilentHalo
text = "gist {}".format(self.gist_id)
with H(text="Loading {}...".format(text), spinner="dots") as spinner:
self.info = self.load_repo()
spinner.succeed("Loaded {}".format(text)) # FIXME: show full URL!
def load_repo(self):
"""
Load relevant data from remote repository and store it locally.
"""
# [{filename1: {content: ..., size: ...}}, {filename1: ...}]
url = "https://api.github.com/gists/{}".format(self.gist_id)
gist = requests.get(url, auth=self.auth).json()
info = [v["url"] for v in gist["history"]]
info = [requests.get(url, auth=self.auth).json()["files"] for url in info]
return info
def extract_version(self, code, version_pattern=None):
"""
Determine the version of some Python source code.
"""
if version_pattern:
self.version_pattern = version_pattern
pat = """__version__\s*=\s*\"({})\"""".format(self.version_pattern)
version_str = re.findall(pat, code)[0]
return version_str
def get_all_versions(self, filename):
"""
Get all versions for all available variants of the code.
Returns a list of (version-str, raw-url) pairs.
"""
versions = [
(self.extract_version(v[filename]["content"]), v[filename]["raw_url"])
for v in self.info if filename in v
]
return versions
def get_script(self, filename, version="latest"):
"""
Get specified version of a script.
"""
ext_ver = self.extract_version
versions = sorted([
(LooseVersion(ext_ver(v[filename]["content"])), v[filename]["content"])
for v in self.info if filename in v
])
## FIXME: raise error if no such filename found
## FIXME: raise error if no such version for given filename found
if version == "latest":
return versions[-1][1]
versions = [(v, content) for (v, content) in versions if str(v)==version]
return versions[0][1]
def upgrade_script(self, path, version="latest", verbose=False):
"""
Upgrade an installed program consisting of a single script.
"""
current_code = open(path).read()
current_version = self.extract_version(current_code)
new_script_content = self.get_script(os.path.basename(path), version=version)
new_version = self.extract_version(new_script_content)
if LooseVersion(new_version) <= LooseVersion(current_version):
return
script_abs_path = os.path.abspath(path)
args = (script_abs_path, current_version, new_version)
open(script_abs_path, 'w').write(new_script_content)
if verbose:
text = "Upgraded {} from version {} to {}.".format(*args)
Halo().succeed(text)
def upgrade_check(self, filename, some_version, verbose=False):
"""
Check if there are newer versions and report all of them.
Return a list of version strings newer than ``some_version``.
"""
updates = [
ver for (ver, url) in self.get_all_versions(filename)
if LooseVersion(ver) > LooseVersion(some_version)
]
if verbose:
if updates:
print("Available updates: {}. This version is {}."\
.format(updates, some_version))
else:
print("This version ({}) is up to date.".format(some_version))
return updates
@deeplook
Copy link
Author

deeplook commented Oct 13, 2017

You can see a recorded terminal session here. Or you download autoupgrade.pyand autofib-screencast.json from this gist and autofib.py v. 0.0.2 from its own gist. Then run the screencast with asciinema play autofib-screencast.json (see asciinema.org). And replicate locally (you'll need environment variables GITHUB_USER and GITHUB_PASSWPRD with your values set appropriately).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment