{ "info": { "author": "kai zhu", "author_email": "kaizhu256@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: End Users/Desktop", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Topic :: Education", "Topic :: Scientific/Engineering", "Topic :: Software Development", "Topic :: Software Development :: Assemblers", "Topic :: Software Development :: Bug Tracking", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Compilers", "Topic :: Software Development :: Debuggers", "Topic :: Software Development :: Disassemblers", "Topic :: Software Development :: Interpreters", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Pre-processors", "Topic :: Software Development :: Testing", "Topic :: System :: Emulators", "Topic :: System :: Shells", "Topic :: Text Processing", "Topic :: Text Processing :: Filters", "Topic :: Utilities" ], "description": "this project is being superseded by asciiporn at http://code.google.com/p/asciiporn/\r\n\r\nAUTHOR\r\n kai zhu\r\n kaizhu256@gmail.com\r\n\r\nREQUIREMENTS\r\n - posix/unix os (Windows currently unsupported)\r\n - w/ python2.6 & python3.0 installed\r\n\r\nINSTALL\r\n $ python2.6 setup.py build\r\n $ python2.6 setup.py install\r\n $ python2.6 setup.py dev --quicktest\r\n $ python2.6 setup.py dev --py2to3test ## takes awhile to finish\r\n\r\n the above will build & install 3 files:\r\n - extended python2.6 interpreter: bin/py3to2\r\n - initialization script: lib/python2.6/site-packages/py3to2_init.py\r\n - python3.0 bytecode compiler: lib/python2.6/site-packages/py3to2.py\r\n\r\n################################################################################\r\nABSTRACT\r\n\r\npy3to2 is a python2.6 interpreter w/ extended python3.0 opcodes, allowing it to\r\nnatively run python3.0 & 2to3 generated scripts. it should b\r\nmostly backwards-compatible w/ cpython2.6 & its extensions.\r\n\r\nthe intended purpose is to allow developers to migrate python2.6 scripts to\r\npython3.0 while retaining backwards compatibility w/ existing extension modules.\r\npy3to2 coexists w/ ur existing python2.6 installation (it consists of 3 files)\r\n\r\nfor a real-world py3to2 app (python3.0 script using 2.6 extension modules),\r\ncheckout asciiporn: http://pypi.python.org/pypi/asciiporn\r\n\r\nMECHANISM\r\n\r\npy3to2 has 3 components:\r\n- py3to2\r\n python interpreter. can evaluate python2.6 bytecode containing additional\r\n python3.0 opcode instructions\r\n\r\n- py3to2_init.py\r\n initialization script. sets up import hook for recognizing python3.0 scripts\r\n\r\n- py3to2.py\r\n bytecode compiler. the compile process takes 2 steps:\r\n - a persistent python3.0 process is created for compiling scripts into\r\n python3.0 code\r\n - py3to2.py then converts the code from python3.0 to python2.6 format\r\n\r\nMANIFEST\r\n\r\n./patch/ - patched files\r\n./py3to2.diff - summary of patches (maybe out-of-date)\r\n\r\n################################################################################\r\nMAGIC\r\n simply add the MAGIC LINE:\r\n\r\n from __future__ import py3k_syntax\r\n\r\n to make py3to2 aware that a script is using python3.0 syntax\r\n\r\nPSEUDOMETHOD\r\n py3to2 supports \"..\" syntax notation for pseudomethods\r\n goto: http://pypi.python.org/pypi/pseudomethod\r\n for more details about this feature\r\n\r\n2TO3\r\n py3to2 includes convenience functions for automatically generating &\r\n testing scripts using 2to3:\r\n - class py2to3:\r\n - __call__ - overwrites file w/ one generated by 2to3\r\n - overwrite_and_load_module - overwrites file & then attempt to import it\r\n - test_stdlib - given a directory containing a copy of python2.6's\r\n standard library, it will overwrite them using 2to3 & then\r\n attempts to load each file\r\n\r\nAPI: try help(py3to2) ^_-\r\n\r\n py3to2 module:\r\n - class codetree - mutable codeobj & disassembler/assembler/debugger\r\n - class compiler - compiling tools\r\n - python3.0 wrappers:\r\n - py3k_compile() - compile python3.0 src\r\n - py3k_eval() - eval py3thon3.0 src\r\n - py3k_exec() - exec python3.0 src\r\n\r\nUSAGE\r\n start up the py3to2 interpreter by typing \"py3to2\" in ur shell:\r\n $ py3to2\r\n\r\n Python 2.6.py3to2 (r26:66714, Nov 18 2008, 00:56:43)\r\n [GCC 3.4.6 20060404 (Red Hat 3.4.6-10)] on linux2\r\n Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n >>>\r\n\r\n try out this simple python3.0 script:\r\n ################################################################\r\n ## PEP3132 Extended Iterable Unpacking\r\n ## copy this to file test_pep3132.py\r\n\r\n from __future__ import py3k_syntax\r\n\r\n a,*b = 1,2,3\r\n assert a == 1 and b == [2,3]\r\n print(a,b)\r\n ################################################################\r\n >>>\r\n >>> import test_pep3132\r\n created...\r\n py3k server starting...\r\n ...py3k server started w/...\r\n\r\n 1 [2, 3]\r\n\r\n here's another python3.0 script using scipy (python2.6) extension module:\r\n ################################################################\r\n ## u must have scipy installed for this script to work\r\n ## copy this to file test_pep3132_scipy.py\r\n\r\n from __future__ import py3k_syntax\r\n\r\n import scipy\r\n a,*b = scipy.array([1,2,3])\r\n assert a == 1 and b == [2,3]\r\n print(a,b)\r\n ################################################################\r\n >>>\r\n >>> import test_pep3132_scipy\r\n 1 [2, 3]\r\n\r\n another simple, but more thorough test script, test_py3k,\r\n is included w/ this distribution:\r\n >>>\r\n >>> import test_py3k\r\n testing PEP3102 Keyword-Only Arguments\r\n testing PEP3104 Access to Names in Outer Scopes\r\n testing PEP3105 Make print a function\r\n testing PEP3107 Function Annotations\r\n testing PEP3112 Bytes literals in Python 3000\r\n testing PEP3113 Removal of Tuple Parameter Unpacking\r\n testing PEP3114 Renaming iterator.next() to .__next__()\r\n testing PEP3115 Metaclasses in Python 3000\r\n testing PEP3120 Using UTF-8 as the default source encoding\r\n testing PEP3127 Integer Literal Support and Syntax\r\n testing PEP3129 Class Decorators\r\n testing PEP3131 Supporting Non-ASCII Identifiers\r\n testing PEP3132 Extended Iterable Unpacking\r\n testing PEP3135 New Super\r\n testing pseudomethod example 0\r\n testing pseudomethod example 1\r\n testing pseudomethod example 2\r\n testing pseudomethod example 3\r\n testing numpy example\r\n\r\nFEATURES\r\n PEP3102 Keyword-Only Arguments\r\n PEP3104 Access to Names in Outer Scopes\r\n PEP3105 Make print a function\r\n PEP3107 Function Annotations\r\n PEP3111 Simple input built-in in Python 3000\r\n PEP3112 Bytes literals in Python 3000\r\n PEP3113 Removal of Tuple Parameter Unpacking\r\n PEP3114 Renaming iterator.next() to .__next__()\r\n PEP3115 Metaclasses in Python 3000\r\n PEP3120 Using UTF-8 as the default source encoding\r\n PEP3127 Integer Literal Support and Syntax\r\n PEP3129 Class Decorators\r\n PEP3131 Supporting Non-ASCII Identifiers\r\n PEP3132 Extended Iterable Unpacking\r\n PEP3135 New Super\r\n\r\nUNICODE SUPPORT\r\n py3to2 will only load ascii & utf8-encoded scripts\r\n (utf8 is the default encoding in python3.0).\r\n\r\n although they're illegal in python3.0, for backwards-compatibility sake,\r\n py3to2 supports unicode literals for explicit obj creation:\r\n\r\n u\"\\u1234\" is an explicit obj (note unicode literal in front)\r\n \"\\u1234\" is NOT a obj when converted back to python2.6\r\n\r\n note also the following r equivalent under python2.6:\r\n\r\n u\"\\u1234\" <==> \"\\u1234\".decode(\"raw_unicode_escape\")\r\n\r\n so u MUST do either u\"...\" or \"...\".decode(\"raw_unicode_escape\")\r\n to create explicit obj in py3to2.\r\n\r\nLIMITATIONS (FEATURES NOT FULLY SUPPORTED)\r\n except for the aforementioned unicode issue, from a migration standpoint,\r\n py3to2 is mostly feature complete in terms of python3.0's language syntax,\r\n\r\n language issue aside, python3.0 scripts will still behave differently b/c of\r\n internal differences between python2.6 & python3.0:\r\n - exception handling. py3to2 implements python3.0 syntax for raising &\r\n catching exceptions. but the underlying behavior is still python2.6\r\n - builtin functions / types. a few of these have become different beasts\r\n under python3.0\r\n\r\n################################################################################\r\nPYTHON2.6 COMPATIBILITY TEST\r\n $ python setup.py dev --maketest\r\n ...\r\n test_sys\r\n test test_sys failed -- Traceback (most recent call last):\r\n File \".../Python-2.6/Lib/test/test_sys.py\", line 487, in test_objecttypes\r\n check(get_cell().func_code, size(h + '4i8Pi2P'))\r\n File \".../Python-2.6/Lib/test/test_sys.py\", line 423, in check_sizeof\r\n self.assertEqual(result, size, msg)\r\n AssertionError: wrong size for : got 128, expected 120\r\n ...\r\n 325 tests OK.\r\n 1 test failed:\r\n test_sys\r\n 35 tests skipped:\r\n test_aepack test_al test_applesingle test_bsddb185 test_bsddb3\r\n test_cd test_cl test_codecmaps_cn test_codecmaps_hk\r\n test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses\r\n test_gdbm test_gl test_imgfile test_kqueue test_linuxaudiodev\r\n test_macos test_macostools test_normalization test_ossaudiodev\r\n test_pep277 test_py3kwarn test_scriptpackages test_socketserver\r\n test_startfile test_sunaudiodev test_tcl test_timeout\r\n test_urllib2net test_urllibnet test_winreg test_winsound\r\n test_zipfile64\r\n 2 skips unexpected on linux2:\r\n test_tcl test_gdbm\r\n\r\n2TO3 COMPATIBILITY TEST\r\n $ python setup.py dev --py2to3test\r\n ...\r\n tested 200 2to3 generated scripts from 2.6.1.py3to2 (r261:67515, Jan 4 2009,\r\n01:28:21)\r\n [GCC 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)] standard library\r\n\r\n 0 skipped:\r\n\r\n\r\n 28 couldn't import required modules:\r\n BaseHTTPServer CGIHTTPServer cgi cookielib copy DocXMLRPCServer\r\ndummy_threading HTMLParser httplib _LWPCookieJar macurl2path mimetools mimetypes\r\n_MozillaCookieJar os pdb pickle pydoc re robotparser sgmllib SimpleHTTPServer\r\nSimpleXMLRPCServer _strptime tempfile threading urllib2 urllib\r\n\r\n 6 were non-utf8 compliant scripts:\r\n base64 getopt heapq shlex smtpd tarfile\r\n\r\n 8 failed import due to other reasons:\r\n anydbm dbhash doctest imputil sets trace UserList UserString\r\n\r\n 159 passed import:\r\n _abcoll abc aifc ast asynchat asyncore atexit audiodev Bastion bdb binhex\r\nbisect calendar cgitb chunk cmd codecs codeop code collections colorsys commands\r\ncompileall ConfigParser contextlib Cookie copy_reg cProfile csv decimal difflib\r\ndircache dis dumbdbm dummy_thread filecmp fileinput fnmatch formatter fpformat\r\nfractions ftplib functools __future__ genericpath getpass gettext glob gzip\r\nhashlib hmac htmlentitydefs htmllib ihooks imaplib imghdr inspect io keyword\r\nlinecache locale macpath mailbox mailcap markupbase md5 mhlib MimeWriter mimify\r\nmodulefinder multifile mutex netrc new nntplib ntpath nturl2path numbers opcode\r\noptparse os2emxpath __phello__.foo pickletools pipes pkgutil platform plistlib\r\npopen2 poplib posixfile posixpath pprint profile pstats pty pyclbr py_compile\r\npydoc_topics Queue quopri random repr rexec rfc822 rlcompleter runpy sched sha\r\nshelve shutil site smtplib sndhdr socket SocketServer sre_compile sre_constants\r\nsre_parse sre ssl stat statvfs StringIO stringold stringprep string struct\r\nsubprocess sunaudio sunau symbol symtable tabnanny telnetlib textwrap this\r\n_threading_local timeit toaiff tokenize token traceback tty types unittest\r\nurlparse UserDict user uuid uu warnings wave weakref webbrowser whichdb xdrlib\r\nxmllib xmlrpclib zipfile\r\n\r\n################################################################################\r\nRECENT CHANGES:\r\n20090103 updated to python 2.6.1\r\n20081129 - major revision\r\n PyCodeObject now has kwonlyargcount attr\r\n - breaks one regression test but greatly simplifies patch & prevents many\r\n future bugs\r\n - fixes pydoc bug\r\n PyFunctionObject now has __kwdefaults__ & __annotations__ attr\r\n ceval.c re-patched in light of above changes (much simpler)\r\n20081128\r\n more documentation\r\n added 2to3 convenience functions\r\n added unicode utf-8 support\r\n20081123\r\n moved pseudomethod syntax handling to py3k server\r\n added more checks during setup\r\n added more documentation\r\n backported patch r67299 fixing an issue w/ super()\r\n cleaned up py3to2.compiler class\r\n20081120\r\n fixed package importing bug - py3to2 failed to import foo.bar\r\n20081119\r\n created self-installing distutils distribution\r\n20081019\r\n ported to python-2.6\r\n consolidate & simplify patches to 1 file: ceval.c\r\n created extension module builtins_py3k\r\n revamped import hook again\r\n removed unicode support & restrict source code to ascii-only\r\n20080727\r\n revampled import hook\r\n20080911\r\n consolidate patches to 2 files: bltinmodule.c & ceval.c\r\n20080828\r\n add kwonlyargcount 'attr' to codeobj\r\n add __annotations__ & __kwdefaults__ attr to funcobj\r\n add __pseudomethod__ feature to baseobj\r\n20080819\r\n pure python import hook - removed magic comment & use magic path instead\r\n revamped str & bytes handling\r\n revamped py3k .pyc file handling\r\n20080802\r\n pep3135 New Super\r\n20080717\r\n pep3107 Function Annotations\r\n pep3120 Using UTF-8 as the default source encoding\r\n pep3131 Supporting Non-ASCII Identifiers\r\n20080713\r\n import / reload works transparently on py3k scripts using a magic comment\r\n added pep3102 Keyword-Only Arguments\r\n20080709 added a py3k preparser\r\n20080702\r\n rewrote py3k server's pipe io. implemented partial bytearray & bytes class.\r\n wrote a few simple tests\r\n20080630\r\n __build_class__ function to bltmodule.c. tested class decorators to b \r\nworking.\r\n################################################################################", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/py3to2", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "py3to2", "package_url": "https://pypi.org/project/py3to2/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/py3to2/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/py3to2" }, "release_url": "https://pypi.org/project/py3to2/2009.01.03/", "requires_dist": null, "requires_python": null, "summary": "run python3.0 & 2to3 generated scripts w/ 2.6 extension support", "version": "2009.01.03" }, "last_serial": 233784, "releases": { "0.1.0": [], "0.2.0": [ { "comment_text": "patched ceval.c file, py3to2.py script, example_py3k.py script", "digests": { "md5": "3da35bf6654cfbb7082e798faad62b45", "sha256": "1e07fc242d62f5472d2e8e4d126289a02f19f52bd642abe5e2f2f64b6f625f11" }, "downloads": -1, "filename": "py3to2.20081020.tar.gz", "has_sig": false, "md5_digest": "3da35bf6654cfbb7082e798faad62b45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50511, "upload_time": "2008-10-23T08:26:33", "url": "https://files.pythonhosted.org/packages/f7/1c/b8c5481e7fd06d5cf48de74a589d7568ca959394193c3d0a7e27d5ebde80/py3to2.20081020.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "2737719892be6f9ff46190511dcdbc2c", "sha256": "3bd6614f20e24d2613cc69f24bc237682d3c4eebf2f2a245d3f3f39bc703edf6" }, "downloads": -1, "filename": "py3to2-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2737719892be6f9ff46190511dcdbc2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 164452, "upload_time": "2008-11-19T07:56:20", "url": "https://files.pythonhosted.org/packages/eb/ac/bb8b96d84f8dce24c463e956bc20352ed4614dba80e6a87e321b6f8631fd/py3to2-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "271df7406a650b7e844317b5cc32c0b8", "sha256": "4bc86190b4a52a98003cc3529592aea460abc4656de0c0621add73244f3461ed" }, "downloads": -1, "filename": "py3to2-0.3.0.tar.gz", "has_sig": false, "md5_digest": "271df7406a650b7e844317b5cc32c0b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 164441, "upload_time": "2008-11-19T08:25:23", "url": "https://files.pythonhosted.org/packages/32/a0/1524b424d3bc2073bdb79bf921403dd82c268934e21f9d9a788782a2b95d/py3to2-0.3.0.tar.gz" } ], "2008.11.19": [ { "comment_text": "", "digests": { "md5": "edea5867e07b9e96c253e9a784abe08e", "sha256": "ebe4c6a158fbdfcbc903c584f48d8d779f3fcb5756e50391da6215ff6dba7070" }, "downloads": -1, "filename": "py3to2-2008.11.19.tar.gz", "has_sig": false, "md5_digest": "edea5867e07b9e96c253e9a784abe08e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 241886, "upload_time": "2008-11-19T20:58:39", "url": "https://files.pythonhosted.org/packages/23/8c/69d8a48d2bfbaefd1ebfe29f7adf6c7d1f03a0ba57321ec69ba822e9934b/py3to2-2008.11.19.tar.gz" } ], "2008.11.20": [ { "comment_text": "", "digests": { "md5": "cc5f1245db7be3f208ba96f442485881", "sha256": "dd3fafe784d7575724f0e447a42b91f5a34707a2aa2f01c39c12e59798bfac4c" }, "downloads": -1, "filename": "py3to2-2008.11.20.tar.gz", "has_sig": false, "md5_digest": "cc5f1245db7be3f208ba96f442485881", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 128498, "upload_time": "2008-11-20T13:03:16", "url": "https://files.pythonhosted.org/packages/e3/ed/1f250a9f9f75dd45cb2c79d115fa67c0e5ace6c966497accb417bf0e2926/py3to2-2008.11.20.tar.gz" } ], "2008.11.21": [ { "comment_text": "", "digests": { "md5": "5f12f1d2481dc6c71513c970d2121168", "sha256": "0d24325bc0e619db2f82ed5205bcb1db53ecc652f89e17f1cd52fffd5fc779d7" }, "downloads": -1, "filename": "py3to2-2008.11.21.tar.gz", "has_sig": false, "md5_digest": "5f12f1d2481dc6c71513c970d2121168", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129276, "upload_time": "2008-11-21T22:48:38", "url": "https://files.pythonhosted.org/packages/b7/b5/afd39715f9932a891867c0ac72c03061c2ee19ce5a4c01db750264bd738b/py3to2-2008.11.21.tar.gz" } ], "2008.11.22": [ { "comment_text": "", "digests": { "md5": "5d03925ef81fa3afcbcff6d3e22cfbeb", "sha256": "b1f8f79f860d39d8cd455a98950e17c7d135dbdeab5ec6baf659675502a73a4c" }, "downloads": -1, "filename": "py3to2-2008.11.22.tar.gz", "has_sig": false, "md5_digest": "5d03925ef81fa3afcbcff6d3e22cfbeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 139946, "upload_time": "2008-11-23T16:24:17", "url": "https://files.pythonhosted.org/packages/c5/da/37842888fee1686919381e5c8d66975a5b2c0bbcfde166a616ec68e68b68/py3to2-2008.11.22.tar.gz" } ], "2008.11.23": [ { "comment_text": "", "digests": { "md5": "3199ca855ecde41020941ab0b8a20a7e", "sha256": "626a6ee54cf334996d5418f6a21f0a972a6c0e8c0dd17898db0e3b5e7b0d913e" }, "downloads": -1, "filename": "py3to2-2008.11.23.tar.gz", "has_sig": false, "md5_digest": "3199ca855ecde41020941ab0b8a20a7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 150780, "upload_time": "2008-11-26T07:45:30", "url": "https://files.pythonhosted.org/packages/02/35/60e9a2848084f5c1cbcf24b2b4ed805f0b8203179bfadb17e4acf0c8f409/py3to2-2008.11.23.tar.gz" } ], "2008.11.29": [ { "comment_text": "", "digests": { "md5": "30fec00e67c2567c42c8c2fbeb576c22", "sha256": "aa53cf5efcec7314e996b6331e847fa5cf192a26f154f615c9b38f7d4f4c3c7f" }, "downloads": -1, "filename": "py3to2-2008.11.29.tar.gz", "has_sig": false, "md5_digest": "30fec00e67c2567c42c8c2fbeb576c22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147449, "upload_time": "2008-12-02T10:37:29", "url": "https://files.pythonhosted.org/packages/cf/ac/781489a44452acb7a59806ac69083ff9a66f839da858d6c321689f85d2ac/py3to2-2008.11.29.tar.gz" } ], "2009.01.03": [ { "comment_text": "", "digests": { "md5": "ddbdce5cdd99dcbc65c3d1cd7fcc9669", "sha256": "047b64e8dc84a575ac6bae64c07586413f158672a0bd89d60eadb96efea5062c" }, "downloads": -1, "filename": "py3to2-2009.01.03.tar.gz", "has_sig": false, "md5_digest": "ddbdce5cdd99dcbc65c3d1cd7fcc9669", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137211, "upload_time": "2009-01-04T10:17:06", "url": "https://files.pythonhosted.org/packages/78/5e/f2b452575532db24619f21b3c0864a8ec89df7cff49d22b82214bd08d0bd/py3to2-2009.01.03.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ddbdce5cdd99dcbc65c3d1cd7fcc9669", "sha256": "047b64e8dc84a575ac6bae64c07586413f158672a0bd89d60eadb96efea5062c" }, "downloads": -1, "filename": "py3to2-2009.01.03.tar.gz", "has_sig": false, "md5_digest": "ddbdce5cdd99dcbc65c3d1cd7fcc9669", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137211, "upload_time": "2009-01-04T10:17:06", "url": "https://files.pythonhosted.org/packages/78/5e/f2b452575532db24619f21b3c0864a8ec89df7cff49d22b82214bd08d0bd/py3to2-2009.01.03.tar.gz" } ] }