[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