Hi Joseph,
I'm building s3ql on debian trixie, and I'm getting the following test
failure, any advice
much appreciated! […]
Is this a persistent error? Re-running the tests multiple times, do you always
get the error?
We currently do not run tests with Python 3.13, and it looks like the Python 3.13
"ssl" package has
changes that we need to address.
But when I run the tests with Python 3.13 (on Ubuntu 24.04 with uv,
main-branch), I only get some
warnings, not the error you get:
$ uv venv --python 3.13
$ source .venv/bin/activate
$ uv sync --extra dev
$ PYTHONTRACEMALLOC=20 py.test tests/t0_http.py
# […]
============== warnings summary ==============
t0_http.py::test_read_text[plain]
t0_http.py::test_read_text[ssl]
/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/unraisableexception.py:67:
PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper
encoding='UTF-8'>
AttributeError: 'HTTPConnection' object has no attribute 'flush'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 157, in
pytest_pyfunc_call
result = testfunction(**testargs)
AttributeError: 'HTTPConnection' object has no attribute 'close'. Did you
mean: 'closed'?
Object allocated at:
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/main.py",
line 367
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 117
runtestprotocol(item, nextitem=nextitem)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 136
reports.append(call_and_report(item, "call", log))
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 245
call = CallInfo.from_call(
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 344
result: TResult | None = func()
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 246
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 178
item.runtest()
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 1671
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 157
result = testfunction(**testargs)
File "/s3ql-source/tests/t0_http.py", line 486
fh = TextIOWrapper(conn)
warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))
t0_http.py::test_read_text2[plain]
t0_http.py::test_read_text2[ssl]
/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/unraisableexception.py:67:
PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper
encoding='UTF-8'>
AttributeError: 'HTTPConnection' object has no attribute 'flush'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 157, in
pytest_pyfunc_call
result = testfunction(**testargs)
AttributeError: 'HTTPConnection' object has no attribute 'close'. Did you
mean: 'closed'?
Object allocated at:
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/main.py",
line 367
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 117
runtestprotocol(item, nextitem=nextitem)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 136
reports.append(call_and_report(item, "call", log))
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 245
call = CallInfo.from_call(
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 344
result: TResult | None = func()
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 246
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 178
item.runtest()
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 1671
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 157
result = testfunction(**testargs)
File "/s3ql-source/tests/t0_http.py", line 494
fh = TextIOWrapper(conn)
warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))
t0_http.py::test_read_text3[plain]
t0_http.py::test_read_text3[ssl]
/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/unraisableexception.py:67:
PytestUnraisableExceptionWarning: Exception ignored in: <_io.TextIOWrapper
encoding='UTF-8'>
AttributeError: 'HTTPConnection' object has no attribute 'flush'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 157, in
pytest_pyfunc_call
result = testfunction(**testargs)
AttributeError: 'HTTPConnection' object has no attribute 'close'. Did you
mean: 'closed'?
Object allocated at:
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/main.py",
line 367
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 117
runtestprotocol(item, nextitem=nextitem)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 136
reports.append(call_and_report(item, "call", log))
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 245
call = CallInfo.from_call(
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 344
result: TResult | None = func()
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 246
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/runner.py",
line 178
item.runtest()
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 1671
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512
return self._hookexec(self.name, self._hookimpls.copy(), kwargs,
firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/s3ql-source/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121
res = hook_impl.function(*args)
File "/s3ql-source/.venv/lib/python3.13/site-packages/_pytest/python.py",
line 157
result = testfunction(**testargs)
File "/s3ql-source/tests/t0_http.py", line 503
fh = TextIOWrapper(conn)
warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))
Until we address Python 3.13 compatibility issues, you might want to install
S3QL inside a venv with
Python 3.12.