Skip to content

Commit

Permalink
Use six, future and strict pep8
Browse files Browse the repository at this point in the history
  • Loading branch information
andreif committed Sep 25, 2014
1 parent 9225339 commit 17a86f6
Show file tree
Hide file tree
Showing 18 changed files with 44 additions and 31 deletions.
1 change: 0 additions & 1 deletion setup.cfg
@@ -1,5 +1,4 @@
[flake8]
ignore = E501,E128,F401,F403
max-line-length = 112
exclude = .tox,.git,docs,migrations
max-complexity = 14
1 change: 1 addition & 0 deletions setup.py
Expand Up @@ -68,6 +68,7 @@ def finalize_options(self):
dependency_links=[
],
install_requires=[
'six',
],
tests_require=['Django', 'Jinja2', 'jingo', 'coffin'],
test_suite='run_tests.main',
Expand Down
3 changes: 2 additions & 1 deletion viewlet/__init__.py
@@ -1,5 +1,6 @@
# coding=utf-8
from .api import *
from __future__ import unicode_literals
from .api import viewlet, get, call, refresh # NOQA

VERSION = (1, 3, 0, 'final', 0)

Expand Down
2 changes: 2 additions & 0 deletions viewlet/api.py
@@ -1,3 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
from viewlet.library import library

__all__ = ['viewlet', 'get', 'call', 'refresh']
Expand Down
2 changes: 2 additions & 0 deletions viewlet/cache.py
@@ -1,3 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
from django.core.cache import InvalidCacheBackendError


Expand Down
5 changes: 3 additions & 2 deletions viewlet/conf.py
@@ -1,4 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
from django.conf import settings as django_settings


Expand All @@ -8,8 +9,8 @@ def __init__(self, **conf):
super(ViewletSettings, self).__init__(conf)

# Override defaults with django settings
for key, value in conf.items():
setattr(self, key, getattr(django_settings, key, value))
for key in conf:
setattr(self, key, getattr(django_settings, key, conf[key]))

__getattr__ = dict.__getitem__
__setattr__ = dict.__setitem__
Expand Down
1 change: 1 addition & 0 deletions viewlet/exceptions.py
@@ -1,3 +1,4 @@
# coding=utf-8
from django.template import TemplateSyntaxError


Expand Down
1 change: 1 addition & 0 deletions viewlet/library.py
@@ -1,4 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
import types


Expand Down
7 changes: 4 additions & 3 deletions viewlet/loaders/__init__.py
@@ -1,5 +1,6 @@
# coding=utf-8
import sys
from __future__ import unicode_literals
import six
from viewlet.conf import settings


Expand All @@ -22,8 +23,8 @@ def mark_safe(value):


def querydict_to_kwargs(querydict):
if sys.version_info > (3, 0):
if six.PY3:
make_key = lambda k: k
else:
make_key = lambda k: k.encode('utf-8')
return dict((make_key(k), ','.join(querydict.getlist(k))) for k in querydict.keys())
return dict((make_key(k), ','.join(querydict.getlist(k))) for k in querydict)
4 changes: 2 additions & 2 deletions viewlet/loaders/django_loader.py
@@ -1,3 +1,3 @@
# coding=utf-8
from django.template.loader import render_to_string
from django.utils.safestring import mark_safe
from django.template.loader import render_to_string # NOQA
from django.utils.safestring import mark_safe # NOQA
6 changes: 4 additions & 2 deletions viewlet/loaders/jinja2_loader.py
@@ -1,4 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
from django.conf import settings as django_settings
from django.utils.importlib import import_module
from jinja2 import FileSystemLoader, PackageLoader, ChoiceLoader, nodes
Expand Down Expand Up @@ -26,8 +27,9 @@ def parse(self, parser):
name = parser.parse_expression()
first = False
context = nodes.ContextReference()
return nodes.CallBlock(self.call_method('_call_viewlet', args=[name, context, nodes.List(viewlet_args)]),
[], [], []).set_lineno(lineno)
return nodes.CallBlock(
self.call_method('_call_viewlet', args=[name, context, nodes.List(viewlet_args)]),
[], [], []).set_lineno(lineno)

def _call_viewlet(self, name, context, viewlet_args, caller=None):
context = context.get_all()
Expand Down
14 changes: 6 additions & 8 deletions viewlet/models.py
@@ -1,4 +1,6 @@
# coding=utf-8
from __future__ import unicode_literals
import six
import warnings
from inspect import getargspec
from django.template.context import BaseContext
Expand All @@ -14,11 +16,6 @@
cache = get_cache()
DEFAULT_CACHE_TIMEOUT = cache.default_timeout

try:
basestring
except NameError:
basestring = (bytes, str)


class Viewlet(object):
"""
Expand All @@ -38,7 +35,8 @@ def __init__(self, library, name=None, template=None, key=None, timeout=DEFAULT_
self.timeout = timeout
if not cached:
self.timeout = 0
warnings.warn('Keyword argument "cache" is deprecated, use timeout=0 to disable cache', DeprecationWarning)
warnings.warn('Keyword argument "cache" is deprecated, use timeout=0 to disable cache',
DeprecationWarning)

def register(self, func):
"""
Expand All @@ -63,7 +61,7 @@ def register(self, func):

def _build_args(self, *args, **kwargs):
viewlet_func_kwargs = dict((self.viewlet_func_args[i], args[i]) for i in range(0, len(args)))
viewlet_func_kwargs.update(dict((k, v) for k, v in kwargs.items() if k in self.viewlet_func_args))
viewlet_func_kwargs.update(dict((k, kwargs[k]) for k in kwargs if k in self.viewlet_func_args))
return [viewlet_func_kwargs.get(arg) for arg in self.viewlet_func_args]

def _build_cache_key(self, *args):
Expand All @@ -79,7 +77,7 @@ def _cache_set(self, key, value):
timeout = self.timeout

# Avoid pickling string like objects
if isinstance(value, basestring):
if isinstance(value, six.string_types):
value = smart_bytes(value)
cache.set(key, value, timeout)

Expand Down
5 changes: 4 additions & 1 deletion viewlet/templatetags/viewlets.py
@@ -1,5 +1,8 @@
# coding=utf-8
from __future__ import unicode_literals
import logging
import re
import six
from django import template
from django.template import TemplateSyntaxError
import viewlet
Expand All @@ -21,7 +24,7 @@ def __init__(self, viewlet_name, args, kwargs):
def render(self, context):
try:
args = [arg.resolve(context) for arg in self.viewlet_args]
kwargs = dict((key, value.resolve(context)) for key, value in self.viewlet_kwargs.items())
kwargs = dict((key, value.resolve(context)) for key, value in six.iteritems(self.viewlet_kwargs))
template = viewlet.call(self.viewlet_name, context, *args, **kwargs)
return mark_safe(template)
except UnknownViewlet as e:
Expand Down
2 changes: 1 addition & 1 deletion viewlet/tests/__init__.py
@@ -1,2 +1,2 @@
# coding=utf-8
from .test_viewlet import *
from .test_viewlet import ViewletTest # NOQA
14 changes: 5 additions & 9 deletions viewlet/tests/test_viewlet.py
@@ -1,6 +1,7 @@
# coding=utf-8
from __future__ import unicode_literals
import six
from time import time, sleep
import sys
import django
from django.core.urlresolvers import reverse
from django.template import Context
Expand All @@ -20,11 +21,6 @@
cache = get_cache()
__all__ = ['ViewletTest']

try:
unicode
except NameError:
unicode = str


class ViewletTest(TestCase):

Expand Down Expand Up @@ -182,7 +178,7 @@ def test_jinja_tag(self):
self.assertEqual(html.strip(), u'<h1>RäksmörgåsHello wörld!</h1>')

def test_custom_jinja2_environment(self):
if sys.version_info > (3, 0): # TODO: coffin fails for Python 3.x
if six.PY3: # TODO: coffin fails for Python 3.x
return
env = get_env()
self.assertEqual(env.optimized, True)
Expand Down Expand Up @@ -235,11 +231,11 @@ def test_mark_safe(self):
def test_cached_string(self):
template = self.get_django_template("<h1>{% viewlet hello_name name='wörld' %}</h1>")
html = self.render(template)
self.assertTrue(isinstance(html, unicode))
self.assertTrue(isinstance(html, six.text_type))
v = viewlet.get('hello_name')
cache_key = v._build_cache_key(u'wörld')
cached_value = cache.get(cache_key)
self.assertTrue(isinstance(cached_value, bytes))
self.assertTrue(isinstance(cached_value, six.binary_type))

def test_named(self):
template = self.get_django_template("<h1>{% viewlet hello_new_name 'wörld' %}</h1>")
Expand Down
4 changes: 3 additions & 1 deletion viewlet/tests/urls.py
@@ -1,9 +1,11 @@
# coding=utf-8
from __future__ import unicode_literals
try:
from django.conf.urls import patterns, include
except ImportError:
from django.conf.urls.defaults import patterns, include

urlpatterns = patterns('',
urlpatterns = patterns(
'',
(r'^viewlet/', include('viewlet.urls')),
)
1 change: 1 addition & 0 deletions viewlet/urls.py
@@ -1,4 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
try:
from django.conf.urls import patterns, url
except ImportError:
Expand Down
2 changes: 2 additions & 0 deletions viewlet/views.py
@@ -1,3 +1,5 @@
# coding=utf-8
from __future__ import unicode_literals
from django.http import HttpResponse
from django.template.context import RequestContext
import viewlet
Expand Down

0 comments on commit 17a86f6

Please sign in to comment.