"""Bundled resources and writable, private user data locations.""" import os from pathlib import Path def resource_root() -> Path: source = Path(__file__).resolve().parent.parent return source if (source / 'templates/invoice.html.j2').is_file() else Path(__file__).resolve().parent / 'data' def private_root(resources: Path | None = None) -> Path: root = resources or resource_root() default = root / 'private' if root.name != 'data' else Path.home() / '.local/share/jr-einvoice' return Path(os.environ.get('JR_EINVOICE_HOME', str(default))).expanduser().resolve() def presets_root(resources: Path | None = None) -> Path: return Path(os.environ.get('JR_EINVOICE_PRESETS', str(private_root(resources) / 'presets'))).expanduser().resolve()