Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Unchecked multi-value query parameters are sent as a single tuple string

未关闭 适合新手
#123 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python
领域
api

调研方向

先从 Query.parameters 和 _build_url 开始,然后检查 VariableQuery.instance_format 以了解相关的序列行为。使用已解析的 URL 和已准备的 Requests 运行回归用例和对照用例,随后使用 VCR record_mode='none' 运行完整的 148 项测试套件;当元组值使用重复的查询键,且现有的列表、标量、分页和专用方法行为仍然通过测试时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

Reproduction

On develop at 9f7648ccb925b9c0eb50241e35f15d6454e89505, the unchecked multi-value path in Query.parameters stores a tuple under a key ending in [], but _build_url only expands lists.

from cmr import CollectionQuery

query = CollectionQuery().parameters(data_center=["FIRST", "SECOND"])
print(query._build_url())

The query string is data_center[]=('FIRST', 'SECOND'). It should be data_center[]=FIRST&data_center[]=SECOND. Singleton and empty iterables are also serialized as tuple representations. The same base-class behavior affects every query type and reaches requests made by results, get, and hits.

VariableQuery.instance_format also accepts sequences, but a tuple argument has the same problem without the existing array suffix.

Expected behavior

Expand both list and tuple parameter values into repeated query keys, without adding a second [] to keys that already have one. Keep the existing stored parameter representation, dedicated-method tuple unpacking, scalar handling, and pagination behavior.

Nineteen new regression/control cases use parsed URLs and real Requests prepared requests with only the transport replaced. Seventeen fail on unchanged code, while the existing list/scalar controls pass. The focused fix passes all 148 tests, with existing VCR cassettes replayed in record_mode='none' so no live CMR requests are made.

主要语言
Python
星标
29
派生
32
PR 合并指标
30 天内没有已合并 PR

环境准备

我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

nasa/python_cmr 的其他 Issue

查看 nasa/python_cmr 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。