diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c6ec8d5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "packages/apscheduler"] + path = packages/apscheduler + url = https://github.com/agronholm/apscheduler +[submodule "packages/ptpython"] + path = packages/ptpython + url = https://github.com/prompt-toolkit/ptpython.git diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..b444867 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,14 @@ +[MASTER] + +init-hook= + import sys; + sys.path.insert(0, '${workspaceFolder}/src') + sys.path.insert(1, '${workspaceFolder}/packages'); + +disable= + invalid-name, + useless-super-delegation, + pointless-string-statement, + exec-used, + bad-whitespace, + missing-final-newline diff --git a/dependencies.txt b/dependencies.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/dependencies.txt @@ -0,0 +1 @@ + diff --git a/packages/apscheduler b/packages/apscheduler new file mode 160000 index 0000000..cb50f0d --- /dev/null +++ b/packages/apscheduler @@ -0,0 +1 @@ +Subproject commit cb50f0dab93fccf39c091062f48899ab4ac53a51 diff --git a/packages/ptpython b/packages/ptpython new file mode 160000 index 0000000..89017ba --- /dev/null +++ b/packages/ptpython @@ -0,0 +1 @@ +Subproject commit 89017ba158ed1d95319233fa5aedf3931c3b8b77 diff --git a/src/test.py b/src/test.py index d041966..ef2949c 100644 --- a/src/test.py +++ b/src/test.py @@ -1,12 +1,13 @@ import os import sys import pprint +import dateutil -from zasd.filesystems.zfs import ZFSFilesystem -from zasd.apsched import AsyncIOPriorityScheduler +#from zasd.filesystems.zfs import ZFSFilesystem +#from zasd.apsched import AsyncIOPriorityScheduler -fs = ZFSFilesystem() -fs.label() +#fs = ZFSFilesystem() +#fs.label() pprint.pprint(dict(os.environ), indent=2) pprint.pprint(sys.path) diff --git a/src/zasd/__init__.py b/src/zasd/__init__.py index 49e41ba..4abcf66 100644 --- a/src/zasd/__init__.py +++ b/src/zasd/__init__.py @@ -15,7 +15,7 @@ from apscheduler.triggers.interval import IntervalTrigger # type: ignore from zasd.apsched import AsyncIOPriorityScheduler, \ AsyncIOPriorityExecutor -from zasd.config_loader import load_config +from zasd.config.loader import load_config import zasd.config as config from zasd.filesystems.zfs import ZFSFilesystem from zasd.filesystem import FilesystemRegistry diff --git a/src/zasd/config.py b/src/zasd/config/__init__.py similarity index 100% rename from src/zasd/config.py rename to src/zasd/config/__init__.py diff --git a/src/zasd/config_loader.py b/src/zasd/config/loader.py similarity index 90% rename from src/zasd/config_loader.py rename to src/zasd/config/loader.py index 7f74c91..4c04443 100644 --- a/src/zasd/config_loader.py +++ b/src/zasd/config/loader.py @@ -2,7 +2,7 @@ from typing import MutableMapping, Any -from sys import argv, executable +from sys import argv, executable, stdout from os import environ, getcwd, sep as psep from os.path import dirname, abspath, join as joinpath, \ expanduser, splitdrive, isfile @@ -28,6 +28,9 @@ import zasd.config as _config _CONFIG_BASENAME = 'zasd.conf.py' _CONFIG_FILENAMES = [_CONFIG_BASENAME, '.' + _CONFIG_BASENAME] +_WARNING_WAIT = 3 +#_WARNING_WAIT = 10 + # Default configuration _DEFAULT_CONFIG = dict( zfs_path = '/usr/local/bin/zfs', @@ -142,20 +145,23 @@ async def load_config(): log.debug('Loaded configuration') - #if _config.get('log_level') <= logging.DEBUG: - log.debug('') - for line in pprint.pformat(_config.reference()).split('\n'): - logging.debug(_config.get('tab_size') * ' ' + line) - log.debug('') + if _config.get('log_level') <= logging.DEBUG: + log.debug('') + for line in pprint.pformat(_config).split('\n'): + logging.debug(_config.get('tab_size') * ' ' + line) + log.debug('') async def _warn_default(): log.warning('') - log.warning('Waiting 10 seconds before loading default configuration...') + log.warning( + 'Waiting %s seconds before loading default configuration...', + _WARNING_WAIT) log.warning('') - await asyncio.sleep(10) + await asyncio.sleep(_WARNING_WAIT) + stdout.write('\r') log.warning('Loading default configuration') log.warning('') - return deepcopy(_DEFAULT_CONFIG) + _config.change(deepcopy(_DEFAULT_CONFIG)) # pylint: disable=dangerous-default-value def _merge_configs(base, diff, path=[]): diff --git a/src/zasd/repl.py b/src/zasd/repl.py index f704f6e..a04f484 100644 --- a/src/zasd/repl.py +++ b/src/zasd/repl.py @@ -50,13 +50,13 @@ class DictObject: @asyncio.coroutine def repl(): - globals = dict( + _globals = dict( config = DictObject(config.reference(), 'config') ) - locals = dict() + _locals = dict() try: yield from ptpython.repl.embed( - globals=globals, locals=locals, return_asyncio_coroutine=True, + globals=_globals, locals=_locals, return_asyncio_coroutine=True, patch_stdout=True, vi_mode=True) except EOFError: asyncio.get_event_loop().stop() \ No newline at end of file diff --git a/vs.code-workspace b/vs.code-workspace index 8546d3b..bba9918 100644 --- a/vs.code-workspace +++ b/vs.code-workspace @@ -7,13 +7,9 @@ "settings": { "editor.rulers": [80], "terminal.integrated.env.osx": { - "PYTHONPATH": "${workspaceFolder}/src", - "MYPYPATH": "${workspaceFolder}/src" + "PYTHONPATH": "${workspaceFolder}/src:${workspaceFolder}/packages/apscheduler", + "MYPYPATH": "${workspaceFolder}/src:${workspaceFolder}/packages" }, - "python.linting.pylintArgs": [ - "--init-hook", "import sys; sys.path.insert(0, '${workspaceFolder}/src')", - "-d", "invalid-name,useless-super-delegation,pointless-string-statement,exec-used,bad-whitespace,missing-final-newline" - ], "python.pythonPath": "/usr/local/bin/python" } } \ No newline at end of file