Downloaded file names keep the URL query string, invalid on Windows
メンテナーはふだん 3 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
climada/util/files_handler.pyの81行目付近と、climada/util/api_client.pyの567行目付近を読みます。issueでは、URLに基づくファイル名の抽出が指摘されています。これらのダウンロードパスに関する既存のテストを確認し、クエリ文字列を含むURLのテストを追加します。両方のパスでクエリ文字列を含まないローカルファイル名が生成され、Windowsでの再現時に無効なファイル名のエラーが発生しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
download_file derives the local filename from the URL using url.split("/")[-1], which keeps the query string (climada/util/files_handler.py:81). The configured distance-to-coast URL ends in ?download=1, so the filename becomes GMT_intermediate_coast_distance_01d.zip?download=1. Since ? is not a valid character in Windows filenames, Centroids.get_dist_coast raises OSError: [Errno 22].
The same pattern is at climada/util/api_client.py:567.
To Reproduce
Steps to reproduce the behavior/error:
- On Windows, with no
GMT_intermediate_coast_distance_01d.tifin~/climada/data - Run the code below
Code example:
from climada.util.coordinates import dist_to_coast_nasa
dist_to_coast_nasa([46.0], [8.0])
# OSError: [Errno 22] Invalid argument:
# '...\\climada\\data\\GMT_intermediate_coast_distance_01d.zip?download=1'
Expected behavior
The query string is not part of the file name. Proposed fix at both sites:
from pathlib import PurePosixPath
from urllib.parse import urlsplit
file_name = PurePosixPath(urlsplit(url).path).name
# api_client.py: path /= unquote(PurePosixPath(urlsplit(url).path).name)
Happy to open a PR.
Screenshots
n/a
Climada Version: 6.1.1-dev (develop)
System Information (please complete the following information):
- Operating system and version: Windows 11 (10.0.26200)
- Python version: 3.12.13
Additional context
n/a
- 主要言語
- Jupyter Notebook
- スター
- 478
- フォーク
- 166
- 平均マージ
- 2日 31分
- マージ済み PR(30日)
- 4
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
CLIMADA-project/climada_python のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
CLIMADA-project/climada_python#1337 ·
メンテナーはふだん 3 日以内に返信
-
CartoDB basemaps now need an API key (somewhat urgent)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
CLIMADA-project/climada_python#1332 · コメント 4 件 · リアクション 1 件 ·
メンテナーはふだん 3 日以内に返信
-
warnings
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
CLIMADA-project/climada_python#1241 ·
メンテナーはふだん 3 日以内に返信
-
ResourceWarningオープンwarnings
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
CLIMADA-project/climada_python#1239 ·
メンテナーはふだん 3 日以内に返信
-
warnings
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
CLIMADA-project/climada_python#1226 ·
メンテナーはふだん 3 日以内に返信
CLIMADA-project/climada_python の issue をすべて見る
似ている issue
-
lesson-submission pending-review
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
Ikalus1988/MisakaNet#3789 ·
メンテナーはふだん 1 日以内に返信
-
alerts bug effort:S P2
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
nightscout/nocturne#2511 ·
メンテナーはふだん 1 日以内に返信
-
Python Volcengine provider returns failures instead of raising them対応中かも @Ricardo-M-L が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
agent-infra/sandbox#248 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
Textractor leaves empty temporary files when remote retrieval fails対応中かも @HuaTNA が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信