aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/asyncpg/serverversion.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/asyncpg/serverversion.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/asyncpg/serverversion.py')
-rw-r--r--.venv/lib/python3.12/site-packages/asyncpg/serverversion.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/asyncpg/serverversion.py b/.venv/lib/python3.12/site-packages/asyncpg/serverversion.py
new file mode 100644
index 00000000..31568a2e
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/asyncpg/serverversion.py
@@ -0,0 +1,60 @@
+# Copyright (C) 2016-present the asyncpg authors and contributors
+# <see AUTHORS file>
+#
+# This module is part of asyncpg and is released under
+# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
+
+
+import re
+
+from .types import ServerVersion
+
+version_regex = re.compile(
+ r"(Postgre[^\s]*)?\s*"
+ r"(?P<major>[0-9]+)\.?"
+ r"((?P<minor>[0-9]+)\.?)?"
+ r"(?P<micro>[0-9]+)?"
+ r"(?P<releaselevel>[a-z]+)?"
+ r"(?P<serial>[0-9]+)?"
+)
+
+
+def split_server_version_string(version_string):
+ version_match = version_regex.search(version_string)
+
+ if version_match is None:
+ raise ValueError(
+ "Unable to parse Postgres "
+ f'version from "{version_string}"'
+ )
+
+ version = version_match.groupdict()
+ for ver_key, ver_value in version.items():
+ # Cast all possible versions parts to int
+ try:
+ version[ver_key] = int(ver_value)
+ except (TypeError, ValueError):
+ pass
+
+ if version.get("major") < 10:
+ return ServerVersion(
+ version.get("major"),
+ version.get("minor") or 0,
+ version.get("micro") or 0,
+ version.get("releaselevel") or "final",
+ version.get("serial") or 0,
+ )
+
+ # Since PostgreSQL 10 the versioning scheme has changed.
+ # 10.x really means 10.0.x. While parsing 10.1
+ # as (10, 1) may seem less confusing, in practice most
+ # version checks are written as version[:2], and we
+ # want to keep that behaviour consistent, i.e not fail
+ # a major version check due to a bugfix release.
+ return ServerVersion(
+ version.get("major"),
+ 0,
+ version.get("minor") or 0,
+ version.get("releaselevel") or "final",
+ version.get("serial") or 0,
+ )