Skip to content

fix(core): read version from package metadata instead of hardcoding#9

Merged
qxbyte merged 2 commits into
mainfrom
fix/dynamic-version
Jun 5, 2026
Merged

fix(core): read version from package metadata instead of hardcoding#9
qxbyte merged 2 commits into
mainfrom
fix/dynamic-version

Conversation

@qxbyte
Copy link
Copy Markdown
Owner

@qxbyte qxbyte commented Jun 5, 2026

问题

codemap --version 显示的版本号与实际安装的包版本不一致。

根因src/codemap/__init__.py 中硬编码了 __version__ = "0.1.0",CLI 直接读取这个字符串。每次在 pyproject.toml 中 bump 版本时,这个文件从未被同步更新,导致安装后 CLI 显示过时版本。

例如:安装 codemap-core 0.2.0 后,codemap --version 仍然显示 0.1.0

修复

__init__.py 改为通过 importlib.metadata.version() 动态读取已安装包的版本:

from importlib.metadata import version, PackageNotFoundError

try:
    __version__ = version("codemap-core")
except PackageNotFoundError:
    __version__ = "0.0.0.dev0"

这样版本号只有一个源头(pyproject.toml),CLI 运行时读取安装后的包元数据,永远一致。

测试

  • pip install -e ".[dev]"codemap --version 显示正确版本
  • 未安装时 fallback 到 0.0.0.dev0(开发场景)

The CLI `--version` was reading from a hardcoded __version__ string in
__init__.py, which was never updated when bumping pyproject.toml versions.
This caused `codemap --version` to show stale version numbers after install.

Switch to importlib.metadata.version() so the runtime version always matches
the installed package metadata (single source of truth: pyproject.toml).
@pronto-qxbyte
Copy link
Copy Markdown

pronto-qxbyte Bot commented Jun 5, 2026

PRonto 评审

PR: #9 fix(core): read version from package metadata instead of hardcoding
作者: @qxbyte
分支: fix/dynamic-version -> main

概览

将版本号从硬编码改为动态获取,提供了未安装时的优雅降级,改进了版本管理。

问题清单

  • ✅ 未发现明显问题

建议改进

  • 确保 pyproject.tomlsetup.cfg 中定义了与 importlib.metadata 查询相匹配的包名和版本字段。

本评审由 PRonto 经 MiMo 生成

@pronto-qxbyte
Copy link
Copy Markdown

pronto-qxbyte Bot commented Jun 5, 2026

PRonto 评审

PR: #9 fix(core): read version from package metadata instead of hardcoding
作者: @qxbyte
分支: fix/dynamic-version -> main

概览

改进版本号管理,从硬编码改为动态获取,但实现细节有待优化。

问题清单

  • 🟡 P1 src/codemap/__init__.py:6 — 包名 “codemap-core” 硬编码,应与 __name__ 关联以保持一致。
  • 🟢 P2 src/codemap/__init__.py:8 — 回退版本 “0.0.0.dev0” 与常见规范 “0.0.0” 不同,建议明确其含义。

建议改进

  • 使用 version(__name__) 或定义变量存储包名,避免硬编码字符串。

本评审由 PRonto 经 MiMo 生成

@qxbyte qxbyte merged commit 9af0c95 into main Jun 5, 2026
8 checks passed
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