Bug 45068 - Не справляется с поиском некоторых пакетов
Summary: Не справляется с поиском некоторых пакетов
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: python3-module-pypi-search (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-01-29 13:31 MSK by Anton Zhukharev
Modified: 2023-01-30 14:33 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Zhukharev 2023-01-29 13:31:45 MSK
Пакет: python3-module-pypi-search-1.2.1-alt1

Не справляется с поиском некоторых пакетов, например django:
--------------------------------------------------------------------------------
$ pypisearch django
[INFO] :: Searching for package `django`...
Traceback (most recent call last):
  File "/usr/bin/pypisearch", line 33, in <module>
    sys.exit(load_entry_point('pypi-search==1.2.1', 'console_scripts', 'pypisearch')())
  File "/usr/lib/python3/site-packages/pypi_search/main.py", line 37, in main
    github_stats = pypi.get_github_stats()
  File "/usr/lib/python3/site-packages/pypi_search/utils.py", line 69, in get_github_stats
    github_data_url = github_stats['data-url']
  File "/usr/lib/python3/site-packages/bs4/element.py", line 1406, in __getitem__
    return self.attrs[key]
KeyError: 'data-url'
--------------------------------------------------------------------------------

Ошибка также есть в P10 (версия та же: 1.2.1-alt1).

Также ошибка воспроизводится при установке в чистое виртуальное окружение.
Можно сделать вывод, что проблема в апстриме.
Comment 1 Anton Zhukharev 2023-01-30 09:53:32 MSK
Немного изучил исходный код и вот что выяснил:

  - модуль опирается на парсинг исходного кода страниц пакетов на pypi.org

  - ошибка стала возникать после изменения исходного кода страниц на pypi.org
    (добавлен JavaScript)

  - в исходном коде страницы при отключенном JavaScript необходимых значений
    уже нет

  - скорее всего необходимо будет переписать большую часть кода модуля и
    использовать не BeautifulSoup4, а, допустим, Selenium
Comment 2 Andrey Cherepanov 2023-01-30 14:22:26 MSK
(Ответ для Anton Zhukharev на комментарий #1)
> Немного изучил исходный код и вот что выяснил:
> 
>   - модуль опирается на парсинг исходного кода страниц пакетов на pypi.org
> 
>   - ошибка стала возникать после изменения исходного кода страниц на pypi.org
>     (добавлен JavaScript)
> 
>   - в исходном коде страницы при отключенном JavaScript необходимых значений
>     уже нет
> 
>   - скорее всего необходимо будет переписать большую часть кода модуля и
>     использовать не BeautifulSoup4, а, допустим, Selenium

Скорее, не его надо править, а https://github.com/openSUSE/py2pack/blob/master/py2pack/__init__.py#L83
Comment 3 Anton Zhukharev 2023-01-30 14:32:55 MSK
(Ответ для Andrey Cherepanov на комментарий #2)
> Скорее, не его надо править, а
> https://github.com/openSUSE/py2pack/blob/master/py2pack/__init__.py#L83
Его тоже необходимо править, поскольку он использует pypi-search.

Тем не менее, если установить просто python3-module-pypi-search и использовать скрипт pypisearch из него, то эта ошибка воспроизводится.

Здесь забыл описать то, что ошибка воспроизводится только если в результате поиска находится 1 пакет - тогда модуль пытается получить из pypi.org ссылку на репозиторий на github.com и по этой ссылке запросить более подробную информацию о пакете.
Comment 4 Anton Zhukharev 2023-01-30 14:33:43 MSK
(Ответ для Anton Zhukharev на комментарий #3)
> (Ответ для Andrey Cherepanov на комментарий #2)
> > Скорее, не его надо править, а
> > https://github.com/openSUSE/py2pack/blob/master/py2pack/__init__.py#L83
> Его тоже необходимо править, поскольку он использует pypi-search.
Если pypi-search не реанимировать*