Skip to content

Commit 73c50c4

Browse files
committed
Fixes for 3.6 and 3.7
1 parent 2ac8eb1 commit 73c50c4

File tree

6 files changed

+42
-47
lines changed

6 files changed

+42
-47
lines changed

asyncpg/connect_utils.py

+36-34
Original file line numberDiff line numberDiff line change
@@ -276,21 +276,20 @@ def _parse_hostlist(hostlist: str,
276276
return hosts, ports
277277

278278

279-
def _parse_tls_version(tls_version: str) -> ssl_module.TLSVersion:
280-
if not hasattr(ssl_module, 'TLSVersion'):
281-
raise ValueError(
282-
"TLSVersion is not supported in this version of Python"
283-
)
284-
if tls_version.startswith('SSL'):
285-
raise ValueError(
286-
f"Unsupported TLS version: {tls_version}"
287-
)
288-
try:
289-
return ssl_module.TLSVersion[tls_version.replace('.', '_')]
290-
except KeyError:
291-
raise ValueError(
292-
f"No such TLS version: {tls_version}"
293-
)
279+
if sys.version_info >= (3, 7):
280+
def _parse_tls_version(tls_version: str) -> ssl_module.TLSVersion:
281+
if tls_version.startswith('SSL'):
282+
raise ValueError(
283+
f"Unsupported TLS version: {tls_version}"
284+
)
285+
try:
286+
return ssl_module.TLSVersion[
287+
tls_version.replace('.', '_')
288+
]
289+
except KeyError:
290+
raise ValueError(
291+
f"No such TLS version: {tls_version}"
292+
)
294293

295294

296295
def _dot_postgresql_path(filename: str) -> pathlib.Path:
@@ -621,30 +620,33 @@ def _parse_connect_dsn_and_args(*, dsn: typing.Optional[str],
621620
pass
622621

623622
# OpenSSL 1.1.1 keylog file, copied from create_default_context()
624-
if hasattr(ssl, 'keylog_filename'):
623+
if sys.version_info >= (3, 8):
624+
# Python 3.6 and 3.7 do not have keylog_filename
625625
keylogfile = os.environ.get('SSLKEYLOGFILE')
626626
if keylogfile and not sys.flags.ignore_environment:
627627
ssl.keylog_filename = keylogfile
628628

629-
if ssl_min_protocol_version is None:
630-
ssl_min_protocol_version = os.getenv('PGSSLMINPROTOCOLVERSION')
631-
if ssl_min_protocol_version:
632-
ssl.minimum_version = _parse_tls_version(
633-
ssl_min_protocol_version
634-
)
635-
else:
636-
try:
637-
ssl.minimum_version = _parse_tls_version('TLSv1.2')
638-
except ValueError:
639-
# Python 3.6 does not have ssl.TLSVersion
640-
pass
629+
if sys.version_info >= (3, 7):
630+
# Python 3.6 does not have TLSVersion
631+
if ssl_min_protocol_version is None:
632+
ssl_min_protocol_version = os.getenv(
633+
'PGSSLMINPROTOCOLVERSION'
634+
)
635+
if not ssl_min_protocol_version:
636+
ssl_min_protocol_version = 'TLSv1.2'
637+
if ssl_min_protocol_version:
638+
ssl.minimum_version = _parse_tls_version(
639+
ssl_min_protocol_version
640+
)
641641

642-
if ssl_max_protocol_version is None:
643-
ssl_max_protocol_version = os.getenv('PGSSLMAXPROTOCOLVERSION')
644-
if ssl_max_protocol_version:
645-
ssl.maximum_version = _parse_tls_version(
646-
ssl_max_protocol_version
647-
)
642+
if ssl_max_protocol_version is None:
643+
ssl_max_protocol_version = os.getenv(
644+
'PGSSLMAXPROTOCOLVERSION'
645+
)
646+
if ssl_max_protocol_version:
647+
ssl.maximum_version = _parse_tls_version(
648+
ssl_max_protocol_version
649+
)
648650

649651
elif ssl is True:
650652
ssl = ssl_module.create_default_context()

asyncpg/pool_connection_proxy.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
class _PoolConnectionProxyMeta(type):
2626

27-
def __new__(mcls, name, bases, dct, *, wrap=False):
27+
def __new__(mcls, name, bases, dct, *, wrap=False, **kwargs):
2828
if wrap:
2929
for attrname in dir(connection.Connection):
3030
if attrname.startswith('_') or attrname in dct:
@@ -43,10 +43,6 @@ def __new__(mcls, name, bases, dct, *, wrap=False):
4343

4444
return super().__new__(mcls, name, bases, dct)
4545

46-
def __init__(cls, name, bases, dct, *, wrap=False):
47-
# Needed for Python 3.5 to handle `wrap` class keyword argument.
48-
super().__init__(name, bases, dct)
49-
5046
@staticmethod
5147
def _wrap_connection_method(meth_name):
5248
def call_con_method(self, *args, **kwargs):

asyncpg/protocol/protocol.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ from ..types import Type, Attribute
3636

3737
_T = TypeVar("_T")
3838
_NoTimeoutType = NewType("_NoTimeoutType", object)
39-
_TimeoutType: TypeAlias = Union[float, None, _NoTimeoutType]
39+
_TimeoutType: TypeAlias = Union[float, None, _NoTimeoutType] # noqa: Y015
4040
_Record = TypeVar("_Record", bound=Record)
4141
_OtherRecord = TypeVar("_OtherRecord", bound=Record)
4242
_PreparedStatementState = TypeVar(

mypy-plugin.ini

-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,3 @@ implicit_reexport = True
77

88
[mypy-asyncpg._testbase.*]
99
ignore_errors = True
10-
11-
[mypy-importlib_metadata]
12-
ignore_missing_imports = True

mypy.ini

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ strict = True
44
implicit_reexport = True
55
# disallow_any_unimported = True
66

7-
[mypy-asyncpg._testbase.*]
7+
[mypy-asyncpg._testbase]
88
ignore_errors = True
99

10-
[mypy-importlib_metadata]
11-
ignore_missing_imports = True
10+
[mypy-asyncpg._testbase.*]
11+
ignore_errors = True

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
# (example breakage: https://gitlab.com/pycqa/flake8/issues/427)
3535
'pycodestyle~=2.7.0',
3636
'flake8~=3.9.2',
37-
'flake8-pyi>=22.1.0',
37+
'flake8-pyi~=20.10.0',
3838
'uvloop>=0.15.3; platform_system != "Windows" and python_version >= "3.7"',
3939
'mypy>=0.931'
4040
]

0 commit comments

Comments
 (0)