{ "info": { "author": "Victor Stinner", "author_email": "victor.stinner@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "Sixer\n=====\n\n.. image:: http://unmaintained.tech/badge.svg\n :target: http://unmaintained.tech/\n :alt: No Maintenance Intended\n\nsixer is a tool adding Python 3 support to a Python 2 project. It was written\nto produces patches to port OpenStack to Python 3. It is focused on supporting\nPython 2.7 and 3.4.\n\nIt uses basic regular expressions to find code which needs to be modified. It\nemits warnings when code was not patched or looks suspicious.\n\n* `sixer project at Github\n `_ (source, bug tracker)\n* `sixer in the Python Cheeseshop (PyPI)\n `_\n\nSee also the `six module documentation `_.\n\n\nUsage\n-----\n\n::\n\n sixer.py [--write] [options] \n\nsixer.py displays the name of patched files. It displays warnings for\nsuspicious code which may have to be ported manually.\n\nThe first parameter can be a list of operations separated by commas. Use\n``\"all\"`` to apply all operations. Operation prefixed by ``-`` are excluded.\nFor example, ``\"all,-iteritems\"`` applies all operations except ``iteritems``.\n\nFor directories, sixer.py searchs for ``.py`` files in all subdirectories.\n\nBy default, sixer uses a dry run: files are not modified. Add ``--write`` (or\n``-w``) option to modify files in place. It's better to use sixer in a project\nmanaged by a source control manager (ex: git) to see differences and revert\nunwanted changes. The original files are not kept.\n\nUse ``--help`` to see all available options.\n\nSee below for the list of available operations.\n\n\nOperations\n----------\n\n- ``all``:\n\n * combine all operations all together\n\n- ``basestring``:\n\n * replace ``basestring`` with ``six.string_types``,\n add ``import six``\n\n- ``dict0``:\n\n * replace ``dict.keys()[0]`` with ``list(dict.keys())[0]``\n * same for ``dict.values()[0]`` and ``dict.items()[0]``\n * note: the pattern matches any integer index, not only ``0``\n\n- ``dict_add``:\n\n * replace ``dict.keys() + list2`` with ``list(dict.keys()) + list2``\n * same for ``dict.values() + list2`` and ``dict.items() + list2``\n\n- ``except``:\n\n * Replace ``except ValueError, exc:`` with ``except ValueError as exc:``\n * Replace ``except (TypeError, ValueError), exc:`` with\n ``except (TypeError, ValueError) as exc:``\n\n- ``has_key``:\n\n * Replace ``dict.has_key(key)`` with ``key in dict``\n\n- ``iteritems``:\n\n * replace ``dict.iteritems()`` with ``six.iteritems(dict)``,\n add ``import six``\n\n- ``itervalues``:\n\n * replace ``dict.itervalues()`` with ``six.itervalues(dict)``,\n add ``import six``\n\n- ``iterkeys``:\n\n * Replace ``for key in dict.iterkeys():`` with ``for key in dict:``\n * Replace ``dict.iterkeys()`` with ``six.iterkeys(dict)``,\n add ``import six``\n\n- ``itertools``:\n\n * replace ``itertools.ifilter`` with ``six.moves.filter``,\n add ``import six``\n\n * similar change for ``ifilterfalse()``, ``imap()``, ``izip()`` and\n ``izip_longest()`` of the ``itertools`` module\n\n- ``long``:\n\n * replace ``123L`` with ``123`` (decimal)\n * replace ``0xABl`` with ``0xAB`` (hexadecimal)\n * replace ``0600L`` with ``0o600`` (octal)\n * replace ``(int, long)`` with ``six.integer_types``\n * replace ``long(1)`` with ``1``\n\n- ``next``:\n\n * replace ``iter.next()`` with ``next(iter)``\n\n- ``print``:\n\n * Replace ``print msg`` with ``print(msg)``\n * Replace ``print msg,`` with ``print(msg, end=' ')``\n and add ``from __future__ import print_function`` import\n * Replace ``print`` with ``print()``\n and add ``from __future__ import print_function`` import\n * Replace ``print >>sys.stderr, \"hello\"'``\n with ``print(\"hello\", file=sys.stderr)``\n and add ``from __future__ import print_function`` import\n\n- ``raise``:\n\n * replace ``raise exc[0], exc[1], exc[2]``\n with ``six.reraise(*exc)``, add ``import six``\n * replace ``raise exc_type, exc_value, exc_tb``\n with ``six.reraise(exc_type, exc_value, exc_tb)``, add ``import six``\n * replace ``raise exc, msg`` with ``raise exc(msg)``, add ``import six``\n\n- ``six_moves``:\n\n * replace Python 2 imports with imports from ``six.moves``,\n add ``import six``. Python 2 modules:\n\n - ``BaseHTTPServer``\n - ``ConfigParser``\n - ``Cookie``\n - ``HTMLParser``\n - ``Queue``\n - ``SimpleHTTPServer``\n - ``SimpleXMLRPCServer``\n - ``__builtin__``\n - ``cPickle``\n - ``cookielib``\n - ``htmlentitydefs``\n - ``httplib``\n - ``repr``\n - ``xmlrpclib``\n\n * replace Python 2 functions with ``six.moves.``,\n add ``import six``. Python 2 functions:\n\n - ``raw_input()``\n - ``reduce()``\n - ``reload()``\n\n * replace ``unichr()`` with ``six.unichr()``, add ``import six``\n\n- ``string``:\n\n * replace ``string.xxx(str, ...)`` with ``str.xxx(...)`` where ``.xxx``\n is a string method. For example, replace ``string.upper(\"abc\")`` with\n ``\"abc\".upper()``.\n * replace ``string.atof(str)`` with ``float(str)``\n * replace ``string.atoi(str)`` and ``string.atol(str)`` with ``int(str)``\n\n- ``stringio``:\n\n * replace ``StringIO.StringIO`` with ``six.StringIO``,\n add ``import six``\n * replace ``cStringIO.StringIO`` with ``moves.cStringIO``,\n add ``from six import moves``\n * replace ``from StringIO import StringIO`` with ``from six import StringIO``\n * replace ``from cStringIO import StringIO``\n with ``from six.moves import cStringIO as StringIO``\n * later you may have to replace it with ``six.BytesIO`` (or ``io.BytesIO``\n if you don't support Python 2.6) when bytes are expected on Python 3\n\n- ``unicode``:\n\n * replace ``unicode`` with ``six.text_type``, add ``import six``\n * replace ``(str, unicode)`` with ``six.string_types``, add ``import six``\n\n- ``urllib``:\n\n * replace Python 2 urllib and urllib2 with ``six.moves.urllib``,\n add ``import six``\n\n- ``xrange``:\n\n * replace ``xrange()`` with ``range()`` and\n add ``from six.moves import range``\n * don't add the import if all ranges have 1024 items or less\n\n\nInstallation\n------------\n\nTo install sixer, type::\n\n pip3 install sixer\n\nsixer requires Python 3, it doesn't work on Python 2.\n\n\nAdding the six import\n---------------------\n\nWhen an operation uses ``six``, ``import six`` may be added. sixer repects\nOpenStack coding style rules to add the import: imports grouped by standard\nlibrary, third party and application imports; and imports must be are sorted.\n\n\nLimitations\n-----------\n\nSince the project is implemented with regular expressions, it can produce false\npositives (invalid changes). For example, some operations replace patterns in\nstrings, comments or function names even if it doesn't make sense.\n\nTry also the 2to6 project which may be more reliable.\n\n\nTests\n-----\n\nTo run tests, type ``tox``. Type ``pip install -U tox`` to install or update\nthe ``tox`` program.\n\nOr run tests manually: type ``python3 tests.py``.\n\n\nResources to port code to Python 3\n----------------------------------\n\n* `six module documentation `_\n* `2to6 `_\n* `modernize `_\n* Python 3 porting book: `Language differences and workarounds\n `_\n* `getpython3 `_\n\n\nChangelog\n---------\n\n* Version 1.6.1 (2018-10-24)\n\n - Project homepage moved to: https://github.com/vstinner/sixer\n\n* Version 1.6 (2016-07-25)\n\n - ``dict0`` now also matches any integer index, not only ``0``\n - ``long`` now also replaces ``long(1)`` with ``1``\n\n* Version 1.5 (2016-05-30)\n\n - six_moves: replace ``ConfigParser.ConfigParser`` with\n ``configparser.ConfigParser``, not with ``configparser.configparser``\n - remove the ``octal`` operation, it produces too many false positives\n\n* Version 1.4 (2016-03-11)\n\n - display the name of applied operations in the final summary\n - Issue #4: Don't emit warning on ``six.next()``\n\n* Version 1.3 (2016-02-11)\n\n - add ``string`` operation. For example, replace ``string.upper(\"abc\")`` with\n ``\"abc\".upper()``.\n - ``print`` now also replaces ``print >>sys.stderr, \"hello\"'``\n with ``print(\"hello\", file=sys.stderr)``\n\n* Version 1.2 (2015-11-26)\n\n - add ``octal`` operation: replace ``0123`` with ``0o123``\n - add ``print`` operation: replace ``print msg`` with ``print(msg)``,\n handle also other print statements (but not all of them yet)\n - add ``has_key`` operation: replace ``dict.has_key(key)``\n with ``key in dict``\n - ``long`` now also handles octal and hexadecimal numbers. For example,\n ``0xffL`` is replaced with ``0xff``, and ``0600l`` is replace with\n ``0o600``.\n - ``except`` now handles also exception with dots\n (ex: ``except select.error, exc:``)\n - ``iterkeys`` now replaces ``for key in dict.iterkeys():`` with\n ``for key in dict:`` to avoid the usage of six.\n - Enhance ``except`` and ``raise`` regex to match also expressions without\n spaces after commas\n\n* Version 1.1 (2015-10-22)\n\n - add ``--third-party`` command line option\n - emit a warning instead of failing with an error if we failed to find the\n best place to add an import\n - fix also code to detect third-party modules, don't check for the prefix\n but the full name (ex: \"numpypy\" is not detected as third-party if only\n \"numpy\" is known)\n\n* Version 1.0 (2015-10-16)\n\n - sixer doesn't modify files by default anymore. Add ``--write`` to really\n modify files inplace.\n - ``long`` operation now also replaces ``(int, long)`` with\n ``six.integer_types``\n - ``itertools`` now also replaces ``ifilterfalse()``, ``izip()`` and\n ``izip_longest()`` of the ``itertools`` module\n - ``six_moves`` now also replaces ``unichr(ch)`` with ``six.unichr(ch)``\n - command line: it's now possible to exclude an operation using ``-`` prefix.\n For example, ``all,-iteritems`` applies all operations except\n ``iteritems``.\n\n* Version 0.8 (2015-10-03)\n\n - urllib now emits a warning on unknown symbol, instead of raising an\n exception\n - Write warnings to stderr instead of stdout and exit with error code 1\n if a filename doesn't exist or a directory doesn't contain any .py file\n - ``unicode`` operation also replaces ``(str, unicode)`` with\n ``six.string_types``\n - When removing an import, don't remove the empty line following the import\n if the empty line is followed by a second import\n - ``long`` also replaces ``1l`` (lower case L suffix for long numbers)\n\n* Version 0.7 (2015-09-29)\n\n - Add new ``dict0``, ``dict_add`` and ``except`` operations\n - Add --app command line option to specify the Python module of the\n application, to help sorting imports\n - Code adding new imports respect better OpenStack coding style on imports.\n For example, it adds two empty lines after imports, instead of a single\n line.\n - Display the name of the operation which modified files\n - Display also the name of the operation in warnings\n - ``six_moves`` now also patches ``reduce()`` and ``reload()``. For example,\n ``reduce()`` is replaced with ``six.moves.reduce()``.\n - ``six_moves`` now also patches ``mock.patch()``. For example,\n ``with mock.patch('__builtin__.open'): ...`` is replaced with\n ``with mock.patch('six.moves.builtin.open'): ...``\n - ``urllib`` now also replaces ``from ... import ...`` imports.\n For example, ``from urllib import quote`` is replaced with\n ``from six.moves.urllib.parse import quote``.\n\n* Version 0.6 (2015-09-11)\n\n - Add \"itertools\" operation\n - Fix xrange() regex to not modify \"from six.moves import xrange\" and\n \"moves.xrange(n)\"\n - Fix urllib for urllib or urlparse module get from the urllib2 module.\n For example, ``urllib2.urlparse.urlparse`` (``import urllib2``) is now\n replaced with ``urllib.parse.urlparse`` (``from six.moves import urllib``).\n\n* Version 0.5 (2015-07-08)\n\n - six_moves: support \"import module as name\" syntax and add cPickle module\n - Add --to-stdout, --quiet and --max-range command line options\n - Emit a warning if the directory does not contain any .py file or\n if the path does not exist\n - Test also directly the sixer.py program\n\n* Version 0.4 (2015-06-09)\n\n - sixer.py now accepts multiple filenames on the command line, but\n operations becomes the first command line parameter\n - the ``stringio`` operation now also replaces cStringIO and\n ``from StringIO import StringIO``\n - urllib: replace also urlparse.symbol\n - six_moves: support more modules: Cookie, HTMLParser, SimpleHTTPServer,\n cookielib, xmlrpclib, etc.\n - Refactor operations as classes to cleanup the code\n\n* Version 0.3.1 (2015-05-27)\n\n - Fix the \"all\" operation\n - six_moves knows more modules\n - urllib: add pathname2url, don't touch urllib2.parse_http_list()\n\n* Version 0.3 (2015-05-27)\n\n - First command line parameter can now be a filename\n - Add \"all\", \"basestring\", \"iterkeys\", \"six_moves\", \"stringio\"\n and \"urllib\" operations\n - Enhance the knownledge tables for modules (stdlib, third parties,\n applications)\n - Ignore unparsable import lines when adding an import\n\n* Version 0.2 (2015-05-12):\n\n - First public release\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vstinner/sixer", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "sixer", "package_url": "https://pypi.org/project/sixer/", "platform": "", "project_url": "https://pypi.org/project/sixer/", "project_urls": { "Homepage": "https://github.com/vstinner/sixer" }, "release_url": "https://pypi.org/project/sixer/1.6.1/", "requires_dist": null, "requires_python": "", "summary": "Add Python 3 support to Python 2 applications using the six module.", "version": "1.6.1" }, "last_serial": 4408604, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "765c3798a38c10c406df7b3fd71656f3", "sha256": "051c4284756a5003eaee51a9bf9f9684b10195aecb03b07308c944ac1955658a" }, "downloads": -1, "filename": "sixer-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "765c3798a38c10c406df7b3fd71656f3", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8574, "upload_time": "2015-05-12T20:41:14", "url": "https://files.pythonhosted.org/packages/a0/41/0eb13d50f422e857228eec8bc0ec84e56c6564814044d425caef9a6de367/sixer-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c74de11b35d97da0e6d0891b4183d2f", "sha256": "5e5e6ca2fb2096d57b2225f045bb18219d5cce74fd7f49cdd09ca247df11560f" }, "downloads": -1, "filename": "sixer-0.2.tar.gz", "has_sig": false, "md5_digest": "4c74de11b35d97da0e6d0891b4183d2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12471, "upload_time": "2015-05-12T20:41:10", "url": "https://files.pythonhosted.org/packages/d8/8c/f34ce1864f38ccefec4bb5d035739017af39d6f4d58c29ab40c5ab313dab/sixer-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "56ed9e9933bda1a59308cf35c7fe4b13", "sha256": "345907dea46900b4e9afd50630bc5080bde2c0c425c92f676102dc12dfa6cff6" }, "downloads": -1, "filename": "sixer-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "56ed9e9933bda1a59308cf35c7fe4b13", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 10998, "upload_time": "2015-05-27T00:21:55", "url": "https://files.pythonhosted.org/packages/1b/7c/654ab27fdb0529b1c57f13b9d09756a3f1f79f4730af30fd7d96c76ab470/sixer-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1517bf46476b13b6557d10452f3b6e4", "sha256": "dbd8c8bbff2481b8d5caa17e4e7222584342faf8932b5004d1a3f76330228822" }, "downloads": -1, "filename": "sixer-0.3.tar.gz", "has_sig": false, "md5_digest": "f1517bf46476b13b6557d10452f3b6e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15227, "upload_time": "2015-05-27T00:21:51", "url": "https://files.pythonhosted.org/packages/f3/04/3de6356034d75c5b8b743ab3c79ff7d7b13ce412028e8fd112260591a36c/sixer-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9db74d5f03fdcc35354f75ed26fb0895", "sha256": "e70c47ac6090157315eaf7b8786f883176ce959eeb4055c175ced7957f8192e8" }, "downloads": -1, "filename": "sixer-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9db74d5f03fdcc35354f75ed26fb0895", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 11313, "upload_time": "2015-05-27T00:45:25", "url": "https://files.pythonhosted.org/packages/33/4a/0d7808394635ccf1506575a4fef47d72ec88ff7811fcb85af9cbe1b98532/sixer-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c1a872f0b35adbc0c8dab2e0a7b1989", "sha256": "72a2806bd099f1a195a993220eacfb2d4abbfb51ee3375699f9e1a6e0c6fa333" }, "downloads": -1, "filename": "sixer-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9c1a872f0b35adbc0c8dab2e0a7b1989", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15528, "upload_time": "2015-05-27T00:45:21", "url": "https://files.pythonhosted.org/packages/12/c9/9ba9602c9f9dc845aa0fe8e39c9601171308776c262419b2d9c908d140c8/sixer-0.3.1.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "882497cc73b33f657ae0bad39cece6be", "sha256": "444c75d8efd100a2e1c21d269a1ce703b9dcdfeab9733446d4ad0f86dab6b3d7" }, "downloads": -1, "filename": "sixer-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "882497cc73b33f657ae0bad39cece6be", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12646, "upload_time": "2015-06-09T13:06:39", "url": "https://files.pythonhosted.org/packages/81/1d/e4960349e4069e5298b1e973426b617ee3cc8a73086e6f9fa4bc675307b0/sixer-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a24da32777a2f7ba413fa0f7b460edbf", "sha256": "fe1d7a83704457fcd0ebb5fe1288012f77222f7cfeb26a07a8bbe08be11ac7e3" }, "downloads": -1, "filename": "sixer-0.4.tar.gz", "has_sig": false, "md5_digest": "a24da32777a2f7ba413fa0f7b460edbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15891, "upload_time": "2015-06-09T13:06:36", "url": "https://files.pythonhosted.org/packages/17/da/c443bc90a84f80bd82f94ab08290cbfc2b293591d665e4286f583860e784/sixer-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "6aacf61640a1081fae04a3eaf9015d8f", "sha256": "1d0bf800bdcc6d7cde2bd896d0dc35ec1c1073a8d9d924a24975af9e56429b6f" }, "downloads": -1, "filename": "sixer-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "6aacf61640a1081fae04a3eaf9015d8f", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 13521, "upload_time": "2015-07-08T09:27:25", "url": "https://files.pythonhosted.org/packages/37/a9/ebbf41af569f601ac041831f26cd496a54a3aaf8f72d9321e430297e820f/sixer-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "611ea27302b5c09c6bb2d66eceeab940", "sha256": "089672d27d475c70a376924fce176ff8e049be2b7781c553e2c92b3554d9b08f" }, "downloads": -1, "filename": "sixer-0.5.tar.gz", "has_sig": false, "md5_digest": "611ea27302b5c09c6bb2d66eceeab940", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19182, "upload_time": "2015-07-08T09:27:21", "url": "https://files.pythonhosted.org/packages/e6/42/d9e6388389a34f3de72f181f485924678f85f17ca57e0615aeae321434d1/sixer-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "8878920268cf25b3b27e12409c41c3d0", "sha256": "3708e7257f0a938ff0b4a1f29a349e71ed7da9f6e57e14adce7d8453413f47c6" }, "downloads": -1, "filename": "sixer-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "8878920268cf25b3b27e12409c41c3d0", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 14368, "upload_time": "2015-09-11T13:08:34", "url": "https://files.pythonhosted.org/packages/67/39/569958e0e255dd8558d9ed2ff9fb631e6b213d09016d27ce308d0aea3049/sixer-0.6-py3-none-any.whl" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "75322ae086ab8d59073bf819b956a639", "sha256": "5c9ade49aeb2f4954bd55920f0f3834350ddcbaa72acd0b7523a8c2847016f73" }, "downloads": -1, "filename": "sixer-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "75322ae086ab8d59073bf819b956a639", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 16588, "upload_time": "2015-09-29T12:37:40", "url": "https://files.pythonhosted.org/packages/62/2f/fa2702401287e9a673f7f6ca6bb2e2aada0d06a78f9dc6de32974f58bbcf/sixer-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a79ea3fb89c301140cc23717b1fbff72", "sha256": "34158b5f697c05669d985cbaaa316279a0b9a8036fa617da903b1ad2ea9298f2" }, "downloads": -1, "filename": "sixer-0.7.tar.gz", "has_sig": false, "md5_digest": "a79ea3fb89c301140cc23717b1fbff72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23408, "upload_time": "2015-09-29T12:37:34", "url": "https://files.pythonhosted.org/packages/02/65/582529666f2c0ced850b4f5905e6c92f0a6feaafed4ae558491aae2e156d/sixer-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "ae3f48e9abcd26006adc8ba0a8a77a39", "sha256": "5744bd7c73af4df3ad95956d2ce9e6f4ddeb6403e1125733fc635403128e3737" }, "downloads": -1, "filename": "sixer-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "ae3f48e9abcd26006adc8ba0a8a77a39", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 17174, "upload_time": "2015-10-03T17:38:50", "url": "https://files.pythonhosted.org/packages/24/23/325e162629615007e225d9939a572e005af0abcd5a198e6af3ad2bde9f29/sixer-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e10db84019261a13bc88e66b04521ee", "sha256": "763186966063b3201c086c5767cca65ff427940dc9fca106f31478894b4e0fda" }, "downloads": -1, "filename": "sixer-0.8.tar.gz", "has_sig": false, "md5_digest": "0e10db84019261a13bc88e66b04521ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24271, "upload_time": "2015-10-03T17:39:25", "url": "https://files.pythonhosted.org/packages/80/21/e35ec7e9d54fb048f47d75c043acf06343a1234d3f7ee4e45737ced420a7/sixer-0.8.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "170721ace99802612aac2cc5e322a5ae", "sha256": "3b5a82d3470d83c1e0e8d74c24ce482eea1a5eb8af7fc5056cbbbfe908f63bd9" }, "downloads": -1, "filename": "sixer-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "170721ace99802612aac2cc5e322a5ae", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 18212, "upload_time": "2015-10-09T22:43:42", "url": "https://files.pythonhosted.org/packages/94/f9/b55d6e5611eb11fa234e4cadbd04c4442d456f9dda29199c3b9c4fde32ac/sixer-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2751afc46bb5e6e713988caf22499aa", "sha256": "6d36517b06d5ed8647b02d786c72c6b165eb5bf069a32d77cd31838a3b7d2efb" }, "downloads": -1, "filename": "sixer-1.0.tar.gz", "has_sig": false, "md5_digest": "b2751afc46bb5e6e713988caf22499aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25625, "upload_time": "2015-10-09T22:43:38", "url": "https://files.pythonhosted.org/packages/af/d0/deb3d14d2cad20bba69e6dee1119f8a3c42b4a243a4b1d0aac46cfe7c8c1/sixer-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "e0eaa6e1c1ebf42c37628c74b809ae12", "sha256": "5f47a5525de818db69a5ca88cdd77c348c4aa60ca6180b87604574c75e82b5e1" }, "downloads": -1, "filename": "sixer-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e0eaa6e1c1ebf42c37628c74b809ae12", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 18716, "upload_time": "2015-10-22T13:56:43", "url": "https://files.pythonhosted.org/packages/53/36/4b7e978dd991ae3229a9b788960072f4ce50612065cb6be853e6afcdcb49/sixer-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f9436127a70a8a8adf82d634ee8316b", "sha256": "cdfbc9dd18238def6254bdf5db2483ba48e562682eb11d45b6caace3283ce1ff" }, "downloads": -1, "filename": "sixer-1.1.tar.gz", "has_sig": false, "md5_digest": "0f9436127a70a8a8adf82d634ee8316b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26252, "upload_time": "2015-10-22T13:56:38", "url": "https://files.pythonhosted.org/packages/d0/ef/a14ff9d71faef256d4100e0ec94ec86baadb6e072f418d8832bafcdd3a4a/sixer-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "ce1bd72595907e52436247aa6dbc3dc9", "sha256": "aafccda203cdea322db24c15935ffbff78384d105895c0524e65ad95816b8c7a" }, "downloads": -1, "filename": "sixer-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ce1bd72595907e52436247aa6dbc3dc9", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 20229, "upload_time": "2015-11-26T12:31:22", "url": "https://files.pythonhosted.org/packages/ba/46/1e8a82e291b51121764c9716aecfd9b604141c5a40634a12a6ac74d03b99/sixer-1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0002f236b01dbcad97584f2a8412f24c", "sha256": "87661259bcda33716379a2d81f602d92e710b79a84a25742cb3870020d673228" }, "downloads": -1, "filename": "sixer-1.2.tar.gz", "has_sig": false, "md5_digest": "0002f236b01dbcad97584f2a8412f24c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28901, "upload_time": "2015-11-26T12:33:03", "url": "https://files.pythonhosted.org/packages/d5/77/a115fd21a890a0526c2f18aad236b2a2e203fc4a507a08a83bf6998479d0/sixer-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "d2c89c5437d82c344418794cf2da1f09", "sha256": "6016416728aad3bab685ef2ea57750f08d56c2d2fb037a2ca0ec77409c0b4c06" }, "downloads": -1, "filename": "sixer-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d2c89c5437d82c344418794cf2da1f09", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 21296, "upload_time": "2016-02-11T16:42:55", "url": "https://files.pythonhosted.org/packages/64/69/9171609358eb4d5488374c9b1def9f8b4a21a7a98cad2112575d26508c1c/sixer-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "888b8cdb09534f03b4d23d76c6e4896d", "sha256": "c85863b51faa77504b1f8dbd975db9aa430e1aaed032af9cca6dd4ceedcf1689" }, "downloads": -1, "filename": "sixer-1.3.tar.gz", "has_sig": false, "md5_digest": "888b8cdb09534f03b4d23d76c6e4896d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30951, "upload_time": "2016-02-11T16:42:48", "url": "https://files.pythonhosted.org/packages/8d/ac/b92bbceb5b6d15dff3b9a718f3cc484ca22126199fa2bae13ce7766f2b02/sixer-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "b9514801e361527cf9759ad6677dba7b", "sha256": "7df3c659a8616aea22fec6b9451602045daaf5e871fed4a57f7abb27fca47b85" }, "downloads": -1, "filename": "sixer-1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b9514801e361527cf9759ad6677dba7b", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 21494, "upload_time": "2016-03-11T12:24:43", "url": "https://files.pythonhosted.org/packages/1e/86/aaffe961482d5eb283dc5868eece338ee5169e11ea75c0f82019bbfb43aa/sixer-1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cba0cfbe5b510a068e937fd9f217131d", "sha256": "7e60ee01ccfe914e3961214bd8456cf7b60ad5287dadde47b0b987c92c1a0996" }, "downloads": -1, "filename": "sixer-1.4.tar.gz", "has_sig": false, "md5_digest": "cba0cfbe5b510a068e937fd9f217131d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31386, "upload_time": "2016-03-11T12:24:33", "url": "https://files.pythonhosted.org/packages/c5/a6/6ee8b187ff64ddf0f6cd032e940d32c701416010166b018b0495715972fa/sixer-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "bcb6abdff7d2d4938242e2492967d16b", "sha256": "8a8eccc7dbe8ba68100b79c4642e27adabe9074272a8e1c3d014c2e1df198703" }, "downloads": -1, "filename": "sixer-1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "bcb6abdff7d2d4938242e2492967d16b", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 21497, "upload_time": "2016-05-30T09:57:13", "url": "https://files.pythonhosted.org/packages/bc/a2/1171ba6c27340f5a64879950ebeeeccb052dd68121cab2196925b0dbb0a8/sixer-1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35adc686f2af6bcb3bd641a8a949c6fb", "sha256": "6877d2aa9d34618d139ebbf543ff7d93bf8d3b173b5ce03825b22ed1b6701136" }, "downloads": -1, "filename": "sixer-1.5.tar.gz", "has_sig": false, "md5_digest": "35adc686f2af6bcb3bd641a8a949c6fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31374, "upload_time": "2016-05-30T09:57:08", "url": "https://files.pythonhosted.org/packages/e3/e7/955f4efd61ad780590131f8f16dd6aa0d26b527644cc0ec87901100214c6/sixer-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "fceff386cf45d98df8625e82870b528d", "sha256": "550cec02c7853073aa5f2fa3c606962c3723386645b39324444eccc61928eca0" }, "downloads": -1, "filename": "sixer-1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "fceff386cf45d98df8625e82870b528d", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 21674, "upload_time": "2016-07-25T13:04:13", "url": "https://files.pythonhosted.org/packages/97/29/5b49b2ed0f7a9c6ff720120ad93187e0211f7ac46c6b9c266b406083d156/sixer-1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97b582b8b8f0af08cb4ea93762683d5e", "sha256": "3b2f31ad9ac28bf5ab5e4e25a6161fdcb1d0661958db4dc9c672cb7aac5065b5" }, "downloads": -1, "filename": "sixer-1.6.tar.gz", "has_sig": false, "md5_digest": "97b582b8b8f0af08cb4ea93762683d5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30022, "upload_time": "2016-07-25T13:04:07", "url": "https://files.pythonhosted.org/packages/1b/72/d24d87bad1ef745cfa2b7c254987d3fc835b9aa07c2719f0623db55c6084/sixer-1.6.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "f7998565663153880a2eb37b51158f44", "sha256": "4ede6fc7bda1c9034fa87bd356f3316b9b67c9ed2043f5fe502a43b45e16500e" }, "downloads": -1, "filename": "sixer-1.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f7998565663153880a2eb37b51158f44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20906, "upload_time": "2018-10-23T23:25:03", "url": "https://files.pythonhosted.org/packages/ec/f2/8fc2ea6a3fcdbc63f14f2eaba1da8f632cae8d06efaed660e39adffd500e/sixer-1.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "797d5d75c8f216e81e5f2a6327b11545", "sha256": "a13851e7d1b8fc092ec3b3e7d82b26363258167988f0727b60da1a28162b5764" }, "downloads": -1, "filename": "sixer-1.6.1.tar.gz", "has_sig": false, "md5_digest": "797d5d75c8f216e81e5f2a6327b11545", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32106, "upload_time": "2018-10-23T23:25:05", "url": "https://files.pythonhosted.org/packages/4b/43/71b041052c8d80e86d3ca7daef51a64424e89cd75342d49f6bb92c928c44/sixer-1.6.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f7998565663153880a2eb37b51158f44", "sha256": "4ede6fc7bda1c9034fa87bd356f3316b9b67c9ed2043f5fe502a43b45e16500e" }, "downloads": -1, "filename": "sixer-1.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f7998565663153880a2eb37b51158f44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20906, "upload_time": "2018-10-23T23:25:03", "url": "https://files.pythonhosted.org/packages/ec/f2/8fc2ea6a3fcdbc63f14f2eaba1da8f632cae8d06efaed660e39adffd500e/sixer-1.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "797d5d75c8f216e81e5f2a6327b11545", "sha256": "a13851e7d1b8fc092ec3b3e7d82b26363258167988f0727b60da1a28162b5764" }, "downloads": -1, "filename": "sixer-1.6.1.tar.gz", "has_sig": false, "md5_digest": "797d5d75c8f216e81e5f2a6327b11545", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32106, "upload_time": "2018-10-23T23:25:05", "url": "https://files.pythonhosted.org/packages/4b/43/71b041052c8d80e86d3ca7daef51a64424e89cd75342d49f6bb92c928c44/sixer-1.6.1.tar.gz" } ] }