Python 3.13: Many failing tests: `urllib.error.HTTPError: HTTP Error 400: 'pathlib._local.PosixPath' object does not support the context manager protocol`
Hi
Several tests are affected, see full logs:
python-mailmanclient-3.3.5-5-x86_64-build.log python-mailmanclient-3.3.5-5-x86_64-check.log
As example, the test output for a single failing test:
=================================== FAILURES ===================================
_____________ TestUrlencodedPaths.test_member_paths_are_urlencoded _____________
src/mailmanclient/tests/test_client.py:48: in test_member_paths_are_urlencoded
mlist.subscribe('apers?on@example.com',
src/mailmanclient/restobjects/mailinglist.py:492: in subscribe
response, content = self._connection.call('members', data)
src/mailmanclient/restbase/connection.py:160: in call
raise HTTPError(params.get('url'), response.status_code,
E urllib.error.HTTPError: HTTP Error 400: 'pathlib._local.PosixPath' object does not support the context manager protocol
----------------------------- Captured stdout call -----------------------------
Dec 08 13:12:06 2024 (1445) 'pathlib._local.PosixPath' object does not support the context manager protocol
Traceback (most recent call last):
File "/usr/lib/python3.13/site-packages/mailman/rest/members.py", line 385, in on_post
token, token_owner, member = registrar.register(
~~~~~~~~~~~~~~~~~~^
subscriber,
^^^^^^^^^^^
...<5 lines>...
delivery_mode=delivery_mode,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
delivery_status=delivery_status)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/subscriptions.py", line 584, in register
list(workflow)
~~~~^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.13/site-packages/mailman/app/subscriptions.py", line 362, in _step_do_subscription
self.member = self.mlist.subscribe(
~~~~~~~~~~~~~~~~~~~~^
self.subscriber, send_welcome_message=self.send_welcome_message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/database/transaction.py", line 106, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.13/site-packages/mailman/model/mailinglist.py", line 540, in subscribe
notify(SubscriptionEvent(
~~~~~~^^^^^^^^^^^^^^^^^^^
self, member, send_welcome_message=send_welcome_message))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/zope/event/__init__.py", line 33, in notify
subscriber(event)
~~~~~~~~~~^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/membership.py", line 183, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/notifications.py", line 77, in send_welcome_message
welcome_message = wrap(getUtility(ITemplateLoader).get(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
'list:user:notice:welcome', mlist, language=language.code))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/model/template.py", line 211, in get
path, fp = find(default_uri, mlist, code)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/utilities/i18n.py", line 157, in find
for search_path in raw_search_order:
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/utilities/i18n.py", line 117, in search
templates_dir = str(resources.enter_context(
~~~~~~~~~~~~~~~~~~~~~~~^
files('mailman').joinpath('templates')))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/contextlib.py", line 528, in enter_context
raise TypeError(f"'{cls.__module__}.{cls.__qualname__}' object does "
f"not support the context manager protocol") from None
TypeError: 'pathlib._local.PosixPath' object does not support the context manager protocol
______________ TestMailingListMembershipTests.test_list_is_member ______________
src/mailmanclient/tests/test_list.py:84: in test_list_is_member
self.mlist.subscribe(subscriber_addr, pre_verified=True,
src/mailmanclient/restobjects/mailinglist.py:492: in subscribe
response, content = self._connection.call('members', data)
src/mailmanclient/restbase/connection.py:160: in call
raise HTTPError(params.get('url'), response.status_code,
E urllib.error.HTTPError: HTTP Error 400: 'pathlib._local.PosixPath' object does not support the context manager protocol
---------------------------- Captured stdout setup -----------------------------
Starting Mailman Server
---------------------------- Captured stderr setup -----------------------------
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.13/logging/handlers.py", line 1013, in emit
self.socket.send(msg)
~~~~~~~~~~~~~~~~^^^^^
OSError: [Errno 9] Bad file descriptor
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.13/logging/handlers.py", line 1016, in emit
self._connect_unixsocket(self.address)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3.13/logging/handlers.py", line 884, in _connect_unixsocket
self.socket.connect(address)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory
Call stack:
File "/usr/bin/pytest", line 8, in <module>
sys.exit(console_main())
File "/usr/lib/python3.13/site-packages/_pytest/config/__init__.py", line 201, in console_main
code = main()
File "/usr/lib/python3.13/site-packages/_pytest/config/__init__.py", line 175, in main
ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
File "/usr/lib/python3.13/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/usr/lib/python3.13/site-packages/_pytest/main.py", line 330, in pytest_cmdline_main
return wrap_session(config, _main)
File "/usr/lib/python3.13/site-packages/_pytest/main.py", line 283, in wrap_session
session.exitstatus = doit(config, session) or 0
File "/usr/lib/python3.13/site-packages/_pytest/main.py", line 337, in _main
config.hook.pytest_runtestloop(session=session)
File "/usr/lib/python3.13/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/usr/lib/python3.13/site-packages/_pytest/main.py", line 362, in pytest_runtestloop
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
File "/usr/lib/python3.13/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 113, in pytest_runtest_protocol
runtestprotocol(item, nextitem=nextitem)
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 126, in runtestprotocol
rep = call_and_report(item, "setup", log)
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 241, in call_and_report
call = CallInfo.from_call(
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 341, in from_call
result: TResult | None = func()
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 242, in <lambda>
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/usr/lib/python3.13/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 160, in pytest_runtest_setup
item.session._setupstate.setup(item)
File "/usr/lib/python3.13/site-packages/_pytest/runner.py", line 514, in setup
col.setup()
File "/usr/lib/python3.13/site-packages/_pytest/unittest.py", line 219, in setup
super().setup()
File "/usr/lib/python3.13/site-packages/_pytest/python.py", line 1630, in setup
self._request._fillfixtures()
File "/usr/lib/python3.13/site-packages/_pytest/fixtures.py", line 697, in _fillfixtures
item.funcargs[argname] = self.getfixturevalue(argname)
File "/usr/lib/python3.13/site-packages/_pytest/fixtures.py", line 532, in getfixturevalue
fixturedef = self._get_active_fixturedef(argname)
File "/usr/lib/python3.13/site-packages/_pytest/fixtures.py", line 617, in _get_active_fixturedef
fixturedef.execute(request=subrequest)
File "/usr/lib/python3.13/site-packages/_pytest/fixtures.py", line 1091, in execute
result = ihook.pytest_fixture_setup(fixturedef=self, request=request)
File "/usr/lib/python3.13/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/usr/lib/python3.13/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/usr/lib/python3.13/site-packages/_pytest/fixtures.py", line 1140, in pytest_fixture_setup
result = call_fixture_func(fixturefunc, request, kwargs)
File "/usr/lib/python3.13/site-packages/_pytest/fixtures.py", line 898, in call_fixture_func
fixture_result = fixturefunc(**kwargs)
File "/build/python-mailmanclient/src/mailmanclient/src/mailmanclient/conftest.py", line 44, in mailman_core
return watcher_getter(
File "/usr/lib/python3.13/site-packages/pytest_services/service.py", line 78, in watcher_getter_function
services_log.debug('Starting {0}: {1}'.format(name, arguments))
Message: "Starting master: ['-C', 'mailman_test.cfg']"
Arguments: ()
----------------------------- Captured stdout call -----------------------------
Dec 08 13:12:17 2024 (1482) 'pathlib._local.PosixPath' object does not support the context manager protocol
Traceback (most recent call last):
File "/usr/lib/python3.13/site-packages/mailman/rest/members.py", line 385, in on_post
token, token_owner, member = registrar.register(
~~~~~~~~~~~~~~~~~~^
subscriber,
^^^^^^^^^^^
...<5 lines>...
delivery_mode=delivery_mode,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
delivery_status=delivery_status)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/subscriptions.py", line 584, in register
list(workflow)
~~~~^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.13/site-packages/mailman/app/subscriptions.py", line 362, in _step_do_subscription
self.member = self.mlist.subscribe(
~~~~~~~~~~~~~~~~~~~~^
self.subscriber, send_welcome_message=self.send_welcome_message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/database/transaction.py", line 106, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.13/site-packages/mailman/model/mailinglist.py", line 540, in subscribe
notify(SubscriptionEvent(
~~~~~~^^^^^^^^^^^^^^^^^^^
self, member, send_welcome_message=send_welcome_message))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/zope/event/__init__.py", line 33, in notify
subscriber(event)
~~~~~~~~~~^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/membership.py", line 183, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/app/notifications.py", line 77, in send_welcome_message
welcome_message = wrap(getUtility(ITemplateLoader).get(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
'list:user:notice:welcome', mlist, language=language.code))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/model/template.py", line 211, in get
path, fp = find(default_uri, mlist, code)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/utilities/i18n.py", line 157, in find
for search_path in raw_search_order:
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/mailman/utilities/i18n.py", line 117, in search
templates_dir = str(resources.enter_context(
~~~~~~~~~~~~~~~~~~~~~~~^
files('mailman').joinpath('templates')))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/contextlib.py", line 528, in enter_context
raise TypeError(f"'{cls.__module__}.{cls.__qualname__}' object does "
f"not support the context manager protocol") from None
TypeError: 'pathlib._local.PosixPath' object does not support the context manager protocol