Skip to content

docs: remove phantom parameters from two public docstrings (#2392) - #2493

Open
RerankerGuo wants to merge 2 commits into
MemTensor:dev-v2.0.36from
RerankerGuo:fix/issue-2392-docstring-phantoms
Open

RerankerGuo wants to merge 2 commits into
MemTensor:dev-v2.0.36from
RerankerGuo:fix/issue-2392-docstring-phantoms

Conversation

@RerankerGuo

Copy link
Copy Markdown
Contributor

Summary

Two public docstrings documented parameters that the AST no longer exposes.

AST-verified mismatches

  1. RedisPersistentUserManager.__init__(host, port, password, db, decode_responses) — the docstring’s Args section started with user_id (str, optional): User ID. Defaults to root., but user_id is not a parameter (it is a leftover from an earlier API). Dropped.
  2. concat_original_source(graph_results, rerank_source) — the docstring documented merge_field (List[str]), which is actually a local variable inside the function, and omitted the real rerank_source parameter (the comma-separated metadata field names that the function actually accepts). Rewrote the docstring with both parameters documented, with their actual semantics.

Regression guard

To prevent the same kind of drift from sneaking back in, this commit also adds tests/test_docstring_signature_parity.py. It parses each function’s source file (so it sees the real signature even when the function is wrapped by @require_python_package), extracts the parameter list from the AST, extracts the Args: block parameter names from the docstring, and asserts the two sets match. Any future divergence in either direction fails the test loudly.

Verification

PYTHONPATH=src pytest tests/test_docstring_signature_parity.py -v
============================== 2 passed in 5.97s ==============================

Ruff: ruff format --check and ruff check both clean on touched files (0 new findings vs main).

Out of scope

  • No new dependencies
  • No public API / OpenAPI contract changes
  • No DB schema, migration, or graph model changes
  • No Makefile / pyproject.toml / pre-commit / GitHub workflow changes
  • Docs-only

Closes #2392

@Memtensor-AI Memtensor-AI added area:core MOS 编排层 / 框架底座 / 跨模块问题 status:in-progress Someone or AI is working on it | 人工或 AI 正在处理 labels Oct 13, 2026
@Memtensor-AI

Memtensor-AI commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

🤖 Open Code Review

Target: PR #2493
Task: a4e5f0eb5c8a217a
Base: dev-v2.0.36
Head: fix/issue-2392-docstring-phantoms

✅ OpenCodeReview: Review complete: 0 finding(s) across 2 selected item(s).

Generated by cloud-assistant via Open Code Review.

@Memtensor-AI

Copy link
Copy Markdown
Collaborator

✅ Automated Test Results: PASSED

All tests passed (2/2 executed). memos_python_core/changed-repo-python: 2/2. Duration: 9s

Branch: fix/issue-2392-docstring-phantoms

@RerankerGuo

Copy link
Copy Markdown
Contributor Author

Fixed in 22ecd8f.

Build failure. ruff format --check rejected tests/test_docstring_signature_parity.py ("Would reformat"), failing every build-matrix job at the Ruff checks step. The file is now formatted.

OpenCodeReview findings 1 and 2. _signature_param_names now raises AssertionError when it cannot locate the AST definition instead of degrading to an empty signature set — the silent empty set made both parity diffs empty by construction, so the assertions could never fail, which is the opposite of the "fail loudly" contract in the module docstring. The unreachable module-scope fallback branch in _function_def_in_class (the helper is only ever called for dotted qualnames) is removed, and its docstring no longer claims a fallback that cannot happen.

@RerankerGuo
RerankerGuo force-pushed the fix/issue-2392-docstring-phantoms branch from 22ecd8f to c8c683f Compare October 27, 2026 18:52
@Memtensor-AI

Copy link
Copy Markdown
Collaborator

✅ Automated Test Results: PASSED

All tests passed (2/2 executed). memos_python_core/changed-repo-python: 2/2. Duration: 10s

Branch: fix/issue-2392-docstring-phantoms

@Memtensor-AI Memtensor-AI added status:ready Ready for implementation; waiting for assignee or AI dispatch | 可进入实现,等待认领或派发 and removed status:in-progress Someone or AI is working on it | 人工或 AI 正在处理 labels Oct 28, 2026
RerankerGuo and others added 2 commits November 4, 2026 21:58
…#2392)

Two public docstrings documented parameters that the AST no longer
exposes:

1. `RedisPersistentUserManager.__init__` listed `user_id (str, optional):`
   as the first Args entry, but the signature is `(host, port, password,
   db, decode_responses)` — `user_id` is a leftover from an earlier API.
   Removed the phantom line.

2. `concat_original_source` listed `merge_field (List[str]): List of fields
   to merge`, which is actually a local variable inside the function, and
   omitted the real `rerank_source` parameter (the comma-separated metadata
   field names that the function actually accepts). Rewrote the docstring
   with both `graph_results` and `rerank_source` documented, with their
   actual semantics.

To prevent the same kind of drift from sneaking back in, this commit also
adds tests/test_docstring_signature_parity.py: it parses each function's
source file, extracts the parameter list from the AST, extracts the
`Args:` block parameter names from the docstring, and asserts the two
sets match. The check works around the `@require_python_package`
decorator that rewrites `__code__`, so it sees the real `__init__`
signature rather than the wrapper's.

Docs-only functional change; the parity test is the regression guard.

Fixes MemTensor#2392.
ruff format rejected the over-long re.search line in
test_docstring_signature_parity.py, failing every build-matrix job at
the Ruff checks step; the file is now formatted.

An AST-lookup miss previously degraded to an empty signature set, which
made both parity diffs empty by construction so the assertions could
never fail. Raise AssertionError instead so the 'fail loudly' contract
in the module docstring holds. The module-scope fallback branch in
_function_def_in_class was unreachable (the helper is only called for
dotted qualnames) and is removed.
@RerankerGuo
RerankerGuo force-pushed the fix/issue-2392-docstring-phantoms branch from c8c683f to 46c9b9f Compare November 4, 2026 13:58
@Memtensor-AI Memtensor-AI added status:in-progress Someone or AI is working on it | 人工或 AI 正在处理 and removed status:ready Ready for implementation; waiting for assignee or AI dispatch | 可进入实现,等待认领或派发 labels Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:core MOS 编排层 / 框架底座 / 跨模块问题 status:in-progress Someone or AI is working on it | 人工或 AI 正在处理

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants