Skip to content

Commit

Permalink
ported some more stuff to py 3.3
Browse files Browse the repository at this point in the history
removed init_jinja_globals hack from app.py after consulting mitsuhiko
(didn't work on py 3.3 "as is")

removed with_statement future imports, not needed any more

needs more work on 2.7 as well as on 3.3
  • Loading branch information
ThomasWaldmann committed May 21, 2013
1 parent a503520 commit e1d356f
Show file tree
Hide file tree
Showing 24 changed files with 36 additions and 87 deletions.
2 changes: 1 addition & 1 deletion examples/flaskr/flaskr.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
:copyright: (c) 2010 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from __future__ import with_statement

from sqlite3 import dbapi2 as sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort, \
render_template, flash, _app_ctx_stack
Expand Down
2 changes: 1 addition & 1 deletion examples/minitwit/minitwit.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
:copyright: (c) 2010 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from __future__ import with_statement

import time
from sqlite3 import dbapi2 as sqlite3
from hashlib import md5
Expand Down
6 changes: 6 additions & 0 deletions flask/_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
range_type = range
text_type = str
string_types = (str,)
integer_types = (int, )

iterkeys = lambda d: iter(d.keys())
itervalues = lambda d: iter(d.values())
Expand All @@ -46,11 +47,14 @@ def reraise(tp, value, tb=None):
encode_filename = _identity
get_next = lambda x: x.__next__

from urllib.parse import urlparse

else:
unichr = unichr
text_type = unicode
range_type = xrange
string_types = (str, unicode)
integer_types = (int, long)

iterkeys = lambda d: d.iterkeys()
itervalues = lambda d: d.itervalues()
Expand Down Expand Up @@ -82,6 +86,8 @@ def encode_filename(filename):
return filename.encode('utf-8')
return filename

from urlparse import urlparse


def with_metaclass(meta, *bases):
# This requires a bit of explanation: the basic idea is to make a
Expand Down
33 changes: 9 additions & 24 deletions flask/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import os
import sys
from threading import Lock
Expand All @@ -36,6 +34,7 @@
_default_template_ctx_processor
from .signals import request_started, request_finished, got_request_exception, \
request_tearing_down, appcontext_tearing_down
from flask._compat import reraise, string_types, integer_types

# a lock used for logger initialization
_logger_lock = Lock()
Expand Down Expand Up @@ -585,21 +584,7 @@ def logger(self):
@locked_cached_property
def jinja_env(self):
"""The Jinja2 environment used to load templates."""
rv = self.create_jinja_environment()

# Hack to support the init_jinja_globals method which is supported
# until 1.0 but has an API deficiency.
if getattr(self.init_jinja_globals, 'im_func', None) is not \
Flask.init_jinja_globals.__func__:
from warnings import warn
warn(DeprecationWarning('This flask class uses a customized '
'init_jinja_globals() method which is deprecated. '
'Move the code from that method into the '
'create_jinja_environment() method instead.'))
self.__dict__['jinja_env'] = rv
self.init_jinja_globals()

return rv
return self.create_jinja_environment()

@property
def got_first_request(self):
Expand Down Expand Up @@ -1090,7 +1075,7 @@ def register_error_handler(self, code_or_exception, f):
def _register_error_handler(self, key, code_or_exception, f):
if isinstance(code_or_exception, HTTPException):
code_or_exception = code_or_exception.code
if isinstance(code_or_exception, (int, long)):
if isinstance(code_or_exception, integer_types):
assert code_or_exception != 500 or key is None, \
'It is currently not possible to register a 500 internal ' \
'server error on a per-blueprint level.'
Expand Down Expand Up @@ -1137,7 +1122,7 @@ def template_test(self, name=None):
def is_prime(n):
if n == 2:
return True
for i in xrange(2, int(math.ceil(math.sqrt(n))) + 1):
for i in range(2, int(math.ceil(math.sqrt(n))) + 1):
if n % i == 0:
return False
return True
Expand Down Expand Up @@ -1383,7 +1368,7 @@ def handle_user_exception(self, e):
if isinstance(e, typecheck):
return handler(e)

raise exc_type, exc_value, tb
reraise(exc_type, exc_value, tb)

def handle_exception(self, e):
"""Default exception handling that kicks in when an exception
Expand All @@ -1405,7 +1390,7 @@ def handle_exception(self, e):
# (the function was actually called from the except part)
# otherwise, we just raise the error again
if exc_value is e:
raise exc_type, exc_value, tb
reraise(exc_type, exc_value, tb)
else:
raise e

Expand Down Expand Up @@ -1565,14 +1550,14 @@ def make_response(self, rv):
# set the headers and status. We do this because there can be
# some extra logic involved when creating these objects with
# specific values (like defualt content type selection).
if isinstance(rv, basestring):
if isinstance(rv, string_types):
rv = self.response_class(rv, headers=headers, status=status)
headers = status = None
else:
rv = self.response_class.force_type(rv, request.environ)

if status is not None:
if isinstance(status, basestring):
if isinstance(status, string_types):
rv.status = status
else:
rv.status_code = status
Expand Down Expand Up @@ -1633,7 +1618,7 @@ def handle_url_build_error(self, error, endpoint, values):
# still the same one we can reraise it with the original traceback,
# otherwise we raise it from here.
if error is exc_value:
raise exc_type, exc_value, tb
reraise(exc_type, exc_value, tb)
raise error

def preprocess_request(self):
Expand Down
5 changes: 2 additions & 3 deletions flask/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import imp
import os
import errno

from werkzeug.utils import import_string
from flask._compat import string_types


class ConfigAttribute(object):
Expand Down Expand Up @@ -158,7 +157,7 @@ def from_object(self, obj):
:param obj: an import name or object
"""
if isinstance(obj, basestring):
if isinstance(obj, string_types):
obj = import_string(obj)
for key in dir(obj):
if key.isupper():
Expand Down
3 changes: 2 additions & 1 deletion flask/exthook.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"""
import sys
import os
from flask._compat import reraise


class ExtensionImporter(object):
Expand Down Expand Up @@ -77,7 +78,7 @@ def load_module(self, fullname):
# we swallow it and try the next choice. The skipped frame
# is the one from __import__ above which we don't care about
if self.is_important_traceback(realname, tb):
raise exc_type, exc_value, tb.tb_next
reraise(exc_type, exc_value, tb.tb_next)
continue
module = sys.modules[fullname] = sys.modules[realname]
if '.' not in modname:
Expand Down
9 changes: 4 additions & 5 deletions flask/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import os
import sys
import pkgutil
Expand All @@ -27,6 +25,7 @@
from werkzeug.datastructures import Headers
from werkzeug.exceptions import NotFound
import six
from flask._compat import string_types, text_type

# this was moved in 0.7
try:
Expand Down Expand Up @@ -467,7 +466,7 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
:data:`~flask.current_app`.
"""
mtime = None
if isinstance(filename_or_fp, basestring):
if isinstance(filename_or_fp, string_types):
filename = filename_or_fp
file = None
else:
Expand All @@ -478,7 +477,7 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
# XXX: this behavior is now deprecated because it was unreliable.
# removed in Flask 1.0
if not attachment_filename and not mimetype \
and isinstance(filename, basestring):
and isinstance(filename, string_types):
warn(DeprecationWarning('The filename support for file objects '
'passed to send_file is now deprecated. Pass an '
'attach_filename if you want mimetypes to be guessed.'),
Expand Down Expand Up @@ -540,7 +539,7 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
os.path.getmtime(filename),
os.path.getsize(filename),
adler32(
filename.encode('utf-8') if isinstance(filename, unicode)
filename.encode('utf-8') if isinstance(filename, text_type)
else filename
) & 0xffffffff
))
Expand Down
4 changes: 1 addition & 3 deletions flask/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

from contextlib import contextmanager
from werkzeug.test import Client, EnvironBuilder
from flask import _request_ctx_stack
from urlparse import urlparse
from flask._compat import urlparse


def make_test_environ_builder(app, path='/', base_url=None, *args, **kwargs):
Expand Down
5 changes: 2 additions & 3 deletions flask/testsuite/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,16 @@
"""

from __future__ import print_function
from __future__ import with_statement

import os
import sys
import flask
import warnings
import unittest
from StringIO import StringIO
from functools import update_wrapper
from contextlib import contextmanager
from werkzeug.utils import import_string, find_modules
from flask._compat import reraise, StringIO


def add_to_path(path):
Expand Down Expand Up @@ -159,7 +158,7 @@ def __exit__(self, exc_type, exc_value, tb):
self.test_case.fail('Expected exception of type %r' %
exception_name)
elif not issubclass(exc_type, self.exc_type):
raise exc_type, exc_value, tb
reraise(exc_type, exc_value, tb)
return True


Expand Down
2 changes: 0 additions & 2 deletions flask/testsuite/appctx.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import flask
import unittest
from flask.testsuite import FlaskTestCase
Expand Down
4 changes: 1 addition & 3 deletions flask/testsuite/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import re
import uuid
import flask
Expand Down Expand Up @@ -1060,7 +1058,7 @@ def fail_func():
1/0

c = app.test_client()
for x in xrange(3):
for x in range(3):
with self.assert_raises(ZeroDivisionError):
c.get('/fail')

Expand Down
2 changes: 0 additions & 2 deletions flask/testsuite/blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import flask
import unittest
import warnings
Expand Down
1 change: 0 additions & 1 deletion flask/testsuite/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
:copyright: (c) 2011 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from __future__ import with_statement

import os
import sys
Expand Down
19 changes: 1 addition & 18 deletions flask/testsuite/deprecations.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,13 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import flask
import unittest
from flask.testsuite import FlaskTestCase, catch_warnings


class DeprecationsTestCase(FlaskTestCase):

def test_init_jinja_globals(self):
class MyFlask(flask.Flask):
def init_jinja_globals(self):
self.jinja_env.globals['foo'] = '42'

with catch_warnings() as log:
app = MyFlask(__name__)
@app.route('/')
def foo():
return app.jinja_env.globals['foo']

c = app.test_client()
self.assert_equal(c.get('/').data, '42')
self.assert_equal(len(log), 1)
self.assert_('init_jinja_globals' in str(log[0]['message']))
"""not used currently"""


def suite():
Expand Down
5 changes: 2 additions & 3 deletions flask/testsuite/ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
:copyright: (c) 2011 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from __future__ import with_statement

import sys
import unittest
Expand All @@ -22,7 +21,7 @@ def setup(self):
# that a real flaskext could be in there which would disable our
# fake package. Secondly we want to make sure that the flaskext
# import hook does not break on reloading.
for entry, value in sys.modules.items():
for entry, value in list(sys.modules.items()):
if (entry.startswith('flask.ext.') or
entry.startswith('flask_') or
entry.startswith('flaskext.') or
Expand Down Expand Up @@ -100,7 +99,7 @@ def test_flaskext_old_package_import_submodule_function(self):
self.assert_equal(test_function(), 42)

def test_flaskext_broken_package_no_module_caching(self):
for x in xrange(2):
for x in range(2):
with self.assert_raises(ImportError):
import flask.ext.broken

Expand Down
4 changes: 1 addition & 3 deletions flask/testsuite/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,14 @@
:license: BSD, see LICENSE for more details.
"""

from __future__ import with_statement

import os
import flask
import unittest
from logging import StreamHandler
from StringIO import StringIO
from flask.testsuite import FlaskTestCase, catch_warnings, catch_stderr
from werkzeug.http import parse_cache_control_header, parse_options_header
import six
from flask._compat import StringIO


def has_encoding(name):
Expand Down
Loading

0 comments on commit e1d356f

Please sign in to comment.