import re
import socket
import asyncio
-from typing import Any, Iterator, AsyncIterator
+from typing import Any
from random import shuffle
from pathlib import Path
from datetime import tzinfo
return value.decode(self.encoding)
-def conninfo_attempts(params: ConnDict) -> Iterator[ConnDict]:
+def conninfo_attempts(params: ConnDict) -> list[ConnDict]:
"""Split a set of connection params on the single attempts to perform.
A connection param can perform more than one attempt more than one ``host``
attempts = _split_attempts(params)
if params.get("load_balance_hosts", "disable") == "random":
shuffle(attempts)
- yield from attempts
+ return attempts
-async def conninfo_attempts_async(params: ConnDict) -> AsyncIterator[ConnDict]:
+async def conninfo_attempts_async(params: ConnDict) -> list[ConnDict]:
"""Split a set of connection params on the single attempts to perform.
A connection param can perform more than one attempt more than one ``host``
if params.get("load_balance_hosts", "disable") == "random":
shuffle(attempts)
- for attempt in attempts:
- yield attempt
+ return attempts
def _split_attempts(params: ConnDict) -> list[ConnDict]:
from psycopg.conninfo import conninfo_attempts, conninfo_attempts_async
from psycopg._encodings import pg2pyenc
-from .utils import alist
from .fix_crdb import crdb_encoding
snowman = "\u2603"
def test_conninfo_attempts(setpgenv, conninfo, want, env):
setpgenv(env)
params = conninfo_to_dict(conninfo)
- attempts = list(conninfo_attempts(params))
+ attempts = conninfo_attempts(params)
want = list(map(conninfo_to_dict, want))
assert want == attempts
):
setpgenv(env)
params = conninfo_to_dict(conninfo)
- attempts = await alist(conninfo_attempts_async(params))
+ attempts = await conninfo_attempts_async(params)
want = list(map(conninfo_to_dict, want))
assert want == attempts
@pytest.mark.anyio
async def test_conninfo_attempts_async(conninfo, want, env, fake_resolve):
params = conninfo_to_dict(conninfo)
- attempts = await alist(conninfo_attempts_async(params))
+ attempts = await conninfo_attempts_async(params)
want = list(map(conninfo_to_dict, want))
assert want == attempts
setpgenv(env)
params = conninfo_to_dict(conninfo)
with pytest.raises(psycopg.Error):
- await alist(conninfo_attempts_async(params))
+ await conninfo_attempts_async(params)
@pytest.mark.parametrize(
setpgenv(env)
params = conninfo_to_dict(conninfo)
with pytest.raises(psycopg.Error):
- list(conninfo_attempts(params))
+ conninfo_attempts(params)
def test_conninfo_random():
@pytest.mark.anyio
async def test_conninfo_random_async(fake_resolve):
args = {"host": "alot.com"}
- hostaddrs = [att["hostaddr"] async for att in conninfo_attempts_async(args)]
+ hostaddrs = [att["hostaddr"] for att in await conninfo_attempts_async(args)]
assert len(hostaddrs) == 20
assert hostaddrs == sorted(hostaddrs)
args["load_balance_hosts"] = "disable"
- hostaddrs = [att["hostaddr"] async for att in conninfo_attempts_async(args)]
+ hostaddrs = [att["hostaddr"] for att in await conninfo_attempts_async(args)]
assert hostaddrs == sorted(hostaddrs)
args["load_balance_hosts"] = "random"
- hostaddrs = [att["hostaddr"] async for att in conninfo_attempts_async(args)]
+ hostaddrs = [att["hostaddr"] for att in await conninfo_attempts_async(args)]
assert hostaddrs != sorted(hostaddrs)