Skip to content

Commit

Permalink
Python 3 compatibility
Browse files Browse the repository at this point in the history
Removed Unipath dependency as it claims to support Python 3, but has an open
issue regarding Python 3 support <mikeorr/Unipath#10>.

Removed argparse dependency as Python 2.7 and 3.2 included argparse in stdlib.

Furthermore some PEP8 cleanups on the files touched.
  • Loading branch information
Bouke committed Apr 13, 2014
1 parent 5046bde commit c9b04a9
Show file tree
Hide file tree
Showing 13 changed files with 240 additions and 181 deletions.
4 changes: 3 additions & 1 deletion djangobench/base_settings.py
@@ -1,3 +1,5 @@
ALLOWED_HOSTS = ['*']

DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = ':memory:'

Expand All @@ -8,4 +10,4 @@
},
}

SECRET_KEY = "NOT REALLY SECRET"
SECRET_KEY = "NOT REALLY SECRET"
18 changes: 11 additions & 7 deletions djangobench/benchmarks/default_middleware/benchmark.py
@@ -1,5 +1,3 @@
from time import time

from django.test.client import Client, FakePayload
from django.conf import global_settings
from django.conf import settings
Expand All @@ -8,6 +6,7 @@

from djangobench.utils import run_comparison_benchmark


class RequestFactory(Client):
"""
Class that lets you create mock Request objects for use in testing.
Expand All @@ -33,7 +32,7 @@ def request(self, **request):
has created it.
"""
environ = {
'HTTP_COOKIE': self.cookies,
'HTTP_COOKIE': self.cookies.output(header='', sep='; '),
'PATH_INFO': '/',
'QUERY_STRING': '',
'REQUEST_METHOD': 'GET',
Expand All @@ -48,6 +47,7 @@ def request(self, **request):

return WSGIRequest(environ)


def setup():
global req_factory, handler_default_middleware, handler_no_middleware
req_factory = RequestFactory()
Expand All @@ -60,27 +60,31 @@ def setup():
handler_no_middleware = WSGIHandler()
handler_no_middleware.load_middleware()


def benchmark_request(middleware_classes):
settings.MIDDLEWARE_CLASSES = middleware_classes
req_factory = RequestFactory()
handler = WSGIHandler()
handler.load_middleware()
handler.get_response(req_factory.get('/'))


def benchmark_default_middleware():
global req_factory, handler_default_middleware
handler_default_middleware.get_response(req_factory.get('/'))


def benchmark_no_middleware():
global req_factory, handler_no_middleware
handler_no_middleware.get_response(req_factory.get('/'))


run_comparison_benchmark(
benchmark_default_middleware,
benchmark_no_middleware,
setup = setup,
syncdb = False,
meta = {
setup=setup,
syncdb=False,
meta={
'description': 'Request/response overhead added by the default middleware.',
}
)
)
8 changes: 5 additions & 3 deletions djangobench/benchmarks/l10n_render/settings.py
@@ -1,8 +1,10 @@
from unipath import FSPath as Path
import os

from djangobench.base_settings import *

USE_I18N = False
USE_L10N = True

TEMPLATE_DIRS = [Path(__file__).parent.child('templates').absolute()]
TEMPLATE_DIRS = (
os.path.abspath(os.path.join(os.path.dirname(__file__), 'templates')),
)
INSTALLED_APPS = ['l10n_render']
5 changes: 3 additions & 2 deletions djangobench/benchmarks/query_exists/benchmark.py
@@ -1,6 +1,7 @@
from djangobench.utils import run_benchmark
from query_exists.models import Book


def benchmark():
#Checking for object that exists
Book.objects.filter(id=1).exists()
Expand All @@ -11,9 +12,9 @@ def benchmark():
if hasattr(Book.objects, 'exists'):
run_benchmark(
benchmark,
meta = {
meta={
'description': 'A Model.objects.exists() call for both existing and non-existing objects.'
}
)
else:
print "SKIP: Django before 1.2 doesn't have QuerySet.exists()"
print("SKIP: Django before 1.2 doesn't have QuerySet.exists()")
10 changes: 6 additions & 4 deletions djangobench/benchmarks/query_get_or_create/benchmark.py
Expand Up @@ -4,9 +4,10 @@

counter = itertools.count(1)


def benchmark():
nextid = counter.next()
nextid = next(counter)

# This will do a create ...
Book.objects.get_or_create(id=nextid, defaults={'title': 'hi'})

Expand All @@ -15,7 +16,8 @@ def benchmark():

run_benchmark(
benchmark,
meta = {
'description': 'A Model.objects.get_or_create() call, both for existing and non-existing objects.',
meta={
'description': 'A Model.objects.get_or_create() call, both for '
'existing and non-existing objects.',
}
)
6 changes: 4 additions & 2 deletions djangobench/benchmarks/query_prefetch_related/benchmark.py
Expand Up @@ -2,11 +2,13 @@
from django import VERSION
from query_prefetch_related.models import Book, Author


def benchmark():
for i in xrange(10):
for i in range(10):
for a in Author.objects.prefetch_related('books'):
list(a.books.all())


def setup():
for i in range(0, 20):
a = Author.objects.create(author="Author %s" % i)
Expand All @@ -22,7 +24,7 @@ def setup():
run_benchmark(
benchmark,
setup=setup,
meta = {
meta={
'description': 'A simple Model.objects.select_related() call.',
}
)
5 changes: 3 additions & 2 deletions djangobench/benchmarks/query_select_related/benchmark.py
@@ -1,13 +1,14 @@
from djangobench.utils import run_benchmark
from query_select_related.models import Book


def benchmark():
for i in xrange(20):
for i in range(20):
list(Book.objects.select_related('author'))

run_benchmark(
benchmark,
meta = {
meta={
'description': 'A simple Model.objects.select_related() call.',
}
)
4 changes: 2 additions & 2 deletions djangobench/benchmarks/template_render/benchmark.py
Expand Up @@ -49,8 +49,8 @@ def benchmark_django_gt_13():

run_benchmark(
benchmark_django_gt_13 if VERSION > (1, 3) else benchmark_django_lte_13,
syncdb = False,
meta = {
syncdb=False,
meta={
'description': ('Render a somewhat complex, fairly typical template '
'(including inheritance, reverse URL resolution, etc.).'),
}
Expand Down
7 changes: 5 additions & 2 deletions djangobench/benchmarks/template_render/settings.py
@@ -1,6 +1,9 @@
from unipath import FSPath as Path
import os

from djangobench.base_settings import *

INSTALLED_APPS = ['template_render']
TEMPLATE_DIRS = [Path(__file__).parent.child('templates').absolute()]
TEMPLATE_DIRS = (
os.path.abspath(os.path.join(os.path.dirname(__file__), 'templates')),
)
ROOT_URLCONF = 'template_render.urls'

0 comments on commit c9b04a9

Please sign in to comment.