forked from mirrors/gecko-dev
		
	 5ccbc0cfd7
			
		
	
	
		5ccbc0cfd7
		
	
	
	
	
		
			
			This commit is a simple 'hg mv' and does not contain any file modifications. *** Bug 1346025 - Split vendored modules in python/moz.build to third_party/python/moz.build, r=ted *** Bug 1346025 - Update references to moved python modules, r=ted MozReview-Commit-ID: A12RnIFtXju --HG-- rename : python/PyECC/MANIFEST.in => third_party/python/PyECC/MANIFEST.in rename : python/PyECC/README.md => third_party/python/PyECC/README.md rename : python/PyECC/ecc/Key.py => third_party/python/PyECC/ecc/Key.py rename : python/PyECC/ecc/Rabbit.py => third_party/python/PyECC/ecc/Rabbit.py rename : python/PyECC/ecc/SecurityViolationException.py => third_party/python/PyECC/ecc/SecurityViolationException.py rename : python/PyECC/ecc/__init__.py => third_party/python/PyECC/ecc/__init__.py rename : python/PyECC/ecc/curves.py => third_party/python/PyECC/ecc/curves.py rename : python/PyECC/ecc/eccrypt.py => third_party/python/PyECC/ecc/eccrypt.py rename : python/PyECC/ecc/ecdsa.py => third_party/python/PyECC/ecc/ecdsa.py rename : python/PyECC/ecc/elliptic.py => third_party/python/PyECC/ecc/elliptic.py rename : python/PyECC/ecc/encoding.py => third_party/python/PyECC/ecc/encoding.py rename : python/PyECC/ecc/performance.py => third_party/python/PyECC/ecc/performance.py rename : python/PyECC/ecc/primes.py => third_party/python/PyECC/ecc/primes.py rename : python/PyECC/ecc/shacrypt.py => third_party/python/PyECC/ecc/shacrypt.py rename : python/PyECC/setup.py => third_party/python/PyECC/setup.py rename : python/blessings/LICENSE => third_party/python/blessings/LICENSE rename : python/blessings/MANIFEST.in => third_party/python/blessings/MANIFEST.in rename : python/blessings/PKG-INFO => third_party/python/blessings/PKG-INFO rename : python/blessings/README.rst => third_party/python/blessings/README.rst rename : python/blessings/blessings/__init__.py => third_party/python/blessings/blessings/__init__.py rename : python/blessings/blessings/tests.py => third_party/python/blessings/blessings/tests.py rename : python/blessings/setup.cfg => third_party/python/blessings/setup.cfg rename : python/blessings/setup.py => third_party/python/blessings/setup.py rename : python/blessings/tox.ini => third_party/python/blessings/tox.ini rename : python/compare-locales/compare_locales/__init__.py => third_party/python/compare-locales/compare_locales/__init__.py rename : python/compare-locales/compare_locales/checks.py => third_party/python/compare-locales/compare_locales/checks.py rename : python/compare-locales/compare_locales/commands.py => third_party/python/compare-locales/compare_locales/commands.py rename : python/compare-locales/compare_locales/compare.py => third_party/python/compare-locales/compare_locales/compare.py rename : python/compare-locales/compare_locales/parser.py => third_party/python/compare-locales/compare_locales/parser.py rename : python/compare-locales/compare_locales/paths.py => third_party/python/compare-locales/compare_locales/paths.py rename : python/compare-locales/compare_locales/tests/__init__.py => third_party/python/compare-locales/compare_locales/tests/__init__.py rename : python/compare-locales/compare_locales/tests/data/bug121341.properties => third_party/python/compare-locales/compare_locales/tests/data/bug121341.properties rename : python/compare-locales/compare_locales/tests/data/test.properties => third_party/python/compare-locales/compare_locales/tests/data/test.properties rename : python/compare-locales/compare_locales/tests/data/triple-license.dtd => third_party/python/compare-locales/compare_locales/tests/data/triple-license.dtd rename : python/compare-locales/compare_locales/tests/test_checks.py => third_party/python/compare-locales/compare_locales/tests/test_checks.py rename : python/compare-locales/compare_locales/tests/test_compare.py => third_party/python/compare-locales/compare_locales/tests/test_compare.py rename : python/compare-locales/compare_locales/tests/test_dtd.py => third_party/python/compare-locales/compare_locales/tests/test_dtd.py rename : python/compare-locales/compare_locales/tests/test_ini.py => third_party/python/compare-locales/compare_locales/tests/test_ini.py rename : python/compare-locales/compare_locales/tests/test_merge.py => third_party/python/compare-locales/compare_locales/tests/test_merge.py rename : python/compare-locales/compare_locales/tests/test_properties.py => third_party/python/compare-locales/compare_locales/tests/test_properties.py rename : python/compare-locales/compare_locales/tests/test_util.py => third_party/python/compare-locales/compare_locales/tests/test_util.py rename : python/compare-locales/compare_locales/tests/test_webapps.py => third_party/python/compare-locales/compare_locales/tests/test_webapps.py rename : python/compare-locales/compare_locales/util.py => third_party/python/compare-locales/compare_locales/util.py rename : python/compare-locales/compare_locales/webapps.py => third_party/python/compare-locales/compare_locales/webapps.py rename : python/configobj/PKG-INFO => third_party/python/configobj/PKG-INFO rename : python/configobj/configobj.py => third_party/python/configobj/configobj.py rename : python/configobj/setup.py => third_party/python/configobj/setup.py rename : python/configobj/validate.py => third_party/python/configobj/validate.py rename : python/dlmanager/README.rst => third_party/python/dlmanager/README.rst rename : python/dlmanager/check.py => third_party/python/dlmanager/check.py rename : python/dlmanager/dlmanager/__init__.py => third_party/python/dlmanager/dlmanager/__init__.py rename : python/dlmanager/dlmanager/fs.py => third_party/python/dlmanager/dlmanager/fs.py rename : python/dlmanager/dlmanager/manager.py => third_party/python/dlmanager/dlmanager/manager.py rename : python/dlmanager/dlmanager/persist_limit.py => third_party/python/dlmanager/dlmanager/persist_limit.py rename : python/dlmanager/doc/Makefile => third_party/python/dlmanager/doc/Makefile rename : python/dlmanager/doc/api.rst => third_party/python/dlmanager/doc/api.rst rename : python/dlmanager/doc/conf.py => third_party/python/dlmanager/doc/conf.py rename : python/dlmanager/doc/index.rst => third_party/python/dlmanager/doc/index.rst rename : python/dlmanager/doc/make.bat => third_party/python/dlmanager/doc/make.bat rename : python/dlmanager/examples/dl_progressbar.py => third_party/python/dlmanager/examples/dl_progressbar.py rename : python/dlmanager/examples/dl_tqdm.py => third_party/python/dlmanager/examples/dl_tqdm.py rename : python/dlmanager/requirements.txt => third_party/python/dlmanager/requirements.txt rename : python/dlmanager/setup.cfg => third_party/python/dlmanager/setup.cfg rename : python/dlmanager/setup.py => third_party/python/dlmanager/setup.py rename : python/dlmanager/test-requirements.txt => third_party/python/dlmanager/test-requirements.txt rename : python/dlmanager/tests/__init__.py => third_party/python/dlmanager/tests/__init__.py rename : python/dlmanager/tests/test_manager.py => third_party/python/dlmanager/tests/test_manager.py rename : python/dlmanager/tests/test_persist_limit.py => third_party/python/dlmanager/tests/test_persist_limit.py rename : python/futures/CHANGES => third_party/python/futures/CHANGES rename : python/futures/LICENSE => third_party/python/futures/LICENSE rename : python/futures/MANIFEST.in => third_party/python/futures/MANIFEST.in rename : python/futures/PKG-INFO => third_party/python/futures/PKG-INFO rename : python/futures/concurrent/__init__.py => third_party/python/futures/concurrent/__init__.py rename : python/futures/concurrent/futures/__init__.py => third_party/python/futures/concurrent/futures/__init__.py rename : python/futures/concurrent/futures/_base.py => third_party/python/futures/concurrent/futures/_base.py rename : python/futures/concurrent/futures/process.py => third_party/python/futures/concurrent/futures/process.py rename : python/futures/concurrent/futures/thread.py => third_party/python/futures/concurrent/futures/thread.py rename : python/futures/crawl.py => third_party/python/futures/crawl.py rename : python/futures/docs/Makefile => third_party/python/futures/docs/Makefile rename : python/futures/docs/conf.py => third_party/python/futures/docs/conf.py rename : python/futures/docs/index.rst => third_party/python/futures/docs/index.rst rename : python/futures/docs/make.bat => third_party/python/futures/docs/make.bat rename : python/futures/futures.egg-info/PKG-INFO => third_party/python/futures/futures.egg-info/PKG-INFO rename : python/futures/futures.egg-info/SOURCES.txt => third_party/python/futures/futures.egg-info/SOURCES.txt rename : python/futures/futures.egg-info/dependency_links.txt => third_party/python/futures/futures.egg-info/dependency_links.txt rename : python/futures/futures.egg-info/not-zip-safe => third_party/python/futures/futures.egg-info/not-zip-safe rename : python/futures/futures.egg-info/pbr.json => third_party/python/futures/futures.egg-info/pbr.json rename : python/futures/futures.egg-info/top_level.txt => third_party/python/futures/futures.egg-info/top_level.txt rename : python/futures/primes.py => third_party/python/futures/primes.py rename : python/futures/setup.cfg => third_party/python/futures/setup.cfg rename : python/futures/setup.py => third_party/python/futures/setup.py rename : python/futures/test_futures.py => third_party/python/futures/test_futures.py rename : python/futures/tox.ini => third_party/python/futures/tox.ini rename : python/gdbpp/gdbpp/__init__.py => third_party/python/gdbpp/gdbpp/__init__.py rename : python/gdbpp/gdbpp/linkedlist.py => third_party/python/gdbpp/gdbpp/linkedlist.py rename : python/gdbpp/gdbpp/owningthread.py => third_party/python/gdbpp/gdbpp/owningthread.py rename : python/gdbpp/gdbpp/smartptr.py => third_party/python/gdbpp/gdbpp/smartptr.py rename : python/gdbpp/gdbpp/string.py => third_party/python/gdbpp/gdbpp/string.py rename : python/gdbpp/gdbpp/tarray.py => third_party/python/gdbpp/gdbpp/tarray.py rename : python/gdbpp/gdbpp/thashtable.py => third_party/python/gdbpp/gdbpp/thashtable.py rename : python/jsmin/jsmin/__init__.py => third_party/python/jsmin/jsmin/__init__.py rename : python/jsmin/jsmin/test.py => third_party/python/jsmin/jsmin/test.py rename : python/jsmin/setup.cfg => third_party/python/jsmin/setup.cfg rename : python/jsmin/setup.py => third_party/python/jsmin/setup.py rename : python/lldbutils/README.txt => third_party/python/lldbutils/README.txt rename : python/lldbutils/lldbutils/__init__.py => third_party/python/lldbutils/lldbutils/__init__.py rename : python/lldbutils/lldbutils/content.py => third_party/python/lldbutils/lldbutils/content.py rename : python/lldbutils/lldbutils/general.py => third_party/python/lldbutils/lldbutils/general.py rename : python/lldbutils/lldbutils/gfx.py => third_party/python/lldbutils/lldbutils/gfx.py rename : python/lldbutils/lldbutils/layout.py => third_party/python/lldbutils/lldbutils/layout.py rename : python/lldbutils/lldbutils/utils.py => third_party/python/lldbutils/lldbutils/utils.py rename : python/mock-1.0.0/LICENSE.txt => third_party/python/mock-1.0.0/LICENSE.txt rename : python/mock-1.0.0/MANIFEST.in => third_party/python/mock-1.0.0/MANIFEST.in rename : python/mock-1.0.0/PKG-INFO => third_party/python/mock-1.0.0/PKG-INFO rename : python/mock-1.0.0/README.txt => third_party/python/mock-1.0.0/README.txt rename : python/mock-1.0.0/docs/changelog.txt => third_party/python/mock-1.0.0/docs/changelog.txt rename : python/mock-1.0.0/docs/compare.txt => third_party/python/mock-1.0.0/docs/compare.txt rename : python/mock-1.0.0/docs/conf.py => third_party/python/mock-1.0.0/docs/conf.py rename : python/mock-1.0.0/docs/examples.txt => third_party/python/mock-1.0.0/docs/examples.txt rename : python/mock-1.0.0/docs/getting-started.txt => third_party/python/mock-1.0.0/docs/getting-started.txt rename : python/mock-1.0.0/docs/helpers.txt => third_party/python/mock-1.0.0/docs/helpers.txt rename : python/mock-1.0.0/docs/index.txt => third_party/python/mock-1.0.0/docs/index.txt rename : python/mock-1.0.0/docs/magicmock.txt => third_party/python/mock-1.0.0/docs/magicmock.txt rename : python/mock-1.0.0/docs/mock.txt => third_party/python/mock-1.0.0/docs/mock.txt rename : python/mock-1.0.0/docs/patch.txt => third_party/python/mock-1.0.0/docs/patch.txt rename : python/mock-1.0.0/docs/sentinel.txt => third_party/python/mock-1.0.0/docs/sentinel.txt rename : python/mock-1.0.0/html/.doctrees/changelog.doctree => third_party/python/mock-1.0.0/html/.doctrees/changelog.doctree rename : python/mock-1.0.0/html/.doctrees/compare.doctree => third_party/python/mock-1.0.0/html/.doctrees/compare.doctree rename : python/mock-1.0.0/html/.doctrees/examples.doctree => third_party/python/mock-1.0.0/html/.doctrees/examples.doctree rename : python/mock-1.0.0/html/.doctrees/getting-started.doctree => third_party/python/mock-1.0.0/html/.doctrees/getting-started.doctree rename : python/mock-1.0.0/html/.doctrees/index.doctree => third_party/python/mock-1.0.0/html/.doctrees/index.doctree rename : python/mock-1.0.0/html/.doctrees/magicmock.doctree => third_party/python/mock-1.0.0/html/.doctrees/magicmock.doctree rename : python/mock-1.0.0/html/.doctrees/mock.doctree => third_party/python/mock-1.0.0/html/.doctrees/mock.doctree rename : python/mock-1.0.0/html/.doctrees/mocksignature.doctree => third_party/python/mock-1.0.0/html/.doctrees/mocksignature.doctree rename : python/mock-1.0.0/html/.doctrees/patch.doctree => third_party/python/mock-1.0.0/html/.doctrees/patch.doctree rename : python/mock-1.0.0/html/.doctrees/sentinel.doctree => third_party/python/mock-1.0.0/html/.doctrees/sentinel.doctree rename : python/mock-1.0.0/html/_sources/changelog.txt => third_party/python/mock-1.0.0/html/_sources/changelog.txt rename : python/mock-1.0.0/html/_sources/compare.txt => third_party/python/mock-1.0.0/html/_sources/compare.txt rename : python/mock-1.0.0/html/_sources/examples.txt => third_party/python/mock-1.0.0/html/_sources/examples.txt rename : python/mock-1.0.0/html/_sources/getting-started.txt => third_party/python/mock-1.0.0/html/_sources/getting-started.txt rename : python/mock-1.0.0/html/_sources/index.txt => third_party/python/mock-1.0.0/html/_sources/index.txt rename : python/mock-1.0.0/html/_sources/magicmock.txt => third_party/python/mock-1.0.0/html/_sources/magicmock.txt rename : python/mock-1.0.0/html/_sources/mock.txt => third_party/python/mock-1.0.0/html/_sources/mock.txt rename : python/mock-1.0.0/html/_sources/mocksignature.txt => third_party/python/mock-1.0.0/html/_sources/mocksignature.txt rename : python/mock-1.0.0/html/_sources/patch.txt => third_party/python/mock-1.0.0/html/_sources/patch.txt rename : python/mock-1.0.0/html/_sources/sentinel.txt => third_party/python/mock-1.0.0/html/_sources/sentinel.txt rename : python/mock-1.0.0/html/_static/adctheme.css => third_party/python/mock-1.0.0/html/_static/adctheme.css rename : python/mock-1.0.0/html/_static/basic.css => third_party/python/mock-1.0.0/html/_static/basic.css rename : python/mock-1.0.0/html/_static/breadcrumb_background.png => third_party/python/mock-1.0.0/html/_static/breadcrumb_background.png rename : python/mock-1.0.0/html/_static/default.css => third_party/python/mock-1.0.0/html/_static/default.css rename : python/mock-1.0.0/html/_static/doctools.js => third_party/python/mock-1.0.0/html/_static/doctools.js rename : python/mock-1.0.0/html/_static/documentation.png => third_party/python/mock-1.0.0/html/_static/documentation.png rename : python/mock-1.0.0/html/_static/file.png => third_party/python/mock-1.0.0/html/_static/file.png rename : python/mock-1.0.0/html/_static/header_sm_mid.png => third_party/python/mock-1.0.0/html/_static/header_sm_mid.png rename : python/mock-1.0.0/html/_static/jquery.js => third_party/python/mock-1.0.0/html/_static/jquery.js rename : python/mock-1.0.0/html/_static/minus.png => third_party/python/mock-1.0.0/html/_static/minus.png rename : python/mock-1.0.0/html/_static/mobile.css => third_party/python/mock-1.0.0/html/_static/mobile.css rename : python/mock-1.0.0/html/_static/plus.png => third_party/python/mock-1.0.0/html/_static/plus.png rename : python/mock-1.0.0/html/_static/pygments.css => third_party/python/mock-1.0.0/html/_static/pygments.css rename : python/mock-1.0.0/html/_static/scrn1.png => third_party/python/mock-1.0.0/html/_static/scrn1.png rename : python/mock-1.0.0/html/_static/scrn2.png => third_party/python/mock-1.0.0/html/_static/scrn2.png rename : python/mock-1.0.0/html/_static/searchfield_leftcap.png => third_party/python/mock-1.0.0/html/_static/searchfield_leftcap.png rename : python/mock-1.0.0/html/_static/searchfield_repeat.png => third_party/python/mock-1.0.0/html/_static/searchfield_repeat.png rename : python/mock-1.0.0/html/_static/searchfield_rightcap.png => third_party/python/mock-1.0.0/html/_static/searchfield_rightcap.png rename : python/mock-1.0.0/html/_static/searchtools.js => third_party/python/mock-1.0.0/html/_static/searchtools.js rename : python/mock-1.0.0/html/_static/sidebar.js => third_party/python/mock-1.0.0/html/_static/sidebar.js rename : python/mock-1.0.0/html/_static/title_background.png => third_party/python/mock-1.0.0/html/_static/title_background.png rename : python/mock-1.0.0/html/_static/toc.js => third_party/python/mock-1.0.0/html/_static/toc.js rename : python/mock-1.0.0/html/_static/triangle_closed.png => third_party/python/mock-1.0.0/html/_static/triangle_closed.png rename : python/mock-1.0.0/html/_static/triangle_left.png => third_party/python/mock-1.0.0/html/_static/triangle_left.png rename : python/mock-1.0.0/html/_static/triangle_open.png => third_party/python/mock-1.0.0/html/_static/triangle_open.png rename : python/mock-1.0.0/html/_static/underscore.js => third_party/python/mock-1.0.0/html/_static/underscore.js rename : python/mock-1.0.0/html/changelog.html => third_party/python/mock-1.0.0/html/changelog.html rename : python/mock-1.0.0/html/compare.html => third_party/python/mock-1.0.0/html/compare.html rename : python/mock-1.0.0/html/examples.html => third_party/python/mock-1.0.0/html/examples.html rename : python/mock-1.0.0/html/genindex.html => third_party/python/mock-1.0.0/html/genindex.html rename : python/mock-1.0.0/html/getting-started.html => third_party/python/mock-1.0.0/html/getting-started.html rename : python/mock-1.0.0/html/index.html => third_party/python/mock-1.0.0/html/index.html rename : python/mock-1.0.0/html/magicmock.html => third_party/python/mock-1.0.0/html/magicmock.html rename : python/mock-1.0.0/html/mock.html => third_party/python/mock-1.0.0/html/mock.html rename : python/mock-1.0.0/html/mocksignature.html => third_party/python/mock-1.0.0/html/mocksignature.html rename : python/mock-1.0.0/html/objects.inv => third_party/python/mock-1.0.0/html/objects.inv rename : python/mock-1.0.0/html/output.txt => third_party/python/mock-1.0.0/html/output.txt rename : python/mock-1.0.0/html/patch.html => third_party/python/mock-1.0.0/html/patch.html rename : python/mock-1.0.0/html/search.html => third_party/python/mock-1.0.0/html/search.html rename : python/mock-1.0.0/html/searchindex.js => third_party/python/mock-1.0.0/html/searchindex.js rename : python/mock-1.0.0/html/sentinel.html => third_party/python/mock-1.0.0/html/sentinel.html rename : python/mock-1.0.0/mock.egg-info/PKG-INFO => third_party/python/mock-1.0.0/mock.egg-info/PKG-INFO rename : python/mock-1.0.0/mock.egg-info/SOURCES.txt => third_party/python/mock-1.0.0/mock.egg-info/SOURCES.txt rename : python/mock-1.0.0/mock.egg-info/dependency_links.txt => third_party/python/mock-1.0.0/mock.egg-info/dependency_links.txt rename : python/mock-1.0.0/mock.egg-info/top_level.txt => third_party/python/mock-1.0.0/mock.egg-info/top_level.txt rename : python/mock-1.0.0/mock.py => third_party/python/mock-1.0.0/mock.py rename : python/mock-1.0.0/setup.cfg => third_party/python/mock-1.0.0/setup.cfg rename : python/mock-1.0.0/setup.py => third_party/python/mock-1.0.0/setup.py rename : python/mock-1.0.0/tests/__init__.py => third_party/python/mock-1.0.0/tests/__init__.py rename : python/mock-1.0.0/tests/_testwith.py => third_party/python/mock-1.0.0/tests/_testwith.py rename : python/mock-1.0.0/tests/support.py => third_party/python/mock-1.0.0/tests/support.py rename : python/mock-1.0.0/tests/support_with.py => third_party/python/mock-1.0.0/tests/support_with.py rename : python/mock-1.0.0/tests/testcallable.py => third_party/python/mock-1.0.0/tests/testcallable.py rename : python/mock-1.0.0/tests/testhelpers.py => third_party/python/mock-1.0.0/tests/testhelpers.py rename : python/mock-1.0.0/tests/testmagicmethods.py => third_party/python/mock-1.0.0/tests/testmagicmethods.py rename : python/mock-1.0.0/tests/testmock.py => third_party/python/mock-1.0.0/tests/testmock.py rename : python/mock-1.0.0/tests/testpatch.py => third_party/python/mock-1.0.0/tests/testpatch.py rename : python/mock-1.0.0/tests/testsentinel.py => third_party/python/mock-1.0.0/tests/testsentinel.py rename : python/mock-1.0.0/tests/testwith.py => third_party/python/mock-1.0.0/tests/testwith.py rename : python/mock-1.0.0/tox.ini => third_party/python/mock-1.0.0/tox.ini rename : python/psutil/CREDITS => third_party/python/psutil/CREDITS rename : python/psutil/HISTORY.rst => third_party/python/psutil/HISTORY.rst rename : python/psutil/INSTALL.rst => third_party/python/psutil/INSTALL.rst rename : python/psutil/LICENSE => third_party/python/psutil/LICENSE rename : python/psutil/MANIFEST.in => third_party/python/psutil/MANIFEST.in rename : python/psutil/Makefile => third_party/python/psutil/Makefile rename : python/psutil/PKG-INFO => third_party/python/psutil/PKG-INFO rename : python/psutil/README.rst => third_party/python/psutil/README.rst rename : python/psutil/TODO => third_party/python/psutil/TODO rename : python/psutil/docs/Makefile => third_party/python/psutil/docs/Makefile rename : python/psutil/docs/README => third_party/python/psutil/docs/README rename : python/psutil/docs/_static/copybutton.js => third_party/python/psutil/docs/_static/copybutton.js rename : python/psutil/docs/_static/favicon.ico => third_party/python/psutil/docs/_static/favicon.ico rename : python/psutil/docs/_static/logo.png => third_party/python/psutil/docs/_static/logo.png rename : python/psutil/docs/_static/sidebar.js => third_party/python/psutil/docs/_static/sidebar.js rename : python/psutil/docs/_template/globaltoc.html => third_party/python/psutil/docs/_template/globaltoc.html rename : python/psutil/docs/_template/indexcontent.html => third_party/python/psutil/docs/_template/indexcontent.html rename : python/psutil/docs/_template/indexsidebar.html => third_party/python/psutil/docs/_template/indexsidebar.html rename : python/psutil/docs/_template/page.html => third_party/python/psutil/docs/_template/page.html rename : python/psutil/docs/_themes/pydoctheme/static/pydoctheme.css => third_party/python/psutil/docs/_themes/pydoctheme/static/pydoctheme.css rename : python/psutil/docs/_themes/pydoctheme/theme.conf => third_party/python/psutil/docs/_themes/pydoctheme/theme.conf rename : python/psutil/docs/conf.py => third_party/python/psutil/docs/conf.py rename : python/psutil/docs/index.rst => third_party/python/psutil/docs/index.rst rename : python/psutil/docs/make.bat => third_party/python/psutil/docs/make.bat rename : python/psutil/docs/xxx => third_party/python/psutil/docs/xxx rename : python/psutil/examples/disk_usage.py => third_party/python/psutil/examples/disk_usage.py rename : python/psutil/examples/free.py => third_party/python/psutil/examples/free.py rename : python/psutil/examples/ifconfig.py => third_party/python/psutil/examples/ifconfig.py rename : python/psutil/examples/iotop.py => third_party/python/psutil/examples/iotop.py rename : python/psutil/examples/killall.py => third_party/python/psutil/examples/killall.py rename : python/psutil/examples/meminfo.py => third_party/python/psutil/examples/meminfo.py rename : python/psutil/examples/netstat.py => third_party/python/psutil/examples/netstat.py rename : python/psutil/examples/nettop.py => third_party/python/psutil/examples/nettop.py rename : python/psutil/examples/pidof.py => third_party/python/psutil/examples/pidof.py rename : python/psutil/examples/pmap.py => third_party/python/psutil/examples/pmap.py rename : python/psutil/examples/process_detail.py => third_party/python/psutil/examples/process_detail.py rename : python/psutil/examples/ps.py => third_party/python/psutil/examples/ps.py rename : python/psutil/examples/pstree.py => third_party/python/psutil/examples/pstree.py rename : python/psutil/examples/top.py => third_party/python/psutil/examples/top.py rename : python/psutil/examples/who.py => third_party/python/psutil/examples/who.py rename : python/psutil/make.bat => third_party/python/psutil/make.bat rename : python/psutil/psutil.egg-info/PKG-INFO => third_party/python/psutil/psutil.egg-info/PKG-INFO rename : python/psutil/psutil.egg-info/SOURCES.txt => third_party/python/psutil/psutil.egg-info/SOURCES.txt rename : python/psutil/psutil.egg-info/dependency_links.txt => third_party/python/psutil/psutil.egg-info/dependency_links.txt rename : python/psutil/psutil.egg-info/top_level.txt => third_party/python/psutil/psutil.egg-info/top_level.txt rename : python/psutil/psutil/__init__.py => third_party/python/psutil/psutil/__init__.py rename : python/psutil/psutil/_common.py => third_party/python/psutil/psutil/_common.py rename : python/psutil/psutil/_compat.py => third_party/python/psutil/psutil/_compat.py rename : python/psutil/psutil/_psbsd.py => third_party/python/psutil/psutil/_psbsd.py rename : python/psutil/psutil/_pslinux.py => third_party/python/psutil/psutil/_pslinux.py rename : python/psutil/psutil/_psosx.py => third_party/python/psutil/psutil/_psosx.py rename : python/psutil/psutil/_psposix.py => third_party/python/psutil/psutil/_psposix.py rename : python/psutil/psutil/_pssunos.py => third_party/python/psutil/psutil/_pssunos.py rename : python/psutil/psutil/_psutil_bsd.c => third_party/python/psutil/psutil/_psutil_bsd.c rename : python/psutil/psutil/_psutil_bsd.h => third_party/python/psutil/psutil/_psutil_bsd.h rename : python/psutil/psutil/_psutil_common.c => third_party/python/psutil/psutil/_psutil_common.c rename : python/psutil/psutil/_psutil_common.h => third_party/python/psutil/psutil/_psutil_common.h rename : python/psutil/psutil/_psutil_linux.c => third_party/python/psutil/psutil/_psutil_linux.c rename : python/psutil/psutil/_psutil_linux.h => third_party/python/psutil/psutil/_psutil_linux.h rename : python/psutil/psutil/_psutil_osx.c => third_party/python/psutil/psutil/_psutil_osx.c rename : python/psutil/psutil/_psutil_osx.h => third_party/python/psutil/psutil/_psutil_osx.h rename : python/psutil/psutil/_psutil_posix.c => third_party/python/psutil/psutil/_psutil_posix.c rename : python/psutil/psutil/_psutil_posix.h => third_party/python/psutil/psutil/_psutil_posix.h rename : python/psutil/psutil/_psutil_sunos.c => third_party/python/psutil/psutil/_psutil_sunos.c rename : python/psutil/psutil/_psutil_sunos.h => third_party/python/psutil/psutil/_psutil_sunos.h rename : python/psutil/psutil/_psutil_windows.c => third_party/python/psutil/psutil/_psutil_windows.c rename : python/psutil/psutil/_psutil_windows.h => third_party/python/psutil/psutil/_psutil_windows.h rename : python/psutil/psutil/_pswindows.py => third_party/python/psutil/psutil/_pswindows.py rename : python/psutil/psutil/arch/bsd/process_info.c => third_party/python/psutil/psutil/arch/bsd/process_info.c rename : python/psutil/psutil/arch/bsd/process_info.h => third_party/python/psutil/psutil/arch/bsd/process_info.h rename : python/psutil/psutil/arch/osx/process_info.c => third_party/python/psutil/psutil/arch/osx/process_info.c rename : python/psutil/psutil/arch/osx/process_info.h => third_party/python/psutil/psutil/arch/osx/process_info.h rename : python/psutil/psutil/arch/windows/glpi.h => third_party/python/psutil/psutil/arch/windows/glpi.h rename : python/psutil/psutil/arch/windows/inet_ntop.c => third_party/python/psutil/psutil/arch/windows/inet_ntop.c rename : python/psutil/psutil/arch/windows/inet_ntop.h => third_party/python/psutil/psutil/arch/windows/inet_ntop.h rename : python/psutil/psutil/arch/windows/ntextapi.h => third_party/python/psutil/psutil/arch/windows/ntextapi.h rename : python/psutil/psutil/arch/windows/process_handles.c => third_party/python/psutil/psutil/arch/windows/process_handles.c rename : python/psutil/psutil/arch/windows/process_handles.h => third_party/python/psutil/psutil/arch/windows/process_handles.h rename : python/psutil/psutil/arch/windows/process_info.c => third_party/python/psutil/psutil/arch/windows/process_info.c rename : python/psutil/psutil/arch/windows/process_info.h => third_party/python/psutil/psutil/arch/windows/process_info.h rename : python/psutil/psutil/arch/windows/security.c => third_party/python/psutil/psutil/arch/windows/security.c rename : python/psutil/psutil/arch/windows/security.h => third_party/python/psutil/psutil/arch/windows/security.h rename : python/psutil/setup.cfg => third_party/python/psutil/setup.cfg rename : python/psutil/setup.py => third_party/python/psutil/setup.py rename : python/psutil/test/README.rst => third_party/python/psutil/test/README.rst rename : python/psutil/test/_bsd.py => third_party/python/psutil/test/_bsd.py rename : python/psutil/test/_linux.py => third_party/python/psutil/test/_linux.py rename : python/psutil/test/_osx.py => third_party/python/psutil/test/_osx.py rename : python/psutil/test/_posix.py => third_party/python/psutil/test/_posix.py rename : python/psutil/test/_sunos.py => third_party/python/psutil/test/_sunos.py rename : python/psutil/test/_windows.py => third_party/python/psutil/test/_windows.py rename : python/psutil/test/test_memory_leaks.py => third_party/python/psutil/test/test_memory_leaks.py rename : python/psutil/test/test_psutil.py => third_party/python/psutil/test/test_psutil.py rename : python/psutil/tox.ini => third_party/python/psutil/tox.ini rename : python/py/AUTHORS => third_party/python/py/AUTHORS rename : python/py/LICENSE => third_party/python/py/LICENSE rename : python/py/MANIFEST.in => third_party/python/py/MANIFEST.in rename : python/py/PKG-INFO => third_party/python/py/PKG-INFO rename : python/py/README.txt => third_party/python/py/README.txt rename : python/py/py/__init__.py => third_party/python/py/py/__init__.py rename : python/py/py/__metainfo.py => third_party/python/py/py/__metainfo.py rename : python/py/py/_apipkg.py => third_party/python/py/py/_apipkg.py rename : python/py/py/_builtin.py => third_party/python/py/py/_builtin.py rename : python/py/py/_code/__init__.py => third_party/python/py/py/_code/__init__.py rename : python/py/py/_code/_assertionnew.py => third_party/python/py/py/_code/_assertionnew.py rename : python/py/py/_code/_assertionold.py => third_party/python/py/py/_code/_assertionold.py rename : python/py/py/_code/_py2traceback.py => third_party/python/py/py/_code/_py2traceback.py rename : python/py/py/_code/assertion.py => third_party/python/py/py/_code/assertion.py rename : python/py/py/_code/code.py => third_party/python/py/py/_code/code.py rename : python/py/py/_code/source.py => third_party/python/py/py/_code/source.py rename : python/py/py/_error.py => third_party/python/py/py/_error.py rename : python/py/py/_iniconfig.py => third_party/python/py/py/_iniconfig.py rename : python/py/py/_io/__init__.py => third_party/python/py/py/_io/__init__.py rename : python/py/py/_io/capture.py => third_party/python/py/py/_io/capture.py rename : python/py/py/_io/saferepr.py => third_party/python/py/py/_io/saferepr.py rename : python/py/py/_io/terminalwriter.py => third_party/python/py/py/_io/terminalwriter.py rename : python/py/py/_log/__init__.py => third_party/python/py/py/_log/__init__.py rename : python/py/py/_log/log.py => third_party/python/py/py/_log/log.py rename : python/py/py/_log/warning.py => third_party/python/py/py/_log/warning.py rename : python/py/py/_path/__init__.py => third_party/python/py/py/_path/__init__.py rename : python/py/py/_path/cacheutil.py => third_party/python/py/py/_path/cacheutil.py rename : python/py/py/_path/common.py => third_party/python/py/py/_path/common.py rename : python/py/py/_path/local.py => third_party/python/py/py/_path/local.py rename : python/py/py/_path/svnurl.py => third_party/python/py/py/_path/svnurl.py rename : python/py/py/_path/svnwc.py => third_party/python/py/py/_path/svnwc.py rename : python/py/py/_process/__init__.py => third_party/python/py/py/_process/__init__.py rename : python/py/py/_process/cmdexec.py => third_party/python/py/py/_process/cmdexec.py rename : python/py/py/_process/forkedfunc.py => third_party/python/py/py/_process/forkedfunc.py rename : python/py/py/_process/killproc.py => third_party/python/py/py/_process/killproc.py rename : python/py/py/_std.py => third_party/python/py/py/_std.py rename : python/py/py/_xmlgen.py => third_party/python/py/py/_xmlgen.py rename : python/py/py/test.py => third_party/python/py/py/test.py rename : python/py/setup.cfg => third_party/python/py/setup.cfg rename : python/py/setup.py => third_party/python/py/setup.py rename : python/pyasn1-modules/CHANGES => third_party/python/pyasn1-modules/CHANGES rename : python/pyasn1-modules/LICENSE => third_party/python/pyasn1-modules/LICENSE rename : python/pyasn1-modules/MANIFEST.in => third_party/python/pyasn1-modules/MANIFEST.in rename : python/pyasn1-modules/PKG-INFO => third_party/python/pyasn1-modules/PKG-INFO rename : python/pyasn1-modules/README => third_party/python/pyasn1-modules/README rename : python/pyasn1-modules/pyasn1_modules.egg-info/PKG-INFO => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/PKG-INFO rename : python/pyasn1-modules/pyasn1_modules.egg-info/SOURCES.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/SOURCES.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/dependency_links.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/dependency_links.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/requires.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/requires.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/top_level.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/top_level.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/zip-safe => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/zip-safe rename : python/pyasn1-modules/pyasn1_modules/__init__.py => third_party/python/pyasn1-modules/pyasn1_modules/__init__.py rename : python/pyasn1-modules/pyasn1_modules/pem.py => third_party/python/pyasn1-modules/pyasn1_modules/pem.py rename : python/pyasn1-modules/pyasn1_modules/pkcs12.py => third_party/python/pyasn1-modules/pyasn1_modules/pkcs12.py rename : python/pyasn1-modules/pyasn1_modules/rfc1155.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1155.py rename : python/pyasn1-modules/pyasn1_modules/rfc1157.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1157.py rename : python/pyasn1-modules/pyasn1_modules/rfc1901.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1901.py rename : python/pyasn1-modules/pyasn1_modules/rfc1902.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1902.py rename : python/pyasn1-modules/pyasn1_modules/rfc1905.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1905.py rename : python/pyasn1-modules/pyasn1_modules/rfc2251.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2251.py rename : python/pyasn1-modules/pyasn1_modules/rfc2314.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2314.py rename : python/pyasn1-modules/pyasn1_modules/rfc2315.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2315.py rename : python/pyasn1-modules/pyasn1_modules/rfc2437.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2437.py rename : python/pyasn1-modules/pyasn1_modules/rfc2459.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2459.py rename : python/pyasn1-modules/pyasn1_modules/rfc2511.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2511.py rename : python/pyasn1-modules/pyasn1_modules/rfc2560.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2560.py rename : python/pyasn1-modules/pyasn1_modules/rfc3412.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc3412.py rename : python/pyasn1-modules/pyasn1_modules/rfc3414.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc3414.py rename : python/pyasn1-modules/pyasn1_modules/rfc3447.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc3447.py rename : python/pyasn1-modules/pyasn1_modules/rfc4210.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc4210.py rename : python/pyasn1-modules/pyasn1_modules/rfc5208.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc5208.py rename : python/pyasn1-modules/setup.cfg => third_party/python/pyasn1-modules/setup.cfg rename : python/pyasn1-modules/setup.py => third_party/python/pyasn1-modules/setup.py rename : python/pyasn1-modules/test/cmp.sh => third_party/python/pyasn1-modules/test/cmp.sh rename : python/pyasn1-modules/test/crl.sh => third_party/python/pyasn1-modules/test/crl.sh rename : python/pyasn1-modules/test/crmf.sh => third_party/python/pyasn1-modules/test/crmf.sh rename : python/pyasn1-modules/test/ocspreq.sh => third_party/python/pyasn1-modules/test/ocspreq.sh rename : python/pyasn1-modules/test/ocsprsp.sh => third_party/python/pyasn1-modules/test/ocsprsp.sh rename : python/pyasn1-modules/test/pkcs1.sh => third_party/python/pyasn1-modules/test/pkcs1.sh rename : python/pyasn1-modules/test/pkcs10.sh => third_party/python/pyasn1-modules/test/pkcs10.sh rename : python/pyasn1-modules/test/pkcs7.sh => third_party/python/pyasn1-modules/test/pkcs7.sh rename : python/pyasn1-modules/test/pkcs8.sh => third_party/python/pyasn1-modules/test/pkcs8.sh rename : python/pyasn1-modules/test/x509dump.sh => third_party/python/pyasn1-modules/test/x509dump.sh rename : python/pyasn1-modules/tools/cmpdump.py => third_party/python/pyasn1-modules/tools/cmpdump.py rename : python/pyasn1-modules/tools/crldump.py => third_party/python/pyasn1-modules/tools/crldump.py rename : python/pyasn1-modules/tools/crmfdump.py => third_party/python/pyasn1-modules/tools/crmfdump.py rename : python/pyasn1-modules/tools/ocspclient.py => third_party/python/pyasn1-modules/tools/ocspclient.py rename : python/pyasn1-modules/tools/ocspreqdump.py => third_party/python/pyasn1-modules/tools/ocspreqdump.py rename : python/pyasn1-modules/tools/ocsprspdump.py => third_party/python/pyasn1-modules/tools/ocsprspdump.py rename : python/pyasn1-modules/tools/ocspserver.py => third_party/python/pyasn1-modules/tools/ocspserver.py rename : python/pyasn1-modules/tools/pkcs10dump.py => third_party/python/pyasn1-modules/tools/pkcs10dump.py rename : python/pyasn1-modules/tools/pkcs1dump.py => third_party/python/pyasn1-modules/tools/pkcs1dump.py rename : python/pyasn1-modules/tools/pkcs7dump.py => third_party/python/pyasn1-modules/tools/pkcs7dump.py rename : python/pyasn1-modules/tools/pkcs8dump.py => third_party/python/pyasn1-modules/tools/pkcs8dump.py rename : python/pyasn1-modules/tools/snmpget.py => third_party/python/pyasn1-modules/tools/snmpget.py rename : python/pyasn1-modules/tools/x509dump.py => third_party/python/pyasn1-modules/tools/x509dump.py rename : python/pyasn1/CHANGES => third_party/python/pyasn1/CHANGES rename : python/pyasn1/LICENSE => third_party/python/pyasn1/LICENSE rename : python/pyasn1/MANIFEST.in => third_party/python/pyasn1/MANIFEST.in rename : python/pyasn1/PKG-INFO => third_party/python/pyasn1/PKG-INFO rename : python/pyasn1/README => third_party/python/pyasn1/README rename : python/pyasn1/THANKS => third_party/python/pyasn1/THANKS rename : python/pyasn1/TODO => third_party/python/pyasn1/TODO rename : python/pyasn1/doc/codecs.html => third_party/python/pyasn1/doc/codecs.html rename : python/pyasn1/doc/constraints.html => third_party/python/pyasn1/doc/constraints.html rename : python/pyasn1/doc/constructed.html => third_party/python/pyasn1/doc/constructed.html rename : python/pyasn1/doc/intro.html => third_party/python/pyasn1/doc/intro.html rename : python/pyasn1/doc/pyasn1-tutorial.html => third_party/python/pyasn1/doc/pyasn1-tutorial.html rename : python/pyasn1/doc/scalar.html => third_party/python/pyasn1/doc/scalar.html rename : python/pyasn1/doc/tagging.html => third_party/python/pyasn1/doc/tagging.html rename : python/pyasn1/pyasn1.egg-info/PKG-INFO => third_party/python/pyasn1/pyasn1.egg-info/PKG-INFO rename : python/pyasn1/pyasn1.egg-info/SOURCES.txt => third_party/python/pyasn1/pyasn1.egg-info/SOURCES.txt rename : python/pyasn1/pyasn1.egg-info/dependency_links.txt => third_party/python/pyasn1/pyasn1.egg-info/dependency_links.txt rename : python/pyasn1/pyasn1.egg-info/top_level.txt => third_party/python/pyasn1/pyasn1.egg-info/top_level.txt rename : python/pyasn1/pyasn1.egg-info/zip-safe => third_party/python/pyasn1/pyasn1.egg-info/zip-safe rename : python/pyasn1/pyasn1/__init__.py => third_party/python/pyasn1/pyasn1/__init__.py rename : python/pyasn1/pyasn1/codec/__init__.py => third_party/python/pyasn1/pyasn1/codec/__init__.py rename : python/pyasn1/pyasn1/codec/ber/__init__.py => third_party/python/pyasn1/pyasn1/codec/ber/__init__.py rename : python/pyasn1/pyasn1/codec/ber/decoder.py => third_party/python/pyasn1/pyasn1/codec/ber/decoder.py rename : python/pyasn1/pyasn1/codec/ber/encoder.py => third_party/python/pyasn1/pyasn1/codec/ber/encoder.py rename : python/pyasn1/pyasn1/codec/ber/eoo.py => third_party/python/pyasn1/pyasn1/codec/ber/eoo.py rename : python/pyasn1/pyasn1/codec/cer/__init__.py => third_party/python/pyasn1/pyasn1/codec/cer/__init__.py rename : python/pyasn1/pyasn1/codec/cer/decoder.py => third_party/python/pyasn1/pyasn1/codec/cer/decoder.py rename : python/pyasn1/pyasn1/codec/cer/encoder.py => third_party/python/pyasn1/pyasn1/codec/cer/encoder.py rename : python/pyasn1/pyasn1/codec/der/__init__.py => third_party/python/pyasn1/pyasn1/codec/der/__init__.py rename : python/pyasn1/pyasn1/codec/der/decoder.py => third_party/python/pyasn1/pyasn1/codec/der/decoder.py rename : python/pyasn1/pyasn1/codec/der/encoder.py => third_party/python/pyasn1/pyasn1/codec/der/encoder.py rename : python/pyasn1/pyasn1/compat/__init__.py => third_party/python/pyasn1/pyasn1/compat/__init__.py rename : python/pyasn1/pyasn1/compat/octets.py => third_party/python/pyasn1/pyasn1/compat/octets.py rename : python/pyasn1/pyasn1/debug.py => third_party/python/pyasn1/pyasn1/debug.py rename : python/pyasn1/pyasn1/error.py => third_party/python/pyasn1/pyasn1/error.py rename : python/pyasn1/pyasn1/type/__init__.py => third_party/python/pyasn1/pyasn1/type/__init__.py rename : python/pyasn1/pyasn1/type/base.py => third_party/python/pyasn1/pyasn1/type/base.py rename : python/pyasn1/pyasn1/type/char.py => third_party/python/pyasn1/pyasn1/type/char.py rename : python/pyasn1/pyasn1/type/constraint.py => third_party/python/pyasn1/pyasn1/type/constraint.py rename : python/pyasn1/pyasn1/type/error.py => third_party/python/pyasn1/pyasn1/type/error.py rename : python/pyasn1/pyasn1/type/namedtype.py => third_party/python/pyasn1/pyasn1/type/namedtype.py rename : python/pyasn1/pyasn1/type/namedval.py => third_party/python/pyasn1/pyasn1/type/namedval.py rename : python/pyasn1/pyasn1/type/tag.py => third_party/python/pyasn1/pyasn1/type/tag.py rename : python/pyasn1/pyasn1/type/tagmap.py => third_party/python/pyasn1/pyasn1/type/tagmap.py rename : python/pyasn1/pyasn1/type/univ.py => third_party/python/pyasn1/pyasn1/type/univ.py rename : python/pyasn1/pyasn1/type/useful.py => third_party/python/pyasn1/pyasn1/type/useful.py rename : python/pyasn1/setup.cfg => third_party/python/pyasn1/setup.cfg rename : python/pyasn1/setup.py => third_party/python/pyasn1/setup.py rename : python/pyasn1/test/__init__.py => third_party/python/pyasn1/test/__init__.py rename : python/pyasn1/test/codec/__init__.py => third_party/python/pyasn1/test/codec/__init__.py rename : python/pyasn1/test/codec/ber/__init__.py => third_party/python/pyasn1/test/codec/ber/__init__.py rename : python/pyasn1/test/codec/ber/suite.py => third_party/python/pyasn1/test/codec/ber/suite.py rename : python/pyasn1/test/codec/ber/test_decoder.py => third_party/python/pyasn1/test/codec/ber/test_decoder.py rename : python/pyasn1/test/codec/ber/test_encoder.py => third_party/python/pyasn1/test/codec/ber/test_encoder.py rename : python/pyasn1/test/codec/cer/__init__.py => third_party/python/pyasn1/test/codec/cer/__init__.py rename : python/pyasn1/test/codec/cer/suite.py => third_party/python/pyasn1/test/codec/cer/suite.py rename : python/pyasn1/test/codec/cer/test_decoder.py => third_party/python/pyasn1/test/codec/cer/test_decoder.py rename : python/pyasn1/test/codec/cer/test_encoder.py => third_party/python/pyasn1/test/codec/cer/test_encoder.py rename : python/pyasn1/test/codec/der/__init__.py => third_party/python/pyasn1/test/codec/der/__init__.py rename : python/pyasn1/test/codec/der/suite.py => third_party/python/pyasn1/test/codec/der/suite.py rename : python/pyasn1/test/codec/der/test_decoder.py => third_party/python/pyasn1/test/codec/der/test_decoder.py rename : python/pyasn1/test/codec/der/test_encoder.py => third_party/python/pyasn1/test/codec/der/test_encoder.py rename : python/pyasn1/test/codec/suite.py => third_party/python/pyasn1/test/codec/suite.py rename : python/pyasn1/test/suite.py => third_party/python/pyasn1/test/suite.py rename : python/pyasn1/test/type/__init__.py => third_party/python/pyasn1/test/type/__init__.py rename : python/pyasn1/test/type/suite.py => third_party/python/pyasn1/test/type/suite.py rename : python/pyasn1/test/type/test_constraint.py => third_party/python/pyasn1/test/type/test_constraint.py rename : python/pyasn1/test/type/test_namedtype.py => third_party/python/pyasn1/test/type/test_namedtype.py rename : python/pyasn1/test/type/test_tag.py => third_party/python/pyasn1/test/type/test_tag.py rename : python/pyasn1/test/type/test_univ.py => third_party/python/pyasn1/test/type/test_univ.py rename : python/pylru/pylru.py => third_party/python/pylru/pylru.py rename : python/pylru/test.py => third_party/python/pylru/test.py rename : python/pystache/.gitignore => third_party/python/pystache/.gitignore rename : python/pystache/.gitmodules => third_party/python/pystache/.gitmodules rename : python/pystache/.travis.yml => third_party/python/pystache/.travis.yml rename : python/pystache/HISTORY.md => third_party/python/pystache/HISTORY.md rename : python/pystache/LICENSE => third_party/python/pystache/LICENSE rename : python/pystache/MANIFEST.in => third_party/python/pystache/MANIFEST.in rename : python/pystache/README.md => third_party/python/pystache/README.md rename : python/pystache/TODO.md => third_party/python/pystache/TODO.md rename : python/pystache/gh/images/logo_phillips.png => third_party/python/pystache/gh/images/logo_phillips.png rename : python/pystache/pystache/__init__.py => third_party/python/pystache/pystache/__init__.py rename : python/pystache/pystache/commands/__init__.py => third_party/python/pystache/pystache/commands/__init__.py rename : python/pystache/pystache/commands/render.py => third_party/python/pystache/pystache/commands/render.py rename : python/pystache/pystache/commands/test.py => third_party/python/pystache/pystache/commands/test.py rename : python/pystache/pystache/common.py => third_party/python/pystache/pystache/common.py rename : python/pystache/pystache/context.py => third_party/python/pystache/pystache/context.py rename : python/pystache/pystache/defaults.py => third_party/python/pystache/pystache/defaults.py rename : python/pystache/pystache/init.py => third_party/python/pystache/pystache/init.py rename : python/pystache/pystache/loader.py => third_party/python/pystache/pystache/loader.py rename : python/pystache/pystache/locator.py => third_party/python/pystache/pystache/locator.py rename : python/pystache/pystache/parsed.py => third_party/python/pystache/pystache/parsed.py rename : python/pystache/pystache/parser.py => third_party/python/pystache/pystache/parser.py rename : python/pystache/pystache/renderengine.py => third_party/python/pystache/pystache/renderengine.py rename : python/pystache/pystache/renderer.py => third_party/python/pystache/pystache/renderer.py rename : python/pystache/pystache/specloader.py => third_party/python/pystache/pystache/specloader.py rename : python/pystache/pystache/template_spec.py => third_party/python/pystache/pystache/template_spec.py rename : python/pystache/setup.py => third_party/python/pystache/setup.py rename : python/pystache/setup_description.rst => third_party/python/pystache/setup_description.rst rename : python/pystache/test_pystache.py => third_party/python/pystache/test_pystache.py rename : python/pystache/tox.ini => third_party/python/pystache/tox.ini rename : python/pytest/.coveragerc => third_party/python/pytest/.coveragerc rename : python/pytest/AUTHORS => third_party/python/pytest/AUTHORS rename : python/pytest/LICENSE => third_party/python/pytest/LICENSE rename : python/pytest/MANIFEST.in => third_party/python/pytest/MANIFEST.in rename : python/pytest/PKG-INFO => third_party/python/pytest/PKG-INFO rename : python/pytest/README.rst => third_party/python/pytest/README.rst rename : python/pytest/_pytest/__init__.py => third_party/python/pytest/_pytest/__init__.py rename : python/pytest/_pytest/_argcomplete.py => third_party/python/pytest/_pytest/_argcomplete.py rename : python/pytest/_pytest/_code/__init__.py => third_party/python/pytest/_pytest/_code/__init__.py rename : python/pytest/_pytest/_code/_py2traceback.py => third_party/python/pytest/_pytest/_code/_py2traceback.py rename : python/pytest/_pytest/_code/code.py => third_party/python/pytest/_pytest/_code/code.py rename : python/pytest/_pytest/_code/source.py => third_party/python/pytest/_pytest/_code/source.py rename : python/pytest/_pytest/_pluggy.py => third_party/python/pytest/_pytest/_pluggy.py rename : python/pytest/_pytest/assertion/__init__.py => third_party/python/pytest/_pytest/assertion/__init__.py rename : python/pytest/_pytest/assertion/reinterpret.py => third_party/python/pytest/_pytest/assertion/reinterpret.py rename : python/pytest/_pytest/assertion/rewrite.py => third_party/python/pytest/_pytest/assertion/rewrite.py rename : python/pytest/_pytest/assertion/util.py => third_party/python/pytest/_pytest/assertion/util.py rename : python/pytest/_pytest/cacheprovider.py => third_party/python/pytest/_pytest/cacheprovider.py rename : python/pytest/_pytest/capture.py => third_party/python/pytest/_pytest/capture.py rename : python/pytest/_pytest/config.py => third_party/python/pytest/_pytest/config.py rename : python/pytest/_pytest/doctest.py => third_party/python/pytest/_pytest/doctest.py rename : python/pytest/_pytest/genscript.py => third_party/python/pytest/_pytest/genscript.py rename : python/pytest/_pytest/helpconfig.py => third_party/python/pytest/_pytest/helpconfig.py rename : python/pytest/_pytest/hookspec.py => third_party/python/pytest/_pytest/hookspec.py rename : python/pytest/_pytest/junitxml.py => third_party/python/pytest/_pytest/junitxml.py rename : python/pytest/_pytest/main.py => third_party/python/pytest/_pytest/main.py rename : python/pytest/_pytest/mark.py => third_party/python/pytest/_pytest/mark.py rename : python/pytest/_pytest/monkeypatch.py => third_party/python/pytest/_pytest/monkeypatch.py rename : python/pytest/_pytest/nose.py => third_party/python/pytest/_pytest/nose.py rename : python/pytest/_pytest/pastebin.py => third_party/python/pytest/_pytest/pastebin.py rename : python/pytest/_pytest/pdb.py => third_party/python/pytest/_pytest/pdb.py rename : python/pytest/_pytest/pytester.py => third_party/python/pytest/_pytest/pytester.py rename : python/pytest/_pytest/python.py => third_party/python/pytest/_pytest/python.py rename : python/pytest/_pytest/recwarn.py => third_party/python/pytest/_pytest/recwarn.py rename : python/pytest/_pytest/resultlog.py => third_party/python/pytest/_pytest/resultlog.py rename : python/pytest/_pytest/runner.py => third_party/python/pytest/_pytest/runner.py rename : python/pytest/_pytest/skipping.py => third_party/python/pytest/_pytest/skipping.py rename : python/pytest/_pytest/standalonetemplate.py => third_party/python/pytest/_pytest/standalonetemplate.py rename : python/pytest/_pytest/terminal.py => third_party/python/pytest/_pytest/terminal.py rename : python/pytest/_pytest/tmpdir.py => third_party/python/pytest/_pytest/tmpdir.py rename : python/pytest/_pytest/unittest.py => third_party/python/pytest/_pytest/unittest.py rename : python/pytest/_pytest/vendored_packages/README.md => third_party/python/pytest/_pytest/vendored_packages/README.md rename : python/pytest/_pytest/vendored_packages/__init__.py => third_party/python/pytest/_pytest/vendored_packages/__init__.py rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/DESCRIPTION.rst => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/DESCRIPTION.rst rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/METADATA => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/METADATA rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/RECORD => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/RECORD rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/WHEEL => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/WHEEL rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/metadata.json => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/metadata.json rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/pbr.json => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/pbr.json rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/top_level.txt => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/top_level.txt rename : python/pytest/_pytest/vendored_packages/pluggy.py => third_party/python/pytest/_pytest/vendored_packages/pluggy.py rename : python/pytest/pytest.py => third_party/python/pytest/pytest.py rename : python/pytest/setup.cfg => third_party/python/pytest/setup.cfg rename : python/pytest/setup.py => third_party/python/pytest/setup.py rename : python/pytoml/PKG-INFO => third_party/python/pytoml/PKG-INFO rename : python/pytoml/pytoml/__init__.py => third_party/python/pytoml/pytoml/__init__.py rename : python/pytoml/pytoml/core.py => third_party/python/pytoml/pytoml/core.py rename : python/pytoml/pytoml/parser.py => third_party/python/pytoml/pytoml/parser.py rename : python/pytoml/pytoml/writer.py => third_party/python/pytoml/pytoml/writer.py rename : python/pytoml/setup.cfg => third_party/python/pytoml/setup.cfg rename : python/pytoml/setup.py => third_party/python/pytoml/setup.py rename : python/pytoml/test/test.py => third_party/python/pytoml/test/test.py rename : python/pyyaml/CHANGES => third_party/python/pyyaml/CHANGES rename : python/pyyaml/LICENSE => third_party/python/pyyaml/LICENSE rename : python/pyyaml/PKG-INFO => third_party/python/pyyaml/PKG-INFO rename : python/pyyaml/README => third_party/python/pyyaml/README rename : python/pyyaml/examples/pygments-lexer/example.yaml => third_party/python/pyyaml/examples/pygments-lexer/example.yaml rename : python/pyyaml/examples/pygments-lexer/yaml.py => third_party/python/pyyaml/examples/pygments-lexer/yaml.py rename : python/pyyaml/examples/yaml-highlight/yaml_hl.cfg => third_party/python/pyyaml/examples/yaml-highlight/yaml_hl.cfg rename : python/pyyaml/examples/yaml-highlight/yaml_hl.py => third_party/python/pyyaml/examples/yaml-highlight/yaml_hl.py rename : python/pyyaml/ext/_yaml.c => third_party/python/pyyaml/ext/_yaml.c rename : python/pyyaml/ext/_yaml.h => third_party/python/pyyaml/ext/_yaml.h rename : python/pyyaml/ext/_yaml.pxd => third_party/python/pyyaml/ext/_yaml.pxd rename : python/pyyaml/ext/_yaml.pyx => third_party/python/pyyaml/ext/_yaml.pyx rename : python/pyyaml/lib/yaml/__init__.py => third_party/python/pyyaml/lib/yaml/__init__.py rename : python/pyyaml/lib/yaml/composer.py => third_party/python/pyyaml/lib/yaml/composer.py rename : python/pyyaml/lib/yaml/constructor.py => third_party/python/pyyaml/lib/yaml/constructor.py rename : python/pyyaml/lib/yaml/cyaml.py => third_party/python/pyyaml/lib/yaml/cyaml.py rename : python/pyyaml/lib/yaml/dumper.py => third_party/python/pyyaml/lib/yaml/dumper.py rename : python/pyyaml/lib/yaml/emitter.py => third_party/python/pyyaml/lib/yaml/emitter.py rename : python/pyyaml/lib/yaml/error.py => third_party/python/pyyaml/lib/yaml/error.py rename : python/pyyaml/lib/yaml/events.py => third_party/python/pyyaml/lib/yaml/events.py rename : python/pyyaml/lib/yaml/loader.py => third_party/python/pyyaml/lib/yaml/loader.py rename : python/pyyaml/lib/yaml/nodes.py => third_party/python/pyyaml/lib/yaml/nodes.py rename : python/pyyaml/lib/yaml/parser.py => third_party/python/pyyaml/lib/yaml/parser.py rename : python/pyyaml/lib/yaml/reader.py => third_party/python/pyyaml/lib/yaml/reader.py rename : python/pyyaml/lib/yaml/representer.py => third_party/python/pyyaml/lib/yaml/representer.py rename : python/pyyaml/lib/yaml/resolver.py => third_party/python/pyyaml/lib/yaml/resolver.py rename : python/pyyaml/lib/yaml/scanner.py => third_party/python/pyyaml/lib/yaml/scanner.py rename : python/pyyaml/lib/yaml/serializer.py => third_party/python/pyyaml/lib/yaml/serializer.py rename : python/pyyaml/lib/yaml/tokens.py => third_party/python/pyyaml/lib/yaml/tokens.py rename : python/pyyaml/lib3/yaml/__init__.py => third_party/python/pyyaml/lib3/yaml/__init__.py rename : python/pyyaml/lib3/yaml/composer.py => third_party/python/pyyaml/lib3/yaml/composer.py rename : python/pyyaml/lib3/yaml/constructor.py => third_party/python/pyyaml/lib3/yaml/constructor.py rename : python/pyyaml/lib3/yaml/cyaml.py => third_party/python/pyyaml/lib3/yaml/cyaml.py rename : python/pyyaml/lib3/yaml/dumper.py => third_party/python/pyyaml/lib3/yaml/dumper.py rename : python/pyyaml/lib3/yaml/emitter.py => third_party/python/pyyaml/lib3/yaml/emitter.py rename : python/pyyaml/lib3/yaml/error.py => third_party/python/pyyaml/lib3/yaml/error.py rename : python/pyyaml/lib3/yaml/events.py => third_party/python/pyyaml/lib3/yaml/events.py rename : python/pyyaml/lib3/yaml/loader.py => third_party/python/pyyaml/lib3/yaml/loader.py rename : python/pyyaml/lib3/yaml/nodes.py => third_party/python/pyyaml/lib3/yaml/nodes.py rename : python/pyyaml/lib3/yaml/parser.py => third_party/python/pyyaml/lib3/yaml/parser.py rename : python/pyyaml/lib3/yaml/reader.py => third_party/python/pyyaml/lib3/yaml/reader.py rename : python/pyyaml/lib3/yaml/representer.py => third_party/python/pyyaml/lib3/yaml/representer.py rename : python/pyyaml/lib3/yaml/resolver.py => third_party/python/pyyaml/lib3/yaml/resolver.py rename : python/pyyaml/lib3/yaml/scanner.py => third_party/python/pyyaml/lib3/yaml/scanner.py rename : python/pyyaml/lib3/yaml/serializer.py => third_party/python/pyyaml/lib3/yaml/serializer.py rename : python/pyyaml/lib3/yaml/tokens.py => third_party/python/pyyaml/lib3/yaml/tokens.py rename : python/pyyaml/setup.cfg => third_party/python/pyyaml/setup.cfg rename : python/pyyaml/setup.py => third_party/python/pyyaml/setup.py rename : python/redo/PKG-INFO => third_party/python/redo/PKG-INFO rename : python/redo/README => third_party/python/redo/README rename : python/redo/redo.egg-info/PKG-INFO => third_party/python/redo/redo.egg-info/PKG-INFO rename : python/redo/redo.egg-info/SOURCES.txt => third_party/python/redo/redo.egg-info/SOURCES.txt rename : python/redo/redo.egg-info/dependency_links.txt => third_party/python/redo/redo.egg-info/dependency_links.txt rename : python/redo/redo.egg-info/entry_points.txt => third_party/python/redo/redo.egg-info/entry_points.txt rename : python/redo/redo.egg-info/top_level.txt => third_party/python/redo/redo.egg-info/top_level.txt rename : python/redo/redo/__init__.py => third_party/python/redo/redo/__init__.py rename : python/redo/redo/cmd.py => third_party/python/redo/redo/cmd.py rename : python/redo/setup.cfg => third_party/python/redo/setup.cfg rename : python/redo/setup.py => third_party/python/redo/setup.py rename : python/requests/HISTORY.rst => third_party/python/requests/HISTORY.rst rename : python/requests/LICENSE => third_party/python/requests/LICENSE rename : python/requests/MANIFEST.in => third_party/python/requests/MANIFEST.in rename : python/requests/NOTICE => third_party/python/requests/NOTICE rename : python/requests/PKG-INFO => third_party/python/requests/PKG-INFO rename : python/requests/README.rst => third_party/python/requests/README.rst rename : python/requests/requests.egg-info/PKG-INFO => third_party/python/requests/requests.egg-info/PKG-INFO rename : python/requests/requests.egg-info/SOURCES.txt => third_party/python/requests/requests.egg-info/SOURCES.txt rename : python/requests/requests.egg-info/dependency_links.txt => third_party/python/requests/requests.egg-info/dependency_links.txt rename : python/requests/requests.egg-info/not-zip-safe => third_party/python/requests/requests.egg-info/not-zip-safe rename : python/requests/requests.egg-info/requires.txt => third_party/python/requests/requests.egg-info/requires.txt rename : python/requests/requests.egg-info/top_level.txt => third_party/python/requests/requests.egg-info/top_level.txt rename : python/requests/requests/__init__.py => third_party/python/requests/requests/__init__.py rename : python/requests/requests/adapters.py => third_party/python/requests/requests/adapters.py rename : python/requests/requests/api.py => third_party/python/requests/requests/api.py rename : python/requests/requests/auth.py => third_party/python/requests/requests/auth.py rename : python/requests/requests/cacert.pem => third_party/python/requests/requests/cacert.pem rename : python/requests/requests/certs.py => third_party/python/requests/requests/certs.py rename : python/requests/requests/compat.py => third_party/python/requests/requests/compat.py rename : python/requests/requests/cookies.py => third_party/python/requests/requests/cookies.py rename : python/requests/requests/exceptions.py => third_party/python/requests/requests/exceptions.py rename : python/requests/requests/hooks.py => third_party/python/requests/requests/hooks.py rename : python/requests/requests/models.py => third_party/python/requests/requests/models.py rename : python/requests/requests/packages/__init__.py => third_party/python/requests/requests/packages/__init__.py rename : python/requests/requests/packages/chardet/__init__.py => third_party/python/requests/requests/packages/chardet/__init__.py rename : python/requests/requests/packages/chardet/big5freq.py => third_party/python/requests/requests/packages/chardet/big5freq.py rename : python/requests/requests/packages/chardet/big5prober.py => third_party/python/requests/requests/packages/chardet/big5prober.py rename : python/requests/requests/packages/chardet/chardetect.py => third_party/python/requests/requests/packages/chardet/chardetect.py rename : python/requests/requests/packages/chardet/chardistribution.py => third_party/python/requests/requests/packages/chardet/chardistribution.py rename : python/requests/requests/packages/chardet/charsetgroupprober.py => third_party/python/requests/requests/packages/chardet/charsetgroupprober.py rename : python/requests/requests/packages/chardet/charsetprober.py => third_party/python/requests/requests/packages/chardet/charsetprober.py rename : python/requests/requests/packages/chardet/codingstatemachine.py => third_party/python/requests/requests/packages/chardet/codingstatemachine.py rename : python/requests/requests/packages/chardet/compat.py => third_party/python/requests/requests/packages/chardet/compat.py rename : python/requests/requests/packages/chardet/constants.py => third_party/python/requests/requests/packages/chardet/constants.py rename : python/requests/requests/packages/chardet/cp949prober.py => third_party/python/requests/requests/packages/chardet/cp949prober.py rename : python/requests/requests/packages/chardet/escprober.py => third_party/python/requests/requests/packages/chardet/escprober.py rename : python/requests/requests/packages/chardet/escsm.py => third_party/python/requests/requests/packages/chardet/escsm.py rename : python/requests/requests/packages/chardet/eucjpprober.py => third_party/python/requests/requests/packages/chardet/eucjpprober.py rename : python/requests/requests/packages/chardet/euckrfreq.py => third_party/python/requests/requests/packages/chardet/euckrfreq.py rename : python/requests/requests/packages/chardet/euckrprober.py => third_party/python/requests/requests/packages/chardet/euckrprober.py rename : python/requests/requests/packages/chardet/euctwfreq.py => third_party/python/requests/requests/packages/chardet/euctwfreq.py rename : python/requests/requests/packages/chardet/euctwprober.py => third_party/python/requests/requests/packages/chardet/euctwprober.py rename : python/requests/requests/packages/chardet/gb2312freq.py => third_party/python/requests/requests/packages/chardet/gb2312freq.py rename : python/requests/requests/packages/chardet/gb2312prober.py => third_party/python/requests/requests/packages/chardet/gb2312prober.py rename : python/requests/requests/packages/chardet/hebrewprober.py => third_party/python/requests/requests/packages/chardet/hebrewprober.py rename : python/requests/requests/packages/chardet/jisfreq.py => third_party/python/requests/requests/packages/chardet/jisfreq.py rename : python/requests/requests/packages/chardet/jpcntx.py => third_party/python/requests/requests/packages/chardet/jpcntx.py rename : python/requests/requests/packages/chardet/langbulgarianmodel.py => third_party/python/requests/requests/packages/chardet/langbulgarianmodel.py rename : python/requests/requests/packages/chardet/langcyrillicmodel.py => third_party/python/requests/requests/packages/chardet/langcyrillicmodel.py rename : python/requests/requests/packages/chardet/langgreekmodel.py => third_party/python/requests/requests/packages/chardet/langgreekmodel.py rename : python/requests/requests/packages/chardet/langhebrewmodel.py => third_party/python/requests/requests/packages/chardet/langhebrewmodel.py rename : python/requests/requests/packages/chardet/langhungarianmodel.py => third_party/python/requests/requests/packages/chardet/langhungarianmodel.py rename : python/requests/requests/packages/chardet/langthaimodel.py => third_party/python/requests/requests/packages/chardet/langthaimodel.py rename : python/requests/requests/packages/chardet/latin1prober.py => third_party/python/requests/requests/packages/chardet/latin1prober.py rename : python/requests/requests/packages/chardet/mbcharsetprober.py => third_party/python/requests/requests/packages/chardet/mbcharsetprober.py rename : python/requests/requests/packages/chardet/mbcsgroupprober.py => third_party/python/requests/requests/packages/chardet/mbcsgroupprober.py rename : python/requests/requests/packages/chardet/mbcssm.py => third_party/python/requests/requests/packages/chardet/mbcssm.py rename : python/requests/requests/packages/chardet/sbcharsetprober.py => third_party/python/requests/requests/packages/chardet/sbcharsetprober.py rename : python/requests/requests/packages/chardet/sbcsgroupprober.py => third_party/python/requests/requests/packages/chardet/sbcsgroupprober.py rename : python/requests/requests/packages/chardet/sjisprober.py => third_party/python/requests/requests/packages/chardet/sjisprober.py rename : python/requests/requests/packages/chardet/universaldetector.py => third_party/python/requests/requests/packages/chardet/universaldetector.py rename : python/requests/requests/packages/chardet/utf8prober.py => third_party/python/requests/requests/packages/chardet/utf8prober.py rename : python/requests/requests/packages/urllib3/__init__.py => third_party/python/requests/requests/packages/urllib3/__init__.py rename : python/requests/requests/packages/urllib3/_collections.py => third_party/python/requests/requests/packages/urllib3/_collections.py rename : python/requests/requests/packages/urllib3/connection.py => third_party/python/requests/requests/packages/urllib3/connection.py rename : python/requests/requests/packages/urllib3/connectionpool.py => third_party/python/requests/requests/packages/urllib3/connectionpool.py rename : python/requests/requests/packages/urllib3/contrib/__init__.py => third_party/python/requests/requests/packages/urllib3/contrib/__init__.py rename : python/requests/requests/packages/urllib3/contrib/appengine.py => third_party/python/requests/requests/packages/urllib3/contrib/appengine.py rename : python/requests/requests/packages/urllib3/contrib/ntlmpool.py => third_party/python/requests/requests/packages/urllib3/contrib/ntlmpool.py rename : python/requests/requests/packages/urllib3/contrib/pyopenssl.py => third_party/python/requests/requests/packages/urllib3/contrib/pyopenssl.py rename : python/requests/requests/packages/urllib3/exceptions.py => third_party/python/requests/requests/packages/urllib3/exceptions.py rename : python/requests/requests/packages/urllib3/fields.py => third_party/python/requests/requests/packages/urllib3/fields.py rename : python/requests/requests/packages/urllib3/filepost.py => third_party/python/requests/requests/packages/urllib3/filepost.py rename : python/requests/requests/packages/urllib3/packages/__init__.py => third_party/python/requests/requests/packages/urllib3/packages/__init__.py rename : python/requests/requests/packages/urllib3/packages/ordered_dict.py => third_party/python/requests/requests/packages/urllib3/packages/ordered_dict.py rename : python/requests/requests/packages/urllib3/packages/six.py => third_party/python/requests/requests/packages/urllib3/packages/six.py rename : python/requests/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py => third_party/python/requests/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py rename : python/requests/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py => third_party/python/requests/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py rename : python/requests/requests/packages/urllib3/poolmanager.py => third_party/python/requests/requests/packages/urllib3/poolmanager.py rename : python/requests/requests/packages/urllib3/request.py => third_party/python/requests/requests/packages/urllib3/request.py rename : python/requests/requests/packages/urllib3/response.py => third_party/python/requests/requests/packages/urllib3/response.py rename : python/requests/requests/packages/urllib3/util/__init__.py => third_party/python/requests/requests/packages/urllib3/util/__init__.py rename : python/requests/requests/packages/urllib3/util/connection.py => third_party/python/requests/requests/packages/urllib3/util/connection.py rename : python/requests/requests/packages/urllib3/util/request.py => third_party/python/requests/requests/packages/urllib3/util/request.py rename : python/requests/requests/packages/urllib3/util/response.py => third_party/python/requests/requests/packages/urllib3/util/response.py rename : python/requests/requests/packages/urllib3/util/retry.py => third_party/python/requests/requests/packages/urllib3/util/retry.py rename : python/requests/requests/packages/urllib3/util/ssl_.py => third_party/python/requests/requests/packages/urllib3/util/ssl_.py rename : python/requests/requests/packages/urllib3/util/timeout.py => third_party/python/requests/requests/packages/urllib3/util/timeout.py rename : python/requests/requests/packages/urllib3/util/url.py => third_party/python/requests/requests/packages/urllib3/util/url.py rename : python/requests/requests/sessions.py => third_party/python/requests/requests/sessions.py rename : python/requests/requests/status_codes.py => third_party/python/requests/requests/status_codes.py rename : python/requests/requests/structures.py => third_party/python/requests/requests/structures.py rename : python/requests/requests/utils.py => third_party/python/requests/requests/utils.py rename : python/requests/requirements.txt => third_party/python/requests/requirements.txt rename : python/requests/setup.cfg => third_party/python/requests/setup.cfg rename : python/requests/setup.py => third_party/python/requests/setup.py rename : python/requests/test_requests.py => third_party/python/requests/test_requests.py rename : python/rsa/LICENSE => third_party/python/rsa/LICENSE rename : python/rsa/MANIFEST.in => third_party/python/rsa/MANIFEST.in rename : python/rsa/PKG-INFO => third_party/python/rsa/PKG-INFO rename : python/rsa/README.rst => third_party/python/rsa/README.rst rename : python/rsa/create_timing_table.py => third_party/python/rsa/create_timing_table.py rename : python/rsa/playstuff.py => third_party/python/rsa/playstuff.py rename : python/rsa/rsa.egg-info/PKG-INFO => third_party/python/rsa/rsa.egg-info/PKG-INFO rename : python/rsa/rsa.egg-info/SOURCES.txt => third_party/python/rsa/rsa.egg-info/SOURCES.txt rename : python/rsa/rsa.egg-info/dependency_links.txt => third_party/python/rsa/rsa.egg-info/dependency_links.txt rename : python/rsa/rsa.egg-info/entry_points.txt => third_party/python/rsa/rsa.egg-info/entry_points.txt rename : python/rsa/rsa.egg-info/requires.txt => third_party/python/rsa/rsa.egg-info/requires.txt rename : python/rsa/rsa.egg-info/top_level.txt => third_party/python/rsa/rsa.egg-info/top_level.txt rename : python/rsa/rsa/__init__.py => third_party/python/rsa/rsa/__init__.py rename : python/rsa/rsa/_compat.py => third_party/python/rsa/rsa/_compat.py rename : python/rsa/rsa/_version133.py => third_party/python/rsa/rsa/_version133.py rename : python/rsa/rsa/_version200.py => third_party/python/rsa/rsa/_version200.py rename : python/rsa/rsa/asn1.py => third_party/python/rsa/rsa/asn1.py rename : python/rsa/rsa/bigfile.py => third_party/python/rsa/rsa/bigfile.py rename : python/rsa/rsa/cli.py => third_party/python/rsa/rsa/cli.py rename : python/rsa/rsa/common.py => third_party/python/rsa/rsa/common.py rename : python/rsa/rsa/core.py => third_party/python/rsa/rsa/core.py rename : python/rsa/rsa/key.py => third_party/python/rsa/rsa/key.py rename : python/rsa/rsa/parallel.py => third_party/python/rsa/rsa/parallel.py rename : python/rsa/rsa/pem.py => third_party/python/rsa/rsa/pem.py rename : python/rsa/rsa/pkcs1.py => third_party/python/rsa/rsa/pkcs1.py rename : python/rsa/rsa/prime.py => third_party/python/rsa/rsa/prime.py rename : python/rsa/rsa/randnum.py => third_party/python/rsa/rsa/randnum.py rename : python/rsa/rsa/transform.py => third_party/python/rsa/rsa/transform.py rename : python/rsa/rsa/util.py => third_party/python/rsa/rsa/util.py rename : python/rsa/rsa/varblock.py => third_party/python/rsa/rsa/varblock.py rename : python/rsa/run_tests.py => third_party/python/rsa/run_tests.py rename : python/rsa/setup.cfg => third_party/python/rsa/setup.cfg rename : python/rsa/setup.py => third_party/python/rsa/setup.py rename : python/rsa/tests/__init__.py => third_party/python/rsa/tests/__init__.py rename : python/rsa/tests/constants.py => third_party/python/rsa/tests/constants.py rename : python/rsa/tests/py2kconstants.py => third_party/python/rsa/tests/py2kconstants.py rename : python/rsa/tests/py3kconstants.py => third_party/python/rsa/tests/py3kconstants.py rename : python/rsa/tests/test_bigfile.py => third_party/python/rsa/tests/test_bigfile.py rename : python/rsa/tests/test_common.py => third_party/python/rsa/tests/test_common.py rename : python/rsa/tests/test_compat.py => third_party/python/rsa/tests/test_compat.py rename : python/rsa/tests/test_integers.py => third_party/python/rsa/tests/test_integers.py rename : python/rsa/tests/test_load_save_keys.py => third_party/python/rsa/tests/test_load_save_keys.py rename : python/rsa/tests/test_pem.py => third_party/python/rsa/tests/test_pem.py rename : python/rsa/tests/test_pkcs1.py => third_party/python/rsa/tests/test_pkcs1.py rename : python/rsa/tests/test_strings.py => third_party/python/rsa/tests/test_strings.py rename : python/rsa/tests/test_transform.py => third_party/python/rsa/tests/test_transform.py rename : python/rsa/tests/test_varblock.py => third_party/python/rsa/tests/test_varblock.py rename : python/slugid/.gitignore => third_party/python/slugid/.gitignore rename : python/slugid/.travis.yml => third_party/python/slugid/.travis.yml rename : python/slugid/LICENSE => third_party/python/slugid/LICENSE rename : python/slugid/README.rst => third_party/python/slugid/README.rst rename : python/slugid/requirements.txt => third_party/python/slugid/requirements.txt rename : python/slugid/setup.py => third_party/python/slugid/setup.py rename : python/slugid/slugid/__init__.py => third_party/python/slugid/slugid/__init__.py rename : python/slugid/slugid/slugid.py => third_party/python/slugid/slugid/slugid.py rename : python/slugid/test.py => third_party/python/slugid/test.py rename : python/slugid/tox.ini => third_party/python/slugid/tox.ini rename : python/virtualenv/AUTHORS.txt => third_party/python/virtualenv/AUTHORS.txt rename : python/virtualenv/LICENSE.txt => third_party/python/virtualenv/LICENSE.txt rename : python/virtualenv/MANIFEST.in => third_party/python/virtualenv/MANIFEST.in rename : python/virtualenv/PKG-INFO => third_party/python/virtualenv/PKG-INFO rename : python/virtualenv/README.rst => third_party/python/virtualenv/README.rst rename : python/virtualenv/bin/rebuild-script.py => third_party/python/virtualenv/bin/rebuild-script.py rename : python/virtualenv/docs/Makefile => third_party/python/virtualenv/docs/Makefile rename : python/virtualenv/docs/changes.rst => third_party/python/virtualenv/docs/changes.rst rename : python/virtualenv/docs/conf.py => third_party/python/virtualenv/docs/conf.py rename : python/virtualenv/docs/development.rst => third_party/python/virtualenv/docs/development.rst rename : python/virtualenv/docs/index.rst => third_party/python/virtualenv/docs/index.rst rename : python/virtualenv/docs/installation.rst => third_party/python/virtualenv/docs/installation.rst rename : python/virtualenv/docs/make.bat => third_party/python/virtualenv/docs/make.bat rename : python/virtualenv/docs/reference.rst => third_party/python/virtualenv/docs/reference.rst rename : python/virtualenv/docs/userguide.rst => third_party/python/virtualenv/docs/userguide.rst rename : python/virtualenv/scripts/virtualenv => third_party/python/virtualenv/scripts/virtualenv rename : python/virtualenv/setup.cfg => third_party/python/virtualenv/setup.cfg rename : python/virtualenv/setup.py => third_party/python/virtualenv/setup.py rename : python/virtualenv/site.py => third_party/python/virtualenv/site.py rename : python/virtualenv/tests/__init__.py => third_party/python/virtualenv/tests/__init__.py rename : python/virtualenv/tests/test_activate.sh => third_party/python/virtualenv/tests/test_activate.sh rename : python/virtualenv/tests/test_activate_output.expected => third_party/python/virtualenv/tests/test_activate_output.expected rename : python/virtualenv/tests/test_cmdline.py => third_party/python/virtualenv/tests/test_cmdline.py rename : python/virtualenv/tests/test_virtualenv.py => third_party/python/virtualenv/tests/test_virtualenv.py rename : python/virtualenv/virtualenv.py => third_party/python/virtualenv/virtualenv.py rename : python/virtualenv/virtualenv_embedded/activate.bat => third_party/python/virtualenv/virtualenv_embedded/activate.bat rename : python/virtualenv/virtualenv_embedded/activate.csh => third_party/python/virtualenv/virtualenv_embedded/activate.csh rename : python/virtualenv/virtualenv_embedded/activate.fish => third_party/python/virtualenv/virtualenv_embedded/activate.fish rename : python/virtualenv/virtualenv_embedded/activate.ps1 => third_party/python/virtualenv/virtualenv_embedded/activate.ps1 rename : python/virtualenv/virtualenv_embedded/activate.sh => third_party/python/virtualenv/virtualenv_embedded/activate.sh rename : python/virtualenv/virtualenv_embedded/activate_this.py => third_party/python/virtualenv/virtualenv_embedded/activate_this.py rename : python/virtualenv/virtualenv_embedded/deactivate.bat => third_party/python/virtualenv/virtualenv_embedded/deactivate.bat rename : python/virtualenv/virtualenv_embedded/distutils-init.py => third_party/python/virtualenv/virtualenv_embedded/distutils-init.py rename : python/virtualenv/virtualenv_embedded/distutils.cfg => third_party/python/virtualenv/virtualenv_embedded/distutils.cfg rename : python/virtualenv/virtualenv_embedded/python-config => third_party/python/virtualenv/virtualenv_embedded/python-config rename : python/virtualenv/virtualenv_embedded/site.py => third_party/python/virtualenv/virtualenv_embedded/site.py rename : python/virtualenv/virtualenv_support/__init__.py => third_party/python/virtualenv/virtualenv_support/__init__.py rename : python/virtualenv/virtualenv_support/argparse-1.4.0-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/argparse-1.4.0-py2.py3-none-any.whl rename : python/virtualenv/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl rename : python/virtualenv/virtualenv_support/setuptools-25.2.0-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/setuptools-25.2.0-py2.py3-none-any.whl rename : python/virtualenv/virtualenv_support/wheel-0.29.0-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/wheel-0.29.0-py2.py3-none-any.whl rename : python/voluptuous/COPYING => third_party/python/voluptuous/COPYING rename : python/voluptuous/MANIFEST.in => third_party/python/voluptuous/MANIFEST.in rename : python/voluptuous/PKG-INFO => third_party/python/voluptuous/PKG-INFO rename : python/voluptuous/README.md => third_party/python/voluptuous/README.md rename : python/voluptuous/README.rst => third_party/python/voluptuous/README.rst rename : python/voluptuous/setup.cfg => third_party/python/voluptuous/setup.cfg rename : python/voluptuous/setup.py => third_party/python/voluptuous/setup.py rename : python/voluptuous/tests.md => third_party/python/voluptuous/tests.md rename : python/voluptuous/voluptuous.py => third_party/python/voluptuous/voluptuous.py rename : python/which/LICENSE.txt => third_party/python/which/LICENSE.txt rename : python/which/MANIFEST.in => third_party/python/which/MANIFEST.in rename : python/which/Makefile.win => third_party/python/which/Makefile.win rename : python/which/PKG-INFO => third_party/python/which/PKG-INFO rename : python/which/README.txt => third_party/python/which/README.txt rename : python/which/TODO.txt => third_party/python/which/TODO.txt rename : python/which/build.py => third_party/python/which/build.py rename : python/which/launcher.cpp => third_party/python/which/launcher.cpp rename : python/which/logo.jpg => third_party/python/which/logo.jpg rename : python/which/setup.py => third_party/python/which/setup.py rename : python/which/test/test_which.py => third_party/python/which/test/test_which.py rename : python/which/test/testsupport.py => third_party/python/which/test/testsupport.py rename : python/which/which.py => third_party/python/which/which.py extra : rebase_source : fc38848c444c36b0d38a0c33aa5be74d5037d57d
		
			
				
	
	
		
			1746 lines
		
	
	
	
		
			59 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			1746 lines
		
	
	
	
		
			59 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python
 | |
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| """Tests for Requests."""
 | |
| 
 | |
| from __future__ import division
 | |
| import json
 | |
| import os
 | |
| import pickle
 | |
| import unittest
 | |
| import collections
 | |
| import contextlib
 | |
| 
 | |
| import io
 | |
| import requests
 | |
| import pytest
 | |
| from requests.adapters import HTTPAdapter
 | |
| from requests.auth import HTTPDigestAuth, _basic_auth_str
 | |
| from requests.compat import (
 | |
|     Morsel, cookielib, getproxies, str, urljoin, urlparse, is_py3,
 | |
|     builtin_str, OrderedDict
 | |
|     )
 | |
| from requests.cookies import cookiejar_from_dict, morsel_to_cookie
 | |
| from requests.exceptions import (ConnectionError, ConnectTimeout,
 | |
|                                  InvalidSchema, InvalidURL, MissingSchema,
 | |
|                                  ReadTimeout, Timeout, RetryError)
 | |
| from requests.models import PreparedRequest
 | |
| from requests.structures import CaseInsensitiveDict
 | |
| from requests.sessions import SessionRedirectMixin
 | |
| from requests.models import urlencode
 | |
| from requests.hooks import default_hooks
 | |
| 
 | |
| try:
 | |
|     import StringIO
 | |
| except ImportError:
 | |
|     import io as StringIO
 | |
| 
 | |
| try:
 | |
|     from multiprocessing.pool import ThreadPool
 | |
| except ImportError:
 | |
|     ThreadPool = None
 | |
| 
 | |
| if is_py3:
 | |
|     def u(s):
 | |
|         return s
 | |
| else:
 | |
|     def u(s):
 | |
|         return s.decode('unicode-escape')
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def httpbin(httpbin):
 | |
|     # Issue #1483: Make sure the URL always has a trailing slash
 | |
|     httpbin_url = httpbin.url.rstrip('/') + '/'
 | |
| 
 | |
|     def inner(*suffix):
 | |
|         return urljoin(httpbin_url, '/'.join(suffix))
 | |
| 
 | |
|     return inner
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def httpsbin_url(httpbin_secure):
 | |
|     # Issue #1483: Make sure the URL always has a trailing slash
 | |
|     httpbin_url = httpbin_secure.url.rstrip('/') + '/'
 | |
| 
 | |
|     def inner(*suffix):
 | |
|         return urljoin(httpbin_url, '/'.join(suffix))
 | |
| 
 | |
|     return inner
 | |
| 
 | |
| 
 | |
| # Requests to this URL should always fail with a connection timeout (nothing
 | |
| # listening on that port)
 | |
| TARPIT = "http://10.255.255.1"
 | |
| 
 | |
| class TestRequests(object):
 | |
| 
 | |
|     _multiprocess_can_split_ = True
 | |
| 
 | |
|     def setUp(self):
 | |
|         """Create simple data set with headers."""
 | |
|         pass
 | |
| 
 | |
|     def tearDown(self):
 | |
|         """Teardown."""
 | |
|         pass
 | |
| 
 | |
|     def test_entry_points(self):
 | |
| 
 | |
|         requests.session
 | |
|         requests.session().get
 | |
|         requests.session().head
 | |
|         requests.get
 | |
|         requests.head
 | |
|         requests.put
 | |
|         requests.patch
 | |
|         requests.post
 | |
| 
 | |
|     def test_invalid_url(self):
 | |
|         with pytest.raises(MissingSchema):
 | |
|             requests.get('hiwpefhipowhefopw')
 | |
|         with pytest.raises(InvalidSchema):
 | |
|             requests.get('localhost:3128')
 | |
|         with pytest.raises(InvalidSchema):
 | |
|             requests.get('localhost.localdomain:3128/')
 | |
|         with pytest.raises(InvalidSchema):
 | |
|             requests.get('10.122.1.1:3128/')
 | |
|         with pytest.raises(InvalidURL):
 | |
|             requests.get('http://')
 | |
| 
 | |
|     def test_basic_building(self):
 | |
|         req = requests.Request()
 | |
|         req.url = 'http://kennethreitz.org/'
 | |
|         req.data = {'life': '42'}
 | |
| 
 | |
|         pr = req.prepare()
 | |
|         assert pr.url == req.url
 | |
|         assert pr.body == 'life=42'
 | |
| 
 | |
|     def test_no_content_length(self, httpbin):
 | |
|         get_req = requests.Request('GET', httpbin('get')).prepare()
 | |
|         assert 'Content-Length' not in get_req.headers
 | |
|         head_req = requests.Request('HEAD', httpbin('head')).prepare()
 | |
|         assert 'Content-Length' not in head_req.headers
 | |
| 
 | |
|     def test_override_content_length(self, httpbin):
 | |
|         headers = {
 | |
|             'Content-Length': 'not zero'
 | |
|         }
 | |
|         r = requests.Request('POST', httpbin('post'), headers=headers).prepare()
 | |
|         assert 'Content-Length' in r.headers
 | |
|         assert r.headers['Content-Length'] == 'not zero'
 | |
| 
 | |
|     def test_path_is_not_double_encoded(self):
 | |
|         request = requests.Request('GET', "http://0.0.0.0/get/test case").prepare()
 | |
| 
 | |
|         assert request.path_url == '/get/test%20case'
 | |
| 
 | |
|     def test_params_are_added_before_fragment(self):
 | |
|         request = requests.Request('GET',
 | |
|             "http://example.com/path#fragment", params={"a": "b"}).prepare()
 | |
|         assert request.url == "http://example.com/path?a=b#fragment"
 | |
|         request = requests.Request('GET',
 | |
|             "http://example.com/path?key=value#fragment", params={"a": "b"}).prepare()
 | |
|         assert request.url == "http://example.com/path?key=value&a=b#fragment"
 | |
| 
 | |
|     def test_params_original_order_is_preserved_by_default(self):
 | |
|         param_ordered_dict = OrderedDict((('z', 1), ('a', 1), ('k', 1), ('d', 1)))
 | |
|         session = requests.Session()
 | |
|         request = requests.Request('GET', 'http://example.com/', params=param_ordered_dict)
 | |
|         prep = session.prepare_request(request)
 | |
|         assert prep.url == 'http://example.com/?z=1&a=1&k=1&d=1'
 | |
| 
 | |
|     def test_params_bytes_are_encoded(self):
 | |
|         request = requests.Request('GET', 'http://example.com',
 | |
|                                    params=b'test=foo').prepare()
 | |
|         assert request.url == 'http://example.com/?test=foo'
 | |
| 
 | |
|     def test_binary_put(self):
 | |
|         request = requests.Request('PUT', 'http://example.com',
 | |
|                                    data=u"ööö".encode("utf-8")).prepare()
 | |
|         assert isinstance(request.body, bytes)
 | |
| 
 | |
|     def test_mixed_case_scheme_acceptable(self, httpbin):
 | |
|         s = requests.Session()
 | |
|         s.proxies = getproxies()
 | |
|         parts = urlparse(httpbin('get'))
 | |
|         schemes = ['http://', 'HTTP://', 'hTTp://', 'HttP://']
 | |
|         for scheme in schemes:
 | |
|             url = scheme + parts.netloc + parts.path
 | |
|             r = requests.Request('GET', url)
 | |
|             r = s.send(r.prepare())
 | |
|             assert r.status_code == 200, 'failed for scheme {0}'.format(scheme)
 | |
| 
 | |
|     def test_HTTP_200_OK_GET_ALTERNATIVE(self, httpbin):
 | |
|         r = requests.Request('GET', httpbin('get'))
 | |
|         s = requests.Session()
 | |
|         s.proxies = getproxies()
 | |
| 
 | |
|         r = s.send(r.prepare())
 | |
| 
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_HTTP_302_ALLOW_REDIRECT_GET(self, httpbin):
 | |
|         r = requests.get(httpbin('redirect', '1'))
 | |
|         assert r.status_code == 200
 | |
|         assert r.history[0].status_code == 302
 | |
|         assert r.history[0].is_redirect
 | |
| 
 | |
|     # def test_HTTP_302_ALLOW_REDIRECT_POST(self):
 | |
|     #     r = requests.post(httpbin('status', '302'), data={'some': 'data'})
 | |
|     #     self.assertEqual(r.status_code, 200)
 | |
| 
 | |
|     def test_HTTP_200_OK_GET_WITH_PARAMS(self, httpbin):
 | |
|         heads = {'User-agent': 'Mozilla/5.0'}
 | |
| 
 | |
|         r = requests.get(httpbin('user-agent'), headers=heads)
 | |
| 
 | |
|         assert heads['User-agent'] in r.text
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_HTTP_200_OK_GET_WITH_MIXED_PARAMS(self, httpbin):
 | |
|         heads = {'User-agent': 'Mozilla/5.0'}
 | |
| 
 | |
|         r = requests.get(httpbin('get') + '?test=true', params={'q': 'test'}, headers=heads)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_set_cookie_on_301(self, httpbin):
 | |
|         s = requests.session()
 | |
|         url = httpbin('cookies/set?foo=bar')
 | |
|         s.get(url)
 | |
|         assert s.cookies['foo'] == 'bar'
 | |
| 
 | |
|     def test_cookie_sent_on_redirect(self, httpbin):
 | |
|         s = requests.session()
 | |
|         s.get(httpbin('cookies/set?foo=bar'))
 | |
|         r = s.get(httpbin('redirect/1'))  # redirects to httpbin('get')
 | |
|         assert 'Cookie' in r.json()['headers']
 | |
| 
 | |
|     def test_cookie_removed_on_expire(self, httpbin):
 | |
|         s = requests.session()
 | |
|         s.get(httpbin('cookies/set?foo=bar'))
 | |
|         assert s.cookies['foo'] == 'bar'
 | |
|         s.get(
 | |
|             httpbin('response-headers'),
 | |
|             params={
 | |
|                 'Set-Cookie':
 | |
|                     'foo=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT'
 | |
|             }
 | |
|         )
 | |
|         assert 'foo' not in s.cookies
 | |
| 
 | |
|     def test_cookie_quote_wrapped(self, httpbin):
 | |
|         s = requests.session()
 | |
|         s.get(httpbin('cookies/set?foo="bar:baz"'))
 | |
|         assert s.cookies['foo'] == '"bar:baz"'
 | |
| 
 | |
|     def test_cookie_persists_via_api(self, httpbin):
 | |
|         s = requests.session()
 | |
|         r = s.get(httpbin('redirect/1'), cookies={'foo': 'bar'})
 | |
|         assert 'foo' in r.request.headers['Cookie']
 | |
|         assert 'foo' in r.history[0].request.headers['Cookie']
 | |
| 
 | |
|     def test_request_cookie_overrides_session_cookie(self, httpbin):
 | |
|         s = requests.session()
 | |
|         s.cookies['foo'] = 'bar'
 | |
|         r = s.get(httpbin('cookies'), cookies={'foo': 'baz'})
 | |
|         assert r.json()['cookies']['foo'] == 'baz'
 | |
|         # Session cookie should not be modified
 | |
|         assert s.cookies['foo'] == 'bar'
 | |
| 
 | |
|     def test_request_cookies_not_persisted(self, httpbin):
 | |
|         s = requests.session()
 | |
|         s.get(httpbin('cookies'), cookies={'foo': 'baz'})
 | |
|         # Sending a request with cookies should not add cookies to the session
 | |
|         assert not s.cookies
 | |
| 
 | |
|     def test_generic_cookiejar_works(self, httpbin):
 | |
|         cj = cookielib.CookieJar()
 | |
|         cookiejar_from_dict({'foo': 'bar'}, cj)
 | |
|         s = requests.session()
 | |
|         s.cookies = cj
 | |
|         r = s.get(httpbin('cookies'))
 | |
|         # Make sure the cookie was sent
 | |
|         assert r.json()['cookies']['foo'] == 'bar'
 | |
|         # Make sure the session cj is still the custom one
 | |
|         assert s.cookies is cj
 | |
| 
 | |
|     def test_param_cookiejar_works(self, httpbin):
 | |
|         cj = cookielib.CookieJar()
 | |
|         cookiejar_from_dict({'foo': 'bar'}, cj)
 | |
|         s = requests.session()
 | |
|         r = s.get(httpbin('cookies'), cookies=cj)
 | |
|         # Make sure the cookie was sent
 | |
|         assert r.json()['cookies']['foo'] == 'bar'
 | |
| 
 | |
|     def test_requests_in_history_are_not_overridden(self, httpbin):
 | |
|         resp = requests.get(httpbin('redirect/3'))
 | |
|         urls = [r.url for r in resp.history]
 | |
|         req_urls = [r.request.url for r in resp.history]
 | |
|         assert urls == req_urls
 | |
| 
 | |
|     def test_history_is_always_a_list(self, httpbin):
 | |
|         """
 | |
|         Show that even with redirects, Response.history is always a list.
 | |
|         """
 | |
|         resp = requests.get(httpbin('get'))
 | |
|         assert isinstance(resp.history, list)
 | |
|         resp = requests.get(httpbin('redirect/1'))
 | |
|         assert isinstance(resp.history, list)
 | |
|         assert not isinstance(resp.history, tuple)
 | |
| 
 | |
|     def test_headers_on_session_with_None_are_not_sent(self, httpbin):
 | |
|         """Do not send headers in Session.headers with None values."""
 | |
|         ses = requests.Session()
 | |
|         ses.headers['Accept-Encoding'] = None
 | |
|         req = requests.Request('GET', httpbin('get'))
 | |
|         prep = ses.prepare_request(req)
 | |
|         assert 'Accept-Encoding' not in prep.headers
 | |
| 
 | |
|     def test_user_agent_transfers(self, httpbin):
 | |
| 
 | |
|         heads = {
 | |
|             'User-agent': 'Mozilla/5.0 (github.com/kennethreitz/requests)'
 | |
|         }
 | |
| 
 | |
|         r = requests.get(httpbin('user-agent'), headers=heads)
 | |
|         assert heads['User-agent'] in r.text
 | |
| 
 | |
|         heads = {
 | |
|             'user-agent': 'Mozilla/5.0 (github.com/kennethreitz/requests)'
 | |
|         }
 | |
| 
 | |
|         r = requests.get(httpbin('user-agent'), headers=heads)
 | |
|         assert heads['user-agent'] in r.text
 | |
| 
 | |
|     def test_HTTP_200_OK_HEAD(self, httpbin):
 | |
|         r = requests.head(httpbin('get'))
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_HTTP_200_OK_PUT(self, httpbin):
 | |
|         r = requests.put(httpbin('put'))
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_BASICAUTH_TUPLE_HTTP_200_OK_GET(self, httpbin):
 | |
|         auth = ('user', 'pass')
 | |
|         url = httpbin('basic-auth', 'user', 'pass')
 | |
| 
 | |
|         r = requests.get(url, auth=auth)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         r = requests.get(url)
 | |
|         assert r.status_code == 401
 | |
| 
 | |
|         s = requests.session()
 | |
|         s.auth = auth
 | |
|         r = s.get(url)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_connection_error_invalid_domain(self):
 | |
|         """Connecting to an unknown domain should raise a ConnectionError"""
 | |
|         with pytest.raises(ConnectionError):
 | |
|             requests.get("http://doesnotexist.google.com")
 | |
| 
 | |
|     def test_connection_error_invalid_port(self):
 | |
|         """Connecting to an invalid port should raise a ConnectionError"""
 | |
|         with pytest.raises(ConnectionError):
 | |
|             requests.get("http://localhost:1", timeout=1)
 | |
| 
 | |
|     def test_LocationParseError(self):
 | |
|         """Inputing a URL that cannot be parsed should raise an InvalidURL error"""
 | |
|         with pytest.raises(InvalidURL):
 | |
|             requests.get("http://fe80::5054:ff:fe5a:fc0")
 | |
| 
 | |
|     def test_basicauth_with_netrc(self, httpbin):
 | |
|         auth = ('user', 'pass')
 | |
|         wrong_auth = ('wronguser', 'wrongpass')
 | |
|         url = httpbin('basic-auth', 'user', 'pass')
 | |
| 
 | |
|         old_auth = requests.sessions.get_netrc_auth
 | |
| 
 | |
|         try:
 | |
|             def get_netrc_auth_mock(url):
 | |
|                 return auth
 | |
|             requests.sessions.get_netrc_auth = get_netrc_auth_mock
 | |
| 
 | |
|             # Should use netrc and work.
 | |
|             r = requests.get(url)
 | |
|             assert r.status_code == 200
 | |
| 
 | |
|             # Given auth should override and fail.
 | |
|             r = requests.get(url, auth=wrong_auth)
 | |
|             assert r.status_code == 401
 | |
| 
 | |
|             s = requests.session()
 | |
| 
 | |
|             # Should use netrc and work.
 | |
|             r = s.get(url)
 | |
|             assert r.status_code == 200
 | |
| 
 | |
|             # Given auth should override and fail.
 | |
|             s.auth = wrong_auth
 | |
|             r = s.get(url)
 | |
|             assert r.status_code == 401
 | |
|         finally:
 | |
|             requests.sessions.get_netrc_auth = old_auth
 | |
| 
 | |
|     def test_DIGEST_HTTP_200_OK_GET(self, httpbin):
 | |
| 
 | |
|         auth = HTTPDigestAuth('user', 'pass')
 | |
|         url = httpbin('digest-auth', 'auth', 'user', 'pass')
 | |
| 
 | |
|         r = requests.get(url, auth=auth)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         r = requests.get(url)
 | |
|         assert r.status_code == 401
 | |
| 
 | |
|         s = requests.session()
 | |
|         s.auth = HTTPDigestAuth('user', 'pass')
 | |
|         r = s.get(url)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_DIGEST_AUTH_RETURNS_COOKIE(self, httpbin):
 | |
|         url = httpbin('digest-auth', 'auth', 'user', 'pass')
 | |
|         auth = HTTPDigestAuth('user', 'pass')
 | |
|         r = requests.get(url)
 | |
|         assert r.cookies['fake'] == 'fake_value'
 | |
| 
 | |
|         r = requests.get(url, auth=auth)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_DIGEST_AUTH_SETS_SESSION_COOKIES(self, httpbin):
 | |
|         url = httpbin('digest-auth', 'auth', 'user', 'pass')
 | |
|         auth = HTTPDigestAuth('user', 'pass')
 | |
|         s = requests.Session()
 | |
|         s.get(url, auth=auth)
 | |
|         assert s.cookies['fake'] == 'fake_value'
 | |
| 
 | |
|     def test_DIGEST_STREAM(self, httpbin):
 | |
| 
 | |
|         auth = HTTPDigestAuth('user', 'pass')
 | |
|         url = httpbin('digest-auth', 'auth', 'user', 'pass')
 | |
| 
 | |
|         r = requests.get(url, auth=auth, stream=True)
 | |
|         assert r.raw.read() != b''
 | |
| 
 | |
|         r = requests.get(url, auth=auth, stream=False)
 | |
|         assert r.raw.read() == b''
 | |
| 
 | |
|     def test_DIGESTAUTH_WRONG_HTTP_401_GET(self, httpbin):
 | |
| 
 | |
|         auth = HTTPDigestAuth('user', 'wrongpass')
 | |
|         url = httpbin('digest-auth', 'auth', 'user', 'pass')
 | |
| 
 | |
|         r = requests.get(url, auth=auth)
 | |
|         assert r.status_code == 401
 | |
| 
 | |
|         r = requests.get(url)
 | |
|         assert r.status_code == 401
 | |
| 
 | |
|         s = requests.session()
 | |
|         s.auth = auth
 | |
|         r = s.get(url)
 | |
|         assert r.status_code == 401
 | |
| 
 | |
|     def test_DIGESTAUTH_QUOTES_QOP_VALUE(self, httpbin):
 | |
| 
 | |
|         auth = HTTPDigestAuth('user', 'pass')
 | |
|         url = httpbin('digest-auth', 'auth', 'user', 'pass')
 | |
| 
 | |
|         r = requests.get(url, auth=auth)
 | |
|         assert '"auth"' in r.request.headers['Authorization']
 | |
| 
 | |
|     def test_POSTBIN_GET_POST_FILES(self, httpbin):
 | |
| 
 | |
|         url = httpbin('post')
 | |
|         post1 = requests.post(url).raise_for_status()
 | |
| 
 | |
|         post1 = requests.post(url, data={'some': 'data'})
 | |
|         assert post1.status_code == 200
 | |
| 
 | |
|         with open('requirements.txt') as f:
 | |
|             post2 = requests.post(url, files={'some': f})
 | |
|         assert post2.status_code == 200
 | |
| 
 | |
|         post4 = requests.post(url, data='[{"some": "json"}]')
 | |
|         assert post4.status_code == 200
 | |
| 
 | |
|         with pytest.raises(ValueError):
 | |
|             requests.post(url, files=['bad file data'])
 | |
| 
 | |
|     def test_POSTBIN_GET_POST_FILES_WITH_DATA(self, httpbin):
 | |
| 
 | |
|         url = httpbin('post')
 | |
|         post1 = requests.post(url).raise_for_status()
 | |
| 
 | |
|         post1 = requests.post(url, data={'some': 'data'})
 | |
|         assert post1.status_code == 200
 | |
| 
 | |
|         with open('requirements.txt') as f:
 | |
|             post2 = requests.post(url,
 | |
|                 data={'some': 'data'}, files={'some': f})
 | |
|         assert post2.status_code == 200
 | |
| 
 | |
|         post4 = requests.post(url, data='[{"some": "json"}]')
 | |
|         assert post4.status_code == 200
 | |
| 
 | |
|         with pytest.raises(ValueError):
 | |
|             requests.post(url, files=['bad file data'])
 | |
| 
 | |
|     def test_conflicting_post_params(self, httpbin):
 | |
|         url = httpbin('post')
 | |
|         with open('requirements.txt') as f:
 | |
|             pytest.raises(ValueError, "requests.post(url, data='[{\"some\": \"data\"}]', files={'some': f})")
 | |
|             pytest.raises(ValueError, "requests.post(url, data=u('[{\"some\": \"data\"}]'), files={'some': f})")
 | |
| 
 | |
|     def test_request_ok_set(self, httpbin):
 | |
|         r = requests.get(httpbin('status', '404'))
 | |
|         assert not r.ok
 | |
| 
 | |
|     def test_status_raising(self, httpbin):
 | |
|         r = requests.get(httpbin('status', '404'))
 | |
|         with pytest.raises(requests.exceptions.HTTPError):
 | |
|             r.raise_for_status()
 | |
| 
 | |
|         r = requests.get(httpbin('status', '500'))
 | |
|         assert not r.ok
 | |
| 
 | |
|     def test_decompress_gzip(self, httpbin):
 | |
|         r = requests.get(httpbin('gzip'))
 | |
|         r.content.decode('ascii')
 | |
| 
 | |
|     def test_unicode_get(self, httpbin):
 | |
|         url = httpbin('/get')
 | |
|         requests.get(url, params={'foo': 'føø'})
 | |
|         requests.get(url, params={'føø': 'føø'})
 | |
|         requests.get(url, params={'føø': 'føø'})
 | |
|         requests.get(url, params={'foo': 'foo'})
 | |
|         requests.get(httpbin('ø'), params={'foo': 'foo'})
 | |
| 
 | |
|     def test_unicode_header_name(self, httpbin):
 | |
|         requests.put(
 | |
|             httpbin('put'),
 | |
|             headers={str('Content-Type'): 'application/octet-stream'},
 | |
|             data='\xff')  # compat.str is unicode.
 | |
| 
 | |
|     def test_pyopenssl_redirect(self, httpsbin_url, httpbin_ca_bundle):
 | |
|         requests.get(httpsbin_url('status', '301'), verify=httpbin_ca_bundle)
 | |
| 
 | |
|     def test_urlencoded_get_query_multivalued_param(self, httpbin):
 | |
| 
 | |
|         r = requests.get(httpbin('get'), params=dict(test=['foo', 'baz']))
 | |
|         assert r.status_code == 200
 | |
|         assert r.url == httpbin('get?test=foo&test=baz')
 | |
| 
 | |
|     def test_different_encodings_dont_break_post(self, httpbin):
 | |
|         r = requests.post(httpbin('post'),
 | |
|             data={'stuff': json.dumps({'a': 123})},
 | |
|             params={'blah': 'asdf1234'},
 | |
|             files={'file': ('test_requests.py', open(__file__, 'rb'))})
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_unicode_multipart_post(self, httpbin):
 | |
|         r = requests.post(httpbin('post'),
 | |
|             data={'stuff': u('ëlïxr')},
 | |
|             files={'file': ('test_requests.py', open(__file__, 'rb'))})
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         r = requests.post(httpbin('post'),
 | |
|             data={'stuff': u('ëlïxr').encode('utf-8')},
 | |
|             files={'file': ('test_requests.py', open(__file__, 'rb'))})
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         r = requests.post(httpbin('post'),
 | |
|             data={'stuff': 'elixr'},
 | |
|             files={'file': ('test_requests.py', open(__file__, 'rb'))})
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         r = requests.post(httpbin('post'),
 | |
|             data={'stuff': 'elixr'.encode('utf-8')},
 | |
|             files={'file': ('test_requests.py', open(__file__, 'rb'))})
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_unicode_multipart_post_fieldnames(self, httpbin):
 | |
|         filename = os.path.splitext(__file__)[0] + '.py'
 | |
|         r = requests.Request(method='POST',
 | |
|                              url=httpbin('post'),
 | |
|                              data={'stuff'.encode('utf-8'): 'elixr'},
 | |
|                              files={'file': ('test_requests.py',
 | |
|                                              open(filename, 'rb'))})
 | |
|         prep = r.prepare()
 | |
|         assert b'name="stuff"' in prep.body
 | |
|         assert b'name="b\'stuff\'"' not in prep.body
 | |
| 
 | |
|     def test_unicode_method_name(self, httpbin):
 | |
|         files = {'file': open('test_requests.py', 'rb')}
 | |
|         r = requests.request(
 | |
|             method=u('POST'), url=httpbin('post'), files=files)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_unicode_method_name_with_request_object(self, httpbin):
 | |
|         files = {'file': open('test_requests.py', 'rb')}
 | |
|         s = requests.Session()
 | |
|         req = requests.Request(u("POST"), httpbin('post'), files=files)
 | |
|         prep = s.prepare_request(req)
 | |
|         assert isinstance(prep.method, builtin_str)
 | |
|         assert prep.method == "POST"
 | |
| 
 | |
|         resp = s.send(prep)
 | |
|         assert resp.status_code == 200
 | |
| 
 | |
|     def test_custom_content_type(self, httpbin):
 | |
|         r = requests.post(
 | |
|             httpbin('post'),
 | |
|             data={'stuff': json.dumps({'a': 123})},
 | |
|             files={'file1': ('test_requests.py', open(__file__, 'rb')),
 | |
|                    'file2': ('test_requests', open(__file__, 'rb'),
 | |
|                              'text/py-content-type')})
 | |
|         assert r.status_code == 200
 | |
|         assert b"text/py-content-type" in r.request.body
 | |
| 
 | |
|     def test_hook_receives_request_arguments(self, httpbin):
 | |
|         def hook(resp, **kwargs):
 | |
|             assert resp is not None
 | |
|             assert kwargs != {}
 | |
| 
 | |
|         requests.Request('GET', httpbin(), hooks={'response': hook})
 | |
| 
 | |
|     def test_session_hooks_are_used_with_no_request_hooks(self, httpbin):
 | |
|         hook = lambda x, *args, **kwargs: x
 | |
|         s = requests.Session()
 | |
|         s.hooks['response'].append(hook)
 | |
|         r = requests.Request('GET', httpbin())
 | |
|         prep = s.prepare_request(r)
 | |
|         assert prep.hooks['response'] != []
 | |
|         assert prep.hooks['response'] == [hook]
 | |
| 
 | |
|     def test_session_hooks_are_overridden_by_request_hooks(self, httpbin):
 | |
|         hook1 = lambda x, *args, **kwargs: x
 | |
|         hook2 = lambda x, *args, **kwargs: x
 | |
|         assert hook1 is not hook2
 | |
|         s = requests.Session()
 | |
|         s.hooks['response'].append(hook2)
 | |
|         r = requests.Request('GET', httpbin(), hooks={'response': [hook1]})
 | |
|         prep = s.prepare_request(r)
 | |
|         assert prep.hooks['response'] == [hook1]
 | |
| 
 | |
|     def test_prepared_request_hook(self, httpbin):
 | |
|         def hook(resp, **kwargs):
 | |
|             resp.hook_working = True
 | |
|             return resp
 | |
| 
 | |
|         req = requests.Request('GET', httpbin(), hooks={'response': hook})
 | |
|         prep = req.prepare()
 | |
| 
 | |
|         s = requests.Session()
 | |
|         s.proxies = getproxies()
 | |
|         resp = s.send(prep)
 | |
| 
 | |
|         assert hasattr(resp, 'hook_working')
 | |
| 
 | |
|     def test_prepared_from_session(self, httpbin):
 | |
|         class DummyAuth(requests.auth.AuthBase):
 | |
|             def __call__(self, r):
 | |
|                 r.headers['Dummy-Auth-Test'] = 'dummy-auth-test-ok'
 | |
|                 return r
 | |
| 
 | |
|         req = requests.Request('GET', httpbin('headers'))
 | |
|         assert not req.auth
 | |
| 
 | |
|         s = requests.Session()
 | |
|         s.auth = DummyAuth()
 | |
| 
 | |
|         prep = s.prepare_request(req)
 | |
|         resp = s.send(prep)
 | |
| 
 | |
|         assert resp.json()['headers'][
 | |
|             'Dummy-Auth-Test'] == 'dummy-auth-test-ok'
 | |
| 
 | |
|     def test_prepare_request_with_bytestring_url(self):
 | |
|         req = requests.Request('GET', b'https://httpbin.org/')
 | |
|         s = requests.Session()
 | |
|         prep = s.prepare_request(req)
 | |
|         assert prep.url == "https://httpbin.org/"
 | |
| 
 | |
|     def test_links(self):
 | |
|         r = requests.Response()
 | |
|         r.headers = {
 | |
|             'cache-control': 'public, max-age=60, s-maxage=60',
 | |
|             'connection': 'keep-alive',
 | |
|             'content-encoding': 'gzip',
 | |
|             'content-type': 'application/json; charset=utf-8',
 | |
|             'date': 'Sat, 26 Jan 2013 16:47:56 GMT',
 | |
|             'etag': '"6ff6a73c0e446c1f61614769e3ceb778"',
 | |
|             'last-modified': 'Sat, 26 Jan 2013 16:22:39 GMT',
 | |
|             'link': ('<https://api.github.com/users/kennethreitz/repos?'
 | |
|                      'page=2&per_page=10>; rel="next", <https://api.github.'
 | |
|                      'com/users/kennethreitz/repos?page=7&per_page=10>; '
 | |
|                      ' rel="last"'),
 | |
|             'server': 'GitHub.com',
 | |
|             'status': '200 OK',
 | |
|             'vary': 'Accept',
 | |
|             'x-content-type-options': 'nosniff',
 | |
|             'x-github-media-type': 'github.beta',
 | |
|             'x-ratelimit-limit': '60',
 | |
|             'x-ratelimit-remaining': '57'
 | |
|         }
 | |
|         assert r.links['next']['rel'] == 'next'
 | |
| 
 | |
|     def test_cookie_parameters(self):
 | |
|         key = 'some_cookie'
 | |
|         value = 'some_value'
 | |
|         secure = True
 | |
|         domain = 'test.com'
 | |
|         rest = {'HttpOnly': True}
 | |
| 
 | |
|         jar = requests.cookies.RequestsCookieJar()
 | |
|         jar.set(key, value, secure=secure, domain=domain, rest=rest)
 | |
| 
 | |
|         assert len(jar) == 1
 | |
|         assert 'some_cookie' in jar
 | |
| 
 | |
|         cookie = list(jar)[0]
 | |
|         assert cookie.secure == secure
 | |
|         assert cookie.domain == domain
 | |
|         assert cookie._rest['HttpOnly'] == rest['HttpOnly']
 | |
| 
 | |
|     def test_cookie_as_dict_keeps_len(self):
 | |
|         key = 'some_cookie'
 | |
|         value = 'some_value'
 | |
| 
 | |
|         key1 = 'some_cookie1'
 | |
|         value1 = 'some_value1'
 | |
| 
 | |
|         jar = requests.cookies.RequestsCookieJar()
 | |
|         jar.set(key, value)
 | |
|         jar.set(key1, value1)
 | |
| 
 | |
|         d1 = dict(jar)
 | |
|         d2 = dict(jar.iteritems())
 | |
|         d3 = dict(jar.items())
 | |
| 
 | |
|         assert len(jar) == 2
 | |
|         assert len(d1) == 2
 | |
|         assert len(d2) == 2
 | |
|         assert len(d3) == 2
 | |
| 
 | |
|     def test_cookie_as_dict_keeps_items(self):
 | |
|         key = 'some_cookie'
 | |
|         value = 'some_value'
 | |
| 
 | |
|         key1 = 'some_cookie1'
 | |
|         value1 = 'some_value1'
 | |
| 
 | |
|         jar = requests.cookies.RequestsCookieJar()
 | |
|         jar.set(key, value)
 | |
|         jar.set(key1, value1)
 | |
| 
 | |
|         d1 = dict(jar)
 | |
|         d2 = dict(jar.iteritems())
 | |
|         d3 = dict(jar.items())
 | |
| 
 | |
|         assert d1['some_cookie'] == 'some_value'
 | |
|         assert d2['some_cookie'] == 'some_value'
 | |
|         assert d3['some_cookie1'] == 'some_value1'
 | |
| 
 | |
|     def test_cookie_as_dict_keys(self):
 | |
|         key = 'some_cookie'
 | |
|         value = 'some_value'
 | |
| 
 | |
|         key1 = 'some_cookie1'
 | |
|         value1 = 'some_value1'
 | |
| 
 | |
|         jar = requests.cookies.RequestsCookieJar()
 | |
|         jar.set(key, value)
 | |
|         jar.set(key1, value1)
 | |
| 
 | |
|         keys = jar.keys()
 | |
|         assert keys == list(keys)
 | |
|         # make sure one can use keys multiple times
 | |
|         assert list(keys) == list(keys)
 | |
| 
 | |
|     def test_cookie_as_dict_values(self):
 | |
|         key = 'some_cookie'
 | |
|         value = 'some_value'
 | |
| 
 | |
|         key1 = 'some_cookie1'
 | |
|         value1 = 'some_value1'
 | |
| 
 | |
|         jar = requests.cookies.RequestsCookieJar()
 | |
|         jar.set(key, value)
 | |
|         jar.set(key1, value1)
 | |
| 
 | |
|         values = jar.values()
 | |
|         assert values == list(values)
 | |
|         # make sure one can use values multiple times
 | |
|         assert list(values) == list(values)
 | |
| 
 | |
|     def test_cookie_as_dict_items(self):
 | |
|         key = 'some_cookie'
 | |
|         value = 'some_value'
 | |
| 
 | |
|         key1 = 'some_cookie1'
 | |
|         value1 = 'some_value1'
 | |
| 
 | |
|         jar = requests.cookies.RequestsCookieJar()
 | |
|         jar.set(key, value)
 | |
|         jar.set(key1, value1)
 | |
| 
 | |
|         items = jar.items()
 | |
|         assert items == list(items)
 | |
|         # make sure one can use items multiple times
 | |
|         assert list(items) == list(items)
 | |
| 
 | |
|     def test_time_elapsed_blank(self, httpbin):
 | |
|         r = requests.get(httpbin('get'))
 | |
|         td = r.elapsed
 | |
|         total_seconds = ((td.microseconds + (td.seconds + td.days * 24 * 3600)
 | |
|                          * 10**6) / 10**6)
 | |
|         assert total_seconds > 0.0
 | |
| 
 | |
|     def test_response_is_iterable(self):
 | |
|         r = requests.Response()
 | |
|         io = StringIO.StringIO('abc')
 | |
|         read_ = io.read
 | |
| 
 | |
|         def read_mock(amt, decode_content=None):
 | |
|             return read_(amt)
 | |
|         setattr(io, 'read', read_mock)
 | |
|         r.raw = io
 | |
|         assert next(iter(r))
 | |
|         io.close()
 | |
| 
 | |
|     def test_response_decode_unicode(self):
 | |
|         """
 | |
|         When called with decode_unicode, Response.iter_content should always
 | |
|         return unicode.
 | |
|         """
 | |
|         r = requests.Response()
 | |
|         r._content_consumed = True
 | |
|         r._content = b'the content'
 | |
|         r.encoding = 'ascii'
 | |
| 
 | |
|         chunks = r.iter_content(decode_unicode=True)
 | |
|         assert all(isinstance(chunk, str) for chunk in chunks)
 | |
| 
 | |
|         # also for streaming
 | |
|         r = requests.Response()
 | |
|         r.raw = io.BytesIO(b'the content')
 | |
|         r.encoding = 'ascii'
 | |
|         chunks = r.iter_content(decode_unicode=True)
 | |
|         assert all(isinstance(chunk, str) for chunk in chunks)
 | |
| 
 | |
|     def test_request_and_response_are_pickleable(self, httpbin):
 | |
|         r = requests.get(httpbin('get'))
 | |
| 
 | |
|         # verify we can pickle the original request
 | |
|         assert pickle.loads(pickle.dumps(r.request))
 | |
| 
 | |
|         # verify we can pickle the response and that we have access to
 | |
|         # the original request.
 | |
|         pr = pickle.loads(pickle.dumps(r))
 | |
|         assert r.request.url == pr.request.url
 | |
|         assert r.request.headers == pr.request.headers
 | |
| 
 | |
|     def test_get_auth_from_url(self):
 | |
|         url = 'http://user:pass@complex.url.com/path?query=yes'
 | |
|         assert ('user', 'pass') == requests.utils.get_auth_from_url(url)
 | |
| 
 | |
|     def test_get_auth_from_url_encoded_spaces(self):
 | |
|         url = 'http://user:pass%20pass@complex.url.com/path?query=yes'
 | |
|         assert ('user', 'pass pass') == requests.utils.get_auth_from_url(url)
 | |
| 
 | |
|     def test_get_auth_from_url_not_encoded_spaces(self):
 | |
|         url = 'http://user:pass pass@complex.url.com/path?query=yes'
 | |
|         assert ('user', 'pass pass') == requests.utils.get_auth_from_url(url)
 | |
| 
 | |
|     def test_get_auth_from_url_percent_chars(self):
 | |
|         url = 'http://user%25user:pass@complex.url.com/path?query=yes'
 | |
|         assert ('user%user', 'pass') == requests.utils.get_auth_from_url(url)
 | |
| 
 | |
|     def test_get_auth_from_url_encoded_hashes(self):
 | |
|         url = 'http://user:pass%23pass@complex.url.com/path?query=yes'
 | |
|         assert ('user', 'pass#pass') == requests.utils.get_auth_from_url(url)
 | |
| 
 | |
|     def test_cannot_send_unprepared_requests(self, httpbin):
 | |
|         r = requests.Request(url=httpbin())
 | |
|         with pytest.raises(ValueError):
 | |
|             requests.Session().send(r)
 | |
| 
 | |
|     def test_http_error(self):
 | |
|         error = requests.exceptions.HTTPError()
 | |
|         assert not error.response
 | |
|         response = requests.Response()
 | |
|         error = requests.exceptions.HTTPError(response=response)
 | |
|         assert error.response == response
 | |
|         error = requests.exceptions.HTTPError('message', response=response)
 | |
|         assert str(error) == 'message'
 | |
|         assert error.response == response
 | |
| 
 | |
|     def test_session_pickling(self, httpbin):
 | |
|         r = requests.Request('GET', httpbin('get'))
 | |
|         s = requests.Session()
 | |
| 
 | |
|         s = pickle.loads(pickle.dumps(s))
 | |
|         s.proxies = getproxies()
 | |
| 
 | |
|         r = s.send(r.prepare())
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_fixes_1329(self, httpbin):
 | |
|         """
 | |
|         Ensure that header updates are done case-insensitively.
 | |
|         """
 | |
|         s = requests.Session()
 | |
|         s.headers.update({'ACCEPT': 'BOGUS'})
 | |
|         s.headers.update({'accept': 'application/json'})
 | |
|         r = s.get(httpbin('get'))
 | |
|         headers = r.request.headers
 | |
|         assert headers['accept'] == 'application/json'
 | |
|         assert headers['Accept'] == 'application/json'
 | |
|         assert headers['ACCEPT'] == 'application/json'
 | |
| 
 | |
|     def test_uppercase_scheme_redirect(self, httpbin):
 | |
|         parts = urlparse(httpbin('html'))
 | |
|         url = "HTTP://" + parts.netloc + parts.path
 | |
|         r = requests.get(httpbin('redirect-to'), params={'url': url})
 | |
|         assert r.status_code == 200
 | |
|         assert r.url.lower() == url.lower()
 | |
| 
 | |
|     def test_transport_adapter_ordering(self):
 | |
|         s = requests.Session()
 | |
|         order = ['https://', 'http://']
 | |
|         assert order == list(s.adapters)
 | |
|         s.mount('http://git', HTTPAdapter())
 | |
|         s.mount('http://github', HTTPAdapter())
 | |
|         s.mount('http://github.com', HTTPAdapter())
 | |
|         s.mount('http://github.com/about/', HTTPAdapter())
 | |
|         order = [
 | |
|             'http://github.com/about/',
 | |
|             'http://github.com',
 | |
|             'http://github',
 | |
|             'http://git',
 | |
|             'https://',
 | |
|             'http://',
 | |
|         ]
 | |
|         assert order == list(s.adapters)
 | |
|         s.mount('http://gittip', HTTPAdapter())
 | |
|         s.mount('http://gittip.com', HTTPAdapter())
 | |
|         s.mount('http://gittip.com/about/', HTTPAdapter())
 | |
|         order = [
 | |
|             'http://github.com/about/',
 | |
|             'http://gittip.com/about/',
 | |
|             'http://github.com',
 | |
|             'http://gittip.com',
 | |
|             'http://github',
 | |
|             'http://gittip',
 | |
|             'http://git',
 | |
|             'https://',
 | |
|             'http://',
 | |
|         ]
 | |
|         assert order == list(s.adapters)
 | |
|         s2 = requests.Session()
 | |
|         s2.adapters = {'http://': HTTPAdapter()}
 | |
|         s2.mount('https://', HTTPAdapter())
 | |
|         assert 'http://' in s2.adapters
 | |
|         assert 'https://' in s2.adapters
 | |
| 
 | |
|     def test_header_remove_is_case_insensitive(self, httpbin):
 | |
|         # From issue #1321
 | |
|         s = requests.Session()
 | |
|         s.headers['foo'] = 'bar'
 | |
|         r = s.get(httpbin('get'), headers={'FOO': None})
 | |
|         assert 'foo' not in r.request.headers
 | |
| 
 | |
|     def test_params_are_merged_case_sensitive(self, httpbin):
 | |
|         s = requests.Session()
 | |
|         s.params['foo'] = 'bar'
 | |
|         r = s.get(httpbin('get'), params={'FOO': 'bar'})
 | |
|         assert r.json()['args'] == {'foo': 'bar', 'FOO': 'bar'}
 | |
| 
 | |
|     def test_long_authinfo_in_url(self):
 | |
|         url = 'http://{0}:{1}@{2}:9000/path?query#frag'.format(
 | |
|             'E8A3BE87-9E3F-4620-8858-95478E385B5B',
 | |
|             'EA770032-DA4D-4D84-8CE9-29C6D910BF1E',
 | |
|             'exactly-------------sixty-----------three------------characters',
 | |
|         )
 | |
|         r = requests.Request('GET', url).prepare()
 | |
|         assert r.url == url
 | |
| 
 | |
|     def test_header_keys_are_native(self, httpbin):
 | |
|         headers = {u('unicode'): 'blah', 'byte'.encode('ascii'): 'blah'}
 | |
|         r = requests.Request('GET', httpbin('get'), headers=headers)
 | |
|         p = r.prepare()
 | |
| 
 | |
|         # This is testing that they are builtin strings. A bit weird, but there
 | |
|         # we go.
 | |
|         assert 'unicode' in p.headers.keys()
 | |
|         assert 'byte' in p.headers.keys()
 | |
| 
 | |
|     def test_can_send_nonstring_objects_with_files(self, httpbin):
 | |
|         data = {'a': 0.0}
 | |
|         files = {'b': 'foo'}
 | |
|         r = requests.Request('POST', httpbin('post'), data=data, files=files)
 | |
|         p = r.prepare()
 | |
| 
 | |
|         assert 'multipart/form-data' in p.headers['Content-Type']
 | |
| 
 | |
|     def test_can_send_bytes_bytearray_objects_with_files(self, httpbin):
 | |
|         # Test bytes:
 | |
|         data = {'a': 'this is a string'}
 | |
|         files = {'b': b'foo'}
 | |
|         r = requests.Request('POST', httpbin('post'), data=data, files=files)
 | |
|         p = r.prepare()
 | |
|         assert 'multipart/form-data' in p.headers['Content-Type']
 | |
|         # Test bytearrays:
 | |
|         files = {'b': bytearray(b'foo')}
 | |
|         r = requests.Request('POST', httpbin('post'), data=data, files=files)
 | |
|         p = r.prepare()
 | |
|         assert 'multipart/form-data' in p.headers['Content-Type']
 | |
| 
 | |
|     def test_can_send_file_object_with_non_string_filename(self, httpbin):
 | |
|         f = io.BytesIO()
 | |
|         f.name = 2
 | |
|         r = requests.Request('POST', httpbin('post'), files={'f': f})
 | |
|         p = r.prepare()
 | |
| 
 | |
|         assert 'multipart/form-data' in p.headers['Content-Type']
 | |
| 
 | |
|     def test_autoset_header_values_are_native(self, httpbin):
 | |
|         data = 'this is a string'
 | |
|         length = '16'
 | |
|         req = requests.Request('POST', httpbin('post'), data=data)
 | |
|         p = req.prepare()
 | |
| 
 | |
|         assert p.headers['Content-Length'] == length
 | |
| 
 | |
|     def test_nonhttp_schemes_dont_check_URLs(self):
 | |
|         test_urls = (
 | |
|             'data:image/gif;base64,R0lGODlhAQABAHAAACH5BAUAAAAALAAAAAABAAEAAAICRAEAOw==',
 | |
|             'file:///etc/passwd',
 | |
|             'magnet:?xt=urn:btih:be08f00302bc2d1d3cfa3af02024fa647a271431',
 | |
|         )
 | |
|         for test_url in test_urls:
 | |
|             req = requests.Request('GET', test_url)
 | |
|             preq = req.prepare()
 | |
|             assert test_url == preq.url
 | |
| 
 | |
|     def test_auth_is_stripped_on_redirect_off_host(self, httpbin):
 | |
|         r = requests.get(
 | |
|             httpbin('redirect-to'),
 | |
|             params={'url': 'http://www.google.co.uk'},
 | |
|             auth=('user', 'pass'),
 | |
|         )
 | |
|         assert r.history[0].request.headers['Authorization']
 | |
|         assert not r.request.headers.get('Authorization', '')
 | |
| 
 | |
|     def test_auth_is_retained_for_redirect_on_host(self, httpbin):
 | |
|         r = requests.get(httpbin('redirect/1'), auth=('user', 'pass'))
 | |
|         h1 = r.history[0].request.headers['Authorization']
 | |
|         h2 = r.request.headers['Authorization']
 | |
| 
 | |
|         assert h1 == h2
 | |
| 
 | |
|     def test_manual_redirect_with_partial_body_read(self, httpbin):
 | |
|         s = requests.Session()
 | |
|         r1 = s.get(httpbin('redirect/2'), allow_redirects=False, stream=True)
 | |
|         assert r1.is_redirect
 | |
|         rg = s.resolve_redirects(r1, r1.request, stream=True)
 | |
| 
 | |
|         # read only the first eight bytes of the response body,
 | |
|         # then follow the redirect
 | |
|         r1.iter_content(8)
 | |
|         r2 = next(rg)
 | |
|         assert r2.is_redirect
 | |
| 
 | |
|         # read all of the response via iter_content,
 | |
|         # then follow the redirect
 | |
|         for _ in r2.iter_content():
 | |
|             pass
 | |
|         r3 = next(rg)
 | |
|         assert not r3.is_redirect
 | |
| 
 | |
|     def _patch_adapter_gzipped_redirect(self, session, url):
 | |
|         adapter = session.get_adapter(url=url)
 | |
|         org_build_response = adapter.build_response
 | |
|         self._patched_response = False
 | |
| 
 | |
|         def build_response(*args, **kwargs):
 | |
|             resp = org_build_response(*args, **kwargs)
 | |
|             if not self._patched_response:
 | |
|                 resp.raw.headers['content-encoding'] = 'gzip'
 | |
|                 self._patched_response = True
 | |
|             return resp
 | |
| 
 | |
|         adapter.build_response = build_response
 | |
| 
 | |
|     def test_redirect_with_wrong_gzipped_header(self, httpbin):
 | |
|         s = requests.Session()
 | |
|         url = httpbin('redirect/1')
 | |
|         self._patch_adapter_gzipped_redirect(s, url)
 | |
|         s.get(url)
 | |
| 
 | |
|     def test_basic_auth_str_is_always_native(self):
 | |
|         s = _basic_auth_str("test", "test")
 | |
|         assert isinstance(s, builtin_str)
 | |
|         assert s == "Basic dGVzdDp0ZXN0"
 | |
| 
 | |
|     def test_requests_history_is_saved(self, httpbin):
 | |
|         r = requests.get(httpbin('redirect/5'))
 | |
|         total = r.history[-1].history
 | |
|         i = 0
 | |
|         for item in r.history:
 | |
|             assert item.history == total[0:i]
 | |
|             i = i + 1
 | |
| 
 | |
|     def test_json_param_post_content_type_works(self, httpbin):
 | |
|         r = requests.post(
 | |
|             httpbin('post'),
 | |
|             json={'life': 42}
 | |
|         )
 | |
|         assert r.status_code == 200
 | |
|         assert 'application/json' in r.request.headers['Content-Type']
 | |
|         assert {'life': 42} == r.json()['json']
 | |
| 
 | |
|     def test_json_param_post_should_not_override_data_param(self, httpbin):
 | |
|         r = requests.Request(method='POST', url=httpbin('post'),
 | |
|                              data={'stuff': 'elixr'},
 | |
|                              json={'music': 'flute'})
 | |
|         prep = r.prepare()
 | |
|         assert 'stuff=elixr' == prep.body
 | |
| 
 | |
|     def test_response_iter_lines(self, httpbin):
 | |
|         r = requests.get(httpbin('stream/4'), stream=True)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         it = r.iter_lines()
 | |
|         next(it)
 | |
|         assert len(list(it)) == 3
 | |
| 
 | |
|     def test_unconsumed_session_response_closes_connection(self, httpbin):
 | |
|         s = requests.session()
 | |
| 
 | |
|         with contextlib.closing(s.get(httpbin('stream/4'), stream=True)) as response:
 | |
|             pass
 | |
| 
 | |
|         assert response._content_consumed is False
 | |
|         assert response.raw.closed
 | |
| 
 | |
|     @pytest.mark.xfail
 | |
|     def test_response_iter_lines_reentrant(self, httpbin):
 | |
|         """Response.iter_lines() is not reentrant safe"""
 | |
|         r = requests.get(httpbin('stream/4'), stream=True)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|         next(r.iter_lines())
 | |
|         assert len(list(r.iter_lines())) == 3
 | |
| 
 | |
| 
 | |
| class TestContentEncodingDetection(unittest.TestCase):
 | |
| 
 | |
|     def test_none(self):
 | |
|         encodings = requests.utils.get_encodings_from_content('')
 | |
|         assert not len(encodings)
 | |
| 
 | |
|     def test_html_charset(self):
 | |
|         """HTML5 meta charset attribute"""
 | |
|         content = '<meta charset="UTF-8">'
 | |
|         encodings = requests.utils.get_encodings_from_content(content)
 | |
|         assert len(encodings) == 1
 | |
|         assert encodings[0] == 'UTF-8'
 | |
| 
 | |
|     def test_html4_pragma(self):
 | |
|         """HTML4 pragma directive"""
 | |
|         content = '<meta http-equiv="Content-type" content="text/html;charset=UTF-8">'
 | |
|         encodings = requests.utils.get_encodings_from_content(content)
 | |
|         assert len(encodings) == 1
 | |
|         assert encodings[0] == 'UTF-8'
 | |
| 
 | |
|     def test_xhtml_pragma(self):
 | |
|         """XHTML 1.x served with text/html MIME type"""
 | |
|         content = '<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />'
 | |
|         encodings = requests.utils.get_encodings_from_content(content)
 | |
|         assert len(encodings) == 1
 | |
|         assert encodings[0] == 'UTF-8'
 | |
| 
 | |
|     def test_xml(self):
 | |
|         """XHTML 1.x served as XML"""
 | |
|         content = '<?xml version="1.0" encoding="UTF-8"?>'
 | |
|         encodings = requests.utils.get_encodings_from_content(content)
 | |
|         assert len(encodings) == 1
 | |
|         assert encodings[0] == 'UTF-8'
 | |
| 
 | |
|     def test_precedence(self):
 | |
|         content = '''
 | |
|         <?xml version="1.0" encoding="XML"?>
 | |
|         <meta charset="HTML5">
 | |
|         <meta http-equiv="Content-type" content="text/html;charset=HTML4" />
 | |
|         '''.strip()
 | |
|         encodings = requests.utils.get_encodings_from_content(content)
 | |
|         assert encodings == ['HTML5', 'HTML4', 'XML']
 | |
| 
 | |
| 
 | |
| class TestCaseInsensitiveDict(unittest.TestCase):
 | |
| 
 | |
|     def test_mapping_init(self):
 | |
|         cid = CaseInsensitiveDict({'Foo': 'foo', 'BAr': 'bar'})
 | |
|         assert len(cid) == 2
 | |
|         assert 'foo' in cid
 | |
|         assert 'bar' in cid
 | |
| 
 | |
|     def test_iterable_init(self):
 | |
|         cid = CaseInsensitiveDict([('Foo', 'foo'), ('BAr', 'bar')])
 | |
|         assert len(cid) == 2
 | |
|         assert 'foo' in cid
 | |
|         assert 'bar' in cid
 | |
| 
 | |
|     def test_kwargs_init(self):
 | |
|         cid = CaseInsensitiveDict(FOO='foo', BAr='bar')
 | |
|         assert len(cid) == 2
 | |
|         assert 'foo' in cid
 | |
|         assert 'bar' in cid
 | |
| 
 | |
|     def test_docstring_example(self):
 | |
|         cid = CaseInsensitiveDict()
 | |
|         cid['Accept'] = 'application/json'
 | |
|         assert cid['aCCEPT'] == 'application/json'
 | |
|         assert list(cid) == ['Accept']
 | |
| 
 | |
|     def test_len(self):
 | |
|         cid = CaseInsensitiveDict({'a': 'a', 'b': 'b'})
 | |
|         cid['A'] = 'a'
 | |
|         assert len(cid) == 2
 | |
| 
 | |
|     def test_getitem(self):
 | |
|         cid = CaseInsensitiveDict({'Spam': 'blueval'})
 | |
|         assert cid['spam'] == 'blueval'
 | |
|         assert cid['SPAM'] == 'blueval'
 | |
| 
 | |
|     def test_fixes_649(self):
 | |
|         """__setitem__ should behave case-insensitively."""
 | |
|         cid = CaseInsensitiveDict()
 | |
|         cid['spam'] = 'oneval'
 | |
|         cid['Spam'] = 'twoval'
 | |
|         cid['sPAM'] = 'redval'
 | |
|         cid['SPAM'] = 'blueval'
 | |
|         assert cid['spam'] == 'blueval'
 | |
|         assert cid['SPAM'] == 'blueval'
 | |
|         assert list(cid.keys()) == ['SPAM']
 | |
| 
 | |
|     def test_delitem(self):
 | |
|         cid = CaseInsensitiveDict()
 | |
|         cid['Spam'] = 'someval'
 | |
|         del cid['sPam']
 | |
|         assert 'spam' not in cid
 | |
|         assert len(cid) == 0
 | |
| 
 | |
|     def test_contains(self):
 | |
|         cid = CaseInsensitiveDict()
 | |
|         cid['Spam'] = 'someval'
 | |
|         assert 'Spam' in cid
 | |
|         assert 'spam' in cid
 | |
|         assert 'SPAM' in cid
 | |
|         assert 'sPam' in cid
 | |
|         assert 'notspam' not in cid
 | |
| 
 | |
|     def test_get(self):
 | |
|         cid = CaseInsensitiveDict()
 | |
|         cid['spam'] = 'oneval'
 | |
|         cid['SPAM'] = 'blueval'
 | |
|         assert cid.get('spam') == 'blueval'
 | |
|         assert cid.get('SPAM') == 'blueval'
 | |
|         assert cid.get('sPam') == 'blueval'
 | |
|         assert cid.get('notspam', 'default') == 'default'
 | |
| 
 | |
|     def test_update(self):
 | |
|         cid = CaseInsensitiveDict()
 | |
|         cid['spam'] = 'blueval'
 | |
|         cid.update({'sPam': 'notblueval'})
 | |
|         assert cid['spam'] == 'notblueval'
 | |
|         cid = CaseInsensitiveDict({'Foo': 'foo', 'BAr': 'bar'})
 | |
|         cid.update({'fOO': 'anotherfoo', 'bAR': 'anotherbar'})
 | |
|         assert len(cid) == 2
 | |
|         assert cid['foo'] == 'anotherfoo'
 | |
|         assert cid['bar'] == 'anotherbar'
 | |
| 
 | |
|     def test_update_retains_unchanged(self):
 | |
|         cid = CaseInsensitiveDict({'foo': 'foo', 'bar': 'bar'})
 | |
|         cid.update({'foo': 'newfoo'})
 | |
|         assert cid['bar'] == 'bar'
 | |
| 
 | |
|     def test_iter(self):
 | |
|         cid = CaseInsensitiveDict({'Spam': 'spam', 'Eggs': 'eggs'})
 | |
|         keys = frozenset(['Spam', 'Eggs'])
 | |
|         assert frozenset(iter(cid)) == keys
 | |
| 
 | |
|     def test_equality(self):
 | |
|         cid = CaseInsensitiveDict({'SPAM': 'blueval', 'Eggs': 'redval'})
 | |
|         othercid = CaseInsensitiveDict({'spam': 'blueval', 'eggs': 'redval'})
 | |
|         assert cid == othercid
 | |
|         del othercid['spam']
 | |
|         assert cid != othercid
 | |
|         assert cid == {'spam': 'blueval', 'eggs': 'redval'}
 | |
|         assert cid != object()
 | |
| 
 | |
|     def test_setdefault(self):
 | |
|         cid = CaseInsensitiveDict({'Spam': 'blueval'})
 | |
|         assert cid.setdefault('spam', 'notblueval') == 'blueval'
 | |
|         assert cid.setdefault('notspam', 'notblueval') == 'notblueval'
 | |
| 
 | |
|     def test_lower_items(self):
 | |
|         cid = CaseInsensitiveDict({
 | |
|             'Accept': 'application/json',
 | |
|             'user-Agent': 'requests',
 | |
|         })
 | |
|         keyset = frozenset(lowerkey for lowerkey, v in cid.lower_items())
 | |
|         lowerkeyset = frozenset(['accept', 'user-agent'])
 | |
|         assert keyset == lowerkeyset
 | |
| 
 | |
|     def test_preserve_key_case(self):
 | |
|         cid = CaseInsensitiveDict({
 | |
|             'Accept': 'application/json',
 | |
|             'user-Agent': 'requests',
 | |
|         })
 | |
|         keyset = frozenset(['Accept', 'user-Agent'])
 | |
|         assert frozenset(i[0] for i in cid.items()) == keyset
 | |
|         assert frozenset(cid.keys()) == keyset
 | |
|         assert frozenset(cid) == keyset
 | |
| 
 | |
|     def test_preserve_last_key_case(self):
 | |
|         cid = CaseInsensitiveDict({
 | |
|             'Accept': 'application/json',
 | |
|             'user-Agent': 'requests',
 | |
|         })
 | |
|         cid.update({'ACCEPT': 'application/json'})
 | |
|         cid['USER-AGENT'] = 'requests'
 | |
|         keyset = frozenset(['ACCEPT', 'USER-AGENT'])
 | |
|         assert frozenset(i[0] for i in cid.items()) == keyset
 | |
|         assert frozenset(cid.keys()) == keyset
 | |
|         assert frozenset(cid) == keyset
 | |
| 
 | |
|     def test_copy(self):
 | |
|         cid = CaseInsensitiveDict({
 | |
|             'Accept': 'application/json',
 | |
|             'user-Agent': 'requests',
 | |
|         })
 | |
|         cid_copy = cid.copy()
 | |
|         assert cid == cid_copy
 | |
|         cid['changed'] = True
 | |
|         assert cid != cid_copy
 | |
| 
 | |
| 
 | |
| class UtilsTestCase(unittest.TestCase):
 | |
| 
 | |
|     def test_super_len_io_streams(self):
 | |
|         """ Ensures that we properly deal with different kinds of IO streams. """
 | |
|         # uses StringIO or io.StringIO (see import above)
 | |
|         from io import BytesIO
 | |
|         from requests.utils import super_len
 | |
| 
 | |
|         assert super_len(StringIO.StringIO()) == 0
 | |
|         assert super_len(
 | |
|             StringIO.StringIO('with so much drama in the LBC')) == 29
 | |
| 
 | |
|         assert super_len(BytesIO()) == 0
 | |
|         assert super_len(
 | |
|             BytesIO(b"it's kinda hard bein' snoop d-o-double-g")) == 40
 | |
| 
 | |
|         try:
 | |
|             import cStringIO
 | |
|         except ImportError:
 | |
|             pass
 | |
|         else:
 | |
|             assert super_len(
 | |
|                 cStringIO.StringIO('but some how, some way...')) == 25
 | |
| 
 | |
|     def test_super_len_correctly_calculates_len_of_partially_read_file(self):
 | |
|         """Ensure that we handle partially consumed file like objects."""
 | |
|         from requests.utils import super_len
 | |
|         s = StringIO.StringIO()
 | |
|         s.write('foobarbogus')
 | |
|         assert super_len(s) == 0
 | |
| 
 | |
|     def test_get_environ_proxies_ip_ranges(self):
 | |
|         """Ensures that IP addresses are correctly matches with ranges
 | |
|         in no_proxy variable."""
 | |
|         from requests.utils import get_environ_proxies
 | |
|         os.environ['no_proxy'] = "192.168.0.0/24,127.0.0.1,localhost.localdomain,172.16.1.1"
 | |
|         assert get_environ_proxies('http://192.168.0.1:5000/') == {}
 | |
|         assert get_environ_proxies('http://192.168.0.1/') == {}
 | |
|         assert get_environ_proxies('http://172.16.1.1/') == {}
 | |
|         assert get_environ_proxies('http://172.16.1.1:5000/') == {}
 | |
|         assert get_environ_proxies('http://192.168.1.1:5000/') != {}
 | |
|         assert get_environ_proxies('http://192.168.1.1/') != {}
 | |
| 
 | |
|     def test_get_environ_proxies(self):
 | |
|         """Ensures that IP addresses are correctly matches with ranges
 | |
|         in no_proxy variable."""
 | |
|         from requests.utils import get_environ_proxies
 | |
|         os.environ['no_proxy'] = "127.0.0.1,localhost.localdomain,192.168.0.0/24,172.16.1.1"
 | |
|         assert get_environ_proxies(
 | |
|             'http://localhost.localdomain:5000/v1.0/') == {}
 | |
|         assert get_environ_proxies('http://www.requests.com/') != {}
 | |
| 
 | |
|     def test_select_proxies(self):
 | |
|         """Make sure we can select per-host proxies correctly."""
 | |
|         from requests.utils import select_proxy
 | |
|         proxies = {'http': 'http://http.proxy',
 | |
|                    'http://some.host': 'http://some.host.proxy'}
 | |
|         assert select_proxy('hTTp://u:p@Some.Host/path', proxies) == 'http://some.host.proxy'
 | |
|         assert select_proxy('hTTp://u:p@Other.Host/path', proxies) == 'http://http.proxy'
 | |
|         assert select_proxy('hTTps://Other.Host', proxies) is None
 | |
| 
 | |
|     def test_guess_filename_when_int(self):
 | |
|         from requests.utils import guess_filename
 | |
|         assert None is guess_filename(1)
 | |
| 
 | |
|     def test_guess_filename_when_filename_is_an_int(self):
 | |
|         from requests.utils import guess_filename
 | |
|         fake = type('Fake', (object,), {'name': 1})()
 | |
|         assert None is guess_filename(fake)
 | |
| 
 | |
|     def test_guess_filename_with_file_like_obj(self):
 | |
|         from requests.utils import guess_filename
 | |
|         from requests import compat
 | |
|         fake = type('Fake', (object,), {'name': b'value'})()
 | |
|         guessed_name = guess_filename(fake)
 | |
|         assert b'value' == guessed_name
 | |
|         assert isinstance(guessed_name, compat.bytes)
 | |
| 
 | |
|     def test_guess_filename_with_unicode_name(self):
 | |
|         from requests.utils import guess_filename
 | |
|         from requests import compat
 | |
|         filename = b'value'.decode('utf-8')
 | |
|         fake = type('Fake', (object,), {'name': filename})()
 | |
|         guessed_name = guess_filename(fake)
 | |
|         assert filename == guessed_name
 | |
|         assert isinstance(guessed_name, compat.str)
 | |
| 
 | |
|     def test_is_ipv4_address(self):
 | |
|         from requests.utils import is_ipv4_address
 | |
|         assert is_ipv4_address('8.8.8.8')
 | |
|         assert not is_ipv4_address('8.8.8.8.8')
 | |
|         assert not is_ipv4_address('localhost.localdomain')
 | |
| 
 | |
|     def test_is_valid_cidr(self):
 | |
|         from requests.utils import is_valid_cidr
 | |
|         assert not is_valid_cidr('8.8.8.8')
 | |
|         assert is_valid_cidr('192.168.1.0/24')
 | |
| 
 | |
|     def test_dotted_netmask(self):
 | |
|         from requests.utils import dotted_netmask
 | |
|         assert dotted_netmask(8) == '255.0.0.0'
 | |
|         assert dotted_netmask(24) == '255.255.255.0'
 | |
|         assert dotted_netmask(25) == '255.255.255.128'
 | |
| 
 | |
|     def test_address_in_network(self):
 | |
|         from requests.utils import address_in_network
 | |
|         assert address_in_network('192.168.1.1', '192.168.1.0/24')
 | |
|         assert not address_in_network('172.16.0.1', '192.168.1.0/24')
 | |
| 
 | |
|     def test_get_auth_from_url(self):
 | |
|         """Ensures that username and password in well-encoded URI as per
 | |
|         RFC 3986 are correclty extracted."""
 | |
|         from requests.utils import get_auth_from_url
 | |
|         from requests.compat import quote
 | |
|         percent_encoding_test_chars = "%!*'();:@&=+$,/?#[] "
 | |
|         url_address = "request.com/url.html#test"
 | |
|         url = "http://" + quote(
 | |
|             percent_encoding_test_chars, '') + ':' + quote(
 | |
|             percent_encoding_test_chars, '') + '@' + url_address
 | |
|         (username, password) = get_auth_from_url(url)
 | |
|         assert username == percent_encoding_test_chars
 | |
|         assert password == percent_encoding_test_chars
 | |
| 
 | |
|     def test_requote_uri_with_unquoted_percents(self):
 | |
|         """Ensure we handle unquoted percent signs in redirects.
 | |
| 
 | |
|         See: https://github.com/kennethreitz/requests/issues/2356
 | |
|         """
 | |
|         from requests.utils import requote_uri
 | |
|         bad_uri = 'http://example.com/fiz?buz=%ppicture'
 | |
|         quoted = 'http://example.com/fiz?buz=%25ppicture'
 | |
|         assert quoted == requote_uri(bad_uri)
 | |
| 
 | |
|     def test_requote_uri_properly_requotes(self):
 | |
|         """Ensure requoting doesn't break expectations."""
 | |
|         from requests.utils import requote_uri
 | |
|         quoted = 'http://example.com/fiz?buz=%25ppicture'
 | |
|         assert quoted == requote_uri(quoted)
 | |
| 
 | |
| 
 | |
| class TestMorselToCookieExpires(unittest.TestCase):
 | |
| 
 | |
|     """Tests for morsel_to_cookie when morsel contains expires."""
 | |
| 
 | |
|     def test_expires_valid_str(self):
 | |
|         """Test case where we convert expires from string time."""
 | |
| 
 | |
|         morsel = Morsel()
 | |
|         morsel['expires'] = 'Thu, 01-Jan-1970 00:00:01 GMT'
 | |
|         cookie = morsel_to_cookie(morsel)
 | |
|         assert cookie.expires == 1
 | |
| 
 | |
|     def test_expires_invalid_int(self):
 | |
|         """Test case where an invalid type is passed for expires."""
 | |
| 
 | |
|         morsel = Morsel()
 | |
|         morsel['expires'] = 100
 | |
|         with pytest.raises(TypeError):
 | |
|             morsel_to_cookie(morsel)
 | |
| 
 | |
|     def test_expires_invalid_str(self):
 | |
|         """Test case where an invalid string is input."""
 | |
| 
 | |
|         morsel = Morsel()
 | |
|         morsel['expires'] = 'woops'
 | |
|         with pytest.raises(ValueError):
 | |
|             morsel_to_cookie(morsel)
 | |
| 
 | |
|     def test_expires_none(self):
 | |
|         """Test case where expires is None."""
 | |
| 
 | |
|         morsel = Morsel()
 | |
|         morsel['expires'] = None
 | |
|         cookie = morsel_to_cookie(morsel)
 | |
|         assert cookie.expires is None
 | |
| 
 | |
| 
 | |
| class TestMorselToCookieMaxAge(unittest.TestCase):
 | |
| 
 | |
|     """Tests for morsel_to_cookie when morsel contains max-age."""
 | |
| 
 | |
|     def test_max_age_valid_int(self):
 | |
|         """Test case where a valid max age in seconds is passed."""
 | |
| 
 | |
|         morsel = Morsel()
 | |
|         morsel['max-age'] = 60
 | |
|         cookie = morsel_to_cookie(morsel)
 | |
|         assert isinstance(cookie.expires, int)
 | |
| 
 | |
|     def test_max_age_invalid_str(self):
 | |
|         """Test case where a invalid max age is passed."""
 | |
| 
 | |
|         morsel = Morsel()
 | |
|         morsel['max-age'] = 'woops'
 | |
|         with pytest.raises(TypeError):
 | |
|             morsel_to_cookie(morsel)
 | |
| 
 | |
| 
 | |
| class TestTimeout:
 | |
|     def test_stream_timeout(self, httpbin):
 | |
|         try:
 | |
|             requests.get(httpbin('delay/10'), timeout=2.0)
 | |
|         except requests.exceptions.Timeout as e:
 | |
|             assert 'Read timed out' in e.args[0].args[0]
 | |
| 
 | |
|     def test_invalid_timeout(self, httpbin):
 | |
|         with pytest.raises(ValueError) as e:
 | |
|             requests.get(httpbin('get'), timeout=(3, 4, 5))
 | |
|         assert '(connect, read)' in str(e)
 | |
| 
 | |
|         with pytest.raises(ValueError) as e:
 | |
|             requests.get(httpbin('get'), timeout="foo")
 | |
|         assert 'must be an int or float' in str(e)
 | |
| 
 | |
|     def test_none_timeout(self, httpbin):
 | |
|         """ Check that you can set None as a valid timeout value.
 | |
| 
 | |
|         To actually test this behavior, we'd want to check that setting the
 | |
|         timeout to None actually lets the request block past the system default
 | |
|         timeout. However, this would make the test suite unbearably slow.
 | |
|         Instead we verify that setting the timeout to None does not prevent the
 | |
|         request from succeeding.
 | |
|         """
 | |
|         r = requests.get(httpbin('get'), timeout=None)
 | |
|         assert r.status_code == 200
 | |
| 
 | |
|     def test_read_timeout(self, httpbin):
 | |
|         try:
 | |
|             requests.get(httpbin('delay/10'), timeout=(None, 0.1))
 | |
|             assert False, "The recv() request should time out."
 | |
|         except ReadTimeout:
 | |
|             pass
 | |
| 
 | |
|     def test_connect_timeout(self):
 | |
|         try:
 | |
|             requests.get(TARPIT, timeout=(0.1, None))
 | |
|             assert False, "The connect() request should time out."
 | |
|         except ConnectTimeout as e:
 | |
|             assert isinstance(e, ConnectionError)
 | |
|             assert isinstance(e, Timeout)
 | |
| 
 | |
|     def test_total_timeout_connect(self):
 | |
|         try:
 | |
|             requests.get(TARPIT, timeout=(0.1, 0.1))
 | |
|             assert False, "The connect() request should time out."
 | |
|         except ConnectTimeout:
 | |
|             pass
 | |
| 
 | |
|     def test_encoded_methods(self, httpbin):
 | |
|         """See: https://github.com/kennethreitz/requests/issues/2316"""
 | |
|         r = requests.request(b'GET', httpbin('get'))
 | |
|         assert r.ok
 | |
| 
 | |
| 
 | |
| SendCall = collections.namedtuple('SendCall', ('args', 'kwargs'))
 | |
| 
 | |
| 
 | |
| class RedirectSession(SessionRedirectMixin):
 | |
|     def __init__(self, order_of_redirects):
 | |
|         self.redirects = order_of_redirects
 | |
|         self.calls = []
 | |
|         self.max_redirects = 30
 | |
|         self.cookies = {}
 | |
|         self.trust_env = False
 | |
| 
 | |
|     def send(self, *args, **kwargs):
 | |
|         self.calls.append(SendCall(args, kwargs))
 | |
|         return self.build_response()
 | |
| 
 | |
|     def build_response(self):
 | |
|         request = self.calls[-1].args[0]
 | |
|         r = requests.Response()
 | |
| 
 | |
|         try:
 | |
|             r.status_code = int(self.redirects.pop(0))
 | |
|         except IndexError:
 | |
|             r.status_code = 200
 | |
| 
 | |
|         r.headers = CaseInsensitiveDict({'Location': '/'})
 | |
|         r.raw = self._build_raw()
 | |
|         r.request = request
 | |
|         return r
 | |
| 
 | |
|     def _build_raw(self):
 | |
|         string = StringIO.StringIO('')
 | |
|         setattr(string, 'release_conn', lambda *args: args)
 | |
|         return string
 | |
| 
 | |
| 
 | |
| class TestRedirects:
 | |
|     default_keyword_args = {
 | |
|         'stream': False,
 | |
|         'verify': True,
 | |
|         'cert': None,
 | |
|         'timeout': None,
 | |
|         'allow_redirects': False,
 | |
|         'proxies': {},
 | |
|     }
 | |
| 
 | |
|     def test_requests_are_updated_each_time(self, httpbin):
 | |
|         session = RedirectSession([303, 307])
 | |
|         prep = requests.Request('POST', httpbin('post')).prepare()
 | |
|         r0 = session.send(prep)
 | |
|         assert r0.request.method == 'POST'
 | |
|         assert session.calls[-1] == SendCall((r0.request,), {})
 | |
|         redirect_generator = session.resolve_redirects(r0, prep)
 | |
|         for response in redirect_generator:
 | |
|             assert response.request.method == 'GET'
 | |
|             send_call = SendCall((response.request,),
 | |
|                                  TestRedirects.default_keyword_args)
 | |
|             assert session.calls[-1] == send_call
 | |
| 
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def list_of_tuples():
 | |
|     return [
 | |
|         (('a', 'b'), ('c', 'd')),
 | |
|         (('c', 'd'), ('a', 'b')),
 | |
|         (('a', 'b'), ('c', 'd'), ('e', 'f')),
 | |
|         ]
 | |
| 
 | |
| 
 | |
| def test_data_argument_accepts_tuples(list_of_tuples):
 | |
|     """
 | |
|     Ensure that the data argument will accept tuples of strings
 | |
|     and properly encode them.
 | |
|     """
 | |
|     for data in list_of_tuples:
 | |
|         p = PreparedRequest()
 | |
|         p.prepare(
 | |
|             method='GET',
 | |
|             url='http://www.example.com',
 | |
|             data=data,
 | |
|             hooks=default_hooks()
 | |
|         )
 | |
|         assert p.body == urlencode(data)
 | |
| 
 | |
| 
 | |
| def assert_copy(p, p_copy):
 | |
|     for attr in ('method', 'url', 'headers', '_cookies', 'body', 'hooks'):
 | |
|         assert getattr(p, attr) == getattr(p_copy, attr)
 | |
| 
 | |
| 
 | |
| def test_prepared_request_empty_copy():
 | |
|     p = PreparedRequest()
 | |
|     assert_copy(p, p.copy())
 | |
| 
 | |
| 
 | |
| def test_prepared_request_no_cookies_copy():
 | |
|     p = PreparedRequest()
 | |
|     p.prepare(
 | |
|         method='GET',
 | |
|         url='http://www.example.com',
 | |
|         data='foo=bar',
 | |
|         hooks=default_hooks()
 | |
|     )
 | |
|     assert_copy(p, p.copy())
 | |
| 
 | |
| 
 | |
| def test_prepared_request_complete_copy():
 | |
|     p = PreparedRequest()
 | |
|     p.prepare(
 | |
|         method='GET',
 | |
|         url='http://www.example.com',
 | |
|         data='foo=bar',
 | |
|         hooks=default_hooks(),
 | |
|         cookies={'foo': 'bar'}
 | |
|     )
 | |
|     assert_copy(p, p.copy())
 | |
| 
 | |
| 
 | |
| def test_prepare_unicode_url():
 | |
|     p = PreparedRequest()
 | |
|     p.prepare(
 | |
|         method='GET',
 | |
|         url=u('http://www.example.com/üniçø∂é'),
 | |
|     )
 | |
|     assert_copy(p, p.copy())
 | |
| 
 | |
| 
 | |
| def test_urllib3_retries(httpbin):
 | |
|     from requests.packages.urllib3.util import Retry
 | |
|     s = requests.Session()
 | |
|     s.mount('http://', HTTPAdapter(max_retries=Retry(
 | |
|         total=2, status_forcelist=[500]
 | |
|     )))
 | |
| 
 | |
|     with pytest.raises(RetryError):
 | |
|         s.get(httpbin('status/500'))
 | |
| 
 | |
| 
 | |
| def test_urllib3_pool_connection_closed(httpbin):
 | |
|     s = requests.Session()
 | |
|     s.mount('http://', HTTPAdapter(pool_connections=0, pool_maxsize=0))
 | |
| 
 | |
|     try:
 | |
|         s.get(httpbin('status/200'))
 | |
|     except ConnectionError as e:
 | |
|         assert u"Pool is closed." in str(e)
 | |
| 
 | |
| 
 | |
| def test_vendor_aliases():
 | |
|     from requests.packages import urllib3
 | |
|     from requests.packages import chardet
 | |
| 
 | |
|     with pytest.raises(ImportError):
 | |
|         from requests.packages import webbrowser
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main()
 |