[Python-modules-commits] [django-classy-tags] 01/06: Import django-classy-tags_0.7.1.orig.tar.gz
Michael Fladischer
fladi at moszumanska.debian.org
Fri Jan 29 19:58:28 UTC 2016
This is an automated email from the git hooks/post-receive script.
fladi pushed a commit to branch master
in repository django-classy-tags.
commit f29f75bfba4f22635a67acbea2e5ebe669c26e19
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date: Fri Jan 29 12:33:05 2016 +0100
Import django-classy-tags_0.7.1.orig.tar.gz
---
.travis.yml | 2 +-
classytags/__init__.py | 2 +-
classytags/arguments.py | 15 +++--
classytags/compat.py | 1 +
classytags/core.py | 16 ++++--
classytags/exceptions.py | 5 +-
classytags/helpers.py | 10 +++-
classytags/parser.py | 11 ++--
classytags/test/project/testrunner.py | 27 ---------
classytags/test/run_tests.py | 105 ----------------------------------
classytags/tests.py | 66 ++++++++++++++++-----
classytags/utils.py | 14 +++--
classytags/values.py | 16 ++++--
docs/changes.rst | 8 +++
setup.cfg | 2 +
setup.py | 2 +-
16 files changed, 127 insertions(+), 175 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 49a19b1..1597929 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,7 +17,7 @@ sudo: false
install:
- pip install $DJANGO
script:
- python runtests.py
+ - python runtests.py
matrix:
exclude:
- python: 2.6
diff --git a/classytags/__init__.py b/classytags/__init__.py
index a71c5c7..f0788a8 100644
--- a/classytags/__init__.py
+++ b/classytags/__init__.py
@@ -1 +1 @@
-__version__ = '0.7.0'
+__version__ = '0.7.1'
diff --git a/classytags/arguments.py b/classytags/arguments.py
index d410fac..1d5617a 100644
--- a/classytags/arguments.py
+++ b/classytags/arguments.py
@@ -1,10 +1,17 @@
-from classytags.exceptions import InvalidFlag
-from classytags.utils import TemplateConstant, NULL, mixin
-from classytags.values import (StringValue, IntegerValue, ListValue, ChoiceValue,
- DictValue, StrictStringValue)
from django import template
from django.core.exceptions import ImproperlyConfigured
+from classytags.exceptions import InvalidFlag
+from classytags.utils import NULL
+from classytags.utils import TemplateConstant
+from classytags.utils import mixin
+from classytags.values import ChoiceValue
+from classytags.values import DictValue
+from classytags.values import IntegerValue
+from classytags.values import ListValue
+from classytags.values import StrictStringValue
+from classytags.values import StringValue
+
class Argument(object):
"""
diff --git a/classytags/compat.py b/classytags/compat.py
index e5b317f..074ce35 100644
--- a/classytags/compat.py
+++ b/classytags/compat.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# flake8: noqa
try: # pragma: no cover
compat_basestring = basestring
diff --git a/classytags/core.py b/classytags/core.py
index 7d0c3bb..52cf461 100644
--- a/classytags/core.py
+++ b/classytags/core.py
@@ -1,10 +1,12 @@
from operator import attrgetter
+from django.template import Node
+
from classytags.blocks import BlockDefinition
from classytags.compat import compat_basestring
from classytags.parser import Parser
-from classytags.utils import StructuredOptions, get_default_name
-from django.template import Node
+from classytags.utils import StructuredOptions
+from classytags.utils import get_default_name
class Options(object):
@@ -55,7 +57,7 @@ class Options(object):
options = ','.join(bits)
if self.blocks:
blocks = ';%s' % ','.join(map(attrgetter('alias'), self.blocks))
- else:
+ else: # pragma: no cover
blocks = ''
return '<Options:%s%s>' % (options, blocks)
@@ -82,7 +84,12 @@ class Options(object):
"""
Bootstrap this options
"""
- return StructuredOptions(self.options, self.breakpoints, self.blocks, self.combined_breakpoints)
+ return StructuredOptions(
+ self.options,
+ self.breakpoints,
+ self.blocks,
+ self.combined_breakpoints
+ )
def parse(self, parser, tokens):
"""
@@ -119,6 +126,7 @@ class Tag(TagMeta('TagMeta', (Node,), {})):
Main Tag class.
"""
options = Options()
+ name = None
def __init__(self, parser, tokens):
self.kwargs, self.blocks = self.options.parse(parser, tokens)
diff --git a/classytags/exceptions.py b/classytags/exceptions.py
index 03a1479..6c632b3 100644
--- a/classytags/exceptions.py
+++ b/classytags/exceptions.py
@@ -42,7 +42,10 @@ class BreakpointExpected(BaseError):
class TrailingBreakpoint(BaseError):
- template = ("Tag %(tagname)s ends in trailing breakpoint '%(breakpoint)s' without an argument following.")
+ template = (
+ "Tag %(tagname)s ends in trailing breakpoint '%(breakpoint)s' without "
+ "an argument following."
+ )
def __init__(self, tagname, breakpoint):
self.tagname = tagname
diff --git a/classytags/helpers.py b/classytags/helpers.py
index 5081eb4..59e2a00 100644
--- a/classytags/helpers.py
+++ b/classytags/helpers.py
@@ -1,8 +1,9 @@
-from classytags.core import Tag
-from classytags.utils import flatten_context
from django.core.exceptions import ImproperlyConfigured
from django.template.loader import render_to_string
+from classytags.core import Tag
+from classytags.utils import flatten_context
+
class AsTag(Tag):
"""
@@ -83,7 +84,10 @@ class InclusionTag(Tag):
safe_context.update(**data)
output = render_to_string(template, safe_context)
else:
- data = context.new(self.get_context(context, **kwargs))
+ new_context = context.new(
+ flatten_context(self.get_context(context, **kwargs))
+ )
+ data = flatten_context(new_context)
output = render_to_string(template, data)
return output
diff --git a/classytags/parser.py b/classytags/parser.py
index f671287..fa59393 100644
--- a/classytags/parser.py
+++ b/classytags/parser.py
@@ -1,8 +1,12 @@
-from classytags.exceptions import (BreakpointExpected, TooManyArguments,
- ArgumentRequiredError, TrailingBreakpoint)
from copy import deepcopy
+
from django import template
+from classytags.exceptions import ArgumentRequiredError
+from classytags.exceptions import BreakpointExpected
+from classytags.exceptions import TooManyArguments
+from classytags.exceptions import TrailingBreakpoint
+
class Parser(object):
"""
@@ -154,9 +158,6 @@ class Parser(object):
self.arguments = self.options.get_arguments()
# And check this breakpoints arguments for required arguments.
self.check_required()
- #if self.current_argument is not None:
- # self.arguments = [self.current_argument]
- # self.check_required()
def parse_blocks(self):
"""
diff --git a/classytags/test/project/testrunner.py b/classytags/test/project/testrunner.py
deleted file mode 100644
index fb18c78..0000000
--- a/classytags/test/project/testrunner.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from django.conf import settings # pragma: no cover
-try:
- from django.test.simple import DjangoTestSuiteRunner # pragma: no cover
-except:
- from django.test.runner import DiscoverRunner
- DjangoTestSuiteRunner = DiscoverRunner
-try: # pragma: no cover
- from xmlrunner import XMLTestRunner as runner
-except: # pragma: no cover
- runner = False
-
-
-class TestSuiteRunner(DjangoTestSuiteRunner): # pragma: no cover
- use_runner = runner
-
- def run_suite(self, suite, **kwargs):
- if self.use_runner and not self.failfast:
- return self.use_runner(
- output=getattr(settings, 'JUNIT_OUTPUT_DIR', '.')
- ).run(suite)
- else:
- return super(TestSuiteRunner, self).run_suite(suite, **kwargs)
-
- def setup_databases(self, *args, **kwargs):
- # no need for a database...
- pass
- teardown_databases = setup_databases
diff --git a/classytags/test/run_tests.py b/classytags/test/run_tests.py
deleted file mode 100644
index e1de4ba..0000000
--- a/classytags/test/run_tests.py
+++ /dev/null
@@ -1,105 +0,0 @@
-import sys # pragma: no cover
-import os # pragma: no cover
-
-
-def configure_settings(env_name): # pragma: no cover
- from classytags.test import project
- import classytags
-
- PROJECT_DIR = os.path.abspath(os.path.dirname(project.__file__))
-
- MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
-
- TEMPLATE_DIRS = (
- os.path.join(PROJECT_DIR, 'templates'),
- )
-
- dirname = os.path.dirname(classytags.__file__)
- JUNIT_OUTPUT_DIR = os.path.join(
- os.path.abspath(dirname), '..', 'junit-%s' % env_name
- )
-
- ADMINS = tuple()
- DEBUG = False
-
- gettext = lambda x: x
-
- from django.conf import settings
-
- settings.configure(
- PROJECT_DIR=PROJECT_DIR,
- DEBUG=DEBUG,
- TEMPLATE_DEBUG=DEBUG,
- ADMINS=ADMINS,
- CACHE_BACKEND='locmem:///',
- MANAGERS=ADMINS,
- TIME_ZONE='America/Chicago',
- SITE_ID=1,
- USE_I18N=True,
- MEDIA_ROOT=MEDIA_ROOT,
- MEDIA_URL='/media/',
- ADMIN_MEDIA_PREFIX='/media_admin/',
- EMAIL_BACKEND='django.core.mail.backends.locmem.EmailBackend',
- SECRET_KEY='test-secret-key',
- TEMPLATE_LOADERS=(
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
- 'django.template.loaders.eggs.Loader',
- ),
- INTERNAL_IPS=('127.0.0.1',),
- ROOT_URLCONF='classytags.test.project.urls',
- TEMPLATE_DIRS=TEMPLATE_DIRS,
- INSTALLED_APPS=(
- 'classytags',
- 'classytags.test.project',
- ),
- gettext=lambda s: s,
- LANGUAGE_CODE="en-us",
- APPEND_SLASH=True,
- TEST_RUNNER='classytags.test.project.testrunner.TestSuiteRunner',
- JUNIT_OUTPUT_DIR=JUNIT_OUTPUT_DIR
- )
-
- return settings
-
-
-def run_tests(*test_args): # pragma: no cover
- test_args = list(test_args)
- if '--direct' in test_args:
- test_args.remove('--direct')
- dirname = os.path.abspath(os.path.dirname(__file__))
- sys.path.insert(0, os.path.join(dirname, "..", ".."))
-
- failfast = False
-
- test_labels = []
-
- test_args_enum = dict([(val, idx) for idx, val in enumerate(test_args)])
-
- env_name = ''
- if '--env-name' in test_args:
- env_name = test_args[test_args_enum['--env-name'] + 1]
- test_args.remove('--env-name')
- test_args.remove(env_name)
-
- if '--failfast' in test_args:
- test_args.remove('--failfast')
- failfast = True
-
- for label in test_args:
- test_labels.append('classytags.%s' % label)
-
- if not test_labels:
- test_labels.append('classytags')
-
- settings = configure_settings(env_name)
-
- from django.test.utils import get_runner
-
- runner_class = get_runner(settings)
- runner = runner_class(verbosity=1, interactive=True, failfast=failfast)
- failures = runner.run_tests(test_labels)
- sys.exit(failures)
-
-if __name__ == '__main__': # pragma: no cover
- run_tests(*sys.argv[1:])
diff --git a/classytags/tests.py b/classytags/tests.py
index 55c9a62..4a8bcd2 100644
--- a/classytags/tests.py
+++ b/classytags/tests.py
@@ -1,22 +1,38 @@
from __future__ import with_statement
import operator
+import os
+import sys
+import warnings
from distutils.version import LooseVersion
-from classytags import (arguments, core, exceptions, utils, parser, helpers,
- values)
-from classytags.blocks import BlockDefinition, VariableBlockName
-from classytags.compat import compat_next
-from classytags.test.context_managers import SettingsOverride, TemplateTags
+from unittest import TestCase
+
import django
from django import template
from django.core.exceptions import ImproperlyConfigured
-from unittest import TestCase
-import sys
-import warnings
+
+from classytags import arguments
+from classytags import core
+from classytags import exceptions
+from classytags import helpers
+from classytags import parser
+from classytags import utils
+from classytags import values
+from classytags.blocks import BlockDefinition
+from classytags.blocks import VariableBlockName
+from classytags.compat import compat_next
+from classytags.test.context_managers import SettingsOverride
+from classytags.test.context_managers import TemplateTags
+from django.template import Context
DJANGO_1_4_OR_HIGHER = (
LooseVersion(django.get_version()) >= LooseVersion('1.4')
)
+DJANGO_1_5_OR_HIGHER = (
+ LooseVersion(django.get_version()) >= LooseVersion('1.5')
+)
+
+CLASSY_TAGS_DIR = os.path.abspath(os.path.dirname(__file__))
class DummyTokens(list):
@@ -53,11 +69,11 @@ def _collect_warnings(observe_warning, f, *args, **kwargs):
# Disable the per-module cache for every module otherwise if the warning
# which the caller is expecting us to collect was already emitted it won't
# be re-emitted by the call to f which happens below.
- for v in sys.modules.values():
+ for v in sys.modules.values(): # pragma: no cover
if v is not None:
try:
v.__warningregistry__ = None
- except: # pragma: no cover
+ except:
# Don't specify a particular exception type to handle in case
# some wacky object raises some wacky exception in response to
# the setattr attempt.
@@ -756,7 +772,7 @@ class ClassytagsTests(TestCase):
# test warning
context = template.Context({'i': 'one'})
message = values.IntegerValue.errors['clean'] % {
- 'value': repr('one')
+ 'value': repr('one')
}
self.assertWarns(exceptions.TemplateSyntaxWarning,
message, tpl.render, context)
@@ -1135,14 +1151,14 @@ class ClassytagsTests(TestCase):
arguments.StringArgument('string', resolve=False),
)
with SettingsOverride(DEBUG=False):
- #test ok
+ # test ok
dummy_tokens = DummyTokens('string')
kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
dummy_context = {}
self.assertEqual(
kwargs['string'].resolve(dummy_context), 'string'
)
- #test warning
+ # test warning
dummy_tokens = DummyTokens(1)
kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
dummy_context = {}
@@ -1351,3 +1367,27 @@ class MultiBreakpointTests(TestCase):
def test_add_options_to_something_else(self):
options = core.Options()
self.assertRaises(TypeError, operator.add, options, 1)
+
+ def test_flatten_context(self):
+ context = Context({'foo': 'bar'})
+ context.push()
+ context.update({'bar': 'baz'})
+ context.push()
+ context.update({'foo': 'test'})
+ flat = utils.flatten_context(context)
+ expected = {
+ 'foo': 'test',
+ 'bar': 'baz',
+ }
+ if DJANGO_1_5_OR_HIGHER:
+ expected.update({
+ 'None': None,
+ 'True': True,
+ 'False': False,
+ })
+ self.assertEqual(flat, expected)
+ context.flatten = None
+ flat = utils.flatten_context(context)
+ self.assertEqual(flat, expected)
+ flat = utils.flatten_context({'foo': 'test', 'bar': 'baz'})
+ self.assertEqual(flat, {'foo': 'test', 'bar': 'baz'})
diff --git a/classytags/utils.py b/classytags/utils.py
index 6231e0d..d38a1c9 100644
--- a/classytags/utils.py
+++ b/classytags/utils.py
@@ -1,6 +1,8 @@
+import re
from copy import copy
+
from classytags.compat import compat_basestring
-import re
+from django.template.context import BaseContext
class NULL:
@@ -37,7 +39,9 @@ class StructuredOptions(object):
self.breakpoints = copy(breakpoints)
self.blocks = copy(blocks)
self.combined_breakpoints = dict(combind_breakpoints.items())
- self.reversed_combined_breakpoints = dict((v,k) for k,v in combind_breakpoints.items())
+ self.reversed_combined_breakpoints = dict(
+ (v, k) for k, v in combind_breakpoints.items()
+ )
self.current_breakpoint = None
if self.breakpoints:
self.next_breakpoint = self.breakpoints.pop(0)
@@ -72,7 +76,8 @@ def get_default_name(name):
return _re2.sub(r'\1_\2', _re1.sub(r'\1_\2', name)).lower()
-def mixin(parent, child, attrs={}):
+def mixin(parent, child, attrs=None):
+ attrs = attrs or {}
return type(
'%sx%s' % (parent.__name__, child.__name__),
(child, parent),
@@ -83,8 +88,9 @@ def mixin(parent, child, attrs={}):
def flatten_context(context):
if callable(getattr(context, 'flatten', None)):
return context.flatten()
- else:
+ elif isinstance(context, BaseContext):
flat = {}
for d in context.dicts:
flat.update(d)
return flat
+ return context
diff --git a/classytags/values.py b/classytags/values.py
index 4a42b4c..df55d76 100644
--- a/classytags/values.py
+++ b/classytags/values.py
@@ -1,8 +1,10 @@
-from classytags.compat import compat_basestring
-from classytags.exceptions import TemplateSyntaxWarning
+import warnings
+
from django import template
from django.conf import settings
-import warnings
+
+from classytags.compat import compat_basestring
+from classytags.exceptions import TemplateSyntaxWarning
class StringValue(object):
@@ -11,9 +13,11 @@ class StringValue(object):
def __init__(self, var):
self.var = var
- if hasattr(self.var, 'literal'): # django.template.base.Variable
+ try:
+ # django.template.base.Variable
self.literal = self.var.literal
- else: # django.template.base.FilterExpression
+ except AttributeError:
+ # django.template.base.FilterExpression
self.literal = self.var.token
def resolve(self, context):
@@ -86,7 +90,7 @@ class DictValue(dict, StringValue):
return self.clean(resolved)
-class ChoiceValue(object):
+class ChoiceValue(StringValue):
errors = {
"choice": "%(value)s is not a valid choice. Valid choices: "
"%(choices)s.",
diff --git a/docs/changes.rst b/docs/changes.rst
index c627404..698dd1d 100644
--- a/docs/changes.rst
+++ b/docs/changes.rst
@@ -4,6 +4,14 @@ Changelog
*****
+0.7.1
+*****
+
+* Prepare support for Django 1.10. Please note that Django 1.10 is **not**
+ supported by this release, as Django 1.10 is not released yet.
+
+
+*****
0.7.0
*****
diff --git a/setup.cfg b/setup.cfg
index 3c6e79c..50a56dc 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,2 +1,4 @@
[bdist_wheel]
universal=1
+[flake8]
+ignore = W293
diff --git a/setup.py b/setup.py
index 3cace4d..a501651 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ setup(
version = version,
description = 'Class based template tags for Django',
author = 'Jonas Obrist',
- author_email = 'jonas.obrist at divio.ch',
+ author_email = 'ojiidotch at gmail.com',
url = 'http://github.com/ojii/django-classy-tags',
packages = find_packages(),
zip_safe=False,
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/django-classy-tags.git
More information about the Python-modules-commits
mailing list