Merge "Handle deprecation of inspect.getargspec"

This commit is contained in:
Zuul 2017-11-30 07:16:33 +00:00 committed by Gerrit Code Review
commit 0260f0e86b
2 changed files with 22 additions and 2 deletions

View File

@ -13,7 +13,6 @@
import contextlib import contextlib
import functools import functools
import inspect
import operator import operator
import threading import threading
import warnings import warnings
@ -27,6 +26,7 @@ from oslo_db import exception
from oslo_db import options from oslo_db import options
from oslo_db.sqlalchemy import engines from oslo_db.sqlalchemy import engines
from oslo_db.sqlalchemy import orm from oslo_db.sqlalchemy import orm
from oslo_db.sqlalchemy import utils
class _symbol(object): class _symbol(object):
@ -970,7 +970,7 @@ class _TransactionContextManager(object):
def __call__(self, fn): def __call__(self, fn):
"""Decorate a function.""" """Decorate a function."""
argspec = inspect.getargspec(fn) argspec = utils.getargspec(fn)
if argspec.args[0] == 'self' or argspec.args[0] == 'cls': if argspec.args[0] == 'self' or argspec.args[0] == 'cls':
context_index = 1 context_index = 1
else: else:

View File

@ -18,6 +18,7 @@
import collections import collections
import contextlib import contextlib
import inspect as pyinspect
import itertools import itertools
import logging import logging
import re import re
@ -1227,6 +1228,25 @@ def suspend_fk_constraints_for_col_alter(
) )
def getargspec(fn):
"""Inspects a function for its argspec.
This is to handle a difference between py2/3. The Python 2.x getargspec
call is deprecated in Python 3.x, with the suggestion to use the signature
call instead.
To keep compatibility with the results, while avoiding deprecation
warnings, this instead will use the getfullargspec instead.
:param fn: The function to inspect.
:returns: The argspec for the function.
"""
if hasattr(pyinspect, 'getfullargspec'):
return pyinspect.getfullargspec(fn)
return pyinspect.getargspec(fn)
class NonCommittingConnectable(object): class NonCommittingConnectable(object):
"""A ``Connectable`` substitute which rolls all operations back. """A ``Connectable`` substitute which rolls all operations back.