From 41e0033caf1267edda2b780ae50a3881c3de94ef Mon Sep 17 00:00:00 2001 From: Chillar Anand Date: Thu, 19 Jan 2017 21:58:30 +0530 Subject: [PATCH] Refs #23919 -- Removed usage of django.utils.decorators.ContextDecorator. --- django/db/transaction.py | 3 ++- django/utils/decorators.py | 22 ++-------------------- django/utils/timezone.py | 2 +- django/utils/translation/__init__.py | 2 +- 4 files changed, 6 insertions(+), 23 deletions(-) diff --git a/django/db/transaction.py b/django/db/transaction.py index e392c13b329..b83aaa64407 100644 --- a/django/db/transaction.py +++ b/django/db/transaction.py @@ -1,7 +1,8 @@ +from contextlib import ContextDecorator + from django.db import ( DEFAULT_DB_ALIAS, DatabaseError, Error, ProgrammingError, connections, ) -from django.utils.decorators import ContextDecorator class TransactionManagementError(ProgrammingError): diff --git a/django/utils/decorators.py b/django/utils/decorators.py index 3b2a002e7b0..a3af946b335 100644 --- a/django/utils/decorators.py +++ b/django/utils/decorators.py @@ -1,10 +1,7 @@ "Functions that help with dynamically creating decorators for views." -try: - from contextlib import ContextDecorator -except ImportError: - ContextDecorator = None - +# For backwards compatibility in Django 2.0. +from contextlib import ContextDecorator # noqa from functools import WRAPPER_ASSIGNMENTS, update_wrapper, wraps @@ -166,21 +163,6 @@ def make_middleware_decorator(middleware_class): return _make_decorator -if ContextDecorator is None: - # ContextDecorator was introduced in Python 3.2 - # See https://docs.python.org/3/library/contextlib.html#contextlib.ContextDecorator - class ContextDecorator: - """ - A base class that enables a context manager to also be used as a decorator. - """ - def __call__(self, func): - @wraps(func, assigned=available_attrs(func)) - def inner(*args, **kwargs): - with self: - return func(*args, **kwargs) - return inner - - class classproperty: def __init__(self, method=None): self.fget = method diff --git a/django/utils/timezone.py b/django/utils/timezone.py index 66bfa00030a..bc6d60e228c 100644 --- a/django/utils/timezone.py +++ b/django/utils/timezone.py @@ -3,13 +3,13 @@ Timezone-related classes and functions. """ import functools +from contextlib import ContextDecorator from datetime import datetime, timedelta, tzinfo from threading import local import pytz from django.conf import settings -from django.utils.decorators import ContextDecorator __all__ = [ 'utc', 'get_fixed_timezone', diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py index a8f3b751b44..2c508572b85 100644 --- a/django/utils/translation/__init__.py +++ b/django/utils/translation/__init__.py @@ -3,8 +3,8 @@ Internationalization support. """ import re import warnings +from contextlib import ContextDecorator -from django.utils.decorators import ContextDecorator from django.utils.deprecation import RemovedInDjango21Warning from django.utils.encoding import force_text from django.utils.functional import lazy