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

Broken examples in order_request and subscription_request docstrings, async SDK guide and CLI tips

未关闭
#1,231 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

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

调研方向

Read the docstrings for planet.order_request.build_request, planet.order_request.delivery, and planet.subscription_request.build_request, plus the “Create an order request” section in docs/python/async-sdk-guide.md and “Large Dataset Visualization” in docs/cli/cli-tips-tricks.md. Reproduce the reported syntax and command errors, then correct the examples so they compile, pass tools by keyword, and use the documented CLI command. Done when all five examples work as described; the issue author reports having a patch and offers to open a PR.

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

描述

Expected behavior
Each documented example runs when copied (placeholder keys aside). The order_request.build_request example produces an order that contains its tools.

Actual behavior (describe the problem)
Five examples fail. They fail in the source on main (a6c66cb, the 3.7.0 tag) and in the 3.7.0 wheel. The published docs (planet-sdk-for-python.readthedocs.io/en/latest/, pages python/sdk-reference, python/async-sdk-guide and cli/cli-tips-tricks) show the same text.

  1. planet.order_request.build_request docstring: SyntaxError: unmatched ')' at 'analytic', 'REOrthoTile')]). With that fixed, the last line build_request('test_order', products, tools) passes tools as the third positional argument, which is subscription_id. No error is raised. The result has no tools key and subscription_id holds the tool list. The example also uses projection='WSG84'; the reproject_tool docstring asks for EPSG:n.
  2. planet.order_request.delivery docstring: SyntaxError: invalid syntax. Perhaps you forgot a comma? at archive_filename='{{order_id}}.zip'. There is no comma before cloud_config.
  3. planet.subscription_request.build_request docstring: NameError: name 'sentinel_hub' is not defined. The import line lists only build_request, catalog_source, amazon_s3.
  4. docs/python/async-sdk-guide.md, "Create an order request": IndentationError. The function body is indented 4 spaces up to the oregon_aoi dict and 3 spaces after it. Once that is fixed: SyntaxError, missing comma after item_type='PSScene'. The JSON block below it is invalid too: "name":"oregon_order”, ends in a curly quote, and the key is "Item_ids" where the code uses item_ids.
  5. docs/cli/cli-tips-tricks.md, "Large Dataset Visualization": planet data collect skysat-large.geojsons gives Error: No such command 'collect'. The command is planet collect, as the sentence above the block says.

Related Issues
None of these is reported. Nearby:

  • #869 (closed) fixed other broken CLI examples.
  • #938 (closed) updated older docstring examples.
  • #874 (open) tracks retired item types in examples. The build_request example here uses REOrthoTile.
  • #373 (open) "Establish testing for documentation".
  • #311 (open) "Bring docs_test and examples up to date"; covers the docs_test nox session.

Workaround

  1. Remove the stray ]) at the end of the product(...) line, pass tools=tools, and use projection='EPSG:4326'.
  2. Add a comma after '{{order_id}}.zip'.
  3. Also import sentinel_hub.
  4. Re-indent the body to 4 spaces, add the comma after item_type='PSScene', replace the curly quote, and use the key item_ids.
  5. Use planet collect.

I have a patch for all five (docstrings and docs only; unit tests, flake8 and yapf pass) and can open a PR if you want one.

Minimum, Complete, Viable Code Sample
No API key is needed. product() fetches the public bundle spec once.

# check_examples.py
import inspect, re, textwrap
from planet import order_request, subscription_request


def fenced(fn):
    block = re.search(r"```python\n(.*?)```", inspect.getdoc(fn), re.S).group(1)
    lines = textwrap.dedent(block).splitlines()
    return "\n".join(l[4:] if l.startswith((">>> ", "... ")) else
                     ("" if l in (">>>", "...") else l) for l in lines)


for fn in (order_request.build_request, order_request.delivery):
    try:
        compile(fenced(fn), fn.__name__, "exec")
        print(fn.__name__, "compiles")
    except SyntaxError as e:
        print(f"order_request.{fn.__name__}: SyntaxError: {e.msg}: {e.text.strip()!r}")

# subscription_request.build_request uses an "Example::" block
code = textwrap.dedent(inspect.getdoc(subscription_request.build_request).split("Example::\n", 1)[1])
try:
    exec(code, {"ACCESS_KEY_ID": "id", "SECRET_ACCESS_KEY": "secret"})
except Exception as e:
    print(f"subscription_request.build_request: {type(e).__name__}: {e}")

# order_request.build_request example with only the bracket typo fixed
products = [order_request.product(["20170614_113217_3163208_RapidEye-5"], "analytic", "REOrthoTile")]
tools = [order_request.toar_tool(scale_factor=10000)]
req = order_request.build_request("test_order", products, tools)  # call as written in the docstring
print(sorted(req), "tools" in req, req["subscription_id"])
> python check_examples.py
order_request.build_request: SyntaxError: unmatched ')': "'analytic', 'REOrthoTile')])"
order_request.delivery: SyntaxError: invalid syntax. Perhaps you forgot a comma?: "archive_filename='{{order_id}}.zip'"
subscription_request.build_request: NameError: name 'sentinel_hub' is not defined
['name', 'products', 'subscription_id'] False [{'toar': {'scale_factor': 10000}}]

For 4, copy the python block under "Create an order request" in docs/python/async-sdk-guide.md into guide.py and add import planet as the first line (without that line the same error is reported at line 13):

> python -m py_compile guide.py
Sorry: IndentationError: unindent does not match any outer indentation level (guide.py, line 14)

With the body re-indented to 4 spaces:

> python -m py_compile guide.py
  File "guide.py", line 21
    item_type='PSScene'
              ^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?

For 5:

> echo '{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[1,2]}}' > skysat-large.geojsons
> planet data collect skysat-large.geojsons
Usage: planet data [OPTIONS] COMMAND [ARGS]...
Try 'planet data --help' for help.

Error: No such command 'collect'.
> planet collect skysat-large.geojsons
{"type": "FeatureCollection", "features": [ ... ]}

Environment Information

  • Operation System Information: macOS-27.0.1-arm64-arm-64bit
  • Python version: 3.12.15 (main, Oct 9 2026, 15:10:57) [Clang 22.1.3 ]
  • Planet package version: planet, version 3.7.0 (PyPI wheel, and main at a6c66cb, which is the 3.7.0 tag)

Installation Method

  • pip wheel (uv pip install planet) and from source (pip install -e .)

Found and reproduced with an AI coding assistant, then checked by me.

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

环境准备

从这里开始

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

planetlabs/planet-client-python 的其他 Issue

查看 planetlabs/planet-client-python 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

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