• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

SAP / sqlalchemy-hana / 19696991522

26 Nov 2025 06:19AM UTC coverage: 95.358% (-0.7%) from 96.068%
19696991522

push

github

web-flow
Bump uv from 0.9.10 to 0.9.11 (#468)

Bumps [uv](https://github.com/astral-sh/uv) from 0.9.10 to 0.9.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/uv/releases">uv's
releases</a>.</em></p>
<blockquote>
<h2>0.9.11</h2>
<h2>Release Notes</h2>
<p>Released on 2025-11-20.</p>
<p>Due to rate limiting during <a
href="https://redirect.github.com/astral-sh/uv/pull/16770">publish to
<code>crates.io</code></a>, this release <a
href="https://github.com/astral-sh/uv/actions/runs/19553586192">was
partially published</a> and manually finished. Consequently,
<code>crates.io</code> does not include all of the artifacts and the
GitHub Release was published by a maintainer instead of GitHub Actions.
The artifacts from GitHub Actions were used without alteration. There
should be no consequences from this; we just want to be transparent
about the provenance of the artifacts.</p>
<h3>Python</h3>
<ul>
<li>Add CPython 3.15.0a2</li>
</ul>
<p>See the <a
href="https://github.com/astral-sh/python-build-standalone/releases/tag/20251120"><code>python-build-standalone</code>
release notes</a> for details.</p>
<h3>Enhancements</h3>
<ul>
<li>Add SBOM support to <code>uv export</code> (<a
href="https://redirect.github.com/astral-sh/uv/pull/16523">#16523</a>)</li>
<li>Publish to <code>crates.io</code> (<a
href="https://redirect.github.com/astral-sh/uv/pull/16770">#16770</a>)</li>
</ul>
<h3>Preview features</h3>
<ul>
<li>Add <code>uv workspace list --paths</code> (<a
href="https://redirect.github.com/astral-sh/uv/pull/16776">#16776</a>)</li>
<li>Fix the preview warning on <code>uv workspace dir</code> (<a
href="https://redirect.github.com/astral-sh/uv/pull/16775">#16775</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>uv init</code> author serialization via
<code>toml_edit</code> inline tables (<a
href="https://redirect.github.com/astral-sh/uv/pull/16778">#16778</a>)</li>
<li>Fix status messages without TTY (<a
href="https:/... (continued)

1746 of 1831 relevant lines covered (95.36%)

0.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

70.59
/test/test_errors.py
1
"""Custom error handling testing."""
2

3
from __future__ import annotations
1✔
4

5
import pytest
1✔
6
from hdbcli.dbapi import Error as HdbcliError
1✔
7
from sqlalchemy.exc import DBAPIError
1✔
8
from sqlalchemy.testing.fixtures import TestBase
1✔
9

10
from sqlalchemy_hana.errors import (
1✔
11
    ClientConnectionError,
12
    DatabaseConnectNotPossibleError,
13
    DatabaseOutOfMemoryError,
14
    DatabaseOverloadedError,
15
    DeadlockError,
16
    InvalidObjectNameError,
17
    LockAcquisitionError,
18
    LockWaitTimeoutError,
19
    SequenceCacheTimeoutError,
20
    SequenceLockTimeoutError,
21
    SessionContextError,
22
    StatementExecutionError,
23
    StatementTimeoutError,
24
    TransactionCancelledError,
25
    WriteInReadOnlyReplicationError,
26
    convert_dbapi_error,
27
)
28

29

30
class TestConvertDBAPIError(TestBase):
×
31
    @pytest.mark.parametrize(
1✔
32
        "errorcode,errortext,expected_exception",
33
        [
34
            (-10807, "", ClientConnectionError),
35
            (-10709, "", ClientConnectionError),
36
            (
37
                99999,
38
                "Lock timeout occurs while waiting sequence cache lock",
39
                SequenceCacheTimeoutError,
40
            ),
41
            (
42
                131,
43
                "transaction rolled back: Lock timeout occurs while waiting sequence lock",
44
                SequenceLockTimeoutError,
45
            ),
46
            (131, "", LockWaitTimeoutError),
47
            (146, "", LockAcquisitionError),
48
            (133, "", DeadlockError),
49
            (4, "no memory", DatabaseOutOfMemoryError),
50
            (99999, "OutOfMemory exception", DatabaseOutOfMemoryError),
51
            (99999, "cannot allocate enough memory", DatabaseOutOfMemoryError),
52
            (99999, "Allocation failed", DatabaseOutOfMemoryError),
53
            (
54
                129,
55
                "max number of SqlExecutor threads are exceeded",
56
                DatabaseOverloadedError,
57
            ),
58
            (
59
                663,
60
                "Error GBA503: Service is unavailable",
61
                DatabaseConnectNotPossibleError,
62
            ),
63
            (
64
                1897,
65
                "HANA Cloud region is in maintenance window",
66
                DatabaseConnectNotPossibleError,
67
            ),
68
            (
69
                2,
70
                "general error: TransactionManager is not yet fully initialized",
71
                DatabaseConnectNotPossibleError,
72
            ),
73
            (
74
                129,
75
                "An error occurred while opening the channel",
76
                StatementExecutionError,
77
            ),
78
            (
79
                2048,
80
                "An error occurred while opening the channel",
81
                StatementExecutionError,
82
            ),
83
            (
84
                139,
85
                "Error: current operation cancelled by request and transaction rolled back",
86
                TransactionCancelledError,
87
            ),
88
            (613, "", StatementTimeoutError),
89
            (397, "", InvalidObjectNameError),
90
            (
91
                7,
92
                "feature not supported: writable statement not allowed in "
93
                "read-enabled replication: line 1 col 1",
94
                WriteInReadOnlyReplicationError,
95
            ),
96
            (
97
                597,
98
                "session context error: failed remote communication",
99
                SessionContextError,
100
            ),
101
        ],
102
    )
103
    def test_convert_dbapi_error(
1✔
104
        self,
105
        errorcode: int,
106
        errortext: str,
107
        expected_exception: type[Exception],
108
    ) -> None:
109
        error = HdbcliError(errorcode, errortext)
1✔
110
        dbapi_error = DBAPIError(None, None, error)
×
111
        assert isinstance(convert_dbapi_error(dbapi_error), expected_exception)
1✔
112

113
    @pytest.mark.parametrize(
1✔
114
        "errorcode,errortext",
115
        [
116
            (123, "An error occurred while doing something"),
117
            (-10800, ""),
118
            (123, "some error"),
119
        ],
120
    )
121
    def test_convert_dbapi_error_no_wrap(self, errorcode: int, errortext: str) -> None:
1✔
122
        error = HdbcliError(errorcode, errortext)
×
123
        dbapi_error = DBAPIError(None, None, error)
×
124
        assert convert_dbapi_error(dbapi_error) is dbapi_error
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc