[Python-modules-commits] [django-classy-tags] 01/05: Import django-classy-tags_0.7.0.orig.tar.gz
Michael Fladischer
fladi at moszumanska.debian.org
Sat Dec 19 20:28:04 UTC 2015
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 3a6ff905c7958f804d9925b02a04b3eb40cd93a6
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date: Sat Dec 19 21:19:54 2015 +0100
Import django-classy-tags_0.7.0.orig.tar.gz
---
.gitignore | 1 +
.travis.yml | 43 ++++++++++++++++++++----------
classytags/__init__.py | 2 +-
classytags/core.py | 32 +++++++++++++++++++++++
classytags/test/context_managers.py | 14 +++++++---
classytags/tests.py | 52 +++++++++++++++++++++++++++++++++++++
docs/changes.rst | 26 +++++++++++++++++++
setup.cfg | 2 ++
setup.py | 4 +--
9 files changed, 157 insertions(+), 19 deletions(-)
diff --git a/.gitignore b/.gitignore
index ae603de..52a826e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ dist
*.xml
htmlcov
/*env*/
+/build/
diff --git a/.travis.yml b/.travis.yml
index c2d5778..49a19b1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,28 +4,45 @@ python:
- 2.7
- 3.3
- 3.4
+ - 3.5
env:
- - DEPENDENCIES='django>=1.3,<1.4'
- - DEPENDENCIES='django>=1.4,<1.5'
- - DEPENDENCIES='django>=1.5,<1.6'
- - DEPENDENCIES='django>=1.6,<1.7'
- - DEPENDENCIES='django>=1.7,<1.8'
- - DEPENDENCIES='django>=1.8,<1.9'
+ - DJANGO='django>=1.3,<1.4'
+ - DJANGO='django>=1.4,<1.5'
+ - DJANGO='django>=1.5,<1.6'
+ - DJANGO='django>=1.6,<1.7'
+ - DJANGO='django>=1.7,<1.8'
+ - DJANGO='django>=1.8,<1.9'
+ - DJANGO='django>=1.9,<1.10'
+sudo: false
install:
- - pip install $DEPENDENCIES
+ - pip install $DJANGO
script:
python runtests.py
matrix:
exclude:
- python: 2.6
- env: DEPENDENCIES='django>=1.7,<1.8'
+ env: DJANGO='django>=1.7,<1.8'
- python: 2.6
- env: DEPENDENCIES='django>=1.8,<1.9'
+ env: DJANGO='django>=1.8,<1.9'
+ - python: 2.6
+ env: DJANGO='django>=1.9,<1.10'
+ - python: 3.3
+ env: DJANGO='django>=1.3,<1.4'
- python: 3.3
- env: DEPENDENCIES='django>=1.3,<1.4'
+ env: DJANGO='django>=1.4,<1.5'
- python: 3.3
- env: DEPENDENCIES='django>=1.4,<1.5'
+ env: DJANGO='django>=1.9,<1.10'
- python: 3.4
- env: DEPENDENCIES='django>=1.3,<1.4'
+ env: DJANGO='django>=1.3,<1.4'
- python: 3.4
- env: DEPENDENCIES='django>=1.4,<1.5'
+ env: DJANGO='django>=1.4,<1.5'
+ - python: 3.5
+ env: DJANGO='django>=1.3,<1.4'
+ - python: 3.5
+ env: DJANGO='django>=1.4,<1.5'
+ - python: 3.5
+ env: DJANGO='django>=1.5,<1.6'
+ - python: 3.5
+ env: DJANGO='django>=1.6,<1.7'
+ - python: 3.5
+ env: DJANGO='django>=1.7,<1.8'
diff --git a/classytags/__init__.py b/classytags/__init__.py
index aece342..a71c5c7 100644
--- a/classytags/__init__.py
+++ b/classytags/__init__.py
@@ -1 +1 @@
-__version__ = '0.6.2'
+__version__ = '0.7.0'
diff --git a/classytags/core.py b/classytags/core.py
index da52d4a..7d0c3bb 100644
--- a/classytags/core.py
+++ b/classytags/core.py
@@ -1,3 +1,5 @@
+from operator import attrgetter
+
from classytags.blocks import BlockDefinition
from classytags.compat import compat_basestring
from classytags.parser import Parser
@@ -11,6 +13,7 @@ class Options(object):
"""
def __init__(self, *options, **kwargs):
self.options = {}
+ self.raw_options = options
self.breakpoints = []
self.combined_breakpoints = {}
current_breakpoint = None
@@ -43,6 +46,35 @@ class Options(object):
else:
self.parser_class = Parser
+ def __repr__(self):
+ bits = list(map(repr, self.options[None]))
+ for breakpoint in self.breakpoints:
+ bits.append(breakpoint)
+ for option in self.options[breakpoint]:
+ bits.append(repr(option))
+ options = ','.join(bits)
+ if self.blocks:
+ blocks = ';%s' % ','.join(map(attrgetter('alias'), self.blocks))
+ else:
+ blocks = ''
+ return '<Options:%s%s>' % (options, blocks)
+
+ def __add__(self, other):
+ if not isinstance(other, Options):
+ raise TypeError("Cannot add non-Options to Options")
+ if all((self.blocks, other.blocks)):
+ raise TypeError("Cannot add Options that both define blocks")
+ if self.parser_class != other.parser_class:
+ raise TypeError(
+ "Cannot add Options that have different parser classes"
+ )
+ kwargs = {
+ 'parser_class': self.parser_class,
+ 'blocks': self.blocks or other.blocks
+ }
+ args = list(self.raw_options) + list(other.raw_options)
+ return Options(*args, **kwargs)
+
def get_parser_class(self):
return self.parser_class
diff --git a/classytags/test/context_managers.py b/classytags/test/context_managers.py
index e2273f6..71f5c44 100644
--- a/classytags/test/context_managers.py
+++ b/classytags/test/context_managers.py
@@ -3,6 +3,14 @@ from django import template
from django.conf import settings
+try:
+ Engine = None
+ builtins = template.base.builtins
+except AttributeError:
+ from django.template.engine import Engine
+ builtins = Engine.get_default().template_builtins
+
+
class NULL:
pass
@@ -41,8 +49,8 @@ class TemplateTags(object): # pragma: no cover
self.lib.tag(tag)
def __enter__(self):
- self.old = list(template.base.builtins)
- template.base.builtins.insert(0, self.lib)
+ self.old = list(builtins)
+ builtins.insert(0, self.lib)
def __exit__(self, type, value, traceback):
- template.base.builtins[:] = self.old
+ builtins[:] = self.old
diff --git a/classytags/tests.py b/classytags/tests.py
index 117a9d2..55c9a62 100644
--- a/classytags/tests.py
+++ b/classytags/tests.py
@@ -1,4 +1,6 @@
from __future__ import with_statement
+
+import operator
from distutils.version import LooseVersion
from classytags import (arguments, core, exceptions, utils, parser, helpers,
values)
@@ -1299,3 +1301,53 @@ class MultiBreakpointTests(TestCase):
exceptions.TrailingBreakpoint,
options.parse, dummy_parser, dummy_tokens
)
+
+ def test_repr(self):
+ options = core.Options(
+ arguments.Argument('first'),
+ 'breakpoint',
+ arguments.Flag('flag', true_values=['yes']),
+ blocks=['block']
+ )
+ self.assertEqual(
+ repr(options),
+ '<Options:<Argument: first>,breakpoint,<Flag: flag>;block>'
+ )
+
+ def test_add_options(self):
+ left = core.Options(
+ arguments.Argument('left')
+ )
+ right = core.Options(
+ arguments.Argument('right')
+ )
+ combined = left + right
+ dummy_tokens = DummyTokens('leftval', 'rightval')
+ kwargs, blocks = combined.parse(dummy_parser, dummy_tokens)
+ self.assertEqual(blocks, {})
+ self.assertEqual(len(kwargs), 2)
+ dummy_context = {}
+ self.assertEqual(kwargs['left'].resolve(dummy_context), 'leftval')
+ self.assertEqual(kwargs['right'].resolve(dummy_context), 'rightval')
+
+ def test_add_options_different_parser(self):
+ left = core.Options(
+ parser_class=object()
+ )
+ right = core.Options(
+ parser_class=object()
+ )
+ self.assertRaises(TypeError, operator.add, left, right)
+
+ def test_add_options_blocks_both(self):
+ left = core.Options(
+ blocks=['leftblock']
+ )
+ right = core.Options(
+ blocks=['rightblock']
+ )
+ self.assertRaises(TypeError, operator.add, left, right)
+
+ def test_add_options_to_something_else(self):
+ options = core.Options()
+ self.assertRaises(TypeError, operator.add, options, 1)
diff --git a/docs/changes.rst b/docs/changes.rst
index 2f5f808..c627404 100644
--- a/docs/changes.rst
+++ b/docs/changes.rst
@@ -2,6 +2,32 @@
Changelog
#########
+
+*****
+0.7.0
+*****
+
+* Added support for Django 1.9
+* Added support for Python 3.5
+* Added a nice ``__repr__`` to :class:`classytags.core.Options`
+* Added ability to combine :class:`classytags.core.Options` instances using the
+ add operator.
+
+
+*****
+0.6.2
+*****
+
+* Fixed Django 1.8 support
+
+
+*****
+0.6.1
+*****
+
+* Packaging fixes
+
+
*****
0.6.0
*****
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..3c6e79c
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,2 @@
+[bdist_wheel]
+universal=1
diff --git a/setup.py b/setup.py
index 2aa05fd..3cace4d 100644
--- a/setup.py
+++ b/setup.py
@@ -22,11 +22,11 @@ setup(
"Intended Audience :: Developers",
"Natural Language :: English",
"Operating System :: OS Independent",
- "Programming Language :: Python :: 2.5",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
- "Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
"Topic :: Utilities",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Python Modules",
--
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