diff 2.00/compat.py @ 16:f2279b7602d3

Initial 2.00 commit
author Oleg Oshmyan <chortos@inbox.lv>
date Mon, 07 Jun 2010 23:36:52 +0000
parents
children ec6f1a132109
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/2.00/compat.py	Mon Jun 07 23:36:52 2010 +0000
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# Copyright (c) 2010 Chortos-2 <chortos@inbox.lv>
+
+try:
+	# Python 3
+	exec('say = print')
+except SyntaxError:
+	try:
+		# Python 2.6/2.7
+		exec('say = __builtins__["print"]')
+	except Exception:
+		# Python 2.5
+		import sys
+		# This should fully emulate the print function of Python 2.6 in Python 2.3+
+		# The error messages are taken from Python 2.6/2.7
+		def saytypeerror(value, name):
+			return TypeError(name + ' must be None, str or unicode, not ' + type(value).__name__)
+		def say(*values, **kwargs):
+			sep  = kwargs.pop('sep' , None)
+			end  = kwargs.pop('end' , None)
+			file = kwargs.pop('file', None)
+			if kwargs: raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.popitem()[0])
+			if sep  is None: sep  = ' '
+			if end  is None: end  = '\n'
+			if file is None: file = sys.stdout
+			if not isinstance(sep, basestring): raise saytypeerror(sep, 'sep')
+			if not isinstance(end, basestring): raise saytypeerror(end, 'end')
+			file.write(sep.join((str(i) for i in values)) + end)
+
+def import_urllib():
+	try:
+		# Python 3
+		import urllib.request
+		return urllib.request, lambda url: urllib.request.urlopen(url).read().decode()
+	except ImportError:
+		# Python 2
+		import urllib
+		return urllib, lambda url: urllib.urlopen(url).read()
\ No newline at end of file