Commit 3872a331 authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #24979 -- Removed usage of inspect.getargspec().

parent 4b600ed2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ from django.db import models
from django.http import Http404
from django.template.engine import Engine
from django.utils.decorators import method_decorator
from django.utils.inspect import func_has_no_args
from django.utils.translation import ugettext as _
from django.views.generic import TemplateView

@@ -243,7 +244,7 @@ class ModelDetailView(BaseAdminDocsView):

        # Gather model methods.
        for func_name, func in model.__dict__.items():
            if (inspect.isfunction(func) and len(inspect.getargspec(func)[0]) == 1):
            if inspect.isfunction(func) and func_has_no_args(func):
                try:
                    for exclude in MODEL_METHODS_EXCLUDE:
                        if func_name.startswith(exclude):
+2 −2
Original line number Diff line number Diff line
import argparse
import inspect

from django.contrib.gis import gdal
from django.core.management.base import BaseCommand, CommandError
from django.utils.inspect import get_func_args


class LayerOptionAction(argparse.Action):
@@ -91,7 +91,7 @@ class Command(BaseCommand):
        from django.contrib.gis.utils.ogrinspect import _ogrinspect, mapping
        # Filter options to params accepted by `_ogrinspect`
        ogr_options = {k: v for k, v in options.items()
                       if k in inspect.getargspec(_ogrinspect).args and v is not None}
                       if k in get_func_args(_ogrinspect) and v is not None}
        output = [s for s in _ogrinspect(ds, model_name, **ogr_options)]

        if options['mapping']:
+2 −3
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@ import errno
import os
import warnings
from datetime import datetime
from inspect import getargspec

from django.conf import settings
from django.core.exceptions import SuspiciousFileOperation
@@ -14,6 +13,7 @@ from django.utils.deconstruct import deconstructible
from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.encoding import filepath_to_uri, force_text
from django.utils.functional import LazyObject
from django.utils.inspect import func_supports_parameter
from django.utils.module_loading import import_string
from django.utils.six.moves.urllib.parse import urljoin
from django.utils.text import get_valid_filename
@@ -49,8 +49,7 @@ class Storage(object):
        if not hasattr(content, 'chunks'):
            content = File(content)

        args, varargs, varkw, defaults = getargspec(self.get_available_name)
        if 'max_length' in args:
        if func_supports_parameter(self.get_available_name, 'max_length'):
            name = self.get_available_name(name, max_length=max_length)
        else:
            warnings.warn(
+5 −6
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@ from __future__ import unicode_literals
import collections
import datetime
import decimal
import inspect
import math
import os
import re
@@ -18,6 +17,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.module_loading import module_dir
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,15 +110,14 @@ 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:]:
        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)
+2 −3
Original line number Diff line number Diff line
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 RemovedInDjango20Warning
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(
Loading