improving config documentation and allowing for fallbacks
This commit is contained in:
parent
66453cb29b
commit
c75747f371
1 changed files with 49 additions and 6 deletions
55
my/reddit.py
55
my/reddit.py
|
@ -2,13 +2,58 @@
|
||||||
Reddit data: saved items/comments/upvotes/etc.
|
Reddit data: saved items/comments/upvotes/etc.
|
||||||
"""
|
"""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List, Sequence, Mapping, Iterator
|
from typing import List, Sequence, Mapping, Iterator, Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from .kython.kompress import CPath
|
from .kython.kompress import CPath
|
||||||
from .common import mcachew, get_files, LazyLogger, make_dict
|
from .core.common import mcachew, get_files, LazyLogger, make_dict, PathIsh, classproperty
|
||||||
|
|
||||||
from my.config import reddit as config
|
from my.config import reddit as cfg
|
||||||
import my.config.repos.rexport.dal as rexport
|
|
||||||
|
from types import ModuleType
|
||||||
|
|
||||||
|
class config:
|
||||||
|
'''
|
||||||
|
Reddit module uses [[rexport][https://github.com/karlicoss/rexport]] output.
|
||||||
|
|
||||||
|
config reddit:
|
||||||
|
export_dir: Path | str # path to the exported data
|
||||||
|
rexport : Optional[Path | str] # path to a local clone of rexport
|
||||||
|
'''
|
||||||
|
# TODO config could load export.. is it too mad?
|
||||||
|
|
||||||
|
|
||||||
|
@classproperty
|
||||||
|
def export_dir(cls) -> PathIsh:
|
||||||
|
# todo migrate this to export_path?
|
||||||
|
# TODO here we can defensively extract export_path/export_dir?
|
||||||
|
return cfg.export_dir
|
||||||
|
# TODO use export_path
|
||||||
|
|
||||||
|
@classproperty
|
||||||
|
def rexport(cls) -> ModuleType:
|
||||||
|
# todo return Type[rexport]??
|
||||||
|
# todo ModuleIsh?
|
||||||
|
rexport: Optional[PathIsh] = getattr(cfg, 'rexport', None)
|
||||||
|
|
||||||
|
if rexport is not None:
|
||||||
|
from my.cfg import set_repo
|
||||||
|
set_repo('rexport', rexport)
|
||||||
|
|
||||||
|
import my.config.repos.rexport.dal as m
|
||||||
|
return m
|
||||||
|
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# TODO not sure what is the right way to handle this..
|
||||||
|
import my.config.repos.rexport.dal as rexport
|
||||||
|
|
||||||
|
# interesting... if I move this before TYPE_CHECKING, it fails
|
||||||
|
# apparently the former wins in case of mypy?
|
||||||
|
rexport = config.rexport
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
logger = LazyLogger(__name__, level='debug')
|
||||||
|
|
||||||
|
|
||||||
def inputs() -> Sequence[Path]:
|
def inputs() -> Sequence[Path]:
|
||||||
|
@ -19,8 +64,6 @@ def inputs() -> Sequence[Path]:
|
||||||
# todo move the assert to get_files?
|
# todo move the assert to get_files?
|
||||||
return tuple(res)
|
return tuple(res)
|
||||||
|
|
||||||
logger = LazyLogger(__name__, level='debug')
|
|
||||||
|
|
||||||
|
|
||||||
Sid = rexport.Sid
|
Sid = rexport.Sid
|
||||||
Save = rexport.Save
|
Save = rexport.Save
|
||||||
|
|
Loading…
Add table
Reference in a new issue