aio-libs / aio-libs/yarl

Over-zealous empty query/fragment normalization like bpo-37969

未關閉
#332 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Python
星號
1.5k
分支
215
平均合併
1 天 2 分鐘
30 天內合併 PR
13

描述

I saw https://bugs.python.org/issue37969 and was curious how YARL handles an empty querystring given that [RFC 3986 § 6.2.3 says](https://tools.ietf.org/html/rfc3986?#section-6.2.3)

> Normalization should not remove delimiters when their associated component is empty unless licensed to do so by the scheme specification. For example, the URI "http://example.com/?" cannot be assumed to be equivalent to any of the examples ["http://example.com", "http://example.com/", "http://example.com:/", "http://example.com:80/"].

† Is there a separate spec for HTTP that says you can? Would this impact a generic URL parser anyways?

```
>>> yarl.URL("http://example.com/?#") == yarl.URL("http://example.com/")
True
```

And I can't see a way to `yarl.URL.build` to end up with a blank (but delimited) querystring/fragment

Wondering if this would just be a 'won't-fix' in YARL, or if there's some clean design solution. Also if any URL-savants wanted to render an opinion in the bugs.python.org issue.

---

⁂ even more niche "issue":
```
>>> yarl.URL("http://example.com:80/") == yarl.URL("http://example.com:/")
False
```

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。