Remove six as a dependency and fix unit tests.

Review Request #9426 — Created Dec. 5, 2017 and submitted

Christian Hammond

The dependency on six was problematic, as it was getting imported
during the packaging process by way of kgb/ importing the
module that imports six, and this was imported by That meant
that packaging would fail if six was not already installed. Since we
need so very little from it (iteritems and text_type), we just
define our own wrapper types.

While testing, I noticed my prior change also accidentally broke tests
on Python 3. Those are fixed with this change by importing our
text_type and plugging in its type name in some error messages instead
of assuming they're unicode.

Unit tests pass on Python 2 and 3.

I was able to build a package from a fresh virtualenv.

  • 0
  • 0
  • 2
  • 1
  • 3
Description From Last Updated
Checks run (1 failed, 1 succeeded)
flake8 failed.
JSHint passed.


Christian Hammond
David Trowbridge
  2. kgb/ (Diff revision 2)

    In python 3, .items() returns an iterator.

    1. I'm copying what six itself is doing here. I'm not 100% sure on the reasoning, but I'm guessing it's a compatibility fix for some earlier Python 3 versions.

    2. Fair enough.

David Trowbridge
  1. Ship It!
Christian Hammond
Review request changed

Status: Closed (submitted)

Change Summary:

Pushed to master (c8e60e9)