Skip to content

feat(config): honour EFINANCE_CACHE_DIR env var#244

Open
enihcam wants to merge 2 commits into
Micro-sheep:mainfrom
enihcam:feat/efinance-cache-dir
Open

feat(config): honour EFINANCE_CACHE_DIR env var#244
enihcam wants to merge 2 commits into
Micro-sheep:mainfrom
enihcam:feat/efinance-cache-dir

Conversation

@enihcam

@enihcam enihcam commented Jul 10, 2026

Copy link
Copy Markdown

背景

efinance/config/__init__.py 硬编码 DATA_DIR = HERE / "../data",import 时无条件 mkdir(parents=True, exist_ok=True)。在只读 rootfs(容器、system Python)下,import 阶段 PermissionError,整个包无法加载。

修改

3 步解析:

  1. $EFINANCE_CACHE_DIR 若设置(用户覆盖)
  2. $XDG_CACHE_HOME/efinance
  3. <site-packages>/efinance/../data(原默认,向后兼容)

mkdir 改为 best-effort:失败只 log,不 raise。

MAX_CONNECTIONS = 50 / SHOW_TICKFLOW_PROMPT = True 不动;SEARCH_RESULT_CACHE_PATH 字段名不动,值在 env 覆盖时跟随 env。efinance.utils.SEARCH_RESULT_CACHE_PATH 等 re-export 路径不动。

验证

# 默认行为(无 env var)—— 路径与改前完全一致
$ python -c "import efinance as ef; print(ef.config.DATA_DIR)"
/usr/local/lib/python3.11/site-packages/efinance/../data

# 容器场景
$ EFINANCE_CACHE_DIR=/app/data/.efinance-cache python -c "import efinance as ef; print(ef.config.DATA_DIR)"
/app/data/.efinance-cache

# XDG fallback
$ XDG_CACHE_HOME=/var/tmp python -c "import efinance as ef; print(ef.config.DATA_DIR)"
/var/tmp/efinance

相关

下游 daily_stock_analysis 容器化部署需要:ZhuLinsen/daily_stock_analysis#1977

opencode and others added 2 commits July 10, 2026 16:50
Upstream hardcodes DATA_DIR = HERE/../data and unconditionally mkdir()s at import. RO rootfs (container, system Python) breaks the import with PermissionError.

3-step resolution:

* $EFINANCE_CACHE_DIR (user override)

* $XDG_CACHE_HOME/efinance

* legacy default (unchanged behaviour)

mkdir() is best-effort: OSError is logged, not raised. Default path and constants unchanged when no env var is set.

Refs daily_stock_analysis#1977.
@enihcam

enihcam commented Jul 23, 2026

Copy link
Copy Markdown
Author

@Micro-sheep please take a look. this is important for docker-friendly setup of efinance applications.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant