summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2015-01-04 19:14:33 +0100
committerSebastian Thiel <byronimo@gmail.com>2015-01-04 19:14:33 +0100
commitf6aa8d116eb33293c0a9d6d600eb7c32832758b9 (patch)
treeee07288965cfd4e8326c57735e94c347ee7dd829
parent3936084cdd336ce7db7d693950e345eeceab93a5 (diff)
downloadgitpython-f6aa8d116eb33293c0a9d6d600eb7c32832758b9.tar.gz
initial set of adjustments to make (most) imports work.
More to come, especially when it's about strings
-rw-r--r--README.md4
-rw-r--r--doc/source/changes.rst1
-rw-r--r--git/cmd.py14
-rw-r--r--git/compat.py19
-rw-r--r--git/config.py6
-rw-r--r--git/db.py11
-rw-r--r--git/diff.py6
-rw-r--r--git/index/base.py11
-rw-r--r--git/index/fun.py8
-rw-r--r--git/index/typ.py9
-rw-r--r--git/objects/__init__.py7
-rw-r--r--git/objects/base.py2
-rw-r--r--git/objects/blob.py3
-rw-r--r--git/objects/commit.py15
-rw-r--r--git/objects/submodule/base.py6
-rw-r--r--git/objects/submodule/root.py7
-rw-r--r--git/objects/submodule/util.py2
-rw-r--r--git/objects/tag.py6
-rw-r--r--git/objects/tree.py16
-rw-r--r--git/refs/head.py8
-rw-r--r--git/refs/reference.py3
-rw-r--r--git/refs/remote.py3
-rw-r--r--git/refs/symbolic.py3
-rw-r--r--git/refs/tag.py2
-rw-r--r--git/remote.py29
-rw-r--r--git/repo/base.py2
-rw-r--r--git/repo/fun.py4
-rw-r--r--git/test/lib/asserts.py18
-rw-r--r--git/test/lib/helper.py6
-rw-r--r--git/test/performance/test_commit.py2
-rw-r--r--git/test/test_commit.py2
-rw-r--r--git/test/test_fun.py2
-rw-r--r--git/test/test_index.py2
-rw-r--r--git/test/test_repo.py2
-rw-r--r--git/test/test_tree.py2
-rw-r--r--git/util.py5
-rw-r--r--tox.ini2
37 files changed, 136 insertions, 114 deletions
diff --git a/README.md b/README.md
index 4b678184..1bc6430e 100644
--- a/README.md
+++ b/README.md
@@ -83,10 +83,6 @@ In short, I want to make a new release of 0.3 with all contributions and fixes i
The goals I have set for myself, in order, are as follows, all on branch 0.3.
-* bring the test suite back online to work with the most commonly used git version
-* merge all open pull requests, may there be a test-case or not, back. If something breaks, fix it if possible or let the contributor know
-* conform git-python's structure and toolchain to the one used in my [other OSS projects](https://github.com/Byron/bcore)
-* evaluate all open issues and close them if possible
* evaluate python 3.3 compatibility and establish it if possible
While that is happening, I will try hard to foster community around the project. This means being more responsive on the mailing list and in issues, as well as setting up clear guide lines about the [contribution](http://rfc.zeromq.org/spec:22) and maintenance workflow.
diff --git a/doc/source/changes.rst b/doc/source/changes.rst
index 924743bd..84437884 100644
--- a/doc/source/changes.rst
+++ b/doc/source/changes.rst
@@ -6,6 +6,7 @@ Changelog
=====
* When fetching, pulling or pushing, and an error occours, it will not be reported on stdout anymore. However, if there is a fatal error, it will still result in a GitCommandError to be thrown. This goes hand in hand with improved fetch result parsing.
* Code Cleanup (in preparation for python 3 support)
+
* Applied autopep8 and cleaned up code
* Using python logging module instead of print statments to signal certain kinds of errors
diff --git a/git/cmd.py b/git/cmd.py
index c355eacf..b9e4bc09 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -7,18 +7,20 @@
import os
import sys
import logging
-from util import (
- LazyMixin,
- stream_copy
-)
-from exc import GitCommandError
-
from subprocess import (
call,
Popen,
PIPE
)
+
+from .util import (
+ LazyMixin,
+ stream_copy
+)
+from .exc import GitCommandError
+
+
execute_kwargs = ('istream', 'with_keep_cwd', 'with_extended_output',
'with_exceptions', 'as_process',
'output_stream')
diff --git a/git/compat.py b/git/compat.py
new file mode 100644
index 00000000..52fc599c
--- /dev/null
+++ b/git/compat.py
@@ -0,0 +1,19 @@
+#-*-coding:utf-8-*-
+# config.py
+# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors
+#
+# This module is part of GitPython and is released under
+# the BSD License: http://www.opensource.org/licenses/bsd-license.php
+"""utilities to help provide compatibility with python 3"""
+
+from gitdb.utils.compat import ( # noqa
+ PY3,
+ xrange,
+ MAXSIZE,
+ izip,
+)
+
+from gitdb.utils.encoding import ( # noqa
+ string_types,
+ text_type
+)
diff --git a/git/config.py b/git/config.py
index 6a85760c..685dbed8 100644
--- a/git/config.py
+++ b/git/config.py
@@ -7,7 +7,11 @@
configuration files"""
import re
-import ConfigParser as cp
+try:
+ import ConfigParser as cp
+except ImportError:
+ # PY3
+ import configparser as cp
import inspect
import logging
diff --git a/git/db.py b/git/db.py
index ab39f6c5..c4e19858 100644
--- a/git/db.py
+++ b/git/db.py
@@ -1,14 +1,8 @@
"""Module with our own gitdb implementation - it uses the git command"""
-from exc import (
- GitCommandError,
- BadObject
-)
-
from gitdb.base import (
OInfo,
OStream
)
-
from gitdb.util import (
bin_to_hex,
hex_to_bin
@@ -16,6 +10,11 @@ from gitdb.util import (
from gitdb.db import GitDB
from gitdb.db import LooseObjectDB
+from .exc import (
+ GitCommandError,
+ BadObject
+)
+
__all__ = ('GitCmdObjectDB', 'GitDB')
diff --git a/git/diff.py b/git/diff.py
index 5325ad6b..b3e7245b 100644
--- a/git/diff.py
+++ b/git/diff.py
@@ -3,13 +3,13 @@
#
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
-
import re
-from objects.blob import Blob
-from objects.util import mode_str_to_int
from gitdb.util import hex_to_bin
+from .objects.blob import Blob
+from .objects.util import mode_str_to_int
+
__all__ = ('Diffable', 'DiffIndex', 'Diff')
diff --git a/git/index/base.py b/git/index/base.py
index fdcfcd12..91dcea42 100644
--- a/git/index/base.py
+++ b/git/index/base.py
@@ -8,16 +8,16 @@ import os
import sys
import subprocess
import glob
-from cStringIO import StringIO
+from io import StringIO
from stat import S_ISLNK
-from typ import (
+from .typ import (
BaseIndexEntry,
IndexEntry,
)
-from util import (
+from .util import (
TemporaryFileSwap,
post_clear_cache,
default_index,
@@ -25,7 +25,6 @@ from util import (
)
import git.diff as diff
-
from git.exc import (
GitCommandError,
CheckoutError
@@ -40,6 +39,7 @@ from git.objects import (
)
from git.objects.util import Serializable
+from git.compat import izip
from git.util import (
LazyMixin,
@@ -49,7 +49,7 @@ from git.util import (
to_native_path_linux,
)
-from fun import (
+from .fun import (
entry_key,
write_cache,
read_cache,
@@ -62,7 +62,6 @@ from fun import (
from gitdb.base import IStream
from gitdb.db import MemoryDB
from gitdb.util import to_bin_sha
-from itertools import izip
__all__ = ('IndexFile', 'CheckoutError')
diff --git a/git/index/fun.py b/git/index/fun.py
index eec90519..004f992e 100644
--- a/git/index/fun.py
+++ b/git/index/fun.py
@@ -12,7 +12,7 @@ from stat import (
S_IFGITLINK = S_IFLNK | S_IFDIR # a submodule
-from cStringIO import StringIO
+from io import StringIO
from git.util import IndexFileSHA1Writer
from git.exc import UnmergedEntriesError
@@ -22,7 +22,7 @@ from git.objects.fun import (
traverse_trees_recursive
)
-from typ import (
+from .typ import (
BaseIndexEntry,
IndexEntry,
CE_NAMEMASK,
@@ -30,7 +30,7 @@ from typ import (
)
CE_NAMEMASK_INV = ~CE_NAMEMASK
-from util import (
+from .util import (
pack,
unpack
)
@@ -49,7 +49,7 @@ def stat_mode_to_index_mode(mode):
return S_IFLNK
if S_ISDIR(mode) or S_IFMT(mode) == S_IFGITLINK: # submodules
return S_IFGITLINK
- return S_IFREG | 0644 | (mode & 0100) # blobs with or without executable bit
+ return S_IFREG | 0o644 | (mode & 0o100) # blobs with or without executable bit
def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1Writer):
diff --git a/git/index/typ.py b/git/index/typ.py
index 222252c5..692e1e18 100644
--- a/git/index/typ.py
+++ b/git/index/typ.py
@@ -1,15 +1,14 @@
"""Module with additional types used by the index"""
-from util import (
+from binascii import b2a_hex
+
+from .util import (
pack,
unpack
)
+from git.objects import Blob
-from binascii import (
- b2a_hex,
-)
-from git.objects import Blob
__all__ = ('BlobFilter', 'BaseIndexEntry', 'IndexEntry')
#{ Invariants
diff --git a/git/objects/__init__.py b/git/objects/__init__.py
index 70fc52cb..ee642876 100644
--- a/git/objects/__init__.py
+++ b/git/objects/__init__.py
@@ -7,9 +7,10 @@ import inspect
from .base import *
# Fix import dependency - add IndexObject to the util module, so that it can be
# imported by the submodule.base
-from .submodule import util
-util.IndexObject = IndexObject
-util.Object = Object
+from .submodule import util as smutil
+smutil.IndexObject = IndexObject
+smutil.Object = Object
+del(smutil)
from .submodule.base import *
from .submodule.root import *
diff --git a/git/objects/base.py b/git/objects/base.py
index 20147e57..1f0d5752 100644
--- a/git/objects/base.py
+++ b/git/objects/base.py
@@ -3,8 +3,8 @@
#
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
+from .util import get_object_type_by_name
from git.util import LazyMixin, join_path_native, stream_copy
-from util import get_object_type_by_name
from gitdb.util import (
bin_to_hex,
basename
diff --git a/git/objects/blob.py b/git/objects/blob.py
index b05e5b84..322f6992 100644
--- a/git/objects/blob.py
+++ b/git/objects/blob.py
@@ -3,9 +3,8 @@
#
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
-
from mimetypes import guess_type
-import base
+from . import base
__all__ = ('Blob', )
diff --git a/git/objects/commit.py b/git/objects/commit.py
index 9c733695..5b6b9a33 100644
--- a/git/objects/commit.py
+++ b/git/objects/commit.py
@@ -4,6 +4,8 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
+from gitdb import IStream
+from gitdb.util import hex_to_bin
from git.util import (
Actor,
Iterable,
@@ -11,26 +13,23 @@ from git.util import (
finalize_process
)
from git.diff import Diffable
-from tree import Tree
-from gitdb import IStream
-from cStringIO import StringIO
-import base
-from gitdb.util import (
- hex_to_bin
-)
-from util import (
+from .tree import Tree
+from . import base
+from .util import (
Traversable,
Serializable,
parse_date,
altz_to_utctz_str,
parse_actor_and_date
)
+
from time import (
time,
altzone
)
import os
+from io import StringIO
import logging
log = logging.getLogger('git.objects.commit')
diff --git a/git/objects/submodule/base.py b/git/objects/submodule/base.py
index d6f8982b..5ccebd4c 100644
--- a/git/objects/submodule/base.py
+++ b/git/objects/submodule/base.py
@@ -1,5 +1,5 @@
-import util
-from util import (
+from . import util
+from .util import (
mkhead,
sm_name,
sm_section,
@@ -8,7 +8,7 @@ from util import (
find_first_remote_branch
)
from git.objects.util import Traversable
-from StringIO import StringIO # need a dict to set bloody .name field
+from io import StringIO # need a dict to set bloody .name field
from git.util import (
Iterable,
join_path_native,
diff --git a/git/objects/submodule/root.py b/git/objects/submodule/root.py
index 708749c7..8c9afff1 100644
--- a/git/objects/submodule/root.py
+++ b/git/objects/submodule/root.py
@@ -1,5 +1,8 @@
-from base import Submodule, UpdateProgress
-from util import (
+from .base import (
+ Submodule,
+ UpdateProgress
+)
+from .util import (
find_first_remote_branch
)
from git.exc import InvalidGitRepositoryError
diff --git a/git/objects/submodule/util.py b/git/objects/submodule/util.py
index 01bd03b3..cb84ccb1 100644
--- a/git/objects/submodule/util.py
+++ b/git/objects/submodule/util.py
@@ -1,7 +1,7 @@
import git
from git.exc import InvalidGitRepositoryError
from git.config import GitConfigParser
-from StringIO import StringIO
+from io import StringIO
import weakref
__all__ = ('sm_section', 'sm_name', 'mkhead', 'unbare_repo', 'find_first_remote_branch',
diff --git a/git/objects/tag.py b/git/objects/tag.py
index 3c379579..5e76e230 100644
--- a/git/objects/tag.py
+++ b/git/objects/tag.py
@@ -4,12 +4,12 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
""" Module containing all object based types. """
-import base
-from gitdb.util import hex_to_bin
-from util import (
+from . import base
+from .util import (
get_object_type_by_name,
parse_actor_and_date
)
+from gitdb.util import hex_to_bin
__all__ = ("TagObject", )
diff --git a/git/objects/tree.py b/git/objects/tree.py
index c77e6056..a216322b 100644
--- a/git/objects/tree.py
+++ b/git/objects/tree.py
@@ -3,22 +3,20 @@
#
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
-import util
-from base import IndexObject
from git.util import join_path
-from blob import Blob
-from submodule.base import Submodule
import git.diff as diff
+from gitdb.util import to_bin_sha
-from fun import (
+from . import util
+from .base import IndexObject
+from .blob import Blob
+from .submodule.base import Submodule
+
+from .fun import (
tree_entries_from_data,
tree_to_stream
)
-from gitdb.util import (
- to_bin_sha,
-)
-
__all__ = ("TreeModifier", "Tree")
diff --git a/git/refs/head.py b/git/refs/head.py
index 25c994a3..0a14158c 100644
--- a/git/refs/head.py
+++ b/git/refs/head.py
@@ -1,12 +1,10 @@
-from symbolic import SymbolicReference
-from reference import Reference
-
from git.config import SectionConstraint
-
from git.util import join_path
-
from git.exc import GitCommandError
+from .symbolic import SymbolicReference
+from .reference import Reference
+
__all__ = ["HEAD", "Head"]
diff --git a/git/refs/reference.py b/git/refs/reference.py
index b07ac0cd..8741ebb9 100644
--- a/git/refs/reference.py
+++ b/git/refs/reference.py
@@ -1,8 +1,9 @@
-from symbolic import SymbolicReference
from git.util import (
LazyMixin,
Iterable,
)
+from .symbolic import SymbolicReference
+
__all__ = ["Reference"]
diff --git a/git/refs/remote.py b/git/refs/remote.py
index e3827ad9..b692e6df 100644
--- a/git/refs/remote.py
+++ b/git/refs/remote.py
@@ -1,7 +1,8 @@
-from head import Head
from git.util import join_path
from gitdb.util import join
+from .head import Head
+
import os
diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py
index e0f5531a..0cd04e07 100644
--- a/git/refs/symbolic.py
+++ b/git/refs/symbolic.py
@@ -1,4 +1,5 @@
import os
+
from git.objects import Object, Commit
from git.util import (
join_path,
@@ -19,7 +20,7 @@ from gitdb.util import (
LockedFD
)
-from log import RefLog
+from .log import RefLog
__all__ = ["SymbolicReference"]
diff --git a/git/refs/tag.py b/git/refs/tag.py
index 6509c891..3334e53c 100644
--- a/git/refs/tag.py
+++ b/git/refs/tag.py
@@ -1,4 +1,4 @@
-from reference import Reference
+from .reference import Reference
__all__ = ["TagReference", "Tag"]
diff --git a/git/remote.py b/git/remote.py
index 44b7ffaa..9ebc52fe 100644
--- a/git/remote.py
+++ b/git/remote.py
@@ -5,33 +5,34 @@
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
# Module implementing a remote object allowing easy access to git remotes
+import re
+import os
-from exc import GitCommandError
-from ConfigParser import NoOptionError
-from config import SectionConstraint
-
-from git.util import (
- LazyMixin,
- Iterable,
- IterableList,
- RemoteProgress
+from .exc import GitCommandError
+from .config import (
+ SectionConstraint,
+ cp,
)
-
-from refs import (
+from .refs import (
Reference,
RemoteReference,
SymbolicReference,
TagReference
)
+
+from git.util import (
+ LazyMixin,
+ Iterable,
+ IterableList,
+ RemoteProgress
+)
from git.util import (
join_path,
finalize_process
)
from gitdb.util import join
-import re
-import os
__all__ = ('RemoteProgress', 'PushInfo', 'FetchInfo', 'Remote')
@@ -390,7 +391,7 @@ class Remote(LazyMixin, Iterable):
# even though a slot of the same name exists
try:
return self._config_reader.get(attr)
- except NoOptionError:
+ except cp.NoOptionError:
return super(Remote, self).__getattr__(attr)
# END handle exception
diff --git a/git/repo/base.py b/git/repo/base.py
index dcf98152..e5ae7623 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -40,7 +40,7 @@ from gitdb.util import (
hex_to_bin
)
-from fun import (
+from .fun import (
rev_parse,
is_git_dir,
find_git_dir,
diff --git a/git/repo/fun.py b/git/repo/fun.py
index b8905517..d08e5fed 100644
--- a/git/repo/fun.py
+++ b/git/repo/fun.py
@@ -1,5 +1,7 @@
"""Package with general repository related functions"""
import os
+from string import digits
+
from gitdb.exc import BadObject
from git.refs import SymbolicReference
from git.objects import Object
@@ -11,7 +13,7 @@ from gitdb.util import (
hex_to_bin,
bin_to_hex
)
-from string import digits
+
__all__ = ('rev_parse', 'is_git_dir', 'touch', 'read_gitfile', 'find_git_dir', 'name_to_object',
'short_to_long', 'deref_tag', 'to_commit')
diff --git a/git/test/lib/asserts.py b/git/test/lib/asserts.py
index 0f2fd99a..60a888b3 100644
--- a/git/test/lib/asserts.py
+++ b/git/test/lib/asserts.py
@@ -7,13 +7,6 @@
import re
import stat
-__all__ = ['assert_instance_of', 'assert_not_instance_of',
- 'assert_none', 'assert_not_none',
- 'assert_match', 'assert_not_match', 'assert_mode_644',
- 'assert_mode_755',
- 'assert_equal', 'assert_not_equal', 'assert_raises', 'patch', 'raises',
- 'assert_true', 'assert_false']
-
from nose.tools import (
assert_equal,
assert_not_equal,
@@ -23,9 +16,14 @@ from nose.tools import (
assert_false
)
-from mock import (
- patch
-)
+from mock import patch
+
+__all__ = ['assert_instance_of', 'assert_not_instance_of',
+ 'assert_none', 'assert_not_none',
+ 'assert_match', 'assert_not_match', 'assert_mode_644',
+ 'assert_mode_755',
+ 'assert_equal', 'assert_not_equal', 'assert_raises', 'patch', 'raises',
+ 'assert_true', 'assert_false']
def assert_instance_of(expected, actual, msg=None):
diff --git a/git/test/lib/helper.py b/git/test/lib/helper.py
index 9c935ce0..0ea4fc7e 100644
--- a/git/test/lib/helper.py
+++ b/git/test/lib/helper.py
@@ -11,7 +11,7 @@ from unittest import TestCase
import time
import tempfile
import shutil
-import cStringIO
+import io
GIT_REPO = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
@@ -46,8 +46,8 @@ class StringProcessAdapter(object):
Its tailored to work with the test system only"""
def __init__(self, input_string):
- self.stdout = cStringIO.StringIO(input_string)
- self.stderr = cStringIO.StringIO()
+ self.stdout = io.StringIO(input_string)
+ self.stderr = io.StringIO()
def wait(self):
return 0
diff --git a/git/test/performance/test_commit.py b/git/test/performance/test_commit.py
index a890c833..fed6ef18 100644
--- a/git/test/performance/test_commit.py
+++ b/git/test/performance/test_commit.py
@@ -8,7 +8,7 @@ from .lib import TestBigRepoRW
from git import Commit
from gitdb import IStream
from git.test.test_commit import assert_commit_serialization
-from cStringIO import StringIO
+from io import StringIO
from time import time
import sys
diff --git a/git/test/test_commit.py b/git/test/test_commit.py
index bfad6fd6..84f81f21 100644
--- a/git/test/test_commit.py
+++ b/git/test/test_commit.py
@@ -21,7 +21,7 @@ from git import (
from gitdb import IStream
from gitdb.util import hex_to_bin
-from cStringIO import StringIO
+from io import StringIO
import time
import sys
import re
diff --git a/git/test/test_fun.py b/git/test/test_fun.py
index bf178aaa..4093065d 100644
--- a/git/test/test_fun.py
+++ b/git/test/test_fun.py
@@ -24,7 +24,7 @@ from stat import (
)
from git.index import IndexFile
-from cStringIO import StringIO
+from io import StringIO
class TestFun(TestBase):
diff --git a/git/test/test_index.py b/git/test/test_index.py
index 15fff8d4..74bdac53 100644
--- a/git/test/test_index.py
+++ b/git/test/test_index.py
@@ -30,7 +30,7 @@ from stat import (
ST_MODE
)
-from StringIO import StringIO
+from io import StringIO
from gitdb.base import IStream
from git.objects import Blob
from git.index.typ import (
diff --git a/git/test/test_repo.py b/git/test/test_repo.py
index f6b46a6e..41c1c8f1 100644
--- a/git/test/test_repo.py
+++ b/git/test/test_repo.py
@@ -35,7 +35,7 @@ import os
import sys
import tempfile
import shutil
-from cStringIO import StringIO
+from io import StringIO
class TestRepo(TestBase):
diff --git a/git/test/test_tree.py b/git/test/test_tree.py
index d2e3606b..3b89abee 100644
--- a/git/test/test_tree.py
+++ b/git/test/test_tree.py
@@ -11,7 +11,7 @@ from git import (
Blob
)
-from cStringIO import StringIO
+from io import StringIO
class TestTree(TestBase):
diff --git a/git/util.py b/git/util.py
index fecd9fa2..b3a22883 100644
--- a/git/util.py
+++ b/git/util.py
@@ -15,7 +15,8 @@ import getpass
# NOTE: Some of the unused imports might be used/imported by others.
# Handle once test-cases are back up and running.
-from exc import GitCommandError
+from .exc import GitCommandError
+from .compat import MAXSIZE
# Most of these are unused here, but are for use by git-python modules so these
# don't see gitdb all the time. Flake of course doesn't like it.
@@ -548,7 +549,7 @@ class BlockingLockFile(LockFile):
can never be obtained."""
__slots__ = ("_check_interval", "_max_block_time")
- def __init__(self, file_path, check_interval_s=0.3, max_block_time_s=sys.maxint):
+ def __init__(self, file_path, check_interval_s=0.3, max_block_time_s=MAXSIZE):
"""Configure the instance
:parm check_interval_s:
diff --git a/tox.ini b/tox.ini
index 6c562a1d..a3509756 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py26,py27,flake8
+envlist = py26,py27,py33,py34,flake8
[testenv]
commands = nosetests {posargs}