94 lines
2.0 KiB
Python

import re
import sys
import warnings
from collections import namedtuple
from .connection import (
TIMEOUT as DEFAULT_TIMEOUT,
Connection,
Cursor,
DefaultCompiler,
IsolationCompiler,
IsolationLevel,
ReadCommittedCompiler,
RepeatableReadCompiler,
SerializableCompiler,
Transaction,
connect,
)
from .pool import Pool, create_pool
from .utils import get_running_loop
warnings.filterwarnings(
"always",
".*",
category=ResourceWarning,
module=r"aiopg(\.\w+)+",
append=False,
)
__all__ = (
"connect",
"create_pool",
"get_running_loop",
"Connection",
"Cursor",
"Pool",
"version",
"version_info",
"DEFAULT_TIMEOUT",
"IsolationLevel",
"Transaction",
)
__version__ = "1.4.0"
version = f"{__version__}, Python {sys.version}"
VersionInfo = namedtuple(
"VersionInfo", "major minor micro releaselevel serial"
)
def _parse_version(ver: str) -> VersionInfo:
RE = (
r"^"
r"(?P<major>\d+)\.(?P<minor>\d+)\.(?P<micro>\d+)"
r"((?P<releaselevel>[a-z]+)(?P<serial>\d+)?)?"
r"$"
)
match = re.match(RE, ver)
if not match:
raise ImportError(f"Invalid package version {ver}")
try:
major = int(match.group("major"))
minor = int(match.group("minor"))
micro = int(match.group("micro"))
levels = {"rc": "candidate", "a": "alpha", "b": "beta", None: "final"}
releaselevel = levels[match.group("releaselevel")]
serial = int(match.group("serial")) if match.group("serial") else 0
return VersionInfo(major, minor, micro, releaselevel, serial)
except Exception as e:
raise ImportError(f"Invalid package version {ver}") from e
version_info = _parse_version(__version__)
# make pyflakes happy
(
connect,
create_pool,
Connection,
Cursor,
Pool,
DEFAULT_TIMEOUT,
IsolationLevel,
Transaction,
get_running_loop,
IsolationCompiler,
DefaultCompiler,
ReadCommittedCompiler,
RepeatableReadCompiler,
SerializableCompiler,
)