urljoin works incorrectly for two path-relative URLs involving . and ..
@serhiy-storchaka já está trabalhando nisso.
Desde 11/11/2024.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Bug report
urllib.parse.urljoin is usually used to join a normalized absolute URL with a relative URL, and it generally works for that purpose. But if it’s used to join two path-relative URLs, it produces incorrect results in many cases when . or .. is involved.
>>> from urllib.parse import urljoin
>>> urljoin('a', 'b') # ok
'b'
>>> urljoin('a/', 'b') # ok
'a/b'
>>> urljoin('a', '.') # expected . or ./
'/'
>>> urljoin('a', '..') # expected .. or ../
'/'
>>> urljoin('..', 'b') # expected ../b
'b'
>>> urljoin('../a', 'b') # expected ../b
'b'
>>> urljoin('a', '../b') # expected ../b
'b'
>>> urljoin('../a', '../b') # expected ../../b
'b'
>>> urljoin('a/..', 'b') # expected b
'a/b'
There are also some problems when the base is a non-normalized absolute URL:
>>> urljoin('http://host/a/..', 'b') # expected http://host/b
'http://host/a/b'
Your environment
- CPython versions tested on: 3.10.5, 3.11.0rc1
- Operating system and architecture: NixOS 21.11 amd64
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Merge médio
- 1d 9h
- PRs com merge (30d)
- 558
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de python/cpython
-
docs pending
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
stdlib type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
stdlib type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
build type-bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
-
stdlib topic-email type-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Todas as issues de python/cpython
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
zostera/django-bootstrap4#894 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
use-agent-os/agent-os#3276 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
NousResearch/hermes-agent#117848 ·