diff --git a/pg8000-license.patch b/pg8000-license.patch new file mode 100644 index 0000000..2f7efa7 --- /dev/null +++ b/pg8000-license.patch @@ -0,0 +1,31 @@ +diff -urN ../pg8000-origen/LICENSE ./LICENSE +--- ../pg8000-origen/LICENSE 1969-12-31 18:00:00.000000000 -0600 ++++ ./LICENSE 2016-03-02 17:19:25.085702962 -0600 +@@ -0,0 +1,27 @@ ++Copyright (c) 2007-2009, Mathieu Fenniak ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are ++met: ++ ++* Redistributions of source code must retain the above copyright notice, ++this list of conditions and the following disclaimer. ++* Redistributions in binary form must reproduce the above copyright notice, ++this list of conditions and the following disclaimer in the documentation ++and/or other materials provided with the distribution. ++* The name of the author may not be used to endorse or promote products ++derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGE. ++ diff --git a/pg8000-remove-six.patch b/pg8000-remove-six.patch deleted file mode 100644 index f7cbb6f..0000000 --- a/pg8000-remove-six.patch +++ /dev/null @@ -1,681 +0,0 @@ -diff -Nur ../pg8000-origen/doc/quickstart.rst ./doc/quickstart.rst ---- ../pg8000-origen/doc/quickstart.rst 2016-01-07 15:14:32.000000000 -0600 -+++ ./doc/quickstart.rst 2016-02-09 17:18:37.387898445 -0600 -@@ -4,7 +4,7 @@ - Key Points - ---------- - --- Runs on Python version 2.5, 2.6, 2.7, 3.2, 3.3 and 3.4 -+- Runs on Python version 2.6, 2.7, 3.2, 3.3, 3.4 and 3.5 - - Runs on CPython, Jython and PyPy - - Although it's possible for threads to share cursors and connections, for - performance reasons it's best to use one thread per connection. -diff -Nur ../pg8000-origen/pg8000/core.py ./pg8000/core.py ---- ../pg8000-origen/pg8000/core.py 2016-01-07 15:14:32.000000000 -0600 -+++ ./pg8000/core.py 2016-02-09 17:09:48.152665854 -0600 -@@ -8,8 +8,8 @@ - from decimal import Decimal - from collections import deque, defaultdict - from itertools import count, islice --from .six.moves import map --from .six import b, PY2, integer_types, next, PRE_26, text_type, u, binary_type -+from six.moves import map -+from six import b, PY2, integer_types, next, text_type, u, binary_type - from sys import exc_info - from uuid import UUID - from copy import deepcopy -@@ -411,9 +411,6 @@ - else: - return value - --if PRE_26: -- bytearray = list -- - if PY2: - BINARY = Bytea - else: -@@ -1304,11 +1301,7 @@ - raise InterfaceError("communication error", exc_info()[1]) - self._flush = self._sock.flush - self._read = self._sock.read -- -- if PRE_26: -- self._write = self._sock.writelines -- else: -- self._write = self._sock.write -+ self._write = self._sock.write - self._backend_key_data = None - - ## -diff -Nur ../pg8000-origen/pg8000/six.py ./pg8000/six.py ---- ../pg8000-origen/pg8000/six.py 2016-01-07 15:14:32.000000000 -0600 -+++ ./pg8000/six.py 1969-12-31 18:00:00.000000000 -0600 -@@ -1,610 +0,0 @@ --"""Utilities for writing code that runs on Python 2 and 3""" -- --# Copyright (c) 2010-2013 Benjamin Peterson --# --# Permission is hereby granted, free of charge, to any person obtaining a copy --# of this software and associated documentation files (the "Software"), to deal --# in the Software without restriction, including without limitation the rights --# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --# copies of the Software, and to permit persons to whom the Software is --# furnished to do so, subject to the following conditions: --# --# The above copyright notice and this permission notice shall be included in --# all copies or substantial portions of the Software. --# --# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --# SOFTWARE. -- --from __future__ import absolute_import --import operator --import sys --import types -- --__author__ = "Benjamin Peterson " --__version__ = "1.4.1" -- -- --# Useful for very coarse version differentiation. --PY2 = sys.version_info[0] == 2 --PY3 = sys.version_info[0] == 3 -- --PRE_26 = PY2 and sys.version_info[1] < 6 -- --IS_JYTHON = sys.platform.lower().count('java') > 0 -- -- --if PY3: -- string_types = str, -- integer_types = int, -- class_types = type, -- text_type = str -- binary_type = bytes -- -- MAXSIZE = sys.maxsize --else: -- string_types = basestring, # noqa -- integer_types = (int, long) # noqa -- class_types = (type, types.ClassType) -- text_type = unicode # noqa -- binary_type = str -- -- if sys.platform.startswith("java"): -- # Jython always uses 32 bits. -- MAXSIZE = int((1 << 31) - 1) -- else: -- # It's possible to have sizeof(long) != sizeof(Py_ssize_t). -- class X(object): -- def __len__(self): -- return 1 << 31 -- try: -- len(X()) -- except OverflowError: -- # 32-bit -- MAXSIZE = int((1 << 31) - 1) -- else: -- # 64-bit -- MAXSIZE = int((1 << 63) - 1) -- del X -- -- --def _add_doc(func, doc): -- """Add documentation to a function.""" -- func.__doc__ = doc -- -- --def _import_module(name): -- """Import module, returning the module after the last dot.""" -- __import__(name) -- return sys.modules[name] -- -- --class _LazyDescr(object): -- -- def __init__(self, name): -- self.name = name -- -- def __get__(self, obj, tp): -- result = self._resolve() -- setattr(obj, self.name, result) -- # This is a bit ugly, but it avoids running this again. -- delattr(tp, self.name) -- return result -- -- --class MovedModule(_LazyDescr): -- -- def __init__(self, name, old, new=None): -- super(MovedModule, self).__init__(name) -- if PY3: -- if new is None: -- new = name -- self.mod = new -- else: -- self.mod = old -- -- def _resolve(self): -- return _import_module(self.mod) -- -- --class MovedAttribute(_LazyDescr): -- -- def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): -- super(MovedAttribute, self).__init__(name) -- if PY3: -- if new_mod is None: -- new_mod = name -- self.mod = new_mod -- if new_attr is None: -- if old_attr is None: -- new_attr = name -- else: -- new_attr = old_attr -- self.attr = new_attr -- else: -- self.mod = old_mod -- if old_attr is None: -- old_attr = name -- self.attr = old_attr -- -- def _resolve(self): -- module = _import_module(self.mod) -- return getattr(module, self.attr) -- -- --class _MovedItems(types.ModuleType): -- """Lazy loading of moved objects""" -- -- --_moved_attributes = [ -- MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), -- MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), -- MovedAttribute( -- "filterfalse", "itertools", "itertools", "ifilterfalse", -- "filterfalse"), -- MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), -- MovedAttribute("map", "itertools", "builtins", "imap", "map"), -- MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), -- MovedAttribute("reload_module", "__builtin__", "imp", "reload"), -- MovedAttribute("reduce", "__builtin__", "functools"), -- MovedAttribute("StringIO", "StringIO", "io"), -- MovedAttribute("UserString", "UserString", "collections"), -- MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), -- MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), -- MovedAttribute( -- "zip_longest", "itertools", "itertools", "izip_longest", -- "zip_longest"), -- MovedModule("builtins", "__builtin__"), -- MovedModule("configparser", "ConfigParser"), -- MovedModule("copyreg", "copy_reg"), -- MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), -- MovedModule("http_cookies", "Cookie", "http.cookies"), -- MovedModule("html_entities", "htmlentitydefs", "html.entities"), -- MovedModule("html_parser", "HTMLParser", "html.parser"), -- MovedModule("http_client", "httplib", "http.client"), -- MovedModule( -- "email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), -- MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), -- MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), -- MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), -- MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), -- MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), -- MovedModule("cPickle", "cPickle", "pickle"), -- MovedModule("queue", "Queue"), -- MovedModule("reprlib", "repr"), -- MovedModule("socketserver", "SocketServer"), -- MovedModule("tkinter", "Tkinter"), -- MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), -- MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), -- MovedModule( -- "tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), -- MovedModule( -- "tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), -- MovedModule("tkinter_tix", "Tix", "tkinter.tix"), -- MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), -- MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), -- MovedModule("tkinter_colorchooser", "tkColorChooser", -- "tkinter.colorchooser"), -- MovedModule("tkinter_commondialog", "tkCommonDialog", -- "tkinter.commondialog"), -- MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), -- MovedModule("tkinter_font", "tkFont", "tkinter.font"), -- MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), -- MovedModule( -- "tkinter_tksimpledialog", "tkSimpleDialog", "tkinter.simpledialog"), -- MovedModule( -- "urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), -- MovedModule( -- "urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), -- MovedModule( -- "urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), -- MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), -- MovedModule("winreg", "_winreg"), --] --for attr in _moved_attributes: -- setattr(_MovedItems, attr.name, attr) --del attr -- --moves = sys.modules[__name__ + ".moves"] = _MovedItems(__name__ + ".moves") -- -- --class Module_six_moves_urllib_parse(types.ModuleType): -- """Lazy loading of moved objects in six.moves.urllib_parse""" -- -- --_urllib_parse_moved_attributes = [ -- MovedAttribute("ParseResult", "urlparse", "urllib.parse"), -- MovedAttribute("parse_qs", "urlparse", "urllib.parse"), -- MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), -- MovedAttribute("urldefrag", "urlparse", "urllib.parse"), -- MovedAttribute("urljoin", "urlparse", "urllib.parse"), -- MovedAttribute("urlparse", "urlparse", "urllib.parse"), -- MovedAttribute("urlsplit", "urlparse", "urllib.parse"), -- MovedAttribute("urlunparse", "urlparse", "urllib.parse"), -- MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), -- MovedAttribute("quote", "urllib", "urllib.parse"), -- MovedAttribute("quote_plus", "urllib", "urllib.parse"), -- MovedAttribute("unquote", "urllib", "urllib.parse"), -- MovedAttribute("unquote_plus", "urllib", "urllib.parse"), -- MovedAttribute("urlencode", "urllib", "urllib.parse"), --] --for attr in _urllib_parse_moved_attributes: -- setattr(Module_six_moves_urllib_parse, attr.name, attr) --del attr -- --sys.modules[__name__ + ".moves.urllib_parse"] = Module_six_moves_urllib_parse( -- __name__ + ".moves.urllib_parse") --sys.modules[__name__ + ".moves.urllib.parse"] = Module_six_moves_urllib_parse( -- __name__ + ".moves.urllib.parse") -- -- --class Module_six_moves_urllib_error(types.ModuleType): -- """Lazy loading of moved objects in six.moves.urllib_error""" -- -- --_urllib_error_moved_attributes = [ -- MovedAttribute("URLError", "urllib2", "urllib.error"), -- MovedAttribute("HTTPError", "urllib2", "urllib.error"), -- MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), --] --for attr in _urllib_error_moved_attributes: -- setattr(Module_six_moves_urllib_error, attr.name, attr) --del attr -- --sys.modules[__name__ + ".moves.urllib_error"] = Module_six_moves_urllib_error( -- __name__ + ".moves.urllib_error") --sys.modules[__name__ + ".moves.urllib.error"] = Module_six_moves_urllib_error( -- __name__ + ".moves.urllib.error") -- -- --class Module_six_moves_urllib_request(types.ModuleType): -- """Lazy loading of moved objects in six.moves.urllib_request""" -- -- --_urllib_request_moved_attributes = [ -- MovedAttribute("urlopen", "urllib2", "urllib.request"), -- MovedAttribute("install_opener", "urllib2", "urllib.request"), -- MovedAttribute("build_opener", "urllib2", "urllib.request"), -- MovedAttribute("pathname2url", "urllib", "urllib.request"), -- MovedAttribute("url2pathname", "urllib", "urllib.request"), -- MovedAttribute("getproxies", "urllib", "urllib.request"), -- MovedAttribute("Request", "urllib2", "urllib.request"), -- MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), -- MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), -- MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), -- MovedAttribute("BaseHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), -- MovedAttribute( -- "HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), -- MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), -- MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), -- MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), -- MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), -- MovedAttribute("FileHandler", "urllib2", "urllib.request"), -- MovedAttribute("FTPHandler", "urllib2", "urllib.request"), -- MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), -- MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), -- MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), -- MovedAttribute("urlretrieve", "urllib", "urllib.request"), -- MovedAttribute("urlcleanup", "urllib", "urllib.request"), -- MovedAttribute("URLopener", "urllib", "urllib.request"), -- MovedAttribute("FancyURLopener", "urllib", "urllib.request"), --] --for attr in _urllib_request_moved_attributes: -- setattr(Module_six_moves_urllib_request, attr.name, attr) --del attr -- --sys.modules[__name__ + ".moves.urllib_request"] = \ -- Module_six_moves_urllib_request(__name__ + ".moves.urllib_request") --sys.modules[__name__ + ".moves.urllib.request"] = \ -- Module_six_moves_urllib_request(__name__ + ".moves.urllib.request") -- -- --class Module_six_moves_urllib_response(types.ModuleType): -- """Lazy loading of moved objects in six.moves.urllib_response""" -- -- --_urllib_response_moved_attributes = [ -- MovedAttribute("addbase", "urllib", "urllib.response"), -- MovedAttribute("addclosehook", "urllib", "urllib.response"), -- MovedAttribute("addinfo", "urllib", "urllib.response"), -- MovedAttribute("addinfourl", "urllib", "urllib.response"), --] --for attr in _urllib_response_moved_attributes: -- setattr(Module_six_moves_urllib_response, attr.name, attr) --del attr -- --sys.modules[__name__ + ".moves.urllib_response"] = \ -- Module_six_moves_urllib_response(__name__ + ".moves.urllib_response") --sys.modules[__name__ + ".moves.urllib.response"] = \ -- Module_six_moves_urllib_response(__name__ + ".moves.urllib.response") -- -- --class Module_six_moves_urllib_robotparser(types.ModuleType): -- """Lazy loading of moved objects in six.moves.urllib_robotparser""" -- -- --_urllib_robotparser_moved_attributes = [ -- MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), --] --for attr in _urllib_robotparser_moved_attributes: -- setattr(Module_six_moves_urllib_robotparser, attr.name, attr) --del attr -- --sys.modules[__name__ + ".moves.urllib_robotparser"] = \ -- Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib_robotparser") --sys.modules[__name__ + ".moves.urllib.robotparser"] = \ -- Module_six_moves_urllib_robotparser( -- __name__ + ".moves.urllib.robotparser") -- -- --class Module_six_moves_urllib(types.ModuleType): -- """Create a six.moves.urllib namespace that resembles the Python 3 -- namespace""" -- parse = sys.modules[__name__ + ".moves.urllib_parse"] -- error = sys.modules[__name__ + ".moves.urllib_error"] -- request = sys.modules[__name__ + ".moves.urllib_request"] -- response = sys.modules[__name__ + ".moves.urllib_response"] -- robotparser = sys.modules[__name__ + ".moves.urllib_robotparser"] -- -- --sys.modules[__name__ + ".moves.urllib"] = Module_six_moves_urllib( -- __name__ + ".moves.urllib") -- -- --def add_move(move): -- """Add an item to six.moves.""" -- setattr(_MovedItems, move.name, move) -- -- --def remove_move(name): -- """Remove item from six.moves.""" -- try: -- delattr(_MovedItems, name) -- except AttributeError: -- try: -- del moves.__dict__[name] -- except KeyError: -- raise AttributeError("no such move, %r" % (name,)) -- -- --if PY3: -- _meth_func = "__func__" -- _meth_self = "__self__" -- -- _func_closure = "__closure__" -- _func_code = "__code__" -- _func_defaults = "__defaults__" -- _func_globals = "__globals__" -- -- _iterkeys = "keys" -- _itervalues = "values" -- _iteritems = "items" -- _iterlists = "lists" --else: -- _meth_func = "im_func" -- _meth_self = "im_self" -- -- _func_closure = "func_closure" -- _func_code = "func_code" -- _func_defaults = "func_defaults" -- _func_globals = "func_globals" -- -- _iterkeys = "iterkeys" -- _itervalues = "itervalues" -- _iteritems = "iteritems" -- _iterlists = "iterlists" -- -- --try: -- advance_iterator = next --except NameError: -- def advance_iterator(it): -- return it.next() --next = advance_iterator -- -- --try: -- callable = callable --except NameError: -- def callable(obj): -- return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) -- -- --if PY3: -- def get_unbound_function(unbound): -- return unbound -- -- create_bound_method = types.MethodType -- -- Iterator = object --else: -- def get_unbound_function(unbound): -- return unbound.im_func -- -- def create_bound_method(func, obj): -- return types.MethodType(func, obj, obj.__class__) -- -- class Iterator(object): -- -- def next(self): -- return type(self).__next__(self) -- -- callable = callable --_add_doc(get_unbound_function, -- """Get the function out of a possibly unbound function""") -- -- --get_method_function = operator.attrgetter(_meth_func) --get_method_self = operator.attrgetter(_meth_self) --get_function_closure = operator.attrgetter(_func_closure) --get_function_code = operator.attrgetter(_func_code) --get_function_defaults = operator.attrgetter(_func_defaults) --get_function_globals = operator.attrgetter(_func_globals) -- -- --def iterkeys(d, **kw): -- """Return an iterator over the keys of a dictionary.""" -- return iter(getattr(d, _iterkeys)(**kw)) -- -- --def itervalues(d, **kw): -- """Return an iterator over the values of a dictionary.""" -- return iter(getattr(d, _itervalues)(**kw)) -- -- --def iteritems(d, **kw): -- """Return an iterator over the (key, value) pairs of a dictionary.""" -- return iter(getattr(d, _iteritems)(**kw)) -- -- --def iterlists(d, **kw): -- """Return an iterator over the (key, [values]) pairs of a dictionary.""" -- return iter(getattr(d, _iterlists)(**kw)) -- -- --if PY3: -- def b(s): -- return s.encode("latin-1") -- -- def u(s): -- return s -- unichr = chr -- if sys.version_info[1] <= 1: -- def int2byte(i): -- return bytes((i,)) -- else: -- # This is about 2x faster than the implementation above on 3.2+ -- int2byte = operator.methodcaller("to_bytes", 1, "big") -- byte2int = operator.itemgetter(0) -- indexbytes = operator.getitem -- iterbytes = iter -- import io -- StringIO = io.StringIO -- BytesIO = io.BytesIO --else: -- def b(s): -- return s -- -- def u(s): -- return unicode(s, "unicode_escape") # noqa -- unichr = unichr -- int2byte = chr -- -- def byte2int(bs): -- return ord(bs[0]) -- -- def indexbytes(buf, i): -- return ord(buf[i]) -- -- def iterbytes(buf): -- return (ord(byte) for byte in buf) -- import StringIO -- StringIO = BytesIO = StringIO.StringIO --_add_doc(b, """Byte literal""") --_add_doc(u, """Text literal""") -- -- --if PY3: -- import builtins -- exec_ = getattr(builtins, "exec") -- -- def reraise(tp, value, tb=None): -- if value.__traceback__ is not tb: -- raise value.with_traceback(tb) -- raise value -- -- print_ = getattr(builtins, "print") -- del builtins -- --else: -- def exec_(_code_, _globs_=None, _locs_=None): -- """Execute code in a namespace.""" -- if _globs_ is None: -- frame = sys._getframe(1) -- _globs_ = frame.f_globals -- if _locs_ is None: -- _locs_ = frame.f_locals -- del frame -- elif _locs_ is None: -- _locs_ = _globs_ -- exec("""exec _code_ in _globs_, _locs_""") -- -- exec_("""def reraise(tp, value, tb=None): -- raise tp, value, tb --""") -- -- def print_(*args, **kwargs): -- """The new-style print function.""" -- fp = kwargs.pop("file", sys.stdout) -- if fp is None: -- return -- -- def write(data): -- if not isinstance(data, basestring): # noqa -- data = str(data) -- fp.write(data) -- want_unicode = False -- sep = kwargs.pop("sep", None) -- if sep is not None: -- if isinstance(sep, unicode): # noqa -- want_unicode = True -- elif not isinstance(sep, str): -- raise TypeError("sep must be None or a string") -- end = kwargs.pop("end", None) -- if end is not None: -- if isinstance(end, unicode): # noqa -- want_unicode = True -- elif not isinstance(end, str): -- raise TypeError("end must be None or a string") -- if kwargs: -- raise TypeError("invalid keyword arguments to print()") -- if not want_unicode: -- for arg in args: -- if isinstance(arg, unicode): # noqa -- want_unicode = True -- break -- if want_unicode: -- newline = unicode("\n") # noqa -- space = unicode(" ") # noqa -- else: -- newline = "\n" -- space = " " -- if sep is None: -- sep = space -- if end is None: -- end = newline -- for i, arg in enumerate(args): -- if i: -- write(sep) -- write(arg) -- write(end) -- --_add_doc(reraise, """Reraise an exception.""") -- -- --def with_metaclass(meta, *bases): -- """Create a base class with a metaclass.""" -- return meta("NewBase", bases, {}) -- -- --def add_metaclass(metaclass): -- """Class decorator for creating a class with a metaclass.""" -- def wrapper(cls): -- orig_vars = cls.__dict__.copy() -- orig_vars.pop('__dict__', None) -- orig_vars.pop('__weakref__', None) -- for slots_var in orig_vars.get('__slots__', ()): -- orig_vars.pop(slots_var) -- return metaclass(cls.__name__, cls.__bases__, orig_vars) -- return wrapper -diff -Nur ../pg8000-origen/setup.py ./setup.py ---- ../pg8000-origen/setup.py 2016-01-07 15:14:32.000000000 -0600 -+++ ./setup.py 2016-02-09 17:19:24.314278838 -0600 -@@ -43,13 +43,13 @@ - "License :: OSI Approved :: BSD License", - "Programming Language :: Python", - "Programming Language :: Python :: 2", -- "Programming Language :: Python :: 2.5", - "Programming Language :: Python :: 2.6", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.2", - "Programming Language :: Python :: 3.3", - "Programming Language :: Python :: 3.4", -+ "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: Implementation", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: Jython", diff --git a/python-pg8000.spec b/python-pg8000.spec index 9d45cf7..4bf397e 100644 --- a/python-pg8000.spec +++ b/python-pg8000.spec @@ -1,14 +1,14 @@ %global pypi pg8000 Name: python-%{pypi} -Version: 1.10.3 -Release: 3%{?dist} +Version: 1.10.4 +Release: 2%{?dist} Summary: Pure Python PostgreSQL Driver License: BSD URL: http://pythonhosted.org/pg8000/ -Source0: https://github.com/mfenniak/%{pypi}/archive/%{version}.tar.gz -#https://github.com/mfenniak/pg8000/pull/101 -Patch1: pg8000-remove-six.patch +Source0: https://github.com/mfenniak/%{pypi}/archive/%{pypi}-%{version}.tar.gz +#https://github.com/tlocke/pg8000/pull/1 +Patch1: pg8000-license.patch BuildArch: noarch @@ -20,8 +20,8 @@ Frontend Protocol. %package -n python2-%{pypi} Summary: Pure Python2 PostgreSQL Driver BuildRequires: python2-devel -BuildRequires: python-setuptools BuildRequires: python-six +BuildRequires: python-setuptools Requires: python-six %{?python_provide:%python_provide python2-%{pypi}} @@ -30,15 +30,31 @@ pg8000 is a pure Python2 PostgreSQL driver that complies with DB-API 2.0. The driver communicates with the database using the PostgreSQL Backend / Frontend Protocol. +%package -n python%{python3_pkgversion}-%{pypi} +Summary: Pure Python3 PostgreSQL Driver +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-six +BuildRequires: python%{python3_pkgversion}-setuptools +Requires: python%{python3_pkgversion}-six +%{?python_provide:%python_provide python%{python3_pkgversion}-%{pypi}} + +%description -n python%{python3_pkgversion}-%{pypi} +pg8000 is a pure Python3 PostgreSQL driver that complies with DB-API 2.0. +The driver communicates with the database using the PostgreSQL Backend / +Frontend Protocol. + %prep %setup -q -n %{pypi}-%{version} +rm -rf *egg.info %patch1 %build %py2_build +%py3_build %install %py2_install +%py3_install %check #Test requires a runing PostgreSQL instance @@ -48,9 +64,21 @@ Frontend Protocol. %doc README.creole %{python2_sitelib}/* +%files -n python%{python3_pkgversion}-%{pypi} +%license LICENSE +%doc README.creole +%{python3_sitelib}/* + %changelog -* Wed Feb 10 2016 William Moreno - 1.10.3-3 -- Remove python3 subpackage in epel7 +* Wed Mar 02 2016 William Moreno - 1.10.4-1 +- Epel7 packaging of version 1.10.4 + +* Tue Mar 01 2016 William Moreno - 1.10.4-1 +- Upadete to 1.10.4 +- Remove patch1 included in upstream release +- Change source name +- Remove doc subpackage, upstream remove source in this release +- Patch licence text not include in the release * Mon Feb 08 2016 William Moreno - 1.10.3-2 - Remove bundled six library.