diff options
| author | Tim Graham <timograham@gmail.com> | 2015-06-10 17:24:04 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-10-25 06:02:21 -0400 |
| commit | e2ea30c4403fca1b0a2032aae7a783f8705fc08b (patch) | |
| tree | 3f4f39f8422db192425cdde82d1af1344df5fc22 /django/db | |
| parent | 84ec3bfc1111525ee0b21afff870840b2eb13771 (diff) | |
[1.8.x] Fixed #24979 -- Removed usage of inspect.getargspec().
Backport of 3872a33132a4bb6aa22b237927597bbfdf6f21d7 from master
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/migrations/writer.py | 13 | ||||
| -rw-r--r-- | django/db/models/fields/files.py | 5 | ||||
| -rw-r--r-- | django/db/utils.py | 12 |
3 files changed, 18 insertions, 12 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py index 1bed59b3ef..779c842af3 100644 --- a/django/db/migrations/writer.py +++ b/django/db/migrations/writer.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import collections import datetime import decimal -import inspect import math import os import re @@ -19,6 +18,7 @@ from django.utils import datetime_safe, six from django.utils._os import upath from django.utils.encoding import force_text from django.utils.functional import Promise +from django.utils.inspect import get_func_args from django.utils.timezone import utc from django.utils.version import get_docs_version @@ -97,7 +97,7 @@ class OperationWriter(object): imports = set() name, args, kwargs = self.operation.deconstruct() - argspec = inspect.getargspec(self.operation.__init__) + operation_args = get_func_args(self.operation.__init__) # See if this operation is in django.db.migrations. If it is, # We can just use the fact we already have that imported, @@ -110,16 +110,15 @@ class OperationWriter(object): self.indent() - # Start at one because argspec includes "self" - for i, arg in enumerate(args, 1): + for i, arg in enumerate(args): arg_value = arg - arg_name = argspec.args[i] + arg_name = operation_args[i] _write(arg_name, arg_value) i = len(args) # Only iterate over remaining arguments - for arg_name in argspec.args[i + 1:]: - if arg_name in kwargs: + for arg_name in operation_args[i:]: + if arg_name in kwargs: # Don't sort to maintain signature order arg_value = kwargs[arg_name] _write(arg_name, arg_value) diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py index 73c67bef81..d6c1eaf49f 100644 --- a/django/db/models/fields/files.py +++ b/django/db/models/fields/files.py @@ -1,7 +1,6 @@ import datetime import os import warnings -from inspect import getargspec from django import forms from django.core import checks @@ -13,6 +12,7 @@ from django.db.models.fields import Field from django.utils import six from django.utils.deprecation import RemovedInDjango110Warning from django.utils.encoding import force_str, force_text +from django.utils.inspect import func_supports_parameter from django.utils.translation import ugettext_lazy as _ @@ -89,8 +89,7 @@ class FieldFile(File): def save(self, name, content, save=True): name = self.field.generate_filename(self.instance, name) - args, varargs, varkw, defaults = getargspec(self.storage.save) - if 'max_length' in args: + if func_supports_parameter(self.storage.save, 'max_length'): self.name = self.storage.save(name, content, max_length=self.field.max_length) else: warnings.warn( diff --git a/django/db/utils.py b/django/db/utils.py index 2261a69f71..47dd5fd937 100644 --- a/django/db/utils.py +++ b/django/db/utils.py @@ -333,8 +333,16 @@ class ConnectionRouter(object): # If the router doesn't have a method, skip to the next one. continue - argspec = inspect.getargspec(method) - if len(argspec.args) == 3 and not argspec.keywords: + if six.PY3: + sig = inspect.signature(router.allow_migrate) + has_deprecated_signature = not any( + p.kind == inspect.Parameter.VAR_KEYWORD for p in sig.parameters.values() + ) + else: + argspec = inspect.getargspec(router.allow_migrate) + has_deprecated_signature = len(argspec.args) == 3 and not argspec.keywords + + if has_deprecated_signature: warnings.warn( "The signature of allow_migrate has changed from " "allow_migrate(self, db, model) to " |
