Bug 282913 - vdirsyncer stopped working after several python libraries upgrades
Summary: vdirsyncer stopped working after several python libraries upgrades
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Baptiste Daroussin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-11-22 09:26 UTC by freebsd
Modified: 2024-11-25 16:32 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description freebsd 2024-11-22 09:26:16 UTC
After an upgrade (from port compilation) my vdirsyncer stopped working for caldav and carddav (server is a nextcloud).

Todays upgrades (only python related ones):

Nov 22 08:16:55 ice pkg[75248]: py311-blinker upgraded: 1.8.2 -> 1.9.0 
Nov 22 08:16:56 ice pkg[75248]: py311-boto3 upgraded: 1.35.54 -> 1.35.63 
Nov 22 08:16:56 ice pkg[75248]: py311-aiohttp upgraded: 3.10.10 -> 3.11.7 
Nov 22 08:16:57 ice pkg[75248]: py311-charset-normalizer upgraded: 3.3.2_1 -> 3.4.0 

Error messages (from vdirsyncer -vdebug discover)

warning: Failed to discover collections for contacts_serveur, use `-vdebug` to see the full traceback.
debug: ====================
debug: PROPFIND https://vapeur.rail.eu.org/
debug: {'User-Agent': 'vdirsyncer/0.19.3', 'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '1'}
debug: b'\n    <propfind xmlns="DAV:">\n        <prop>\n            <resourcetype />\n        </prop>\n    </propfind>\n    '
debug: Sending request...
error: Unknown error occurred: 'URL' object has no attribute 'host_port_subcomponent'
error: Use `-vdebug` to see the full traceback.
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/__init__.py", line 37, in inner
debug:     f(*a, **kw)
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/__init__.py", line 223, in discover
debug:     asyncio.run(main())
debug:   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
debug:     return runner.run(main)
debug:            ^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
debug:     return self._loop.run_until_complete(task)
debug:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
debug:     return future.result()
debug:            ^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/__init__.py", line 215, in main
debug:     await discover_collections(
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/tasks.py", line 94, in discover_collections
debug:     rv = await collections_for_pair(pair=pair, **kwargs)
debug:          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/discover.py", line 99, in collections_for_pair
debug:     rv = await aiostream.stream.list(
debug:          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/aiostream/core.py", line 60, in wait_stream
debug:     async for item in streamer:
debug:   File "/usr/local/lib/python3.11/site-packages/aiostream/stream/aggregate.py", line 89, in list
debug:     async for item in streamer:
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/discover.py", line 234, in expand_collections
debug:     b_args = await _collection_from_discovered(
debug:              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/discover.py", line 253, in _collection_from_discovered
debug:     return (await get_discovered())[collection]
debug:             ^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/discover.py", line 178, in get_self
debug:     self._discovered = await self._discover()
debug:                        ^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/discover.py", line 187, in _discover
debug:     return handle_storage_init_error(self._cls, self._config)
debug:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/cli/discover.py", line 183, in _discover
debug:     discovered = await aiostream.stream.list(self._cls.discover(**self._config))
debug:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/aiostream/core.py", line 60, in wait_stream
debug:     async for item in streamer:
debug:   File "/usr/local/lib/python3.11/site-packages/aiostream/stream/aggregate.py", line 89, in list
debug:     async for item in streamer:
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 485, in discover
debug:     async for collection in d.discover():
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 271, in discover
debug:     for c in await self.find_collections():
debug:              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 223, in find_collections
debug:     rv = await aiostream.stream.list(self._find_collections_impl(""))
debug:          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/aiostream/core.py", line 60, in wait_stream
debug:     async for item in streamer:
debug:   File "/usr/local/lib/python3.11/site-packages/aiostream/stream/aggregate.py", line 89, in list
debug:     async for item in streamer:
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 253, in _find_collections_impl
debug:     r = await self.session.request(
debug:         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/storage/dav.py", line 413, in request
debug:     return await http.request(method, url, session=session, **more)
debug:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/vdirsyncer/http.py", line 184, in request
debug:     response = await session.request(method, url, headers=headers, **kwargs)
debug:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 673, in _request
debug:     req = self._request_class(
debug:           ^^^^^^^^^^^^^^^^^^^^
debug:   File "/usr/local/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 345, in __init__
debug:     self.update_headers(headers)
debug:   File "/usr/local/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 450, in update_headers
debug:     host = self.url.host_port_subcomponent
debug:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


Maybe py311-aiohttp 3.11 is the culprit ?
Comment 1 Baptiste Daroussin freebsd_committer freebsd_triage 2024-11-22 09:35:19 UTC
it is broken since aiohttp 3.11.0 the changelog states it clearly:

"Increased minimum yarl version to 1.17.0"

https://docs.aiohttp.org/en/stable/changes.html

While in ports we have 1.12.0...
Comment 2 commit-hook freebsd_committer freebsd_triage 2024-11-22 09:56:40 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8f99f061e3371380bf0a3a9712c9415853d481ce

commit 8f99f061e3371380bf0a3a9712c9415853d481ce
Author:     Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2024-11-22 09:53:32 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2024-11-22 09:55:00 +0000

    www/py-yarl: update to 1.18.0

    This upgrade is necessary to be done ASAP to fix py-asiohttp which
    requires yarl > 1.17.0 since 3.11

    Version 1.16.0 introduce a backward incompatibility, I have checked the
    various consumers in the ports tree, and they seems not to be affected.

    PR:     282913

 www/py-yarl/Makefile | 5 +++--
 www/py-yarl/distinfo | 6 +++---
 2 files changed, 6 insertions(+), 5 deletions(-)
Comment 3 Baptiste Daroussin freebsd_committer freebsd_triage 2024-11-22 10:14:43 UTC
the reporter confirmed the issue is now fixed with the right yarl.
Comment 4 Dmitry Marakasov freebsd_committer freebsd_triage 2024-11-22 19:16:13 UTC
I was not updating it as it because it required propcache which was not ported yet.

> install_requires = 
>     idna >= 2.0
>     multidict >= 4.0
>     propcache >= 0.2.0

How come it was updated without adding this dependency?

Also, why move cython from uses to depends?
Comment 5 Dmitry Marakasov freebsd_committer freebsd_triage 2024-11-22 19:18:25 UTC
Tests now fail, please rollback or add the required dependency.
Comment 6 Dmitry Marakasov freebsd_committer freebsd_triage 2024-11-25 16:01:43 UTC
In fact, this has broken all yarl consumers, including by production.

% python3 -c 'import yarl'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.11/site-packages/yarl/__init__.py", line 2, in <module>
    from ._url import URL, cache_clear, cache_configure, cache_info
  File "/usr/local/lib/python3.11/site-packages/yarl/_url.py", line 13, in <module>
    from propcache.api import under_cached_property as cached_property
ModuleNotFoundError: No module named 'propcache'
Comment 7 commit-hook freebsd_committer freebsd_triage 2024-11-25 16:12:23 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=24a5ef4898712940caef660979b3f7a359667a6d

commit 24a5ef4898712940caef660979b3f7a359667a6d
Author:     Dmitry Marakasov <amdmi3@FreeBSD.org>
AuthorDate: 2024-11-25 16:07:19 +0000
Commit:     Dmitry Marakasov <amdmi3@FreeBSD.org>
CommitDate: 2024-11-25 16:11:20 +0000

    www/py-yarl: Add missing dependencies

    The update to 1.18.0 was not properly tested, missed runtime
    dependencies and was broken:

    ```
    % python3 -c 'import yarl'
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/local/lib/python3.11/site-packages/yarl/__init__.py", line 2, in <module>
        from ._url import URL, cache_clear, cache_configure, cache_info
      File "/usr/local/lib/python3.11/site-packages/yarl/_url.py", line 13, in <module>
        from propcache.api import under_cached_property as cached_property
    ModuleNotFoundError: No module named 'propcache'
    ```

    Add missing RUN_DEPEND on a recently added py-propcache, and add missing
    test dependencies as well.

    PR:             282913
    Pointyhat to:   bapt

 www/py-yarl/Makefile | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)