From 433194788989c4a3deeb96c1fd874d35737ac03d Mon Sep 17 00:00:00 2001 From: Josuer08 Date: Wed, 17 Feb 2021 09:23:24 -0500 Subject: [PATCH] goodbye stuff --- .config/bpytop/error.log | 5 + .config/nvim/.netrwhist | 8 +- .config/pavucontrol.ini | 4 +- .config/qutebrowser/bookmarks/urls | 1 + .config/qutebrowser/qsettings/QtProject.conf | 6 +- .../site-packages/concurrent/__init__.py | 3 - .../site-packages/concurrent/__init__.pyc | Bin 261 -> 0 bytes .../concurrent/futures/__init__.py | 23 - .../concurrent/futures/__init__.pyc | Bin 819 -> 0 bytes .../site-packages/concurrent/futures/_base.py | 667 --------- .../concurrent/futures/_base.pyc | Bin 26729 -> 0 bytes .../concurrent/futures/process.py | 363 ----- .../concurrent/futures/process.pyc | Bin 13002 -> 0 bytes .../concurrent/futures/thread.py | 170 --- .../concurrent/futures/thread.pyc | Bin 5727 -> 0 bytes .../futures-3.3.0.dist-info/INSTALLER | 1 - .../futures-3.3.0.dist-info/LICENSE | 48 - .../futures-3.3.0.dist-info/METADATA | 57 - .../futures-3.3.0.dist-info/RECORD | 16 - .../futures-3.3.0.dist-info/WHEEL | 5 - .../futures-3.3.0.dist-info/top_level.txt | 1 - .../greenlet-0.4.17.dist-info/AUTHORS | 51 - .../greenlet-0.4.17.dist-info/INSTALLER | 1 - .../greenlet-0.4.17.dist-info/LICENSE | 30 - .../greenlet-0.4.17.dist-info/LICENSE.PSF | 47 - .../greenlet-0.4.17.dist-info/METADATA | 92 -- .../greenlet-0.4.17.dist-info/RECORD | 10 - .../greenlet-0.4.17.dist-info/WHEEL | 5 - .../greenlet-0.4.17.dist-info/top_level.txt | 1 - .../lib/python2.7/site-packages/greenlet.so | Bin 98183 -> 0 bytes .../neovim-0.3.1-py2.7.egg-info/PKG-INFO | 10 - .../neovim-0.3.1-py2.7.egg-info/SOURCES.txt | 8 - .../dependency_links.txt | 1 - .../installed-files.txt | 6 - .../neovim-0.3.1-py2.7.egg-info/not-zip-safe | 1 - .../neovim-0.3.1-py2.7.egg-info/requires.txt | 1 - .../neovim-0.3.1-py2.7.egg-info/top_level.txt | 1 - .../site-packages/neovim/__init__.py | 8 - .../site-packages/neovim/__init__.pyc | Bin 360 -> 0 bytes .../site-packages/neovim/api/__init__.py | 8 - .../site-packages/neovim/api/__init__.pyc | Bin 394 -> 0 bytes .../pynvim-0.4.2-py2.7.egg-info/PKG-INFO | 13 - .../pynvim-0.4.2-py2.7.egg-info/SOURCES.txt | 45 - .../dependency_links.txt | 1 - .../installed-files.txt | 52 - .../pynvim-0.4.2-py2.7.egg-info/not-zip-safe | 1 - .../pynvim-0.4.2-py2.7.egg-info/requires.txt | 9 - .../pynvim-0.4.2-py2.7.egg-info/top_level.txt | 2 - .../site-packages/pynvim/__init__.py | 156 -- .../site-packages/pynvim/__init__.pyc | Bin 6069 -> 0 bytes .../site-packages/pynvim/api/__init__.py | 15 - .../site-packages/pynvim/api/__init__.pyc | Bin 750 -> 0 bytes .../site-packages/pynvim/api/buffer.py | 217 --- .../site-packages/pynvim/api/buffer.pyc | Bin 9924 -> 0 bytes .../site-packages/pynvim/api/common.py | 205 --- .../site-packages/pynvim/api/common.pyc | Bin 10326 -> 0 bytes .../site-packages/pynvim/api/nvim.py | 577 -------- .../site-packages/pynvim/api/nvim.pyc | Bin 27067 -> 0 bytes .../site-packages/pynvim/api/tabpage.py | 35 - .../site-packages/pynvim/api/tabpage.pyc | Bin 1935 -> 0 bytes .../site-packages/pynvim/api/window.py | 72 - .../site-packages/pynvim/api/window.pyc | Bin 3739 -> 0 bytes .../python2.7/site-packages/pynvim/compat.py | 57 - .../python2.7/site-packages/pynvim/compat.pyc | Bin 1807 -> 0 bytes .../pynvim/msgpack_rpc/__init__.py | 45 - .../pynvim/msgpack_rpc/__init__.pyc | Bin 2478 -> 0 bytes .../pynvim/msgpack_rpc/async_session.py | 145 -- .../pynvim/msgpack_rpc/async_session.pyc | Bin 6392 -> 0 bytes .../pynvim/msgpack_rpc/event_loop/__init__.py | 24 - .../msgpack_rpc/event_loop/__init__.pyc | Bin 687 -> 0 bytes .../pynvim/msgpack_rpc/event_loop/asyncio.py | 163 --- .../pynvim/msgpack_rpc/event_loop/asyncio.pyc | Bin 8311 -> 0 bytes .../pynvim/msgpack_rpc/event_loop/base.py | 192 --- .../pynvim/msgpack_rpc/event_loop/base.pyc | Bin 8381 -> 0 bytes .../pynvim/msgpack_rpc/event_loop/uv.py | 124 -- .../pynvim/msgpack_rpc/event_loop/uv.pyc | Bin 7041 -> 0 bytes .../pynvim/msgpack_rpc/msgpack_stream.py | 68 - .../pynvim/msgpack_rpc/msgpack_stream.pyc | Bin 3267 -> 0 bytes .../pynvim/msgpack_rpc/session.py | 253 ---- .../pynvim/msgpack_rpc/session.pyc | Bin 9960 -> 0 bytes .../site-packages/pynvim/plugin/__init__.py | 9 - .../site-packages/pynvim/plugin/__init__.pyc | Bin 634 -> 0 bytes .../site-packages/pynvim/plugin/decorators.py | 175 --- .../pynvim/plugin/decorators.pyc | Bin 6041 -> 0 bytes .../site-packages/pynvim/plugin/host.py | 276 ---- .../site-packages/pynvim/plugin/host.pyc | Bin 10213 -> 0 bytes .../pynvim/plugin/script_host.py | 276 ---- .../pynvim/plugin/script_host.pyc | Bin 11496 -> 0 bytes .../python2.7/site-packages/pynvim/util.py | 42 - .../python2.7/site-packages/pynvim/util.pyc | Bin 2649 -> 0 bytes .../PKG-INFO | 27 - .../SOURCES.txt | 120 -- .../dependency_links.txt | 1 - .../installed-files.txt | 68 - .../not-zip-safe | 1 - .../requires.txt | 2 - .../top_level.txt | 1 - .../site-packages/trollius/__init__.py | 59 - .../site-packages/trollius/__init__.pyc | Bin 1082 -> 0 bytes .../site-packages/trollius/base_events.py | 1260 ----------------- .../site-packages/trollius/base_events.pyc | Bin 40761 -> 0 bytes .../site-packages/trollius/base_subprocess.py | 282 ---- .../trollius/base_subprocess.pyc | Bin 11877 -> 0 bytes .../site-packages/trollius/compat.py | 69 - .../site-packages/trollius/compat.pyc | Bin 2063 -> 0 bytes .../site-packages/trollius/constants.py | 7 - .../site-packages/trollius/constants.pyc | Bin 278 -> 0 bytes .../site-packages/trollius/coroutines.py | 496 ------- .../site-packages/trollius/coroutines.pyc | Bin 16085 -> 0 bytes .../site-packages/trollius/events.py | 626 -------- .../site-packages/trollius/events.pyc | Bin 27439 -> 0 bytes .../site-packages/trollius/executor.py | 84 -- .../site-packages/trollius/executor.pyc | Bin 4161 -> 0 bytes .../site-packages/trollius/futures.py | 450 ------ .../site-packages/trollius/futures.pyc | Bin 16847 -> 0 bytes .../python2.7/site-packages/trollius/locks.py | 462 ------ .../site-packages/trollius/locks.pyc | Bin 17301 -> 0 bytes .../python2.7/site-packages/trollius/log.py | 7 - .../python2.7/site-packages/trollius/log.pyc | Bin 286 -> 0 bytes .../site-packages/trollius/proactor_events.py | 549 ------- .../trollius/proactor_events.pyc | Bin 20816 -> 0 bytes .../site-packages/trollius/protocols.py | 134 -- .../site-packages/trollius/protocols.pyc | Bin 6872 -> 0 bytes .../site-packages/trollius/py27_weakrefset.py | 202 --- .../trollius/py27_weakrefset.pyc | Bin 11694 -> 0 bytes .../site-packages/trollius/py33_exceptions.py | 144 -- .../trollius/py33_exceptions.pyc | Bin 5382 -> 0 bytes .../site-packages/trollius/py33_winapi.py | 75 - .../site-packages/trollius/py33_winapi.pyc | Bin 2206 -> 0 bytes .../site-packages/trollius/py3_ssl.py | 149 -- .../site-packages/trollius/py3_ssl.pyc | Bin 5171 -> 0 bytes .../site-packages/trollius/queues.py | 325 ----- .../site-packages/trollius/queues.pyc | Bin 12763 -> 0 bytes .../site-packages/trollius/selector_events.py | 1092 -------------- .../trollius/selector_events.pyc | Bin 35511 -> 0 bytes .../site-packages/trollius/selectors.py | 601 -------- .../site-packages/trollius/selectors.pyc | Bin 22162 -> 0 bytes .../site-packages/trollius/sslproto.py | 683 --------- .../site-packages/trollius/sslproto.pyc | Bin 24140 -> 0 bytes .../site-packages/trollius/streams.py | 530 ------- .../site-packages/trollius/streams.pyc | Bin 19319 -> 0 bytes .../site-packages/trollius/subprocess.py | 225 --- .../site-packages/trollius/subprocess.pyc | Bin 9222 -> 0 bytes .../python2.7/site-packages/trollius/tasks.py | 754 ---------- .../site-packages/trollius/tasks.pyc | Bin 23775 -> 0 bytes .../site-packages/trollius/test_support.py | 309 ---- .../site-packages/trollius/test_support.pyc | Bin 12909 -> 0 bytes .../site-packages/trollius/test_utils.py | 563 -------- .../site-packages/trollius/test_utils.pyc | Bin 24227 -> 0 bytes .../site-packages/trollius/time_monotonic.py | 192 --- .../site-packages/trollius/time_monotonic.pyc | Bin 5501 -> 0 bytes .../site-packages/trollius/transports.py | 294 ---- .../site-packages/trollius/transports.pyc | Bin 13836 -> 0 bytes .../site-packages/trollius/unix_events.py | 1034 -------------- .../site-packages/trollius/unix_events.pyc | Bin 36439 -> 0 bytes .../site-packages/trollius/windows_events.py | 777 ---------- .../site-packages/trollius/windows_events.pyc | Bin 28072 -> 0 bytes .../site-packages/trollius/windows_utils.py | 238 ---- .../site-packages/trollius/windows_utils.pyc | Bin 7570 -> 0 bytes .../greenlet-0.4.17.dist-info/AUTHORS | 51 - .../greenlet-0.4.17.dist-info/INSTALLER | 1 - .../greenlet-0.4.17.dist-info/LICENSE | 30 - .../greenlet-0.4.17.dist-info/LICENSE.PSF | 47 - .../greenlet-0.4.17.dist-info/METADATA | 92 -- .../greenlet-0.4.17.dist-info/RECORD | 10 - .../greenlet-0.4.17.dist-info/WHEEL | 5 - .../greenlet-0.4.17.dist-info/top_level.txt | 1 - .../greenlet.cpython-39-x86_64-linux-gnu.so | Bin 112560 -> 0 bytes .../neovim-0.3.1-py3.9.egg-info/PKG-INFO | 10 - .../neovim-0.3.1-py3.9.egg-info/SOURCES.txt | 8 - .../dependency_links.txt | 1 - .../installed-files.txt | 6 - .../neovim-0.3.1-py3.9.egg-info/not-zip-safe | 1 - .../neovim-0.3.1-py3.9.egg-info/requires.txt | 1 - .../neovim-0.3.1-py3.9.egg-info/top_level.txt | 1 - .../site-packages/neovim/__init__.py | 8 - .../__pycache__/__init__.cpython-39.pyc | Bin 332 -> 0 bytes .../site-packages/neovim/api/__init__.py | 8 - .../api/__pycache__/__init__.cpython-39.pyc | Bin 357 -> 0 bytes .../pynvim-0.4.2-py3.9.egg-info/PKG-INFO | 13 - .../pynvim-0.4.2-py3.9.egg-info/SOURCES.txt | 45 - .../dependency_links.txt | 1 - .../installed-files.txt | 52 - .../pynvim-0.4.2-py3.9.egg-info/not-zip-safe | 1 - .../pynvim-0.4.2-py3.9.egg-info/requires.txt | 8 - .../pynvim-0.4.2-py3.9.egg-info/top_level.txt | 2 - .../site-packages/pynvim/__init__.py | 156 -- .../__pycache__/__init__.cpython-39.pyc | Bin 4935 -> 0 bytes .../pynvim/__pycache__/compat.cpython-39.pyc | Bin 1443 -> 0 bytes .../pynvim/__pycache__/util.cpython-39.pyc | Bin 1982 -> 0 bytes .../site-packages/pynvim/api/__init__.py | 15 - .../api/__pycache__/__init__.cpython-39.pyc | Bin 623 -> 0 bytes .../api/__pycache__/buffer.cpython-39.pyc | Bin 7645 -> 0 bytes .../api/__pycache__/common.cpython-39.pyc | Bin 8031 -> 0 bytes .../api/__pycache__/nvim.cpython-39.pyc | Bin 21678 -> 0 bytes .../api/__pycache__/tabpage.cpython-39.pyc | Bin 1552 -> 0 bytes .../api/__pycache__/window.cpython-39.pyc | Bin 2688 -> 0 bytes .../site-packages/pynvim/api/buffer.py | 217 --- .../site-packages/pynvim/api/common.py | 205 --- .../site-packages/pynvim/api/nvim.py | 577 -------- .../site-packages/pynvim/api/tabpage.py | 35 - .../site-packages/pynvim/api/window.py | 72 - .../python3.9/site-packages/pynvim/compat.py | 57 - .../pynvim/msgpack_rpc/__init__.py | 45 - .../__pycache__/__init__.cpython-39.pyc | Bin 1885 -> 0 bytes .../__pycache__/async_session.cpython-39.pyc | Bin 4926 -> 0 bytes .../__pycache__/msgpack_stream.cpython-39.pyc | Bin 2476 -> 0 bytes .../__pycache__/session.cpython-39.pyc | Bin 7862 -> 0 bytes .../pynvim/msgpack_rpc/async_session.py | 145 -- .../pynvim/msgpack_rpc/event_loop/__init__.py | 24 - .../__pycache__/__init__.cpython-39.pyc | Bin 617 -> 0 bytes .../__pycache__/asyncio.cpython-39.pyc | Bin 6261 -> 0 bytes .../__pycache__/base.cpython-39.pyc | Bin 6927 -> 0 bytes .../event_loop/__pycache__/uv.cpython-39.pyc | Bin 5068 -> 0 bytes .../pynvim/msgpack_rpc/event_loop/asyncio.py | 163 --- .../pynvim/msgpack_rpc/event_loop/base.py | 192 --- .../pynvim/msgpack_rpc/event_loop/uv.py | 124 -- .../pynvim/msgpack_rpc/msgpack_stream.py | 68 - .../pynvim/msgpack_rpc/session.py | 253 ---- .../site-packages/pynvim/plugin/__init__.py | 9 - .../__pycache__/__init__.cpython-39.pyc | Bin 511 -> 0 bytes .../__pycache__/decorators.cpython-39.pyc | Bin 4138 -> 0 bytes .../plugin/__pycache__/host.cpython-39.pyc | Bin 7795 -> 0 bytes .../__pycache__/script_host.cpython-39.pyc | Bin 8695 -> 0 bytes .../site-packages/pynvim/plugin/decorators.py | 175 --- .../site-packages/pynvim/plugin/host.py | 276 ---- .../pynvim/plugin/script_host.py | 276 ---- .../python3.9/site-packages/pynvim/util.py | 42 - .../pywal-3.3.0-py3.9.egg-info/PKG-INFO | 44 - .../pywal-3.3.0-py3.9.egg-info/SOURCES.txt | 321 ----- .../dependency_links.txt | 1 - .../entry_points.txt | 3 - .../installed-files.txt | 322 ----- .../pywal-3.3.0-py3.9.egg-info/not-zip-safe | 1 - .../pywal-3.3.0-py3.9.egg-info/top_level.txt | 1 - .../python3.9/site-packages/pywal/__init__.py | 31 - .../python3.9/site-packages/pywal/__main__.py | 212 --- .../pywal/__pycache__/__init__.cpython-39.pyc | Bin 788 -> 0 bytes .../pywal/__pycache__/__main__.cpython-39.pyc | Bin 5167 -> 0 bytes .../pywal/__pycache__/colors.cpython-39.pyc | Bin 3998 -> 0 bytes .../pywal/__pycache__/export.cpython-39.pyc | Bin 2830 -> 0 bytes .../pywal/__pycache__/image.cpython-39.pyc | Bin 2433 -> 0 bytes .../pywal/__pycache__/reload.cpython-39.pyc | Bin 2685 -> 0 bytes .../__pycache__/sequences.cpython-39.pyc | Bin 2430 -> 0 bytes .../pywal/__pycache__/settings.cpython-39.pyc | Bin 771 -> 0 bytes .../pywal/__pycache__/theme.cpython-39.pyc | Bin 3964 -> 0 bytes .../pywal/__pycache__/util.cpython-39.pyc | Bin 6597 -> 0 bytes .../__pycache__/wallpaper.cpython-39.pyc | Bin 3813 -> 0 bytes .../site-packages/pywal/backends/__init__.py | 10 - .../__pycache__/__init__.cpython-39.pyc | Bin 505 -> 0 bytes .../__pycache__/colorthief.cpython-39.pyc | Bin 1813 -> 0 bytes .../__pycache__/colorz.cpython-39.pyc | Bin 1446 -> 0 bytes .../__pycache__/haishoku.cpython-39.pyc | Bin 1325 -> 0 bytes .../__pycache__/schemer2.cpython-39.pyc | Bin 1347 -> 0 bytes .../backends/__pycache__/wal.cpython-39.pyc | Bin 2531 -> 0 bytes .../pywal/backends/colorthief.py | 64 - .../site-packages/pywal/backends/colorz.py | 43 - .../site-packages/pywal/backends/haishoku.py | 37 - .../site-packages/pywal/backends/schemer2.py | 35 - .../site-packages/pywal/backends/wal.py | 87 -- .../python3.9/site-packages/pywal/colors.py | 155 -- .../pywal/colorschemes/dark/3024.json | 1 - .../pywal/colorschemes/dark/ashes.json | 1 - .../pywal/colorschemes/dark/base16-3024.json | 1 - .../colorschemes/dark/base16-apathy.json | 1 - .../pywal/colorschemes/dark/base16-ashes.json | 1 - .../dark/base16-atelier-cave.json | 1 - .../dark/base16-atelier-dune.json | 1 - .../dark/base16-atelier-estuary.json | 1 - .../dark/base16-atelier-forest.json | 1 - .../dark/base16-atelier-heath.json | 1 - .../dark/base16-atelier-lakeside.json | 1 - .../dark/base16-atelier-plateau.json | 1 - .../dark/base16-atelier-savanna.json | 1 - .../dark/base16-atelier-seaside.json | 1 - .../dark/base16-atelier-sulphurpool.json | 1 - .../colorschemes/dark/base16-bespin.json | 1 - .../dark/base16-black-metal-bathory.json | 1 - .../dark/base16-black-metal-burzum.json | 1 - .../dark/base16-black-metal-funeral.json | 1 - .../dark/base16-black-metal-gorgoroth.json | 1 - .../dark/base16-black-metal-immortal.json | 1 - .../dark/base16-black-metal-khold.json | 1 - .../dark/base16-black-metal-marduk.json | 1 - .../dark/base16-black-metal-mayhem.json | 1 - .../dark/base16-black-metal-nile.json | 1 - .../dark/base16-black-metal-venom.json | 1 - .../colorschemes/dark/base16-black-metal.json | 1 - .../colorschemes/dark/base16-brewer.json | 1 - .../colorschemes/dark/base16-bright.json | 1 - .../colorschemes/dark/base16-brushtrees.json | 1 - .../pywal/colorschemes/dark/base16-chalk.json | 1 - .../colorschemes/dark/base16-circus.json | 1 - .../colorschemes/dark/base16-classic.json | 1 - .../colorschemes/dark/base16-codeschool.json | 1 - .../colorschemes/dark/base16-default.json | 1 - .../colorschemes/dark/base16-dracula.json | 1 - .../colorschemes/dark/base16-eighties.json | 1 - .../colorschemes/dark/base16-embers.json | 1 - .../pywal/colorschemes/dark/base16-flat.json | 1 - .../colorschemes/dark/base16-google.json | 1 - .../colorschemes/dark/base16-grayscale.json | 1 - .../colorschemes/dark/base16-greenscreen.json | 1 - .../dark/base16-gruvbox-hard.json | 1 - .../dark/base16-gruvbox-medium.json | 1 - .../dark/base16-gruvbox-pale.json | 1 - .../dark/base16-gruvbox-soft.json | 1 - .../colorschemes/dark/base16-harmonic.json | 1 - .../colorschemes/dark/base16-hopscotch.json | 1 - .../pywal/colorschemes/dark/base16-icy.json | 1 - .../colorschemes/dark/base16-irblack.json | 1 - .../colorschemes/dark/base16-isotope.json | 1 - .../colorschemes/dark/base16-macintosh.json | 1 - .../colorschemes/dark/base16-marrakesh.json | 1 - .../colorschemes/dark/base16-materia.json | 1 - .../dark/base16-material-palenight.json | 1 - .../colorschemes/dark/base16-material.json | 1 - .../colorschemes/dark/base16-materialer.json | 1 - .../dark/base16-mellow-purple.json | 1 - .../pywal/colorschemes/dark/base16-mocha.json | 1 - .../colorschemes/dark/base16-monokai.json | 1 - .../pywal/colorschemes/dark/base16-nord.json | 1 - .../pywal/colorschemes/dark/base16-ocean.json | 1 - .../colorschemes/dark/base16-oceanicnext.json | 1 - .../colorschemes/dark/base16-onedark.json | 1 - .../colorschemes/dark/base16-outrun.json | 1 - .../colorschemes/dark/base16-paraiso.json | 1 - .../pywal/colorschemes/dark/base16-phd.json | 1 - .../pywal/colorschemes/dark/base16-pico.json | 1 - .../pywal/colorschemes/dark/base16-pop.json | 1 - .../colorschemes/dark/base16-porple.json | 1 - .../colorschemes/dark/base16-railscasts.json | 1 - .../colorschemes/dark/base16-rebecca.json | 1 - .../pywal/colorschemes/dark/base16-seti.json | 1 - .../colorschemes/dark/base16-solarflare.json | 1 - .../colorschemes/dark/base16-solarized.json | 1 - .../colorschemes/dark/base16-spacemacs.json | 1 - .../colorschemes/dark/base16-summerfruit.json | 1 - .../dark/base16-tomorrow-night.json | 1 - .../pywal/colorschemes/dark/base16-tube.json | 1 - .../colorschemes/dark/base16-twilight.json | 1 - .../colorschemes/dark/base16-unikitty.json | 1 - .../colorschemes/dark/base16-woodland.json | 1 - .../colorschemes/dark/base16-xcode-dusk.json | 1 - .../colorschemes/dark/base16-zenburn.json | 1 - .../pywal/colorschemes/dark/base16tooth.json | 1 - .../pywal/colorschemes/dark/darktooth.json | 1 - .../pywal/colorschemes/dark/dkeg-5725.json | 1 - .../pywal/colorschemes/dark/dkeg-amiox.json | 1 - .../pywal/colorschemes/dark/dkeg-bark.json | 1 - .../pywal/colorschemes/dark/dkeg-blend.json | 1 - .../pywal/colorschemes/dark/dkeg-blok.json | 1 - .../colorschemes/dark/dkeg-bluetype.json | 1 - .../pywal/colorschemes/dark/dkeg-blumune.json | 1 - .../pywal/colorschemes/dark/dkeg-book.json | 1 - .../pywal/colorschemes/dark/dkeg-branch.json | 1 - .../colorschemes/dark/dkeg-brownstone.json | 1 - .../pywal/colorschemes/dark/dkeg-bulb.json | 1 - .../pywal/colorschemes/dark/dkeg-chaires.json | 1 - .../pywal/colorschemes/dark/dkeg-coco.json | 1 - .../colorschemes/dark/dkeg-corduroy.json | 1 - .../pywal/colorschemes/dark/dkeg-depth.json | 1 - .../pywal/colorschemes/dark/dkeg-designr.json | 1 - .../pywal/colorschemes/dark/dkeg-diner.json | 1 - .../pywal/colorschemes/dark/dkeg-escen.json | 1 - .../pywal/colorschemes/dark/dkeg-fendr.json | 1 - .../pywal/colorschemes/dark/dkeg-flapr.json | 1 - .../pywal/colorschemes/dark/dkeg-forst.json | 1 - .../pywal/colorschemes/dark/dkeg-fury.json | 1 - .../pywal/colorschemes/dark/dkeg-harbing.json | 1 - .../pywal/colorschemes/dark/dkeg-kit.json | 1 - .../pywal/colorschemes/dark/dkeg-leaf.json | 1 - .../pywal/colorschemes/dark/dkeg-link.json | 1 - .../pywal/colorschemes/dark/dkeg-mattd.json | 1 - .../pywal/colorschemes/dark/dkeg-novmbr.json | 1 - .../pywal/colorschemes/dark/dkeg-owl.json | 1 - .../pywal/colorschemes/dark/dkeg-paints.json | 1 - .../pywal/colorschemes/dark/dkeg-parkd.json | 1 - .../pywal/colorschemes/dark/dkeg-pastely.json | 1 - .../pywal/colorschemes/dark/dkeg-petal.json | 1 - .../pywal/colorschemes/dark/dkeg-poly.json | 1 - .../pywal/colorschemes/dark/dkeg-prevail.json | 1 - .../pywal/colorschemes/dark/dkeg-provrb.json | 1 - .../pywal/colorschemes/dark/dkeg-raild.json | 1 - .../pywal/colorschemes/dark/dkeg-relax.json | 1 - .../pywal/colorschemes/dark/dkeg-scag.json | 1 - .../pywal/colorschemes/dark/dkeg-scape.json | 1 - .../pywal/colorschemes/dark/dkeg-shade.json | 1 - .../colorschemes/dark/dkeg-simplicity.json | 1 - .../pywal/colorschemes/dark/dkeg-skigh.json | 1 - .../pywal/colorschemes/dark/dkeg-slate.json | 1 - .../colorschemes/dark/dkeg-soundwave.json | 1 - .../pywal/colorschemes/dark/dkeg-spire.json | 1 - .../pywal/colorschemes/dark/dkeg-sprout.json | 1 - .../pywal/colorschemes/dark/dkeg-squares.json | 1 - .../pywal/colorschemes/dark/dkeg-stv.json | 1 - .../pywal/colorschemes/dark/dkeg-subtle.json | 1 - .../pywal/colorschemes/dark/dkeg-sundr.json | 1 - .../colorschemes/dark/dkeg-tealights.json | 1 - .../pywal/colorschemes/dark/dkeg-traffic.json | 1 - .../colorschemes/dark/dkeg-transposet.json | 1 - .../pywal/colorschemes/dark/dkeg-urban.json | 1 - .../pywal/colorschemes/dark/dkeg-vans.json | 1 - .../pywal/colorschemes/dark/dkeg-victory.json | 1 - .../pywal/colorschemes/dark/dkeg-view.json | 1 - .../pywal/colorschemes/dark/dkeg-wintry.json | 1 - .../pywal/colorschemes/dark/gruvbox.json | 1 - .../colorschemes/dark/hybrid-material.json | 1 - .../pywal/colorschemes/dark/monokai.json | 1 - .../colorschemes/dark/sexy-astromouse.json | 1 - .../pywal/colorschemes/dark/sexy-belge.json | 1 - .../pywal/colorschemes/dark/sexy-bitmute.json | 1 - .../pywal/colorschemes/dark/sexy-cloud.json | 1 - .../dark/sexy-colorfulcolors.json | 1 - .../pywal/colorschemes/dark/sexy-dawn.json | 1 - .../colorschemes/dark/sexy-deafened.json | 1 - .../pywal/colorschemes/dark/sexy-derp.json | 1 - .../colorschemes/dark/sexy-digerati.json | 1 - .../dark/sexy-doomicideocean.json | 1 - .../colorschemes/dark/sexy-dotshare.json | 1 - .../pywal/colorschemes/dark/sexy-dwmrob.json | 1 - .../pywal/colorschemes/dark/sexy-eqie6.json | 1 - .../colorschemes/dark/sexy-euphrasia.json | 1 - .../pywal/colorschemes/dark/sexy-gjm.json | 1 - .../colorschemes/dark/sexy-gnometerm.json | 1 - .../pywal/colorschemes/dark/sexy-gotham.json | 1 - .../dark/sexy-gslob-nature-suede.json | 1 - .../pywal/colorschemes/dark/sexy-hund.json | 1 - .../pywal/colorschemes/dark/sexy-hybrid.json | 1 - .../colorschemes/dark/sexy-insignificato.json | 1 - .../colorschemes/dark/sexy-invisibone.json | 1 - .../colorschemes/dark/sexy-jasonwryan.json | 1 - .../colorschemes/dark/sexy-kasugano.json | 1 - .../colorschemes/dark/sexy-material.json | 1 - .../pywal/colorschemes/dark/sexy-mikado.json | 1 - .../colorschemes/dark/sexy-mikazuki.json | 1 - .../pywal/colorschemes/dark/sexy-monokai.json | 1 - .../pywal/colorschemes/dark/sexy-muse.json | 1 - .../pywal/colorschemes/dark/sexy-nancy.json | 1 - .../dark/sexy-navy-and-ivory.json | 1 - .../pywal/colorschemes/dark/sexy-neon.json | 1 - .../colorschemes/dark/sexy-numixdarkest.json | 1 - .../colorschemes/dark/sexy-orangish.json | 1 - .../dark/sexy-parker_brothers.json | 1 - .../pywal/colorschemes/dark/sexy-phrak1.json | 1 - .../dark/sexy-pretty-and-pastel.json | 1 - .../pywal/colorschemes/dark/sexy-rasi.json | 1 - .../pywal/colorschemes/dark/sexy-rezza.json | 1 - .../pywal/colorschemes/dark/sexy-rydgel.json | 1 - .../colorschemes/dark/sexy-s3r0-modified.json | 1 - .../colorschemes/dark/sexy-sexcolors.json | 1 - .../dark/sexy-simple_rainbow.json | 1 - .../pywal/colorschemes/dark/sexy-splurge.json | 1 - .../pywal/colorschemes/dark/sexy-swayr.json | 1 - .../colorschemes/dark/sexy-sweetlove.json | 1 - .../pywal/colorschemes/dark/sexy-tango.json | 1 - .../colorschemes/dark/sexy-tangoesque.json | 1 - .../pywal/colorschemes/dark/sexy-tartan.json | 1 - .../pywal/colorschemes/dark/sexy-theme2.json | 1 - .../pywal/colorschemes/dark/sexy-thwump.json | 1 - .../pywal/colorschemes/dark/sexy-tlh.json | 1 - .../dark/sexy-trim-yer-beard.json | 1 - .../dark/sexy-user-77-mashup-colors.json | 1 - .../colorschemes/dark/sexy-vacuous2.json | 1 - .../dark/sexy-visibone-alt-2.json | 1 - .../colorschemes/dark/sexy-visibone.json | 1 - .../colorschemes/dark/sexy-x-dotshare.json | 1 - .../pywal/colorschemes/dark/sexy-zenburn.json | 1 - .../pywal/colorschemes/dark/solarized.json | 1 - .../colorschemes/dark/tempus_autumn.json | 1 - .../pywal/colorschemes/dark/tempus_dusk.json | 1 - .../colorschemes/dark/tempus_future.json | 1 - .../pywal/colorschemes/dark/tempus_rift.json | 1 - .../colorschemes/dark/tempus_spring.json | 1 - .../colorschemes/dark/tempus_summer.json | 1 - .../pywal/colorschemes/dark/tempus_warp.json | 1 - .../colorschemes/dark/tempus_winter.json | 1 - .../pywal/colorschemes/dark/vscode.json | 1 - .../pywal/colorschemes/dark/zenburn.json | 1 - .../pywal/colorschemes/light/3024.json | 1 - .../pywal/colorschemes/light/ashes.json | 1 - .../light/base16-atelier-cave.json | 1 - .../light/base16-atelier-dune.json | 1 - .../light/base16-atelier-estuary.json | 1 - .../light/base16-atelier-forest.json | 1 - .../light/base16-atelier-heath.json | 1 - .../light/base16-atelier-lakeside.json | 1 - .../light/base16-atelier-plateau.json | 1 - .../light/base16-atelier-savanna.json | 1 - .../light/base16-atelier-seaside.json | 1 - .../light/base16-atelier-sulphurpool.json | 1 - .../colorschemes/light/base16-classic.json | 1 - .../colorschemes/light/base16-cupcake.json | 1 - .../colorschemes/light/base16-cupertino.json | 1 - .../colorschemes/light/base16-default.json | 1 - .../colorschemes/light/base16-github.json | 1 - .../colorschemes/light/base16-google.json | 1 - .../colorschemes/light/base16-grayscale.json | 1 - .../light/base16-gruvbox-hard.json | 1 - .../light/base16-gruvbox-medium.json | 1 - .../light/base16-gruvbox-soft.json | 1 - .../colorschemes/light/base16-harmonic.json | 1 - .../colorschemes/light/base16-materialer.json | 1 - .../colorschemes/light/base16-mexico.json | 1 - .../pywal/colorschemes/light/base16-one.json | 1 - .../light/base16-shapeshifter.json | 1 - .../colorschemes/light/base16-solarized.json | 1 - .../light/base16-summerfruit.json | 1 - .../colorschemes/light/base16-tomorrow.json | 1 - .../colorschemes/light/base16-unikitty.json | 1 - .../pywal/colorschemes/light/github.json | 1 - .../light/sexy-mostly-bright.json | 1 - .../pywal/colorschemes/light/solarized.json | 1 - .../pywal/colorschemes/light/tempus_dawn.json | 1 - .../colorschemes/light/tempus_fugit.json | 1 - .../pywal/colorschemes/light/tempus_past.json | 1 - .../colorschemes/light/tempus_totus.json | 1 - .../python3.9/site-packages/pywal/export.py | 86 -- .../python3.9/site-packages/pywal/image.py | 84 -- .../python3.9/site-packages/pywal/reload.py | 88 -- .../__pycache__/gtk_reload.cpython-39.pyc | Bin 890 -> 0 bytes .../site-packages/pywal/scripts/gtk_reload.py | 27 - .../site-packages/pywal/sequences.py | 88 -- .../python3.9/site-packages/pywal/settings.py | 24 - .../site-packages/pywal/templates/colors | 16 - .../pywal/templates/colors-kitty.conf | 20 - .../templates/colors-konsole.colorscheme | 63 - .../pywal/templates/colors-oomox | 17 - .../pywal/templates/colors-putty.reg | 26 - .../pywal/templates/colors-rofi-dark.rasi | 161 --- .../pywal/templates/colors-rofi-light.rasi | 161 --- .../pywal/templates/colors-speedcrunch.json | 15 - .../site-packages/pywal/templates/colors-sway | 21 - .../pywal/templates/colors-tty.sh | 19 - .../pywal/templates/colors-wal-dmenu.h | 6 - .../pywal/templates/colors-wal-dwm.h | 18 - .../pywal/templates/colors-wal-st.h | 34 - .../pywal/templates/colors-wal-tabbed.h | 6 - .../pywal/templates/colors-wal.vim | 23 - .../pywal/templates/colors-waybar.css | 20 - .../pywal/templates/colors.Xresources | 68 - .../site-packages/pywal/templates/colors.css | 28 - .../site-packages/pywal/templates/colors.hs | 37 - .../site-packages/pywal/templates/colors.json | 28 - .../site-packages/pywal/templates/colors.scss | 26 - .../site-packages/pywal/templates/colors.sh | 36 - .../site-packages/pywal/templates/colors.yml | 24 - .../python3.9/site-packages/pywal/theme.py | 124 -- .../lib/python3.9/site-packages/pywal/util.py | 186 --- .../site-packages/pywal/wallpaper.py | 156 -- 550 files changed, 15 insertions(+), 24673 deletions(-) create mode 100644 .config/qutebrowser/bookmarks/urls delete mode 100644 .local/lib/python2.7/site-packages/concurrent/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/concurrent/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/_base.py delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/_base.pyc delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/process.py delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/process.pyc delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/thread.py delete mode 100644 .local/lib/python2.7/site-packages/concurrent/futures/thread.pyc delete mode 100644 .local/lib/python2.7/site-packages/futures-3.3.0.dist-info/INSTALLER delete mode 100644 .local/lib/python2.7/site-packages/futures-3.3.0.dist-info/LICENSE delete mode 100644 .local/lib/python2.7/site-packages/futures-3.3.0.dist-info/METADATA delete mode 100644 .local/lib/python2.7/site-packages/futures-3.3.0.dist-info/RECORD delete mode 100644 .local/lib/python2.7/site-packages/futures-3.3.0.dist-info/WHEEL delete mode 100644 .local/lib/python2.7/site-packages/futures-3.3.0.dist-info/top_level.txt delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/AUTHORS delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/INSTALLER delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/METADATA delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/RECORD delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/WHEEL delete mode 100644 .local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/top_level.txt delete mode 100755 .local/lib/python2.7/site-packages/greenlet.so delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/PKG-INFO delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/SOURCES.txt delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/dependency_links.txt delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/installed-files.txt delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/not-zip-safe delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/requires.txt delete mode 100644 .local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/top_level.txt delete mode 100644 .local/lib/python2.7/site-packages/neovim/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/neovim/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/neovim/api/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/neovim/api/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/PKG-INFO delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/SOURCES.txt delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/dependency_links.txt delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/installed-files.txt delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/not-zip-safe delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/requires.txt delete mode 100644 .local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/top_level.txt delete mode 100644 .local/lib/python2.7/site-packages/pynvim/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/buffer.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/buffer.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/common.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/common.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/nvim.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/nvim.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/tabpage.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/tabpage.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/window.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/api/window.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/compat.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/compat.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/async_session.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/async_session.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/uv.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/uv.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/decorators.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/decorators.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/host.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/host.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/script_host.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/plugin/script_host.pyc delete mode 100644 .local/lib/python2.7/site-packages/pynvim/util.py delete mode 100644 .local/lib/python2.7/site-packages/pynvim/util.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/PKG-INFO delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/SOURCES.txt delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/dependency_links.txt delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/installed-files.txt delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/not-zip-safe delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/requires.txt delete mode 100644 .local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/top_level.txt delete mode 100644 .local/lib/python2.7/site-packages/trollius/__init__.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/__init__.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/base_events.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/base_events.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/base_subprocess.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/base_subprocess.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/compat.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/compat.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/constants.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/constants.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/coroutines.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/coroutines.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/events.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/events.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/executor.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/executor.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/futures.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/futures.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/locks.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/locks.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/log.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/log.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/proactor_events.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/proactor_events.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/protocols.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/protocols.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/py27_weakrefset.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/py27_weakrefset.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/py33_exceptions.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/py33_exceptions.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/py33_winapi.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/py33_winapi.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/py3_ssl.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/py3_ssl.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/queues.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/queues.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/selector_events.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/selector_events.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/selectors.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/selectors.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/sslproto.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/sslproto.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/streams.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/streams.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/subprocess.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/subprocess.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/tasks.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/tasks.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/test_support.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/test_support.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/test_utils.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/test_utils.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/time_monotonic.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/time_monotonic.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/transports.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/transports.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/unix_events.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/unix_events.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/windows_events.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/windows_events.pyc delete mode 100644 .local/lib/python2.7/site-packages/trollius/windows_utils.py delete mode 100644 .local/lib/python2.7/site-packages/trollius/windows_utils.pyc delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/AUTHORS delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/INSTALLER delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/METADATA delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/RECORD delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/WHEEL delete mode 100644 .local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/top_level.txt delete mode 100755 .local/lib/python3.9/site-packages/greenlet.cpython-39-x86_64-linux-gnu.so delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/PKG-INFO delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/SOURCES.txt delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/dependency_links.txt delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/installed-files.txt delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/not-zip-safe delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/requires.txt delete mode 100644 .local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/top_level.txt delete mode 100644 .local/lib/python3.9/site-packages/neovim/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/neovim/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/neovim/api/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/neovim/api/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/PKG-INFO delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/SOURCES.txt delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/dependency_links.txt delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/installed-files.txt delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/not-zip-safe delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/requires.txt delete mode 100644 .local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/top_level.txt delete mode 100644 .local/lib/python3.9/site-packages/pynvim/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/__pycache__/compat.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/__pycache__/util.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__pycache__/buffer.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__pycache__/common.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__pycache__/nvim.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__pycache__/tabpage.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/__pycache__/window.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/buffer.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/common.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/nvim.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/tabpage.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/api/window.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/compat.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/async_session.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/msgpack_stream.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/session.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/async_session.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/asyncio.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/base.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/uv.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/base.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/uv.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/msgpack_stream.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/msgpack_rpc/session.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/decorators.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/host.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/script_host.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/decorators.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/host.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/plugin/script_host.py delete mode 100644 .local/lib/python3.9/site-packages/pynvim/util.py delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/PKG-INFO delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/SOURCES.txt delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/dependency_links.txt delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/entry_points.txt delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/installed-files.txt delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/not-zip-safe delete mode 100644 .local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/top_level.txt delete mode 100644 .local/lib/python3.9/site-packages/pywal/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/__main__.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/__main__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/colors.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/export.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/image.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/reload.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/sequences.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/settings.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/theme.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/util.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/__pycache__/wallpaper.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__init__.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__pycache__/__init__.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__pycache__/colorthief.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__pycache__/colorz.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__pycache__/haishoku.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__pycache__/schemer2.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/__pycache__/wal.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/colorthief.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/colorz.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/haishoku.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/schemer2.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/backends/wal.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/colors.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/3024.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/ashes.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-3024.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-apathy.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ashes.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-cave.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-dune.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-estuary.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-forest.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-heath.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-lakeside.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-plateau.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-savanna.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-seaside.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-sulphurpool.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bespin.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-bathory.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-burzum.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-funeral.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-gorgoroth.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-immortal.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-khold.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-marduk.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-mayhem.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-nile.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-venom.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brewer.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bright.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brushtrees.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-chalk.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-circus.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-classic.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-codeschool.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-default.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-dracula.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-eighties.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-embers.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-flat.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-google.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-grayscale.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-greenscreen.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-hard.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-medium.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-pale.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-soft.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-harmonic.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-hopscotch.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-icy.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-irblack.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-isotope.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-macintosh.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-marrakesh.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materia.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material-palenight.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materialer.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mellow-purple.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mocha.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-monokai.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-nord.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ocean.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-oceanicnext.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-onedark.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-outrun.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-paraiso.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-phd.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pico.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pop.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-porple.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-railscasts.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-rebecca.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-seti.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarflare.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarized.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-spacemacs.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-summerfruit.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tomorrow-night.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tube.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-twilight.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-unikitty.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-woodland.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-xcode-dusk.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-zenburn.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16tooth.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/darktooth.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-5725.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-amiox.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bark.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blend.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blok.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bluetype.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blumune.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-book.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-branch.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-brownstone.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bulb.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-chaires.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-coco.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-corduroy.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-depth.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-designr.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-diner.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-escen.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fendr.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-flapr.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-forst.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fury.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-harbing.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-kit.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-leaf.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-link.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-mattd.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-novmbr.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-owl.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-paints.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-parkd.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-pastely.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-petal.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-poly.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-prevail.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-provrb.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-raild.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-relax.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scag.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scape.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-shade.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-simplicity.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-skigh.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-slate.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-soundwave.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-spire.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sprout.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-squares.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-stv.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-subtle.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sundr.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-tealights.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-traffic.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-transposet.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-urban.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-vans.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-victory.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-view.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-wintry.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/gruvbox.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/hybrid-material.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/monokai.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-astromouse.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-belge.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-bitmute.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-cloud.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-colorfulcolors.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dawn.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-deafened.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-derp.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-digerati.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-doomicideocean.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dotshare.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dwmrob.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-eqie6.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-euphrasia.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gjm.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gnometerm.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gotham.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gslob-nature-suede.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hund.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hybrid.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-insignificato.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-invisibone.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-jasonwryan.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-kasugano.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-material.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikado.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikazuki.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-monokai.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-muse.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-nancy.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-navy-and-ivory.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-neon.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-numixdarkest.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-orangish.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-parker_brothers.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-phrak1.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-pretty-and-pastel.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rasi.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rezza.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rydgel.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-s3r0-modified.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sexcolors.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-simple_rainbow.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-splurge.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-swayr.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sweetlove.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tango.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tangoesque.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tartan.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-theme2.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-thwump.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tlh.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-trim-yer-beard.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-user-77-mashup-colors.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-vacuous2.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone-alt-2.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-x-dotshare.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-zenburn.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/solarized.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_autumn.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_dusk.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_future.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_rift.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_spring.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_summer.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_warp.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_winter.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/vscode.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/dark/zenburn.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/3024.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/ashes.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-cave.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-dune.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-estuary.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-forest.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-heath.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-lakeside.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-plateau.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-savanna.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-seaside.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-sulphurpool.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-classic.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupcake.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupertino.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-default.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-github.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-google.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-grayscale.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-hard.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-medium.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-soft.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-harmonic.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-materialer.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-mexico.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-one.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-shapeshifter.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-solarized.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-summerfruit.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-tomorrow.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-unikitty.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/github.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/sexy-mostly-bright.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/solarized.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_dawn.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_fugit.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_past.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_totus.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/export.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/image.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/reload.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/scripts/__pycache__/gtk_reload.cpython-39.pyc delete mode 100644 .local/lib/python3.9/site-packages/pywal/scripts/gtk_reload.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/sequences.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/settings.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-kitty.conf delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-konsole.colorscheme delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-oomox delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-putty.reg delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-rofi-dark.rasi delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-rofi-light.rasi delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-speedcrunch.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-sway delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-tty.sh delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-wal-dmenu.h delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-wal-dwm.h delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-wal-st.h delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-wal-tabbed.h delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-wal.vim delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors-waybar.css delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.Xresources delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.css delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.hs delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.json delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.scss delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.sh delete mode 100644 .local/lib/python3.9/site-packages/pywal/templates/colors.yml delete mode 100644 .local/lib/python3.9/site-packages/pywal/theme.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/util.py delete mode 100644 .local/lib/python3.9/site-packages/pywal/wallpaper.py diff --git a/.config/bpytop/error.log b/.config/bpytop/error.log index 964d6c79..632cdd7f 100644 --- a/.config/bpytop/error.log +++ b/.config/bpytop/error.log @@ -43,3 +43,8 @@ Traceback (most recent call last): File "/usr/bin/bpytop", line 1266, in refresh for f in os.listdir(d): FileNotFoundError: [Errno 2] No such file or directory: '/home/josuer08/.config/bpytop/themes' +12/02/21 (20:24:49) | ERROR: [Errno 2] No such file or directory: '/home/josuer08/.config/bpytop/themes' +Traceback (most recent call last): + File "/usr/bin/bpytop", line 1319, in refresh + for f in os.listdir(d): +FileNotFoundError: [Errno 2] No such file or directory: '/home/josuer08/.config/bpytop/themes' diff --git a/.config/nvim/.netrwhist b/.config/nvim/.netrwhist index 95a1e680..3e4c2f87 100644 --- a/.config/nvim/.netrwhist +++ b/.config/nvim/.netrwhist @@ -1,5 +1,8 @@ let g:netrw_dirhistmax =10 -let g:netrw_dirhistcnt =6 +let g:netrw_dirhistcnt =9 +let g:netrw_dirhist_9='/home/josuer08/Documents/josueBlogXYZ/src' +let g:netrw_dirhist_8='/home/josuer08/Documents/tinysh' +let g:netrw_dirhist_7='/home/josuer08' let g:netrw_dirhist_6='/home/josuer08/.dotfiles/.config/nvim/plugin' let g:netrw_dirhist_5='/home/josuer08/.dotfiles/.config/nvim' let g:netrw_dirhist_4='/home/josuer08/.dotfiles/.config' @@ -7,6 +10,3 @@ let g:netrw_dirhist_3='/home/josuer08/.dotfiles' let g:netrw_dirhist_2='/home/josuer08/Documents/tinysh' let g:netrw_dirhist_1='/home/josuer08/Documents' let g:netrw_dirhist_0='/home/josuer08/.dotfiles/.config/bashrc' -let g:netrw_dirhist_9='/home/josuer08/.dotfiles/.config' -let g:netrw_dirhist_8='/home/josuer08/.dotfiles' -let g:netrw_dirhist_7='/home/josuer08/.dotfiles/.config/bashrc' diff --git a/.config/pavucontrol.ini b/.config/pavucontrol.ini index 3289431c..a5615c1e 100644 --- a/.config/pavucontrol.ini +++ b/.config/pavucontrol.ini @@ -1,6 +1,6 @@ [window] -width=1366 -height=729 +width=958 +height=1039 sinkInputType=1 sourceOutputType=1 sinkType=0 diff --git a/.config/qutebrowser/bookmarks/urls b/.config/qutebrowser/bookmarks/urls new file mode 100644 index 00000000..d134de7f --- /dev/null +++ b/.config/qutebrowser/bookmarks/urls @@ -0,0 +1 @@ +https://web.telegram.org/#/im?p=s1412291195_5912359752663674650 Telegram Web diff --git a/.config/qutebrowser/qsettings/QtProject.conf b/.config/qutebrowser/qsettings/QtProject.conf index a6d4497e..49240ea4 100644 --- a/.config/qutebrowser/qsettings/QtProject.conf +++ b/.config/qutebrowser/qsettings/QtProject.conf @@ -1,8 +1,8 @@ [FileDialog] -history=file:///home/josuer08/Documents/work/zabbix-systemd-service-monitoring, file:///home/josuer08/Documents/work, file:///home/josuer08/Pictures, file:///home/josuer08, file:///home/josuer08/Downloads -lastVisited=file:///home/josuer08/Downloads +history=file:///home/josuer08/Pictures, file:///home/josuer08, file:///home/josuer08/Downloads, file:///home/josuer08/Pictures/backgrounds, file:///home/josuer08/Videos +lastVisited=file:///home/josuer08/Pictures qtVersion=5.15.2 shortcuts=file:, file:///home/josuer08 sidebarWidth=83 -treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xb5\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xe1\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0\x62\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff) +treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x3\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xb5\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xe1\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0\x62\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff) viewMode=Detail diff --git a/.local/lib/python2.7/site-packages/concurrent/__init__.py b/.local/lib/python2.7/site-packages/concurrent/__init__.py deleted file mode 100644 index b36383a6..00000000 --- a/.local/lib/python2.7/site-packages/concurrent/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from pkgutil import extend_path - -__path__ = extend_path(__path__, __name__) diff --git a/.local/lib/python2.7/site-packages/concurrent/__init__.pyc b/.local/lib/python2.7/site-packages/concurrent/__init__.pyc deleted file mode 100644 index 270c67a57001602e108c0fe85898d45f03cd94e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmYL@y-ou$41k>+5>-(p-l5AaT&gZ*s1PGl2iUq;Y0m1U%_XOcPlB0|=itS71s(t# zR0+%e{4cxuUd%r}ztF)&D)EnEc`0Z`6$F4@!CrwP1*Cy0c-OGk&}w+8%Yy$Asg*>0 zBcNBN*y3Qh+tpX4dMy~v$BBJ-mJoO*z`qH^OA>8Qh;?cIBR@%My3~_7r99ENx;ITo z&IS|w!3=NQrMPZ3CVQs4!Md|OQZ_C{H;p4jHi$lYMr>rZT;2AmodP|SZ?hKM>R+r? BK864Q diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py b/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py deleted file mode 100644 index 428b14bd..00000000 --- a/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2009 Brian Quinlan. All Rights Reserved. -# Licensed to PSF under a Contributor Agreement. - -"""Execute computations asynchronously using threads or processes.""" - -__author__ = 'Brian Quinlan (brian@sweetapp.com)' - -from concurrent.futures._base import (FIRST_COMPLETED, - FIRST_EXCEPTION, - ALL_COMPLETED, - CancelledError, - TimeoutError, - Future, - Executor, - wait, - as_completed) -from concurrent.futures.thread import ThreadPoolExecutor - -try: - from concurrent.futures.process import ProcessPoolExecutor -except ImportError: - # some platforms don't have multiprocessing - pass diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/__init__.pyc b/.local/lib/python2.7/site-packages/concurrent/futures/__init__.pyc deleted file mode 100644 index 793f1ce566e518e553e5b62c2d12529c6a1edb2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmZuv%Wl&^6uov5=h3EVp$lMTu`&y6#0C}!0wG9|LL1yjRI{-r_RyHl!8pCKn5TVfEf68%K@5Qm!P}fRlpWwl zAVxq&;C+@S&}PSQJplb3JkOIJTowUbL|xa>8-(dMme-brxe`@vsV$W>AvGJBueFk@ zHhdG-rj%EqU28@Q6Dl26TII|bW@7UgIo|1#%J5TNN{)N9a^~3FFlK30#mM}m{EI8< zW3C+`e3+#d%WQJ~aWS7Rr|L7Q<-j$W zy7!Vg8L6XAoeKL9;SQ$ljik+3AKjg@yQ$Q*W)Bc%qQY@B!-~*^TQCbWleH2o`KnCK z^s|>q%vDZ#!pl`sZBUkc9=}LTY1z|?=GXL!ndG*wWT!C6vQm~d%VMl?{l5~bs5yJ> U^ci=Hfgkwe{;}WkPQ9W34;_Ee761SM diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/_base.py b/.local/lib/python2.7/site-packages/concurrent/futures/_base.py deleted file mode 100644 index 510ffa53..00000000 --- a/.local/lib/python2.7/site-packages/concurrent/futures/_base.py +++ /dev/null @@ -1,667 +0,0 @@ -# Copyright 2009 Brian Quinlan. All Rights Reserved. -# Licensed to PSF under a Contributor Agreement. - -import collections -import logging -import threading -import itertools -import time -import types - -__author__ = 'Brian Quinlan (brian@sweetapp.com)' - -FIRST_COMPLETED = 'FIRST_COMPLETED' -FIRST_EXCEPTION = 'FIRST_EXCEPTION' -ALL_COMPLETED = 'ALL_COMPLETED' -_AS_COMPLETED = '_AS_COMPLETED' - -# Possible future states (for internal use by the futures package). -PENDING = 'PENDING' -RUNNING = 'RUNNING' -# The future was cancelled by the user... -CANCELLED = 'CANCELLED' -# ...and _Waiter.add_cancelled() was called by a worker. -CANCELLED_AND_NOTIFIED = 'CANCELLED_AND_NOTIFIED' -FINISHED = 'FINISHED' - -_FUTURE_STATES = [ - PENDING, - RUNNING, - CANCELLED, - CANCELLED_AND_NOTIFIED, - FINISHED -] - -_STATE_TO_DESCRIPTION_MAP = { - PENDING: "pending", - RUNNING: "running", - CANCELLED: "cancelled", - CANCELLED_AND_NOTIFIED: "cancelled", - FINISHED: "finished" -} - -# Logger for internal use by the futures package. -LOGGER = logging.getLogger("concurrent.futures") - -class Error(Exception): - """Base class for all future-related exceptions.""" - pass - -class CancelledError(Error): - """The Future was cancelled.""" - pass - -class TimeoutError(Error): - """The operation exceeded the given deadline.""" - pass - -class _Waiter(object): - """Provides the event that wait() and as_completed() block on.""" - def __init__(self): - self.event = threading.Event() - self.finished_futures = [] - - def add_result(self, future): - self.finished_futures.append(future) - - def add_exception(self, future): - self.finished_futures.append(future) - - def add_cancelled(self, future): - self.finished_futures.append(future) - -class _AsCompletedWaiter(_Waiter): - """Used by as_completed().""" - - def __init__(self): - super(_AsCompletedWaiter, self).__init__() - self.lock = threading.Lock() - - def add_result(self, future): - with self.lock: - super(_AsCompletedWaiter, self).add_result(future) - self.event.set() - - def add_exception(self, future): - with self.lock: - super(_AsCompletedWaiter, self).add_exception(future) - self.event.set() - - def add_cancelled(self, future): - with self.lock: - super(_AsCompletedWaiter, self).add_cancelled(future) - self.event.set() - -class _FirstCompletedWaiter(_Waiter): - """Used by wait(return_when=FIRST_COMPLETED).""" - - def add_result(self, future): - super(_FirstCompletedWaiter, self).add_result(future) - self.event.set() - - def add_exception(self, future): - super(_FirstCompletedWaiter, self).add_exception(future) - self.event.set() - - def add_cancelled(self, future): - super(_FirstCompletedWaiter, self).add_cancelled(future) - self.event.set() - -class _AllCompletedWaiter(_Waiter): - """Used by wait(return_when=FIRST_EXCEPTION and ALL_COMPLETED).""" - - def __init__(self, num_pending_calls, stop_on_exception): - self.num_pending_calls = num_pending_calls - self.stop_on_exception = stop_on_exception - self.lock = threading.Lock() - super(_AllCompletedWaiter, self).__init__() - - def _decrement_pending_calls(self): - with self.lock: - self.num_pending_calls -= 1 - if not self.num_pending_calls: - self.event.set() - - def add_result(self, future): - super(_AllCompletedWaiter, self).add_result(future) - self._decrement_pending_calls() - - def add_exception(self, future): - super(_AllCompletedWaiter, self).add_exception(future) - if self.stop_on_exception: - self.event.set() - else: - self._decrement_pending_calls() - - def add_cancelled(self, future): - super(_AllCompletedWaiter, self).add_cancelled(future) - self._decrement_pending_calls() - -class _AcquireFutures(object): - """A context manager that does an ordered acquire of Future conditions.""" - - def __init__(self, futures): - self.futures = sorted(futures, key=id) - - def __enter__(self): - for future in self.futures: - future._condition.acquire() - - def __exit__(self, *args): - for future in self.futures: - future._condition.release() - -def _create_and_install_waiters(fs, return_when): - if return_when == _AS_COMPLETED: - waiter = _AsCompletedWaiter() - elif return_when == FIRST_COMPLETED: - waiter = _FirstCompletedWaiter() - else: - pending_count = sum( - f._state not in [CANCELLED_AND_NOTIFIED, FINISHED] for f in fs) - - if return_when == FIRST_EXCEPTION: - waiter = _AllCompletedWaiter(pending_count, stop_on_exception=True) - elif return_when == ALL_COMPLETED: - waiter = _AllCompletedWaiter(pending_count, stop_on_exception=False) - else: - raise ValueError("Invalid return condition: %r" % return_when) - - for f in fs: - f._waiters.append(waiter) - - return waiter - - -def _yield_finished_futures(fs, waiter, ref_collect): - """ - Iterate on the list *fs*, yielding finished futures one by one in - reverse order. - Before yielding a future, *waiter* is removed from its waiters - and the future is removed from each set in the collection of sets - *ref_collect*. - - The aim of this function is to avoid keeping stale references after - the future is yielded and before the iterator resumes. - """ - while fs: - f = fs[-1] - for futures_set in ref_collect: - futures_set.remove(f) - with f._condition: - f._waiters.remove(waiter) - del f - # Careful not to keep a reference to the popped value - yield fs.pop() - - -def as_completed(fs, timeout=None): - """An iterator over the given futures that yields each as it completes. - - Args: - fs: The sequence of Futures (possibly created by different Executors) to - iterate over. - timeout: The maximum number of seconds to wait. If None, then there - is no limit on the wait time. - - Returns: - An iterator that yields the given Futures as they complete (finished or - cancelled). If any given Futures are duplicated, they will be returned - once. - - Raises: - TimeoutError: If the entire result iterator could not be generated - before the given timeout. - """ - if timeout is not None: - end_time = timeout + time.time() - - fs = set(fs) - total_futures = len(fs) - with _AcquireFutures(fs): - finished = set( - f for f in fs - if f._state in [CANCELLED_AND_NOTIFIED, FINISHED]) - pending = fs - finished - waiter = _create_and_install_waiters(fs, _AS_COMPLETED) - finished = list(finished) - try: - for f in _yield_finished_futures(finished, waiter, - ref_collect=(fs,)): - f = [f] - yield f.pop() - - while pending: - if timeout is None: - wait_timeout = None - else: - wait_timeout = end_time - time.time() - if wait_timeout < 0: - raise TimeoutError( - '%d (of %d) futures unfinished' % ( - len(pending), total_futures)) - - waiter.event.wait(wait_timeout) - - with waiter.lock: - finished = waiter.finished_futures - waiter.finished_futures = [] - waiter.event.clear() - - # reverse to keep finishing order - finished.reverse() - for f in _yield_finished_futures(finished, waiter, - ref_collect=(fs, pending)): - f = [f] - yield f.pop() - - finally: - # Remove waiter from unfinished futures - for f in fs: - with f._condition: - f._waiters.remove(waiter) - -DoneAndNotDoneFutures = collections.namedtuple( - 'DoneAndNotDoneFutures', 'done not_done') -def wait(fs, timeout=None, return_when=ALL_COMPLETED): - """Wait for the futures in the given sequence to complete. - - Args: - fs: The sequence of Futures (possibly created by different Executors) to - wait upon. - timeout: The maximum number of seconds to wait. If None, then there - is no limit on the wait time. - return_when: Indicates when this function should return. The options - are: - - FIRST_COMPLETED - Return when any future finishes or is - cancelled. - FIRST_EXCEPTION - Return when any future finishes by raising an - exception. If no future raises an exception - then it is equivalent to ALL_COMPLETED. - ALL_COMPLETED - Return when all futures finish or are cancelled. - - Returns: - A named 2-tuple of sets. The first set, named 'done', contains the - futures that completed (is finished or cancelled) before the wait - completed. The second set, named 'not_done', contains uncompleted - futures. - """ - with _AcquireFutures(fs): - done = set(f for f in fs - if f._state in [CANCELLED_AND_NOTIFIED, FINISHED]) - not_done = set(fs) - done - - if (return_when == FIRST_COMPLETED) and done: - return DoneAndNotDoneFutures(done, not_done) - elif (return_when == FIRST_EXCEPTION) and done: - if any(f for f in done - if not f.cancelled() and f.exception() is not None): - return DoneAndNotDoneFutures(done, not_done) - - if len(done) == len(fs): - return DoneAndNotDoneFutures(done, not_done) - - waiter = _create_and_install_waiters(fs, return_when) - - waiter.event.wait(timeout) - for f in fs: - with f._condition: - f._waiters.remove(waiter) - - done.update(waiter.finished_futures) - return DoneAndNotDoneFutures(done, set(fs) - done) - -class Future(object): - """Represents the result of an asynchronous computation.""" - - def __init__(self): - """Initializes the future. Should not be called by clients.""" - self._condition = threading.Condition() - self._state = PENDING - self._result = None - self._exception = None - self._traceback = None - self._waiters = [] - self._done_callbacks = [] - - def _invoke_callbacks(self): - for callback in self._done_callbacks: - try: - callback(self) - except Exception: - LOGGER.exception('exception calling callback for %r', self) - except BaseException: - # Explicitly let all other new-style exceptions through so - # that we can catch all old-style exceptions with a simple - # "except:" clause below. - # - # All old-style exception objects are instances of - # types.InstanceType, but "except types.InstanceType:" does - # not catch old-style exceptions for some reason. Thus, the - # only way to catch all old-style exceptions without catching - # any new-style exceptions is to filter out the new-style - # exceptions, which all derive from BaseException. - raise - except: - # Because of the BaseException clause above, this handler only - # executes for old-style exception objects. - LOGGER.exception('exception calling callback for %r', self) - - def __repr__(self): - with self._condition: - if self._state == FINISHED: - if self._exception: - return '<%s at %#x state=%s raised %s>' % ( - self.__class__.__name__, - id(self), - _STATE_TO_DESCRIPTION_MAP[self._state], - self._exception.__class__.__name__) - else: - return '<%s at %#x state=%s returned %s>' % ( - self.__class__.__name__, - id(self), - _STATE_TO_DESCRIPTION_MAP[self._state], - self._result.__class__.__name__) - return '<%s at %#x state=%s>' % ( - self.__class__.__name__, - id(self), - _STATE_TO_DESCRIPTION_MAP[self._state]) - - def cancel(self): - """Cancel the future if possible. - - Returns True if the future was cancelled, False otherwise. A future - cannot be cancelled if it is running or has already completed. - """ - with self._condition: - if self._state in [RUNNING, FINISHED]: - return False - - if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: - return True - - self._state = CANCELLED - self._condition.notify_all() - - self._invoke_callbacks() - return True - - def cancelled(self): - """Return True if the future was cancelled.""" - with self._condition: - return self._state in [CANCELLED, CANCELLED_AND_NOTIFIED] - - def running(self): - """Return True if the future is currently executing.""" - with self._condition: - return self._state == RUNNING - - def done(self): - """Return True of the future was cancelled or finished executing.""" - with self._condition: - return self._state in [CANCELLED, CANCELLED_AND_NOTIFIED, FINISHED] - - def __get_result(self): - if self._exception: - if isinstance(self._exception, types.InstanceType): - # The exception is an instance of an old-style class, which - # means type(self._exception) returns types.ClassType instead - # of the exception's actual class type. - exception_type = self._exception.__class__ - else: - exception_type = type(self._exception) - raise exception_type, self._exception, self._traceback - else: - return self._result - - def add_done_callback(self, fn): - """Attaches a callable that will be called when the future finishes. - - Args: - fn: A callable that will be called with this future as its only - argument when the future completes or is cancelled. The callable - will always be called by a thread in the same process in which - it was added. If the future has already completed or been - cancelled then the callable will be called immediately. These - callables are called in the order that they were added. - """ - with self._condition: - if self._state not in [CANCELLED, CANCELLED_AND_NOTIFIED, FINISHED]: - self._done_callbacks.append(fn) - return - fn(self) - - def result(self, timeout=None): - """Return the result of the call that the future represents. - - Args: - timeout: The number of seconds to wait for the result if the future - isn't done. If None, then there is no limit on the wait time. - - Returns: - The result of the call that the future represents. - - Raises: - CancelledError: If the future was cancelled. - TimeoutError: If the future didn't finish executing before the given - timeout. - Exception: If the call raised then that exception will be raised. - """ - with self._condition: - if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: - raise CancelledError() - elif self._state == FINISHED: - return self.__get_result() - - self._condition.wait(timeout) - - if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: - raise CancelledError() - elif self._state == FINISHED: - return self.__get_result() - else: - raise TimeoutError() - - def exception_info(self, timeout=None): - """Return a tuple of (exception, traceback) raised by the call that the - future represents. - - Args: - timeout: The number of seconds to wait for the exception if the - future isn't done. If None, then there is no limit on the wait - time. - - Returns: - The exception raised by the call that the future represents or None - if the call completed without raising. - - Raises: - CancelledError: If the future was cancelled. - TimeoutError: If the future didn't finish executing before the given - timeout. - """ - with self._condition: - if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: - raise CancelledError() - elif self._state == FINISHED: - return self._exception, self._traceback - - self._condition.wait(timeout) - - if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: - raise CancelledError() - elif self._state == FINISHED: - return self._exception, self._traceback - else: - raise TimeoutError() - - def exception(self, timeout=None): - """Return the exception raised by the call that the future represents. - - Args: - timeout: The number of seconds to wait for the exception if the - future isn't done. If None, then there is no limit on the wait - time. - - Returns: - The exception raised by the call that the future represents or None - if the call completed without raising. - - Raises: - CancelledError: If the future was cancelled. - TimeoutError: If the future didn't finish executing before the given - timeout. - """ - return self.exception_info(timeout)[0] - - # The following methods should only be used by Executors and in tests. - def set_running_or_notify_cancel(self): - """Mark the future as running or process any cancel notifications. - - Should only be used by Executor implementations and unit tests. - - If the future has been cancelled (cancel() was called and returned - True) then any threads waiting on the future completing (though calls - to as_completed() or wait()) are notified and False is returned. - - If the future was not cancelled then it is put in the running state - (future calls to running() will return True) and True is returned. - - This method should be called by Executor implementations before - executing the work associated with this future. If this method returns - False then the work should not be executed. - - Returns: - False if the Future was cancelled, True otherwise. - - Raises: - RuntimeError: if this method was already called or if set_result() - or set_exception() was called. - """ - with self._condition: - if self._state == CANCELLED: - self._state = CANCELLED_AND_NOTIFIED - for waiter in self._waiters: - waiter.add_cancelled(self) - # self._condition.notify_all() is not necessary because - # self.cancel() triggers a notification. - return False - elif self._state == PENDING: - self._state = RUNNING - return True - else: - LOGGER.critical('Future %s in unexpected state: %s', - id(self), - self._state) - raise RuntimeError('Future in unexpected state') - - def set_result(self, result): - """Sets the return value of work associated with the future. - - Should only be used by Executor implementations and unit tests. - """ - with self._condition: - self._result = result - self._state = FINISHED - for waiter in self._waiters: - waiter.add_result(self) - self._condition.notify_all() - self._invoke_callbacks() - - def set_exception_info(self, exception, traceback): - """Sets the result of the future as being the given exception - and traceback. - - Should only be used by Executor implementations and unit tests. - """ - with self._condition: - self._exception = exception - self._traceback = traceback - self._state = FINISHED - for waiter in self._waiters: - waiter.add_exception(self) - self._condition.notify_all() - self._invoke_callbacks() - - def set_exception(self, exception): - """Sets the result of the future as being the given exception. - - Should only be used by Executor implementations and unit tests. - """ - self.set_exception_info(exception, None) - -class Executor(object): - """This is an abstract base class for concrete asynchronous executors.""" - - def submit(self, fn, *args, **kwargs): - """Submits a callable to be executed with the given arguments. - - Schedules the callable to be executed as fn(*args, **kwargs) and returns - a Future instance representing the execution of the callable. - - Returns: - A Future representing the given call. - """ - raise NotImplementedError() - - def map(self, fn, *iterables, **kwargs): - """Returns an iterator equivalent to map(fn, iter). - - Args: - fn: A callable that will take as many arguments as there are - passed iterables. - timeout: The maximum number of seconds to wait. If None, then there - is no limit on the wait time. - - Returns: - An iterator equivalent to: map(func, *iterables) but the calls may - be evaluated out-of-order. - - Raises: - TimeoutError: If the entire result iterator could not be generated - before the given timeout. - Exception: If fn(*args) raises for any values. - """ - timeout = kwargs.get('timeout') - if timeout is not None: - end_time = timeout + time.time() - - fs = [self.submit(fn, *args) for args in itertools.izip(*iterables)] - - # Yield must be hidden in closure so that the futures are submitted - # before the first iterator value is required. - def result_iterator(): - try: - # reverse to keep finishing order - fs.reverse() - while fs: - # Careful not to keep a reference to the popped future - if timeout is None: - yield fs.pop().result() - else: - yield fs.pop().result(end_time - time.time()) - finally: - for future in fs: - future.cancel() - return result_iterator() - - def shutdown(self, wait=True): - """Clean-up the resources associated with the Executor. - - It is safe to call this method several times. Otherwise, no other - methods can be called after this one. - - Args: - wait: If True then shutdown will not return until all running - futures have finished executing and the resources used by the - executor have been reclaimed. - """ - pass - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - self.shutdown(wait=True) - return False diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/_base.pyc b/.local/lib/python2.7/site-packages/concurrent/futures/_base.pyc deleted file mode 100644 index e5ff66c97f71e252bb0c92826812b15729b778f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26729 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 | Work Ids | => | | => | Call Q | => | | -| | +----------+ | | +-----------+ | | -| | | ... | | | | ... | | | -| | | 6 | | | | 5, call() | | | -| | | 7 | | | | ... | | | -| Process | | ... | | Local | +-----------+ | Process | -| Pool | +----------+ | Worker | | #1..n | -| Executor | | Thread | | | -| | +----------- + | | +-----------+ | | -| | <=> | Work Items | <=> | | <= | Result Q | <= | | -| | +------------+ | | +-----------+ | | -| | | 6: call() | | | | ... | | | -| | | future | | | | 4, result | | | -| | | ... | | | | 3, except | | | -+----------+ +------------+ +--------+ +-----------+ +---------+ - -Executor.submit() called: -- creates a uniquely numbered _WorkItem and adds it to the "Work Items" dict -- adds the id of the _WorkItem to the "Work Ids" queue - -Local worker thread: -- reads work ids from the "Work Ids" queue and looks up the corresponding - WorkItem from the "Work Items" dict: if the work item has been cancelled then - it is simply removed from the dict, otherwise it is repackaged as a - _CallItem and put in the "Call Q". New _CallItems are put in the "Call Q" - until "Call Q" is full. NOTE: the size of the "Call Q" is kept small because - calls placed in the "Call Q" can no longer be cancelled with Future.cancel(). -- reads _ResultItems from "Result Q", updates the future stored in the - "Work Items" dict and deletes the dict entry - -Process #1..n: -- reads _CallItems from "Call Q", executes the calls, and puts the resulting - _ResultItems in "Request Q" -""" - -import atexit -from concurrent.futures import _base -import Queue as queue -import multiprocessing -import threading -import weakref -import sys - -__author__ = 'Brian Quinlan (brian@sweetapp.com)' - -# Workers are created as daemon threads and processes. This is done to allow the -# interpreter to exit when there are still idle processes in a -# ProcessPoolExecutor's process pool (i.e. shutdown() was not called). However, -# allowing workers to die with the interpreter has two undesirable properties: -# - The workers would still be running during interpretor shutdown, -# meaning that they would fail in unpredictable ways. -# - The workers could be killed while evaluating a work item, which could -# be bad if the callable being evaluated has external side-effects e.g. -# writing to a file. -# -# To work around this problem, an exit handler is installed which tells the -# workers to exit when their work queues are empty and then waits until the -# threads/processes finish. - -_threads_queues = weakref.WeakKeyDictionary() -_shutdown = False - -def _python_exit(): - global _shutdown - _shutdown = True - items = list(_threads_queues.items()) if _threads_queues else () - for t, q in items: - q.put(None) - for t, q in items: - t.join(sys.maxint) - -# Controls how many more calls than processes will be queued in the call queue. -# A smaller number will mean that processes spend more time idle waiting for -# work while a larger number will make Future.cancel() succeed less frequently -# (Futures in the call queue cannot be cancelled). -EXTRA_QUEUED_CALLS = 1 - -class _WorkItem(object): - def __init__(self, future, fn, args, kwargs): - self.future = future - self.fn = fn - self.args = args - self.kwargs = kwargs - -class _ResultItem(object): - def __init__(self, work_id, exception=None, result=None): - self.work_id = work_id - self.exception = exception - self.result = result - -class _CallItem(object): - def __init__(self, work_id, fn, args, kwargs): - self.work_id = work_id - self.fn = fn - self.args = args - self.kwargs = kwargs - -def _process_worker(call_queue, result_queue): - """Evaluates calls from call_queue and places the results in result_queue. - - This worker is run in a separate process. - - Args: - call_queue: A multiprocessing.Queue of _CallItems that will be read and - evaluated by the worker. - result_queue: A multiprocessing.Queue of _ResultItems that will written - to by the worker. - shutdown: A multiprocessing.Event that will be set as a signal to the - worker that it should exit when call_queue is empty. - """ - while True: - call_item = call_queue.get(block=True) - if call_item is None: - # Wake up queue management thread - result_queue.put(None) - return - try: - r = call_item.fn(*call_item.args, **call_item.kwargs) - except: - e = sys.exc_info()[1] - result_queue.put(_ResultItem(call_item.work_id, - exception=e)) - else: - result_queue.put(_ResultItem(call_item.work_id, - result=r)) - -def _add_call_item_to_queue(pending_work_items, - work_ids, - call_queue): - """Fills call_queue with _WorkItems from pending_work_items. - - This function never blocks. - - Args: - pending_work_items: A dict mapping work ids to _WorkItems e.g. - {5: <_WorkItem...>, 6: <_WorkItem...>, ...} - work_ids: A queue.Queue of work ids e.g. Queue([5, 6, ...]). Work ids - are consumed and the corresponding _WorkItems from - pending_work_items are transformed into _CallItems and put in - call_queue. - call_queue: A multiprocessing.Queue that will be filled with _CallItems - derived from _WorkItems. - """ - while True: - if call_queue.full(): - return - try: - work_id = work_ids.get(block=False) - except queue.Empty: - return - else: - work_item = pending_work_items[work_id] - - if work_item.future.set_running_or_notify_cancel(): - call_queue.put(_CallItem(work_id, - work_item.fn, - work_item.args, - work_item.kwargs), - block=True) - else: - del pending_work_items[work_id] - continue - -def _queue_management_worker(executor_reference, - processes, - pending_work_items, - work_ids_queue, - call_queue, - result_queue): - """Manages the communication between this process and the worker processes. - - This function is run in a local thread. - - Args: - executor_reference: A weakref.ref to the ProcessPoolExecutor that owns - this thread. Used to determine if the ProcessPoolExecutor has been - garbage collected and that this function can exit. - process: A list of the multiprocessing.Process instances used as - workers. - pending_work_items: A dict mapping work ids to _WorkItems e.g. - {5: <_WorkItem...>, 6: <_WorkItem...>, ...} - work_ids_queue: A queue.Queue of work ids e.g. Queue([5, 6, ...]). - call_queue: A multiprocessing.Queue that will be filled with _CallItems - derived from _WorkItems for processing by the process workers. - result_queue: A multiprocessing.Queue of _ResultItems generated by the - process workers. - """ - nb_shutdown_processes = [0] - def shutdown_one_process(): - """Tell a worker to terminate, which will in turn wake us again""" - call_queue.put(None) - nb_shutdown_processes[0] += 1 - while True: - _add_call_item_to_queue(pending_work_items, - work_ids_queue, - call_queue) - - result_item = result_queue.get(block=True) - if result_item is not None: - work_item = pending_work_items[result_item.work_id] - del pending_work_items[result_item.work_id] - - if result_item.exception: - work_item.future.set_exception(result_item.exception) - else: - work_item.future.set_result(result_item.result) - # Delete references to object. See issue16284 - del work_item - # Check whether we should start shutting down. - executor = executor_reference() - # No more work items can be added if: - # - The interpreter is shutting down OR - # - The executor that owns this worker has been collected OR - # - The executor that owns this worker has been shutdown. - if _shutdown or executor is None or executor._shutdown_thread: - # Since no new work items can be added, it is safe to shutdown - # this thread if there are no pending work items. - if not pending_work_items: - while nb_shutdown_processes[0] < len(processes): - shutdown_one_process() - # If .join() is not called on the created processes then - # some multiprocessing.Queue methods may deadlock on Mac OS - # X. - for p in processes: - p.join() - call_queue.close() - return - del executor - -_system_limits_checked = False -_system_limited = None -def _check_system_limits(): - global _system_limits_checked, _system_limited - if _system_limits_checked: - if _system_limited: - raise NotImplementedError(_system_limited) - _system_limits_checked = True - try: - import os - nsems_max = os.sysconf("SC_SEM_NSEMS_MAX") - except (AttributeError, ValueError): - # sysconf not available or setting not available - return - if nsems_max == -1: - # indetermine limit, assume that limit is determined - # by available memory only - return - if nsems_max >= 256: - # minimum number of semaphores available - # according to POSIX - return - _system_limited = "system provides too few semaphores (%d available, 256 necessary)" % nsems_max - raise NotImplementedError(_system_limited) - - -class ProcessPoolExecutor(_base.Executor): - def __init__(self, max_workers=None): - """Initializes a new ProcessPoolExecutor instance. - - Args: - max_workers: The maximum number of processes that can be used to - execute the given calls. If None or not given then as many - worker processes will be created as the machine has processors. - """ - _check_system_limits() - - if max_workers is None: - self._max_workers = multiprocessing.cpu_count() - else: - if max_workers <= 0: - raise ValueError("max_workers must be greater than 0") - - self._max_workers = max_workers - - # Make the call queue slightly larger than the number of processes to - # prevent the worker processes from idling. But don't make it too big - # because futures in the call queue cannot be cancelled. - self._call_queue = multiprocessing.Queue(self._max_workers + - EXTRA_QUEUED_CALLS) - self._result_queue = multiprocessing.Queue() - self._work_ids = queue.Queue() - self._queue_management_thread = None - self._processes = set() - - # Shutdown is a two-step process. - self._shutdown_thread = False - self._shutdown_lock = threading.Lock() - self._queue_count = 0 - self._pending_work_items = {} - - def _start_queue_management_thread(self): - # When the executor gets lost, the weakref callback will wake up - # the queue management thread. - def weakref_cb(_, q=self._result_queue): - q.put(None) - if self._queue_management_thread is None: - self._queue_management_thread = threading.Thread( - target=_queue_management_worker, - args=(weakref.ref(self, weakref_cb), - self._processes, - self._pending_work_items, - self._work_ids, - self._call_queue, - self._result_queue)) - self._queue_management_thread.daemon = True - self._queue_management_thread.start() - _threads_queues[self._queue_management_thread] = self._result_queue - - def _adjust_process_count(self): - for _ in range(len(self._processes), self._max_workers): - p = multiprocessing.Process( - target=_process_worker, - args=(self._call_queue, - self._result_queue)) - p.start() - self._processes.add(p) - - def submit(self, fn, *args, **kwargs): - with self._shutdown_lock: - if self._shutdown_thread: - raise RuntimeError('cannot schedule new futures after shutdown') - - f = _base.Future() - w = _WorkItem(f, fn, args, kwargs) - - self._pending_work_items[self._queue_count] = w - self._work_ids.put(self._queue_count) - self._queue_count += 1 - # Wake up queue management thread - self._result_queue.put(None) - - self._start_queue_management_thread() - self._adjust_process_count() - return f - submit.__doc__ = _base.Executor.submit.__doc__ - - def shutdown(self, wait=True): - with self._shutdown_lock: - self._shutdown_thread = True - if self._queue_management_thread: - # Wake up queue management thread - self._result_queue.put(None) - if wait: - self._queue_management_thread.join(sys.maxint) - # To reduce the risk of openning too many files, remove references to - # objects that use file descriptors. - self._queue_management_thread = None - self._call_queue = None - self._result_queue = None - self._processes = None - shutdown.__doc__ = _base.Executor.shutdown.__doc__ - -atexit.register(_python_exit) diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/process.pyc b/.local/lib/python2.7/site-packages/concurrent/futures/process.pyc deleted file mode 100644 index 956bb753d8e14324eeb70f6c90459fd713f4cd9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13002 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 NUH_QAw0`kY@V`xT7PJ5W diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/thread.py b/.local/lib/python2.7/site-packages/concurrent/futures/thread.py deleted file mode 100644 index b5f832ff..00000000 --- a/.local/lib/python2.7/site-packages/concurrent/futures/thread.py +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright 2009 Brian Quinlan. All Rights Reserved. -# Licensed to PSF under a Contributor Agreement. - -"""Implements ThreadPoolExecutor.""" - -import atexit -from concurrent.futures import _base -import itertools -import Queue as queue -import threading -import weakref -import sys - -try: - from multiprocessing import cpu_count -except ImportError: - # some platforms don't have multiprocessing - def cpu_count(): - return None - -__author__ = 'Brian Quinlan (brian@sweetapp.com)' - -# Workers are created as daemon threads. This is done to allow the interpreter -# to exit when there are still idle threads in a ThreadPoolExecutor's thread -# pool (i.e. shutdown() was not called). However, allowing workers to die with -# the interpreter has two undesirable properties: -# - The workers would still be running during interpretor shutdown, -# meaning that they would fail in unpredictable ways. -# - The workers could be killed while evaluating a work item, which could -# be bad if the callable being evaluated has external side-effects e.g. -# writing to a file. -# -# To work around this problem, an exit handler is installed which tells the -# workers to exit when their work queues are empty and then waits until the -# threads finish. - -_threads_queues = weakref.WeakKeyDictionary() -_shutdown = False - -def _python_exit(): - global _shutdown - _shutdown = True - items = list(_threads_queues.items()) if _threads_queues else () - for t, q in items: - q.put(None) - for t, q in items: - t.join(sys.maxint) - -atexit.register(_python_exit) - -class _WorkItem(object): - def __init__(self, future, fn, args, kwargs): - self.future = future - self.fn = fn - self.args = args - self.kwargs = kwargs - - def run(self): - if not self.future.set_running_or_notify_cancel(): - return - - try: - result = self.fn(*self.args, **self.kwargs) - except: - e, tb = sys.exc_info()[1:] - self.future.set_exception_info(e, tb) - else: - self.future.set_result(result) - -def _worker(executor_reference, work_queue): - try: - while True: - work_item = work_queue.get(block=True) - if work_item is not None: - work_item.run() - # Delete references to object. See issue16284 - del work_item - - # attempt to increment idle count - executor = executor_reference() - if executor is not None: - executor._idle_semaphore.release() - del executor - continue - executor = executor_reference() - # Exit if: - # - The interpreter is shutting down OR - # - The executor that owns the worker has been collected OR - # - The executor that owns the worker has been shutdown. - if _shutdown or executor is None or executor._shutdown: - # Notice other workers - work_queue.put(None) - return - del executor - except: - _base.LOGGER.critical('Exception in worker', exc_info=True) - - -class ThreadPoolExecutor(_base.Executor): - - # Used to assign unique thread names when thread_name_prefix is not supplied. - _counter = itertools.count().next - - def __init__(self, max_workers=None, thread_name_prefix=''): - """Initializes a new ThreadPoolExecutor instance. - - Args: - max_workers: The maximum number of threads that can be used to - execute the given calls. - thread_name_prefix: An optional name prefix to give our threads. - """ - if max_workers is None: - # Use this number because ThreadPoolExecutor is often - # used to overlap I/O instead of CPU work. - max_workers = (cpu_count() or 1) * 5 - if max_workers <= 0: - raise ValueError("max_workers must be greater than 0") - - self._max_workers = max_workers - self._work_queue = queue.Queue() - self._idle_semaphore = threading.Semaphore(0) - self._threads = set() - self._shutdown = False - self._shutdown_lock = threading.Lock() - self._thread_name_prefix = (thread_name_prefix or - ("ThreadPoolExecutor-%d" % self._counter())) - - def submit(self, fn, *args, **kwargs): - with self._shutdown_lock: - if self._shutdown: - raise RuntimeError('cannot schedule new futures after shutdown') - - f = _base.Future() - w = _WorkItem(f, fn, args, kwargs) - - self._work_queue.put(w) - self._adjust_thread_count() - return f - submit.__doc__ = _base.Executor.submit.__doc__ - - def _adjust_thread_count(self): - # if idle threads are available, don't spin new threads - if self._idle_semaphore.acquire(False): - return - - # When the executor gets lost, the weakref callback will wake up - # the worker threads. - def weakref_cb(_, q=self._work_queue): - q.put(None) - - num_threads = len(self._threads) - if num_threads < self._max_workers: - thread_name = '%s_%d' % (self._thread_name_prefix or self, - num_threads) - t = threading.Thread(name=thread_name, target=_worker, - args=(weakref.ref(self, weakref_cb), - self._work_queue)) - t.daemon = True - t.start() - self._threads.add(t) - _threads_queues[t] = self._work_queue - - def shutdown(self, wait=True): - with self._shutdown_lock: - self._shutdown = True - self._work_queue.put(None) - if wait: - for t in self._threads: - t.join(sys.maxint) - shutdown.__doc__ = _base.Executor.shutdown.__doc__ diff --git a/.local/lib/python2.7/site-packages/concurrent/futures/thread.pyc b/.local/lib/python2.7/site-packages/concurrent/futures/thread.pyc deleted file mode 100644 index 7a0a0843cd3d88af4678433cf239784cd268eeb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5727 zcmcIo+io1k5v`e7ExEjlqA1ysBb9eK!yz$F!=D0o~ zn-k;uq-;)(>n+)A$>EYV8`7VW!L)2nOR!PAE)6pyds9+)Xd*f#@HINSbow=!w>=VjTyb6~RCmDNiAUwqa&0TdlA zmu#ih_+|^uY*;5*Sr_hwd8v5|#Wo;d-gQ+TjljOOvM?Qd%dxO)Xs+&-1GCyIZEdRS z@2#%%%Pj4$_VcaP;i20ti+5LkxN37}-WjIZUbUQnw3SCZjurfT1 zxsF8?8$w86uR`9e^0a6_sPm$a@6HyRAKHCmTsj=CWaZ%7x{U~`EV>PgiW5l#aiLUK z#6_(18ZoJLwSa-P@Y2X3~fMXJ$YL;4&L-Smrm%wp%dcZ z@s?M+FB@t#E_=tg7~N>(pVe*uY}Z zBE#Cn994hsm3g7P_RzW}dI#wNdOB2$C#a<^SNY^rJ>_OFTjG73n1kGLHp@;4o57Xf zTyPe}Z+oMx_U>Ur8Gq%6i@b?qUxzR_F*ppO_z&rq=je$fUhi<<8S%@)#w`@fnVtsp zNrDO-h6+ zpMyAEvrb}$B*}~1CCT?tx9pIhrGFU>$Gy7vX+D`(ukYxF|wIg885kM!}^Z3YLQlp{@_~KwlQ= zz$A&|29jh@cI!Tx@p&}k%Miy4)!J#0D%s|{C`#_lpw-OiJDQM1ar94A4*wztUy(Jd zKhx0w6tIEjkp!L=yCQonsf za3VzRjKS2-i}pU~$W-wK^mnEq;s`=nb;o$FRmXUe&bx4zHG_1xTUN%AV=L1)2&XY8 zis|DR#RKt^`yYRNCsxO2Rqk@cLJtL^+Ki%eQkiXo_?H<41()MvfU>1FN&h;^_?csr zoB}{}SBW>vT`bhT$qfO@tza>j38um*YTL z*j)(E^9IpXp#ykqBFt)}CFh5ll7&kC$dFnB2lwD^($-JniSdG`5|#3$y=!Qa%9NI#TS))Kq))`3Ujs#)}p^ zkuHq6w%!9 z#D>~~+B&Xw2kEfGX0U^zech62U&ZJ<*Sc#Rjp+o3=AC*PAEy1<+^MRv@)^#F36xVb zS<~7BrfrS{q9#3Yg#C^Y{`5evkI5sx3SFPQ8Rvt;$k;mG-LyX<6-_@r0e87Mjy}#B z6VjP~PLp?2Ida=5k34B$pARl^I^-Hkl7w2%6*< zem4V+Nj$ntChnuyJqR8Qk>5X-fHj;*oLS8gUz|u7)Ti~&8ocW;`@<1LSi)Is$TNSo znwrxf8X=|UK$ARc0d&_lx*`uAL5va_`xa&e?2)y!ZMJI|uJy=`?keqco7fur#HT** z;Ta7FikTP}t9;-=bQ~J)>Rl&hERMfJF$v-5qa^M20Nt@4)wfDwn&5mbW6~sNTjl<# zdQB56TW<|=_bV)Nl;%v)Tj5M_K3oWeJu4JUedBi_bS%%WG0%=B6QhObb6Aki zuxQY3Y6fMYe1~vVIn_wJ-I$BiyO#(3ZH`3lLSPzSl(l_=yJFrpPt~aLPcXypQ0yfL z2^WJ#V?LS(U(Eyk=k>dV+Ja}V2s+%Po&>z0QY3=Cu1EkF0G7!ZoM5aGdOZICP}M{6 zFB)(NZhy8seiQN1TZZ>>dmEwC1CCCQm3=t3&q!a8i@rASF4GH|D$}MX!b1bi{WN!{ zZ%YkaW7_;Hru8oiV7(TuOikEut)t|~w_EWW5E?y^30DrUwya`CxzWSe9Ju&>s`9A$ z>(ouwP{?<#Vme{{uUT(fj}a diff --git a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/INSTALLER b/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/LICENSE b/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/LICENSE deleted file mode 100644 index a8d65b16..00000000 --- a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/LICENSE +++ /dev/null @@ -1,48 +0,0 @@ -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 --------------------------------------------- - -1. This LICENSE AGREEMENT is between the Python Software Foundation -("PSF"), and the Individual or Organization ("Licensee") accessing and -otherwise using this software ("Python") in source or binary form and -its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF -hereby grants Licensee a nonexclusive, royalty-free, world-wide -license to reproduce, analyze, test, perform and/or display publicly, -prepare derivative works, distribute, and otherwise use Python -alone or in any derivative version, provided, however, that PSF's -License Agreement and PSF's notice of copyright, i.e., "Copyright (c) -2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights -Reserved" are retained in Python alone or in any derivative version -prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" -basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any -relationship of agency, partnership, or joint venture between PSF and -Licensee. This License Agreement does not grant permission to use PSF -trademarks or trade name in a trademark sense to endorse or promote -products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. diff --git a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/METADATA b/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/METADATA deleted file mode 100644 index c94bdb98..00000000 --- a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/METADATA +++ /dev/null @@ -1,57 +0,0 @@ -Metadata-Version: 2.1 -Name: futures -Version: 3.3.0 -Summary: Backport of the concurrent.futures package from Python 3 -Home-page: https://github.com/agronholm/pythonfutures -Author: Brian Quinlan -Author-email: brian@sweetapp.com -Maintainer: Alex Grönholm -Maintainer-email: alex.gronholm@nextday.fi -License: PSF -Platform: UNKNOWN -Classifier: License :: OSI Approved :: Python Software Foundation License -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 2 :: Only -Requires-Python: >=2.6, <3 - -.. image:: https://travis-ci.org/agronholm/pythonfutures.svg?branch=master - :target: https://travis-ci.org/agronholm/pythonfutures - :alt: Build Status - -This is a backport of the `concurrent.futures`_ standard library module to Python 2. - -It **does not** work on Python 3 due to Python 2 syntax being used in the codebase. -Python 3 users should not attempt to install it, since the package is already included in the -standard library. - -To conditionally require this library only on Python 2, you can do this in your ``setup.py``: - -.. code-block:: python - - setup( - ... - extras_require={ - ':python_version == "2.7"': ['futures'] - } - ) - -Or, using the newer syntax: - -.. code-block:: python - - setup( - ... - install_requires={ - 'futures; python_version == "2.7"' - } - ) - -.. warning:: The ``ProcessPoolExecutor`` class has known (unfixable) problems on Python 2 and - should not be relied on for mission critical work. Please see `Issue 29 `_ and `upstream bug report `_ for more details. - -.. _concurrent.futures: https://docs.python.org/library/concurrent.futures.html - - diff --git a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/RECORD b/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/RECORD deleted file mode 100644 index 626bac08..00000000 --- a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/RECORD +++ /dev/null @@ -1,16 +0,0 @@ -concurrent/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76 -concurrent/__init__.pyc,, -concurrent/futures/__init__.py,sha256=lErVwp1Kv_co1PKmfYCHvBhWZ_ONtg-bk9v74BG1Q8w,887 -concurrent/futures/__init__.pyc,, -concurrent/futures/_base.py,sha256=7SaxfmjweeKgw5bYMqCE09V_w4Q0A7N5MtcFdyV8ypI,23798 -concurrent/futures/_base.pyc,, -concurrent/futures/process.py,sha256=XWNXGq8Pgnt__2Yz49bCV9dyuaWiZLlkRwt4IQMKaOQ,14986 -concurrent/futures/process.pyc,, -concurrent/futures/thread.py,sha256=l5xiZysJdECLjizJmixi8xQj4iCWcpvGnoUiXpJTRhc,5923 -concurrent/futures/thread.pyc,, -futures-3.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -futures-3.3.0.dist-info/LICENSE,sha256=ppi9XUQeShavbJkrjoDL-hJ1XXLZEIVPofsR1N6wBZo,2395 -futures-3.3.0.dist-info/METADATA,sha256=ruUlmMgekwudpLJ8s0fW5FMaGFbqSXmTRYq9ejavcP0,1915 -futures-3.3.0.dist-info/RECORD,, -futures-3.3.0.dist-info/WHEEL,sha256=Ph_z28wTcU7HnQwSQ6yCQ-zkcGK4h4ehDfP8b6UoHVE,92 -futures-3.3.0.dist-info/top_level.txt,sha256=elL7bzFlkyVZr3M0gg0AeLUPt5OJ2F9uJcmu63VMt7A,11 diff --git a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/WHEEL b/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/WHEEL deleted file mode 100644 index 5c9ed1e0..00000000 --- a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.4) -Root-Is-Purelib: true -Tag: py2-none-any - diff --git a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/top_level.txt b/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/top_level.txt deleted file mode 100644 index e4d7bdcb..00000000 --- a/.local/lib/python2.7/site-packages/futures-3.3.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -concurrent diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/AUTHORS b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/AUTHORS deleted file mode 100644 index 42a5c227..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/AUTHORS +++ /dev/null @@ -1,51 +0,0 @@ -Original Authors ----------------- -* Armin Rigo -* Christian Tismer - -Contributors ------------- -* Al Stone -* Alexander Schmidt -* Alexey Borzenkov -* Andreas Schwab -* Armin Ronacher -* Bin Wang -* Bob Ippolito -* ChangBo Guo -* Christoph Gohlke -* Denis Bilenko -* Dirk Mueller -* Donovan Preston -* Fantix King -* Floris Bruynooghe -* Fredrik Fornwall -* Gerd Woetzel -* Giel van Schijndel -* Gökhan Karabulut -* Gustavo Niemeyer -* Guy Rozendorn -* Hye-Shik Chang -* Jared Kuolt -* Jason Madden -* Josh Snyder -* Kyle Ambroff -* Laszlo Boszormenyi -* Mao Han -* Marc Abramowitz -* Marc Schlaich -* Marcin Bachry -* Matt Madison -* Matt Turner -* Michael Ellerman -* Michael Matz -* Ralf Schmitt -* Robie Basak -* Ronny Pfannschmidt -* Samual M. Rushing -* Tony Bowles -* Tony Breeds -* Trevor Bowen -* Tulio Magno Quites Machado Filho -* Ulrich Weigand -* Victor Stinner diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/INSTALLER b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE deleted file mode 100644 index 5e009e3c..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -The following files are derived from Stackless Python and are subject to the -same license as Stackless Python: - - slp_platformselect.h - files in platform/ directory - -See LICENSE.PSF and http://www.stackless.com/ for details. - -Unless otherwise noted, the files in greenlet have been released under the -following MIT license: - -Copyright (c) Armin Rigo, Christian Tismer and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF deleted file mode 100644 index d3b509a2..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF +++ /dev/null @@ -1,47 +0,0 @@ -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 --------------------------------------------- - -1. This LICENSE AGREEMENT is between the Python Software Foundation -("PSF"), and the Individual or Organization ("Licensee") accessing and -otherwise using this software ("Python") in source or binary form and -its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby -grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, -analyze, test, perform and/or display publicly, prepare derivative works, -distribute, and otherwise use Python alone or in any derivative version, -provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -2011 Python Software Foundation; All Rights Reserved" are retained in Python -alone or in any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" -basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any -relationship of agency, partnership, or joint venture between PSF and -Licensee. This License Agreement does not grant permission to use PSF -trademarks or trade name in a trademark sense to endorse or promote -products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/METADATA b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/METADATA deleted file mode 100644 index a656817d..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/METADATA +++ /dev/null @@ -1,92 +0,0 @@ -Metadata-Version: 2.1 -Name: greenlet -Version: 0.4.17 -Summary: Lightweight in-process concurrent programming -Home-page: https://github.com/python-greenlet/greenlet -Author: UNKNOWN -Author-email: UNKNOWN -License: MIT License -Platform: any -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Natural Language :: English -Classifier: Programming Language :: C -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.4 -Classifier: Programming Language :: Python :: 2.5 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.0 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Operating System :: OS Independent -Classifier: Topic :: Software Development :: Libraries :: Python Modules - -.. image:: https://secure.travis-ci.org/python-greenlet/greenlet.png - :target: http://travis-ci.org/python-greenlet/greenlet - -The greenlet package is a spin-off of Stackless, a version of CPython -that supports micro-threads called "tasklets". Tasklets run -pseudo-concurrently (typically in a single or a few OS-level threads) -and are synchronized with data exchanges on "channels". - -A "greenlet", on the other hand, is a still more primitive notion of -micro-thread with no implicit scheduling; coroutines, in other -words. This is useful when you want to control exactly when your code -runs. You can build custom scheduled micro-threads on top of greenlet; -however, it seems that greenlets are useful on their own as a way to -make advanced control flow structures. For example, we can recreate -generators; the difference with Python's own generators is that our -generators can call nested functions and the nested functions can -yield values too. Additionally, you don't need a "yield" keyword. See -the example in tests/test_generator.py. - -Greenlets are provided as a C extension module for the regular -unmodified interpreter. - -Greenlets are lightweight coroutines for in-process concurrent -programming. - -Who is using Greenlet? -====================== - -There are several libraries that use Greenlet as a more flexible -alternative to Python's built in coroutine support: - - - `Concurrence`_ - - `Eventlet`_ - - `Gevent`_ - -.. _Concurrence: http://opensource.hyves.org/concurrence/ -.. _Eventlet: http://eventlet.net/ -.. _Gevent: http://www.gevent.org/ - -Getting Greenlet -================ - -The easiest way to get Greenlet is to install it with pip or -easy_install:: - - pip install greenlet - easy_install greenlet - - -Source code archives and windows installers are available on the -python package index at https://pypi.python.org/pypi/greenlet - -The source code repository is hosted on github: -https://github.com/python-greenlet/greenlet - -Documentation is available on readthedocs.org: -https://greenlet.readthedocs.io - - diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/RECORD b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/RECORD deleted file mode 100644 index 8c9b67b7..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/RECORD +++ /dev/null @@ -1,10 +0,0 @@ -../../../include/python2.7/greenlet/greenlet.h,sha256=lMxw5Z2sk1jjSXhqzBI13iCh4wQsv70PYnOVVam6kZI,4176 -greenlet-0.4.17.dist-info/AUTHORS,sha256=swW28t2knVRxRkaEQNZtO7MP9Sgnompb7B6cNgJM8Gk,849 -greenlet-0.4.17.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -greenlet-0.4.17.dist-info/LICENSE,sha256=u95V1UVqHpEmM-0_ZtHb2VBOPj3OT0wgFQQ83LxW5pc,1408 -greenlet-0.4.17.dist-info/LICENSE.PSF,sha256=5f88I8EQ5JTNfXNsEP2W1GJFe6_soxCEDbZScpjH1Gs,2424 -greenlet-0.4.17.dist-info/METADATA,sha256=1JfIvgi_IrGEShdtXql0SnoBTO20gM-UFaAskiMksOg,3378 -greenlet-0.4.17.dist-info/RECORD,, -greenlet-0.4.17.dist-info/WHEEL,sha256=v_WvMd9LcJo7UEU8YDntezoLIPEhS-iS69BF1ftVDNw,110 -greenlet-0.4.17.dist-info/top_level.txt,sha256=YSnRsCRoO61JGlP57o8iKL6rdLWDWuiyKD8ekpWUsDc,9 -greenlet.so,sha256=Rq5cYBkxxo_w_Q8CN741z3c3LZSt20-xraTKOPVfr44,98183 diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/WHEEL b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/WHEEL deleted file mode 100644 index fdaae725..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.34.2) -Root-Is-Purelib: false -Tag: cp27-cp27mu-manylinux1_x86_64 - diff --git a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/top_level.txt b/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/top_level.txt deleted file mode 100644 index 46725be4..00000000 --- a/.local/lib/python2.7/site-packages/greenlet-0.4.17.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -greenlet diff --git a/.local/lib/python2.7/site-packages/greenlet.so b/.local/lib/python2.7/site-packages/greenlet.so deleted file mode 100755 index 0867dc7a75f63e2b1086f4fbc6cd9d5b33709dc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98183 zcmeFa33yah7A|^DWuT})C4?z57BYn}rGStG0V@PZ1%iZ8P&5fifCwZpsX#!H*h!GG zjN;HX+Jk62(CyH4+fAdbEsBcT+D+4~jWfGPP=z3Opgo1HdrBi`M zJWBrCrRkl^5t`2`$;+$wy+8%;cPgx=e^WFE>-WLGIQ%O( zZ<*n^?5<_yxoh5gW!S}inu|Z5Keu7XY_gI*7yqc9dV&W%rl-YMNL(TQ72)5AeNX&j z)|?kV`qMi%Tz>4*6@wl)H&Xvl+h^|fe|)OF3#Kz%aYlEebinC^+o901(N4J$2A>JP z1|4-K{5}|bCj9eV$R7k{9=k$)-_nJgDP71Z>Vp5{F7RJF6^A&h5WO-@XuemkaK<){Ow)XIlT)z zukFH~8@iBxSr`0uUD#RJh2G{a@N=Ly6>aEzjp{-#*bPr-X28{5*x#=U{Ow)f*LR`! z;V$s^b%F2Sg?}1g>zU%SpbP#-yTHeFfnU{ypC9X@z2A3XPgWQ5bGwk!tqZ-iUEs^0 z*MonZuQ$4o{}LF_`Cn+PVVV~ zzXh^-8U2mp8$6OT-w#&SXb>4*!uZG@M*@bn$z(gXnbe>FziV+l8n*$2uCAsI94Jec zR0bfSs(LM9FtApX4md9W>gt9-6j@YLy|!d-UCqWN^)Ri3nrBy)2TIPX+^j{;t*P5s zM*Px-+6|R90_0cL2C8bR7nB9c*P#u{gt?V~jE$8W%WJm)wV-k%8#c^ss4k~OEoyOPeW0d}trwdLDg%Xq%8eE{yK;ko zblnA&bv4>`1eew|#5`Gqt`f&=s49=jf}^x7yHU_UP0%3jE~u=otg9-|+pwXgT${A8 zyqtztXz;umw6CU)4V_h1U#XkI%E08+tt}}otE;aR&jCSSEUrX5MVz#02?L^d%aY1V z8!D^ID@!!21;HNnShP!Ru0kbt`1y5Jfy!mob!Aoc5`<{{+_FH~2CLJT)|Hi4&MGTk zZ^e-WoCQ$AdF)@tWwbvby09A2PkVGzEPL`xmQ_>adhm!}^J;4=tLY8Pv<;PIb>~-> ztzTTZ#)=5|nxP$ID#%93K6y6h&J&tEOgyj7tts zNK(O~f;Q@z{Ic45n5)O6?g2O#Bg5EGwYoMS<84BH&4f(C<-D6}lvGwALX47<)%Eo% z$pM8vEGR0Rm0vPx!lVgVwq*GK^cIuB|K?@YG!6TI+z*+?OEL#2!3_hdx*LYWI0c+s zr5-7)ePPoOg?4tr`!qhS6W)S7Rj12YJzvR5?}UGf8!=qIPWb0F-ros-fyNhi!dGeh zica`{X?$rX{BezM>V&uS?(Bp&GL)TrI^iw(dpqHaHUGg*cuVgyo$$NHDEY;gc;v>Z zK;!sOb>mxqI{x3!uvFSS0}vHkGnhJ zPiXu1bi!w<<`@S$;o}!5y$3ttQ#AkaPWYahKimnwZ={mr)axb7pQ)NZr4znM`>nJS zexCO8x=#3}nM!_RXZ#vvXj3QrV>sZUqBj+l;X`S%<(iJ|v6aJvqd!o!E3_SZukURBrs>~xd#CMZB{j=I5H^k4?C>Bl| zp65>1m14v9wU8*&Y544ad(`|U3_jYSJ z>_cm=W3@dte4I_rUK`$;>PX&a!?W+L>wpb!#Ug13ZFo$a(d!u--WA2-oYjU;vf+=} z@I7q!<2HOx8$N8q+YcvC*zn0V{!=!5FB{${_XtG4+0R*=Hhgaze~Jy?--b`K;nQq* zj}3p84WDkq+mB8&ZFqg8F12!Ocs-;A@3Z0c)FODl4et?*`YE>Ib&3?i3LE}x8-J+{ zKir02XTy)M;cIPpoeG88Xv2@P@i*D!rwy-{0)pRV!)Ms!?6%?clq}ReHvBjn z|6Ut@ybZt4hM!==AF$ywZTN#Wyw`?*#)h|#-y=4>ePw*ihR?RiIc~%2sZpq58$Q>@ zf5L{>Q<_ju+3+)L{Dz)a8UK0;7pl{S*Hez*Q*3yjVAM~V4L{3<_t@~WZTNH>evS?A zZ~n*`E{HP>fAf>hLx$0jmFo8x9V7eTH+iTJcZAomM&x)0u8}UnOp}o#0y_vh2p<&q z+XBE4Xhil2{5fH!yvQDbKO~$$c$dI$6HX-DB=9SQ>7Gcfz()x)1x88*evWW=!o>nV zL6|8o;uH8`!c29MOo4w#m?6BJht0GnGXS3cQstQ&?o5z;%QV+9Mu;GYB))MN$Mln=n&c z#1MD@VWzgoiSO9{RKgy@#|3r~W-5yu5!gZaY{CZx{&p^4rmo07fj=kAloi<{@P~v) z65b{7+k{6EZW8zv!lMb-3Vf6>Q&pr?;O7XBAzUo*6NH(XB0hm1Cd`x+$rSi^gqeyW z9)W*Nm?b;ysr59 zMIFaE{=i?R_%E>WKYl9CAAG|9_=o5E%_IK5pK6fGeY2(V(ZJ^y`GZe)yv_PeGjdVS zXc+Bpo-q_;s0_Xr=mGr?=Xs3qV6-s24nG$?osa@X^NT}kcuk1f+dN|@7>&Rv7u;WDCbv8b4u9w}pGEQkMw%k&7m8F$k{h*30ShUx z88y~fXh~bF5hw<_)2Tz7@dXSQ3A-Z8I>8zAPs~AAA1_gW-m>_6jAx z*yj)V#D;2(8Kii*z0}NH6 z5QCT%3Q<9r+kXw>7e0~p4l)9X*C&M!RWOD93v+yaCdb_f&kycxnDf21Pj^q8Z^_SVxok_=79bpu>0J zA)EYAlD};c=tup*-ho~uGpgZaosU9Goc`c!SQ~t^V{xWGgxmIq?e%ADDMF&?1J^*u zWB#_KBQpJMfe{{m+vOut!mFq}va`81PEmvlw zB)8@Z>T)osVG^075h)tce$XEpoO3R`&>Uy_gOK0;OX-hgD!4=A*TX9CER|weIvUt8 z8L^mR1XlV(bJE(AtvI?6R=kQp%*{{R^qD_+Q6_`U7H8X_v%wQSbczkx<_TZ&HEs^i z@xZkPO3pkCa*Tm{{2>w6@Qe08TK>yhUKspq-m=2ri+M{6gI{9!eMbw?+NE?+0PYBW z5S|L}pPG<@Fq zdCT*b%C_WRr5z#a5w4uPl3RX)Jb+Hi zEJXj@`;~N>KX@p)Wjpbbr?UEhM*i?Xh-hDE8~>0I%6iX_sUGz>#bB)2v~87OGvrRbLSZD$6=kn>1v zh6j8h{`m`*!T!*KMt`o~m)u%_rF8p#)C-R#x%FUS@X6$s15$lP`ZSN>JsCD_JvEkk z5Bq2#l8!Hpb`%9meTB{OBh1LpAY``0q_{NBw8>>%+if{6zUC zqc-5!c$1n@d9iU9`88^W&t@F3yS5X$>2s>~8Ien=%@+Tmgj;ew237)nhhbriXvjd( zu`7qZ=Y)7DkbwwZ03NX1EG)S5!EdvCfwRINVGS)Q2mTIZ=&4H9MF~}8mS|46n76@v ztTm2tg(h^XUEYK3&)Muz>+#ofMBk`R`nrcN7kv$!bi2poe~NIQA@dRW%? zZA#utKbAkoqOLK2mKX3FiE>_@8n8dFfhFvIX3~hnY4}_T&JyQ6fu29_;a5K6d?Kd5Dgo^A3k5y zH723^+C6%nMt?V?#-h`jUuEr+hUwah%iMniKGw24lr{B`^X9v1eVp*@RJf%r>utD@i^hjP zwU(n#NuEG_h`zz13@Z94cR;i1^Cmc%{eGpAb2;|flv4*emiA8Z+j=rk;SbGqo@}}o zRXv(6`l7#)b>A~CH9ZddcXa|vi~nI>P|&$$AJKidOb>f zK=o7Jaxi_09fzK@LW7S2C<@hL<%u;?a?7i1T=23Kf2cmKF!$u<-tA>dFP2UUwW-)Y zwmzjORGwa#`z5w3+up(K>IvTfRp^nz;8V#hw?PQzSbto7%DlGe9)Iw|qA_oWJ@8Ob za6Q2FnERsgHt$0wSp_T5YD7nJ5v2P=>(h&Jzq%a#Y2|S%Ph95VOgh5S_GBQ-AN+)x z{B6_Ii-Mo~$9x#x4{A}c9Gvy(7?F?I`U869ASryq$ClrIZp(kxe9oce`{~QmM5*9p3G9Sv9IRL(f)okevya=AD>K#31dWX@6f!o zpugB3ng^@=ew3vsOHr;vxy~P2TPev>t5S4hv=fg?&UQ>wTZc2yHF)2m8K; zJAW|ibry#cUO~YtxCM!5tKT2of*#mf>OVZoPc&dC*a`((pkON$Y^n7(J510^g?@O} zI$g@%{IvZ^-%FK_OwK9KEZ=O7G#`BZtlfHc^+m_;d;q_RlV9;hS zXni-3RM&MtP6BkO@jr~ng?m8?Nenmv`i!WS;_5^ORaY%sD>xExDgGi@vU*Z#cB;IxLW%Xku2>U|2QN-^nNV} zqVG|dpJ@zMiT5ka9Z^iyjl_hqmZB&OUEvG2f2h;IlY!}yIO(vzi^H;pf~hF@85Wd9 z*i>DqCas-SAWBCyBo%V|3K|S6R9*Ennk0UDiy|=c=0`++a_cLkgyQ^d#T{7Ds||8; z>u5B`FMHw*r|pR&Zq?2?-j5j>-9%wvF{1)UHHeD95**b{z&R_XhK_+0J)?Mr$3TDk zlV_g@-$b>|PkMfsk1S7m4@Q2CV;Nf$+Ha5fx&3zAN{*{VYd#DPE`yqIAFMkf1H{HA zGz?AsG<;AswP7p7z$~`&n6z`5k=!~Hy8NMK=*CrS=%?1^KQa=8SiZBF6Zr-@7#uj% z!Q!mQ*7hRrtKN?zo5gq5IxKPsf*wNv8R4HOLjqI$!F5<~tnjF#(ooh+Y-A!Cr&Vj; z8*4P;s{JnUZi6d^mC$VE!Y#I3fb%vI5e!EvQO4|NJ}wM?Z`)#p24~9lX?!mhrypk^ zLccf%-rPZh+p^xmF+5}Dst?$3OihQATmC`kV%LpK9Nhx+2fZjXvT*_ghWb7Z35DDt zTdUf!;eHaTfwK$c^pfw+A{P9TtE~(o3EXEC>in?)$88I^B%{7Ul|KqYJ|E0TZh2g6 z=(_@nxNJ^t-A4ou;*wkPWi;@R^erNT<1@e|r>#Z7@%>l>nom>O1U}f^#g6KbCVHUx z2b(6fUbGH+(j_z4_hYSn1!X(viI>pzA$=BxlJyZmVX%L43;zHCD&Y0U({R_8@HUIk zjHGEELq^cz_pQUZX(B`A+d^!Gih>=?M0}jH>$Lq$nK0`1+4eKzV)$5n>5a%6GK754 zobV0zD2MY?=pHNtu)x7VDDZCqpWN~{+8fNzl%77EujaYK`K9DWEj^#*%X}8{A?gP| zM0vsSx1vB-gir+Yi^CV5>gZs4o{5eP@(GWn5@nhemdP@b4`N~Hd<<4eavjkT`xFQW zzeSV}dtn&!@JxWbu(%^S*_fk1YgFHR#EWl@CP5sc4FthpuVtq0%RqFO;4u319Fb{ zU1pDQ$mCdjq5r~5(YrFzWuyElc#t_c0n3E@2?d3^Ne*j0ig*c>a|Za7b43Wp&AOK; zbC8-Jaa7GI@agcs<-BSmCd-c-pzO`?JZfs2k&j1m;c7HV#zy3QNhiL{NIIN}Z1Ryf z+lsCB>+N}PCc=l-^%CnET(Qhd18~L)o9zh;a|W{G7m#Re-0u?Ua}l{;GjiV+k~I-T z9FQNA8Br5%Rx0*4k=@`t?fDFk9=}t2x)2^Z>VqV1KcB$%qNuF`>rO5nu*>rw#t?@i z5ga&;lN&BZ<3}tA9>;1X7zrgW$Dn6(PbIe;B@#IRXIoi21X=4$ zZhc-@k?dsSsdET+S3Df2094Qr_JN^UPX9Rxx1(|ZqId3v4PQTwpQhxNn^2tm5w|zK zW$(Scq z?kaXF!STs0j6DuxGr3jPRv{jk^UTVgv|4tvO~GRkW*FETOozQa#8B84Ck-y*Ip?#< zEk7ko?l*x(IJ^pcNMAP~u()-)12+0YXf=+*lUq)b(UxOv=cdUm4ELzJIvuLIWucj) zGB%%|#LjDQQUG|UzimF6`>a2h+<>}rG9-GHxBoI4Rt2$NNN(9jHRx~lj-2Um-Dbr? zWGX`o@)B-m4YUK{#CE)L9PMa+5)UJ^4f?!A9#k|a-j@_Fo>x2~ouymd>Ov&jPHZFJ zQirZ@%g221Zk>O0gwNt^8+R!XEGMvv{sBP&UlfXB%%c3a_6>Q=kZ$Jo^7 z%Y2B7->cg+oRj{Fw|s12oAwX0LyhoF(p%&IFbZv#oQD zq0jP~xik*G!8EiRXoTC&Jw##tm+cnnTl0UpcKO6&Y)5$>F8cv>g#U)MPE~=qt9`%K|3cr@ ze%r{;=}z5b%5AhcfZbl zjQXNUxl2w*y0d26jP{-gx!YllWFH=j;?Uz`uE^VFyaXC2uFok&GNAWp_$dNyGhP(h zC*hX>Mji$KE^kM8@0$ zjy!$x{N_J=euG&hWw;z1Z%54kLp`UySlQpQUpnJs*qhvPHSg8)zOJ|zJh z^I!NcK;sDMIz0}sOYG_A?1`L(li1)({T*rXISFlsOZ#2Tl)r`_IYxa2TdB7uQ8^hF?MiAVNJC z;*}FMPLD>%X+i{y$o~$;8uLFit5YR7N}n&qo*#4l@s;-^(y)H=>BLI301}uOhpNcr zneav~jk>FT3+iK#CW9I-a~9=(5a@y9zHklrv0xa+XF!7vjOVsI z?&6Cw|MrNL?cJ4?Q(&d^2e+oFGG|)MKYTv$cC3FO>2XR5^>xYa4R`ukME7v1EQcEK zkTv1s@!*j~O~Tu}<&e$K30zN`bd1m}{r*a16UUI~&07k8WJ3dET)*rh4NhT$uXt7U z>TC1_4?0eWOSZ*0R%wohNyu&In;JvfFR|PIzwo|>TK-_0$j9M$UjxtU&-lIupSwi! zc*2!K(creMpE_Xy;^Dbtd`&|l0;%4LpBLby6^ik8mtwpfj4E(=JU?F%&(Ts^qQoDA zxJePaY2sRo7-@hbLH~Y;m@rgJE{M{X(b4wjC48ESh~#78=izeOkss1ZDC>R-l2>5j z^nki7jyn^1UFG9If&?fJcoO8vn`9DfX+8~4`4@)q$1>n}3@FK5&G!jcQf8>{b7NV= z;-_cWgY^h!{Xetsg0JXv!Nr)y@$Sq!oT{3)s&m2BI2U|ZFR?=jO^{S{PAT^FkCQ1l zel0~GPFRY9mn`Vp-8!!295Aq5+0^=_h~*jJd$Iub_O_>YZeS%>+o|mG|2d}AAX|Q;~!T-_G=+L|5KQsX$;T*6y}a7ChJCG zaQ=rvo&UWgGYqzYIGE>%K9c;xg=DX!D ziqPcN?}$Z;;P%Wqs1gks3^W`A#-_F8mNeqjZlR~d;Tfg~tmH)Glb&cAz)Kgg@u_#Z z`iw9K=Nc{sd0W=2-PoiVq!3O_i@09kx!_*Q8zGv0hO@zwqVWu8gRcw0n!zIp z&~4usUnykEuaT#rFm_&un2Mg2&XDs$J|qv{3uCa~z7M?Wu<#OPUBDYXELd9e~fiw`)xnic&o+qLa7q9if@U=`X>*sGG_HZ+k-Bdu@9-h`>gk9-T{7H zL~o^?;Vu7QGY(=FOKxf4U})>huNt796nI5qElkEh-+8`JXDk9W{2*(!&A5P^!Gs@U zpA_DsP^wl!9Z_uxRjRla617#Ko`4CcIF6{bL^aPKnK&oP$8noysGPTX%*ATey4L?drY)is}*y$v<+(mjQ;U!c9+oyEEQM_Ul{&AG= zGU3|>K7`U=qv)lAUITQv@Sm2&b?c_LaK|u|OycO~LC@C-Hh5DxdRr%Q1m>3PX=N;RvAzp9t?c0+JjaJ?oE!_@gS% z#}+?2?~=ghv!q$)YXcJf4gM6G{|x{0)ItD(Hz* z0xeNc1>g1vCM;0UR34%Q6AA!@A67k^+)^d!k?Wr~VMZ^Qp;l+`Qlt`0VrRHrwKutS z3`X&qUEvGS$jD&ad$FAN8Ie@nGJo+s4YctPdYM;wS@r0Er=k)cQKY%%4@0vRn-lZ z#^nnaE}Vux;;z|j)Ccg@i8{mjD#V<|Dm1OCLNu+f+OWZ6xQz5MtT9dG8JQENOz>ty z^`^?YdT8Q@EJ`d@C4u@9e8*sY<(5uJSo}j|fZq@xx_)yNzwKa2nE;FM<%uX*p#PYj z#u){R=gc{;XwK4-WlQFi6y%={FI}9MUwB@@>B#(r=PjMHVrj|pyv0jmLQC>X@`?*} zuNiCcaS8q5i26!&DGVb{-)Q|4EQ_L!hq#h8b!8hXjSBo_zQMnG#}^Um%QoRd4)984 z00?}OqD11x9w53S*Ot|-E?ZmaDX-bE0pF@XEnHTds0cxK*Hj~#Dyr73!S_KBVd}5% z4MvC6vtWYRp0YLgYyjwh_>B=y%^CrsW{Vlo&=aS70ySq84pu8fZG1nl*JG0{0hK-m zDy!-$JZ1V*3AO4$hiLDlpt9@W!PHr?@-eG{Z^Mdg~Zh7AEvRlW43j?$X8*-!2!0>Y&9V>93 z^S6$UCX_2s^2~SzQriKP>rfs+xf5j=d-dEro8E_3T*!^COPz#iS4 zyWpD}UyvmF{{!{|h!GrBL@(;;13CME z&m(q~+f(6o3ja9Z!@!RvezrSh4e;Z5OTCDte-kh5EN~aEa*3+>NlS2(?{>~ptt5W{ z{71mQQ}gd|&w_hHPQsXqIs58}NRbRPPscv_(PC)06fw0|Uu zmAu*D&%`;zMy;<7>U4LDJr$rgfj&pm5gHf-tLR>#w}8G6^s6psY_KAaJCAWo>K&9Ts( zc1;{c)eic*8RM-q?(Ya@x*KB!EEp@Zk{k%c^n4o%zMBmZ6_9rVXO_#gU#{VJ-$8lJ z@dXgo3Q?4!#@y_rxcJi$V%G@Bxes!j$o=%S8XuK#e}2-1_?@HUpYiff+RyU_^1(Pg z&gaWGU#B7%2G33^kKSA1D&w#Z=8_Yrf0*^9pD%Q0IuO;&qj^dZZI}+e-I0!t0Xi<* z90gH7p}*;;Ovgo?+?1CD@1N$lxk(PRARTEa>dU+&w&Q1<)9{3j?=q-%_+$C%-l*-f zlg?N71ySqN-18dh@5CHAO2>&$&9-iLEX8z2+VZ!MzpyLbmyU&|Goa}f&Y5ozaIFn2mb4U|9as6yB=uL zn_ZuM(+hL0?;LW;!s}_SJ#bktzp==xhbp4qi^oHKxx({Qd6tHaQjgpX)Ue*R8v`s@ z(+63wF2DM|qlULU_uz#kplxi1 z?wfgGNhBBE(3Wer{s@|dKjBt*s~vl_A=Vz;(udP$vHytX$7)<)ZLWbM4uPj=`ZpS$ zto8o?z3}LM@7&HEIxue5<=wj6ugj-(`I0W**X2oFCh9=zr^`{goT|&Yx?HZyHM-oS z%N@GBS(kU~a=$L0*5ymOd|#I*b(yFGxt}ga>2j(r=jw8~F4yRClP-7Y@@8G$t;_wo zd|H<;>GFMDp44UHVCB(%x*Vm;sk)r2%jLRUqsvXY+@Z^xb$PcgJNMHPIatQoYGq?( zc>|wX@O+e~*VYNBr?hl!Y3Vo*J}m92+PJZ@q6%lR8@71(Rbtcwt7~o5rpjvD$#GS+ zsx-mlDO`ht-`F`c4p3|BYBp6>R91`=Ez$F1mp)^K#2VJNj{6I2&mBrjA(3af)$&>6 zm_`?b)|Ra;6Z`A%)m)qv*Vb;>GR{+0j|VmN<@hdkC62>a*KDeUi1TW2j2&247LY?> z9vS1fyxz6366eSjJmf9gu(1YDknr8+Dx7x9dB1YX8ayMY*^C;~rs0Gc7pzvEs7oI+ zO)$iYZ#;o5wc~hNj+U+#(%KRs)Olt^y_>Eu(bMm>V@~6opq|R4k8!z_r;`)Uc(0UsL66-rE3ko8O~17_Li3F zPC*A)30en|wl4!u8gRy+k+FU=?_jP9tj=Ktv!gxhav?aRB^JuF4&7BYk>1%jJRA_swisuh zX2Oq@Vq#ilc(^}6O{f+Z6XR_NvyIrum zuCg9qutq#q!*qmmU1gx5u39}1oi?IiH_VU$s0Nf8i_r%^ z;6^1^42ByyTIJ~sb+fxX0e<~m%)ygDen4BH`5Y7aTpRK1qe?jR^CX+rGdq({;?x5m z$q=5-PfXZs)vGScWvZ3+RU0vGEstme<#XTlwl1#6(?0lH#(BL<4eL&UspHf7ez5iZ z-_H5Z`ku1&-Dc}M&DM95t?wasu4lnkee3(ndKqGo4NH#oy=80NU@=(ot?w&$u5a=E zpDL~IIsc#1_y4vY>pRuEhG|Q9@P3BNiX-d0)7E#UJF{AGW_?#W)6i!Eqv$F`fhZS)sD^#|C_M&eQE1^($V$z8jnb{z8h_QC)$c{>-*5w_n?n! zyZ%?>+mhGWeCxZ>O`QnVccVL@y9O`ubWQtTptR3XI}z(U)Yf;Wk9XRat>{9g_1$TU zY<+Lqg1agkHNpB0wZ&(Bf7*f%cCy35|KBbP^7E&8((%7E8{@&dCle-lCS_*kWM*eh z@uV-tROZKGO7P>evc?#vG3N-gcS@#rQl_05`0-vapU(Y16V36dT&=clR>MYiF>vQB zjPjdr_QnSII6|rnLad7K>76b;;kX>cxPRv0HqO~Ckc`4~CSWTX=jgT(Tg$lkZd(MI z*iDcL8+ze?OBbI|h5y${oHL;nyH&?yV2IyUMQMLZ!R__Dg*5I=6P%9CDB}M}T%vOi ze&ftUH)J{DQ8)geRC^JFBw@m%Aa?sZZjUAQFt0|Fog-j=Vo!552#(=~^PkwVCZ?LV z3g~q9CAGH(Q=G@U1MH*0H0LrjEU~W!JAG_cXx#=7Ipxd7vaH<`{b&6;2?75GP{b2$x} zX!2tWal@NUXEU2T+3bdt6*qjR>3osmrkj@u|1Q&+g0qgqIcA%{yG>_*!gDpe$8-)M zT%h5-rgJ1=zlQgj&T)hb&GAzIfay%b5kTU6u|972LDP9I^(`=aivA}}^!F~9)_o87 z6P<1Hdpi&=^M3p$5n=RL#6JCP&-YO$E%A@^n)?rI)&b=}!|kKehm`-E?tb*{qpMNV zF+2rQ`9wO=$;e6GgC90MWe0AEr53>swy?b!vrUZIEo82~4!;Q08U%2nb2_+sITAs2 zesT{8j_ZK#{>KqO$Hm7lX81efpF)#+@^yq1*Ckhj;=UX|uJwNWB0}BE5M{3Qx1ddq z;Z7s<3OHn^>6&d4;}q68rsj1D?;Ih4+37+Ex-4pnlb!0CE5pDsJk2>3UGFN;bv@4O z>|na{CotDF-`ox39K$o6C*VL=k-1;M9H*1a3(T;9KIaLf5!ZR<{&g)h zmk3zw9E!HNip>%MS2zn(0WLNDkmx`(^G~T=%gplxT<82NMJ+d%3RvsB3axZqV6KFfx=h0Nb_Ba?m57$`Yy-h{k(mtkxZw!TQ83VTu~{H6!js<^c9oeIpokle z@Vpb=bXAzl7;(c9p5G%?xYme^;)WwUuc9@VnD>A!ZaBho0rhV*OGQ7z^GbT@QnO9u zKVv!{ri%mO)41VB5YCj>Xg(zLW2SQ&>u)ii68O0397O)h&AY^&u<3k|p4(=AFYpP| znMr%EFwcj(J8;&9GnC||ANV-Dwd#!X1W#~sdVY0otp4m+IF*xoh` zpKv&*Q2(_Og=oLS`3>pUn+v4Bn&L3TIAR>BbnAvP-1bg$RlkmyQG=-Fv_Vv(2a#LG zg{Gw#jwcy3wZG;F+eUx2eu3LW=QsH6Bc{;3N&Er!HnJ^ZGjLWV#-&+rW&?Jv7uHLKbv3kIX|WoP@iZ)WjWFCG3~bsRF@|JD`qlRf z!-K*=3D1xr`U7j(3ddBAnzomP_f6p?`b+#%hEcTP@RIA=4&h3Gdez9GxQlTmDb|5- zitG9ekP@Al!b;`yPG=PdI{K0IhGoKfVU%_2>8zBhJ=4G*zp+*LLs9;_qWqMqSQDKx zi$BMZ`uTpT@Q75Pw3nh4MD~vnr-ow(2(Dj{)!||yxa}jU^?9^bH@HAGmUn0zD?7GR z!=5x?5}iZv+egMzPLx+P&_biAiKDByDcYnmpdOuA? z%68{7u|A-n9QO;1u-_=i=YEBGX&=o(zIMMs4Zl;CtuT_Q_&bnf)-y3_QRRbdpW`OV z{6lXzE75rte*4HwJsEe(O>#%$K&J>tJ1gv;EfwbB*JWOK8nfZZ2D9s5YlLG1ewD~8 zqg*O%9865dt`V*qqFl_&N->Q`FG8j3<=+X{fhgC}D3?eT)_ysr>(yaBktklEh3_UK zj5yo=lhAt#a=ORUq33)x*zER*_(><3V^{oQ;neKnn!2c*k2Tb>C1iw?@LDPLR$J+M_e8zM? zPq0IQm?vk^41D!V%)&f*I~ALHp2s|SD6j;b(ULd~W1j3uyW=&CdGc&JBtgTN zCq3+*L=9t}oI~|44P&0Xp7bOQW1b9Aeh&>}p3I>=JvEGZ@-V%aV(PX#jQ)Pan5&n` zP)jRz^)_EXFFRl4?A6C)8s}c)3mVl|gm86sDP{IE|0>iJ=MeUGe+{NNe*v^B&16!> zuy@|b2A*Xy`#OfFJDW%yU^2sUb+&+t2FlPvh&fkM)L^a1=UhSChG@xtqyILhm!al( zn3$I48fK<|-FX?UIXi0WYBq3q)YkR%*9enonv3NAM;XK;&6g=6(>2;`qKIm?FWtOX zm<;D*lsLv@=4EqdunRNHx0DFyC@L6h_Cy^nMqj1L<4h+^WpnEpTI0=J0n?5C@3DU- zn1jI8e-K^aHGhgI@4uQ2pJd(%e4_K$lp#x0H6irpJBF^w<`Y7F2EQt|yp21RHRNtJ zVh^={hu{8xV!ux@zmyu^N)6^8t|wIurdp%_1$2Lw$pt|Fr|F8R=4h}aI>+NzDdCbc zRz(~10L5pUoXz?_%Vy-5Onm*rl$UFA-O+zKjh<$17J1u5UKMn5iK(SL#hT}sw+P2= z!a*as$W$5$B}udT|C4<(T}gfr?QzXe_h0dTrpd)g|H*8@xyq{j5aRNw`#-@)RY@NGE_Ye1m8=+ zf5%UH&m^wJMR3m^T5w=$+>7|4ZuO{?47Ij8t1ecbc_|J%NV0&thzFNIH_?DEEL` z)ava?PW#lVoqU$PcJf(PZLWbW8ao2e09L|aG?Hmi2LQeAbxc6-CVL(r`D)ZlN@e6b z*l9`Q==4NqUvx!pe@c)0QHs?mJ?(l^dRlr9!2>C7Dqs)h6B2dM>wW{RO-WHSkNY}= zSW2pb(%tg^I_|BYO!py#W=bCg<+xA56DfTaAm_h{hY-RH4~k~DJL5Z z>FJz?+eD`iziQwxB-EH;02q!<@Mq8NrNXsFxEOy;Q7)=gM;Z>sUe8{PmPF@8_#IGE zh5vVKYDxw|+Pxpd)KuPbz+4NHQhT>z5OKi#47R3f*QB@$flcjaHEsvSda6Vp7nV1n zerlScrMtg|^HT>XDARo_A?=hL_v@6Yo#Jz^g_Ws8)yVO~yz62A0Q~u!u{Sk`Rw(n% zQ3e_Ar{J2@=}&9(lHjz|nPX6ezJC;puhet(Aaq}bB$1l0ph51cjfdoE%mb%}x+-DQL>q@A+dT1GJ!DX_(K4`+Kz$SbR_m)Res zRl_+~_4PXYwOldp;n7znyZA;neI&i?sHauqZ--2#GuI)XA zw*&7*fSAw4$wtQ9+8=+#@n^IJ7`dMT7vr8AhrxKt%X<#qA;ZBq^cE72#L+@yNLCc{ zca15CVqVdhl~K&A8nZr%c}-zFO6nU5g1txJw}Cg(q~-B)8e!g#I)e;26&SY5GxS!H zFAxCChhVJPH$gGKL}qDG-vqX3a5-s`fQA(#0hoW1Mw{P*cJ_aWc$92sGpfx$Q@kLa4|j8OIr ze3^P2TF*UEMu%d=OCY3LdK^kmU}LRe#%oRe+47xQz!3--j2_#m%zO~zM&BDFE~2LU zO!EWqj0DepY_l=22irfyRGy2+YkRCeL>y#{>dj`ntpde*?(v3xBIMZYG;_c|T0H%> z#E!YlNdE<92J<6T=eXv5aVXqCLK%wzWMu5Z&r4Ct_d+QX%0W<0L@6CY;s55s7$^U4GTdy_ zwkk_Zi7;-M@i&^E(N~|xOHf!3yxTQ9-BEy+DR+DxPw&DVqjEV%&Qy_LJ>2c#p*W05 z)cHxY&P?evbJ=)A)J*AVbLm(KbD#9}2^ulV#ILzl$xHE23T*dCA@V+m%3EubxAru7 zRU&T`GL|v$aSp0EI({bMEjAVCb8HbbCmMirQ~)CU3WPqCxyRm-ZZZerW;sGFb0luQ$Bp*_Ehcdu{)`65N#@e- zamP1ktoMC=GXms4S>!SEl}f|gUn?j16^p!LfkmETBY$I&lcTj4*~n?ITy&p;D7hwI zY9k9N(-Lfqx|ppUqB_TVq8`-z>}r$T>-`0rvYGNz!rhlpQ)0w~L3H)l}e)Xy*u z%&%1zwB9xNyOwwa{N}N!$gd^l2B88)ejVS2`bz+1@7MgxL}EAAs#Z2yPuG*qR*mCf ztC@ktq%yKvjO3r*PL9_c<&Yt*o?-dRNdGBjSMza)q>vQNmo!{S?8OumhcqxoBKdI# z2lg=_GfsfvHmJ&}Gt7Sq`lrah-qBjXl~8mo$dk-vrq{@=(P)5c;HW<-43HE=HqrkSp($TzQiVx$8rw%ew@A4siBH&Hpz@%ig4c6BM1EPft&9 zNGjQ*DT7CXf~yZ_m!BZ7jCp`}6Qpf3F=vly;l!=rpA$Y0P5{hY^B=+$aZ&ifo-pWh zSYc*L{f7Zh=L*mC3LJO+p6%2B3}h7Ew|%;g4OVpcW^6J;Ws>7xNXc=ac%RdT(tSCw zkDalZ;ShKIzU|^epW*#RGsPo7YBbX(GIfu;K*tPOF9&L|V;g=~IIe(uCXG;y9}b@E zCJp2f_^}2qX6+fTVr^i(BypE^ST4anS=bmF>#Z*{_8h(viq)RVrq@%_QsFAxsV;Mohet|}m>#~&W)44D+3VW_1M)V2JnI*lWX64AE@gLqVJ#wSBG(W)1GyK9_@8 zL;JQDNOb;#!Ff3r{RRBwkoivzh2Ih6$(Z>fK{pmY1>G3wFH!I%0R0RN^O$3l((m8M zKtItwT7iXJKpxb<5sH2P2IK`FZ!R#>em2X7wP^2m~XttMZ_ zSpJy?f{f+tr?ifr0Gj-!2JQlYffbwX&>?0f*uAORTn@hjPy(*_>vwKXWRG3}Xpv(( zgl1_j89U1~z_F8EYomB~Xy6bi@o>FpfsBM6_)`T8=EcyNeYdT;_b(dw5H-d~jYSy0 z#=Orpeum(d5tn_pZVX5Byh*yz7i$LO?|Jhyt}a$7_X3Txa{Sb*n65U($;4v4m^5{a z>ZBfACk{Yr7{fCzaPc$MHvu_jr9)u$^$UbQVYc2RE4@Svt{g1W8wENS(7flh(*Gz! z5c@PKvah^L#YqZRo|5hRdUXh?S5i@9mPqVb>@&QOTmx7R8p)r(XOuZU5noAR< zLDrj_Uuq6Fg2ns;8zgJvrHO1nHIQRv7FaIuJ&dT|+hk_{O#|$1W9rMu4d!H}KrN~< zP&1UrUZ;X@q6#L9KyGcaM`#XZmZ&mO4_ zklAMfw~UrA?$;Eq;LSh6ClgcPov#5+9E6)6VP!cn9XCC(Ld%?ln;P7V+ofw+wWZQs zph%@Rc*9Elv9$RCZyu#gzFSM+>K3E6dtB23)iVChV24^Sn|`G^iy_P$jUhR4A*fFR zns^~@zN3y~n&*Trg=H$%Ho{Vao5`PaR%pG{3Vjo}xs|VoptyP*esJwYE%QCTfK&PgURC^+)pyh8|B_J z9Ba>;<)t+YzJWbZ;UOh#msWb$cxA;eVZ6B?V|C0}=75K!&M%R~#~#5jHy;r=0Xax5 zA|DkK&H=oDetc0&Gnm?*GlxUYL=)Ct3WkYagW)FJ_(;v{2{hMfnP)MFF*jurJqpk& zK;BQZsEi`R_!LM^9-Dwq(S~xZ+8gpQbP~4V6E|mbPS}K-K}Pm3G>^<)hH)NEo2+rA zH0^Jum~{gbiCIi%K2pT2c0gj*FbvIc#k%5;bSWmD4~ln{#?ZtY#1zhN#^kLUPZMe0 z<;Esu-W9mPz`?bU|BC@fy7cEh&7M6$NJblEoBTg|7c)0GGFAi4VLP{Ob*o5qXNm31~Xf2+Zr}-Ln zc?>#KBK=Up=NRg#HGI3tWzxR^8#Axe++XRE>1?cQ99*)IptWOVV}TEXAl)q^ENiVE zvJ+?oyod))uXhq;4s%R=9r&Mu0eTE={Uoau&@)}q{D0KUxyZ=grbTdI7y~a#LOYAp zKGIx>I2|Nr6^R*xWLhthz007A9>U2Pa=7@U*umaZ#}SK!XUI|L8|tOV8V5Vm81gPL za=z3mEXI(NQOpjF@j>lSY5h)7J5(&bTHVW>6;k58WE5dPR#iO;x>-Ruq1?lP{(BA1 zVE_5FE2d7SJ%;gTc*>jr!#{qCn{08{V#Ah4?_6?vGKLvh7@Z`B%JmR7vh9E{ecHgXv_{{tlxDJAn`|u>; zvZBN1n;5wM>m`yP#rO7z5Gr$d&1gXJtxGrPfxoxJIdo3C+`Q45~U+saBs=ADR-Di9P@HD z&zn)Yk=w^6bsOqu9D(AQ@N;G!6eoe|eO9yZDB>(oAljT{%ejp)2on<0-KjJTnQIvHl?WyAa>%z*d9Dqc_N(i{>uhg{5p?~p5lpUs)^!7XY{@0D%HPQr3JHd)}W3GT(bwN7X8jTFz;x^`s`U)+W@-zD`>rBk&;& za0D(ub#kfgs5;|8q8z1>Ia{x`80ZC2$k(IQh zBa~Dfzl4%*0KN?jK7OV`phFgvc^hco0K%0$K-XnQdM!Z=>ur#tLI;t7u%7%ie8Y=l z0R(mabEyt8?rxt`HKM!QhjnOkFfo7@%fMQ}lS!}D__t8+6Rk;tObro%JG4C{kF&@r7J2gTH97ippvfW`1Mh$g^A`QE`8L#50d zjBy-hQftrJn25qL^PRiZ>y z^|@Gkj!Xf?8I79hP8z0Qgw6Dg6lj6P)3;+eV0Mq^YXN5Q0*2`Z9k-dZuwVT57&#L; zPo0GDj3yxO1Sa!(V3zsN+1G1!$&q_C(19*k4>oo-v*S{(7P6nyR9P&H)(shish)XO zb^qj98qGrqb}~B6@a==v%=OUtFKEo%jGMFbaMO&N6}ZXHP=P0_knBYom;%9*FVX;` zkH$zmn3*d4(4OOvoR)3P1+&F#*FvO`k%BGrq$p*MP@WWu50s)Pad)!lcj2PbUHMtaI6Sal>d~^t@9dVKtzYRQsvb5buh8~#w$wNyeFyVpi^|bWn&CBFI`ctmLvB!`sZ~bPE+AEo-XR`; zmawd#t`gWWTj$CfwG;!>g&B(94mpw?&jEvv?_mmbDWO_Gk}K~4ge%*s%K$afFLOY` zZ}me<1H;kgXJ;mOw}Z z-UqaZH_&f4DxU6f5gk)_UZBZegKVV#k_qc7l~}DmT584<+hU&MgB!~VD zNY!swNfw<@Xn94!TLDj#MR!o>h{5R(qLp|}lM_CkkWNn`7>c9h?s1+fk0@KfQ_;ab zxi@^|xIXS#gsvQ9J`JIAwD~=6Qqu4>fB45oHaQf%o-<0VuDnB+!gm-Hsreypmh({b z2Yl*4)T+hFNt|v!5H-9#w9o|1Ny#uAfv=}c6pJv{y2pJK9kz>O&Ek_uKHXf&N5hjZ z&{Fu4gBm(ISIUd7xsWSwjyjB~e@lV~Zd8v4_UKv2k~!4qeCI^rf=B=32#A!Y3f5n&)O+n)f6u zg^27X4a=hi@8ennpK)C(8uS=|oZQ8l)k;hg*yw{AIUG5L*W+l3`2;e6wCnL=+|UPw zi{K>M_o3$BLnmFAa6dWup2^o>kT*~A7vqNSqP&V5AKB#flLbp~!`DyV#*H@~a|kbb zq7Ou9Pk3+EczSQL!gr60y?64Mjl9?*$KE@6%|^b|B1ir2{l-S#Wszg=ot&jT5be3x zdnd-^w{^2=ur}66KY!A8 znXh2S3evIESKwxVvbw%P3qL`pznHKUVr6wbb0u!Ly8encTwPyq0dBauUT`72Pkvcl zk6#506XPB&skl2NRmU5Y#FMb!f(b3;|@51F~lT#SX}hXemc1Wu@a~ zq)pkmFDQXWGVoV7Mh8&Q1G0ITKzN;YK$Z!vAwEdu0a@;!Fk$erVl$%@pn*(XvjzqImd)@jj#jUWzOad|o|KGBpJTy(M0E7+v z)rtI5%^w3AJK6+SNT~k-Jbg|);A;|D59cM-9%;)0z7X+8zue<*M!@l6;?H5EkN5IM z#L!CId=9Qxy%F)0M#~!!FKR%&5%GvtB5y<-)qs8@LU~WN!ZTke zR2rPRwmBOu!-M?~q$R(F5#ARy3y)Tg!2ms|yeBk%Jm%FCf?p(2Yidze1bDB~4qXVw znUD_x76<4}Ug*c}aZObo4PYXaS0=D#h;!lp^5y-Nu6!9P*Q&~D^Uyu+yQm1PJWguB z@II<*{2Vo|v($Bm@p5^O*vJo9H6^1`s!i?lL2pxzBk`-<@VjU|yLC zO!v5*H6BrU0iPAFoX>R9tSC*IvhofhTNSd=Le6&pc~wAU)LJsQ%~-j-2PiugWu3)- z8xL=Gk={M7)I$EM7m(L0WU+;Owl|PBDx}XseofAs6f)C7en-20tdJfHc`y;kpD1LC zg}k50-3n<~$e&QrEed%;XUdiQ|G=5ID&%pEOx^ zSjP>Ya3vbkvy;K~cEV#y)_TP?{eHUO^MqkNX^3%&#@_7&wk%Oew33|cbA}=KL}G$5 zy}%8wOA>nl)jiHvrRuI4h%QRFmLHli%~ef(09>bli_U>Xu7^$jEthFtRMr`U52XX{J$T*21y<`^k%5CR3OCYQ$>u8yEgmY@@=Lna@LMzb6&MycZKu4jKFo zMRK~L@|;M?C^cULzTYC#>LK}F9a-@5BYzrlKBmM?XRZ4hps+5o@zO)Se42S`>ij9ZsFt!3t~khunIlka7iTy-juC1x}5XAO;41U?tD2s7yO zOx+}=bfqlj*;4Z@u=IP^H2HK(RVy{`MpzCWVVYd;BuNyOn2G2C*T1wV9{(#*LM=5P zWb|ERnmm;LVH{1ukQ_KgHJNA8F)Prhr5Hy8C#p{1d9oFn{9mf{D>6-9aj}N$4f87S_1>$ z0mmTq>XgZ~&JUZg2tC$E`;04#q$>908uL#GyBveW;0Xlms z2?>S0bI@PiM;TP;2xG9JkyHSPa=a`*N1G@Pd3fM-o&R2L&b?u+-np} zPnAjumeSt6O|d{E^r0?QsV{^%RdXn;AJ|w&*!pV|U?_5g79dSH3!hPQPlwM3K#Mab zc;E!IlqxCSBSHoxL|cn74uIN3;*cbhW)GcWV?Z6mhL(~PlXA9Z5`PW{5S20_#;g>M z)H;N9l-(e9;s2=aTj1oVs=RBa!cZYRngnD-)aE4vl9?d{2!udhBuplcPG&O9#7QbW z-90l+db&IP$YjDJAwdLW*MzsaW&--{;+iOaDk7j}Ss%d_jpznYfxspbUBxgwWZhN1 zbM8I=y46+Pp!@yy`~ALx^!?v|oqO)N=brnhn(nHZN8K}9x%n((S3NbnDJ0l%w-!9x zCrJH&&V;(<4Q%&^jotOcpF4qqWg=NW*|d=rH#gUvH%ZkDg)K)|=S|`wty2Y@cgyBF zDt(^n#woXMrib_(wQV*PJ|8FO-jz=+mA!z@SjX4hHT&rE$d(Jk)=M)l(sC>`&A5$g zzgX+0+vYx=>YQ$LX|qMsrM~u(*bLJy5x7iyfPHhh)_n)JVJ16_uA#ZHbgx&RA-mPd zIi42u%UtChDtCq0p`xI|f%C**>S6Zqd@+o(R1rPeMGw&9sWaN%PhMR{26Rv8QQ^2i z*Uv__H%s8@Fr&*ruKE-jK#P2(RJueoi~rD`Cp_DJd}O~w5b zwXT%QW$0lalc%&4a=B7Vxmak)r2AS15{Z`e(=K!`oH}_9J@tM`$K(vXt9X6O)Mk2E zYfCzt$dr>QONmRSrH>v~UcppkT8bldmg~)r(8Kk!Es6Y;izf5OP#OB<)Rg9nEDMi# zZ%&Z$@=9ViK9sz0s$0&c*EbJxi|BR9^w@pE)LOdBohlNfg_h`ajv!qpP+I^YK)p;F zNJdNKNAkHsi7-W`e&Msm`W*m%rdTSJ6Q!ZlP+zK`Wz-7={37)DSASMLP2EqZH{$w< z{7536FVgeNwZi;}dPT9$crF-Z7xYm_`Ad4Q??p-a+H9`C9-xL~a@hgDaDIf$)~Diq z)DC*Yz0M`+!R~&+3^~T1AIc?*<-GAwek7UdD-Y+utG`=ul6-ec8|t7|AVIFnXf9-XZ+Tj^Ol0_^clRN&Kr^cl!5Wbgogyy|_} z!($5Do9dm?q*40^R{ta->}~w9@Z$19`^@eDv7-BqZ*iH1v4$r({W*VJv8^|^)sIao^NF{Ici9gO_uJ#^Ppf-lREh3saE9CM zQ=RRv^*ATKX%CDQm#iH=c*Bgg3!!twDQ$Z~Wwtjs%IF3I6z{ayAMCfw&Vu`#nfBjr zbhh?PpE30G^cjO&wzRW=-Rex_)LE-Oi;8=%iVXW|l{iIvo-^@j`=KM8&6A3!Iy0uv z&^0;R8&u;4re446SygVN#L1|=W!yfcyn#gS*j4Vce^xi9LXe5uoq-h#H~!x49rI*v z-&Ich$C8h)e4UFcneuDXXSBAzp}c<3x!vBNySAGi$yjb{@3Mb&UH8IkFKO2rnj3Vg zBkrKG?q~M;F}vs-&}T{wceb~G%^9(;8e7!+!*(g>m)~S>7^8T!zcNyPdR=QFU0n1f zHYRpxp54B+ZP6u{wQQR{<7%g;-ELVh@9y>I*jIG7EwX2Hx7c&`Jvx2H6h3po0z13U z?%ryj-#xD0e*Rh~`r}FMJv}{_k*4~FN7Sdo-Bq9A4<07<>YPI6W5x+~-f5=38MVjk z6QjlQjDcIXZ24%9ecXa|)7ROJmzK+R|IQiqahvVJ0{hs_?OQ%(Z@X^6mM!*c^_%Tw zJM9T2d)>~PD1X*w`}BRzQmRO~RmWm?gB~s24fatx?dPp#`x6_T1@_Ob+uZ)Q*VtdF zU!cS(VvltuUQ}K`u-abVZ6CYGUb|r1mxrg9d+bQ}IptmDUFRve?gkyKB){Hygn0Yt zo#iinfY zH!ffU`J{dCMim39w)M=Yz_%}d#9rcblU4s@J@NysRz+b0MLTt+z1vbzOgaa29qQB0 zjoB>+MpvpxsJE|Dq3{@=den{{P$DI1*mjj0wLk1^c1|jM>xy zVJSKL#*NB-_J3L3_FLBIJ`?hP<{APb;oU+F*KSCplt0d1myp9l1pA;tARY&oNsIw<1 zck>)tZ|4r!^qAnyAIoi7|J`l3Ph0H7oW;6mgLATK0L^bYu(mhIj54vo`ISAoai24} z)j89?dVBquC(zn4!D+T{sJqlo=t{RXd{gP!*RaAq#p%`yrE$7Crzehw8Pn9~{GiAq z(r)NipIoVJ7Z=!THos|~PwkB@uv?q$wU1CuJGn@Mo}p+hd;5CbCH5=Un7w)9nEi!~ zV_*J=lG)kdta@pkee=d{vSKsM8yTn7{-s4zzJ1JgXRdwR_Ofne_4VCb^RduBqqORU zMR96Os3sidQ?Gg--fF-9`Z4Fu;^MXK3ws`IZ+FVK+c(wKpHpX_vYBP=1!G@&wEdFH z27dK~eJ9Nd<>@o*Usybj?xlu2Tjv~@)PBins#cnH?M2=8RA;ljm;%T?_rOd$)^G2t zAG>4i>GSpQ=x%uOTe{`l4Nt`Et=H|dU#0%N-oA?_n|Axx^;G5#B44N|~?2b#T>|tKBoPI}7U}FtG z}e{9@vkJV8W#>+}5&v%+B33$M#gtu?Ov^Xc72xeY5?* z$e4e2t^d$TJeT%5C)i)K$LgCn=>J$xQNQ`R1tfo|{iAi1p_%nD`|SF&>+IzRXe#8n zazWX?VVpD3{-J;gHp|B;Qus?GfkKX4r6Bf<4pA_AAAH-h7PSdF7TH?OTrCT>e9kebgR%U8$%1nRfNh*+u_-)Y-L#wivRV zDK*$%`_UUJye){LV_u3m4e9qp`Z$Dhz^V;X?C(zYguFp-EQbU&7 z?z`*anR3c1rZ=Sc^2Umd%*n)y#U*`LrxGQ)4vHt%xb#^l@udy@PcQaLSXt7LrE9@N z$}OaZ;^}NMRbVoi=GU=VEx7I=ZHv^4(B`K4E!Qn_EpEvwE$7 zS3S`?(Gu1gdbySBDRJADxW)Lol$**XSvZ@^Zb%h!)_|+uq@|3csyfsKg4>oYr3%@3 z^x82^(3$!2;y1T*u#g+pSB5SPvBE>j*NAI3)9 z&O$jw{YIC`BussoE-g|Qh*RlC0$Vqnimy?ZnEn0ygi$uD=nklmr0Y`BQ{ouDqEK+J z;@()E<(J~c`!cFuv)tVkEtn@SS>u+ZhVrEmieai+#hzQvC+Yo!UQeV-6j;hb6nx~k z{!A`cK+JQ@#S0_+1~S$~BZeP`I>ezxu~qKl_Xg&95YdR~PtZGFRIvCuh7@8<$ve_U z$W+~UcUCf~gLzIaOKzp&bf18NMUNdl5@qluGOlVS2joz^u!c;Q;O$72RPgdE<1%!o zh1|40;daufCwJ)}Adjhm3`>ZOjdb!G-E^;8^hUcu)kf+oZ&b~SwOIpc`Yi@|i~6$6 zrdetvD^Y40*+$p-q)SaMs!s87HZ{zRpdL@bmE>@G=8LPQqdZ;nmy{MAP5DAIOV~v$fric8#_M59CA+BPvpC%e=<*dSh8;ci;Ddjq=xRyFSpCS>8 z2YSZ+0FB#RCMnianCmd$&{AW~7Yg~@u8id_zY0=+2E%~KcqLUVqqG^bopQBt8iAE!Rh#!6(n`CL)m_sd!mfO=)r zEnbpP(?HT%moAbC17saV8pQ@%NDimjoqAr{ky8Pi%;fT^Y=0(BlOpx864sHtR!<6< zv|epc%34Q`;b1AMGvdnmDeA*?VwPGMWkj>Wu6RK#*K-X`x4As=JoU{>l@f!rROAb) zLfr>cjhfqJK)Z`+*%ZG=l_G?2rZ|}HFVVR3X30GJgkI1|%Vlgtt=crYY3k_UdBjrv zt9K7YD=TA#W(#dih76{A(Rw`7>NrI2Xr;S@{xRyUhhz{2zi(vms)_nltm_FTk;{+x zwead_h6arbuYR*mV8u*iaz&cEtP;IU)td+PaOK#PQBF3{%Q|IX=%Gd1uk1jEH&Z+_ z^T?nLhQ&A9Y0gMzD~2tEUUax5pqWGG^k;iklGR_+dYBE_foTRv3OZH?Fq^&7?&*ps&L7DtVi3=IVCvs^YaVkOH% zLnE@5>h6T&Fjc6*-N!2hHlX0`>rwSVHqd54Et`Yf5MOx8 zaG_<8Cm9)ZaD`q#>4toQg4Ne=+%nS1Tak=4lu=tb-_Dfx&)ztuF5s1cH>9LO+OKw` zyw%ogf}S|kPEpPN6qp=k+0=S9ya!Y3IaU+2$E0<&Vk@ZM-K);hL}`)NDz>7Q+JjQP zbLL?Kmd?@}lBusadTFFoY@^LI!SO<^qy>O>zqAXsXq4-or$t`-iW}zNI7!oJ+G9`7 z<~=E|Q5H=gG~3XI(4{?W@;seP(aHHbnW~cuNS5|*G>Pc(RV4ekuV}?ctLcq&4|24q znaiD@D)Gev8KJDr(ejX^hS8u=2J$pTyC;7MEK%%CxhNW-043#d+EtbN*pJlPw5k^^ z-WqW*%akUOu}IH<7>c@T&r6Hqv>wpzUQgSzXxdEE%ZO#$m&m0G33jDRgO9ERX%zD% z4pk{tEGwz|pKn!=f_gbWHJXFP$qFEkvDatr|MXTv=`E`3lQiD(cZG6D|3e_ae)vV`vO> z57I2DG^j<~zro=l2t$=WQXH}*&bvcVrw0RZBjM_Lr}Qd7Edp z{ARd&drltreYD1w(pj}Pz=g4{qT;ecd515*IUJP9E>CqdZ>h;5sfQqqF@0HH(5tNO z|7F^-Vj%zd&l*tnnJL3R z#n9w3dLv4J*3)!CCQRP*QDiB<_ocl}jq$9WWRz2)+}{*6Y>a6+#wsc1b}PLDv?b0a zX~9kLMwg~kYKZoPo=Rv#kRgA01Dn+GiFtabK;u`%tZaDQb?Qaf3jxx2^pw`eL%bz^I4901yr=?I|ywE94 ziesK^u-Lo2XU^s-<1$OA}`_ktX}5%8r;7V7FqiCf~tw4g639rgKr^Ee7wf- z^)ZR*`&i0W(%Hrft65UibWS}>YlVs%y+YG?=0@u#xwOXeBQGc-)m~g^B z$k(dWCd5ti97aiaI+%-lc;B6kY9PrZ>Ws!T-6ATS7v|+2)hEBkL z^r$YtogNhfL}%1lU4UpCH=uJAIe3`_0ns)sh#Z244qf~pVm@f@0YtIto{vd^r9S1r z-G++*mxQye;l1>o99>)4CkVXBa1QVt{=&%c+fezSZi)c!Fq{M2PT#}jL)EOI`9w2T zN?OiG7P@ZPbPYH!$L4Q3JDImO5XRQQ;LRP=Dih6q9OyvRf<2~z_0m9*R)+#{1`ejwr z({pPokBddE>#2`H$2LRVDe&8ds#HTSB9l`kPox8iUNls&)M|-~K1n%dfcp&>0lwOB zjle%OTom}{hHC`=rQssL`wiy+^ZPdVAX}oqFBz^8_<-Rezy}Q%T1?T_wIV}d4hXYp zwgG%zq;!}g2YW~m5LIeHZMykHr6XRYoq+HQ4H>}aJgFEUYS!ZcIrxCe0{ZO;@2FtM z2Cs&tfanVvgn+2L&guk2&3fP<2ftHUK))SJLp!@`r2dVb9Wmo9js8YXZL2N9j}hSG zv$aKV3QhWJTBntpPv}B7{WU#iv}gofh_jj@7cBT?Y3tW&xA~vt)c0$PMETdrbetwB z4|w1+3>N|Zkl`AEn+z8PKHG3jz~>mQ6_|hO&j-~z4fyLaRB3VAREG?|nj3<^j~T8N z_*;f+0^V)7DDdNkYXts|;Ud6$4CeqJ9ItIr25M+Nd!frtUI(EJ}8R5>*)@S z-!sLsHqXM4$OJj{0V4uvO7%V=XP-1ufX1_-{lH<7eoIo0aNt?=i%dR!#Tj44A-hPn@`w#r`SOa1w^rTZs@1If}Mb$_o(H7eqG@~`d%?GDk;Ul zX#%Gh${4NDYf_En6A?JxqdK5ynoxW*uTAiP5eq7RPL!h&5L_kAM>_`?c8McNjb>Z8{D2V3MRSBTKVAvBVh*r_90YHDja03rZ17DYvr(EC& zJwkyGUZH>+4d(z)HCzPv0>jCUPV3@N)OohZkb3}8ta|97;D@||oq+y=VfVmNRPz_t zh=QnwIt1{YYn&-2&h_~L_*%n7fHxV=0sevELK6b?uM-(+5#V(~X&)l@F(U|gTZJHU z_ZdOJT@`}J@jI6JpsE33arN#C+uT{r=FU;re2Z5@Cm^ik8ahXj+inB_VWk#C?olHM z=(jl>Ij}kF6L8Duv z--suMy@IR4xj-s{!X88ip2JK7WJK&f6s)hY#1x^4A- zkxqG~Lf5>gE8>ZC0vbhKr_0&NMhejA4&AAkD$+~5QZYbNDs-QqDAK;p2sRZWn?1#z z=h1IfJb#Tyn^IlqFH_^{y|;K(HHL1hdw zlZ52a3w(m%ntC3M=(ev)D`-Ur zeAc5n4hj5wdipFMG+GY=(!)@NdQu=7M^b?A6T9@HkK6)bNw7!YT0=b~aIc|sRpv8n zeP`JEUNqzvUQe}-qD6P28CEagzj#y^AR5c}Vt{||iS+`0)$>Ic;Nu<@1B9E@cUO=> zN7GgT5ME-Rb&euueAWvH-_iXYK;y<i2kBdfYrLL-RpoZz-2;>x9q`ORK*D>gf4q?=_qm!dpbG* z(ZBw_u9IHWg^@$wQTPI443p`A=r~;#IrJR~0;2D#j0Rm6J^2~0k2(Oq;88I^bTX*} zL?=_FfdA?h>;QaQD0TqwSzdp40HTkp_jiXGq#B{W(W6`pgK)a^0&_PBe%$Ms7@P}7 zu~8k z-e$OIz^BmT$N8Ym$EG@DP7{(0oCbWl;aY*uG+Yz#S%!-OpKZ8C;13%v0^Dji2l#H` zl!3_HV+5xG-)p#5;7=K@37B6m!3S^OfVUg25qO8;BESzA&H?Utuhypw)X;pQ%fBeD zr|lac96?`f13XvM^K!C$6uH}lB|*UZDg=@HS9)6vA0!C4lb>Wvht`PPW5SXk;IYyQ zEr{I7!jd2$nyUr1cJq0rn6Sh%B{nGVRzn$ijc$@t-}Xe7e@#q;edIV8b%JNq@}Qz0 zi<=L5?v4Q>#_B8=jzzB$1sCq}d>sQsgGnk_-Mvx`#t6+X(2b}h3c8J=&>}M`iZHNf z%7G$uIZ;rQ^181JJ^GrV0LO`&c$tOkj0vGd>}z5I#w@KxFae{4D46h^SKmrN)KR^@ z&?*My7kD1;0Nm(N-6y<9`+Tybbyjz`z_g*hD)0<1e!3BWD-8u-A+$(WutR?*icp$* z58;c_L_vY^W~f7RQtf*^KlP%NiRj)va`tR5qI>5HG`hnJo#=kcYg!D@7#SMaz9Eb{ zhypa#g;uSpV&o-WQ(}N|kLm@y(W7D?6?m7S&~`MOuBOoT$(|2lfH01vf*pk+U>e*N z6v2G+fN>ML;OoYsU@1iNE1pOwa)Se`%Kl)rG^S5dUg?3?8ZH7{FkB;W(Qr}VVZ${6 zUr8@m<%8Cr{T4E9LQ=&|zzYl)1zu>lM&QMUivY(A=K%jeI8`w+Pa44{;2#+-3cS~F zjlfSCE&}|F;T&N16km%qG@o$&pty<_4nQ=9<}tt}qF%3N$f0r)1pH}*AabyT1dRn6 z!H%3~M}0ir9|uUjpZ!tabKCT5nw&tj-F{tosXOhHJ{~mb$2EXN$itmz1bB zfv~%Z17J|rGrDyYc-T|k3FViFMqWOEO@*OZX}xH8*wYk)O+B8Op;DjuZJmSVs+ zqz!r;BL^c%(1TK^7OayTEFr<59XqA|OQZ%8SuSn%bpBtce_GT(=QT41IMJ)I*A+Ya zC8g_4z#)(71-!wdVt}`LRBy0>pOMylQ&Q6X8Ik^iS1JYwPtncM2Q~&(T_-9Id8)dg z3gxOSmiL7WSdLPtl{!CI*D~==((}^tD@4&^uli7_A(7r_N?jn*m(?zHvq*o+lsZkM zn`@W)tVn;^l$t2gAE;gG5s}_wO4W(!q z=8KADr%B5F4E!O(MS#yUTqE!&4HpIel;IkI|ITm`;2nl@fdAQWQQ+?wt`YcqhKm62 zHJk%H{!~jH)HXS*^ZbeSUm#~Fz5rn&U6}xWMx=DeA&0t25b*mIg2=&;D%U!&qt&yc z6AEU(m3Ky)g_4=lLflj;EcoKWnXrK8C0 zG=jerXp9Ig#2ZEAUawRPioR_qwE0;>S%KrfR|>`=>ZrkhsFQ{jAlg%9SVbh{j+c~& z74W%+ivVvoTr2RX;Ud604CeqpZMfEe7x=Y|>iB@96yAVPN!9~GqYiK6p#L43d8((r z6R_Q*mIFc&s}Ik+Fty1mxD*fy=-aV?eqG_Ic%|sLMpC}sKy#k-aY1(l%TZ^e*ylX6 zVxJfIbwdGu*Ha$8=n5JM#!VB$L{h6qfjwgSFWEA~sJ zFPWA)z`r(J1o$_GYXpA9a8ckf!!-dfIZbyEjhh!$pBN8Lkm{v*9AZHyh3Y{x`$50>5myCg4Mcivs_~aE-vfHCzPv zcZPF-|7f_-41)gtFXbriT& zI2xRQ?H<(u2(w8F5Ftu43T(aG6a@SSkBR}l>`@(nXalJSG|dSu;Zacld;eQGF$}sSi>~}f5UK5;71JC2>h7gBEY*1=Kw!#xG3;5hHC_V z!Eh1a{f2XZ6K6;pt88d3kv~yV8n1w83dIEAH$_U1F63Y%2?C;OEr=Wpsj_atj`w?Z zbOLsIR2N{EN5uf)WE$dtuul&yVH^L-Y`IagXitm(bEM( z70U&K6uQthvI`JxoWPcA<^bX{Zss{H`5tYU~Kt7@7(e zN*mF9G79iIIYpk>DDZwm0Y2nW%h8FyGSsgH9`>l%9O<70l9KvbZb(Wg?!qC#FvZ{f zsF*pl8P!zl{=8IOkd(Lnz$L>)fJY412z;I4qQEy8t_k>N!?gnc@=V=gy5YLlLgqOk zc_#(@yy2RF_Zuz>{F31sfe#oi0({7D4)AY2Aouw;g?*rf625AKJJ0^S`3dj7N=a{8{ zKk}$9Kvct(E*(Vl5iKpHyBbBkbwS5{{I+V)tVe0N@y}>P2U9SZ}M`_ul{gY?gcjH(*K9kYPI%- ze@>6~?U%6U?Er9(H*CAmD$|ax@Iugq(Rr&3V^#)?VOnK7gZlna>f>UM35JuI!<=2` zEtajGgE1$w9A;ve!(4FEW$p->fH4%9>l7{{DRaSf2lo2>bFY~DFUDnn{ucaRPGfsO zqqK@=;beH2Z2(5ws3bfZ@z#+pz>|E|BM#6qDhasSCkBk!k;H1X8~sGV9PARJ!VT(x z@#rLyLOak$MAfPeLyz5Xt2pp`o}XjE`uyHPh0K*CC{2wq1jQTPvJ={BA0rjP2>NLp zDm>0BwG<7E87kNsgaal_@^7%8tGFC{66_PJ>^`dOGl;UJYZ2Q-ArMRthwkH?DI*J8 zQ2OQ_T!;=M3V{dr5f!d(Rk*rUL7z;Q>Q;H1uoxgV%e4H4E%4TSV?l4&0&l^;(iH_?gN5!6! z;QNIagdyesBGP|dsUJ%zTO^xZ#?B7k*gxB442aFEU&c@M6P7fn$bi1YTyi2ynOI9N>R5Tr2P^hHC=;z2Tz3 zuNtlq_%*{tfUR@AwmHCO8m=`MzwrB$o}XGrfe#5sJqQTbP(OD_?Xa4=UZ_7xN>`cx zDG)YPnap9rtLMOUT9XC8E$LB~Ju@9u=SRWK@oMP}*20r|u%-J##)ZbfM5*l}NvYu{ zi|>s6p;GlCeY`0JXcTq9#BrjKbOWB^QK5AeZ9T?oYuEb(ws=$w(0C-IXtKEDa!H*! z4e+*=ptr6RVuhq{Ns4ko`GgQ_B|Ri5$_3>&2ywHd&q#`LLHTV$pj-C@$_3@|IQ6`( z&uo$u&r;tZ`Q4HR%j5C%cggv^lHwumL3uo`^{EDZ29IrhR`Phf?0(4y%m20VmOQ&L zCMlkQi3eT=_2cm#-SQxaXC-}J(xCjA!vCf6cu2=4DThbBJYGZpTM=DjcFXh+bFto#NhsDGOLASEVg<9oEk$&v=;gTEQU?+)-Qi=h10 zlQe^$DnK4Tmk7$^tJROn7n560(GoKyjY*1cCkM+1zdZeJ^1-i7zneV1GmCGqcFPwR z4@e=GfTSkfb-S~4Q(DUxc| zeEv_%Z++SyYaW}yyS!O z__HGZe7E~_EwN8h{MGO|$>Z-<3As5H)Q6i_xK=tO7wfpZ!Cz~B_aP}MmnP9Boey53 z2KD1ck0W{`lHwW-_2K#qf2G+Z^=y?icxm*P){pvd0~-2qZ#-ykr`Wez(rYCBgrq@v z++@Su6kJYQ;-8>=@E*oAX&-KX1m%wwzh5UQuH*-$94-}u^};{6a>iwIP(NPLJ8?ZB;qpgiIN@rbyn6_3HV2w znu{Yt^zK+nO9h<{0%dchRP#W#+|2JUPEMwGO{&}=y>-`WPL5=$q)zDt_UeqhaknDl z(m8t5XPgTN%F}!Ao7D?nn@jwr-{yYG(79ZaUV>^hrv~-AYTdykl|@dMaN~tSd_qTKjk};{?$wIt#UbsG&n1c3slog`8VHw zJBRWQOL?R-MP9CYEGJNY8s#U@Ka_t<$|Ie|#?is`vJA>MGD*iw`p3FazEv(`kd8Zo zPWlc}?=e>rdfR6|9zKZlQz8lbQ4do7O6i|{<@d^E3eu>QXZyKs*e|q|B!IRthiCaA zeV{>0qJES|`?G=ac-jNfJ*=D#E`JpL3zlC`9NQ(;SgU0ljWl@GCF-bzK8lq1%jcy$ z(wQ(^IANdQ*e?L&ZQOY;|h2?)n zQT`Sqs!&k&?Hc7@mHJ!Xr98iGIjED1oSM@G+hjaJO;Gma8s)G4mM*dV zUFQF$8s(ku=<@rILCrc1)<0Fs2itk*CtCgwa+?HNP#)>!QXc1#zVNa}e@ubVDawIe zP^0{_i?n3x(U7cO{&=DhJATRWD|GqpK!t&<>O0JR{_=xKEqOCnK*#CyFHipv_gKGp zey&#kVR^grJ%I^4SU(l7dDvtf_A!1Tn`Ue5Pbzua!oH)DA7^1dQOO@+VV_XRH&|Hz zEBPb6^}UjJEUed+{CICYuH=uhu)bFE6D+KomHg2b*27Bv7z^uMC4a29epT|vSy-1U z`G{q$j`}HuZR>ao>xuuQZB4YWPE_)fEX@Cv{0SE3^-BIknx~_FN@3f2kA->If6}&2 zvM|3^@{Jbe%}QP#PT?mB+m>u{LOk!L!-s9jJ-fgu+mg*ri2p!<(OKJ)drg6}wiOL9 zdQKf@y~@*b#le=>(~dhBC+84fP5uJn>#FqEY|*nf(1fdmw*pPLTKJg(eiQL^mhnHv z_a_t|jvwByu>G3?dLCEu;W&Je_-gI?t?1b;dZ6wt;r9#i2Ict}M}~2|`=tx`nuU+! zgvV_?^z;XXk3^N27Xi(}w+i1*c|I-^e$%Nsk7=({_^rav(x3Na#6)#9=;v&JVDcOvreqfiTuq0`7a8;KEQuN^z0Bl*HNC2?~44)fc#HH zK6<8>`>0N={lY&eJlge&@c6d%cV*G3re2YpMY-_{&T`_6&`=4{R;HR_0`8j{#(M&Y}UlG^ z<}ZkRJ|I6PJRW%qKOafu*bg($*Lr?BPNydl&-Jzj^qeVtB*0%Rd^EscDf*++wBEPL z4n8`;PuKY_%Jb1D{HDuvzE>w!PWb)8|62GPgx`C)CiuFBkK2f^qje{mj;cKNJ@<J?dXE==bw=}>)LF~=pzt%-XueV8Ckwx+U-P$#pD%-aQuF5v&tYF} zeqOBPkF#RkB;Y%G6<>Y-P)*OEk`M1I%8C!~E3Q}kN!FnF2UXvy`0&1B2l2G(gpM!N z;CI*He^`V6MGgKB#79H5TGpf^EZTLQWbK#!x>@?=bmFVod0q|v${Kt}4L)6izorI% zdky}6#fSa>`5N*M*WmZm;9n$uq7~i`zg$E9KWgyf>83+9f1X@}Kc@zNNe#ZU2H#hM z&)48TR)fE{2LGiR{NpwFAJ^bts=>cngCBQfb$^~vgFmYVe-ZKW&5MfB(OyHohxlsa zXt0L-^)>igYw(|}!GFF6|7Z>Vi5mPfHTahm-)L=>br8<@Z4LQ9)!--40$nZ6KUjl5 zzXm^B@r|K*b#V>(o*Mj`8vJk#{`MOD|02Fxzkj2KJinQ_njfC4!T&q)6KOxQdcOAj zM`_*VAF@jRY(n_i=|Y-Ee*MeOfE}*FRMbiZZhW%WO9A+jGHXw3Pm?wUT@Lg+wz%IDV1!# z@ci>zNplq;m;Vf?|ETBE-{uM)@G*TV|YfkG;kr5ea=1>JPf z9RN;bQt^WDeYspl;6SRBj~DpQfVv3fRUMKohEKDP5^LOId|fJO3MJDCp9&HwrK|yW zFrH0jQf_K}x@5&hu2`RN=ZlS3FjdUt-9oBJ9!jxRDpD%C)B|J$qeQu&EpxepN`-hr z3ouxd8j;G0=fAm9b*$Q@vdL5&mX-7L2hS7~X`Nh@P%@PNT<+mb>#)r8#2RP%g<8YSScx$~a5z)918plr5CA#!!=?Gpbhh2zyrCp|Zp2Qeu#t zSyVuIpKZ+*(gSHyCOlL5c(E8Sa=>#-dbdFqbUS$jXnnGo+f~k#hiq`<<9L{JZn+g9Fpi< zGzZf27cQASYoWVj-n@=0I^E7$vlm|BQo|RLPh9PTxip^Kj#R0wlp5+N71G%OIv5{GY0hfGLOm%X&&dMg+QzOH<0y)QR>s&;^j%kXl;CZVv-d7pb zo$NO1{X)TAriUcumh@enB0J{r+;LSZzGhjfzex0=)Q~%mI+Gyv293539=tp-*g|66 zHkz9j<&x!0YN~tTRHKPRX3>!FTBKS`&FsjeX>hwK_4Nd8#o`=QlcO2XGh_Z7cWx>} zc{Xx!t}qnOkS}OfN##rFT-H*PXN7ntO%-dT0M`OX@=Vkf&y-W7i2^(}(w3!hl})5v zxPb&1;=C?N&7!$KJFk#4eZsz2Ch@N=qly-jhoxH2yhU*u# z%ARVMzBnU$1o5>Vtz1gRit1AB)_EzOxM{ekf#A+c(m3IfJSV53jr-G_lD4}G)=~fJ zO~#xI&F3m&{Ida-VncZtrTfYyFGQt&cDluLteVegH$d`p;`t&CMe)6AdRwuh+*dMV zejX1eavo0>Ri_HqO{|ae2vdWuG91*3!u7Dh7(!wX4cg^d|2R|uyF6Qnr;BP1`af@R BKA8Xj diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/PKG-INFO b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/PKG-INFO deleted file mode 100644 index 4cc4ba1a..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/PKG-INFO +++ /dev/null @@ -1,10 +0,0 @@ -Metadata-Version: 1.0 -Name: neovim -Version: 0.3.1 -Summary: Transition packgage for pynvim -Home-page: http://github.com/neovim/python-client -Author: Thiago de Arruda -Author-email: tpadilha84@gmail.com -License: Apache -Description: UNKNOWN -Platform: UNKNOWN diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/SOURCES.txt b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/SOURCES.txt deleted file mode 100644 index c8c7e9f7..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/SOURCES.txt +++ /dev/null @@ -1,8 +0,0 @@ -setup.cfg -setup.py -neovim.egg-info/PKG-INFO -neovim.egg-info/SOURCES.txt -neovim.egg-info/dependency_links.txt -neovim.egg-info/not-zip-safe -neovim.egg-info/requires.txt -neovim.egg-info/top_level.txt \ No newline at end of file diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/dependency_links.txt b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/installed-files.txt b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/installed-files.txt deleted file mode 100644 index b1be01d6..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/installed-files.txt +++ /dev/null @@ -1,6 +0,0 @@ -PKG-INFO -SOURCES.txt -dependency_links.txt -not-zip-safe -requires.txt -top_level.txt diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/not-zip-safe b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/requires.txt b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/requires.txt deleted file mode 100644 index a7390439..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/requires.txt +++ /dev/null @@ -1 +0,0 @@ -pynvim>=0.3.1 diff --git a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/top_level.txt b/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/top_level.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/neovim-0.3.1-py2.7.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/neovim/__init__.py b/.local/lib/python2.7/site-packages/neovim/__init__.py deleted file mode 100644 index 31ce7c8f..00000000 --- a/.local/lib/python2.7/site-packages/neovim/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -"""Python client for Nvim. - -This is a transition package. New projects should instead import pynvim package. -""" -import pynvim -from pynvim import * - -__all__ = pynvim.__all__ diff --git a/.local/lib/python2.7/site-packages/neovim/__init__.pyc b/.local/lib/python2.7/site-packages/neovim/__init__.pyc deleted file mode 100644 index 9330aff6eeed61be6b36a55ded479decb3b1b6b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmYLFOHRZv3{6@zj4HT8mIa9hv4I6bELc}a%&Hp`QV&f@ld4HUb0f~cwKxDcGZk3Q z^NZtOoPVDdU!TvQ*&-R)dphBapk=HfnkT+N&iafsS$caak5Woc@VJYe zcS2i(E{d(6ME!1tswg&{34&CKI4KuQG!!-}{ia^A5;cB^aq>Ot7)0p&Y+GSmh^WX8 zqo1M}caAFkr4;6eq%Ju%jS0@nJketUfYxh(xFUW?TinW8fReoIAHoA&W#@^ zmp8JqUMnlDd6DD(Ls!+cq?z$znK(#?p2m>?#+e9EQQVpe-44E;E#B=HlKQXs2`{o= Dd1zj- diff --git a/.local/lib/python2.7/site-packages/neovim/api/__init__.py b/.local/lib/python2.7/site-packages/neovim/api/__init__.py deleted file mode 100644 index 3f7a8da2..00000000 --- a/.local/lib/python2.7/site-packages/neovim/api/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -"""Nvim API subpackage. - -This is a transition package. New projects should instead import pynvim.api. -""" -from pynvim import api -from pynvim.api import * - -__all__ = api.__all__ diff --git a/.local/lib/python2.7/site-packages/neovim/api/__init__.pyc b/.local/lib/python2.7/site-packages/neovim/api/__init__.pyc deleted file mode 100644 index a4592784d5863b7c6a802034dc5c0184a0cda594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmYLE%}&H15FXmPnkFVb0>{Q=!FbVwF?!QWW86LUf@~p{l|oafX5YwX@U?sZ9o(uD z_~x6xk0Jj&E*~*6ODKDw@hpOMu*XFbsGZ>ou90t#)YUQ z`hM_Zq{GgkFq4B}rTIdu2tF2b1kCM&lsT<`R*8qmg;2f~A})~c=O2+lEdS!9H@8Y_ zg{V^fAHp4myz{;0TOTGpo?UWgeJd@uX2XYF?7TZ?7aTvNm-BZ5ciQ8w9JRR+#+fJt Y!`>qlyXw7~tiCRghqTv%oRBj626?DtRR910 diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/PKG-INFO b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/PKG-INFO deleted file mode 100644 index 8215e2a4..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/PKG-INFO +++ /dev/null @@ -1,13 +0,0 @@ -Metadata-Version: 2.1 -Name: pynvim -Version: 0.4.2 -Summary: Python client to neovim -Home-page: http://github.com/neovim/pynvim -Author: Thiago de Arruda -Author-email: tpadilha84@gmail.com -License: Apache -Download-URL: https://github.com/neovim/pynvim/archive/0.4.2.tar.gz -Description: UNKNOWN -Platform: UNKNOWN -Provides-Extra: pyuv -Provides-Extra: test diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/SOURCES.txt b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/SOURCES.txt deleted file mode 100644 index 995a2f20..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/SOURCES.txt +++ /dev/null @@ -1,45 +0,0 @@ -LICENSE -MANIFEST.in -README.md -setup.cfg -setup.py -neovim/__init__.py -neovim/api/__init__.py -pynvim/__init__.py -pynvim/compat.py -pynvim/util.py -pynvim.egg-info/PKG-INFO -pynvim.egg-info/SOURCES.txt -pynvim.egg-info/dependency_links.txt -pynvim.egg-info/not-zip-safe -pynvim.egg-info/requires.txt -pynvim.egg-info/top_level.txt -pynvim/api/__init__.py -pynvim/api/buffer.py -pynvim/api/common.py -pynvim/api/nvim.py -pynvim/api/tabpage.py -pynvim/api/window.py -pynvim/msgpack_rpc/__init__.py -pynvim/msgpack_rpc/async_session.py -pynvim/msgpack_rpc/msgpack_stream.py -pynvim/msgpack_rpc/session.py -pynvim/msgpack_rpc/event_loop/__init__.py -pynvim/msgpack_rpc/event_loop/asyncio.py -pynvim/msgpack_rpc/event_loop/base.py -pynvim/msgpack_rpc/event_loop/uv.py -pynvim/plugin/__init__.py -pynvim/plugin/decorators.py -pynvim/plugin/host.py -pynvim/plugin/script_host.py -test/conftest.py -test/test_buffer.py -test/test_client_rpc.py -test/test_concurrency.py -test/test_decorators.py -test/test_events.py -test/test_host.py -test/test_logging.py -test/test_tabpage.py -test/test_vim.py -test/test_window.py \ No newline at end of file diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/dependency_links.txt b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/installed-files.txt b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/installed-files.txt deleted file mode 100644 index 1508a2be..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/installed-files.txt +++ /dev/null @@ -1,52 +0,0 @@ -../neovim/__init__.py -../neovim/__init__.pyc -../neovim/api/__init__.py -../neovim/api/__init__.pyc -../pynvim/__init__.py -../pynvim/__init__.pyc -../pynvim/api/__init__.py -../pynvim/api/__init__.pyc -../pynvim/api/buffer.py -../pynvim/api/buffer.pyc -../pynvim/api/common.py -../pynvim/api/common.pyc -../pynvim/api/nvim.py -../pynvim/api/nvim.pyc -../pynvim/api/tabpage.py -../pynvim/api/tabpage.pyc -../pynvim/api/window.py -../pynvim/api/window.pyc -../pynvim/compat.py -../pynvim/compat.pyc -../pynvim/msgpack_rpc/__init__.py -../pynvim/msgpack_rpc/__init__.pyc -../pynvim/msgpack_rpc/async_session.py -../pynvim/msgpack_rpc/async_session.pyc -../pynvim/msgpack_rpc/event_loop/__init__.py -../pynvim/msgpack_rpc/event_loop/__init__.pyc -../pynvim/msgpack_rpc/event_loop/asyncio.py -../pynvim/msgpack_rpc/event_loop/asyncio.pyc -../pynvim/msgpack_rpc/event_loop/base.py -../pynvim/msgpack_rpc/event_loop/base.pyc -../pynvim/msgpack_rpc/event_loop/uv.py -../pynvim/msgpack_rpc/event_loop/uv.pyc -../pynvim/msgpack_rpc/msgpack_stream.py -../pynvim/msgpack_rpc/msgpack_stream.pyc -../pynvim/msgpack_rpc/session.py -../pynvim/msgpack_rpc/session.pyc -../pynvim/plugin/__init__.py -../pynvim/plugin/__init__.pyc -../pynvim/plugin/decorators.py -../pynvim/plugin/decorators.pyc -../pynvim/plugin/host.py -../pynvim/plugin/host.pyc -../pynvim/plugin/script_host.py -../pynvim/plugin/script_host.pyc -../pynvim/util.py -../pynvim/util.pyc -PKG-INFO -SOURCES.txt -dependency_links.txt -not-zip-safe -requires.txt -top_level.txt diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/not-zip-safe b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/requires.txt b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/requires.txt deleted file mode 100644 index 561f59d5..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/requires.txt +++ /dev/null @@ -1,9 +0,0 @@ -msgpack>=0.5.0 -trollius -greenlet - -[pyuv] -pyuv>=1.0.0 - -[test] -pytest>=3.4.0 diff --git a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/top_level.txt b/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/top_level.txt deleted file mode 100644 index e6bb79fa..00000000 --- a/.local/lib/python2.7/site-packages/pynvim-0.4.2-py2.7.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -neovim -pynvim diff --git a/.local/lib/python2.7/site-packages/pynvim/__init__.py b/.local/lib/python2.7/site-packages/pynvim/__init__.py deleted file mode 100644 index 17967ce2..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/__init__.py +++ /dev/null @@ -1,156 +0,0 @@ -"""Python client for Nvim. - -Client library for talking with Nvim processes via its msgpack-rpc API. -""" -import logging -import os -import sys - -from pynvim.api import Nvim, NvimError -from pynvim.compat import IS_PYTHON3 -from pynvim.msgpack_rpc import (ErrorResponse, child_session, socket_session, - stdio_session, tcp_session) -from pynvim.plugin import (Host, autocmd, command, decode, encoding, function, - plugin, rpc_export, shutdown_hook) -from pynvim.util import VERSION, Version - - -__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session', - 'start_host', 'autocmd', 'command', 'encoding', 'decode', - 'function', 'plugin', 'rpc_export', 'Host', 'Nvim', 'NvimError', - 'Version', 'VERSION', 'shutdown_hook', 'attach', 'setup_logging', - 'ErrorResponse') - - -def start_host(session=None): - """Promote the current process into python plugin host for Nvim. - - Start msgpack-rpc event loop for `session`, listening for Nvim requests - and notifications. It registers Nvim commands for loading/unloading - python plugins. - - The sys.stdout and sys.stderr streams are redirected to Nvim through - `session`. That means print statements probably won't work as expected - while this function doesn't return. - - This function is normally called at program startup and could have been - defined as a separate executable. It is exposed as a library function for - testing purposes only. - """ - plugins = [] - for arg in sys.argv: - _, ext = os.path.splitext(arg) - if ext == '.py': - plugins.append(arg) - elif os.path.isdir(arg): - init = os.path.join(arg, '__init__.py') - if os.path.isfile(init): - plugins.append(arg) - - # This is a special case to support the old workaround of - # adding an empty .py file to make a package directory - # visible, and it should be removed soon. - for path in list(plugins): - dup = path + ".py" - if os.path.isdir(path) and dup in plugins: - plugins.remove(dup) - - # Special case: the legacy scripthost receives a single relative filename - # while the rplugin host will receive absolute paths. - if plugins == ["script_host.py"]: - name = "script" - else: - name = "rplugin" - - setup_logging(name) - - if not session: - session = stdio_session() - nvim = Nvim.from_session(session) - - if nvim.version.api_level < 1: - sys.stderr.write("This version of pynvim " - "requires nvim 0.1.6 or later") - sys.exit(1) - - host = Host(nvim) - host.start(plugins) - - -def attach(session_type, address=None, port=None, - path=None, argv=None, decode=None): - """Provide a nicer interface to create python api sessions. - - Previous machinery to create python api sessions is still there. This only - creates a facade function to make things easier for the most usual cases. - Thus, instead of: - from pynvim import socket_session, Nvim - session = tcp_session(address=
, port=) - nvim = Nvim.from_session(session) - You can now do: - from pynvim import attach - nvim = attach('tcp', address=
, port=) - And also: - nvim = attach('socket', path=) - nvim = attach('child', argv=) - nvim = attach('stdio') - - When the session is not needed anymore, it is recommended to explicitly - close it: - nvim.close() - It is also possible to use the session as a context mangager: - with attach('socket', path=thepath) as nvim: - print(nvim.funcs.getpid()) - print(nvim.current.line) - This will automatically close the session when you're done with it, or - when an error occured. - - - """ - session = (tcp_session(address, port) if session_type == 'tcp' else - socket_session(path) if session_type == 'socket' else - stdio_session() if session_type == 'stdio' else - child_session(argv) if session_type == 'child' else - None) - - if not session: - raise Exception('Unknown session type "%s"' % session_type) - - if decode is None: - decode = IS_PYTHON3 - - return Nvim.from_session(session).with_decode(decode) - - -def setup_logging(name): - """Setup logging according to environment variables.""" - logger = logging.getLogger(__name__) - if 'NVIM_PYTHON_LOG_FILE' in os.environ: - prefix = os.environ['NVIM_PYTHON_LOG_FILE'].strip() - major_version = sys.version_info[0] - logfile = '{}_py{}_{}'.format(prefix, major_version, name) - handler = logging.FileHandler(logfile, 'w', 'utf-8') - handler.formatter = logging.Formatter( - '%(asctime)s [%(levelname)s @ ' - '%(filename)s:%(funcName)s:%(lineno)s] %(process)s - %(message)s') - logging.root.addHandler(handler) - level = logging.INFO - env_log_level = os.environ.get('NVIM_PYTHON_LOG_LEVEL', None) - if env_log_level is not None: - lvl = getattr(logging, env_log_level.strip(), None) - if isinstance(lvl, int): - level = lvl - else: - logger.warning('Invalid NVIM_PYTHON_LOG_LEVEL: %r, using INFO.', - env_log_level) - logger.setLevel(level) - - -# Required for python 2.6 -class NullHandler(logging.Handler): - def emit(self, record): - pass - - -if not logging.root.handlers: - logging.root.addHandler(NullHandler()) diff --git a/.local/lib/python2.7/site-packages/pynvim/__init__.pyc b/.local/lib/python2.7/site-packages/pynvim/__init__.pyc deleted file mode 100644 index 6c3fac5f583a21827e9329077e7a14d3c95d22de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6069 zcmcIoZF3aI5$-*q(+dI#iC2^0HJEUu#K|vJvC9P%4u+sa5!8v`^2N@v?2e>8?aMJU zC!q?eRDvttQ9e>Pe^t|@=57VO5T)iQv%LD zBH5JW)6$);-X|rSk$hIVvyvZ`?or9-q&p}1G3g$Y{J3Z%}c%@-37@{NcV)~ zi_%?`d`Y@XlAo0BNy$%1_mt$PrF&ZPGtxaH`B~|nt=3OTc24p)r2B^C=cRid)Qi&n z0aZzUC|^RG3);u)_;*3Rg!pet@}_(V)k8@_F@f~ol1*sx7KtxJKI>jo>LuyFE$({2 z8R%aYbCJU@0tpIOtsxt&OSEK!=E1(-E{ibEQd9VFv$Wy*Zko4eXKz=OEPY}lyRRcY z%68IXE8I){woVHNwv3H)#)Z3S6sF#Vx!W2<@y<0nh{KN`thQ&VwWV$0K*i6ZS>5P8`0U}m`|IzwCP_PnMyGU)8=TVXPCg_QY%f$F;bWMRS z^w*coVG(=o&q;%9xRn;F0`%^gXM@sumDOzzeNyffz3sBxsf@tg9^L6|tlnSO-5wcB zMLMK+sCI`eJG7N@bUv~k>z(gV><$gpnPWq(I#jkpBXs83P|yw@>Cmd3MK&kcETBk5TabRMGl3Z~SCKEbzm3QJ9+WMSgFv4BNxVoukWaq&qZ~BEH>5uy z{Uh?cLErkkAqNw3fY&38x}ApDpUZQ&;AA}^c)BoJ)2vB$Oqn7DuK5C7CP&kz<@qF8 z+pk_>^p$`YexE*D6F3ug!K_cdxG4wV+~oFW4yHz2lteCH%X4f4(VE(aXtShXD0up{ z;P)v8lL^_Xqz?jM#KE)_U^vN+KPu0sb^3D{=2GD27*+=&h$`5#e_TKZw*yEtBmH^l zFG$jq9TA%ZG~Eg5FG^DF$oC}aB%H#)nm#Q*I8GgL>*5~d1Ph8AX*s~bx--cB(($l zkoiOC==NP3v0M(l?p41UYeVO)iEDHD5ne-k*FHR!n5N zdp*7@%EmSwR7eDpVu@3d!kDc*E+v4t_t8A0jdm+=3(HM7X2Elz`{1l#55B$Aez*OT z5LqXKMs~e*8Vfyzz(FfOM|Nu$KqCT2CMFFczpVi523hLOGhboaU|;~)M94RqrTshSxt1nLh6AM*QC{st z3o3uAe3(8+J* z(5ZKpz~~$v_Z}LVZw3p&*CQu^C?++WcEBkS~Vp7{ij%ly%h;+_sQG;_Q!Fvs%=;$iWQ(kGODkD&enh<<{mejovpr^Wu6`4Gv5;5#LKBpU_eKG0jU z&PI!}yK^`Rpzdy(m@o>9G&YtU)=k2poiHmJ#JGqFY0WQK~^&?MEnp1QDbf0};69(T>7Xu?0AYTnb@{+)Nia zbHUIJqYMxP5v!1YxIJ{sPzZP(C5Y3HbPvKW17Q@kY0i=+e7VqCR-_%zueA5v$55;6`kMUTFVauhC>JUb!=H4K_jhpXX`~d*y1C z3_smAg&yO`%$ibsSQwKK@{9evv<4^X={`t?C}M$$7=l+IF=T0+`jH1^zUwc~)HrwKD`)HAf?6k0HduK1XfBtc%>MnjcnS zk9OTJhgVQWBxPZ$+fC}1k(JbWbOKxsNRL1&V{B#;BzYZFV1_SM=|Ha`HSFX1p*=lt zM-=^4u>-d)#>Vse0~21n>@Kdiw5BK8ym|p(7FdT=ntbj&i_L&lR)-0(s`4+Phq_dR z#_mhc#k-T zy9i2oqI!dggq6A8PRJ4nk2?x}SOy~Q8z9cs#W=vfcT_2J(mz(`0xjQ4*~Dir5n58NIWd3*3nTw?#uKDa&oh6%8LQc&gdD$>xq z07LXEYxjTFySut}Ck0&`o$t2?y}>@3-yUcgvgcSz4gKb|58dbJU2a7V*WKJ)b>Xis zx3mIc8G_ea;pG;~tLpV5ydY%Pbqp_z$fCUJzQC;dnu0ag@RlPf04=UM&l>Di>DKN% zy0hlm7+EcLqbyCr@0{^bc-bxkm8kye`rZ5Ox`JdV)dteY0f4N*UdC$a*y~Z)Ua#{8 zrfFE1%5HV&qRj1_u!q$JDbzz5S;R)?q4v-zdy(bEtSW|~AFEQmCwAy0 zDk@EY?e!Cd#U0|A-um;XU)tWNs;y0>6*BwVwLWx!s?y~b1{jFn3F_K+f@8bc>i`Nm z18&sf-bN#h`CvX+3XTCRP6a3~8wF(3xygjmhk4lh>fWZe#M){{?$G zZY)8I*6vU`^@d(AFOy+L_w9l9tq|J#|JD8s`>*h*6wRQeH>K}LQF=-EpTA6X2vOB- zjOw<2ghsu**GtM6x_-=Y#%mRs#H{MV(ni7k?FTP)@Ol6h5NZs~mB8Nd{Q3)J4`1r^ zlb3#JJCt{+<6$<{HLd!v#vrdgz%k`kU*TT)0H@#CI9f|FL?K^&fujtyPN+qo6QjK{ z-&lJcuRXcLBk25stESP^f$2JHczIpNt~*_?JnSZe!Eq;E>+r8}8dtwo<5uJJ1R_TN TH7DjiXadkq5FKE@Li4fhp=XX<7OGy-Lsg}fBDI&OB9SWj;`M@eabshIy;<$g>Tl~0 zNM`_P+nj2|!*4wE=8cJdU&PnH*1Uvq&GCDKuhR$>07DF*3PA^8LSP{T#3RrVm;kGwxKEeV)gatGDU*Eu z{w;C)O)JVrv6ERGKh(-4BTbZPwKTHvE)hwscD3wQT0TkL*ZErb>qA#?5Wl*=|syi+m6`z)qgzf2gLiha$qW0$(VoXE7xpt%7_M)ch```u|8wFEP(k zGUt^oIrpz|-yR#Zm5Ekmn|`9c+smWU8e^MN(|+Q=N=aj|K<50Le}(-pT<`v+@?n^h zrW?HptvOGT!wKA1q self.end: - index = self.end - return index diff --git a/.local/lib/python2.7/site-packages/pynvim/api/buffer.pyc b/.local/lib/python2.7/site-packages/pynvim/api/buffer.pyc deleted file mode 100644 index 9d4da847013e5053fa2145dbaaf01519f2cbd067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9924 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 I7ta3rf31z)T>t<8 diff --git a/.local/lib/python2.7/site-packages/pynvim/api/common.py b/.local/lib/python2.7/site-packages/pynvim/api/common.py deleted file mode 100644 index 21f5b2da..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/api/common.py +++ /dev/null @@ -1,205 +0,0 @@ -"""Code shared between the API classes.""" -import functools - -from msgpack import unpackb - -from pynvim.compat import unicode_errors_default - -__all__ = () - - -class NvimError(Exception): - pass - - -class Remote(object): - - """Base class for Nvim objects(buffer/window/tabpage). - - Each type of object has it's own specialized class with API wrappers around - the msgpack-rpc session. This implements equality which takes the remote - object handle into consideration. - """ - - def __init__(self, session, code_data): - """Initialize from session and code_data immutable object. - - The `code_data` contains serialization information required for - msgpack-rpc calls. It must be immutable for Buffer equality to work. - """ - self._session = session - self.code_data = code_data - self.handle = unpackb(code_data[1]) - self.api = RemoteApi(self, self._api_prefix) - self.vars = RemoteMap(self, self._api_prefix + 'get_var', - self._api_prefix + 'set_var', - self._api_prefix + 'del_var') - self.options = RemoteMap(self, self._api_prefix + 'get_option', - self._api_prefix + 'set_option') - - def __repr__(self): - """Get text representation of the object.""" - return '<%s(handle=%r)>' % ( - self.__class__.__name__, - self.handle, - ) - - def __eq__(self, other): - """Return True if `self` and `other` are the same object.""" - return (hasattr(other, 'code_data') - and other.code_data == self.code_data) - - def __hash__(self): - """Return hash based on remote object id.""" - return self.code_data.__hash__() - - def request(self, name, *args, **kwargs): - """Wrapper for nvim.request.""" - return self._session.request(name, self, *args, **kwargs) - - -class RemoteApi(object): - - """Wrapper to allow api methods to be called like python methods.""" - - def __init__(self, obj, api_prefix): - """Initialize a RemoteApi with object and api prefix.""" - self._obj = obj - self._api_prefix = api_prefix - - def __getattr__(self, name): - """Return wrapper to named api method.""" - return functools.partial(self._obj.request, self._api_prefix + name) - - -def transform_keyerror(exc): - if isinstance(exc, NvimError): - if exc.args[0].startswith('Key not found:'): - return KeyError(exc.args[0]) - if exc.args[0].startswith('Invalid option name:'): - return KeyError(exc.args[0]) - return exc - - -class RemoteMap(object): - """Represents a string->object map stored in Nvim. - - This is the dict counterpart to the `RemoteSequence` class, but it is used - as a generic way of retrieving values from the various map-like data - structures present in Nvim. - - It is used to provide a dict-like API to vim variables and options. - """ - - _set = None - _del = None - - def __init__(self, obj, get_method, set_method=None, del_method=None): - """Initialize a RemoteMap with session, getter/setter.""" - self._get = functools.partial(obj.request, get_method) - if set_method: - self._set = functools.partial(obj.request, set_method) - if del_method: - self._del = functools.partial(obj.request, del_method) - - def __getitem__(self, key): - """Return a map value by key.""" - try: - return self._get(key) - except NvimError as exc: - raise transform_keyerror(exc) - - def __setitem__(self, key, value): - """Set a map value by key(if the setter was provided).""" - if not self._set: - raise TypeError('This dict is read-only') - self._set(key, value) - - def __delitem__(self, key): - """Delete a map value by associating None with the key.""" - if not self._del: - raise TypeError('This dict is read-only') - try: - return self._del(key) - except NvimError as exc: - raise transform_keyerror(exc) - - def __contains__(self, key): - """Check if key is present in the map.""" - try: - self._get(key) - return True - except Exception: - return False - - def get(self, key, default=None): - """Return value for key if present, else a default value.""" - try: - return self.__getitem__(key) - except KeyError: - return default - - -class RemoteSequence(object): - - """Represents a sequence of objects stored in Nvim. - - This class is used to wrap msgapck-rpc functions that work on Nvim - sequences(of lines, buffers, windows and tabpages) with an API that - is similar to the one provided by the python-vim interface. - - For example, the 'windows' property of the `Nvim` class is a RemoteSequence - sequence instance, and the expression `nvim.windows[0]` is translated to - session.request('nvim_list_wins')[0]. - - One important detail about this class is that all methods will fetch the - sequence into a list and perform the necessary manipulation - locally(iteration, indexing, counting, etc). - """ - - def __init__(self, session, method): - """Initialize a RemoteSequence with session, method.""" - self._fetch = functools.partial(session.request, method) - - def __len__(self): - """Return the length of the remote sequence.""" - return len(self._fetch()) - - def __getitem__(self, idx): - """Return a sequence item by index.""" - if not isinstance(idx, slice): - return self._fetch()[idx] - return self._fetch()[idx.start:idx.stop] - - def __iter__(self): - """Return an iterator for the sequence.""" - items = self._fetch() - for item in items: - yield item - - def __contains__(self, item): - """Check if an item is present in the sequence.""" - return item in self._fetch() - - -def _identity(obj, session, method, kind): - return obj - - -def decode_if_bytes(obj, mode=True): - """Decode obj if it is bytes.""" - if mode is True: - mode = unicode_errors_default - if isinstance(obj, bytes): - return obj.decode("utf-8", errors=mode) - return obj - - -def walk(fn, obj, *args, **kwargs): - """Recursively walk an object graph applying `fn`/`args` to objects.""" - if type(obj) in [list, tuple]: - return list(walk(fn, o, *args) for o in obj) - if type(obj) is dict: - return dict((walk(fn, k, *args), walk(fn, v, *args)) for k, v in - obj.items()) - return fn(obj, *args, **kwargs) diff --git a/.local/lib/python2.7/site-packages/pynvim/api/common.pyc b/.local/lib/python2.7/site-packages/pynvim/api/common.pyc deleted file mode 100644 index bd95d65f3d723d09e6ce7f2e6f7b011edf6e5291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10326 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 diff --git a/.local/lib/python2.7/site-packages/pynvim/api/nvim.py b/.local/lib/python2.7/site-packages/pynvim/api/nvim.py deleted file mode 100644 index 487478ac..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/api/nvim.py +++ /dev/null @@ -1,577 +0,0 @@ -"""Main Nvim interface.""" -import os -import sys -import threading -from functools import partial -from traceback import format_stack - -from msgpack import ExtType - -from pynvim.api.buffer import Buffer -from pynvim.api.common import (NvimError, Remote, RemoteApi, RemoteMap, RemoteSequence, - decode_if_bytes, walk) -from pynvim.api.tabpage import Tabpage -from pynvim.api.window import Window -from pynvim.compat import IS_PYTHON3 -from pynvim.util import Version, format_exc_skip - -__all__ = ('Nvim') - - -os_chdir = os.chdir - -lua_module = """ -local a = vim.api -local function update_highlights(buf, src_id, hls, clear_first, clear_end) - if clear_first ~= nil then - a.nvim_buf_clear_highlight(buf, src_id, clear_first, clear_end) - end - for _,hl in pairs(hls) do - local group, line, col_start, col_end = unpack(hl) - if col_start == nil then - col_start = 0 - end - if col_end == nil then - col_end = -1 - end - a.nvim_buf_add_highlight(buf, src_id, group, line, col_start, col_end) - end -end - -local chid = ... -local mod = {update_highlights=update_highlights} -_G["_pynvim_"..chid] = mod -""" - - -class Nvim(object): - - """Class that represents a remote Nvim instance. - - This class is main entry point to Nvim remote API, it is a wrapper - around Session instances. - - The constructor of this class must not be called directly. Instead, the - `from_session` class method should be used to create the first instance - from a raw `Session` instance. - - Subsequent instances for the same session can be created by calling the - `with_decode` instance method to change the decoding behavior or - `SubClass.from_nvim(nvim)` where `SubClass` is a subclass of `Nvim`, which - is useful for having multiple `Nvim` objects that behave differently - without one affecting the other. - - When this library is used on python3.4+, asyncio event loop is guaranteed - to be used. It is available as the "loop" attribute of this class. Note - that asyncio callbacks cannot make blocking requests, which includes - accessing state-dependent attributes. They should instead schedule another - callback using nvim.async_call, which will not have this restriction. - """ - - @classmethod - def from_session(cls, session): - """Create a new Nvim instance for a Session instance. - - This method must be called to create the first Nvim instance, since it - queries Nvim metadata for type information and sets a SessionHook for - creating specialized objects from Nvim remote handles. - """ - session.error_wrapper = lambda e: NvimError(decode_if_bytes(e[1])) - channel_id, metadata = session.request(b'nvim_get_api_info') - - if IS_PYTHON3: - # decode all metadata strings for python3 - metadata = walk(decode_if_bytes, metadata) - - types = { - metadata['types']['Buffer']['id']: Buffer, - metadata['types']['Window']['id']: Window, - metadata['types']['Tabpage']['id']: Tabpage, - } - - return cls(session, channel_id, metadata, types) - - @classmethod - def from_nvim(cls, nvim): - """Create a new Nvim instance from an existing instance.""" - return cls(nvim._session, nvim.channel_id, nvim.metadata, - nvim.types, nvim._decode, nvim._err_cb) - - def __init__(self, session, channel_id, metadata, types, - decode=False, err_cb=None): - """Initialize a new Nvim instance. This method is module-private.""" - self._session = session - self.channel_id = channel_id - self.metadata = metadata - version = metadata.get("version", {"api_level": 0}) - self.version = Version(**version) - self.types = types - self.api = RemoteApi(self, 'nvim_') - self.vars = RemoteMap(self, 'nvim_get_var', 'nvim_set_var', 'nvim_del_var') - self.vvars = RemoteMap(self, 'nvim_get_vvar', None, None) - self.options = RemoteMap(self, 'nvim_get_option', 'nvim_set_option') - self.buffers = Buffers(self) - self.windows = RemoteSequence(self, 'nvim_list_wins') - self.tabpages = RemoteSequence(self, 'nvim_list_tabpages') - self.current = Current(self) - self.session = CompatibilitySession(self) - self.funcs = Funcs(self) - self.lua = LuaFuncs(self) - self.error = NvimError - self._decode = decode - self._err_cb = err_cb - - # only on python3.4+ we expose asyncio - if IS_PYTHON3: - self.loop = self._session.loop._loop - - def _from_nvim(self, obj, decode=None): - if decode is None: - decode = self._decode - if type(obj) is ExtType: - cls = self.types[obj.code] - return cls(self, (obj.code, obj.data)) - if decode: - obj = decode_if_bytes(obj, decode) - return obj - - def _to_nvim(self, obj): - if isinstance(obj, Remote): - return ExtType(*obj.code_data) - return obj - - def _get_lua_private(self): - if not getattr(self._session, "_has_lua", False): - self.exec_lua(lua_module, self.channel_id) - self._session._has_lua = True - return getattr(self.lua, "_pynvim_{}".format(self.channel_id)) - - def request(self, name, *args, **kwargs): - r"""Send an API request or notification to nvim. - - It is rarely needed to call this function directly, as most API - functions have python wrapper functions. The `api` object can - be also be used to call API functions as methods: - - vim.api.err_write('ERROR\n', async_=True) - vim.current.buffer.api.get_mark('.') - - is equivalent to - - vim.request('nvim_err_write', 'ERROR\n', async_=True) - vim.request('nvim_buf_get_mark', vim.current.buffer, '.') - - - Normally a blocking request will be sent. If the `async_` flag is - present and True, a asynchronous notification is sent instead. This - will never block, and the return value or error is ignored. - """ - if (self._session._loop_thread is not None - and threading.current_thread() != self._session._loop_thread): - - msg = ("Request from non-main thread.\n" - "Requests from different threads should be wrapped " - "with nvim.async_call(cb, ...) \n{}\n" - .format('\n'.join(format_stack(None, 5)[:-1]))) - - self.async_call(self._err_cb, msg) - raise NvimError("request from non-main thread") - - decode = kwargs.pop('decode', self._decode) - args = walk(self._to_nvim, args) - res = self._session.request(name, *args, **kwargs) - return walk(self._from_nvim, res, decode=decode) - - def next_message(self): - """Block until a message(request or notification) is available. - - If any messages were previously enqueued, return the first in queue. - If not, run the event loop until one is received. - """ - msg = self._session.next_message() - if msg: - return walk(self._from_nvim, msg) - - def run_loop(self, request_cb, notification_cb, - setup_cb=None, err_cb=None): - """Run the event loop to receive requests and notifications from Nvim. - - This should not be called from a plugin running in the host, which - already runs the loop and dispatches events to plugins. - """ - if err_cb is None: - err_cb = sys.stderr.write - self._err_cb = err_cb - - def filter_request_cb(name, args): - name = self._from_nvim(name) - args = walk(self._from_nvim, args) - try: - result = request_cb(name, args) - except Exception: - msg = ("error caught in request handler '{} {}'\n{}\n\n" - .format(name, args, format_exc_skip(1))) - self._err_cb(msg) - raise - return walk(self._to_nvim, result) - - def filter_notification_cb(name, args): - name = self._from_nvim(name) - args = walk(self._from_nvim, args) - try: - notification_cb(name, args) - except Exception: - msg = ("error caught in notification handler '{} {}'\n{}\n\n" - .format(name, args, format_exc_skip(1))) - self._err_cb(msg) - raise - - self._session.run(filter_request_cb, filter_notification_cb, setup_cb) - - def stop_loop(self): - """Stop the event loop being started with `run_loop`.""" - self._session.stop() - - def close(self): - """Close the nvim session and release its resources.""" - self._session.close() - - def __enter__(self): - """Enter nvim session as a context manager.""" - return self - - def __exit__(self, *exc_info): - """Exit nvim session as a context manager. - - Closes the event loop. - """ - self.close() - - def with_decode(self, decode=True): - """Initialize a new Nvim instance.""" - return Nvim(self._session, self.channel_id, - self.metadata, self.types, decode, self._err_cb) - - def ui_attach(self, width, height, rgb=None, **kwargs): - """Register as a remote UI. - - After this method is called, the client will receive redraw - notifications. - """ - options = kwargs - if rgb is not None: - options['rgb'] = rgb - return self.request('nvim_ui_attach', width, height, options) - - def ui_detach(self): - """Unregister as a remote UI.""" - return self.request('nvim_ui_detach') - - def ui_try_resize(self, width, height): - """Notify nvim that the client window has resized. - - If possible, nvim will send a redraw request to resize. - """ - return self.request('ui_try_resize', width, height) - - def subscribe(self, event): - """Subscribe to a Nvim event.""" - return self.request('nvim_subscribe', event) - - def unsubscribe(self, event): - """Unsubscribe to a Nvim event.""" - return self.request('nvim_unsubscribe', event) - - def command(self, string, **kwargs): - """Execute a single ex command.""" - return self.request('nvim_command', string, **kwargs) - - def command_output(self, string): - """Execute a single ex command and return the output.""" - return self.request('nvim_command_output', string) - - def eval(self, string, **kwargs): - """Evaluate a vimscript expression.""" - return self.request('nvim_eval', string, **kwargs) - - def call(self, name, *args, **kwargs): - """Call a vimscript function.""" - return self.request('nvim_call_function', name, args, **kwargs) - - def exec_lua(self, code, *args, **kwargs): - """Execute lua code. - - Additional parameters are available as `...` inside the lua chunk. - Only statements are executed. To evaluate an expression, prefix it - with `return`: `return my_function(...)` - - There is a shorthand syntax to call lua functions with arguments: - - nvim.lua.func(1,2) - nvim.lua.mymod.myfunction(data, async_=True) - - is equivalent to - - nvim.exec_lua("return func(...)", 1, 2) - nvim.exec_lua("mymod.myfunction(...)", data, async_=True) - - Note that with `async_=True` there is no return value. - """ - return self.request('nvim_execute_lua', code, args, **kwargs) - - def strwidth(self, string): - """Return the number of display cells `string` occupies. - - Tab is counted as one cell. - """ - return self.request('nvim_strwidth', string) - - def list_runtime_paths(self): - """Return a list of paths contained in the 'runtimepath' option.""" - return self.request('nvim_list_runtime_paths') - - def foreach_rtp(self, cb): - """Invoke `cb` for each path in 'runtimepath'. - - Call the given callable for each path in 'runtimepath' until either - callable returns something but None, the exception is raised or there - are no longer paths. If stopped in case callable returned non-None, - vim.foreach_rtp function returns the value returned by callable. - """ - for path in self.request('nvim_list_runtime_paths'): - try: - if cb(path) is not None: - break - except Exception: - break - - def chdir(self, dir_path): - """Run os.chdir, then all appropriate vim stuff.""" - os_chdir(dir_path) - return self.request('nvim_set_current_dir', dir_path) - - def feedkeys(self, keys, options='', escape_csi=True): - """Push `keys` to Nvim user input buffer. - - Options can be a string with the following character flags: - - 'm': Remap keys. This is default. - - 'n': Do not remap keys. - - 't': Handle keys as if typed; otherwise they are handled as if coming - from a mapping. This matters for undo, opening folds, etc. - """ - return self.request('nvim_feedkeys', keys, options, escape_csi) - - def input(self, bytes): - """Push `bytes` to Nvim low level input buffer. - - Unlike `feedkeys()`, this uses the lowest level input buffer and the - call is not deferred. It returns the number of bytes actually - written(which can be less than what was requested if the buffer is - full). - """ - return self.request('nvim_input', bytes) - - def replace_termcodes(self, string, from_part=False, do_lt=True, - special=True): - r"""Replace any terminal code strings by byte sequences. - - The returned sequences are Nvim's internal representation of keys, - for example: - - -> '\x1b' - -> '\r' - -> '\x0c' - -> '\x80ku' - - The returned sequences can be used as input to `feedkeys`. - """ - return self.request('nvim_replace_termcodes', string, - from_part, do_lt, special) - - def out_write(self, msg, **kwargs): - r"""Print `msg` as a normal message. - - The message is buffered (won't display) until linefeed ("\n"). - """ - return self.request('nvim_out_write', msg, **kwargs) - - def err_write(self, msg, **kwargs): - r"""Print `msg` as an error message. - - The message is buffered (won't display) until linefeed ("\n"). - """ - if self._thread_invalid(): - # special case: if a non-main thread writes to stderr - # i.e. due to an uncaught exception, pass it through - # without raising an additional exception. - self.async_call(self.err_write, msg, **kwargs) - return - return self.request('nvim_err_write', msg, **kwargs) - - def _thread_invalid(self): - return (self._session._loop_thread is not None - and threading.current_thread() != self._session._loop_thread) - - def quit(self, quit_command='qa!'): - """Send a quit command to Nvim. - - By default, the quit command is 'qa!' which will make Nvim quit without - saving anything. - """ - try: - self.command(quit_command) - except OSError: - # sending a quit command will raise an IOError because the - # connection is closed before a response is received. Safe to - # ignore it. - pass - - def new_highlight_source(self): - """Return new src_id for use with Buffer.add_highlight.""" - return self.current.buffer.add_highlight("", 0, src_id=0) - - def async_call(self, fn, *args, **kwargs): - """Schedule `fn` to be called by the event loop soon. - - This function is thread-safe, and is the only way code not - on the main thread could interact with nvim api objects. - - This function can also be called in a synchronous - event handler, just before it returns, to defer execution - that shouldn't block neovim. - """ - call_point = ''.join(format_stack(None, 5)[:-1]) - - def handler(): - try: - fn(*args, **kwargs) - except Exception as err: - msg = ("error caught while executing async callback:\n" - "{!r}\n{}\n \nthe call was requested at\n{}" - .format(err, format_exc_skip(1), call_point)) - self._err_cb(msg) - raise - self._session.threadsafe_call(handler) - - -class Buffers(object): - - """Remote NVim buffers. - - Currently the interface for interacting with remote NVim buffers is the - `nvim_list_bufs` msgpack-rpc function. Most methods fetch the list of - buffers from NVim. - - Conforms to *python-buffers*. - """ - - def __init__(self, nvim): - """Initialize a Buffers object with Nvim object `nvim`.""" - self._fetch_buffers = nvim.api.list_bufs - - def __len__(self): - """Return the count of buffers.""" - return len(self._fetch_buffers()) - - def __getitem__(self, number): - """Return the Buffer object matching buffer number `number`.""" - for b in self._fetch_buffers(): - if b.number == number: - return b - raise KeyError(number) - - def __contains__(self, b): - """Return whether Buffer `b` is a known valid buffer.""" - return isinstance(b, Buffer) and b.valid - - def __iter__(self): - """Return an iterator over the list of buffers.""" - return iter(self._fetch_buffers()) - - -class CompatibilitySession(object): - - """Helper class for API compatibility.""" - - def __init__(self, nvim): - self.threadsafe_call = nvim.async_call - - -class Current(object): - - """Helper class for emulating vim.current from python-vim.""" - - def __init__(self, session): - self._session = session - self.range = None - - @property - def line(self): - return self._session.request('nvim_get_current_line') - - @line.setter - def line(self, line): - return self._session.request('nvim_set_current_line', line) - - @line.deleter - def line(self): - return self._session.request('nvim_del_current_line') - - @property - def buffer(self): - return self._session.request('nvim_get_current_buf') - - @buffer.setter - def buffer(self, buffer): - return self._session.request('nvim_set_current_buf', buffer) - - @property - def window(self): - return self._session.request('nvim_get_current_win') - - @window.setter - def window(self, window): - return self._session.request('nvim_set_current_win', window) - - @property - def tabpage(self): - return self._session.request('nvim_get_current_tabpage') - - @tabpage.setter - def tabpage(self, tabpage): - return self._session.request('nvim_set_current_tabpage', tabpage) - - -class Funcs(object): - - """Helper class for functional vimscript interface.""" - - def __init__(self, nvim): - self._nvim = nvim - - def __getattr__(self, name): - return partial(self._nvim.call, name) - - -class LuaFuncs(object): - - """Wrapper to allow lua functions to be called like python methods.""" - - def __init__(self, nvim, name=""): - self._nvim = nvim - self.name = name - - def __getattr__(self, name): - """Return wrapper to named api method.""" - prefix = self.name + "." if self.name else "" - return LuaFuncs(self._nvim, prefix + name) - - def __call__(self, *args, **kwargs): - # first new function after keyword rename, be a bit noisy - if 'async' in kwargs: - raise ValueError('"async" argument is not allowed. ' - 'Use "async_" instead.') - async_ = kwargs.get('async_', False) - pattern = "return {}(...)" if not async_ else "{}(...)" - code = pattern.format(self.name) - return self._nvim.exec_lua(code, *args, **kwargs) diff --git a/.local/lib/python2.7/site-packages/pynvim/api/nvim.pyc b/.local/lib/python2.7/site-packages/pynvim/api/nvim.pyc deleted file mode 100644 index 7370d5861d8623cb5610a7509c5ead512e9e149e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27067 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 diff --git a/.local/lib/python2.7/site-packages/pynvim/api/window.py b/.local/lib/python2.7/site-packages/pynvim/api/window.py deleted file mode 100644 index 14810609..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/api/window.py +++ /dev/null @@ -1,72 +0,0 @@ -"""API for working with Nvim windows.""" -from pynvim.api.common import Remote - - -__all__ = ('Window') - - -class Window(Remote): - - """A remote Nvim window.""" - - _api_prefix = "nvim_win_" - - @property - def buffer(self): - """Get the `Buffer` currently being displayed by the window.""" - return self.request('nvim_win_get_buf') - - @property - def cursor(self): - """Get the (row, col) tuple with the current cursor position.""" - return self.request('nvim_win_get_cursor') - - @cursor.setter - def cursor(self, pos): - """Set the (row, col) tuple as the new cursor position.""" - return self.request('nvim_win_set_cursor', pos) - - @property - def height(self): - """Get the window height in rows.""" - return self.request('nvim_win_get_height') - - @height.setter - def height(self, height): - """Set the window height in rows.""" - return self.request('nvim_win_set_height', height) - - @property - def width(self): - """Get the window width in rows.""" - return self.request('nvim_win_get_width') - - @width.setter - def width(self, width): - """Set the window height in rows.""" - return self.request('nvim_win_set_width', width) - - @property - def row(self): - """0-indexed, on-screen window position(row) in display cells.""" - return self.request('nvim_win_get_position')[0] - - @property - def col(self): - """0-indexed, on-screen window position(col) in display cells.""" - return self.request('nvim_win_get_position')[1] - - @property - def tabpage(self): - """Get the `Tabpage` that contains the window.""" - return self.request('nvim_win_get_tabpage') - - @property - def valid(self): - """Return True if the window still exists.""" - return self.request('nvim_win_is_valid') - - @property - def number(self): - """Get the window number.""" - return self.request('nvim_win_get_number') diff --git a/.local/lib/python2.7/site-packages/pynvim/api/window.pyc b/.local/lib/python2.7/site-packages/pynvim/api/window.pyc deleted file mode 100644 index f8f84fb0223f0f01ab09b59a608c1075813a18f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3739 zcmcgv+iu%N5M5E0e2>%g8lWu}c`1Y1Qd$&EZzz%!ZPAyYpaK;23q_G5X&s7Wxy#4` z@|ONkKc(N&4`|OUNm+_w)CMfc*x?R$c6ZL4;q1Ek&*9#~zxsYCs$Ub&M`-#>h)9T2 z$cBg<5jVud5vPu5L``wp6p-YIA;z}EpF+G6;`h@n5w%3mZS(wl5RZTTMGn(kPSgCk zN=9<3%ve5sp(f}hQ99Kf^)G&I1Ga`|c{E84+3s)FV(yoN(I;s7ZwP{4*cj4b@8At# zYsdNlwPn?2t+oZV#o2c4C=Bq%y2^e--4V274che-yn(@Xt?mliwFWy2Z(y)nt9#ad zuU7Z1x?igYRz0ZIL#rOv>Mh~*+*=IoU5Ljrw=q}@Q^)LLBthJK#LW*mT--P&KcMMD zh?hc~S+0Pn=kk#L8scX%(u_&=pA^F(<$W0zc}|ImXL3NyNu+cZ2Q!M~U}h~#YC7gN zX3zH=k?{w`uw-f*BRTz1kT&IuE#8gdp^K-mLjQzbcbrbBdzR{g@&{jaJ8>EYaW__j zZZteBRM2mrw=~!+z2%-CEg-xGy$rIZ_bMQn$Q6)tBE17F zw;mRG<$DVlugW6FLj2D-6Dc!FdtFIfNtmZqMb~pudH9aDp?P&M7*UX>y{&oG7Vo0`rQ?73w}y zTb)ZXq&UWh%4g#e$90KT7^sTyCdx5`fs3EvacMcai7?nhY9$OFFReK4o6BxS3~%^8 zcq!sbE+C&`PW|cjp9O;~7*QVwPGE2dCniuydHmE@j(1?cM6xO8Yz{16ZK_Qii}O9qsfn!) zourryD1XC=S`KUu7+)95J%7AF=5p;ae39_|B$$xzn?0*c(x`}8W#)Z9N<;MbxsOYz zpXD@E=XPF}ry1pD=Gp&KcqMx=MJ+az+hfz?Jv^?|9$(cwE?M6DEbc;Flw{kx!3(m- z^?)7HA40Sp{yS~|#x-!lx&(QP+wH`~qs0C=i!^#A|> diff --git a/.local/lib/python2.7/site-packages/pynvim/compat.py b/.local/lib/python2.7/site-packages/pynvim/compat.py deleted file mode 100644 index 01e45db1..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/compat.py +++ /dev/null @@ -1,57 +0,0 @@ -"""Code for compatibility across Python versions.""" - -import sys -import warnings -from imp import find_module as original_find_module - - -IS_PYTHON3 = sys.version_info >= (3, 0) - - -if IS_PYTHON3: - def find_module(fullname, path): - """Compatibility wrapper for imp.find_module. - - Automatically decodes arguments of find_module, in Python3 - they must be Unicode - """ - if isinstance(fullname, bytes): - fullname = fullname.decode() - if isinstance(path, bytes): - path = path.decode() - elif isinstance(path, list): - newpath = [] - for element in path: - if isinstance(element, bytes): - newpath.append(element.decode()) - else: - newpath.append(element) - path = newpath - return original_find_module(fullname, path) - - # There is no 'long' type in Python3 just int - long = int - unicode_errors_default = 'surrogateescape' -else: - find_module = original_find_module - unicode_errors_default = 'ignore' - -NUM_TYPES = (int, long, float) - - -def check_async(async_, kwargs, default): - """Return a value of 'async' in kwargs or default when async_ is None. - - This helper function exists for backward compatibility (See #274). - It shows a warning message when 'async' in kwargs is used to note users. - """ - if async_ is not None: - return async_ - elif 'async' in kwargs: - warnings.warn( - '"async" attribute is deprecated. Use "async_" instead.', - DeprecationWarning, - ) - return kwargs.pop('async') - else: - return default diff --git a/.local/lib/python2.7/site-packages/pynvim/compat.pyc b/.local/lib/python2.7/site-packages/pynvim/compat.pyc deleted file mode 100644 index 4735a3f0661eb4e244cac51949f9a186e4a06cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1807 zcmb_dUvC>l5TCts&b8~1fS}?Dt-?bMDreLpQltvCq)7CE5ZQ@JjnHwv8`~S-?H;>( zaV;fJ;Unh73+4$osI`f@v493;GAhBlv~9bO7(bv zGKL>*>{3a7hS~@vO)UPV-{Fvvp>;0iLgq=S^149baul>63y5^ubwFS9I}rPo3KHA0NX-=rxEo-Y?-i zfYT0~hpm@O2JGkWZ=~)1C8=G|1$6zE3y9oNa1)=N`ITZm_*YHVI;|?yzFMNJ;#0+*=-P!{;)a*Cv3!R7L<;BP z`fwPzV)ls$Bc!pZ%#gwdm~AW?>rR_Xt!qIcjP)`Xy3FmnBvV=}giMR%Rvbg8Z0``6 z*F_=I61_PgVrjc1mAJmElscD5}7y5VKL`LG&=* z9~oislPb+t=>iSO<(Vi)4e;V>Gj-Y%`95s6tf&RjQhOkCc(cp_Y?9mJn78pzj zArrEk`1+VX$<-KbttC(SSz6TS+Ic@U8=2jAom{P{(bQv2ji0A=VflKAr0f(DE(||Z z5?inwFKNHT!b7T-nWYKi_?jAKJj7;HCvunnXEKKqME>E!{m(v%JtkgQZkB3I5aXmR zg+y0$i$bE~*i7Trdh#+e6_kJfxnx$b#(kEhmZF{??JY;&xr%vAe4 z<|hVuqm=AX{>EaO$A?1)M~@$uu18fHn()%u`TZ#$Dn`JvL$A##OMAog<*DyKr~<-HeeA8SvS}YhVGHOdGm&E(bh+nB)Q6x z#3y1lX6)eVH}qt9gpd6IJDj)AY9i!Z`H6lpNse9}fAihpqsBtoW{8zs*n4D9H*Z0L zgnn(3wg|py^FmRVdZcuC@@;bb>gemq*qPi^=uM8Q@9C4~;s4V8H}E4H1p}(kZnzUh OtoI(RAYxIl6aE7*8@z@9 diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py deleted file mode 100644 index 8da22e04..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Msgpack-rpc subpackage. - -This package implements a msgpack-rpc client. While it was designed for -handling some Nvim particularities(server->client requests for example), the -code here should work with other msgpack-rpc servers. -""" -from pynvim.msgpack_rpc.async_session import AsyncSession -from pynvim.msgpack_rpc.event_loop import EventLoop -from pynvim.msgpack_rpc.msgpack_stream import MsgpackStream -from pynvim.msgpack_rpc.session import ErrorResponse, Session -from pynvim.util import get_client_info - - -__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session', - 'ErrorResponse') - - -def session(transport_type='stdio', *args, **kwargs): - loop = EventLoop(transport_type, *args, **kwargs) - msgpack_stream = MsgpackStream(loop) - async_session = AsyncSession(msgpack_stream) - session = Session(async_session) - session.request(b'nvim_set_client_info', - *get_client_info('client', 'remote', {}), async_=True) - return session - - -def tcp_session(address, port=7450): - """Create a msgpack-rpc session from a tcp address/port.""" - return session('tcp', address, port) - - -def socket_session(path): - """Create a msgpack-rpc session from a unix domain socket.""" - return session('socket', path) - - -def stdio_session(): - """Create a msgpack-rpc session from stdin/stdout.""" - return session('stdio') - - -def child_session(argv): - """Create a msgpack-rpc session from a new Nvim instance.""" - return session('child', argv) diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.pyc b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.pyc deleted file mode 100644 index de1dbb53fbd8dba1c92032f256f5dd84841d14fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2478 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 O_Px9Q%icr(e)(^3$^N7O diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py deleted file mode 100644 index 50f704e1..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Event loop abstraction subpackage. - -Tries to use pyuv as a backend, falling back to the asyncio implementation. -""" - -from pynvim.compat import IS_PYTHON3 - -# on python3 we only support asyncio, as we expose it to plugins -if IS_PYTHON3: - from pynvim.msgpack_rpc.event_loop.asyncio import AsyncioEventLoop - EventLoop = AsyncioEventLoop -else: - try: - # libuv is fully implemented in C, use it when available - from pynvim.msgpack_rpc.event_loop.uv import UvEventLoop - EventLoop = UvEventLoop - except ImportError: - # asyncio(trollius on python 2) is pure python and should be more - # portable across python implementations - from pynvim.msgpack_rpc.event_loop.asyncio import AsyncioEventLoop - EventLoop = AsyncioEventLoop - - -__all__ = ('EventLoop') diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.pyc b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.pyc deleted file mode 100644 index c4fe615640f28702b20192f8440424b2db23b5d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmah`O^?$s5FICJyA7(;69-PdpzQ$?1VYOJA&^*!mC%B^i-2%2Zem)q{!;8j2)2vS>zN-oo%;8_PhAK~JEXU<}O&KAU66#1UNO(Eb8KNNoI%76iUDBdDg( zjNxK2iDDeWX)jEm%34SH%7>QML0Ut7w{pC`;%ial`DH7Gr@_+B3+jfhr`%IcSC}A7 z^N9Z7N=dWc5-}}o1ZE7TmX=EGl+gGFk9~_=-r`vhd^zL@XBX__*UNVw&Y$hLIdX4y zrCVk1QP?hW4yG1l0cu`t8C8%!^CQCsbJSRw)8;epnE9cN^% zs|yj=z~UN;z4B$$xJ+XW{clazFO!%VMV@JA+i=>ph&w^J9>x|Jf&=((=$0F+MfubE zPP9*6l!dZ2SEZ7x(hXr_&C}wf^fHLY`+wn)j}w)DNiPr5OU9&;fw2P1kFftsZJSPs aR~g>@eS~o`Pse0Vrb(L2Nls=dV)_T{#IU6R diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py deleted file mode 100644 index 997095e6..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py +++ /dev/null @@ -1,163 +0,0 @@ -"""Event loop implementation that uses the `asyncio` standard module. - -The `asyncio` module was added to python standard library on 3.4, and it -provides a pure python implementation of an event loop library. It is used -as a fallback in case pyuv is not available(on python implementations other -than CPython). - -Earlier python versions are supported through the `trollius` package, which -is a backport of `asyncio` that works on Python 2.6+. -""" -from __future__ import absolute_import - -import logging -import os -import sys -from collections import deque - -try: - # For python 3.4+, use the standard library module - import asyncio -except (ImportError, SyntaxError): - # Fallback to trollius - import trollius as asyncio - -from pynvim.msgpack_rpc.event_loop.base import BaseEventLoop - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) - -loop_cls = asyncio.SelectorEventLoop -if os.name == 'nt': - from asyncio.windows_utils import PipeHandle - import msvcrt - - # On windows use ProactorEventLoop which support pipes and is backed by the - # more powerful IOCP facility - # NOTE: we override in the stdio case, because it doesn't work. - loop_cls = asyncio.ProactorEventLoop - - -class AsyncioEventLoop(BaseEventLoop, asyncio.Protocol, - asyncio.SubprocessProtocol): - - """`BaseEventLoop` subclass that uses `asyncio` as a backend.""" - - def connection_made(self, transport): - """Used to signal `asyncio.Protocol` of a successful connection.""" - self._transport = transport - self._raw_transport = transport - if isinstance(transport, asyncio.SubprocessTransport): - self._transport = transport.get_pipe_transport(0) - - def connection_lost(self, exc): - """Used to signal `asyncio.Protocol` of a lost connection.""" - self._on_error(exc.args[0] if exc else 'EOF') - - def data_received(self, data): - """Used to signal `asyncio.Protocol` of incoming data.""" - if self._on_data: - self._on_data(data) - return - self._queued_data.append(data) - - def pipe_connection_lost(self, fd, exc): - """Used to signal `asyncio.SubprocessProtocol` of a lost connection.""" - self._on_error(exc.args[0] if exc else 'EOF') - - def pipe_data_received(self, fd, data): - """Used to signal `asyncio.SubprocessProtocol` of incoming data.""" - if fd == 2: # stderr fd number - self._on_stderr(data) - elif self._on_data: - self._on_data(data) - else: - self._queued_data.append(data) - - def process_exited(self): - """Used to signal `asyncio.SubprocessProtocol` when the child exits.""" - self._on_error('EOF') - - def _init(self): - self._loop = loop_cls() - self._queued_data = deque() - self._fact = lambda: self - self._raw_transport = None - - def _connect_tcp(self, address, port): - coroutine = self._loop.create_connection(self._fact, address, port) - self._loop.run_until_complete(coroutine) - - def _connect_socket(self, path): - if os.name == 'nt': - coroutine = self._loop.create_pipe_connection(self._fact, path) - else: - coroutine = self._loop.create_unix_connection(self._fact, path) - self._loop.run_until_complete(coroutine) - - def _connect_stdio(self): - if os.name == 'nt': - pipe = PipeHandle(msvcrt.get_osfhandle(sys.stdin.fileno())) - else: - pipe = sys.stdin - coroutine = self._loop.connect_read_pipe(self._fact, pipe) - self._loop.run_until_complete(coroutine) - pass # replaces next logging statement - #debug("native stdin connection successful") - - # Make sure subprocesses don't clobber stdout, - # send the output to stderr instead. - rename_stdout = os.dup(sys.stdout.fileno()) - os.dup2(sys.stderr.fileno(), sys.stdout.fileno()) - - if os.name == 'nt': - pipe = PipeHandle(msvcrt.get_osfhandle(rename_stdout)) - else: - pipe = os.fdopen(rename_stdout, 'wb') - coroutine = self._loop.connect_write_pipe(self._fact, pipe) - self._loop.run_until_complete(coroutine) - pass # replaces next logging statement - #debug("native stdout connection successful") - - def _connect_child(self, argv): - if os.name != 'nt': - self._child_watcher = asyncio.get_child_watcher() - self._child_watcher.attach_loop(self._loop) - coroutine = self._loop.subprocess_exec(self._fact, *argv) - self._loop.run_until_complete(coroutine) - - def _start_reading(self): - pass - - def _send(self, data): - self._transport.write(data) - - def _run(self): - while self._queued_data: - self._on_data(self._queued_data.popleft()) - self._loop.run_forever() - - def _stop(self): - self._loop.stop() - - def _close(self): - if self._raw_transport is not None: - self._raw_transport.close() - self._loop.close() - - def _threadsafe_call(self, fn): - self._loop.call_soon_threadsafe(fn) - - def _setup_signals(self, signals): - if os.name == 'nt': - # add_signal_handler is not supported in win32 - self._signals = [] - return - - self._signals = list(signals) - for signum in self._signals: - self._loop.add_signal_handler(signum, self._on_signal, signum) - - def _teardown_signals(self): - for signum in self._signals: - self._loop.remove_signal_handler(signum) diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.pyc b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.pyc deleted file mode 100644 index 0d2da3bdc89ed50bb815ee74f77e90b93b32db7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8311 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 b*=n~|y^F0?{9W;$1DlXbmS&gQOWuD04%NOn diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.py b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.py deleted file mode 100644 index cabb8c63..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.py +++ /dev/null @@ -1,192 +0,0 @@ -"""Common code for event loop implementations.""" -import logging -import signal -import threading - - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) - - -# When signals are restored, the event loop library may reset SIGINT to SIG_DFL -# which exits the program. To be able to restore the python interpreter to it's -# default state, we keep a reference to the default handler -default_int_handler = signal.getsignal(signal.SIGINT) -main_thread = threading.current_thread() - - -class BaseEventLoop(object): - - """Abstract base class for all event loops. - - Event loops act as the bottom layer for Nvim sessions created by this - library. They hide system/transport details behind a simple interface for - reading/writing bytes to the connected Nvim instance. - - This class exposes public methods for interacting with the underlying - event loop and delegates implementation-specific work to the following - methods, which subclasses are expected to implement: - - - `_init()`: Implementation-specific initialization - - `_connect_tcp(address, port)`: connect to Nvim using tcp/ip - - `_connect_socket(path)`: Same as tcp, but use a UNIX domain socket or - named pipe. - - `_connect_stdio()`: Use stdin/stdout as the connection to Nvim - - `_connect_child(argv)`: Use the argument vector `argv` to spawn an - embedded Nvim that has its stdin/stdout connected to the event loop. - - `_start_reading()`: Called after any of _connect_* methods. Can be used - to perform any post-connection setup or validation. - - `_send(data)`: Send `data`(byte array) to Nvim. The data is only - - `_run()`: Runs the event loop until stopped or the connection is closed. - calling the following methods when some event happens: - actually sent when the event loop is running. - - `_on_data(data)`: When Nvim sends some data. - - `_on_signal(signum)`: When a signal is received. - - `_on_error(message)`: When a non-recoverable error occurs(eg: - connection lost) - - `_stop()`: Stop the event loop - - `_interrupt(data)`: Like `stop()`, but may be called from other threads - this. - - `_setup_signals(signals)`: Add implementation-specific listeners for - for `signals`, which is a list of OS-specific signal numbers. - - `_teardown_signals()`: Removes signal listeners set by `_setup_signals` - """ - - def __init__(self, transport_type, *args): - """Initialize and connect the event loop instance. - - The only arguments are the transport type and transport-specific - configuration, like this: - - >>> BaseEventLoop('tcp', '127.0.0.1', 7450) - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - >>> BaseEventLoop('socket', '/tmp/nvim-socket') - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - >>> BaseEventLoop('stdio') - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - >>> BaseEventLoop('child', - ['nvim', '--embed', '--headless', '-u', 'NONE']) - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - - This calls the implementation-specific initialization - `_init`, one of the `_connect_*` methods(based on `transport_type`) - and `_start_reading()` - """ - self._transport_type = transport_type - self._signames = dict((k, v) for v, k in signal.__dict__.items() - if v.startswith('SIG')) - self._on_data = None - self._error = None - self._init() - try: - getattr(self, '_connect_{}'.format(transport_type))(*args) - except Exception as e: - self.close() - raise e - self._start_reading() - - def connect_tcp(self, address, port): - """Connect to tcp/ip `address`:`port`. Delegated to `_connect_tcp`.""" - pass # replaces next logging statement - #info('Connecting to TCP address: %s:%d', address, port) - self._connect_tcp(address, port) - - def connect_socket(self, path): - """Connect to socket at `path`. Delegated to `_connect_socket`.""" - pass # replaces next logging statement - #info('Connecting to %s', path) - self._connect_socket(path) - - def connect_stdio(self): - """Connect using stdin/stdout. Delegated to `_connect_stdio`.""" - pass # replaces next logging statement - #info('Preparing stdin/stdout for streaming data') - self._connect_stdio() - - def connect_child(self, argv): - """Connect a new Nvim instance. Delegated to `_connect_child`.""" - pass # replaces next logging statement - #info('Spawning a new nvim instance') - self._connect_child(argv) - - def send(self, data): - """Queue `data` for sending to Nvim.""" - pass # replaces next logging statement - #debug("Sending '%s'", data) - self._send(data) - - def threadsafe_call(self, fn): - """Call a function in the event loop thread. - - This is the only safe way to interact with a session from other - threads. - """ - self._threadsafe_call(fn) - - def run(self, data_cb): - """Run the event loop.""" - if self._error: - err = self._error - if isinstance(self._error, KeyboardInterrupt): - # KeyboardInterrupt is not destructive(it may be used in - # the REPL). - # After throwing KeyboardInterrupt, cleanup the _error field - # so the loop may be started again - self._error = None - raise err - self._on_data = data_cb - if threading.current_thread() == main_thread: - self._setup_signals([signal.SIGINT, signal.SIGTERM]) - pass # replaces next logging statement - #debug('Entering event loop') - self._run() - pass # replaces next logging statement - #debug('Exited event loop') - if threading.current_thread() == main_thread: - self._teardown_signals() - signal.signal(signal.SIGINT, default_int_handler) - self._on_data = None - - def stop(self): - """Stop the event loop.""" - self._stop() - pass # replaces next logging statement - #debug('Stopped event loop') - - def close(self): - """Stop the event loop.""" - self._close() - pass # replaces next logging statement - #debug('Closed event loop') - - def _on_signal(self, signum): - msg = 'Received {}'.format(self._signames[signum]) - pass # replaces next logging statement - #debug(msg) - if signum == signal.SIGINT and self._transport_type == 'stdio': - # When the transport is stdio, we are probably running as a Nvim - # child process. In that case, we don't want to be killed by - # ctrl+C - return - cls = Exception - if signum == signal.SIGINT: - cls = KeyboardInterrupt - self._error = cls(msg) - self.stop() - - def _on_error(self, error): - pass # replaces next logging statement - #debug(error) - self._error = OSError(error) - self.stop() - - def _on_interrupt(self): - self.stop() diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.pyc b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/base.pyc deleted file mode 100644 index c698f6666e36ce88db96a9a700f2de0d708ebf02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8381 zcmd5>Taz0{74DJN@@j3ziGdWM5~@iGR!+Qa^qf9@?w8)?e=cp^ z_~&pCsq&|Z?>F$Vf5s3iwU04SaYLnn+Q-Dt8*0B%&6{e!sZ5{_Hk3K1J_cAznU*>@ zFXN_+ZPje-pI7^vYJW?ahB~+)<3$0#q)byCJfS|uX_r+DWKXIw&e>3ZP+a`w{!=7i zuXB!cy@cUTKAYv4j`G;(ab9S1WHP7IJfG`iHc!nAkD*KQ%yyIi;%C=g!mb~O*4!oJ z+W@Q?4)}(Mags710ViV=_HaIU!`Yl{kTg!tm85~s_?)bqS8+=wn<_ppleUUCWwNE> zwoERlcuOW1ReV7vmsEUFCQqpNl1whE{$A$^67$-5rEZU`E5gX>5eU~&8d@vdhG}|& zW82-@()bb1LLL%V#2yGO}PTVpN7qocxv&cu4O1ax8rQ<{v5 zuvm8W{i#{%X#yeJrFCZ3138(U=Y`X;abc2LJu=fIi*=~22wo?dGsQTJL@$C32gFG> z=^Yn|!#7TH2BhUeU6f~;iAaEum1Ne1S!7CR{p2A zzEV&F7tK3i92d~vHBC(rSNW3kiWnD`vH)l=nSTO<&7(u(I`hy?xpyy|8L^dUeoc=S zPA_0vL419h)aVk ziG}r5^nLaD6Bd&rQboIaJxgO!OCUeoA%4vtDE_Ng<+qJ_moGgYQq!C(Z~jj6GFaN05YA z8sKUtsRRK3Fti<*mp@|~0&iw-mcoF?F0g-zSOlF4@ESch59DSzp*oP3mS+QUR?Fgj z9#aOj3?V^IB*fY#n@qAW?eJ?cqYz~y0~gmRsKP`hIa;w-o@R<7FFG@LTsSc&HfDLY zgDv@yDZ)_-E(xdeC|VS@V?Bd1eqx$_Liz-3LchthE-sMKtoMv`o}waD-5N;p@k99tjKXDEaLn)t0^KWeKUiA zp;fP?)#)IfNozPb#l=u4iW*3v8~Ctbc#G-uFBl#M>Y-8trJR&8$m9-%2r7>a78!4% zaKRrTkl&j!L0b2dO+Fs92^TE2a$9^xS%5MISh=&I9yZjU@cRAi1-0QWs>3Z+{7D6m znkwMlOS1Q2Q~f?rS)e}Pnp8Xij@avvSi6hyUKRe~)9~@qbk=MGS@u+(q(bk*2kGf` znDqIGF15!n&Pr7Fc*$H`<-h~BS3gD^JQO_{`a)~#E&^r>R1vyEi4eNAt_ z{K}2)b^N}Jha2Dj!F6xzLLVv_GYX?a-I>7&#M$8Yv{)1;@QRhc5WL&1+*j+{&J_t# zletR|yQ#NNoxQE|(E&1o#P}@NVFj(XCEIS-oIQqYpV~-y&&}q&47Jftx%QPOotbv~ zt4^h)^6hK24yarH{A!!Brr>vWBwzdK6u~M*q?M-y$K7{!?{0tim0+`G!q=s+T%SVg zI&UphKBkl->%Is?oXj)0>{xtzRp7litP*I4Wk2$8riZn=4(P$dl{6S55CYd~l$y|p z%}ulXSjL#^7!Z3t{GR%CLp=)ABLptAZqn)@junV^vNCR{_k!P`_X!Z47)~A0?A?27 zw?mwWfI!A$ElchWUm}_+)xD1Bs??E;haF6n4EBA@dQ(&by@T8?OmY3yUN_C*{ynrC zz4;RLeD+HBM$abB?934-kZdj1X(qjyop5PT%%h$Z69e{oJqoBhU)nZszdk`$dN40; z-N%DvJZ-6VU@u@&7iS+m+U;D%g5xkaEmX%XaS}P#!o;T=w@J7GR|f;fWCG%5*6}=_ zrBD^f#$D*rLzm@=U>QhBAR8qVIW%=@g3bvcN&r|2;(_??K8VbmEvtY>C=`riC%C3u zQYj}|la2-8F>IhPwxR%YHVP=^M0+0$Zh%7jGzRr-J9xg)4%)$1&vYOQdHcJ6dR&=Gom1@o4EuYD3BxPWcg0J%vdvD!A(jIlWGp zm7L0+4Xw|Ro!+Ml$OG0g63?i}@$ba_y_jfyM0ZA_q5YqxWsH?dI*c>bN2Eh=FP)F^ zW@SP*v0jPBx5g*?(oZ!VX=Q7{h%eT}NSDjQMJ{I~4&Gs%q9DaWC5_5XK98;Z=!8H* zotfjc+m}ysCQ0UxmxyoKdHBjw*q{F&L?fgWUr;pP!MFeBKfq~U#1hc4s5>mdLp@$(xI;s=fg7K-M%*`%<)s`; z7%70z;1N!m4jYb*K1LIY;9K3t`OCPlx@$bqmDcr1*`2OR{Zg_|f~-OL5|{_<5>5!2 z;vQ#bWLi=%_%6C4<#)BTTN0z2c;@F0*Z+mVN1@`ia)KfY>DVu#NO z@D1q;G4YEV3RS>Ci#;P!(;?vJvVBvbRyf#_@q(HF6>@P= zU131;i9CzFB^|iku1Y=oHL!pSqBS!>8l^1yjD%AECAenveW+t%`k7gdaQ0 zi#`)>pHWLH9IsFKk(4dCB`I+6Q)<~U3-YqDdgdXgTl@Yd5wSQ!6?$*?zT|97@89kJ zT>M~w%OW9Uuzr)^$WUy?;UaY?#N1$tx;Zt)S^+@69YiCkbiu(H*%u85l>ZT5_FEW~ zluTF7T}0v34z2{xHn*BrP&hpuNHzbtG9F8+$J{AZg^&+iynH(A6vhIA7gvAfHy>03 zC1J%Azr}~BeeW)`>6KxA246Ieft1c?%~+on_BVW1Ofg82L+V$UvY3Ds*12$3IC`L- zf&cmr%wI*((_fX>aL0x?{;T|N)E?X#H%ZvBf_sn7fJL}4u9Xl$fQtd;yzJkUXuz#v z0uKf%|kqakKs_oKc+pD;#z>P$_+u4su)N(>y`gD=lW? zHR#jiJ4)>tc@O(gUJ3h#?e8Rq$wLKCH^05H5wy^CwDI|5Dg7LP97I>&`ib-oAVyjo z}w9sbNDU? za?*c^!)qL9w&J7x+nl}0;Vy<1!!r9aZz=jXPSKm}vlv=0v>NTJ?NWGN;DL%g99SPCMAK$TOJ3u0aDh!QK&vLXQ~iaReAYXO&!)`tft~A)vv3=I>x3{R97eXqOSg? z)QwWVKb+=Ld+llNz-=}!qr|r2G##{h{Xrb{(F|-aO+z%!1FxMuklwW>q*N z#GDFeg_u|2oDg?ZI4{J43hxN9sKNyy?y7K6h$R)?6=GS1OG3P(!et@uDZSTzhb%lq zb@UqBM=div?#6*JW0)QdE{B&#t-!Q`)^X5%9wp&QmpHIc2i8%{HY%&sxkur>Qp&GL zvr78BB6UsO2;l<~HwQ>KqM>ZF_z)N<$epWq+LVK>p`v7k5b;ocK2<>^`Pf_~T`YjU zH1Pvz)!A|+KkuYTWbd-Cno~8Y0^*lAhDEs8I)s;By2JtG?aMdZ{rz;OvP0vOj53p2l8X5E_m%aXK z-<-0`&j#Jqi0Umotqw0&@S*V7OM3PWcja-Ex8U9Pn)vM!cbc}<;9DGc2}NELNmRkp5PRoSG#L>POoJXK?>A$?Fx%A$hBJLcQmD@c;m zwsH_#Hf{ao`WGl|o=@asETls8PtvR(Si1jAPh543C(4X*vLN0ZHg8of=b|EJat_YslvEmQy$zWgapA+ z(lzxQvfmN8v0VsU<~TtL9Gg2&+LV%rLNAe8Mm4e`k%boXqjbno7}%iAGnYu81xXl3 zB6p5zs)&9M)kL5!4o2O0ADiYl&wKBC^T1eers#?F2N={`aZ_Q z$-Rv$35U_ko`t;yc4(w+qpa_n-f0rV6O}g4K_ME7RC!$n3X&{OQ4Bo}LJ{l)JpNSz zbm78ijh)heMIk*{2d>z$&afzWI1MLwL3U~;!k&bouxE0=5rwPRz2LFXV*b0%{tZ+v z+)|*0{?g$?f8hzx<6L1dJ7W)7-62m58~-WaK-A)7{=6azGIyO@19X+^kflL151&2gm~UF2ay+QeCmdiTcj zu3gscX2>l!ql&CK$QgLESS+0a(HFh_69@_xF}13m*H!jZng}*f zSFGmLG4HLp`-21;-1OWSqVUC2g^Y?#@g5`^rG5~vju<>Vw}VO?mW#$bh2B8bX2N5| zvDqw0%m5L_w^zCImG84*BG(4}15V|-1~*oxHorp4Ns3NS{PN^vQ7Q}GBldVMItJe9 z=7BpUAt9;=Q-VALERn(={KLpa6v5ktqADgicSwtnR8W5as?22c12$1^JqYszJ^}v& zh$4I8Fj!rvRGKT-tYJun@=9^Z$F!`)90al=ojtb zP2R|#@Kz?-?k&WnSsd;-fe<216`t_vooH}753u+DJwACHlLK0lJ||hDS+qj~u`UEju6pUIPz zL>aK>n7$~q%lw&p z(k$o#+H%QhaGsw8{mA#7GWz{A9L8)?UcMiuUEkNlO>Ui%;z$Z0X{=;I`o|nyVfAxX zYplLt^=nq!tbW6)!|J!JxVB~-*MCIitE%wy#JKH8onr=jYf=XVfx@jD{r+%Z+m!}cb68HYTGWPzyQog^h9OJ)&G%Z|? cGBL*G8T^qG?Jv2#Jo?wYId8EtS6Qt756_$KssI20 diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.py b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.py deleted file mode 100644 index 1a192f25..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.py +++ /dev/null @@ -1,68 +0,0 @@ -"""Msgpack handling in the event loop pipeline.""" -import logging - -from msgpack import Packer, Unpacker - -from pynvim.compat import unicode_errors_default - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) - - -class MsgpackStream(object): - - """Two-way msgpack stream that wraps a event loop byte stream. - - This wraps the event loop interface for reading/writing bytes and - exposes an interface for reading/writing msgpack documents. - """ - - def __init__(self, event_loop): - """Wrap `event_loop` on a msgpack-aware interface.""" - self.loop = event_loop - self._packer = Packer(unicode_errors=unicode_errors_default) - self._unpacker = Unpacker(unicode_errors=unicode_errors_default) - self._message_cb = None - - def threadsafe_call(self, fn): - """Wrapper around `BaseEventLoop.threadsafe_call`.""" - self.loop.threadsafe_call(fn) - - def send(self, msg): - """Queue `msg` for sending to Nvim.""" - pass # replaces next logging statement - #debug('sent %s', msg) - self.loop.send(self._packer.pack(msg)) - - def run(self, message_cb): - """Run the event loop to receive messages from Nvim. - - While the event loop is running, `message_cb` will be called whenever - a message has been successfully parsed from the input stream. - """ - self._message_cb = message_cb - self.loop.run(self._on_data) - self._message_cb = None - - def stop(self): - """Stop the event loop.""" - self.loop.stop() - - def close(self): - """Close the event loop.""" - self.loop.close() - - def _on_data(self, data): - self._unpacker.feed(data) - while True: - try: - pass # replaces next logging statement - #debug('waiting for message...') - msg = next(self._unpacker) - pass # replaces next logging statement - #debug('received message: %s', msg) - self._message_cb(msg) - except StopIteration: - pass # replaces next logging statement - #debug('unpacker needs more data...') - break diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.pyc b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/msgpack_stream.pyc deleted file mode 100644 index 1dbce56cbdd3a0580d9f25329c0e0919da1345c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3267 zcmcguO^+Kz5Um+|y|I(c<^yu!t1n1KN^As&AcO!V;($a}$!uW3m+|aO+n&w1$4vLc zSt)P{e~4efksrekfcJW4y}LmQC+yuWw|ly4s$RXS>ds$#gZsZv<5b#D2j5>~*k2(s zkqKlVStvyy6HM^mks_33MdIZg^m{`sx*7(2cn6|3d0J*V)>Tzj zHqP`csSD@!@Th&~p{sPV+`z+=4>0T_2n~2(H)Kd)U_Bs#<(zbh6DK=_hLav$?N*X6x+a;lcC*VdZ=hZCpPRkE@wx#;=vsne?2Ga3vOK2I09 zZFjzgQf{2CW=X2mtgI9~%Yf#1UFD9bQWKP$%xlpvR;Bg70r#7Zo!Oa{X}v^1?8u)_ z83GPc>LG^x9O7jlFGXVD599)IAtD}dr6UfQU0eZjq2CO^NC)b%V~8Vwpr$_fF@rx< zr2!_b9ru!TQt5M>NA5b#T#odCM;k8`p@InC5_!syb8$nH$kU|Hg}P;qKXFhR?XGfp zsjW@sI!=!pzEPjm#mo&bIk#_!U*d)R0kiRyXa>|4U`TZkUln5Zw(B8$x`9hnwsq zA}HcM{{Tk|1oPDQgO(+K;z(5gs}=){N~b!1u2q{MR?Vt%*+A6PDAuW?MPBIF3pq+x zRT~3P?*ivdf=$&rFA8<671^dUwO(k06svr#p*9qNW;fb|#YSzEta!&)6U~5o^oxi?3KSt0!`*#Gy9% zs*RNVrAg1OyhIm8`9AvjwshT&JR3;$NP-}EjD;UDjxxmByLvDrT_SclUy){7XMXau zsb%9<1IX9i YFPb=hNk1*o>IK)rJK>FRKX|Y656{RHR{#J2 diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.py b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.py deleted file mode 100644 index 446e4673..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.py +++ /dev/null @@ -1,253 +0,0 @@ -"""Synchronous msgpack-rpc session layer.""" -import logging -import threading -from collections import deque -from traceback import format_exc - -import greenlet - -from pynvim.compat import check_async - -logger = logging.getLogger(__name__) -error, debug, info, warn = (logger.error, logger.debug, logger.info, - logger.warning,) - - -class Session(object): - - """Msgpack-rpc session layer that uses coroutines for a synchronous API. - - This class provides the public msgpack-rpc API required by this library. - It uses the greenlet module to handle requests and notifications coming - from Nvim with a synchronous API. - """ - - def __init__(self, async_session): - """Wrap `async_session` on a synchronous msgpack-rpc interface.""" - self._async_session = async_session - self._request_cb = self._notification_cb = None - self._pending_messages = deque() - self._is_running = False - self._setup_exception = None - self.loop = async_session.loop - self._loop_thread = None - - def threadsafe_call(self, fn, *args, **kwargs): - """Wrapper around `AsyncSession.threadsafe_call`.""" - def handler(): - try: - fn(*args, **kwargs) - except Exception: - pass # replaces next logging statement - #warn("error caught while excecuting async callback\n%s\n", - #format_exc()) - - def greenlet_wrapper(): - gr = greenlet.greenlet(handler) - gr.switch() - - self._async_session.threadsafe_call(greenlet_wrapper) - - def next_message(self): - """Block until a message(request or notification) is available. - - If any messages were previously enqueued, return the first in queue. - If not, run the event loop until one is received. - """ - if self._is_running: - raise Exception('Event loop already running') - if self._pending_messages: - return self._pending_messages.popleft() - self._async_session.run(self._enqueue_request_and_stop, - self._enqueue_notification_and_stop) - if self._pending_messages: - return self._pending_messages.popleft() - - def request(self, method, *args, **kwargs): - """Send a msgpack-rpc request and block until as response is received. - - If the event loop is running, this method must have been called by a - request or notification handler running on a greenlet. In that case, - send the quest and yield to the parent greenlet until a response is - available. - - When the event loop is not running, it will perform a blocking request - like this: - - Send the request - - Run the loop until the response is available - - Put requests/notifications received while waiting into a queue - - If the `async_` flag is present and True, a asynchronous notification - is sent instead. This will never block, and the return value or error - is ignored. - """ - async_ = check_async(kwargs.pop('async_', None), kwargs, False) - if async_: - self._async_session.notify(method, args) - return - - if kwargs: - raise ValueError("request got unsupported keyword argument(s): {}" - .format(', '.join(kwargs.keys()))) - - if self._is_running: - v = self._yielding_request(method, args) - else: - v = self._blocking_request(method, args) - if not v: - # EOF - raise OSError('EOF') - err, rv = v - if err: - pass # replaces next logging statement - #info("'Received error: %s", err) - raise self.error_wrapper(err) - return rv - - def run(self, request_cb, notification_cb, setup_cb=None): - """Run the event loop to receive requests and notifications from Nvim. - - Like `AsyncSession.run()`, but `request_cb` and `notification_cb` are - inside greenlets. - """ - self._request_cb = request_cb - self._notification_cb = notification_cb - self._is_running = True - self._setup_exception = None - self._loop_thread = threading.current_thread() - - def on_setup(): - try: - setup_cb() - except Exception as e: - self._setup_exception = e - self.stop() - - if setup_cb: - # Create a new greenlet to handle the setup function - gr = greenlet.greenlet(on_setup) - gr.switch() - - if self._setup_exception: - pass # replaces next logging statement - #error('Setup error: {}'.format(self._setup_exception)) - raise self._setup_exception - - # Process all pending requests and notifications - while self._pending_messages: - msg = self._pending_messages.popleft() - getattr(self, '_on_{}'.format(msg[0]))(*msg[1:]) - self._async_session.run(self._on_request, self._on_notification) - self._is_running = False - self._request_cb = None - self._notification_cb = None - self._loop_thread = None - - if self._setup_exception: - raise self._setup_exception - - def stop(self): - """Stop the event loop.""" - self._async_session.stop() - - def close(self): - """Close the event loop.""" - self._async_session.close() - - def _yielding_request(self, method, args): - gr = greenlet.getcurrent() - parent = gr.parent - - def response_cb(err, rv): - pass # replaces next logging statement - #debug('response is available for greenlet %s, switching back', gr) - gr.switch(err, rv) - - self._async_session.request(method, args, response_cb) - pass # replaces next logging statement - #debug('yielding from greenlet %s to wait for response', gr) - return parent.switch() - - def _blocking_request(self, method, args): - result = [] - - def response_cb(err, rv): - result.extend([err, rv]) - self.stop() - - self._async_session.request(method, args, response_cb) - self._async_session.run(self._enqueue_request, - self._enqueue_notification) - return result - - def _enqueue_request_and_stop(self, name, args, response): - self._enqueue_request(name, args, response) - self.stop() - - def _enqueue_notification_and_stop(self, name, args): - self._enqueue_notification(name, args) - self.stop() - - def _enqueue_request(self, name, args, response): - self._pending_messages.append(('request', name, args, response,)) - - def _enqueue_notification(self, name, args): - self._pending_messages.append(('notification', name, args,)) - - def _on_request(self, name, args, response): - def handler(): - try: - rv = self._request_cb(name, args) - pass # replaces next logging statement - #debug('greenlet %s finished executing, ' - #+ 'sending %s as response', gr, rv) - response.send(rv) - except ErrorResponse as err: - pass # replaces next logging statement - #warn("error response from request '%s %s': %s", name, - #args, format_exc()) - response.send(err.args[0], error=True) - except Exception as err: - pass # replaces next logging statement - #warn("error caught while processing request '%s %s': %s", name, - #args, format_exc()) - response.send(repr(err) + "\n" + format_exc(5), error=True) - pass # replaces next logging statement - #debug('greenlet %s is now dying...', gr) - - # Create a new greenlet to handle the request - gr = greenlet.greenlet(handler) - pass # replaces next logging statement - #debug('received rpc request, greenlet %s will handle it', gr) - gr.switch() - - def _on_notification(self, name, args): - def handler(): - try: - self._notification_cb(name, args) - pass # replaces next logging statement - #debug('greenlet %s finished executing', gr) - except Exception: - pass # replaces next logging statement - #warn("error caught while processing notification '%s %s': %s", - #name, args, format_exc()) - - pass # replaces next logging statement - #debug('greenlet %s is now dying...', gr) - - gr = greenlet.greenlet(handler) - pass # replaces next logging statement - #debug('received rpc notification, greenlet %s will handle it', gr) - gr.switch() - - -class ErrorResponse(BaseException): - - """Raise this in a request handler to respond with a given error message. - - Unlike when other exceptions are caught, this gives full control off the - error response sent. When "ErrorResponse(msg)" is caught "msg" will be - sent verbatim as the error response.No traceback will be appended. - """ - - pass diff --git a/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.pyc b/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/session.pyc deleted file mode 100644 index 066f492982af8958775c61ba0e6a80d8c7b73be8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9960 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 eRCqDVwb$=osKLl9SX{8{-ne}J>g zJHSP%5a5uz9CC)c)$?|9`R9jJa2#t|ztK#BKm*XC3(zIF0(=Rg1Yd!uz|TO;z|TR< z!7o58z%M~8!LLB9z^_59q2QYpxDEId5GNF$f_MXZ3*YNA)_6~F`(XXW;HI4o?LH>F zNYmZWtNVUu8v8<{UJ(nI1pS0jd7bwvdfx|)3(9MwqBh7p6KHG0E(brSpwPyUNe2ns z5NRBgG{1*9B5o;6`w4Y?400dieO*unX9U+|rsFreIRguIeAv;1ju~CWP%^N++nS5_ zUsr0@&;OB9Mi06vv=+Ag!>piHJ5F&Xg(Z!lqk<`+hYr*w85g3 Z4bi!HS3c^=nXl|Rabi(^DbFh?{sNVNg(3g| diff --git a/.local/lib/python2.7/site-packages/pynvim/plugin/decorators.py b/.local/lib/python2.7/site-packages/pynvim/plugin/decorators.py deleted file mode 100644 index e7cc5280..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/plugin/decorators.py +++ /dev/null @@ -1,175 +0,0 @@ -"""Decorators used by python host plugin system.""" - -import inspect -import logging - -from pynvim.compat import IS_PYTHON3, unicode_errors_default - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) -__all__ = ('plugin', 'rpc_export', 'command', 'autocmd', 'function', - 'encoding', 'decode', 'shutdown_hook') - - -def plugin(cls): - """Tag a class as a plugin. - - This decorator is required to make the class methods discoverable by the - plugin_load method of the host. - """ - cls._nvim_plugin = True - # the _nvim_bind attribute is set to True by default, meaning that - # decorated functions have a bound Nvim instance as first argument. - # For methods in a plugin-decorated class this is not required, because - # the class initializer will already receive the nvim object. - predicate = lambda fn: hasattr(fn, '_nvim_bind') - for _, fn in inspect.getmembers(cls, predicate): - if IS_PYTHON3: - fn._nvim_bind = False - else: - fn.im_func._nvim_bind = False - return cls - - -def rpc_export(rpc_method_name, sync=False): - """Export a function or plugin method as a msgpack-rpc request handler.""" - def dec(f): - f._nvim_rpc_method_name = rpc_method_name - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = False - return f - return dec - - -def command(name, nargs=0, complete=None, range=None, count=None, bang=False, - register=False, sync=False, allow_nested=False, eval=None): - """Tag a function or plugin method as a Nvim command handler.""" - def dec(f): - f._nvim_rpc_method_name = 'command:{}'.format(name) - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = True - - opts = {} - - if range is not None: - opts['range'] = '' if range is True else str(range) - elif count is not None: - opts['count'] = count - - if bang: - opts['bang'] = '' - - if register: - opts['register'] = '' - - if nargs: - opts['nargs'] = nargs - - if complete: - opts['complete'] = complete - - if eval: - opts['eval'] = eval - - if not sync and allow_nested: - rpc_sync = "urgent" - else: - rpc_sync = sync - - f._nvim_rpc_spec = { - 'type': 'command', - 'name': name, - 'sync': rpc_sync, - 'opts': opts - } - return f - return dec - - -def autocmd(name, pattern='*', sync=False, allow_nested=False, eval=None): - """Tag a function or plugin method as a Nvim autocommand handler.""" - def dec(f): - f._nvim_rpc_method_name = 'autocmd:{}:{}'.format(name, pattern) - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = True - - opts = { - 'pattern': pattern - } - - if eval: - opts['eval'] = eval - - if not sync and allow_nested: - rpc_sync = "urgent" - else: - rpc_sync = sync - - f._nvim_rpc_spec = { - 'type': 'autocmd', - 'name': name, - 'sync': rpc_sync, - 'opts': opts - } - return f - return dec - - -def function(name, range=False, sync=False, allow_nested=False, eval=None): - """Tag a function or plugin method as a Nvim function handler.""" - def dec(f): - f._nvim_rpc_method_name = 'function:{}'.format(name) - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = True - - opts = {} - - if range: - opts['range'] = '' if range is True else str(range) - - if eval: - opts['eval'] = eval - - if not sync and allow_nested: - rpc_sync = "urgent" - else: - rpc_sync = sync - - f._nvim_rpc_spec = { - 'type': 'function', - 'name': name, - 'sync': rpc_sync, - 'opts': opts - } - return f - return dec - - -def shutdown_hook(f): - """Tag a function or method as a shutdown hook.""" - f._nvim_shutdown_hook = True - f._nvim_bind = True - return f - - -def decode(mode=unicode_errors_default): - """Configure automatic encoding/decoding of strings.""" - def dec(f): - f._nvim_decode = mode - return f - return dec - - -def encoding(encoding=True): - """DEPRECATED: use pynvim.decode().""" - if isinstance(encoding, str): - encoding = True - - def dec(f): - f._nvim_decode = encoding - return f - return dec diff --git a/.local/lib/python2.7/site-packages/pynvim/plugin/decorators.pyc b/.local/lib/python2.7/site-packages/pynvim/plugin/decorators.pyc deleted file mode 100644 index fb89f6c439d1f255bffaea4ce609dc393d7134a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6041 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 diff --git a/.local/lib/python2.7/site-packages/pynvim/plugin/host.py b/.local/lib/python2.7/site-packages/pynvim/plugin/host.py deleted file mode 100644 index 00af6351..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/plugin/host.py +++ /dev/null @@ -1,276 +0,0 @@ -"""Implements a Nvim host for python plugins.""" -import imp -import inspect -import logging -import os -import os.path -import re -from functools import partial -from traceback import format_exc - -from pynvim.api import decode_if_bytes, walk -from pynvim.compat import IS_PYTHON3, find_module -from pynvim.msgpack_rpc import ErrorResponse -from pynvim.plugin import script_host -from pynvim.util import format_exc_skip, get_client_info - -__all__ = ('Host') - -logger = logging.getLogger(__name__) -error, debug, info, warn = (logger.error, logger.debug, logger.info, - logger.warning,) - -host_method_spec = {"poll": {}, "specs": {"nargs": 1}, "shutdown": {}} - - -class Host(object): - - """Nvim host for python plugins. - - Takes care of loading/unloading plugins and routing msgpack-rpc - requests/notifications to the appropriate handlers. - """ - - def __init__(self, nvim): - """Set handlers for plugin_load/plugin_unload.""" - self.nvim = nvim - self._specs = {} - self._loaded = {} - self._load_errors = {} - self._notification_handlers = { - 'nvim_error_event': self._on_error_event - } - self._request_handlers = { - 'poll': lambda: 'ok', - 'specs': self._on_specs_request, - 'shutdown': self.shutdown - } - - # Decode per default for Python3 - self._decode_default = IS_PYTHON3 - - def _on_async_err(self, msg): - # uncaught python exception - self.nvim.err_write(msg, async_=True) - - def _on_error_event(self, kind, msg): - # error from nvim due to async request - # like nvim.command(..., async_=True) - errmsg = "{}: Async request caused an error:\n{}\n".format( - self.name, decode_if_bytes(msg)) - self.nvim.err_write(errmsg, async_=True) - return errmsg - - def start(self, plugins): - """Start listening for msgpack-rpc requests and notifications.""" - self.nvim.run_loop(self._on_request, - self._on_notification, - lambda: self._load(plugins), - err_cb=self._on_async_err) - - def shutdown(self): - """Shutdown the host.""" - self._unload() - self.nvim.stop_loop() - - def _wrap_delayed_function(self, cls, delayed_handlers, name, sync, - module_handlers, path, *args): - # delete the delayed handlers to be sure - for handler in delayed_handlers: - method_name = handler._nvim_registered_name - if handler._nvim_rpc_sync: - del self._request_handlers[method_name] - else: - del self._notification_handlers[method_name] - # create an instance of the plugin and pass the nvim object - plugin = cls(self._configure_nvim_for(cls)) - - # discover handlers in the plugin instance - self._discover_functions(plugin, module_handlers, path, False) - - if sync: - self._request_handlers[name](*args) - else: - self._notification_handlers[name](*args) - - def _wrap_function(self, fn, sync, decode, nvim_bind, name, *args): - if decode: - args = walk(decode_if_bytes, args, decode) - if nvim_bind is not None: - args.insert(0, nvim_bind) - try: - return fn(*args) - except Exception: - if sync: - msg = ("error caught in request handler '{} {}':\n{}" - .format(name, args, format_exc_skip(1))) - raise ErrorResponse(msg) - else: - msg = ("error caught in async handler '{} {}'\n{}\n" - .format(name, args, format_exc_skip(1))) - self._on_async_err(msg + "\n") - - def _on_request(self, name, args): - """Handle a msgpack-rpc request.""" - if IS_PYTHON3: - name = decode_if_bytes(name) - handler = self._request_handlers.get(name, None) - if not handler: - msg = self._missing_handler_error(name, 'request') - pass # replaces next logging statement - #error(msg) - raise ErrorResponse(msg) - - pass # replaces next logging statement - #debug('calling request handler for "%s", args: "%s"', name, args) - rv = handler(*args) - pass # replaces next logging statement - #debug("request handler for '%s %s' returns: %s", name, args, rv) - return rv - - def _on_notification(self, name, args): - """Handle a msgpack-rpc notification.""" - if IS_PYTHON3: - name = decode_if_bytes(name) - handler = self._notification_handlers.get(name, None) - if not handler: - msg = self._missing_handler_error(name, 'notification') - pass # replaces next logging statement - #error(msg) - self._on_async_err(msg + "\n") - return - - pass # replaces next logging statement - #debug('calling notification handler for "%s", args: "%s"', name, args) - handler(*args) - - def _missing_handler_error(self, name, kind): - msg = 'no {} handler registered for "{}"'.format(kind, name) - pathmatch = re.match(r'(.+):[^:]+:[^:]+', name) - if pathmatch: - loader_error = self._load_errors.get(pathmatch.group(1)) - if loader_error is not None: - msg = msg + "\n" + loader_error - return msg - - def _load(self, plugins): - has_script = False - for path in plugins: - err = None - if path in self._loaded: - pass # replaces next logging statement - #error('{} is already loaded'.format(path)) - continue - try: - if path == "script_host.py": - module = script_host - has_script = True - else: - directory, name = os.path.split(os.path.splitext(path)[0]) - file, pathname, descr = find_module(name, [directory]) - module = imp.load_module(name, file, pathname, descr) - handlers = [] - self._discover_classes(module, handlers, path) - self._discover_functions(module, handlers, path, False) - if not handlers: - pass # replaces next logging statement - #error('{} exports no handlers'.format(path)) - continue - self._loaded[path] = {'handlers': handlers, 'module': module} - except Exception as e: - err = ('Encountered {} loading plugin at {}: {}\n{}' - .format(type(e).__name__, path, e, format_exc(5))) - pass # replaces next logging statement - #error(err) - self._load_errors[path] = err - - kind = ("script-host" if len(plugins) == 1 and has_script - else "rplugin-host") - info = get_client_info(kind, 'host', host_method_spec) - self.name = info[0] - self.nvim.api.set_client_info(*info, async_=True) - - def _unload(self): - for path, plugin in self._loaded.items(): - handlers = plugin['handlers'] - for handler in handlers: - method_name = handler._nvim_registered_name - if hasattr(handler, '_nvim_shutdown_hook'): - handler() - elif handler._nvim_rpc_sync: - del self._request_handlers[method_name] - else: - del self._notification_handlers[method_name] - self._specs = {} - self._loaded = {} - - def _discover_classes(self, module, handlers, plugin_path): - for _, cls in inspect.getmembers(module, inspect.isclass): - if getattr(cls, '_nvim_plugin', False): - # discover handlers in the plugin instance - self._discover_functions(cls, handlers, plugin_path, True) - - def _discover_functions(self, obj, handlers, plugin_path, delay): - def predicate(o): - return hasattr(o, '_nvim_rpc_method_name') - - cls_handlers = [] - specs = [] - objdecode = getattr(obj, '_nvim_decode', self._decode_default) - for _, fn in inspect.getmembers(obj, predicate): - method = fn._nvim_rpc_method_name - if fn._nvim_prefix_plugin_path: - method = '{}:{}'.format(plugin_path, method) - sync = fn._nvim_rpc_sync - if delay: - fn_wrapped = partial(self._wrap_delayed_function, obj, - cls_handlers, method, sync, - handlers, plugin_path) - else: - decode = getattr(fn, '_nvim_decode', objdecode) - nvim_bind = None - if fn._nvim_bind: - nvim_bind = self._configure_nvim_for(fn) - - fn_wrapped = partial(self._wrap_function, fn, - sync, decode, nvim_bind, method) - self._copy_attributes(fn, fn_wrapped) - fn_wrapped._nvim_registered_name = method - # register in the rpc handler dict - if sync: - if method in self._request_handlers: - raise Exception(('Request handler for "{}" is ' - + 'already registered').format(method)) - self._request_handlers[method] = fn_wrapped - else: - if method in self._notification_handlers: - raise Exception(('Notification handler for "{}" is ' - + 'already registered').format(method)) - self._notification_handlers[method] = fn_wrapped - if hasattr(fn, '_nvim_rpc_spec'): - specs.append(fn._nvim_rpc_spec) - handlers.append(fn_wrapped) - cls_handlers.append(fn_wrapped) - if specs: - self._specs[plugin_path] = specs - - def _copy_attributes(self, fn, fn2): - # Copy _nvim_* attributes from the original function - for attr in dir(fn): - if attr.startswith('_nvim_'): - setattr(fn2, attr, getattr(fn, attr)) - - def _on_specs_request(self, path): - if IS_PYTHON3: - path = decode_if_bytes(path) - if path in self._load_errors: - self.nvim.out_write(self._load_errors[path] + '\n') - return self._specs.get(path, 0) - - def _configure_nvim_for(self, obj): - # Configure a nvim instance for obj (checks encoding configuration) - nvim = self.nvim - decode = getattr(obj, '_nvim_decode', self._decode_default) - if decode: - nvim = nvim.with_decode(decode) - return nvim diff --git a/.local/lib/python2.7/site-packages/pynvim/plugin/host.pyc b/.local/lib/python2.7/site-packages/pynvim/plugin/host.pyc deleted file mode 100644 index ce610b51960c91df43ced7de188787c59f8ed343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10213 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 (3, 4): - from importlib.machinery import PathFinder - - PYTHON_SUBDIR = 'python3' -else: - PYTHON_SUBDIR = 'python2' - - -@plugin -class ScriptHost(object): - - """Provides an environment for running python plugins created for Vim.""" - - def __init__(self, nvim): - """Initialize the legacy python-vim environment.""" - self.setup(nvim) - # context where all code will run - self.module = ModuleType('__main__') - nvim.script_context = self.module - # it seems some plugins assume 'sys' is already imported, so do it now - exec('import sys', self.module.__dict__) - self.legacy_vim = LegacyVim.from_nvim(nvim) - sys.modules['vim'] = self.legacy_vim - # mimic Vim by importing vim module by default. - exec('import vim', self.module.__dict__) - # Handle DirChanged. #296 - nvim.command( - 'au DirChanged * call rpcnotify({}, "python_chdir", v:event.cwd)' - .format(nvim.channel_id), async_=True) - # XXX: Avoid race condition. - # https://github.com/neovim/pynvim/pull/296#issuecomment-358970531 - # TODO(bfredl): when host initialization has been refactored, - # to make __init__ safe again, the following should work: - # os.chdir(nvim.eval('getcwd()', async_=False)) - nvim.command('call rpcnotify({}, "python_chdir", getcwd())' - .format(nvim.channel_id), async_=True) - - def setup(self, nvim): - """Setup import hooks and global streams. - - This will add import hooks for importing modules from runtime - directories and patch the sys module so 'print' calls will be - forwarded to Nvim. - """ - self.nvim = nvim - pass # replaces next logging statement - #info('install import hook/path') - self.hook = path_hook(nvim) - sys.path_hooks.append(self.hook) - nvim.VIM_SPECIAL_PATH = '_vim_path_' - sys.path.append(nvim.VIM_SPECIAL_PATH) - pass # replaces next logging statement - #info('redirect sys.stdout and sys.stderr') - self.saved_stdout = sys.stdout - self.saved_stderr = sys.stderr - sys.stdout = RedirectStream(lambda data: nvim.out_write(data)) - sys.stderr = RedirectStream(lambda data: nvim.err_write(data)) - - def teardown(self): - """Restore state modified from the `setup` call.""" - nvim = self.nvim - pass # replaces next logging statement - #info('uninstall import hook/path') - sys.path.remove(nvim.VIM_SPECIAL_PATH) - sys.path_hooks.remove(self.hook) - pass # replaces next logging statement - #info('restore sys.stdout and sys.stderr') - sys.stdout = self.saved_stdout - sys.stderr = self.saved_stderr - - @rpc_export('python_execute', sync=True) - def python_execute(self, script, range_start, range_stop): - """Handle the `python` ex command.""" - self._set_current_range(range_start, range_stop) - try: - exec(script, self.module.__dict__) - except Exception: - raise ErrorResponse(format_exc_skip(1)) - - @rpc_export('python_execute_file', sync=True) - def python_execute_file(self, file_path, range_start, range_stop): - """Handle the `pyfile` ex command.""" - self._set_current_range(range_start, range_stop) - with open(file_path) as f: - script = compile(f.read(), file_path, 'exec') - try: - exec(script, self.module.__dict__) - except Exception: - raise ErrorResponse(format_exc_skip(1)) - - @rpc_export('python_do_range', sync=True) - def python_do_range(self, start, stop, code): - """Handle the `pydo` ex command.""" - self._set_current_range(start, stop) - nvim = self.nvim - start -= 1 - fname = '_vim_pydo' - - # define the function - function_def = 'def %s(line, linenr):\n %s' % (fname, code,) - exec(function_def, self.module.__dict__) - # get the function - function = self.module.__dict__[fname] - while start < stop: - # Process batches of 5000 to avoid the overhead of making multiple - # API calls for every line. Assuming an average line length of 100 - # bytes, approximately 488 kilobytes will be transferred per batch, - # which can be done very quickly in a single API call. - sstart = start - sstop = min(start + 5000, stop) - lines = nvim.current.buffer.api.get_lines(sstart, sstop, True) - - exception = None - newlines = [] - linenr = sstart + 1 - for i, line in enumerate(lines): - result = function(line, linenr) - if result is None: - # Update earlier lines, and skip to the next - if newlines: - end = sstart + len(newlines) - 1 - nvim.current.buffer.api.set_lines(sstart, end, - True, newlines) - sstart += len(newlines) + 1 - newlines = [] - pass - elif isinstance(result, basestring): - newlines.append(result) - else: - exception = TypeError('pydo should return a string ' - + 'or None, found %s instead' - % result.__class__.__name__) - break - linenr += 1 - - start = sstop - if newlines: - end = sstart + len(newlines) - nvim.current.buffer.api.set_lines(sstart, end, True, newlines) - if exception: - raise exception - # delete the function - del self.module.__dict__[fname] - - @rpc_export('python_eval', sync=True) - def python_eval(self, expr): - """Handle the `pyeval` vim function.""" - return eval(expr, self.module.__dict__) - - @rpc_export('python_chdir', sync=False) - def python_chdir(self, cwd): - """Handle working directory changes.""" - os.chdir(cwd) - - def _set_current_range(self, start, stop): - current = self.legacy_vim.current - current.range = current.buffer.range(start, stop) - - -class RedirectStream(io.IOBase): - def __init__(self, redirect_handler): - self.redirect_handler = redirect_handler - - def write(self, data): - self.redirect_handler(data) - - def writelines(self, seq): - self.redirect_handler('\n'.join(seq)) - - -if IS_PYTHON3: - num_types = (int, float) -else: - num_types = (int, long, float) # noqa: F821 - - -def num_to_str(obj): - if isinstance(obj, num_types): - return str(obj) - else: - return obj - - -class LegacyVim(Nvim): - def eval(self, expr): - obj = self.request("vim_eval", expr) - return walk(num_to_str, obj) - - -# Copied/adapted from :help if_pyth. -def path_hook(nvim): - def _get_paths(): - if nvim._thread_invalid(): - return [] - return discover_runtime_directories(nvim) - - def _find_module(fullname, oldtail, path): - idx = oldtail.find('.') - if idx > 0: - name = oldtail[:idx] - tail = oldtail[idx + 1:] - fmr = imp.find_module(name, path) - module = imp.find_module(fullname[:-len(oldtail)] + name, *fmr) - return _find_module(fullname, tail, module.__path__) - else: - return imp.find_module(fullname, path) - - class VimModuleLoader(object): - def __init__(self, module): - self.module = module - - def load_module(self, fullname, path=None): - # Check sys.modules, required for reload (see PEP302). - try: - return sys.modules[fullname] - except KeyError: - pass - return imp.load_module(fullname, *self.module) - - class VimPathFinder(object): - @staticmethod - def find_module(fullname, path=None): - """Method for Python 2.7 and 3.3.""" - try: - return VimModuleLoader( - _find_module(fullname, fullname, path or _get_paths())) - except ImportError: - return None - - @staticmethod - def find_spec(fullname, target=None): - """Method for Python 3.4+.""" - return PathFinder.find_spec(fullname, _get_paths(), target) - - def hook(path): - if path == nvim.VIM_SPECIAL_PATH: - return VimPathFinder - else: - raise ImportError - - return hook - - -def discover_runtime_directories(nvim): - rv = [] - for rtp in nvim.list_runtime_paths(): - if not os.path.exists(rtp): - continue - for subdir in ['pythonx', PYTHON_SUBDIR]: - path = os.path.join(rtp, subdir) - if os.path.exists(path): - rv.append(path) - return rv diff --git a/.local/lib/python2.7/site-packages/pynvim/plugin/script_host.pyc b/.local/lib/python2.7/site-packages/pynvim/plugin/script_host.pyc deleted file mode 100644 index 412a002e3d501d19a13d5d02264dececdf60bafa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11496 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 diff --git a/.local/lib/python2.7/site-packages/pynvim/util.py b/.local/lib/python2.7/site-packages/pynvim/util.py deleted file mode 100644 index dcc979df..00000000 --- a/.local/lib/python2.7/site-packages/pynvim/util.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Shared utility functions.""" - -import sys -from traceback import format_exception - - -def format_exc_skip(skip, limit=None): - """Like traceback.format_exc but allow skipping the first frames.""" - etype, val, tb = sys.exc_info() - for i in range(skip): - tb = tb.tb_next - return (''.join(format_exception(etype, val, tb, limit))).rstrip() - - -# Taken from SimpleNamespace in python 3 -class Version: - """Helper class for version info.""" - - def __init__(self, **kwargs): - """Create the Version object.""" - self.__dict__.update(kwargs) - - def __repr__(self): - """Return str representation of the Version.""" - keys = sorted(self.__dict__) - items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys) - return "{}({})".format(type(self).__name__, ", ".join(items)) - - def __eq__(self, other): - """Check if version is same as other.""" - return self.__dict__ == other.__dict__ - - -def get_client_info(kind, type_, method_spec): - """Returns a tuple describing the client.""" - name = "python{}-{}".format(sys.version_info[0], kind) - attributes = {"license": "Apache v2", - "website": "github.com/neovim/pynvim"} - return (name, VERSION.__dict__, type_, method_spec, attributes) - - -VERSION = Version(major=0, minor=4, patch=2, prerelease='') diff --git a/.local/lib/python2.7/site-packages/pynvim/util.pyc b/.local/lib/python2.7/site-packages/pynvim/util.pyc deleted file mode 100644 index da8f863184c733a9abaa049e69bc6098b3089643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2649 zcmcImZEqVz5T3IgCr*Y6biqej7gko|$tJen4=%<9(Uio0sRAN&WB5_2+;6rej)uTKIj5;c|$Cs0SHP zQlm7W9wzwKDXr18PQ5w>I7k}w7H2Dz;JZyplim`&A^N4)q-2#By;U-puTj#XWSx>* zlx$G4Ny%+WwxHVR;iyK3?RWUayAX$?s5FV1d7D~)t_HI#_BPL4$Nq!QK|6qs--a0E z6t1Yxspz+Gc|sCJ>cTHZ)#z`Z_ab-Z!v2 z&TSUrmpuE7D@$9nc`B#;MtL~3Q|o1B{CQ#IEhkY5_o3PM98KGXAQA2*X5CRfHQjOU zW~O}dMYogYag=sb+wT_Vew1fVJI}k$dh@t|!_m+<>}Mx-+U1;eptFTbuH&HD7Pj88 zXH>fz>;#*E_;X}R$C=}O{;)M)W4K2U2Iv9gAOW;Mz*J|fFsd31MV_osc-ZD}xcd;_ zo3t>ciqptB1q;+k^#aAQ?8JOM`_1D=4EHVsP%svZaEb%KI=Ia4hdA9YP2`bZqhWMWn%c%nKK!%RAmgUM-B4&6=1nq#Vg6^r-puutq9)x=ju z6q_K(`VJGI?azu20WAXh18EXo|Bf(#32+}2L5RmSh9gw510o>SW8ngpZc1_D4v== z_l-6?CM*a!AASR3S*WX~$95il8y^1f^FhUHexM?Q%@QF4Q%8F?aB9$#6732UWv)xi zBuQ)J(Gt;v&5hSwP8&M1uHqy%GxnGLZ8uoQpIAAK#(61WtClvyl8uyQ5&3w8^kK;` zMENXDY9ePsrc(ttt~KEU7NW=2.7, < 3 -Description-Content-Type: text/x-rst diff --git a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/SOURCES.txt b/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/SOURCES.txt deleted file mode 100644 index e8d658e3..00000000 --- a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/SOURCES.txt +++ /dev/null @@ -1,120 +0,0 @@ -.travis.yml -AUTHORS -COPYING -MANIFEST.in -Makefile -README.rst -TODO.rst -appveyor.yml -check.py -overlapped.c -pypi.bat -releaser.conf -runtests.py -setup.cfg -setup.py -tox.ini -update-asyncio-step1.sh -update-asyncio-step2.sh -update-asyncio-step3.sh -doc/Makefile -doc/asyncio.rst -doc/changelog.rst -doc/conf.py -doc/deprecated.rst -doc/dev.rst -doc/index.rst -doc/install.rst -doc/libraries.rst -doc/make.bat -doc/trollius.jpg -doc/using.rst -examples/cacheclt.py -examples/cachesvr.py -examples/child_process.py -examples/crawl.py -examples/echo_client_tulip.py -examples/echo_server_tulip.py -examples/fetch0.py -examples/fetch1.py -examples/fetch2.py -examples/fetch3.py -examples/fuzz_as_completed.py -examples/hello_callback.py -examples/hello_coroutine.py -examples/interop_asyncio.py -examples/shell.py -examples/simple_tcp_server.py -examples/sink.py -examples/source.py -examples/source1.py -examples/stacks.py -examples/subprocess_attach_read_pipe.py -examples/subprocess_attach_write_pipe.py -examples/subprocess_shell.py -examples/tcp_echo.py -examples/timing_tcp_server.py -examples/udp_echo.py -tests/echo.py -tests/echo2.py -tests/echo3.py -tests/keycert3.pem -tests/pycacert.pem -tests/sample.crt -tests/sample.key -tests/ssl_cert.pem -tests/ssl_key.pem -tests/test_asyncio.py -tests/test_base_events.py -tests/test_events.py -tests/test_futures.py -tests/test_locks.py -tests/test_proactor_events.py -tests/test_queues.py -tests/test_selector_events.py -tests/test_selectors.py -tests/test_sslproto.py -tests/test_streams.py -tests/test_subprocess.py -tests/test_tasks.py -tests/test_transports.py -tests/test_unix_events.py -tests/test_windows_events.py -tests/test_windows_utils.py -trollius/__init__.py -trollius/base_events.py -trollius/base_subprocess.py -trollius/compat.py -trollius/constants.py -trollius/coroutines.py -trollius/events.py -trollius/executor.py -trollius/futures.py -trollius/locks.py -trollius/log.py -trollius/proactor_events.py -trollius/protocols.py -trollius/py27_weakrefset.py -trollius/py33_exceptions.py -trollius/py33_winapi.py -trollius/py3_ssl.py -trollius/queues.py -trollius/selector_events.py -trollius/selectors.py -trollius/sslproto.py -trollius/streams.py -trollius/subprocess.py -trollius/tasks.py -trollius/test_support.py -trollius/test_utils.py -trollius/time_monotonic.py -trollius/transports.py -trollius/unix_events.py -trollius/windows_events.py -trollius/windows_utils.py -trollius.egg-info/PKG-INFO -trollius.egg-info/SOURCES.txt -trollius.egg-info/dependency_links.txt -trollius.egg-info/not-zip-safe -trollius.egg-info/requires.txt -trollius.egg-info/top_level.txt \ No newline at end of file diff --git a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/dependency_links.txt b/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/installed-files.txt b/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/installed-files.txt deleted file mode 100644 index 3ec613d2..00000000 --- a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/installed-files.txt +++ /dev/null @@ -1,68 +0,0 @@ -../trollius/__init__.py -../trollius/__init__.pyc -../trollius/base_events.py -../trollius/base_events.pyc -../trollius/base_subprocess.py -../trollius/base_subprocess.pyc -../trollius/compat.py -../trollius/compat.pyc -../trollius/constants.py -../trollius/constants.pyc -../trollius/coroutines.py -../trollius/coroutines.pyc -../trollius/events.py -../trollius/events.pyc -../trollius/executor.py -../trollius/executor.pyc -../trollius/futures.py -../trollius/futures.pyc -../trollius/locks.py -../trollius/locks.pyc -../trollius/log.py -../trollius/log.pyc -../trollius/proactor_events.py -../trollius/proactor_events.pyc -../trollius/protocols.py -../trollius/protocols.pyc -../trollius/py27_weakrefset.py -../trollius/py27_weakrefset.pyc -../trollius/py33_exceptions.py -../trollius/py33_exceptions.pyc -../trollius/py33_winapi.py -../trollius/py33_winapi.pyc -../trollius/py3_ssl.py -../trollius/py3_ssl.pyc -../trollius/queues.py -../trollius/queues.pyc -../trollius/selector_events.py -../trollius/selector_events.pyc -../trollius/selectors.py -../trollius/selectors.pyc -../trollius/sslproto.py -../trollius/sslproto.pyc -../trollius/streams.py -../trollius/streams.pyc -../trollius/subprocess.py -../trollius/subprocess.pyc -../trollius/tasks.py -../trollius/tasks.pyc -../trollius/test_support.py -../trollius/test_support.pyc -../trollius/test_utils.py -../trollius/test_utils.pyc -../trollius/time_monotonic.py -../trollius/time_monotonic.pyc -../trollius/transports.py -../trollius/transports.pyc -../trollius/unix_events.py -../trollius/unix_events.pyc -../trollius/windows_events.py -../trollius/windows_events.pyc -../trollius/windows_utils.py -../trollius/windows_utils.pyc -PKG-INFO -SOURCES.txt -dependency_links.txt -not-zip-safe -requires.txt -top_level.txt diff --git a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/not-zip-safe b/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/requires.txt b/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/requires.txt deleted file mode 100644 index 624b76ef..00000000 --- a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/requires.txt +++ /dev/null @@ -1,2 +0,0 @@ -six -futures diff --git a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/top_level.txt b/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/top_level.txt deleted file mode 100644 index 7b0645d2..00000000 --- a/.local/lib/python2.7/site-packages/trollius-2.2.post1-py2.7.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -trollius diff --git a/.local/lib/python2.7/site-packages/trollius/__init__.py b/.local/lib/python2.7/site-packages/trollius/__init__.py deleted file mode 100644 index a1379fbc..00000000 --- a/.local/lib/python2.7/site-packages/trollius/__init__.py +++ /dev/null @@ -1,59 +0,0 @@ -"""The trollius package, tracking PEP 3156.""" - -import sys - -# The selectors module is in the stdlib in Python 3.4 but not in 3.3. -# Do this first, so the other submodules can use "from . import selectors". -# Prefer asyncio/selectors.py over the stdlib one, as ours may be newer. -try: - from . import selectors -except ImportError: - import selectors # Will also be exported. - -if sys.platform == 'win32': - # Similar thing for _overlapped. - try: - from . import _overlapped - except ImportError: - import _overlapped # Will also be exported. - -# This relies on each of the submodules having an __all__ variable. -from .base_events import * -from .coroutines import * -from .events import * -from .futures import * -from .locks import * -from .protocols import * -from .py33_exceptions import * -from .queues import * -from .streams import * -from .subprocess import * -from .tasks import * -from .transports import * - -__all__ = (base_events.__all__ + - coroutines.__all__ + - events.__all__ + - py33_exceptions.__all__ + - futures.__all__ + - locks.__all__ + - protocols.__all__ + - queues.__all__ + - streams.__all__ + - subprocess.__all__ + - tasks.__all__ + - transports.__all__) - -if sys.platform == 'win32': # pragma: no cover - from .windows_events import * - __all__ += windows_events.__all__ -else: - from .unix_events import * # pragma: no cover - __all__ += unix_events.__all__ - -try: - from .py3_ssl import * - __all__ += py3_ssl.__all__ -except ImportError: - # SSL support is optionnal - pass diff --git a/.local/lib/python2.7/site-packages/trollius/__init__.pyc b/.local/lib/python2.7/site-packages/trollius/__init__.pyc deleted file mode 100644 index da4b5d7681ad957358e357a626f1b61b8a911d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmZuvU2oGc6unN?cFX#?b?XB{>SM)61FK*>AmD)_At5x4Nt-GmD^0vLt7~Vrv#rkv ziHH3#UidZq0JyH3um=+5o@1Zu<7?mezZ=2#$8W#Juzo6t@9@*V2tWcb!AKzSfD@Py zSau=tA=v=#!NP}$59CxlgblU<^8nNs2qEkIl`06FF#?wrNGdS*K;0D<)s;mRCRMb! zx+^Vy+_PAzsGSL{0=KOJuffThZI*1SWI@TcOI9ygqh!sJwMy15S*K(>aKdVExeIL5 z#va>p&~Okq*mh8N&~(sp(00&qu(N^*`rW^iZ)AO>E^dcf*Jd4Jmgp77-gC-cp)4O1 z%Dz+f3*}UF%DeoD-5|CF*uO7>P21K1hLaiV8znhUbKTFPcphD_Cpd#F6&L-Z@lk*D z{Kd;*`UjuSDgFpBu)%Cu2gX@!q|(OzDmSSZ9XN3thg4oO#iJ}^iJP>`9u0aJP0i{w zkujylN3NIJAi%K=#;*Rj$fPo3r7+rJGai|9sTRjxkui-lqwJaqqfLO5u~afQsbJbv zaky6OPUpGF6;9hCxs2y}ReYwTk+J03v~WIKjz*N-#w;_b6wcx*XE`pj7TPElE!;*r zpW@n>Y3FDnjgGbgyfvY1*=`M`5$AZoCQ5iWiM-K8z4nB;NNSe;Bf!| diff --git a/.local/lib/python2.7/site-packages/trollius/base_events.py b/.local/lib/python2.7/site-packages/trollius/base_events.py deleted file mode 100644 index c5e6effd..00000000 --- a/.local/lib/python2.7/site-packages/trollius/base_events.py +++ /dev/null @@ -1,1260 +0,0 @@ -"""Base implementation of event loop. - -The event loop can be broken up into a multiplexer (the part -responsible for notifying us of I/O events) and the event loop proper, -which wraps a multiplexer with functionality for scheduling callbacks, -immediately or at a given time in the future. - -Whenever a public API takes a callback, subsequent positional -arguments will be passed to the callback if/when it is called. This -avoids the proliferation of trivial lambdas implementing closures. -Keyword arguments for the callback are not supported; this is a -conscious design decision, leaving the door open for keyword arguments -to modify the meaning of the API call itself. -""" - - -import collections -import heapq -import inspect -import logging -import os -import socket -import subprocess -import sys -import traceback -import warnings -try: - from collections import OrderedDict -except ImportError: - # Python 2.6: use ordereddict backport - from ordereddict import OrderedDict -try: - from threading import get_ident as _get_thread_ident -except ImportError: - # Python 2 - from threading import _get_ident as _get_thread_ident - -from . import compat -from . import coroutines -from . import events -from . import futures -from . import tasks -from .coroutines import coroutine, From, Return -from .executor import get_default_executor -from .log import logger -from .time_monotonic import time_monotonic, time_monotonic_resolution - - -__all__ = ['BaseEventLoop'] - - -# Argument for default thread pool executor creation. -_MAX_WORKERS = 5 - -# Minimum number of _scheduled timer handles before cleanup of -# cancelled handles is performed. -_MIN_SCHEDULED_TIMER_HANDLES = 100 - -# Minimum fraction of _scheduled timer handles that are cancelled -# before cleanup of cancelled handles is performed. -_MIN_CANCELLED_TIMER_HANDLES_FRACTION = 0.5 - -def _format_handle(handle): - cb = handle._callback - if inspect.ismethod(cb) and isinstance(cb.__self__, tasks.Task): - # format the task - return repr(cb.__self__) - else: - return str(handle) - - -def _format_pipe(fd): - if fd == subprocess.PIPE: - return '' - elif fd == subprocess.STDOUT: - return '' - else: - return repr(fd) - - -class _StopError(BaseException): - """Raised to stop the event loop.""" - - -def _check_resolved_address(sock, address): - # Ensure that the address is already resolved to avoid the trap of hanging - # the entire event loop when the address requires doing a DNS lookup. - # - # getaddrinfo() is slow (around 10 us per call): this function should only - # be called in debug mode - family = sock.family - - if family == socket.AF_INET: - host, port = address - elif family == socket.AF_INET6: - host, port = address[:2] - else: - return - - # On Windows, socket.inet_pton() is only available since Python 3.4 - if hasattr(socket, 'inet_pton'): - # getaddrinfo() is slow and has known issue: prefer inet_pton() - # if available - try: - socket.inet_pton(family, host) - except socket.error as exc: - raise ValueError("address must be resolved (IP address), " - "got host %r: %s" - % (host, exc)) - else: - # Use getaddrinfo(flags=AI_NUMERICHOST) to ensure that the address is - # already resolved. - type_mask = 0 - if hasattr(socket, 'SOCK_NONBLOCK'): - type_mask |= socket.SOCK_NONBLOCK - if hasattr(socket, 'SOCK_CLOEXEC'): - type_mask |= socket.SOCK_CLOEXEC - try: - socket.getaddrinfo(host, port, - family, - (sock.type & ~type_mask), - sock.proto, - socket.AI_NUMERICHOST) - except socket.gaierror as err: - raise ValueError("address must be resolved (IP address), " - "got host %r: %s" - % (host, err)) - -def _raise_stop_error(*args): - raise _StopError - - -def _run_until_complete_cb(fut): - exc = fut._exception - if (isinstance(exc, BaseException) - and not isinstance(exc, Exception)): - # Issue #22429: run_forever() already finished, no need to - # stop it. - return - _raise_stop_error() - - -class Server(events.AbstractServer): - - def __init__(self, loop, sockets): - self._loop = loop - self.sockets = sockets - self._active_count = 0 - self._waiters = [] - - def __repr__(self): - return '<%s sockets=%r>' % (self.__class__.__name__, self.sockets) - - def _attach(self): - assert self.sockets is not None - self._active_count += 1 - - def _detach(self): - assert self._active_count > 0 - self._active_count -= 1 - if self._active_count == 0 and self.sockets is None: - self._wakeup() - - def close(self): - sockets = self.sockets - if sockets is None: - return - self.sockets = None - for sock in sockets: - self._loop._stop_serving(sock) - if self._active_count == 0: - self._wakeup() - - def _wakeup(self): - waiters = self._waiters - self._waiters = None - for waiter in waiters: - if not waiter.done(): - waiter.set_result(waiter) - - @coroutine - def wait_closed(self): - if self.sockets is None or self._waiters is None: - raise Return() - waiter = futures.Future(loop=self._loop) - self._waiters.append(waiter) - yield From(waiter) - - -class BaseEventLoop(events.AbstractEventLoop): - - def __init__(self): - self._timer_cancelled_count = 0 - self._closed = False - self._ready = collections.deque() - self._scheduled = [] - self._default_executor = None - self._internal_fds = 0 - # Identifier of the thread running the event loop, or None if the - # event loop is not running - self._thread_id = None - self._clock_resolution = time_monotonic_resolution - self._exception_handler = None - self.set_debug(bool(os.environ.get('TROLLIUSDEBUG'))) - # In debug mode, if the execution of a callback or a step of a task - # exceed this duration in seconds, the slow callback/task is logged. - self.slow_callback_duration = 0.1 - self._current_handle = None - self._task_factory = None - self._coroutine_wrapper_set = False - - def __repr__(self): - return ('<%s running=%s closed=%s debug=%s>' - % (self.__class__.__name__, self.is_running(), - self.is_closed(), self.get_debug())) - - def create_task(self, coro): - """Schedule a coroutine object. - - Return a task object. - """ - self._check_closed() - if self._task_factory is None: - task = tasks.Task(coro, loop=self) - if task._source_traceback: - del task._source_traceback[-1] - else: - task = self._task_factory(self, coro) - return task - - def set_task_factory(self, factory): - """Set a task factory that will be used by loop.create_task(). - - If factory is None the default task factory will be set. - - If factory is a callable, it should have a signature matching - '(loop, coro)', where 'loop' will be a reference to the active - event loop, 'coro' will be a coroutine object. The callable - must return a Future. - """ - if factory is not None and not callable(factory): - raise TypeError('task factory must be a callable or None') - self._task_factory = factory - - def get_task_factory(self): - """Return a task factory, or None if the default one is in use.""" - return self._task_factory - - def _make_socket_transport(self, sock, protocol, waiter=None, - extra=None, server=None): - """Create socket transport.""" - raise NotImplementedError - - def _make_ssl_transport(self, rawsock, protocol, sslcontext, waiter=None, - server_side=False, server_hostname=None, - extra=None, server=None): - """Create SSL transport.""" - raise NotImplementedError - - def _make_datagram_transport(self, sock, protocol, - address=None, waiter=None, extra=None): - """Create datagram transport.""" - raise NotImplementedError - - def _make_read_pipe_transport(self, pipe, protocol, waiter=None, - extra=None): - """Create read pipe transport.""" - raise NotImplementedError - - def _make_write_pipe_transport(self, pipe, protocol, waiter=None, - extra=None): - """Create write pipe transport.""" - raise NotImplementedError - - @coroutine - def _make_subprocess_transport(self, protocol, args, shell, - stdin, stdout, stderr, bufsize, - extra=None, **kwargs): - """Create subprocess transport.""" - raise NotImplementedError - - def _write_to_self(self): - """Write a byte to self-pipe, to wake up the event loop. - - This may be called from a different thread. - - The subclass is responsible for implementing the self-pipe. - """ - raise NotImplementedError - - def _process_events(self, event_list): - """Process selector events.""" - raise NotImplementedError - - def _check_closed(self): - if self._closed: - raise RuntimeError('Event loop is closed') - - def run_forever(self): - """Run until stop() is called.""" - self._check_closed() - if self.is_running(): - raise RuntimeError('Event loop is running.') - self._set_coroutine_wrapper(self._debug) - self._thread_id = _get_thread_ident() - try: - while True: - try: - self._run_once() - except _StopError: - break - finally: - self._thread_id = None - self._set_coroutine_wrapper(False) - - def run_until_complete(self, future): - """Run until the Future is done. - - If the argument is a coroutine, it is wrapped in a Task. - - WARNING: It would be disastrous to call run_until_complete() - with the same coroutine twice -- it would wrap it in two - different Tasks and that can't be good. - - Return the Future's result, or raise its exception. - """ - self._check_closed() - - new_task = not isinstance(future, futures._FUTURE_CLASSES) - future = tasks.ensure_future(future, loop=self) - if new_task: - # An exception is raised if the future didn't complete, so there - # is no need to log the "destroy pending task" message - future._log_destroy_pending = False - - future.add_done_callback(_run_until_complete_cb) - try: - self.run_forever() - except: - if new_task and future.done() and not future.cancelled(): - # The coroutine raised a BaseException. Consume the exception - # to not log a warning, the caller doesn't have access to the - # local task. - future.exception() - raise - future.remove_done_callback(_run_until_complete_cb) - if not future.done(): - raise RuntimeError('Event loop stopped before Future completed.') - - return future.result() - - def stop(self): - """Stop running the event loop. - - Every callback scheduled before stop() is called will run. Callbacks - scheduled after stop() is called will not run. However, those callbacks - will run if run_forever is called again later. - """ - self.call_soon(_raise_stop_error) - - def close(self): - """Close the event loop. - - This clears the queues and shuts down the executor, - but does not wait for the executor to finish. - - The event loop must not be running. - """ - if self.is_running(): - raise RuntimeError("Cannot close a running event loop") - if self._closed: - return - if self._debug: - logger.debug("Close %r", self) - self._closed = True - self._ready.clear() - del self._scheduled[:] - executor = self._default_executor - if executor is not None: - self._default_executor = None - executor.shutdown(wait=False) - - def is_closed(self): - """Returns True if the event loop was closed.""" - return self._closed - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if not self.is_closed(): - warnings.warn("unclosed event loop %r" % self, ResourceWarning) - if not self.is_running(): - self.close() - - def is_running(self): - """Returns True if the event loop is running.""" - return (self._thread_id is not None) - - def time(self): - """Return the time according to the event loop's clock. - - This is a float expressed in seconds since an epoch, but the - epoch, precision, accuracy and drift are unspecified and may - differ per event loop. - """ - return time_monotonic() - - def call_later(self, delay, callback, *args): - """Arrange for a callback to be called at a given time. - - Return a Handle: an opaque object with a cancel() method that - can be used to cancel the call. - - The delay can be an int or float, expressed in seconds. It is - always relative to the current time. - - Each callback will be called exactly once. If two callbacks - are scheduled for exactly the same time, it undefined which - will be called first. - - Any positional arguments after the callback will be passed to - the callback when it is called. - """ - timer = self.call_at(self.time() + delay, callback, *args) - if timer._source_traceback: - del timer._source_traceback[-1] - return timer - - def call_at(self, when, callback, *args): - """Like call_later(), but uses an absolute time. - - Absolute time corresponds to the event loop's time() method. - """ - if (coroutines.iscoroutine(callback) - or coroutines.iscoroutinefunction(callback)): - raise TypeError("coroutines cannot be used with call_at()") - self._check_closed() - if self._debug: - self._check_thread() - timer = events.TimerHandle(when, callback, args, self) - if timer._source_traceback: - del timer._source_traceback[-1] - heapq.heappush(self._scheduled, timer) - timer._scheduled = True - return timer - - def call_soon(self, callback, *args): - """Arrange for a callback to be called as soon as possible. - - This operates as a FIFO queue: callbacks are called in the - order in which they are registered. Each callback will be - called exactly once. - - Any positional arguments after the callback will be passed to - the callback when it is called. - """ - if self._debug: - self._check_thread() - handle = self._call_soon(callback, args) - if handle._source_traceback: - del handle._source_traceback[-1] - return handle - - def _call_soon(self, callback, args): - if (coroutines.iscoroutine(callback) - or coroutines.iscoroutinefunction(callback)): - raise TypeError("coroutines cannot be used with call_soon()") - self._check_closed() - handle = events.Handle(callback, args, self) - if handle._source_traceback: - del handle._source_traceback[-1] - self._ready.append(handle) - return handle - - def _check_thread(self): - """Check that the current thread is the thread running the event loop. - - Non-thread-safe methods of this class make this assumption and will - likely behave incorrectly when the assumption is violated. - - Should only be called when (self._debug == True). The caller is - responsible for checking this condition for performance reasons. - """ - if self._thread_id is None: - return - thread_id = _get_thread_ident() - if thread_id != self._thread_id: - raise RuntimeError( - "Non-thread-safe operation invoked on an event loop other " - "than the current one") - - def call_soon_threadsafe(self, callback, *args): - """Like call_soon(), but thread-safe.""" - handle = self._call_soon(callback, args) - if handle._source_traceback: - del handle._source_traceback[-1] - self._write_to_self() - return handle - - def run_in_executor(self, executor, func, *args): - if (coroutines.iscoroutine(func) - or coroutines.iscoroutinefunction(func)): - raise TypeError("coroutines cannot be used with run_in_executor()") - self._check_closed() - if isinstance(func, events.Handle): - assert not args - assert not isinstance(func, events.TimerHandle) - if func._cancelled: - f = futures.Future(loop=self) - f.set_result(None) - return f - func, args = func._callback, func._args - if executor is None: - executor = self._default_executor - if executor is None: - executor = get_default_executor() - self._default_executor = executor - return futures.wrap_future(executor.submit(func, *args), loop=self) - - def set_default_executor(self, executor): - self._default_executor = executor - - def _getaddrinfo_debug(self, host, port, family, type, proto, flags): - msg = ["%s:%r" % (host, port)] - if family: - msg.append('family=%r' % family) - if type: - msg.append('type=%r' % type) - if proto: - msg.append('proto=%r' % proto) - if flags: - msg.append('flags=%r' % flags) - msg = ', '.join(msg) - logger.debug('Get address info %s', msg) - - t0 = self.time() - addrinfo = socket.getaddrinfo(host, port, family, type, proto, flags) - dt = self.time() - t0 - - msg = ('Getting address info %s took %.3f ms: %r' - % (msg, dt * 1e3, addrinfo)) - if dt >= self.slow_callback_duration: - logger.info(msg) - else: - logger.debug(msg) - return addrinfo - - def getaddrinfo(self, host, port, - family=0, type=0, proto=0, flags=0): - if self._debug: - return self.run_in_executor(None, self._getaddrinfo_debug, - host, port, family, type, proto, flags) - else: - return self.run_in_executor(None, socket.getaddrinfo, - host, port, family, type, proto, flags) - - def getnameinfo(self, sockaddr, flags=0): - return self.run_in_executor(None, socket.getnameinfo, sockaddr, flags) - - @coroutine - def create_connection(self, protocol_factory, host=None, port=None, - ssl=None, family=0, proto=0, flags=0, sock=None, - local_addr=None, server_hostname=None): - """Connect to a TCP server. - - Create a streaming transport connection to a given Internet host and - port: socket family AF_INET or socket.AF_INET6 depending on host (or - family if specified), socket type SOCK_STREAM. protocol_factory must be - a callable returning a protocol instance. - - This method is a coroutine which will try to establish the connection - in the background. When successful, the coroutine returns a - (transport, protocol) pair. - """ - if server_hostname is not None and not ssl: - raise ValueError('server_hostname is only meaningful with ssl') - - if server_hostname is None and ssl: - # Use host as default for server_hostname. It is an error - # if host is empty or not set, e.g. when an - # already-connected socket was passed or when only a port - # is given. To avoid this error, you can pass - # server_hostname='' -- this will bypass the hostname - # check. (This also means that if host is a numeric - # IP/IPv6 address, we will attempt to verify that exact - # address; this will probably fail, but it is possible to - # create a certificate for a specific IP address, so we - # don't judge it here.) - if not host: - raise ValueError('You must set server_hostname ' - 'when using ssl without a host') - server_hostname = host - - if host is not None or port is not None: - if sock is not None: - raise ValueError( - 'host/port and sock can not be specified at the same time') - - f1 = self.getaddrinfo( - host, port, family=family, - type=socket.SOCK_STREAM, proto=proto, flags=flags) - fs = [f1] - if local_addr is not None: - f2 = self.getaddrinfo( - *local_addr, family=family, - type=socket.SOCK_STREAM, proto=proto, flags=flags) - fs.append(f2) - else: - f2 = None - - yield From(tasks.wait(fs, loop=self)) - - infos = f1.result() - if not infos: - raise socket.error('getaddrinfo() returned empty list') - if f2 is not None: - laddr_infos = f2.result() - if not laddr_infos: - raise socket.error('getaddrinfo() returned empty list') - - exceptions = [] - for family, type, proto, cname, address in infos: - try: - sock = socket.socket(family=family, type=type, proto=proto) - sock.setblocking(False) - if f2 is not None: - for _, _, _, _, laddr in laddr_infos: - try: - sock.bind(laddr) - break - except socket.error as exc: - exc = socket.error( - exc.errno, 'error while ' - 'attempting to bind on address ' - '{0!r}: {1}'.format( - laddr, exc.strerror.lower())) - exceptions.append(exc) - else: - sock.close() - sock = None - continue - if self._debug: - logger.debug("connect %r to %r", sock, address) - yield From(self.sock_connect(sock, address)) - except socket.error as exc: - if sock is not None: - sock.close() - exceptions.append(exc) - except: - if sock is not None: - sock.close() - raise - else: - break - else: - if len(exceptions) == 1: - raise exceptions[0] - else: - # If they all have the same str(), raise one. - model = str(exceptions[0]) - if all(str(exc) == model for exc in exceptions): - raise exceptions[0] - # Raise a combined exception so the user can see all - # the various error messages. - raise socket.error('Multiple exceptions: {0}'.format( - ', '.join(str(exc) for exc in exceptions))) - - elif sock is None: - raise ValueError( - 'host and port was not specified and no sock specified') - - sock.setblocking(False) - - transport, protocol = yield From(self._create_connection_transport( - sock, protocol_factory, ssl, server_hostname)) - if self._debug: - # Get the socket from the transport because SSL transport closes - # the old socket and creates a new SSL socket - sock = transport.get_extra_info('socket') - logger.debug("%r connected to %s:%r: (%r, %r)", - sock, host, port, transport, protocol) - raise Return(transport, protocol) - - @coroutine - def _create_connection_transport(self, sock, protocol_factory, ssl, - server_hostname): - protocol = protocol_factory() - waiter = futures.Future(loop=self) - if ssl: - sslcontext = None if isinstance(ssl, bool) else ssl - transport = self._make_ssl_transport( - sock, protocol, sslcontext, waiter, - server_side=False, server_hostname=server_hostname) - else: - transport = self._make_socket_transport(sock, protocol, waiter) - - try: - yield From(waiter) - except: - transport.close() - raise - - raise Return(transport, protocol) - - @coroutine - def create_datagram_endpoint(self, protocol_factory, - local_addr=None, remote_addr=None, - family=0, proto=0, flags=0): - """Create datagram connection.""" - if not (local_addr or remote_addr): - if family == 0: - raise ValueError('unexpected address family') - addr_pairs_info = (((family, proto), (None, None)),) - else: - # join address by (family, protocol) - addr_infos = OrderedDict() - for idx, addr in ((0, local_addr), (1, remote_addr)): - if addr is not None: - assert isinstance(addr, tuple) and len(addr) == 2, ( - '2-tuple is expected') - - infos = yield From(self.getaddrinfo( - *addr, family=family, type=socket.SOCK_DGRAM, - proto=proto, flags=flags)) - if not infos: - raise socket.error('getaddrinfo() returned empty list') - - for fam, _, pro, _, address in infos: - key = (fam, pro) - if key not in addr_infos: - addr_infos[key] = [None, None] - addr_infos[key][idx] = address - - # each addr has to have info for each (family, proto) pair - addr_pairs_info = [ - (key, addr_pair) for key, addr_pair in addr_infos.items() - if not ((local_addr and addr_pair[0] is None) or - (remote_addr and addr_pair[1] is None))] - - if not addr_pairs_info: - raise ValueError('can not get address information') - - exceptions = [] - - for ((family, proto), - (local_address, remote_address)) in addr_pairs_info: - sock = None - r_addr = None - try: - sock = socket.socket( - family=family, type=socket.SOCK_DGRAM, proto=proto) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - sock.setblocking(False) - - if local_addr: - sock.bind(local_address) - if remote_addr: - yield From(self.sock_connect(sock, remote_address)) - r_addr = remote_address - except socket.error as exc: - if sock is not None: - sock.close() - exceptions.append(exc) - except: - if sock is not None: - sock.close() - raise - else: - break - else: - raise exceptions[0] - - protocol = protocol_factory() - waiter = futures.Future(loop=self) - transport = self._make_datagram_transport(sock, protocol, r_addr, - waiter) - if self._debug: - if local_addr: - logger.info("Datagram endpoint local_addr=%r remote_addr=%r " - "created: (%r, %r)", - local_addr, remote_addr, transport, protocol) - else: - logger.debug("Datagram endpoint remote_addr=%r created: " - "(%r, %r)", - remote_addr, transport, protocol) - - try: - yield From(waiter) - except: - transport.close() - raise - - raise Return(transport, protocol) - - @coroutine - def create_server(self, protocol_factory, host=None, port=None, - family=socket.AF_UNSPEC, - flags=socket.AI_PASSIVE, - sock=None, - backlog=100, - ssl=None, - reuse_address=None): - """Create a TCP server bound to host and port. - - Return a Server object which can be used to stop the service. - - This method is a coroutine. - """ - if isinstance(ssl, bool): - raise TypeError('ssl argument must be an SSLContext or None') - if host is not None or port is not None: - if sock is not None: - raise ValueError( - 'host/port and sock can not be specified at the same time') - - AF_INET6 = getattr(socket, 'AF_INET6', 0) - if reuse_address is None: - reuse_address = os.name == 'posix' and sys.platform != 'cygwin' - sockets = [] - if host == '': - host = None - - infos = yield From(self.getaddrinfo( - host, port, family=family, - type=socket.SOCK_STREAM, proto=0, flags=flags)) - if not infos: - raise socket.error('getaddrinfo() returned empty list') - - completed = False - try: - for res in infos: - af, socktype, proto, canonname, sa = res - try: - sock = socket.socket(af, socktype, proto) - except socket.error: - # Assume it's a bad family/type/protocol combination. - if self._debug: - logger.warning('create_server() failed to create ' - 'socket.socket(%r, %r, %r)', - af, socktype, proto, exc_info=True) - continue - sockets.append(sock) - if reuse_address: - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, - True) - # Disable IPv4/IPv6 dual stack support (enabled by - # default on Linux) which makes a single socket - # listen on both address families. - if af == AF_INET6 and hasattr(socket, 'IPPROTO_IPV6'): - sock.setsockopt(socket.IPPROTO_IPV6, - socket.IPV6_V6ONLY, - True) - try: - sock.bind(sa) - except socket.error as err: - raise socket.error(err.errno, - 'error while attempting ' - 'to bind on address %r: %s' - % (sa, err.strerror.lower())) - completed = True - finally: - if not completed: - for sock in sockets: - sock.close() - else: - if sock is None: - raise ValueError('Neither host/port nor sock were specified') - sockets = [sock] - - server = Server(self, sockets) - for sock in sockets: - sock.listen(backlog) - sock.setblocking(False) - self._start_serving(protocol_factory, sock, ssl, server) - if self._debug: - logger.info("%r is serving", server) - raise Return(server) - - @coroutine - def connect_read_pipe(self, protocol_factory, pipe): - protocol = protocol_factory() - waiter = futures.Future(loop=self) - transport = self._make_read_pipe_transport(pipe, protocol, waiter) - - try: - yield From(waiter) - except: - transport.close() - raise - - if self._debug: - logger.debug('Read pipe %r connected: (%r, %r)', - pipe.fileno(), transport, protocol) - raise Return(transport, protocol) - - @coroutine - def connect_write_pipe(self, protocol_factory, pipe): - protocol = protocol_factory() - waiter = futures.Future(loop=self) - transport = self._make_write_pipe_transport(pipe, protocol, waiter) - - try: - yield From(waiter) - except: - transport.close() - raise - - if self._debug: - logger.debug('Write pipe %r connected: (%r, %r)', - pipe.fileno(), transport, protocol) - raise Return(transport, protocol) - - def _log_subprocess(self, msg, stdin, stdout, stderr): - info = [msg] - if stdin is not None: - info.append('stdin=%s' % _format_pipe(stdin)) - if stdout is not None and stderr == subprocess.STDOUT: - info.append('stdout=stderr=%s' % _format_pipe(stdout)) - else: - if stdout is not None: - info.append('stdout=%s' % _format_pipe(stdout)) - if stderr is not None: - info.append('stderr=%s' % _format_pipe(stderr)) - logger.debug(' '.join(info)) - - @coroutine - def subprocess_shell(self, protocol_factory, cmd, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - universal_newlines=False, shell=True, bufsize=0, - **kwargs): - if not isinstance(cmd, compat.string_types): - raise ValueError("cmd must be a string") - if universal_newlines: - raise ValueError("universal_newlines must be False") - if not shell: - raise ValueError("shell must be True") - if bufsize != 0: - raise ValueError("bufsize must be 0") - protocol = protocol_factory() - if self._debug: - # don't log parameters: they may contain sensitive information - # (password) and may be too long - debug_log = 'run shell command %r' % cmd - self._log_subprocess(debug_log, stdin, stdout, stderr) - transport = yield From(self._make_subprocess_transport( - protocol, cmd, True, stdin, stdout, stderr, bufsize, **kwargs)) - if self._debug: - logger.info('%s: %r' % (debug_log, transport)) - raise Return(transport, protocol) - - @coroutine - def subprocess_exec(self, protocol_factory, program, *args, **kwargs): - stdin = kwargs.pop('stdin', subprocess.PIPE) - stdout = kwargs.pop('stdout', subprocess.PIPE) - stderr = kwargs.pop('stderr', subprocess.PIPE) - universal_newlines = kwargs.pop('universal_newlines', False) - shell = kwargs.pop('shell', False) - bufsize = kwargs.pop('bufsize', 0) - if universal_newlines: - raise ValueError("universal_newlines must be False") - if shell: - raise ValueError("shell must be False") - if bufsize != 0: - raise ValueError("bufsize must be 0") - popen_args = (program,) + args - for arg in popen_args: - if not isinstance(arg, compat.string_types ): - raise TypeError("program arguments must be " - "a bytes or text string, not %s" - % type(arg).__name__) - protocol = protocol_factory() - if self._debug: - # don't log parameters: they may contain sensitive information - # (password) and may be too long - debug_log = 'execute program %r' % program - self._log_subprocess(debug_log, stdin, stdout, stderr) - transport = yield From(self._make_subprocess_transport( - protocol, popen_args, False, stdin, stdout, stderr, - bufsize, **kwargs)) - if self._debug: - logger.info('%s: %r' % (debug_log, transport)) - raise Return(transport, protocol) - - def set_exception_handler(self, handler): - """Set handler as the new event loop exception handler. - - If handler is None, the default exception handler will - be set. - - If handler is a callable object, it should have a - signature matching '(loop, context)', where 'loop' - will be a reference to the active event loop, 'context' - will be a dict object (see `call_exception_handler()` - documentation for details about context). - """ - if handler is not None and not callable(handler): - raise TypeError('A callable object or None is expected, ' - 'got {0!r}'.format(handler)) - self._exception_handler = handler - - def default_exception_handler(self, context): - """Default exception handler. - - This is called when an exception occurs and no exception - handler is set, and can be called by a custom exception - handler that wants to defer to the default behavior. - - The context parameter has the same meaning as in - `call_exception_handler()`. - """ - message = context.get('message') - if not message: - message = 'Unhandled exception in event loop' - - exception = context.get('exception') - if exception is not None: - if hasattr(exception, '__traceback__'): - # Python 3 - tb = exception.__traceback__ - else: - # call_exception_handler() is usually called indirectly - # from an except block. If it's not the case, the traceback - # is undefined... - tb = sys.exc_info()[2] - exc_info = (type(exception), exception, tb) - else: - exc_info = False - - if ('source_traceback' not in context - and self._current_handle is not None - and self._current_handle._source_traceback): - context['handle_traceback'] = self._current_handle._source_traceback - - log_lines = [message] - for key in sorted(context): - if key in ('message', 'exception'): - continue - value = context[key] - if key == 'source_traceback': - tb = ''.join(traceback.format_list(value)) - value = 'Object created at (most recent call last):\n' - value += tb.rstrip() - elif key == 'handle_traceback': - tb = ''.join(traceback.format_list(value)) - value = 'Handle created at (most recent call last):\n' - value += tb.rstrip() - else: - value = repr(value) - log_lines.append('{0}: {1}'.format(key, value)) - - logger.error('\n'.join(log_lines), exc_info=exc_info) - - def call_exception_handler(self, context): - """Call the current event loop's exception handler. - - The context argument is a dict containing the following keys: - - - 'message': Error message; - - 'exception' (optional): Exception object; - - 'future' (optional): Future instance; - - 'handle' (optional): Handle instance; - - 'protocol' (optional): Protocol instance; - - 'transport' (optional): Transport instance; - - 'socket' (optional): Socket instance. - - New keys maybe introduced in the future. - - Note: do not overload this method in an event loop subclass. - For custom exception handling, use the - `set_exception_handler()` method. - """ - if self._exception_handler is None: - try: - self.default_exception_handler(context) - except Exception: - # Second protection layer for unexpected errors - # in the default implementation, as well as for subclassed - # event loops with overloaded "default_exception_handler". - logger.error('Exception in default exception handler', - exc_info=True) - else: - try: - self._exception_handler(self, context) - except Exception as exc: - # Exception in the user set custom exception handler. - try: - # Let's try default handler. - self.default_exception_handler({ - 'message': 'Unhandled error in exception handler', - 'exception': exc, - 'context': context, - }) - except Exception: - # Guard 'default_exception_handler' in case it is - # overloaded. - logger.error('Exception in default exception handler ' - 'while handling an unexpected error ' - 'in custom exception handler', - exc_info=True) - - def _add_callback(self, handle): - """Add a Handle to _scheduled (TimerHandle) or _ready.""" - assert isinstance(handle, events.Handle), 'A Handle is required here' - if handle._cancelled: - return - assert not isinstance(handle, events.TimerHandle) - self._ready.append(handle) - - def _add_callback_signalsafe(self, handle): - """Like _add_callback() but called from a signal handler.""" - self._add_callback(handle) - self._write_to_self() - - def _timer_handle_cancelled(self, handle): - """Notification that a TimerHandle has been cancelled.""" - if handle._scheduled: - self._timer_cancelled_count += 1 - - def _run_once(self): - """Run one full iteration of the event loop. - - This calls all currently ready callbacks, polls for I/O, - schedules the resulting callbacks, and finally schedules - 'call_later' callbacks. - """ - - sched_count = len(self._scheduled) - if (sched_count > _MIN_SCHEDULED_TIMER_HANDLES and - float(self._timer_cancelled_count) / sched_count > - _MIN_CANCELLED_TIMER_HANDLES_FRACTION): - # Remove delayed calls that were cancelled if their number - # is too high - new_scheduled = [] - for handle in self._scheduled: - if handle._cancelled: - handle._scheduled = False - else: - new_scheduled.append(handle) - - heapq.heapify(new_scheduled) - self._scheduled = new_scheduled - self._timer_cancelled_count = 0 - else: - # Remove delayed calls that were cancelled from head of queue. - while self._scheduled and self._scheduled[0]._cancelled: - self._timer_cancelled_count -= 1 - handle = heapq.heappop(self._scheduled) - handle._scheduled = False - - timeout = None - if self._ready: - timeout = 0 - elif self._scheduled: - # Compute the desired timeout. - when = self._scheduled[0]._when - timeout = max(0, when - self.time()) - - if self._debug and timeout != 0: - t0 = self.time() - event_list = self._selector.select(timeout) - dt = self.time() - t0 - if dt >= 1.0: - level = logging.INFO - else: - level = logging.DEBUG - nevent = len(event_list) - if timeout is None: - logger.log(level, 'poll took %.3f ms: %s events', - dt * 1e3, nevent) - elif nevent: - logger.log(level, - 'poll %.3f ms took %.3f ms: %s events', - timeout * 1e3, dt * 1e3, nevent) - elif dt >= 1.0: - logger.log(level, - 'poll %.3f ms took %.3f ms: timeout', - timeout * 1e3, dt * 1e3) - else: - event_list = self._selector.select(timeout) - self._process_events(event_list) - - # Handle 'later' callbacks that are ready. - end_time = self.time() + self._clock_resolution - while self._scheduled: - handle = self._scheduled[0] - if handle._when >= end_time: - break - handle = heapq.heappop(self._scheduled) - handle._scheduled = False - self._ready.append(handle) - - # This is the only place where callbacks are actually *called*. - # All other places just add them to ready. - # Note: We run all currently scheduled callbacks, but not any - # callbacks scheduled by callbacks run this time around -- - # they will be run the next time (after another I/O poll). - # Use an idiom that is thread-safe without using locks. - ntodo = len(self._ready) - for i in range(ntodo): - handle = self._ready.popleft() - if handle._cancelled: - continue - if self._debug: - try: - self._current_handle = handle - t0 = self.time() - handle._run() - dt = self.time() - t0 - if dt >= self.slow_callback_duration: - logger.warning('Executing %s took %.3f seconds', - _format_handle(handle), dt) - finally: - self._current_handle = None - else: - handle._run() - handle = None # Needed to break cycles when an exception occurs. - - def _set_coroutine_wrapper(self, enabled): - try: - set_wrapper = sys.set_coroutine_wrapper - get_wrapper = sys.get_coroutine_wrapper - except AttributeError: - return - - enabled = bool(enabled) - if self._coroutine_wrapper_set == enabled: - return - - wrapper = coroutines.debug_wrapper - current_wrapper = get_wrapper() - - if enabled: - if current_wrapper not in (None, wrapper): - warnings.warn( - "loop.set_debug(True): cannot set debug coroutine " - "wrapper; another wrapper is already set %r" % - current_wrapper, RuntimeWarning) - else: - set_wrapper(wrapper) - self._coroutine_wrapper_set = True - else: - if current_wrapper not in (None, wrapper): - warnings.warn( - "loop.set_debug(False): cannot unset debug coroutine " - "wrapper; another wrapper was set %r" % - current_wrapper, RuntimeWarning) - else: - set_wrapper(None) - self._coroutine_wrapper_set = False - - def get_debug(self): - return self._debug - - def set_debug(self, enabled): - self._debug = enabled - - if self.is_running(): - self._set_coroutine_wrapper(enabled) diff --git a/.local/lib/python2.7/site-packages/trollius/base_events.pyc b/.local/lib/python2.7/site-packages/trollius/base_events.pyc deleted file mode 100644 index 559c4714d5bd7246dbfcd5bfd2db2a145fabf1d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40761 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 F{x4Odk~07R diff --git a/.local/lib/python2.7/site-packages/trollius/base_subprocess.py b/.local/lib/python2.7/site-packages/trollius/base_subprocess.py deleted file mode 100644 index ffd6e762..00000000 --- a/.local/lib/python2.7/site-packages/trollius/base_subprocess.py +++ /dev/null @@ -1,282 +0,0 @@ -import collections -import subprocess -import warnings - -from . import compat -from . import futures -from . import protocols -from . import transports -from .coroutines import coroutine, From, Return -from .log import logger -from .py33_exceptions import ProcessLookupError - - -class BaseSubprocessTransport(transports.SubprocessTransport): - - def __init__(self, loop, protocol, args, shell, - stdin, stdout, stderr, bufsize, - waiter=None, extra=None, **kwargs): - super(BaseSubprocessTransport, self).__init__(extra) - self._closed = False - self._protocol = protocol - self._loop = loop - self._proc = None - self._pid = None - self._returncode = None - self._exit_waiters = [] - self._pending_calls = collections.deque() - self._pipes = {} - self._finished = False - - if stdin == subprocess.PIPE: - self._pipes[0] = None - if stdout == subprocess.PIPE: - self._pipes[1] = None - if stderr == subprocess.PIPE: - self._pipes[2] = None - - # Create the child process: set the _proc attribute - try: - self._start(args=args, shell=shell, stdin=stdin, stdout=stdout, - stderr=stderr, bufsize=bufsize, **kwargs) - except: - self.close() - raise - - self._pid = self._proc.pid - self._extra['subprocess'] = self._proc - - if self._loop.get_debug(): - if isinstance(args, (bytes, str)): - program = args - else: - program = args[0] - logger.debug('process %r created: pid %s', - program, self._pid) - - self._loop.create_task(self._connect_pipes(waiter)) - - def __repr__(self): - info = [self.__class__.__name__] - if self._closed: - info.append('closed') - if self._pid is not None: - info.append('pid=%s' % self._pid) - if self._returncode is not None: - info.append('returncode=%s' % self._returncode) - elif self._pid is not None: - info.append('running') - else: - info.append('not started') - - stdin = self._pipes.get(0) - if stdin is not None: - info.append('stdin=%s' % stdin.pipe) - - stdout = self._pipes.get(1) - stderr = self._pipes.get(2) - if stdout is not None and stderr is stdout: - info.append('stdout=stderr=%s' % stdout.pipe) - else: - if stdout is not None: - info.append('stdout=%s' % stdout.pipe) - if stderr is not None: - info.append('stderr=%s' % stderr.pipe) - - return '<%s>' % ' '.join(info) - - def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs): - raise NotImplementedError - - def close(self): - if self._closed: - return - self._closed = True - - for proto in self._pipes.values(): - if proto is None: - continue - proto.pipe.close() - - if (self._proc is not None - # the child process finished? - and self._returncode is None - # the child process finished but the transport was not notified yet? - and self._proc.poll() is None - ): - if self._loop.get_debug(): - logger.warning('Close running child process: kill %r', self) - - try: - self._proc.kill() - except ProcessLookupError: - pass - - # Don't clear the _proc reference yet: _post_init() may still run - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if not self._closed: - warnings.warn("unclosed transport %r" % self, ResourceWarning) - self.close() - - def get_pid(self): - return self._pid - - def get_returncode(self): - return self._returncode - - def get_pipe_transport(self, fd): - if fd in self._pipes: - return self._pipes[fd].pipe - else: - return None - - def _check_proc(self): - if self._proc is None: - raise ProcessLookupError() - - def send_signal(self, signal): - self._check_proc() - self._proc.send_signal(signal) - - def terminate(self): - self._check_proc() - self._proc.terminate() - - def kill(self): - self._check_proc() - self._proc.kill() - - @coroutine - def _connect_pipes(self, waiter): - try: - proc = self._proc - loop = self._loop - - if proc.stdin is not None: - _, pipe = yield From(loop.connect_write_pipe( - lambda: WriteSubprocessPipeProto(self, 0), - proc.stdin)) - self._pipes[0] = pipe - - if proc.stdout is not None: - _, pipe = yield From(loop.connect_read_pipe( - lambda: ReadSubprocessPipeProto(self, 1), - proc.stdout)) - self._pipes[1] = pipe - - if proc.stderr is not None: - _, pipe = yield From(loop.connect_read_pipe( - lambda: ReadSubprocessPipeProto(self, 2), - proc.stderr)) - self._pipes[2] = pipe - - assert self._pending_calls is not None - - loop.call_soon(self._protocol.connection_made, self) - for callback, data in self._pending_calls: - loop.call_soon(callback, *data) - self._pending_calls = None - except Exception as exc: - if waiter is not None and not waiter.cancelled(): - waiter.set_exception(exc) - else: - if waiter is not None and not waiter.cancelled(): - waiter.set_result(None) - - def _call(self, cb, *data): - if self._pending_calls is not None: - self._pending_calls.append((cb, data)) - else: - self._loop.call_soon(cb, *data) - - def _pipe_connection_lost(self, fd, exc): - self._call(self._protocol.pipe_connection_lost, fd, exc) - self._try_finish() - - def _pipe_data_received(self, fd, data): - self._call(self._protocol.pipe_data_received, fd, data) - - def _process_exited(self, returncode): - assert returncode is not None, returncode - assert self._returncode is None, self._returncode - if self._loop.get_debug(): - logger.info('%r exited with return code %r', - self, returncode) - self._returncode = returncode - self._call(self._protocol.process_exited) - self._try_finish() - - # wake up futures waiting for wait() - for waiter in self._exit_waiters: - if not waiter.cancelled(): - waiter.set_result(returncode) - self._exit_waiters = None - - @coroutine - def _wait(self): - """Wait until the process exit and return the process return code. - - This method is a coroutine.""" - if self._returncode is not None: - raise Return(self._returncode) - - waiter = futures.Future(loop=self._loop) - self._exit_waiters.append(waiter) - returncode = yield From(waiter) - raise Return(returncode) - - def _try_finish(self): - assert not self._finished - if self._returncode is None: - return - if all(p is not None and p.disconnected - for p in self._pipes.values()): - self._finished = True - self._call(self._call_connection_lost, None) - - def _call_connection_lost(self, exc): - try: - self._protocol.connection_lost(exc) - finally: - self._loop = None - self._proc = None - self._protocol = None - - -class WriteSubprocessPipeProto(protocols.BaseProtocol): - - def __init__(self, proc, fd): - self.proc = proc - self.fd = fd - self.pipe = None - self.disconnected = False - - def connection_made(self, transport): - self.pipe = transport - - def __repr__(self): - return ('<%s fd=%s pipe=%r>' - % (self.__class__.__name__, self.fd, self.pipe)) - - def connection_lost(self, exc): - self.disconnected = True - self.proc._pipe_connection_lost(self.fd, exc) - self.proc = None - - def pause_writing(self): - self.proc._protocol.pause_writing() - - def resume_writing(self): - self.proc._protocol.resume_writing() - - -class ReadSubprocessPipeProto(WriteSubprocessPipeProto, - protocols.Protocol): - - def data_received(self, data): - self.proc._pipe_data_received(self.fd, data) diff --git a/.local/lib/python2.7/site-packages/trollius/base_subprocess.pyc b/.local/lib/python2.7/site-packages/trollius/base_subprocess.pyc deleted file mode 100644 index 1cc9c667a4e5a2a13c5a69ff979e9f3f388cdb5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11877 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 diff --git a/.local/lib/python2.7/site-packages/trollius/compat.py b/.local/lib/python2.7/site-packages/trollius/compat.py deleted file mode 100644 index df64abac..00000000 --- a/.local/lib/python2.7/site-packages/trollius/compat.py +++ /dev/null @@ -1,69 +0,0 @@ -"""Compatibility helpers for the different Python versions.""" - -import six -import sys - -# Python 2.6 or older? -PY26 = (sys.version_info < (2, 7)) - -# Python 3.3 or newer? -PY33 = (sys.version_info >= (3, 3)) - -# Python 3.4 or newer? -PY34 = sys.version_info >= (3, 4) - -# Python 3.5 or newer? -PY35 = sys.version_info >= (3, 5) - -if six.PY3: - integer_types = (int,) - bytes_type = bytes - text_type = str - string_types = (bytes, str) - BYTES_TYPES = (bytes, bytearray, memoryview) -else: - integer_types = (int, long,) - bytes_type = str - text_type = unicode - string_types = basestring - if PY26: - BYTES_TYPES = (str, bytearray, buffer) - else: # Python 2.7 - BYTES_TYPES = (str, bytearray, memoryview, buffer) - - -if six.PY3: - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value -else: - exec("""def reraise(tp, value, tb=None): raise tp, value, tb""") - - -def flatten_bytes(data): - """ - Convert bytes-like objects (bytes, bytearray, memoryview, buffer) to - a bytes string. - """ - if not isinstance(data, BYTES_TYPES): - raise TypeError('data argument must be byte-ish (%r)', - type(data)) - if PY34: - # In Python 3.4, socket.send() and bytes.join() accept memoryview - # and bytearray - return data - if not data: - return b'' - if six.PY2 and isinstance(data, (buffer, bytearray)): - return str(data) - elif not PY26 and isinstance(data, memoryview): - return data.tobytes() - else: - return data - - -def flatten_list_bytes(data): - """Concatenate a sequence of bytes-like objects.""" - data = map(flatten_bytes, data) - return b''.join(data) diff --git a/.local/lib/python2.7/site-packages/trollius/compat.pyc b/.local/lib/python2.7/site-packages/trollius/compat.pyc deleted file mode 100644 index e353d678f9334cd7e80601fdc7d67b8b85f9a838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2063 zcmcIk-ESL35T8AN#CDvxF=@Rj%MXT+<|!o29-kGWwBa_Ef%*x37FNu{syWJV~pGY zwGD$Ns2v#W5|7Lnv$UAM18NV(B^b0J`;J`H8@!8NXpdg|>~)vz%V2*ey+W^p!mC|q z_E=e_P@6OSN!2Aac!|fj2U!i0I%&$^Ck=RsmAwhcHZyOLy5G4&-FbrK)GU^f*CU;3 zzm`*#E|qn1Y^?NCB@;a!E2}auFV=o)GI@==+GMV)|H9{72N*(c5h)R&#_I}_m_%A+ zaEi-4K=LCt3~2!KI@tGE6eQjV_*p>42FT!z^*eZTaNZ$zzk_5r^frpsD2nIE?xN2*^RM`uIgSioshQ#O8 zWC#c^M{BR#ajNG^n$b+f-pLN@j(97wHd-Iag<2T9zSinFs#gT8L+K3%it-TBd8@NY zmv!!aOp`=Dl98RP76ih@%3(6a#>d)CW#>bCi0vVy5J<2L#Glid^HCNnzm4M4tIM7tdI2qT&|bu%vxiyU+94nGZ$AUA7f9kI{kvb7gvuw-D!SOcBPWImfX zPJCM*gTotc0Rx#+P%Zxl5~=cW8hNj>VcvBr;~o;Iv_usVSuK_ETNdw%hBy$7;2)e( z!KY;X4iao6f($Pm(eV>c%vn$XgnvYLOy(wwBTR)$M$)MtRtj4!&GG1|}C;Zi!=aGkB zHBoj*7TO){3;L$tHaGRigB5o30Jq5#oX%~s&u+97A9Gx>MNRq?je$D&=k#5D}RH!s3VrE WqAA*_Cyw5B&@R(iz{SA; diff --git a/.local/lib/python2.7/site-packages/trollius/constants.py b/.local/lib/python2.7/site-packages/trollius/constants.py deleted file mode 100644 index f9e12328..00000000 --- a/.local/lib/python2.7/site-packages/trollius/constants.py +++ /dev/null @@ -1,7 +0,0 @@ -"""Constants.""" - -# After the connection is lost, log warnings after this many write()s. -LOG_THRESHOLD_FOR_CONNLOST_WRITES = 5 - -# Seconds to wait before retrying accept(). -ACCEPT_RETRY_DELAY = 1 diff --git a/.local/lib/python2.7/site-packages/trollius/constants.pyc b/.local/lib/python2.7/site-packages/trollius/constants.pyc deleted file mode 100644 index 3bc2e1fb7ba9277ef1f0e3b439f60ce51abe8d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmYL^UrWO<5Wv$#HyQZigYUi-#72D42T?~?H=#6=24n>}Y7$&DYsQj3_yPRHegUsA z^x%H?|G1++$J6ig`&UKwlAwJ+4W|fANP|pBlMp>3&4_49>hxf!PZ7EALTtMjGJA-j z9fqrvBI5)BpuGZ!XXuxF0dgsdddbT aO#NMqtw*@)cH?#L%-wK$7#= 0 - offset = frame.f_lasti + 1 - instr = code.co_code[offset] - return (instr == _YIELD_FROM) - - -class CoroWrapper: - # Wrapper for coroutine object in _DEBUG mode. - - def __init__(self, gen, func=None): - assert inspect.isgenerator(gen) or inspect.iscoroutine(gen), gen - self.gen = gen - self.func = func # Used to unwrap @coroutine decorator - self._source_traceback = traceback.extract_stack(sys._getframe(1)) - self.__name__ = getattr(gen, '__name__', None) - self.__qualname__ = getattr(gen, '__qualname__', None) - - def __repr__(self): - coro_repr = _format_coroutine(self) - if self._source_traceback: - frame = self._source_traceback[-1] - coro_repr += ', created at %s:%s' % (frame[0], frame[1]) - return '<%s %s>' % (self.__class__.__name__, coro_repr) - - def __iter__(self): - return self - - def __next__(self): - return next(self.gen) - next = __next__ - - if _YIELD_FROM_BUG: - # For for CPython issue #21209: using "yield from" and a custom - # generator, generator.send(tuple) unpacks the tuple instead of passing - # the tuple unchanged. Check if the caller is a generator using "yield - # from" to decide if the parameter should be unpacked or not. - def send(self, *value): - frame = sys._getframe() - caller = frame.f_back - assert caller.f_lasti >= 0 - if caller.f_code.co_code[caller.f_lasti] != _YIELD_FROM: - value = value[0] - return self.gen.send(value) - else: - def send(self, value): - return self.gen.send(value) - - def throw(self, exc_type, exc_value=None, exc_tb=None): - return self.gen.throw(exc_type, exc_value, exc_tb) - - def close(self): - return self.gen.close() - - @property - def gi_frame(self): - return self.gen.gi_frame - - @property - def gi_running(self): - return self.gen.gi_running - - @property - def gi_code(self): - return self.gen.gi_code - - if compat.PY35: - - __await__ = __iter__ # make compatible with 'await' expression - - @property - def gi_yieldfrom(self): - return self.gen.gi_yieldfrom - - @property - def cr_await(self): - return self.gen.cr_await - - @property - def cr_running(self): - return self.gen.cr_running - - @property - def cr_code(self): - return self.gen.cr_code - - @property - def cr_frame(self): - return self.gen.cr_frame - - def __del__(self): - # Be careful accessing self.gen.frame -- self.gen might not exist. - gen = getattr(self, 'gen', None) - frame = getattr(gen, 'gi_frame', None) - if frame is None: - frame = getattr(gen, 'cr_frame', None) - if frame is not None and frame.f_lasti == -1: - msg = '%r was never yielded from' % self - tb = getattr(self, '_source_traceback', ()) - if tb: - tb = ''.join(traceback.format_list(tb)) - msg += ('\nCoroutine object created at ' - '(most recent call last):\n') - msg += tb.rstrip() - logger.error(msg) - -if not compat.PY34: - # Backport functools.update_wrapper() from Python 3.4: - # - Python 2.7 fails if assigned attributes don't exist - # - Python 2.7 and 3.1 don't set the __wrapped__ attribute - # - Python 3.2 and 3.3 set __wrapped__ before updating __dict__ - def _update_wrapper(wrapper, - wrapped, - assigned = functools.WRAPPER_ASSIGNMENTS, - updated = functools.WRAPPER_UPDATES): - """Update a wrapper function to look like the wrapped function - - wrapper is the function to be updated - wrapped is the original function - assigned is a tuple naming the attributes assigned directly - from the wrapped function to the wrapper function (defaults to - functools.WRAPPER_ASSIGNMENTS) - updated is a tuple naming the attributes of the wrapper that - are updated with the corresponding attribute from the wrapped - function (defaults to functools.WRAPPER_UPDATES) - """ - for attr in assigned: - try: - value = getattr(wrapped, attr) - except AttributeError: - pass - else: - setattr(wrapper, attr, value) - for attr in updated: - getattr(wrapper, attr).update(getattr(wrapped, attr, {})) - # Issue #17482: set __wrapped__ last so we don't inadvertently copy it - # from the wrapped function when updating __dict__ - wrapper.__wrapped__ = wrapped - # Return the wrapper so this can be used as a decorator via partial() - return wrapper - - def _wraps(wrapped, - assigned = functools.WRAPPER_ASSIGNMENTS, - updated = functools.WRAPPER_UPDATES): - """Decorator factory to apply update_wrapper() to a wrapper function - - Returns a decorator that invokes update_wrapper() with the decorated - function as the wrapper argument and the arguments to wraps() as the - remaining arguments. Default arguments are as for update_wrapper(). - This is a convenience function to simplify applying partial() to - update_wrapper(). - """ - return functools.partial(_update_wrapper, wrapped=wrapped, - assigned=assigned, updated=updated) -else: - _wraps = functools.wraps - -_PEP479 = (sys.version_info >= (3, 5)) -if _PEP479: - # Need exec() because yield+return raises a SyntaxError on Python 2 - exec(textwrap.dedent(''' - def pep479_wrapper(func, coro_func): - @_wraps(func) - def pep479_wrapped(*args, **kw): - coro = coro_func(*args, **kw) - value = None - error = None - while True: - try: - if error is not None: - value = coro.throw(error) - elif value is not None: - value = coro.send(value) - else: - value = next(coro) - except RuntimeError: - # FIXME: special case for - # FIXME: "isinstance(exc.__context__, StopIteration)"? - raise - except StopIteration as exc: - return exc.value - except Return as exc: - exc.raised = True - return exc.value - except BaseException as exc: - raise - - try: - value = yield value - error = None - except BaseException as exc: - value = None - error = exc - - return pep479_wrapped - ''')) - - -def coroutine(func): - """Decorator to mark coroutines. - - If the coroutine is not yielded from before it is destroyed, - an error message is logged. - """ - if _inspect_iscoroutinefunction(func): - # In Python 3.5 that's all we need to do for coroutines - # defiend with "async def". - # Wrapping in CoroWrapper will happen via - # 'sys.set_coroutine_wrapper' function. - return func - - if inspect.isgeneratorfunction(func): - coro = func - else: - @_wraps(func) - def coro(*args, **kw): - res = func(*args, **kw) - if (isinstance(res, futures._FUTURE_CLASSES) - or inspect.isgenerator(res)): - res = yield From(res) - elif _AwaitableABC is not None: - # If 'func' returns an Awaitable (new in 3.5) we - # want to run it. - try: - await_meth = res.__await__ - except AttributeError: - pass - else: - if isinstance(res, _AwaitableABC): - res = yield From(await_meth()) - raise Return(res) - - if _PEP479: - # FIXME: use @_wraps - coro = pep479_wrapper(func, coro) - coro = _wraps(func)(coro) - - if not _DEBUG: - if _types_coroutine is None: - wrapper = coro - else: - wrapper = _types_coroutine(coro) - else: - @_wraps(func) - def wrapper(*args, **kwds): - w = CoroWrapper(coro(*args, **kwds), func=func) - if w._source_traceback: - del w._source_traceback[-1] - # Python < 3.5 does not implement __qualname__ - # on generator objects, so we set it manually. - # We use getattr as some callables (such as - # functools.partial may lack __qualname__). - w.__name__ = getattr(func, '__name__', None) - w.__qualname__ = getattr(func, '__qualname__', None) - return w - - wrapper._is_coroutine = True # For iscoroutinefunction(). - return wrapper - - -def iscoroutinefunction(func): - """Return True if func is a decorated coroutine function.""" - return (getattr(func, '_is_coroutine', False) or - _inspect_iscoroutinefunction(func)) - - -_COROUTINE_TYPES = (types.GeneratorType, CoroWrapper) -if _CoroutineABC is not None: - _COROUTINE_TYPES += (_CoroutineABC,) -if events.asyncio is not None: - # Accept also asyncio CoroWrapper for interoperability - if hasattr(events.asyncio, 'coroutines'): - _COROUTINE_TYPES += (events.asyncio.coroutines.CoroWrapper,) - else: - # old asyncio/Python versions - _COROUTINE_TYPES += (events.asyncio.tasks.CoroWrapper,) - -def iscoroutine(obj): - """Return True if obj is a coroutine object.""" - return isinstance(obj, _COROUTINE_TYPES) - - -def _format_coroutine(coro): - assert iscoroutine(coro) - - coro_name = None - if isinstance(coro, CoroWrapper): - func = coro.func - coro_name = coro.__qualname__ - if coro_name is not None: - coro_name = '{0}()'.format(coro_name) - else: - func = coro - - if coro_name is None: - coro_name = events._format_callback(func, ()) - - try: - coro_code = coro.gi_code - except AttributeError: - coro_code = coro.cr_code - - try: - coro_frame = coro.gi_frame - except AttributeError: - coro_frame = coro.cr_frame - - filename = coro_code.co_filename - if (isinstance(coro, CoroWrapper) - and not inspect.isgeneratorfunction(coro.func) - and coro.func is not None): - filename, lineno = events._get_function_source(coro.func) - if coro_frame is None: - coro_repr = ('%s done, defined at %s:%s' - % (coro_name, filename, lineno)) - else: - coro_repr = ('%s running, defined at %s:%s' - % (coro_name, filename, lineno)) - elif coro_frame is not None: - lineno = coro_frame.f_lineno - coro_repr = ('%s running at %s:%s' - % (coro_name, filename, lineno)) - else: - lineno = coro_code.co_firstlineno - coro_repr = ('%s done, defined at %s:%s' - % (coro_name, filename, lineno)) - - return coro_repr - - -class FromWrapper(object): - __slots__ = ('obj',) - - def __init__(self, obj): - if isinstance(obj, FromWrapper): - obj = obj.obj - assert not isinstance(obj, FromWrapper) - self.obj = obj - -def From(obj): - if not _DEBUG: - return obj - else: - return FromWrapper(obj) diff --git a/.local/lib/python2.7/site-packages/trollius/coroutines.pyc b/.local/lib/python2.7/site-packages/trollius/coroutines.pyc deleted file mode 100644 index 5cd70d4bfe69223b81b8347046daee89bce35b1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16085 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 diff --git a/.local/lib/python2.7/site-packages/trollius/events.py b/.local/lib/python2.7/site-packages/trollius/events.py deleted file mode 100644 index 52611612..00000000 --- a/.local/lib/python2.7/site-packages/trollius/events.py +++ /dev/null @@ -1,626 +0,0 @@ -"""Event loop and event loop policy.""" -from __future__ import absolute_import - -__all__ = ['AbstractEventLoopPolicy', - 'AbstractEventLoop', 'AbstractServer', - 'Handle', 'TimerHandle', - 'get_event_loop_policy', 'set_event_loop_policy', - 'get_event_loop', 'set_event_loop', 'new_event_loop', - 'get_child_watcher', 'set_child_watcher', - ] - -import functools -import inspect -import socket -import subprocess -import sys -import threading -import traceback -try: - import reprlib # Python 3 -except ImportError: - import repr as reprlib # Python 2 - -try: - import asyncio -except (ImportError, SyntaxError): - # ignore SyntaxError for convenience: ignore SyntaxError caused by "yield - # from" if asyncio module is in the Python path - asyncio = None - -from trollius import compat - - -def _get_function_source(func): - if compat.PY34: - func = inspect.unwrap(func) - elif hasattr(func, '__wrapped__'): - func = func.__wrapped__ - if inspect.isfunction(func): - code = func.__code__ - return (code.co_filename, code.co_firstlineno) - if isinstance(func, functools.partial): - return _get_function_source(func.func) - if compat.PY34 and isinstance(func, functools.partialmethod): - return _get_function_source(func.func) - return None - - -def _format_args(args): - """Format function arguments. - - Special case for a single parameter: ('hello',) is formatted as ('hello'). - """ - # use reprlib to limit the length of the output - args_repr = reprlib.repr(args) - if len(args) == 1 and args_repr.endswith(',)'): - args_repr = args_repr[:-2] + ')' - return args_repr - - -def _format_callback(func, args, suffix=''): - if isinstance(func, functools.partial): - if args is not None: - suffix = _format_args(args) + suffix - return _format_callback(func.func, func.args, suffix) - - if hasattr(func, '__qualname__'): - func_repr = getattr(func, '__qualname__') - elif hasattr(func, '__name__'): - func_repr = getattr(func, '__name__') - else: - func_repr = repr(func) - - if args is not None: - func_repr += _format_args(args) - if suffix: - func_repr += suffix - return func_repr - -def _format_callback_source(func, args): - func_repr = _format_callback(func, args) - source = _get_function_source(func) - if source: - func_repr += ' at %s:%s' % source - return func_repr - - -class Handle(object): - """Object returned by callback registration methods.""" - - __slots__ = ('_callback', '_args', '_cancelled', '_loop', - '_source_traceback', '_repr', '__weakref__') - - def __init__(self, callback, args, loop): - assert not isinstance(callback, Handle), 'A Handle is not a callback' - self._loop = loop - self._callback = callback - self._args = args - self._cancelled = False - self._repr = None - if self._loop.get_debug(): - self._source_traceback = traceback.extract_stack(sys._getframe(1)) - else: - self._source_traceback = None - - def _repr_info(self): - info = [self.__class__.__name__] - if self._cancelled: - info.append('cancelled') - if self._callback is not None: - info.append(_format_callback_source(self._callback, self._args)) - if self._source_traceback: - frame = self._source_traceback[-1] - info.append('created at %s:%s' % (frame[0], frame[1])) - return info - - def __repr__(self): - if self._repr is not None: - return self._repr - info = self._repr_info() - return '<%s>' % ' '.join(info) - - def cancel(self): - if not self._cancelled: - self._cancelled = True - if self._loop.get_debug(): - # Keep a representation in debug mode to keep callback and - # parameters. For example, to log the warning - # "Executing took 2.5 second" - self._repr = repr(self) - self._callback = None - self._args = None - - def _run(self): - try: - self._callback(*self._args) - except Exception as exc: - cb = _format_callback_source(self._callback, self._args) - msg = 'Exception in callback {0}'.format(cb) - context = { - 'message': msg, - 'exception': exc, - 'handle': self, - } - if self._source_traceback: - context['source_traceback'] = self._source_traceback - self._loop.call_exception_handler(context) - self = None # Needed to break cycles when an exception occurs. - - -class TimerHandle(Handle): - """Object returned by timed callback registration methods.""" - - __slots__ = ['_scheduled', '_when'] - - def __init__(self, when, callback, args, loop): - assert when is not None - super(TimerHandle, self).__init__(callback, args, loop) - if self._source_traceback: - del self._source_traceback[-1] - self._when = when - self._scheduled = False - - def _repr_info(self): - info = super(TimerHandle, self)._repr_info() - pos = 2 if self._cancelled else 1 - info.insert(pos, 'when=%s' % self._when) - return info - - def __hash__(self): - return hash(self._when) - - def __lt__(self, other): - return self._when < other._when - - def __le__(self, other): - if self._when < other._when: - return True - return self.__eq__(other) - - def __gt__(self, other): - return self._when > other._when - - def __ge__(self, other): - if self._when > other._when: - return True - return self.__eq__(other) - - def __eq__(self, other): - if isinstance(other, TimerHandle): - return (self._when == other._when and - self._callback == other._callback and - self._args == other._args and - self._cancelled == other._cancelled) - return NotImplemented - - def __ne__(self, other): - equal = self.__eq__(other) - return NotImplemented if equal is NotImplemented else not equal - - def cancel(self): - if not self._cancelled: - self._loop._timer_handle_cancelled(self) - super(TimerHandle, self).cancel() - - -class AbstractServer(object): - """Abstract server returned by create_server().""" - - def close(self): - """Stop serving. This leaves existing connections open.""" - return NotImplemented - - def wait_closed(self): - """Coroutine to wait until service is closed.""" - return NotImplemented - - -if asyncio is not None: - # Reuse asyncio classes so asyncio.set_event_loop() and - # asyncio.set_event_loop_policy() accept Trollius event loop and trollius - # event loop policy - AbstractEventLoop = asyncio.AbstractEventLoop - AbstractEventLoopPolicy = asyncio.AbstractEventLoopPolicy -else: - class AbstractEventLoop(object): - """Abstract event loop.""" - - # Running and stopping the event loop. - - def run_forever(self): - """Run the event loop until stop() is called.""" - raise NotImplementedError - - def run_until_complete(self, future): - """Run the event loop until a Future is done. - - Return the Future's result, or raise its exception. - """ - raise NotImplementedError - - def stop(self): - """Stop the event loop as soon as reasonable. - - Exactly how soon that is may depend on the implementation, but - no more I/O callbacks should be scheduled. - """ - raise NotImplementedError - - def is_running(self): - """Return whether the event loop is currently running.""" - raise NotImplementedError - - def is_closed(self): - """Returns True if the event loop was closed.""" - raise NotImplementedError - - def close(self): - """Close the loop. - - The loop should not be running. - - This is idempotent and irreversible. - - No other methods should be called after this one. - """ - raise NotImplementedError - - # Methods scheduling callbacks. All these return Handles. - - def _timer_handle_cancelled(self, handle): - """Notification that a TimerHandle has been cancelled.""" - raise NotImplementedError - - def call_soon(self, callback, *args): - return self.call_later(0, callback, *args) - - def call_later(self, delay, callback, *args): - raise NotImplementedError - - def call_at(self, when, callback, *args): - raise NotImplementedError - - def time(self): - raise NotImplementedError - - # Method scheduling a coroutine object: create a task. - - def create_task(self, coro): - raise NotImplementedError - - # Methods for interacting with threads. - - def call_soon_threadsafe(self, callback, *args): - raise NotImplementedError - - def run_in_executor(self, executor, func, *args): - raise NotImplementedError - - def set_default_executor(self, executor): - raise NotImplementedError - - # Network I/O methods returning Futures. - - def getaddrinfo(self, host, port, family=0, type=0, proto=0, flags=0): - raise NotImplementedError - - def getnameinfo(self, sockaddr, flags=0): - raise NotImplementedError - - def create_connection(self, protocol_factory, host=None, port=None, - ssl=None, family=0, proto=0, flags=0, sock=None, - local_addr=None, server_hostname=None): - raise NotImplementedError - - def create_server(self, protocol_factory, host=None, port=None, - family=socket.AF_UNSPEC, flags=socket.AI_PASSIVE, - sock=None, backlog=100, ssl=None, reuse_address=None): - """A coroutine which creates a TCP server bound to host and port. - - The return value is a Server object which can be used to stop - the service. - - If host is an empty string or None all interfaces are assumed - and a list of multiple sockets will be returned (most likely - one for IPv4 and another one for IPv6). - - family can be set to either AF_INET or AF_INET6 to force the - socket to use IPv4 or IPv6. If not set it will be determined - from host (defaults to AF_UNSPEC). - - flags is a bitmask for getaddrinfo(). - - sock can optionally be specified in order to use a preexisting - socket object. - - backlog is the maximum number of queued connections passed to - listen() (defaults to 100). - - ssl can be set to an SSLContext to enable SSL over the - accepted connections. - - reuse_address tells the kernel to reuse a local socket in - TIME_WAIT state, without waiting for its natural timeout to - expire. If not specified will automatically be set to True on - UNIX. - """ - raise NotImplementedError - - def create_unix_connection(self, protocol_factory, path, - ssl=None, sock=None, - server_hostname=None): - raise NotImplementedError - - def create_unix_server(self, protocol_factory, path, - sock=None, backlog=100, ssl=None): - """A coroutine which creates a UNIX Domain Socket server. - - The return value is a Server object, which can be used to stop - the service. - - path is a str, representing a file systsem path to bind the - server socket to. - - sock can optionally be specified in order to use a preexisting - socket object. - - backlog is the maximum number of queued connections passed to - listen() (defaults to 100). - - ssl can be set to an SSLContext to enable SSL over the - accepted connections. - """ - raise NotImplementedError - - def create_datagram_endpoint(self, protocol_factory, - local_addr=None, remote_addr=None, - family=0, proto=0, flags=0): - raise NotImplementedError - - # Pipes and subprocesses. - - def connect_read_pipe(self, protocol_factory, pipe): - """Register read pipe in event loop. Set the pipe to non-blocking mode. - - protocol_factory should instantiate object with Protocol interface. - pipe is a file-like object. - Return pair (transport, protocol), where transport supports the - ReadTransport interface.""" - # The reason to accept file-like object instead of just file descriptor - # is: we need to own pipe and close it at transport finishing - # Can got complicated errors if pass f.fileno(), - # close fd in pipe transport then close f and vise versa. - raise NotImplementedError - - def connect_write_pipe(self, protocol_factory, pipe): - """Register write pipe in event loop. - - protocol_factory should instantiate object with BaseProtocol interface. - Pipe is file-like object already switched to nonblocking. - Return pair (transport, protocol), where transport support - WriteTransport interface.""" - # The reason to accept file-like object instead of just file descriptor - # is: we need to own pipe and close it at transport finishing - # Can got complicated errors if pass f.fileno(), - # close fd in pipe transport then close f and vise versa. - raise NotImplementedError - - def subprocess_shell(self, protocol_factory, cmd, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - **kwargs): - raise NotImplementedError - - def subprocess_exec(self, protocol_factory, *args, **kwargs): - raise NotImplementedError - - # Ready-based callback registration methods. - # The add_*() methods return None. - # The remove_*() methods return True if something was removed, - # False if there was nothing to delete. - - def add_reader(self, fd, callback, *args): - raise NotImplementedError - - def remove_reader(self, fd): - raise NotImplementedError - - def add_writer(self, fd, callback, *args): - raise NotImplementedError - - def remove_writer(self, fd): - raise NotImplementedError - - # Completion based I/O methods returning Futures. - - def sock_recv(self, sock, nbytes): - raise NotImplementedError - - def sock_sendall(self, sock, data): - raise NotImplementedError - - def sock_connect(self, sock, address): - raise NotImplementedError - - def sock_accept(self, sock): - raise NotImplementedError - - # Signal handling. - - def add_signal_handler(self, sig, callback, *args): - raise NotImplementedError - - def remove_signal_handler(self, sig): - raise NotImplementedError - - # Task factory. - - def set_task_factory(self, factory): - raise NotImplementedError - - def get_task_factory(self): - raise NotImplementedError - - # Error handlers. - - def set_exception_handler(self, handler): - raise NotImplementedError - - def default_exception_handler(self, context): - raise NotImplementedError - - def call_exception_handler(self, context): - raise NotImplementedError - - # Debug flag management. - - def get_debug(self): - raise NotImplementedError - - def set_debug(self, enabled): - raise NotImplementedError - - - class AbstractEventLoopPolicy(object): - """Abstract policy for accessing the event loop.""" - - def get_event_loop(self): - """Get the event loop for the current context. - - Returns an event loop object implementing the BaseEventLoop interface, - or raises an exception in case no event loop has been set for the - current context and the current policy does not specify to create one. - - It should never return None.""" - raise NotImplementedError - - def set_event_loop(self, loop): - """Set the event loop for the current context to loop.""" - raise NotImplementedError - - def new_event_loop(self): - """Create and return a new event loop object according to this - policy's rules. If there's need to set this loop as the event loop for - the current context, set_event_loop must be called explicitly.""" - raise NotImplementedError - - # Child processes handling (Unix only). - - def get_child_watcher(self): - "Get the watcher for child processes." - raise NotImplementedError - - def set_child_watcher(self, watcher): - """Set the watcher for child processes.""" - raise NotImplementedError - - -class BaseDefaultEventLoopPolicy(AbstractEventLoopPolicy): - """Default policy implementation for accessing the event loop. - - In this policy, each thread has its own event loop. However, we - only automatically create an event loop by default for the main - thread; other threads by default have no event loop. - - Other policies may have different rules (e.g. a single global - event loop, or automatically creating an event loop per thread, or - using some other notion of context to which an event loop is - associated). - """ - - _loop_factory = None - - class _Local(threading.local): - _loop = None - _set_called = False - - def __init__(self): - self._local = self._Local() - - def get_event_loop(self): - """Get the event loop. - - This may be None or an instance of EventLoop. - """ - if (self._local._loop is None and - not self._local._set_called and - isinstance(threading.current_thread(), threading._MainThread)): - self.set_event_loop(self.new_event_loop()) - if self._local._loop is None: - raise RuntimeError('There is no current event loop in thread %r.' - % threading.current_thread().name) - return self._local._loop - - def set_event_loop(self, loop): - """Set the event loop.""" - self._local._set_called = True - assert loop is None or isinstance(loop, AbstractEventLoop) - self._local._loop = loop - - def new_event_loop(self): - """Create a new event loop. - - You must call set_event_loop() to make this the current event - loop. - """ - return self._loop_factory() - - -# Event loop policy. The policy itself is always global, even if the -# policy's rules say that there is an event loop per thread (or other -# notion of context). The default policy is installed by the first -# call to get_event_loop_policy(). -_event_loop_policy = None - -# Lock for protecting the on-the-fly creation of the event loop policy. -_lock = threading.Lock() - - -def _init_event_loop_policy(): - global _event_loop_policy - with _lock: - if _event_loop_policy is None: # pragma: no branch - from . import DefaultEventLoopPolicy - _event_loop_policy = DefaultEventLoopPolicy() - - -def get_event_loop_policy(): - """Get the current event loop policy.""" - if _event_loop_policy is None: - _init_event_loop_policy() - return _event_loop_policy - - -def set_event_loop_policy(policy): - """Set the current event loop policy. - - If policy is None, the default policy is restored.""" - global _event_loop_policy - assert policy is None or isinstance(policy, AbstractEventLoopPolicy) - _event_loop_policy = policy - - -def get_event_loop(): - """Equivalent to calling get_event_loop_policy().get_event_loop().""" - return get_event_loop_policy().get_event_loop() - - -def set_event_loop(loop): - """Equivalent to calling get_event_loop_policy().set_event_loop(loop).""" - get_event_loop_policy().set_event_loop(loop) - - -def new_event_loop(): - """Equivalent to calling get_event_loop_policy().new_event_loop().""" - return get_event_loop_policy().new_event_loop() - - -def get_child_watcher(): - """Equivalent to calling get_event_loop_policy().get_child_watcher().""" - return get_event_loop_policy().get_child_watcher() - - -def set_child_watcher(watcher): - """Equivalent to calling - get_event_loop_policy().set_child_watcher(watcher).""" - return get_event_loop_policy().set_child_watcher(watcher) diff --git a/.local/lib/python2.7/site-packages/trollius/events.pyc b/.local/lib/python2.7/site-packages/trollius/events.pyc deleted file mode 100644 index 1700ae71cfda305347541c517689a085b4db2dbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27439 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 diff --git a/.local/lib/python2.7/site-packages/trollius/executor.py b/.local/lib/python2.7/site-packages/trollius/executor.py deleted file mode 100644 index 9e7fdd78..00000000 --- a/.local/lib/python2.7/site-packages/trollius/executor.py +++ /dev/null @@ -1,84 +0,0 @@ -from .log import logger - -__all__ = ( - 'CancelledError', 'TimeoutError', - 'FIRST_COMPLETED', 'FIRST_EXCEPTION', 'ALL_COMPLETED', - ) - -# Argument for default thread pool executor creation. -_MAX_WORKERS = 5 - -try: - import concurrent.futures - import concurrent.futures._base -except ImportError: - FIRST_COMPLETED = 'FIRST_COMPLETED' - FIRST_EXCEPTION = 'FIRST_EXCEPTION' - ALL_COMPLETED = 'ALL_COMPLETED' - - class Future(object): - def __init__(self, callback, args): - try: - self._result = callback(*args) - self._exception = None - except Exception as err: - self._result = None - self._exception = err - self.callbacks = [] - - def cancelled(self): - return False - - def done(self): - return True - - def exception(self): - return self._exception - - def result(self): - if self._exception is not None: - raise self._exception - else: - return self._result - - def add_done_callback(self, callback): - callback(self) - - class Error(Exception): - """Base class for all future-related exceptions.""" - pass - - class CancelledError(Error): - """The Future was cancelled.""" - pass - - class TimeoutError(Error): - """The operation exceeded the given deadline.""" - pass - - class SynchronousExecutor: - """ - Synchronous executor: submit() blocks until it gets the result. - """ - def submit(self, callback, *args): - return Future(callback, args) - - def shutdown(self, wait): - pass - - def get_default_executor(): - logger.error("concurrent.futures module is missing: " - "use a synchrounous executor as fallback!") - return SynchronousExecutor() -else: - FIRST_COMPLETED = concurrent.futures.FIRST_COMPLETED - FIRST_EXCEPTION = concurrent.futures.FIRST_EXCEPTION - ALL_COMPLETED = concurrent.futures.ALL_COMPLETED - - Future = concurrent.futures.Future - Error = concurrent.futures._base.Error - CancelledError = concurrent.futures.CancelledError - TimeoutError = concurrent.futures.TimeoutError - - def get_default_executor(): - return concurrent.futures.ThreadPoolExecutor(_MAX_WORKERS) diff --git a/.local/lib/python2.7/site-packages/trollius/executor.pyc b/.local/lib/python2.7/site-packages/trollius/executor.pyc deleted file mode 100644 index a9af60ddbab3cd05daaa44a9e3761df6f4456adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4161 zcmcgvZEw^@5FXo?OYXQ!0s;C0RZS7q^@TgsN~NL|6w*tD8VjF~xrL^Dry}zr!r9Ys3W^LaEQY2L6@ZFAQXV>1D*=J_f&fo3k@1NZHDWLLN!2KIE z^@T+g;%`w*bYRiQA}c&kBb&lS8aedrGKEVNHYl#qXrbck%s)>4q?%l${U&99k!4vS zreN*@jT#hUN|VAS$uqQTQFw-aBYIBsg*M4$BVC?KS15EU>B>~P zN+JFiC_FnAou%*`cSh$Z@o8Hw&}5A!ORP`HH(0BZZ?bMB-y&#K^5)?6#sfIqf67vaAM?xPM9T?dKN@mOYh8SJ{B1Tv0g*w3;w(=CXG(Sb~JT?ken z*tjpYhTi(a2ah)U!~VB=ChKpn_a6=KKOE>b=H1=goXv`O@1lQj4a}Mwxy~~=-C5S< z9-6uhBHnOn10rT@z~UO!v}0hgPS!6D098#oa?EU-5{tISg%nBpwLd5|VjH(4m32J%oxX`&nG_Fw1)ejM-k!M^J7Gv+}h<6XUkUNvTh zYBu}BsgfbleuJ`0rOv-vlq?$FrY($Bfx&n+HV6inU?b;k4M%?wg{-aOE&;tQJ76=a zX3SxHb3QQ>!)eG6I3;huDhvgbbWl{-ybFIyunVe%Z!V3&W6_CL({ zxHKa@l$p;J&1{Mcu{#>pjiaAs;)c=><0z4D+Aa>*o5$_a4A8A-NwAltNt&yES?o@3 zn~RCZfqC-C0jM(O%rT47((YJlW&Bj+ zr|$GUCN=TvxqZjWaLUm|cCzU?lBx-mL6JN;_KFDL;4|q-a4wr+<`g5{oYo4H?qH3o zfK`cpA7zN-qH=M3~I7+vI<-SUKarGN}xTb$5vj!ZM7>ij&R z*+{_N3+1klgE5Z6MU?a*H;^H#ZJ+cFSGB@76Ps}AMSZR!fN^Gu;LJHD{g)2XTnmSL z8FJ90G>xl}H(xT|gS*?_t=KB5`ZjzQowcmE3ByoFZPa6S$TjuXK9W+qp75FhXuL;U1e*V{o&)n_nx|KJc`bEYc4w7v=N zbY~(1ZECvUFBZX-?wHDqXTfHPt01Prn|II8iRR4nbpiI<>^pS>WEEd!^;+F_td_Nk c&k?S{b^GGwi#7hOHQNg 2: - cb = '{0}, <{1} more>, {2}'.format(format_cb(cb[0]), - size-2, - format_cb(cb[-1])) - return 'cb=[%s]' % cb - - def _repr_info(self): - info = [self._state.lower()] - if self._state == _FINISHED: - if self._exception is not None: - info.append('exception={0!r}'.format(self._exception)) - else: - # use reprlib to limit the length of the output, especially - # for very long strings - result = reprlib.repr(self._result) - info.append('result={0}'.format(result)) - if self._callbacks: - info.append(self._format_callbacks()) - if self._source_traceback: - frame = self._source_traceback[-1] - info.append('created at %s:%s' % (frame[0], frame[1])) - return info - - def __repr__(self): - info = self._repr_info() - return '<%s %s>' % (self.__class__.__name__, ' '.join(info)) - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if not self._log_traceback: - # set_exception() was not called, or result() or exception() - # has consumed the exception - return - exc = self._exception - context = { - 'message': ('%s exception was never retrieved' - % self.__class__.__name__), - 'exception': exc, - 'future': self, - } - if self._source_traceback: - context['source_traceback'] = self._source_traceback - self._loop.call_exception_handler(context) - - def cancel(self): - """Cancel the future and schedule callbacks. - - If the future is already done or cancelled, return False. Otherwise, - change the future's state to cancelled, schedule the callbacks and - return True. - """ - if self._state != _PENDING: - return False - self._state = _CANCELLED - self._schedule_callbacks() - return True - - def _schedule_callbacks(self): - """Internal: Ask the event loop to call all callbacks. - - The callbacks are scheduled to be called as soon as possible. Also - clears the callback list. - """ - callbacks = self._callbacks[:] - if not callbacks: - return - - self._callbacks[:] = [] - for callback in callbacks: - self._loop.call_soon(callback, self) - - def cancelled(self): - """Return True if the future was cancelled.""" - return self._state == _CANCELLED - - # Don't implement running(); see http://bugs.python.org/issue18699 - - def done(self): - """Return True if the future is done. - - Done means either that a result / exception are available, or that the - future was cancelled. - """ - return self._state != _PENDING - - def result(self): - """Return the result this future represents. - - If the future has been cancelled, raises CancelledError. If the - future's result isn't yet available, raises InvalidStateError. If - the future is done and has an exception set, this exception is raised. - """ - if self._state == _CANCELLED: - raise CancelledError - if self._state != _FINISHED: - raise InvalidStateError('Result is not ready.') - self._log_traceback = False - if self._tb_logger is not None: - self._tb_logger.clear() - self._tb_logger = None - exc_tb = self._exception_tb - self._exception_tb = None - if self._exception is not None: - if exc_tb is not None: - compat.reraise(type(self._exception), self._exception, exc_tb) - else: - raise self._exception - return self._result - - def exception(self): - """Return the exception that was set on this future. - - The exception (or None if no exception was set) is returned only if - the future is done. If the future has been cancelled, raises - CancelledError. If the future isn't done yet, raises - InvalidStateError. - """ - if self._state == _CANCELLED: - raise CancelledError - if self._state != _FINISHED: - raise InvalidStateError('Exception is not set.') - self._log_traceback = False - if self._tb_logger is not None: - self._tb_logger.clear() - self._tb_logger = None - self._exception_tb = None - return self._exception - - def add_done_callback(self, fn): - """Add a callback to be run when the future becomes done. - - The callback is called with a single argument - the future object. If - the future is already done when this is called, the callback is - scheduled with call_soon. - """ - if self._state != _PENDING: - self._loop.call_soon(fn, self) - else: - self._callbacks.append(fn) - - # New method not in PEP 3148. - - def remove_done_callback(self, fn): - """Remove all instances of a callback from the "call when done" list. - - Returns the number of callbacks removed. - """ - filtered_callbacks = [f for f in self._callbacks if f != fn] - removed_count = len(self._callbacks) - len(filtered_callbacks) - if removed_count: - self._callbacks[:] = filtered_callbacks - return removed_count - - # So-called internal methods (note: no set_running_or_notify_cancel()). - - def _set_result_unless_cancelled(self, result): - """Helper setting the result only if the future was not cancelled.""" - if self.cancelled(): - return - self.set_result(result) - - def set_result(self, result): - """Mark the future done and set its result. - - If the future is already done when this method is called, raises - InvalidStateError. - """ - if self._state != _PENDING: - raise InvalidStateError('{0}: {1!r}'.format(self._state, self)) - self._result = result - self._state = _FINISHED - self._schedule_callbacks() - - def _get_exception_tb(self): - return self._exception_tb - - def set_exception(self, exception): - self._set_exception_with_tb(exception, None) - - def _set_exception_with_tb(self, exception, exc_tb): - """Mark the future done and set an exception. - - If the future is already done when this method is called, raises - InvalidStateError. - """ - if self._state != _PENDING: - raise InvalidStateError('{0}: {1!r}'.format(self._state, self)) - if isinstance(exception, type): - exception = exception() - self._exception = exception - if exc_tb is not None: - self._exception_tb = exc_tb - exc_tb = None - elif not six.PY3: - self._exception_tb = sys.exc_info()[2] - self._state = _FINISHED - self._schedule_callbacks() - if compat.PY34: - self._log_traceback = True - else: - self._tb_logger = _TracebackLogger(self, exception) - if hasattr(exception, '__traceback__'): - # Python 3: exception contains a link to the traceback - - # Arrange for the logger to be activated after all callbacks - # have had a chance to call result() or exception(). - self._loop.call_soon(self._tb_logger.activate) - else: - if self._loop.get_debug(): - frame = sys._getframe(1) - tb = ['Traceback (most recent call last):\n'] - if self._exception_tb is not None: - tb += traceback.format_tb(self._exception_tb) - else: - tb += traceback.format_stack(frame) - tb += traceback.format_exception_only(type(exception), exception) - self._tb_logger.tb = tb - else: - self._tb_logger.tb = traceback.format_exception_only( - type(exception), - exception) - - self._tb_logger.exc = None - - # Truly internal methods. - - def _copy_state(self, other): - """Internal helper to copy state from another Future. - - The other Future may be a concurrent.futures.Future. - """ - assert other.done() - if self.cancelled(): - return - assert not self.done() - if other.cancelled(): - self.cancel() - else: - exception = other.exception() - if exception is not None: - self.set_exception(exception) - else: - result = other.result() - self.set_result(result) - -if events.asyncio is not None: - # Accept also asyncio Future objects for interoperability - _FUTURE_CLASSES = (Future, events.asyncio.Future) -else: - _FUTURE_CLASSES = Future - -def wrap_future(fut, loop=None): - """Wrap concurrent.futures.Future object.""" - if isinstance(fut, _FUTURE_CLASSES): - return fut - assert isinstance(fut, executor.Future), \ - 'concurrent.futures.Future is expected, got {0!r}'.format(fut) - if loop is None: - loop = events.get_event_loop() - new_future = Future(loop=loop) - - def _check_cancel_other(f): - if f.cancelled(): - fut.cancel() - - new_future.add_done_callback(_check_cancel_other) - fut.add_done_callback( - lambda future: loop.call_soon_threadsafe( - new_future._copy_state, future)) - return new_future diff --git a/.local/lib/python2.7/site-packages/trollius/futures.pyc b/.local/lib/python2.7/site-packages/trollius/futures.pyc deleted file mode 100644 index faef48c78b02a78f495ad3ca98fa129ac7c99c64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16847 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 - - while failing loudly when accidentally using: - - with lock: - - """ - - def __init__(self, lock): - self._lock = lock - - def __enter__(self): - # We have no use for the "as ..." clause in the with - # statement for locks. - return None - - def __exit__(self, *args): - try: - self._lock.release() - finally: - self._lock = None # Crudely prevent reuse. - - -class _ContextManagerMixin(object): - def __enter__(self): - raise RuntimeError( - '"yield From" should be used as context manager expression') - - def __exit__(self, *args): - # This must exist because __enter__ exists, even though that - # always raises; that's how the with-statement works. - pass - - # FIXME: support PEP 492? - # if compat.PY35: - - # def __await__(self): - # # To make "with await lock" work. - # yield from self.acquire() - # return _ContextManager(self) - - # @coroutine - # def __aenter__(self): - # yield from self.acquire() - # # We have no use for the "as ..." clause in the with - # # statement for locks. - # return None - - # @coroutine - # def __aexit__(self, exc_type, exc, tb): - # self.release() - - -class Lock(_ContextManagerMixin): - """Primitive lock objects. - - A primitive lock is a synchronization primitive that is not owned - by a particular coroutine when locked. A primitive lock is in one - of two states, 'locked' or 'unlocked'. - - It is created in the unlocked state. It has two basic methods, - acquire() and release(). When the state is unlocked, acquire() - changes the state to locked and returns immediately. When the - state is locked, acquire() blocks until a call to release() in - another coroutine changes it to unlocked, then the acquire() call - resets it to locked and returns. The release() method should only - be called in the locked state; it changes the state to unlocked - and returns immediately. If an attempt is made to release an - unlocked lock, a RuntimeError will be raised. - - When more than one coroutine is blocked in acquire() waiting for - the state to turn to unlocked, only one coroutine proceeds when a - release() call resets the state to unlocked; first coroutine which - is blocked in acquire() is being processed. - - acquire() is a coroutine and should be called with 'yield From'. - - Locks also support the context management protocol. '(yield From(lock))' - should be used as context manager expression. - - Usage: - - lock = Lock() - ... - yield From(lock) - try: - ... - finally: - lock.release() - - Context manager usage: - - lock = Lock() - ... - with (yield From(lock)): - ... - - Lock objects can be tested for locking state: - - if not lock.locked(): - yield From(lock) - else: - # lock is acquired - ... - - """ - - def __init__(self, loop=None): - self._waiters = collections.deque() - self._locked = False - if loop is not None: - self._loop = loop - else: - self._loop = events.get_event_loop() - - def __repr__(self): - res = super(Lock, self).__repr__() - extra = 'locked' if self._locked else 'unlocked' - if self._waiters: - extra = '{0},waiters:{1}'.format(extra, len(self._waiters)) - return '<{0} [{1}]>'.format(res[1:-1], extra) - - def locked(self): - """Return True if lock is acquired.""" - return self._locked - - @coroutine - def acquire(self): - """Acquire a lock. - - This method blocks until the lock is unlocked, then sets it to - locked and returns True. - """ - if not self._waiters and not self._locked: - self._locked = True - raise Return(True) - - fut = futures.Future(loop=self._loop) - self._waiters.append(fut) - try: - yield From(fut) - self._locked = True - raise Return(True) - finally: - self._waiters.remove(fut) - - def release(self): - """Release a lock. - - When the lock is locked, reset it to unlocked, and return. - If any other coroutines are blocked waiting for the lock to become - unlocked, allow exactly one of them to proceed. - - When invoked on an unlocked lock, a RuntimeError is raised. - - There is no return value. - """ - if self._locked: - self._locked = False - # Wake up the first waiter who isn't cancelled. - for fut in self._waiters: - if not fut.done(): - fut.set_result(True) - break - else: - raise RuntimeError('Lock is not acquired.') - - -class Event(object): - """Asynchronous equivalent to threading.Event. - - Class implementing event objects. An event manages a flag that can be set - to true with the set() method and reset to false with the clear() method. - The wait() method blocks until the flag is true. The flag is initially - false. - """ - - def __init__(self, loop=None): - self._waiters = collections.deque() - self._value = False - if loop is not None: - self._loop = loop - else: - self._loop = events.get_event_loop() - - def __repr__(self): - res = super(Event, self).__repr__() - extra = 'set' if self._value else 'unset' - if self._waiters: - extra = '{0},waiters:{1}'.format(extra, len(self._waiters)) - return '<{0} [{1}]>'.format(res[1:-1], extra) - - def is_set(self): - """Return True if and only if the internal flag is true.""" - return self._value - - def set(self): - """Set the internal flag to true. All coroutines waiting for it to - become true are awakened. Coroutine that call wait() once the flag is - true will not block at all. - """ - if not self._value: - self._value = True - - for fut in self._waiters: - if not fut.done(): - fut.set_result(True) - - def clear(self): - """Reset the internal flag to false. Subsequently, coroutines calling - wait() will block until set() is called to set the internal flag - to true again.""" - self._value = False - - @coroutine - def wait(self): - """Block until the internal flag is true. - - If the internal flag is true on entry, return True - immediately. Otherwise, block until another coroutine calls - set() to set the flag to true, then return True. - """ - if self._value: - raise Return(True) - - fut = futures.Future(loop=self._loop) - self._waiters.append(fut) - try: - yield From(fut) - raise Return(True) - finally: - self._waiters.remove(fut) - - -class Condition(_ContextManagerMixin): - """Asynchronous equivalent to threading.Condition. - - This class implements condition variable objects. A condition variable - allows one or more coroutines to wait until they are notified by another - coroutine. - - A new Lock object is created and used as the underlying lock. - """ - - def __init__(self, lock=None, loop=None): - if loop is not None: - self._loop = loop - else: - self._loop = events.get_event_loop() - - if lock is None: - lock = Lock(loop=self._loop) - elif lock._loop is not self._loop: - raise ValueError("loop argument must agree with lock") - - self._lock = lock - # Export the lock's locked(), acquire() and release() methods. - self.locked = lock.locked - self.acquire = lock.acquire - self.release = lock.release - - self._waiters = collections.deque() - - def __repr__(self): - res = super(Condition, self).__repr__() - extra = 'locked' if self.locked() else 'unlocked' - if self._waiters: - extra = '{0},waiters:{1}'.format(extra, len(self._waiters)) - return '<{0} [{1}]>'.format(res[1:-1], extra) - - @coroutine - def wait(self): - """Wait until notified. - - If the calling coroutine has not acquired the lock when this - method is called, a RuntimeError is raised. - - This method releases the underlying lock, and then blocks - until it is awakened by a notify() or notify_all() call for - the same condition variable in another coroutine. Once - awakened, it re-acquires the lock and returns True. - """ - if not self.locked(): - raise RuntimeError('cannot wait on un-acquired lock') - - self.release() - try: - fut = futures.Future(loop=self._loop) - self._waiters.append(fut) - try: - yield From(fut) - raise Return(True) - finally: - self._waiters.remove(fut) - - except Exception as exc: - # Workaround CPython bug #23353: using yield/yield-from in an - # except block of a generator doesn't clear properly - # sys.exc_info() - err = exc - else: - err = None - - if err is not None: - yield From(self.acquire()) - raise err - - yield From(self.acquire()) - - @coroutine - def wait_for(self, predicate): - """Wait until a predicate becomes true. - - The predicate should be a callable which result will be - interpreted as a boolean value. The final predicate value is - the return value. - """ - result = predicate() - while not result: - yield From(self.wait()) - result = predicate() - raise Return(result) - - def notify(self, n=1): - """By default, wake up one coroutine waiting on this condition, if any. - If the calling coroutine has not acquired the lock when this method - is called, a RuntimeError is raised. - - This method wakes up at most n of the coroutines waiting for the - condition variable; it is a no-op if no coroutines are waiting. - - Note: an awakened coroutine does not actually return from its - wait() call until it can reacquire the lock. Since notify() does - not release the lock, its caller should. - """ - if not self.locked(): - raise RuntimeError('cannot notify on un-acquired lock') - - idx = 0 - for fut in self._waiters: - if idx >= n: - break - - if not fut.done(): - idx += 1 - fut.set_result(False) - - def notify_all(self): - """Wake up all threads waiting on this condition. This method acts - like notify(), but wakes up all waiting threads instead of one. If the - calling thread has not acquired the lock when this method is called, - a RuntimeError is raised. - """ - self.notify(len(self._waiters)) - - -class Semaphore(_ContextManagerMixin): - """A Semaphore implementation. - - A semaphore manages an internal counter which is decremented by each - acquire() call and incremented by each release() call. The counter - can never go below zero; when acquire() finds that it is zero, it blocks, - waiting until some other thread calls release(). - - Semaphores also support the context management protocol. - - The optional argument gives the initial value for the internal - counter; it defaults to 1. If the value given is less than 0, - ValueError is raised. - """ - - def __init__(self, value=1, loop=None): - if value < 0: - raise ValueError("Semaphore initial value must be >= 0") - self._value = value - self._waiters = collections.deque() - if loop is not None: - self._loop = loop - else: - self._loop = events.get_event_loop() - - def __repr__(self): - res = super(Semaphore, self).__repr__() - extra = 'locked' if self.locked() else 'unlocked,value:{0}'.format( - self._value) - if self._waiters: - extra = '{0},waiters:{1}'.format(extra, len(self._waiters)) - return '<{0} [{1}]>'.format(res[1:-1], extra) - - def locked(self): - """Returns True if semaphore can not be acquired immediately.""" - return self._value == 0 - - @coroutine - def acquire(self): - """Acquire a semaphore. - - If the internal counter is larger than zero on entry, - decrement it by one and return True immediately. If it is - zero on entry, block, waiting until some other coroutine has - called release() to make it larger than 0, and then return - True. - """ - if not self._waiters and self._value > 0: - self._value -= 1 - raise Return(True) - - fut = futures.Future(loop=self._loop) - self._waiters.append(fut) - try: - yield From(fut) - self._value -= 1 - raise Return(True) - finally: - self._waiters.remove(fut) - - def release(self): - """Release a semaphore, incrementing the internal counter by one. - When it was zero on entry and another coroutine is waiting for it to - become larger than zero again, wake up that coroutine. - """ - self._value += 1 - for waiter in self._waiters: - if not waiter.done(): - waiter.set_result(True) - break - - -class BoundedSemaphore(Semaphore): - """A bounded semaphore implementation. - - This raises ValueError in release() if it would increase the value - above the initial value. - """ - - def __init__(self, value=1, loop=None): - self._bound_value = value - super(BoundedSemaphore, self).__init__(value, loop=loop) - - def release(self): - if self._value >= self._bound_value: - raise ValueError('BoundedSemaphore released too many times') - super(BoundedSemaphore, self).release() diff --git a/.local/lib/python2.7/site-packages/trollius/locks.pyc b/.local/lib/python2.7/site-packages/trollius/locks.pyc deleted file mode 100644 index 26319876d2cd77b71be3e2ff1d903858331fdfed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17301 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 Vb5l<|d*<0Q<(cbe9-R5!{{rMxGPD2y diff --git a/.local/lib/python2.7/site-packages/trollius/log.py b/.local/lib/python2.7/site-packages/trollius/log.py deleted file mode 100644 index 23a7074a..00000000 --- a/.local/lib/python2.7/site-packages/trollius/log.py +++ /dev/null @@ -1,7 +0,0 @@ -"""Logging configuration.""" - -import logging - - -# Name the logger after the package. -logger = logging.getLogger(__package__) diff --git a/.local/lib/python2.7/site-packages/trollius/log.pyc b/.local/lib/python2.7/site-packages/trollius/log.pyc deleted file mode 100644 index 13dfb2d5ea6ed9f6c741c0c9bed244f436f699d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmYL>OHacv5QNuB=!3_VGZ&;ts4?OK2gKuEap6{}ih{FsUEFMCI|t5)U(64HNvXt2 z{yejqo&5Xk`0MI%Y3MK+{wKV63A98DP*IzaSF}*XiZ&T>PM@&FuzxM{A$|_b#ah?d z3nSgi**-MMNmsca%u9KMKpF#e-HNH}z4m_>X^Oq&G!$@1C;QZ{G4G9KBuDT=l0yka z|A^19dM#Vl8;L!K>pNX}F^$*Wz3JUYT1$6R-RkHP&kluAry$N4 N{Ggy?0gSTK;up#@MnwPs diff --git a/.local/lib/python2.7/site-packages/trollius/proactor_events.py b/.local/lib/python2.7/site-packages/trollius/proactor_events.py deleted file mode 100644 index 66b4caf1..00000000 --- a/.local/lib/python2.7/site-packages/trollius/proactor_events.py +++ /dev/null @@ -1,549 +0,0 @@ -"""Event loop using a proactor and related classes. - -A proactor is a "notify-on-completion" multiplexer. Currently a -proactor is only implemented on Windows with IOCP. -""" - -__all__ = ['BaseProactorEventLoop'] - -import socket -import warnings - -from . import base_events -from . import compat -from . import constants -from . import futures -from . import sslproto -from . import transports -from .log import logger -from .compat import flatten_bytes -from .py33_exceptions import (BrokenPipeError, - ConnectionAbortedError, ConnectionResetError) - - -class _ProactorBasePipeTransport(transports._FlowControlMixin, - transports.BaseTransport): - """Base class for pipe and socket transports.""" - - def __init__(self, loop, sock, protocol, waiter=None, - extra=None, server=None): - super(_ProactorBasePipeTransport, self).__init__(extra, loop) - self._set_extra(sock) - self._sock = sock - self._protocol = protocol - self._server = server - self._buffer = None # None or bytearray. - self._read_fut = None - self._write_fut = None - self._pending_write = 0 - self._conn_lost = 0 - self._closing = False # Set when close() called. - self._eof_written = False - if self._server is not None: - self._server._attach() - self._loop.call_soon(self._protocol.connection_made, self) - if waiter is not None: - # only wake up the waiter when connection_made() has been called - self._loop.call_soon(waiter._set_result_unless_cancelled, None) - - def __repr__(self): - info = [self.__class__.__name__] - if self._sock is None: - info.append('closed') - elif self._closing: - info.append('closing') - if self._sock is not None: - info.append('fd=%s' % self._sock.fileno()) - if self._read_fut is not None: - info.append('read=%s' % self._read_fut) - if self._write_fut is not None: - info.append("write=%r" % self._write_fut) - if self._buffer: - bufsize = len(self._buffer) - info.append('write_bufsize=%s' % bufsize) - if self._eof_written: - info.append('EOF written') - return '<%s>' % ' '.join(info) - - def _set_extra(self, sock): - self._extra['pipe'] = sock - - def close(self): - if self._closing: - return - self._closing = True - self._conn_lost += 1 - if not self._buffer and self._write_fut is None: - self._loop.call_soon(self._call_connection_lost, None) - if self._read_fut is not None: - self._read_fut.cancel() - self._read_fut = None - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if self._sock is not None: - warnings.warn("unclosed transport %r" % self, ResourceWarning) - self.close() - - def _fatal_error(self, exc, message='Fatal error on pipe transport'): - if isinstance(exc, (BrokenPipeError, ConnectionResetError)): - if self._loop.get_debug(): - logger.debug("%r: %s", self, message, exc_info=True) - else: - self._loop.call_exception_handler({ - 'message': message, - 'exception': exc, - 'transport': self, - 'protocol': self._protocol, - }) - self._force_close(exc) - - def _force_close(self, exc): - if self._closing: - return - self._closing = True - self._conn_lost += 1 - if self._write_fut: - self._write_fut.cancel() - self._write_fut = None - if self._read_fut: - self._read_fut.cancel() - self._read_fut = None - self._pending_write = 0 - self._buffer = None - self._loop.call_soon(self._call_connection_lost, exc) - - def _call_connection_lost(self, exc): - try: - self._protocol.connection_lost(exc) - finally: - # XXX If there is a pending overlapped read on the other - # end then it may fail with ERROR_NETNAME_DELETED if we - # just close our end. First calling shutdown() seems to - # cure it, but maybe using DisconnectEx() would be better. - if hasattr(self._sock, 'shutdown'): - self._sock.shutdown(socket.SHUT_RDWR) - self._sock.close() - self._sock = None - server = self._server - if server is not None: - server._detach() - self._server = None - - def get_write_buffer_size(self): - size = self._pending_write - if self._buffer is not None: - size += len(self._buffer) - return size - - -class _ProactorReadPipeTransport(_ProactorBasePipeTransport, - transports.ReadTransport): - """Transport for read pipes.""" - - def __init__(self, loop, sock, protocol, waiter=None, - extra=None, server=None): - super(_ProactorReadPipeTransport, self).__init__(loop, sock, protocol, - waiter, extra, server) - self._paused = False - self._loop.call_soon(self._loop_reading) - - def pause_reading(self): - if self._closing: - raise RuntimeError('Cannot pause_reading() when closing') - if self._paused: - raise RuntimeError('Already paused') - self._paused = True - if self._loop.get_debug(): - logger.debug("%r pauses reading", self) - - def resume_reading(self): - if not self._paused: - raise RuntimeError('Not paused') - self._paused = False - if self._closing: - return - self._loop.call_soon(self._loop_reading, self._read_fut) - if self._loop.get_debug(): - logger.debug("%r resumes reading", self) - - def _loop_reading(self, fut=None): - if self._paused: - return - data = None - - try: - if fut is not None: - assert self._read_fut is fut or (self._read_fut is None and - self._closing) - self._read_fut = None - data = fut.result() # deliver data later in "finally" clause - - if self._closing: - # since close() has been called we ignore any read data - data = None - return - - if data == b'': - # we got end-of-file so no need to reschedule a new read - return - - # reschedule a new read - self._read_fut = self._loop._proactor.recv(self._sock, 4096) - except ConnectionAbortedError as exc: - if not self._closing: - self._fatal_error(exc, 'Fatal read error on pipe transport') - elif self._loop.get_debug(): - logger.debug("Read error on pipe transport while closing", - exc_info=True) - except ConnectionResetError as exc: - self._force_close(exc) - except OSError as exc: - self._fatal_error(exc, 'Fatal read error on pipe transport') - except futures.CancelledError: - if not self._closing: - raise - else: - self._read_fut.add_done_callback(self._loop_reading) - finally: - if data: - self._protocol.data_received(data) - elif data is not None: - if self._loop.get_debug(): - logger.debug("%r received EOF", self) - keep_open = self._protocol.eof_received() - if not keep_open: - self.close() - - -class _ProactorBaseWritePipeTransport(_ProactorBasePipeTransport, - transports.WriteTransport): - """Transport for write pipes.""" - - def write(self, data): - data = flatten_bytes(data) - if self._eof_written: - raise RuntimeError('write_eof() already called') - - if not data: - return - - if self._conn_lost: - if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES: - logger.warning('socket.send() raised exception.') - self._conn_lost += 1 - return - - # Observable states: - # 1. IDLE: _write_fut and _buffer both None - # 2. WRITING: _write_fut set; _buffer None - # 3. BACKED UP: _write_fut set; _buffer a bytearray - # We always copy the data, so the caller can't modify it - # while we're still waiting for the I/O to happen. - if self._write_fut is None: # IDLE -> WRITING - assert self._buffer is None - # Pass a copy, except if it's already immutable. - self._loop_writing(data=bytes(data)) - elif not self._buffer: # WRITING -> BACKED UP - # Make a mutable copy which we can extend. - self._buffer = bytearray(data) - self._maybe_pause_protocol() - else: # BACKED UP - # Append to buffer (also copies). - self._buffer.extend(data) - self._maybe_pause_protocol() - - def _loop_writing(self, f=None, data=None): - try: - assert f is self._write_fut - self._write_fut = None - self._pending_write = 0 - if f: - f.result() - if data is None: - data = self._buffer - self._buffer = None - if not data: - if self._closing: - self._loop.call_soon(self._call_connection_lost, None) - if self._eof_written: - self._sock.shutdown(socket.SHUT_WR) - # Now that we've reduced the buffer size, tell the - # protocol to resume writing if it was paused. Note that - # we do this last since the callback is called immediately - # and it may add more data to the buffer (even causing the - # protocol to be paused again). - self._maybe_resume_protocol() - else: - self._write_fut = self._loop._proactor.send(self._sock, data) - if not self._write_fut.done(): - assert self._pending_write == 0 - self._pending_write = len(data) - self._write_fut.add_done_callback(self._loop_writing) - self._maybe_pause_protocol() - else: - self._write_fut.add_done_callback(self._loop_writing) - except ConnectionResetError as exc: - self._force_close(exc) - except OSError as exc: - self._fatal_error(exc, 'Fatal write error on pipe transport') - - def can_write_eof(self): - return True - - def write_eof(self): - self.close() - - def abort(self): - self._force_close(None) - - -class _ProactorWritePipeTransport(_ProactorBaseWritePipeTransport): - def __init__(self, *args, **kw): - super(_ProactorWritePipeTransport, self).__init__(*args, **kw) - self._read_fut = self._loop._proactor.recv(self._sock, 16) - self._read_fut.add_done_callback(self._pipe_closed) - - def _pipe_closed(self, fut): - if fut.cancelled(): - # the transport has been closed - return - assert fut.result() == b'' - if self._closing: - assert self._read_fut is None - return - assert fut is self._read_fut, (fut, self._read_fut) - self._read_fut = None - if self._write_fut is not None: - self._force_close(BrokenPipeError()) - else: - self.close() - - -class _ProactorDuplexPipeTransport(_ProactorReadPipeTransport, - _ProactorBaseWritePipeTransport, - transports.Transport): - """Transport for duplex pipes.""" - - def can_write_eof(self): - return False - - def write_eof(self): - raise NotImplementedError - - -class _ProactorSocketTransport(_ProactorReadPipeTransport, - _ProactorBaseWritePipeTransport, - transports.Transport): - """Transport for connected sockets.""" - - def _set_extra(self, sock): - self._extra['socket'] = sock - try: - self._extra['sockname'] = sock.getsockname() - except (socket.error, AttributeError): - if self._loop.get_debug(): - logger.warning("getsockname() failed on %r", - sock, exc_info=True) - if 'peername' not in self._extra: - try: - self._extra['peername'] = sock.getpeername() - except (socket.error, AttributeError): - if self._loop.get_debug(): - logger.warning("getpeername() failed on %r", - sock, exc_info=True) - - def can_write_eof(self): - return True - - def write_eof(self): - if self._closing or self._eof_written: - return - self._eof_written = True - if self._write_fut is None: - self._sock.shutdown(socket.SHUT_WR) - - -class BaseProactorEventLoop(base_events.BaseEventLoop): - - def __init__(self, proactor): - super(BaseProactorEventLoop, self).__init__() - logger.debug('Using proactor: %s', proactor.__class__.__name__) - self._proactor = proactor - self._selector = proactor # convenient alias - self._self_reading_future = None - self._accept_futures = {} # socket file descriptor => Future - proactor.set_loop(self) - self._make_self_pipe() - - def _make_socket_transport(self, sock, protocol, waiter=None, - extra=None, server=None): - return _ProactorSocketTransport(self, sock, protocol, waiter, - extra, server) - - def _make_ssl_transport(self, rawsock, protocol, sslcontext, waiter=None, - server_side=False, server_hostname=None, - extra=None, server=None): - if not sslproto._is_sslproto_available(): - raise NotImplementedError("Proactor event loop requires Python 3.5" - " or newer (ssl.MemoryBIO) to support " - "SSL") - - ssl_protocol = sslproto.SSLProtocol(self, protocol, sslcontext, waiter, - server_side, server_hostname) - _ProactorSocketTransport(self, rawsock, ssl_protocol, - extra=extra, server=server) - return ssl_protocol._app_transport - - def _make_duplex_pipe_transport(self, sock, protocol, waiter=None, - extra=None): - return _ProactorDuplexPipeTransport(self, - sock, protocol, waiter, extra) - - def _make_read_pipe_transport(self, sock, protocol, waiter=None, - extra=None): - return _ProactorReadPipeTransport(self, sock, protocol, waiter, extra) - - def _make_write_pipe_transport(self, sock, protocol, waiter=None, - extra=None): - # We want connection_lost() to be called when other end closes - return _ProactorWritePipeTransport(self, - sock, protocol, waiter, extra) - - def close(self): - if self.is_running(): - raise RuntimeError("Cannot close a running event loop") - if self.is_closed(): - return - - # Call these methods before closing the event loop (before calling - # BaseEventLoop.close), because they can schedule callbacks with - # call_soon(), which is forbidden when the event loop is closed. - self._stop_accept_futures() - self._close_self_pipe() - self._proactor.close() - self._proactor = None - self._selector = None - - # Close the event loop - super(BaseProactorEventLoop, self).close() - - def sock_recv(self, sock, n): - return self._proactor.recv(sock, n) - - def sock_sendall(self, sock, data): - return self._proactor.send(sock, data) - - def sock_connect(self, sock, address): - try: - if self._debug: - base_events._check_resolved_address(sock, address) - except ValueError as err: - fut = futures.Future(loop=self) - fut.set_exception(err) - return fut - else: - return self._proactor.connect(sock, address) - - def sock_accept(self, sock): - return self._proactor.accept(sock) - - def _socketpair(self): - raise NotImplementedError - - def _close_self_pipe(self): - if self._self_reading_future is not None: - self._self_reading_future.cancel() - self._self_reading_future = None - self._ssock.close() - self._ssock = None - self._csock.close() - self._csock = None - self._internal_fds -= 1 - - def _make_self_pipe(self): - # A self-socket, really. :-) - self._ssock, self._csock = self._socketpair() - self._ssock.setblocking(False) - self._csock.setblocking(False) - self._internal_fds += 1 - self.call_soon(self._loop_self_reading) - - def _loop_self_reading(self, f=None): - try: - if f is not None: - f.result() # may raise - f = self._proactor.recv(self._ssock, 4096) - except futures.CancelledError: - # _close_self_pipe() has been called, stop waiting for data - return - except Exception as exc: - self.call_exception_handler({ - 'message': 'Error on reading from the event loop self pipe', - 'exception': exc, - 'loop': self, - }) - else: - self._self_reading_future = f - f.add_done_callback(self._loop_self_reading) - - def _write_to_self(self): - self._csock.send(b'\0') - - def _start_serving(self, protocol_factory, sock, - sslcontext=None, server=None): - - def loop(f=None): - try: - if f is not None: - conn, addr = f.result() - if self._debug: - logger.debug("%r got a new connection from %r: %r", - server, addr, conn) - protocol = protocol_factory() - if sslcontext is not None: - self._make_ssl_transport( - conn, protocol, sslcontext, server_side=True, - extra={'peername': addr}, server=server) - else: - self._make_socket_transport( - conn, protocol, - extra={'peername': addr}, server=server) - if self.is_closed(): - return - f = self._proactor.accept(sock) - except OSError as exc: - if sock.fileno() != -1: - self.call_exception_handler({ - 'message': 'Accept failed on a socket', - 'exception': exc, - 'socket': sock, - }) - sock.close() - elif self._debug: - logger.debug("Accept failed on socket %r", - sock, exc_info=True) - except futures.CancelledError: - sock.close() - else: - self._accept_futures[sock.fileno()] = f - f.add_done_callback(loop) - - self.call_soon(loop) - - def _process_events(self, event_list): - # Events are processed in the IocpProactor._poll() method - pass - - def _stop_accept_futures(self): - for future in self._accept_futures.values(): - future.cancel() - self._accept_futures.clear() - - def _stop_serving(self, sock): - self._stop_accept_futures() - self._proactor._stop_serving(sock) - sock.close() diff --git a/.local/lib/python2.7/site-packages/trollius/proactor_events.pyc b/.local/lib/python2.7/site-packages/trollius/proactor_events.pyc deleted file mode 100644 index 5e4ea17a0a875120c0c222f6bd33628aebc5d029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20816 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 o(}Z1qWcX!tAUla!dnE(I) diff --git a/.local/lib/python2.7/site-packages/trollius/protocols.py b/.local/lib/python2.7/site-packages/trollius/protocols.py deleted file mode 100644 index 2c18287b..00000000 --- a/.local/lib/python2.7/site-packages/trollius/protocols.py +++ /dev/null @@ -1,134 +0,0 @@ -"""Abstract Protocol class.""" - -__all__ = ['BaseProtocol', 'Protocol', 'DatagramProtocol', - 'SubprocessProtocol'] - - -class BaseProtocol(object): - """Common base class for protocol interfaces. - - Usually user implements protocols that derived from BaseProtocol - like Protocol or ProcessProtocol. - - The only case when BaseProtocol should be implemented directly is - write-only transport like write pipe - """ - - def connection_made(self, transport): - """Called when a connection is made. - - The argument is the transport representing the pipe connection. - To receive data, wait for data_received() calls. - When the connection is closed, connection_lost() is called. - """ - - def connection_lost(self, exc): - """Called when the connection is lost or closed. - - The argument is an exception object or None (the latter - meaning a regular EOF is received or the connection was - aborted or closed). - """ - - def pause_writing(self): - """Called when the transport's buffer goes over the high-water mark. - - Pause and resume calls are paired -- pause_writing() is called - once when the buffer goes strictly over the high-water mark - (even if subsequent writes increases the buffer size even - more), and eventually resume_writing() is called once when the - buffer size reaches the low-water mark. - - Note that if the buffer size equals the high-water mark, - pause_writing() is not called -- it must go strictly over. - Conversely, resume_writing() is called when the buffer size is - equal or lower than the low-water mark. These end conditions - are important to ensure that things go as expected when either - mark is zero. - - NOTE: This is the only Protocol callback that is not called - through EventLoop.call_soon() -- if it were, it would have no - effect when it's most needed (when the app keeps writing - without yielding until pause_writing() is called). - """ - - def resume_writing(self): - """Called when the transport's buffer drains below the low-water mark. - - See pause_writing() for details. - """ - - -class Protocol(BaseProtocol): - """Interface for stream protocol. - - The user should implement this interface. They can inherit from - this class but don't need to. The implementations here do - nothing (they don't raise exceptions). - - When the user wants to requests a transport, they pass a protocol - factory to a utility function (e.g., EventLoop.create_connection()). - - When the connection is made successfully, connection_made() is - called with a suitable transport object. Then data_received() - will be called 0 or more times with data (bytes) received from the - transport; finally, connection_lost() will be called exactly once - with either an exception object or None as an argument. - - State machine of calls: - - start -> CM [-> DR*] [-> ER?] -> CL -> end - - * CM: connection_made() - * DR: data_received() - * ER: eof_received() - * CL: connection_lost() - """ - - def data_received(self, data): - """Called when some data is received. - - The argument is a bytes object. - """ - - def eof_received(self): - """Called when the other end calls write_eof() or equivalent. - - If this returns a false value (including None), the transport - will close itself. If it returns a true value, closing the - transport is up to the protocol. - """ - - -class DatagramProtocol(BaseProtocol): - """Interface for datagram protocol.""" - - def datagram_received(self, data, addr): - """Called when some datagram is received.""" - - def error_received(self, exc): - """Called when a send or receive operation raises an OSError. - - (Other than BlockingIOError or InterruptedError.) - """ - - -class SubprocessProtocol(BaseProtocol): - """Interface for protocol for subprocess calls.""" - - def pipe_data_received(self, fd, data): - """Called when the subprocess writes data into stdout/stderr pipe. - - fd is int file descriptor. - data is bytes object. - """ - - def pipe_connection_lost(self, fd, exc): - """Called when a file descriptor associated with the child process is - closed. - - fd is the int file descriptor that was closed. - """ - - def process_exited(self): - """Called when subprocess has exited.""" diff --git a/.local/lib/python2.7/site-packages/trollius/protocols.pyc b/.local/lib/python2.7/site-packages/trollius/protocols.pyc deleted file mode 100644 index f728a4a5b95ec04ef0ccbec4ab1883aab0ccaf3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6872 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 diff --git a/.local/lib/python2.7/site-packages/trollius/py27_weakrefset.py b/.local/lib/python2.7/site-packages/trollius/py27_weakrefset.py deleted file mode 100644 index 990c3a6b..00000000 --- a/.local/lib/python2.7/site-packages/trollius/py27_weakrefset.py +++ /dev/null @@ -1,202 +0,0 @@ -# Access WeakSet through the weakref module. -# This code is separated-out because it is needed -# by abc.py to load everything else at startup. - -from _weakref import ref - -__all__ = ['WeakSet'] - - -class _IterationGuard(object): - # This context manager registers itself in the current iterators of the - # weak container, such as to delay all removals until the context manager - # exits. - # This technique should be relatively thread-safe (since sets are). - - def __init__(self, weakcontainer): - # Don't create cycles - self.weakcontainer = ref(weakcontainer) - - def __enter__(self): - w = self.weakcontainer() - if w is not None: - w._iterating.add(self) - return self - - def __exit__(self, e, t, b): - w = self.weakcontainer() - if w is not None: - s = w._iterating - s.remove(self) - if not s: - w._commit_removals() - - -class WeakSet(object): - def __init__(self, data=None): - self.data = set() - def _remove(item, selfref=ref(self)): - self = selfref() - if self is not None: - if self._iterating: - self._pending_removals.append(item) - else: - self.data.discard(item) - self._remove = _remove - # A list of keys to be removed - self._pending_removals = [] - self._iterating = set() - if data is not None: - self.update(data) - - def _commit_removals(self): - l = self._pending_removals - discard = self.data.discard - while l: - discard(l.pop()) - - def __iter__(self): - with _IterationGuard(self): - for itemref in self.data: - item = itemref() - if item is not None: - yield item - - def __len__(self): - return len(self.data) - len(self._pending_removals) - - def __contains__(self, item): - try: - wr = ref(item) - except TypeError: - return False - return wr in self.data - - def __reduce__(self): - return (self.__class__, (list(self),), - getattr(self, '__dict__', None)) - - __hash__ = None - - def add(self, item): - if self._pending_removals: - self._commit_removals() - self.data.add(ref(item, self._remove)) - - def clear(self): - if self._pending_removals: - self._commit_removals() - self.data.clear() - - def copy(self): - return self.__class__(self) - - def pop(self): - if self._pending_removals: - self._commit_removals() - while True: - try: - itemref = self.data.pop() - except KeyError: - raise KeyError('pop from empty WeakSet') - item = itemref() - if item is not None: - return item - - def remove(self, item): - if self._pending_removals: - self._commit_removals() - self.data.remove(ref(item)) - - def discard(self, item): - if self._pending_removals: - self._commit_removals() - self.data.discard(ref(item)) - - def update(self, other): - if self._pending_removals: - self._commit_removals() - for element in other: - self.add(element) - - def __ior__(self, other): - self.update(other) - return self - - def difference(self, other): - newset = self.copy() - newset.difference_update(other) - return newset - __sub__ = difference - - def difference_update(self, other): - self.__isub__(other) - def __isub__(self, other): - if self._pending_removals: - self._commit_removals() - if self is other: - self.data.clear() - else: - self.data.difference_update(ref(item) for item in other) - return self - - def intersection(self, other): - return self.__class__(item for item in other if item in self) - __and__ = intersection - - def intersection_update(self, other): - self.__iand__(other) - def __iand__(self, other): - if self._pending_removals: - self._commit_removals() - self.data.intersection_update(ref(item) for item in other) - return self - - def issubset(self, other): - return self.data.issubset(ref(item) for item in other) - __le__ = issubset - - def __lt__(self, other): - return self.data < set(ref(item) for item in other) - - def issuperset(self, other): - return self.data.issuperset(ref(item) for item in other) - __ge__ = issuperset - - def __gt__(self, other): - return self.data > set(ref(item) for item in other) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return NotImplemented - return self.data == set(ref(item) for item in other) - - def __ne__(self, other): - opposite = self.__eq__(other) - if opposite is NotImplemented: - return NotImplemented - return not opposite - - def symmetric_difference(self, other): - newset = self.copy() - newset.symmetric_difference_update(other) - return newset - __xor__ = symmetric_difference - - def symmetric_difference_update(self, other): - self.__ixor__(other) - def __ixor__(self, other): - if self._pending_removals: - self._commit_removals() - if self is other: - self.data.clear() - else: - self.data.symmetric_difference_update(ref(item, self._remove) for item in other) - return self - - def union(self, other): - return self.__class__(e for s in (self, other) for e in s) - __or__ = union - - def isdisjoint(self, other): - return len(self.intersection(other)) == 0 diff --git a/.local/lib/python2.7/site-packages/trollius/py27_weakrefset.pyc b/.local/lib/python2.7/site-packages/trollius/py27_weakrefset.pyc deleted file mode 100644 index 7aec80b32e7cbe1af27354a948640f007baa5619..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11694 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 PnE`6x9nY2WQ?vg8wdhRc diff --git a/.local/lib/python2.7/site-packages/trollius/py33_exceptions.py b/.local/lib/python2.7/site-packages/trollius/py33_exceptions.py deleted file mode 100644 index f10dfe9e..00000000 --- a/.local/lib/python2.7/site-packages/trollius/py33_exceptions.py +++ /dev/null @@ -1,144 +0,0 @@ -__all__ = ['BlockingIOError', 'BrokenPipeError', 'ChildProcessError', - 'ConnectionRefusedError', 'ConnectionResetError', - 'InterruptedError', 'ConnectionAbortedError', 'PermissionError', - 'FileNotFoundError', 'ProcessLookupError', - ] - -import errno -import select -import socket -import sys -try: - import ssl -except ImportError: - ssl = None - -from .compat import PY33 - -if PY33: - import builtins - BlockingIOError = builtins.BlockingIOError - BrokenPipeError = builtins.BrokenPipeError - ChildProcessError = builtins.ChildProcessError - ConnectionRefusedError = builtins.ConnectionRefusedError - ConnectionResetError = builtins.ConnectionResetError - InterruptedError = builtins.InterruptedError - ConnectionAbortedError = builtins.ConnectionAbortedError - PermissionError = builtins.PermissionError - FileNotFoundError = builtins.FileNotFoundError - ProcessLookupError = builtins.ProcessLookupError - -else: - # Python < 3.3 - class BlockingIOError(OSError): - pass - - class BrokenPipeError(OSError): - pass - - class ChildProcessError(OSError): - pass - - class ConnectionRefusedError(OSError): - pass - - class InterruptedError(OSError): - pass - - class ConnectionResetError(OSError): - pass - - class ConnectionAbortedError(OSError): - pass - - class PermissionError(OSError): - pass - - class FileNotFoundError(OSError): - pass - - class ProcessLookupError(OSError): - pass - - -_MAP_ERRNO = { - errno.EACCES: PermissionError, - errno.EAGAIN: BlockingIOError, - errno.EALREADY: BlockingIOError, - errno.ECHILD: ChildProcessError, - errno.ECONNABORTED: ConnectionAbortedError, - errno.ECONNREFUSED: ConnectionRefusedError, - errno.ECONNRESET: ConnectionResetError, - errno.EINPROGRESS: BlockingIOError, - errno.EINTR: InterruptedError, - errno.ENOENT: FileNotFoundError, - errno.EPERM: PermissionError, - errno.EPIPE: BrokenPipeError, - errno.ESHUTDOWN: BrokenPipeError, - errno.EWOULDBLOCK: BlockingIOError, - errno.ESRCH: ProcessLookupError, -} - -if sys.platform == 'win32': - from trollius import _overlapped - _MAP_ERRNO.update({ - _overlapped.ERROR_CONNECTION_REFUSED: ConnectionRefusedError, - _overlapped.ERROR_CONNECTION_ABORTED: ConnectionAbortedError, - _overlapped.ERROR_NETNAME_DELETED: ConnectionResetError, - }) - - -def get_error_class(key, default): - return _MAP_ERRNO.get(key, default) - - -if sys.version_info >= (3,): - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value -else: - exec("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") - - -def _wrap_error(exc, mapping, key): - if key not in mapping: - return - new_err_cls = mapping[key] - new_err = new_err_cls(*exc.args) - - # raise a new exception with the original traceback - if hasattr(exc, '__traceback__'): - traceback = exc.__traceback__ - else: - traceback = sys.exc_info()[2] - reraise(new_err_cls, new_err, traceback) - - -if not PY33: - def wrap_error(func, *args, **kw): - """ - Wrap socket.error, IOError, OSError, select.error to raise new specialized - exceptions of Python 3.3 like InterruptedError (PEP 3151). - """ - try: - return func(*args, **kw) - except (socket.error, IOError, OSError) as exc: - if ssl is not None and isinstance(exc, ssl.SSLError): - raise - if hasattr(exc, 'winerror'): - _wrap_error(exc, _MAP_ERRNO, exc.winerror) - # _MAP_ERRNO does not contain all Windows errors. - # For some errors like "file not found", exc.errno should - # be used (ex: ENOENT). - _wrap_error(exc, _MAP_ERRNO, exc.errno) - raise - except select.error as exc: - if exc.args: - _wrap_error(exc, _MAP_ERRNO, exc.args[0]) - raise -else: - def wrap_error(func, *args, **kw): - return func(*args, **kw) diff --git a/.local/lib/python2.7/site-packages/trollius/py33_exceptions.pyc b/.local/lib/python2.7/site-packages/trollius/py33_exceptions.pyc deleted file mode 100644 index e6a8946e8154adbe1831147baf4c6ac96c40c0ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5382 zcmd5=%WfOV6}?4L57LxKJuF+c$J3s%Gqf#BwuLwkI1ia>kA=u2QIw&WLC|TjOHz}~ zZlb$58U;2Gj3>JwLB1g0k!==PWs`k=AnUAyx_kZ;BE@ht*{{I+HvYIFI@F&R2k(Vd0K;9I2)8x&NH%nfTj!M*lL5aLe6bS0T zGQ~OSph$}I)Ir%47pPO9)9UzjiaJxYA6}t?nx=k<;E#;(v|{qwNx@67^ty$$&C-$_C6)XU>3m>dYHZp-#nsDs`#`EKp~`fJN#o8n8s2 zB?FeJvrOUNxbx~V9imtB^d-?dqSt5%dSq;6!otton5|COIaV#RU6`=*tYXG4PFQGC z7_&xewCu+~%O>|W zJ?Y#bRiNIt$h%7Y9L0aiaqO&8@CglS)Tto~?ojV8`H&Xw)Tnn4#o;2*eIPgnv_?S058T_>|smA13yX7Mp_4Z z^V|%Mu(|1|&%0{KdM4|`Q^|GT!jrHo)8c=1 zT3&*=EF(F87g@jCcrLJuEZ!#<+ePeEbnjxjI0g3}Tx=J4azDJ-E>6R}&5P~g4BUHi zv0dav`Fj`J#Uk8$dgh|$>2u&H>SBYJv8Ef<_05`5(nq12CE*c*!2_j3&4b@ zJc)`}6bZ*H2E@v;YkIh58Nb#neei=u6so)5FIo7Q($;&~B_knM#>NC>a+;X)6Am?wA09?>byARP z18vF;Fa>Y|m3*+%JTXFb!m)%%N-NIZHP5NZsGsW?n(28GyTdf5A!0fsNt8uFltd+8 z5#?M}ba_Vdc<`V%+3K%IP8YICi;?&(#$-SIBNfugi~xi*hk0{f{5=VblYol2Y4H?j zlb&Yj!SrU#K(*-$=z(s}GM|m!=L9L(ti&m9kUU6i^i{TOST6k(jnDB)!gtiaq-}D! zd5Zu1ei>Zu5CK_jT$FFIc}za;V)6$hCOSDn_aTmz;O?OGx|#QDR(6G0vzl#l_+GOT z72tM|=36?-!WzSAB}3Kq-N65)@+MWDoqet7&}y0UvbDLsX$5{?Szo_4ShbejvNj)m z`_bL?NfjpCu*@2deE5sylJ5|Z6&*0%n#I86o8TMYd&~f)ey6dU1SYz9QkrwWpZH;- z-LR`nBklIC>7=}ln&rowa6|Gol5rDZl(uVBkk^o7gf#UYj>4{?%#zeUkvBOT&v{)Y zOefAl`V=iC>=I4o#e%plZi;CvQY(ce{9hDBaV-sQo~Zno;O2!l-Hx)z&UPfwWENbx z0c5%*`5<@~H=V9nqcBo~srU`ZCi z)M;vlVXpKk3mOwIPzuC%wdU#EQi#m?@w=Bt}sZ#EiR&zf@2{t6-O=daoz*fC=v z?Y6yV`eE-hTC({mh_(qpyzj}h)<)BA?4@MOmM=53)3VKyYPVm!+S_jKH_~eMo3D1a zpY1m5KS}M{vi`!vwsChDxcV@P2j*pbca`(wK8}W-tChaW?n&8{4)?;Y@9i`j&e-?= zm^tq0Gb1xI14y~&f%=XlDq z2Fb6G6ftLtqMR>dd*E+gRK=Vq<*K=9ycNIkEf-eu-}n~t*jWDicMe-l6*aNNLZMiw Oh|0`tzBrE-R{jm>f^b9t diff --git a/.local/lib/python2.7/site-packages/trollius/py33_winapi.py b/.local/lib/python2.7/site-packages/trollius/py33_winapi.py deleted file mode 100644 index 792bc459..00000000 --- a/.local/lib/python2.7/site-packages/trollius/py33_winapi.py +++ /dev/null @@ -1,75 +0,0 @@ - -__all__ = [ - 'CloseHandle', 'CreateNamedPipe', 'CreateFile', 'ConnectNamedPipe', - 'NULL', - 'GENERIC_READ', 'GENERIC_WRITE', 'OPEN_EXISTING', 'INFINITE', - 'PIPE_ACCESS_INBOUND', - 'PIPE_ACCESS_DUPLEX', 'PIPE_TYPE_MESSAGE', 'PIPE_READMODE_MESSAGE', - 'PIPE_WAIT', 'PIPE_UNLIMITED_INSTANCES', 'NMPWAIT_WAIT_FOREVER', - 'FILE_FLAG_OVERLAPPED', 'FILE_FLAG_FIRST_PIPE_INSTANCE', - 'WaitForMultipleObjects', 'WaitForSingleObject', - 'WAIT_OBJECT_0', 'ERROR_IO_PENDING', - ] - -try: - # FIXME: use _overlapped on Python 3.3? see windows_utils.pipe() - from _winapi import ( - CloseHandle, CreateNamedPipe, CreateFile, ConnectNamedPipe, - NULL, - GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING, INFINITE, - PIPE_ACCESS_INBOUND, - PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, PIPE_READMODE_MESSAGE, - PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, NMPWAIT_WAIT_FOREVER, - FILE_FLAG_OVERLAPPED, FILE_FLAG_FIRST_PIPE_INSTANCE, - WaitForMultipleObjects, WaitForSingleObject, - WAIT_OBJECT_0, ERROR_IO_PENDING, - ) -except ImportError: - # Python < 3.3 - from _multiprocessing import win32 - import _subprocess - - from trollius import _overlapped - - CloseHandle = win32.CloseHandle - CreateNamedPipe = win32.CreateNamedPipe - CreateFile = win32.CreateFile - NULL = win32.NULL - - GENERIC_READ = win32.GENERIC_READ - GENERIC_WRITE = win32.GENERIC_WRITE - OPEN_EXISTING = win32.OPEN_EXISTING - INFINITE = win32.INFINITE - - PIPE_ACCESS_INBOUND = win32.PIPE_ACCESS_INBOUND - PIPE_ACCESS_DUPLEX = win32.PIPE_ACCESS_DUPLEX - PIPE_READMODE_MESSAGE = win32.PIPE_READMODE_MESSAGE - PIPE_TYPE_MESSAGE = win32.PIPE_TYPE_MESSAGE - PIPE_WAIT = win32.PIPE_WAIT - PIPE_UNLIMITED_INSTANCES = win32.PIPE_UNLIMITED_INSTANCES - NMPWAIT_WAIT_FOREVER = win32.NMPWAIT_WAIT_FOREVER - - FILE_FLAG_OVERLAPPED = 0x40000000 - FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 - - WAIT_OBJECT_0 = _subprocess.WAIT_OBJECT_0 - WaitForSingleObject = _subprocess.WaitForSingleObject - ERROR_IO_PENDING = _overlapped.ERROR_IO_PENDING - - def ConnectNamedPipe(handle, overlapped): - ov = _overlapped.Overlapped() - ov.ConnectNamedPipe(handle) - return ov - - def WaitForMultipleObjects(events, wait_all, timeout): - if not wait_all: - raise NotImplementedError() - - for ev in events: - res = WaitForSingleObject(ev, timeout) - if res != WAIT_OBJECT_0: - err = win32.GetLastError() - msg = _overlapped.FormatMessage(err) - raise WindowsError(err, msg) - - return WAIT_OBJECT_0 diff --git a/.local/lib/python2.7/site-packages/trollius/py33_winapi.pyc b/.local/lib/python2.7/site-packages/trollius/py33_winapi.pyc deleted file mode 100644 index ea11b7288e5b2912977c5138edf3875cdb98f4d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2206 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 Vavw46*Q&RctMJS^R|j)5{{?WKB_#j= diff --git a/.local/lib/python2.7/site-packages/trollius/queues.py b/.local/lib/python2.7/site-packages/trollius/queues.py deleted file mode 100644 index 18167ab7..00000000 --- a/.local/lib/python2.7/site-packages/trollius/queues.py +++ /dev/null @@ -1,325 +0,0 @@ -"""Queues""" - -__all__ = ['Queue', 'PriorityQueue', 'LifoQueue', 'QueueFull', 'QueueEmpty'] - -import collections -import heapq - -from . import compat -from . import events -from . import futures -from . import locks -from .coroutines import coroutine, From, Return - - -class QueueEmpty(Exception): - """Exception raised when Queue.get_nowait() is called on a Queue object - which is empty. - """ - pass - - -class QueueFull(Exception): - """Exception raised when the Queue.put_nowait() method is called on a Queue - object which is full. - """ - pass - - -class Queue(object): - """A queue, useful for coordinating producer and consumer coroutines. - - If maxsize is less than or equal to zero, the queue size is infinite. If it - is an integer greater than 0, then "yield from put()" will block when the - queue reaches maxsize, until an item is removed by get(). - - Unlike the standard library Queue, you can reliably know this Queue's size - with qsize(), since your single-threaded asyncio application won't be - interrupted between calling qsize() and doing an operation on the Queue. - """ - - def __init__(self, maxsize=0, loop=None): - if loop is None: - self._loop = events.get_event_loop() - else: - self._loop = loop - self._maxsize = maxsize - - # Futures. - self._getters = collections.deque() - # Futures - self._putters = collections.deque() - self._unfinished_tasks = 0 - self._finished = locks.Event(loop=self._loop) - self._finished.set() - self._init(maxsize) - - # These three are overridable in subclasses. - - def _init(self, maxsize): - self._queue = collections.deque() - - def _get(self): - return self._queue.popleft() - - def _put(self, item): - self._queue.append(item) - - # End of the overridable methods. - - def __put_internal(self, item): - self._put(item) - self._unfinished_tasks += 1 - self._finished.clear() - - def __repr__(self): - return '<{0} at {1:#x} {2}>'.format( - type(self).__name__, id(self), self._format()) - - def __str__(self): - return '<{0} {1}>'.format(type(self).__name__, self._format()) - - def _format(self): - result = 'maxsize={0!r}'.format(self._maxsize) - if getattr(self, '_queue', None): - result += ' _queue={0!r}'.format(list(self._queue)) - if self._getters: - result += ' _getters[{0}]'.format(len(self._getters)) - if self._putters: - result += ' _putters[{0}]'.format(len(self._putters)) - if self._unfinished_tasks: - result += ' tasks={0}'.format(self._unfinished_tasks) - return result - - def _consume_done_getters(self): - # Delete waiters at the head of the get() queue who've timed out. - while self._getters and self._getters[0].done(): - self._getters.popleft() - - def _consume_done_putters(self): - # Delete waiters at the head of the put() queue who've timed out. - while self._putters and self._putters[0].done(): - self._putters.popleft() - - def qsize(self): - """Number of items in the queue.""" - return len(self._queue) - - @property - def maxsize(self): - """Number of items allowed in the queue.""" - return self._maxsize - - def empty(self): - """Return True if the queue is empty, False otherwise.""" - return not self._queue - - def full(self): - """Return True if there are maxsize items in the queue. - - Note: if the Queue was initialized with maxsize=0 (the default), - then full() is never True. - """ - if self._maxsize <= 0: - return False - else: - return self.qsize() >= self._maxsize - - @coroutine - def put(self, item): - """Put an item into the queue. - - Put an item into the queue. If the queue is full, wait until a free - slot is available before adding item. - - This method is a coroutine. - """ - self._consume_done_getters() - if self._getters: - assert not self._queue, ( - 'queue non-empty, why are getters waiting?') - - getter = self._getters.popleft() - self.__put_internal(item) - - # getter cannot be cancelled, we just removed done getters - getter.set_result(self._get()) - - elif self._maxsize > 0 and self._maxsize <= self.qsize(): - waiter = futures.Future(loop=self._loop) - - self._putters.append(waiter) - yield From(waiter) - self._put(item) - - else: - self.__put_internal(item) - - def put_nowait(self, item): - """Put an item into the queue without blocking. - - If no free slot is immediately available, raise QueueFull. - """ - self._consume_done_getters() - if self._getters: - assert not self._queue, ( - 'queue non-empty, why are getters waiting?') - - getter = self._getters.popleft() - self.__put_internal(item) - - # getter cannot be cancelled, we just removed done getters - getter.set_result(self._get()) - - elif self._maxsize > 0 and self._maxsize <= self.qsize(): - raise QueueFull - else: - self.__put_internal(item) - - @coroutine - def get(self): - """Remove and return an item from the queue. - - If queue is empty, wait until an item is available. - - This method is a coroutine. - """ - self._consume_done_putters() - if self._putters: - assert self.full(), 'queue not full, why are putters waiting?' - putter = self._putters.popleft() - - # When a getter runs and frees up a slot so this putter can - # run, we need to defer the put for a tick to ensure that - # getters and putters alternate perfectly. See - # ChannelTest.test_wait. - self._loop.call_soon(putter._set_result_unless_cancelled, None) - - raise Return(self._get()) - - elif self.qsize(): - raise Return(self._get()) - else: - waiter = futures.Future(loop=self._loop) - self._getters.append(waiter) - try: - value = (yield From(waiter)) - raise Return(value) - except futures.CancelledError: - # if we get CancelledError, it means someone cancelled this - # get() coroutine. But there is a chance that the waiter - # already is ready and contains an item that has just been - # removed from the queue. In this case, we need to put the item - # back into the front of the queue. This get() must either - # succeed without fault or, if it gets cancelled, it must be as - # if it never happened. - if waiter.done(): - self._put_it_back(waiter.result()) - raise - - def _put_it_back(self, item): - """ - This is called when we have a waiter to get() an item and this waiter - gets cancelled. In this case, we put the item back: wake up another - waiter or put it in the _queue. - """ - self._consume_done_getters() - if self._getters: - assert not self._queue, ( - 'queue non-empty, why are getters waiting?') - - getter = self._getters.popleft() - self.__put_internal(item) - - # getter cannot be cancelled, we just removed done getters - getter.set_result(item) - else: - self._queue.appendleft(item) - - def get_nowait(self): - """Remove and return an item from the queue. - - Return an item if one is immediately available, else raise QueueEmpty. - """ - self._consume_done_putters() - if self._putters: - assert self.full(), 'queue not full, why are putters waiting?' - putter = self._putters.popleft() - # Wake putter on next tick. - - # getter cannot be cancelled, we just removed done putters - putter.set_result(None) - - return self._get() - - elif self.qsize(): - return self._get() - else: - raise QueueEmpty - - def task_done(self): - """Indicate that a formerly enqueued task is complete. - - Used by queue consumers. For each get() used to fetch a task, - a subsequent call to task_done() tells the queue that the processing - on the task is complete. - - If a join() is currently blocking, it will resume when all items have - been processed (meaning that a task_done() call was received for every - item that had been put() into the queue). - - Raises ValueError if called more times than there were items placed in - the queue. - """ - if self._unfinished_tasks <= 0: - raise ValueError('task_done() called too many times') - self._unfinished_tasks -= 1 - if self._unfinished_tasks == 0: - self._finished.set() - - @coroutine - def join(self): - """Block until all items in the queue have been gotten and processed. - - The count of unfinished tasks goes up whenever an item is added to the - queue. The count goes down whenever a consumer calls task_done() to - indicate that the item was retrieved and all work on it is complete. - When the count of unfinished tasks drops to zero, join() unblocks. - """ - if self._unfinished_tasks > 0: - yield From(self._finished.wait()) - - -class PriorityQueue(Queue): - """A subclass of Queue; retrieves entries in priority order (lowest first). - - Entries are typically tuples of the form: (priority number, data). - """ - - def _init(self, maxsize): - self._queue = [] - - def _put(self, item, heappush=heapq.heappush): - heappush(self._queue, item) - - def _get(self, heappop=heapq.heappop): - return heappop(self._queue) - - -class LifoQueue(Queue): - """A subclass of Queue that retrieves most recently added entries first.""" - - def _init(self, maxsize): - self._queue = [] - - def _put(self, item): - self._queue.append(item) - - def _get(self): - return self._queue.pop() - - -if not compat.PY35: - JoinableQueue = Queue - """Deprecated alias for Queue.""" - __all__.append('JoinableQueue') diff --git a/.local/lib/python2.7/site-packages/trollius/queues.pyc b/.local/lib/python2.7/site-packages/trollius/queues.pyc deleted file mode 100644 index a288ab707680b7a9864f4fe3080f510af70b7b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12763 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' % (state, bufsize)) - return '<%s>' % ' '.join(info) - - def abort(self): - self._force_close(None) - - def close(self): - if self._closing: - return - self._closing = True - self._loop.remove_reader(self._sock_fd) - if not self._buffer: - self._conn_lost += 1 - self._loop.call_soon(self._call_connection_lost, None) - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if self._sock is not None: - warnings.warn("unclosed transport %r" % self, ResourceWarning) - self._sock.close() - - def _fatal_error(self, exc, message='Fatal error on transport'): - # Should be called from exception handler only. - if isinstance(exc, (BrokenPipeError, - ConnectionResetError, ConnectionAbortedError)): - if self._loop.get_debug(): - logger.debug("%r: %s", self, message, exc_info=True) - else: - self._loop.call_exception_handler({ - 'message': message, - 'exception': exc, - 'transport': self, - 'protocol': self._protocol, - }) - self._force_close(exc) - - def _force_close(self, exc): - if self._conn_lost: - return - if self._buffer: - del self._buffer[:] - self._loop.remove_writer(self._sock_fd) - if not self._closing: - self._closing = True - self._loop.remove_reader(self._sock_fd) - self._conn_lost += 1 - self._loop.call_soon(self._call_connection_lost, exc) - - def _call_connection_lost(self, exc): - try: - if self._protocol_connected: - self._protocol.connection_lost(exc) - finally: - self._sock.close() - self._sock = None - self._protocol = None - self._loop = None - server = self._server - if server is not None: - server._detach() - self._server = None - - def get_write_buffer_size(self): - return len(self._buffer) - - -class _SelectorSocketTransport(_SelectorTransport): - - def __init__(self, loop, sock, protocol, waiter=None, - extra=None, server=None): - super(_SelectorSocketTransport, self).__init__(loop, sock, protocol, extra, server) - self._eof = False - self._paused = False - - self._loop.call_soon(self._protocol.connection_made, self) - # only start reading when connection_made() has been called - self._loop.call_soon(self._loop.add_reader, - self._sock_fd, self._read_ready) - if waiter is not None: - # only wake up the waiter when connection_made() has been called - self._loop.call_soon(waiter._set_result_unless_cancelled, None) - - def pause_reading(self): - if self._closing: - raise RuntimeError('Cannot pause_reading() when closing') - if self._paused: - raise RuntimeError('Already paused') - self._paused = True - self._loop.remove_reader(self._sock_fd) - if self._loop.get_debug(): - logger.debug("%r pauses reading", self) - - def resume_reading(self): - if not self._paused: - raise RuntimeError('Not paused') - self._paused = False - if self._closing: - return - self._loop.add_reader(self._sock_fd, self._read_ready) - if self._loop.get_debug(): - logger.debug("%r resumes reading", self) - - def _read_ready(self): - try: - data = wrap_error(self._sock.recv, self.max_size) - except (BlockingIOError, InterruptedError): - pass - except Exception as exc: - self._fatal_error(exc, 'Fatal read error on socket transport') - else: - if data: - self._protocol.data_received(data) - else: - if self._loop.get_debug(): - logger.debug("%r received EOF", self) - keep_open = self._protocol.eof_received() - if keep_open: - # We're keeping the connection open so the - # protocol can write more, but we still can't - # receive more, so remove the reader callback. - self._loop.remove_reader(self._sock_fd) - else: - self.close() - - def write(self, data): - data = flatten_bytes(data) - if self._eof: - raise RuntimeError('Cannot call write() after write_eof()') - if not data: - return - - if self._conn_lost: - if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES: - logger.warning('socket.send() raised exception.') - self._conn_lost += 1 - return - - if not self._buffer: - # Optimization: try to send now. - try: - n = wrap_error(self._sock.send, data) - except (BlockingIOError, InterruptedError): - pass - except Exception as exc: - self._fatal_error(exc, 'Fatal write error on socket transport') - return - else: - data = data[n:] - if not data: - return - # Not all was written; register write handler. - self._loop.add_writer(self._sock_fd, self._write_ready) - - # Add it to the buffer. - self._buffer.extend(data) - self._maybe_pause_protocol() - - def _write_ready(self): - assert self._buffer, 'Data should not be empty' - - data = flatten_bytes(self._buffer) - try: - n = wrap_error(self._sock.send, data) - except (BlockingIOError, InterruptedError): - pass - except Exception as exc: - self._loop.remove_writer(self._sock_fd) - del self._buffer[:] - self._fatal_error(exc, 'Fatal write error on socket transport') - else: - if n: - del self._buffer[:n] - self._maybe_resume_protocol() # May append to buffer. - if not self._buffer: - self._loop.remove_writer(self._sock_fd) - if self._closing: - self._call_connection_lost(None) - elif self._eof: - self._sock.shutdown(socket.SHUT_WR) - - def write_eof(self): - if self._eof: - return - self._eof = True - if not self._buffer: - self._sock.shutdown(socket.SHUT_WR) - - def can_write_eof(self): - return True - - -class _SelectorSslTransport(_SelectorTransport): - - _buffer_factory = bytearray - - def __init__(self, loop, rawsock, protocol, sslcontext, waiter=None, - server_side=False, server_hostname=None, - extra=None, server=None): - if ssl is None: - raise RuntimeError('stdlib ssl module not available') - - if not sslcontext: - sslcontext = sslproto._create_transport_context(server_side, server_hostname) - - wrap_kwargs = { - 'server_side': server_side, - 'do_handshake_on_connect': False, - } - if server_hostname and not server_side: - wrap_kwargs['server_hostname'] = server_hostname - sslsock = sslcontext.wrap_socket(rawsock, **wrap_kwargs) - - super(_SelectorSslTransport, self).__init__(loop, sslsock, protocol, extra, server) - # the protocol connection is only made after the SSL handshake - self._protocol_connected = False - - self._server_hostname = server_hostname - self._waiter = waiter - self._sslcontext = sslcontext - self._paused = False - - # SSL-specific extra info. (peercert is set later) - self._extra.update(sslcontext=sslcontext) - - if self._loop.get_debug(): - logger.debug("%r starts SSL handshake", self) - start_time = self._loop.time() - else: - start_time = None - self._on_handshake(start_time) - - def _wakeup_waiter(self, exc=None): - if self._waiter is None: - return - if not self._waiter.cancelled(): - if exc is not None: - self._waiter.set_exception(exc) - else: - self._waiter.set_result(None) - self._waiter = None - - def _on_handshake(self, start_time): - try: - wrap_ssl_error(self._sock.do_handshake) - except SSLWantReadError: - self._loop.add_reader(self._sock_fd, - self._on_handshake, start_time) - return - except SSLWantWriteError: - self._loop.add_writer(self._sock_fd, - self._on_handshake, start_time) - return - except BaseException as exc: - if self._loop.get_debug(): - logger.warning("%r: SSL handshake failed", - self, exc_info=True) - self._loop.remove_reader(self._sock_fd) - self._loop.remove_writer(self._sock_fd) - self._sock.close() - self._wakeup_waiter(exc) - if isinstance(exc, Exception): - return - else: - raise - - self._loop.remove_reader(self._sock_fd) - self._loop.remove_writer(self._sock_fd) - - peercert = self._sock.getpeercert() - if not hasattr(self._sslcontext, 'check_hostname'): - # Verify hostname if requested, Python 3.4+ uses check_hostname - # and checks the hostname in do_handshake() - if (self._server_hostname and - self._sslcontext.verify_mode != ssl.CERT_NONE): - try: - ssl.match_hostname(peercert, self._server_hostname) - except Exception as exc: - if self._loop.get_debug(): - logger.warning("%r: SSL handshake failed " - "on matching the hostname", - self, exc_info=True) - self._sock.close() - self._wakeup_waiter(exc) - return - - # Add extra info that becomes available after handshake. - self._extra.update(peercert=peercert, - cipher=self._sock.cipher(), - ) - if hasattr(self._sock, 'compression'): - self._extra['compression'] = self._sock.compression() - - self._read_wants_write = False - self._write_wants_read = False - self._loop.add_reader(self._sock_fd, self._read_ready) - self._protocol_connected = True - self._loop.call_soon(self._protocol.connection_made, self) - # only wake up the waiter when connection_made() has been called - self._loop.call_soon(self._wakeup_waiter) - - if self._loop.get_debug(): - dt = self._loop.time() - start_time - logger.debug("%r: SSL handshake took %.1f ms", self, dt * 1e3) - - def pause_reading(self): - # XXX This is a bit icky, given the comment at the top of - # _read_ready(). Is it possible to evoke a deadlock? I don't - # know, although it doesn't look like it; write() will still - # accept more data for the buffer and eventually the app will - # call resume_reading() again, and things will flow again. - - if self._closing: - raise RuntimeError('Cannot pause_reading() when closing') - if self._paused: - raise RuntimeError('Already paused') - self._paused = True - self._loop.remove_reader(self._sock_fd) - if self._loop.get_debug(): - logger.debug("%r pauses reading", self) - - def resume_reading(self): - if not self._paused: - raise RuntimeError('Not paused') - self._paused = False - if self._closing: - return - self._loop.add_reader(self._sock_fd, self._read_ready) - if self._loop.get_debug(): - logger.debug("%r resumes reading", self) - - def _sock_recv(self): - return wrap_ssl_error(self._sock.recv, self.max_size) - - def _read_ready(self): - if self._write_wants_read: - self._write_wants_read = False - self._write_ready() - - if self._buffer: - self._loop.add_writer(self._sock_fd, self._write_ready) - - try: - if _SSL_REQUIRES_SELECT: - rfds = (self._sock.fileno(),) - rfds = select.select(rfds, (), (), 0.0)[0] - if not rfds: - # False alarm. - return - data = wrap_error(self._sock_recv) - except (BlockingIOError, InterruptedError, SSLWantReadError): - pass - except SSLWantWriteError: - self._read_wants_write = True - self._loop.remove_reader(self._sock_fd) - self._loop.add_writer(self._sock_fd, self._write_ready) - except Exception as exc: - self._fatal_error(exc, 'Fatal read error on SSL transport') - else: - if data: - self._protocol.data_received(data) - else: - try: - if self._loop.get_debug(): - logger.debug("%r received EOF", self) - keep_open = self._protocol.eof_received() - if keep_open: - logger.warning('returning true from eof_received() ' - 'has no effect when using ssl') - finally: - self.close() - - def _write_ready(self): - if self._read_wants_write: - self._read_wants_write = False - self._read_ready() - - if not (self._paused or self._closing): - self._loop.add_reader(self._sock_fd, self._read_ready) - - if self._buffer: - data = flatten_bytes(self._buffer) - try: - n = wrap_error(self._sock.send, data) - except (BlockingIOError, InterruptedError, SSLWantWriteError): - n = 0 - except SSLWantReadError: - n = 0 - self._loop.remove_writer(self._sock_fd) - self._write_wants_read = True - except Exception as exc: - self._loop.remove_writer(self._sock_fd) - del self._buffer[:] - self._fatal_error(exc, 'Fatal write error on SSL transport') - return - - if n: - del self._buffer[:n] - - self._maybe_resume_protocol() # May append to buffer. - - if not self._buffer: - self._loop.remove_writer(self._sock_fd) - if self._closing: - self._call_connection_lost(None) - - def write(self, data): - data = flatten_bytes(data) - if not data: - return - - if self._conn_lost: - if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES: - logger.warning('socket.send() raised exception.') - self._conn_lost += 1 - return - - if not self._buffer: - self._loop.add_writer(self._sock_fd, self._write_ready) - - # Add it to the buffer. - self._buffer.extend(data) - self._maybe_pause_protocol() - - def can_write_eof(self): - return False - - -class _SelectorDatagramTransport(_SelectorTransport): - - _buffer_factory = collections.deque - - def __init__(self, loop, sock, protocol, address=None, - waiter=None, extra=None): - super(_SelectorDatagramTransport, self).__init__(loop, sock, - protocol, extra) - self._address = address - self._loop.call_soon(self._protocol.connection_made, self) - # only start reading when connection_made() has been called - self._loop.call_soon(self._loop.add_reader, - self._sock_fd, self._read_ready) - if waiter is not None: - # only wake up the waiter when connection_made() has been called - self._loop.call_soon(waiter._set_result_unless_cancelled, None) - - def get_write_buffer_size(self): - return sum(len(data) for data, _ in self._buffer) - - def _read_ready(self): - try: - data, addr = wrap_error(self._sock.recvfrom, self.max_size) - except (BlockingIOError, InterruptedError): - pass - except OSError as exc: - self._protocol.error_received(exc) - except Exception as exc: - self._fatal_error(exc, 'Fatal read error on datagram transport') - else: - self._protocol.datagram_received(data, addr) - - def sendto(self, data, addr=None): - data = flatten_bytes(data) - if not data: - return - - if self._address and addr not in (None, self._address): - raise ValueError('Invalid address: must be None or %s' % - (self._address,)) - - if self._conn_lost and self._address: - if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES: - logger.warning('socket.send() raised exception.') - self._conn_lost += 1 - return - - if not self._buffer: - # Attempt to send it right away first. - try: - if self._address: - wrap_error(self._sock.send, data) - else: - wrap_error(self._sock.sendto, data, addr) - return - except (BlockingIOError, InterruptedError): - self._loop.add_writer(self._sock_fd, self._sendto_ready) - except OSError as exc: - self._protocol.error_received(exc) - return - except Exception as exc: - self._fatal_error(exc, - 'Fatal write error on datagram transport') - return - - # Ensure that what we buffer is immutable. - self._buffer.append((bytes(data), addr)) - self._maybe_pause_protocol() - - def _sendto_ready(self): - while self._buffer: - data, addr = self._buffer.popleft() - try: - if self._address: - wrap_error(self._sock.send, data) - else: - wrap_error(self._sock.sendto, data, addr) - except (BlockingIOError, InterruptedError): - self._buffer.appendleft((data, addr)) # Try again later. - break - except OSError as exc: - self._protocol.error_received(exc) - return - except Exception as exc: - self._fatal_error(exc, - 'Fatal write error on datagram transport') - return - - self._maybe_resume_protocol() # May append to buffer. - if not self._buffer: - self._loop.remove_writer(self._sock_fd) - if self._closing: - self._call_connection_lost(None) diff --git a/.local/lib/python2.7/site-packages/trollius/selector_events.pyc b/.local/lib/python2.7/site-packages/trollius/selector_events.pyc deleted file mode 100644 index 9516ad1115ea4c5ead869c4f0b270f18ec491f67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35511 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 0, this specifies the maximum wait time, in - seconds - if timeout <= 0, the select() call won't block, and will - report the currently ready file objects - if timeout is None, select() will block until a monitored - file object becomes ready - - Returns: - list of (key, events) for ready file objects - `events` is a bitwise mask of EVENT_READ|EVENT_WRITE - """ - raise NotImplementedError - - def close(self): - """Close the selector. - - This must be called to make sure that any underlying resource is freed. - """ - pass - - def get_key(self, fileobj): - """Return the key associated to a registered file object. - - Returns: - SelectorKey for this file object - """ - mapping = self.get_map() - if mapping is None: - raise RuntimeError('Selector is closed') - try: - return mapping[fileobj] - except KeyError: - raise KeyError("{0!r} is not registered".format(fileobj)) - - @abstractmethod - def get_map(self): - """Return a mapping of file objects to selector keys.""" - raise NotImplementedError - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - - -class _BaseSelectorImpl(BaseSelector): - """Base selector implementation.""" - - def __init__(self): - # this maps file descriptors to keys - self._fd_to_key = {} - # read-only mapping returned by get_map() - self._map = _SelectorMapping(self) - - def _fileobj_lookup(self, fileobj): - """Return a file descriptor from a file object. - - This wraps _fileobj_to_fd() to do an exhaustive search in case - the object is invalid but we still have it in our map. This - is used by unregister() so we can unregister an object that - was previously registered even if it is closed. It is also - used by _SelectorMapping. - """ - try: - return _fileobj_to_fd(fileobj) - except ValueError: - # Do an exhaustive search. - for key in self._fd_to_key.values(): - if key.fileobj is fileobj: - return key.fd - # Raise ValueError after all. - raise - - def register(self, fileobj, events, data=None): - if (not events) or (events & ~(EVENT_READ | EVENT_WRITE)): - raise ValueError("Invalid events: {0!r}".format(events)) - - key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data) - - if key.fd in self._fd_to_key: - raise KeyError("{0!r} (FD {1}) is already registered" - .format(fileobj, key.fd)) - - self._fd_to_key[key.fd] = key - return key - - def unregister(self, fileobj): - try: - key = self._fd_to_key.pop(self._fileobj_lookup(fileobj)) - except KeyError: - raise KeyError("{0!r} is not registered".format(fileobj)) - return key - - def modify(self, fileobj, events, data=None): - # TODO: Subclasses can probably optimize this even further. - try: - key = self._fd_to_key[self._fileobj_lookup(fileobj)] - except KeyError: - raise KeyError("{0!r} is not registered".format(fileobj)) - if events != key.events: - self.unregister(fileobj) - key = self.register(fileobj, events, data) - elif data != key.data: - # Use a shortcut to update the data. - key = key._replace(data=data) - self._fd_to_key[key.fd] = key - return key - - def close(self): - self._fd_to_key.clear() - self._map = None - - def get_map(self): - return self._map - - def _key_from_fd(self, fd): - """Return the key associated to a given file descriptor. - - Parameters: - fd -- file descriptor - - Returns: - corresponding key, or None if not found - """ - try: - return self._fd_to_key[fd] - except KeyError: - return None - - -class SelectSelector(_BaseSelectorImpl): - """Select-based selector.""" - - def __init__(self): - super(SelectSelector, self).__init__() - self._readers = set() - self._writers = set() - - def register(self, fileobj, events, data=None): - key = super(SelectSelector, self).register(fileobj, events, data) - if events & EVENT_READ: - self._readers.add(key.fd) - if events & EVENT_WRITE: - self._writers.add(key.fd) - return key - - def unregister(self, fileobj): - key = super(SelectSelector, self).unregister(fileobj) - self._readers.discard(key.fd) - self._writers.discard(key.fd) - return key - - if sys.platform == 'win32': - def _select(self, r, w, _, timeout=None): - r, w, x = select.select(r, w, w, timeout) - return r, w + x, [] - else: - def _select(self, r, w, x, timeout=None): - return select.select(r, w, x, timeout) - - def select(self, timeout=None): - timeout = None if timeout is None else max(timeout, 0) - ready = [] - try: - r, w, _ = wrap_error(self._select, - self._readers, self._writers, [], timeout) - except InterruptedError: - return ready - r = set(r) - w = set(w) - for fd in r | w: - events = 0 - if fd in r: - events |= EVENT_READ - if fd in w: - events |= EVENT_WRITE - - key = self._key_from_fd(fd) - if key: - ready.append((key, events & key.events)) - return ready - - -if hasattr(select, 'poll'): - - class PollSelector(_BaseSelectorImpl): - """Poll-based selector.""" - - def __init__(self): - super(PollSelector, self).__init__() - self._poll = select.poll() - - def register(self, fileobj, events, data=None): - key = super(PollSelector, self).register(fileobj, events, data) - poll_events = 0 - if events & EVENT_READ: - poll_events |= select.POLLIN - if events & EVENT_WRITE: - poll_events |= select.POLLOUT - self._poll.register(key.fd, poll_events) - return key - - def unregister(self, fileobj): - key = super(PollSelector, self).unregister(fileobj) - self._poll.unregister(key.fd) - return key - - def select(self, timeout=None): - if timeout is None: - timeout = None - elif timeout <= 0: - timeout = 0 - else: - # poll() has a resolution of 1 millisecond, round away from - # zero to wait *at least* timeout seconds. - timeout = int(math.ceil(timeout * 1e3)) - ready = [] - try: - fd_event_list = wrap_error(self._poll.poll, timeout) - except InterruptedError: - return ready - for fd, event in fd_event_list: - events = 0 - if event & ~select.POLLIN: - events |= EVENT_WRITE - if event & ~select.POLLOUT: - events |= EVENT_READ - - key = self._key_from_fd(fd) - if key: - ready.append((key, events & key.events)) - return ready - - -if hasattr(select, 'epoll'): - - class EpollSelector(_BaseSelectorImpl): - """Epoll-based selector.""" - - def __init__(self): - super(EpollSelector, self).__init__() - self._epoll = select.epoll() - - def fileno(self): - return self._epoll.fileno() - - def register(self, fileobj, events, data=None): - key = super(EpollSelector, self).register(fileobj, events, data) - epoll_events = 0 - if events & EVENT_READ: - epoll_events |= select.EPOLLIN - if events & EVENT_WRITE: - epoll_events |= select.EPOLLOUT - self._epoll.register(key.fd, epoll_events) - return key - - def unregister(self, fileobj): - key = super(EpollSelector, self).unregister(fileobj) - try: - self._epoll.unregister(key.fd) - except IOError: - # This can happen if the FD was closed since it - # was registered. - pass - return key - - def select(self, timeout=None): - if timeout is None: - timeout = -1 - elif timeout <= 0: - timeout = 0 - else: - # epoll_wait() has a resolution of 1 millisecond, round away - # from zero to wait *at least* timeout seconds. - timeout = math.ceil(timeout * 1e3) * 1e-3 - - # epoll_wait() expects `maxevents` to be greater than zero; - # we want to make sure that `select()` can be called when no - # FD is registered. - max_ev = max(len(self._fd_to_key), 1) - - ready = [] - try: - fd_event_list = wrap_error(self._epoll.poll, timeout, max_ev) - except InterruptedError: - return ready - for fd, event in fd_event_list: - events = 0 - if event & ~select.EPOLLIN: - events |= EVENT_WRITE - if event & ~select.EPOLLOUT: - events |= EVENT_READ - - key = self._key_from_fd(fd) - if key: - ready.append((key, events & key.events)) - return ready - - def close(self): - self._epoll.close() - super(EpollSelector, self).close() - - -if hasattr(select, 'devpoll'): - - class DevpollSelector(_BaseSelectorImpl): - """Solaris /dev/poll selector.""" - - def __init__(self): - super(DevpollSelector, self).__init__() - self._devpoll = select.devpoll() - - def fileno(self): - return self._devpoll.fileno() - - def register(self, fileobj, events, data=None): - key = super(DevpollSelector, self).register(fileobj, events, data) - poll_events = 0 - if events & EVENT_READ: - poll_events |= select.POLLIN - if events & EVENT_WRITE: - poll_events |= select.POLLOUT - self._devpoll.register(key.fd, poll_events) - return key - - def unregister(self, fileobj): - key = super(DevpollSelector, self).unregister(fileobj) - self._devpoll.unregister(key.fd) - return key - - def select(self, timeout=None): - if timeout is None: - timeout = None - elif timeout <= 0: - timeout = 0 - else: - # devpoll() has a resolution of 1 millisecond, round away from - # zero to wait *at least* timeout seconds. - timeout = math.ceil(timeout * 1e3) - ready = [] - try: - fd_event_list = self._devpoll.poll(timeout) - except InterruptedError: - return ready - for fd, event in fd_event_list: - events = 0 - if event & ~select.POLLIN: - events |= EVENT_WRITE - if event & ~select.POLLOUT: - events |= EVENT_READ - - key = self._key_from_fd(fd) - if key: - ready.append((key, events & key.events)) - return ready - - def close(self): - self._devpoll.close() - super(DevpollSelector, self).close() - - -if hasattr(select, 'kqueue'): - - class KqueueSelector(_BaseSelectorImpl): - """Kqueue-based selector.""" - - def __init__(self): - super(KqueueSelector, self).__init__() - self._kqueue = select.kqueue() - - def fileno(self): - return self._kqueue.fileno() - - def register(self, fileobj, events, data=None): - key = super(KqueueSelector, self).register(fileobj, events, data) - if events & EVENT_READ: - kev = select.kevent(key.fd, select.KQ_FILTER_READ, - select.KQ_EV_ADD) - self._kqueue.control([kev], 0, 0) - if events & EVENT_WRITE: - kev = select.kevent(key.fd, select.KQ_FILTER_WRITE, - select.KQ_EV_ADD) - self._kqueue.control([kev], 0, 0) - return key - - def unregister(self, fileobj): - key = super(KqueueSelector, self).unregister(fileobj) - if key.events & EVENT_READ: - kev = select.kevent(key.fd, select.KQ_FILTER_READ, - select.KQ_EV_DELETE) - try: - self._kqueue.control([kev], 0, 0) - except OSError: - # This can happen if the FD was closed since it - # was registered. - pass - if key.events & EVENT_WRITE: - kev = select.kevent(key.fd, select.KQ_FILTER_WRITE, - select.KQ_EV_DELETE) - try: - self._kqueue.control([kev], 0, 0) - except OSError: - # See comment above. - pass - return key - - def select(self, timeout=None): - timeout = None if timeout is None else max(timeout, 0) - max_ev = len(self._fd_to_key) - ready = [] - try: - kev_list = wrap_error(self._kqueue.control, - None, max_ev, timeout) - except InterruptedError: - return ready - for kev in kev_list: - fd = kev.ident - flag = kev.filter - events = 0 - if flag == select.KQ_FILTER_READ: - events |= EVENT_READ - if flag == select.KQ_FILTER_WRITE: - events |= EVENT_WRITE - - key = self._key_from_fd(fd) - if key: - ready.append((key, events & key.events)) - return ready - - def close(self): - self._kqueue.close() - super(KqueueSelector, self).close() - - -# Choose the best implementation, roughly: -# epoll|kqueue|devpoll > poll > select. -# select() also can't accept a FD > FD_SETSIZE (usually around 1024) -if 'KqueueSelector' in globals(): - DefaultSelector = KqueueSelector -elif 'EpollSelector' in globals(): - DefaultSelector = EpollSelector -elif 'DevpollSelector' in globals(): - DefaultSelector = DevpollSelector -elif 'PollSelector' in globals(): - DefaultSelector = PollSelector -else: - DefaultSelector = SelectSelector diff --git a/.local/lib/python2.7/site-packages/trollius/selectors.pyc b/.local/lib/python2.7/site-packages/trollius/selectors.pyc deleted file mode 100644 index c572b6cab6960fc116741d7227c833a61d7a3f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22162 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 diff --git a/.local/lib/python2.7/site-packages/trollius/sslproto.py b/.local/lib/python2.7/site-packages/trollius/sslproto.py deleted file mode 100644 index 1404fd79..00000000 --- a/.local/lib/python2.7/site-packages/trollius/sslproto.py +++ /dev/null @@ -1,683 +0,0 @@ -import collections -import warnings -try: - import ssl - from .py3_ssl import BACKPORT_SSL_CONTEXT -except ImportError: # pragma: no cover - ssl = None - -from . import compat -from . import protocols -from . import transports -from .log import logger -from .py33_exceptions import BrokenPipeError, ConnectionResetError - - -def _create_transport_context(server_side, server_hostname): - if server_side: - raise ValueError('Server side SSL needs a valid SSLContext') - - # Client side may pass ssl=True to use a default - # context; in that case the sslcontext passed is None. - # The default is secure for client connections. - if hasattr(ssl, 'create_default_context'): - # Python 3.4+: use up-to-date strong settings. - sslcontext = ssl.create_default_context() - if not server_hostname: - sslcontext.check_hostname = False - else: - # Fallback for Python 3.3. - sslcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23) - if not BACKPORT_SSL_CONTEXT: - sslcontext.options |= ssl.OP_NO_SSLv2 - sslcontext.options |= ssl.OP_NO_SSLv3 - sslcontext.set_default_verify_paths() - sslcontext.verify_mode = ssl.CERT_REQUIRED - return sslcontext - - -def _is_sslproto_available(): - return hasattr(ssl, "MemoryBIO") - - -# States of an _SSLPipe. -_UNWRAPPED = "UNWRAPPED" -_DO_HANDSHAKE = "DO_HANDSHAKE" -_WRAPPED = "WRAPPED" -_SHUTDOWN = "SHUTDOWN" - -if ssl is not None: - if hasattr(ssl, 'CertificateError'): - _SSL_ERRORS = (ssl.SSLError, ssl.CertificateError) - else: - _SSL_ERRORS = ssl.SSLError - - -class _SSLPipe(object): - """An SSL "Pipe". - - An SSL pipe allows you to communicate with an SSL/TLS protocol instance - through memory buffers. It can be used to implement a security layer for an - existing connection where you don't have access to the connection's file - descriptor, or for some reason you don't want to use it. - - An SSL pipe can be in "wrapped" and "unwrapped" mode. In unwrapped mode, - data is passed through untransformed. In wrapped mode, application level - data is encrypted to SSL record level data and vice versa. The SSL record - level is the lowest level in the SSL protocol suite and is what travels - as-is over the wire. - - An SslPipe initially is in "unwrapped" mode. To start SSL, call - do_handshake(). To shutdown SSL again, call unwrap(). - """ - - max_size = 256 * 1024 # Buffer size passed to read() - - def __init__(self, context, server_side, server_hostname=None): - """ - The *context* argument specifies the ssl.SSLContext to use. - - The *server_side* argument indicates whether this is a server side or - client side transport. - - The optional *server_hostname* argument can be used to specify the - hostname you are connecting to. You may only specify this parameter if - the _ssl module supports Server Name Indication (SNI). - """ - self._context = context - self._server_side = server_side - self._server_hostname = server_hostname - self._state = _UNWRAPPED - self._incoming = ssl.MemoryBIO() - self._outgoing = ssl.MemoryBIO() - self._sslobj = None - self._need_ssldata = False - self._handshake_cb = None - self._shutdown_cb = None - - @property - def context(self): - """The SSL context passed to the constructor.""" - return self._context - - @property - def ssl_object(self): - """The internal ssl.SSLObject instance. - - Return None if the pipe is not wrapped. - """ - return self._sslobj - - @property - def need_ssldata(self): - """Whether more record level data is needed to complete a handshake - that is currently in progress.""" - return self._need_ssldata - - @property - def wrapped(self): - """ - Whether a security layer is currently in effect. - - Return False during handshake. - """ - return self._state == _WRAPPED - - def do_handshake(self, callback=None): - """Start the SSL handshake. - - Return a list of ssldata. A ssldata element is a list of buffers - - The optional *callback* argument can be used to install a callback that - will be called when the handshake is complete. The callback will be - called with None if successful, else an exception instance. - """ - if self._state != _UNWRAPPED: - raise RuntimeError('handshake in progress or completed') - self._sslobj = self._context.wrap_bio( - self._incoming, self._outgoing, - server_side=self._server_side, - server_hostname=self._server_hostname) - self._state = _DO_HANDSHAKE - self._handshake_cb = callback - ssldata, appdata = self.feed_ssldata(b'', only_handshake=True) - assert len(appdata) == 0 - return ssldata - - def shutdown(self, callback=None): - """Start the SSL shutdown sequence. - - Return a list of ssldata. A ssldata element is a list of buffers - - The optional *callback* argument can be used to install a callback that - will be called when the shutdown is complete. The callback will be - called without arguments. - """ - if self._state == _UNWRAPPED: - raise RuntimeError('no security layer present') - if self._state == _SHUTDOWN: - raise RuntimeError('shutdown in progress') - assert self._state in (_WRAPPED, _DO_HANDSHAKE) - self._state = _SHUTDOWN - self._shutdown_cb = callback - ssldata, appdata = self.feed_ssldata(b'') - assert appdata == [] or appdata == [b''] - return ssldata - - def feed_eof(self): - """Send a potentially "ragged" EOF. - - This method will raise an SSL_ERROR_EOF exception if the EOF is - unexpected. - """ - self._incoming.write_eof() - ssldata, appdata = self.feed_ssldata(b'') - assert appdata == [] or appdata == [b''] - - def feed_ssldata(self, data, only_handshake=False): - """Feed SSL record level data into the pipe. - - The data must be a bytes instance. It is OK to send an empty bytes - instance. This can be used to get ssldata for a handshake initiated by - this endpoint. - - Return a (ssldata, appdata) tuple. The ssldata element is a list of - buffers containing SSL data that needs to be sent to the remote SSL. - - The appdata element is a list of buffers containing plaintext data that - needs to be forwarded to the application. The appdata list may contain - an empty buffer indicating an SSL "close_notify" alert. This alert must - be acknowledged by calling shutdown(). - """ - if self._state == _UNWRAPPED: - # If unwrapped, pass plaintext data straight through. - if data: - appdata = [data] - else: - appdata = [] - return ([], appdata) - - self._need_ssldata = False - if data: - self._incoming.write(data) - - ssldata = [] - appdata = [] - try: - if self._state == _DO_HANDSHAKE: - # Call do_handshake() until it doesn't raise anymore. - self._sslobj.do_handshake() - self._state = _WRAPPED - if self._handshake_cb: - self._handshake_cb(None) - if only_handshake: - return (ssldata, appdata) - # Handshake done: execute the wrapped block - - if self._state == _WRAPPED: - # Main state: read data from SSL until close_notify - while True: - chunk = self._sslobj.read(self.max_size) - appdata.append(chunk) - if not chunk: # close_notify - break - - elif self._state == _SHUTDOWN: - # Call shutdown() until it doesn't raise anymore. - self._sslobj.unwrap() - self._sslobj = None - self._state = _UNWRAPPED - if self._shutdown_cb: - self._shutdown_cb() - - elif self._state == _UNWRAPPED: - # Drain possible plaintext data after close_notify. - appdata.append(self._incoming.read()) - except _SSL_ERRORS as exc: - if getattr(exc, 'errno', None) not in ( - ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE, - ssl.SSL_ERROR_SYSCALL): - if self._state == _DO_HANDSHAKE and self._handshake_cb: - self._handshake_cb(exc) - raise - self._need_ssldata = (exc.errno == ssl.SSL_ERROR_WANT_READ) - - # Check for record level data that needs to be sent back. - # Happens for the initial handshake and renegotiations. - if self._outgoing.pending: - ssldata.append(self._outgoing.read()) - return (ssldata, appdata) - - def feed_appdata(self, data, offset=0): - """Feed plaintext data into the pipe. - - Return an (ssldata, offset) tuple. The ssldata element is a list of - buffers containing record level data that needs to be sent to the - remote SSL instance. The offset is the number of plaintext bytes that - were processed, which may be less than the length of data. - - NOTE: In case of short writes, this call MUST be retried with the SAME - buffer passed into the *data* argument (i.e. the id() must be the - same). This is an OpenSSL requirement. A further particularity is that - a short write will always have offset == 0, because the _ssl module - does not enable partial writes. And even though the offset is zero, - there will still be encrypted data in ssldata. - """ - assert 0 <= offset <= len(data) - if self._state == _UNWRAPPED: - # pass through data in unwrapped mode - if offset < len(data): - ssldata = [data[offset:]] - else: - ssldata = [] - return (ssldata, len(data)) - - ssldata = [] - view = memoryview(data) - while True: - self._need_ssldata = False - try: - if offset < len(view): - offset += self._sslobj.write(view[offset:]) - except ssl.SSLError as exc: - # It is not allowed to call write() after unwrap() until the - # close_notify is acknowledged. We return the condition to the - # caller as a short write. - if exc.reason == 'PROTOCOL_IS_SHUTDOWN': - exc.errno = ssl.SSL_ERROR_WANT_READ - if exc.errno not in (ssl.SSL_ERROR_WANT_READ, - ssl.SSL_ERROR_WANT_WRITE, - ssl.SSL_ERROR_SYSCALL): - raise - self._need_ssldata = (exc.errno == ssl.SSL_ERROR_WANT_READ) - - # See if there's any record level data back for us. - if self._outgoing.pending: - ssldata.append(self._outgoing.read()) - if offset == len(view) or self._need_ssldata: - break - return (ssldata, offset) - - -class _SSLProtocolTransport(transports._FlowControlMixin, - transports.Transport): - - def __init__(self, loop, ssl_protocol, app_protocol): - self._loop = loop - self._ssl_protocol = ssl_protocol - self._app_protocol = app_protocol - self._closed = False - - def get_extra_info(self, name, default=None): - """Get optional transport information.""" - return self._ssl_protocol._get_extra_info(name, default) - - def close(self): - """Close the transport. - - Buffered data will be flushed asynchronously. No more data - will be received. After all buffered data is flushed, the - protocol's connection_lost() method will (eventually) called - with None as its argument. - """ - self._closed = True - self._ssl_protocol._start_shutdown() - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if not self._closed: - warnings.warn("unclosed transport %r" % self, ResourceWarning) - self.close() - - def pause_reading(self): - """Pause the receiving end. - - No data will be passed to the protocol's data_received() - method until resume_reading() is called. - """ - self._ssl_protocol._transport.pause_reading() - - def resume_reading(self): - """Resume the receiving end. - - Data received will once again be passed to the protocol's - data_received() method. - """ - self._ssl_protocol._transport.resume_reading() - - def set_write_buffer_limits(self, high=None, low=None): - """Set the high- and low-water limits for write flow control. - - These two values control when to call the protocol's - pause_writing() and resume_writing() methods. If specified, - the low-water limit must be less than or equal to the - high-water limit. Neither value can be negative. - - The defaults are implementation-specific. If only the - high-water limit is given, the low-water limit defaults to a - implementation-specific value less than or equal to the - high-water limit. Setting high to zero forces low to zero as - well, and causes pause_writing() to be called whenever the - buffer becomes non-empty. Setting low to zero causes - resume_writing() to be called only once the buffer is empty. - Use of zero for either limit is generally sub-optimal as it - reduces opportunities for doing I/O and computation - concurrently. - """ - self._ssl_protocol._transport.set_write_buffer_limits(high, low) - - def get_write_buffer_size(self): - """Return the current size of the write buffer.""" - return self._ssl_protocol._transport.get_write_buffer_size() - - def write(self, data): - """Write some data bytes to the transport. - - This does not block; it buffers the data and arranges for it - to be sent out asynchronously. - """ - if not isinstance(data, (bytes, bytearray, memoryview)): - raise TypeError("data: expecting a bytes-like instance, got {!r}" - .format(type(data).__name__)) - if not data: - return - self._ssl_protocol._write_appdata(data) - - def can_write_eof(self): - """Return True if this transport supports write_eof(), False if not.""" - return False - - def abort(self): - """Close the transport immediately. - - Buffered data will be lost. No more data will be received. - The protocol's connection_lost() method will (eventually) be - called with None as its argument. - """ - self._ssl_protocol._abort() - - -class SSLProtocol(protocols.Protocol): - """SSL protocol. - - Implementation of SSL on top of a socket using incoming and outgoing - buffers which are ssl.MemoryBIO objects. - """ - - def __init__(self, loop, app_protocol, sslcontext, waiter, - server_side=False, server_hostname=None): - if ssl is None: - raise RuntimeError('stdlib ssl module not available') - - if not sslcontext: - sslcontext = _create_transport_context(server_side, server_hostname) - - self._server_side = server_side - if server_hostname and not server_side: - self._server_hostname = server_hostname - else: - self._server_hostname = None - self._sslcontext = sslcontext - # SSL-specific extra info. More info are set when the handshake - # completes. - self._extra = dict(sslcontext=sslcontext) - - # App data write buffering - self._write_backlog = collections.deque() - self._write_buffer_size = 0 - - self._waiter = waiter - self._loop = loop - self._app_protocol = app_protocol - self._app_transport = _SSLProtocolTransport(self._loop, - self, self._app_protocol) - self._sslpipe = None - self._session_established = False - self._in_handshake = False - self._in_shutdown = False - self._transport = None - - def _wakeup_waiter(self, exc=None): - if self._waiter is None: - return - if not self._waiter.cancelled(): - if exc is not None: - self._waiter.set_exception(exc) - else: - self._waiter.set_result(None) - self._waiter = None - - def connection_made(self, transport): - """Called when the low-level connection is made. - - Start the SSL handshake. - """ - self._transport = transport - self._sslpipe = _SSLPipe(self._sslcontext, - self._server_side, - self._server_hostname) - self._start_handshake() - - def connection_lost(self, exc): - """Called when the low-level connection is lost or closed. - - The argument is an exception object or None (the latter - meaning a regular EOF is received or the connection was - aborted or closed). - """ - if self._session_established: - self._session_established = False - self._loop.call_soon(self._app_protocol.connection_lost, exc) - self._transport = None - self._app_transport = None - - def pause_writing(self): - """Called when the low-level transport's buffer goes over - the high-water mark. - """ - self._app_protocol.pause_writing() - - def resume_writing(self): - """Called when the low-level transport's buffer drains below - the low-water mark. - """ - self._app_protocol.resume_writing() - - def data_received(self, data): - """Called when some SSL data is received. - - The argument is a bytes object. - """ - try: - ssldata, appdata = self._sslpipe.feed_ssldata(data) - except ssl.SSLError as e: - if self._loop.get_debug(): - logger.warning('%r: SSL error %s (reason %s)', - self, e.errno, e.reason) - self._abort() - return - - for chunk in ssldata: - self._transport.write(chunk) - - for chunk in appdata: - if chunk: - self._app_protocol.data_received(chunk) - else: - self._start_shutdown() - break - - def eof_received(self): - """Called when the other end of the low-level stream - is half-closed. - - If this returns a false value (including None), the transport - will close itself. If it returns a true value, closing the - transport is up to the protocol. - """ - try: - if self._loop.get_debug(): - logger.debug("%r received EOF", self) - - self._wakeup_waiter(ConnectionResetError) - - if not self._in_handshake: - keep_open = self._app_protocol.eof_received() - if keep_open: - logger.warning('returning true from eof_received() ' - 'has no effect when using ssl') - finally: - self._transport.close() - - def _get_extra_info(self, name, default=None): - if name in self._extra: - return self._extra[name] - else: - return self._transport.get_extra_info(name, default) - - def _start_shutdown(self): - if self._in_shutdown: - return - self._in_shutdown = True - self._write_appdata(b'') - - def _write_appdata(self, data): - self._write_backlog.append((data, 0)) - self._write_buffer_size += len(data) - self._process_write_backlog() - - def _start_handshake(self): - if self._loop.get_debug(): - logger.debug("%r starts SSL handshake", self) - self._handshake_start_time = self._loop.time() - else: - self._handshake_start_time = None - self._in_handshake = True - # (b'', 1) is a special value in _process_write_backlog() to do - # the SSL handshake - self._write_backlog.append((b'', 1)) - self._loop.call_soon(self._process_write_backlog) - - def _on_handshake_complete(self, handshake_exc): - self._in_handshake = False - - sslobj = self._sslpipe.ssl_object - try: - if handshake_exc is not None: - raise handshake_exc - - peercert = sslobj.getpeercert() - if not hasattr(self._sslcontext, 'check_hostname'): - # Verify hostname if requested, Python 3.4+ uses check_hostname - # and checks the hostname in do_handshake() - if (self._server_hostname - and self._sslcontext.verify_mode != ssl.CERT_NONE): - ssl.match_hostname(peercert, self._server_hostname) - except BaseException as exc: - if self._loop.get_debug(): - if (hasattr(ssl, 'CertificateError') - and isinstance(exc, ssl.CertificateError)): - logger.warning("%r: SSL handshake failed " - "on verifying the certificate", - self, exc_info=True) - else: - logger.warning("%r: SSL handshake failed", - self, exc_info=True) - self._transport.close() - if isinstance(exc, Exception): - self._wakeup_waiter(exc) - return - else: - raise - - if self._loop.get_debug(): - dt = self._loop.time() - self._handshake_start_time - logger.debug("%r: SSL handshake took %.1f ms", self, dt * 1e3) - - # Add extra info that becomes available after handshake. - self._extra.update(peercert=peercert, - cipher=sslobj.cipher(), - compression=sslobj.compression(), - ) - self._app_protocol.connection_made(self._app_transport) - self._wakeup_waiter() - self._session_established = True - # In case transport.write() was already called. Don't call - # immediatly _process_write_backlog(), but schedule it: - # _on_handshake_complete() can be called indirectly from - # _process_write_backlog(), and _process_write_backlog() is not - # reentrant. - self._loop.call_soon(self._process_write_backlog) - - def _process_write_backlog(self): - # Try to make progress on the write backlog. - if self._transport is None: - return - - try: - for i in range(len(self._write_backlog)): - data, offset = self._write_backlog[0] - if data: - ssldata, offset = self._sslpipe.feed_appdata(data, offset) - elif offset: - ssldata = self._sslpipe.do_handshake( - self._on_handshake_complete) - offset = 1 - else: - ssldata = self._sslpipe.shutdown(self._finalize) - offset = 1 - - for chunk in ssldata: - self._transport.write(chunk) - - if offset < len(data): - self._write_backlog[0] = (data, offset) - # A short write means that a write is blocked on a read - # We need to enable reading if it is paused! - assert self._sslpipe.need_ssldata - if self._transport._paused: - self._transport.resume_reading() - break - - # An entire chunk from the backlog was processed. We can - # delete it and reduce the outstanding buffer size. - del self._write_backlog[0] - self._write_buffer_size -= len(data) - except BaseException as exc: - if self._in_handshake: - # BaseExceptions will be re-raised in _on_handshake_complete. - self._on_handshake_complete(exc) - else: - self._fatal_error(exc, 'Fatal error on SSL transport') - if not isinstance(exc, Exception): - # BaseException - raise - - def _fatal_error(self, exc, message='Fatal error on transport'): - # Should be called from exception handler only. - if isinstance(exc, (BrokenPipeError, ConnectionResetError)): - if self._loop.get_debug(): - logger.debug("%r: %s", self, message, exc_info=True) - else: - self._loop.call_exception_handler({ - 'message': message, - 'exception': exc, - 'transport': self._transport, - 'protocol': self, - }) - if self._transport: - self._transport._force_close(exc) - - def _finalize(self): - if self._transport is not None: - self._transport.close() - - def _abort(self): - if self._transport is not None: - try: - self._transport.abort() - finally: - self._finalize() diff --git a/.local/lib/python2.7/site-packages/trollius/sslproto.pyc b/.local/lib/python2.7/site-packages/trollius/sslproto.pyc deleted file mode 100644 index 031cbfa3269d3c9259368313766d17c1faf14df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24140 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' % ' '.join(info) - - @property - def transport(self): - return self._transport - - def write(self, data): - self._transport.write(data) - - def writelines(self, data): - self._transport.writelines(data) - - def write_eof(self): - return self._transport.write_eof() - - def can_write_eof(self): - return self._transport.can_write_eof() - - def close(self): - return self._transport.close() - - def get_extra_info(self, name, default=None): - return self._transport.get_extra_info(name, default) - - @coroutine - def drain(self): - """Flush the write buffer. - - The intended use is to write - - w.write(data) - yield From(w.drain()) - """ - if self._reader is not None: - exc = self._reader.exception() - if exc is not None: - raise exc - yield From(self._protocol._drain_helper()) - - -class StreamReader(object): - - def __init__(self, limit=_DEFAULT_LIMIT, loop=None): - # The line length limit is a security feature; - # it also doubles as half the buffer limit. - self._limit = limit - if loop is None: - self._loop = events.get_event_loop() - else: - self._loop = loop - self._buffer = bytearray() - self._eof = False # Whether we're done. - self._waiter = None # A future used by _wait_for_data() - self._exception = None - self._transport = None - self._paused = False - - def __repr__(self): - info = ['StreamReader'] - if self._buffer: - info.append('%d bytes' % len(info)) - if self._eof: - info.append('eof') - if self._limit != _DEFAULT_LIMIT: - info.append('l=%d' % self._limit) - if self._waiter: - info.append('w=%r' % self._waiter) - if self._exception: - info.append('e=%r' % self._exception) - if self._transport: - info.append('t=%r' % self._transport) - if self._paused: - info.append('paused') - return '<%s>' % ' '.join(info) - - def exception(self): - return self._exception - - def set_exception(self, exc): - self._exception = exc - - waiter = self._waiter - if waiter is not None: - self._waiter = None - if not waiter.cancelled(): - waiter.set_exception(exc) - - def _wakeup_waiter(self): - """Wakeup read() or readline() function waiting for data or EOF.""" - waiter = self._waiter - if waiter is not None: - self._waiter = None - if not waiter.cancelled(): - waiter.set_result(None) - - def set_transport(self, transport): - assert self._transport is None, 'Transport already set' - self._transport = transport - - def _maybe_resume_transport(self): - if self._paused and len(self._buffer) <= self._limit: - self._paused = False - self._transport.resume_reading() - - def feed_eof(self): - self._eof = True - self._wakeup_waiter() - - def at_eof(self): - """Return True if the buffer is empty and 'feed_eof' was called.""" - return self._eof and not self._buffer - - def feed_data(self, data): - assert not self._eof, 'feed_data after feed_eof' - - if not data: - return - - self._buffer.extend(data) - self._wakeup_waiter() - - if (self._transport is not None and - not self._paused and - len(self._buffer) > 2*self._limit): - try: - self._transport.pause_reading() - except NotImplementedError: - # The transport can't be paused. - # We'll just have to buffer all data. - # Forget the transport so we don't keep trying. - self._transport = None - else: - self._paused = True - - @coroutine - def _wait_for_data(self, func_name): - """Wait until feed_data() or feed_eof() is called.""" - # StreamReader uses a future to link the protocol feed_data() method - # to a read coroutine. Running two read coroutines at the same time - # would have an unexpected behaviour. It would not possible to know - # which coroutine would get the next data. - if self._waiter is not None: - raise RuntimeError('%s() called while another coroutine is ' - 'already waiting for incoming data' % func_name) - - # In asyncio, there is no need to recheck if we got data or EOF thanks - # to "yield from". In trollius, a StreamReader method can be called - # after the _wait_for_data() coroutine is scheduled and before it is - # really executed. - if self._buffer or self._eof: - return - - self._waiter = futures.Future(loop=self._loop) - try: - yield From(self._waiter) - finally: - self._waiter = None - - @coroutine - def readline(self): - if self._exception is not None: - raise self._exception - - line = bytearray() - not_enough = True - - while not_enough: - while self._buffer and not_enough: - ichar = self._buffer.find(b'\n') - if ichar < 0: - line.extend(self._buffer) - del self._buffer[:] - else: - ichar += 1 - line.extend(self._buffer[:ichar]) - del self._buffer[:ichar] - not_enough = False - - if len(line) > self._limit: - self._maybe_resume_transport() - raise ValueError('Line is too long') - - if self._eof: - break - - if not_enough: - yield From(self._wait_for_data('readline')) - - self._maybe_resume_transport() - raise Return(bytes(line)) - - @coroutine - def read(self, n=-1): - if self._exception is not None: - raise self._exception - - if not n: - raise Return(b'') - - if n < 0: - # This used to just loop creating a new waiter hoping to - # collect everything in self._buffer, but that would - # deadlock if the subprocess sends more than self.limit - # bytes. So just call self.read(self._limit) until EOF. - blocks = [] - while True: - block = yield From(self.read(self._limit)) - if not block: - break - blocks.append(block) - raise Return(b''.join(blocks)) - else: - if not self._buffer and not self._eof: - yield From(self._wait_for_data('read')) - - if n < 0 or len(self._buffer) <= n: - data = bytes(self._buffer) - del self._buffer[:] - else: - # n > 0 and len(self._buffer) > n - data = bytes(self._buffer[:n]) - del self._buffer[:n] - - self._maybe_resume_transport() - raise Return(data) - - @coroutine - def readexactly(self, n): - if self._exception is not None: - raise self._exception - - # There used to be "optimized" code here. It created its own - # Future and waited until self._buffer had at least the n - # bytes, then called read(n). Unfortunately, this could pause - # the transport if the argument was larger than the pause - # limit (which is twice self._limit). So now we just read() - # into a local buffer. - - blocks = [] - while n > 0: - block = yield From(self.read(n)) - if not block: - partial = b''.join(blocks) - raise IncompleteReadError(partial, len(partial) + n) - blocks.append(block) - n -= len(block) - - raise Return(b''.join(blocks)) - - # FIXME: should we support __aiter__ and __anext__ in Trollius? - #if compat.PY35: - # @coroutine - # def __aiter__(self): - # return self - # - # @coroutine - # def __anext__(self): - # val = yield from self.readline() - # if val == b'': - # raise StopAsyncIteration - # return val diff --git a/.local/lib/python2.7/site-packages/trollius/streams.pyc b/.local/lib/python2.7/site-packages/trollius/streams.pyc deleted file mode 100644 index 8b26ce084e547ec1d537cba7ee85ac1ef61bb055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19319 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 Q!}QVFW0y{xIsD3h0XBn?mjD0& diff --git a/.local/lib/python2.7/site-packages/trollius/subprocess.py b/.local/lib/python2.7/site-packages/trollius/subprocess.py deleted file mode 100644 index 4ed2b5c5..00000000 --- a/.local/lib/python2.7/site-packages/trollius/subprocess.py +++ /dev/null @@ -1,225 +0,0 @@ -from __future__ import absolute_import - -__all__ = ['create_subprocess_exec', 'create_subprocess_shell'] - -import subprocess - -from . import events -from . import protocols -from . import streams -from . import tasks -from .coroutines import coroutine, From, Return -from .py33_exceptions import BrokenPipeError, ConnectionResetError -from .log import logger - - -PIPE = subprocess.PIPE -STDOUT = subprocess.STDOUT -if hasattr(subprocess, 'DEVNULL'): - DEVNULL = subprocess.DEVNULL - - -class SubprocessStreamProtocol(streams.FlowControlMixin, - protocols.SubprocessProtocol): - """Like StreamReaderProtocol, but for a subprocess.""" - - def __init__(self, limit, loop): - super(SubprocessStreamProtocol, self).__init__(loop=loop) - self._limit = limit - self.stdin = self.stdout = self.stderr = None - self._transport = None - - def __repr__(self): - info = [self.__class__.__name__] - if self.stdin is not None: - info.append('stdin=%r' % self.stdin) - if self.stdout is not None: - info.append('stdout=%r' % self.stdout) - if self.stderr is not None: - info.append('stderr=%r' % self.stderr) - return '<%s>' % ' '.join(info) - - def connection_made(self, transport): - self._transport = transport - - stdout_transport = transport.get_pipe_transport(1) - if stdout_transport is not None: - self.stdout = streams.StreamReader(limit=self._limit, - loop=self._loop) - self.stdout.set_transport(stdout_transport) - - stderr_transport = transport.get_pipe_transport(2) - if stderr_transport is not None: - self.stderr = streams.StreamReader(limit=self._limit, - loop=self._loop) - self.stderr.set_transport(stderr_transport) - - stdin_transport = transport.get_pipe_transport(0) - if stdin_transport is not None: - self.stdin = streams.StreamWriter(stdin_transport, - protocol=self, - reader=None, - loop=self._loop) - - def pipe_data_received(self, fd, data): - if fd == 1: - reader = self.stdout - elif fd == 2: - reader = self.stderr - else: - reader = None - if reader is not None: - reader.feed_data(data) - - def pipe_connection_lost(self, fd, exc): - if fd == 0: - pipe = self.stdin - if pipe is not None: - pipe.close() - self.connection_lost(exc) - return - if fd == 1: - reader = self.stdout - elif fd == 2: - reader = self.stderr - else: - reader = None - if reader != None: - if exc is None: - reader.feed_eof() - else: - reader.set_exception(exc) - - def process_exited(self): - self._transport.close() - self._transport = None - - -class Process: - def __init__(self, transport, protocol, loop): - self._transport = transport - self._protocol = protocol - self._loop = loop - self.stdin = protocol.stdin - self.stdout = protocol.stdout - self.stderr = protocol.stderr - self.pid = transport.get_pid() - - def __repr__(self): - return '<%s %s>' % (self.__class__.__name__, self.pid) - - @property - def returncode(self): - return self._transport.get_returncode() - - @coroutine - def wait(self): - """Wait until the process exit and return the process return code. - - This method is a coroutine.""" - return_code = yield From(self._transport._wait()) - raise Return(return_code) - - def send_signal(self, signal): - self._transport.send_signal(signal) - - def terminate(self): - self._transport.terminate() - - def kill(self): - self._transport.kill() - - @coroutine - def _feed_stdin(self, input): - debug = self._loop.get_debug() - self.stdin.write(input) - if debug: - logger.debug('%r communicate: feed stdin (%s bytes)', - self, len(input)) - try: - yield From(self.stdin.drain()) - except (BrokenPipeError, ConnectionResetError) as exc: - # communicate() ignores BrokenPipeError and ConnectionResetError - if debug: - logger.debug('%r communicate: stdin got %r', self, exc) - - if debug: - logger.debug('%r communicate: close stdin', self) - self.stdin.close() - - @coroutine - def _noop(self): - return None - - @coroutine - def _read_stream(self, fd): - transport = self._transport.get_pipe_transport(fd) - if fd == 2: - stream = self.stderr - else: - assert fd == 1 - stream = self.stdout - if self._loop.get_debug(): - name = 'stdout' if fd == 1 else 'stderr' - logger.debug('%r communicate: read %s', self, name) - output = yield From(stream.read()) - if self._loop.get_debug(): - name = 'stdout' if fd == 1 else 'stderr' - logger.debug('%r communicate: close %s', self, name) - transport.close() - raise Return(output) - - @coroutine - def communicate(self, input=None): - if input: - stdin = self._feed_stdin(input) - else: - stdin = self._noop() - if self.stdout is not None: - stdout = self._read_stream(1) - else: - stdout = self._noop() - if self.stderr is not None: - stderr = self._read_stream(2) - else: - stderr = self._noop() - stdin, stdout, stderr = yield From(tasks.gather(stdin, stdout, stderr, - loop=self._loop)) - yield From(self.wait()) - raise Return(stdout, stderr) - - -@coroutine -def create_subprocess_shell(cmd, **kwds): - stdin = kwds.pop('stdin', None) - stdout = kwds.pop('stdout', None) - stderr = kwds.pop('stderr', None) - loop = kwds.pop('loop', None) - limit = kwds.pop('limit', streams._DEFAULT_LIMIT) - if loop is None: - loop = events.get_event_loop() - protocol_factory = lambda: SubprocessStreamProtocol(limit=limit, - loop=loop) - transport, protocol = yield From(loop.subprocess_shell( - protocol_factory, - cmd, stdin=stdin, stdout=stdout, - stderr=stderr, **kwds)) - raise Return(Process(transport, protocol, loop)) - -@coroutine -def create_subprocess_exec(program, *args, **kwds): - stdin = kwds.pop('stdin', None) - stdout = kwds.pop('stdout', None) - stderr = kwds.pop('stderr', None) - loop = kwds.pop('loop', None) - limit = kwds.pop('limit', streams._DEFAULT_LIMIT) - if loop is None: - loop = events.get_event_loop() - protocol_factory = lambda: SubprocessStreamProtocol(limit=limit, - loop=loop) - transport, protocol = yield From(loop.subprocess_exec( - protocol_factory, - program, *args, - stdin=stdin, stdout=stdout, - stderr=stderr, **kwds)) - raise Return(Process(transport, protocol, loop)) diff --git a/.local/lib/python2.7/site-packages/trollius/subprocess.pyc b/.local/lib/python2.7/site-packages/trollius/subprocess.pyc deleted file mode 100644 index ef2f8e756f408b30aec3ac74ffc91d72122fcbfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9222 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 lz{S!p;' % coro) - - if self._fut_waiter is not None: - info.insert(2, 'wait_for=%r' % self._fut_waiter) - return info - - def get_stack(self, limit=None): - """Return the list of stack frames for this task's coroutine. - - If the coroutine is not done, this returns the stack where it is - suspended. If the coroutine has completed successfully or was - cancelled, this returns an empty list. If the coroutine was - terminated by an exception, this returns the list of traceback - frames. - - The frames are always ordered from oldest to newest. - - The optional limit gives the maximum number of frames to - return; by default all available frames are returned. Its - meaning differs depending on whether a stack or a traceback is - returned: the newest frames of a stack are returned, but the - oldest frames of a traceback are returned. (This matches the - behavior of the traceback module.) - - For reasons beyond our control, only one stack frame is - returned for a suspended coroutine. - """ - frames = [] - try: - # 'async def' coroutines - f = self._coro.cr_frame - except AttributeError: - f = self._coro.gi_frame - if f is not None: - while f is not None: - if limit is not None: - if limit <= 0: - break - limit -= 1 - frames.append(f) - f = f.f_back - frames.reverse() - elif self._exception is not None: - tb = self._exception.__traceback__ - while tb is not None: - if limit is not None: - if limit <= 0: - break - limit -= 1 - frames.append(tb.tb_frame) - tb = tb.tb_next - return frames - - def print_stack(self, limit=None, file=None): - """Print the stack or traceback for this task's coroutine. - - This produces output similar to that of the traceback module, - for the frames retrieved by get_stack(). The limit argument - is passed to get_stack(). The file argument is an I/O stream - to which the output is written; by default output is written - to sys.stderr. - """ - extracted_list = [] - checked = set() - for f in self.get_stack(limit=limit): - lineno = f.f_lineno - co = f.f_code - filename = co.co_filename - name = co.co_name - if filename not in checked: - checked.add(filename) - linecache.checkcache(filename) - line = linecache.getline(filename, lineno, f.f_globals) - extracted_list.append((filename, lineno, name, line)) - exc = self._exception - if not extracted_list: - print('No stack for %r' % self, file=file) - elif exc is not None: - print('Traceback for %r (most recent call last):' % self, - file=file) - else: - print('Stack for %r (most recent call last):' % self, - file=file) - traceback.print_list(extracted_list, file=file) - if exc is not None: - for line in traceback.format_exception_only(exc.__class__, exc): - print(line, file=file, end='') - - def cancel(self): - """Request that this task cancel itself. - - This arranges for a CancelledError to be thrown into the - wrapped coroutine on the next cycle through the event loop. - The coroutine then has a chance to clean up or even deny - the request using try/except/finally. - - Unlike Future.cancel, this does not guarantee that the - task will be cancelled: the exception might be caught and - acted upon, delaying cancellation of the task or preventing - cancellation completely. The task may also return a value or - raise a different exception. - - Immediately after this method is called, Task.cancelled() will - not return True (unless the task was already cancelled). A - task will be marked as cancelled when the wrapped coroutine - terminates with a CancelledError exception (even if cancel() - was not called). - """ - if self.done(): - return False - if self._fut_waiter is not None: - if self._fut_waiter.cancel(): - # Leave self._fut_waiter; it may be a Task that - # catches and ignores the cancellation so we may have - # to cancel it again later. - return True - # It must be the case that self._step is already scheduled. - self._must_cancel = True - return True - - def _step(self, value=None, exc=None, exc_tb=None): - assert not self.done(), \ - '_step(): already done: {0!r}, {1!r}, {2!r}'.format(self, value, exc) - - if self._must_cancel: - if not isinstance(exc, futures.CancelledError): - exc = futures.CancelledError() - self._must_cancel = False - coro = self._coro - self._fut_waiter = None - - if exc_tb is not None: - init_exc = exc - else: - init_exc = None - self.__class__._current_tasks[self._loop] = self - # Call either coro.throw(exc) or coro.send(value). - try: - if exc is not None: - if exc_tb is not None: - result = coro.throw(exc, None, exc_tb) - else: - result = coro.throw(exc) - else: - result = coro.send(value) - # On Python 3.3 and Python 3.4, ReturnException is not used in - # practice. But this except is kept to have a single code base - # for all Python versions. - except coroutines.ReturnException as exc: - if isinstance(exc, ReturnException): - exc.raised = True - result = exc.value - else: - result = None - self.set_result(result) - except StopIteration as exc: - if compat.PY33: - # asyncio Task object? get the result of the coroutine - result = exc.value - else: - if isinstance(exc, ReturnException): - exc.raised = True - result = exc.value - else: - result = None - self.set_result(result) - except futures.CancelledError as exc: - super(Task, self).cancel() # I.e., Future.cancel(self). - except BaseException as exc: - if exc is init_exc: - self._set_exception_with_tb(exc, exc_tb) - exc_tb = None - else: - self.set_exception(exc) - - if not isinstance(exc, Exception): - # reraise BaseException - raise - else: - if coroutines._DEBUG: - if not coroutines._coroutine_at_yield_from(self._coro): - # trollius coroutine must "yield From(...)" - if not isinstance(result, coroutines.FromWrapper): - self._loop.call_soon( - self._step, None, - RuntimeError("yield used without From")) - return - result = result.obj - else: - # asyncio coroutine using "yield from ..." - if isinstance(result, coroutines.FromWrapper): - result = result.obj - elif isinstance(result, coroutines.FromWrapper): - result = result.obj - - if coroutines.iscoroutine(result): - # "yield coroutine" creates a task, the current task - # will wait until the new task is done - result = self._loop.create_task(result) - # FIXME: faster check. common base class? hasattr? - elif isinstance(result, (Lock, Condition, Semaphore)): - coro = _lock_coroutine(result) - result = self._loop.create_task(coro) - - if isinstance(result, futures._FUTURE_CLASSES): - # Yielded Future must come from Future.__iter__(). - result.add_done_callback(self._wakeup) - self._fut_waiter = result - if self._must_cancel: - if self._fut_waiter.cancel(): - self._must_cancel = False - elif result is None: - # Bare yield relinquishes control for one event loop iteration. - self._loop.call_soon(self._step) - else: - # Yielding something else is an error. - self._loop.call_soon( - self._step, None, - RuntimeError( - 'Task got bad yield: {0!r}'.format(result))) - finally: - self.__class__._current_tasks.pop(self._loop) - self = None # Needed to break cycles when an exception occurs. - - def _wakeup(self, future): - if (future._state == futures._FINISHED - and future._exception is not None): - # Get the traceback before calling exception(), because calling - # the exception() method clears the traceback - exc_tb = future._get_exception_tb() - exc = future.exception() - self._step(None, exc, exc_tb) - exc_tb = None - else: - try: - value = future.result() - except Exception as exc: - # This may also be a cancellation. - self._step(None, exc) - else: - self._step(value, None) - self = None # Needed to break cycles when an exception occurs. - - -# wait() and as_completed() similar to those in PEP 3148. - -# Export symbols in trollius.tasks for compatibility with asyncio -FIRST_COMPLETED = executor.FIRST_COMPLETED -FIRST_EXCEPTION = executor.FIRST_EXCEPTION -ALL_COMPLETED = executor.ALL_COMPLETED - - -@coroutine -def wait(fs, loop=None, timeout=None, return_when=ALL_COMPLETED): - """Wait for the Futures and coroutines given by fs to complete. - - The sequence futures must not be empty. - - Coroutines will be wrapped in Tasks. - - Returns two sets of Future: (done, pending). - - Usage: - - done, pending = yield From(asyncio.wait(fs)) - - Note: This does not raise TimeoutError! Futures that aren't done - when the timeout occurs are returned in the second set. - """ - if isinstance(fs, futures._FUTURE_CLASSES) or coroutines.iscoroutine(fs): - raise TypeError("expect a list of futures, not %s" % type(fs).__name__) - if not fs: - raise ValueError('Set of coroutines/Futures is empty.') - if return_when not in (FIRST_COMPLETED, FIRST_EXCEPTION, ALL_COMPLETED): - raise ValueError('Invalid return_when value: {0}'.format(return_when)) - - if loop is None: - loop = events.get_event_loop() - - fs = set(ensure_future(f, loop=loop) for f in set(fs)) - - result = yield From(_wait(fs, timeout, return_when, loop)) - raise Return(result) - - -def _release_waiter(waiter, *args): - if not waiter.done(): - waiter.set_result(None) - - -@coroutine -def wait_for(fut, timeout, loop=None): - """Wait for the single Future or coroutine to complete, with timeout. - - Coroutine will be wrapped in Task. - - Returns result of the Future or coroutine. When a timeout occurs, - it cancels the task and raises TimeoutError. To avoid the task - cancellation, wrap it in shield(). - - If the wait is cancelled, the task is also cancelled. - - This function is a coroutine. - """ - if loop is None: - loop = events.get_event_loop() - - if timeout is None: - result = yield From(fut) - raise Return(result) - - waiter = futures.Future(loop=loop) - timeout_handle = loop.call_later(timeout, _release_waiter, waiter) - cb = functools.partial(_release_waiter, waiter) - - fut = ensure_future(fut, loop=loop) - fut.add_done_callback(cb) - - try: - # wait until the future completes or the timeout - try: - yield From(waiter) - except futures.CancelledError: - fut.remove_done_callback(cb) - fut.cancel() - raise - - if fut.done(): - raise Return(fut.result()) - else: - fut.remove_done_callback(cb) - fut.cancel() - raise futures.TimeoutError() - finally: - timeout_handle.cancel() - - -@coroutine -def _wait(fs, timeout, return_when, loop): - """Internal helper for wait() and _wait_for(). - - The fs argument must be a collection of Futures. - """ - assert fs, 'Set of Futures is empty.' - waiter = futures.Future(loop=loop) - timeout_handle = None - if timeout is not None: - timeout_handle = loop.call_later(timeout, _release_waiter, waiter) - non_local = {'counter': len(fs)} - - def _on_completion(f): - non_local['counter'] -= 1 - if (non_local['counter'] <= 0 or - return_when == FIRST_COMPLETED or - return_when == FIRST_EXCEPTION and (not f.cancelled() and - f.exception() is not None)): - if timeout_handle is not None: - timeout_handle.cancel() - if not waiter.done(): - waiter.set_result(None) - - for f in fs: - f.add_done_callback(_on_completion) - - try: - yield From(waiter) - finally: - if timeout_handle is not None: - timeout_handle.cancel() - - done, pending = set(), set() - for f in fs: - f.remove_done_callback(_on_completion) - if f.done(): - done.add(f) - else: - pending.add(f) - raise Return(done, pending) - - -# This is *not* a @coroutine! It is just an iterator (yielding Futures). -def as_completed(fs, loop=None, timeout=None): - """Return an iterator whose values are coroutines. - - When waiting for the yielded coroutines you'll get the results (or - exceptions!) of the original Futures (or coroutines), in the order - in which and as soon as they complete. - - This differs from PEP 3148; the proper way to use this is: - - for f in as_completed(fs): - result = yield From(f) # The 'yield' may raise. - # Use result. - - If a timeout is specified, the 'yield' will raise - TimeoutError when the timeout occurs before all Futures are done. - - Note: The futures 'f' are not necessarily members of fs. - """ - if isinstance(fs, futures._FUTURE_CLASSES) or coroutines.iscoroutine(fs): - raise TypeError("expect a list of futures, not %s" % type(fs).__name__) - loop = loop if loop is not None else events.get_event_loop() - todo = set(ensure_future(f, loop=loop) for f in set(fs)) - from .queues import Queue # Import here to avoid circular import problem. - done = Queue(loop=loop) - timeout_handle = None - - def _on_timeout(): - for f in todo: - f.remove_done_callback(_on_completion) - done.put_nowait(None) # Queue a dummy value for _wait_for_one(). - todo.clear() # Can't do todo.remove(f) in the loop. - - def _on_completion(f): - if not todo: - return # _on_timeout() was here first. - todo.remove(f) - done.put_nowait(f) - if not todo and timeout_handle is not None: - timeout_handle.cancel() - - @coroutine - def _wait_for_one(): - f = yield From(done.get()) - if f is None: - # Dummy value from _on_timeout(). - raise futures.TimeoutError - raise Return(f.result()) # May raise f.exception(). - - for f in todo: - f.add_done_callback(_on_completion) - if todo and timeout is not None: - timeout_handle = loop.call_later(timeout, _on_timeout) - for _ in range(len(todo)): - yield _wait_for_one() - - -@coroutine -def sleep(delay, result=None, loop=None): - """Coroutine that completes after a given time (in seconds).""" - future = futures.Future(loop=loop) - h = future._loop.call_later(delay, - future._set_result_unless_cancelled, result) - try: - result = yield From(future) - raise Return(result) - finally: - h.cancel() - - -def async(coro_or_future, loop=None): - """Wrap a coroutine in a future. - - If the argument is a Future, it is returned directly. - - This function is deprecated in 3.5. Use asyncio.ensure_future() instead. - """ - - warnings.warn("asyncio.async() function is deprecated, use ensure_future()", - DeprecationWarning) - - return ensure_future(coro_or_future, loop=loop) - - -def ensure_future(coro_or_future, loop=None): - """Wrap a coroutine in a future. - - If the argument is a Future, it is returned directly. - """ - # FIXME: only check if coroutines._DEBUG is True? - if isinstance(coro_or_future, coroutines.FromWrapper): - coro_or_future = coro_or_future.obj - if isinstance(coro_or_future, futures._FUTURE_CLASSES): - if loop is not None and loop is not coro_or_future._loop: - raise ValueError('loop argument must agree with Future') - return coro_or_future - elif coroutines.iscoroutine(coro_or_future): - if loop is None: - loop = events.get_event_loop() - task = loop.create_task(coro_or_future) - if task._source_traceback: - del task._source_traceback[-1] - return task - else: - raise TypeError('A Future or coroutine is required') - - -class _GatheringFuture(futures.Future): - """Helper for gather(). - - This overrides cancel() to cancel all the children and act more - like Task.cancel(), which doesn't immediately mark itself as - cancelled. - """ - - def __init__(self, children, loop=None): - super(_GatheringFuture, self).__init__(loop=loop) - self._children = children - - def cancel(self): - if self.done(): - return False - for child in self._children: - child.cancel() - return True - - -def gather(*coros_or_futures, **kw): - """Return a future aggregating results from the given coroutines - or futures. - - All futures must share the same event loop. If all the tasks are - done successfully, the returned future's result is the list of - results (in the order of the original sequence, not necessarily - the order of results arrival). If *return_exceptions* is True, - exceptions in the tasks are treated the same as successful - results, and gathered in the result list; otherwise, the first - raised exception will be immediately propagated to the returned - future. - - Cancellation: if the outer Future is cancelled, all children (that - have not completed yet) are also cancelled. If any child is - cancelled, this is treated as if it raised CancelledError -- - the outer Future is *not* cancelled in this case. (This is to - prevent the cancellation of one child to cause other children to - be cancelled.) - """ - loop = kw.pop('loop', None) - return_exceptions = kw.pop('return_exceptions', False) - if kw: - raise TypeError("unexpected keyword") - - if not coros_or_futures: - outer = futures.Future(loop=loop) - outer.set_result([]) - return outer - - arg_to_fut = {} - for arg in set(coros_or_futures): - if not isinstance(arg, futures._FUTURE_CLASSES): - fut = ensure_future(arg, loop=loop) - if loop is None: - loop = fut._loop - # The caller cannot control this future, the "destroy pending task" - # warning should not be emitted. - fut._log_destroy_pending = False - else: - fut = arg - if loop is None: - loop = fut._loop - elif fut._loop is not loop: - raise ValueError("futures are tied to different event loops") - arg_to_fut[arg] = fut - - children = [arg_to_fut[arg] for arg in coros_or_futures] - nchildren = len(children) - outer = _GatheringFuture(children, loop=loop) - non_local = {'nfinished': 0} - results = [None] * nchildren - - def _done_callback(i, fut): - if outer.done(): - if not fut.cancelled(): - # Mark exception retrieved. - fut.exception() - return - - if fut.cancelled(): - res = futures.CancelledError() - if not return_exceptions: - outer.set_exception(res) - return - elif fut._exception is not None: - res = fut.exception() # Mark exception retrieved. - if not return_exceptions: - outer.set_exception(res) - return - else: - res = fut._result - results[i] = res - non_local['nfinished'] += 1 - if non_local['nfinished'] == nchildren: - outer.set_result(results) - - for i, fut in enumerate(children): - fut.add_done_callback(functools.partial(_done_callback, i)) - return outer - - -def shield(arg, loop=None): - """Wait for a future, shielding it from cancellation. - - The statement - - res = yield From(shield(something())) - - is exactly equivalent to the statement - - res = yield From(something()) - - *except* that if the coroutine containing it is cancelled, the - task running in something() is not cancelled. From the POV of - something(), the cancellation did not happen. But its caller is - still cancelled, so the yield-from expression still raises - CancelledError. Note: If something() is cancelled by other means - this will still cancel shield(). - - If you want to completely ignore cancellation (not recommended) - you can combine shield() with a try/except clause, as follows: - - try: - res = yield From(shield(something())) - except CancelledError: - res = None - """ - inner = ensure_future(arg, loop=loop) - if inner.done(): - # Shortcut. - return inner - loop = inner._loop - outer = futures.Future(loop=loop) - - def _done_callback(inner): - if outer.cancelled(): - if not inner.cancelled(): - # Mark inner's result as retrieved. - inner.exception() - return - - if inner.cancelled(): - outer.cancel() - else: - exc = inner.exception() - if exc is not None: - outer.set_exception(exc) - else: - outer.set_result(inner.result()) - - inner.add_done_callback(_done_callback) - return outer diff --git a/.local/lib/python2.7/site-packages/trollius/tasks.pyc b/.local/lib/python2.7/site-packages/trollius/tasks.pyc deleted file mode 100644 index 03551475b9fa6d71a6e8360965104ab4b0446760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23775 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 diff --git a/.local/lib/python2.7/site-packages/trollius/test_support.py b/.local/lib/python2.7/site-packages/trollius/test_support.py deleted file mode 100644 index b40576a4..00000000 --- a/.local/lib/python2.7/site-packages/trollius/test_support.py +++ /dev/null @@ -1,309 +0,0 @@ -# Subset of test.support from CPython 3.5, just what we need to run asyncio -# test suite. The code is copied from CPython 3.5 to not depend on the test -# module because it is rarely installed. - -# Ignore symbol TEST_HOME_DIR: test_events works without it - -from __future__ import absolute_import -import functools -import gc -import os -import platform -import re -import socket -import subprocess -import sys -import time - -from trollius import test_utils - -# A constant likely larger than the underlying OS pipe buffer size, to -# make writes blocking. -# Windows limit seems to be around 512 B, and many Unix kernels have a -# 64 KiB pipe buffer size or 16 * PAGE_SIZE: take a few megs to be sure. -# (see issue #17835 for a discussion of this number). -PIPE_MAX_SIZE = 4 * 1024 * 1024 + 1 - -def strip_python_stderr(stderr): - """Strip the stderr of a Python process from potential debug output - emitted by the interpreter. - - This will typically be run on the result of the communicate() method - of a subprocess.Popen object. - """ - stderr = re.sub(br"\[\d+ refs, \d+ blocks\]\r?\n?", b"", stderr).strip() - return stderr - - -# Executing the interpreter in a subprocess -def _assert_python(expected_success, *args, **env_vars): - if '__isolated' in env_vars: - isolated = env_vars.pop('__isolated') - else: - isolated = not env_vars - cmd_line = [sys.executable] - if sys.version_info >= (3, 3): - cmd_line.extend(('-X', 'faulthandler')) - if isolated and sys.version_info >= (3, 4): - # isolated mode: ignore Python environment variables, ignore user - # site-packages, and don't add the current directory to sys.path - cmd_line.append('-I') - elif not env_vars: - # ignore Python environment variables - cmd_line.append('-E') - # Need to preserve the original environment, for in-place testing of - # shared library builds. - env = os.environ.copy() - # But a special flag that can be set to override -- in this case, the - # caller is responsible to pass the full environment. - if env_vars.pop('__cleanenv', None): - env = {} - env.update(env_vars) - cmd_line.extend(args) - p = subprocess.Popen(cmd_line, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - env=env) - try: - out, err = p.communicate() - finally: - subprocess._cleanup() - p.stdout.close() - p.stderr.close() - rc = p.returncode - err = strip_python_stderr(err) - if (rc and expected_success) or (not rc and not expected_success): - raise AssertionError( - "Process return code is %d, " - "stderr follows:\n%s" % (rc, err.decode('ascii', 'ignore'))) - return rc, out, err - - -def assert_python_ok(*args, **env_vars): - """ - Assert that running the interpreter with `args` and optional environment - variables `env_vars` succeeds (rc == 0) and return a (return code, stdout, - stderr) tuple. - - If the __cleanenv keyword is set, env_vars is used a fresh environment. - - Python is started in isolated mode (command line option -I), - except if the __isolated keyword is set to False. - """ - return _assert_python(True, *args, **env_vars) - - -is_jython = sys.platform.startswith('java') - -def gc_collect(): - """Force as many objects as possible to be collected. - - In non-CPython implementations of Python, this is needed because timely - deallocation is not guaranteed by the garbage collector. (Even in CPython - this can be the case in case of reference cycles.) This means that __del__ - methods may be called later than expected and weakrefs may remain alive for - longer than expected. This function tries its best to force all garbage - objects to disappear. - """ - gc.collect() - if is_jython: - time.sleep(0.1) - gc.collect() - gc.collect() - - -HOST = "127.0.0.1" -HOSTv6 = "::1" - - -def _is_ipv6_enabled(): - """Check whether IPv6 is enabled on this host.""" - if socket.has_ipv6: - sock = None - try: - sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) - sock.bind((HOSTv6, 0)) - return True - except OSError: - pass - finally: - if sock: - sock.close() - return False - -IPV6_ENABLED = _is_ipv6_enabled() - - -def find_unused_port(family=socket.AF_INET, socktype=socket.SOCK_STREAM): - """Returns an unused port that should be suitable for binding. This is - achieved by creating a temporary socket with the same family and type as - the 'sock' parameter (default is AF_INET, SOCK_STREAM), and binding it to - the specified host address (defaults to 0.0.0.0) with the port set to 0, - eliciting an unused ephemeral port from the OS. The temporary socket is - then closed and deleted, and the ephemeral port is returned. - - Either this method or bind_port() should be used for any tests where a - server socket needs to be bound to a particular port for the duration of - the test. Which one to use depends on whether the calling code is creating - a python socket, or if an unused port needs to be provided in a constructor - or passed to an external program (i.e. the -accept argument to openssl's - s_server mode). Always prefer bind_port() over find_unused_port() where - possible. Hard coded ports should *NEVER* be used. As soon as a server - socket is bound to a hard coded port, the ability to run multiple instances - of the test simultaneously on the same host is compromised, which makes the - test a ticking time bomb in a buildbot environment. On Unix buildbots, this - may simply manifest as a failed test, which can be recovered from without - intervention in most cases, but on Windows, the entire python process can - completely and utterly wedge, requiring someone to log in to the buildbot - and manually kill the affected process. - - (This is easy to reproduce on Windows, unfortunately, and can be traced to - the SO_REUSEADDR socket option having different semantics on Windows versus - Unix/Linux. On Unix, you can't have two AF_INET SOCK_STREAM sockets bind, - listen and then accept connections on identical host/ports. An EADDRINUSE - OSError will be raised at some point (depending on the platform and - the order bind and listen were called on each socket). - - However, on Windows, if SO_REUSEADDR is set on the sockets, no EADDRINUSE - will ever be raised when attempting to bind two identical host/ports. When - accept() is called on each socket, the second caller's process will steal - the port from the first caller, leaving them both in an awkwardly wedged - state where they'll no longer respond to any signals or graceful kills, and - must be forcibly killed via OpenProcess()/TerminateProcess(). - - The solution on Windows is to use the SO_EXCLUSIVEADDRUSE socket option - instead of SO_REUSEADDR, which effectively affords the same semantics as - SO_REUSEADDR on Unix. Given the propensity of Unix developers in the Open - Source world compared to Windows ones, this is a common mistake. A quick - look over OpenSSL's 0.9.8g source shows that they use SO_REUSEADDR when - openssl.exe is called with the 's_server' option, for example. See - http://bugs.python.org/issue2550 for more info. The following site also - has a very thorough description about the implications of both REUSEADDR - and EXCLUSIVEADDRUSE on Windows: - http://msdn2.microsoft.com/en-us/library/ms740621(VS.85).aspx) - - XXX: although this approach is a vast improvement on previous attempts to - elicit unused ports, it rests heavily on the assumption that the ephemeral - port returned to us by the OS won't immediately be dished back out to some - other process when we close and delete our temporary socket but before our - calling code has a chance to bind the returned port. We can deal with this - issue if/when we come across it. - """ - - tempsock = socket.socket(family, socktype) - port = bind_port(tempsock) - tempsock.close() - del tempsock - return port - -def bind_port(sock, host=HOST): - """Bind the socket to a free port and return the port number. Relies on - ephemeral ports in order to ensure we are using an unbound port. This is - important as many tests may be running simultaneously, especially in a - buildbot environment. This method raises an exception if the sock.family - is AF_INET and sock.type is SOCK_STREAM, *and* the socket has SO_REUSEADDR - or SO_REUSEPORT set on it. Tests should *never* set these socket options - for TCP/IP sockets. The only case for setting these options is testing - multicasting via multiple UDP sockets. - - Additionally, if the SO_EXCLUSIVEADDRUSE socket option is available (i.e. - on Windows), it will be set on the socket. This will prevent anyone else - from bind()'ing to our host/port for the duration of the test. - """ - - if sock.family == socket.AF_INET and sock.type == socket.SOCK_STREAM: - if hasattr(socket, 'SO_REUSEADDR'): - if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) == 1: - raise TestFailed("tests should never set the SO_REUSEADDR " - "socket option on TCP/IP sockets!") - if hasattr(socket, 'SO_REUSEPORT'): - try: - reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) - if reuse == 1: - raise TestFailed("tests should never set the SO_REUSEPORT " - "socket option on TCP/IP sockets!") - except OSError: - # Python's socket module was compiled using modern headers - # thus defining SO_REUSEPORT but this process is running - # under an older kernel that does not support SO_REUSEPORT. - pass - if hasattr(socket, 'SO_EXCLUSIVEADDRUSE'): - sock.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1) - - sock.bind((host, 0)) - port = sock.getsockname()[1] - return port - -def requires_mac_ver(*min_version): - """Decorator raising SkipTest if the OS is Mac OS X and the OS X - version if less than min_version. - - For example, @requires_mac_ver(10, 5) raises SkipTest if the OS X version - is lesser than 10.5. - """ - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kw): - if sys.platform == 'darwin': - version_txt = platform.mac_ver()[0] - try: - version = tuple(map(int, version_txt.split('.'))) - except ValueError: - pass - else: - if version < min_version: - min_version_txt = '.'.join(map(str, min_version)) - raise test_utils.SkipTest( - "Mac OS X %s or higher required, not %s" - % (min_version_txt, version_txt)) - return func(*args, **kw) - wrapper.min_version = min_version - return wrapper - return decorator - -def _requires_unix_version(sysname, min_version): - """Decorator raising SkipTest if the OS is `sysname` and the version is - less than `min_version`. - - For example, @_requires_unix_version('FreeBSD', (7, 2)) raises SkipTest if - the FreeBSD version is less than 7.2. - """ - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kw): - if platform.system() == sysname: - version_txt = platform.release().split('-', 1)[0] - try: - version = tuple(map(int, version_txt.split('.'))) - except ValueError: - pass - else: - if version < min_version: - min_version_txt = '.'.join(map(str, min_version)) - raise test_utils.SkipTest( - "%s version %s or higher required, not %s" - % (sysname, min_version_txt, version_txt)) - return func(*args, **kw) - wrapper.min_version = min_version - return wrapper - return decorator - -def requires_freebsd_version(*min_version): - """Decorator raising SkipTest if the OS is FreeBSD and the FreeBSD version - is less than `min_version`. - - For example, @requires_freebsd_version(7, 2) raises SkipTest if the FreeBSD - version is less than 7.2. - """ - return _requires_unix_version('FreeBSD', min_version) - -# Use test.support if available -try: - from test.support import * -except ImportError: - pass - -# Use test.script_helper if available -try: - from test.script_helper import assert_python_ok -except ImportError: - pass diff --git a/.local/lib/python2.7/site-packages/trollius/test_support.pyc b/.local/lib/python2.7/site-packages/trollius/test_support.pyc deleted file mode 100644 index 45a9bc498451c36ac73f1a312206d5a4fd23d0d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12909 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 E0aL!hP5=M^ diff --git a/.local/lib/python2.7/site-packages/trollius/test_utils.py b/.local/lib/python2.7/site-packages/trollius/test_utils.py deleted file mode 100644 index ebebb25c..00000000 --- a/.local/lib/python2.7/site-packages/trollius/test_utils.py +++ /dev/null @@ -1,563 +0,0 @@ -"""Utilities shared by tests.""" - -import collections -import contextlib -import io -import logging -import os -import re -import socket -import sys -import tempfile -import threading -import time - -from wsgiref.simple_server import WSGIRequestHandler, WSGIServer - -import six - -try: - import socketserver - from http.server import HTTPServer -except ImportError: - # Python 2 - import SocketServer as socketserver - from BaseHTTPServer import HTTPServer - -try: - from unittest import mock -except ImportError: - # Python < 3.3 - import mock - -try: - import ssl - from .py3_ssl import SSLContext, wrap_socket -except ImportError: # pragma: no cover - # SSL support disabled in Python - ssl = None - -from . import base_events -from . import compat -from . import events -from . import futures -from . import selectors -from . import tasks -from .coroutines import coroutine -from .log import logger - - -if sys.platform == 'win32': # pragma: no cover - from .windows_utils import socketpair -else: - from socket import socketpair # pragma: no cover - -try: - # Prefer unittest2 if available (on Python 2) - import unittest2 as unittest -except ImportError: - import unittest - -skipIf = unittest.skipIf -skipUnless = unittest.skipUnless -SkipTest = unittest.SkipTest - - -if not hasattr(unittest.TestCase, 'assertRaisesRegex'): - class _BaseTestCaseContext: - - def __init__(self, test_case): - self.test_case = test_case - - def _raiseFailure(self, standardMsg): - msg = self.test_case._formatMessage(self.msg, standardMsg) - raise self.test_case.failureException(msg) - - - class _AssertRaisesBaseContext(_BaseTestCaseContext): - - def __init__(self, expected, test_case, callable_obj=None, - expected_regex=None): - _BaseTestCaseContext.__init__(self, test_case) - self.expected = expected - self.test_case = test_case - if callable_obj is not None: - try: - self.obj_name = callable_obj.__name__ - except AttributeError: - self.obj_name = str(callable_obj) - else: - self.obj_name = None - if isinstance(expected_regex, (bytes, str)): - expected_regex = re.compile(expected_regex) - self.expected_regex = expected_regex - self.msg = None - - def handle(self, name, callable_obj, args, kwargs): - """ - If callable_obj is None, assertRaises/Warns is being used as a - context manager, so check for a 'msg' kwarg and return self. - If callable_obj is not None, call it passing args and kwargs. - """ - if callable_obj is None: - self.msg = kwargs.pop('msg', None) - return self - with self: - callable_obj(*args, **kwargs) - - - class _AssertRaisesContext(_AssertRaisesBaseContext): - """A context manager used to implement TestCase.assertRaises* methods.""" - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_value, tb): - if exc_type is None: - try: - exc_name = self.expected.__name__ - except AttributeError: - exc_name = str(self.expected) - if self.obj_name: - self._raiseFailure("{0} not raised by {1}".format(exc_name, - self.obj_name)) - else: - self._raiseFailure("{0} not raised".format(exc_name)) - if not issubclass(exc_type, self.expected): - # let unexpected exceptions pass through - return False - self.exception = exc_value - if self.expected_regex is None: - return True - - expected_regex = self.expected_regex - if not expected_regex.search(str(exc_value)): - self._raiseFailure('"{0}" does not match "{1}"'.format( - expected_regex.pattern, str(exc_value))) - return True - - -def dummy_ssl_context(): - if ssl is None: - return None - else: - return SSLContext(ssl.PROTOCOL_SSLv23) - - -def run_briefly(loop, steps=1): - @coroutine - def once(): - pass - for step in range(steps): - gen = once() - t = loop.create_task(gen) - # Don't log a warning if the task is not done after run_until_complete(). - # It occurs if the loop is stopped or if a task raises a BaseException. - t._log_destroy_pending = False - try: - loop.run_until_complete(t) - finally: - gen.close() - - -def run_until(loop, pred, timeout=30): - deadline = time.time() + timeout - while not pred(): - if timeout is not None: - timeout = deadline - time.time() - if timeout <= 0: - raise futures.TimeoutError() - loop.run_until_complete(tasks.sleep(0.001, loop=loop)) - - -def run_once(loop): - """loop.stop() schedules _raise_stop_error() - and run_forever() runs until _raise_stop_error() callback. - this wont work if test waits for some IO events, because - _raise_stop_error() runs before any of io events callbacks. - """ - loop.stop() - loop.run_forever() - - -class SilentWSGIRequestHandler(WSGIRequestHandler): - - def get_stderr(self): - return io.StringIO() - - def log_message(self, format, *args): - pass - - -class SilentWSGIServer(WSGIServer, object): - - request_timeout = 2 - - def get_request(self): - request, client_addr = super(SilentWSGIServer, self).get_request() - request.settimeout(self.request_timeout) - return request, client_addr - - def handle_error(self, request, client_address): - pass - - -class SSLWSGIServerMixin: - - def finish_request(self, request, client_address): - # The relative location of our test directory (which - # contains the ssl key and certificate files) differs - # between the stdlib and stand-alone asyncio. - # Prefer our own if we can find it. - here = os.path.join(os.path.dirname(__file__), '..', 'tests') - if not os.path.isdir(here): - here = os.path.join(os.path.dirname(os.__file__), - 'test', 'test_asyncio') - keyfile = os.path.join(here, 'ssl_key.pem') - certfile = os.path.join(here, 'ssl_cert.pem') - ssock = wrap_socket(request, - keyfile=keyfile, - certfile=certfile, - server_side=True) - try: - self.RequestHandlerClass(ssock, client_address, self) - ssock.close() - except OSError: - # maybe socket has been closed by peer - pass - - -class SSLWSGIServer(SSLWSGIServerMixin, SilentWSGIServer): - pass - - -def _run_test_server(address, use_ssl, server_cls, server_ssl_cls): - - def app(environ, start_response): - status = '200 OK' - headers = [('Content-type', 'text/plain')] - start_response(status, headers) - return [b'Test message'] - - # Run the test WSGI server in a separate thread in order not to - # interfere with event handling in the main thread - server_class = server_ssl_cls if use_ssl else server_cls - httpd = server_class(address, SilentWSGIRequestHandler) - httpd.set_app(app) - httpd.address = httpd.server_address - server_thread = threading.Thread( - target=lambda: httpd.serve_forever(poll_interval=0.05)) - server_thread.start() - try: - yield httpd - finally: - httpd.shutdown() - httpd.server_close() - server_thread.join() - - -if hasattr(socket, 'AF_UNIX'): - - class UnixHTTPServer(socketserver.UnixStreamServer, HTTPServer, object): - - def server_bind(self): - socketserver.UnixStreamServer.server_bind(self) - self.server_name = '127.0.0.1' - self.server_port = 80 - - - class UnixWSGIServer(UnixHTTPServer, WSGIServer, object): - - request_timeout = 2 - - def server_bind(self): - UnixHTTPServer.server_bind(self) - self.setup_environ() - - def get_request(self): - request, client_addr = super(UnixWSGIServer, self).get_request() - request.settimeout(self.request_timeout) - # Code in the stdlib expects that get_request - # will return a socket and a tuple (host, port). - # However, this isn't true for UNIX sockets, - # as the second return value will be a path; - # hence we return some fake data sufficient - # to get the tests going - return request, ('127.0.0.1', '') - - - class SilentUnixWSGIServer(UnixWSGIServer): - - def handle_error(self, request, client_address): - pass - - - class UnixSSLWSGIServer(SSLWSGIServerMixin, SilentUnixWSGIServer): - pass - - - def gen_unix_socket_path(): - with tempfile.NamedTemporaryFile() as file: - return file.name - - - @contextlib.contextmanager - def unix_socket_path(): - path = gen_unix_socket_path() - try: - yield path - finally: - try: - os.unlink(path) - except OSError: - pass - - - @contextlib.contextmanager - def run_test_unix_server(use_ssl=False): - with unix_socket_path() as path: - for item in _run_test_server(address=path, use_ssl=use_ssl, - server_cls=SilentUnixWSGIServer, - server_ssl_cls=UnixSSLWSGIServer): - yield item - - -@contextlib.contextmanager -def run_test_server(host='127.0.0.1', port=0, use_ssl=False): - for item in _run_test_server(address=(host, port), use_ssl=use_ssl, - server_cls=SilentWSGIServer, - server_ssl_cls=SSLWSGIServer): - yield item - - -def make_test_protocol(base): - dct = {} - for name in dir(base): - if name.startswith('__') and name.endswith('__'): - # skip magic names - continue - dct[name] = MockCallback(return_value=None) - return type('TestProtocol', (base,) + base.__bases__, dct)() - - -class TestSelector(selectors.BaseSelector): - - def __init__(self): - self.keys = {} - - def register(self, fileobj, events, data=None): - key = selectors.SelectorKey(fileobj, 0, events, data) - self.keys[fileobj] = key - return key - - def unregister(self, fileobj): - return self.keys.pop(fileobj) - - def select(self, timeout): - return [] - - def get_map(self): - return self.keys - - -class TestLoop(base_events.BaseEventLoop): - """Loop for unittests. - - It manages self time directly. - If something scheduled to be executed later then - on next loop iteration after all ready handlers done - generator passed to __init__ is calling. - - Generator should be like this: - - def gen(): - ... - when = yield ... - ... = yield time_advance - - Value returned by yield is absolute time of next scheduled handler. - Value passed to yield is time advance to move loop's time forward. - """ - - def __init__(self, gen=None): - super(TestLoop, self).__init__() - - if gen is None: - def gen(): - yield - self._check_on_close = False - else: - self._check_on_close = True - - self._gen = gen() - next(self._gen) - self._time = 0 - self._clock_resolution = 1e-9 - self._timers = [] - self._selector = TestSelector() - - self.readers = {} - self.writers = {} - self.reset_counters() - - def time(self): - return self._time - - def advance_time(self, advance): - """Move test time forward.""" - if advance: - self._time += advance - - def close(self): - super(TestLoop, self).close() - if self._check_on_close: - try: - self._gen.send(0) - except StopIteration: - pass - else: # pragma: no cover - raise AssertionError("Time generator is not finished") - - def add_reader(self, fd, callback, *args): - self.readers[fd] = events.Handle(callback, args, self) - - def remove_reader(self, fd): - self.remove_reader_count[fd] += 1 - if fd in self.readers: - del self.readers[fd] - return True - else: - return False - - def assert_reader(self, fd, callback, *args): - assert fd in self.readers, 'fd {0} is not registered'.format(fd) - handle = self.readers[fd] - assert handle._callback == callback, '{0!r} != {1!r}'.format( - handle._callback, callback) - assert handle._args == args, '{0!r} != {1!r}'.format( - handle._args, args) - - def add_writer(self, fd, callback, *args): - self.writers[fd] = events.Handle(callback, args, self) - - def remove_writer(self, fd): - self.remove_writer_count[fd] += 1 - if fd in self.writers: - del self.writers[fd] - return True - else: - return False - - def assert_writer(self, fd, callback, *args): - assert fd in self.writers, 'fd {0} is not registered'.format(fd) - handle = self.writers[fd] - assert handle._callback == callback, '{0!r} != {1!r}'.format( - handle._callback, callback) - assert handle._args == args, '{0!r} != {1!r}'.format( - handle._args, args) - - def reset_counters(self): - self.remove_reader_count = collections.defaultdict(int) - self.remove_writer_count = collections.defaultdict(int) - - def _run_once(self): - super(TestLoop, self)._run_once() - for when in self._timers: - advance = self._gen.send(when) - self.advance_time(advance) - self._timers = [] - - def call_at(self, when, callback, *args): - self._timers.append(when) - return super(TestLoop, self).call_at(when, callback, *args) - - def _process_events(self, event_list): - return - - def _write_to_self(self): - pass - - -def MockCallback(**kwargs): - return mock.Mock(spec=['__call__'], **kwargs) - - -class MockPattern(str): - """A regex based str with a fuzzy __eq__. - - Use this helper with 'mock.assert_called_with', or anywhere - where a regex comparison between strings is needed. - - For instance: - mock_call.assert_called_with(MockPattern('spam.*ham')) - """ - def __eq__(self, other): - return bool(re.search(str(self), other, re.S)) - - -def get_function_source(func): - source = events._get_function_source(func) - if source is None: - raise ValueError("unable to get the source of %r" % (func,)) - return source - - -class TestCase(unittest.TestCase): - def set_event_loop(self, loop, cleanup=True): - assert loop is not None - # ensure that the event loop is passed explicitly in asyncio - events.set_event_loop(None) - if cleanup: - self.addCleanup(loop.close) - - def new_test_loop(self, gen=None): - loop = TestLoop(gen) - self.set_event_loop(loop) - return loop - - def tearDown(self): - events.set_event_loop(None) - - # Detect CPython bug #23353: ensure that yield/yield-from is not used - # in an except block of a generator - if sys.exc_info()[0] == SkipTest: - if six.PY2: - sys.exc_clear() - else: - pass #self.assertEqual(sys.exc_info(), (None, None, None)) - - def check_soure_traceback(self, source_traceback, lineno_delta): - frame = sys._getframe(1) - filename = frame.f_code.co_filename - lineno = frame.f_lineno + lineno_delta - name = frame.f_code.co_name - self.assertIsInstance(source_traceback, list) - self.assertEqual(source_traceback[-1][:3], - (filename, - lineno, - name)) - - -@contextlib.contextmanager -def disable_logger(): - """Context manager to disable asyncio logger. - - For example, it can be used to ignore warnings in debug mode. - """ - old_level = logger.level - try: - logger.setLevel(logging.CRITICAL+1) - yield - finally: - logger.setLevel(old_level) - -def mock_nonblocking_socket(): - """Create a mock of a non-blocking socket.""" - sock = mock.Mock(socket.socket) - sock.gettimeout.return_value = 0.0 - return sock - - -def force_legacy_ssl_support(): - return mock.patch('trollius.sslproto._is_sslproto_available', - return_value=False) diff --git a/.local/lib/python2.7/site-packages/trollius/test_utils.pyc b/.local/lib/python2.7/site-packages/trollius/test_utils.pyc deleted file mode 100644 index 958657f404b850bd12bd74a281e7c6ea44b56806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24227 zcmd^HeUKc-Rqxqd?cJX4q|-?{>1@j$$san&(&@{N9b5j8PLieAI>~dgC2wrTb31c) zd$(VjnU!>QlyV^j2!s$wFeDU}P<#}DqAH}QB3~4w511qmobs zzu$W^vwJ5IhpOA;5B4;zp6;IR*RS7u{od<0lmF__z+3Kp?1hR+erxdmLvpEEVfl#$VV&XjX$K5xqTG+!{~LYiM=%4^bm(Ugm6zR#5V(tN)u_ow-iDVNgx zfGH28`L(9JR`PjM8#MJHQywz)b*8+|SP3-iO?kapveO5KO?g=I1ykE#>LaE+VyyFx zy`~UsG>Zc!{D!ft^w~{ajW?%_8brdOl{26Z!zUtO#N0=hp)GX{Vn@>f(l2o(u2m|VuFKGx-~03WEvpdG2WN&lcl)DTn7!`Z~R-0f1BiAXZ&r_-~r>` zZh|4{;*P9~2aRu=V4VqGZ)QR6+p~&?jK9P9$BlnyR`js(?=r!|CU{8N-knt(HvT=l zDL*1J1nKYO^ullC{c#fvn}tVBFd{>Mi*{v?J!bsfCU`6z9(DI-b&ne#2z*?i-J6vj zF+Pw82#yE@`?89o#^2AI@}voJW&s#IAay{-@uVa;Vf=$c$u$%{LChsB4;lYH!`l1J z^}N)cH2&+Pw^PP{zyv$Y!W#sT2ea{>H2&*NaJyM}N-7@8Doz{!VR>}Q_=in!Myeml zs?Qq#QK^2~_?S2dWWTg{JZrH(1?z|u0anNON9CDm<4;QF9EH{N_zB9eTaY{xS8LU{ z8bo$9?}dSH&n($-5XI3%^}q3(8qc9oJc8u>^b@C?;9?tC@z{$NyING5VY3}q8$oB3 zT61m=lVsz|)yAQNo%tz{Ew38J8&K;-5!yLkH3}jpn8SQFq0~JJ(9Z!|llVWGXSRxy2p`^2(qyR`aE*H1o{bN0Qv&{ z$s87PoD7)$Dl%H0H*d<3oxWSpl1`7)kSWCLkaK67Vcm;Q2T=sDVs>AT=Hg-eKkHR% zAb{gnDnTo*HXGxtbT%RpLW^S1uNV5Kqd8|3g}uTEm&pxD7AF)S;ydCjjJ4GoXC}c~ z!>b3bE4<^n^`_sh;npD)Ib%pV07`CE*UcdX%eoMrVy={rw<6;n=^|=U@=6LON`-=L zWD*Jn?cyKk7+ba|J=a0U1=2BFSI9}}B_sX<3gVOuxZ*iuC3Fo^5NdEi3h2t1#gYkq zgAEn83u}b-i{|{rx+%ncqPDz9wFUS@Jt&8~Q8cK&(16+`1c&>$WZqPuj6yr?Sr{*T z7inT)kmY#nYJt)nc|JdsKDdsVlnU1aXhE8+k1Swtr3LX4_)44wG?;2O0*CTd>YFnQ zE|*y7_DCFu)tPo291p{0D0CaeDod+TwL#*n1R`~2mdIgbqcFfERqj=5+D$s98&cvZ z9TT}i=FT?e$nEhUpYv)pZw534K%9F}&>^VRr6p4A8C)XPOm5gJ;cw8&Tf^3nHJU3~ zo2?O)WR$>32_-PWf`fb(`%QQ^R{+966Q7~@@FP+C@PhUWy zbQb+1IvcRNey3*bZWP$n$mRm=vAZSrzVlw#h*&ohR2y@4JHl@0MYgxBtBP(|cHL`0 z>V$jjsA*T`gUX@}ab$b;PRO90_TptPoU6Y}k~(6U#cf2~3SDH|V-*wryL5a*{f-fRcF>B1i z5IF^{wZrJ&(}A!FVIVYE*VRCw;h^Y7_V=l1GjQ=>7=NBBeJyYP&SUYzYr?qEW7K^RW8BT*@;QPiHP)Ie0S zt(@>`Q6Q@rqzaO33L+BDh3!C|j{+~O%*(a|T^noN80Xrm7S)d&9(LoUR@Rey$*bX6 zZddV4vMp9*+w0|)BLjgNuTbrbFm`kg5|eE@8?oK2w}x|L)<~`(`GRaigVva}Lh{I5 zUDt0`pnFZA6Xzi$9WLsD0NRTI>bO(@S=7ENxRoCfDO|+Gg_e}iC_D;ac%Yezlc+k= zEJ!SX0^8=1L{Uv8sg#g#&N^q#otZrIlnb-#(!oQ$oR?Tde!E^@ash{%2)?%wEYc8H zr;w{~g3H7OECQLRMezxSgFSHNoQc7`!p+BCIAN};Wnd^i$fr;PRBv0uX@ei#f_Z6! zR0;o52%HCgs81B>C9y7Cyv?vgZL6sa-IS}-xI{mfdX`MBK-22efN)(CD&M;}IB{Zf z|wj%wi~d| zumap;VpS_EwI&QhVqV6sHJdFNCW?brO)8OqS=y!fox0q7Ox0;D{49<&67kuWV%)y0ho84;GLDiSmI zU+@3QXHU8E4T^0hHkE=2_wBYkBG)2Ia5}{ zVh+rUHrTn9<)Sa41&MAVikq$RU3LWhnHFzktFi2|+zn_QjqehjSrlmy2=+9%dQfTu zuE-YJzS%>f?a#npp^9=m52gMx6n7-yqFtR850`z}tHzP2?Gaoc_Ng1^yoOHVv#q!P|c*qB&N=R)Kuy&%(zW$Z_{9FQ{R zmylNnL~+0pJAWGXWFx-Ow^t!F{1LvRxV|M%RZ0o`U#MXK88V#EK)Oj$$cdg%Z3-bz z!ysveT+eT)Oh=AeEf@hzymbOBY)b4WU%NN!c(ah|~dze*s87x5BNLU*V~-Mu$b zjg3~{l95#9>_nV!8F)?Nita}O0-_QCi2?}?9ov}aVLym|0L=h0n^H#90P!B>=-NqX zjk|=3)pjcgoicBUTT(%&-fYp4p%JIDmC905^Q z6roD}7v*9ILnB^R2z3`+0=>8>Hn^C@I6j4rj6+k9@ii-dwP=>M3-_QL&CnZ|ED!fu z(JYi?+dkje02_TkZ1m65Mwf$F%0Ea|ZE2xkgc~Z`p+^FgY~3reD_vkzE3z*%~Ojv zITqnO17ri&73_)c#Y)0EmN(x+W!VBZlJC?^eW}FO&syhw?Fsw}Vb5;*CD-B53uuuz zo5Z9hxOrUD1etIHWLP>75_8A^SZt*tHUOptk%H1`u?D9^E*{*!-#+uCFsFDv8}VLx zdBkhWquPC~nuk*gF=D{xa8Ankn;bO0)>Gqv#^|{h5gRlvRYR!dBxxLbgxry%RkVxM!x#%xS^f87Mpl#F*iEJ0O$PtrY_78ig{>BN^=U!7DAEbSXQ~aq z`(Ae6u6?_Oqt2e&cg{O8fj(d)(Uf`qxN_TL6Qv7edLT@kcc9xfgn_GqZI9B8nCqyR zH?FabHoEU&ZNAx2QpZYKw(dMQ({-l;hegMKYAIQ=*le7f5E4AWQzC`pHhe8Ah`&AS zvw^tbCS|}Kt6}i@c{TXh=L(8;UO|~|P0J`<%PDG|H!^vZ$@5HJU_zUuWAZto@V&?~ zT)iL}j=Y&@p&T{P;D-BFoJ|NwvTOoo2N21vs$dgj45iQ%X(koK&#cD&YmxG67)lg7 zq(%`}T(K_t#N7>O_gE$sOjdWIGwAV7PL!N#ZjcnL?hM@nME^Jj*q)9LNkP;3jR5iG(#_3Iswzo*@a@&jz}?V*;$uWB?+N(oOj^ZqiI16@}%(^W33Iju+DuTRbCZk%uo=O>v!vDA~? zb^~7iMdu>!RYET^hpPvoNcQ=ali$zDa~p$JBYF%DW4dKG^)5lf6Ubogx$qCtL3d?> zv!?=rRB!-U4Z|H)2Tqo*nZmIbaL|s59ME-f!kq6S5enxi(G8uqBI|rVlOI5$MVL-=hf-wG1?JGuRV$3+ z&%=o#xT1=txPBiS;OYf|iFb9m)_j}@BQKfUt%9yhDTWEG6r}TAZ{N zq*)&wtW=1E8Zdar%%Q*mHDJM@nxWTpLt!I96}*U1@3mP9fai!6)gQ!RL?+}VRJ)7t zfT~mgA_Xslvmj}h&-(#N+5imI8fDfEB6JWBfSI5{RXOv)jo zqN-~I>#y(@S1$;hm~A&w@V%}jOu;543Frl6<~kIHyKW%Q@K(y0tgb3Tgd%JdfyLmJ zjK&C9dI^A}0L5*JQdTRSNRG~`Uct!0d6HK5T5uz#Ku(SK6NHYdnT(81uD~L5%sJWY!yhNHQ37on$r` zf4yWzC=zKUL|?(22)l$YK=(j^9^cs+kdTE_j2dKkGG6LI+_B9=OdER=NU64@ArYr$ z5xC5_Qbrf20T{lGXw;d&4z2_h#Hagq4Z%jC9nS|1>9^Ui8}I#z|ilVZb%RodHM!{u5d2XujF5Azm`D zYt_X7fK;Q0bczh__Jdg)J&*5tNT6d8e-jhS!=o<)eESi5sT!cGm6f>9>WC(s<6dI? zy^iuMBN{O)hH&evQQ8YY_GY4H4MC8RrMOG#ml1QmHFJZ1g z@6Jd&MwAFb$$jl66RdfVfG|G|1#B=YPRFU>U{_?!Ene-@0}G2=12@by1}{YLOi=Pv zc61}{lSo-eXr2thYbffv3lbLf$Q_^*9>RgAU@meoHrQ5Xxl3bwP%bArXiNTmlEgpl934B2P9*FW?t(084!siG0$4Y8CZR!6{S8 zNI371{N<3WrfzWb0%==mBJzpHA+mW=zB`A&ZvqbdQ!qwC-dGp`=$iO|qJSR-P?GriY$K#m&S7 zxIJ&eX@i%!fdPcj@LW>tCcK8tbN`~8`%ltQadFyQz|&H& z$GxT_?;$A}#I6U{fv<{zxLk$Fj^SbFV@!UHAaVu~tRy`uMzq|ibdwP;`Vo004J@Q5 z@}#z2zUUw^06#&@uER(me2{qF+61CU@G_@OaCtp}E3%OQ$JF&j%LhVXMiQ;Kg^KTY zlt@0S+B$W-lk#Sa^9f|twLyj!qjT05J%ziYSc$vY1eYeO%H(3M;%pCcijwDNZ^Aa5 z=_D>O=r}Lo7jV@WNalh3VN8;xmRT&CaDS3V;Uk#KG|UkVQzx5D>3hKJP~tDbfcsuD zv`RNYheH7?;dI{U^b8k-gm>h{BM*8#BGt4UrQN{C1?+yAzHp=c}pqJS_+AgxTYiu zchC`p3O?=jhjM7O1s_;gp}3u7JY)8Se; zpJqbRboLW;VzEV&hjtXnlKjti45j*XlDD_c6B!b8p{k#rbx z#aw$eP0||KP&fS#eJ9vZhfdg#Ncc{&p#t;K|5t1%IM3M7`6DjDXGx5i+h+wae!Cb? z7vmE*Wjquv4@Dq{DC5y(EqeoFpJa#VlqA6jd|F=w6^9p`sq}kbr;p?wmY&zH#eTIC zi(d<2HO^=7i1VjNdap?SCPw)bXHBVM(zhNcXn9TIil&iZZYvG3E4mNn&9N8mrt_Lx zfM{9RFMtyseV{}lFL7&K+-A-vW)|Gl9fg4=LB}*v!JLNlJ0E8y)hFk7nEW;p^&g5J zL6B(yJHN$pTs=@8oWDf3pCN)MzPMEm14$chB8|C2=r*W6QBE4ffJH?q_AzdBsRH%3 zED{(?{wP}8v(zA4PC?4`afI==3FZrpU~ zy85dQj8o&J=Psw>!@Ly(eG_xE_JsIFZFl~Fw|~gwkD2@llg}~vGbZF{p<0LQ=ll(m zFCgilUvjIeVmq{W7C9jsnc{|GZg4Yvk!wl=Nc-`pX`$3tDkQIg65}Lj&Mg{6qT& z;T-v_zDQg_wfs20qqrj4*a2Lp;cZwZm~Z2CN1G>Wwr9__ zUwUZ?4#nW2>n1+LXCieM+VepT?|o>?o%{w-@@~DLCxD`bE_Uv*`R#_r5(H(a9!trg zYaLO(HxyPQI6G&8_;LV;B8G>@Qa%^a2m(KVi%z_dC(u*+5s%C-$#G@Cn+!hQg_!Z3 zQOm1O?4I}PJ9p`;Z<#pZ=08bP>_DPh4eX0Va)K1#;6tE+ydeOonw|ylDOvcLX0ztp zg*)dyCfiv~^ecXatwqIe!rR-c7g
oR@0LmeuzJBJ0r*Z%;}I@H+%X8a-s_#%NI z*A)8`uL)@_k4q4JKQhX2+?=pm3zmI#tR9dPWnn=a9gm_~eIi%~Md_5dL)r~~cZIH9 z9Fx$K4!3(dtOR^z@a|BjPIlE7d3lsF+ir;FgXj}B)T3eUtKvjf&j-PjRh7naP$Z2z z7+Y0-79;&8u>C9XN9Y+8GiZ(S>pOa^G6@!~u!28AdlXl65Q%a*KA#3WUdI72^c?7b zdKe7nlO6`+3^*?b9&!du8Ww*GSB9O*>KsM}$mVjCOf*7j#tJ~0fLV<~Y8J4r!v{s* z5VeBei$H1WxFYpW={F5z7ZHtH)`IRH`dO208SePhJu+DfyhghvTTDmE()V;l3(@)> zt%LI~0PO1>q>to=a1<{RVi{_-p&1Al*df)bjtNQ?HJnIEg#&RZyOMO=HJ_8LIF6)8 z6A}MjBe<*q20ZVu084U&Os{f`i@@<2-;6ADqlxxr|7RmLj2Ie%+$lm`z?#U97fvT8K{3qIyOCKl|Ll z^dlPZ@#AY5JvT%Iuoxp9LqvU%7*l6fxNDphCEGPL&i#kQy6IJ&X%ITfdF9D0?2-c<3S>lpZWLJbiU#G1lJDZr=- zfrfx;yPgK!Y{oEpzC=h7dy@jXfeSr?T9vYVqhJ`uRUUsg9JC)os}4asU*+xBne>C1 zI?OD&Rox<-f5s?ZOGQ)B8tlVC``QW$g^fjoBOh^dSAx8XK*?>A7cB<7j9p+01vF@k z!ISzDq)0E8c75L~L?_8tnbPlYafkJ*k!-ff`-V72<@X!A^s?ZJ$IoEw;g_{49(B3S zH<;!ce3>6-tqoP{8aQ5_Y0u$A)(`abRh-tz*Q)3!7J8{+kEjV>V#9b!Zb+~k8vRJc zq;u-rsmUWxiFgnuXx4mJ9_*~hsxF2YQVBNraS&i(TP7`vdWccVWs5_pDAHmFX9Z5z zZB(`ktP+-m?4ReGBgiBQ`A$BB!vdUudq5Jte+G@l!(mTj?+gz-F?*;w{Fdj$9Gc2c z9awqfoxepQB0$^7{tD5+^Kg9L!udH=E569xy?mXLmWQb4fII~}3H;qnoRRxYZUjtM zVU9n7G>I#sL7GWd(koGxnq%^^TKcKX3B0%@adZ=IHR3x?a^rfJ@LfpKtWH=k!$e36 zVaJtuJ^esY7x%6%t!zc#h%%@IAjvteqF?NZ+AT(d9v}udU4F5rL#*S^pu`b9{m+q; z#Y?{NgYSkq&$4zcWPyY*tI@HZx7-Ds_b|E6gjQ`#v3EI|LvYIML?mBAgW=CtzZ_H; z2ag%&Kbib65)tuyIc_3pL(-MPQw$f^!DpBB=a*4LD%&mDzE+Ih=L7&8rrn0`23}tYA4p_L&Agl@dAs!Nvq--iu&Xha!RX zyOg(~)Y;4AQ6_I-@-&lkOt^T`FJcDaERatkI2G2knY^9Jk1%-$lUJEA9!f&2B{E&a zOS0a{XAqtDvc&-=KgHx{n0x? zxdD9ra@k*gJwhi?kMbcXYZ5q-AF(zLjM`&&l==pT2M0<6qouK-jbmel(%Aak9sRd$ j8Z9EfW@NBvjlf3T+*cYH+cb8mR2Us9^^M&%g7kj?oW=6p diff --git a/.local/lib/python2.7/site-packages/trollius/time_monotonic.py b/.local/lib/python2.7/site-packages/trollius/time_monotonic.py deleted file mode 100644 index e99364cc..00000000 --- a/.local/lib/python2.7/site-packages/trollius/time_monotonic.py +++ /dev/null @@ -1,192 +0,0 @@ -""" -Backport of time.monotonic() of Python 3.3 (PEP 418) for Python 2.7. - -- time_monotonic(). This clock may or may not be monotonic depending on the - operating system. -- time_monotonic_resolution: Resolution of time_monotonic() clock in second - -Support Windows, Mac OS X, Linux, FreeBSD, OpenBSD and Solaris, but requires -the ctypes module. -""" -import os -import sys -from .log import logger -from .py33_exceptions import get_error_class - -__all__ = ('time_monotonic',) - -# default implementation: system clock (non monotonic!) -from time import time as time_monotonic -# the worst resolution is 15.6 ms on Windows -time_monotonic_resolution = 0.050 - -if os.name == "nt": - # Windows: use GetTickCount64() or GetTickCount() - try: - import ctypes - from ctypes import windll - from ctypes.wintypes import DWORD - except ImportError: - logger.error("time_monotonic import error", exc_info=True) - else: - # GetTickCount64() requires Windows Vista, Server 2008 or later - if hasattr(windll.kernel32, 'GetTickCount64'): - ULONGLONG = ctypes.c_uint64 - - GetTickCount64 = windll.kernel32.GetTickCount64 - GetTickCount64.restype = ULONGLONG - GetTickCount64.argtypes = () - - def time_monotonic(): - return GetTickCount64() * 1e-3 - time_monotonic_resolution = 1e-3 - else: - GetTickCount = windll.kernel32.GetTickCount - GetTickCount.restype = DWORD - GetTickCount.argtypes = () - - # Detect GetTickCount() integer overflow (32 bits, roll-over after 49.7 - # days). It increases an internal epoch (reference time) by 2^32 each - # time that an overflow is detected. The epoch is stored in the - # process-local state and so the value of time_monotonic() may be - # different in two Python processes running for more than 49 days. - def time_monotonic(): - ticks = GetTickCount() - if ticks < time_monotonic.last: - # Integer overflow detected - time_monotonic.delta += 2**32 - time_monotonic.last = ticks - return (ticks + time_monotonic.delta) * 1e-3 - time_monotonic.last = 0 - time_monotonic.delta = 0 - time_monotonic_resolution = 1e-3 - -elif sys.platform == 'darwin': - # Mac OS X: use mach_absolute_time() and mach_timebase_info() - try: - import ctypes - import ctypes.util - libc_name = ctypes.util.find_library('c') - except ImportError: - logger.error("time_monotonic import error", exc_info=True) - libc_name = None - if libc_name: - libc = ctypes.CDLL(libc_name, use_errno=True) - - mach_absolute_time = libc.mach_absolute_time - mach_absolute_time.argtypes = () - mach_absolute_time.restype = ctypes.c_uint64 - - class mach_timebase_info_data_t(ctypes.Structure): - _fields_ = ( - ('numer', ctypes.c_uint32), - ('denom', ctypes.c_uint32), - ) - mach_timebase_info_data_p = ctypes.POINTER(mach_timebase_info_data_t) - - mach_timebase_info = libc.mach_timebase_info - mach_timebase_info.argtypes = (mach_timebase_info_data_p,) - mach_timebase_info.restype = ctypes.c_int - - def time_monotonic(): - return mach_absolute_time() * time_monotonic.factor - - timebase = mach_timebase_info_data_t() - mach_timebase_info(ctypes.byref(timebase)) - time_monotonic.factor = float(timebase.numer) / timebase.denom * 1e-9 - time_monotonic_resolution = time_monotonic.factor - del timebase - -elif sys.platform.startswith(("linux", "freebsd", "openbsd", "sunos")): - # Linux, FreeBSD, OpenBSD: use clock_gettime(CLOCK_MONOTONIC) - # Solaris: use clock_gettime(CLOCK_HIGHRES) - - library = None - try: - import ctypes - import ctypes.util - except ImportError: - logger.error("time_monotonic import error", exc_info=True) - libraries = () - else: - if sys.platform.startswith(("freebsd", "openbsd")): - libraries = ('c',) - elif sys.platform.startswith("linux"): - # Linux: in glibc 2.17+, clock_gettime() is provided by the libc, - # on older versions, it is provided by librt - libraries = ('c', 'rt') - else: - # Solaris - libraries = ('rt',) - - for name in libraries: - filename = ctypes.util.find_library(name) - if not filename: - continue - library = ctypes.CDLL(filename, use_errno=True) - if not hasattr(library, 'clock_gettime'): - library = None - - if library is not None: - if sys.platform.startswith("openbsd"): - import platform - release = platform.release() - release = tuple(map(int, release.split('.'))) - if release >= (5, 5): - time_t = ctypes.c_int64 - else: - time_t = ctypes.c_int32 - else: - time_t = ctypes.c_long - clockid_t = ctypes.c_int - - class timespec(ctypes.Structure): - _fields_ = ( - ('tv_sec', time_t), - ('tv_nsec', ctypes.c_long), - ) - timespec_p = ctypes.POINTER(timespec) - - clock_gettime = library.clock_gettime - clock_gettime.argtypes = (clockid_t, timespec_p) - clock_gettime.restype = ctypes.c_int - - def ctypes_oserror(): - errno = ctypes.get_errno() - message = os.strerror(errno) - error_class = get_error_class(errno, OSError) - return error_class(errno, message) - - def time_monotonic(): - ts = timespec() - err = clock_gettime(time_monotonic.clk_id, ctypes.byref(ts)) - if err: - raise ctypes_oserror() - return ts.tv_sec + ts.tv_nsec * 1e-9 - - if sys.platform.startswith("linux"): - time_monotonic.clk_id = 1 # CLOCK_MONOTONIC - elif sys.platform.startswith("freebsd"): - time_monotonic.clk_id = 4 # CLOCK_MONOTONIC - elif sys.platform.startswith("openbsd"): - time_monotonic.clk_id = 3 # CLOCK_MONOTONIC - else: - assert sys.platform.startswith("sunos") - time_monotonic.clk_id = 4 # CLOCK_HIGHRES - - def get_resolution(): - _clock_getres = library.clock_getres - _clock_getres.argtypes = (clockid_t, timespec_p) - _clock_getres.restype = ctypes.c_int - - ts = timespec() - err = _clock_getres(time_monotonic.clk_id, ctypes.byref(ts)) - if err: - raise ctypes_oserror() - return ts.tv_sec + ts.tv_nsec * 1e-9 - time_monotonic_resolution = get_resolution() - del get_resolution - -else: - logger.error("time_monotonic: unspported platform %r", sys.platform) - diff --git a/.local/lib/python2.7/site-packages/trollius/time_monotonic.pyc b/.local/lib/python2.7/site-packages/trollius/time_monotonic.pyc deleted file mode 100644 index 7ade36f6d16764ddf1378e5e52ad041d19860c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5501 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 tV)vIutTF7ye!Q= low >= 0: - raise ValueError('high (%r) must be >= low (%r) must be >= 0' % - (high, low)) - self._high_water = high - self._low_water = low - - def set_write_buffer_limits(self, high=None, low=None): - self._set_write_buffer_limits(high=high, low=low) - self._maybe_pause_protocol() - - def get_write_buffer_size(self): - raise NotImplementedError diff --git a/.local/lib/python2.7/site-packages/trollius/transports.pyc b/.local/lib/python2.7/site-packages/trollius/transports.pyc deleted file mode 100644 index d8c67c699e1ca54ba5b2c6121364522345f9510c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13836 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 QKYIDO%QrrL8Na{ypB$g|ZU6uP diff --git a/.local/lib/python2.7/site-packages/trollius/unix_events.py b/.local/lib/python2.7/site-packages/trollius/unix_events.py deleted file mode 100644 index cdefacad..00000000 --- a/.local/lib/python2.7/site-packages/trollius/unix_events.py +++ /dev/null @@ -1,1034 +0,0 @@ -"""Selector event loop for Unix with signal handling.""" -from __future__ import absolute_import - -import errno -import os -import signal -import socket -import stat -import subprocess -import sys -import threading -import warnings - - -from . import base_events -from . import base_subprocess -from . import compat -from . import constants -from . import coroutines -from . import events -from . import futures -from . import selector_events -from . import selectors -from . import transports -from .compat import flatten_bytes -from .coroutines import coroutine, From, Return -from .log import logger -from .py33_exceptions import ( - reraise, wrap_error, - BlockingIOError, BrokenPipeError, ConnectionResetError, - InterruptedError, ChildProcessError) - - -__all__ = ['SelectorEventLoop', - 'AbstractChildWatcher', 'SafeChildWatcher', - 'FastChildWatcher', 'DefaultEventLoopPolicy', - ] - -if sys.platform == 'win32': # pragma: no cover - raise ImportError('Signals are not really supported on Windows') - - -if compat.PY33: - def _sighandler_noop(signum, frame): - """Dummy signal handler.""" - pass - - -class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop): - """Unix event loop. - - Adds signal handling and UNIX Domain Socket support to SelectorEventLoop. - """ - - def __init__(self, selector=None): - super(_UnixSelectorEventLoop, self).__init__(selector) - self._signal_handlers = {} - - def _socketpair(self): - return socket.socketpair() - - def close(self): - super(_UnixSelectorEventLoop, self).close() - for sig in list(self._signal_handlers): - self.remove_signal_handler(sig) - - # On Python <= 3.2, the C signal handler of Python writes a null byte into - # the wakeup file descriptor. We cannot retrieve the signal numbers from - # the file descriptor. - if compat.PY33: - def _process_self_data(self, data): - for signum in data: - if not signum: - # ignore null bytes written by _write_to_self() - continue - self._handle_signal(signum) - - def add_signal_handler(self, sig, callback, *args): - """Add a handler for a signal. UNIX only. - - Raise ValueError if the signal number is invalid or uncatchable. - Raise RuntimeError if there is a problem setting up the handler. - """ - if (coroutines.iscoroutine(callback) - or coroutines.iscoroutinefunction(callback)): - raise TypeError("coroutines cannot be used " - "with add_signal_handler()") - self._check_signal(sig) - self._check_closed() - try: - # set_wakeup_fd() raises ValueError if this is not the - # main thread. By calling it early we ensure that an - # event loop running in another thread cannot add a signal - # handler. - signal.set_wakeup_fd(self._csock.fileno()) - except (ValueError, OSError) as exc: - raise RuntimeError(str(exc)) - - handle = events.Handle(callback, args, self) - self._signal_handlers[sig] = handle - - try: - if compat.PY33: - # On Python 3.3 and newer, the C signal handler writes the - # signal number into the wakeup file descriptor and then calls - # Py_AddPendingCall() to schedule the Python signal handler. - # - # Register a dummy signal handler to ask Python to write the - # signal number into the wakup file descriptor. - # _process_self_data() will read signal numbers from this file - # descriptor to handle signals. - signal.signal(sig, _sighandler_noop) - else: - # On Python 3.2 and older, the C signal handler first calls - # Py_AddPendingCall() to schedule the Python signal handler, - # and then write a null byte into the wakeup file descriptor. - signal.signal(sig, self._handle_signal) - - # Set SA_RESTART to limit EINTR occurrences. - signal.siginterrupt(sig, False) - except (RuntimeError, OSError) as exc: - # On Python 2, signal.signal(signal.SIGKILL, signal.SIG_IGN) raises - # RuntimeError(22, 'Invalid argument'). On Python 3, - # OSError(22, 'Invalid argument') is raised instead. - exc_type, exc_value, tb = sys.exc_info() - - del self._signal_handlers[sig] - if not self._signal_handlers: - try: - signal.set_wakeup_fd(-1) - except (ValueError, OSError) as nexc: - logger.info('set_wakeup_fd(-1) failed: %s', nexc) - - if isinstance(exc, RuntimeError) or exc.errno == errno.EINVAL: - raise RuntimeError('sig {0} cannot be caught'.format(sig)) - else: - reraise(exc_type, exc_value, tb) - - def _handle_signal(self, sig, frame=None): - """Internal helper that is the actual signal handler.""" - handle = self._signal_handlers.get(sig) - if handle is None: - return # Assume it's some race condition. - if handle._cancelled: - self.remove_signal_handler(sig) # Remove it properly. - else: - self._add_callback_signalsafe(handle) - - def remove_signal_handler(self, sig): - """Remove a handler for a signal. UNIX only. - - Return True if a signal handler was removed, False if not. - """ - self._check_signal(sig) - try: - del self._signal_handlers[sig] - except KeyError: - return False - - if sig == signal.SIGINT: - handler = signal.default_int_handler - else: - handler = signal.SIG_DFL - - try: - signal.signal(sig, handler) - except OSError as exc: - if exc.errno == errno.EINVAL: - raise RuntimeError('sig {0} cannot be caught'.format(sig)) - else: - raise - - if not self._signal_handlers: - try: - signal.set_wakeup_fd(-1) - except (ValueError, OSError) as exc: - logger.info('set_wakeup_fd(-1) failed: %s', exc) - - return True - - def _check_signal(self, sig): - """Internal helper to validate a signal. - - Raise ValueError if the signal number is invalid or uncatchable. - Raise RuntimeError if there is a problem setting up the handler. - """ - if not isinstance(sig, int): - raise TypeError('sig must be an int, not {0!r}'.format(sig)) - - if not (1 <= sig < signal.NSIG): - raise ValueError( - 'sig {0} out of range(1, {1})'.format(sig, signal.NSIG)) - - def _make_read_pipe_transport(self, pipe, protocol, waiter=None, - extra=None): - return _UnixReadPipeTransport(self, pipe, protocol, waiter, extra) - - def _make_write_pipe_transport(self, pipe, protocol, waiter=None, - extra=None): - return _UnixWritePipeTransport(self, pipe, protocol, waiter, extra) - - @coroutine - def _make_subprocess_transport(self, protocol, args, shell, - stdin, stdout, stderr, bufsize, - extra=None, **kwargs): - with events.get_child_watcher() as watcher: - waiter = futures.Future(loop=self) - transp = _UnixSubprocessTransport(self, protocol, args, shell, - stdin, stdout, stderr, bufsize, - waiter=waiter, extra=extra, - **kwargs) - - watcher.add_child_handler(transp.get_pid(), - self._child_watcher_callback, transp) - try: - yield From(waiter) - except Exception as exc: - # Workaround CPython bug #23353: using yield/yield-from in an - # except block of a generator doesn't clear properly - # sys.exc_info() - err = exc - else: - err = None - - if err is not None: - transp.close() - yield From(transp._wait()) - raise err - - raise Return(transp) - - def _child_watcher_callback(self, pid, returncode, transp): - self.call_soon_threadsafe(transp._process_exited, returncode) - - @coroutine - def create_unix_connection(self, protocol_factory, path, - ssl=None, sock=None, - server_hostname=None): - assert server_hostname is None or isinstance(server_hostname, str) - if ssl: - if server_hostname is None: - raise ValueError( - 'you have to pass server_hostname when using ssl') - else: - if server_hostname is not None: - raise ValueError('server_hostname is only meaningful with ssl') - - if path is not None: - if sock is not None: - raise ValueError( - 'path and sock can not be specified at the same time') - - sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM, 0) - try: - sock.setblocking(False) - yield From(self.sock_connect(sock, path)) - except: - sock.close() - raise - - else: - if sock is None: - raise ValueError('no path and sock were specified') - sock.setblocking(False) - - transport, protocol = yield From(self._create_connection_transport( - sock, protocol_factory, ssl, server_hostname)) - raise Return(transport, protocol) - - @coroutine - def create_unix_server(self, protocol_factory, path=None, - sock=None, backlog=100, ssl=None): - if isinstance(ssl, bool): - raise TypeError('ssl argument must be an SSLContext or None') - - if path is not None: - if sock is not None: - raise ValueError( - 'path and sock can not be specified at the same time') - - sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - - try: - sock.bind(path) - except socket.error as exc: - sock.close() - if exc.errno == errno.EADDRINUSE: - # Let's improve the error message by adding - # with what exact address it occurs. - msg = 'Address {0!r} is already in use'.format(path) - raise OSError(errno.EADDRINUSE, msg) - else: - raise - except: - sock.close() - raise - else: - if sock is None: - raise ValueError( - 'path was not specified, and no sock specified') - - if sock.family != socket.AF_UNIX: - raise ValueError( - 'A UNIX Domain Socket was expected, got {0!r}'.format(sock)) - - server = base_events.Server(self, [sock]) - sock.listen(backlog) - sock.setblocking(False) - self._start_serving(protocol_factory, sock, ssl, server) - return server - - -if hasattr(os, 'set_blocking'): - # Python 3.5 and newer - def _set_nonblocking(fd): - os.set_blocking(fd, False) -else: - import fcntl - - def _set_nonblocking(fd): - flags = fcntl.fcntl(fd, fcntl.F_GETFL) - flags = flags | os.O_NONBLOCK - fcntl.fcntl(fd, fcntl.F_SETFL, flags) - - -class _UnixReadPipeTransport(transports.ReadTransport): - - max_size = 256 * 1024 # max bytes we read in one event loop iteration - - def __init__(self, loop, pipe, protocol, waiter=None, extra=None): - super(_UnixReadPipeTransport, self).__init__(extra) - self._extra['pipe'] = pipe - self._loop = loop - self._pipe = pipe - self._fileno = pipe.fileno() - mode = os.fstat(self._fileno).st_mode - if not (stat.S_ISFIFO(mode) or - stat.S_ISSOCK(mode) or - stat.S_ISCHR(mode)): - raise ValueError("Pipe transport is for pipes/sockets only.") - _set_nonblocking(self._fileno) - self._protocol = protocol - self._closing = False - self._loop.call_soon(self._protocol.connection_made, self) - # only start reading when connection_made() has been called - self._loop.call_soon(self._loop.add_reader, - self._fileno, self._read_ready) - if waiter is not None: - # only wake up the waiter when connection_made() has been called - self._loop.call_soon(waiter._set_result_unless_cancelled, None) - - def __repr__(self): - info = [self.__class__.__name__] - if self._pipe is None: - info.append('closed') - elif self._closing: - info.append('closing') - info.append('fd=%s' % self._fileno) - if self._pipe is not None: - polling = selector_events._test_selector_event( - self._loop._selector, - self._fileno, selectors.EVENT_READ) - if polling: - info.append('polling') - else: - info.append('idle') - else: - info.append('closed') - return '<%s>' % ' '.join(info) - - def _read_ready(self): - try: - data = wrap_error(os.read, self._fileno, self.max_size) - except (BlockingIOError, InterruptedError): - pass - except OSError as exc: - self._fatal_error(exc, 'Fatal read error on pipe transport') - else: - if data: - self._protocol.data_received(data) - else: - if self._loop.get_debug(): - logger.info("%r was closed by peer", self) - self._closing = True - self._loop.remove_reader(self._fileno) - self._loop.call_soon(self._protocol.eof_received) - self._loop.call_soon(self._call_connection_lost, None) - - def pause_reading(self): - self._loop.remove_reader(self._fileno) - - def resume_reading(self): - self._loop.add_reader(self._fileno, self._read_ready) - - def close(self): - if not self._closing: - self._close(None) - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if self._pipe is not None: - warnings.warn("unclosed transport %r" % self, ResourceWarning) - self._pipe.close() - - def _fatal_error(self, exc, message='Fatal error on pipe transport'): - # should be called by exception handler only - if (isinstance(exc, OSError) and exc.errno == errno.EIO): - if self._loop.get_debug(): - logger.debug("%r: %s", self, message, exc_info=True) - else: - self._loop.call_exception_handler({ - 'message': message, - 'exception': exc, - 'transport': self, - 'protocol': self._protocol, - }) - self._close(exc) - - def _close(self, exc): - self._closing = True - self._loop.remove_reader(self._fileno) - self._loop.call_soon(self._call_connection_lost, exc) - - def _call_connection_lost(self, exc): - try: - self._protocol.connection_lost(exc) - finally: - self._pipe.close() - self._pipe = None - self._protocol = None - self._loop = None - - -class _UnixWritePipeTransport(transports._FlowControlMixin, - transports.WriteTransport): - - def __init__(self, loop, pipe, protocol, waiter=None, extra=None): - super(_UnixWritePipeTransport, self).__init__(extra, loop) - self._extra['pipe'] = pipe - self._pipe = pipe - self._fileno = pipe.fileno() - mode = os.fstat(self._fileno).st_mode - is_socket = stat.S_ISSOCK(mode) - if not (is_socket or - stat.S_ISFIFO(mode) or - stat.S_ISCHR(mode)): - raise ValueError("Pipe transport is only for " - "pipes, sockets and character devices") - _set_nonblocking(self._fileno) - self._protocol = protocol - self._buffer = [] - self._conn_lost = 0 - self._closing = False # Set when close() or write_eof() called. - - self._loop.call_soon(self._protocol.connection_made, self) - - # On AIX, the reader trick (to be notified when the read end of the - # socket is closed) only works for sockets. On other platforms it - # works for pipes and sockets. (Exception: OS X 10.4? Issue #19294.) - if is_socket or not sys.platform.startswith("aix"): - # only start reading when connection_made() has been called - self._loop.call_soon(self._loop.add_reader, - self._fileno, self._read_ready) - - if waiter is not None: - # only wake up the waiter when connection_made() has been called - self._loop.call_soon(waiter._set_result_unless_cancelled, None) - - def __repr__(self): - info = [self.__class__.__name__] - if self._pipe is None: - info.append('closed') - elif self._closing: - info.append('closing') - info.append('fd=%s' % self._fileno) - if self._pipe is not None: - polling = selector_events._test_selector_event( - self._loop._selector, - self._fileno, selectors.EVENT_WRITE) - if polling: - info.append('polling') - else: - info.append('idle') - - bufsize = self.get_write_buffer_size() - info.append('bufsize=%s' % bufsize) - else: - info.append('closed') - return '<%s>' % ' '.join(info) - - def get_write_buffer_size(self): - return sum(len(data) for data in self._buffer) - - def _read_ready(self): - # Pipe was closed by peer. - if self._loop.get_debug(): - logger.info("%r was closed by peer", self) - if self._buffer: - self._close(BrokenPipeError()) - else: - self._close() - - def write(self, data): - data = flatten_bytes(data) - if not data: - return - - if self._conn_lost or self._closing: - if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES: - logger.warning('pipe closed by peer or ' - 'os.write(pipe, data) raised exception.') - self._conn_lost += 1 - return - - if not self._buffer: - # Attempt to send it right away first. - try: - n = wrap_error(os.write, self._fileno, data) - except (BlockingIOError, InterruptedError): - n = 0 - except Exception as exc: - self._conn_lost += 1 - self._fatal_error(exc, 'Fatal write error on pipe transport') - return - if n == len(data): - return - elif n > 0: - data = data[n:] - self._loop.add_writer(self._fileno, self._write_ready) - - self._buffer.append(data) - self._maybe_pause_protocol() - - def _write_ready(self): - data = b''.join(self._buffer) - assert data, 'Data should not be empty' - - del self._buffer[:] - try: - n = wrap_error(os.write, self._fileno, data) - except (BlockingIOError, InterruptedError): - self._buffer.append(data) - except Exception as exc: - self._conn_lost += 1 - # Remove writer here, _fatal_error() doesn't it - # because _buffer is empty. - self._loop.remove_writer(self._fileno) - self._fatal_error(exc, 'Fatal write error on pipe transport') - else: - if n == len(data): - self._loop.remove_writer(self._fileno) - self._maybe_resume_protocol() # May append to buffer. - if not self._buffer and self._closing: - self._loop.remove_reader(self._fileno) - self._call_connection_lost(None) - return - elif n > 0: - data = data[n:] - - self._buffer.append(data) # Try again later. - - def can_write_eof(self): - return True - - def write_eof(self): - if self._closing: - return - assert self._pipe - self._closing = True - if not self._buffer: - self._loop.remove_reader(self._fileno) - self._loop.call_soon(self._call_connection_lost, None) - - def close(self): - if self._pipe is not None and not self._closing: - # write_eof is all what we needed to close the write pipe - self.write_eof() - - # On Python 3.3 and older, objects with a destructor part of a reference - # cycle are never destroyed. It's not more the case on Python 3.4 thanks - # to the PEP 442. - if compat.PY34: - def __del__(self): - if self._pipe is not None: - warnings.warn("unclosed transport %r" % self, ResourceWarning) - self._pipe.close() - - def abort(self): - self._close(None) - - def _fatal_error(self, exc, message='Fatal error on pipe transport'): - # should be called by exception handler only - if isinstance(exc, (BrokenPipeError, ConnectionResetError)): - if self._loop.get_debug(): - logger.debug("%r: %s", self, message, exc_info=True) - else: - self._loop.call_exception_handler({ - 'message': message, - 'exception': exc, - 'transport': self, - 'protocol': self._protocol, - }) - self._close(exc) - - def _close(self, exc=None): - self._closing = True - if self._buffer: - self._loop.remove_writer(self._fileno) - del self._buffer[:] - self._loop.remove_reader(self._fileno) - self._loop.call_soon(self._call_connection_lost, exc) - - def _call_connection_lost(self, exc): - try: - self._protocol.connection_lost(exc) - finally: - self._pipe.close() - self._pipe = None - self._protocol = None - self._loop = None - - -if hasattr(os, 'set_inheritable'): - # Python 3.4 and newer - _set_inheritable = os.set_inheritable -else: - import fcntl - - def _set_inheritable(fd, inheritable): - cloexec_flag = getattr(fcntl, 'FD_CLOEXEC', 1) - - old = fcntl.fcntl(fd, fcntl.F_GETFD) - if not inheritable: - fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag) - else: - fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag) - - -class _UnixSubprocessTransport(base_subprocess.BaseSubprocessTransport): - - def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs): - stdin_w = None - if stdin == subprocess.PIPE: - # Use a socket pair for stdin, since not all platforms - # support selecting read events on the write end of a - # socket (which we use in order to detect closing of the - # other end). Notably this is needed on AIX, and works - # just fine on other platforms. - stdin, stdin_w = self._loop._socketpair() - - # Mark the write end of the stdin pipe as non-inheritable, - # needed by close_fds=False on Python 3.3 and older - # (Python 3.4 implements the PEP 446, socketpair returns - # non-inheritable sockets) - _set_inheritable(stdin_w.fileno(), False) - self._proc = subprocess.Popen( - args, shell=shell, stdin=stdin, stdout=stdout, stderr=stderr, - universal_newlines=False, bufsize=bufsize, **kwargs) - if stdin_w is not None: - # Retrieve the file descriptor from stdin_w, stdin_w should not - # "own" the file descriptor anymore: closing stdin_fd file - # descriptor must close immediatly the file - stdin.close() - if hasattr(stdin_w, 'detach'): - stdin_fd = stdin_w.detach() - self._proc.stdin = os.fdopen(stdin_fd, 'wb', bufsize) - else: - stdin_dup = os.dup(stdin_w.fileno()) - stdin_w.close() - self._proc.stdin = os.fdopen(stdin_dup, 'wb', bufsize) - - -class AbstractChildWatcher(object): - """Abstract base class for monitoring child processes. - - Objects derived from this class monitor a collection of subprocesses and - report their termination or interruption by a signal. - - New callbacks are registered with .add_child_handler(). Starting a new - process must be done within a 'with' block to allow the watcher to suspend - its activity until the new process if fully registered (this is needed to - prevent a race condition in some implementations). - - Example: - with watcher: - proc = subprocess.Popen("sleep 1") - watcher.add_child_handler(proc.pid, callback) - - Notes: - Implementations of this class must be thread-safe. - - Since child watcher objects may catch the SIGCHLD signal and call - waitpid(-1), there should be only one active object per process. - """ - - def add_child_handler(self, pid, callback, *args): - """Register a new child handler. - - Arrange for callback(pid, returncode, *args) to be called when - process 'pid' terminates. Specifying another callback for the same - process replaces the previous handler. - - Note: callback() must be thread-safe. - """ - raise NotImplementedError() - - def remove_child_handler(self, pid): - """Removes the handler for process 'pid'. - - The function returns True if the handler was successfully removed, - False if there was nothing to remove.""" - - raise NotImplementedError() - - def attach_loop(self, loop): - """Attach the watcher to an event loop. - - If the watcher was previously attached to an event loop, then it is - first detached before attaching to the new loop. - - Note: loop may be None. - """ - raise NotImplementedError() - - def close(self): - """Close the watcher. - - This must be called to make sure that any underlying resource is freed. - """ - raise NotImplementedError() - - def __enter__(self): - """Enter the watcher's context and allow starting new processes - - This function must return self""" - raise NotImplementedError() - - def __exit__(self, a, b, c): - """Exit the watcher's context""" - raise NotImplementedError() - - -class BaseChildWatcher(AbstractChildWatcher): - - def __init__(self): - self._loop = None - - def close(self): - self.attach_loop(None) - - def _do_waitpid(self, expected_pid): - raise NotImplementedError() - - def _do_waitpid_all(self): - raise NotImplementedError() - - def attach_loop(self, loop): - assert loop is None or isinstance(loop, events.AbstractEventLoop) - - if self._loop is not None: - self._loop.remove_signal_handler(signal.SIGCHLD) - - self._loop = loop - if loop is not None: - loop.add_signal_handler(signal.SIGCHLD, self._sig_chld) - - # Prevent a race condition in case a child terminated - # during the switch. - self._do_waitpid_all() - - def _sig_chld(self): - try: - self._do_waitpid_all() - except Exception as exc: - # self._loop should always be available here - # as '_sig_chld' is added as a signal handler - # in 'attach_loop' - self._loop.call_exception_handler({ - 'message': 'Unknown exception in SIGCHLD handler', - 'exception': exc, - }) - - def _compute_returncode(self, status): - if os.WIFSIGNALED(status): - # The child process died because of a signal. - return -os.WTERMSIG(status) - elif os.WIFEXITED(status): - # The child process exited (e.g sys.exit()). - return os.WEXITSTATUS(status) - else: - # The child exited, but we don't understand its status. - # This shouldn't happen, but if it does, let's just - # return that status; perhaps that helps debug it. - return status - - -class SafeChildWatcher(BaseChildWatcher): - """'Safe' child watcher implementation. - - This implementation avoids disrupting other code spawning processes by - polling explicitly each process in the SIGCHLD handler instead of calling - os.waitpid(-1). - - This is a safe solution but it has a significant overhead when handling a - big number of children (O(n) each time SIGCHLD is raised) - """ - - def __init__(self): - super(SafeChildWatcher, self).__init__() - self._callbacks = {} - - def close(self): - self._callbacks.clear() - super(SafeChildWatcher, self).close() - - def __enter__(self): - return self - - def __exit__(self, a, b, c): - pass - - def add_child_handler(self, pid, callback, *args): - self._callbacks[pid] = (callback, args) - - # Prevent a race condition in case the child is already terminated. - self._do_waitpid(pid) - - def remove_child_handler(self, pid): - try: - del self._callbacks[pid] - return True - except KeyError: - return False - - def _do_waitpid_all(self): - - for pid in list(self._callbacks): - self._do_waitpid(pid) - - def _do_waitpid(self, expected_pid): - assert expected_pid > 0 - - try: - pid, status = os.waitpid(expected_pid, os.WNOHANG) - except ChildProcessError: - # The child process is already reaped - # (may happen if waitpid() is called elsewhere). - pid = expected_pid - returncode = 255 - logger.warning( - "Unknown child process pid %d, will report returncode 255", - pid) - else: - if pid == 0: - # The child process is still alive. - return - - returncode = self._compute_returncode(status) - if self._loop.get_debug(): - logger.debug('process %s exited with returncode %s', - expected_pid, returncode) - - try: - callback, args = self._callbacks.pop(pid) - except KeyError: # pragma: no cover - # May happen if .remove_child_handler() is called - # after os.waitpid() returns. - if self._loop.get_debug(): - logger.warning("Child watcher got an unexpected pid: %r", - pid, exc_info=True) - else: - callback(pid, returncode, *args) - - -class FastChildWatcher(BaseChildWatcher): - """'Fast' child watcher implementation. - - This implementation reaps every terminated processes by calling - os.waitpid(-1) directly, possibly breaking other code spawning processes - and waiting for their termination. - - There is no noticeable overhead when handling a big number of children - (O(1) each time a child terminates). - """ - def __init__(self): - super(FastChildWatcher, self).__init__() - self._callbacks = {} - self._lock = threading.Lock() - self._zombies = {} - self._forks = 0 - - def close(self): - self._callbacks.clear() - self._zombies.clear() - super(FastChildWatcher, self).close() - - def __enter__(self): - with self._lock: - self._forks += 1 - - return self - - def __exit__(self, a, b, c): - with self._lock: - self._forks -= 1 - - if self._forks or not self._zombies: - return - - collateral_victims = str(self._zombies) - self._zombies.clear() - - logger.warning( - "Caught subprocesses termination from unknown pids: %s", - collateral_victims) - - def add_child_handler(self, pid, callback, *args): - assert self._forks, "Must use the context manager" - with self._lock: - try: - returncode = self._zombies.pop(pid) - except KeyError: - # The child is running. - self._callbacks[pid] = callback, args - return - - # The child is dead already. We can fire the callback. - callback(pid, returncode, *args) - - def remove_child_handler(self, pid): - try: - del self._callbacks[pid] - return True - except KeyError: - return False - - def _do_waitpid_all(self): - # Because of signal coalescing, we must keep calling waitpid() as - # long as we're able to reap a child. - while True: - try: - pid, status = wrap_error(os.waitpid, -1, os.WNOHANG) - except ChildProcessError: - # No more child processes exist. - return - else: - if pid == 0: - # A child process is still alive. - return - - returncode = self._compute_returncode(status) - - with self._lock: - try: - callback, args = self._callbacks.pop(pid) - except KeyError: - # unknown child - if self._forks: - # It may not be registered yet. - self._zombies[pid] = returncode - if self._loop.get_debug(): - logger.debug('unknown process %s exited ' - 'with returncode %s', - pid, returncode) - continue - callback = None - else: - if self._loop.get_debug(): - logger.debug('process %s exited with returncode %s', - pid, returncode) - - if callback is None: - logger.warning( - "Caught subprocess termination from unknown pid: " - "%d -> %d", pid, returncode) - else: - callback(pid, returncode, *args) - - -class _UnixDefaultEventLoopPolicy(events.BaseDefaultEventLoopPolicy): - """UNIX event loop policy with a watcher for child processes.""" - _loop_factory = _UnixSelectorEventLoop - - def __init__(self): - super(_UnixDefaultEventLoopPolicy, self).__init__() - self._watcher = None - - def _init_watcher(self): - with events._lock: - if self._watcher is None: # pragma: no branch - self._watcher = SafeChildWatcher() - if isinstance(threading.current_thread(), - threading._MainThread): - self._watcher.attach_loop(self._local._loop) - - def set_event_loop(self, loop): - """Set the event loop. - - As a side effect, if a child watcher was set before, then calling - .set_event_loop() from the main thread will call .attach_loop(loop) on - the child watcher. - """ - - super(_UnixDefaultEventLoopPolicy, self).set_event_loop(loop) - - if self._watcher is not None and \ - isinstance(threading.current_thread(), threading._MainThread): - self._watcher.attach_loop(loop) - - def get_child_watcher(self): - """Get the watcher for child processes. - - If not yet set, a SafeChildWatcher object is automatically created. - """ - if self._watcher is None: - self._init_watcher() - - return self._watcher - - def set_child_watcher(self, watcher): - """Set the watcher for child processes.""" - - assert watcher is None or isinstance(watcher, AbstractChildWatcher) - - if self._watcher is not None: - self._watcher.close() - - self._watcher = watcher - -SelectorEventLoop = _UnixSelectorEventLoop -DefaultEventLoopPolicy = _UnixDefaultEventLoopPolicy diff --git a/.local/lib/python2.7/site-packages/trollius/unix_events.pyc b/.local/lib/python2.7/site-packages/trollius/unix_events.pyc deleted file mode 100644 index 0454b822648060aef86c5448afb784141684bcf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36439 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 diff --git a/.local/lib/python2.7/site-packages/trollius/windows_events.py b/.local/lib/python2.7/site-packages/trollius/windows_events.py deleted file mode 100644 index 3102d230..00000000 --- a/.local/lib/python2.7/site-packages/trollius/windows_events.py +++ /dev/null @@ -1,777 +0,0 @@ -"""Selector and proactor event loops for Windows.""" - -import errno -import math -import socket -import struct -import weakref - -from . import events -from . import base_subprocess -from . import futures -from . import proactor_events -from . import py33_winapi as _winapi -from . import selector_events -from . import tasks -from . import windows_utils -from . import _overlapped -from .coroutines import coroutine, From, Return -from .log import logger -from .py33_exceptions import wrap_error, BrokenPipeError, ConnectionResetError - - -__all__ = ['SelectorEventLoop', 'ProactorEventLoop', 'IocpProactor', - 'DefaultEventLoopPolicy', - ] - - -NULL = 0 -INFINITE = 0xffffffff -ERROR_CONNECTION_REFUSED = 1225 -ERROR_CONNECTION_ABORTED = 1236 - -# Initial delay in seconds for connect_pipe() before retrying to connect -CONNECT_PIPE_INIT_DELAY = 0.001 - -# Maximum delay in seconds for connect_pipe() before retrying to connect -CONNECT_PIPE_MAX_DELAY = 0.100 - - -class _OverlappedFuture(futures.Future): - """Subclass of Future which represents an overlapped operation. - - Cancelling it will immediately cancel the overlapped operation. - """ - - def __init__(self, ov, loop=None): - super(_OverlappedFuture, self).__init__(loop=loop) - if self._source_traceback: - del self._source_traceback[-1] - self._ov = ov - - def _repr_info(self): - info = super(_OverlappedFuture, self)._repr_info() - if self._ov is not None: - state = 'pending' if self._ov.pending else 'completed' - info.insert(1, 'overlapped=<%s, %#x>' % (state, self._ov.address)) - return info - - def _cancel_overlapped(self): - if self._ov is None: - return - try: - self._ov.cancel() - except OSError as exc: - context = { - 'message': 'Cancelling an overlapped future failed', - 'exception': exc, - 'future': self, - } - if self._source_traceback: - context['source_traceback'] = self._source_traceback - self._loop.call_exception_handler(context) - self._ov = None - - def cancel(self): - self._cancel_overlapped() - return super(_OverlappedFuture, self).cancel() - - def set_exception(self, exception): - super(_OverlappedFuture, self).set_exception(exception) - self._cancel_overlapped() - - def set_result(self, result): - super(_OverlappedFuture, self).set_result(result) - self._ov = None - - -class _BaseWaitHandleFuture(futures.Future): - """Subclass of Future which represents a wait handle.""" - - def __init__(self, ov, handle, wait_handle, loop=None): - super(_BaseWaitHandleFuture, self).__init__(loop=loop) - if self._source_traceback: - del self._source_traceback[-1] - # Keep a reference to the Overlapped object to keep it alive until the - # wait is unregistered - self._ov = ov - self._handle = handle - self._wait_handle = wait_handle - - # Should we call UnregisterWaitEx() if the wait completes - # or is cancelled? - self._registered = True - - def _poll(self): - # non-blocking wait: use a timeout of 0 millisecond - return (_winapi.WaitForSingleObject(self._handle, 0) == - _winapi.WAIT_OBJECT_0) - - def _repr_info(self): - info = super(_BaseWaitHandleFuture, self)._repr_info() - info.append('handle=%#x' % self._handle) - if self._handle is not None: - state = 'signaled' if self._poll() else 'waiting' - info.append(state) - if self._wait_handle is not None: - info.append('wait_handle=%#x' % self._wait_handle) - return info - - def _unregister_wait_cb(self, fut): - # The wait was unregistered: it's not safe to destroy the Overlapped - # object - self._ov = None - - def _unregister_wait(self): - if not self._registered: - return - self._registered = False - - wait_handle = self._wait_handle - self._wait_handle = None - try: - _overlapped.UnregisterWait(wait_handle) - except OSError as exc: - if exc.winerror != _overlapped.ERROR_IO_PENDING: - context = { - 'message': 'Failed to unregister the wait handle', - 'exception': exc, - 'future': self, - } - if self._source_traceback: - context['source_traceback'] = self._source_traceback - self._loop.call_exception_handler(context) - return - # ERROR_IO_PENDING means that the unregister is pending - - self._unregister_wait_cb(None) - - def cancel(self): - self._unregister_wait() - return super(_BaseWaitHandleFuture, self).cancel() - - def set_exception(self, exception): - self._unregister_wait() - super(_BaseWaitHandleFuture, self).set_exception(exception) - - def set_result(self, result): - self._unregister_wait() - super(_BaseWaitHandleFuture, self).set_result(result) - - -class _WaitCancelFuture(_BaseWaitHandleFuture): - """Subclass of Future which represents a wait for the cancellation of a - _WaitHandleFuture using an event. - """ - - def __init__(self, ov, event, wait_handle, loop=None): - super(_WaitCancelFuture, self).__init__(ov, event, wait_handle, - loop=loop) - - self._done_callback = None - - def cancel(self): - raise RuntimeError("_WaitCancelFuture must not be cancelled") - - def _schedule_callbacks(self): - super(_WaitCancelFuture, self)._schedule_callbacks() - if self._done_callback is not None: - self._done_callback(self) - - -class _WaitHandleFuture(_BaseWaitHandleFuture): - def __init__(self, ov, handle, wait_handle, proactor, loop=None): - super(_WaitHandleFuture, self).__init__(ov, handle, wait_handle, - loop=loop) - self._proactor = proactor - self._unregister_proactor = True - self._event = _overlapped.CreateEvent(None, True, False, None) - self._event_fut = None - - def _unregister_wait_cb(self, fut): - if self._event is not None: - _winapi.CloseHandle(self._event) - self._event = None - self._event_fut = None - - # If the wait was cancelled, the wait may never be signalled, so - # it's required to unregister it. Otherwise, IocpProactor.close() will - # wait forever for an event which will never come. - # - # If the IocpProactor already received the event, it's safe to call - # _unregister() because we kept a reference to the Overlapped object - # which is used as an unique key. - self._proactor._unregister(self._ov) - self._proactor = None - - super(_WaitHandleFuture, self)._unregister_wait_cb(fut) - - def _unregister_wait(self): - if not self._registered: - return - self._registered = False - - wait_handle = self._wait_handle - self._wait_handle = None - try: - _overlapped.UnregisterWaitEx(wait_handle, self._event) - except OSError as exc: - if exc.winerror != _overlapped.ERROR_IO_PENDING: - context = { - 'message': 'Failed to unregister the wait handle', - 'exception': exc, - 'future': self, - } - if self._source_traceback: - context['source_traceback'] = self._source_traceback - self._loop.call_exception_handler(context) - return - # ERROR_IO_PENDING is not an error, the wait was unregistered - - self._event_fut = self._proactor._wait_cancel(self._event, - self._unregister_wait_cb) - - -class PipeServer(object): - """Class representing a pipe server. - - This is much like a bound, listening socket. - """ - def __init__(self, address): - self._address = address - self._free_instances = weakref.WeakSet() - # initialize the pipe attribute before calling _server_pipe_handle() - # because this function can raise an exception and the destructor calls - # the close() method - self._pipe = None - self._accept_pipe_future = None - self._pipe = self._server_pipe_handle(True) - - def _get_unconnected_pipe(self): - # Create new instance and return previous one. This ensures - # that (until the server is closed) there is always at least - # one pipe handle for address. Therefore if a client attempt - # to connect it will not fail with FileNotFoundError. - tmp, self._pipe = self._pipe, self._server_pipe_handle(False) - return tmp - - def _server_pipe_handle(self, first): - # Return a wrapper for a new pipe handle. - if self.closed(): - return None - flags = _winapi.PIPE_ACCESS_DUPLEX | _winapi.FILE_FLAG_OVERLAPPED - if first: - flags |= _winapi.FILE_FLAG_FIRST_PIPE_INSTANCE - h = wrap_error(_winapi.CreateNamedPipe, - self._address, flags, - _winapi.PIPE_TYPE_MESSAGE | _winapi.PIPE_READMODE_MESSAGE | - _winapi.PIPE_WAIT, - _winapi.PIPE_UNLIMITED_INSTANCES, - windows_utils.BUFSIZE, windows_utils.BUFSIZE, - _winapi.NMPWAIT_WAIT_FOREVER, _winapi.NULL) - pipe = windows_utils.PipeHandle(h) - self._free_instances.add(pipe) - return pipe - - def closed(self): - return (self._address is None) - - def close(self): - if self._accept_pipe_future is not None: - self._accept_pipe_future.cancel() - self._accept_pipe_future = None - # Close all instances which have not been connected to by a client. - if self._address is not None: - for pipe in self._free_instances: - pipe.close() - self._pipe = None - self._address = None - self._free_instances.clear() - - __del__ = close - - -class _WindowsSelectorEventLoop(selector_events.BaseSelectorEventLoop): - """Windows version of selector event loop.""" - - def _socketpair(self): - return windows_utils.socketpair() - - -class ProactorEventLoop(proactor_events.BaseProactorEventLoop): - """Windows version of proactor event loop using IOCP.""" - - def __init__(self, proactor=None): - if proactor is None: - proactor = IocpProactor() - super(ProactorEventLoop, self).__init__(proactor) - - def _socketpair(self): - return windows_utils.socketpair() - - @coroutine - def create_pipe_connection(self, protocol_factory, address): - f = self._proactor.connect_pipe(address) - pipe = yield From(f) - protocol = protocol_factory() - trans = self._make_duplex_pipe_transport(pipe, protocol, - extra={'addr': address}) - raise Return(trans, protocol) - - @coroutine - def start_serving_pipe(self, protocol_factory, address): - server = PipeServer(address) - - def loop_accept_pipe(f=None): - pipe = None - try: - if f: - pipe = f.result() - server._free_instances.discard(pipe) - - if server.closed(): - # A client connected before the server was closed: - # drop the client (close the pipe) and exit - pipe.close() - return - - protocol = protocol_factory() - self._make_duplex_pipe_transport( - pipe, protocol, extra={'addr': address}) - - pipe = server._get_unconnected_pipe() - if pipe is None: - return - - f = self._proactor.accept_pipe(pipe) - except OSError as exc: - if pipe and pipe.fileno() != -1: - self.call_exception_handler({ - 'message': 'Pipe accept failed', - 'exception': exc, - 'pipe': pipe, - }) - pipe.close() - elif self._debug: - logger.warning("Accept pipe failed on pipe %r", - pipe, exc_info=True) - except futures.CancelledError: - if pipe: - pipe.close() - else: - server._accept_pipe_future = f - f.add_done_callback(loop_accept_pipe) - - self.call_soon(loop_accept_pipe) - return [server] - - @coroutine - def _make_subprocess_transport(self, protocol, args, shell, - stdin, stdout, stderr, bufsize, - extra=None, **kwargs): - waiter = futures.Future(loop=self) - transp = _WindowsSubprocessTransport(self, protocol, args, shell, - stdin, stdout, stderr, bufsize, - waiter=waiter, extra=extra, - **kwargs) - try: - yield From(waiter) - except Exception as exc: - # Workaround CPython bug #23353: using yield/yield-from in an - # except block of a generator doesn't clear properly sys.exc_info() - err = exc - else: - err = None - - if err is not None: - transp.close() - yield From(transp._wait()) - raise err - - raise Return(transp) - - -class IocpProactor(object): - """Proactor implementation using IOCP.""" - - def __init__(self, concurrency=0xffffffff): - self._loop = None - self._results = [] - self._iocp = _overlapped.CreateIoCompletionPort( - _overlapped.INVALID_HANDLE_VALUE, NULL, 0, concurrency) - self._cache = {} - self._registered = weakref.WeakSet() - self._unregistered = [] - self._stopped_serving = weakref.WeakSet() - - def __repr__(self): - return ('<%s overlapped#=%s result#=%s>' - % (self.__class__.__name__, len(self._cache), - len(self._results))) - - def set_loop(self, loop): - self._loop = loop - - def select(self, timeout=None): - if not self._results: - self._poll(timeout) - tmp = self._results - self._results = [] - return tmp - - def _result(self, value): - fut = futures.Future(loop=self._loop) - fut.set_result(value) - return fut - - def recv(self, conn, nbytes, flags=0): - self._register_with_iocp(conn) - ov = _overlapped.Overlapped(NULL) - try: - if isinstance(conn, socket.socket): - wrap_error(ov.WSARecv, conn.fileno(), nbytes, flags) - else: - wrap_error(ov.ReadFile, conn.fileno(), nbytes) - except BrokenPipeError: - return self._result(b'') - - def finish_recv(trans, key, ov): - try: - return wrap_error(ov.getresult) - except WindowsError as exc: - if exc.winerror == _overlapped.ERROR_NETNAME_DELETED: - raise ConnectionResetError(*exc.args) - else: - raise - - return self._register(ov, conn, finish_recv) - - def send(self, conn, buf, flags=0): - self._register_with_iocp(conn) - ov = _overlapped.Overlapped(NULL) - if isinstance(conn, socket.socket): - ov.WSASend(conn.fileno(), buf, flags) - else: - ov.WriteFile(conn.fileno(), buf) - - def finish_send(trans, key, ov): - try: - return wrap_error(ov.getresult) - except WindowsError as exc: - if exc.winerror == _overlapped.ERROR_NETNAME_DELETED: - raise ConnectionResetError(*exc.args) - else: - raise - - return self._register(ov, conn, finish_send) - - def accept(self, listener): - self._register_with_iocp(listener) - conn = self._get_accept_socket(listener.family) - ov = _overlapped.Overlapped(NULL) - ov.AcceptEx(listener.fileno(), conn.fileno()) - - def finish_accept(trans, key, ov): - wrap_error(ov.getresult) - # Use SO_UPDATE_ACCEPT_CONTEXT so getsockname() etc work. - buf = struct.pack('@P', listener.fileno()) - conn.setsockopt(socket.SOL_SOCKET, - _overlapped.SO_UPDATE_ACCEPT_CONTEXT, buf) - conn.settimeout(listener.gettimeout()) - return conn, conn.getpeername() - - @coroutine - def accept_coro(future, conn): - # Coroutine closing the accept socket if the future is cancelled - try: - yield From(future) - except futures.CancelledError: - conn.close() - raise - - future = self._register(ov, listener, finish_accept) - coro = accept_coro(future, conn) - tasks.ensure_future(coro, loop=self._loop) - return future - - def connect(self, conn, address): - self._register_with_iocp(conn) - # The socket needs to be locally bound before we call ConnectEx(). - try: - _overlapped.BindLocal(conn.fileno(), conn.family) - except WindowsError as e: - if e.winerror != errno.WSAEINVAL: - raise - # Probably already locally bound; check using getsockname(). - if conn.getsockname()[1] == 0: - raise - ov = _overlapped.Overlapped(NULL) - ov.ConnectEx(conn.fileno(), address) - - def finish_connect(trans, key, ov): - wrap_error(ov.getresult) - # Use SO_UPDATE_CONNECT_CONTEXT so getsockname() etc work. - conn.setsockopt(socket.SOL_SOCKET, - _overlapped.SO_UPDATE_CONNECT_CONTEXT, 0) - return conn - - return self._register(ov, conn, finish_connect) - - def accept_pipe(self, pipe): - self._register_with_iocp(pipe) - ov = _overlapped.Overlapped(NULL) - connected = ov.ConnectNamedPipe(pipe.fileno()) - - if connected: - # ConnectNamePipe() failed with ERROR_PIPE_CONNECTED which means - # that the pipe is connected. There is no need to wait for the - # completion of the connection. - return self._result(pipe) - - def finish_accept_pipe(trans, key, ov): - wrap_error(ov.getresult) - return pipe - - return self._register(ov, pipe, finish_accept_pipe) - - @coroutine - def connect_pipe(self, address): - delay = CONNECT_PIPE_INIT_DELAY - while True: - # Unfortunately there is no way to do an overlapped connect to a pipe. - # Call CreateFile() in a loop until it doesn't fail with - # ERROR_PIPE_BUSY - try: - handle = wrap_error(_overlapped.ConnectPipe, address) - break - except WindowsError as exc: - if exc.winerror != _overlapped.ERROR_PIPE_BUSY: - raise - - # ConnectPipe() failed with ERROR_PIPE_BUSY: retry later - delay = min(delay * 2, CONNECT_PIPE_MAX_DELAY) - yield From(tasks.sleep(delay, loop=self._loop)) - - raise Return(windows_utils.PipeHandle(handle)) - - def wait_for_handle(self, handle, timeout=None): - """Wait for a handle. - - Return a Future object. The result of the future is True if the wait - completed, or False if the wait did not complete (on timeout). - """ - return self._wait_for_handle(handle, timeout, False) - - def _wait_cancel(self, event, done_callback): - fut = self._wait_for_handle(event, None, True) - # add_done_callback() cannot be used because the wait may only complete - # in IocpProactor.close(), while the event loop is not running. - fut._done_callback = done_callback - return fut - - def _wait_for_handle(self, handle, timeout, _is_cancel): - if timeout is None: - ms = _winapi.INFINITE - else: - # RegisterWaitForSingleObject() has a resolution of 1 millisecond, - # round away from zero to wait *at least* timeout seconds. - ms = int(math.ceil(timeout * 1e3)) - - # We only create ov so we can use ov.address as a key for the cache. - ov = _overlapped.Overlapped(NULL) - wait_handle = _overlapped.RegisterWaitWithQueue( - handle, self._iocp, ov.address, ms) - if _is_cancel: - f = _WaitCancelFuture(ov, handle, wait_handle, loop=self._loop) - else: - f = _WaitHandleFuture(ov, handle, wait_handle, self, - loop=self._loop) - if f._source_traceback: - del f._source_traceback[-1] - - def finish_wait_for_handle(trans, key, ov): - # Note that this second wait means that we should only use - # this with handles types where a successful wait has no - # effect. So events or processes are all right, but locks - # or semaphores are not. Also note if the handle is - # signalled and then quickly reset, then we may return - # False even though we have not timed out. - return f._poll() - - self._cache[ov.address] = (f, ov, 0, finish_wait_for_handle) - return f - - def _register_with_iocp(self, obj): - # To get notifications of finished ops on this objects sent to the - # completion port, were must register the handle. - if obj not in self._registered: - self._registered.add(obj) - _overlapped.CreateIoCompletionPort(obj.fileno(), self._iocp, 0, 0) - # XXX We could also use SetFileCompletionNotificationModes() - # to avoid sending notifications to completion port of ops - # that succeed immediately. - - def _register(self, ov, obj, callback): - # Return a future which will be set with the result of the - # operation when it completes. The future's value is actually - # the value returned by callback(). - f = _OverlappedFuture(ov, loop=self._loop) - if f._source_traceback: - del f._source_traceback[-1] - if not ov.pending: - # The operation has completed, so no need to postpone the - # work. We cannot take this short cut if we need the - # NumberOfBytes, CompletionKey values returned by - # PostQueuedCompletionStatus(). - try: - value = callback(None, None, ov) - except OSError as e: - f.set_exception(e) - else: - f.set_result(value) - # Even if GetOverlappedResult() was called, we have to wait for the - # notification of the completion in GetQueuedCompletionStatus(). - # Register the overlapped operation to keep a reference to the - # OVERLAPPED object, otherwise the memory is freed and Windows may - # read uninitialized memory. - - # Register the overlapped operation for later. Note that - # we only store obj to prevent it from being garbage - # collected too early. - self._cache[ov.address] = (f, ov, obj, callback) - return f - - def _unregister(self, ov): - """Unregister an overlapped object. - - Call this method when its future has been cancelled. The event can - already be signalled (pending in the proactor event queue). It is also - safe if the event is never signalled (because it was cancelled). - """ - self._unregistered.append(ov) - - def _get_accept_socket(self, family): - s = socket.socket(family) - s.settimeout(0) - return s - - def _poll(self, timeout=None): - if timeout is None: - ms = INFINITE - elif timeout < 0: - raise ValueError("negative timeout") - else: - # GetQueuedCompletionStatus() has a resolution of 1 millisecond, - # round away from zero to wait *at least* timeout seconds. - ms = int(math.ceil(timeout * 1e3)) - if ms >= INFINITE: - raise ValueError("timeout too big") - - while True: - status = _overlapped.GetQueuedCompletionStatus(self._iocp, ms) - if status is None: - break - ms = 0 - - err, transferred, key, address = status - try: - f, ov, obj, callback = self._cache.pop(address) - except KeyError: - if self._loop.get_debug(): - self._loop.call_exception_handler({ - 'message': ('GetQueuedCompletionStatus() returned an ' - 'unexpected event'), - 'status': ('err=%s transferred=%s key=%#x address=%#x' - % (err, transferred, key, address)), - }) - - # key is either zero, or it is used to return a pipe - # handle which should be closed to avoid a leak. - if key not in (0, _overlapped.INVALID_HANDLE_VALUE): - _winapi.CloseHandle(key) - continue - - if obj in self._stopped_serving: - f.cancel() - # Don't call the callback if _register() already read the result or - # if the overlapped has been cancelled - elif not f.done(): - try: - value = callback(transferred, key, ov) - except OSError as e: - f.set_exception(e) - self._results.append(f) - else: - f.set_result(value) - self._results.append(f) - - # Remove unregisted futures - for ov in self._unregistered: - self._cache.pop(ov.address, None) - del self._unregistered[:] - - def _stop_serving(self, obj): - # obj is a socket or pipe handle. It will be closed in - # BaseProactorEventLoop._stop_serving() which will make any - # pending operations fail quickly. - self._stopped_serving.add(obj) - - def close(self): - # Cancel remaining registered operations. - for address, (fut, ov, obj, callback) in list(self._cache.items()): - if fut.cancelled(): - # Nothing to do with cancelled futures - pass - elif isinstance(fut, _WaitCancelFuture): - # _WaitCancelFuture must not be cancelled - pass - else: - try: - fut.cancel() - except OSError as exc: - if self._loop is not None: - context = { - 'message': 'Cancelling a future failed', - 'exception': exc, - 'future': fut, - } - if fut._source_traceback: - context['source_traceback'] = fut._source_traceback - self._loop.call_exception_handler(context) - - while self._cache: - if not self._poll(1): - logger.debug('taking long time to close proactor') - - self._results = [] - if self._iocp is not None: - _winapi.CloseHandle(self._iocp) - self._iocp = None - - def __del__(self): - self.close() - - -class _WindowsSubprocessTransport(base_subprocess.BaseSubprocessTransport): - - def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs): - self._proc = windows_utils.Popen( - args, shell=shell, stdin=stdin, stdout=stdout, stderr=stderr, - bufsize=bufsize, **kwargs) - - def callback(f): - returncode = self._proc.poll() - self._process_exited(returncode) - - f = self._loop._proactor.wait_for_handle(int(self._proc._handle)) - f.add_done_callback(callback) - - -SelectorEventLoop = _WindowsSelectorEventLoop - - -class _WindowsDefaultEventLoopPolicy(events.BaseDefaultEventLoopPolicy): - _loop_factory = SelectorEventLoop - - -DefaultEventLoopPolicy = _WindowsDefaultEventLoopPolicy diff --git a/.local/lib/python2.7/site-packages/trollius/windows_events.pyc b/.local/lib/python2.7/site-packages/trollius/windows_events.pyc deleted file mode 100644 index 081b27c8076b8c09ca03bc2bc338c7e35dcd8236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28072 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 diff --git a/.local/lib/python2.7/site-packages/trollius/windows_utils.py b/.local/lib/python2.7/site-packages/trollius/windows_utils.py deleted file mode 100644 index 288d5478..00000000 --- a/.local/lib/python2.7/site-packages/trollius/windows_utils.py +++ /dev/null @@ -1,238 +0,0 @@ -""" -Various Windows specific bits and pieces -""" -from __future__ import absolute_import - -import sys - -if sys.platform != 'win32': # pragma: no cover - raise ImportError('win32 only') - -import itertools -import msvcrt -import os -import socket -import subprocess -import tempfile -import warnings - -import six - -from . import py33_winapi as _winapi -from . import compat -from .py33_exceptions import wrap_error, BlockingIOError, InterruptedError - - -__all__ = ['socketpair', 'pipe', 'Popen', 'PIPE', 'PipeHandle'] - - -# Constants/globals - - -BUFSIZE = 8192 -PIPE = subprocess.PIPE -STDOUT = subprocess.STDOUT -_mmap_counter = itertools.count() - - -if hasattr(socket, 'socketpair'): - # Since Python 3.5, socket.socketpair() is now also available on Windows - socketpair = socket.socketpair -else: - # Replacement for socket.socketpair() - def socketpair(family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0): - """A socket pair usable as a self-pipe, for Windows. - - Origin: https://gist.github.com/4325783, by Geert Jansen. - Public domain. - """ - if family == socket.AF_INET: - host = '127.0.0.1' - elif family == socket.AF_INET6: - host = '::1' - else: - raise ValueError("Only AF_INET and AF_INET6 socket address " - "families are supported") - if type != socket.SOCK_STREAM: - raise ValueError("Only SOCK_STREAM socket type is supported") - if proto != 0: - raise ValueError("Only protocol zero is supported") - - # We create a connected TCP socket. Note the trick with setblocking(0) - # that prevents us from having to create a thread. - lsock = socket.socket(family, type, proto) - try: - lsock.bind((host, 0)) - lsock.listen(1) - # On IPv6, ignore flow_info and scope_id - addr, port = lsock.getsockname()[:2] - csock = socket.socket(family, type, proto) - try: - csock.setblocking(False) - try: - wrap_error(csock.connect, (addr, port)) - except (BlockingIOError, InterruptedError): - pass - csock.setblocking(True) - ssock, _ = lsock.accept() - except: - csock.close() - raise - finally: - lsock.close() - return (ssock, csock) - - -# Replacement for os.pipe() using handles instead of fds - - -def pipe(duplex=False, overlapped=(True, True), bufsize=BUFSIZE): - """Like os.pipe() but with overlapped support and using handles not fds.""" - address = tempfile.mktemp(prefix=r'\\.\pipe\python-pipe-%d-%d-' % - (os.getpid(), next(_mmap_counter))) - - if duplex: - openmode = _winapi.PIPE_ACCESS_DUPLEX - access = _winapi.GENERIC_READ | _winapi.GENERIC_WRITE - obsize, ibsize = bufsize, bufsize - else: - openmode = _winapi.PIPE_ACCESS_INBOUND - access = _winapi.GENERIC_WRITE - obsize, ibsize = 0, bufsize - - openmode |= _winapi.FILE_FLAG_FIRST_PIPE_INSTANCE - - if overlapped[0]: - openmode |= _winapi.FILE_FLAG_OVERLAPPED - - if overlapped[1]: - flags_and_attribs = _winapi.FILE_FLAG_OVERLAPPED - else: - flags_and_attribs = 0 - - h1 = h2 = None - try: - h1 = _winapi.CreateNamedPipe( - address, openmode, _winapi.PIPE_WAIT, - 1, obsize, ibsize, _winapi.NMPWAIT_WAIT_FOREVER, _winapi.NULL) - - h2 = _winapi.CreateFile( - address, access, 0, _winapi.NULL, _winapi.OPEN_EXISTING, - flags_and_attribs, _winapi.NULL) - - ov = _winapi.ConnectNamedPipe(h1, overlapped=True) - if hasattr(ov, 'GetOverlappedResult'): - # _winapi module of Python 3.3 - ov.GetOverlappedResult(True) - else: - # _overlapped module - wrap_error(ov.getresult, True) - return h1, h2 - except: - if h1 is not None: - _winapi.CloseHandle(h1) - if h2 is not None: - _winapi.CloseHandle(h2) - raise - - -# Wrapper for a pipe handle - - -class PipeHandle(object): - """Wrapper for an overlapped pipe handle which is vaguely file-object like. - - The IOCP event loop can use these instead of socket objects. - """ - def __init__(self, handle): - self._handle = handle - - def __repr__(self): - if self._handle is not None: - handle = 'handle=%r' % self._handle - else: - handle = 'closed' - return '<%s %s>' % (self.__class__.__name__, handle) - - @property - def handle(self): - return self._handle - - def fileno(self): - if self._handle is None: - raise ValueError("I/O operatioon on closed pipe") - return self._handle - - def close(self, CloseHandle=_winapi.CloseHandle): - if self._handle is not None: - CloseHandle(self._handle) - self._handle = None - - def __del__(self): - if self._handle is not None: - if six.PY3: - warnings.warn("unclosed %r" % self, ResourceWarning) - self.close() - - def __enter__(self): - return self - - def __exit__(self, t, v, tb): - self.close() - - -# Replacement for subprocess.Popen using overlapped pipe handles - - -class Popen(subprocess.Popen): - """Replacement for subprocess.Popen using overlapped pipe handles. - - The stdin, stdout, stderr are None or instances of PipeHandle. - """ - def __init__(self, args, stdin=None, stdout=None, stderr=None, **kwds): - assert not kwds.get('universal_newlines') - assert kwds.get('bufsize', 0) == 0 - stdin_rfd = stdout_wfd = stderr_wfd = None - stdin_wh = stdout_rh = stderr_rh = None - if stdin == PIPE: - stdin_rh, stdin_wh = pipe(overlapped=(False, True), duplex=True) - stdin_rfd = msvcrt.open_osfhandle(stdin_rh, os.O_RDONLY) - else: - stdin_rfd = stdin - if stdout == PIPE: - stdout_rh, stdout_wh = pipe(overlapped=(True, False)) - stdout_wfd = msvcrt.open_osfhandle(stdout_wh, 0) - else: - stdout_wfd = stdout - if stderr == PIPE: - stderr_rh, stderr_wh = pipe(overlapped=(True, False)) - stderr_wfd = msvcrt.open_osfhandle(stderr_wh, 0) - elif stderr == STDOUT: - stderr_wfd = stdout_wfd - else: - stderr_wfd = stderr - try: - super(Popen, self).__init__(args, - stdin=stdin_rfd, - stdout=stdout_wfd, - stderr=stderr_wfd, - **kwds) - except: - for h in (stdin_wh, stdout_rh, stderr_rh): - if h is not None: - _winapi.CloseHandle(h) - raise - else: - if stdin_wh is not None: - self.stdin = PipeHandle(stdin_wh) - if stdout_rh is not None: - self.stdout = PipeHandle(stdout_rh) - if stderr_rh is not None: - self.stderr = PipeHandle(stderr_rh) - finally: - if stdin == PIPE: - os.close(stdin_rfd) - if stdout == PIPE: - os.close(stdout_wfd) - if stderr == PIPE: - os.close(stderr_wfd) diff --git a/.local/lib/python2.7/site-packages/trollius/windows_utils.pyc b/.local/lib/python2.7/site-packages/trollius/windows_utils.pyc deleted file mode 100644 index d3a4c4fe0cf29690715d1a5d0cfa1b931036ccd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7570 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 -* Bob Ippolito -* ChangBo Guo -* Christoph Gohlke -* Denis Bilenko -* Dirk Mueller -* Donovan Preston -* Fantix King -* Floris Bruynooghe -* Fredrik Fornwall -* Gerd Woetzel -* Giel van Schijndel -* Gökhan Karabulut -* Gustavo Niemeyer -* Guy Rozendorn -* Hye-Shik Chang -* Jared Kuolt -* Jason Madden -* Josh Snyder -* Kyle Ambroff -* Laszlo Boszormenyi -* Mao Han -* Marc Abramowitz -* Marc Schlaich -* Marcin Bachry -* Matt Madison -* Matt Turner -* Michael Ellerman -* Michael Matz -* Ralf Schmitt -* Robie Basak -* Ronny Pfannschmidt -* Samual M. Rushing -* Tony Bowles -* Tony Breeds -* Trevor Bowen -* Tulio Magno Quites Machado Filho -* Ulrich Weigand -* Victor Stinner diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/INSTALLER b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE deleted file mode 100644 index 5e009e3c..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -The following files are derived from Stackless Python and are subject to the -same license as Stackless Python: - - slp_platformselect.h - files in platform/ directory - -See LICENSE.PSF and http://www.stackless.com/ for details. - -Unless otherwise noted, the files in greenlet have been released under the -following MIT license: - -Copyright (c) Armin Rigo, Christian Tismer and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF deleted file mode 100644 index d3b509a2..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/LICENSE.PSF +++ /dev/null @@ -1,47 +0,0 @@ -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 --------------------------------------------- - -1. This LICENSE AGREEMENT is between the Python Software Foundation -("PSF"), and the Individual or Organization ("Licensee") accessing and -otherwise using this software ("Python") in source or binary form and -its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby -grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, -analyze, test, perform and/or display publicly, prepare derivative works, -distribute, and otherwise use Python alone or in any derivative version, -provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -2011 Python Software Foundation; All Rights Reserved" are retained in Python -alone or in any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" -basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any -relationship of agency, partnership, or joint venture between PSF and -Licensee. This License Agreement does not grant permission to use PSF -trademarks or trade name in a trademark sense to endorse or promote -products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/METADATA b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/METADATA deleted file mode 100644 index a656817d..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/METADATA +++ /dev/null @@ -1,92 +0,0 @@ -Metadata-Version: 2.1 -Name: greenlet -Version: 0.4.17 -Summary: Lightweight in-process concurrent programming -Home-page: https://github.com/python-greenlet/greenlet -Author: UNKNOWN -Author-email: UNKNOWN -License: MIT License -Platform: any -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Natural Language :: English -Classifier: Programming Language :: C -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.4 -Classifier: Programming Language :: Python :: 2.5 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.0 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Operating System :: OS Independent -Classifier: Topic :: Software Development :: Libraries :: Python Modules - -.. image:: https://secure.travis-ci.org/python-greenlet/greenlet.png - :target: http://travis-ci.org/python-greenlet/greenlet - -The greenlet package is a spin-off of Stackless, a version of CPython -that supports micro-threads called "tasklets". Tasklets run -pseudo-concurrently (typically in a single or a few OS-level threads) -and are synchronized with data exchanges on "channels". - -A "greenlet", on the other hand, is a still more primitive notion of -micro-thread with no implicit scheduling; coroutines, in other -words. This is useful when you want to control exactly when your code -runs. You can build custom scheduled micro-threads on top of greenlet; -however, it seems that greenlets are useful on their own as a way to -make advanced control flow structures. For example, we can recreate -generators; the difference with Python's own generators is that our -generators can call nested functions and the nested functions can -yield values too. Additionally, you don't need a "yield" keyword. See -the example in tests/test_generator.py. - -Greenlets are provided as a C extension module for the regular -unmodified interpreter. - -Greenlets are lightweight coroutines for in-process concurrent -programming. - -Who is using Greenlet? -====================== - -There are several libraries that use Greenlet as a more flexible -alternative to Python's built in coroutine support: - - - `Concurrence`_ - - `Eventlet`_ - - `Gevent`_ - -.. _Concurrence: http://opensource.hyves.org/concurrence/ -.. _Eventlet: http://eventlet.net/ -.. _Gevent: http://www.gevent.org/ - -Getting Greenlet -================ - -The easiest way to get Greenlet is to install it with pip or -easy_install:: - - pip install greenlet - easy_install greenlet - - -Source code archives and windows installers are available on the -python package index at https://pypi.python.org/pypi/greenlet - -The source code repository is hosted on github: -https://github.com/python-greenlet/greenlet - -Documentation is available on readthedocs.org: -https://greenlet.readthedocs.io - - diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/RECORD b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/RECORD deleted file mode 100644 index 2bc59154..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/RECORD +++ /dev/null @@ -1,10 +0,0 @@ -../../../include/python3.9/greenlet/greenlet.h,sha256=lMxw5Z2sk1jjSXhqzBI13iCh4wQsv70PYnOVVam6kZI,4176 -greenlet-0.4.17.dist-info/AUTHORS,sha256=swW28t2knVRxRkaEQNZtO7MP9Sgnompb7B6cNgJM8Gk,849 -greenlet-0.4.17.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -greenlet-0.4.17.dist-info/LICENSE,sha256=u95V1UVqHpEmM-0_ZtHb2VBOPj3OT0wgFQQ83LxW5pc,1408 -greenlet-0.4.17.dist-info/LICENSE.PSF,sha256=5f88I8EQ5JTNfXNsEP2W1GJFe6_soxCEDbZScpjH1Gs,2424 -greenlet-0.4.17.dist-info/METADATA,sha256=1JfIvgi_IrGEShdtXql0SnoBTO20gM-UFaAskiMksOg,3378 -greenlet-0.4.17.dist-info/RECORD,, -greenlet-0.4.17.dist-info/WHEEL,sha256=MPzLoODanKXQG5ZYPOvHn6Z_wVzQEe1kTJVxw9nhrDM,108 -greenlet-0.4.17.dist-info/top_level.txt,sha256=YSnRsCRoO61JGlP57o8iKL6rdLWDWuiyKD8ekpWUsDc,9 -greenlet.cpython-39-x86_64-linux-gnu.so,sha256=drFnGAq74zn8aqMdsmGcmK2m87Rk5fYMGIvPDAWUFgE,112560 diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/WHEEL b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/WHEEL deleted file mode 100644 index 4c6672ae..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.34.2) -Root-Is-Purelib: false -Tag: cp39-cp39-manylinux1_x86_64 - diff --git a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/top_level.txt b/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/top_level.txt deleted file mode 100644 index 46725be4..00000000 --- a/.local/lib/python3.9/site-packages/greenlet-0.4.17.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -greenlet diff --git a/.local/lib/python3.9/site-packages/greenlet.cpython-39-x86_64-linux-gnu.so b/.local/lib/python3.9/site-packages/greenlet.cpython-39-x86_64-linux-gnu.so deleted file mode 100755 index 9e3b09b1d5d26729d5e7a3600505f3fab5b7d4f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112560 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 ZcC=N@<^|n_6V&AWg6>SRBWsqW{|AKSyxaf) diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/PKG-INFO b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/PKG-INFO deleted file mode 100644 index 4cc4ba1a..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/PKG-INFO +++ /dev/null @@ -1,10 +0,0 @@ -Metadata-Version: 1.0 -Name: neovim -Version: 0.3.1 -Summary: Transition packgage for pynvim -Home-page: http://github.com/neovim/python-client -Author: Thiago de Arruda -Author-email: tpadilha84@gmail.com -License: Apache -Description: UNKNOWN -Platform: UNKNOWN diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/SOURCES.txt b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/SOURCES.txt deleted file mode 100644 index c8c7e9f7..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/SOURCES.txt +++ /dev/null @@ -1,8 +0,0 @@ -setup.cfg -setup.py -neovim.egg-info/PKG-INFO -neovim.egg-info/SOURCES.txt -neovim.egg-info/dependency_links.txt -neovim.egg-info/not-zip-safe -neovim.egg-info/requires.txt -neovim.egg-info/top_level.txt \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/dependency_links.txt b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/installed-files.txt b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/installed-files.txt deleted file mode 100644 index b1be01d6..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/installed-files.txt +++ /dev/null @@ -1,6 +0,0 @@ -PKG-INFO -SOURCES.txt -dependency_links.txt -not-zip-safe -requires.txt -top_level.txt diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/not-zip-safe b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/requires.txt b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/requires.txt deleted file mode 100644 index a7390439..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/requires.txt +++ /dev/null @@ -1 +0,0 @@ -pynvim>=0.3.1 diff --git a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/top_level.txt b/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/top_level.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/neovim-0.3.1-py3.9.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/neovim/__init__.py b/.local/lib/python3.9/site-packages/neovim/__init__.py deleted file mode 100644 index 31ce7c8f..00000000 --- a/.local/lib/python3.9/site-packages/neovim/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -"""Python client for Nvim. - -This is a transition package. New projects should instead import pynvim package. -""" -import pynvim -from pynvim import * - -__all__ = pynvim.__all__ diff --git a/.local/lib/python3.9/site-packages/neovim/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/neovim/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 8caebc7c47551a1aa9ccac005ea90e59c316cfbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmYjL!Ait15KXdmErtDsCD#fzf)@o551xzQo_dL~i8eJ&LXs-=kGy#E;IH)R$zSl~ z>?-0g^Byz2nR#NhDiFl`+xq4e_+#7r4+6~vR9pi{)F6o^F}T6N3xhXE;hr=^l513E z&;8YuI%jEXw6clbxj^ejJyb=p>2#!!f~FvB)JcQPi}pd>tBTg@iTdDr)uu>e=SCx` zwlOIIJa`up^^=85e=Ef&_(64vXM9jD=6%kkYdLS0Kf3Ke7{mDs3VR^j!Ph10+@M(R z;;6#W39F22g<(eDGQTr^T%9uTrVf9dMP`+Qw~TXbb>h78)103TPL4*MV>ld_09lsf GoO}aNEndU` diff --git a/.local/lib/python3.9/site-packages/neovim/api/__init__.py b/.local/lib/python3.9/site-packages/neovim/api/__init__.py deleted file mode 100644 index 3f7a8da2..00000000 --- a/.local/lib/python3.9/site-packages/neovim/api/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -"""Nvim API subpackage. - -This is a transition package. New projects should instead import pynvim.api. -""" -from pynvim import api -from pynvim.api import * - -__all__ = api.__all__ diff --git a/.local/lib/python3.9/site-packages/neovim/api/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/neovim/api/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 3cc3c27f56c13cdf1f42ce5964e80244e221967c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmYjL%SyyB6iw33gW~){a5sXD;6_12ce*Kpv+5>hnqX7YBs8f~zetyE{giH9`3tVR z^?_b)&dK4vj##ZS1o8TG!(V{kCh+O>)`F7&E9IAXbRl`zccE%QUHojuHt8TeKEKW+oF%7GOI#~J6^>d1NShjDq* SI@ud_ieY(}1ElE=UXoAFoMn>$ diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/PKG-INFO b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/PKG-INFO deleted file mode 100644 index 8215e2a4..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/PKG-INFO +++ /dev/null @@ -1,13 +0,0 @@ -Metadata-Version: 2.1 -Name: pynvim -Version: 0.4.2 -Summary: Python client to neovim -Home-page: http://github.com/neovim/pynvim -Author: Thiago de Arruda -Author-email: tpadilha84@gmail.com -License: Apache -Download-URL: https://github.com/neovim/pynvim/archive/0.4.2.tar.gz -Description: UNKNOWN -Platform: UNKNOWN -Provides-Extra: pyuv -Provides-Extra: test diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/SOURCES.txt b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/SOURCES.txt deleted file mode 100644 index 995a2f20..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/SOURCES.txt +++ /dev/null @@ -1,45 +0,0 @@ -LICENSE -MANIFEST.in -README.md -setup.cfg -setup.py -neovim/__init__.py -neovim/api/__init__.py -pynvim/__init__.py -pynvim/compat.py -pynvim/util.py -pynvim.egg-info/PKG-INFO -pynvim.egg-info/SOURCES.txt -pynvim.egg-info/dependency_links.txt -pynvim.egg-info/not-zip-safe -pynvim.egg-info/requires.txt -pynvim.egg-info/top_level.txt -pynvim/api/__init__.py -pynvim/api/buffer.py -pynvim/api/common.py -pynvim/api/nvim.py -pynvim/api/tabpage.py -pynvim/api/window.py -pynvim/msgpack_rpc/__init__.py -pynvim/msgpack_rpc/async_session.py -pynvim/msgpack_rpc/msgpack_stream.py -pynvim/msgpack_rpc/session.py -pynvim/msgpack_rpc/event_loop/__init__.py -pynvim/msgpack_rpc/event_loop/asyncio.py -pynvim/msgpack_rpc/event_loop/base.py -pynvim/msgpack_rpc/event_loop/uv.py -pynvim/plugin/__init__.py -pynvim/plugin/decorators.py -pynvim/plugin/host.py -pynvim/plugin/script_host.py -test/conftest.py -test/test_buffer.py -test/test_client_rpc.py -test/test_concurrency.py -test/test_decorators.py -test/test_events.py -test/test_host.py -test/test_logging.py -test/test_tabpage.py -test/test_vim.py -test/test_window.py \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/dependency_links.txt b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/installed-files.txt b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/installed-files.txt deleted file mode 100644 index b366f559..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/installed-files.txt +++ /dev/null @@ -1,52 +0,0 @@ -../neovim/__init__.py -../neovim/__pycache__/__init__.cpython-39.pyc -../neovim/api/__init__.py -../neovim/api/__pycache__/__init__.cpython-39.pyc -../pynvim/__init__.py -../pynvim/__pycache__/__init__.cpython-39.pyc -../pynvim/__pycache__/compat.cpython-39.pyc -../pynvim/__pycache__/util.cpython-39.pyc -../pynvim/api/__init__.py -../pynvim/api/__pycache__/__init__.cpython-39.pyc -../pynvim/api/__pycache__/buffer.cpython-39.pyc -../pynvim/api/__pycache__/common.cpython-39.pyc -../pynvim/api/__pycache__/nvim.cpython-39.pyc -../pynvim/api/__pycache__/tabpage.cpython-39.pyc -../pynvim/api/__pycache__/window.cpython-39.pyc -../pynvim/api/buffer.py -../pynvim/api/common.py -../pynvim/api/nvim.py -../pynvim/api/tabpage.py -../pynvim/api/window.py -../pynvim/compat.py -../pynvim/msgpack_rpc/__init__.py -../pynvim/msgpack_rpc/__pycache__/__init__.cpython-39.pyc -../pynvim/msgpack_rpc/__pycache__/async_session.cpython-39.pyc -../pynvim/msgpack_rpc/__pycache__/msgpack_stream.cpython-39.pyc -../pynvim/msgpack_rpc/__pycache__/session.cpython-39.pyc -../pynvim/msgpack_rpc/async_session.py -../pynvim/msgpack_rpc/event_loop/__init__.py -../pynvim/msgpack_rpc/event_loop/__pycache__/__init__.cpython-39.pyc -../pynvim/msgpack_rpc/event_loop/__pycache__/asyncio.cpython-39.pyc -../pynvim/msgpack_rpc/event_loop/__pycache__/base.cpython-39.pyc -../pynvim/msgpack_rpc/event_loop/__pycache__/uv.cpython-39.pyc -../pynvim/msgpack_rpc/event_loop/asyncio.py -../pynvim/msgpack_rpc/event_loop/base.py -../pynvim/msgpack_rpc/event_loop/uv.py -../pynvim/msgpack_rpc/msgpack_stream.py -../pynvim/msgpack_rpc/session.py -../pynvim/plugin/__init__.py -../pynvim/plugin/__pycache__/__init__.cpython-39.pyc -../pynvim/plugin/__pycache__/decorators.cpython-39.pyc -../pynvim/plugin/__pycache__/host.cpython-39.pyc -../pynvim/plugin/__pycache__/script_host.cpython-39.pyc -../pynvim/plugin/decorators.py -../pynvim/plugin/host.py -../pynvim/plugin/script_host.py -../pynvim/util.py -PKG-INFO -SOURCES.txt -dependency_links.txt -not-zip-safe -requires.txt -top_level.txt diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/not-zip-safe b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/requires.txt b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/requires.txt deleted file mode 100644 index 8a685cc6..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/requires.txt +++ /dev/null @@ -1,8 +0,0 @@ -msgpack>=0.5.0 -greenlet - -[pyuv] -pyuv>=1.0.0 - -[test] -pytest>=3.4.0 diff --git a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/top_level.txt b/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/top_level.txt deleted file mode 100644 index e6bb79fa..00000000 --- a/.local/lib/python3.9/site-packages/pynvim-0.4.2-py3.9.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -neovim -pynvim diff --git a/.local/lib/python3.9/site-packages/pynvim/__init__.py b/.local/lib/python3.9/site-packages/pynvim/__init__.py deleted file mode 100644 index 17967ce2..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/__init__.py +++ /dev/null @@ -1,156 +0,0 @@ -"""Python client for Nvim. - -Client library for talking with Nvim processes via its msgpack-rpc API. -""" -import logging -import os -import sys - -from pynvim.api import Nvim, NvimError -from pynvim.compat import IS_PYTHON3 -from pynvim.msgpack_rpc import (ErrorResponse, child_session, socket_session, - stdio_session, tcp_session) -from pynvim.plugin import (Host, autocmd, command, decode, encoding, function, - plugin, rpc_export, shutdown_hook) -from pynvim.util import VERSION, Version - - -__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session', - 'start_host', 'autocmd', 'command', 'encoding', 'decode', - 'function', 'plugin', 'rpc_export', 'Host', 'Nvim', 'NvimError', - 'Version', 'VERSION', 'shutdown_hook', 'attach', 'setup_logging', - 'ErrorResponse') - - -def start_host(session=None): - """Promote the current process into python plugin host for Nvim. - - Start msgpack-rpc event loop for `session`, listening for Nvim requests - and notifications. It registers Nvim commands for loading/unloading - python plugins. - - The sys.stdout and sys.stderr streams are redirected to Nvim through - `session`. That means print statements probably won't work as expected - while this function doesn't return. - - This function is normally called at program startup and could have been - defined as a separate executable. It is exposed as a library function for - testing purposes only. - """ - plugins = [] - for arg in sys.argv: - _, ext = os.path.splitext(arg) - if ext == '.py': - plugins.append(arg) - elif os.path.isdir(arg): - init = os.path.join(arg, '__init__.py') - if os.path.isfile(init): - plugins.append(arg) - - # This is a special case to support the old workaround of - # adding an empty .py file to make a package directory - # visible, and it should be removed soon. - for path in list(plugins): - dup = path + ".py" - if os.path.isdir(path) and dup in plugins: - plugins.remove(dup) - - # Special case: the legacy scripthost receives a single relative filename - # while the rplugin host will receive absolute paths. - if plugins == ["script_host.py"]: - name = "script" - else: - name = "rplugin" - - setup_logging(name) - - if not session: - session = stdio_session() - nvim = Nvim.from_session(session) - - if nvim.version.api_level < 1: - sys.stderr.write("This version of pynvim " - "requires nvim 0.1.6 or later") - sys.exit(1) - - host = Host(nvim) - host.start(plugins) - - -def attach(session_type, address=None, port=None, - path=None, argv=None, decode=None): - """Provide a nicer interface to create python api sessions. - - Previous machinery to create python api sessions is still there. This only - creates a facade function to make things easier for the most usual cases. - Thus, instead of: - from pynvim import socket_session, Nvim - session = tcp_session(address=
, port=) - nvim = Nvim.from_session(session) - You can now do: - from pynvim import attach - nvim = attach('tcp', address=
, port=) - And also: - nvim = attach('socket', path=) - nvim = attach('child', argv=) - nvim = attach('stdio') - - When the session is not needed anymore, it is recommended to explicitly - close it: - nvim.close() - It is also possible to use the session as a context mangager: - with attach('socket', path=thepath) as nvim: - print(nvim.funcs.getpid()) - print(nvim.current.line) - This will automatically close the session when you're done with it, or - when an error occured. - - - """ - session = (tcp_session(address, port) if session_type == 'tcp' else - socket_session(path) if session_type == 'socket' else - stdio_session() if session_type == 'stdio' else - child_session(argv) if session_type == 'child' else - None) - - if not session: - raise Exception('Unknown session type "%s"' % session_type) - - if decode is None: - decode = IS_PYTHON3 - - return Nvim.from_session(session).with_decode(decode) - - -def setup_logging(name): - """Setup logging according to environment variables.""" - logger = logging.getLogger(__name__) - if 'NVIM_PYTHON_LOG_FILE' in os.environ: - prefix = os.environ['NVIM_PYTHON_LOG_FILE'].strip() - major_version = sys.version_info[0] - logfile = '{}_py{}_{}'.format(prefix, major_version, name) - handler = logging.FileHandler(logfile, 'w', 'utf-8') - handler.formatter = logging.Formatter( - '%(asctime)s [%(levelname)s @ ' - '%(filename)s:%(funcName)s:%(lineno)s] %(process)s - %(message)s') - logging.root.addHandler(handler) - level = logging.INFO - env_log_level = os.environ.get('NVIM_PYTHON_LOG_LEVEL', None) - if env_log_level is not None: - lvl = getattr(logging, env_log_level.strip(), None) - if isinstance(lvl, int): - level = lvl - else: - logger.warning('Invalid NVIM_PYTHON_LOG_LEVEL: %r, using INFO.', - env_log_level) - logger.setLevel(level) - - -# Required for python 2.6 -class NullHandler(logging.Handler): - def emit(self, record): - pass - - -if not logging.root.handlers: - logging.root.addHandler(NullHandler()) diff --git a/.local/lib/python3.9/site-packages/pynvim/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 975c4291b71540082bb3b0e4efc48ea464ac3f94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4935 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 diff --git a/.local/lib/python3.9/site-packages/pynvim/__pycache__/compat.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/__pycache__/compat.cpython-39.pyc deleted file mode 100644 index b9045e7ae0158fb0eddc0e86c30d31cd8199e0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmZWp-EJH;6t-t(XE&2gi^7i(7sv_{?N)RbH3*7?P#{I37lepSiaHWZXUAuEr>2wz=lkq@Ybznxe*f+5CqKo6 z{OK0gTZoH2?D~5&oTP+P9#k}?ehkt8$FK?)QQDyd=+l@-C!MqlUA4zMJpP%a5%kgx z-c1wHgH9UpUYbA;HehoarhUG_6O7s7!I%s-&xiYx1Di_43c09rQ%=gNG)tBjN@~px zmu4;nI|ZdnDfI9;Vj>3vYB#5);Mqd*rh-B6+<{gUO%b?=b&GK9VBg2CYcz(eh@sB{ zwY?&j!4(7E=oU&^lzQ;9%izqpVI?uIQB_VxwWoJ?`0+@W2JY5*agxtKqhFksi%~0yVZBt2)xKl#O*AA< zXpbiT7x~#ML7zs{N7qXf&@X;a2Djt?xh1#9 z0PLN6AAK+wdTt*YrswhurNS^;lw!sfpf%RCJ^TOY@YqHJXGSt14Y-BU?PdqI$bt_|dT=rpoMp>5=5cKgBlBTVnx7N8Al zSr0;#o3D$F+p^j2x@cZQt+|Oj+09}O#YyI)@1R3(qakq*`FA~_!QWAo1nMpH4sO_P zmT_5RnGN+)t5?yPhIsG1RMZA8ZGZi^WTlu&n>-w6hmViG{Q6+mhNUoRR7o+jZ#3-< z$^f;cbhZX(JJU+$CfztV{wh0qeE7xKpL-3ny8+4r?|ss~R-d|O%Ii1^dWg9nCLv;f NJ)&_C(I`m5e*lYTmyG}b diff --git a/.local/lib/python3.9/site-packages/pynvim/__pycache__/util.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/__pycache__/util.cpython-39.pyc deleted file mode 100644 index 28e17e41494a93df0cec5435c8d8685df641ef68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1982 zcmZWq&u`pB6rLIX*v&RgOF*TmpmGbUYN_=`ltV!!Dhdb?RgfB~2aC#hJ+r&s_1ezN zY}#zRr$nL`{sRu#WB&jo{+79N%9$G%c+XCnEgfl|?fLcIeBbw;xhL8Z}XL7 z61u{H)g69`uky>k*YeC|NvZ#MVy5 zDyy<9dSox?iMt>W4x4Q~Nyoy|GEPJ8LiO{Jw7{b=*Ds5A_4(|yLEH@1IF?4koj37Wg z2^puM#TmDNUb`lr0Npk9q08HV=Za}P6H)c+Mdu?DJuf-@gp(Hn_G2RlA9?I_}DqNB*T(~`qN z7_*hg`ozO%G?7jcv6&7D3R+Jh3*yo zQ}ZImECfUWS! zf=xrmuc^ES-%G%(JQ@hlZ7H{Iz{KCs$?TI0Trl7$3Le!$R9nHD)id{Se)n+h&)7W= z1n#OrYQbx7asv)Ab}e$iJ%`kZB8ejOt=he@#{zQ50U=M$nED82qQJt`)F%*ND@zlRD-pI{h#uB3->HQnZ8*fN z?l_;isL34+r#;=G-`_s3^QN5l{+wq)L$(8xajVv4%nm62a C74Pl< diff --git a/.local/lib/python3.9/site-packages/pynvim/api/__init__.py b/.local/lib/python3.9/site-packages/pynvim/api/__init__.py deleted file mode 100644 index 31050f9a..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/api/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -"""Nvim API subpackage. - -This package implements a higher-level API that wraps msgpack-rpc `Session` -instances. -""" - -from pynvim.api.buffer import Buffer -from pynvim.api.common import decode_if_bytes, walk -from pynvim.api.nvim import Nvim, NvimError -from pynvim.api.tabpage import Tabpage -from pynvim.api.window import Window - - -__all__ = ('Nvim', 'Buffer', 'Window', 'Tabpage', 'NvimError', - 'decode_if_bytes', 'walk') diff --git a/.local/lib/python3.9/site-packages/pynvim/api/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/api/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index bb1bfad774740976ec06c4ed9635330c4fb86223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmY+CPm9zr7{=31r|on*uKEEa*B+)7yeNpQf}odWVHbp4GMOebjhjCu$?PzGBM%-0 zKTEHk{0g2-vJ1|p^x=IIo+rPwA@$(e0u{1EW$fo-AuCkHIu~cMMzyaCw4~)VXcph(9&HcyxnSui7`A<&Lc${)zSTfu!^2=rHDrJB-`$IF)aurhCEO`O5@s P?Ip|W@wW7uknGB8#v&WK!Txy#Hh zWs9KEgOg(qz4X#cbZKFrXio)-{sBGolrzy=Px%*maev=8%jHAz!7J==c4v0xoA3L5 zPx*_B6$95l{(foe^_L9ezw|JDIe55+J87a3M$-_cutKwIH7%3+c4&8`VeWO+#ymtNW9d{>I z?!#E^1yS357^EH7cN_ab*S*o-*^#RLJ%})B=BRj2cH>mmtWo98eedpXHh=zkr;L*G!M za>wt7sVd<$H~-sM@5EiXz8fcfsowo)y&lFbKU@!k?RCBL2lbEFlOUDv^!(PI-G3;eHmEsdrLp&nLv9Si)~byeXE&3P7+RR>dj2sfyF$41O2I z6>(l%z{rxQiHqU~=$#aAiA&;T^p@p{aK$TM8&AyUs$AVYC0@;+R>W)KGLM|btk=aG z+&?4EK~Qh20*D@*x$Y{)hsI9Ek>&~Fk%uR*MKTy))VFanCWu2r<6Fr6kR)#n-n%E$ zzJg#o(vAAvZK>RN#|?u>CM5UNM^8Z9u0O_T^HjbMP4ilDKT4mPqmq(e^<_d`Cz0XK zMB<8e9hE#Ul#%EC5Dy81)*38n5ZAMz87$LLi@2HYd+4Ob&`ixIR`OPA4b3O!V+$v- zg*mi_maxtN)rXF7E&$auzKi}7>#@y!2o!xMn{N*tQ9N{T{*u1|_S}{!j;GnkM|Yv6 zNf@-GyM2JOr?L&UFwE+eikn?`NIk%%u7BWegL$&;r@_7?6-j!s73>_iy%;ct+9X=9 zh{rM##9(yug);fM8`xDo^1HoIuDS2L=LQK&CG?Y&slvfGRd-8M^X1hCTQyjyFm$&S=H%i_}*s z0F=hPT0xz}J5{CuGf-#f*9HUUk+tA?*bxS!>v^wWQc^`@R4T9n=glhq2CFwTu~QRU zHciSdGEQ_e)>3qGtX<8pW&>kp-&F3Lwjfo8|ZU}&LJ#)Hg98S=~)>T z34etQi$(N{j74i$7{bWtFKgw&f9}a%=mU2z4#!^xdyovdl&z^#Zmo@_JCD<&_@JF% z93DzjoWtPx0BMXS2uY4Xh*|;TH`FTHT4_r34oOy>!|PE&ql%EA&Qp_n6>VdH1gxx) z@IJakg#f=HJ9hnkWZemn1l?vTeuS!4S7*veq&uQ9-Bk+mhqqh+hcuUn8sJj z>_IL69PG%QR4PA}ne~L0kEJ-p>&*_-n)NDENXQyWrVTDT!jQ}fD>lx7^~mkARwQ+o zzRo%A_j)S!TOG0q{RCEeTef_3ILPS6uo^8tkhT#jL7s$sI)6msCigakxDGjhV<#8flA+85 zGqLTtpW~p1PCYhhIq58|%nm1h7qUv+DTrM`gtO*;`Jk46(5RV;99+$s0C@hK0I856 zjskP_Ip%6-SeP2q+|Z`x%8YlVcZwDqi^ZY2 z^8`CItwrQ!@zz2n6Mjzu7+=(%Ar!)Z77dZmFt$F;2=(2qdw$fGTW-9)D_iLrf`I@Q z1zteO1W7{T_Ta#?5N8}R0!0P>Y|P~68t?)POk1`=&6wnBMlug@B++OQY{nNw2Pbg< z0(Wu+4Ja=TOT&UN_v|M&Ioe&Mba1p3C?fQO!?k}`!l|6WrR#!F)Ct<15O+$k+ca({ zbZ(x_8Se|><#Q3{7C961o?41nr%_a9y>FH~q1RS%zo#zI8YduHkBxYVpv6FRTqESvCY&jzP6=FCiMQRFy*051S)zQ|9+7Paz z->i_?&-hU0K1FlH0QD|4M5t~!V>mgtY=U8Zew+M4@!8;PcK*4E8=FTULTtN9-~R~B zu%MO^wNYlgERZ9B55~9Vq4BshEbStzn1M=>>Hq{6|2t?AAqM8A--GLu)9itJ-S$(c z0x;z7$ANJBQIy+SC57@IPTS$@?v@6?7JM>nSI0;0uq_d(!?7YEPNDfd6<{wcNM0Sr zEv4XLrysQ_D5$%?N+wAJ6&A)}wYx=vsYmkRL?m7k_f<i^LjBpO^Y{Q}sE)N-APeO3fvtlKs)(p;G00E`}61+sMo?y{yg zZ7e#c>FNV0<$$!4T$-^`MFpo~E}7P|!TC(Xk8C~@v6G>;akGXWsd1dX4Y*J2I=j_* zhsy4gc2`T(%vvHve&zSLwNtVOV?Rn?y^zDddjA+w$W3kpp}ec)`nXHsJK+y;N*mP& z;BP7dpzJ9pcpL!~_WckAwPPs%!-Vn|;M$v+%V*35T(TI~NT4YQ{#j*`X}W^M0}=3P z&tv3>hz!IZCjs*o3ZiAPBu?Us z6Jh}ZUQushu@(hYhL$rPN)uKfZMuggK!TaA9%kqW(53` z&Y@?rN{W5yW@dEI$(eBp2bf~VC-`sA3_}nFGINL_PR4>;%n+&<6ML8;7}M*}TQKJv zORvOYRkyI?blp->x#RhVCAI%2?u59g59@G^N*@==Wq#b_OI3spl6?#JIQs$C=%7U0 z6AQ(vWlE!WA@>Ugm#kLl;7l$g!lq@Cj$Ok#nM2`<+q`thME#5QqD>8y)TVTSYd4J< zY1o*QLzB`0E?HO%KMgtjHwrljfsDCI5*S)sx|t&KGkmG_dles|hD1WIGE6|C{@2+qN`TQtvOc@!kGUL(p0Ves59yc6 zgD_yQKI|_Dgkx^Lf&M&=bgu7k>oO%M)c?4ufLe(DY=-nXt*V)gT19XJ0UhG=3j|=lZO2P+1WqgPRIn|e`bZUU0#4Ma4JQ%!L-++`UHcc75zWBI^0(s z#iDK;DPq@XF?+8INQxxR=`j7j2bl~!p^ajTx=imEs3Gkf6?OT5H<==e$276Fbhr(rlbqv&bXwW(g+iHO@M5$Sx?s5u0Kl)oM+@k=mN+ zp1kgntSK3)aH#A7mj8gVs6F5dC#Zr0SE?xP9Qw+E+B3H;YQyLAechwc$l=0FbNuDo8m!q#?-b!>WdO5oCx!qfhu12q*=ThW+Y;|6pUcaA4 z%Fp&fts;L%<%dcoe!i#tcRu>S?+?Q)Q(5=t;KbVO*hOQKjKlu^4w_dcN!-V~fzmqF zSrDl~I2q>8tv)Bue{4M5!<8-JrYs1;>N$~(?VX~vc@U4@;|iM{w`c}I5{^_56zw1w zrO{-__EHdhHVKDjL{q${w_iNi*h@!h<58MTl)iO)qdQFd;c#OZ?`({Z^1U>9v-{f{ zS)8kzBs|uq-$9A0*Q2RYufUBjuVdENe!@Za!g!?KJd(py@EM_l|RtwsAAp+{U97B9))=bA&e%_0yr}Km71V7wjjOj+01Qn zn}>0dVI?gK3)_$clsqzR4ME2AIdq9QxX!!=V8z3%>wl2@qe+&-HRlMRt^7dD<5V9I z@?om?jcmEt&*^u)#;(ePgHZPxS=ETtP;kfXych+l|r8D@rm#N{P05xJ@dKrtJy0dO^ z4}^gjDhYyD@RVJ_&8pY!x_uGfCA(=ie_40&`{i`S5YesX_sMegVVhB^ngvo*u}_g~kYyWpf11mami zplQ1LB5u!Z{WZ2vqg2Hamk)w93}#K-EXM&y-Y@5PFf;lTbM;|+#sdYB!!aWJsgu5R zYzrs$KI6DEee0phCpz)B^aPeN@V6=EZ872P6pU!JwGx&xgxHENkw4;a1HmKAb6q|Q z6Gcs4T;!!51nRRO*Z?&d`L>+4-TrdAJkte7&uN03h$fgksfTCw2{m9(-zX^u1$+Ju z0%GK+3ADioS%tPZ>UJEVjmE*55c*ZDv_PEx74&@5O!#Bwio#1-@C@ z2P|Y4A?I)HhgNJIyFask%4B6vuYF=7r^IUJkS@JgWjTpsaw{5TN5?Y~^q8~?FVwqP zQQtr0?;^#&iuagKDvB?bax7Qc?6iz^H84lha*9R}L}?!ac$r=F5&d=E$bsf^b6bcV z(gZc-zJg1#aMSS`&DCb3S!;SS(#Ob|5A}5qSLWmPf2TUgrlGm?^ll{}1S5p6^w38% z@J9-HI6{_48O0dapyFY?uY8lCs|nq68DVBLt5|(LBN+5B{mxwE4t*myL?n~y$}Gen zPAW`%>Tbf=y#QmHYj#|tCl?*PHl~$fY)*nAJWBcHRTkzKb_D_Vm|($CX$m=%q2sF|?z zH?e`yxG>|G*z*ncisEP5M~n^-?djn`@BrhLwY@yg#%#uBr@mlx`q#Or7~C6Ym!It+ zCh&c(&8PqibDA~jI~NOP5$%VVh=^w8h-mr&<1*9yGr*}6Tdy(Eo1Ulezp9N<7o!gr zMaH(iwB|)bEysmoOUli-*T!%@K49Ynv0ShXfNALOssw1L?;nOo1g%cr+`!mPz}4Tgxc zxeoyys6&t_A&LP|n|(TO^RN@TPSf#neS29Ozk5V-34I=0rY^TsfbIEE>>V+QVkb)A}t0Iy-R zC-Bb14+HP2Hu0ZnFPO9VcZhd0IpI31wg>C=X2A|5zBt&qc!#fueD0z#T{^a&A!47{ zpCHM5aPXtsw)MoZt?5fd^H1$R$H*T6l09+$)JfXr_m*`FJ#b`a`f3>zLmGiG5P#>$ zhm%1Nu3pC;#%1YP&#NeoVf`%*Nl=Ex|XZWehajL84~fxnwjm z0LE8DBP+X@6N`Zr!z_&fr+G$oclzeXz?J8zUjsCwi5sQD7ih?0q*15)i!0)H;&8BH zt-|PLnhcMSv-C}DTC}!s;xqBcu&i&fyCx3w0;aKxVP;IG4OpuKK%ZrKHtP&HI-^qt zsIx4e)39^&V5VVrPQy;AVfhse8v%XyT{TodcndN@2uX2p%^4Rq(?l7cpvb6u{T&dp z33S!PuYQv^`lf_eO+@+vA;8>?5DqYIA~Oq`R-!Ls#Eo*|BBw4q@(VIZN_lEp zB75a&gY03v<7}cjwb@yEA!?!P7=sb~BHRBa``+S>*jvBN+iB34MGi@$TNuoEfNa`c z%d{j%%z^dvlz=#CjFNCWot;_!#Gir?pdZn!xXAaE-kB7S;x3< zm`LG?i^@8nA&W=xFw_;8pr==Xkb$0#VNM4(nW<4jQhE^fRf$g?pa7yChb&92%iJ5~ z?l-s!id!g9l?V83QeT1-dS7);sHA#^F>GY;;JQEpQlTExUs(+Ex8=-N?)1mEKHcVe zf&hnM4h)s20S&DoK)<45OB}OVU`?p_!eJWiT zYncI{^6ch5+>pm_?89b%1 zV!@LL&TO3$p3p#sD%nM4wKO+v>K0k)DP0^lUChu#jW4QL@HCI{Aov-#V&p*8q72@Z zSU{spIhT}XBr++nG{l2cb_Jw5CwRJsfL*n5?6eq`PXM>ywLWb>0eJi|a_nbIr8!-%7)i(g>=u!Mf!mne zjr0JXz51?ViJO&1Vl;Dd-8stfx7XIRHpvG!Z{zS^m$Q8ax?L<^x`xau>X9q}J&~ot z!~a%lk&zWMCx{1uy!0=aSt2%o3Sc&r2tGvL8Lr3?FP7G_0dDm0r{E_?`TD>@fyDm8 z`obQdXc9S}H|ZcxG5&Ei&xHg&%H47fIOm*a-icMs`w5(C*ZzsMQ0Vlg?>tofiO%8! zHN+o1;cy>mq$z=9k&^pNo@w(I#kF8H% zfnqEnz%c~;)DpjTBB(|GE@nQr3y*svf;!z>g`GZkOo7H3Bu2grHbv_W3kyincmEBK z|BcI{ zK3kNbSy#gBAK>v{ab^7D!NO_%6**yXkXNU%X*U>}AEh?obSc;W$`c-Y7wcwi&g7$5>7;DMN6 zG2i!}lUZ5aEqguC9eMJ0@|^$t|9}45`A_-N)3qG_e)`Y9wR&+Sm-{2$WdDk|xr8G; zme1u>u8~uD<+SsSyqukeBj-Y+fODZ;?35a%JnIzOrf$aT40>r6H# z<+{?I>P$DLJ2Q=$&TM10GuN2w9BLfu9Bv%$9BCYpI@R`k=V;@oTu-!*b&fZV%XO`N zqI0rwQm!Z4k98hzJl;9gIEDME#uGt)^IMH4)pWysBd2E6)Mt1aoW56RoWcF9n#28^ z+&_i;L+UW@56k^o+#gZ%xSyB%r*VH&9mD-Gxqk-t$JGhkpOE_n<=n_EogB`;?YFw_ z%AHonZFQqSulvoQ{xjlnWhoz5`o4}@ejArl>pk7^BQK2n=54;ZayPoU-4AeCer>S6 z9_Xb?Ji&&pXx-Cs`FhalML|4a&ad`c$>rOAKb|p9Zv-C?f^IX2XI0SbslaQkdu!WK z5XQwVzb)O|^w;|SE$QZiR#)}5&|&S`4e#9#Z@&4?%6FEWxbl9W!&a{w&sq?JyG<{= z-Rj3hg5$sJH{1qHu9-u)geu zy6Lslvb)g^m)&MN@U^$z(qWX`1YNaMbKTZ@_NDvlFT34V+l@AYE?)A_uXoY0hc-Ra zO4`wQKacJLJ)tcO(e;)$+Mt%(_W{WwAX{=(Px>*Vyrp}C{<7O{bpwFeYm;W05aSZ9 z00)C^A5_Grgxx@&RC8b62YcECzPunG7+BH|rO^XFGu@rLIQCTr7rs&>l#gTLYeqrH z2?h^K%jQOlgR9r;_Ccq|`%m_f_T_y~c5B`nzjns!Zwr;q)az{PNB9^`)S8?Q*}npA zF5w8@g=h(K5Ggr|lSUyZDn}JQ%iYU2O1Lhnl3bV7uc)e;_$=S3sOzexCUI3&Q)>FN zTw?;$d=}@Lnp1~xo>Yg`5uB&g4K=ThqUN+ZrjFyuj5?uC;ykM!Q;*|3r%tISa6Y7N zswb6;nupbU>a;q8t0U?ubr$dD)zj)3oR6vnwTSaEwWOZK`MCPFTE_W=I;ZM5pH%17 z1)LvK7u9n(Kd!!`p2zu=`mXvO&QGZCs~2$omimEu5$7k>FR7PscGdgp74>J(<7stC zy^1Gi)CcM{bs0~dQm?Bkcyd-tqNSyb<+cX3`) z6$qsd^L~Mb*Aw%jlVX~VWtq^mO-{GP| z>4uN=w%hMPz`0S+d}UjB_1$aBZYyF{-`&!FzaMC6#>X7ORJjp^6fKx-rjs!3CBSsT zLp^9ln3BD9K$&*j8HADB?M3byYWeMUpj_3`K{IM^*WGLQD)1pvARVNu)pgzLc%kWO z)xzEhq786wxX~N5726qvXa&$WbpScVk6jT&DQMCbn<9SvEqB$zzM9ssu-_Q0g(7z` z>||IXSJ-CgcTm_-H~p>*LAnGK+cKI~_tpsZtyZ+*8R0$Z$hFWD+zr2b%YZAj`0-k> z;ooTyYX;Y=fJi7^7ff&pF0xo!b+d$|B+4aNiZnM>MgFEQLZTEV8*1R?F zwGYi3P`bOMuq8G)#qi}Fzt#5F0J=|b1NRI+J>&XOq+4qP@WL4L)!h}SUDFolP0}m* za1BBqlf&%azq$G$q6FC8O`=U1)((LH=E=LRKqNYf^#b9L+o-C zDG*`Zy}1!=Ck#u*0+YL8b0bg#!j3M1GifdX1!Q8IBz0ZD^!O%$V5`+`%OnB?$w0sr z1OUb?`nqmff@)9yO1LWHxQrv*KtTiVv)oSJ!|?z{-oyMy&aSgth#dV)REUZ@g?qT$ zDX8MfoGRfcpUg!idtb5lWqV(>_mx&*x445AcbuKVPVrt55^KUg0Yz}x%uL_y23zBz zNf^=JCrm5@k?bP1?5q*#F_Ihy&3W>0I(cEFfLZ~>nBauXftI=zga!&U>%+G3%^Zix zhA)k!M9Jnu%7uYQRVy&w?DcN5ZrYlN9HD+cXu=w74Izq>2_zCn;ISeV6JE6g2ucFN zzb0^#{_&cY`3)T59EvCx<##};lTe!X@<67u@-tRiax{slCwZNZ^T8K6eH7O}fBpPM zuM?c#?1dQQg%{4(#ppSY$#*`PZ9h04w!o&eabP-zcupQW53BFIFk62+uD;avJ8Q~+ zWBaV>+Nc>{;a!SL{sFv#c}4f_;Es?%JxmY;EoPOUJP$N!%c%fmza#@ozJCtg=@$aMM^F39woJn}dk z90eRj9Ho0@&@Dgw?pMtKQB2UqcUz%|(M0vsm&$Q9(SDl!=qFilXmQ1=7F+;}UULmx zaf&aBq`}^iPo(PO&!SF9_Q@4y@>5?9XGTNihgVmc99i;L#RW+xBmIxKz~s(BXgDbI znB+MRQ~d$`L>PCi{6lBA5*62Tt=vxK_wzqy-O>(3f>(|z;N;>xepihqa9vVmRk_D^ zHMxfos3zooQtn|2-edby(ew`ZA6GNcEWVqPHs<7dTCNX8hi#1`(Y(Dn8XdD&$DSXj7T6uh@g!0r*8RZkvxAcG5$!+E~pWJkD|D>7#wPuE|T%y-kH znz&tQ%%=CfK7BL$fFIijGg6}sR`RyMNR7jz`^fl<;nHb+8qkb5DlPyPO_8IYVIgye zq>l?2fS%x05&ega(jA`Sis=j&#=i|46}WG(5JJt!L!*MO;g5!mYSL$1xjfJ`AmU2X zUd&(ab^3nPT5Gji(YBSa`U!Scx(eSDz0m~?rcj!HsZl8Ahtn&dbvX5fk5Zn8%&K3;#g3zLgPfirFYY>!`jGdL zgC{TGiO7^S;rRHnj(y2e*Ga$n?EmMVglxJb#X*^e1>kzs_m zNPTBiM^QhImvI65N`IHtC_nZ}j+&Q>j^D&FfCxl7JVc+gkys3~Q3;-~)wEE4YSOJZFbYZkj0I_&1^6F9dmGX`P}W_9MQx1dG}4v0 zqVz~0)#0k5r_@?Ys)erD-NvL!Tw^zVE9Snt3dy-@O+oqa{dSo8GUB)r5{@Zt zL;4p#H+<1J@5W$slNeo{f@@2|mRnr7a{c-{*FWkmSU<{p`KBHOCVZ9s%F5lkk<<+I z)yWqfU*BF_s4pyy`hiM=&jV%FrXv&eMsL_2k!vlr#RZ~T3=n|@ApB{e8E=8XzXTXG z!Y;o(|N=D_9xo>&EAFDN)gV_nbs)q7C>_sA%7Y=5^|uqZ_^ld}(OJnAQpyi8l6n zlZ(x@Wkv*-+}bC*wK!k<8HM1_zQo_~lqJuB0En_!%A3=i5oc4Pb3Fq=JYmjojN%zf zNBc@&K_78(6A>p(r4ZLf?yXVeqTUPrUf(EpaRV-)rhc5o%P64WL~#|nh{(i6U*8Jj z^6f1-7dqiB0W2=SCElYQq>0}}3nA4|Zhk61^QBWL7LNT%u>^7Hz#z^)mLE=u(6ksB z(-buP3H4VFCKYMZiKA!!QcoXNN zT!ZCc{j6+TP4Zy!N43OzqCC8cVyCF`u!`m)D5y;b3a5DA@d}^kKX=w02`^W7OP}ZD zjsfQCZu!2mS$t4}&5vNk!va^9piIicKfJzw>`)wb#5kLfk4)aIcCk}V7-S?B#T~Gd z4z(pP2-yTRBlFjH`|ZIkL|cLIE`tTQB;GfmV6xFU3Rl0)DZI_9CZr|7Fv<|s3SliH zXawQRFd1I=Y{Qv|!pfL#r}0PY{Rk1bhT?wy0kk=EH9`yb#bu@8IGnkUr!YDZ1NtD> zy->_W&i2iGj{hqEK+Mhv@%wxEhlSk&+CU`eVLqSxH1}by>s&Bxm8sK#+``Im*~qr0 zKfr1cN1L#_34myK;genWlidZ%oth?an9}4Q;iP!t%H3ul?u|$b&A@_@4VPH8sDFhI zuA_*{nB)jwYBC(wyK1&0xWgHXNqql9>#a5x@w`!ue~WKIzRSTvoXR_}n5JmXeu+>3 zZKp*e1_oUbZKHt4zJ|t7PF_t>-oVY*p*)}aT9iA2awm&&1)G_uzPK0FS#E`$!hq93 z_%4s|tv>*idoaCJ7$G@9?rgT{12BBdB4$su7_Eo%C=NpN@Z47;c~4sih!nzYNc%8S z7-9}D5Mt3RjTxRoSCVaN$XA|b;gtgJ$)*Q%Q!-YyJ+T8Nm%LQ44=CZA;P^!^sWUG zN91}W1cxZ>)ujE^`U;#L8DTNRx0=FmkARIQ_(nkfWA;oCa*mDfq_4gqq!%x@d!bpQ z=)x$2f5Ac`;zdjpM7_z2Kalb;?0saAmOzhq#n2@^>Deee;Rf=SA< z9dbQp<`u5Ti#;=fh^rr1cZ#5x5Ww$3%j&v8(SgYFu-;2~;QhA@ASM`=z8V9D_~h{h z>ysbg?c_2;td@;q=^&U!YC~{qr2J^%W2B~$WgwWc?k+t>EVwg1y~htkpaQW& z1S%M;HFPf}{;qv0|pK)<9uoK^2x7>hb@(5T~ZiyPozcW zX5z4a7hUZIeloL6_H(>9<^d$|%$LJC;fqX#CYd1lqaDHHhd9EsD0YgwT%yRsah*r3 zq@W7&6*`0~X#~7NM5DQ(H}Ua76FnwqrcMpLjfzX$n+1;b_YxzG>Z9D)kq1CkFXG5u&(@*bjEF>pv_{OI=Y8vGwI+jbxRj40h8o!9->LVy z>4*CvoFmmd*tSWxhIjh=5f@KpY9S>o1gUXlaTXzs$au{6_ zG@iPG@Ecc%eJ&B+!ZK`d7wV$}&7tZI6QH-Z291W!v^+HGo7p%{YDBip_fKS?HNK>M zF$O7x@K+J~xvzjw{F02Pho$)bAgVWx2zqUAo_U((0v(~#y*w~8UjK9k`Xj=ue?vOwG5m3(13$sY-jR^rgKsCb>;Q^2q`TFS$e3DdG=hHE$h*lmF z(xf$)Fu{(qUPywBW;R`B=q(FV5`wGSl@m&RFL@}S!2yvepL!t&GDDFcF71PrPk%93 z{g1#g2~Pl*;8vAn_Rw>DRVgf5^}5LALuw)-BT!+`Z-^750R<|&RYZIw9i^p=T_;U# z47#^Rg6^FzLJE@4(1FY_jWAq|`GR%QO+&uwP z@>L!6>#V1+^Ia5r*NRT3Infae#rIssoVxMsDr9v>GODQmm- zy(ixr@DFlx4)3pgEggt6Jia26gNwyu4UW;P0JJcoK@x|rqe$$;*Kg@7jQ^^b-`Bv0j7%{7GO85D;( zDL5e_#*mO9@MTH>a>p%1C%YmLBnj-R8?Z6h0J6d+TTyCKn#jjyP9S!U3>p~zh|(c} z3<+aQ6lPy=zD!I?BBOqbIfnq4jhU1(wnk}-`PJ?ru}>S?B3Er4vb2ZvNuh3&F7uvV z@rE&e=`0m7qzpzxjCeZgr{d1eUgI}X3@1wqXvL->azGas86B|!>UL50bu5n}L=CSu`6Sy~gc@&3 z&`_GA@N8lA42cBlmrQEs7C4_=kA*idy9qFgkVQQhiU2ol&%l_(z|mhHZVJqZX22pbayUl}H$J#ANnbk{iQJ&B-Zq$OX>GuP#8MgM)yqbLL zlkDWr+=Nw9$(u)W@P0SUe=4Q8Y|0ps93*ok=pXnn@NDQxuCaBuYIZ#Ss&wg@y(1M4XY4MoLs*b-_vl%rcY7OCm9f8U@`&li!NP zYBD4e6$uS)w#1|mms)&d3No{#YM2@lF$D;@#qFgG;c7BvWeOOonaLTK1eCp0DoMq5 zN}{Trm-2XQX^1g`G=#-0zU-_-{y~Z6y?+@kT@PS4G%>-jeg>8Uhr&Xp?QADpNU2F^ z5K6@GkS;oAOaOldml$%VMMl>rs11B1SofM=JE(N)NgnF4pOZ%ChAMz z*;m|iueb{z-MzTBkk)>wsb9ea=X0HXdaj++zR=7(AM}&jcVD=0d$2HOP9HP^OJ&KO z=PVZ?1-X^-lKRlT z*6xt(l(e}SgxS9w9wUO0X|Si$v1v-%gaZ2O-2IQ=h1VXrt5_XgrBFjwpX3iDE2d_eZ9@^zZc$m{?;PWzuiwvt#=)$+C%|Fx?$WPVVF*QJdsv0R?K}OaNJbae+kciOsq); zRH<4##wBJG0Zl*OXRK2dh-zmXoN)pqe&q)F9v1VnsZVKknhA1~-}GB7-ez%t>8+W7 z_IoKy!)8K2dtO+2&j^2B_}D)^MpMGXK?q#W;9`i(zy~m)xB`gP!oy-)yNPYhC0Lto z@Y^Os%0>20M0Lz?R$`50==a)oVjmdecC0#>egP0I*zFDyBb6Ny1m3hv{}Sw&3ailU zB!P$((|II0Xm$=TfVlF`jVoj(+%tI6m|~Zng>Vlg<04=Fy_A$?S(+^lO|*ya_E9kn z8PnJ_RNQnVD;asol0a4*K5v~b=JT4pi^lqZJtO||YsNww+jm#jpQ1rY-sNsi^BK(N zI>%HtvLT)x`{W>Ii09GiXg8l{7R&x1o#M{$q;SSTwZ=GutQW{dJ~Mf%)Va5}p`R+M@qX%?k@O85z59q=(Of=n(A@2!0P)9LUMY z-!Fo&A|5`4fcOxbx_5KGp6k}k`9cl?!X^ydfGC7ax49Xx_$2f#!-A(FAtRwaH$=Ty z`{cCVWtN6pBaOt`+!`|k{Rpp33P&n6RJd6|#Bxn4eVgWhFvhtDH95qVNu%9AMyTV2bEKZ|{XAOUm zIb}c9k~Lj^mo-MAt-sD&Q7*s3E5ajM=qH3l43ydlXMSR6vYtozYfH{mtl2{3t>AQ1 zu7vV8mkL*J;$Ht{w6ydrQiMHbu6bTu^K9ZTuBSZjW0>XkO$BM^y(S({%62}p3aMR! z@-&O@vyhaTOT6Nuw9$<3^U7yIF4Kxdz~UB*4Hg|1T^3xN(jT+XEGVh<7K^(qwpm_zNsPXYpGssDefD=^yjzud$&1&IowHtDuxt`*|GUucD|r#bZvs z#-p73vUaLgtCp(e>e=cf?#@<=@?WWyYLmFC*n9KzsNBz1`L2ff@n!80o=jJZwV7&h zY^tFjS;D`BbI3&R>;`4YAHx;`vo#s!EB2>g<84{CCu2*4Y)(cliJF47G_9BM`S3r( z^JdU><$VYzqYV=0;j-D~0IA2BBeIM?ARsCyk!c01aHftTqYuM0S24D|4s z1i>^N*=m;`p0ehG2tLM=8LqWZ)Dd(lAURt99ej77!pHo@d(ZpB3_Pd*KCW`_1k>v+!hetf*YuNM8$V5fE&CGCBnp#o zz^Vxg7_4&~aoIeHt3M33jj?9km4|$rU)zK4c+z9eHd4?#p7-xLPBFY4vlnJ~WHj2e z*4T(irF6s;@eC4jUq}yI0yeqYogY4DM}^JKpo4bp$X3_vcIVsO-j?K4e9`p7+NYD6>2+FISc(^xxz-{}zkC&Eof1h{AZltKVnw z4_W*p79)J5ND<-ouh|Pn1<^cV#Ba4IZ<=^G_D4!y!XatZ2g_7Yv!p5Qhflp3w6QPA zZsuqFk2@dW2_O({_kz{;@dj9M^wk^F>?$U5<=&ADYN3mvDqsjt8MBD2;v>BPefH zpn^)~S2A!{Rh9G(yJGO08IV+siC_ZtYUy1`O{yt*QwwT%Go9X*%&%$So5^4jZ|3;h z8oX17K%B$+9Do{re;;uI{5${%1MxwV*2dk9{;+yNo|8byAFoq_NyMC*0T$?9qMb&? zxP(3a_z@c`*PpkOw7F!*90&ypF0XJ>GcfRHSGBtT>rGuVp$$Echj#ymScZgtbYFiJ~3~?A)lk(U{Gv|MxK`03>7nrw5Fg&*n!! ze6um1*f*8zj^9U*yJBmc81*@vO^9vZebbQ}FtU>=3q~^fKR96Ye0FLC$;#5yBV~VF z<*H<$qivZO2nPjR#EL7JP|UW`!cl_aJw1(71*Po&qzGBW1yx102$!dTZ3l8B*W+iA z&HK~|fX-dQ5xOW2QYRx%1_HjKFQD4+!af0?L~pQy0ZDE%vr>QMD^xLq7FY!p$(|_U zd|Z;1=0_f~MwTF&$c2q9@fz{M4#2ipn-_=;DnU`% zhu*TA_z$Kxv63oGHcN%6=UA%zaqKcu*qg+kLjebX2ae~=UZdetiGwi03L_|3kw&P{ z47ncX&7c9bzv*`&CyBv zYGoxZN!V%ly)$w?lV-m$Y{2z>VGXVYzlZR)spOqO7(#w~s2-P1)avSRMw?`-Pj)2@ zZ&|zvqeZS_!HieU2MX7CV2KQ@RUD}NXgjMk~B7&E;1A0$4CIs z`vK8PgPs`}RrrnkA7&ZF)Z<2oPuW@JYv$!oQ7J>e(c~n>m)RRVR8G!Xv09S(w6rMh zQS9_W{Ud(<7K(U6gkrDP4n@LXKP&Pt0)|A*rqzlKz?feqIAnfAM|M;jW5qb1+2>s8 z=ylES_Hf-=6B7Al4f(|k^FuepMSM8ZTB5|J`6An#u@B@&apGzFfpMYahcMzv`wYSA zw)tU?Lu>+335H%h6T$mUJkqc8dD+Ba%r1^)KBh|}YDa{apz0vZ;>Uu_FBiN5ot6tJ n1kKKaDv9afKY!K|cFrjl%1-gb+;8Og|HRx=bJe+XbCdrUDd(1d diff --git a/.local/lib/python3.9/site-packages/pynvim/api/__pycache__/tabpage.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/api/__pycache__/tabpage.cpython-39.pyc deleted file mode 100644 index 48082c88cea0f177c5f956149d05bc732ff9beca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1552 zcmb7DL2uhO6ecBEcAPj!yEZutCTox?$m!!?6mhJ+qDPmPy&2<(xdo3e&5GrFz6E)e|~sy{>dlg zZ+zJt0lfSK(|!j*keCQ6yo}~v?B#y!QzHC0I3^+x{te{PyY}Ob=)5AsaQ@A+UryLW z8+N75YgJ6ym2wyC^o`1yOU7j~l{Wea+mfMIhc9KWovioU=PUVJC5u$n-LrOOit9E9 zfNh5T86J|v6u^0c#=h|4;2oJz;fvs=7k6YRIwHIw*EH@z-W9zj??JvJ`c1y`jszs` z1L$3Y2c923W2V8gg*J)@1%T&E@I0k0geH0r5mOhYWe^;3bV07YOK(Bn6H1)F0P?QA z1>u44pqD@Y>!eUlC7GH_HZeM9R$8lc!IDC-R13*P;u5Cvyn>#YWO{rlQy2C7Y&p&@ zBs*WPJcpkOm#D(RPNvy7ak!rW-~SX&RR69_I=O;M^c_ zbr;qMePzK7ftA^$4iYo9x3u2jJk1hoIlm?U9FHz^E=QNzR?<9rGKw+{fJd1ckII?5 z(8c5E>BuT4AL4<~WAGjEjFM7~meNJ#%!JT$0Mnx4Bs`$=gQeG^6|OCTQEbHd0;a`F zvmn2Npnp)1(wl#OEFE*G#;?sOK#Iy3S-5NlM5mPn!a)dJvBD7F+oEYI8# zcS}tV`k1|SK)iL>@^lEfMb{C3zQ01=mc9V@w=bouOu^1f1v*bQ0W#}UmNEGj^s`ZX ze+#X${0+!2%sv1x2N?bXv(wbShRO=%V1=@&d;!R#6}e05SW)F;X`=XO3llQfR{kGV z*e+lju-4?YrQt3bvq*BudEMtc*P_ZW-{TxDzpQjQ7dnN{yBv(gOCu-hZDXpsR~ii_ zcQbPbdAW<>D+u*qY2;L98Myv4VQ43V;x-opMYs4@j|N`g?d^E9AGGsy7@8xf)OT7_ tN6wNV81$U3As|(6+1mLRP&bCEMc}C-9;)L|yVwAZq=rpwz1806t_^k#+tRL+`tt^^&ssIyz)guXNfVIPtX0DsxGj+uX#vuiwQ6`1 zZ%JeWX5Pj-(r$x&4ev_31NI)?m-Z&u2lxwVZ{h18!VM~zPxl`pDmS>ed&g}ipoIro zc!3VXsv>Oh+0XDW;hNXlAE5a=9VRrU_a70C_=uqXPx)|2XdeYRr6l3e1PzFg8HX&3 z{0YHmFp(pb+K#(DTkni;Z;%h)>qVWCmpNe^OpB3d_+Fz8Sn}hqy-^yI-t&~@gx>wG z=R|4XN4+Q<^s)&brO7wW{T>TBInMmxg?~mE^o#j>eiru16|+fU!!p2fQ|!fnN;9V& zFqFey>+cNdvU^WTmtErRGwGm&j6cPgfwvYI zcMS?*sud>eZizVE0N^@2CF?cBJ*>o4zC$Ato{cyP69i(jWdRlX2?5oBn{z5Nw<}~F z0Y4sA0)Cd8kZOTjDHZJik7cPu->o^nHKe+^B-J>?kl1EQUAu79B)D3rn#6CHAag~j*aYKXSZB8HDJ%+4J&Ivw3X>!a0 zN=Q|YS8idQOf;A+uKnC$C0-)XCq47&dp?lRL{;!d}L z!iUc=g-^e|f+=*bW_l^-e^nj0{!@RDL9*>b+VDAKz=Zo@qLPS;4aeQPpeR=#tk$w# zj(D)ZaCXn9_o;ye;| z+w)%LepDiL&%lQ~6@C;E!^Ev?>21?8{{u7;YZw3k diff --git a/.local/lib/python3.9/site-packages/pynvim/api/buffer.py b/.local/lib/python3.9/site-packages/pynvim/api/buffer.py deleted file mode 100644 index a9920545..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/api/buffer.py +++ /dev/null @@ -1,217 +0,0 @@ -"""API for working with a Nvim Buffer.""" -from pynvim.api.common import Remote -from pynvim.compat import IS_PYTHON3, check_async - - -__all__ = ('Buffer') - - -if IS_PYTHON3: - basestring = str - - -def adjust_index(idx, default=None): - """Convert from python indexing convention to nvim indexing convention.""" - if idx is None: - return default - elif idx < 0: - return idx - 1 - else: - return idx - - -class Buffer(Remote): - - """A remote Nvim buffer.""" - - _api_prefix = "nvim_buf_" - - def __len__(self): - """Return the number of lines contained in a Buffer.""" - return self.request('nvim_buf_line_count') - - def __getitem__(self, idx): - """Get a buffer line or slice by integer index. - - Indexes may be negative to specify positions from the end of the - buffer. For example, -1 is the last line, -2 is the line before that - and so on. - - When retrieving slices, omiting indexes(eg: `buffer[:]`) will bring - the whole buffer. - """ - if not isinstance(idx, slice): - i = adjust_index(idx) - return self.request('nvim_buf_get_lines', i, i + 1, True)[0] - start = adjust_index(idx.start, 0) - end = adjust_index(idx.stop, -1) - return self.request('nvim_buf_get_lines', start, end, False) - - def __setitem__(self, idx, item): - """Replace a buffer line or slice by integer index. - - Like with `__getitem__`, indexes may be negative. - - When replacing slices, omiting indexes(eg: `buffer[:]`) will replace - the whole buffer. - """ - if not isinstance(idx, slice): - i = adjust_index(idx) - lines = [item] if item is not None else [] - return self.request('nvim_buf_set_lines', i, i + 1, True, lines) - lines = item if item is not None else [] - start = adjust_index(idx.start, 0) - end = adjust_index(idx.stop, -1) - return self.request('nvim_buf_set_lines', start, end, False, lines) - - def __iter__(self): - """Iterate lines of a buffer. - - This will retrieve all lines locally before iteration starts. This - approach is used because for most cases, the gain is much greater by - minimizing the number of API calls by transfering all data needed to - work. - """ - lines = self[:] - for line in lines: - yield line - - def __delitem__(self, idx): - """Delete line or slice of lines from the buffer. - - This is the same as __setitem__(idx, []) - """ - self.__setitem__(idx, None) - - def __ne__(self, other): - """Test inequality of Buffers. - - Necessary for Python 2 compatibility. - """ - return not self.__eq__(other) - - def append(self, lines, index=-1): - """Append a string or list of lines to the buffer.""" - if isinstance(lines, (basestring, bytes)): - lines = [lines] - return self.request('nvim_buf_set_lines', index, index, True, lines) - - def mark(self, name): - """Return (row, col) tuple for a named mark.""" - return self.request('nvim_buf_get_mark', name) - - def range(self, start, end): - """Return a `Range` object, which represents part of the Buffer.""" - return Range(self, start, end) - - def add_highlight(self, hl_group, line, col_start=0, - col_end=-1, src_id=-1, async_=None, - **kwargs): - """Add a highlight to the buffer.""" - async_ = check_async(async_, kwargs, src_id != 0) - return self.request('nvim_buf_add_highlight', src_id, hl_group, - line, col_start, col_end, async_=async_) - - def clear_highlight(self, src_id, line_start=0, line_end=-1, async_=None, - **kwargs): - """Clear highlights from the buffer.""" - async_ = check_async(async_, kwargs, True) - self.request('nvim_buf_clear_highlight', src_id, - line_start, line_end, async_=async_) - - def update_highlights(self, src_id, hls, clear_start=0, clear_end=-1, - clear=False, async_=True): - """Add or update highlights in batch to avoid unnecessary redraws. - - A `src_id` must have been allocated prior to use of this function. Use - for instance `nvim.new_highlight_source()` to get a src_id for your - plugin. - - `hls` should be a list of highlight items. Each item should be a list - or tuple on the form `("GroupName", linenr, col_start, col_end)` or - `("GroupName", linenr)` to highlight an entire line. - - By default existing highlights are preserved. Specify a line range with - clear_start and clear_end to replace highlights in this range. As a - shorthand, use clear=True to clear the entire buffer before adding the - new highlights. - """ - if clear and clear_start is None: - clear_start = 0 - lua = self._session._get_lua_private() - lua.update_highlights(self, src_id, hls, clear_start, clear_end, - async_=async_) - - @property - def name(self): - """Get the buffer name.""" - return self.request('nvim_buf_get_name') - - @name.setter - def name(self, value): - """Set the buffer name. BufFilePre/BufFilePost are triggered.""" - return self.request('nvim_buf_set_name', value) - - @property - def valid(self): - """Return True if the buffer still exists.""" - return self.request('nvim_buf_is_valid') - - @property - def number(self): - """Get the buffer number.""" - return self.handle - - -class Range(object): - def __init__(self, buffer, start, end): - self._buffer = buffer - self.start = start - 1 - self.end = end - 1 - - def __len__(self): - return self.end - self.start + 1 - - def __getitem__(self, idx): - if not isinstance(idx, slice): - return self._buffer[self._normalize_index(idx)] - start = self._normalize_index(idx.start) - end = self._normalize_index(idx.stop) - if start is None: - start = self.start - if end is None: - end = self.end + 1 - return self._buffer[start:end] - - def __setitem__(self, idx, lines): - if not isinstance(idx, slice): - self._buffer[self._normalize_index(idx)] = lines - return - start = self._normalize_index(idx.start) - end = self._normalize_index(idx.stop) - if start is None: - start = self.start - if end is None: - end = self.end - self._buffer[start:end + 1] = lines - - def __iter__(self): - for i in range(self.start, self.end + 1): - yield self._buffer[i] - - def append(self, lines, i=None): - i = self._normalize_index(i) - if i is None: - i = self.end + 1 - self._buffer.append(lines, i) - - def _normalize_index(self, index): - if index is None: - return None - if index < 0: - index = self.end - else: - index += self.start - if index > self.end: - index = self.end - return index diff --git a/.local/lib/python3.9/site-packages/pynvim/api/common.py b/.local/lib/python3.9/site-packages/pynvim/api/common.py deleted file mode 100644 index 21f5b2da..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/api/common.py +++ /dev/null @@ -1,205 +0,0 @@ -"""Code shared between the API classes.""" -import functools - -from msgpack import unpackb - -from pynvim.compat import unicode_errors_default - -__all__ = () - - -class NvimError(Exception): - pass - - -class Remote(object): - - """Base class for Nvim objects(buffer/window/tabpage). - - Each type of object has it's own specialized class with API wrappers around - the msgpack-rpc session. This implements equality which takes the remote - object handle into consideration. - """ - - def __init__(self, session, code_data): - """Initialize from session and code_data immutable object. - - The `code_data` contains serialization information required for - msgpack-rpc calls. It must be immutable for Buffer equality to work. - """ - self._session = session - self.code_data = code_data - self.handle = unpackb(code_data[1]) - self.api = RemoteApi(self, self._api_prefix) - self.vars = RemoteMap(self, self._api_prefix + 'get_var', - self._api_prefix + 'set_var', - self._api_prefix + 'del_var') - self.options = RemoteMap(self, self._api_prefix + 'get_option', - self._api_prefix + 'set_option') - - def __repr__(self): - """Get text representation of the object.""" - return '<%s(handle=%r)>' % ( - self.__class__.__name__, - self.handle, - ) - - def __eq__(self, other): - """Return True if `self` and `other` are the same object.""" - return (hasattr(other, 'code_data') - and other.code_data == self.code_data) - - def __hash__(self): - """Return hash based on remote object id.""" - return self.code_data.__hash__() - - def request(self, name, *args, **kwargs): - """Wrapper for nvim.request.""" - return self._session.request(name, self, *args, **kwargs) - - -class RemoteApi(object): - - """Wrapper to allow api methods to be called like python methods.""" - - def __init__(self, obj, api_prefix): - """Initialize a RemoteApi with object and api prefix.""" - self._obj = obj - self._api_prefix = api_prefix - - def __getattr__(self, name): - """Return wrapper to named api method.""" - return functools.partial(self._obj.request, self._api_prefix + name) - - -def transform_keyerror(exc): - if isinstance(exc, NvimError): - if exc.args[0].startswith('Key not found:'): - return KeyError(exc.args[0]) - if exc.args[0].startswith('Invalid option name:'): - return KeyError(exc.args[0]) - return exc - - -class RemoteMap(object): - """Represents a string->object map stored in Nvim. - - This is the dict counterpart to the `RemoteSequence` class, but it is used - as a generic way of retrieving values from the various map-like data - structures present in Nvim. - - It is used to provide a dict-like API to vim variables and options. - """ - - _set = None - _del = None - - def __init__(self, obj, get_method, set_method=None, del_method=None): - """Initialize a RemoteMap with session, getter/setter.""" - self._get = functools.partial(obj.request, get_method) - if set_method: - self._set = functools.partial(obj.request, set_method) - if del_method: - self._del = functools.partial(obj.request, del_method) - - def __getitem__(self, key): - """Return a map value by key.""" - try: - return self._get(key) - except NvimError as exc: - raise transform_keyerror(exc) - - def __setitem__(self, key, value): - """Set a map value by key(if the setter was provided).""" - if not self._set: - raise TypeError('This dict is read-only') - self._set(key, value) - - def __delitem__(self, key): - """Delete a map value by associating None with the key.""" - if not self._del: - raise TypeError('This dict is read-only') - try: - return self._del(key) - except NvimError as exc: - raise transform_keyerror(exc) - - def __contains__(self, key): - """Check if key is present in the map.""" - try: - self._get(key) - return True - except Exception: - return False - - def get(self, key, default=None): - """Return value for key if present, else a default value.""" - try: - return self.__getitem__(key) - except KeyError: - return default - - -class RemoteSequence(object): - - """Represents a sequence of objects stored in Nvim. - - This class is used to wrap msgapck-rpc functions that work on Nvim - sequences(of lines, buffers, windows and tabpages) with an API that - is similar to the one provided by the python-vim interface. - - For example, the 'windows' property of the `Nvim` class is a RemoteSequence - sequence instance, and the expression `nvim.windows[0]` is translated to - session.request('nvim_list_wins')[0]. - - One important detail about this class is that all methods will fetch the - sequence into a list and perform the necessary manipulation - locally(iteration, indexing, counting, etc). - """ - - def __init__(self, session, method): - """Initialize a RemoteSequence with session, method.""" - self._fetch = functools.partial(session.request, method) - - def __len__(self): - """Return the length of the remote sequence.""" - return len(self._fetch()) - - def __getitem__(self, idx): - """Return a sequence item by index.""" - if not isinstance(idx, slice): - return self._fetch()[idx] - return self._fetch()[idx.start:idx.stop] - - def __iter__(self): - """Return an iterator for the sequence.""" - items = self._fetch() - for item in items: - yield item - - def __contains__(self, item): - """Check if an item is present in the sequence.""" - return item in self._fetch() - - -def _identity(obj, session, method, kind): - return obj - - -def decode_if_bytes(obj, mode=True): - """Decode obj if it is bytes.""" - if mode is True: - mode = unicode_errors_default - if isinstance(obj, bytes): - return obj.decode("utf-8", errors=mode) - return obj - - -def walk(fn, obj, *args, **kwargs): - """Recursively walk an object graph applying `fn`/`args` to objects.""" - if type(obj) in [list, tuple]: - return list(walk(fn, o, *args) for o in obj) - if type(obj) is dict: - return dict((walk(fn, k, *args), walk(fn, v, *args)) for k, v in - obj.items()) - return fn(obj, *args, **kwargs) diff --git a/.local/lib/python3.9/site-packages/pynvim/api/nvim.py b/.local/lib/python3.9/site-packages/pynvim/api/nvim.py deleted file mode 100644 index 487478ac..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/api/nvim.py +++ /dev/null @@ -1,577 +0,0 @@ -"""Main Nvim interface.""" -import os -import sys -import threading -from functools import partial -from traceback import format_stack - -from msgpack import ExtType - -from pynvim.api.buffer import Buffer -from pynvim.api.common import (NvimError, Remote, RemoteApi, RemoteMap, RemoteSequence, - decode_if_bytes, walk) -from pynvim.api.tabpage import Tabpage -from pynvim.api.window import Window -from pynvim.compat import IS_PYTHON3 -from pynvim.util import Version, format_exc_skip - -__all__ = ('Nvim') - - -os_chdir = os.chdir - -lua_module = """ -local a = vim.api -local function update_highlights(buf, src_id, hls, clear_first, clear_end) - if clear_first ~= nil then - a.nvim_buf_clear_highlight(buf, src_id, clear_first, clear_end) - end - for _,hl in pairs(hls) do - local group, line, col_start, col_end = unpack(hl) - if col_start == nil then - col_start = 0 - end - if col_end == nil then - col_end = -1 - end - a.nvim_buf_add_highlight(buf, src_id, group, line, col_start, col_end) - end -end - -local chid = ... -local mod = {update_highlights=update_highlights} -_G["_pynvim_"..chid] = mod -""" - - -class Nvim(object): - - """Class that represents a remote Nvim instance. - - This class is main entry point to Nvim remote API, it is a wrapper - around Session instances. - - The constructor of this class must not be called directly. Instead, the - `from_session` class method should be used to create the first instance - from a raw `Session` instance. - - Subsequent instances for the same session can be created by calling the - `with_decode` instance method to change the decoding behavior or - `SubClass.from_nvim(nvim)` where `SubClass` is a subclass of `Nvim`, which - is useful for having multiple `Nvim` objects that behave differently - without one affecting the other. - - When this library is used on python3.4+, asyncio event loop is guaranteed - to be used. It is available as the "loop" attribute of this class. Note - that asyncio callbacks cannot make blocking requests, which includes - accessing state-dependent attributes. They should instead schedule another - callback using nvim.async_call, which will not have this restriction. - """ - - @classmethod - def from_session(cls, session): - """Create a new Nvim instance for a Session instance. - - This method must be called to create the first Nvim instance, since it - queries Nvim metadata for type information and sets a SessionHook for - creating specialized objects from Nvim remote handles. - """ - session.error_wrapper = lambda e: NvimError(decode_if_bytes(e[1])) - channel_id, metadata = session.request(b'nvim_get_api_info') - - if IS_PYTHON3: - # decode all metadata strings for python3 - metadata = walk(decode_if_bytes, metadata) - - types = { - metadata['types']['Buffer']['id']: Buffer, - metadata['types']['Window']['id']: Window, - metadata['types']['Tabpage']['id']: Tabpage, - } - - return cls(session, channel_id, metadata, types) - - @classmethod - def from_nvim(cls, nvim): - """Create a new Nvim instance from an existing instance.""" - return cls(nvim._session, nvim.channel_id, nvim.metadata, - nvim.types, nvim._decode, nvim._err_cb) - - def __init__(self, session, channel_id, metadata, types, - decode=False, err_cb=None): - """Initialize a new Nvim instance. This method is module-private.""" - self._session = session - self.channel_id = channel_id - self.metadata = metadata - version = metadata.get("version", {"api_level": 0}) - self.version = Version(**version) - self.types = types - self.api = RemoteApi(self, 'nvim_') - self.vars = RemoteMap(self, 'nvim_get_var', 'nvim_set_var', 'nvim_del_var') - self.vvars = RemoteMap(self, 'nvim_get_vvar', None, None) - self.options = RemoteMap(self, 'nvim_get_option', 'nvim_set_option') - self.buffers = Buffers(self) - self.windows = RemoteSequence(self, 'nvim_list_wins') - self.tabpages = RemoteSequence(self, 'nvim_list_tabpages') - self.current = Current(self) - self.session = CompatibilitySession(self) - self.funcs = Funcs(self) - self.lua = LuaFuncs(self) - self.error = NvimError - self._decode = decode - self._err_cb = err_cb - - # only on python3.4+ we expose asyncio - if IS_PYTHON3: - self.loop = self._session.loop._loop - - def _from_nvim(self, obj, decode=None): - if decode is None: - decode = self._decode - if type(obj) is ExtType: - cls = self.types[obj.code] - return cls(self, (obj.code, obj.data)) - if decode: - obj = decode_if_bytes(obj, decode) - return obj - - def _to_nvim(self, obj): - if isinstance(obj, Remote): - return ExtType(*obj.code_data) - return obj - - def _get_lua_private(self): - if not getattr(self._session, "_has_lua", False): - self.exec_lua(lua_module, self.channel_id) - self._session._has_lua = True - return getattr(self.lua, "_pynvim_{}".format(self.channel_id)) - - def request(self, name, *args, **kwargs): - r"""Send an API request or notification to nvim. - - It is rarely needed to call this function directly, as most API - functions have python wrapper functions. The `api` object can - be also be used to call API functions as methods: - - vim.api.err_write('ERROR\n', async_=True) - vim.current.buffer.api.get_mark('.') - - is equivalent to - - vim.request('nvim_err_write', 'ERROR\n', async_=True) - vim.request('nvim_buf_get_mark', vim.current.buffer, '.') - - - Normally a blocking request will be sent. If the `async_` flag is - present and True, a asynchronous notification is sent instead. This - will never block, and the return value or error is ignored. - """ - if (self._session._loop_thread is not None - and threading.current_thread() != self._session._loop_thread): - - msg = ("Request from non-main thread.\n" - "Requests from different threads should be wrapped " - "with nvim.async_call(cb, ...) \n{}\n" - .format('\n'.join(format_stack(None, 5)[:-1]))) - - self.async_call(self._err_cb, msg) - raise NvimError("request from non-main thread") - - decode = kwargs.pop('decode', self._decode) - args = walk(self._to_nvim, args) - res = self._session.request(name, *args, **kwargs) - return walk(self._from_nvim, res, decode=decode) - - def next_message(self): - """Block until a message(request or notification) is available. - - If any messages were previously enqueued, return the first in queue. - If not, run the event loop until one is received. - """ - msg = self._session.next_message() - if msg: - return walk(self._from_nvim, msg) - - def run_loop(self, request_cb, notification_cb, - setup_cb=None, err_cb=None): - """Run the event loop to receive requests and notifications from Nvim. - - This should not be called from a plugin running in the host, which - already runs the loop and dispatches events to plugins. - """ - if err_cb is None: - err_cb = sys.stderr.write - self._err_cb = err_cb - - def filter_request_cb(name, args): - name = self._from_nvim(name) - args = walk(self._from_nvim, args) - try: - result = request_cb(name, args) - except Exception: - msg = ("error caught in request handler '{} {}'\n{}\n\n" - .format(name, args, format_exc_skip(1))) - self._err_cb(msg) - raise - return walk(self._to_nvim, result) - - def filter_notification_cb(name, args): - name = self._from_nvim(name) - args = walk(self._from_nvim, args) - try: - notification_cb(name, args) - except Exception: - msg = ("error caught in notification handler '{} {}'\n{}\n\n" - .format(name, args, format_exc_skip(1))) - self._err_cb(msg) - raise - - self._session.run(filter_request_cb, filter_notification_cb, setup_cb) - - def stop_loop(self): - """Stop the event loop being started with `run_loop`.""" - self._session.stop() - - def close(self): - """Close the nvim session and release its resources.""" - self._session.close() - - def __enter__(self): - """Enter nvim session as a context manager.""" - return self - - def __exit__(self, *exc_info): - """Exit nvim session as a context manager. - - Closes the event loop. - """ - self.close() - - def with_decode(self, decode=True): - """Initialize a new Nvim instance.""" - return Nvim(self._session, self.channel_id, - self.metadata, self.types, decode, self._err_cb) - - def ui_attach(self, width, height, rgb=None, **kwargs): - """Register as a remote UI. - - After this method is called, the client will receive redraw - notifications. - """ - options = kwargs - if rgb is not None: - options['rgb'] = rgb - return self.request('nvim_ui_attach', width, height, options) - - def ui_detach(self): - """Unregister as a remote UI.""" - return self.request('nvim_ui_detach') - - def ui_try_resize(self, width, height): - """Notify nvim that the client window has resized. - - If possible, nvim will send a redraw request to resize. - """ - return self.request('ui_try_resize', width, height) - - def subscribe(self, event): - """Subscribe to a Nvim event.""" - return self.request('nvim_subscribe', event) - - def unsubscribe(self, event): - """Unsubscribe to a Nvim event.""" - return self.request('nvim_unsubscribe', event) - - def command(self, string, **kwargs): - """Execute a single ex command.""" - return self.request('nvim_command', string, **kwargs) - - def command_output(self, string): - """Execute a single ex command and return the output.""" - return self.request('nvim_command_output', string) - - def eval(self, string, **kwargs): - """Evaluate a vimscript expression.""" - return self.request('nvim_eval', string, **kwargs) - - def call(self, name, *args, **kwargs): - """Call a vimscript function.""" - return self.request('nvim_call_function', name, args, **kwargs) - - def exec_lua(self, code, *args, **kwargs): - """Execute lua code. - - Additional parameters are available as `...` inside the lua chunk. - Only statements are executed. To evaluate an expression, prefix it - with `return`: `return my_function(...)` - - There is a shorthand syntax to call lua functions with arguments: - - nvim.lua.func(1,2) - nvim.lua.mymod.myfunction(data, async_=True) - - is equivalent to - - nvim.exec_lua("return func(...)", 1, 2) - nvim.exec_lua("mymod.myfunction(...)", data, async_=True) - - Note that with `async_=True` there is no return value. - """ - return self.request('nvim_execute_lua', code, args, **kwargs) - - def strwidth(self, string): - """Return the number of display cells `string` occupies. - - Tab is counted as one cell. - """ - return self.request('nvim_strwidth', string) - - def list_runtime_paths(self): - """Return a list of paths contained in the 'runtimepath' option.""" - return self.request('nvim_list_runtime_paths') - - def foreach_rtp(self, cb): - """Invoke `cb` for each path in 'runtimepath'. - - Call the given callable for each path in 'runtimepath' until either - callable returns something but None, the exception is raised or there - are no longer paths. If stopped in case callable returned non-None, - vim.foreach_rtp function returns the value returned by callable. - """ - for path in self.request('nvim_list_runtime_paths'): - try: - if cb(path) is not None: - break - except Exception: - break - - def chdir(self, dir_path): - """Run os.chdir, then all appropriate vim stuff.""" - os_chdir(dir_path) - return self.request('nvim_set_current_dir', dir_path) - - def feedkeys(self, keys, options='', escape_csi=True): - """Push `keys` to Nvim user input buffer. - - Options can be a string with the following character flags: - - 'm': Remap keys. This is default. - - 'n': Do not remap keys. - - 't': Handle keys as if typed; otherwise they are handled as if coming - from a mapping. This matters for undo, opening folds, etc. - """ - return self.request('nvim_feedkeys', keys, options, escape_csi) - - def input(self, bytes): - """Push `bytes` to Nvim low level input buffer. - - Unlike `feedkeys()`, this uses the lowest level input buffer and the - call is not deferred. It returns the number of bytes actually - written(which can be less than what was requested if the buffer is - full). - """ - return self.request('nvim_input', bytes) - - def replace_termcodes(self, string, from_part=False, do_lt=True, - special=True): - r"""Replace any terminal code strings by byte sequences. - - The returned sequences are Nvim's internal representation of keys, - for example: - - -> '\x1b' - -> '\r' - -> '\x0c' - -> '\x80ku' - - The returned sequences can be used as input to `feedkeys`. - """ - return self.request('nvim_replace_termcodes', string, - from_part, do_lt, special) - - def out_write(self, msg, **kwargs): - r"""Print `msg` as a normal message. - - The message is buffered (won't display) until linefeed ("\n"). - """ - return self.request('nvim_out_write', msg, **kwargs) - - def err_write(self, msg, **kwargs): - r"""Print `msg` as an error message. - - The message is buffered (won't display) until linefeed ("\n"). - """ - if self._thread_invalid(): - # special case: if a non-main thread writes to stderr - # i.e. due to an uncaught exception, pass it through - # without raising an additional exception. - self.async_call(self.err_write, msg, **kwargs) - return - return self.request('nvim_err_write', msg, **kwargs) - - def _thread_invalid(self): - return (self._session._loop_thread is not None - and threading.current_thread() != self._session._loop_thread) - - def quit(self, quit_command='qa!'): - """Send a quit command to Nvim. - - By default, the quit command is 'qa!' which will make Nvim quit without - saving anything. - """ - try: - self.command(quit_command) - except OSError: - # sending a quit command will raise an IOError because the - # connection is closed before a response is received. Safe to - # ignore it. - pass - - def new_highlight_source(self): - """Return new src_id for use with Buffer.add_highlight.""" - return self.current.buffer.add_highlight("", 0, src_id=0) - - def async_call(self, fn, *args, **kwargs): - """Schedule `fn` to be called by the event loop soon. - - This function is thread-safe, and is the only way code not - on the main thread could interact with nvim api objects. - - This function can also be called in a synchronous - event handler, just before it returns, to defer execution - that shouldn't block neovim. - """ - call_point = ''.join(format_stack(None, 5)[:-1]) - - def handler(): - try: - fn(*args, **kwargs) - except Exception as err: - msg = ("error caught while executing async callback:\n" - "{!r}\n{}\n \nthe call was requested at\n{}" - .format(err, format_exc_skip(1), call_point)) - self._err_cb(msg) - raise - self._session.threadsafe_call(handler) - - -class Buffers(object): - - """Remote NVim buffers. - - Currently the interface for interacting with remote NVim buffers is the - `nvim_list_bufs` msgpack-rpc function. Most methods fetch the list of - buffers from NVim. - - Conforms to *python-buffers*. - """ - - def __init__(self, nvim): - """Initialize a Buffers object with Nvim object `nvim`.""" - self._fetch_buffers = nvim.api.list_bufs - - def __len__(self): - """Return the count of buffers.""" - return len(self._fetch_buffers()) - - def __getitem__(self, number): - """Return the Buffer object matching buffer number `number`.""" - for b in self._fetch_buffers(): - if b.number == number: - return b - raise KeyError(number) - - def __contains__(self, b): - """Return whether Buffer `b` is a known valid buffer.""" - return isinstance(b, Buffer) and b.valid - - def __iter__(self): - """Return an iterator over the list of buffers.""" - return iter(self._fetch_buffers()) - - -class CompatibilitySession(object): - - """Helper class for API compatibility.""" - - def __init__(self, nvim): - self.threadsafe_call = nvim.async_call - - -class Current(object): - - """Helper class for emulating vim.current from python-vim.""" - - def __init__(self, session): - self._session = session - self.range = None - - @property - def line(self): - return self._session.request('nvim_get_current_line') - - @line.setter - def line(self, line): - return self._session.request('nvim_set_current_line', line) - - @line.deleter - def line(self): - return self._session.request('nvim_del_current_line') - - @property - def buffer(self): - return self._session.request('nvim_get_current_buf') - - @buffer.setter - def buffer(self, buffer): - return self._session.request('nvim_set_current_buf', buffer) - - @property - def window(self): - return self._session.request('nvim_get_current_win') - - @window.setter - def window(self, window): - return self._session.request('nvim_set_current_win', window) - - @property - def tabpage(self): - return self._session.request('nvim_get_current_tabpage') - - @tabpage.setter - def tabpage(self, tabpage): - return self._session.request('nvim_set_current_tabpage', tabpage) - - -class Funcs(object): - - """Helper class for functional vimscript interface.""" - - def __init__(self, nvim): - self._nvim = nvim - - def __getattr__(self, name): - return partial(self._nvim.call, name) - - -class LuaFuncs(object): - - """Wrapper to allow lua functions to be called like python methods.""" - - def __init__(self, nvim, name=""): - self._nvim = nvim - self.name = name - - def __getattr__(self, name): - """Return wrapper to named api method.""" - prefix = self.name + "." if self.name else "" - return LuaFuncs(self._nvim, prefix + name) - - def __call__(self, *args, **kwargs): - # first new function after keyword rename, be a bit noisy - if 'async' in kwargs: - raise ValueError('"async" argument is not allowed. ' - 'Use "async_" instead.') - async_ = kwargs.get('async_', False) - pattern = "return {}(...)" if not async_ else "{}(...)" - code = pattern.format(self.name) - return self._nvim.exec_lua(code, *args, **kwargs) diff --git a/.local/lib/python3.9/site-packages/pynvim/api/tabpage.py b/.local/lib/python3.9/site-packages/pynvim/api/tabpage.py deleted file mode 100644 index f8a6bba5..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/api/tabpage.py +++ /dev/null @@ -1,35 +0,0 @@ -"""API for working with Nvim tabpages.""" -from pynvim.api.common import Remote, RemoteSequence - - -__all__ = ('Tabpage') - - -class Tabpage(Remote): - """A remote Nvim tabpage.""" - - _api_prefix = "nvim_tabpage_" - - def __init__(self, *args): - """Initialize from session and code_data immutable object. - - The `code_data` contains serialization information required for - msgpack-rpc calls. It must be immutable for Buffer equality to work. - """ - super(Tabpage, self).__init__(*args) - self.windows = RemoteSequence(self, 'nvim_tabpage_list_wins') - - @property - def window(self): - """Get the `Window` currently focused on the tabpage.""" - return self.request('nvim_tabpage_get_win') - - @property - def valid(self): - """Return True if the tabpage still exists.""" - return self.request('nvim_tabpage_is_valid') - - @property - def number(self): - """Get the tabpage number.""" - return self.request('nvim_tabpage_get_number') diff --git a/.local/lib/python3.9/site-packages/pynvim/api/window.py b/.local/lib/python3.9/site-packages/pynvim/api/window.py deleted file mode 100644 index 14810609..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/api/window.py +++ /dev/null @@ -1,72 +0,0 @@ -"""API for working with Nvim windows.""" -from pynvim.api.common import Remote - - -__all__ = ('Window') - - -class Window(Remote): - - """A remote Nvim window.""" - - _api_prefix = "nvim_win_" - - @property - def buffer(self): - """Get the `Buffer` currently being displayed by the window.""" - return self.request('nvim_win_get_buf') - - @property - def cursor(self): - """Get the (row, col) tuple with the current cursor position.""" - return self.request('nvim_win_get_cursor') - - @cursor.setter - def cursor(self, pos): - """Set the (row, col) tuple as the new cursor position.""" - return self.request('nvim_win_set_cursor', pos) - - @property - def height(self): - """Get the window height in rows.""" - return self.request('nvim_win_get_height') - - @height.setter - def height(self, height): - """Set the window height in rows.""" - return self.request('nvim_win_set_height', height) - - @property - def width(self): - """Get the window width in rows.""" - return self.request('nvim_win_get_width') - - @width.setter - def width(self, width): - """Set the window height in rows.""" - return self.request('nvim_win_set_width', width) - - @property - def row(self): - """0-indexed, on-screen window position(row) in display cells.""" - return self.request('nvim_win_get_position')[0] - - @property - def col(self): - """0-indexed, on-screen window position(col) in display cells.""" - return self.request('nvim_win_get_position')[1] - - @property - def tabpage(self): - """Get the `Tabpage` that contains the window.""" - return self.request('nvim_win_get_tabpage') - - @property - def valid(self): - """Return True if the window still exists.""" - return self.request('nvim_win_is_valid') - - @property - def number(self): - """Get the window number.""" - return self.request('nvim_win_get_number') diff --git a/.local/lib/python3.9/site-packages/pynvim/compat.py b/.local/lib/python3.9/site-packages/pynvim/compat.py deleted file mode 100644 index 01e45db1..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/compat.py +++ /dev/null @@ -1,57 +0,0 @@ -"""Code for compatibility across Python versions.""" - -import sys -import warnings -from imp import find_module as original_find_module - - -IS_PYTHON3 = sys.version_info >= (3, 0) - - -if IS_PYTHON3: - def find_module(fullname, path): - """Compatibility wrapper for imp.find_module. - - Automatically decodes arguments of find_module, in Python3 - they must be Unicode - """ - if isinstance(fullname, bytes): - fullname = fullname.decode() - if isinstance(path, bytes): - path = path.decode() - elif isinstance(path, list): - newpath = [] - for element in path: - if isinstance(element, bytes): - newpath.append(element.decode()) - else: - newpath.append(element) - path = newpath - return original_find_module(fullname, path) - - # There is no 'long' type in Python3 just int - long = int - unicode_errors_default = 'surrogateescape' -else: - find_module = original_find_module - unicode_errors_default = 'ignore' - -NUM_TYPES = (int, long, float) - - -def check_async(async_, kwargs, default): - """Return a value of 'async' in kwargs or default when async_ is None. - - This helper function exists for backward compatibility (See #274). - It shows a warning message when 'async' in kwargs is used to note users. - """ - if async_ is not None: - return async_ - elif 'async' in kwargs: - warnings.warn( - '"async" attribute is deprecated. Use "async_" instead.', - DeprecationWarning, - ) - return kwargs.pop('async') - else: - return default diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__init__.py b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__init__.py deleted file mode 100644 index 8da22e04..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Msgpack-rpc subpackage. - -This package implements a msgpack-rpc client. While it was designed for -handling some Nvim particularities(server->client requests for example), the -code here should work with other msgpack-rpc servers. -""" -from pynvim.msgpack_rpc.async_session import AsyncSession -from pynvim.msgpack_rpc.event_loop import EventLoop -from pynvim.msgpack_rpc.msgpack_stream import MsgpackStream -from pynvim.msgpack_rpc.session import ErrorResponse, Session -from pynvim.util import get_client_info - - -__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session', - 'ErrorResponse') - - -def session(transport_type='stdio', *args, **kwargs): - loop = EventLoop(transport_type, *args, **kwargs) - msgpack_stream = MsgpackStream(loop) - async_session = AsyncSession(msgpack_stream) - session = Session(async_session) - session.request(b'nvim_set_client_info', - *get_client_info('client', 'remote', {}), async_=True) - return session - - -def tcp_session(address, port=7450): - """Create a msgpack-rpc session from a tcp address/port.""" - return session('tcp', address, port) - - -def socket_session(path): - """Create a msgpack-rpc session from a unix domain socket.""" - return session('socket', path) - - -def stdio_session(): - """Create a msgpack-rpc session from stdin/stdout.""" - return session('stdio') - - -def child_session(argv): - """Create a msgpack-rpc session from a new Nvim instance.""" - return session('child', argv) diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index a554a8687aa98062958d1f4b21096e3ffde61691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1885 zcmb7E&2HQ_5Ek{fyYjB>IEe!UO~G7>ELuwiiv9sb&?3mKbqhN{0bNu@q<0xh;+Euk z?O=1-ocj<(FL{6-`YP(Nz2p^oNoOc+vJMQSrNH5gNDjXle#3k;iX3Qv{Qmw=e+G{8 z7aE(*1LJGx`WysvQil=dmZWl1m!R&IUgf90)%`N4!ZfscQ1+^R+OG!bz}jIMRa@y6 z=)H8vZn6Q3o|AOM_Suk)K-*^9Z0EU??yy~U4aQxz$F9S8jomnQ#A27B=E48VUY zWtO_*c$vPa`kA$ygN!bO27n_hQq3UQBn>9$dM4Y^Y$GZ!=7__>2^n@OxvWVqxOh(-g=$#!co`3=|4XtQ{YhYMCv(LAAga=r7ZF?DaGStc44Nn z{v`e~(ZcY9j<*{AV{FO#9AJ5p!JP?{W%2An?SWhDHVY2fC;je=UWLSc6}ooC%iDJx zr@&Cx4RwtF0dzeCVW4Q2&XTM=$g2DF(+5Bz!`~{FE*yHIWCc?|8JaVufHeu`DQ-OY z^@7+lfq=bkvhi`&rl1vgWvUP2Jv`pxa;<%dKgcD#D2owaqZZ@JwFp1|F9_$gIHycj zxu~Ihk<)P#wu-t19-(afS#G9pV;jKSUFd6UXcy2gHN+5>I9^m zn^w?EkV2k{9mVoqU8}KZ$ zEkN?&1~Rk{$Hc}1!%Z;9drdFPm@Kj^r7f4^4KBx*>ctjgdgqE|9N)PNOU{;VdiRPo zYqxDF+UibkU$L$uv3<7M%HQf%&5bB+^&{rIEVIlq*)mfh1r+99VVE1Kczsh%|Eo%} bdCBi1bM-z5KO7SLcFEB5{V0lpK79WI)8X@2 diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/async_session.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/async_session.cpython-39.pyc deleted file mode 100644 index 35185efdaaa43ca025033fc1ce08896d9ad40f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4926 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 I9lm4#0~lFuF8}}l diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/session.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/__pycache__/session.cpython-39.pyc deleted file mode 100644 index e836b4eef9652e5c0b084fb47ed2e4fe9a7e5f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7862 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 EAE-=0F8}}l diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/base.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/base.cpython-39.pyc deleted file mode 100644 index 132a3ef1bf1501d93fe558361f54663690d04641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6927 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 diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/uv.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/__pycache__/uv.cpython-39.pyc deleted file mode 100644 index 01c3a8cab5ab3ad432aa0939f8aa3d7ece535526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5068 zcmZ`-TW=f372Z2n6m_+1`I<1clbA_O8chMGfosUN zT&dJcY@mM0f1qB9`Z0fJ``D-cg`zcVFwN7L&WyJ1>1fTi(J?(!S96wUVa{sX9mjKY?R$;c%z39VCv@JL zUV$0gTBUHfwy_^ZNx2=z-EyatzOYnn}x4?Av$yS0};yGKE_=ev_AebFj&JS{s|IlkX-W&rh6tc znE6hF)E2YRLRwZp>oAwipe?W>n?>ug5}QLi!{*rn+9F$IOK4}=GCPB|#8%i@v~%nn zTSYt1&a(?>7uZF13GE`g%&wqaVxO>2(Jr$x`wZ5LyoejvL})-L&tIEumsdD#y+k9j($T3;kQ3_6^AlotI)&~B6D;)9-AB5dz` z&^Urp`|q>bUfc<5tyuIze(T#>wH<@Eh7hT#0Qsi++nQ)5;mt0#2fLxbe6-)})H-69 zrhMLQ)Ith9DQvB`U+o@1@@CXb=E)o~3-qGCtULH0E{z$#D!Cda*oHr{qJv9Xat)on zHqeeWUF#eC7Sjhh*)lO(*1+x?$NI5xWF}7Ee2aO%KvwMQ7FpCCTD4--56?dcq9{(v znX$@AT>jh9ceu#jB7voyotSrmBwZXD)DIZrp%9#eNp09Ric^=2Dy>}D+}@xLC+*Ub z4_mX$fRuDgyybf0;)hFhu5E|)Dw?XJ!%ydS`93dT{FSJ)W zak3S>M2C9oRrvYxPZpFGf3rzs|9tTu$=aKmY(hLHgY@pFY^)1>B0C zA+iFJ7BU(66^w>yT*z<%I34qZUnK5{5H1aK*iRbWUxOhFiIP6AAD+*tm_30Q8`1{g zrXNMbNW<$G(0M}02MrDAqxojv7+BP6*+Z>VAgjzwt*vG^R2q>ooI+D6VrH)C2Fc#3 z@-K|!7ctJd5IEoV?T)+pjnw8T0PyyeRE znc+Icp3<_Y()DZ7O1kYldZ`t6!zeYyfkj+I~qeR|+pp#R|%#Ezv$Oc9^P#Qd~0xowIDfg3c zgc3r|gImteWb?#F{Irkwhx5c&Y|UathDxi1@mwEx-?w&9n*C(sFvYIHJm|s@Xey?x z{C3&_N8d6JbF5sNef#%Zs6pF3%kLah*S7`tJt{pWb?ts_O}20QGI>$ z`L_SVqxFrn2nghfJb(FBa1M_fLY{q2;J_&brSEY(ecbJhy=I%;2dnr3gxpSlS1vJhr?J_IB>ljTe59dyypy3=YqLQ1ZYA&A@xed9jAaEN28UYfNAxKl8mcg=0ZBr$yEze4R4ZPWD z!aqZQ(t);5`uqti!$TxrVAATxU9mipBr#f36@dg6LIQP0P%uAvR`=I89^QNQ`01%e zvwT?lFJsay=3oPhQ^JsGBv`1^pUgthaDsJ)LO7E3)Mvs3C}D%KhfbIPt5Z)UY?e7-Esb~z{F1nZQrBTo>Hk+6J4iF~ZRg-2eW z*a;FzQ48G|FWNiF2UYK=LNR}`a5@ZL;mV{!(oB_w@}({(4xJ)&k^RIv$gcKY^R>Tg zJM?+Lc;`|Xu&(|223~&vAMXJZC=IN>g`$8edt?;msCKu=+ON;avdygL9zy!k1E}PY zrS^MmfcK{%#;A1Ey&{$Js<^BeslErqL8aO2j0K~7eJQ94pL4n$-5Z7G*Et7>FzI!( zTZ!r&`Kl@IRPIoTw`das~_6Z{XDehiij&>W*=x`-D<%mko~Z^-4)&~`G1hVcT2l#T#uDuZ9+9e-G_82m9w zBy;$Ok!(^xDch2tgaK#qo1vw}A&I8~xu_pr$=Pv|w_aIIUEhy_PU!o1+xI&$>$Rz0 z^8MGnpq;H0e4oV)-{(st0+qE2{;yH*IuSY|_*X=368VP6cSP=Z+Mz~se4Bm?Jgms{AhtQUN0Fg GV&ne@;%1%z diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py deleted file mode 100644 index 997095e6..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py +++ /dev/null @@ -1,163 +0,0 @@ -"""Event loop implementation that uses the `asyncio` standard module. - -The `asyncio` module was added to python standard library on 3.4, and it -provides a pure python implementation of an event loop library. It is used -as a fallback in case pyuv is not available(on python implementations other -than CPython). - -Earlier python versions are supported through the `trollius` package, which -is a backport of `asyncio` that works on Python 2.6+. -""" -from __future__ import absolute_import - -import logging -import os -import sys -from collections import deque - -try: - # For python 3.4+, use the standard library module - import asyncio -except (ImportError, SyntaxError): - # Fallback to trollius - import trollius as asyncio - -from pynvim.msgpack_rpc.event_loop.base import BaseEventLoop - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) - -loop_cls = asyncio.SelectorEventLoop -if os.name == 'nt': - from asyncio.windows_utils import PipeHandle - import msvcrt - - # On windows use ProactorEventLoop which support pipes and is backed by the - # more powerful IOCP facility - # NOTE: we override in the stdio case, because it doesn't work. - loop_cls = asyncio.ProactorEventLoop - - -class AsyncioEventLoop(BaseEventLoop, asyncio.Protocol, - asyncio.SubprocessProtocol): - - """`BaseEventLoop` subclass that uses `asyncio` as a backend.""" - - def connection_made(self, transport): - """Used to signal `asyncio.Protocol` of a successful connection.""" - self._transport = transport - self._raw_transport = transport - if isinstance(transport, asyncio.SubprocessTransport): - self._transport = transport.get_pipe_transport(0) - - def connection_lost(self, exc): - """Used to signal `asyncio.Protocol` of a lost connection.""" - self._on_error(exc.args[0] if exc else 'EOF') - - def data_received(self, data): - """Used to signal `asyncio.Protocol` of incoming data.""" - if self._on_data: - self._on_data(data) - return - self._queued_data.append(data) - - def pipe_connection_lost(self, fd, exc): - """Used to signal `asyncio.SubprocessProtocol` of a lost connection.""" - self._on_error(exc.args[0] if exc else 'EOF') - - def pipe_data_received(self, fd, data): - """Used to signal `asyncio.SubprocessProtocol` of incoming data.""" - if fd == 2: # stderr fd number - self._on_stderr(data) - elif self._on_data: - self._on_data(data) - else: - self._queued_data.append(data) - - def process_exited(self): - """Used to signal `asyncio.SubprocessProtocol` when the child exits.""" - self._on_error('EOF') - - def _init(self): - self._loop = loop_cls() - self._queued_data = deque() - self._fact = lambda: self - self._raw_transport = None - - def _connect_tcp(self, address, port): - coroutine = self._loop.create_connection(self._fact, address, port) - self._loop.run_until_complete(coroutine) - - def _connect_socket(self, path): - if os.name == 'nt': - coroutine = self._loop.create_pipe_connection(self._fact, path) - else: - coroutine = self._loop.create_unix_connection(self._fact, path) - self._loop.run_until_complete(coroutine) - - def _connect_stdio(self): - if os.name == 'nt': - pipe = PipeHandle(msvcrt.get_osfhandle(sys.stdin.fileno())) - else: - pipe = sys.stdin - coroutine = self._loop.connect_read_pipe(self._fact, pipe) - self._loop.run_until_complete(coroutine) - pass # replaces next logging statement - #debug("native stdin connection successful") - - # Make sure subprocesses don't clobber stdout, - # send the output to stderr instead. - rename_stdout = os.dup(sys.stdout.fileno()) - os.dup2(sys.stderr.fileno(), sys.stdout.fileno()) - - if os.name == 'nt': - pipe = PipeHandle(msvcrt.get_osfhandle(rename_stdout)) - else: - pipe = os.fdopen(rename_stdout, 'wb') - coroutine = self._loop.connect_write_pipe(self._fact, pipe) - self._loop.run_until_complete(coroutine) - pass # replaces next logging statement - #debug("native stdout connection successful") - - def _connect_child(self, argv): - if os.name != 'nt': - self._child_watcher = asyncio.get_child_watcher() - self._child_watcher.attach_loop(self._loop) - coroutine = self._loop.subprocess_exec(self._fact, *argv) - self._loop.run_until_complete(coroutine) - - def _start_reading(self): - pass - - def _send(self, data): - self._transport.write(data) - - def _run(self): - while self._queued_data: - self._on_data(self._queued_data.popleft()) - self._loop.run_forever() - - def _stop(self): - self._loop.stop() - - def _close(self): - if self._raw_transport is not None: - self._raw_transport.close() - self._loop.close() - - def _threadsafe_call(self, fn): - self._loop.call_soon_threadsafe(fn) - - def _setup_signals(self, signals): - if os.name == 'nt': - # add_signal_handler is not supported in win32 - self._signals = [] - return - - self._signals = list(signals) - for signum in self._signals: - self._loop.add_signal_handler(signum, self._on_signal, signum) - - def _teardown_signals(self): - for signum in self._signals: - self._loop.remove_signal_handler(signum) diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/base.py b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/base.py deleted file mode 100644 index cabb8c63..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/base.py +++ /dev/null @@ -1,192 +0,0 @@ -"""Common code for event loop implementations.""" -import logging -import signal -import threading - - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) - - -# When signals are restored, the event loop library may reset SIGINT to SIG_DFL -# which exits the program. To be able to restore the python interpreter to it's -# default state, we keep a reference to the default handler -default_int_handler = signal.getsignal(signal.SIGINT) -main_thread = threading.current_thread() - - -class BaseEventLoop(object): - - """Abstract base class for all event loops. - - Event loops act as the bottom layer for Nvim sessions created by this - library. They hide system/transport details behind a simple interface for - reading/writing bytes to the connected Nvim instance. - - This class exposes public methods for interacting with the underlying - event loop and delegates implementation-specific work to the following - methods, which subclasses are expected to implement: - - - `_init()`: Implementation-specific initialization - - `_connect_tcp(address, port)`: connect to Nvim using tcp/ip - - `_connect_socket(path)`: Same as tcp, but use a UNIX domain socket or - named pipe. - - `_connect_stdio()`: Use stdin/stdout as the connection to Nvim - - `_connect_child(argv)`: Use the argument vector `argv` to spawn an - embedded Nvim that has its stdin/stdout connected to the event loop. - - `_start_reading()`: Called after any of _connect_* methods. Can be used - to perform any post-connection setup or validation. - - `_send(data)`: Send `data`(byte array) to Nvim. The data is only - - `_run()`: Runs the event loop until stopped or the connection is closed. - calling the following methods when some event happens: - actually sent when the event loop is running. - - `_on_data(data)`: When Nvim sends some data. - - `_on_signal(signum)`: When a signal is received. - - `_on_error(message)`: When a non-recoverable error occurs(eg: - connection lost) - - `_stop()`: Stop the event loop - - `_interrupt(data)`: Like `stop()`, but may be called from other threads - this. - - `_setup_signals(signals)`: Add implementation-specific listeners for - for `signals`, which is a list of OS-specific signal numbers. - - `_teardown_signals()`: Removes signal listeners set by `_setup_signals` - """ - - def __init__(self, transport_type, *args): - """Initialize and connect the event loop instance. - - The only arguments are the transport type and transport-specific - configuration, like this: - - >>> BaseEventLoop('tcp', '127.0.0.1', 7450) - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - >>> BaseEventLoop('socket', '/tmp/nvim-socket') - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - >>> BaseEventLoop('stdio') - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - >>> BaseEventLoop('child', - ['nvim', '--embed', '--headless', '-u', 'NONE']) - Traceback (most recent call last): - ... - AttributeError: 'BaseEventLoop' object has no attribute '_init' - - This calls the implementation-specific initialization - `_init`, one of the `_connect_*` methods(based on `transport_type`) - and `_start_reading()` - """ - self._transport_type = transport_type - self._signames = dict((k, v) for v, k in signal.__dict__.items() - if v.startswith('SIG')) - self._on_data = None - self._error = None - self._init() - try: - getattr(self, '_connect_{}'.format(transport_type))(*args) - except Exception as e: - self.close() - raise e - self._start_reading() - - def connect_tcp(self, address, port): - """Connect to tcp/ip `address`:`port`. Delegated to `_connect_tcp`.""" - pass # replaces next logging statement - #info('Connecting to TCP address: %s:%d', address, port) - self._connect_tcp(address, port) - - def connect_socket(self, path): - """Connect to socket at `path`. Delegated to `_connect_socket`.""" - pass # replaces next logging statement - #info('Connecting to %s', path) - self._connect_socket(path) - - def connect_stdio(self): - """Connect using stdin/stdout. Delegated to `_connect_stdio`.""" - pass # replaces next logging statement - #info('Preparing stdin/stdout for streaming data') - self._connect_stdio() - - def connect_child(self, argv): - """Connect a new Nvim instance. Delegated to `_connect_child`.""" - pass # replaces next logging statement - #info('Spawning a new nvim instance') - self._connect_child(argv) - - def send(self, data): - """Queue `data` for sending to Nvim.""" - pass # replaces next logging statement - #debug("Sending '%s'", data) - self._send(data) - - def threadsafe_call(self, fn): - """Call a function in the event loop thread. - - This is the only safe way to interact with a session from other - threads. - """ - self._threadsafe_call(fn) - - def run(self, data_cb): - """Run the event loop.""" - if self._error: - err = self._error - if isinstance(self._error, KeyboardInterrupt): - # KeyboardInterrupt is not destructive(it may be used in - # the REPL). - # After throwing KeyboardInterrupt, cleanup the _error field - # so the loop may be started again - self._error = None - raise err - self._on_data = data_cb - if threading.current_thread() == main_thread: - self._setup_signals([signal.SIGINT, signal.SIGTERM]) - pass # replaces next logging statement - #debug('Entering event loop') - self._run() - pass # replaces next logging statement - #debug('Exited event loop') - if threading.current_thread() == main_thread: - self._teardown_signals() - signal.signal(signal.SIGINT, default_int_handler) - self._on_data = None - - def stop(self): - """Stop the event loop.""" - self._stop() - pass # replaces next logging statement - #debug('Stopped event loop') - - def close(self): - """Stop the event loop.""" - self._close() - pass # replaces next logging statement - #debug('Closed event loop') - - def _on_signal(self, signum): - msg = 'Received {}'.format(self._signames[signum]) - pass # replaces next logging statement - #debug(msg) - if signum == signal.SIGINT and self._transport_type == 'stdio': - # When the transport is stdio, we are probably running as a Nvim - # child process. In that case, we don't want to be killed by - # ctrl+C - return - cls = Exception - if signum == signal.SIGINT: - cls = KeyboardInterrupt - self._error = cls(msg) - self.stop() - - def _on_error(self, error): - pass # replaces next logging statement - #debug(error) - self._error = OSError(error) - self.stop() - - def _on_interrupt(self): - self.stop() diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/uv.py b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/uv.py deleted file mode 100644 index 969187ee..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/event_loop/uv.py +++ /dev/null @@ -1,124 +0,0 @@ -"""Event loop implementation that uses pyuv(libuv-python bindings).""" -import sys -from collections import deque - -import pyuv - -from pynvim.msgpack_rpc.event_loop.base import BaseEventLoop - - -class UvEventLoop(BaseEventLoop): - - """`BaseEventLoop` subclass that uses `pvuv` as a backend.""" - - def _init(self): - self._loop = pyuv.Loop() - self._async = pyuv.Async(self._loop, self._on_async) - self._connection_error = None - self._error_stream = None - self._callbacks = deque() - - def _on_connect(self, stream, error): - self.stop() - if error: - msg = 'Cannot connect to {}: {}'.format( - self._connect_address, pyuv.errno.strerror(error)) - self._connection_error = OSError(msg) - return - self._read_stream = self._write_stream = stream - - def _on_read(self, handle, data, error): - if error or not data: - msg = pyuv.errno.strerror(error) if error else 'EOF' - self._on_error(msg) - return - if handle == self._error_stream: - return - self._on_data(data) - - def _on_write(self, handle, error): - if error: - msg = pyuv.errno.strerror(error) - self._on_error(msg) - - def _on_exit(self, handle, exit_status, term_signal): - self._on_error('EOF') - - def _disconnected(self, *args): - raise OSError('Not connected to Nvim') - - def _connect_tcp(self, address, port): - stream = pyuv.TCP(self._loop) - self._connect_address = '{}:{}'.format(address, port) - stream.connect((address, port), self._on_connect) - - def _connect_socket(self, path): - stream = pyuv.Pipe(self._loop) - self._connect_address = path - stream.connect(path, self._on_connect) - - def _connect_stdio(self): - self._read_stream = pyuv.Pipe(self._loop) - self._read_stream.open(sys.stdin.fileno()) - self._write_stream = pyuv.Pipe(self._loop) - self._write_stream.open(sys.stdout.fileno()) - - def _connect_child(self, argv): - self._write_stream = pyuv.Pipe(self._loop) - self._read_stream = pyuv.Pipe(self._loop) - self._error_stream = pyuv.Pipe(self._loop) - stdin = pyuv.StdIO(self._write_stream, - flags=pyuv.UV_CREATE_PIPE + pyuv.UV_READABLE_PIPE) - stdout = pyuv.StdIO(self._read_stream, - flags=pyuv.UV_CREATE_PIPE + pyuv.UV_WRITABLE_PIPE) - stderr = pyuv.StdIO(self._error_stream, - flags=pyuv.UV_CREATE_PIPE + pyuv.UV_WRITABLE_PIPE) - pyuv.Process.spawn(self._loop, - args=argv, - exit_callback=self._on_exit, - flags=pyuv.UV_PROCESS_WINDOWS_HIDE, - stdio=(stdin, stdout, stderr,)) - self._error_stream.start_read(self._on_read) - - def _start_reading(self): - if self._transport_type in ['tcp', 'socket']: - self._loop.run() - if self._connection_error: - self.run = self.send = self._disconnected - raise self._connection_error - self._read_stream.start_read(self._on_read) - - def _send(self, data): - self._write_stream.write(data, self._on_write) - - def _run(self): - self._loop.run(pyuv.UV_RUN_DEFAULT) - - def _stop(self): - self._loop.stop() - - def _close(self): - pass - - def _threadsafe_call(self, fn): - self._callbacks.append(fn) - self._async.send() - - def _on_async(self, handle): - while self._callbacks: - self._callbacks.popleft()() - - def _setup_signals(self, signals): - self._signal_handles = [] - - def handler(h, signum): - self._on_signal(signum) - - for signum in signals: - handle = pyuv.Signal(self._loop) - handle.start(handler, signum) - self._signal_handles.append(handle) - - def _teardown_signals(self): - for handle in self._signal_handles: - handle.stop() diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/msgpack_stream.py b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/msgpack_stream.py deleted file mode 100644 index 1a192f25..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/msgpack_stream.py +++ /dev/null @@ -1,68 +0,0 @@ -"""Msgpack handling in the event loop pipeline.""" -import logging - -from msgpack import Packer, Unpacker - -from pynvim.compat import unicode_errors_default - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) - - -class MsgpackStream(object): - - """Two-way msgpack stream that wraps a event loop byte stream. - - This wraps the event loop interface for reading/writing bytes and - exposes an interface for reading/writing msgpack documents. - """ - - def __init__(self, event_loop): - """Wrap `event_loop` on a msgpack-aware interface.""" - self.loop = event_loop - self._packer = Packer(unicode_errors=unicode_errors_default) - self._unpacker = Unpacker(unicode_errors=unicode_errors_default) - self._message_cb = None - - def threadsafe_call(self, fn): - """Wrapper around `BaseEventLoop.threadsafe_call`.""" - self.loop.threadsafe_call(fn) - - def send(self, msg): - """Queue `msg` for sending to Nvim.""" - pass # replaces next logging statement - #debug('sent %s', msg) - self.loop.send(self._packer.pack(msg)) - - def run(self, message_cb): - """Run the event loop to receive messages from Nvim. - - While the event loop is running, `message_cb` will be called whenever - a message has been successfully parsed from the input stream. - """ - self._message_cb = message_cb - self.loop.run(self._on_data) - self._message_cb = None - - def stop(self): - """Stop the event loop.""" - self.loop.stop() - - def close(self): - """Close the event loop.""" - self.loop.close() - - def _on_data(self, data): - self._unpacker.feed(data) - while True: - try: - pass # replaces next logging statement - #debug('waiting for message...') - msg = next(self._unpacker) - pass # replaces next logging statement - #debug('received message: %s', msg) - self._message_cb(msg) - except StopIteration: - pass # replaces next logging statement - #debug('unpacker needs more data...') - break diff --git a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/session.py b/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/session.py deleted file mode 100644 index 446e4673..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/msgpack_rpc/session.py +++ /dev/null @@ -1,253 +0,0 @@ -"""Synchronous msgpack-rpc session layer.""" -import logging -import threading -from collections import deque -from traceback import format_exc - -import greenlet - -from pynvim.compat import check_async - -logger = logging.getLogger(__name__) -error, debug, info, warn = (logger.error, logger.debug, logger.info, - logger.warning,) - - -class Session(object): - - """Msgpack-rpc session layer that uses coroutines for a synchronous API. - - This class provides the public msgpack-rpc API required by this library. - It uses the greenlet module to handle requests and notifications coming - from Nvim with a synchronous API. - """ - - def __init__(self, async_session): - """Wrap `async_session` on a synchronous msgpack-rpc interface.""" - self._async_session = async_session - self._request_cb = self._notification_cb = None - self._pending_messages = deque() - self._is_running = False - self._setup_exception = None - self.loop = async_session.loop - self._loop_thread = None - - def threadsafe_call(self, fn, *args, **kwargs): - """Wrapper around `AsyncSession.threadsafe_call`.""" - def handler(): - try: - fn(*args, **kwargs) - except Exception: - pass # replaces next logging statement - #warn("error caught while excecuting async callback\n%s\n", - #format_exc()) - - def greenlet_wrapper(): - gr = greenlet.greenlet(handler) - gr.switch() - - self._async_session.threadsafe_call(greenlet_wrapper) - - def next_message(self): - """Block until a message(request or notification) is available. - - If any messages were previously enqueued, return the first in queue. - If not, run the event loop until one is received. - """ - if self._is_running: - raise Exception('Event loop already running') - if self._pending_messages: - return self._pending_messages.popleft() - self._async_session.run(self._enqueue_request_and_stop, - self._enqueue_notification_and_stop) - if self._pending_messages: - return self._pending_messages.popleft() - - def request(self, method, *args, **kwargs): - """Send a msgpack-rpc request and block until as response is received. - - If the event loop is running, this method must have been called by a - request or notification handler running on a greenlet. In that case, - send the quest and yield to the parent greenlet until a response is - available. - - When the event loop is not running, it will perform a blocking request - like this: - - Send the request - - Run the loop until the response is available - - Put requests/notifications received while waiting into a queue - - If the `async_` flag is present and True, a asynchronous notification - is sent instead. This will never block, and the return value or error - is ignored. - """ - async_ = check_async(kwargs.pop('async_', None), kwargs, False) - if async_: - self._async_session.notify(method, args) - return - - if kwargs: - raise ValueError("request got unsupported keyword argument(s): {}" - .format(', '.join(kwargs.keys()))) - - if self._is_running: - v = self._yielding_request(method, args) - else: - v = self._blocking_request(method, args) - if not v: - # EOF - raise OSError('EOF') - err, rv = v - if err: - pass # replaces next logging statement - #info("'Received error: %s", err) - raise self.error_wrapper(err) - return rv - - def run(self, request_cb, notification_cb, setup_cb=None): - """Run the event loop to receive requests and notifications from Nvim. - - Like `AsyncSession.run()`, but `request_cb` and `notification_cb` are - inside greenlets. - """ - self._request_cb = request_cb - self._notification_cb = notification_cb - self._is_running = True - self._setup_exception = None - self._loop_thread = threading.current_thread() - - def on_setup(): - try: - setup_cb() - except Exception as e: - self._setup_exception = e - self.stop() - - if setup_cb: - # Create a new greenlet to handle the setup function - gr = greenlet.greenlet(on_setup) - gr.switch() - - if self._setup_exception: - pass # replaces next logging statement - #error('Setup error: {}'.format(self._setup_exception)) - raise self._setup_exception - - # Process all pending requests and notifications - while self._pending_messages: - msg = self._pending_messages.popleft() - getattr(self, '_on_{}'.format(msg[0]))(*msg[1:]) - self._async_session.run(self._on_request, self._on_notification) - self._is_running = False - self._request_cb = None - self._notification_cb = None - self._loop_thread = None - - if self._setup_exception: - raise self._setup_exception - - def stop(self): - """Stop the event loop.""" - self._async_session.stop() - - def close(self): - """Close the event loop.""" - self._async_session.close() - - def _yielding_request(self, method, args): - gr = greenlet.getcurrent() - parent = gr.parent - - def response_cb(err, rv): - pass # replaces next logging statement - #debug('response is available for greenlet %s, switching back', gr) - gr.switch(err, rv) - - self._async_session.request(method, args, response_cb) - pass # replaces next logging statement - #debug('yielding from greenlet %s to wait for response', gr) - return parent.switch() - - def _blocking_request(self, method, args): - result = [] - - def response_cb(err, rv): - result.extend([err, rv]) - self.stop() - - self._async_session.request(method, args, response_cb) - self._async_session.run(self._enqueue_request, - self._enqueue_notification) - return result - - def _enqueue_request_and_stop(self, name, args, response): - self._enqueue_request(name, args, response) - self.stop() - - def _enqueue_notification_and_stop(self, name, args): - self._enqueue_notification(name, args) - self.stop() - - def _enqueue_request(self, name, args, response): - self._pending_messages.append(('request', name, args, response,)) - - def _enqueue_notification(self, name, args): - self._pending_messages.append(('notification', name, args,)) - - def _on_request(self, name, args, response): - def handler(): - try: - rv = self._request_cb(name, args) - pass # replaces next logging statement - #debug('greenlet %s finished executing, ' - #+ 'sending %s as response', gr, rv) - response.send(rv) - except ErrorResponse as err: - pass # replaces next logging statement - #warn("error response from request '%s %s': %s", name, - #args, format_exc()) - response.send(err.args[0], error=True) - except Exception as err: - pass # replaces next logging statement - #warn("error caught while processing request '%s %s': %s", name, - #args, format_exc()) - response.send(repr(err) + "\n" + format_exc(5), error=True) - pass # replaces next logging statement - #debug('greenlet %s is now dying...', gr) - - # Create a new greenlet to handle the request - gr = greenlet.greenlet(handler) - pass # replaces next logging statement - #debug('received rpc request, greenlet %s will handle it', gr) - gr.switch() - - def _on_notification(self, name, args): - def handler(): - try: - self._notification_cb(name, args) - pass # replaces next logging statement - #debug('greenlet %s finished executing', gr) - except Exception: - pass # replaces next logging statement - #warn("error caught while processing notification '%s %s': %s", - #name, args, format_exc()) - - pass # replaces next logging statement - #debug('greenlet %s is now dying...', gr) - - gr = greenlet.greenlet(handler) - pass # replaces next logging statement - #debug('received rpc notification, greenlet %s will handle it', gr) - gr.switch() - - -class ErrorResponse(BaseException): - - """Raise this in a request handler to respond with a given error message. - - Unlike when other exceptions are caught, this gives full control off the - error response sent. When "ErrorResponse(msg)" is caught "msg" will be - sent verbatim as the error response.No traceback will be appended. - """ - - pass diff --git a/.local/lib/python3.9/site-packages/pynvim/plugin/__init__.py b/.local/lib/python3.9/site-packages/pynvim/plugin/__init__.py deleted file mode 100644 index 9365438b..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/plugin/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -"""Nvim plugin/host subpackage.""" - -from pynvim.plugin.decorators import (autocmd, command, decode, encoding, function, - plugin, rpc_export, shutdown_hook) -from pynvim.plugin.host import Host - - -__all__ = ('Host', 'plugin', 'rpc_export', 'command', 'autocmd', - 'function', 'encoding', 'decode', 'shutdown_hook') diff --git a/.local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 0696ca70d77d801a71e92be88788f437802fa832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmY+ByH3L}6o#Eklk}2>i2)%-GLRs#fP@eu5)uoW7n85{FQo9M0~?4?uMy4i73>bUd6}d|Zp{gMS?{^#NqnBH=67uNU zDs8sqgV0bpXbftn>o^h}?gS0z_X%`4u{ zt8QagN}iP$m1!+I*-g**?~t(C4VREsww92x+qmpfDB5#&<$p0U5H1dn!&&qLE{BJz diff --git a/.local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/decorators.cpython-39.pyc b/.local/lib/python3.9/site-packages/pynvim/plugin/__pycache__/decorators.cpython-39.pyc deleted file mode 100644 index 9f2c9d8c20aa7c9e67bb287a1a2f746a4c404d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4138 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

ajX@P&acYH*>gAr;wrC;I5dZ zUsUqS6C5#ain-Ia(0{FauVWSGJOTDR*dbZt0rN;*ie}k8?0KYd{CVt-UqM!^dc7p> zhdYNnkYga4=wxBqOCAQ?>mSBFVfi|>52;f(h`?I8=E&|g!u*)9;Z{^1(d-)N*l@gN_-4GNDUTg@PaozDzjza|}t_$P}UZHnd+;9l`+o2$~)6l*-ZS3|A+!=S&fCmb6qr z!yQyIh1bDL(kXJTv=f~yrZ7o*`nuFOrlD!046(jXO`=$#@rMgk<2TWN zfRwh7DIkfhHi=-mZP@y#B}sDz#dCBa9#84=9vXj^F1KgtB9I7{OiCyLtE5l~vc_oR zYbi8q13;$wY@5G@9n2AoP>8=z*$0$er}ySJQfHAe-^TD`q-Q7t`WT~gQ_9TlVU9c` zHbf#JHuq2w9*hPshVPQWrZ8DI0K-2Z*o7J!Cs6QHz%_}AfQTQ!zcJ1$Ig}Y54|zCd zcl1J>Ks~40cZSKr{BJxSZ;V>s+Pu-Z^|Qab^~nvH3q76?i8K)65ELeY%ib=(gtj16 zVeTMo8O})&0(mJwZk6Cx%y8=z4*0E9DPe~Kr6aXlfo#>)35b5J1kX9A z?peE4iIlbLZ3;n>)(51~IJyc59felP7RO z#uKg5eAd!mf2bVT=rNi3g+{x{_1ggO0~-KdJNlifjOzgQo6I_?XN|mmtnM|j>w31t z0N(ftIF4B@IqM^U^tk@_^#fa$HVfMcE&nj=`B4^cDW6rpdt>g_>%T{4h znt7AXhe&P>E1uh1-#d?(th^sm99%ajIbF}9oi1=Is#1OKcNq)0VnM$47zAp)S?@B^952$ z29eB|jpXPW3>nod?J{(#g<6wx-B8yAcCS1&j1BFAsy)@TI!s>a@(TBT&gGp0s6IYH z0(_#L!h!$f1E>k9o5s|O0(j8(CW-5wHa0UI{)=|3@msKN@K6q}qTk>jU_M|A9w_;u zmaH8(;u@kNaw&#-R~~*qw$lK*Yy8bCuoh0lG^6sl;zddcHU4Y~IK zfoKJ;5(F_T99a25FxbY`4?0sJi=eZ{~d@{t^2A z11Y70DC)Xe*GB8|w2La$BbA;!0@>nBEVtOAPcOn5}O zDQNO1&;;o9>)W@CPpd|&`-ohWu(88_lLv9^P? zZ2~y};}T{#{GUKq%!Q#`67%YaYwCG3U&?F8*0_PU4fHg~uf}Q(ubJ0*fts?n1cUMK zS&Nz2Lyh7hcxM>DhncsPctea?#+ct>jI}UknZ^Kg9l$pM@mgLvS;c|2|3)uj0tCcE@ysjO(&Vy(fW(g7X3hkFb&tQFrSIYA0@b%9p9DiqVp;d_XI`O>->CS`qxX zPCpjW%rId59U5|vvIS)(82C@5ln_r*Z5RMD1#2R1B_Jb%f&5RFLGBm9o2}Z2c<_#5 zAM|KXEv=5b5m}??hzy1R!3*CcEOS0Cf#VbqH_;#|i0dn`zyk3|0Lq&XOpCa4kHkb?Co4EBceQD!mH3?a?|Oi1$L3CGJZju&;*EoN-7Kc z_7+xgTgf)if0a4@R)Ye3$f3ON$4_vAiHn6iaaUB!A8I+cTpbOjv1_XNBVpv_$~ z&mE19H9gwPXkfd_Sfc<|{5Jr85U=}=l(47~bIPmg30EG` z5HU{3>%#U)+nUquacOn4@xkUe`()a{((Kf@&GZ0YrR9w5m(IP@dw)8W3&V@VIr z-3ER7I%RYP%U`FAZr6m;3mq3xF8?<5QDnl&vEt+j2!kk{N0J*(Waa`I&JG}I=jcTp z8968EHDtDCSoR8{WZSOTroCn_qt&vj_Dgotw(M7tDxGWm7c}uh$_ToON|fy2zrG#* z04=wYq?=@}`H$&cRp4=wL@6g}EUFpzd%-sT>=6EI;mE%`HsPDf3jwmwMWgKPB?Bxa zg^e__SSeqWm%$$XeG(T0(-{&jr4L>!2jdT`NZ!oUXbsTVk0Ox13g6>L*gBkC!4`|o z5%9tk;U59s_Tdiii8+saPB+o?-z1OuC)8&F@!;183eG6(l(hKIMg|?^TgW?b00$f`s4NM-}~s-t%U_k!SC7*k`T9}HIgFtbFz?Rro9 zkx0;Nu@i}2D?vrujUW1b8fT>~{C;vhij%tfxrUiP*OAee+pT2nBR}MxaEfC}Cxwe` zqH*>|o!&=^{~Vd8022z~0a#GE1`g<4=LI|q+~7q#4X?;eUgFk|R9@zlXA1akqHbYa zCwByOCDhf%b^G{|Y-gcv|F}+a9qr1f1JC7nlIN(a@FVb6M^dHdK5!wu;meEljj9lTz2>+GPc;bn20} zN?Ete3tJUD7q%Jk??>n>Yt7xYyo8ln!*e%6Kk-|EKlJQm&9j49*yV8BS$QKfUANcr zL)RTzevhzX$Lq190dLa^Du1Unu&?>z>RKyY1vlQZ+pQq5fv_-2{LcEB?~l&fCv&8@ z?KSR;lV|P6?|F~G-A4Nfuipi#j8?oJw%y^`uh4hZOVI61z22->vqJ18gT5ecXGTv7 zhEt6tc-?jsCf?H|)4iu&n^wd9cH+8ODHk_vSyt+ZsOMtQz0AtF;Zj+{LbGB%9188I z*K375Gjc)6tTxsfdV%Zn7m&c%3p$xjgS=402~hGs>zf&pY3Z;(;eFeDi!Gh_JBp zf&XA4+>LLYkNw0u*Kf5SwpP6u^)$fw99!qdD_Dd4HTvsByN|7NUFcsWegm1JTB^lN zwaO~2qE=O%;r~))>i-$0nU`J;_wPt?V=}@kK}rH1cad!ZrY-=w3BeZE63ki`AazTqweTz_mFG$a1_0u1Zm>ji&2f!Bt+99ka5RR$SfRbM z$JknnqK71X++Gc$2d%)46UbLDZdjH*{@q>kWBZ8@bhS92??+;q4@81G-Z`6gm!voG zd){;uAkb?kk?^IkbGzS4+G|oCuC(-O|(X&>y2f(f6r1P9=g$Zlfm z8q*0Ji$LUJ+%>lin>hVZnOMCaDJHeENjgE05D##Oy{kn^@54x zXeePNY?Lzda?t8M;H@j4;O&=4%JAgOK1+FMT$X@~ub_}O{;G6{lNgXF@r1}J5d=4J ziZa5sBto1<={CKcLDsAG-z5q*XG><-p1m9 zXE9+?Z%>2C9$97x zuNOV`M1yM1Qua1wU#IK>WtS+sNZAe_ru&tdi3hMoPr^HBA)%+JhE|n~m{Svzc3E|- zu}OCh5|5O$PCB|xMs4z=vWX-a^Z^Re$f>Ee4O28+N>~al0)wTIS^J(69@k;S)-N-K z{z)M*$PjL@AFxlAP`#i?cSswaxDG84aN~25qh`IBExF*D+a3r3 zTjC0`KY}(|?4xWyvaIys)3(%boyROC)fOXc)Xi{TxhF zCW?2_>GzOw{%IAa0zwrwJUj!Ud9G#q=il9qA9!;dB%+8W$-yBCvm7M;ZLpu*8R?0d z>RZ}2%sV)yjSAqco|0ZJbd4F_7T52Mc?+k3tFyfQp29U99?6Erl(6=7B@QmgU0}+m zcybLe)pv8AsGZ|{&fRZ;%x2vZ@8Oy05d>PA$Ua(UI&?PQwF%-k&~S$RM$Y~c4KKB% zAQ2T;XgJmpm+3`veTVhmLES1+Tt%jU^%kp5*nj*B*)Q3hEspnqM>$01_)l;tB1!&p z04sOXQk4)4{<4uyJpU%do~xq**T8kHqaIX72KK~23s^|nfxMI!4l5%#Z>joF`6(0k zQZ_P^0!Gl6l~mnON2OHn8r@>o+$yDJTH=LmZDes{R9;m^mDJ>HSs5)PR%&gqYs&Bb z+3%>M>S!@7ri9;GARC{xy#~OTK)lhbZx?&Z!6pY(n`Z)^D@q(d7Kf%oKkK^*LgHN z%)O5NW_%{_L+`9jc_`}dS*Y?iA?J6S!=rt)v*WdB5O7<-u@Ir%A|HbMf#G4e2hE83 zcA^1Xj5lN34`V1hUf(Zqoa@_N%0uhntW+H9m&|xD=yW`hX|2AWmEeWCL`Mu$84h}$ zfL_nEzzdxcDW&|A<;OHlD{On2^`I5Q2oOEu9F~`r=maNEXj#d1+d(Ui;he(N3tK(U zb?ZyHm=tooq?1O<^mYVGNFG5}=ukVS(iwzp(r+$Ul$nz^$B1P=r+_Cq7ACY#)L~|Z z-V<5r81x85#{5jDA{m=_5G0ufQ@vXfKg8SuDZYb@B+-B+)$y#VkjjD%`+7inqb4Mj zJX9UeDm+qMt-(iCQCC5o%8ZxlOG7i5g*O9g^dP<(>hQ>3X`TpfR-S0n$E{$GAFF{J zDaE8B5@<@2-Y#Sgcw@uY=kexYg!?wUG<(9ZMqR@}0o6Okqps#Vfb&CN?B)X*g1`OtU=seDq~hZ$aaeERNlV3Dr*`@sMylab4GKI)UKW09QfH)F{ph za{LL!8V*Ri32uSRznURf#{UiH|9}jw~xki#j&Cf?y+7rY&~qc`_+~jTB2S1IQX4n;~h|`K9W4f?Sw?QijaiHHLl}{pa?hc zEbt=GYl?T!eh+kLAh|C@62aY7rn`XSLrsj`V;4|?J0-^85M4Ci4G!YX-y!8_X2a!q z-};MBj|3J;1WDaah+|5K@KHaRnNF{}X3h%oxbqMAGMW3puDNA{J*zLEhn)BT3N$fi zx$sEw0UGOSGh-H}ruAleH}b=&c*NeL-E>%T8mSO}HbczeR}mvyHS30ip6H;tAm=1U z*h4Bsl)VZ*w3B~}6qDnJLx^T-`R+2jPkvOMGWG~wpw4h8hq+#Y(*d)*g7=l3-L7lm z7FuN`7$P@;Rf!S7NCaGVEqc(Mp~I$DmTVQl#TEaAcS(sNRkeum-bR}HO#w@s-V0c8 zS{L+bZi|Tgsp24okZ%#Rn>tbxhGpcMS#3Hd9hON~LIW3t_h>*?lKM(=ur_km#eK@i z@a$TSa8dVjq_N6?KVF^2cN#Qo6ZDaenAs@mGc(SPbkjQinFgapn=D_~?AA~{(MIc& zCh)nAXa{`5XXaZn@*1I zI1Yj+*fjo;^WYT5%u6;(P^IMC&~ZHe1>VQ_fRTqXo*w0QA`CmN=PU=QSCUalb&5jD zNJh7%?cnM|T?BB8l~nto3YQs9b_(SOS5}elg@kS4$V1izjyBAAiZ2Py+#9ScTcmKP zS6OQO1-qmC7%n#juHc#%;f&)bBYVT)-iGlfRaDoZ3mSqpQjlv|FJyWLG3-o3%qS~U zacn-sO?)ONOs>?eo8(dj(v~>IDBwxU5AqYa=JThB`oRawbgFf(I_>wO(v|C74YI0_rS{pBP~ zZB26yPqb9RlqBXI6o!=qo=D0LBe1XnnM~C6;n>3p#vfFc+OVl^1KEEeje{yG_L6+!VdE>TbY`+T z;(vwRYKpigCzzRZ%G+#l*WUdHQ9-(i%!+u1!XCVkK+-QJ22SweY21KrV$fdswM+?@ zBsyw~QlHTU4b|Yf4k$8*6fa$KDZIC%13<}b)P5wdg_?UnMEfT7z(o{>hc=Z>>(^p?gvGJ~q7GG*yf)~uP@(p=M zAvY6-e!5{Va$X1$J@JIHDGSB-@%rCLaRr&8A$-niFAW@IhG)NQm5o`sl<1}*@T2ln z@sXG(3LFzC?F}q=nAUFlJ43XQlgy(4g zzeu@+X~Va^8sTzmiaGCfV-RLVkkW7WB+Dg_1kIB3?T@A<8>MVvZtH)Es+e}$1Sb!e zDieQTvlLoFLc&D+b&m+yP)P^5XMQDh&n^B)Q3_*a3`eWYdSYko^l%4j5J` zRLZr=p~b2pzsxO^FhEY;Rcd|@86q#h0hw+@cCL{ZB#%(IS&5H7s&JOT55Si*BTarO zq%w|**k9gG-)7K#FR&;9^vYbgrhmRetk+I(ZG)p3eB%Paw9GtVDfPk*?Wr5 zakh}(5xXnD{lT>xcSMgGoI{57(^@lCJa#mZ^btiEJb=IOO3n8eEfF3X$JXH_l|kE<*8$#%ogV3jC{>VleXS{`?{e zw|$LXtG$MZiddI&Eq+Wr{)94%x*0b<`2ay7c>sVb5+(@hz$PT3Pha&Q0-s`POaUfml%uyd#eN`^xfCSw}F& M(#&G5Xny1W0lb+B6951J diff --git a/.local/lib/python3.9/site-packages/pynvim/plugin/decorators.py b/.local/lib/python3.9/site-packages/pynvim/plugin/decorators.py deleted file mode 100644 index e7cc5280..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/plugin/decorators.py +++ /dev/null @@ -1,175 +0,0 @@ -"""Decorators used by python host plugin system.""" - -import inspect -import logging - -from pynvim.compat import IS_PYTHON3, unicode_errors_default - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warning,) -__all__ = ('plugin', 'rpc_export', 'command', 'autocmd', 'function', - 'encoding', 'decode', 'shutdown_hook') - - -def plugin(cls): - """Tag a class as a plugin. - - This decorator is required to make the class methods discoverable by the - plugin_load method of the host. - """ - cls._nvim_plugin = True - # the _nvim_bind attribute is set to True by default, meaning that - # decorated functions have a bound Nvim instance as first argument. - # For methods in a plugin-decorated class this is not required, because - # the class initializer will already receive the nvim object. - predicate = lambda fn: hasattr(fn, '_nvim_bind') - for _, fn in inspect.getmembers(cls, predicate): - if IS_PYTHON3: - fn._nvim_bind = False - else: - fn.im_func._nvim_bind = False - return cls - - -def rpc_export(rpc_method_name, sync=False): - """Export a function or plugin method as a msgpack-rpc request handler.""" - def dec(f): - f._nvim_rpc_method_name = rpc_method_name - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = False - return f - return dec - - -def command(name, nargs=0, complete=None, range=None, count=None, bang=False, - register=False, sync=False, allow_nested=False, eval=None): - """Tag a function or plugin method as a Nvim command handler.""" - def dec(f): - f._nvim_rpc_method_name = 'command:{}'.format(name) - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = True - - opts = {} - - if range is not None: - opts['range'] = '' if range is True else str(range) - elif count is not None: - opts['count'] = count - - if bang: - opts['bang'] = '' - - if register: - opts['register'] = '' - - if nargs: - opts['nargs'] = nargs - - if complete: - opts['complete'] = complete - - if eval: - opts['eval'] = eval - - if not sync and allow_nested: - rpc_sync = "urgent" - else: - rpc_sync = sync - - f._nvim_rpc_spec = { - 'type': 'command', - 'name': name, - 'sync': rpc_sync, - 'opts': opts - } - return f - return dec - - -def autocmd(name, pattern='*', sync=False, allow_nested=False, eval=None): - """Tag a function or plugin method as a Nvim autocommand handler.""" - def dec(f): - f._nvim_rpc_method_name = 'autocmd:{}:{}'.format(name, pattern) - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = True - - opts = { - 'pattern': pattern - } - - if eval: - opts['eval'] = eval - - if not sync and allow_nested: - rpc_sync = "urgent" - else: - rpc_sync = sync - - f._nvim_rpc_spec = { - 'type': 'autocmd', - 'name': name, - 'sync': rpc_sync, - 'opts': opts - } - return f - return dec - - -def function(name, range=False, sync=False, allow_nested=False, eval=None): - """Tag a function or plugin method as a Nvim function handler.""" - def dec(f): - f._nvim_rpc_method_name = 'function:{}'.format(name) - f._nvim_rpc_sync = sync - f._nvim_bind = True - f._nvim_prefix_plugin_path = True - - opts = {} - - if range: - opts['range'] = '' if range is True else str(range) - - if eval: - opts['eval'] = eval - - if not sync and allow_nested: - rpc_sync = "urgent" - else: - rpc_sync = sync - - f._nvim_rpc_spec = { - 'type': 'function', - 'name': name, - 'sync': rpc_sync, - 'opts': opts - } - return f - return dec - - -def shutdown_hook(f): - """Tag a function or method as a shutdown hook.""" - f._nvim_shutdown_hook = True - f._nvim_bind = True - return f - - -def decode(mode=unicode_errors_default): - """Configure automatic encoding/decoding of strings.""" - def dec(f): - f._nvim_decode = mode - return f - return dec - - -def encoding(encoding=True): - """DEPRECATED: use pynvim.decode().""" - if isinstance(encoding, str): - encoding = True - - def dec(f): - f._nvim_decode = encoding - return f - return dec diff --git a/.local/lib/python3.9/site-packages/pynvim/plugin/host.py b/.local/lib/python3.9/site-packages/pynvim/plugin/host.py deleted file mode 100644 index 00af6351..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/plugin/host.py +++ /dev/null @@ -1,276 +0,0 @@ -"""Implements a Nvim host for python plugins.""" -import imp -import inspect -import logging -import os -import os.path -import re -from functools import partial -from traceback import format_exc - -from pynvim.api import decode_if_bytes, walk -from pynvim.compat import IS_PYTHON3, find_module -from pynvim.msgpack_rpc import ErrorResponse -from pynvim.plugin import script_host -from pynvim.util import format_exc_skip, get_client_info - -__all__ = ('Host') - -logger = logging.getLogger(__name__) -error, debug, info, warn = (logger.error, logger.debug, logger.info, - logger.warning,) - -host_method_spec = {"poll": {}, "specs": {"nargs": 1}, "shutdown": {}} - - -class Host(object): - - """Nvim host for python plugins. - - Takes care of loading/unloading plugins and routing msgpack-rpc - requests/notifications to the appropriate handlers. - """ - - def __init__(self, nvim): - """Set handlers for plugin_load/plugin_unload.""" - self.nvim = nvim - self._specs = {} - self._loaded = {} - self._load_errors = {} - self._notification_handlers = { - 'nvim_error_event': self._on_error_event - } - self._request_handlers = { - 'poll': lambda: 'ok', - 'specs': self._on_specs_request, - 'shutdown': self.shutdown - } - - # Decode per default for Python3 - self._decode_default = IS_PYTHON3 - - def _on_async_err(self, msg): - # uncaught python exception - self.nvim.err_write(msg, async_=True) - - def _on_error_event(self, kind, msg): - # error from nvim due to async request - # like nvim.command(..., async_=True) - errmsg = "{}: Async request caused an error:\n{}\n".format( - self.name, decode_if_bytes(msg)) - self.nvim.err_write(errmsg, async_=True) - return errmsg - - def start(self, plugins): - """Start listening for msgpack-rpc requests and notifications.""" - self.nvim.run_loop(self._on_request, - self._on_notification, - lambda: self._load(plugins), - err_cb=self._on_async_err) - - def shutdown(self): - """Shutdown the host.""" - self._unload() - self.nvim.stop_loop() - - def _wrap_delayed_function(self, cls, delayed_handlers, name, sync, - module_handlers, path, *args): - # delete the delayed handlers to be sure - for handler in delayed_handlers: - method_name = handler._nvim_registered_name - if handler._nvim_rpc_sync: - del self._request_handlers[method_name] - else: - del self._notification_handlers[method_name] - # create an instance of the plugin and pass the nvim object - plugin = cls(self._configure_nvim_for(cls)) - - # discover handlers in the plugin instance - self._discover_functions(plugin, module_handlers, path, False) - - if sync: - self._request_handlers[name](*args) - else: - self._notification_handlers[name](*args) - - def _wrap_function(self, fn, sync, decode, nvim_bind, name, *args): - if decode: - args = walk(decode_if_bytes, args, decode) - if nvim_bind is not None: - args.insert(0, nvim_bind) - try: - return fn(*args) - except Exception: - if sync: - msg = ("error caught in request handler '{} {}':\n{}" - .format(name, args, format_exc_skip(1))) - raise ErrorResponse(msg) - else: - msg = ("error caught in async handler '{} {}'\n{}\n" - .format(name, args, format_exc_skip(1))) - self._on_async_err(msg + "\n") - - def _on_request(self, name, args): - """Handle a msgpack-rpc request.""" - if IS_PYTHON3: - name = decode_if_bytes(name) - handler = self._request_handlers.get(name, None) - if not handler: - msg = self._missing_handler_error(name, 'request') - pass # replaces next logging statement - #error(msg) - raise ErrorResponse(msg) - - pass # replaces next logging statement - #debug('calling request handler for "%s", args: "%s"', name, args) - rv = handler(*args) - pass # replaces next logging statement - #debug("request handler for '%s %s' returns: %s", name, args, rv) - return rv - - def _on_notification(self, name, args): - """Handle a msgpack-rpc notification.""" - if IS_PYTHON3: - name = decode_if_bytes(name) - handler = self._notification_handlers.get(name, None) - if not handler: - msg = self._missing_handler_error(name, 'notification') - pass # replaces next logging statement - #error(msg) - self._on_async_err(msg + "\n") - return - - pass # replaces next logging statement - #debug('calling notification handler for "%s", args: "%s"', name, args) - handler(*args) - - def _missing_handler_error(self, name, kind): - msg = 'no {} handler registered for "{}"'.format(kind, name) - pathmatch = re.match(r'(.+):[^:]+:[^:]+', name) - if pathmatch: - loader_error = self._load_errors.get(pathmatch.group(1)) - if loader_error is not None: - msg = msg + "\n" + loader_error - return msg - - def _load(self, plugins): - has_script = False - for path in plugins: - err = None - if path in self._loaded: - pass # replaces next logging statement - #error('{} is already loaded'.format(path)) - continue - try: - if path == "script_host.py": - module = script_host - has_script = True - else: - directory, name = os.path.split(os.path.splitext(path)[0]) - file, pathname, descr = find_module(name, [directory]) - module = imp.load_module(name, file, pathname, descr) - handlers = [] - self._discover_classes(module, handlers, path) - self._discover_functions(module, handlers, path, False) - if not handlers: - pass # replaces next logging statement - #error('{} exports no handlers'.format(path)) - continue - self._loaded[path] = {'handlers': handlers, 'module': module} - except Exception as e: - err = ('Encountered {} loading plugin at {}: {}\n{}' - .format(type(e).__name__, path, e, format_exc(5))) - pass # replaces next logging statement - #error(err) - self._load_errors[path] = err - - kind = ("script-host" if len(plugins) == 1 and has_script - else "rplugin-host") - info = get_client_info(kind, 'host', host_method_spec) - self.name = info[0] - self.nvim.api.set_client_info(*info, async_=True) - - def _unload(self): - for path, plugin in self._loaded.items(): - handlers = plugin['handlers'] - for handler in handlers: - method_name = handler._nvim_registered_name - if hasattr(handler, '_nvim_shutdown_hook'): - handler() - elif handler._nvim_rpc_sync: - del self._request_handlers[method_name] - else: - del self._notification_handlers[method_name] - self._specs = {} - self._loaded = {} - - def _discover_classes(self, module, handlers, plugin_path): - for _, cls in inspect.getmembers(module, inspect.isclass): - if getattr(cls, '_nvim_plugin', False): - # discover handlers in the plugin instance - self._discover_functions(cls, handlers, plugin_path, True) - - def _discover_functions(self, obj, handlers, plugin_path, delay): - def predicate(o): - return hasattr(o, '_nvim_rpc_method_name') - - cls_handlers = [] - specs = [] - objdecode = getattr(obj, '_nvim_decode', self._decode_default) - for _, fn in inspect.getmembers(obj, predicate): - method = fn._nvim_rpc_method_name - if fn._nvim_prefix_plugin_path: - method = '{}:{}'.format(plugin_path, method) - sync = fn._nvim_rpc_sync - if delay: - fn_wrapped = partial(self._wrap_delayed_function, obj, - cls_handlers, method, sync, - handlers, plugin_path) - else: - decode = getattr(fn, '_nvim_decode', objdecode) - nvim_bind = None - if fn._nvim_bind: - nvim_bind = self._configure_nvim_for(fn) - - fn_wrapped = partial(self._wrap_function, fn, - sync, decode, nvim_bind, method) - self._copy_attributes(fn, fn_wrapped) - fn_wrapped._nvim_registered_name = method - # register in the rpc handler dict - if sync: - if method in self._request_handlers: - raise Exception(('Request handler for "{}" is ' - + 'already registered').format(method)) - self._request_handlers[method] = fn_wrapped - else: - if method in self._notification_handlers: - raise Exception(('Notification handler for "{}" is ' - + 'already registered').format(method)) - self._notification_handlers[method] = fn_wrapped - if hasattr(fn, '_nvim_rpc_spec'): - specs.append(fn._nvim_rpc_spec) - handlers.append(fn_wrapped) - cls_handlers.append(fn_wrapped) - if specs: - self._specs[plugin_path] = specs - - def _copy_attributes(self, fn, fn2): - # Copy _nvim_* attributes from the original function - for attr in dir(fn): - if attr.startswith('_nvim_'): - setattr(fn2, attr, getattr(fn, attr)) - - def _on_specs_request(self, path): - if IS_PYTHON3: - path = decode_if_bytes(path) - if path in self._load_errors: - self.nvim.out_write(self._load_errors[path] + '\n') - return self._specs.get(path, 0) - - def _configure_nvim_for(self, obj): - # Configure a nvim instance for obj (checks encoding configuration) - nvim = self.nvim - decode = getattr(obj, '_nvim_decode', self._decode_default) - if decode: - nvim = nvim.with_decode(decode) - return nvim diff --git a/.local/lib/python3.9/site-packages/pynvim/plugin/script_host.py b/.local/lib/python3.9/site-packages/pynvim/plugin/script_host.py deleted file mode 100644 index a3a0d2d3..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/plugin/script_host.py +++ /dev/null @@ -1,276 +0,0 @@ -"""Legacy python/python3-vim emulation.""" -import imp -import io -import logging -import os -import sys -from types import ModuleType - -from pynvim.api import Nvim, walk -from pynvim.compat import IS_PYTHON3 -from pynvim.msgpack_rpc import ErrorResponse -from pynvim.plugin.decorators import plugin, rpc_export -from pynvim.util import format_exc_skip - -__all__ = ('ScriptHost',) - - -logger = logging.getLogger(__name__) -debug, info, warn = (logger.debug, logger.info, logger.warn,) - -if IS_PYTHON3: - basestring = str - - if sys.version_info >= (3, 4): - from importlib.machinery import PathFinder - - PYTHON_SUBDIR = 'python3' -else: - PYTHON_SUBDIR = 'python2' - - -@plugin -class ScriptHost(object): - - """Provides an environment for running python plugins created for Vim.""" - - def __init__(self, nvim): - """Initialize the legacy python-vim environment.""" - self.setup(nvim) - # context where all code will run - self.module = ModuleType('__main__') - nvim.script_context = self.module - # it seems some plugins assume 'sys' is already imported, so do it now - exec('import sys', self.module.__dict__) - self.legacy_vim = LegacyVim.from_nvim(nvim) - sys.modules['vim'] = self.legacy_vim - # mimic Vim by importing vim module by default. - exec('import vim', self.module.__dict__) - # Handle DirChanged. #296 - nvim.command( - 'au DirChanged * call rpcnotify({}, "python_chdir", v:event.cwd)' - .format(nvim.channel_id), async_=True) - # XXX: Avoid race condition. - # https://github.com/neovim/pynvim/pull/296#issuecomment-358970531 - # TODO(bfredl): when host initialization has been refactored, - # to make __init__ safe again, the following should work: - # os.chdir(nvim.eval('getcwd()', async_=False)) - nvim.command('call rpcnotify({}, "python_chdir", getcwd())' - .format(nvim.channel_id), async_=True) - - def setup(self, nvim): - """Setup import hooks and global streams. - - This will add import hooks for importing modules from runtime - directories and patch the sys module so 'print' calls will be - forwarded to Nvim. - """ - self.nvim = nvim - pass # replaces next logging statement - #info('install import hook/path') - self.hook = path_hook(nvim) - sys.path_hooks.append(self.hook) - nvim.VIM_SPECIAL_PATH = '_vim_path_' - sys.path.append(nvim.VIM_SPECIAL_PATH) - pass # replaces next logging statement - #info('redirect sys.stdout and sys.stderr') - self.saved_stdout = sys.stdout - self.saved_stderr = sys.stderr - sys.stdout = RedirectStream(lambda data: nvim.out_write(data)) - sys.stderr = RedirectStream(lambda data: nvim.err_write(data)) - - def teardown(self): - """Restore state modified from the `setup` call.""" - nvim = self.nvim - pass # replaces next logging statement - #info('uninstall import hook/path') - sys.path.remove(nvim.VIM_SPECIAL_PATH) - sys.path_hooks.remove(self.hook) - pass # replaces next logging statement - #info('restore sys.stdout and sys.stderr') - sys.stdout = self.saved_stdout - sys.stderr = self.saved_stderr - - @rpc_export('python_execute', sync=True) - def python_execute(self, script, range_start, range_stop): - """Handle the `python` ex command.""" - self._set_current_range(range_start, range_stop) - try: - exec(script, self.module.__dict__) - except Exception: - raise ErrorResponse(format_exc_skip(1)) - - @rpc_export('python_execute_file', sync=True) - def python_execute_file(self, file_path, range_start, range_stop): - """Handle the `pyfile` ex command.""" - self._set_current_range(range_start, range_stop) - with open(file_path) as f: - script = compile(f.read(), file_path, 'exec') - try: - exec(script, self.module.__dict__) - except Exception: - raise ErrorResponse(format_exc_skip(1)) - - @rpc_export('python_do_range', sync=True) - def python_do_range(self, start, stop, code): - """Handle the `pydo` ex command.""" - self._set_current_range(start, stop) - nvim = self.nvim - start -= 1 - fname = '_vim_pydo' - - # define the function - function_def = 'def %s(line, linenr):\n %s' % (fname, code,) - exec(function_def, self.module.__dict__) - # get the function - function = self.module.__dict__[fname] - while start < stop: - # Process batches of 5000 to avoid the overhead of making multiple - # API calls for every line. Assuming an average line length of 100 - # bytes, approximately 488 kilobytes will be transferred per batch, - # which can be done very quickly in a single API call. - sstart = start - sstop = min(start + 5000, stop) - lines = nvim.current.buffer.api.get_lines(sstart, sstop, True) - - exception = None - newlines = [] - linenr = sstart + 1 - for i, line in enumerate(lines): - result = function(line, linenr) - if result is None: - # Update earlier lines, and skip to the next - if newlines: - end = sstart + len(newlines) - 1 - nvim.current.buffer.api.set_lines(sstart, end, - True, newlines) - sstart += len(newlines) + 1 - newlines = [] - pass - elif isinstance(result, basestring): - newlines.append(result) - else: - exception = TypeError('pydo should return a string ' - + 'or None, found %s instead' - % result.__class__.__name__) - break - linenr += 1 - - start = sstop - if newlines: - end = sstart + len(newlines) - nvim.current.buffer.api.set_lines(sstart, end, True, newlines) - if exception: - raise exception - # delete the function - del self.module.__dict__[fname] - - @rpc_export('python_eval', sync=True) - def python_eval(self, expr): - """Handle the `pyeval` vim function.""" - return eval(expr, self.module.__dict__) - - @rpc_export('python_chdir', sync=False) - def python_chdir(self, cwd): - """Handle working directory changes.""" - os.chdir(cwd) - - def _set_current_range(self, start, stop): - current = self.legacy_vim.current - current.range = current.buffer.range(start, stop) - - -class RedirectStream(io.IOBase): - def __init__(self, redirect_handler): - self.redirect_handler = redirect_handler - - def write(self, data): - self.redirect_handler(data) - - def writelines(self, seq): - self.redirect_handler('\n'.join(seq)) - - -if IS_PYTHON3: - num_types = (int, float) -else: - num_types = (int, long, float) # noqa: F821 - - -def num_to_str(obj): - if isinstance(obj, num_types): - return str(obj) - else: - return obj - - -class LegacyVim(Nvim): - def eval(self, expr): - obj = self.request("vim_eval", expr) - return walk(num_to_str, obj) - - -# Copied/adapted from :help if_pyth. -def path_hook(nvim): - def _get_paths(): - if nvim._thread_invalid(): - return [] - return discover_runtime_directories(nvim) - - def _find_module(fullname, oldtail, path): - idx = oldtail.find('.') - if idx > 0: - name = oldtail[:idx] - tail = oldtail[idx + 1:] - fmr = imp.find_module(name, path) - module = imp.find_module(fullname[:-len(oldtail)] + name, *fmr) - return _find_module(fullname, tail, module.__path__) - else: - return imp.find_module(fullname, path) - - class VimModuleLoader(object): - def __init__(self, module): - self.module = module - - def load_module(self, fullname, path=None): - # Check sys.modules, required for reload (see PEP302). - try: - return sys.modules[fullname] - except KeyError: - pass - return imp.load_module(fullname, *self.module) - - class VimPathFinder(object): - @staticmethod - def find_module(fullname, path=None): - """Method for Python 2.7 and 3.3.""" - try: - return VimModuleLoader( - _find_module(fullname, fullname, path or _get_paths())) - except ImportError: - return None - - @staticmethod - def find_spec(fullname, target=None): - """Method for Python 3.4+.""" - return PathFinder.find_spec(fullname, _get_paths(), target) - - def hook(path): - if path == nvim.VIM_SPECIAL_PATH: - return VimPathFinder - else: - raise ImportError - - return hook - - -def discover_runtime_directories(nvim): - rv = [] - for rtp in nvim.list_runtime_paths(): - if not os.path.exists(rtp): - continue - for subdir in ['pythonx', PYTHON_SUBDIR]: - path = os.path.join(rtp, subdir) - if os.path.exists(path): - rv.append(path) - return rv diff --git a/.local/lib/python3.9/site-packages/pynvim/util.py b/.local/lib/python3.9/site-packages/pynvim/util.py deleted file mode 100644 index dcc979df..00000000 --- a/.local/lib/python3.9/site-packages/pynvim/util.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Shared utility functions.""" - -import sys -from traceback import format_exception - - -def format_exc_skip(skip, limit=None): - """Like traceback.format_exc but allow skipping the first frames.""" - etype, val, tb = sys.exc_info() - for i in range(skip): - tb = tb.tb_next - return (''.join(format_exception(etype, val, tb, limit))).rstrip() - - -# Taken from SimpleNamespace in python 3 -class Version: - """Helper class for version info.""" - - def __init__(self, **kwargs): - """Create the Version object.""" - self.__dict__.update(kwargs) - - def __repr__(self): - """Return str representation of the Version.""" - keys = sorted(self.__dict__) - items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys) - return "{}({})".format(type(self).__name__, ", ".join(items)) - - def __eq__(self, other): - """Check if version is same as other.""" - return self.__dict__ == other.__dict__ - - -def get_client_info(kind, type_, method_spec): - """Returns a tuple describing the client.""" - name = "python{}-{}".format(sys.version_info[0], kind) - attributes = {"license": "Apache v2", - "website": "github.com/neovim/pynvim"} - return (name, VERSION.__dict__, type_, method_spec, attributes) - - -VERSION = Version(major=0, minor=4, patch=2, prerelease='') diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/PKG-INFO b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/PKG-INFO deleted file mode 100644 index f0eb0dd1..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/PKG-INFO +++ /dev/null @@ -1,44 +0,0 @@ -Metadata-Version: 2.1 -Name: pywal -Version: 3.3.0 -Summary: Generate and change color-schemes on the fly -Home-page: https://github.com/dylanaraps/pywal -Author: Dylan Araps -Author-email: dylan.araps@gmail.com -License: MIT -Download-URL: https://github.com/dylanaraps/pywal/archive/3.3.0.tar.gz -Description:

-

Generate and change color-schemes on the fly.

- -

- - - - - - -

- - img - - Pywal is a tool that generates a color palette from the dominant colors in an image. It then applies the colors system-wide and on-the-fly in all of your favourite programs. - - There are currently 5 supported color generation backends, each providing a different palette of colors from each image. You're bound to find an appealing color-scheme. - - Pywal also supports predefined themes and has over 250 themes built-in. You can also create your own theme files to share with others. - - The goal of Pywal was to be as out of the way as possible. It doesn't modify any of your existing configuration files. Instead it works around them and provides tools to integrate your system as you see fit. - - Terminal emulators and TTYs have their color-schemes updated in real-time with no delay. With minimal configuration this functionality can be extended to almost anything running on your system. - - ### More: \[[Installation](https://github.com/dylanaraps/pywal/wiki/Installation)\] \[[Getting Started](https://github.com/dylanaraps/pywal/wiki/Getting-Started)\] \[[Customization](https://github.com/dylanaraps/pywal/wiki/Customization)\] \[[Wiki](https://github.com/dylanaraps/pywal/wiki)\] \[[Screenshots](https://www.reddit.com/r/unixporn/search?q=wal&restrict_sr=on&sort=relevance&t=all)\] - -Keywords: wal colorscheme terminal-emulators changing-colorschemes -Platform: UNKNOWN -Classifier: Environment :: X11 Applications -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: POSIX :: Linux -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Requires-Python: >=3.5 -Description-Content-Type: text/markdown diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/SOURCES.txt b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/SOURCES.txt deleted file mode 100644 index 84c7fcb3..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/SOURCES.txt +++ /dev/null @@ -1,321 +0,0 @@ -.pylintrc -LICENSE.md -MANIFEST.in -README.md -setup.cfg -setup.py -pywal/__init__.py -pywal/__main__.py -pywal/colors.py -pywal/export.py -pywal/image.py -pywal/reload.py -pywal/sequences.py -pywal/settings.py -pywal/theme.py -pywal/util.py -pywal/wallpaper.py -pywal.egg-info/PKG-INFO -pywal.egg-info/SOURCES.txt -pywal.egg-info/dependency_links.txt -pywal.egg-info/entry_points.txt -pywal.egg-info/not-zip-safe -pywal.egg-info/top_level.txt -pywal/backends/__init__.py -pywal/backends/colorthief.py -pywal/backends/colorz.py -pywal/backends/haishoku.py -pywal/backends/schemer2.py -pywal/backends/wal.py -pywal/colorschemes/dark/3024.json -pywal/colorschemes/dark/ashes.json -pywal/colorschemes/dark/base16-3024.json -pywal/colorschemes/dark/base16-apathy.json -pywal/colorschemes/dark/base16-ashes.json -pywal/colorschemes/dark/base16-atelier-cave.json -pywal/colorschemes/dark/base16-atelier-dune.json -pywal/colorschemes/dark/base16-atelier-estuary.json -pywal/colorschemes/dark/base16-atelier-forest.json -pywal/colorschemes/dark/base16-atelier-heath.json -pywal/colorschemes/dark/base16-atelier-lakeside.json -pywal/colorschemes/dark/base16-atelier-plateau.json -pywal/colorschemes/dark/base16-atelier-savanna.json -pywal/colorschemes/dark/base16-atelier-seaside.json -pywal/colorschemes/dark/base16-atelier-sulphurpool.json -pywal/colorschemes/dark/base16-bespin.json -pywal/colorschemes/dark/base16-black-metal-bathory.json -pywal/colorschemes/dark/base16-black-metal-burzum.json -pywal/colorschemes/dark/base16-black-metal-funeral.json -pywal/colorschemes/dark/base16-black-metal-gorgoroth.json -pywal/colorschemes/dark/base16-black-metal-immortal.json -pywal/colorschemes/dark/base16-black-metal-khold.json -pywal/colorschemes/dark/base16-black-metal-marduk.json -pywal/colorschemes/dark/base16-black-metal-mayhem.json -pywal/colorschemes/dark/base16-black-metal-nile.json -pywal/colorschemes/dark/base16-black-metal-venom.json -pywal/colorschemes/dark/base16-black-metal.json -pywal/colorschemes/dark/base16-brewer.json -pywal/colorschemes/dark/base16-bright.json -pywal/colorschemes/dark/base16-brushtrees.json -pywal/colorschemes/dark/base16-chalk.json -pywal/colorschemes/dark/base16-circus.json -pywal/colorschemes/dark/base16-classic.json -pywal/colorschemes/dark/base16-codeschool.json -pywal/colorschemes/dark/base16-default.json -pywal/colorschemes/dark/base16-dracula.json -pywal/colorschemes/dark/base16-eighties.json -pywal/colorschemes/dark/base16-embers.json -pywal/colorschemes/dark/base16-flat.json -pywal/colorschemes/dark/base16-google.json -pywal/colorschemes/dark/base16-grayscale.json -pywal/colorschemes/dark/base16-greenscreen.json -pywal/colorschemes/dark/base16-gruvbox-hard.json -pywal/colorschemes/dark/base16-gruvbox-medium.json -pywal/colorschemes/dark/base16-gruvbox-pale.json -pywal/colorschemes/dark/base16-gruvbox-soft.json -pywal/colorschemes/dark/base16-harmonic.json -pywal/colorschemes/dark/base16-hopscotch.json -pywal/colorschemes/dark/base16-icy.json -pywal/colorschemes/dark/base16-irblack.json -pywal/colorschemes/dark/base16-isotope.json -pywal/colorschemes/dark/base16-macintosh.json -pywal/colorschemes/dark/base16-marrakesh.json -pywal/colorschemes/dark/base16-materia.json -pywal/colorschemes/dark/base16-material-palenight.json -pywal/colorschemes/dark/base16-material.json -pywal/colorschemes/dark/base16-materialer.json -pywal/colorschemes/dark/base16-mellow-purple.json -pywal/colorschemes/dark/base16-mocha.json -pywal/colorschemes/dark/base16-monokai.json -pywal/colorschemes/dark/base16-nord.json -pywal/colorschemes/dark/base16-ocean.json -pywal/colorschemes/dark/base16-oceanicnext.json -pywal/colorschemes/dark/base16-onedark.json -pywal/colorschemes/dark/base16-outrun.json -pywal/colorschemes/dark/base16-paraiso.json -pywal/colorschemes/dark/base16-phd.json -pywal/colorschemes/dark/base16-pico.json -pywal/colorschemes/dark/base16-pop.json -pywal/colorschemes/dark/base16-porple.json -pywal/colorschemes/dark/base16-railscasts.json -pywal/colorschemes/dark/base16-rebecca.json -pywal/colorschemes/dark/base16-seti.json -pywal/colorschemes/dark/base16-solarflare.json -pywal/colorschemes/dark/base16-solarized.json -pywal/colorschemes/dark/base16-spacemacs.json -pywal/colorschemes/dark/base16-summerfruit.json -pywal/colorschemes/dark/base16-tomorrow-night.json -pywal/colorschemes/dark/base16-tube.json -pywal/colorschemes/dark/base16-twilight.json -pywal/colorschemes/dark/base16-unikitty.json -pywal/colorschemes/dark/base16-woodland.json -pywal/colorschemes/dark/base16-xcode-dusk.json -pywal/colorschemes/dark/base16-zenburn.json -pywal/colorschemes/dark/base16tooth.json -pywal/colorschemes/dark/darktooth.json -pywal/colorschemes/dark/dkeg-5725.json -pywal/colorschemes/dark/dkeg-amiox.json -pywal/colorschemes/dark/dkeg-bark.json -pywal/colorschemes/dark/dkeg-blend.json -pywal/colorschemes/dark/dkeg-blok.json -pywal/colorschemes/dark/dkeg-bluetype.json -pywal/colorschemes/dark/dkeg-blumune.json -pywal/colorschemes/dark/dkeg-book.json -pywal/colorschemes/dark/dkeg-branch.json -pywal/colorschemes/dark/dkeg-brownstone.json -pywal/colorschemes/dark/dkeg-bulb.json -pywal/colorschemes/dark/dkeg-chaires.json -pywal/colorschemes/dark/dkeg-coco.json -pywal/colorschemes/dark/dkeg-corduroy.json -pywal/colorschemes/dark/dkeg-depth.json -pywal/colorschemes/dark/dkeg-designr.json -pywal/colorschemes/dark/dkeg-diner.json -pywal/colorschemes/dark/dkeg-escen.json -pywal/colorschemes/dark/dkeg-fendr.json -pywal/colorschemes/dark/dkeg-flapr.json -pywal/colorschemes/dark/dkeg-forst.json -pywal/colorschemes/dark/dkeg-fury.json -pywal/colorschemes/dark/dkeg-harbing.json -pywal/colorschemes/dark/dkeg-kit.json -pywal/colorschemes/dark/dkeg-leaf.json -pywal/colorschemes/dark/dkeg-link.json -pywal/colorschemes/dark/dkeg-mattd.json -pywal/colorschemes/dark/dkeg-novmbr.json -pywal/colorschemes/dark/dkeg-owl.json -pywal/colorschemes/dark/dkeg-paints.json -pywal/colorschemes/dark/dkeg-parkd.json -pywal/colorschemes/dark/dkeg-pastely.json -pywal/colorschemes/dark/dkeg-petal.json -pywal/colorschemes/dark/dkeg-poly.json -pywal/colorschemes/dark/dkeg-prevail.json -pywal/colorschemes/dark/dkeg-provrb.json -pywal/colorschemes/dark/dkeg-raild.json -pywal/colorschemes/dark/dkeg-relax.json -pywal/colorschemes/dark/dkeg-scag.json -pywal/colorschemes/dark/dkeg-scape.json -pywal/colorschemes/dark/dkeg-shade.json -pywal/colorschemes/dark/dkeg-simplicity.json -pywal/colorschemes/dark/dkeg-skigh.json -pywal/colorschemes/dark/dkeg-slate.json -pywal/colorschemes/dark/dkeg-soundwave.json -pywal/colorschemes/dark/dkeg-spire.json -pywal/colorschemes/dark/dkeg-sprout.json -pywal/colorschemes/dark/dkeg-squares.json -pywal/colorschemes/dark/dkeg-stv.json -pywal/colorschemes/dark/dkeg-subtle.json -pywal/colorschemes/dark/dkeg-sundr.json -pywal/colorschemes/dark/dkeg-tealights.json -pywal/colorschemes/dark/dkeg-traffic.json -pywal/colorschemes/dark/dkeg-transposet.json -pywal/colorschemes/dark/dkeg-urban.json -pywal/colorschemes/dark/dkeg-vans.json -pywal/colorschemes/dark/dkeg-victory.json -pywal/colorschemes/dark/dkeg-view.json -pywal/colorschemes/dark/dkeg-wintry.json -pywal/colorschemes/dark/gruvbox.json -pywal/colorschemes/dark/hybrid-material.json -pywal/colorschemes/dark/monokai.json -pywal/colorschemes/dark/sexy-astromouse.json -pywal/colorschemes/dark/sexy-belge.json -pywal/colorschemes/dark/sexy-bitmute.json -pywal/colorschemes/dark/sexy-cloud.json -pywal/colorschemes/dark/sexy-colorfulcolors.json -pywal/colorschemes/dark/sexy-dawn.json -pywal/colorschemes/dark/sexy-deafened.json -pywal/colorschemes/dark/sexy-derp.json -pywal/colorschemes/dark/sexy-digerati.json -pywal/colorschemes/dark/sexy-doomicideocean.json -pywal/colorschemes/dark/sexy-dotshare.json -pywal/colorschemes/dark/sexy-dwmrob.json -pywal/colorschemes/dark/sexy-eqie6.json -pywal/colorschemes/dark/sexy-euphrasia.json -pywal/colorschemes/dark/sexy-gjm.json -pywal/colorschemes/dark/sexy-gnometerm.json -pywal/colorschemes/dark/sexy-gotham.json -pywal/colorschemes/dark/sexy-gslob-nature-suede.json -pywal/colorschemes/dark/sexy-hund.json -pywal/colorschemes/dark/sexy-hybrid.json -pywal/colorschemes/dark/sexy-insignificato.json -pywal/colorschemes/dark/sexy-invisibone.json -pywal/colorschemes/dark/sexy-jasonwryan.json -pywal/colorschemes/dark/sexy-kasugano.json -pywal/colorschemes/dark/sexy-material.json -pywal/colorschemes/dark/sexy-mikado.json -pywal/colorschemes/dark/sexy-mikazuki.json -pywal/colorschemes/dark/sexy-monokai.json -pywal/colorschemes/dark/sexy-muse.json -pywal/colorschemes/dark/sexy-nancy.json -pywal/colorschemes/dark/sexy-navy-and-ivory.json -pywal/colorschemes/dark/sexy-neon.json -pywal/colorschemes/dark/sexy-numixdarkest.json -pywal/colorschemes/dark/sexy-orangish.json -pywal/colorschemes/dark/sexy-parker_brothers.json -pywal/colorschemes/dark/sexy-phrak1.json -pywal/colorschemes/dark/sexy-pretty-and-pastel.json -pywal/colorschemes/dark/sexy-rasi.json -pywal/colorschemes/dark/sexy-rezza.json -pywal/colorschemes/dark/sexy-rydgel.json -pywal/colorschemes/dark/sexy-s3r0-modified.json -pywal/colorschemes/dark/sexy-sexcolors.json -pywal/colorschemes/dark/sexy-simple_rainbow.json -pywal/colorschemes/dark/sexy-splurge.json -pywal/colorschemes/dark/sexy-swayr.json -pywal/colorschemes/dark/sexy-sweetlove.json -pywal/colorschemes/dark/sexy-tango.json -pywal/colorschemes/dark/sexy-tangoesque.json -pywal/colorschemes/dark/sexy-tartan.json -pywal/colorschemes/dark/sexy-theme2.json -pywal/colorschemes/dark/sexy-thwump.json -pywal/colorschemes/dark/sexy-tlh.json -pywal/colorschemes/dark/sexy-trim-yer-beard.json -pywal/colorschemes/dark/sexy-user-77-mashup-colors.json -pywal/colorschemes/dark/sexy-vacuous2.json -pywal/colorschemes/dark/sexy-visibone-alt-2.json -pywal/colorschemes/dark/sexy-visibone.json -pywal/colorschemes/dark/sexy-x-dotshare.json -pywal/colorschemes/dark/sexy-zenburn.json -pywal/colorschemes/dark/solarized.json -pywal/colorschemes/dark/tempus_autumn.json -pywal/colorschemes/dark/tempus_dusk.json -pywal/colorschemes/dark/tempus_future.json -pywal/colorschemes/dark/tempus_rift.json -pywal/colorschemes/dark/tempus_spring.json -pywal/colorschemes/dark/tempus_summer.json -pywal/colorschemes/dark/tempus_warp.json -pywal/colorschemes/dark/tempus_winter.json -pywal/colorschemes/dark/vscode.json -pywal/colorschemes/dark/zenburn.json -pywal/colorschemes/light/3024.json -pywal/colorschemes/light/ashes.json -pywal/colorschemes/light/base16-atelier-cave.json -pywal/colorschemes/light/base16-atelier-dune.json -pywal/colorschemes/light/base16-atelier-estuary.json -pywal/colorschemes/light/base16-atelier-forest.json -pywal/colorschemes/light/base16-atelier-heath.json -pywal/colorschemes/light/base16-atelier-lakeside.json -pywal/colorschemes/light/base16-atelier-plateau.json -pywal/colorschemes/light/base16-atelier-savanna.json -pywal/colorschemes/light/base16-atelier-seaside.json -pywal/colorschemes/light/base16-atelier-sulphurpool.json -pywal/colorschemes/light/base16-classic.json -pywal/colorschemes/light/base16-cupcake.json -pywal/colorschemes/light/base16-cupertino.json -pywal/colorschemes/light/base16-default.json -pywal/colorschemes/light/base16-github.json -pywal/colorschemes/light/base16-google.json -pywal/colorschemes/light/base16-grayscale.json -pywal/colorschemes/light/base16-gruvbox-hard.json -pywal/colorschemes/light/base16-gruvbox-medium.json -pywal/colorschemes/light/base16-gruvbox-soft.json -pywal/colorschemes/light/base16-harmonic.json -pywal/colorschemes/light/base16-materialer.json -pywal/colorschemes/light/base16-mexico.json -pywal/colorschemes/light/base16-one.json -pywal/colorschemes/light/base16-shapeshifter.json -pywal/colorschemes/light/base16-solarized.json -pywal/colorschemes/light/base16-summerfruit.json -pywal/colorschemes/light/base16-tomorrow.json -pywal/colorschemes/light/base16-unikitty.json -pywal/colorschemes/light/github.json -pywal/colorschemes/light/sexy-mostly-bright.json -pywal/colorschemes/light/solarized.json -pywal/colorschemes/light/tempus_dawn.json -pywal/colorschemes/light/tempus_fugit.json -pywal/colorschemes/light/tempus_past.json -pywal/colorschemes/light/tempus_totus.json -pywal/scripts/gtk_reload.py -pywal/templates/colors -pywal/templates/colors-kitty.conf -pywal/templates/colors-konsole.colorscheme -pywal/templates/colors-oomox -pywal/templates/colors-putty.reg -pywal/templates/colors-rofi-dark.rasi -pywal/templates/colors-rofi-light.rasi -pywal/templates/colors-speedcrunch.json -pywal/templates/colors-sway -pywal/templates/colors-tty.sh -pywal/templates/colors-wal-dmenu.h -pywal/templates/colors-wal-dwm.h -pywal/templates/colors-wal-st.h -pywal/templates/colors-wal-tabbed.h -pywal/templates/colors-wal.vim -pywal/templates/colors-waybar.css -pywal/templates/colors.Xresources -pywal/templates/colors.css -pywal/templates/colors.hs -pywal/templates/colors.json -pywal/templates/colors.scss -pywal/templates/colors.sh -pywal/templates/colors.yml -tests/__init__.py -tests/test_colors.py -tests/test_export.py -tests/test_image.py -tests/test_sequences.py -tests/test_util.py -tests/test_files/test.jpg -tests/test_files/test.png -tests/test_files/test2.jpg -tests/test_files/test_file -tests/test_files/test_file.json -tests/test_files/test_file2.json \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/dependency_links.txt b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/entry_points.txt b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/entry_points.txt deleted file mode 100644 index 57523291..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -wal = pywal.__main__:main - diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/installed-files.txt b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/installed-files.txt deleted file mode 100644 index 448dd526..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/installed-files.txt +++ /dev/null @@ -1,322 +0,0 @@ -../../../../bin/wal -../pywal/__init__.py -../pywal/__main__.py -../pywal/__pycache__/__init__.cpython-39.pyc -../pywal/__pycache__/__main__.cpython-39.pyc -../pywal/__pycache__/colors.cpython-39.pyc -../pywal/__pycache__/export.cpython-39.pyc -../pywal/__pycache__/image.cpython-39.pyc -../pywal/__pycache__/reload.cpython-39.pyc -../pywal/__pycache__/sequences.cpython-39.pyc -../pywal/__pycache__/settings.cpython-39.pyc -../pywal/__pycache__/theme.cpython-39.pyc -../pywal/__pycache__/util.cpython-39.pyc -../pywal/__pycache__/wallpaper.cpython-39.pyc -../pywal/backends/__init__.py -../pywal/backends/__pycache__/__init__.cpython-39.pyc -../pywal/backends/__pycache__/colorthief.cpython-39.pyc -../pywal/backends/__pycache__/colorz.cpython-39.pyc -../pywal/backends/__pycache__/haishoku.cpython-39.pyc -../pywal/backends/__pycache__/schemer2.cpython-39.pyc -../pywal/backends/__pycache__/wal.cpython-39.pyc -../pywal/backends/colorthief.py -../pywal/backends/colorz.py -../pywal/backends/haishoku.py -../pywal/backends/schemer2.py -../pywal/backends/wal.py -../pywal/colors.py -../pywal/colorschemes/dark/3024.json -../pywal/colorschemes/dark/ashes.json -../pywal/colorschemes/dark/base16-3024.json -../pywal/colorschemes/dark/base16-apathy.json -../pywal/colorschemes/dark/base16-ashes.json -../pywal/colorschemes/dark/base16-atelier-cave.json -../pywal/colorschemes/dark/base16-atelier-dune.json -../pywal/colorschemes/dark/base16-atelier-estuary.json -../pywal/colorschemes/dark/base16-atelier-forest.json -../pywal/colorschemes/dark/base16-atelier-heath.json -../pywal/colorschemes/dark/base16-atelier-lakeside.json -../pywal/colorschemes/dark/base16-atelier-plateau.json -../pywal/colorschemes/dark/base16-atelier-savanna.json -../pywal/colorschemes/dark/base16-atelier-seaside.json -../pywal/colorschemes/dark/base16-atelier-sulphurpool.json -../pywal/colorschemes/dark/base16-bespin.json -../pywal/colorschemes/dark/base16-black-metal-bathory.json -../pywal/colorschemes/dark/base16-black-metal-burzum.json -../pywal/colorschemes/dark/base16-black-metal-funeral.json -../pywal/colorschemes/dark/base16-black-metal-gorgoroth.json -../pywal/colorschemes/dark/base16-black-metal-immortal.json -../pywal/colorschemes/dark/base16-black-metal-khold.json -../pywal/colorschemes/dark/base16-black-metal-marduk.json -../pywal/colorschemes/dark/base16-black-metal-mayhem.json -../pywal/colorschemes/dark/base16-black-metal-nile.json -../pywal/colorschemes/dark/base16-black-metal-venom.json -../pywal/colorschemes/dark/base16-black-metal.json -../pywal/colorschemes/dark/base16-brewer.json -../pywal/colorschemes/dark/base16-bright.json -../pywal/colorschemes/dark/base16-brushtrees.json -../pywal/colorschemes/dark/base16-chalk.json -../pywal/colorschemes/dark/base16-circus.json -../pywal/colorschemes/dark/base16-classic.json -../pywal/colorschemes/dark/base16-codeschool.json -../pywal/colorschemes/dark/base16-default.json -../pywal/colorschemes/dark/base16-dracula.json -../pywal/colorschemes/dark/base16-eighties.json -../pywal/colorschemes/dark/base16-embers.json -../pywal/colorschemes/dark/base16-flat.json -../pywal/colorschemes/dark/base16-google.json -../pywal/colorschemes/dark/base16-grayscale.json -../pywal/colorschemes/dark/base16-greenscreen.json -../pywal/colorschemes/dark/base16-gruvbox-hard.json -../pywal/colorschemes/dark/base16-gruvbox-medium.json -../pywal/colorschemes/dark/base16-gruvbox-pale.json -../pywal/colorschemes/dark/base16-gruvbox-soft.json -../pywal/colorschemes/dark/base16-harmonic.json -../pywal/colorschemes/dark/base16-hopscotch.json -../pywal/colorschemes/dark/base16-icy.json -../pywal/colorschemes/dark/base16-irblack.json -../pywal/colorschemes/dark/base16-isotope.json -../pywal/colorschemes/dark/base16-macintosh.json -../pywal/colorschemes/dark/base16-marrakesh.json -../pywal/colorschemes/dark/base16-materia.json -../pywal/colorschemes/dark/base16-material-palenight.json -../pywal/colorschemes/dark/base16-material.json -../pywal/colorschemes/dark/base16-materialer.json -../pywal/colorschemes/dark/base16-mellow-purple.json -../pywal/colorschemes/dark/base16-mocha.json -../pywal/colorschemes/dark/base16-monokai.json -../pywal/colorschemes/dark/base16-nord.json -../pywal/colorschemes/dark/base16-ocean.json -../pywal/colorschemes/dark/base16-oceanicnext.json -../pywal/colorschemes/dark/base16-onedark.json -../pywal/colorschemes/dark/base16-outrun.json -../pywal/colorschemes/dark/base16-paraiso.json -../pywal/colorschemes/dark/base16-phd.json -../pywal/colorschemes/dark/base16-pico.json -../pywal/colorschemes/dark/base16-pop.json -../pywal/colorschemes/dark/base16-porple.json -../pywal/colorschemes/dark/base16-railscasts.json -../pywal/colorschemes/dark/base16-rebecca.json -../pywal/colorschemes/dark/base16-seti.json -../pywal/colorschemes/dark/base16-solarflare.json -../pywal/colorschemes/dark/base16-solarized.json -../pywal/colorschemes/dark/base16-spacemacs.json -../pywal/colorschemes/dark/base16-summerfruit.json -../pywal/colorschemes/dark/base16-tomorrow-night.json -../pywal/colorschemes/dark/base16-tube.json -../pywal/colorschemes/dark/base16-twilight.json -../pywal/colorschemes/dark/base16-unikitty.json -../pywal/colorschemes/dark/base16-woodland.json -../pywal/colorschemes/dark/base16-xcode-dusk.json -../pywal/colorschemes/dark/base16-zenburn.json -../pywal/colorschemes/dark/base16tooth.json -../pywal/colorschemes/dark/darktooth.json -../pywal/colorschemes/dark/dkeg-5725.json -../pywal/colorschemes/dark/dkeg-amiox.json -../pywal/colorschemes/dark/dkeg-bark.json -../pywal/colorschemes/dark/dkeg-blend.json -../pywal/colorschemes/dark/dkeg-blok.json -../pywal/colorschemes/dark/dkeg-bluetype.json -../pywal/colorschemes/dark/dkeg-blumune.json -../pywal/colorschemes/dark/dkeg-book.json -../pywal/colorschemes/dark/dkeg-branch.json -../pywal/colorschemes/dark/dkeg-brownstone.json -../pywal/colorschemes/dark/dkeg-bulb.json -../pywal/colorschemes/dark/dkeg-chaires.json -../pywal/colorschemes/dark/dkeg-coco.json -../pywal/colorschemes/dark/dkeg-corduroy.json -../pywal/colorschemes/dark/dkeg-depth.json -../pywal/colorschemes/dark/dkeg-designr.json -../pywal/colorschemes/dark/dkeg-diner.json -../pywal/colorschemes/dark/dkeg-escen.json -../pywal/colorschemes/dark/dkeg-fendr.json -../pywal/colorschemes/dark/dkeg-flapr.json -../pywal/colorschemes/dark/dkeg-forst.json -../pywal/colorschemes/dark/dkeg-fury.json -../pywal/colorschemes/dark/dkeg-harbing.json -../pywal/colorschemes/dark/dkeg-kit.json -../pywal/colorschemes/dark/dkeg-leaf.json -../pywal/colorschemes/dark/dkeg-link.json -../pywal/colorschemes/dark/dkeg-mattd.json -../pywal/colorschemes/dark/dkeg-novmbr.json -../pywal/colorschemes/dark/dkeg-owl.json -../pywal/colorschemes/dark/dkeg-paints.json -../pywal/colorschemes/dark/dkeg-parkd.json -../pywal/colorschemes/dark/dkeg-pastely.json -../pywal/colorschemes/dark/dkeg-petal.json -../pywal/colorschemes/dark/dkeg-poly.json -../pywal/colorschemes/dark/dkeg-prevail.json -../pywal/colorschemes/dark/dkeg-provrb.json -../pywal/colorschemes/dark/dkeg-raild.json -../pywal/colorschemes/dark/dkeg-relax.json -../pywal/colorschemes/dark/dkeg-scag.json -../pywal/colorschemes/dark/dkeg-scape.json -../pywal/colorschemes/dark/dkeg-shade.json -../pywal/colorschemes/dark/dkeg-simplicity.json -../pywal/colorschemes/dark/dkeg-skigh.json -../pywal/colorschemes/dark/dkeg-slate.json -../pywal/colorschemes/dark/dkeg-soundwave.json -../pywal/colorschemes/dark/dkeg-spire.json -../pywal/colorschemes/dark/dkeg-sprout.json -../pywal/colorschemes/dark/dkeg-squares.json -../pywal/colorschemes/dark/dkeg-stv.json -../pywal/colorschemes/dark/dkeg-subtle.json -../pywal/colorschemes/dark/dkeg-sundr.json -../pywal/colorschemes/dark/dkeg-tealights.json -../pywal/colorschemes/dark/dkeg-traffic.json -../pywal/colorschemes/dark/dkeg-transposet.json -../pywal/colorschemes/dark/dkeg-urban.json -../pywal/colorschemes/dark/dkeg-vans.json -../pywal/colorschemes/dark/dkeg-victory.json -../pywal/colorschemes/dark/dkeg-view.json -../pywal/colorschemes/dark/dkeg-wintry.json -../pywal/colorschemes/dark/gruvbox.json -../pywal/colorschemes/dark/hybrid-material.json -../pywal/colorschemes/dark/monokai.json -../pywal/colorschemes/dark/sexy-astromouse.json -../pywal/colorschemes/dark/sexy-belge.json -../pywal/colorschemes/dark/sexy-bitmute.json -../pywal/colorschemes/dark/sexy-cloud.json -../pywal/colorschemes/dark/sexy-colorfulcolors.json -../pywal/colorschemes/dark/sexy-dawn.json -../pywal/colorschemes/dark/sexy-deafened.json -../pywal/colorschemes/dark/sexy-derp.json -../pywal/colorschemes/dark/sexy-digerati.json -../pywal/colorschemes/dark/sexy-doomicideocean.json -../pywal/colorschemes/dark/sexy-dotshare.json -../pywal/colorschemes/dark/sexy-dwmrob.json -../pywal/colorschemes/dark/sexy-eqie6.json -../pywal/colorschemes/dark/sexy-euphrasia.json -../pywal/colorschemes/dark/sexy-gjm.json -../pywal/colorschemes/dark/sexy-gnometerm.json -../pywal/colorschemes/dark/sexy-gotham.json -../pywal/colorschemes/dark/sexy-gslob-nature-suede.json -../pywal/colorschemes/dark/sexy-hund.json -../pywal/colorschemes/dark/sexy-hybrid.json -../pywal/colorschemes/dark/sexy-insignificato.json -../pywal/colorschemes/dark/sexy-invisibone.json -../pywal/colorschemes/dark/sexy-jasonwryan.json -../pywal/colorschemes/dark/sexy-kasugano.json -../pywal/colorschemes/dark/sexy-material.json -../pywal/colorschemes/dark/sexy-mikado.json -../pywal/colorschemes/dark/sexy-mikazuki.json -../pywal/colorschemes/dark/sexy-monokai.json -../pywal/colorschemes/dark/sexy-muse.json -../pywal/colorschemes/dark/sexy-nancy.json -../pywal/colorschemes/dark/sexy-navy-and-ivory.json -../pywal/colorschemes/dark/sexy-neon.json -../pywal/colorschemes/dark/sexy-numixdarkest.json -../pywal/colorschemes/dark/sexy-orangish.json -../pywal/colorschemes/dark/sexy-parker_brothers.json -../pywal/colorschemes/dark/sexy-phrak1.json -../pywal/colorschemes/dark/sexy-pretty-and-pastel.json -../pywal/colorschemes/dark/sexy-rasi.json -../pywal/colorschemes/dark/sexy-rezza.json -../pywal/colorschemes/dark/sexy-rydgel.json -../pywal/colorschemes/dark/sexy-s3r0-modified.json -../pywal/colorschemes/dark/sexy-sexcolors.json -../pywal/colorschemes/dark/sexy-simple_rainbow.json -../pywal/colorschemes/dark/sexy-splurge.json -../pywal/colorschemes/dark/sexy-swayr.json -../pywal/colorschemes/dark/sexy-sweetlove.json -../pywal/colorschemes/dark/sexy-tango.json -../pywal/colorschemes/dark/sexy-tangoesque.json -../pywal/colorschemes/dark/sexy-tartan.json -../pywal/colorschemes/dark/sexy-theme2.json -../pywal/colorschemes/dark/sexy-thwump.json -../pywal/colorschemes/dark/sexy-tlh.json -../pywal/colorschemes/dark/sexy-trim-yer-beard.json -../pywal/colorschemes/dark/sexy-user-77-mashup-colors.json -../pywal/colorschemes/dark/sexy-vacuous2.json -../pywal/colorschemes/dark/sexy-visibone-alt-2.json -../pywal/colorschemes/dark/sexy-visibone.json -../pywal/colorschemes/dark/sexy-x-dotshare.json -../pywal/colorschemes/dark/sexy-zenburn.json -../pywal/colorschemes/dark/solarized.json -../pywal/colorschemes/dark/tempus_autumn.json -../pywal/colorschemes/dark/tempus_dusk.json -../pywal/colorschemes/dark/tempus_future.json -../pywal/colorschemes/dark/tempus_rift.json -../pywal/colorschemes/dark/tempus_spring.json -../pywal/colorschemes/dark/tempus_summer.json -../pywal/colorschemes/dark/tempus_warp.json -../pywal/colorschemes/dark/tempus_winter.json -../pywal/colorschemes/dark/vscode.json -../pywal/colorschemes/dark/zenburn.json -../pywal/colorschemes/light/3024.json -../pywal/colorschemes/light/ashes.json -../pywal/colorschemes/light/base16-atelier-cave.json -../pywal/colorschemes/light/base16-atelier-dune.json -../pywal/colorschemes/light/base16-atelier-estuary.json -../pywal/colorschemes/light/base16-atelier-forest.json -../pywal/colorschemes/light/base16-atelier-heath.json -../pywal/colorschemes/light/base16-atelier-lakeside.json -../pywal/colorschemes/light/base16-atelier-plateau.json -../pywal/colorschemes/light/base16-atelier-savanna.json -../pywal/colorschemes/light/base16-atelier-seaside.json -../pywal/colorschemes/light/base16-atelier-sulphurpool.json -../pywal/colorschemes/light/base16-classic.json -../pywal/colorschemes/light/base16-cupcake.json -../pywal/colorschemes/light/base16-cupertino.json -../pywal/colorschemes/light/base16-default.json -../pywal/colorschemes/light/base16-github.json -../pywal/colorschemes/light/base16-google.json -../pywal/colorschemes/light/base16-grayscale.json -../pywal/colorschemes/light/base16-gruvbox-hard.json -../pywal/colorschemes/light/base16-gruvbox-medium.json -../pywal/colorschemes/light/base16-gruvbox-soft.json -../pywal/colorschemes/light/base16-harmonic.json -../pywal/colorschemes/light/base16-materialer.json -../pywal/colorschemes/light/base16-mexico.json -../pywal/colorschemes/light/base16-one.json -../pywal/colorschemes/light/base16-shapeshifter.json -../pywal/colorschemes/light/base16-solarized.json -../pywal/colorschemes/light/base16-summerfruit.json -../pywal/colorschemes/light/base16-tomorrow.json -../pywal/colorschemes/light/base16-unikitty.json -../pywal/colorschemes/light/github.json -../pywal/colorschemes/light/sexy-mostly-bright.json -../pywal/colorschemes/light/solarized.json -../pywal/colorschemes/light/tempus_dawn.json -../pywal/colorschemes/light/tempus_fugit.json -../pywal/colorschemes/light/tempus_past.json -../pywal/colorschemes/light/tempus_totus.json -../pywal/export.py -../pywal/image.py -../pywal/reload.py -../pywal/scripts/__pycache__/gtk_reload.cpython-39.pyc -../pywal/scripts/gtk_reload.py -../pywal/sequences.py -../pywal/settings.py -../pywal/templates/colors -../pywal/templates/colors-kitty.conf -../pywal/templates/colors-konsole.colorscheme -../pywal/templates/colors-oomox -../pywal/templates/colors-putty.reg -../pywal/templates/colors-rofi-dark.rasi -../pywal/templates/colors-rofi-light.rasi -../pywal/templates/colors-speedcrunch.json -../pywal/templates/colors-sway -../pywal/templates/colors-tty.sh -../pywal/templates/colors-wal-dmenu.h -../pywal/templates/colors-wal-dwm.h -../pywal/templates/colors-wal-st.h -../pywal/templates/colors-wal-tabbed.h -../pywal/templates/colors-wal.vim -../pywal/templates/colors-waybar.css -../pywal/templates/colors.Xresources -../pywal/templates/colors.css -../pywal/templates/colors.hs -../pywal/templates/colors.json -../pywal/templates/colors.scss -../pywal/templates/colors.sh -../pywal/templates/colors.yml -../pywal/theme.py -../pywal/util.py -../pywal/wallpaper.py -PKG-INFO -SOURCES.txt -dependency_links.txt -entry_points.txt -not-zip-safe -top_level.txt diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/not-zip-safe b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/top_level.txt b/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/top_level.txt deleted file mode 100644 index 28e33d34..00000000 --- a/.local/lib/python3.9/site-packages/pywal-3.3.0-py3.9.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pywal diff --git a/.local/lib/python3.9/site-packages/pywal/__init__.py b/.local/lib/python3.9/site-packages/pywal/__init__.py deleted file mode 100644 index 8a00b5af..00000000 --- a/.local/lib/python3.9/site-packages/pywal/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -""" - '|| -... ... .... ... ... ... ... .... || - ||' || '|. | || || | '' .|| || - || | '|.| ||| ||| .|' || || - ||...' '| | | '|..'|' .||. - || .. | -'''' '' -Created by Dylan Araps. -""" - -from .settings import __version__, __cache_version__ -from . import colors -from . import export -from . import image -from . import reload -from . import sequences -from . import theme -from . import wallpaper - -__all__ = [ - "__version__", - "__cache_version__", - "colors", - "export", - "image", - "reload", - "sequences", - "theme", - "wallpaper", -] diff --git a/.local/lib/python3.9/site-packages/pywal/__main__.py b/.local/lib/python3.9/site-packages/pywal/__main__.py deleted file mode 100644 index 2e50ca93..00000000 --- a/.local/lib/python3.9/site-packages/pywal/__main__.py +++ /dev/null @@ -1,212 +0,0 @@ -""" - '|| -... ... .... ... ... ... ... .... || - ||' || '|. | || || | '' .|| || - || | '|.| ||| ||| .|' || || - ||...' '| | | '|..'|' .||. - || .. | -'''' '' -Created by Dylan Araps. -""" - -import argparse -import logging -import os -import shutil -import sys - -from .settings import __version__, CACHE_DIR, CONF_DIR -from . import colors -from . import export -from . import image -from . import reload -from . import sequences -from . import theme -from . import util -from . import wallpaper - - -def get_args(): - """Get the script arguments.""" - description = "wal - Generate colorschemes on the fly" - arg = argparse.ArgumentParser(description=description) - - arg.add_argument("-a", metavar="\"alpha\"", - help="Set terminal background transparency. \ - *Only works in URxvt*") - - arg.add_argument("-b", metavar="background", - help="Custom background color to use.") - - arg.add_argument("--backend", metavar="backend", - help="Which color backend to use. \ - Use 'wal --backend' to list backends.", - const="list_backends", type=str, nargs="?") - - arg.add_argument("--theme", "-f", metavar="/path/to/file or theme_name", - help="Which colorscheme file to use. \ - Use 'wal --theme' to list builtin themes.", - const="list_themes", nargs="?") - - arg.add_argument("--iterative", action="store_true", - help="When pywal is given a directory as input and this " - "flag is used: Go through the images in order " - "instead of shuffled.") - - arg.add_argument("--saturate", metavar="0.0-1.0", - help="Set the color saturation.") - - arg.add_argument("--preview", action="store_true", - help="Print the current color palette.") - - arg.add_argument("--vte", action="store_true", - help="Fix text-artifacts printed in VTE terminals.") - - arg.add_argument("-c", action="store_true", - help="Delete all cached colorschemes.") - - arg.add_argument("-i", metavar="\"/path/to/img.jpg\"", - help="Which image or directory to use.") - - arg.add_argument("-l", action="store_true", - help="Generate a light colorscheme.") - - arg.add_argument("-n", action="store_true", - help="Skip setting the wallpaper.") - - arg.add_argument("-o", metavar="\"script_name\"", action="append", - help="External script to run after \"wal\".") - - arg.add_argument("-q", action="store_true", - help="Quiet mode, don\'t print anything.") - - arg.add_argument("-r", action="store_true", - help="'wal -r' is deprecated: Use \ - (cat ~/.cache/wal/sequences &) instead.") - - arg.add_argument("-R", action="store_true", - help="Restore previous colorscheme.") - - arg.add_argument("-s", action="store_true", - help="Skip changing colors in terminals.") - - arg.add_argument("-t", action="store_true", - help="Skip changing colors in tty.") - - arg.add_argument("-v", action="store_true", - help="Print \"wal\" version.") - - arg.add_argument("-e", action="store_true", - help="Skip reloading gtk/xrdb/i3/sway/polybar") - - return arg - - -def parse_args_exit(parser): - """Process args that exit.""" - args = parser.parse_args() - - if len(sys.argv) <= 1: - parser.print_help() - sys.exit(1) - - if args.v: - parser.exit(0, "wal %s\n" % __version__) - - if args.preview: - print("Current colorscheme:", sep='') - colors.palette() - sys.exit(0) - - if args.i and args.theme: - parser.error("Conflicting arguments -i and -f.") - - if args.r: - reload.colors() - sys.exit(0) - - if args.c: - scheme_dir = os.path.join(CACHE_DIR, "schemes") - shutil.rmtree(scheme_dir, ignore_errors=True) - sys.exit(0) - - if not args.i and \ - not args.theme and \ - not args.R and \ - not args.backend: - parser.error("No input specified.\n" - "--backend, --theme, -i or -R are required.") - - if args.theme == "list_themes": - theme.list_out() - sys.exit(0) - - if args.backend == "list_backends": - print("\n - ".join(["\033[1;32mBackends\033[0m:", - *colors.list_backends()])) - sys.exit(0) - - -def parse_args(parser): - """Process args.""" - args = parser.parse_args() - - if args.q: - logging.getLogger().disabled = True - sys.stdout = sys.stderr = open(os.devnull, "w") - - if args.a: - util.Color.alpha_num = args.a - - if args.i: - image_file = image.get(args.i, iterative=args.iterative) - colors_plain = colors.get(image_file, args.l, args.backend, - sat=args.saturate) - - if args.theme: - colors_plain = theme.file(args.theme, args.l) - - if args.R: - colors_plain = theme.file(os.path.join(CACHE_DIR, "colors.json")) - - if args.b: - args.b = "#%s" % (args.b.strip("#")) - colors_plain["special"]["background"] = args.b - colors_plain["colors"]["color0"] = args.b - - if not args.n: - wallpaper.change(colors_plain["wallpaper"]) - - sequences.send(colors_plain, to_send=not args.s, vte_fix=args.vte) - - if sys.stdout.isatty(): - colors.palette() - - export.every(colors_plain) - - if not args.e: - reload.env(tty_reload=not args.t) - - if args.o: - for cmd in args.o: - util.disown([cmd]) - - if not args.e: - reload.gtk() - - -def main(): - """Main script function.""" - util.create_dir(os.path.join(CONF_DIR, "templates")) - util.create_dir(os.path.join(CONF_DIR, "colorschemes/light/")) - util.create_dir(os.path.join(CONF_DIR, "colorschemes/dark/")) - - util.setup_logging() - parser = get_args() - - parse_args_exit(parser) - parse_args(parser) - - -if __name__ == "__main__": - main() diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index d0cacfa89e674703fb81198dcad92b0344aabc25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 788 zcma))zmC)}5XPPC=Kn4N9ss3_Qs5xbfP~PYqo$#AV|Ja7bfF4{kcGpB zZ34_UYCA+M^1KC(S?oCiPFUhO22NS(IRVaC<~aqToGI|0a#?^~m}1g!5LkM|oeWgC%aY(#9gmACoo?DC!4skXSNOY0&{?R(?Inv6a{v zxuYELe)e4`HHk@@Iy3kSm<`GnB|?c&5|k7rL%|>EL%m-T&O6<5&QdF#>&Jt=w^$xx zf(|gB^Iya~LT8k}*UeE6viYp-Ntze08me?FRHOQvW;(m09$(VejqRO$K8f}Ve5Zvv id`H81KlYAuI-QsF&7ixJl5g=G?Ng9#@i^FBUg1AW^07Jq diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/__main__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/__main__.cpython-39.pyc deleted file mode 100644 index 3cb69b864c15888d6cd6ea2aaeece8f3b407ec9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5167 zcma)ANpl;=6`mOkfWcrPMNyQf#TrqTAjkqhSzcvXwnBMHl_NXyRs|bB?K0j&sN*x%e-*%2B@81CWp%CkCs#-+TS~_43xC zTQ1uget-JobHCa?rD^{pWd3IWc^fVIJ36MdG^R7d*IT+8jh3OtOe>>Cvt_C=+sd*G zGyU8k-^vfHmNh7}3c3bb*0%@6R#Cw@z@=76!Fj;tR$0Lo;7Y5a-~!-<)`EgBR# z1s4GyYaLT?3Gh;D32>QJextRHvjw(@ahV-sOBheE<7^q@3O~tCY#ZXQeC4qQZsTLE zw&Lb>O|zXJ^{ejf*^NfSp+;Q_&5tP+!oZ1ECBSj2d*H{Y5F!w*>NE(Pa?<{Uft3a# z@2Q53AZCse+d(XT)s!(^r(i5@RKX3w4ccC@;YiM&UBxd&t5thLa948XY>u6~W8V#& zJHj1C4f|{8SiAQ%9z?5Ul485P!$stULA#w4HtuY^|4#evPwywz#)tRbC8(w+xlZVZ zA|iw6UEd$NLoPaWfZ2~s z&qCWki#Bm6ra#i8*4Ou-x_$kTzNhyMGBcKCx&4f;DLl_CR+z(WR%9hsmKj!I3;Ve# z*CLq)nFXjP4yh~bBs;}c4`rQZXV}>}S?4hS+}!+m;LaR=0r=V+evv)TF3qjKjQQ%^ z{1xD}Is7Vnfn8&D*4Q_v=WK#weU9Tg@E7Os8^B+h!(Rse${hYG@Ym+>*MZ-h!`}dY zYlg!e-i%k@$l)8x43MqegrgdUEQ{dpzI*_T!|w?~pblCk)i8u0MuG zi;SnsVLY)>cjNq;>kqfwwfM7-Njw(=FMzO3x3k?7;V58^6mAd=T>&c@!&`p%clE=- zA3G02u^l;H;Cy<2cSl~W8A*P?rMu&b#N6Wk5W8+B_L2Pf{KhDf;b4ACb$&;N&M4xI zxKOVXI}ccrp91kOKHu^>Tj@pBO3cm{{O}1K=hKKgRrOjknN?cmdy$-pi5f|n@b+}C z=o|g5T2?H;*u^5cB-;stNG7Hn4|$Repob{V*Xzo8aJz1Nra5%wR#S$}uIFVACg(0^SRWN&MF@YG01co3iYc-tE~5$@py zJ@vYW5tkRi=*w<&UBJphx?P_{-F(M3u~daVVohiR`9wxc_0(SHR}{ zy4g_A*~B@ThY88KT$|Yn?QuUocb_XW#Q~t|a1_nIKCwjcntGqkmK*fwfzmig+MES8 zrAZl|{XsrCCP_Q-a%x8EX`E@cr5PSq)!HP{t znhihf;E8;1vpK};hrx};>&*ymTpuDpBDY7N(<8Rq1J^@!&=`&rtH&j66`g~~=qq%Z zVd^Er(v7D%Q}r42M(*2O*2ZXJRMfPmxu?1R(_`JUJV$b$rBCIEi#SDx%9+_O10aW{ zYKm)^+0!Q4f%Zt3x-|Nk$0%#Jb#Vn$^8h8HG$vW5ALuF@=frK$vkWzd%&%w%hN4K*2q@B?6c1M#)0HK$i`t}&UYk@{eo9>sPvqjn{vP)+@n^ZzKR#KOCzy3$JTl}; z|Ky&5s>a@@9q3GllB0i+WYwQi{VICer8wQC%t|PEzmet1>F@2d%F5fu6WkX!s7#jG zLQlu}&m3sK$DJSJ)<=7>MN|jJ;*%eV5LH}6WkH0<0Jq}1o@@vz)&#wDoQGvNmm)h} z-k1-JX?(evXebXd5g*3RMi_K`58)WrJ+slsse3Bm*Sn1*pRS2M!IHAq3n+JRAy99| zx9^4UH_8stkaxVUhv<%IKFy`qoN1l};87&3-^UKz5vW3uUsyxnQ%4iW>A0qik|th0 z^TqWyZoD}7Nm>C!XTDe;+`Lyio7l>+lwl_sp9eVmI7&>Mcc*2mINqjmBQfb25`9OI zg|+h2G?8Q#iy)Ir^3&9i=$(-+Z73N9%;rB?Kc!px^|;eQ($^IOBTGxm&6&pova@g^ia<91mP4&AOh=XNk& zU0h>uzDedlYnw7FbNxIs9vh}6t#$#;22WAkqF$Ez<#q+og7D>H{}@4NODwZbZgLzH z1Nbu93A7bv?wgM?fKH096Fpj&FZ8crO}(VC%6=Mt8dz~3w8mZSmrIXK zS(-HW%$^EPPxJ@3F+(diF@8;5sbHlry?AE~YuG(T`BD zXD(hsHF^>LN519y;uzGI+Hm^4w=T+{P|YpFcBCq1lsfIMw+nf;l;d`qx9-)hi!0zv z^an}a4||j?lL8XO2Y`{DEapY-CMvVU3{gOcmxwpd_)akLeQ}krTqGGxT#ay-M0Z7r z=-CbW@JtHov!Wf024Wp#LEno>20Mti2vvTk`^sNh)~wb`z0ah2SiDYbFH`plb;{xN z%_NId=?xP-P&dVAF6DYI=zk@Nscx)Ctqd-mlf(mEt)_M<3%=&WA?k=jIM#|hjM z*-+)4XK2QMp=AzfIc4Jc#~QxgtvyZUl|ni)6GobiPy7s5oz;xpQJ_lnMpBS`fLD+_ zijSv{l74HVGC|qejF+AvGFNOj@73(oKJ1SAABT#5WL9%JreKtmQQeM)?Ws|!LP3Qs z^&B-l)y)N3s5%ukO{#YO0$M~Rlx8gJ_`^fy&_oZE#F|w^wNpvH-DY8@-4NBP~iNVCfxdMR}K8 z54kq9;GX0|QJ@9dTM8ef+M#G^(6n#q=4dl;^Fv(epFo7>X@UvfV;)mI_qghHPglL+8LBru zQ|Q9zS$*5HnFihj?|6>ltzNC~dTxKpo9frSI%KwRo@m~*s0kPSjF=L2^s{1G%%E?G zmqkO&Jz?IQm=_C>%!@^F3jKmu5-)|WnB6qQX>kTK7R6a{4kM=ozpJ%g8NK6v9LAvx zvalI62SG2)zzx$V?lvCn?bU+a|Dz^nu;RZz zSlLSY;mUTB4nw(mb*0@)Izexx7u{bO>||R>e5w8ZN*ZP1`2iFdbi)+#$C#lup3+;~ zwH{8=N&15ubF@=(CWpKK9lb_!|4{L3YU%Vw``P@$nT)o~f+uNVr=1`ckt~cskZl#l zb`r&sbf9*7gv>%#OdopziBg)Yaf{9WPcDJ$kPat}_(fdGM!y1+lWo{G&ta`I(5>JT zD)guNq0~@PQ&CG%TTw^Rnxd|vQ;OCVomO;4(OE?siq0vDH;MVD4YBZ)Y_>Rhb3KXS zSy_{g)J!%@$4Hx5(p36xZYHuHWNk?fazICI>7Gm4>&j#p3(v)bu;Q)GP^O8Lbl?L; zbmGV`2PP5H(gC^afkUK5gb?Cjib$QvG!b%QNDu~)19Le*ca`b$-Rx$3V}{kv8F zUe#Z%`u9Cst#@H{!d#dz7bnc633GYETxl6a4UX3v1cOi(X3!gK1)iM_!cG+QigJr- zOP6%Y!d$1gDr#z$9}oL2F5jd9J?eK)y3tJO%YK&lBI;!1H|Z*frgLWL7Q^p9hOK(y zU;O*d_?LVe&m8kOQadSJdE8&Y5BjO^ZJ{@|1gIrOE0?SDMIPxKa)fYE6xn70gDR3bq2V zJxsHH7-!_3O@*W~ZFeuJ_U+9sPK@@=P35)SP1XK65&z?+dOx~q@5q13X2=C#g z=~)ns8_Z#KHp3Sg{buyCuXEYP=rQAxqfsC!5YKXeJ&gU<7clEs zCj$etPiII6xt0S0%GqR?oUdsQPb)R+qs6<`ahve>3JKbkp1vcc5C|ycJ<}P&!`$p8 zK~~g4_`6DmN_p}fOvW>$6weC!K#QzkQNjF^N|`;b<@7e5NLAs$8>|7noaOQoy_xW$ zLw-GJgd&H2zJ{BeOGmI62OgW`=Ts-;+P*%vaw|7;mKz!Gnqxah%^)n~HT!FJM_bam zI{eHYom-b7C3ARGvqM?8xf%7sCZ)2rJdgEJfxrVs_Pv$-i@g1%yht)656b1~Xkj_^ zkNn%)X%bUjlwqN#!~4?4?3N>cfUdBs45XGVYU*u(0g0JG=DEsy{A_0s7B$*~PkR8^ z5<3WFmY!7NRJp6eZ| zke^l=5>>8N1_xox$hvy{%Jt=RR6lp`@^ac=PS4$2?T?Hmn(}7Ue>$qeg1MieL^7ee zZdjND8O2$P$qTd?<-(Gv+QY8O%n0I?#x&Ts&MfXgKTBMG2+6HNN5*&h~G1EYoEy2LGJv}`g{%P$ z#lKg)PJC9+`7RstQ6rm1+(DzH!=G#MtA>`%?EIQR|Clu`Or=|E%zvT9e6?K7&XI*M zI=kH{pFN`?Kg|KWoLvGcw#%`H`D`J#v13Toy}h@HdrLh@d#Wj)wP7`PwD7#u+VcB2 z`{>Lqs$I$uN2d&^Vz@mzQ$0jAd~kedPE|zhN$J>zUFT1Tpms?r9?gBOz5VtH3vCl&hzXAr?hCX@b*2QhR2LivM2>ugbXZ09xSl;gTJ$8~1rU;jV1Kc2b( diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/export.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/export.cpython-39.pyc deleted file mode 100644 index a8e7e26fd49e7e5482a221d0f975d1ce0af385bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2830 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 p7N^D>V$>maF3qe01j^MEqKe`+P|;GI3oZ6 diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/reload.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/reload.cpython-39.pyc deleted file mode 100644 index a6950d28d7ef7b735e2e39276723d8209729b2f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2685 zcmb_eTW=Fb6yBM=*-IR90a`Al+agGfWQP(|K~+&8p%)bl3PD0ERqn>Ku{T-onwc>n zEAs@eeea{wH-12+{+4-dU-%2W&~s)ti9;z8QrDU@XU@#-eDlq@IIPt?1D-$sIQz@r z6~p)o2a}HpgB#GqZy=Zv7>qEQkbvl(22}TEVCvoqEM_t*vHMQo^xeSiSAq&Lz-A}a zz883)JIsAy1V`9OR$xzo&R#khe3(F?4#+pBk#oy6(z zX+TA+=+xx_Wf)SrEpXazS-uQ zjzH_8!{dPrEE)0sOM}nAcV6FI>}CCEaWfOch+n$8*i5ocm@Fpo`r=?m_Of)Td2La| zGHMLM&Q{os1lYG>Me*V0U`Ls-PYwA2$1w~#O{VA+;d7uLqLPBag{G*ytd^=8ar_slcL;rXf zN3vC~ay%xlqQICbuEP;M^c`hy_u@{E+c<%oD3cGPLPCjtN9=Bs*AJl|BVmpI?CYF8hTm z_+mI1WL&}!r~*Fy``Us0%gt8Z_#7m97=qeg7DW^Dp>!m$$NPQp|VzWJn89xczO~A&;mlF6tlZL2Hv@aH6( z6Dm&=tZN-CH+v82CNxdqSD;8JKF=XgBzbOtq*|IR4LR9xF1V4()bdK0h6iDim z`(PK-APia|PWkf)zXX;#Y1L_Kt$s|o?KaCg?Y7>dNVYon>T*kAMv8T_;c;K&^b!&)6`Du4ADR7yy=8fl3BHNN`hTrRsT= LTE!`TQ%C**gQr)y diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/sequences.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/sequences.cpython-39.pyc deleted file mode 100644 index a565a73456046f2cef6f5fb1835ebf2e26f4eba0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2430 zcmZ`)Pj4GV6yKTs>viJ%ZAxndRv;h;)pkl%T2fV@gsNN$YI<@TxogkF-e$e)&P>wO zTAy4Au6zTBTR#929{`DOz+tak@Rbv)5aqqGlct64YTnGenc026_vbgk?5uCV^Yc&d zJ^U3$zvJZWW5VPMXtD=_8FhmZMk7)ux~Fxjd$VpblUb3~wd;1*sXN4gxgEJ(ukOKk znRzVtjMQ_?XZdGF-Dfjw7WzCp$L82PtjutmEwI9#$rjlX%x4+hG0H3bkNq7Uvy$YG z4|v?-vZRty5Jjb=$K#UXq8r9RBrEBua!fz9f6R6$a5Mrb^~)2jWQ>_jASF zZ`b6SEIxQaJ}A?19?Tj4LJcD`H)^&1Y;ku@Zr)#$&=nuxZkXcmITZ*av!xPYuWV&@ z7&Cs9+4`?_KSW10;-JejJBWIn;JG0d;lPXSYA5OP>Z3#+a8bKftwc#Hh^kT8toEL& zP7;4wxn7lU{8BGy?FVfxLH`7HoW`Tldz$4XSB)vE8ThQ!DMdZ9Nasm`ie=EX0LAHp z<5QnkU^4ajDtMUg8)B82=u7aub>e$wpYg8Kzw}n`Dt@G<-aaw1B0TuV7|rPW=;Dnd z^qR<_B46CS0#4L^6tkcyQ!xjfm`8zLnusMBWjREuoq8Uo(g9%r#ziVtVAR6wJ9%(? ziV=U!NE>jDNNOCDAIV(&n2P8~qz?Hvi0=XW1!F+JGxmTynEA|ucw0lVZ4Al4OwAEdl-aP$ zxd2rJ%^RAa$xSsrX!0o?TA-Vm>SjS#(7Wc&oSSIo|D#zr^CjE^B=br$q%dE4b!JH0 z-Z3GNfAY7fZOgBAvjSRz>&jy1fG7S;O?6^BSUM!183U88jGPpB10sCB|L&IHf#N0A z;Uz9xL64u7zO0A^aL{XsgT>)O!-SKoAlg7YyB7yUfk|M90nkZGR-hl!ALwHX(#gv2OdL?eZ|j<#e-rFSuq4+(7}PU;;=FWRi!735Xp?uI%>U)&En<=7mzL#` zWhypc_r2Hd6$~LZeXl%(!Ia|)j1H{WV&=e7zy+x}qysyp;)bFlnnGr68@uxZN0}ol zwNvMq665juWTxy#&d5!X6)EbKH_9;^bCEfa1a5y--<6Y0c*{kp{n=lrGJaT9>Zz>N z?$<6|-(By|X;n|j>O>)GU~_*N+3Dn(osg2O+$sALrz7gjYDYLoy4E zc$1DTJaHQiNaSe<7jaCB`ldw+aPO=T@i}OL?lA2H2BS=Fl?$2MXt1Q!Xo$?%SQr}InS?{i(-GI-KVy`>Ep$?OH@XQsi1->#zO`3H>&X diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/settings.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/settings.cpython-39.pyc deleted file mode 100644 index 822000572852c516af8415d7b9cd1150f13b768c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 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 diff --git a/.local/lib/python3.9/site-packages/pywal/__pycache__/wallpaper.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/__pycache__/wallpaper.cpython-39.pyc deleted file mode 100644 index 88629155cbd9db48a6cfab638ee6aace4b799f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3813 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 PG|X$}56pRU&RqT<6P(J# diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__init__.py b/.local/lib/python3.9/site-packages/pywal/backends/__init__.py deleted file mode 100644 index 192dc606..00000000 --- a/.local/lib/python3.9/site-packages/pywal/backends/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -r""" -Hh ____ -HP "HHF:. `._ :.,-'"" "-. -F F" :::..'"" "-. `. -F , \ \ "BACKENDS" -F j\ / ; `. -| j `. ` A \ -| | ;_ . 8 \ -J F\_,'| "`-----.\ j `. \ -""" diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/__init__.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 0fab672f4ea304d67386e869bb2236866fb05388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 505 zcmZ`$K}y3w6rFTq3G@mQW>X5ujNqoGBGzgMR*KM_1SV-Rn8Y*_nieVaLOp=sS-SNI z?p*n2GL7B%U|!z;@BKd^iF!Q~0X{#@!>NJLmn=>JJ#-7F?gAy~1trED4LZ>T4AW1o z|G)sI|Ez87`<_dzkTA<7w$sO08rUJG*Dmm&=ejN-+Lg96!_$yX+wByHKoyGd-FPy6 znBC8Dvp8=&8K5fF(nu-Ty^|uB*EC+(JdQlpB4~mtJz~14M^rUDP6XzolwQE>{?5Xo zBSHRNByX>>0&_Mn4rh!dB4%ulRvq}rihiDGDwdq)qTcY;#gLLh#8E+uY(cB-Iu+$5 vxuSKp=1vvGZ_z8Sq5lqv1(du@YRXtvW^2YswLNsNmm=8|{6_xHZ#d`|8wg`H diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/colorthief.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/colorthief.cpython-39.pyc deleted file mode 100644 index 434c5f19c0afb7cd2187c99195c5ae976683d701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1813 zcmZuxL2u(k6rLH|iQ}Ygb}5Bkz_7b2Mru;D5&{%jq{1#ptG#R`z}i*hW@a6?j-8Ar z>Lzj}MEAM}j&Mr3f%qdx@B{F*7b0=v#)>CiA_=Ho=V(L@0Gn4#wKN6LhWmkusy=d+>Y&D#jjApE8KZbe1}(g4gOVL=j(jqIrVFtJtE$X@w?7_ zkq8+m;RbFejZ>L*x}qoCVHPE!dx(~!ZX}*IoGF}`JoIScEUn|6rS6^uS+b+tr|B@^ zZko8GbST|ylqu0`jBg*wksBnb>I&%|2c1)q@P_-&SrEIsyYsO(r4VAuKtLFCsG_)o zmPIo`0Z_>y^z2&@isa;ip3rlu7y`(R3*%GrNa2QaXn8~Giy<|n0b+_Y@Tgzah_^d{m>Tb`Kna$ZBbbXVAUoMGQo(U7 z+~8gn;ssb-{z!Gx;2+Xrd{p~%1v+-T03ku~*>N;9!PDx6jvWvY|*`un#b z$luV(_zeIHutW|wS~@_s56Z&Pt4O?>Uk!z7&jBbb86=@7j94T^IZne6U@9yjWhx5; zxLcUwS)_{cSs)Xb^31}BdZAy@VcMM@FK7e+1ZVTW%R9>&1S_27nQp>Z<4Ksq>U5pe zXo=a>p*6#yH<{dq`3|0N(U9&4u%`RZpycF)D0%`^e*x6QwERf1Bi-faicXB2aJEf= z#taGG0`G}Ax0%{zwMep`GboZelm)IZfd1^<7(7_}fC7uf(Zno6{l?&Dus; zMIFkbHr_at0-u!y38A8mQ!&z&5dQufw!aR-*YOQ>L#i$i zAUdw!7i#s%Z9qLC2lR%XA+hx2+bG^b@t@-vz~Ya=o*_#J@JM1Ic=VpPR+QUqo_5-8 zc>_%H6%f9&tRGzkMfHnbAHe$znJ)2+auY;BG@8qE=v`N0>r-fE+pS*8hq2hlr%fYd U0xmXVv<}R6;Df(mziMy&3vtrLO#lD@ diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/colorz.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/colorz.cpython-39.pyc deleted file mode 100644 index 3ba0ed770387f108570ea5e5ca6c47162541e6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcma)5O=~1Y7_N_=nNDZ2ne}5eDof)ox-Fz9w-en08PMnGWv_VX{_{J{zN z6*o7B51Wr*n(sjfk`O@!D``UA$`aP}9pVZ9iqs>INN@fHCHP5t-VywQu8`*tJMW4P zqOVEKMnrT)uk2NR;#0&v;I(88@R|rtNfL;4(T8A>8B zY3_rtA&tXT63uW~ zj(9q6gPpQ4HdEDf_Z86nJ518t&t*Mc<~H7O%FQl-tB2Q_Z@@iXR5^H@9<6?GE-pnM zbhW`hx?Y66@z4SvQ2hd|8CL0PK>HKCbrpLD09I>@zs07h;^OrwqV4!9+CkwNJWXU0an^&nu=cFH23SbZ1X z{5z8F^66`EWddE*Nss zA;(zj0e2l^Z5M+)!5}-$;IXtf*%oVT$L7(pp5fE9D5VIk3SD%V4q2;NK3V+}H}C%k z$3msAX;)OxF1JXh9p8GcWGydc-S$eA=RowfBehn#k-;7z%x8TX;K%eEu#f0|w9)p)W1+I~SicHK8q=;fLA2|iR#TR diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/haishoku.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/haishoku.cpython-39.pyc deleted file mode 100644 index b89212b63137be9d91a5b4c2472c7621374ac586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1325 zcmaJ=&u`Q?6t#5Io{ykC`|oXh%R%U^ znVfGPOn!wfUxJ}1Mif(0;27JH#H8*6atfz(V;7@8P_^YE)|x)S$b1aX+tfY9OVqN6 z%saGg&{I^AEkrxiE4*?gUcm;h0QO@auuoS{P`paJv zWfc>NVnGt5yx>BnBUZ9tBJ(N>?j^Y#@qR+cnYF(O2Hv;PkQaeg#a1 zX6VoLBW!QM6m7swugP;4{9|EwghZGF+85d0Q1Ri2y$FdW(Ux`~ihq$XwekMJV8lx{ z*ynP>#MaG0RPZz@21UL%7*ExRS2va@TsXux4y6|m?_95tqAJCIbc&^${_paZ`1z&C2VU~a-lv~f0{qn zy&}&>s-Z4ga7wR1C`{z(FroVssX|A)AeGcDyEpbla=6s)OA*?O6C2<~num|zE01DzhwlSONj!ks9?%!qV{7Z`^Y diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/schemer2.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/schemer2.cpython-39.pyc deleted file mode 100644 index efaee202a4a6295565f67ba61bab60bc22cb540a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1347 zcmaJ=&u`pB6rLZp*Ksxhl>$Ok$U;Sp59_Up3Z;r7M5^?HdP%uhpq1A%^*XUV+nKS# zTANeDkwgE3U2aJHMRV;bXKtK$Gn>$;l^AQ@d^4UO-+S+S`OZ#+p#A*Un`}xEdSfRy z8?2%4p{ooGLm6V2ks4>%jU*#(q#1RimwAjbulAcD3orug10G}pzyTXvpe$q|+k$b6 z?XYb&yuew+$T3QG`@QHXZ@J7hkMpb`$v^jV^%+dUi>`CfEd< zt$@5vS9O8y->YV~c+d}_t1rNmK>rVXjx}205-kBQ(QCZME3!sFg7kO)m&2iD)u%~d z!VNe1pdXB02-)Pi->#bS@#77fJ{mPu`-7~?na;?!4|_VQ+Ju@&bN1y{-p!J*=G zB04?qH2j&@m9DFntArQ|cNtnV>`x@Of%iW@j%T9b;}fAeF7H1Yr?n{ZdR$l2@qD3Y zqWwDkZmcTJNAtWm%}cIe{S0!1+F4i7c}udyYnxuL|KLz^o7;I_bFFy_ z38SZcaT&s;&l2BwN=Pm3TPBj_bfU#%QN5IwfY}AUTvo*-XD6M~5J(T$E92KLz>&<) zuH13a+L)m|8Ej5`1Xu-N5ZT3di2NAP(R+^Cx13a-0I(8aAPu#r$%-FA-a~uqKy}# zld)PT&6~8p`&=&KycK%JWqg&&G~R>6#-q{IJh`-ze^2-JnPcec6EHSUzwDmlC0;=h zukma0(gS+9_kVhRGeUP50-wkE7Usp;OqM09j30M9N9rd4g2!@9D`MI^%RBe$@$loEWDY@5Mk!bCBdNL%pojx{#(G6rLi6O@zL+h^V38&BDa elTJS2ej`{{^8*`VbqkC~L+m~>#6ubeVfZh2V@C}D diff --git a/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/wal.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/backends/__pycache__/wal.cpython-39.pyc deleted file mode 100644 index 3a4b7348694677660afce44a2f20f06d7b4cb0f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2531 zcmZuz&u<$=6yBNHU2kkB4WSfTP+9dCH4rDIP+AnVpoUgldTGVMsHEGS$$Fdht}`=k z8skWnS|qML!YQe^@CP9Ae{f}=gZ`Q_*1 zcOK3-&L5^RT^JglLex4c?sObZIL%0h*e~r+`(+(wzi!91U$5hF#@)>C)jBoeaF6?s zold}OJivE`&+t0Fb>84jd>ee8&+$W#NvFx_O{ewB@V)wVkqa4V5k_HLWQA05SM)?U zP-&ioX)j6yB#k%P^?e-7xv@`Cw@B#@behHH)RW>u@gY|s>H;crLe8`^avl-xaxd|B z*obidV`qnGvP%OFDd6Lcfi!^ML93M^(;!%PmXNh#{XPj>J~k* zbgxhYA(t;MwX-6QvZXA&yVT#--6B8VzOYf4gi< zxqj9-)S`zriTli@0hPuULk<)Z4eR|?DB9TtcJ_!|FmXr_Z)>5joIsnPO?Me*dxTV) zYc+S*>{ljT8V9rn%Axm*DM=U-_o2#YKK!NIg6| z9mB0iJgu!6YbAOt+9R@vNRVmiPu6QtJd|R5^?jJ@a4;gLVRIj2Mo|_IJ zSdeiO!f7fFQXSpRMA(lqp|xlqjQRgfc|P)O#N1>V94(Rw;y&&P4X4A?>Oc@o+NnWq zLevRV$R5t^W5^^1=Rh!=PWB9AE-~I0CYqo)R+ZTag;#WsWGy?%#ndzHTksg?Ly23;` zo25xtPjFZ^c_i_Ej5`}3WX`JwVDDF0Ej>F&o;K@w*7h>8{K$Ig5=N-EP&w=rb4ftv z=wZ?%hsm5fPYy%JkIM7tzjgpz=A=fhLX-h}_4Xq*l9A!32?ZI>Ul)4%zec-N;nXhJ zVigU}VYXa0m3ddI$|i4?2z?7CWsvLu>+(Zsly diff --git a/.local/lib/python3.9/site-packages/pywal/backends/colorthief.py b/.local/lib/python3.9/site-packages/pywal/backends/colorthief.py deleted file mode 100644 index bcb9e394..00000000 --- a/.local/lib/python3.9/site-packages/pywal/backends/colorthief.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -Generate a colorscheme using ColorThief. -""" -import logging -import sys - -try: - from colorthief import ColorThief - -except ImportError: - logging.error("ColorThief wasn't found on your system.") - logging.error("Try another backend. (wal --backend)") - sys.exit(1) - -from .. import util - - -def gen_colors(img): - """Loop until 16 colors are generated.""" - color_cmd = ColorThief(img).get_palette - - for i in range(0, 10, 1): - raw_colors = color_cmd(color_count=8 + i) - - if len(raw_colors) >= 8: - break - - elif i == 10: - logging.error("ColorThief couldn't generate a suitable palette.") - sys.exit(1) - - else: - logging.warning("ColorThief couldn't generate a palette.") - logging.warning("Trying a larger palette size %s", 8 + i) - - return [util.rgb_to_hex(color) for color in raw_colors] - - -def adjust(cols, light): - """Create palette.""" - cols.sort(key=util.rgb_to_yiq) - raw_colors = [*cols, *cols] - - if light: - raw_colors[0] = util.lighten_color(cols[0], 0.90) - raw_colors[7] = util.darken_color(cols[0], 0.75) - - else: - for color in raw_colors: - color = util.lighten_color(color, 0.40) - - raw_colors[0] = util.darken_color(cols[0], 0.80) - raw_colors[7] = util.lighten_color(cols[0], 0.60) - - raw_colors[8] = util.lighten_color(cols[0], 0.20) - raw_colors[15] = raw_colors[7] - - return raw_colors - - -def get(img, light=False): - """Get colorscheme.""" - cols = gen_colors(img) - return adjust(cols, light) diff --git a/.local/lib/python3.9/site-packages/pywal/backends/colorz.py b/.local/lib/python3.9/site-packages/pywal/backends/colorz.py deleted file mode 100644 index b789a3af..00000000 --- a/.local/lib/python3.9/site-packages/pywal/backends/colorz.py +++ /dev/null @@ -1,43 +0,0 @@ -""" -Generate a colorscheme using Colorz. -""" -import logging -import sys - -try: - import colorz - -except ImportError: - logging.error("colorz wasn't found on your system.") - logging.error("Try another backend. (wal --backend)") - sys.exit(1) - -from .. import colors -from .. import util - - -def gen_colors(img): - """Generate a colorscheme using Colorz.""" - # pylint: disable=not-callable - raw_colors = colorz.colorz(img, n=6, bold_add=0) - return [util.rgb_to_hex([*color[0]]) for color in raw_colors] - - -def adjust(cols, light): - """Create palette.""" - raw_colors = [cols[0], *cols, "#FFFFFF", - "#000000", *cols, "#FFFFFF"] - - return colors.generic_adjust(raw_colors, light) - - -def get(img, light=False): - """Get colorscheme.""" - cols = gen_colors(img) - - if len(cols) < 6: - logging.error("colorz failed to generate enough colors.") - logging.error("Try another backend or another image. (wal --backend)") - sys.exit(1) - - return adjust(cols, light) diff --git a/.local/lib/python3.9/site-packages/pywal/backends/haishoku.py b/.local/lib/python3.9/site-packages/pywal/backends/haishoku.py deleted file mode 100644 index 00025b29..00000000 --- a/.local/lib/python3.9/site-packages/pywal/backends/haishoku.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -Generate a colorscheme using Haishoku. -""" -import logging -import sys - -try: - from haishoku.haishoku import Haishoku - -except ImportError: - logging.error("Haishoku wasn't found on your system.") - logging.error("Try another backend. (wal --backend)") - sys.exit(1) - -from .. import colors -from .. import util - - -def gen_colors(img): - """Generate a colorscheme using Colorz.""" - palette = Haishoku.getPalette(img) - return [util.rgb_to_hex(col[1]) for col in palette] - - -def adjust(cols, light): - """Create palette.""" - cols.sort(key=util.rgb_to_yiq) - raw_colors = [*cols, *cols] - raw_colors[0] = util.lighten_color(cols[0], 0.40) - - return colors.generic_adjust(raw_colors, light) - - -def get(img, light=False): - """Get colorscheme.""" - cols = gen_colors(img) - return adjust(cols, light) diff --git a/.local/lib/python3.9/site-packages/pywal/backends/schemer2.py b/.local/lib/python3.9/site-packages/pywal/backends/schemer2.py deleted file mode 100644 index adae6502..00000000 --- a/.local/lib/python3.9/site-packages/pywal/backends/schemer2.py +++ /dev/null @@ -1,35 +0,0 @@ -""" -Generate a colorscheme using Schemer2. -""" -import logging -import shutil -import subprocess -import sys - -from .. import colors -from .. import util - - -def gen_colors(img): - """Generate a colorscheme using Colorz.""" - cmd = ["schemer2", "-format", "img::colors", "-minBright", "75", "-in"] - return subprocess.check_output([*cmd, img]).splitlines() - - -def adjust(cols, light): - """Create palette.""" - cols.sort(key=util.rgb_to_yiq) - raw_colors = [*cols[8:], *cols[8:]] - - return colors.generic_adjust(raw_colors, light) - - -def get(img, light=False): - """Get colorscheme.""" - if not shutil.which("schemer2"): - logging.error("Schemer2 wasn't found on your system.") - logging.error("Try another backend. (wal --backend)") - sys.exit(1) - - cols = [col.decode('UTF-8') for col in gen_colors(img)] - return adjust(cols, light) diff --git a/.local/lib/python3.9/site-packages/pywal/backends/wal.py b/.local/lib/python3.9/site-packages/pywal/backends/wal.py deleted file mode 100644 index a75fdc54..00000000 --- a/.local/lib/python3.9/site-packages/pywal/backends/wal.py +++ /dev/null @@ -1,87 +0,0 @@ -""" -Generate a colorscheme using imagemagick. -""" -import logging -import re -import shutil -import subprocess -import sys - -from .. import util - - -def imagemagick(color_count, img, magick_command): - """Call Imagemagick to generate a scheme.""" - flags = ["-resize", "25%", "-colors", str(color_count), - "-unique-colors", "txt:-"] - img += "[0]" - - return subprocess.check_output([*magick_command, img, *flags]).splitlines() - - -def has_im(): - """Check to see if the user has im installed.""" - if shutil.which("magick"): - return ["magick", "convert"] - - if shutil.which("convert"): - return ["convert"] - - logging.error("Imagemagick wasn't found on your system.") - logging.error("Try another backend. (wal --backend)") - sys.exit(1) - - -def gen_colors(img): - """Format the output from imagemagick into a list - of hex colors.""" - magick_command = has_im() - - for i in range(0, 20, 1): - raw_colors = imagemagick(16 + i, img, magick_command) - - if len(raw_colors) > 16: - break - - elif i == 19: - logging.error("Imagemagick couldn't generate a suitable palette.") - sys.exit(1) - - else: - logging.warning("Imagemagick couldn't generate a palette.") - logging.warning("Trying a larger palette size %s", 16 + i) - - return [re.search("#.{6}", str(col)).group(0) for col in raw_colors[1:]] - - -def adjust(colors, light): - """Adjust the generated colors and store them in a dict that - we will later save in json format.""" - raw_colors = colors[:1] + colors[8:16] + colors[8:-1] - - # Manually adjust colors. - if light: - for color in raw_colors: - color = util.saturate_color(color, 0.5) - - raw_colors[0] = util.lighten_color(colors[-1], 0.85) - raw_colors[7] = colors[0] - raw_colors[8] = util.darken_color(colors[-1], 0.4) - raw_colors[15] = colors[0] - - else: - # Darken the background color slightly. - if raw_colors[0][1] != "0": - raw_colors[0] = util.darken_color(raw_colors[0], 0.40) - - raw_colors[7] = util.blend_color(raw_colors[7], "#EEEEEE") - raw_colors[8] = util.darken_color(raw_colors[7], 0.30) - raw_colors[15] = util.blend_color(raw_colors[15], "#EEEEEE") - - return raw_colors - - -def get(img, light=False): - """Get colorscheme.""" - colors = gen_colors(img) - return adjust(colors, light) diff --git a/.local/lib/python3.9/site-packages/pywal/colors.py b/.local/lib/python3.9/site-packages/pywal/colors.py deleted file mode 100644 index 86db9c48..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colors.py +++ /dev/null @@ -1,155 +0,0 @@ -""" -Generate a palette using various backends. -""" -import logging -import os -import random -import re -import sys - -from . import theme -from . import util -from .settings import CACHE_DIR, MODULE_DIR, __cache_version__ - - -def list_backends(): - """List color backends.""" - return [b.name.replace(".py", "") for b in - os.scandir(os.path.join(MODULE_DIR, "backends")) - if "__" not in b.name] - - -def colors_to_dict(colors, img): - """Convert list of colors to pywal format.""" - return { - "wallpaper": img, - "alpha": util.Color.alpha_num, - - "special": { - "background": colors[0], - "foreground": colors[15], - "cursor": colors[15] - }, - - "colors": { - "color0": colors[0], - "color1": colors[1], - "color2": colors[2], - "color3": colors[3], - "color4": colors[4], - "color5": colors[5], - "color6": colors[6], - "color7": colors[7], - "color8": colors[8], - "color9": colors[9], - "color10": colors[10], - "color11": colors[11], - "color12": colors[12], - "color13": colors[13], - "color14": colors[14], - "color15": colors[15] - } - } - - -def generic_adjust(colors, light): - """Generic color adjustment for themers.""" - if light: - for color in colors: - color = util.saturate_color(color, 0.60) - color = util.darken_color(color, 0.5) - - colors[0] = util.lighten_color(colors[0], 0.95) - colors[7] = util.darken_color(colors[0], 0.75) - colors[8] = util.darken_color(colors[0], 0.25) - colors[15] = colors[7] - - else: - colors[0] = util.darken_color(colors[0], 0.80) - colors[7] = util.lighten_color(colors[0], 0.75) - colors[8] = util.lighten_color(colors[0], 0.25) - colors[15] = colors[7] - - return colors - - -def saturate_colors(colors, amount): - """Saturate all colors.""" - if amount and float(amount) <= 1.0: - for i, _ in enumerate(colors): - if i not in [0, 7, 8, 15]: - colors[i] = util.saturate_color(colors[i], float(amount)) - - return colors - - -def cache_fname(img, backend, light, cache_dir, sat=""): - """Create the cache file name.""" - color_type = "light" if light else "dark" - file_name = re.sub("[/|\\|.]", "_", img) - - file_parts = [file_name, color_type, backend, sat, __cache_version__] - return [cache_dir, "schemes", "%s_%s_%s_%s_%s.json" % (*file_parts,)] - - -def get_backend(backend): - """Figure out which backend to use.""" - if backend == "random": - backends = list_backends() - random.shuffle(backends) - return backends[0] - - return backend - - -def palette(): - """Generate a palette from the colors.""" - for i in range(0, 16): - if i % 8 == 0: - print() - - if i > 7: - i = "8;5;%s" % i - - print("\033[4%sm%s\033[0m" % (i, " " * (80 // 20)), end="") - - print("\n") - - -def get(img, light=False, backend="wal", cache_dir=CACHE_DIR, sat=""): - """Generate a palette.""" - # home_dylan_img_jpg_backend_1.2.2.json - cache_name = cache_fname(img, backend, light, cache_dir, sat) - cache_file = os.path.join(*cache_name) - - if os.path.isfile(cache_file): - colors = theme.file(cache_file) - colors["alpha"] = util.Color.alpha_num - logging.info("Found cached colorscheme.") - - else: - logging.info("Generating a colorscheme.") - backend = get_backend(backend) - - # Dynamically import the backend we want to use. - # This keeps the dependencies "optional". - try: - __import__("pywal.backends.%s" % backend) - except ImportError: - __import__("pywal.backends.wal") - backend = "wal" - - logging.info("Using %s backend.", backend) - backend = sys.modules["pywal.backends.%s" % backend] - colors = getattr(backend, "get")(img, light) - colors = colors_to_dict(saturate_colors(colors, sat), img) - - util.save_file_json(colors, cache_file) - logging.info("Generation complete.") - - return colors - - -def file(input_file): - """Deprecated: symbolic link to --> theme.file""" - return theme.file(input_file) diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/3024.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/3024.json deleted file mode 100644 index b84f41bb..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/3024.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#090300","foreground":"#a5a2a2","cursor":"#db2d20"},"colors":{"color0":"#090300","color1":"#db2d20","color2":"#01a252","color3":"#fded02","color4":"#01a0e4","color5":"#a16a94","color6":"#b5e4f4","color7":"#a5a2a2","color8":"#5c5855","color9":"#db2d20","color10":"#01a252","color11":"#fded02","color12":"#01a0e4","color13":"#a16a94","color14":"#b5e4f4","color15":"#f7f7f7"}} diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/ashes.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/ashes.json deleted file mode 100644 index c1024a35..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/ashes.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1c2023","foreground":"#c7ccd1","cursor":"#c7ae95"},"colors":{"color0":"#1c2023","color1":"#c7ae95","color2":"#95c7ae","color3":"#aec795","color4":"#ae95c7","color5":"#c795ae","color6":"#95aec7","color7":"#c7ccd1","color8":"#747c84","color9":"#c7ae95","color10":"#95c7ae","color11":"#aec795","color12":"#ae95c7","color13":"#c795ae","color14":"#95aec7","color15":"#f3f4f5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-3024.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-3024.json deleted file mode 100644 index 0d724157..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-3024.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#090300","foreground":"#a5a2a2","cursor":"#a5a2a2"},"colors":{"color0":"#090300","color1":"#db2d20","color2":"#01a252","color3":"#fded02","color4":"#01a0e4","color5":"#a16a94","color6":"#b5e4f4","color7":"#a5a2a2","color8":"#5c5855","color9":"#db2d20","color10":"#01a252","color11":"#fded02","color12":"#01a0e4","color13":"#a16a94","color14":"#b5e4f4","color15":"#f7f7f7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-apathy.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-apathy.json deleted file mode 100644 index 3d004edd..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-apathy.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#031A16","foreground":"#81B5AC","cursor":"#81B5AC"},"colors":{"color0":"#031A16","color1":"#3E9688","color2":"#883E96","color3":"#3E4C96","color4":"#96883E","color5":"#4C963E","color6":"#963E4C","color7":"#81B5AC","color8":"#2B685E","color9":"#3E9688","color10":"#883E96","color11":"#3E4C96","color12":"#96883E","color13":"#4C963E","color14":"#963E4C","color15":"#D2E7E4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ashes.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ashes.json deleted file mode 100644 index 97edfa35..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ashes.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1C2023","foreground":"#C7CCD1","cursor":"#C7CCD1"},"colors":{"color0":"#1C2023","color1":"#C7AE95","color2":"#95C7AE","color3":"#AEC795","color4":"#AE95C7","color5":"#C795AE","color6":"#95AEC7","color7":"#C7CCD1","color8":"#747C84","color9":"#C7AE95","color10":"#95C7AE","color11":"#AEC795","color12":"#AE95C7","color13":"#C795AE","color14":"#95AEC7","color15":"#F3F4F5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-cave.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-cave.json deleted file mode 100644 index f9dab483..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-cave.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#19171c","foreground":"#8b8792","cursor":"#8b8792"},"colors":{"color0":"#19171c","color1":"#be4678","color2":"#2a9292","color3":"#a06e3b","color4":"#576ddb","color5":"#955ae7","color6":"#398bc6","color7":"#8b8792","color8":"#655f6d","color9":"#be4678","color10":"#2a9292","color11":"#a06e3b","color12":"#576ddb","color13":"#955ae7","color14":"#398bc6","color15":"#efecf4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-dune.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-dune.json deleted file mode 100644 index 1ac1b84e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-dune.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#20201d","foreground":"#a6a28c","cursor":"#a6a28c"},"colors":{"color0":"#20201d","color1":"#d73737","color2":"#60ac39","color3":"#ae9513","color4":"#6684e1","color5":"#b854d4","color6":"#1fad83","color7":"#a6a28c","color8":"#7d7a68","color9":"#d73737","color10":"#60ac39","color11":"#ae9513","color12":"#6684e1","color13":"#b854d4","color14":"#1fad83","color15":"#fefbec"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-estuary.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-estuary.json deleted file mode 100644 index f00cfd08..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-estuary.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#22221b","foreground":"#929181","cursor":"#929181"},"colors":{"color0":"#22221b","color1":"#ba6236","color2":"#7d9726","color3":"#a5980d","color4":"#36a166","color5":"#5f9182","color6":"#5b9d48","color7":"#929181","color8":"#6c6b5a","color9":"#ba6236","color10":"#7d9726","color11":"#a5980d","color12":"#36a166","color13":"#5f9182","color14":"#5b9d48","color15":"#f4f3ec"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-forest.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-forest.json deleted file mode 100644 index b45fd403..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-forest.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1b1918","foreground":"#a8a19f","cursor":"#a8a19f"},"colors":{"color0":"#1b1918","color1":"#f22c40","color2":"#7b9726","color3":"#c38418","color4":"#407ee7","color5":"#6666ea","color6":"#3d97b8","color7":"#a8a19f","color8":"#766e6b","color9":"#f22c40","color10":"#7b9726","color11":"#c38418","color12":"#407ee7","color13":"#6666ea","color14":"#3d97b8","color15":"#f1efee"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-heath.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-heath.json deleted file mode 100644 index f4daee6c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-heath.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1b181b","foreground":"#ab9bab","cursor":"#ab9bab"},"colors":{"color0":"#1b181b","color1":"#ca402b","color2":"#918b3b","color3":"#bb8a35","color4":"#516aec","color5":"#7b59c0","color6":"#159393","color7":"#ab9bab","color8":"#776977","color9":"#ca402b","color10":"#918b3b","color11":"#bb8a35","color12":"#516aec","color13":"#7b59c0","color14":"#159393","color15":"#f7f3f7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-lakeside.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-lakeside.json deleted file mode 100644 index 3e5f4209..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-lakeside.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#161b1d","foreground":"#7ea2b4","cursor":"#7ea2b4"},"colors":{"color0":"#161b1d","color1":"#d22d72","color2":"#568c3b","color3":"#8a8a0f","color4":"#257fad","color5":"#6b6bb8","color6":"#2d8f6f","color7":"#7ea2b4","color8":"#5a7b8c","color9":"#d22d72","color10":"#568c3b","color11":"#8a8a0f","color12":"#257fad","color13":"#6b6bb8","color14":"#2d8f6f","color15":"#ebf8ff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-plateau.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-plateau.json deleted file mode 100644 index 9883391d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-plateau.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1b1818","foreground":"#8a8585","cursor":"#8a8585"},"colors":{"color0":"#1b1818","color1":"#ca4949","color2":"#4b8b8b","color3":"#a06e3b","color4":"#7272ca","color5":"#8464c4","color6":"#5485b6","color7":"#8a8585","color8":"#655d5d","color9":"#ca4949","color10":"#4b8b8b","color11":"#a06e3b","color12":"#7272ca","color13":"#8464c4","color14":"#5485b6","color15":"#f4ecec"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-savanna.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-savanna.json deleted file mode 100644 index 6e061e70..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-savanna.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#171c19","foreground":"#87928a","cursor":"#87928a"},"colors":{"color0":"#171c19","color1":"#b16139","color2":"#489963","color3":"#a07e3b","color4":"#478c90","color5":"#55859b","color6":"#1c9aa0","color7":"#87928a","color8":"#5f6d64","color9":"#b16139","color10":"#489963","color11":"#a07e3b","color12":"#478c90","color13":"#55859b","color14":"#1c9aa0","color15":"#ecf4ee"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-seaside.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-seaside.json deleted file mode 100644 index 765b0d16..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-seaside.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#131513","foreground":"#8ca68c","cursor":"#8ca68c"},"colors":{"color0":"#131513","color1":"#e6193c","color2":"#29a329","color3":"#98981b","color4":"#3d62f5","color5":"#ad2bee","color6":"#1999b3","color7":"#8ca68c","color8":"#687d68","color9":"#e6193c","color10":"#29a329","color11":"#98981b","color12":"#3d62f5","color13":"#ad2bee","color14":"#1999b3","color15":"#f4fbf4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-sulphurpool.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-sulphurpool.json deleted file mode 100644 index 857610e5..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-atelier-sulphurpool.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#202746","foreground":"#979db4","cursor":"#979db4"},"colors":{"color0":"#202746","color1":"#c94922","color2":"#ac9739","color3":"#c08b30","color4":"#3d8fd1","color5":"#6679cc","color6":"#22a2c9","color7":"#979db4","color8":"#6b7394","color9":"#c94922","color10":"#ac9739","color11":"#c08b30","color12":"#3d8fd1","color13":"#6679cc","color14":"#22a2c9","color15":"#f5f7ff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bespin.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bespin.json deleted file mode 100644 index e3fd09f9..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bespin.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#28211c","foreground":"#8a8986","cursor":"#8a8986"},"colors":{"color0":"#28211c","color1":"#cf6a4c","color2":"#54be0d","color3":"#f9ee98","color4":"#5ea6ea","color5":"#9b859d","color6":"#afc4db","color7":"#8a8986","color8":"#666666","color9":"#cf6a4c","color10":"#54be0d","color11":"#f9ee98","color12":"#5ea6ea","color13":"#9b859d","color14":"#afc4db","color15":"#baae9e"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-bathory.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-bathory.json deleted file mode 100644 index 2c1e9912..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-bathory.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#fbcb97","color3":"#e78a53","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#fbcb97","color11":"#e78a53","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-burzum.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-burzum.json deleted file mode 100644 index d14f2107..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-burzum.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#ddeecc","color3":"#99bbaa","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#ddeecc","color11":"#99bbaa","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-funeral.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-funeral.json deleted file mode 100644 index 0d1e0acc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-funeral.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#d0dfee","color3":"#5f81a5","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#d0dfee","color11":"#5f81a5","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-gorgoroth.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-gorgoroth.json deleted file mode 100644 index 21f022f2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-gorgoroth.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#9b8d7f","color3":"#8c7f70","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#9b8d7f","color11":"#8c7f70","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-immortal.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-immortal.json deleted file mode 100644 index 8a212af7..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-immortal.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#7799bb","color3":"#556677","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#7799bb","color11":"#556677","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-khold.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-khold.json deleted file mode 100644 index fea256a8..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-khold.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#eceee3","color3":"#974b46","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#eceee3","color11":"#974b46","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-marduk.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-marduk.json deleted file mode 100644 index f40c9781..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-marduk.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#a5aaa7","color3":"#626b67","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#a5aaa7","color11":"#626b67","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-mayhem.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-mayhem.json deleted file mode 100644 index 8590ef4f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-mayhem.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#f3ecd4","color3":"#eecc6c","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#f3ecd4","color11":"#eecc6c","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-nile.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-nile.json deleted file mode 100644 index 592ad610..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-nile.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#aa9988","color3":"#777755","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#aa9988","color11":"#777755","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-venom.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-venom.json deleted file mode 100644 index 017b16fd..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal-venom.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#f8f7f2","color3":"#79241f","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#f8f7f2","color11":"#79241f","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal.json deleted file mode 100644 index 35516016..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-black-metal.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c1c1c1","cursor":"#c1c1c1"},"colors":{"color0":"#000000","color1":"#5f8787","color2":"#dd9999","color3":"#a06666","color4":"#888888","color5":"#999999","color6":"#aaaaaa","color7":"#c1c1c1","color8":"#333333","color9":"#5f8787","color10":"#dd9999","color11":"#a06666","color12":"#888888","color13":"#999999","color14":"#aaaaaa","color15":"#c1c1c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brewer.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brewer.json deleted file mode 100644 index 98b5ef40..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brewer.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#0c0d0e","foreground":"#b7b8b9","cursor":"#b7b8b9"},"colors":{"color0":"#0c0d0e","color1":"#e31a1c","color2":"#31a354","color3":"#dca060","color4":"#3182bd","color5":"#756bb1","color6":"#80b1d3","color7":"#b7b8b9","color8":"#737475","color9":"#e31a1c","color10":"#31a354","color11":"#dca060","color12":"#3182bd","color13":"#756bb1","color14":"#80b1d3","color15":"#fcfdfe"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bright.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bright.json deleted file mode 100644 index d230b2d2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-bright.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#e0e0e0","cursor":"#e0e0e0"},"colors":{"color0":"#000000","color1":"#fb0120","color2":"#a1c659","color3":"#fda331","color4":"#6fb3d2","color5":"#d381c3","color6":"#76c7b7","color7":"#e0e0e0","color8":"#b0b0b0","color9":"#fb0120","color10":"#a1c659","color11":"#fda331","color12":"#6fb3d2","color13":"#d381c3","color14":"#76c7b7","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brushtrees.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brushtrees.json deleted file mode 100644 index 037f2c67..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-brushtrees.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#485867","foreground":"#B0C5C8","cursor":"#B0C5C8"},"colors":{"color0":"#485867","color1":"#b38686","color2":"#87b386","color3":"#aab386","color4":"#868cb3","color5":"#b386b2","color6":"#86b3b3","color7":"#B0C5C8","color8":"#8299A1","color9":"#b38686","color10":"#87b386","color11":"#aab386","color12":"#868cb3","color13":"#b386b2","color14":"#86b3b3","color15":"#E3EFEF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-chalk.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-chalk.json deleted file mode 100644 index 6786db62..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-chalk.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#151515","foreground":"#d0d0d0","cursor":"#d0d0d0"},"colors":{"color0":"#151515","color1":"#fb9fb1","color2":"#acc267","color3":"#ddb26f","color4":"#6fc2ef","color5":"#e1a3ee","color6":"#12cfc0","color7":"#d0d0d0","color8":"#505050","color9":"#fb9fb1","color10":"#acc267","color11":"#ddb26f","color12":"#6fc2ef","color13":"#e1a3ee","color14":"#12cfc0","color15":"#f5f5f5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-circus.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-circus.json deleted file mode 100644 index c50727d6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-circus.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#191919","foreground":"#a7a7a7","cursor":"#a7a7a7"},"colors":{"color0":"#191919","color1":"#dc657d","color2":"#84b97c","color3":"#c3ba63","color4":"#639ee4","color5":"#b888e2","color6":"#4bb1a7","color7":"#a7a7a7","color8":"#5f5a60","color9":"#dc657d","color10":"#84b97c","color11":"#c3ba63","color12":"#639ee4","color13":"#b888e2","color14":"#4bb1a7","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-classic.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-classic.json deleted file mode 100644 index 69485ac0..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-classic.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#151515","foreground":"#D0D0D0","cursor":"#D0D0D0"},"colors":{"color0":"#151515","color1":"#AC4142","color2":"#90A959","color3":"#F4BF75","color4":"#6A9FB5","color5":"#AA759F","color6":"#75B5AA","color7":"#D0D0D0","color8":"#505050","color9":"#AC4142","color10":"#90A959","color11":"#F4BF75","color12":"#6A9FB5","color13":"#AA759F","color14":"#75B5AA","color15":"#F5F5F5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-codeschool.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-codeschool.json deleted file mode 100644 index 17a0d833..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-codeschool.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#232c31","foreground":"#9ea7a6","cursor":"#9ea7a6"},"colors":{"color0":"#232c31","color1":"#2a5491","color2":"#237986","color3":"#a03b1e","color4":"#484d79","color5":"#c59820","color6":"#b02f30","color7":"#9ea7a6","color8":"#3f4944","color9":"#2a5491","color10":"#237986","color11":"#a03b1e","color12":"#484d79","color13":"#c59820","color14":"#b02f30","color15":"#b5d8f6"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-default.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-default.json deleted file mode 100644 index adceb5ba..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-default.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#181818","foreground":"#d8d8d8","cursor":"#d8d8d8"},"colors":{"color0":"#181818","color1":"#ab4642","color2":"#a1b56c","color3":"#f7ca88","color4":"#7cafc2","color5":"#ba8baf","color6":"#86c1b9","color7":"#d8d8d8","color8":"#585858","color9":"#ab4642","color10":"#a1b56c","color11":"#f7ca88","color12":"#7cafc2","color13":"#ba8baf","color14":"#86c1b9","color15":"#f8f8f8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-dracula.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-dracula.json deleted file mode 100644 index 34606818..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-dracula.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282936","foreground":"#e9e9f4","cursor":"#e9e9f4"},"colors":{"color0":"#282936","color1":"#ea51b2","color2":"#00f769","color3":"#ebff87","color4":"#62d6e8","color5":"#b45bcf","color6":"#a1efe4","color7":"#e9e9f4","color8":"#4d4f68","color9":"#ea51b2","color10":"#00f769","color11":"#ebff87","color12":"#62d6e8","color13":"#b45bcf","color14":"#a1efe4","color15":"#f7f7fb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-eighties.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-eighties.json deleted file mode 100644 index b81cb88e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-eighties.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2d2d2d","foreground":"#d3d0c8","cursor":"#d3d0c8"},"colors":{"color0":"#2d2d2d","color1":"#f2777a","color2":"#99cc99","color3":"#ffcc66","color4":"#6699cc","color5":"#cc99cc","color6":"#66cccc","color7":"#d3d0c8","color8":"#747369","color9":"#f2777a","color10":"#99cc99","color11":"#ffcc66","color12":"#6699cc","color13":"#cc99cc","color14":"#66cccc","color15":"#f2f0ec"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-embers.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-embers.json deleted file mode 100644 index b3c9d16c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-embers.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#16130F","foreground":"#A39A90","cursor":"#A39A90"},"colors":{"color0":"#16130F","color1":"#826D57","color2":"#57826D","color3":"#6D8257","color4":"#6D5782","color5":"#82576D","color6":"#576D82","color7":"#A39A90","color8":"#5A5047","color9":"#826D57","color10":"#57826D","color11":"#6D8257","color12":"#6D5782","color13":"#82576D","color14":"#576D82","color15":"#DBD6D1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-flat.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-flat.json deleted file mode 100644 index 1e8b6c92..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-flat.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2C3E50","foreground":"#e0e0e0","cursor":"#e0e0e0"},"colors":{"color0":"#2C3E50","color1":"#E74C3C","color2":"#2ECC71","color3":"#F1C40F","color4":"#3498DB","color5":"#9B59B6","color6":"#1ABC9C","color7":"#e0e0e0","color8":"#95A5A6","color9":"#E74C3C","color10":"#2ECC71","color11":"#F1C40F","color12":"#3498DB","color13":"#9B59B6","color14":"#1ABC9C","color15":"#ECF0F1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-google.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-google.json deleted file mode 100644 index 043c63c6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-google.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1d1f21","foreground":"#c5c8c6","cursor":"#c5c8c6"},"colors":{"color0":"#1d1f21","color1":"#CC342B","color2":"#198844","color3":"#FBA922","color4":"#3971ED","color5":"#A36AC7","color6":"#3971ED","color7":"#c5c8c6","color8":"#969896","color9":"#CC342B","color10":"#198844","color11":"#FBA922","color12":"#3971ED","color13":"#A36AC7","color14":"#3971ED","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-grayscale.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-grayscale.json deleted file mode 100644 index 3b999aad..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-grayscale.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#101010","foreground":"#b9b9b9","cursor":"#b9b9b9"},"colors":{"color0":"#101010","color1":"#7c7c7c","color2":"#8e8e8e","color3":"#a0a0a0","color4":"#686868","color5":"#747474","color6":"#868686","color7":"#b9b9b9","color8":"#525252","color9":"#7c7c7c","color10":"#8e8e8e","color11":"#a0a0a0","color12":"#686868","color13":"#747474","color14":"#868686","color15":"#f7f7f7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-greenscreen.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-greenscreen.json deleted file mode 100644 index 6479ff91..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-greenscreen.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#001100","foreground":"#00bb00","cursor":"#00bb00"},"colors":{"color0":"#001100","color1":"#007700","color2":"#00bb00","color3":"#007700","color4":"#009900","color5":"#00bb00","color6":"#005500","color7":"#00bb00","color8":"#007700","color9":"#007700","color10":"#00bb00","color11":"#007700","color12":"#009900","color13":"#00bb00","color14":"#005500","color15":"#00ff00"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-hard.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-hard.json deleted file mode 100644 index fb55620a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-hard.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1d2021","foreground":"#d5c4a1","cursor":"#d5c4a1"},"colors":{"color0":"#1d2021","color1":"#fb4934","color2":"#b8bb26","color3":"#fabd2f","color4":"#83a598","color5":"#d3869b","color6":"#8ec07c","color7":"#d5c4a1","color8":"#665c54","color9":"#fb4934","color10":"#b8bb26","color11":"#fabd2f","color12":"#83a598","color13":"#d3869b","color14":"#8ec07c","color15":"#fbf1c7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-medium.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-medium.json deleted file mode 100644 index cc019a56..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-medium.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282828","foreground":"#d5c4a1","cursor":"#d5c4a1"},"colors":{"color0":"#282828","color1":"#fb4934","color2":"#b8bb26","color3":"#fabd2f","color4":"#83a598","color5":"#d3869b","color6":"#8ec07c","color7":"#d5c4a1","color8":"#665c54","color9":"#fb4934","color10":"#b8bb26","color11":"#fabd2f","color12":"#83a598","color13":"#d3869b","color14":"#8ec07c","color15":"#fbf1c7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-pale.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-pale.json deleted file mode 100644 index f71836af..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-pale.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#262626","foreground":"#dab997","cursor":"#dab997"},"colors":{"color0":"#262626","color1":"#d75f5f","color2":"#afaf00","color3":"#ffaf00","color4":"#83adad","color5":"#d485ad","color6":"#85ad85","color7":"#dab997","color8":"#8a8a8a","color9":"#d75f5f","color10":"#afaf00","color11":"#ffaf00","color12":"#83adad","color13":"#d485ad","color14":"#85ad85","color15":"#ebdbb2"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-soft.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-soft.json deleted file mode 100644 index ba842ce7..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-gruvbox-soft.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#32302f","foreground":"#d5c4a1","cursor":"#d5c4a1"},"colors":{"color0":"#32302f","color1":"#fb4934","color2":"#b8bb26","color3":"#fabd2f","color4":"#83a598","color5":"#d3869b","color6":"#8ec07c","color7":"#d5c4a1","color8":"#665c54","color9":"#fb4934","color10":"#b8bb26","color11":"#fabd2f","color12":"#83a598","color13":"#d3869b","color14":"#8ec07c","color15":"#fbf1c7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-harmonic.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-harmonic.json deleted file mode 100644 index a2589646..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-harmonic.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#0b1c2c","foreground":"#cbd6e2","cursor":"#cbd6e2"},"colors":{"color0":"#0b1c2c","color1":"#bf8b56","color2":"#56bf8b","color3":"#8bbf56","color4":"#8b56bf","color5":"#bf568b","color6":"#568bbf","color7":"#cbd6e2","color8":"#627e99","color9":"#bf8b56","color10":"#56bf8b","color11":"#8bbf56","color12":"#8b56bf","color13":"#bf568b","color14":"#568bbf","color15":"#f7f9fb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-hopscotch.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-hopscotch.json deleted file mode 100644 index 1f2b108d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-hopscotch.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#322931","foreground":"#b9b5b8","cursor":"#b9b5b8"},"colors":{"color0":"#322931","color1":"#dd464c","color2":"#8fc13e","color3":"#fdcc59","color4":"#1290bf","color5":"#c85e7c","color6":"#149b93","color7":"#b9b5b8","color8":"#797379","color9":"#dd464c","color10":"#8fc13e","color11":"#fdcc59","color12":"#1290bf","color13":"#c85e7c","color14":"#149b93","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-icy.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-icy.json deleted file mode 100644 index 52c2d84c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-icy.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#021012","foreground":"#095b67","cursor":"#095b67"},"colors":{"color0":"#021012","color1":"#16c1d9","color2":"#4dd0e1","color3":"#80deea","color4":"#00bcd4","color5":"#00acc1","color6":"#26c6da","color7":"#095b67","color8":"#052e34","color9":"#16c1d9","color10":"#4dd0e1","color11":"#80deea","color12":"#00bcd4","color13":"#00acc1","color14":"#26c6da","color15":"#109cb0"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-irblack.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-irblack.json deleted file mode 100644 index aeaf6a5b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-irblack.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#b5b3aa","cursor":"#b5b3aa"},"colors":{"color0":"#000000","color1":"#ff6c60","color2":"#a8ff60","color3":"#ffffb6","color4":"#96cbfe","color5":"#ff73fd","color6":"#c6c5fe","color7":"#b5b3aa","color8":"#6c6c66","color9":"#ff6c60","color10":"#a8ff60","color11":"#ffffb6","color12":"#96cbfe","color13":"#ff73fd","color14":"#c6c5fe","color15":"#fdfbee"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-isotope.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-isotope.json deleted file mode 100644 index 190c9707..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-isotope.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#d0d0d0","cursor":"#d0d0d0"},"colors":{"color0":"#000000","color1":"#ff0000","color2":"#33ff00","color3":"#ff0099","color4":"#0066ff","color5":"#cc00ff","color6":"#00ffff","color7":"#d0d0d0","color8":"#808080","color9":"#ff0000","color10":"#33ff00","color11":"#ff0099","color12":"#0066ff","color13":"#cc00ff","color14":"#00ffff","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-macintosh.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-macintosh.json deleted file mode 100644 index 1b042e9a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-macintosh.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#c0c0c0","cursor":"#c0c0c0"},"colors":{"color0":"#000000","color1":"#dd0907","color2":"#1fb714","color3":"#fbf305","color4":"#0000d3","color5":"#4700a5","color6":"#02abea","color7":"#c0c0c0","color8":"#808080","color9":"#dd0907","color10":"#1fb714","color11":"#fbf305","color12":"#0000d3","color13":"#4700a5","color14":"#02abea","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-marrakesh.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-marrakesh.json deleted file mode 100644 index 4e0d90c1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-marrakesh.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#201602","foreground":"#948e48","cursor":"#948e48"},"colors":{"color0":"#201602","color1":"#c35359","color2":"#18974e","color3":"#a88339","color4":"#477ca1","color5":"#8868b3","color6":"#75a738","color7":"#948e48","color8":"#6c6823","color9":"#c35359","color10":"#18974e","color11":"#a88339","color12":"#477ca1","color13":"#8868b3","color14":"#75a738","color15":"#faf0a5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materia.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materia.json deleted file mode 100644 index 8fbbf834..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materia.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#263238","foreground":"#CDD3DE","cursor":"#CDD3DE"},"colors":{"color0":"#263238","color1":"#EC5F67","color2":"#8BD649","color3":"#FFCC00","color4":"#89DDFF","color5":"#82AAFF","color6":"#80CBC4","color7":"#CDD3DE","color8":"#707880","color9":"#EC5F67","color10":"#8BD649","color11":"#FFCC00","color12":"#89DDFF","color13":"#82AAFF","color14":"#80CBC4","color15":"#FFFFFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material-palenight.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material-palenight.json deleted file mode 100644 index 64adbeef..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material-palenight.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#292D3E","foreground":"#959DCB","cursor":"#959DCB"},"colors":{"color0":"#292D3E","color1":"#F07178","color2":"#C3E88D","color3":"#FFCB6B","color4":"#82AAFF","color5":"#C792EA","color6":"#89DDFF","color7":"#959DCB","color8":"#676E95","color9":"#F07178","color10":"#C3E88D","color11":"#FFCB6B","color12":"#82AAFF","color13":"#C792EA","color14":"#89DDFF","color15":"#FFFFFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material.json deleted file mode 100644 index 5b210f6f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-material.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#263238","foreground":"#EEFFFF","cursor":"#EEFFFF"},"colors":{"color0":"#263238","color1":"#F07178","color2":"#C3E88D","color3":"#FFCB6B","color4":"#82AAFF","color5":"#C792EA","color6":"#89DDFF","color7":"#EEFFFF","color8":"#546E7A","color9":"#F07178","color10":"#C3E88D","color11":"#FFCB6B","color12":"#82AAFF","color13":"#C792EA","color14":"#89DDFF","color15":"#FFFFFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materialer.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materialer.json deleted file mode 100644 index a251717e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-materialer.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#212121","foreground":"#EEFFFF","cursor":"#EEFFFF"},"colors":{"color0":"#212121","color1":"#F07178","color2":"#C3E88D","color3":"#FFCB6B","color4":"#82AAFF","color5":"#C792EA","color6":"#89DDFF","color7":"#EEFFFF","color8":"#4A4A4A","color9":"#F07178","color10":"#C3E88D","color11":"#FFCB6B","color12":"#82AAFF","color13":"#C792EA","color14":"#89DDFF","color15":"#FFFFFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mellow-purple.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mellow-purple.json deleted file mode 100644 index d42b10cc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mellow-purple.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1e0528","foreground":"#ffeeff","cursor":"#ffeeff"},"colors":{"color0":"#1e0528","color1":"#00d9e9","color2":"#05cb0d","color3":"#955ae7","color4":"#550068","color5":"#8991bb","color6":"#b900b1","color7":"#ffeeff","color8":"#320f55","color9":"#00d9e9","color10":"#05cb0d","color11":"#955ae7","color12":"#550068","color13":"#8991bb","color14":"#b900b1","color15":"#f8c0ff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mocha.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mocha.json deleted file mode 100644 index 73b5ca75..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-mocha.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#3B3228","foreground":"#d0c8c6","cursor":"#d0c8c6"},"colors":{"color0":"#3B3228","color1":"#cb6077","color2":"#beb55b","color3":"#f4bc87","color4":"#8ab3b5","color5":"#a89bb9","color6":"#7bbda4","color7":"#d0c8c6","color8":"#7e705a","color9":"#cb6077","color10":"#beb55b","color11":"#f4bc87","color12":"#8ab3b5","color13":"#a89bb9","color14":"#7bbda4","color15":"#f5eeeb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-monokai.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-monokai.json deleted file mode 100644 index e175ca82..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-monokai.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272822","foreground":"#f8f8f2","cursor":"#f8f8f2"},"colors":{"color0":"#272822","color1":"#f92672","color2":"#a6e22e","color3":"#f4bf75","color4":"#66d9ef","color5":"#ae81ff","color6":"#a1efe4","color7":"#f8f8f2","color8":"#75715e","color9":"#f92672","color10":"#a6e22e","color11":"#f4bf75","color12":"#66d9ef","color13":"#ae81ff","color14":"#a1efe4","color15":"#f9f8f5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-nord.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-nord.json deleted file mode 100644 index 012c4a02..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-nord.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2E3440","foreground":"#E5E9F0","cursor":"#E5E9F0"},"colors":{"color0":"#2E3440","color1":"#88C0D0","color2":"#BF616A","color3":"#5E81AC","color4":"#EBCB8B","color5":"#A3BE8C","color6":"#D08770","color7":"#E5E9F0","color8":"#4C566A","color9":"#88C0D0","color10":"#BF616A","color11":"#5E81AC","color12":"#EBCB8B","color13":"#A3BE8C","color14":"#D08770","color15":"#8FBCBB"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ocean.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ocean.json deleted file mode 100644 index ad94ceef..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-ocean.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b303b","foreground":"#c0c5ce","cursor":"#c0c5ce"},"colors":{"color0":"#2b303b","color1":"#bf616a","color2":"#a3be8c","color3":"#ebcb8b","color4":"#8fa1b3","color5":"#b48ead","color6":"#96b5b4","color7":"#c0c5ce","color8":"#65737e","color9":"#bf616a","color10":"#a3be8c","color11":"#ebcb8b","color12":"#8fa1b3","color13":"#b48ead","color14":"#96b5b4","color15":"#eff1f5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-oceanicnext.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-oceanicnext.json deleted file mode 100644 index ba0d7678..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-oceanicnext.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1B2B34","foreground":"#C0C5CE","cursor":"#C0C5CE"},"colors":{"color0":"#1B2B34","color1":"#EC5f67","color2":"#99C794","color3":"#FAC863","color4":"#6699CC","color5":"#C594C5","color6":"#5FB3B3","color7":"#C0C5CE","color8":"#65737E","color9":"#EC5f67","color10":"#99C794","color11":"#FAC863","color12":"#6699CC","color13":"#C594C5","color14":"#5FB3B3","color15":"#D8DEE9"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-onedark.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-onedark.json deleted file mode 100644 index 9e49a657..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-onedark.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282c34","foreground":"#abb2bf","cursor":"#abb2bf"},"colors":{"color0":"#282c34","color1":"#e06c75","color2":"#98c379","color3":"#e5c07b","color4":"#61afef","color5":"#c678dd","color6":"#56b6c2","color7":"#abb2bf","color8":"#545862","color9":"#e06c75","color10":"#98c379","color11":"#e5c07b","color12":"#61afef","color13":"#c678dd","color14":"#56b6c2","color15":"#c8ccd4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-outrun.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-outrun.json deleted file mode 100644 index 8fe83a2e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-outrun.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#00002A","foreground":"#D0D0FA","cursor":"#D0D0FA"},"colors":{"color0":"#00002A","color1":"#FF4242","color2":"#59F176","color3":"#F3E877","color4":"#66B0FF","color5":"#F10596","color6":"#0EF0F0","color7":"#D0D0FA","color8":"#50507A","color9":"#FF4242","color10":"#59F176","color11":"#F3E877","color12":"#66B0FF","color13":"#F10596","color14":"#0EF0F0","color15":"#F5F5FF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-paraiso.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-paraiso.json deleted file mode 100644 index 2960f48e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-paraiso.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2f1e2e","foreground":"#a39e9b","cursor":"#a39e9b"},"colors":{"color0":"#2f1e2e","color1":"#ef6155","color2":"#48b685","color3":"#fec418","color4":"#06b6ef","color5":"#815ba4","color6":"#5bc4bf","color7":"#a39e9b","color8":"#776e71","color9":"#ef6155","color10":"#48b685","color11":"#fec418","color12":"#06b6ef","color13":"#815ba4","color14":"#5bc4bf","color15":"#e7e9db"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-phd.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-phd.json deleted file mode 100644 index 276be2b1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-phd.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#061229","foreground":"#b8bbc2","cursor":"#b8bbc2"},"colors":{"color0":"#061229","color1":"#d07346","color2":"#99bf52","color3":"#fbd461","color4":"#5299bf","color5":"#9989cc","color6":"#72b9bf","color7":"#b8bbc2","color8":"#717885","color9":"#d07346","color10":"#99bf52","color11":"#fbd461","color12":"#5299bf","color13":"#9989cc","color14":"#72b9bf","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pico.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pico.json deleted file mode 100644 index e7118a84..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pico.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#5f574f","cursor":"#5f574f"},"colors":{"color0":"#000000","color1":"#ff004d","color2":"#00e756","color3":"#fff024","color4":"#83769c","color5":"#ff77a8","color6":"#29adff","color7":"#5f574f","color8":"#008751","color9":"#ff004d","color10":"#00e756","color11":"#fff024","color12":"#83769c","color13":"#ff77a8","color14":"#29adff","color15":"#fff1e8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pop.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pop.json deleted file mode 100644 index 26e628f3..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-pop.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#000000","foreground":"#d0d0d0","cursor":"#d0d0d0"},"colors":{"color0":"#000000","color1":"#eb008a","color2":"#37b349","color3":"#f8ca12","color4":"#0e5a94","color5":"#b31e8d","color6":"#00aabb","color7":"#d0d0d0","color8":"#505050","color9":"#eb008a","color10":"#37b349","color11":"#f8ca12","color12":"#0e5a94","color13":"#b31e8d","color14":"#00aabb","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-porple.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-porple.json deleted file mode 100644 index d646e5a0..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-porple.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#292c36","foreground":"#d8d8d8","cursor":"#d8d8d8"},"colors":{"color0":"#292c36","color1":"#f84547","color2":"#95c76f","color3":"#efa16b","color4":"#8485ce","color5":"#b74989","color6":"#64878f","color7":"#d8d8d8","color8":"#65568a","color9":"#f84547","color10":"#95c76f","color11":"#efa16b","color12":"#8485ce","color13":"#b74989","color14":"#64878f","color15":"#f8f8f8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-railscasts.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-railscasts.json deleted file mode 100644 index b9e7abad..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-railscasts.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b2b2b","foreground":"#e6e1dc","cursor":"#e6e1dc"},"colors":{"color0":"#2b2b2b","color1":"#da4939","color2":"#a5c261","color3":"#ffc66d","color4":"#6d9cbe","color5":"#b6b3eb","color6":"#519f50","color7":"#e6e1dc","color8":"#5a647e","color9":"#da4939","color10":"#a5c261","color11":"#ffc66d","color12":"#6d9cbe","color13":"#b6b3eb","color14":"#519f50","color15":"#f9f7f3"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-rebecca.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-rebecca.json deleted file mode 100644 index 2431d2b5..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-rebecca.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#292a44","foreground":"#f1eff8","cursor":"#f1eff8"},"colors":{"color0":"#292a44","color1":"#a0a0c5","color2":"#6dfedf","color3":"#ae81ff","color4":"#2de0a7","color5":"#7aa5ff","color6":"#8eaee0","color7":"#f1eff8","color8":"#666699","color9":"#a0a0c5","color10":"#6dfedf","color11":"#ae81ff","color12":"#2de0a7","color13":"#7aa5ff","color14":"#8eaee0","color15":"#53495d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-seti.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-seti.json deleted file mode 100644 index cf8c0f09..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-seti.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#151718","foreground":"#d6d6d6","cursor":"#d6d6d6"},"colors":{"color0":"#151718","color1":"#Cd3f45","color2":"#9fca56","color3":"#e6cd69","color4":"#55b5db","color5":"#a074c4","color6":"#55dbbe","color7":"#d6d6d6","color8":"#41535B","color9":"#Cd3f45","color10":"#9fca56","color11":"#e6cd69","color12":"#55b5db","color13":"#a074c4","color14":"#55dbbe","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarflare.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarflare.json deleted file mode 100644 index d43a8f23..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarflare.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#18262F","foreground":"#A6AFB8","cursor":"#A6AFB8"},"colors":{"color0":"#18262F","color1":"#EF5253","color2":"#7CC844","color3":"#E4B51C","color4":"#33B5E1","color5":"#A363D5","color6":"#52CBB0","color7":"#A6AFB8","color8":"#667581","color9":"#EF5253","color10":"#7CC844","color11":"#E4B51C","color12":"#33B5E1","color13":"#A363D5","color14":"#52CBB0","color15":"#F5F7FA"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarized.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarized.json deleted file mode 100644 index 9b0136e6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-solarized.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#002b36","foreground":"#93a1a1","cursor":"#93a1a1"},"colors":{"color0":"#002b36","color1":"#dc322f","color2":"#859900","color3":"#b58900","color4":"#268bd2","color5":"#6c71c4","color6":"#2aa198","color7":"#93a1a1","color8":"#657b83","color9":"#dc322f","color10":"#859900","color11":"#b58900","color12":"#268bd2","color13":"#6c71c4","color14":"#2aa198","color15":"#fdf6e3"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-spacemacs.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-spacemacs.json deleted file mode 100644 index 8480734c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-spacemacs.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1f2022","foreground":"#a3a3a3","cursor":"#a3a3a3"},"colors":{"color0":"#1f2022","color1":"#f2241f","color2":"#67b11d","color3":"#b1951d","color4":"#4f97d7","color5":"#a31db1","color6":"#2d9574","color7":"#a3a3a3","color8":"#585858","color9":"#f2241f","color10":"#67b11d","color11":"#b1951d","color12":"#4f97d7","color13":"#a31db1","color14":"#2d9574","color15":"#f8f8f8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-summerfruit.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-summerfruit.json deleted file mode 100644 index 8cbc1032..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-summerfruit.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#151515","foreground":"#D0D0D0","cursor":"#D0D0D0"},"colors":{"color0":"#151515","color1":"#FF0086","color2":"#00C918","color3":"#ABA800","color4":"#3777E6","color5":"#AD00A1","color6":"#1FAAAA","color7":"#D0D0D0","color8":"#505050","color9":"#FF0086","color10":"#00C918","color11":"#ABA800","color12":"#3777E6","color13":"#AD00A1","color14":"#1FAAAA","color15":"#FFFFFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tomorrow-night.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tomorrow-night.json deleted file mode 100644 index 98d829d2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tomorrow-night.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1d1f21","foreground":"#c5c8c6","cursor":"#c5c8c6"},"colors":{"color0":"#1d1f21","color1":"#cc6666","color2":"#b5bd68","color3":"#f0c674","color4":"#81a2be","color5":"#b294bb","color6":"#8abeb7","color7":"#c5c8c6","color8":"#969896","color9":"#cc6666","color10":"#b5bd68","color11":"#f0c674","color12":"#81a2be","color13":"#b294bb","color14":"#8abeb7","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tube.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tube.json deleted file mode 100644 index e3813ff6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-tube.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#231f20","foreground":"#d9d8d8","cursor":"#d9d8d8"},"colors":{"color0":"#231f20","color1":"#ee2e24","color2":"#00853e","color3":"#ffd204","color4":"#009ddc","color5":"#98005d","color6":"#85cebc","color7":"#d9d8d8","color8":"#737171","color9":"#ee2e24","color10":"#00853e","color11":"#ffd204","color12":"#009ddc","color13":"#98005d","color14":"#85cebc","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-twilight.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-twilight.json deleted file mode 100644 index 68ca2ad6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-twilight.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1e1e1e","foreground":"#a7a7a7","cursor":"#a7a7a7"},"colors":{"color0":"#1e1e1e","color1":"#cf6a4c","color2":"#8f9d6a","color3":"#f9ee98","color4":"#7587a6","color5":"#9b859d","color6":"#afc4db","color7":"#a7a7a7","color8":"#5f5a60","color9":"#cf6a4c","color10":"#8f9d6a","color11":"#f9ee98","color12":"#7587a6","color13":"#9b859d","color14":"#afc4db","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-unikitty.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-unikitty.json deleted file mode 100644 index 28f4a483..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-unikitty.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2e2a31","foreground":"#bcbabe","cursor":"#bcbabe"},"colors":{"color0":"#2e2a31","color1":"#d8137f","color2":"#17ad98","color3":"#dc8a0e","color4":"#796af5","color5":"#bb60ea","color6":"#149bda","color7":"#bcbabe","color8":"#838085","color9":"#d8137f","color10":"#17ad98","color11":"#dc8a0e","color12":"#796af5","color13":"#bb60ea","color14":"#149bda","color15":"#f5f4f7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-woodland.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-woodland.json deleted file mode 100644 index e1e200c5..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-woodland.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#231e18","foreground":"#cabcb1","cursor":"#cabcb1"},"colors":{"color0":"#231e18","color1":"#d35c5c","color2":"#b7ba53","color3":"#e0ac16","color4":"#88a4d3","color5":"#bb90e2","color6":"#6eb958","color7":"#cabcb1","color8":"#9d8b70","color9":"#d35c5c","color10":"#b7ba53","color11":"#e0ac16","color12":"#88a4d3","color13":"#bb90e2","color14":"#6eb958","color15":"#e4d4c8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-xcode-dusk.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-xcode-dusk.json deleted file mode 100644 index 54794ea2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-xcode-dusk.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282B35","foreground":"#939599","cursor":"#939599"},"colors":{"color0":"#282B35","color1":"#B21889","color2":"#DF0002","color3":"#438288","color4":"#790EAD","color5":"#B21889","color6":"#00A0BE","color7":"#939599","color8":"#686A71","color9":"#B21889","color10":"#DF0002","color11":"#438288","color12":"#790EAD","color13":"#B21889","color14":"#00A0BE","color15":"#BEBFC2"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-zenburn.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-zenburn.json deleted file mode 100644 index 2a81374b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16-zenburn.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#3f3f3f","foreground":"#dcdccc","cursor":"#dcdccc"},"colors":{"color0":"#3f3f3f","color1":"#dca3a3","color2":"#5f7f5f","color3":"#e0cf9f","color4":"#7cb8bb","color5":"#dc8cc3","color6":"#93e0e3","color7":"#dcdccc","color8":"#4f4f4f","color9":"#dca3a3","color10":"#5f7f5f","color11":"#e0cf9f","color12":"#7cb8bb","color13":"#dc8cc3","color14":"#93e0e3","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16tooth.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16tooth.json deleted file mode 100644 index 4da83d34..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/base16tooth.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1D2021","foreground":"#A89984","cursor":"#A89984"},"colors":{"color0":"#1D2021","color1":"#FB543F","color2":"#95C085","color3":"#FAC03B","color4":"#0D6678","color5":"#8F4673","color6":"#8BA59B","color7":"#A89984","color8":"#665C54","color9":"#FB543F","color10":"#95C085","color11":"#FAC03B","color12":"#0D6678","color13":"#8F4673","color14":"#8BA59B","color15":"#FDF4C1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/darktooth.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/darktooth.json deleted file mode 100644 index c24ca83e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/darktooth.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1d2021","foreground":"#a89984","cursor":"#fb543f"},"colors":{"color0":"#1d2021","color1":"#fb543f","color2":"#95c085","color3":"#fac03b","color4":"#0d6678","color5":"#8f4673","color6":"#8ba59b","color7":"#a89984","color8":"#665c54","color9":"#fb543f","color10":"#95c085","color11":"#fac03b","color12":"#0d6678","color13":"#8f4673","color14":"#8ba59b","color15":"#fdf4c1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-5725.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-5725.json deleted file mode 100644 index 136a6bf1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-5725.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#353234","foreground":"#c29f6f","cursor":"#363334"},"colors":{"color0":"#353234","color1":"#97544d","color2":"#97a293","color3":"#c29f6f","color4":"#5e606c","color5":"#7a6054","color6":"#78746c","color7":"#c3c1b8","color7":"#c3c1b8","color8":"#5c575b","color9":"#97544d","color10":"#97a293","color11":"#c29f6f","color12":"#5e606c","color13":"#7a6054","color14":"#78746c","color15":"#c3c1b8","color15":"#c3c1b8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-amiox.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-amiox.json deleted file mode 100644 index a35afc13..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-amiox.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#262020","foreground":"#aa9a71","cursor":"#b1a89c"},"colors":{"color0":"#262020","color1":"#925633","color2":"#55634f","color3":"#aa9a71","color4":"#5e6676","color5":"#57464d","color6":"#47676e","color7":"#b1a89c","color7":"#b1a89c","color8":"#514c4c","color9":"#925633","color10":"#55634f","color11":"#aa9a71","color12":"#5e6676","color13":"#57464d","color14":"#47676e","color15":"#b1a89c","color15":"#c8c1b9"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bark.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bark.json deleted file mode 100644 index 1dd332ec..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bark.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#30272b","foreground":"#978341","cursor":"#bcb8ba"},"colors":{"color0":"#30272b","color1":"#925633","color2":"#697234","color3":"#978341","color4":"#5e6676","color5":"#694e63","color6":"#47676e","color7":"#bcb8ba","color7":"#bcb8ba","color8":"#443c40","color9":"#925633","color10":"#697234","color11":"#978341","color12":"#5e6676","color13":"#694e63","color14":"#47676e","color15":"#bcb8ba","color15":"#bcb8ba"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blend.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blend.json deleted file mode 100644 index e863b33f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blend.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272725","foreground":"#bc9f67","cursor":"#282826"},"colors":{"color0":"#272725","color1":"#7d5151","color2":"#959c4f","color3":"#a78749","color4":"#455563","color5":"#9f908d","color6":"#4a5e5b","color7":"#f2f2f2","color7":"#f2f2f2","color8":"#4f4f4b","color9":"#7d5151","color10":"#959c4f","color11":"#a78749","color12":"#455563","color13":"#9f908d","color14":"#4a5e5b","color15":"#f2f2f2","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blok.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blok.json deleted file mode 100644 index de2d386c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blok.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c2a2b","foreground":"#baad8a","cursor":"#bab9ba"},"colors":{"color0":"#2c2a2b","color1":"#a67979","color2":"#809f7b","color3":"#baad8a","color4":"#6d7575","color5":"#7d6969","color6":"#7b9899","color7":"#bab9ba","color7":"#bab9ba","color8":"#545253","color9":"#a67979","color10":"#809f7b","color11":"#baad8a","color12":"#6d7575","color13":"#7d6969","color14":"#7b9899","color15":"#bab9ba","color15":"#bab9ba"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bluetype.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bluetype.json deleted file mode 100644 index 6e16cafb..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bluetype.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272a2a","foreground":"#80807e","cursor":"#eaeaed"},"colors":{"color0":"#272a2a","color1":"#b05f5f","color2":"#b05f5f","color3":"#88aa55","color4":"#88aa55","color5":"#ccb05f","color6":"#ccb05f","color7":"#556973","color7":"#556973","color8":"#484c4e","color9":"#b05f5f","color10":"#b05f5f","color11":"#88aa55","color12":"#88aa55","color13":"#ccb05f","color14":"#ccb05f","color15":"#556973","color15":"#f6f7f8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blumune.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blumune.json deleted file mode 100644 index acf973a7..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-blumune.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1c1f23","foreground":"#7e6b5f","cursor":"#202428"},"colors":{"color0":"#1c1f23","color1":"#234640","color2":"#555552","color3":"#7e6b5f","color4":"#384758","color5":"#444d4d","color6":"#415459","color7":"#ccc7bf","color7":"#ccc7bf","color8":"#33383f","color9":"#234640","color10":"#555552","color11":"#7e6b5f","color12":"#384758","color13":"#444d4d","color14":"#415459","color15":"#ccc7bf","color15":"#e3e0db"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-book.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-book.json deleted file mode 100644 index d0542254..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-book.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b2b28","foreground":"#937b5a","cursor":"#2c2c29"},"colors":{"color0":"#2b2b28","color1":"#993f3c","color2":"#78855e","color3":"#937b5a","color4":"#415265","color5":"#885458","color6":"#646666","color7":"#c4c3c0","color7":"#c4c3c0","color8":"#c4c3c0","color9":"#993f3c","color10":"#78855e","color11":"#937b5a","color12":"#415265","color13":"#885458","color14":"#646666","color15":"#c4c3c0","color15":"#c4c3c0"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-branch.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-branch.json deleted file mode 100644 index bf4e6c0d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-branch.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#32221a","foreground":"#d29b5a","cursor":"#cfc1a9"},"colors":{"color0":"#32221a","color1":"#c2562d","color2":"#96a65e","color3":"#d29b5a","color4":"#3b8e8c","color5":"#c47e5b","color6":"#639a90","color7":"#cfc1a9","color7":"#cfc1a9","color8":"#564a45","color9":"#c2562d","color10":"#96a65e","color11":"#d29b5a","color12":"#3b8e8c","color13":"#c47e5b","color14":"#639a90","color15":"#cfc1a9","color15":"#cfc1a9"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-brownstone.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-brownstone.json deleted file mode 100644 index 5a871537..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-brownstone.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272825","foreground":"#7e744d","cursor":"#282926"},"colors":{"color0":"#272825","color1":"#674839","color2":"#6e794f","color3":"#7e744d","color4":"#3b474e","color5":"#554c41","color6":"#495355","color7":"#b0b0af","color7":"#b0b0af","color8":"#b0b0af","color9":"#674839","color10":"#6e794f","color11":"#7e744d","color12":"#3b474e","color13":"#554c41","color14":"#495355","color15":"#b0b0af","color15":"#c7c7c7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bulb.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bulb.json deleted file mode 100644 index fba6e235..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-bulb.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c292b","foreground":"#c8a168","cursor":"#312e30"},"colors":{"color0":"#2c292b","color1":"#ab6d4e","color2":"#88885d","color3":"#c8a168","color4":"#45626e","color5":"#7c5545","color6":"#456e66","color7":"#c3b495","color7":"#c3b495","color8":"#c3b495","color9":"#ab6d4e","color10":"#88885d","color11":"#c8a168","color12":"#45626e","color13":"#7c5545","color14":"#456e66","color15":"#c3b495","color15":"#c3b495"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-chaires.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-chaires.json deleted file mode 100644 index 915c1c9b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-chaires.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#383844","foreground":"#cba264","cursor":"#cdc5b7"},"colors":{"color0":"#383844","color1":"#a7664a","color2":"#6e8c6e","color3":"#cba264","color4":"#535f6b","color5":"#775a62","color6":"#576e68","color7":"#cdc5b7","color7":"#cdc5b7","color8":"#4f4f60","color9":"#a7664a","color10":"#6e8c6e","color11":"#cba264","color12":"#535f6b","color13":"#775a62","color14":"#576e68","color15":"#cdc5b7","color15":"#cdc5b7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-coco.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-coco.json deleted file mode 100644 index 13b4cee4..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-coco.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1f1d1d","foreground":"#856237","cursor":"#ccbaad"},"colors":{"color0":"#1f1d1d","color1":"#6b4747","color2":"#8d7138","color3":"#856237","color4":"#3c3c49","color5":"#3c342e","color6":"#5d5a4b","color7":"#ccbaad","color7":"#ccbaad","color8":"#4a4a4a","color9":"#6b4747","color10":"#8d7138","color11":"#856237","color12":"#3c3c49","color13":"#3c342e","color14":"#5d5a4b","color15":"#ccbaad","color15":"#eae2dc"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-corduroy.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-corduroy.json deleted file mode 100644 index 95188f18..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-corduroy.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#27201d","foreground":"#987f4b","cursor":"#b7afa4"},"colors":{"color0":"#27201d","color1":"#663c23","color2":"#5c5933","color3":"#987f4b","color4":"#4b484b","color5":"#9c8065","color6":"#685a50","color7":"#b7afa4","color7":"#b7afa4","color8":"#3c3633","color9":"#663c23","color10":"#5c5933","color11":"#987f4b","color12":"#4b484b","color13":"#9c8065","color14":"#685a50","color15":"#b7afa4","color15":"#b7afa4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-depth.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-depth.json deleted file mode 100644 index 7bc48502..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-depth.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c2833","foreground":"#b7a16c","cursor":"#dbd7b8"},"colors":{"color0":"#2c2833","color1":"#bf6257","color2":"#82a37c","color3":"#b7a16c","color4":"#6d6a80","color5":"#825969","color6":"#938e8f","color7":"#dbd7b8","color7":"#dbd7b8","color8":"#4e4955","color9":"#bf6257","color10":"#82a37c","color11":"#b7a16c","color12":"#6d6a80","color13":"#825969","color14":"#938e8f","color15":"#dbd7b8","color15":"#dbd7b8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-designr.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-designr.json deleted file mode 100644 index d82100a1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-designr.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#242e32","foreground":"#ac8d6e","cursor":"#c4c4b5"},"colors":{"color0":"#242e32","color1":"#a66959","color2":"#769070","color3":"#ac8d6e","color4":"#607a86","color5":"#8a757e","color6":"#60867f","color7":"#c4c4b5","color7":"#c4c4b5","color8":"#35444b","color9":"#a66959","color10":"#769070","color11":"#ac8d6e","color12":"#607a86","color13":"#8a757e","color14":"#60867f","color15":"#c4c4b5","color15":"#c4c4b5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-diner.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-diner.json deleted file mode 100644 index 245edcba..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-diner.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2e3738","foreground":"#b8af97","cursor":"#aba599"},"colors":{"color0":"#2e3738","color1":"#9c7f5d","color2":"#8e958f","color3":"#b8af97","color4":"#828882","color5":"#bb9a7f","color6":"#9daba2","color7":"#aba599","color7":"#aba599","color8":"#485152","color9":"#9c7f5d","color10":"#8e958f","color11":"#b8af97","color12":"#828882","color13":"#bb9a7f","color14":"#9daba2","color15":"#aba599","color15":"#aba599"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-escen.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-escen.json deleted file mode 100644 index 74bfa306..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-escen.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1c2319","foreground":"#be9e61","cursor":"#bcbebb"},"colors":{"color0":"#1c2319","color1":"#c14d38","color2":"#a0ce52","color3":"#be9e61","color4":"#4c7e89","color5":"#814d61","color6":"#79a69d","color7":"#bcbebb","color7":"#bcbebb","color8":"#35422f","color9":"#c14d38","color10":"#a0ce52","color11":"#be9e61","color12":"#4c7e89","color13":"#814d61","color14":"#79a69d","color15":"#bcbebb","color15":"#bcbebb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fendr.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fendr.json deleted file mode 100644 index b1d6f282..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fendr.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#262c1b","foreground":"#d6caaa","cursor":"#c1c5bd"},"colors":{"color0":"#262c1b","color1":"#7f5545","color2":"#677c54","color3":"#bba772","color4":"#6e6a5b","color5":"#92887e","color6":"#7c7562","color7":"#cccdbd","color7":"#cccdbd","color8":"#474c3e","color9":"#7f5545","color10":"#677c54","color11":"#bba772","color12":"#6e6a5b","color13":"#92887e","color14":"#7c7562","color15":"#cccdbd","color15":"#e0e1d7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-flapr.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-flapr.json deleted file mode 100644 index 1cb3b322..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-flapr.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2f2832","foreground":"#9a8e80","cursor":"#302833"},"colors":{"color0":"#2f2832","color1":"#885d50","color2":"#747965","color3":"#9a8e80","color4":"#4a4e5a","color5":"#76675b","color6":"#59555c","color7":"#bcb5b5","color7":"#bcb5b5","color8":"#4a3f4e","color9":"#885d50","color10":"#747965","color11":"#9a8e80","color12":"#4a4e5a","color13":"#76675b","color14":"#59555c","color15":"#bcb5b5","color15":"#dddada"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-forst.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-forst.json deleted file mode 100644 index f681485c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-forst.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#161f14","foreground":"#806420","cursor":"#172015"},"colors":{"color0":"#161f14","color1":"#744425","color2":"#50703f","color3":"#806420","color4":"#56535d","color5":"#71532f","color6":"#45605d","color7":"#aca173","color7":"#aca173","color8":"#2d352b","color9":"#744425","color10":"#50703f","color11":"#806420","color12":"#56535d","color13":"#71532f","color14":"#45605d","color15":"#aca173","color15":"#aca173"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fury.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fury.json deleted file mode 100644 index 7a4e94d6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-fury.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1e1e1e","foreground":"#4c6640","cursor":"#9e9e91"},"colors":{"color0":"#1e1e1e","color1":"#98442f","color2":"#9d8554","color3":"#4c6640","color4":"#4c596b","color5":"#7b6072","color6":"#385853","color7":"#9e9e91","color7":"#9e9e91","color8":"#363636","color9":"#98442f","color10":"#9d8554","color11":"#4c6640","color12":"#4c596b","color13":"#7b6072","color14":"#385853","color15":"#9e9e91","color15":"#9e9e91"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-harbing.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-harbing.json deleted file mode 100644 index 1cfe34e8..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-harbing.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#322b26","foreground":"#d7b18a","cursor":"#c8b49d"},"colors":{"color0":"#322b26","color1":"#bd6151","color2":"#6e9383","color3":"#d7b18a","color4":"#8a8f94","color5":"#bd9a81","color6":"#91a1a5","color7":"#c8b49d","color7":"#c8b49d","color8":"#63554c","color9":"#bd6151","color10":"#6e9383","color11":"#d7b18a","color12":"#8a8f94","color13":"#bd9a81","color14":"#91a1a5","color15":"#c8b49d","color15":"#c8b49d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-kit.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-kit.json deleted file mode 100644 index bf60d7ee..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-kit.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272733","foreground":"#dabe72","cursor":"#cac5b7"},"colors":{"color0":"#272733","color1":"#d65f2f","color2":"#aabf7f","color3":"#dabe72","color4":"#5e7e9b","color5":"#bf6c68","color6":"#5a7273","color7":"#cac5b7","color7":"#cac5b7","color8":"#48485e","color9":"#d65f2f","color10":"#aabf7f","color11":"#dabe72","color12":"#5e7e9b","color13":"#bf6c68","color14":"#5a7273","color15":"#cac5b7","color15":"#d5d1c6"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-leaf.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-leaf.json deleted file mode 100644 index 11bbe6d1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-leaf.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#303728","foreground":"#d4b06c","cursor":"#b9bcb7"},"colors":{"color0":"#303728","color1":"#d06e5c","color2":"#abbb52","color3":"#d4b06c","color4":"#4c7e89","color5":"#814d61","color6":"#79a69d","color7":"#b9bcb7","color7":"#b9bcb7","color8":"#505847","color9":"#d06e5c","color10":"#abbb52","color11":"#d4b06c","color12":"#4c7e89","color13":"#814d61","color14":"#79a69d","color15":"#b9bcb7","color15":"#b9bcb7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-link.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-link.json deleted file mode 100644 index 0135693a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-link.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#222222","foreground":"#c5c5b2","cursor":"#242424"},"colors":{"color0":"#222222","color1":"#4d4d4d","color2":"#8a8c84","color3":"#c5c5b2","color4":"#5d5d5d","color5":"#707070","color6":"#898989","color7":"#c2c2c2","color7":"#c2c2c2","color8":"#484848","color9":"#4d4d4d","color10":"#8a8c84","color11":"#c5c5b2","color12":"#5d5d5d","color13":"#707070","color14":"#898989","color15":"#c2c2c2","color15":"#f1f1f1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-mattd.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-mattd.json deleted file mode 100644 index 92897c32..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-mattd.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#20201f","foreground":"#799c6a","cursor":"#b0b0a2"},"colors":{"color0":"#20201f","color1":"#996140","color2":"#9d8554","color3":"#799c6a","color4":"#5f656a","color5":"#7b6064","color6":"#566e6b","color7":"#b0b0a2","color7":"#b0b0a2","color8":"#3a3a38","color9":"#996140","color10":"#9d8554","color11":"#799c6a","color12":"#5f656a","color13":"#7b6064","color14":"#566e6b","color15":"#b0b0a2","color15":"#d3d3cb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-novmbr.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-novmbr.json deleted file mode 100644 index f688df0e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-novmbr.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#241d1a","foreground":"#cca75f","cursor":"#251e1b"},"colors":{"color0":"#241d1a","color1":"#9f6434","color2":"#9dac5f","color3":"#cca75f","color4":"#2f7d7c","color5":"#b5896e","color6":"#52877f","color7":"#c7b8ac","color7":"#c7b8ac","color8":"#50413a","color9":"#9f6434","color10":"#9dac5f","color11":"#cca75f","color12":"#2f7d7c","color13":"#b5896e","color14":"#52877f","color15":"#c7b8ac","color15":"#c7b8ac"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-owl.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-owl.json deleted file mode 100644 index b78631fa..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-owl.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2f2b2c","foreground":"#cacaca","cursor":"#dedede"},"colors":{"color0":"#2f2b2c","color1":"#5a5a5a","color2":"#989898","color3":"#cacaca","color4":"#656565","color5":"#b1b1b1","color6":"#7f7f7f","color7":"#dedede","color7":"#dedede","color8":"#504c4e","color9":"#5a5a5a","color10":"#989898","color11":"#cacaca","color12":"#656565","color13":"#b1b1b1","color14":"#7f7f7f","color15":"#dedede","color15":"#FFFFFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-paints.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-paints.json deleted file mode 100644 index 3a530631..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-paints.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2f2a2a","foreground":"#b2885d","cursor":"#332e2e"},"colors":{"color0":"#2f2a2a","color1":"#854340","color2":"#668c71","color3":"#b2885d","color4":"#41647b","color5":"#915556","color6":"#477578","color7":"#c9c8c8","color7":"#c9c8c8","color8":"#c9c8c8","color9":"#854340","color10":"#668c71","color11":"#b2885d","color12":"#41647b","color13":"#915556","color14":"#477578","color15":"#c9c8c8","color15":"#c9c8c8"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-parkd.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-parkd.json deleted file mode 100644 index bbebdd30..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-parkd.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b2428","foreground":"#b29d6a","cursor":"#c2b7aa"},"colors":{"color0":"#2b2428","color1":"#89453c","color2":"#59713f","color3":"#b29d6a","color4":"#464e59","color5":"#614e44","color6":"#4f545b","color7":"#c2b7aa","color7":"#c2b7aa","color8":"#413c40","color9":"#89453c","color10":"#59713f","color11":"#b29d6a","color12":"#464e59","color13":"#614e44","color14":"#4f545b","color15":"#c2b7aa","color15":"#c2b7aa"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-pastely.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-pastely.json deleted file mode 100644 index d2850d4b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-pastely.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c2c2e","foreground":"#87835d","cursor":"#2e2e30"},"colors":{"color0":"#2c2c2e","color1":"#645446","color2":"#59674f","color3":"#87835d","color4":"#4d554f","color5":"#70614f","color6":"#666755","color7":"#aba786","color7":"#aba786","color8":"#aba786","color9":"#645446","color10":"#59674f","color11":"#87835d","color12":"#4d554f","color13":"#70614f","color14":"#666755","color15":"#aba786","color15":"#c4c1aa"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-petal.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-petal.json deleted file mode 100644 index 0b3ef0c9..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-petal.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#22211f","foreground":"#827834","cursor":"#252422"},"colors":{"color0":"#22211f","color1":"#785326","color2":"#516941","color3":"#827834","color4":"#42514f","color5":"#6a5632","color6":"#4e5d4d","color7":"#b4b399","color7":"#b4b399","color8":"#b4b399","color9":"#785326","color10":"#516941","color11":"#827834","color12":"#42514f","color13":"#6a5632","color14":"#4e5d4d","color15":"#b4b399","color15":"#c9c9b6"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-poly.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-poly.json deleted file mode 100644 index 48dcca3a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-poly.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#231c0d","foreground":"#aead5d","cursor":"#a5a39d"},"colors":{"color0":"#231c0d","color1":"#a47b3d","color2":"#7b9764","color3":"#aead5d","color4":"#628e8f","color5":"#ad9d52","color6":"#709681","color7":"#a5a39d","color7":"#a5a39d","color8":"#3f392a","color9":"#a47b3d","color10":"#7b9764","color11":"#aead5d","color12":"#628e8f","color13":"#ad9d52","color14":"#709681","color15":"#a5a39d","color15":"#a5a39d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-prevail.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-prevail.json deleted file mode 100644 index 4e0f2318..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-prevail.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#263139","foreground":"#dac99d","cursor":"#28343c"},"colors":{"color0":"#263139","color1":"#f36f62","color2":"#c5e19c","color3":"#ccb478","color4":"#4c7e89","color5":"#814d61","color6":"#79a69d","color7":"#c4c4b5","color7":"#c4c4b5","color8":"#455867","color9":"#f36f62","color10":"#c5e19c","color11":"#ccb478","color12":"#4c7e89","color13":"#814d61","color14":"#79a69d","color15":"#c4c4b5","color15":"#dbdbd1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-provrb.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-provrb.json deleted file mode 100644 index 5ccf8932..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-provrb.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#322f30","foreground":"#8d7766","cursor":"#353233"},"colors":{"color0":"#322f30","color1":"#654c51","color2":"#7f8281","color3":"#8d7766","color4":"#5b697e","color5":"#7b6b75","color6":"#7d8592","color7":"#c0bfbf","color7":"#c0bfbf","color8":"#c0bfbf","color9":"#654c51","color10":"#7f8281","color11":"#8d7766","color12":"#5b697e","color13":"#7b6b75","color14":"#7d8592","color15":"#c0bfbf","color15":"#dfdfdf"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-raild.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-raild.json deleted file mode 100644 index d9e99d92..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-raild.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282623","foreground":"#ad8b67","cursor":"#2b2825"},"colors":{"color0":"#282623","color1":"#935334","color2":"#66604d","color3":"#ad8b67","color4":"#504b44","color5":"#634737","color6":"#505349","color7":"#bcbba4","color7":"#bcbba4","color8":"#43403b","color9":"#935334","color10":"#66604d","color11":"#ad8b67","color12":"#504b44","color13":"#634737","color14":"#505349","color15":"#bcbba4","color15":"#dbdace"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-relax.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-relax.json deleted file mode 100644 index ce881fcc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-relax.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#322835","foreground":"#b08960","cursor":"#332836"},"colors":{"color0":"#322835","color1":"#674f4a","color2":"#67786d","color3":"#b08960","color4":"#5e6d79","color5":"#7d6969","color6":"#6a7a76","color7":"#ccbfb3","color7":"#ccbfb3","color8":"#4b3f4e","color9":"#674f4a","color10":"#67786d","color11":"#b08960","color12":"#5e6d79","color13":"#7d6969","color14":"#6a7a76","color15":"#ccbfb3","color15":"#ccbfb3"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scag.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scag.json deleted file mode 100644 index 80068b85..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scag.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#252326","foreground":"#7a8648","cursor":"#c4bbb0"},"colors":{"color0":"#252326","color1":"#93503e","color2":"#9d8554","color3":"#7a8648","color4":"#5f656a","color5":"#7b6064","color6":"#566e6b","color7":"#c4bbb0","color7":"#c4bbb0","color8":"#413f43","color9":"#93503e","color10":"#9d8554","color11":"#7a8648","color12":"#5f656a","color13":"#7b6064","color14":"#566e6b","color15":"#c4bbb0","color15":"#c4bbb0"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scape.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scape.json deleted file mode 100644 index 87973c66..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-scape.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282423","foreground":"#987f4b","cursor":"#b7afa4"},"colors":{"color0":"#282423","color1":"#925633","color2":"#757c60","color3":"#987f4b","color4":"#515962","color5":"#685054","color6":"#506168","color7":"#b7afa4","color7":"#b7afa4","color8":"#3f3d3c","color9":"#925633","color10":"#757c60","color11":"#987f4b","color12":"#515962","color13":"#685054","color14":"#506168","color15":"#b7afa4","color15":"#b7afa4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-shade.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-shade.json deleted file mode 100644 index 7b775065..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-shade.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c2c2c","foreground":"#d0c57a","cursor":"#ededb7"},"colors":{"color0":"#2c2c2c","color1":"#c77369","color2":"#93988a","color3":"#d0c57a","color4":"#747f89","color5":"#825969","color6":"#938e8f","color7":"#ddddb5","color7":"#ddddb5","color8":"#4e4e4e","color9":"#c77369","color10":"#93988a","color11":"#d0c57a","color12":"#747f89","color13":"#825969","color14":"#938e8f","color15":"#ddddb5","color15":"#ededb7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-simplicity.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-simplicity.json deleted file mode 100644 index 31d249eb..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-simplicity.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#28282C","foreground":"#A18673","cursor":"#F3F3F3"},"colors":{"color0":"#28282C","color1":"#BF5C56","color2":"#BF5C56","color3":"#97B19C","color4":"#97B19C","color5":"#D7BD8A","color6":"#D7BD8A","color7":"#545F72","color7":"#545F72","color8":"#404047","color9":"#BF5C56","color10":"#BF5C56","color11":"#97B19C","color12":"#97B19C","color13":"#D7BD8A","color14":"#D7BD8A","color15":"#545F72","color15":"#F4F4F2"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-skigh.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-skigh.json deleted file mode 100644 index b7938e99..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-skigh.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#252a32","foreground":"#b39580","cursor":"#272c34"},"colors":{"color0":"#252a32","color1":"#876058","color2":"#6f7f71","color3":"#b39580","color4":"#546780","color5":"#84787d","color6":"#556f86","color7":"#bab7b5","color7":"#bab7b5","color8":"#bab7b5","color9":"#876058","color10":"#6f7f71","color11":"#b39580","color12":"#546780","color13":"#84787d","color14":"#556f86","color15":"#bab7b5","color15":"#dfdedd"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-slate.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-slate.json deleted file mode 100644 index 9a9a4bb2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-slate.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#242a2b","foreground":"#8d8150","cursor":"#242b2c"},"colors":{"color0":"#242a2b","color1":"#674839","color2":"#6e794f","color3":"#8d8150","color4":"#3b474e","color5":"#554c41","color6":"#495355","color7":"#939381","color7":"#939381","color8":"#939381","color9":"#674839","color10":"#6e794f","color11":"#8d8150","color12":"#3b474e","color13":"#554c41","color14":"#495355","color15":"#939381","color15":"#abab9c"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-soundwave.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-soundwave.json deleted file mode 100644 index e0f6637b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-soundwave.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#29231f","foreground":"#aa8f5f","cursor":"#bcb7aa"},"colors":{"color0":"#29231f","color1":"#675141","color2":"#625438","color3":"#aa8f5f","color4":"#6e6051","color5":"#514540","color6":"#5e4e3c","color7":"#bcb7aa","color7":"#bcb7aa","color8":"#514b49","color9":"#675141","color10":"#625438","color11":"#aa8f5f","color12":"#6e6051","color13":"#514540","color14":"#5e4e3c","color15":"#bcb7aa","color15":"#dedbd5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-spire.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-spire.json deleted file mode 100644 index 5f823ffc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-spire.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#262f33","foreground":"#948d65","cursor":"#b5b699"},"colors":{"color0":"#262f33","color1":"#804f4e","color2":"#68786c","color3":"#948d65","color4":"#47575f","color5":"#74636a","color6":"#526562","color7":"#b5b699","color7":"#b5b699","color8":"#464c50","color9":"#804f4e","color10":"#68786c","color11":"#948d65","color12":"#47575f","color13":"#74636a","color14":"#526562","color15":"#b5b699","color15":"#cbcbb7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sprout.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sprout.json deleted file mode 100644 index 560d9701..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sprout.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2d3144","foreground":"#96915d","cursor":"#cfccbe"},"colors":{"color0":"#2d3144","color1":"#8d6d5c","color2":"#6d806d","color3":"#96915d","color4":"#68758d","color5":"#8a747b","color6":"#8d97a8","color7":"#cfccbe","color7":"#cfccbe","color8":"#525a69","color9":"#8d6d5c","color10":"#6d806d","color11":"#96915d","color12":"#68758d","color13":"#8a747b","color14":"#8d97a8","color15":"#cfccbe","color15":"#f0efeb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-squares.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-squares.json deleted file mode 100644 index feab3211..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-squares.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#27201f","foreground":"#978341","cursor":"#bebcbc"},"colors":{"color0":"#27201f","color1":"#9b5208","color2":"#75922c","color3":"#978341","color4":"#5e6676","color5":"#824219","color6":"#4e7479","color7":"#bebcbc","color7":"#bebcbc","color8":"#3b3436","color9":"#9b5208","color10":"#75922c","color11":"#978341","color12":"#5e6676","color13":"#824219","color14":"#4e7479","color15":"#bebcbc","color15":"#bebcbc"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-stv.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-stv.json deleted file mode 100644 index 45678795..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-stv.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c373d","foreground":"#baad8a","cursor":"#c4c0bb"},"colors":{"color0":"#2c373d","color1":"#a67979","color2":"#809f7b","color3":"#baad8a","color4":"#6d7575","color5":"#8e7d79","color6":"#7b9899","color7":"#c4c0bb","color7":"#c4c0bb","color8":"#4d5459","color9":"#a67979","color10":"#809f7b","color11":"#baad8a","color12":"#6d7575","color13":"#8e7d79","color14":"#7b9899","color15":"#c4c0bb","color15":"#c4c0bb"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-subtle.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-subtle.json deleted file mode 100644 index df48caac..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-subtle.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2c2c35","foreground":"#6b925a","cursor":"#2d2d36"},"colors":{"color0":"#2c2c35","color1":"#b56550","color2":"#b79b58","color3":"#6b925a","color4":"#6e747b","color5":"#96787d","color6":"#7b8889","color7":"#b4ada4","color7":"#b4ada4","color8":"#45454d","color9":"#b56550","color10":"#b79b58","color11":"#6b925a","color12":"#6e747b","color13":"#96787d","color14":"#7b8889","color15":"#b4ada4","color15":"#b4ada4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sundr.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sundr.json deleted file mode 100644 index f400a74d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-sundr.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b2320","foreground":"#aa9375","cursor":"#2e2522"},"colors":{"color0":"#2b2320","color1":"#734948","color2":"#768157","color3":"#aa9375","color4":"#585b63","color5":"#6f5a56","color6":"#7d8486","color7":"#bab1a1","color7":"#bab1a1","color8":"#bab1a1","color9":"#734948","color10":"#768157","color11":"#aa9375","color12":"#585b63","color13":"#6f5a56","color14":"#7d8486","color15":"#bab1a1","color15":"#bab1a1"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-tealights.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-tealights.json deleted file mode 100644 index 2403348e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-tealights.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#25231b","foreground":"#988871","cursor":"#26241c"},"colors":{"color0":"#25231b","color1":"#8e2f34","color2":"#55654a","color3":"#988871","color4":"#848f89","color5":"#9f8c7c","color6":"#9cb4a6","color7":"#c4c1b0","color7":"#c4c1b0","color8":"#423f31","color9":"#8e2f34","color10":"#55654a","color11":"#988871","color12":"#848f89","color13":"#9f8c7c","color14":"#9cb4a6","color15":"#c4c1b0","color15":"#d8d4c5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-traffic.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-traffic.json deleted file mode 100644 index 9c03c8d2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-traffic.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272c30","foreground":"#c79e84","cursor":"#cfb9a8"},"colors":{"color0":"#272c30","color1":"#934e46","color2":"#637268","color3":"#c79e84","color4":"#515e67","color5":"#715f5e","color6":"#5c6f7d","color7":"#cfb9a8","color7":"#cfb9a8","color8":"#414a51","color9":"#934e46","color10":"#637268","color11":"#c79e84","color12":"#515e67","color13":"#715f5e","color14":"#5c6f7d","color15":"#cfb9a8","color15":"#ddcec2"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-transposet.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-transposet.json deleted file mode 100644 index 87400115..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-transposet.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2a2725","foreground":"#bdac8c","cursor":"#2b2927"},"colors":{"color0":"#2a2725","color1":"#8e6f64","color2":"#849385","color3":"#bdac8c","color4":"#4c5467","color5":"#757580","color6":"#64697f","color7":"#b8b2a7","color7":"#b8b2a7","color8":"#474543","color9":"#8e6f64","color10":"#849385","color11":"#bdac8c","color12":"#4c5467","color13":"#757580","color14":"#64697f","color15":"#b8b2a7","color15":"#b8b2a7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-urban.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-urban.json deleted file mode 100644 index 4ec21019..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-urban.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#312e39","foreground":"#ae835a","cursor":"#33303b"},"colors":{"color0":"#312e39","color1":"#87404f","color2":"#74934e","color3":"#ae835a","color4":"#615772","color5":"#783e57","color6":"#554757","color7":"#c0a79a","color7":"#c0a79a","color8":"#4f4b58","color9":"#87404f","color10":"#74934e","color11":"#ae835a","color12":"#615772","color13":"#783e57","color14":"#554757","color15":"#c0a79a","color15":"#c0a79a"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-vans.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-vans.json deleted file mode 100644 index d287a213..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-vans.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b2c33","foreground":"#e8dfcd","cursor":"#303139"},"colors":{"color0":"#2b2c33","color1":"#b16c7f","color2":"#92ab75","color3":"#bdab77","color4":"#485476","color5":"#746081","color6":"#636f7d","color7":"#d9c1a9","color7":"#d9c1a9","color8":"#d9c1a9","color9":"#b16c7f","color10":"#92ab75","color11":"#bdab77","color12":"#485476","color13":"#746081","color14":"#636f7d","color15":"#d9c1a9","color15":"#e9dbce"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-victory.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-victory.json deleted file mode 100644 index 0a2c7f15..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-victory.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2d2d33","foreground":"#a29474","cursor":"#303036"},"colors":{"color0":"#2d2d33","color1":"#9c6647","color2":"#708684","color3":"#a29474","color4":"#697284","color5":"#796a70","color6":"#47676e","color7":"#c4c4b5","color7":"#c4c4b5","color8":"#44444a","color9":"#9c6647","color10":"#708684","color11":"#a29474","color12":"#697284","color13":"#796a70","color14":"#47676e","color15":"#c4c4b5","color15":"#c4c4b5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-view.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-view.json deleted file mode 100644 index 0e5c7b89..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-view.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2a2d34","foreground":"#86733b","cursor":"#2e3239"},"colors":{"color0":"#2a2d34","color1":"#a2462e","color2":"#5e713d","color3":"#86733b","color4":"#394c5d","color5":"#855646","color6":"#6e727d","color7":"#cababa","color7":"#cababa","color8":"#414550","color9":"#a2462e","color10":"#5e713d","color11":"#86733b","color12":"#394c5d","color13":"#855646","color14":"#6e727d","color15":"#cababa","color15":"#cababa"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-wintry.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-wintry.json deleted file mode 100644 index ea57a717..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/dkeg-wintry.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#37273a","foreground":"#b3a67d","cursor":"#c3bec3"},"colors":{"color0":"#37273a","color1":"#9c595c","color2":"#8ba07a","color3":"#b3a67d","color4":"#7B6677","color5":"#83466D","color6":"#899079","color7":"#c3bec3","color7":"#c3bec3","color8":"#5e5261","color9":"#9c595c","color10":"#8ba07a","color11":"#b3a67d","color12":"#7B6677","color13":"#83466D","color14":"#899079","color15":"#c3bec3","color15":"#c3bec3"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/gruvbox.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/gruvbox.json deleted file mode 100644 index 3b7e3a54..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/gruvbox.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#282828","foreground":"#a89984","cursor":"#ebdbb2"},"colors":{"color0":"#282828","color1":"#cc241d","color2":"#d79921","color3":"#b58900","color4":"#458588","color5":"#b16286","color6":"#689d6a","color7":"#a89984","color8":"#928374","color9":"#cc241d","color10":"#d79921","color11":"#b58900","color12":"#458588","color13":"#b16286","color14":"#689d6a","color15":"#a89984"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/hybrid-material.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/hybrid-material.json deleted file mode 100644 index 9e598559..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/hybrid-material.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#263238","foreground":"#ffffff","cursor":"#cc6666"},"colors":{"color0":"#263238","color1":"#cc6666","color2":"#f0c674","color3":"#b5bd68","color4":"#8abeb7","color5":"#81a2be","color6":"#b294bb","color7":"#ffffff","color8":"#707880","color9":"#cc6666","color10":"#f0c674","color11":"#b5bd68","color12":"#8abeb7","color13":"#81a2be","color14":"#b294bb","color15":"#ffffff"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/monokai.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/monokai.json deleted file mode 100644 index 5219d849..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/monokai.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#272822","foreground":"#f8f8f2","cursor":"#f92672"},"colors":{"color0":"#272822","color1":"#f92672","color2":"#a6e22e","color3":"#f4bf75","color4":"#66d9ef","color5":"#ae81ff","color6":"#a1efe4","color7":"#f8f8f2","color8":"#75715e","color9":"#f92672","color10":"#a6e22e","color11":"#f4bf75","color12":"#66d9ef","color13":"#ae81ff","color14":"#a1efe4","color15":"#f9f8f5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-astromouse.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-astromouse.json deleted file mode 100644 index 2fe5f53a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-astromouse.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1c1c1c","color1":"#d770af","color2":"#9acc79","color3":"#d0d26b","color4":"#77b6c5","color5":"#a488d9","color6":"#7fcab3","color7":"#8d8d8d","color8":"#3d3a3a","color9":"#d770af","color10":"#9acc79","color11":"#d0d26b","color12":"#77b6c5","color13":"#a488d9","color14":"#7fcab3","color15":"#8d8d8d","color16":"#3d3a3a","color17":"#d28abf"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#d28abf"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-belge.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-belge.json deleted file mode 100644 index 2be72e2b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-belge.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#252525","color1":"#ef6769","color2":"#a6e22e","color3":"#fd971f","color4":"#6495ed","color5":"#deb887","color6":"#b0c4de","color7":"#dbdcdc","color8":"#454545","color9":"#ef6769","color10":"#a6e22e","color11":"#fd971f","color12":"#6495ed","color13":"#deb887","color14":"#b0c4de","color15":"#dbdcdc","color16":"#454545","color17":"#fc7ca5"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#fc7ca5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-bitmute.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-bitmute.json deleted file mode 100644 index d61ca9cd..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-bitmute.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#282828","color1":"#b76969","color2":"#719d72","color3":"#909858","color4":"#68668f","color5":"#966894","color6":"#688891","color7":"#8e8e8e","color8":"#494949","color9":"#b76969","color10":"#719d72","color11":"#909858","color12":"#68668f","color13":"#966894","color14":"#688891","color15":"#8e8e8e","color16":"#494949","color17":"#b87e7e"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#b87e7e"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-cloud.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-cloud.json deleted file mode 100644 index 3e773f8e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-cloud.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#222827","color1":"#d5a8e3","color2":"#9c75dd","color3":"#9898ae","color4":"#654a96","color5":"#625566","color6":"#a9d1df","color7":"#e6ebe5","color8":"#5d6f74","color9":"#d5a8e3","color10":"#9c75dd","color11":"#9898ae","color12":"#654a96","color13":"#625566","color14":"#a9d1df","color15":"#e6ebe5","color16":"#5d6f74","color17":"#cd749c"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#cd749c"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-colorfulcolors.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-colorfulcolors.json deleted file mode 100644 index 3d76ccdb..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-colorfulcolors.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#151515","color1":"#ff8eaf","color2":"#a6e25f","color3":"#f8e578","color4":"#a6e2f0","color5":"#e85b92","color6":"#5f868f","color7":"#d5f1f2","color8":"#696969","color9":"#ff8eaf","color10":"#a6e25f","color11":"#f8e578","color12":"#a6e2f0","color13":"#e85b92","color14":"#5f868f","color15":"#d5f1f2","color16":"#696969","color17":"#ed4c7a"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ed4c7a"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dawn.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dawn.json deleted file mode 100644 index ba741219..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dawn.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#353535","color1":"#744B40","color2":"#6D6137","color3":"#765636","color4":"#61564B","color5":"#6B4A49","color6":"#435861","color7":"#B3B3B3","color8":"#5F5F5F","color9":"#744B40","color10":"#6D6137","color11":"#765636","color12":"#61564B","color13":"#6B4A49","color14":"#435861","color15":"#B3B3B3","color16":"#5F5F5F","color17":"#785850"},"special":{"foreground":"#9B9081","background":"#181B20","cursor":"#785850"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-deafened.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-deafened.json deleted file mode 100644 index f2b7ed90..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-deafened.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#3d3e3d","color1":"#755a5b","color2":"#68755a","color3":"#756e5a","color4":"#5b6976","color5":"#755b76","color6":"#465457","color7":"#ccccc6","color8":"#5a5b5c","color9":"#755a5b","color10":"#68755a","color11":"#756e5a","color12":"#5b6976","color13":"#755b76","color14":"#465457","color15":"#ccccc6","color16":"#5a5b5c","color17":"#a37679"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#a37679"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-derp.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-derp.json deleted file mode 100644 index a1f5c2b4..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-derp.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#111111","color1":"#d36265","color2":"#aece91","color3":"#e7e18c","color4":"#5297cf","color5":"#963c59","color6":"#5e7175","color7":"#bebebe","color8":"#666666","color9":"#d36265","color10":"#aece91","color11":"#e7e18c","color12":"#5297cf","color13":"#963c59","color14":"#5e7175","color15":"#bebebe","color16":"#666666","color17":"#ef8171"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ef8171"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-digerati.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-digerati.json deleted file mode 100644 index 289b7fd1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-digerati.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#303030","color1":"#c03000","color2":"#b1d631","color3":"#fecf35","color4":"#426870","color5":"#6d506d","color6":"#4bb5c1","color7":"#e2e2e5","color8":"#5f5f5f","color9":"#c03000","color10":"#b1d631","color11":"#fecf35","color12":"#426870","color13":"#6d506d","color14":"#4bb5c1","color15":"#e2e2e5","color16":"#5f5f5f","color17":"#ff3a78"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ff3a78"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-doomicideocean.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-doomicideocean.json deleted file mode 100644 index e408e30c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-doomicideocean.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#000000","color1":"#571dc2","color2":"#14db49","color3":"#403d70","color4":"#385a70","color5":"#384894","color6":"#4f3a5e","color7":"#999999","color8":"#38372c","color9":"#571dc2","color10":"#14db49","color11":"#403d70","color12":"#385a70","color13":"#384894","color14":"#4f3a5e","color15":"#999999","color16":"#38372c","color17":"#7c54b0"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#7c54b0"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dotshare.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dotshare.json deleted file mode 100644 index 682f2a6c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dotshare.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#101010","color1":"#e84f4f","color2":"#b8d68c","color3":"#e1aa5d","color4":"#7dc1cf","color5":"#9b64fb","color6":"#6d878d","color7":"#dddddd","color8":"#404040","color9":"#e84f4f","color10":"#b8d68c","color11":"#e1aa5d","color12":"#7dc1cf","color13":"#9b64fb","color14":"#6d878d","color15":"#dddddd","color16":"#404040","color17":"#d23d3d"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#d23d3d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dwmrob.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dwmrob.json deleted file mode 100644 index 3a820fb2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-dwmrob.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#151515","color1":"#bf7979","color2":"#97b26b","color3":"#cdcda1","color4":"#4a5463","color5":"#9c3885","color6":"#88aadd","color7":"#ffffff","color8":"#505450","color9":"#bf7979","color10":"#97b26b","color11":"#cdcda1","color12":"#4a5463","color13":"#9c3885","color14":"#88aadd","color15":"#ffffff","color16":"#505450","color17":"#f4a45f"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#f4a45f"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-eqie6.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-eqie6.json deleted file mode 100644 index f9e7481c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-eqie6.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#222222","color1":"#e84f4f","color2":"#b7ce42","color3":"#fea63c","color4":"#66a9b9","color5":"#b7416e","color6":"#6d878d","color7":"#cccccc","color8":"#666666","color9":"#e84f4f","color10":"#b7ce42","color11":"#fea63c","color12":"#66a9b9","color13":"#b7416e","color14":"#6d878d","color15":"#cccccc","color16":"#666666","color17":"#d23d3d"},"special":{"foreground":"#cccccc","background":"#111111","cursor":"#d23d3d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-euphrasia.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-euphrasia.json deleted file mode 100644 index 7b1d82fd..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-euphrasia.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#192033","color1":"#a62a3e","color2":"#38912b","color3":"#b27d12","color4":"#355c9a","color5":"#7c4f9f","color6":"#258f8f","color7":"#77858c","color8":"#666666","color9":"#a62a3e","color10":"#38912b","color11":"#b27d12","color12":"#355c9a","color13":"#7c4f9f","color14":"#258f8f","color15":"#77858c","color16":"#666666","color17":"#f04758"},"special":{"foreground":"#1c2027","background":"#cfcfd9","cursor":"#f04758"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gjm.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gjm.json deleted file mode 100644 index 860d5ea8..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gjm.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1c1c1c","color1":"#ff005b","color2":"#cee318","color3":"#ffe755","color4":"#048ac7","color5":"#833c9f","color6":"#0ac1cd","color7":"#e5e5e5","color8":"#666666","color9":"#ff005b","color10":"#cee318","color11":"#ffe755","color12":"#048ac7","color13":"#833c9f","color14":"#0ac1cd","color15":"#e5e5e5","color16":"#666666","color17":"#ff00a0"},"special":{"foreground":"#c5c5c5","background":"#1c1c1c","cursor":"#ff00a0"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gnometerm.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gnometerm.json deleted file mode 100644 index 544145b5..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gnometerm.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#000000","color1":"#cc0000","color2":"#4e9a06","color3":"#c4a000","color4":"#3465a4","color5":"#75507b","color6":"#06989a","color7":"#d3d7cf","color8":"#555753","color9":"#cc0000","color10":"#4e9a06","color11":"#c4a000","color12":"#3465a4","color13":"#75507b","color14":"#06989a","color15":"#d3d7cf","color16":"#555753","color17":"#ef2929"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ef2929"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gotham.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gotham.json deleted file mode 100644 index 3cf5b0f2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gotham.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#0a0f14","color1":"#c33027","color2":"#26a98b","color3":"#edb54b","color4":"#195465","color5":"#4e5165","color6":"#33859d","color7":"#98d1ce","color8":"#364b61","color9":"#c33027","color10":"#26a98b","color11":"#edb54b","color12":"#195465","color13":"#4e5165","color14":"#33859d","color15":"#98d1ce","color16":"#10151b","color17":"#d26939"},"special":{"foreground":"#98d1ce","background":"#0a0f14","cursor":"#d26939"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gslob-nature-suede.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gslob-nature-suede.json deleted file mode 100644 index 3c389a68..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-gslob-nature-suede.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#392925","color1":"#98724c","color2":"#908f32","color3":"#aa964c","color4":"#7b854e","color5":"#6b5644","color6":"#5c5142","color7":"#c8b55b","color8":"#544b2e","color9":"#98724c","color10":"#908f32","color11":"#aa964c","color12":"#7b854e","color13":"#6b5644","color14":"#5c5142","color15":"#c8b55b","color16":"#544b2e","color17":"#af652f"},"special":{"foreground":"#746c48","background":"#170f0d","cursor":"#af652f"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hund.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hund.json deleted file mode 100644 index 234bc409..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hund.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#222222","color1":"#E84F4F","color2":"#B7CE42","color3":"#FEA63C","color4":"#66AABB","color5":"#B7416E","color6":"#6D878D","color7":"#DDDDDD","color8":"#666666","color9":"#E84F4F","color10":"#B7CE42","color11":"#FEA63C","color12":"#66AABB","color13":"#B7416E","color14":"#6D878D","color15":"#DDDDDD","color16":"#666666","color17":"#D23D3D"},"special":{"foreground":"#FFFFFF","background":"#161616","cursor":"#D23D3D"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hybrid.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hybrid.json deleted file mode 100644 index cf2e9f19..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-hybrid.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#393939","color1":"#da4939","color2":"#9acc79","color3":"#d0d26b","color4":"#6d9cbe","color5":"#9f5079","color6":"#435d75","color7":"#c2c2c2","color8":"#474747","color9":"#da4939","color10":"#9acc79","color11":"#d0d26b","color12":"#6d9cbe","color13":"#9f5079","color14":"#435d75","color15":"#c2c2c2","color16":"#474747","color17":"#ff6c5c"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ff6c5c"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-insignificato.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-insignificato.json deleted file mode 100644 index ebcb981f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-insignificato.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#3d3e3d","color1":"#755a5b","color2":"#68755a","color3":"#756e5a","color4":"#5b6976","color5":"#755b76","color6":"#5b7674","color7":"#808080","color8":"#5a5b5c","color9":"#755a5b","color10":"#68755a","color11":"#756e5a","color12":"#5b6976","color13":"#755b76","color14":"#5b7674","color15":"#808080","color16":"#5a5b5c","color17":"#a37679"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#a37679"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-invisibone.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-invisibone.json deleted file mode 100644 index 9a93cb02..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-invisibone.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#303030","color1":"#D370A3","color2":"#6D9E3F","color3":"#B58858","color4":"#6095C5","color5":"#AC7BDE","color6":"#3BA275","color7":"#CFCFCF","color8":"#686868","color9":"#D370A3","color10":"#6D9E3F","color11":"#B58858","color12":"#6095C5","color13":"#AC7BDE","color14":"#3BA275","color15":"#CFCFCF","color16":"#686868","color17":"#FFA7DA"},"special":{"foreground":"#A0A0A0","background":"#232323","cursor":"#FFA7DA"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-jasonwryan.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-jasonwryan.json deleted file mode 100644 index 713b8b55..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-jasonwryan.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#222222","color1":"#9e5641","color2":"#6c7e55","color3":"#caaf2b","color4":"#4c8ea1","color5":"#956d9d","color6":"#7c9aa6","color7":"#909090","color8":"#454545","color9":"#9e5641","color10":"#6c7e55","color11":"#caaf2b","color12":"#4c8ea1","color13":"#956d9d","color14":"#7c9aa6","color15":"#909090","color16":"#454545","color17":"#cc896d"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#cc896d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-kasugano.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-kasugano.json deleted file mode 100644 index 1c24bc71..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-kasugano.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#3D3D3D","color1":"#6673BF","color2":"#3EA290","color3":"#B0EAD9","color4":"#31658C","color5":"#596196","color6":"#8292B2","color7":"#C8CACC","color8":"#4D4D4D","color9":"#6673BF","color10":"#3EA290","color11":"#B0EAD9","color12":"#31658C","color13":"#596196","color14":"#8292B2","color15":"#C8CACC","color16":"#4D4D4D","color17":"#899AFF"},"special":{"foreground":"#ffffff","background":"#1b1b1b","cursor":"#899AFF"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-material.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-material.json deleted file mode 100644 index bbe3f613..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-material.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#263238","color1":"#ff9800","color2":"#8bc34a","color3":"#ffc107","color4":"#03a9f4","color5":"#e91e63","color6":"#009688","color7":"#cfd8dc","color8":"#37474f","color9":"#ff9800","color10":"#8bc34a","color11":"#ffc107","color12":"#03a9f4","color13":"#e91e63","color14":"#009688","color15":"#cfd8dc","color16":"#37474f","color17":"#ffa74d"},"special":{"foreground":"#eceff1","background":"#263238","cursor":"#ffa74d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikado.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikado.json deleted file mode 100644 index f842a736..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikado.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#322a2c","color1":"#a04363","color2":"#9b9329","color3":"#bf7a29","color4":"#6a8c8c","color5":"#856774","color6":"#757978","color7":"#bcbcaf","color8":"#46423b","color9":"#a04363","color10":"#9b9329","color11":"#bf7a29","color12":"#6a8c8c","color13":"#856774","color14":"#757978","color15":"#bcbcaf","color16":"#46423b","color17":"#ae837a"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ae837a"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikazuki.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikazuki.json deleted file mode 100644 index b617e431..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-mikazuki.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#2a1d17","color1":"#da1657","color2":"#3ea250","color3":"#e3d33d","color4":"#3ea290","color5":"#ff850d","color6":"#8c16da","color7":"#e9e9e9","color8":"#4f362b","color9":"#da1657","color10":"#3ea250","color11":"#e3d33d","color12":"#3ea290","color13":"#ff850d","color14":"#8c16da","color15":"#e9e9e9","color16":"#4f362b","color17":"#da4375"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#da4375"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-monokai.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-monokai.json deleted file mode 100644 index b8669f67..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-monokai.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#48483e","color1":"#dc2566","color2":"#8fc029","color3":"#d4c96e","color4":"#55bcce","color5":"#9358fe","color6":"#56b7a5","color7":"#acada1","color8":"#76715e","color9":"#dc2566","color10":"#8fc029","color11":"#d4c96e","color12":"#55bcce","color13":"#9358fe","color14":"#56b7a5","color15":"#acada1","color16":"#76715e","color17":"#fa2772"},"special":{"foreground":"#f1ebeb","background":"#272822","cursor":"#fa2772"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-muse.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-muse.json deleted file mode 100644 index cee7079f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-muse.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#2e3436","color1":"#a31604","color2":"#447241","color3":"#c1951a","color4":"#425387","color5":"#965d98","color6":"#06989a","color7":"#d3d7cf","color8":"#555753","color9":"#a31604","color10":"#447241","color11":"#c1951a","color12":"#425387","color13":"#965d98","color14":"#06989a","color15":"#d3d7cf","color16":"#555753","color17":"#c60001"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#c60001"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-nancy.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-nancy.json deleted file mode 100644 index a606bd58..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-nancy.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1b1d1e","color1":"#f92672","color2":"#82b414","color3":"#fd971f","color4":"#4e82aa","color5":"#8c54fe","color6":"#465457","color7":"#ccccc6","color8":"#505354","color9":"#f92672","color10":"#82b414","color11":"#fd971f","color12":"#4e82aa","color13":"#8c54fe","color14":"#465457","color15":"#ccccc6","color16":"#505354","color17":"#ff5995"},"special":{"foreground":"#ffffff","background":"#010101","cursor":"#ff5995"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-navy-and-ivory.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-navy-and-ivory.json deleted file mode 100644 index a3745a56..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-navy-and-ivory.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#032c36","color1":"#c2454e","color2":"#7cbf9e","color3":"#8a7a63","color4":"#2e3340","color5":"#ff5879","color6":"#44b5b1","color7":"#f2f1b9","color8":"#065f73","color9":"#c2454e","color10":"#7cbf9e","color11":"#8a7a63","color12":"#2e3340","color13":"#ff5879","color14":"#44b5b1","color15":"#f2f1b9","color16":"#065f73","color17":"#ef5847"},"special":{"foreground":"#e8dfd6","background":"#021b21","cursor":"#ef5847"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-neon.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-neon.json deleted file mode 100644 index 2382d012..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-neon.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#171717","color1":"#d81765","color2":"#97d01a","color3":"#ffa800","color4":"#16b1fb","color5":"#ff2491","color6":"#0fdcb6","color7":"#ebebeb","color8":"#38252c","color9":"#d81765","color10":"#97d01a","color11":"#ffa800","color12":"#16b1fb","color13":"#ff2491","color14":"#0fdcb6","color15":"#ebebeb","color16":"#38252c","color17":"#ff0000"},"special":{"foreground":"#f8f8f8","background":"#171717","cursor":"#ff0000"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-numixdarkest.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-numixdarkest.json deleted file mode 100644 index 800d2683..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-numixdarkest.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#555555","color1":"#9c3528","color2":"#61bc3b","color3":"#f3b43a","color4":"#0d68a8","color5":"#744560","color6":"#288e9c","color7":"#a2a2a2","color8":"#888888","color9":"#9c3528","color10":"#61bc3b","color11":"#f3b43a","color12":"#0d68a8","color13":"#744560","color14":"#288e9c","color15":"#a2a2a2","color16":"#888888","color17":"#d64937"},"special":{"foreground":"#a2a2a2","background":"#282828","cursor":"#d64937"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-orangish.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-orangish.json deleted file mode 100644 index c2e3a20f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-orangish.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#251f1f","color1":"#eb4509","color2":"#94e76b","color3":"#ffac18","color4":"#46aede","color5":"#e32c57","color6":"#d6dbac","color7":"#efefef","color8":"#5e5e5e","color9":"#eb4509","color10":"#94e76b","color11":"#ffac18","color12":"#46aede","color13":"#e32c57","color14":"#d6dbac","color15":"#efefef","color16":"#5e5e5e","color17":"#eb4509"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#eb4509"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-parker_brothers.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-parker_brothers.json deleted file mode 100644 index cb28085a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-parker_brothers.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#322a2c","color1":"#79220e","color2":"#344b1b","color3":"#b45b00","color4":"#434045","color5":"#5c1e25","color6":"#394745","color7":"#ae8842","color8":"#46423b","color9":"#79220e","color10":"#344b1b","color11":"#b45b00","color12":"#434045","color13":"#5c1e25","color14":"#394745","color15":"#ae8842","color16":"#46423b","color17":"#aa261f"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#aa261f"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-phrak1.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-phrak1.json deleted file mode 100644 index 9e18e24c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-phrak1.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#000000","color1":"#a80000","color2":"#00a800","color3":"#a85400","color4":"#0000a8","color5":"#a800a8","color6":"#00a8a8","color7":"#a8a8a8","color8":"#545054","color9":"#a80000","color10":"#00a800","color11":"#a85400","color12":"#0000a8","color13":"#a800a8","color14":"#00a8a8","color15":"#a8a8a8","color16":"#545054","color17":"#f85450"},"special":{"foreground":"#a8a8a8","background":"#000000","cursor":"#f85450"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-pretty-and-pastel.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-pretty-and-pastel.json deleted file mode 100644 index 8b9ea24d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-pretty-and-pastel.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#292929","color1":"#CF6A4C","color2":"#19CB00","color3":"#FAD07A","color4":"#8197BF","color5":"#8787AF","color6":"#668799","color7":"#888888","color8":"#525252","color9":"#CF6A4C","color10":"#19CB00","color11":"#FAD07A","color12":"#8197BF","color13":"#8787AF","color14":"#668799","color15":"#888888","color16":"#525252","color17":"#FF9D80"},"special":{"foreground":"#888888","background":"#151515","cursor":"#FF9D80"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rasi.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rasi.json deleted file mode 100644 index 8e19308f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rasi.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1b1d1e","color1":"#f92672","color2":"#82b414","color3":"#fd971f","color4":"#4e82aa","color5":"#8c54fe","color6":"#465457","color7":"#ccccc6","color8":"#505354","color9":"#f92672","color10":"#82b414","color11":"#fd971f","color12":"#4e82aa","color13":"#8c54fe","color14":"#465457","color15":"#ccccc6","color16":"#505354","color17":"#ff5995"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ff5995"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rezza.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rezza.json deleted file mode 100644 index 611f2992..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rezza.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#191919","color1":"#803232","color2":"#5b762f","color3":"#aa9943","color4":"#324c80","color5":"#706c9a","color6":"#92b19e","color7":"#ffffff","color8":"#252525","color9":"#803232","color10":"#5b762f","color11":"#aa9943","color12":"#324c80","color13":"#706c9a","color14":"#92b19e","color15":"#ffffff","color16":"#252525","color17":"#982b2b"},"special":{"foreground":"#dddddd","background":"#222222","cursor":"#982b2b"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rydgel.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rydgel.json deleted file mode 100644 index 2bf32cf6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-rydgel.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#303430","color1":"#bf7979","color2":"#97b26b","color3":"#cdcdc1","color4":"#86a2be","color5":"#d9b798","color6":"#a1b5cd","color7":"#ffffff","color8":"#cdb5cd","color9":"#bf7979","color10":"#97b26b","color11":"#cdcdc1","color12":"#86a2be","color13":"#d9b798","color14":"#a1b5cd","color15":"#ffffff","color16":"#cdb5cd","color17":"#f4a45f"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#f4a45f"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-s3r0-modified.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-s3r0-modified.json deleted file mode 100644 index fdddb391..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-s3r0-modified.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#4A3637","color1":"#D17B49","color2":"#7B8748","color3":"#AF865A","color4":"#535C5C","color5":"#775759","color6":"#6D715E","color7":"#C0B18B","color8":"#785f60","color9":"#D17B49","color10":"#7B8748","color11":"#AF865A","color12":"#535C5C","color13":"#775759","color14":"#6D715E","color15":"#C0B18B","color16":"#4A3637","color17":"#D17B49"},"special":{"foreground":"#C0B18B","background":"#1F1F1F","cursor":"#D17B49"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sexcolors.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sexcolors.json deleted file mode 100644 index ac3b0f88..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sexcolors.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#252525","color1":"#ff9f95","color2":"#a6e22e","color3":"#fd971f","color4":"#435e87","color5":"#789ec6","color6":"#5e7175","color7":"#dbdcdc","color8":"#454545","color9":"#ff9f95","color10":"#a6e22e","color11":"#fd971f","color12":"#435e87","color13":"#789ec6","color14":"#5e7175","color15":"#dbdcdc","color16":"#454545","color17":"#ff8d80"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ff8d80"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-simple_rainbow.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-simple_rainbow.json deleted file mode 100644 index 401ff41c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-simple_rainbow.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#666666","color1":"#ff8278","color2":"#bde077","color3":"#eadc84","color4":"#77bee0","color5":"#dd91f3","color6":"#ffc178","color7":"#dddddd","color8":"#888888","color9":"#ff8278","color10":"#bde077","color11":"#eadc84","color12":"#77bee0","color13":"#dd91f3","color14":"#ffc178","color15":"#dddddd","color16":"#888888","color17":"#ff8278"},"special":{"foreground":"#dcdccc","background":"#575757","cursor":"#ff8278"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-splurge.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-splurge.json deleted file mode 100644 index 5d62989c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-splurge.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#4a4b4a","color1":"#d7699a","color2":"#80d468","color3":"#d7a169","color4":"#6985d7","color5":"#c86ad4","color6":"#6fccd1","color7":"#dbdcdc","color8":"#696969","color9":"#d7699a","color10":"#80d468","color11":"#d7a169","color12":"#6985d7","color13":"#c86ad4","color14":"#6fccd1","color15":"#dbdcdc","color16":"#696969","color17":"#f5a2b5"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#f5a2b5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-swayr.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-swayr.json deleted file mode 100644 index a31680d7..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-swayr.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1c1709","color1":"#8e4317","color2":"#787200","color3":"#945c00","color4":"#315094","color5":"#5c2e40","color6":"#00617d","color7":"#c2b9a1","color8":"#4f4939","color9":"#8e4317","color10":"#787200","color11":"#945c00","color12":"#315094","color13":"#5c2e40","color14":"#00617d","color15":"#c2b9a1","color16":"#4f4939","color17":"#f07935"},"special":{"foreground":"#c2b9a1","background":"#1c1709","cursor":"#f07935"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sweetlove.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sweetlove.json deleted file mode 100644 index 46632a64..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-sweetlove.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#4A3637","color1":"#D17B49","color2":"#7B8748","color3":"#AF865A","color4":"#535C5C","color5":"#775759","color6":"#6D715E","color7":"#C0B18B","color8":"#7e5c5e","color9":"#D17B49","color10":"#7B8748","color11":"#AF865A","color12":"#535C5C","color13":"#775759","color14":"#6D715E","color15":"#C0B18B","color16":"#402E2E","color17":"#AC5D2F"},"special":{"foreground":"#C0B18B","background":"#1F1F1F","cursor":"#AC5D2F"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tango.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tango.json deleted file mode 100644 index 149ae771..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tango.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#2e3436","color1":"#cc0000","color2":"#4e9a06","color3":"#c4a000","color4":"#3465a4","color5":"#75507b","color6":"#06989a","color7":"#d3d7cf","color8":"#555753","color9":"#cc0000","color10":"#4e9a06","color11":"#c4a000","color12":"#3465a4","color13":"#75507b","color14":"#06989a","color15":"#d3d7cf","color16":"#555753","color17":"#ef2929"},"special":{"foreground":"#babdb6","background":"#000000","cursor":"#ef2929"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tangoesque.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tangoesque.json deleted file mode 100644 index 9657f1fb..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tangoesque.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#202020","color1":"#ff6565","color2":"#93d44f","color3":"#eab93d","color4":"#204a87","color5":"#ce5c00","color6":"#89b6e2","color7":"#cccccc","color8":"#606060","color9":"#ff6565","color10":"#93d44f","color11":"#eab93d","color12":"#204a87","color13":"#ce5c00","color14":"#89b6e2","color15":"#cccccc","color16":"#606060","color17":"#ff8d8d"},"special":{"foreground":"#aaaaaa","background":"#000000","cursor":"#ff8d8d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tartan.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tartan.json deleted file mode 100644 index 473bcaee..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tartan.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#2e3436","color1":"#cc0000","color2":"#4e9a06","color3":"#c4a000","color4":"#3465a4","color5":"#75507b","color6":"#06989a","color7":"#d3d7cf","color8":"#555753","color9":"#cc0000","color10":"#4e9a06","color11":"#c4a000","color12":"#3465a4","color13":"#75507b","color14":"#06989a","color15":"#d3d7cf","color16":"#555753","color17":"#ef2929"},"special":{"foreground":"#dedede","background":"#2b2b2b","cursor":"#ef2929"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-theme2.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-theme2.json deleted file mode 100644 index 73c70fb1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-theme2.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#191919","color1":"#eb3d51","color2":"#66b61a","color3":"#d98e1d","color4":"#23ffa8","color5":"#ff00da","color6":"#68a783","color7":"#eaeaea","color8":"#484848","color9":"#eb3d51","color10":"#66b61a","color11":"#d98e1d","color12":"#23ffa8","color13":"#ff00da","color14":"#68a783","color15":"#eaeaea","color16":"#484848","color17":"#be6262"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#be6262"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-thwump.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-thwump.json deleted file mode 100644 index 2bba6a53..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-thwump.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#202020","color1":"#a07070","color2":"#70a070","color3":"#a0a070","color4":"#7070a0","color5":"#a070a0","color6":"#70a0a0","color7":"#a0a0a0","color8":"#505050","color9":"#a07070","color10":"#70a070","color11":"#a0a070","color12":"#7070a0","color13":"#a070a0","color14":"#70a0a0","color15":"#a0a0a0","color16":"#505050","color17":"#d07070"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#d07070"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tlh.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tlh.json deleted file mode 100644 index c1154286..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-tlh.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1c1c1c","color1":"#d81860","color2":"#60ff60","color3":"#f9fd75","color4":"#4695c8","color5":"#a78edb","color6":"#43afce","color7":"#f3ebe2","color8":"#4d4d4d","color9":"#d81860","color10":"#60ff60","color11":"#f9fd75","color12":"#4695c8","color13":"#a78edb","color14":"#43afce","color15":"#f3ebe2","color16":"#4d4d4d","color17":"#f00060"},"special":{"foreground":"#66ff66","background":"#101010","cursor":"#f00060"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-trim-yer-beard.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-trim-yer-beard.json deleted file mode 100644 index 54206826..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-trim-yer-beard.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#0F0E0D","color1":"#845336","color2":"#57553C","color3":"#A17E3E","color4":"#43454F","color5":"#604848","color6":"#5C6652","color7":"#A18B62","color8":"#383332","color9":"#845336","color10":"#57553C","color11":"#A17E3E","color12":"#43454F","color13":"#604848","color14":"#5C6652","color15":"#A18B62","color16":"#383332","color17":"#8C4F4A"},"special":{"foreground":"#DABA8B","background":"#191716","cursor":"#8C4F4A"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-user-77-mashup-colors.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-user-77-mashup-colors.json deleted file mode 100644 index 5fa72654..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-user-77-mashup-colors.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#202020","color1":"#bf3f34","color2":"#707d22","color3":"#bf7a29","color4":"#627a92","color5":"#75507b","color6":"#757978","color7":"#b2a191","color8":"#404040","color9":"#bf3f34","color10":"#707d22","color11":"#bf7a29","color12":"#627a92","color13":"#75507b","color14":"#757978","color15":"#b2a191","color16":"#404040","color17":"#ff6c5f"},"special":{"foreground":"#b2a191","background":"#171717","cursor":"#ff6c5f"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-vacuous2.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-vacuous2.json deleted file mode 100644 index d249a034..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-vacuous2.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#202020","color1":"#b91e2e","color2":"#81957c","color3":"#f9bb80","color4":"#356579","color5":"#2d2031","color6":"#0b3452","color7":"#909090","color8":"#606060","color9":"#b91e2e","color10":"#81957c","color11":"#f9bb80","color12":"#356579","color13":"#2d2031","color14":"#0b3452","color15":"#909090","color16":"#606060","color17":"#d14548"},"special":{"foreground":"#d2c5bc","background":"#101010","cursor":"#d14548"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone-alt-2.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone-alt-2.json deleted file mode 100644 index 5656da50..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone-alt-2.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#666666","color1":"#CC6699","color2":"#99CC66","color3":"#CC9966","color4":"#6699CC","color5":"#9966CC","color6":"#66CC99","color7":"#CCCCCC","color8":"#999999","color9":"#CC6699","color10":"#99CC66","color11":"#CC9966","color12":"#6699CC","color13":"#9966CC","color14":"#66CC99","color15":"#CCCCCC","color16":"#999999","color17":"#FF99CC"},"special":{"foreground":"#CCCCCC","background":"#333333","cursor":"#FF99CC"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone.json deleted file mode 100644 index 67fb535d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-visibone.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#666666","color1":"#cc6666","color2":"#66cc99","color3":"#cc9966","color4":"#6699cc","color5":"#cc6699","color6":"#66cccc","color7":"#cccccc","color8":"#999999","color9":"#cc6666","color10":"#66cc99","color11":"#cc9966","color12":"#6699cc","color13":"#cc6699","color14":"#66cccc","color15":"#cccccc","color16":"#999999","color17":"#ff9999"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#ff9999"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-x-dotshare.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-x-dotshare.json deleted file mode 100644 index 4a390e4d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-x-dotshare.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#101010","color1":"#E84F4F","color2":"#B8D68C","color3":"#E1AA5D","color4":"#7DC1CF","color5":"#9B64FB","color6":"#6D878D","color7":"#DDDDDD","color8":"#404040","color9":"#E84F4F","color10":"#B8D68C","color11":"#E1AA5D","color12":"#7DC1CF","color13":"#9B64FB","color14":"#6D878D","color15":"#DDDDDD","color16":"#404040","color17":"#D23D3D"},"special":{"foreground":"#D7D0C7","background":"#151515","cursor":"#D23D3D"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-zenburn.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-zenburn.json deleted file mode 100644 index 70e80717..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/sexy-zenburn.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#1e2320","color1":"#705050","color2":"#60b48a","color3":"#dfaf8f","color4":"#506070","color5":"#dc8cc3","color6":"#8cd0d3","color7":"#dcdccc","color8":"#709080","color9":"#705050","color10":"#60b48a","color11":"#dfaf8f","color12":"#506070","color13":"#dc8cc3","color14":"#8cd0d3","color15":"#dcdccc","color16":"#709080","color17":"#dca3a3"},"special":{"foreground":"#ffffff","background":"#000000","cursor":"#dca3a3"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/solarized.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/solarized.json deleted file mode 100644 index a97c89d7..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/solarized.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#073642","foreground":"#fdf6e3","cursor":"#dc322f"},"colors":{"color0":"#073642","color1":"#dc322f","color2":"#859900","color3":"#b58900","color4":"#268bd2","color5":"#d33682","color6":"#2aa198","color7":"#eee8d5","color8":"#6c7c80","color9":"#dc322f","color10":"#859900","color11":"#b58900","color12":"#268bd2","color13":"#d33682","color14":"#2aa198","color15":"#eee8d5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_autumn.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_autumn.json deleted file mode 100644 index dee35d05..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_autumn.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#322622","foreground":"#8e8f8d","cursor":"#8e8f8d"},"colors":{"color0":"#322622","color1":"#fc5526","color2":"#83973f","color3":"#9e9022","color4":"#7f8dbf","color5":"#ce7673","color6":"#6e978b","color7":"#8e8f8d","color8":"#919078","color9":"#dc721a","color10":"#609d59","color11":"#b1891a","color12":"#6b8ed6","color13":"#9d80d3","color14":"#229ea0","color15":"#8e8f8d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_dusk.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_dusk.json deleted file mode 100644 index c9a8e027..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_dusk.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1f252d","foreground":"#a2a8ba","cursor":"#a2a8ba"},"colors":{"color0":"#1f252d","color1":"#cb8d56","color2":"#8ba089","color3":"#a79c46","color4":"#8c9abe","color5":"#b190af","color6":"#8e9aba","color7":"#a2a8ba","color8":"#a29899","color9":"#d39d74","color10":"#80b48f","color11":"#bda75a","color12":"#9ca5de","color13":"#c69ac6","color14":"#8caeb6","color15":"#a2a8ba"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_future.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_future.json deleted file mode 100644 index 383e304e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_future.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#18161d","foreground":"#a4a0ac","cursor":"#a4a0ac"},"colors":{"color0":"#18161d","color1":"#ff7780","color2":"#68b183","color3":"#bda014","color4":"#54a5ff","color5":"#da89b2","color6":"#79a8c3","color7":"#a4a0ac","color8":"#bd9b87","color9":"#ef873d","color10":"#08b885","color11":"#d39710","color12":"#a294fe","color13":"#ec7aca","color14":"#4ab0b9","color15":"#a4a0ac"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_rift.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_rift.json deleted file mode 100644 index 61860bae..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_rift.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#2b353c","foreground":"#abacac","cursor":"#abacac"},"colors":{"color0":"#2b353c","color1":"#be9604","color2":"#0eb40e","color3":"#79aa00","color4":"#00acb3","color5":"#ba964c","color6":"#5fa98f","color7":"#abacac","color8":"#ab9699","color9":"#bdae13","color10":"#3ac53a","color11":"#9ab800","color12":"#20bdce","color13":"#cca57a","color14":"#6fb9ae","color15":"#abacac"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_spring.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_spring.json deleted file mode 100644 index 4ae79bfd..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_spring.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#34403c","foreground":"#a5a8a7","cursor":"#a5a8a7"},"colors":{"color0":"#34403c","color1":"#ff855a","color2":"#6ab78a","color3":"#b6aa1a","color4":"#5daeee","color5":"#d495b4","color6":"#6eb2bc","color7":"#a5a8a7","color8":"#96aca7","color9":"#df993a","color10":"#4abb88","color11":"#99b22a","color12":"#3caffe","color13":"#d091db","color14":"#4ab4d3","color15":"#a5a8a7"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_summer.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_summer.json deleted file mode 100644 index 5015ff6a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_summer.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#293345","foreground":"#9b999e","cursor":"#9b999e"},"colors":{"color0":"#293345","color1":"#fe6d32","color2":"#6ba86d","color3":"#af9a0a","color4":"#679ed7","color5":"#bc8ab6","color6":"#6ea590","color7":"#9b999e","color8":"#a39799","color9":"#df8251","color10":"#7aa747","color11":"#ba953a","color12":"#3ba1e8","color13":"#c97ed7","color14":"#52a6b1","color15":"#9b999e"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_warp.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_warp.json deleted file mode 100644 index a219aa92..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_warp.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#141a19","foreground":"#928f90","cursor":"#928f90"},"colors":{"color0":"#141a19","color1":"#ff1414","color2":"#009600","color3":"#928100","color4":"#4f76ff","color5":"#dd38bc","color6":"#358aaa","color7":"#928f90","color8":"#927b80","color9":"#ff5500","color10":"#3aa43a","color11":"#b38a00","color12":"#8082ff","color13":"#d159fd","color14":"#1da190","color15":"#928f90"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_winter.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_winter.json deleted file mode 100644 index 472fb3d0..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/tempus_winter.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#202427","foreground":"#798ba5","cursor":"#798ba5"},"colors":{"color0":"#202427","color1":"#ca7162","color2":"#589584","color3":"#988b21","color4":"#2b92c8","color5":"#b572b6","color6":"#4f91b5","color7":"#798ba5","color8":"#888a8a","color9":"#c47818","color10":"#2c9a81","color11":"#a2864b","color12":"#6987d7","color13":"#987dc2","color14":"#1f96b0","color15":"#798ba5"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/vscode.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/vscode.json deleted file mode 100644 index 9830e4da..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/vscode.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#1e1e1e","foreground":"#d4d4d4","cursor":"#f44747"},"colors":{"color0":"#1e1e1e","color1":"#f44747","color2":"#d7ba7d","color3":"#608b4e","color4":"#569cd6","color5":"#4ec9b0","color6":"#c586c0","color7":"#d4d4d4","color8":"#808080","color9":"#f44747","color10":"#d7ba7d","color11":"#608b4e","color12":"#569cd6","color13":"#4ec9b0","color14":"#c586c0","color15":"#d4d4d4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/zenburn.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/zenburn.json deleted file mode 100644 index 79a28422..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/dark/zenburn.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#3f3f3f","foreground":"#dcdccc","cursor":"#cc9393"},"colors":{"color0":"#3f3f3f","color1":"#cc9393","color2":"#7f9f7f","color3":"#d0bf8f","color4":"#6ca0a3","color5":"#dc8cc3","color6":"#93e0e3","color7":"#dcdccc","color8":"#828282","color9":"#cc9393","color10":"#7f9f7f","color11":"#d0bf8f","color12":"#6ca0a3","color13":"#dc8cc3","color14":"#93e0e3","color15":"#dcdccc"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/3024.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/3024.json deleted file mode 100644 index e4859f35..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/3024.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f7f7f7","foreground":"#090300","cursor":"#db2d20"},"colors":{"color0":"#f7f7f7","color1":"#db2d20","color2":"#01a252","color3":"#fded02","color4":"#01a0e4","color5":"#a16a94","color6":"#b5e4f4","color7":"#090300","color8":"#5c5855","color9":"#db2d20","color10":"#01a252","color11":"#fded02","color12":"#01a0e4","color13":"#a16a94","color14":"#b5e4f4","color15":"#090300"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/ashes.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/ashes.json deleted file mode 100644 index 2ffd2367..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/ashes.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f3f4f5","foreground":"#565e65","cursor":"#c7ae95"},"colors":{"color0":"#f3f4f5","color1":"#c7ae95","color2":"#95c7ae","color3":"#aec795","color4":"#ae95c7","color5":"#c795ae","color6":"#95aec7","color7":"#1c2023","color8":"#747c84","color9":"#c7ae95","color10":"#95c7ae","color11":"#aec795","color12":"#ae95c7","color13":"#c795ae","color14":"#95aec7","color15":"#1c2023"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-cave.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-cave.json deleted file mode 100644 index ce0866d2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-cave.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#efecf4","foreground":"#585260","cursor":"#585260"},"colors":{"color0":"#efecf4","color1":"#be4678","color2":"#2a9292","color3":"#a06e3b","color4":"#576ddb","color5":"#955ae7","color6":"#398bc6","color7":"#585260","color8":"#7e7887","color9":"#be4678","color10":"#2a9292","color11":"#a06e3b","color12":"#576ddb","color13":"#955ae7","color14":"#398bc6","color15":"#19171c"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-dune.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-dune.json deleted file mode 100644 index 2da310e5..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-dune.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#fefbec","foreground":"#6e6b5e","cursor":"#6e6b5e"},"colors":{"color0":"#fefbec","color1":"#d73737","color2":"#60ac39","color3":"#ae9513","color4":"#6684e1","color5":"#b854d4","color6":"#1fad83","color7":"#6e6b5e","color8":"#999580","color9":"#d73737","color10":"#60ac39","color11":"#ae9513","color12":"#6684e1","color13":"#b854d4","color14":"#1fad83","color15":"#20201d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-estuary.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-estuary.json deleted file mode 100644 index 226eabda..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-estuary.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f4f3ec","foreground":"#5f5e4e","cursor":"#5f5e4e"},"colors":{"color0":"#f4f3ec","color1":"#ba6236","color2":"#7d9726","color3":"#a5980d","color4":"#36a166","color5":"#5f9182","color6":"#5b9d48","color7":"#5f5e4e","color8":"#878573","color9":"#ba6236","color10":"#7d9726","color11":"#a5980d","color12":"#36a166","color13":"#5f9182","color14":"#5b9d48","color15":"#22221b"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-forest.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-forest.json deleted file mode 100644 index a75e80e2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-forest.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f1efee","foreground":"#68615e","cursor":"#68615e"},"colors":{"color0":"#f1efee","color1":"#f22c40","color2":"#7b9726","color3":"#c38418","color4":"#407ee7","color5":"#6666ea","color6":"#3d97b8","color7":"#68615e","color8":"#9c9491","color9":"#f22c40","color10":"#7b9726","color11":"#c38418","color12":"#407ee7","color13":"#6666ea","color14":"#3d97b8","color15":"#1b1918"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-heath.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-heath.json deleted file mode 100644 index e48065b3..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-heath.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f7f3f7","foreground":"#695d69","cursor":"#695d69"},"colors":{"color0":"#f7f3f7","color1":"#ca402b","color2":"#918b3b","color3":"#bb8a35","color4":"#516aec","color5":"#7b59c0","color6":"#159393","color7":"#695d69","color8":"#9e8f9e","color9":"#ca402b","color10":"#918b3b","color11":"#bb8a35","color12":"#516aec","color13":"#7b59c0","color14":"#159393","color15":"#1b181b"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-lakeside.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-lakeside.json deleted file mode 100644 index 41d08a18..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-lakeside.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ebf8ff","foreground":"#516d7b","cursor":"#516d7b"},"colors":{"color0":"#ebf8ff","color1":"#d22d72","color2":"#568c3b","color3":"#8a8a0f","color4":"#257fad","color5":"#6b6bb8","color6":"#2d8f6f","color7":"#516d7b","color8":"#7195a8","color9":"#d22d72","color10":"#568c3b","color11":"#8a8a0f","color12":"#257fad","color13":"#6b6bb8","color14":"#2d8f6f","color15":"#161b1d"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-plateau.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-plateau.json deleted file mode 100644 index a6f72a04..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-plateau.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f4ecec","foreground":"#585050","cursor":"#585050"},"colors":{"color0":"#f4ecec","color1":"#ca4949","color2":"#4b8b8b","color3":"#a06e3b","color4":"#7272ca","color5":"#8464c4","color6":"#5485b6","color7":"#585050","color8":"#7e7777","color9":"#ca4949","color10":"#4b8b8b","color11":"#a06e3b","color12":"#7272ca","color13":"#8464c4","color14":"#5485b6","color15":"#1b1818"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-savanna.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-savanna.json deleted file mode 100644 index edfffd5a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-savanna.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ecf4ee","foreground":"#526057","cursor":"#526057"},"colors":{"color0":"#ecf4ee","color1":"#b16139","color2":"#489963","color3":"#a07e3b","color4":"#478c90","color5":"#55859b","color6":"#1c9aa0","color7":"#526057","color8":"#78877d","color9":"#b16139","color10":"#489963","color11":"#a07e3b","color12":"#478c90","color13":"#55859b","color14":"#1c9aa0","color15":"#171c19"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-seaside.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-seaside.json deleted file mode 100644 index 5b584fdc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-seaside.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f4fbf4","foreground":"#5e6e5e","cursor":"#5e6e5e"},"colors":{"color0":"#f4fbf4","color1":"#e6193c","color2":"#29a329","color3":"#98981b","color4":"#3d62f5","color5":"#ad2bee","color6":"#1999b3","color7":"#5e6e5e","color8":"#809980","color9":"#e6193c","color10":"#29a329","color11":"#98981b","color12":"#3d62f5","color13":"#ad2bee","color14":"#1999b3","color15":"#131513"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-sulphurpool.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-sulphurpool.json deleted file mode 100644 index ac7a0ed9..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-atelier-sulphurpool.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f5f7ff","foreground":"#5e6687","cursor":"#5e6687"},"colors":{"color0":"#f5f7ff","color1":"#c94922","color2":"#ac9739","color3":"#c08b30","color4":"#3d8fd1","color5":"#6679cc","color6":"#22a2c9","color7":"#5e6687","color8":"#898ea4","color9":"#c94922","color10":"#ac9739","color11":"#c08b30","color12":"#3d8fd1","color13":"#6679cc","color14":"#22a2c9","color15":"#202746"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-classic.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-classic.json deleted file mode 100644 index ee1e6f50..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-classic.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#F5F5F5","foreground":"#303030","cursor":"#303030"},"colors":{"color0":"#F5F5F5","color1":"#AC4142","color2":"#90A959","color3":"#F4BF75","color4":"#6A9FB5","color5":"#AA759F","color6":"#75B5AA","color7":"#303030","color8":"#B0B0B0","color9":"#AC4142","color10":"#90A959","color11":"#F4BF75","color12":"#6A9FB5","color13":"#AA759F","color14":"#75B5AA","color15":"#151515"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupcake.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupcake.json deleted file mode 100644 index 357f8d3a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupcake.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#fbf1f2","foreground":"#8b8198","cursor":"#8b8198"},"colors":{"color0":"#fbf1f2","color1":"#D57E85","color2":"#A3B367","color3":"#DCB16C","color4":"#7297B9","color5":"#BB99B4","color6":"#69A9A7","color7":"#8b8198","color8":"#bfb9c6","color9":"#D57E85","color10":"#A3B367","color11":"#DCB16C","color12":"#7297B9","color13":"#BB99B4","color14":"#69A9A7","color15":"#585062"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupertino.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupertino.json deleted file mode 100644 index b6a0cfc7..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-cupertino.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ffffff","foreground":"#404040","cursor":"#404040"},"colors":{"color0":"#ffffff","color1":"#c41a15","color2":"#007400","color3":"#826b28","color4":"#0000ff","color5":"#a90d91","color6":"#318495","color7":"#404040","color8":"#808080","color9":"#c41a15","color10":"#007400","color11":"#826b28","color12":"#0000ff","color13":"#a90d91","color14":"#318495","color15":"#5e5e5e"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-default.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-default.json deleted file mode 100644 index 5effc00c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-default.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f8f8f8","foreground":"#383838","cursor":"#383838"},"colors":{"color0":"#f8f8f8","color1":"#ab4642","color2":"#a1b56c","color3":"#f7ca88","color4":"#7cafc2","color5":"#ba8baf","color6":"#86c1b9","color7":"#383838","color8":"#b8b8b8","color9":"#ab4642","color10":"#a1b56c","color11":"#f7ca88","color12":"#7cafc2","color13":"#ba8baf","color14":"#86c1b9","color15":"#181818"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-github.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-github.json deleted file mode 100644 index cdab6779..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-github.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ffffff","foreground":"#333333","cursor":"#333333"},"colors":{"color0":"#ffffff","color1":"#ed6a43","color2":"#183691","color3":"#795da3","color4":"#795da3","color5":"#a71d5d","color6":"#183691","color7":"#333333","color8":"#969896","color9":"#ed6a43","color10":"#183691","color11":"#795da3","color12":"#795da3","color13":"#a71d5d","color14":"#183691","color15":"#333333"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-google.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-google.json deleted file mode 100644 index d697d9fc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-google.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ffffff","foreground":"#373b41","cursor":"#373b41"},"colors":{"color0":"#ffffff","color1":"#CC342B","color2":"#198844","color3":"#FBA922","color4":"#3971ED","color5":"#A36AC7","color6":"#3971ED","color7":"#373b41","color8":"#b4b7b4","color9":"#CC342B","color10":"#198844","color11":"#FBA922","color12":"#3971ED","color13":"#A36AC7","color14":"#3971ED","color15":"#1d1f21"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-grayscale.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-grayscale.json deleted file mode 100644 index 0f2a24e6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-grayscale.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f7f7f7","foreground":"#464646","cursor":"#464646"},"colors":{"color0":"#f7f7f7","color1":"#7c7c7c","color2":"#8e8e8e","color3":"#a0a0a0","color4":"#686868","color5":"#747474","color6":"#868686","color7":"#464646","color8":"#ababab","color9":"#7c7c7c","color10":"#8e8e8e","color11":"#a0a0a0","color12":"#686868","color13":"#747474","color14":"#868686","color15":"#101010"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-hard.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-hard.json deleted file mode 100644 index cc0930d2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-hard.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f9f5d7","foreground":"#504945","cursor":"#504945"},"colors":{"color0":"#f9f5d7","color1":"#9d0006","color2":"#79740e","color3":"#b57614","color4":"#076678","color5":"#8f3f71","color6":"#427b58","color7":"#504945","color8":"#bdae93","color9":"#9d0006","color10":"#79740e","color11":"#b57614","color12":"#076678","color13":"#8f3f71","color14":"#427b58","color15":"#282828"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-medium.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-medium.json deleted file mode 100644 index 168f02bf..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-medium.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#fbf1c7","foreground":"#504945","cursor":"#504945"},"colors":{"color0":"#fbf1c7","color1":"#9d0006","color2":"#79740e","color3":"#b57614","color4":"#076678","color5":"#8f3f71","color6":"#427b58","color7":"#504945","color8":"#bdae93","color9":"#9d0006","color10":"#79740e","color11":"#b57614","color12":"#076678","color13":"#8f3f71","color14":"#427b58","color15":"#282828"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-soft.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-soft.json deleted file mode 100644 index 386c0bc8..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-gruvbox-soft.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f2e5bc","foreground":"#504945","cursor":"#504945"},"colors":{"color0":"#f2e5bc","color1":"#9d0006","color2":"#79740e","color3":"#b57614","color4":"#076678","color5":"#8f3f71","color6":"#427b58","color7":"#504945","color8":"#bdae93","color9":"#9d0006","color10":"#79740e","color11":"#b57614","color12":"#076678","color13":"#8f3f71","color14":"#427b58","color15":"#282828"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-harmonic.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-harmonic.json deleted file mode 100644 index 80660d46..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-harmonic.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f7f9fb","foreground":"#405c79","cursor":"#405c79"},"colors":{"color0":"#f7f9fb","color1":"#bf8b56","color2":"#56bf8b","color3":"#8bbf56","color4":"#8b56bf","color5":"#bf568b","color6":"#568bbf","color7":"#405c79","color8":"#aabcce","color9":"#bf8b56","color10":"#56bf8b","color11":"#8bbf56","color12":"#8b56bf","color13":"#bf568b","color14":"#568bbf","color15":"#0b1c2c"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-materialer.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-materialer.json deleted file mode 100644 index a1ce29f3..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-materialer.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#FAFAFA","foreground":"#80CBC4","cursor":"#80CBC4"},"colors":{"color0":"#FAFAFA","color1":"#FF5370","color2":"#91B859","color3":"#FFB62C","color4":"#6182B8","color5":"#7C4DFF","color6":"#39ADB5","color7":"#80CBC4","color8":"#CCD7DA","color9":"#FF5370","color10":"#91B859","color11":"#FFB62C","color12":"#6182B8","color13":"#7C4DFF","color14":"#39ADB5","color15":"#80CBC4"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-mexico.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-mexico.json deleted file mode 100644 index 663c7343..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-mexico.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f8f8f8","foreground":"#383838","cursor":"#383838"},"colors":{"color0":"#f8f8f8","color1":"#ab4642","color2":"#538947","color3":"#f79a0e","color4":"#7cafc2","color5":"#96609e","color6":"#4b8093","color7":"#383838","color8":"#b8b8b8","color9":"#ab4642","color10":"#538947","color11":"#f79a0e","color12":"#7cafc2","color13":"#96609e","color14":"#4b8093","color15":"#181818"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-one.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-one.json deleted file mode 100644 index 3b6690d6..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-one.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#fafafa","foreground":"#383a42","cursor":"#383a42"},"colors":{"color0":"#fafafa","color1":"#ca1243","color2":"#50a14f","color3":"#c18401","color4":"#4078f2","color5":"#a626a4","color6":"#0184bc","color7":"#383a42","color8":"#a0a1a7","color9":"#ca1243","color10":"#50a14f","color11":"#c18401","color12":"#4078f2","color13":"#a626a4","color14":"#0184bc","color15":"#090a0b"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-shapeshifter.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-shapeshifter.json deleted file mode 100644 index 72932687..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-shapeshifter.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f9f9f9","foreground":"#102015","cursor":"#102015"},"colors":{"color0":"#f9f9f9","color1":"#e92f2f","color2":"#0ed839","color3":"#dddd13","color4":"#3b48e3","color5":"#f996e2","color6":"#23edda","color7":"#102015","color8":"#555555","color9":"#e92f2f","color10":"#0ed839","color11":"#dddd13","color12":"#3b48e3","color13":"#f996e2","color14":"#23edda","color15":"#000000"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-solarized.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-solarized.json deleted file mode 100644 index c56326d2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-solarized.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#fdf6e3","foreground":"#586e75","cursor":"#586e75"},"colors":{"color0":"#fdf6e3","color1":"#dc322f","color2":"#859900","color3":"#b58900","color4":"#268bd2","color5":"#6c71c4","color6":"#2aa198","color7":"#586e75","color8":"#839496","color9":"#dc322f","color10":"#859900","color11":"#b58900","color12":"#268bd2","color13":"#6c71c4","color14":"#2aa198","color15":"#002b36"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-summerfruit.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-summerfruit.json deleted file mode 100644 index 5aceb865..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-summerfruit.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#FFFFFF","foreground":"#101010","cursor":"#101010"},"colors":{"color0":"#FFFFFF","color1":"#FF0086","color2":"#00C918","color3":"#ABA800","color4":"#3777E6","color5":"#AD00A1","color6":"#1FAAAA","color7":"#101010","color8":"#B0B0B0","color9":"#FF0086","color10":"#00C918","color11":"#ABA800","color12":"#3777E6","color13":"#AD00A1","color14":"#1FAAAA","color15":"#202020"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-tomorrow.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-tomorrow.json deleted file mode 100644 index 6b3dc1db..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-tomorrow.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ffffff","foreground":"#4d4d4c","cursor":"#4d4d4c"},"colors":{"color0":"#ffffff","color1":"#c82829","color2":"#718c00","color3":"#eab700","color4":"#4271ae","color5":"#8959a8","color6":"#3e999f","color7":"#4d4d4c","color8":"#8e908c","color9":"#c82829","color10":"#718c00","color11":"#eab700","color12":"#4271ae","color13":"#8959a8","color14":"#3e999f","color15":"#1d1f21"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-unikitty.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-unikitty.json deleted file mode 100644 index 1f8e1065..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/base16-unikitty.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#ffffff","foreground":"#6c696e","cursor":"#6c696e"},"colors":{"color0":"#ffffff","color1":"#d8137f","color2":"#17ad98","color3":"#dc8a0e","color4":"#775dff","color5":"#aa17e6","color6":"#149bda","color7":"#6c696e","color8":"#a7a5a8","color9":"#d8137f","color10":"#17ad98","color11":"#dc8a0e","color12":"#775dff","color13":"#aa17e6","color14":"#149bda","color15":"#322d34"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/github.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/github.json deleted file mode 100644 index da7278ce..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/github.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f4f4f4","foreground":"#3e3e3e","cursor":"#970b16"},"colors":{"color0":"#ffffff","color1":"#970b16","color2":"#07962a","color3":"#f8eec7","color4":"#003e8a","color5":"#e94691","color6":"#89d1ec","color7":"#3e3e3e","color8":"#666666","color9":"#970b16","color10":"#07962a","color11":"#f8eec7","color12":"#003e8a","color13":"#e94691","color14":"#89d1ec","color15":"#3e3e3e"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/sexy-mostly-bright.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/sexy-mostly-bright.json deleted file mode 100644 index 2d6f8acc..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/sexy-mostly-bright.json +++ /dev/null @@ -1 +0,0 @@ -{"colors":{"color0":"#D3D3D3","color1":"#EF6B7B","color2":"#A1D569","color3":"#F59335","color4":"#4EC2E8","color5":"#FEC7CD","color6":"#95C1C0","color7":"#707070","color8":"#B3B3B3","color9":"#EF6B7B","color10":"#A1D569","color11":"#F59335","color12":"#4EC2E8","color13":"#FEC7CD","color14":"#95C1C0","color15":"#707070","color16":"#B3B3B3","color17":"#ED5466"},"special":{"foreground":"#707070","background":"#F3F3F3","cursor":"#ED5466"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/solarized.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/solarized.json deleted file mode 100644 index 53186fe0..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/solarized.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#eee8d5","foreground":"#002b36","cursor":"#dc322f"},"colors":{"color0":"#eee8d5","color1":"#dc322f","color2":"#859900","color3":"#b58900","color4":"#268bd2","color5":"#d33682","color6":"#2aa198","color7":"#073642","color8":"#6c7c80","color9":"#dc322f","color10":"#859900","color11":"#b58900","color12":"#268bd2","color13":"#d33682","color14":"#2aa198","color15":"#073642"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_dawn.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_dawn.json deleted file mode 100644 index babb8101..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_dawn.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f3f1f5","foreground":"#53575a","cursor":"#53575a"},"colors":{"color0":"#f3f1f5","color1":"#9b3132","color2":"#306130","color3":"#73500a","color4":"#4c547e","color5":"#883c64","color6":"#186060","color7":"#53575a","color8":"#735e3f","color9":"#9b474d","color10":"#4e6938","color11":"#8e5319","color12":"#5c5d8c","color13":"#a24055","color14":"#2d6978","color15":"#53575a"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_fugit.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_fugit.json deleted file mode 100644 index 2c766724..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_fugit.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#fff5f3","foreground":"#4d696f","cursor":"#4d696f"},"colors":{"color0":"#fff5f3","color1":"#df2014","color2":"#587d0a","color3":"#8a6f00","color4":"#196bec","color5":"#c83884","color6":"#2a79a2","color7":"#4d696f","color8":"#8b6781","color9":"#9a511a","color10":"#11742f","color11":"#8d590a","color12":"#004fff","color13":"#9536c0","color14":"#046c92","color15":"#4d696f"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_past.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_past.json deleted file mode 100644 index 2115eff2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_past.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#dadce8","foreground":"#63606b","cursor":"#63606b"},"colors":{"color0":"#dadce8","color1":"#c01c10","color2":"#2a7000","color3":"#825a0a","color4":"#025ccd","color5":"#a43878","color6":"#49628d","color7":"#63606b","color8":"#80565d","color9":"#b43036","color10":"#007214","color11":"#91520a","color12":"#5046eb","color13":"#ba166b","color14":"#076c76","color15":"#63606b"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_totus.json b/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_totus.json deleted file mode 100644 index fb8dc2a9..00000000 --- a/.local/lib/python3.9/site-packages/pywal/colorschemes/light/tempus_totus.json +++ /dev/null @@ -1 +0,0 @@ -{"special":{"background":"#f4f1f0","foreground":"#52505e","cursor":"#52505e"},"colors":{"color0":"#f4f1f0","color1":"#a01c10","color2":"#0b5d46","color3":"#545422","color4":"#1c4f9f","color5":"#942166","color6":"#185870","color7":"#52505e","color8":"#575050","color9":"#913210","color10":"#2a5d08","color11":"#774611","color12":"#5440a7","color13":"#8d0e9b","color14":"#0e577b","color15":"#52505e"}} \ No newline at end of file diff --git a/.local/lib/python3.9/site-packages/pywal/export.py b/.local/lib/python3.9/site-packages/pywal/export.py deleted file mode 100644 index 83dd15cb..00000000 --- a/.local/lib/python3.9/site-packages/pywal/export.py +++ /dev/null @@ -1,86 +0,0 @@ -""" -Export colors in various formats. -""" -import logging -import os - -from .settings import CACHE_DIR, MODULE_DIR, CONF_DIR -from . import util - - -def template(colors, input_file, output_file=None): - """Read template file, substitute markers and - save the file elsewhere.""" - template_data = util.read_file_raw(input_file) - template_data = "".join(template_data).format(**colors) - - util.save_file(template_data, output_file) - - -def flatten_colors(colors): - """Prepare colors to be exported. - Flatten dicts and convert colors to util.Color()""" - all_colors = {"wallpaper": colors["wallpaper"], - "alpha": colors["alpha"], - **colors["special"], - **colors["colors"]} - return {k: util.Color(v) for k, v in all_colors.items()} - - -def get_export_type(export_type): - """Convert template type to the right filename.""" - return { - "css": "colors.css", - "dmenu": "colors-wal-dmenu.h", - "dwm": "colors-wal-dwm.h", - "st": "colors-wal-st.h", - "tabbed": "colors-wal-tabbed.h", - "gtk2": "colors-gtk2.rc", - "json": "colors.json", - "konsole": "colors-konsole.colorscheme", - "kitty": "colors-kitty.conf", - "plain": "colors", - "putty": "colors-putty.reg", - "rofi": "colors-rofi.Xresources", - "scss": "colors.scss", - "shell": "colors.sh", - "speedcrunch": "colors-speedcrunch.json", - "sway": "colors-sway", - "tty": "colors-tty.sh", - "waybar": "colors-waybar.css", - "xresources": "colors.Xresources", - "xmonad": "colors.hs", - "yaml": "colors.yml", - }.get(export_type, export_type) - - -def every(colors, output_dir=CACHE_DIR): - """Export all template files.""" - colors = flatten_colors(colors) - template_dir = os.path.join(MODULE_DIR, "templates") - template_dir_user = os.path.join(CONF_DIR, "templates") - util.create_dir(template_dir_user) - - join = os.path.join # Minor optimization. - for file in [*os.scandir(template_dir), - *os.scandir(template_dir_user)]: - if file.name != ".DS_Store": - template(colors, file.path, join(output_dir, file.name)) - - logging.info("Exported all files.") - logging.info("Exported all user files.") - - -def color(colors, export_type, output_file=None): - """Export a single template file.""" - all_colors = flatten_colors(colors) - - template_name = get_export_type(export_type) - template_file = os.path.join(MODULE_DIR, "templates", template_name) - output_file = output_file or os.path.join(CACHE_DIR, template_name) - - if os.path.isfile(template_file): - template(all_colors, template_file, output_file) - logging.info("Exported %s.", export_type) - else: - logging.warning("Template '%s' doesn't exist.", export_type) diff --git a/.local/lib/python3.9/site-packages/pywal/image.py b/.local/lib/python3.9/site-packages/pywal/image.py deleted file mode 100644 index 897f443c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/image.py +++ /dev/null @@ -1,84 +0,0 @@ -""" -Get the image file. -""" -import logging -import os -import random -import re -import sys - -from .settings import CACHE_DIR -from . import util -from . import wallpaper - - -def get_image_dir(img_dir): - """Get all images in a directory.""" - current_wall = wallpaper.get() - current_wall = os.path.basename(current_wall) - - file_types = (".png", ".jpg", ".jpeg", ".jpe", ".gif") - - return [img.name for img in os.scandir(img_dir) - if img.name.lower().endswith(file_types)], current_wall - - -def get_random_image(img_dir): - """Pick a random image file from a directory.""" - images, current_wall = get_image_dir(img_dir) - - if len(images) > 2 and current_wall in images: - images.remove(current_wall) - - elif not images: - logging.error("No images found in directory.") - sys.exit(1) - - random.shuffle(images) - return os.path.join(img_dir, images[0]) - - -def get_next_image(img_dir): - """Get the next image in a dir.""" - images, current_wall = get_image_dir(img_dir) - images.sort(key=lambda img: [int(x) if x.isdigit() else x - for x in re.split('([0-9]+)', img)]) - - try: - next_index = images.index(current_wall) + 1 - - except ValueError: - next_index = 0 - - try: - image = images[next_index] - - except IndexError: - image = images[0] - - return os.path.join(img_dir, image) - - -def get(img, cache_dir=CACHE_DIR, iterative=False): - """Validate image input.""" - if os.path.isfile(img): - wal_img = img - - elif os.path.isdir(img): - if iterative: - wal_img = get_next_image(img) - - else: - wal_img = get_random_image(img) - - else: - logging.error("No valid image file found.") - sys.exit(1) - - wal_img = os.path.abspath(wal_img) - - # Cache the image file path. - util.save_file(wal_img, os.path.join(cache_dir, "wal")) - - logging.info("Using image \033[1;37m%s\033[0m.", os.path.basename(wal_img)) - return wal_img diff --git a/.local/lib/python3.9/site-packages/pywal/reload.py b/.local/lib/python3.9/site-packages/pywal/reload.py deleted file mode 100644 index 6ea5c439..00000000 --- a/.local/lib/python3.9/site-packages/pywal/reload.py +++ /dev/null @@ -1,88 +0,0 @@ -""" -Reload programs. -""" -import logging -import os -import shutil -import subprocess - -from .settings import CACHE_DIR, MODULE_DIR, OS -from . import util - - -def tty(tty_reload): - """Load colors in tty.""" - tty_script = os.path.join(CACHE_DIR, "colors-tty.sh") - term = os.environ.get("TERM") - - if tty_reload and term == "linux": - subprocess.Popen(["sh", tty_script]) - - -def xrdb(xrdb_files=None): - """Merge the colors into the X db so new terminals use them.""" - xrdb_files = xrdb_files or \ - [os.path.join(CACHE_DIR, "colors.Xresources")] - - if shutil.which("xrdb") and OS != "Darwin": - for file in xrdb_files: - subprocess.run(["xrdb", "-merge", "-quiet", file]) - - -def gtk(): - """Reload GTK theme on the fly.""" - # Here we call a Python 2 script to reload the GTK themes. - # This is done because the Python 3 GTK/Gdk libraries don't - # provide a way of doing this. - if shutil.which("python2"): - gtk_reload = os.path.join(MODULE_DIR, "scripts", "gtk_reload.py") - util.disown(["python2", gtk_reload]) - - else: - logging.warning("GTK2 reload support requires Python 2.") - - -def i3(): - """Reload i3 colors.""" - if shutil.which("i3-msg") and util.get_pid("i3"): - util.disown(["i3-msg", "reload"]) - - -def kitty(): - """ Reload kitty colors. """ - if shutil.which("kitty") and util.get_pid("kitty"): - util.disown(["kitty", "@", "set-colors", "--all"]) - - -def polybar(): - """Reload polybar colors.""" - if shutil.which("polybar") and util.get_pid("polybar"): - util.disown(["pkill", "-USR1", "polybar"]) - - -def sway(): - """Reload sway colors.""" - if shutil.which("swaymsg") and util.get_pid("sway"): - util.disown(["swaymsg", "reload"]) - - -def colors(cache_dir=CACHE_DIR): - """Reload colors. (Deprecated)""" - sequences = os.path.join(cache_dir, "sequences") - - logging.error("'wal -r' is deprecated: " - "Use 'cat %s' instead.", sequences) - - if os.path.isfile(sequences): - print("".join(util.read_file(sequences)), end="") - - -def env(xrdb_file=None, tty_reload=True): - """Reload environment.""" - xrdb(xrdb_file) - i3() - kitty() - sway() - polybar() - logging.info("Reloaded environment.") - tty(tty_reload) diff --git a/.local/lib/python3.9/site-packages/pywal/scripts/__pycache__/gtk_reload.cpython-39.pyc b/.local/lib/python3.9/site-packages/pywal/scripts/__pycache__/gtk_reload.cpython-39.pyc deleted file mode 100644 index 69b93c35e54dcbcb86e6b4297d9e16427e46d3ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmZ`&%TC-d6t$DgFoXdWb<<_k4V^_31QjZXzC=TXN&yX{R!v()CUz%=Bu;GyIwM%o zPv{50vQob&>W&q^&{eNz%0sGZ%O|?dJ@LKgIAnU-MKC`8yokPA2wj-q_Gm%y9F|%K zpeRDaHpSG+aD?BX;=Y5JHCVvNOlDL26vNY@j(NUEg*A_8gEqgRsKFYikVCCq)R`Fm za(8o*W!}y}r=su{Je5dZYEKJKvP=-_z3RPQ@N~*@rhM1!rCfQHV(Kpg2)sxbB*4C8 zUn(x)-JD_tjgySCLIY2cK8v-0a~^c&+@q8ysmE0@r#*5=ct-Xz=JDdHhDA7LTk<|H zNaiU~$%L(Vsn(@h34%mcMUw83qVEgY4?YW7`04}Cw`fh&p3UuxV-de$-M-n z(ALoZ5O%xU-A`U$AH?IXR!m!09bT8cGk{(H5(6tS)T;q@AP3eOEVT-t(LO%24DQ?K z_+%VA#*TCA1XKGM#SQ8JHjgpj#4$Q+og2{`AbN9nxBIWO(QFKd$KCM7%ecF?zOfnZ zu3s9@dt05!+J@32yH5}5MtBIKM(wrDjc}_Mhi?I+DWXLl^FlLOL{pS#5`!{1(UCiH zf{i)XRt!oO-TR+M9jk7R2>r+y%5>iGR8NJY+qeW5BQ=N|`tCK8eb8Q%-a(d}9E zmjlH$dsvd>04!Iqe*_uhE2V-P`TcTGyEoyi(X|bLtUGuHH%C*N-=Wj2C*qijB#xzV zpq|>uOCfbArI2-_l+bhSu&-Q?(np2ff=NSZt>%JO8GCAMR5Jih%ffA#Ej(kl+&{vR B`vw32 diff --git a/.local/lib/python3.9/site-packages/pywal/scripts/gtk_reload.py b/.local/lib/python3.9/site-packages/pywal/scripts/gtk_reload.py deleted file mode 100644 index e4c2bdf2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/scripts/gtk_reload.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python2 -""" -Small Python 2 script to reload GTK2 themes. - -This uses Python2 since this requires 'send_clientmessage_toall()' -which isn't available in Python 3. - -Original source: https://crunchbang.org/forums/viewtopic.php?id=39646 -""" -try: - import gtk -except ImportError: - print("[ERROR] gtk_reload: GTK reload requires PyGTK.") - exit(1) - - -def gtk_reload(): - """Reload GTK2 themes.""" - events = gtk.gdk.Event(gtk.gdk.CLIENT_EVENT) - data = gtk.gdk.atom_intern("_GTK_READ_RCFILES", False) - events.data_format = 8 - events.send_event = True - events.message_type = data - events.send_clientmessage_toall() - - -gtk_reload() diff --git a/.local/lib/python3.9/site-packages/pywal/sequences.py b/.local/lib/python3.9/site-packages/pywal/sequences.py deleted file mode 100644 index b42c3b79..00000000 --- a/.local/lib/python3.9/site-packages/pywal/sequences.py +++ /dev/null @@ -1,88 +0,0 @@ -""" -Send sequences to all open terminals. -""" -import glob -import logging -import os - -from .settings import CACHE_DIR, OS -from . import util - - -def set_special(index, color, iterm_name="h", alpha=100): - """Convert a hex color to a special sequence.""" - if OS == "Darwin": - return "\033]P%s%s\033\\" % (iterm_name, color.strip("#")) - - if index in [11, 708] and alpha != "100": - return "\033]%s;[%s]%s\033\\" % (index, alpha, color) - - return "\033]%s;%s\033\\" % (index, color) - - -def set_color(index, color): - """Convert a hex color to a text color sequence.""" - if OS == "Darwin" and index < 20: - return "\033]P%1x%s\033\\" % (index, color.strip("#")) - - return "\033]4;%s;%s\033\\" % (index, color) - - -def set_iterm_tab_color(color): - """Set iTerm2 tab/window color""" - return ("\033]6;1;bg;red;brightness;%s\a" - "\033]6;1;bg;green;brightness;%s\a" - "\033]6;1;bg;blue;brightness;%s\a") % (*util.hex_to_rgb(color),) - - -def create_sequences(colors, vte_fix=False): - """Create the escape sequences.""" - alpha = colors["alpha"] - - # Colors 0-15. - sequences = [set_color(index, colors["colors"]["color%s" % index]) - for index in range(16)] - - # Special colors. - # Source: https://goo.gl/KcoQgP - # 10 = foreground, 11 = background, 12 = cursor foregound - # 13 = mouse foreground, 708 = background border color. - sequences.extend([ - set_special(10, colors["special"]["foreground"], "g"), - set_special(11, colors["special"]["background"], "h", alpha), - set_special(12, colors["special"]["cursor"], "l"), - set_special(13, colors["special"]["foreground"], "l"), - set_special(17, colors["special"]["foreground"], "l"), - set_special(19, colors["special"]["background"], "l"), - set_color(232, colors["special"]["background"]), - set_color(256, colors["special"]["foreground"]) - ]) - - if not vte_fix: - sequences.extend( - set_special(708, colors["special"]["background"], "l", alpha) - ) - - if OS == "Darwin": - sequences += set_iterm_tab_color(colors["special"]["background"]) - - return "".join(sequences) - - -def send(colors, cache_dir=CACHE_DIR, to_send=True, vte_fix=False): - """Send colors to all open terminals.""" - if OS == "Darwin": - tty_pattern = "/dev/ttys00[0-9]*" - - else: - tty_pattern = "/dev/pts/[0-9]*" - - sequences = create_sequences(colors, vte_fix) - - # Writing to "/dev/pts/[0-9] lets you send data to open terminals. - if to_send: - for term in glob.glob(tty_pattern): - util.save_file(sequences, term) - - util.save_file(sequences, os.path.join(cache_dir, "sequences")) - logging.info("Set terminal colors.") diff --git a/.local/lib/python3.9/site-packages/pywal/settings.py b/.local/lib/python3.9/site-packages/pywal/settings.py deleted file mode 100644 index 4adb2497..00000000 --- a/.local/lib/python3.9/site-packages/pywal/settings.py +++ /dev/null @@ -1,24 +0,0 @@ -""" - '|| -... ... .... ... ... ... ... .... || - ||' || '|. | || || | '' .|| || - || | '|.| ||| ||| .|' || || - ||...' '| | | '|..'|' .||. - || .. | -'''' '' -Created by Dylan Araps. -""" - -import os -import platform - - -__version__ = "3.3.0" -__cache_version__ = "1.1.0" - - -HOME = os.getenv("HOME", os.getenv("USERPROFILE")) -CACHE_DIR = os.getenv("PYWAL_CACHE_DIR", os.path.join(HOME, ".cache", "wal")) -MODULE_DIR = os.path.dirname(__file__) -CONF_DIR = os.path.join(HOME, ".config", "wal") -OS = platform.uname()[0] diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors b/.local/lib/python3.9/site-packages/pywal/templates/colors deleted file mode 100644 index 228f4c89..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors +++ /dev/null @@ -1,16 +0,0 @@ -{color0} -{color1} -{color2} -{color3} -{color4} -{color5} -{color6} -{color7} -{color8} -{color9} -{color10} -{color11} -{color12} -{color13} -{color14} -{color15} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-kitty.conf b/.local/lib/python3.9/site-packages/pywal/templates/colors-kitty.conf deleted file mode 100644 index f744418c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-kitty.conf +++ /dev/null @@ -1,20 +0,0 @@ -foreground {foreground} -background {background} -cursor {cursor} - -color0 {color0} -color8 {color8} -color1 {color1} -color9 {color9} -color2 {color2} -color10 {color10} -color3 {color3} -color11 {color11} -color4 {color4} -color12 {color12} -color5 {color5} -color13 {color13} -color6 {color6} -color14 {color14} -color7 {color7} -color15 {color15} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-konsole.colorscheme b/.local/lib/python3.9/site-packages/pywal/templates/colors-konsole.colorscheme deleted file mode 100644 index c44d36a2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-konsole.colorscheme +++ /dev/null @@ -1,63 +0,0 @@ -[Background] -Color={background.rgb} - -[BackgroundIntense] -Color={background.rgb} - -[Color0] -Color={color0.rgb} - -[Color0Intense] -Color={color8.rgb} - -[Color1] -Color={color1.rgb} - -[Color1Intense] -Color={color9.rgb} - -[Color2] -Color={color2.rgb} - -[Color2Intense] -Color={color10.rgb} - -[Color3] -Color={color3.rgb} - -[Color3Intense] -Color={color11.rgb} - -[Color4] -Color={color4.rgb} - -[Color4Intense] -Color={color12.rgb} - -[Color5] -Color={color5.rgb} - -[Color5Intense] -Color={color13.rgb} - -[Color6] -Color={color6.rgb} - -[Color6Intense] -Color={color14.rgb} - -[Color7] -Color={color7.rgb} - -[Color7Intense] -Color={color15.rgb} - -[Foreground] -Color={foreground.rgb} - -[ForegroundIntense] -Color={foreground.rgb} - -[General] -Description=Colorscheme generated by wal -Opacity=1 diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-oomox b/.local/lib/python3.9/site-packages/pywal/templates/colors-oomox deleted file mode 100644 index 16823f7c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-oomox +++ /dev/null @@ -1,17 +0,0 @@ -NAME=wal -BG={color0.strip} -FG={color15.strip} -MENU_BG={color0.strip} -MENU_FG={color15.strip} -SEL_BG={color1.strip} -SEL_FG={color0.strip} -TXT_BG={color0.strip} -TXT_FG={color15.strip} -BTN_BG={color2.strip} -BTN_FG={color15.strip} -HDR_BTN_BG={color3.strip} -HDR_BTN_FG={color15.strip} -GTK3_GENERATE_DARK=True -ROUNDNESS=0 -SPACING=3 -GRADIENT=0.0 diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-putty.reg b/.local/lib/python3.9/site-packages/pywal/templates/colors-putty.reg deleted file mode 100644 index fcd10a20..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-putty.reg +++ /dev/null @@ -1,26 +0,0 @@ -Windows Registry Editor Version 5.00 - -[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\wal] -"Colour0"="{foreground.rgb}" ; Default Foreground -"Colour1"="{foreground.rgb}" ; Default Bold Foreground -"Colour2"="{background.rgb}" ; Default Background -"Colour3"="{background.rgb}" ; Default Bold Background -"Colour4"="{background.rgb}" ; Cursor Text -"Colour5"="{cursor.rgb}" ; Cursor Color -"Colour6"="{color0.rgb}" ; ANSI Black -"Colour7"="{color8.rgb}" ; ANSI Black Bold -"Colour8"="{color1.rgb}" ; ANSI Red -"Colour9"="{color9.rgb}" ; ANSI Red Bold -"Colour10"="{color2.rgb}" ; ANSI Green -"Colour11"="{color10.rgb}" ; ANSI Green Bold -"Colour12"="{color3.rgb}" ; ANSI Yellow -"Colour13"="{color11.rgb}" ; ANSI Yellow Bold -"Colour14"="{color4.rgb}" ; ANSI Blue -"Colour15"="{color12.rgb}" ; ANSI Blue Bold -"Colour16"="{color5.rgb}" ; ANSI Magenta -"Colour17"="{color13.rgb}" ; ANSI Magenta Bold -"Colour18"="{color6.rgb}" ; ANSI Cyan -"Colour19"="{color14.rgb}" ; ANSI Cyan Bold -"Colour20"="{color7.rgb}" ; ANSI White -"Colour21"="{color15.rgb}" ; ANSI White Bold - diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-rofi-dark.rasi b/.local/lib/python3.9/site-packages/pywal/templates/colors-rofi-dark.rasi deleted file mode 100644 index 302d44f1..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-rofi-dark.rasi +++ /dev/null @@ -1,161 +0,0 @@ -* {{ - active-background: {color2}; - active-foreground: @foreground; - normal-background: @background; - normal-foreground: @foreground; - urgent-background: {color1}; - urgent-foreground: @foreground; - - alternate-active-background: @background; - alternate-active-foreground: @foreground; - alternate-normal-background: @background; - alternate-normal-foreground: @foreground; - alternate-urgent-background: @background; - alternate-urgent-foreground: @foreground; - - selected-active-background: {color1}; - selected-active-foreground: @foreground; - selected-normal-background: {color2}; - selected-normal-foreground: @foreground; - selected-urgent-background: {color3}; - selected-urgent-foreground: @foreground; - - background-color: @background; - background: {background}; - foreground: {foreground}; - border-color: @background; - spacing: 2; -}} - -#window {{ - background-color: @background; - border: 0; - padding: 2.5ch; -}} - -#mainbox {{ - border: 0; - padding: 0; -}} - -#message {{ - border: 2px 0px 0px; - border-color: @border-color; - padding: 1px; -}} - -#textbox {{ - text-color: @foreground; -}} - -#inputbar {{ - children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; -}} - -#textbox-prompt-colon {{ - expand: false; - str: ":"; - margin: 0px 0.3em 0em 0em; - text-color: @normal-foreground; -}} - -#listview {{ - fixed-height: 0; - border: 2px 0px 0px; - border-color: @border-color; - spacing: 2px; - scrollbar: true; - padding: 2px 0px 0px; -}} - -#element {{ - border: 0; - padding: 1px; -}} - -#element.normal.normal {{ - background-color: @normal-background; - text-color: @normal-foreground; -}} - -#element.normal.urgent {{ - background-color: @urgent-background; - text-color: @urgent-foreground; -}} - -#element.normal.active {{ - background-color: @active-background; - text-color: @active-foreground; -}} - -#element.selected.normal {{ - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -}} - -#element.selected.urgent {{ - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -}} - -#element.selected.active {{ - background-color: @selected-active-background; - text-color: @selected-active-foreground; -}} - -#element.alternate.normal {{ - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -}} - -#element.alternate.urgent {{ - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -}} - -#element.alternate.active {{ - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -}} - -#scrollbar {{ - width: 4px; - border: 0; - handle-width: 8px; - padding: 0; -}} - -#sidebar {{ - border: 2px 0px 0px; - border-color: @border-color; -}} - -#button {{ - text-color: @normal-foreground; -}} - -#button.selected {{ - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -}} - -#inputbar {{ - spacing: 0; - text-color: @normal-foreground; - padding: 1px; -}} - -#case-indicator {{ - spacing: 0; - text-color: @normal-foreground; -}} - -#entry {{ - spacing: 0; - text-color: @normal-foreground; -}} - -#prompt {{ - spacing: 0; - text-color: @normal-foreground; -}} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-rofi-light.rasi b/.local/lib/python3.9/site-packages/pywal/templates/colors-rofi-light.rasi deleted file mode 100644 index d4f89af4..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-rofi-light.rasi +++ /dev/null @@ -1,161 +0,0 @@ -* {{ - active-background: {color2}; - active-foreground: @foreground; - normal-background: @background; - normal-foreground: @foreground; - urgent-background: {color1}; - urgent-foreground: @foreground; - - alternate-active-background: @background; - alternate-active-foreground: @foreground; - alternate-normal-background: @background; - alternate-normal-foreground: @foreground; - alternate-urgent-background: @background; - alternate-urgent-foreground: @foreground; - - selected-active-background: {color1}; - selected-active-foreground: @foreground; - selected-normal-background: {color2}; - selected-normal-foreground: @foreground; - selected-urgent-background: {color3}; - selected-urgent-foreground: @foreground; - - background-color: @background; - background: {foreground}; - foreground: {background}; - border-color: @background; - spacing: 2; -}} - -#window {{ - background-color: @background; - border: 0; - padding: 2.5ch; -}} - -#mainbox {{ - border: 0; - padding: 0; -}} - -#message {{ - border: 2px 0px 0px; - border-color: @border-color; - padding: 1px; -}} - -#textbox {{ - text-color: @foreground; -}} - -#inputbar {{ - children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; -}} - -#textbox-prompt-colon {{ - expand: false; - str: ":"; - margin: 0px 0.3em 0em 0em; - text-color: @normal-foreground; -}} - -#listview {{ - fixed-height: 0; - border: 2px 0px 0px; - border-color: @border-color; - spacing: 2px; - scrollbar: true; - padding: 2px 0px 0px; -}} - -#element {{ - border: 0; - padding: 1px; -}} - -#element.normal.normal {{ - background-color: @normal-background; - text-color: @normal-foreground; -}} - -#element.normal.urgent {{ - background-color: @urgent-background; - text-color: @urgent-foreground; -}} - -#element.normal.active {{ - background-color: @active-background; - text-color: @active-foreground; -}} - -#element.selected.normal {{ - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -}} - -#element.selected.urgent {{ - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -}} - -#element.selected.active {{ - background-color: @selected-active-background; - text-color: @selected-active-foreground; -}} - -#element.alternate.normal {{ - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -}} - -#element.alternate.urgent {{ - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -}} - -#element.alternate.active {{ - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -}} - -#scrollbar {{ - width: 4px; - border: 0; - handle-width: 8px; - padding: 0; -}} - -#sidebar {{ - border: 2px 0px 0px; - border-color: @border-color; -}} - -#button {{ - text-color: @normal-foreground; -}} - -#button.selected {{ - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -}} - -#inputbar {{ - spacing: 0; - text-color: @normal-foreground; - padding: 1px; -}} - -#case-indicator {{ - spacing: 0; - text-color: @normal-foreground; -}} - -#entry {{ - spacing: 0; - text-color: @normal-foreground; -}} - -#prompt {{ - spacing: 0; - text-color: @normal-foreground; -}} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-speedcrunch.json b/.local/lib/python3.9/site-packages/pywal/templates/colors-speedcrunch.json deleted file mode 100644 index c9182c4e..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-speedcrunch.json +++ /dev/null @@ -1,15 +0,0 @@ -{{ - "cursor": "{cursor}", - "number": "{foreground}", - "parens": "{color13}", - "result": "{color12}", - "comment": "{color8}", - "matched": "{color4}", - "function": "{color1}", - "operator": "{color3}", - "variable": "{color2}", - "scrollbar": "{color3}", - "separator": "{color3}", - "background": "{background}", - "editorbackground": "{background}" -}} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-sway b/.local/lib/python3.9/site-packages/pywal/templates/colors-sway deleted file mode 100644 index 1f366a8d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-sway +++ /dev/null @@ -1,21 +0,0 @@ -set $wallpaper {wallpaper} - -set $background {background} -set $foreground {foreground} - -set $color0 {color0} -set $color1 {color1} -set $color2 {color2} -set $color3 {color3} -set $color4 {color4} -set $color5 {color5} -set $color6 {color6} -set $color7 {color7} -set $color8 {color8} -set $color9 {color9} -set $color10 {color10} -set $color11 {color11} -set $color12 {color12} -set $color13 {color13} -set $color14 {color14} -set $color15 {color15} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-tty.sh b/.local/lib/python3.9/site-packages/pywal/templates/colors-tty.sh deleted file mode 100644 index 5eb5487a..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-tty.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -[ "${{TERM:-none}}" = "linux" ] && \ - printf '%b' '\e]P0{color0.strip} - \e]P1{color1.strip} - \e]P2{color2.strip} - \e]P3{color3.strip} - \e]P4{color4.strip} - \e]P5{color5.strip} - \e]P6{color6.strip} - \e]P7{color7.strip} - \e]P8{color8.strip} - \e]P9{color9.strip} - \e]PA{color10.strip} - \e]PB{color11.strip} - \e]PC{color12.strip} - \e]PD{color13.strip} - \e]PE{color14.strip} - \e]PF{color15.strip} - \ec' diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-dmenu.h b/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-dmenu.h deleted file mode 100644 index aeab7a5f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-dmenu.h +++ /dev/null @@ -1,6 +0,0 @@ -static const char *colors[SchemeLast][2] = {{ - /* fg bg */ - [SchemeNorm] = {{ "{color15}", "{color0}" }}, - [SchemeSel] = {{ "{color15}", "{color1}" }}, - [SchemeOut] = {{ "{color15}", "{color14}" }}, -}}; diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-dwm.h b/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-dwm.h deleted file mode 100644 index ad0d1b07..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-dwm.h +++ /dev/null @@ -1,18 +0,0 @@ -static const char norm_fg[] = "{color15}"; -static const char norm_bg[] = "{color0}"; -static const char norm_border[] = "{color8}"; - -static const char sel_fg[] = "{color15}"; -static const char sel_bg[] = "{color2}"; -static const char sel_border[] = "{color15}"; - -static const char urg_fg[] = "{color15}"; -static const char urg_bg[] = "{color1}"; -static const char urg_border[] = "{color1}"; - -static const char *colors[][3] = {{ - /* fg bg border */ - [SchemeNorm] = {{ norm_fg, norm_bg, norm_border }}, // unfocused wins - [SchemeSel] = {{ sel_fg, sel_bg, sel_border }}, // the focused win - [SchemeUrg] = {{ urg_fg, urg_bg, urg_border }}, -}}; diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-st.h b/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-st.h deleted file mode 100644 index fcf85388..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-st.h +++ /dev/null @@ -1,34 +0,0 @@ -const char *colorname[] = {{ - - /* 8 normal colors */ - [0] = "{color0}", /* black */ - [1] = "{color1}", /* red */ - [2] = "{color2}", /* green */ - [3] = "{color3}", /* yellow */ - [4] = "{color4}", /* blue */ - [5] = "{color5}", /* magenta */ - [6] = "{color6}", /* cyan */ - [7] = "{color7}", /* white */ - - /* 8 bright colors */ - [8] = "{color8}", /* black */ - [9] = "{color9}", /* red */ - [10] = "{color10}", /* green */ - [11] = "{color11}", /* yellow */ - [12] = "{color12}", /* blue */ - [13] = "{color13}", /* magenta */ - [14] = "{color14}", /* cyan */ - [15] = "{color15}", /* white */ - - /* special colors */ - [256] = "{background}", /* background */ - [257] = "{foreground}", /* foreground */ - [258] = "{cursor}", /* cursor */ -}}; - -/* Default colors (colorname index) - * foreground, background, cursor */ - unsigned int defaultbg = 0; - unsigned int defaultfg = 257; - unsigned int defaultcs = 258; - unsigned int defaultrcs= 258; diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-tabbed.h b/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-tabbed.h deleted file mode 100644 index 90623c54..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal-tabbed.h +++ /dev/null @@ -1,6 +0,0 @@ -static const char* selbgcolor = "{color0}"; -static const char* selfgcolor = "{color15}"; -static const char* normbgcolor = "{color2}"; -static const char* normfgcolor = "{color15}"; -static const char* urgbgcolor = "{color1}"; -static const char* urgfgcolor = "{color15}"; diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal.vim b/.local/lib/python3.9/site-packages/pywal/templates/colors-wal.vim deleted file mode 100644 index 1879c228..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-wal.vim +++ /dev/null @@ -1,23 +0,0 @@ -" Special -let wallpaper = "{wallpaper}" -let background = "{background}" -let foreground = "{foreground}" -let cursor = "{cursor}" - -" Colors -let color0 = "{color0}" -let color1 = "{color1}" -let color2 = "{color2}" -let color3 = "{color3}" -let color4 = "{color4}" -let color5 = "{color5}" -let color6 = "{color6}" -let color7 = "{color7}" -let color8 = "{color8}" -let color9 = "{color9}" -let color10 = "{color10}" -let color11 = "{color11}" -let color12 = "{color12}" -let color13 = "{color13}" -let color14 = "{color14}" -let color15 = "{color15}" diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors-waybar.css b/.local/lib/python3.9/site-packages/pywal/templates/colors-waybar.css deleted file mode 100644 index c9cced6b..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors-waybar.css +++ /dev/null @@ -1,20 +0,0 @@ -@define-color foreground {foreground}; -@define-color background {background}; -@define-color cursor {cursor}; - -@define-color color0 {color0}; -@define-color color1 {color1}; -@define-color color2 {color2}; -@define-color color3 {color3}; -@define-color color4 {color4}; -@define-color color5 {color5}; -@define-color color6 {color6}; -@define-color color7 {color7}; -@define-color color8 {color8}; -@define-color color9 {color9}; -@define-color color10 {color10}; -@define-color color11 {color11}; -@define-color color12 {color12}; -@define-color color13 {color13}; -@define-color color14 {color14}; -@define-color color15 {color15}; diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.Xresources b/.local/lib/python3.9/site-packages/pywal/templates/colors.Xresources deleted file mode 100644 index 018c1e61..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.Xresources +++ /dev/null @@ -1,68 +0,0 @@ -! X colors. -! Generated by 'wal' -*foreground: {foreground} -*background: {background} -*.foreground: {foreground} -*.background: {background} -emacs*foreground: {foreground} -emacs*background: {background} -URxvt*foreground: {foreground} -XTerm*foreground: {foreground} -UXTerm*foreground: {foreground} -URxvt*background: {background.alpha} -XTerm*background: {background} -UXTerm*background: {background} -URxvt*cursorColor: {cursor} -XTerm*cursorColor: {cursor} -UXTerm*cursorColor: {cursor} -URxvt*borderColor: {background.alpha} - -! Colors 0-15. -*.color0: {color0} -*color0: {color0} -*.color1: {color1} -*color1: {color1} -*.color2: {color2} -*color2: {color2} -*.color3: {color3} -*color3: {color3} -*.color4: {color4} -*color4: {color4} -*.color5: {color5} -*color5: {color5} -*.color6: {color6} -*color6: {color6} -*.color7: {color7} -*color7: {color7} -*.color8: {color8} -*color8: {color8} -*.color9: {color9} -*color9: {color9} -*.color10: {color10} -*color10: {color10} -*.color11: {color11} -*color11: {color11} -*.color12: {color12} -*color12: {color12} -*.color13: {color13} -*color13: {color13} -*.color14: {color14} -*color14: {color14} -*.color15: {color15} -*color15: {color15} - -! Black color that will not be affected by bold highlighting. -*.color66: {color0} -*color66: {color0} - -! Xclock colors. -XClock*foreground: {foreground} -XClock*background: {background} -XClock*majorColor: rgba:{color15.xrgba} -XClock*minorColor: rgba:{color15.xrgba} -XClock*hourColor: rgba:{color15.xrgba} -XClock*minuteColor: rgba:{color15.xrgba} -XClock*secondColor: rgba:{color15.xrgba} - -! Set depth to make transparency work. -URxvt*depth: 32 diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.css b/.local/lib/python3.9/site-packages/pywal/templates/colors.css deleted file mode 100644 index f348e636..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.css +++ /dev/null @@ -1,28 +0,0 @@ -/* CSS variables - Generated by 'wal' */ -:root {{ - --wallpaper: url("{wallpaper}"); - - /* Special */ - --background: {background}; - --foreground: {foreground}; - --cursor: {cursor}; - - /* Colors */ - --color0: {color0}; - --color1: {color1}; - --color2: {color2}; - --color3: {color3}; - --color4: {color4}; - --color5: {color5}; - --color6: {color6}; - --color7: {color7}; - --color8: {color8}; - --color9: {color9}; - --color10: {color10}; - --color11: {color11}; - --color12: {color12}; - --color13: {color13}; - --color14: {color14}; - --color15: {color15}; -}} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.hs b/.local/lib/python3.9/site-packages/pywal/templates/colors.hs deleted file mode 100644 index 6ffa1a6d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.hs +++ /dev/null @@ -1,37 +0,0 @@ ---Place this file in your .xmonad/lib directory and import module Colors into .xmonad/xmonad.hs config ---The easy way is to create a soft link from this file to the file in .xmonad/lib using ln -s ---Then recompile and restart xmonad. - -module Colors - ( wallpaper - , background, foreground, cursor - , color0, color1, color2, color3, color4, color5, color6, color7 - , color8, color9, color10, color11, color12, color13, color14, color15 - ) where - --- Shell variables --- Generated by 'wal' -wallpaper="{wallpaper}" - --- Special -background="{background}" -foreground="{foreground}" -cursor="{cursor}" - --- Colors -color0="{color0}" -color1="{color1}" -color2="{color2}" -color3="{color3}" -color4="{color4}" -color5="{color5}" -color6="{color6}" -color7="{color7}" -color8="{color8}" -color9="{color9}" -color10="{color10}" -color11="{color11}" -color12="{color12}" -color13="{color13}" -color14="{color14}" -color15="{color15}" diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.json b/.local/lib/python3.9/site-packages/pywal/templates/colors.json deleted file mode 100644 index 537a534f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.json +++ /dev/null @@ -1,28 +0,0 @@ -{{ - "wallpaper": "{wallpaper}", - "alpha": "{alpha}", - - "special": {{ - "background": "{background}", - "foreground": "{foreground}", - "cursor": "{cursor}" - }}, - "colors": {{ - "color0": "{color0}", - "color1": "{color1}", - "color2": "{color2}", - "color3": "{color3}", - "color4": "{color4}", - "color5": "{color5}", - "color6": "{color6}", - "color7": "{color7}", - "color8": "{color8}", - "color9": "{color9}", - "color10": "{color10}", - "color11": "{color11}", - "color12": "{color12}", - "color13": "{color13}", - "color14": "{color14}", - "color15": "{color15}" - }} -}} diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.scss b/.local/lib/python3.9/site-packages/pywal/templates/colors.scss deleted file mode 100644 index 001be1f2..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.scss +++ /dev/null @@ -1,26 +0,0 @@ -// SCSS Variables -// Generated by 'wal' -$wallpaper: "{wallpaper}"; - -// Special -$background: {background}; -$foreground: {foreground}; -$cursor: {cursor}; - -// Colors -$color0: {color0}; -$color1: {color1}; -$color2: {color2}; -$color3: {color3}; -$color4: {color4}; -$color5: {color5}; -$color6: {color6}; -$color7: {color7}; -$color8: {color8}; -$color9: {color9}; -$color10: {color10}; -$color11: {color11}; -$color12: {color12}; -$color13: {color13}; -$color14: {color14}; -$color15: {color15}; diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.sh b/.local/lib/python3.9/site-packages/pywal/templates/colors.sh deleted file mode 100644 index b607b93f..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.sh +++ /dev/null @@ -1,36 +0,0 @@ -# Shell variables -# Generated by 'wal' -wallpaper='{wallpaper}' - -# Special -background='{background}' -foreground='{foreground}' -cursor='{cursor}' - -# Colors -color0='{color0}' -color1='{color1}' -color2='{color2}' -color3='{color3}' -color4='{color4}' -color5='{color5}' -color6='{color6}' -color7='{color7}' -color8='{color8}' -color9='{color9}' -color10='{color10}' -color11='{color11}' -color12='{color12}' -color13='{color13}' -color14='{color14}' -color15='{color15}' - -# FZF colors -export FZF_DEFAULT_OPTS=" - $FZF_DEFAULT_OPTS - --color fg:7,bg:0,hl:1,fg+:232,bg+:1,hl+:255 - --color info:7,prompt:2,spinner:1,pointer:232,marker:1 -" - -# Fix LS_COLORS being unreadable. -export LS_COLORS="${{LS_COLORS}}:su=30;41:ow=30;42:st=30;44:" diff --git a/.local/lib/python3.9/site-packages/pywal/templates/colors.yml b/.local/lib/python3.9/site-packages/pywal/templates/colors.yml deleted file mode 100644 index c3d6e47d..00000000 --- a/.local/lib/python3.9/site-packages/pywal/templates/colors.yml +++ /dev/null @@ -1,24 +0,0 @@ -wallpaper: "{wallpaper}" - -special: - background: "{background}" - foreground: "{foreground}" - cursor: "{cursor}" - -colors: - color0: "{color0}" - color1: "{color1}" - color2: "{color2}" - color3: "{color3}" - color4: "{color4}" - color5: "{color5}" - color6: "{color6}" - color7: "{color7}" - color8: "{color8}" - color9: "{color9}" - color10: "{color10}" - color11: "{color11}" - color12: "{color12}" - color13: "{color13}" - color14: "{color14}" - color15: "{color15}" diff --git a/.local/lib/python3.9/site-packages/pywal/theme.py b/.local/lib/python3.9/site-packages/pywal/theme.py deleted file mode 100644 index fcd1dd15..00000000 --- a/.local/lib/python3.9/site-packages/pywal/theme.py +++ /dev/null @@ -1,124 +0,0 @@ -""" -Theme file handling. -""" -import logging -import os -import random -import sys - -from .settings import CONF_DIR, MODULE_DIR -from . import util - - -def list_out(): - """List all themes in a pretty format.""" - dark_themes = [theme.name.replace(".json", "") - for theme in list_themes()] - ligh_themes = [theme.name.replace(".json", "") - for theme in list_themes(dark=False)] - user_themes = [theme.name.replace(".json", "") - for theme in list_themes_user()] - - if user_themes: - print("\033[1;32mUser Themes\033[0m:") - print(" -", "\n - ".join(sorted(user_themes))) - - print("\033[1;32mDark Themes\033[0m:") - print(" -", "\n - ".join(sorted(dark_themes))) - - print("\033[1;32mLight Themes\033[0m:") - print(" -", "\n - ".join(sorted(ligh_themes))) - - print("\033[1;32mExtra\033[0m:") - print(" - random (select a random dark theme)") - print(" - random_dark (select a random dark theme)") - print(" - random_light (select a random light theme)") - - -def list_themes(dark=True): - """List all installed theme files.""" - dark = "dark" if dark else "light" - themes = os.scandir(os.path.join(MODULE_DIR, "colorschemes", dark)) - return [t for t in themes if os.path.isfile(t.path)] - - -def list_themes_user(): - """List user theme files.""" - themes = [*os.scandir(os.path.join(CONF_DIR, "colorschemes/dark/")), - *os.scandir(os.path.join(CONF_DIR, "colorschemes/light/"))] - return [t for t in themes if os.path.isfile(t.path)] - - -def terminal_sexy_to_wal(data): - """Convert terminal.sexy json schema to wal.""" - data["colors"] = {} - data["special"] = { - "foreground": data["foreground"], - "background": data["background"], - "cursor": data["color"][9] - } - - for i, color in enumerate(data["color"]): - data["colors"]["color%s" % i] = color - - return data - - -def parse(theme_file): - """Parse the theme file.""" - data = util.read_file_json(theme_file) - - if "wallpaper" not in data: - data["wallpaper"] = "None" - - if "alpha" not in data: - data["alpha"] = util.Color.alpha_num - - # Terminal.sexy format. - if "color" in data: - data = terminal_sexy_to_wal(data) - - return data - - -def get_random_theme(dark=True): - """Get a random theme file.""" - themes = [theme.path for theme in list_themes(dark)] - random.shuffle(themes) - return themes[0] - - -def file(input_file, light=False): - """Import colorscheme from json file.""" - util.create_dir(os.path.join(CONF_DIR, "colorschemes/light/")) - util.create_dir(os.path.join(CONF_DIR, "colorschemes/dark/")) - - theme_name = ".".join((input_file, "json")) - bri = "light" if light else "dark" - - user_theme_file = os.path.join(CONF_DIR, "colorschemes", bri, theme_name) - theme_file = os.path.join(MODULE_DIR, "colorschemes", bri, theme_name) - - # Find the theme file. - if input_file in ("random", "random_dark"): - theme_file = get_random_theme() - - elif input_file == "random_light": - theme_file = get_random_theme(light) - - elif os.path.isfile(user_theme_file): - theme_file = user_theme_file - - elif os.path.isfile(input_file): - theme_file = input_file - - # Parse the theme file. - if os.path.isfile(theme_file): - logging.info("Set theme to \033[1;37m%s\033[0m.", - os.path.basename(theme_file)) - return parse(theme_file) - - logging.error("No %s colorscheme file found.", bri) - logging.error("Try adding '-l' to set light themes.") - logging.error("Try removing '-l' to set dark themes.") - sys.exit(1) diff --git a/.local/lib/python3.9/site-packages/pywal/util.py b/.local/lib/python3.9/site-packages/pywal/util.py deleted file mode 100644 index de8eb09c..00000000 --- a/.local/lib/python3.9/site-packages/pywal/util.py +++ /dev/null @@ -1,186 +0,0 @@ -""" -Misc helper functions. -""" -import colorsys -import json -import logging -import os -import subprocess -import sys - - -class Color: - """Color formats.""" - alpha_num = "100" - - def __init__(self, hex_color): - self.hex_color = hex_color - - def __str__(self): - return self.hex_color - - @property - def rgb(self): - """Convert a hex color to rgb.""" - return "%s,%s,%s" % (*hex_to_rgb(self.hex_color),) - - @property - def xrgba(self): - """Convert a hex color to xrdb rgba.""" - return hex_to_xrgba(self.hex_color) - - @property - def rgba(self): - """Convert a hex color to rgba.""" - return "rgba(%s,%s,%s,%s)" % (*hex_to_rgb(self.hex_color), - int(self.alpha_num)/100) - - @property - def alpha(self): - """Add URxvt alpha value to color.""" - return "[%s]%s" % (self.alpha_num, self.hex_color) - - @property - def octal(self): - """Export color in octal""" - return "%s%s" % ("#", oct(int(self.hex_color[1:], 16))[2:]) - - @property - def octal_strip(self): - """Strip '#' from octal color.""" - return oct(int(self.hex_color[1:], 16))[2:] - - @property - def strip(self): - """Strip '#' from color.""" - return self.hex_color[1:] - - -def read_file(input_file): - """Read data from a file and trim newlines.""" - with open(input_file, "r") as file: - return file.read().splitlines() - - -def read_file_json(input_file): - """Read data from a json file.""" - with open(input_file, "r") as json_file: - return json.load(json_file) - - -def read_file_raw(input_file): - """Read data from a file as is, don't strip - newlines or other special characters..""" - with open(input_file, "r") as file: - return file.readlines() - - -def save_file(data, export_file): - """Write data to a file.""" - create_dir(os.path.dirname(export_file)) - - try: - with open(export_file, "w") as file: - file.write(data) - except PermissionError: - logging.warning("Couldn't write to %s.", export_file) - - -def save_file_json(data, export_file): - """Write data to a json file.""" - create_dir(os.path.dirname(export_file)) - - with open(export_file, "w") as file: - json.dump(data, file, indent=4) - - -def create_dir(directory): - """Alias to create the cache dir.""" - os.makedirs(directory, exist_ok=True) - - -def setup_logging(): - """Logging config.""" - logging.basicConfig(format=("[%(levelname)s\033[0m] " - "\033[1;31m%(module)s\033[0m: " - "%(message)s"), - level=logging.INFO, - stream=sys.stdout) - logging.addLevelName(logging.ERROR, '\033[1;31mE') - logging.addLevelName(logging.INFO, '\033[1;32mI') - logging.addLevelName(logging.WARNING, '\033[1;33mW') - - -def hex_to_rgb(color): - """Convert a hex color to rgb.""" - return tuple(bytes.fromhex(color.strip("#"))) - - -def hex_to_xrgba(color): - """Convert a hex color to xrdb rgba.""" - col = color.lower().strip("#") - return "%s%s/%s%s/%s%s/ff" % (*col,) - - -def rgb_to_hex(color): - """Convert an rgb color to hex.""" - return "#%02x%02x%02x" % (*color,) - - -def darken_color(color, amount): - """Darken a hex color.""" - color = [int(col * (1 - amount)) for col in hex_to_rgb(color)] - return rgb_to_hex(color) - - -def lighten_color(color, amount): - """Lighten a hex color.""" - color = [int(col + (255 - col) * amount) for col in hex_to_rgb(color)] - return rgb_to_hex(color) - - -def blend_color(color, color2): - """Blend two colors together.""" - r1, g1, b1 = hex_to_rgb(color) - r2, g2, b2 = hex_to_rgb(color2) - - r3 = int(0.5 * r1 + 0.5 * r2) - g3 = int(0.5 * g1 + 0.5 * g2) - b3 = int(0.5 * b1 + 0.5 * b2) - - return rgb_to_hex((r3, g3, b3)) - - -def saturate_color(color, amount): - """Saturate a hex color.""" - r, g, b = hex_to_rgb(color) - r, g, b = [x/255.0 for x in (r, g, b)] - h, l, s = colorsys.rgb_to_hls(r, g, b) - s = amount - r, g, b = colorsys.hls_to_rgb(h, l, s) - r, g, b = [x*255.0 for x in (r, g, b)] - - return rgb_to_hex((int(r), int(g), int(b))) - - -def rgb_to_yiq(color): - """Sort a list of colors.""" - return colorsys.rgb_to_yiq(*hex_to_rgb(color)) - - -def disown(cmd): - """Call a system command in the background, - disown it and hide it's output.""" - subprocess.Popen(cmd, - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL) - - -def get_pid(name): - """Check if process is running by name.""" - try: - subprocess.check_output(["pidof", "-s", name]) - except subprocess.CalledProcessError: - return False - - return True diff --git a/.local/lib/python3.9/site-packages/pywal/wallpaper.py b/.local/lib/python3.9/site-packages/pywal/wallpaper.py deleted file mode 100644 index ba61e668..00000000 --- a/.local/lib/python3.9/site-packages/pywal/wallpaper.py +++ /dev/null @@ -1,156 +0,0 @@ -"""Set the wallpaper.""" -import ctypes -import logging -import os -import shutil -import subprocess -import urllib.parse - -from .settings import CACHE_DIR, HOME, OS -from . import util - - -def get_desktop_env(): - """Identify the current running desktop environment.""" - desktop = os.environ.get("XDG_CURRENT_DESKTOP") - if desktop: - return desktop - - desktop = os.environ.get("DESKTOP_SESSION") - if desktop: - return desktop - - desktop = os.environ.get("GNOME_DESKTOP_SESSION_ID") - if desktop: - return "GNOME" - - desktop = os.environ.get("MATE_DESKTOP_SESSION_ID") - if desktop: - return "MATE" - - desktop = os.environ.get("SWAYSOCK") - if desktop: - return "SWAY" - - desktop = os.environ.get("DESKTOP_STARTUP_ID") - if desktop and "awesome" in desktop: - return "AWESOME" - - return None - - -def xfconf(path, img): - """Call xfconf to set the wallpaper on XFCE.""" - util.disown(["xfconf-query", "--channel", "xfce4-desktop", - "--property", path, "--set", img]) - - -def set_wm_wallpaper(img): - """Set the wallpaper for non desktop environments.""" - if shutil.which("feh"): - util.disown(["feh", "--bg-fill", img]) - - elif shutil.which("nitrogen"): - util.disown(["nitrogen", "--set-zoom-fill", img]) - - elif shutil.which("bgs"): - util.disown(["bgs", "-z", img]) - - elif shutil.which("hsetroot"): - util.disown(["hsetroot", "-fill", img]) - - elif shutil.which("habak"): - util.disown(["habak", "-mS", img]) - - elif shutil.which("display"): - util.disown(["display", "-backdrop", "-window", "root", img]) - - else: - logging.error("No wallpaper setter found.") - return - - -def set_desktop_wallpaper(desktop, img): - """Set the wallpaper for the desktop environment.""" - desktop = str(desktop).lower() - - if "xfce" in desktop or "xubuntu" in desktop: - # XFCE requires two commands since they differ between versions. - xfconf("/backdrop/screen0/monitor0/image-path", img) - xfconf("/backdrop/screen0/monitor0/workspace0/last-image", img) - - elif "muffin" in desktop or "cinnamon" in desktop: - util.disown(["gsettings", "set", - "org.cinnamon.desktop.background", - "picture-uri", "file://" + urllib.parse.quote(img)]) - - elif "gnome" in desktop or "unity" in desktop: - util.disown(["gsettings", "set", - "org.gnome.desktop.background", - "picture-uri", "file://" + urllib.parse.quote(img)]) - - elif "mate" in desktop: - util.disown(["gsettings", "set", "org.mate.background", - "picture-filename", img]) - - elif "sway" in desktop: - util.disown(["swaymsg", "output", "*", "bg", img, "fill"]) - - elif "awesome" in desktop: - util.disown(["awesome-client", "gears.wallpaper.maximized(", img, ")"]) - - else: - set_wm_wallpaper(img) - - -def set_mac_wallpaper(img): - """Set the wallpaper on macOS.""" - db_file = "Library/Application Support/Dock/desktoppicture.db" - db_path = os.path.join(HOME, db_file) - subprocess.call(["sqlite3", db_path, "update data set value = '%s'" % img]) - - # Kill the dock to fix issues with cached wallpapers. - # macOS caches wallpapers and if a wallpaper is set that shares - # the filename with a cached wallpaper, the cached wallpaper is - # used instead. - subprocess.call(["killall", "Dock"]) - - -def set_win_wallpaper(img): - """Set the wallpaper on Windows.""" - # There's a different command depending on the architecture - # of Windows. We check the PROGRAMFILES envar since using - # platform is unreliable. - if "x86" in os.environ["PROGRAMFILES"]: - ctypes.windll.user32.SystemParametersInfoW(20, 0, img, 3) - else: - ctypes.windll.user32.SystemParametersInfoA(20, 0, img, 3) - - -def change(img): - """Set the wallpaper.""" - if not os.path.isfile(img): - return - - desktop = get_desktop_env() - - if OS == "Darwin": - set_mac_wallpaper(img) - - elif OS == "Windows": - set_win_wallpaper(img) - - else: - set_desktop_wallpaper(desktop, img) - - logging.info("Set the new wallpaper.") - - -def get(cache_dir=CACHE_DIR): - """Get the current wallpaper.""" - current_wall = os.path.join(cache_dir, "wal") - - if os.path.isfile(current_wall): - return util.read_file(current_wall)[0] - - return "None" -- 2.25.1