{"action":"opened","number":44,"pull_request":{"url":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/44","id":132129417,"html_url":"https://github.com/olin-computing/assignment-dashboard/pull/44","diff_url":"https://github.com/olin-computing/assignment-dashboard/pull/44.diff","patch_url":"https://github.com/olin-computing/assignment-dashboard/pull/44.patch","issue_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/44","number":44,"state":"open","locked":false,"title":"Pin psycopg2 to latest version 2.7.3","user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars0.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"body":"\npsycopg2 is not pinned to a specific version.\n\nI'm pinning it to the latest version **2.7.3** for now.\n\n\nThese links might come in handy:  <a href=\"https://pypi.python.org/pypi/psycopg2\">PyPI</a> | <a href=\"https://pyup.io/changelogs/psycopg2/\">Changelog</a> | <a href=\"http://initd.org/psycopg/\">Homepage</a> | <a href=\"http://pythonhosted.org/psycopg2/\">Docs</a> \n\n\n\n### Changelog\n> \n>### 2.7.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`.\n>  Regression introduced in Psycopg 2.7.2 (:ticket:`578`).\n\n\n\n\n>### 2.7.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed inconsistent state in externally closed connections\n>  (:tickets:`263, 311, 443`). Was fixed in 2.6.2 but not included in\n>  2.7 by mistake.\n>- Fixed Python exceptions propagation in green callback (:ticket:`410`).\n>- Don&#39;t display the password in `connection.dsn` when the connection\n>  string is specified as an URI (:ticket:`528`).\n>- Return objects with timezone parsing &quot;infinity&quot; :sql:`timestamptz`\n>  (:ticket:`536`).\n>- Dropped dependency on VC9 runtime on Windows binary packages\n>  (:ticket:`541`).\n>- Fixed segfault in `~connection.lobject()` when *mode*\\=\\ `!None`\n>  (:ticket:`544`).\n>- Fixed `~connection.lobject()` keyword argument *lobject_factory*\n>  (:ticket:`545`).\n>- Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()`\n>  *keepalive_interval* argument (:ticket:`547`).\n>- Maybe fixed random import error on Python 3.6 in multiprocess\n>  environment (:ticket:`550`).\n>- Fixed random `!SystemError` upon receiving abort signal (:ticket:`551`).\n>- Accept `~psycopg2.sql.Composable` objects in\n>  `~psycopg2.extras.ReplicationCursor.start_replication_expert()`\n>  (:ticket:`554`).\n>- Parse intervals returned as microseconds from Redshift (:ticket:`558`).\n>- Added `~psycopg2.extras.Json` `!prepare()` method to consider connection\n>  params when adapting (:ticket:`562`).\n>- `~psycopg2.errorcodes` map updated to PostgreSQL 10 beta 1.\n\n\n\n\n>### 2.7.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Ignore `!None` arguments passed to `~psycopg2.connect()` and\n>  `~psycopg2.extensions.make_dsn()` (:ticket:`517`).\n>- OpenSSL upgraded from major version 0.9.8 to 1.0.2 in the Linux wheel\n>  packages (:ticket:`518`).\n>- Fixed build with libpq versions &lt; 9.3 (:ticket:`520`).\n\n\n\n\n>### 2.7\n\n>-------------------------\n\n>New features:\n\n>- Added `~psycopg2.sql` module to generate SQL dynamically (:ticket:`308`).\n>- Added :ref:`replication-support` (:ticket:`322`). Main authors are\n>  Oleksandr Shulgin and Craig Ringer, who deserve a huge thank you.\n>- Added `~psycopg2.extensions.parse_dsn()` and\n>  `~psycopg2.extensions.make_dsn()` functions (:tickets:`321, 363`).\n>  `~psycopg2.connect()` now can take both *dsn* and keyword arguments, merging\n>  them together.\n>- Added `~psycopg2.__libpq_version__` and\n>  `~psycopg2.extensions.libpq_version()` to inspect the version of the\n>  ``libpq`` library the module was compiled/loaded with\n>  (:tickets:`35, 323`).\n>- The attributes `~connection.notices` and `~connection.notifies` can be\n>  customized replacing them with any object exposing an `!append()` method\n>  (:ticket:`326`).\n>- Adapt network types to `ipaddress` objects when available. When not\n>  enabled, convert arrays of network types to lists by default. The old `!Inet`\n>  adapter is deprecated (:tickets:`317, 343, 387`).\n>- Added `~psycopg2.extensions.quote_ident()` function (:ticket:`359`).\n>- Added `~connection.get_dsn_parameters()` connection method (:ticket:`364`).\n>- `~cursor.callproc()` now accepts a dictionary of parameters (:ticket:`381`).\n>- Give precedence to `!__conform__()` over superclasses to choose an object\n>  adapter (:ticket:`456`).\n>- Using Python C API decoding functions and codecs caching for faster\n>  unicode encoding/decoding (:ticket:`473`).\n>- `~cursor.executemany()` slowness addressed by\n>  `~psycopg2.extras.execute_batch()` and `~psycopg2.extras.execute_values()`\n>  (:ticket:`491`).\n>- Added ``async_`` as an alias for ``async`` to support Python 3.7 where\n>  ``async`` will become a keyword (:ticket:`495`).\n>- Unless in autocommit, do not use :sql:`default_transaction_*` settings to\n>  control the session characteristics as it may create problems with external\n>  connection pools such as pgbouncer; use :sql:`BEGIN` options instead\n>  (:ticket:`503`).\n>- `~connection.isolation_level` is now writable and entirely separated from\n>  `~connection.autocommit`; added `~connection.readonly`,\n>  `~connection.deferrable` writable attributes.\n\n>Bug fixes:\n\n>- Fixed error caused by missing decoding `~psycopg2.extras.LoggingConnection`\n>  (:ticket:`483`).\n>- Fixed integer overflow in :sql:`interval` seconds (:ticket:`512`).\n\n>Other changes:\n\n>- Dropped support for Python 2.5 and 3.1.\n>- Dropped support for client library older than PostgreSQL 9.1 (but older\n>  server versions are still supported).\n>- `~connection.isolation_level` doesn&#39;t read from the database but will return\n>  `~psycopg2.extensions.ISOLATION_LEVEL_DEFAULT` if no value was set on the\n>  connection.\n>- Empty arrays no more converted into lists if they don&#39;t have a type attached\n>  (:ticket:`506`)\n\n\n\n\n>### 2.6.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Throw an exception trying to pass ``NULL`` chars as parameters\n>  (:ticket:`420`).\n>- Make `~psycopg2.extras.Range` objects picklable (:ticket:`462`).\n\n\n\n\n>### 2.6.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed inconsistent state in externally closed connections\n>  (:tickets:`263, 311, 443`).\n>- Report the server response status on errors (such as :ticket:`281`).\n>- Raise `!NotSupportedError` on unhandled server response status\n>  (:ticket:`352`).\n>- Allow overriding string adapter encoding with no connection (:ticket:`331`).\n>- The `~psycopg2.extras.wait_select` callback allows interrupting a\n>  long-running query in an interactive shell using :kbd:`Ctrl-C`\n>  (:ticket:`333`).\n>- Fixed `!PersistentConnectionPool` on Python 3 (:ticket:`348`).\n>- Fixed segfault on `repr()` of an unitialized connection (:ticket:`361`).\n>- Allow adapting bytes using `~psycopg2.extensions.QuotedString` on Python 3\n>  (:ticket:`365`).\n>- Added support for setuptools/wheel (:ticket:`370`).\n>- Fix build on Windows with Python 3.5, VS 2015 (:ticket:`380`).\n>- Fixed `!errorcodes.lookup` initialization thread-safety (:ticket:`382`).\n>- Fixed `!read()` exception propagation in copy_from (:ticket:`412`).\n>- Fixed possible NULL TZ decref  (:ticket:`424`).\n>- `~psycopg2.errorcodes` map updated to PostgreSQL 9.5.\n\n\n\n\n>### 2.6.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Lists consisting of only `None` are escaped correctly (:ticket:`285`).\n>- Fixed deadlock in multithread programs using OpenSSL (:ticket:`290`).\n>- Correctly unlock the connection after error in flush (:ticket:`294`).\n>- Fixed `!MinTimeLoggingCursor.callproc()` (:ticket:`309`).\n>- Added support for MSVC 2015 compiler (:ticket:`350`).\n\n\n\n\n>### 2.6\n\n>-------------------------\n\n>New features:\n\n>- Added support for large objects larger than 2GB. Many thanks to Blake Rouse\n>  and the MAAS Team for the feature development.\n>- Python `time` objects with a tzinfo specified and PostgreSQL :sql:`timetz`\n>  data are converted into each other (:ticket:`272`).\n\n>Bug fixes:\n\n>- Json adapter&#39;s `!str()` returns the adapted content instead of the `!repr()`\n>  (:ticket:`191`).\n\n\n\n\n>### 2.5.5\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Named cursors used as context manager don&#39;t swallow the exception on exit\n>  (:ticket:`262`).\n>- `cursor.description` can be pickled (:ticket:`265`).\n>- Propagate read error messages in COPY FROM (:ticket:`270`).\n>- PostgreSQL time 24:00 is converted to Python 00:00 (:ticket:`278`).\n\n\n\n\n>### 2.5.4\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Added :sql:`jsonb` support for PostgreSQL 9.4 (:ticket:`226`).\n>- Fixed segfault if COPY statements are passed to `~cursor.execute()` instead\n>  of using the proper methods (:ticket:`219`).\n>- Force conversion of pool arguments to integer to avoid potentially unbounded\n>  pools (:ticket:`220`).\n>- Cursors :sql:`WITH HOLD` don&#39;t begin a new transaction upon move/fetch/close\n>  (:ticket:`228`).\n>- Cursors :sql:`WITH HOLD` can be used in autocommit (:ticket:`229`).\n>- `~cursor.callproc()` doesn&#39;t silently ignore an argument without a length.\n>- Fixed memory leak with large objects (:ticket:`256`).\n>- Make sure the internal ``_psycopg.so`` module can be imported stand-alone (to\n>  allow modules juggling such as the one described in :ticket:`201`).\n\n\n\n\n>### 2.5.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Work around `pip issue 1630 &lt;https://github.com/pypa/pip/issues/1630&gt;`__\n>  making installation via ``pip -e git+url`` impossible (:ticket:`18`).\n>- Copy operations correctly set the `cursor.rowcount` attribute\n>  (:ticket:`180`).\n>- It is now possible to call `get_transaction_status()` on closed connections.\n>- Fixed unsafe access to object names causing assertion failures in\n>  Python 3 debug builds (:ticket:`188`).\n>- Mark the connection closed if found broken on `poll()` (from :ticket:`192`\n>  discussion)\n>- Fixed handling of dsn and closed attributes in connection subclasses\n>  failing to connect (from :ticket:`192` discussion).\n>- Added arbitrary but stable order to `Range` objects, thanks to\n>  Chris Withers (:ticket:`193`).\n>- Avoid blocking async connections on connect (:ticket:`194`). Thanks to\n>  Adam Petrovich for the bug report and diagnosis.\n>- Don&#39;t segfault using poorly defined cursor subclasses which forgot to call\n>  the superclass init (:ticket:`195`).\n>- Mark the connection closed when a Socket connection is broken, as it\n>  happens for TCP connections instead (:ticket:`196`).\n>- Fixed overflow opening a lobject with an oid not fitting in a signed int\n>  (:ticket:`203`).\n>- Fixed handling of explicit default ``cursor_factory=None`` in\n>  `connection.cursor()` (:ticket:`210`).\n>- Fixed possible segfault in named cursors creation.\n>- Fixed debug build on Windows, thanks to James Emerton.\n\n\n\n\n>### 2.5.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed segfault pickling the exception raised on connection error\n>  (:ticket:`170`).\n>- Meaningful connection errors report a meaningful message, thanks to\n>  Alexey Borzenkov (:ticket:`173`).\n>- Manually creating `lobject` with the wrong parameter doesn&#39;t segfault\n>  (:ticket:`187`).\n\n\n\n\n>### 2.5.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed build on Solaris 10 and 11 where the round() function is already\n>  declared (:ticket:`146`).\n>- Fixed comparison of `Range` with non-range objects (:ticket:`164`).\n>  Thanks to Chris Withers for the patch.\n>- Fixed double-free on connection dealloc (:ticket:`166`). Thanks to\n>  Gangadharan S.A. for the report and fix suggestion.\n\n\n\n\n>### 2.5\n\n>-------------------------\n\n>New features:\n\n>- Added :ref:`JSON adaptation &lt;adapt-json&gt;`.\n>- Added :ref:`support for PostgreSQL 9.2 range types &lt;adapt-range&gt;`.\n>- `connection` and `cursor` objects can be used in ``with`` statements\n>  as context managers as specified by recent |DBAPI|_ extension.\n>- Added `~psycopg2.extensions.Diagnostics` object to get extended info\n>  from a database error.  Many thanks to Matthew Woodcraft for the\n>  implementation (:ticket:`149`).\n>- Added `connection.cursor_factory` attribute to customize the default\n>  object returned by `~connection.cursor()`.\n>- Added support for backward scrollable cursors. Thanks to Jon Nelson\n>  for the initial patch (:ticket:`108`).\n>- Added a simple way to :ref:`customize casting of composite types\n>  &lt;adapt-composite&gt;` into Python objects other than namedtuples.\n>  Many thanks to Ronan Dunklau and Tobias Oberstein for the feature\n>  development.\n>- `connection.reset()` implemented using :sql:`DISCARD ALL` on server\n>  versions supporting it.\n\n>Bug fixes:\n\n>- Properly cleanup memory of broken connections (:ticket:`148`).\n>- Fixed bad interaction of ``setup.py`` with other dependencies in\n>  Distribute projects on Python 3 (:ticket:`153`).\n\n>Other changes:\n\n>- Added support for Python 3.3.\n>- Dropped support for Python 2.4. Please use Psycopg 2.4.x if you need it.\n>- `~psycopg2.errorcodes` map updated to PostgreSQL 9.2.\n>- Dropped Zope adapter from source repository. ZPsycopgDA now has its own\n>  project at &lt;http://github.com/psycopg/ZPsycopgDA&gt;.\n\n\n\n\n>### 2.4.6\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed &#39;cursor()&#39; arguments propagation in connection subclasses\n>  and overriding of the &#39;cursor_factory&#39; argument.  Thanks to\n>  Corry Haines for the report and the initial patch (:ticket:`105`).\n>- Dropped GIL release during string adaptation around a function call\n>  invoking a Python API function, which could cause interpreter crash.\n>  Thanks to Manu Cupcic for the report (:ticket:`110`).\n>- Close a green connection if there is an error in the callback.\n>  Maybe a harsh solution but it leaves the program responsive\n>  (:ticket:`113`).\n>- &#39;register_hstore()&#39;, &#39;register_composite()&#39;, &#39;tpc_recover()&#39; work with\n>  RealDictConnection and Cursor (:ticket:`114`).\n>- Fixed broken pool for Zope and connections re-init across ZSQL methods\n>  in the same request (:tickets:`123, 125, 142`).\n>- connect() raises an exception instead of swallowing keyword arguments\n>  when a connection string is specified as well (:ticket:`131`).\n>- Discard any result produced by &#39;executemany()&#39; (:ticket:`133`).\n>- Fixed pickling of FixedOffsetTimezone objects (:ticket:`135`).\n>- Release the GIL around PQgetResult calls after COPY (:ticket:`140`).\n>- Fixed empty strings handling in composite caster (:ticket:`141`).\n>- Fixed pickling of DictRow and RealDictRow objects.\n\n\n\n\n>### 2.4.5\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- The close() methods on connections and cursors don&#39;t raise exceptions\n>  if called on already closed objects.\n>- Fixed fetchmany() with no argument in cursor subclasses\n>  (:ticket:`84`).\n>- Use lo_creat() instead of lo_create() when possible for better\n>  interaction with pgpool-II (:ticket:`88`).\n>- Error and its subclasses are picklable, useful for multiprocessing\n>  interaction (:ticket:`90`).\n>- Better efficiency and formatting of timezone offset objects thanks\n>  to Menno Smits (:tickets:`94, 95`).\n>- Fixed &#39;rownumber&#39; during iteration on cursor subclasses.\n>  Regression introduced in 2.4.4 (:ticket:`100`).\n>- Added support for &#39;inet&#39; arrays.\n>- Fixed &#39;commit()&#39; concurrency problem (:ticket:`103`).\n>- Codebase cleaned up using the GCC Python plugin&#39;s static analysis\n>  tool, which has revealed several unchecked return values, possible\n>  NULL dereferences, reference counting problems. Many thanks to David\n>  Malcolm for the useful tool and the assistance provided using it.\n\n\n\n\n>### 2.4.4\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- &#39;register_composite()&#39; also works with the types implicitly defined\n>  after a table row, not only with the ones created by &#39;CREATE TYPE&#39;.\n>- Values for the isolation level symbolic constants restored to what\n>  they were before release 2.4.2 to avoid breaking apps using the\n>  values instead of the constants.\n>- Named DictCursor/RealDictCursor honour itersize (:ticket:`80`).\n>- Fixed rollback on error on Zope (:ticket:`73`).\n>- Raise &#39;DatabaseError&#39; instead of &#39;Error&#39; with empty libpq errors,\n>  consistently with other disconnection-related errors: regression\n>  introduced in release 2.4.1 (:ticket:`82`).\n\n\n\n\n>### 2.4.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- connect() supports all the keyword arguments supported by the\n>  database\n>- Added &#39;new_array_type()&#39; function for easy creation of array\n>  typecasters.\n>- Added support for arrays of hstores and composite types (:ticket:`66`).\n>- Fixed segfault in case of transaction started with connection lost\n>  (and possibly other events).\n>- Fixed adaptation of Decimal type in sub-interpreters, such as in\n>  certain mod_wsgi configurations (:ticket:`52`).\n>- Rollback connections in transaction or in error before putting them\n>  back into a pool. Also discard broken connections (:ticket:`62`).\n>- Lazy import of the slow uuid module, thanks to Marko Kreen.\n>- Fixed NamedTupleCursor.executemany() (:ticket:`65`).\n>- Fixed --static-libpq setup option (:ticket:`64`).\n>- Fixed interaction between RealDictCursor and named cursors\n>  (:ticket:`67`).\n>- Dropped limit on the columns length in COPY operations (:ticket:`68`).\n>- Fixed reference leak with arguments referenced more than once\n>  in queries (:ticket:`81`).\n>- Fixed typecasting of arrays containing consecutive backslashes.\n>- &#39;errorcodes&#39; map updated to PostgreSQL 9.1.\n\n\n\n\n>### 2.4.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Added &#39;set_session()&#39; method and &#39;autocommit&#39; property to the\n>  connection. Added support for read-only sessions and, for PostgreSQL\n>  9.1, for the &quot;repeatable read&quot; isolation level and the &quot;deferrable&quot;\n>  transaction property.\n>- Psycopg doesn&#39;t execute queries at connection time to find the\n>  default isolation level.\n>- Fixed bug with multithread code potentially causing loss of sync\n>  with the server communication or lock of the client (:ticket:`55`).\n>- Don&#39;t fail import if mx.DateTime module can&#39;t be found, even if its\n>  support was built (:ticket:`53`).\n>- Fixed escape for negative numbers prefixed by minus operator\n>  (:ticket:`57`).\n>- Fixed refcount issue during copy.  Reported and fixed by Dave\n>  Malcolm (:ticket:`58`, Red Hat Bug 711095).\n>- Trying to execute concurrent operations on the same connection\n>  through concurrent green thread results in an error instead of a\n>  deadlock.\n>- Fixed detection of pg_config on Window. Report and fix, plus some\n>  long needed setup.py cleanup by Steve Lacy: thanks!\n\n\n\n\n>### 2.4.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Use own parser for bytea output, not requiring anymore the libpq 9.0\n>  to parse the hex format.\n>- Don&#39;t fail connection if the client encoding is a non-normalized\n>  variant. Issue reported by Peter Eisentraut.\n>- Correctly detect an empty query sent to the backend (:ticket:`46`).\n>- Fixed a SystemError clobbering libpq errors raised without SQLSTATE.\n>  Bug vivisectioned by Eric Snow.\n>- Fixed interaction between NamedTuple and server-side cursors.\n>- Allow to specify --static-libpq on setup.py command line instead of\n>  just in &#39;setup.cfg&#39;. Patch provided by Matthew Ryan (:ticket:`48`).\n\n\n\n\n>### 2.4\n\n>-------------------------\n\n>New features and changes:\n\n>- Added support for Python 3.1 and 3.2. The conversion has also\n>  brought several improvements:\n\n>  - Added &#39;b&#39; and &#39;t&#39; mode to large objects: write can deal with both\n>    bytes strings and unicode; read can return either bytes strings\n>    or decoded unicode.\n>  - COPY sends Unicode data to files implementing &#39;io.TextIOBase&#39;.\n>  - Improved PostgreSQL-Python encodings mapping.\n>  - Added a few missing encodings: EUC_CN, EUC_JIS_2004, ISO885910,\n>    ISO885916, LATIN10, SHIFT_JIS_2004.\n>  - Dropped repeated dictionary lookups with unicode query/parameters.\n\n>- Improvements to the named cursors:\n\n>  - More efficient iteration on named cursors, fetching &#39;itersize&#39;\n>    records at time from the backend.\n>  - The named cursors name can be an invalid identifier.\n\n>- Improvements in data handling:\n\n>  - Added &#39;register_composite()&#39; function to cast PostgreSQL\n>    composite types into Python tuples/namedtuples.\n>  - Adapt types &#39;bytearray&#39; (from Python 2.6), &#39;memoryview&#39; (from\n>    Python 2.7) and other objects implementing the &quot;Revised Buffer\n>    Protocol&quot; to &#39;bytea&#39; data type.\n>  - The &#39;hstore&#39; adapter can work even when the data type is not\n>    installed in the &#39;public&#39; namespace.\n>  - Raise a clean exception instead of returning bad data when\n>    receiving bytea in &#39;hex&#39; format and the client libpq can&#39;t parse\n>    them.\n>  - Empty lists correctly roundtrip Python -&gt; PostgreSQL -&gt; Python.\n\n>- Other changes:\n\n>  - &#39;cursor.description&#39; is provided as named tuples if available.\n>  - The build script refuses to guess values if &#39;pg_config&#39; is not\n>    found.\n>  - Connections and cursors are weakly referenceable.\n\n>Bug fixes:\n\n>- Fixed adaptation of None in composite types (:ticket:`26`). Bug\n>  report by Karsten Hilbert.\n>- Fixed several reference leaks in less common code paths.\n>- Fixed segfault when a large object is closed and its connection no\n>  more available.\n>- Added missing icon to ZPsycopgDA package, not available in Zope\n>  2.12.9 (:ticket:`30`). Bug report and patch by Pumukel.\n>- Fixed conversion of negative infinity (:ticket:`40`). Bug report and\n>  patch by Marti Raudsepp.\n\n\n\n\n>### 2.3.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed segfault with middleware not passing DateStyle to the client\n>  (:ticket:`24`). Bug report and patch by Marti Raudsepp.\n\n\n\n\n>### 2.3.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed build problem on CentOS 5.5 x86_64 (:ticket:`23`).\n\n\n\n\n>### 2.3\n\n>-------------------------\n\n>psycopg 2.3 aims to expose some new features introduced in PostgreSQL 9.0.\n\n>Main new features:\n\n>- `dict` to `hstore` adapter and `hstore` to `dict` typecaster, using both\n>  9.0 and pre-9.0 syntax.\n>- Two-phase commit protocol support as per DBAPI specification.\n>- Support for payload in notifications received from the backend.\n>- `namedtuple`-returning cursor.\n>- Query execution cancel.\n\n>Other features and changes:\n\n>- Dropped support for protocol 2: Psycopg 2.3 can only connect to PostgreSQL\n>  servers with version at least 7.4.\n>- Don&#39;t issue a query at every connection to detect the client encoding\n>  and to set the datestyle to ISO if it is already compatible with what\n>  expected.\n>- `mogrify()` now supports unicode queries.\n>- Subclasses of a type that can be adapted are adapted as the superclass.\n>- `errorcodes` knows a couple of new codes introduced in PostgreSQL 9.0.\n>- Dropped deprecated Psycopg &quot;own quoting&quot;.\n>- Never issue a ROLLBACK on close/GC. This behaviour was introduced as a bug\n>  in release 2.2, but trying to send a command while being destroyed has been\n>  considered not safe.\n\n>Bug fixes:\n\n>- Fixed use of `PQfreemem` instead of `free` in binary typecaster.\n>- Fixed access to freed memory in `conn_get_isolation_level()`.\n>- Fixed crash during Decimal adaptation with a few 2.5.x Python versions\n>  (:ticket:`7`).\n>- Fixed notices order (:ticket:`9`).\n\n\n\n\n>### 2.2.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>Bux fixes:\n\n>- the call to logging.basicConfig() in pool.py has been dropped: it was\n>  messing with some projects using logging (and a library should not\n>  initialize the logging system anyway.)\n>- psycopg now correctly handles time zones with seconds in the UTC offset.\n>  The old register_tstz_w_secs() function is deprecated and will raise a\n>  warning if called.\n>- Exceptions raised by the column iterator are propagated.\n>- Exceptions raised by executemany() iterators are propagated.\n\n\n\n\n>### 2.2.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>Bux fixes:\n\n>- psycopg now builds again on MS Windows.\n\n\n\n\n>### 2.2\n\n>-------------------------\n\n>This is the first release of the new 2.2 series, supporting not just one but\n>two different ways of executing asynchronous queries, thanks to Jan and Daniele\n>(with a little help from me and others, but they did 99% of the work so they\n>deserve their names here in the news.)\n\n>psycopg now supports both classic select() loops and &quot;green&quot; coroutine\n>libraries. It is all in the documentation, so just point your browser to\n>doc/html/advanced.html.\n\n>Other new features:\n\n>- truncate() method for lobjects.\n>- COPY functions are now a little bit faster.\n>- All builtin PostgreSQL to Python typecasters are now available from the\n>  psycopg2.extensions module.\n>- Notifications from the backend are now available right after the execute()\n>  call (before client code needed to call isbusy() to ensure NOTIFY\n>  reception.)\n>- Better timezone support.\n>- Lots of documentation updates.\n\n>Bug fixes:\n\n>- Fixed some gc/refcounting problems.\n>- Fixed reference leak in NOTIFY reception.\n>- Fixed problem with PostgreSQL not casting string literals to the correct\n>  types in some situations: psycopg now add an explicit cast to dates, times\n>  and bytea representations.\n>- Fixed TimestampFromTicks() and TimeFromTicks() for seconds &gt;= 59.5.\n>- Fixed spurious exception raised when calling C typecasters from Python\n>  ones.\n\n\n\n\n>### 2.0.14\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- Support for adapting tuples to PostgreSQL arrays is now enabled by\n>  default and does not require importing psycopg2.extensions anymore.\n>- &quot;can&#39;t adapt&quot; error message now includes full type information.\n>- Thank to Daniele Varrazzo (piro) psycopg2&#39;s source package now includes\n>  full documentation in HTML and plain text format.\n\n>Bug fixes:\n\n>- No loss of precision when using floats anymore.\n>- decimal.Decimal &quot;nan&quot; and &quot;infinity&quot; correctly converted to PostgreSQL\n>  numeric NaN values (note that PostgreSQL numeric type does not support\n>  infinity but just NaNs.)\n>- psycopg2.extensions now includes Binary.\n\n>It seems we&#39;re good citizens of the free software ecosystem and that big\n>big big companies and people ranting on the pgsql-hackers mailing list\n>we&#39;ll now not dislike us. *g* (See LICENSE file for the details.)\n\n\n\n\n>### 2.0.13\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- Support for UUID arrays.\n>- It is now possible to build psycopg linking to a static libpq\n>  library.\n\n>Bug fixes:\n\n>- Fixed a deadlock related to using the same connection with\n>  multiple cursors from different threads.\n>- Builds again with MSVC.\n\n\n\n\n>### 2.0.12\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- The connection object now has a reset() method that can be used to\n>  reset the connection to its default state.\n\n>Bug fixes:\n\n>- copy_to() and copy_from() now accept a much larger number of columns.\n>- Fixed PostgreSQL version detection.\n>- Fixed ZPsycopgDA version check.\n>- Fixed regression in ZPsycopgDA that made it behave wrongly when\n>  receiving serialization errors: now the query is re-issued as it\n>  should be by propagating the correct exception to Zope.\n>- Writing &quot;large&quot; large objects should now work.\n\n\n\n\n>### 2.0.11\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- DictRow and RealDictRow now use less memory. If you inherit on them\n>  remember to set __slots__ for your new attributes or be prepare to\n>  go back to old memory usage.\n\n>Bug fixes:\n\n>- Fixed exception in setup.py.\n>- More robust detection of PostgreSQL development versions.\n>- Fixed exception in RealDictCursor, introduced in 2.0.10.\n\n\n\n\n>### 2.0.10\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- A specialized type-caster that can parse time zones with seconds is\n>  now available. Note that after enabling it (see extras.py) &quot;wrong&quot;\n>  time zones will be parsed without raising an exception but the\n>  result will be rounded.\n>- DictCursor can be used as a named cursor.\n>- DictRow now implements more dict methods.\n>- The connection object now expose PostgreSQL server version as the\n>  .server_version attribute and the protocol version used as\n>  .protocol_version.\n>- The connection object has a .get_parameter_status() methods that\n>  can be used to obtain useful information from the server.\n\n>Bug fixes:\n\n>- None is now correctly always adapted to NULL.\n>- Two double memory free errors provoked by multithreading and\n>  garbage collection are now fixed.\n>- Fixed usage of internal Python code in the notice processor; this\n>  should fix segfaults when receiving a lot of notices in\n>  multithreaded programs.\n>- Should build again on MSVC and Solaris.\n>- Should build with development versions of PostgreSQL (ones with\n>  -devel version string.)\n>- Fixed some tests that failed even when psycopg was right.\n\n\n\n\n>### 2.0.9\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- COPY TO/COPY FROM queries now can be of any size and psycopg will\n>  correctly quote separators.\n>- float values Inf and NaN are now correctly handled and can\n>  round-trip to the database.\n>- executemany() now return the numer of total INSERTed or UPDATEd\n>  rows. Note that, as it has always been, executemany() should not\n>  be used to execute multiple SELECT statements and while it will\n>  execute the statements without any problem, it will return the\n>  wrong value.\n>- copy_from() and copy_to() can now use quoted separators.\n>- &quot;import psycopg2.extras&quot; to get UUID support.\n\n>Bug fixes:\n\n>- register_type() now works on connection and cursor subclasses.\n>- fixed a memory leak when using lobjects.\n\n\n\n\n>### 2.0.8\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>New features:\n\n>- The connection object now has a get_backend_pid() method that\n>  returns the current PostgreSQL connection backend process PID.\n>- The PostgreSQL large object API has been exposed through the\n>  Cursor.lobject() method.\n\n>Bug fixes:\n\n>- Some fixes to ZPsycopgDA have been merged from the Debian package.\n>- A memory leak was fixed in Cursor.executemany().\n>- A double free was fixed in pq_complete_error(), that caused crashes\n>  under some error conditions.\n\n\n\n\n>### 2.0.7\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>Improved error handling:\n\n>- All instances of psycopg2.Error subclasses now have pgerror,\n>  pgcode and cursor attributes.  They will be set to None if no\n>  value is available.\n>- Exception classes are now chosen based on the SQLSTATE value from\n>  the result.  (184)\n>- The commit() and rollback() methods now set the pgerror and pgcode\n>  attributes on exceptions. (152)\n>- errors from commit() and rollback() are no longer considered\n>  fatal. (194)\n>- If a disconnect is detected during execute(), an exception will be\n>  raised at that point rather than resulting in &quot;ProgrammingError:\n>  no results to fetch&quot; later on. (186)\n\n>Better PostgreSQL compatibility:\n\n>- If the server uses standard_conforming_strings, perform\n>  appropriate quoting.\n>- BC dates are now handled if psycopg is compiled with mxDateTime\n>  support.  If using datetime, an appropriate ValueError is\n>  raised. (203)\n\n>Other bug fixes:\n\n>- If multiple sub-interpreters are in use, do not share the Decimal\n>  type between them. (192)\n>- Buffer objects obtained from psycopg are now accepted by psycopg\n>  too, without segfaulting. (209)\n>- A few small changes were made to improve DB-API compatibility.\n>  All the dbapi20 tests now pass.\n\n>Miscellaneous:\n\n>- The PSYCOPG_DISPLAY_SIZE option is now off by default.  This means\n>  that display size will always be set to &quot;None&quot; in\n>  cursor.description.  Calculating the display size was expensive,\n>  and infrequently used so this should improve performance.\n>- New QueryCanceledError and TransactionRollbackError exceptions\n>  have been added to the psycopg2.extensions module.  They can be\n>  used to detect statement timeouts and deadlocks respectively.\n>- Cursor objects now have a &quot;closed&quot; attribute. (164)\n>- If psycopg has been built with debug support, it is now necessary\n>  to set the PSYCOPG_DEBUG environment variable to turn on debug\n>  spew.\n\n\n\n\n>### 2.0.6\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>Better support for PostgreSQL, Python and win32:\n\n>- full support for PostgreSQL 8.2, including NULLs in arrays\n>- support for almost all existing PostgreSQL encodings\n>- full list of PostgreSQL error codes available by importing the\n>  psycopg2.errorcodes module\n>- full support for Python 2.5 and 64 bit architectures\n>- better build support on win32 platform\n\n>Support for per-connection type-casters (used by ZPsycopgDA too, this\n>fixes a long standing bug that made different connections use a random\n>set of date/time type-casters instead of the configured one.)\n\n>Better management of times and dates both from Python and in Zope.\n\n>copy_to and copy_from now take an extra &quot;columns&quot; parameter.\n\n>Python tuples are now adapted to SQL sequences that can be used with\n>the &quot;IN&quot; operator by default if the psycopg2.extensions module is\n>imported (i.e., the SQL_IN adapter was moved from extras to extensions.)\n\n>Fixed some small buglets and build glitches:\n\n>- removed double mutex destroy\n>- removed all non-constant initializers\n>- fixed PyObject_HEAD declarations to avoid memory corruption\n>  on 64 bit architectures\n>- fixed several Python API calls to work on 64 bit architectures\n>- applied compatibility macros from PEP 353\n>- now using more than one argument format raise an error instead of\n>  a segfault\n\n\n\n\n>### 2.0.5.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Now it really, really builds on MSVC and older gcc versions.\n\n\n\n>### 2.0.5\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Fixed various buglets such as:\n\n>  - segfault when passing an empty string to Binary()\n>  - segfault on null queries\n>  - segfault and bad keyword naming in .executemany()\n>  - OperationalError in connection objects was always None\n\n>* Various changes to ZPsycopgDA to make it more zope2.9-ish.\n\n>* connect() now accept both integers and strings as port parameter\n\n\n\n>### 2.0.4\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Fixed float conversion bug introduced in 2.0.3.\n\n\n\n>### 2.0.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Fixed various buglets and a memory leak (see ChangeLog for details)\n\n\n\n>### 2.0.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Fixed a bug in array typecasting that sometimes made psycopg forget about\n>  the last element in the array.\n\n>* Fixed some minor buglets in string memory allocations.\n\n>* Builds again with compilers different from gcc (warning about PostgreSQL\n>  version is issued only if __GCC__ is defined.)\n\n\n\n>### 2.0.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* ZPsycopgDA now actually loads.\n\n\n\n>### 2.0\n\n>-------------------------\n\n>* Fixed handle leak on win32.\n\n>* If available the new &quot;safe&quot; encoding functions of libpq are used.\n\n>* django and tinyerp people, please switch to psycopg 2 _without_\n>  using a psycopg 1 compatibility layer (this release was anticipated\n>  so that you all stop grumbling about psycopg 2 is still in beta.. :)\n\n>What&#39;s new in psycopg 2.0 beta 7\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Ironed out last problems with times and date (should be quite solid now.)\n\n>* Fixed problems with some arrays.\n\n>* Slightly better ZPsycopgDA (no more double connection objects in the menu\n>  and other minor fixes.)\n\n>* ProgrammingError exceptions now have three extra attributes: .cursor\n>  (it is possible to access the query that caused the exception using\n>  error.cursor.query), .pgerror and .pgcode (PostgreSQL original error\n>  text and code.)\n\n>* The build system uses pg_config when available.\n\n>* Documentation in the doc/ directory! (With many kudos to piro.)\n\n>What&#39;s new in psycopg 2.0 beta 6\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Support for named cursors (see examples/fetch.py).\n\n>* Safer parsing of time intervals.\n\n>* Better parsing of times and dates, no more locale problems.\n\n>* Should now play well with py2exe and similar tools.\n\n>* The &quot;decimal&quot; module is now used if available under Python 2.3.\n\n>What&#39;s new in psycopg 2.0 beta 5\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Fixed all known bugs.\n\n>* The initial isolation level is now read from the server and\n>  .set_isolation_level() now takes values defined in psycopg2.extensions.\n\n>* .callproc() implemented as a SELECT of the given procedure.\n\n>* Better docstrings for a few functions/methods.\n\n>* Some time-related functions like psycopg2.TimeFromTicks() now take the\n>  local timezone into account. Also a tzinfo object (as per datetime module\n>  specifications) can be passed to the psycopg2.Time and psycopg2.Datetime\n>  constructors.\n\n>* All classes have been renamed to exist in the psycopg2._psycopg module,\n>  to fix problems with automatic documentation generators like epydoc.\n\n>* NOTIFY is correctly trapped (see examples/notify.py for example code.)\n\n>What&#39;s new in psycopg 2.0 beta 4\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* psycopg module is now named psycopg2.\n\n>* No more segfaults when a UNICODE query can&#39;t be converted to the\n>  backend encoding.\n\n>* No more segfaults on empty queries.\n\n>* psycopg2.connect() now takes an integer for the port keyword parameter.\n\n>* &quot;python setup.py bdist_rpm&quot; now works.\n\n>* Fixed lots of small bugs, see ChangeLog for details.\n\n>What&#39;s new in psycopg 2.0 beta 3\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* ZPsycopgDA now works (except table browsing.)\n\n>* psycopg build again on Python 2.2.\n\n>What&#39;s new in psycopg 2.0 beta 2\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Fixed ZPsycopgDA version check (ZPsycopgDA can now be imported in\n>  Zope.)\n\n>* psycopg.extras.DictRow works even after a new query on the generating\n>  cursor.\n\n>* Better setup.py for win32 (should build with MSCV or mingw.)\n\n>* Generic fixed and memory leaks plugs.\n\n>What&#39;s new in psycopg 2.0 beta 1\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Officially in beta (i.e., no new features will be added.)\n\n>* Array support: list objects can be passed as bound variables and are\n>  correctly returned for array columns.\n\n>* Added the psycopg.psycopg1 compatibility module (if you want instant\n>  psycopg 1 compatibility just &quot;from psycopg import psycopg1 as psycopg&quot;.)\n\n>* Complete support for BYTEA columns and buffer objects.\n\n>* Added error codes to error messages.\n\n>* The AsIs adapter is now exported by default (also Decimal objects are\n>  adapted using the AsIs adapter (when str() is called on them they\n>  already format themselves using the right precision and scale.)\n\n>* The connect() function now takes &quot;connection_factory&quot; instead of\n>  &quot;factory&quot; as keyword argument.\n\n>* New setup.py code to build on win32 using mingw and better error\n>  messages on missing datetime headers,\n\n>* Internal changes that allow much better user-defined type casters.\n\n>* A lot of bugfixes (binary, datetime, 64 bit arches, GIL, .executemany())\n\n\n\n>### 1.99.13\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Added missing .executemany() method.\n\n>* Optimized type cast from PostgreSQL to Python (psycopg should be even\n>  faster than before.)\n\n\n\n>### 1.99.12\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* .rowcount should be ok and in sync with psycopg 1.\n\n>* Implemented the new COPY FROM/COPY TO code when connection to the\n>  backend using libpq protocol 3 (this also removes all asprintf calls:\n>  build on win32 works again.) A protocol 3-enabled psycopg *can*\n>  connect to an old protocol 2 database and will detect it and use the\n>  right code.\n\n>* getquoted() called for real by the mogrification code.\n\n\n\n>### 1.99.11\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* &#39;cursor&#39; argument in .cursor() connection method renamed to\n>  &#39;cursor_factory&#39;.\n\n>* changed &#39;tuple_factory&#39; cursor attribute name to &#39;row_factory&#39;.\n\n>* the .cursor attribute is gone and connections and cursors are properly\n>  gc-managed.\n\n>* fixes to the async core.\n\n\n\n>### 1.99.10\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* The adapt() function now fully supports the adaptation protocol\n>  described in PEP 246. Note that the adapters registry now is indexed\n>  by (type, protocol) and not by type alone. Change your adapters\n>  accordingly.\n\n>* More configuration options moved from setup.py to setup.cfg.\n\n>* Fixed two memory leaks: one in cursor deallocation and one in row\n>  fetching (.fetchXXX() methods.)\n\n\n\n>### 1.99.9\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* Added simple pooling code (psycopg.pool module); see the reworked\n>  examples/threads.py for example code.\n\n>* Added DECIMAL typecaster to convert postgresql DECIMAL and NUMERIC\n>  types (i.e, all types with an OID of NUMERICOID.) Note that the\n>  DECIMAL typecaster does not set scale and precision on the created\n>  objects but uses Python defaults.\n\n>* ZPsycopgDA back in and working using the new pooling code.\n\n>* Isn&#39;t that enough? :)\n\n\n\n>### 1.99.8\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* added support for UNICODE queries.\n>* added UNICODE typecaster; to activate it just do::\n\n>      psycopg.extensions.register_type(psycopg.extensions.UNICODE)\n\n>  Note that the UNICODE typecaster override the STRING one, so it is\n>  not activated by default.\n\n>* cursors now really support the iterator protocol.\n>* solved the rounding errors in time conversions.\n>* now cursors support .fileno() and .isready() methods, to be used in\n>  select() calls.\n>* .copy_from() and .copy_in() methods are back in (still using the old\n>  protocol, will be updated to use new one in next release.)\n>* fixed memory corruption bug reported on win32 platform.\n\n\n\n>### 1.99.7\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* added support for tuple factories in cursor objects (removed factory\n>  argument in favor of a .tuple_factory attribute on the cursor object);\n>  see the new module psycopg.extras for a cursor (DictCursor) that\n>  return rows as objects that support indexing both by position and\n>  column name.\n>* added support for tzinfo objects in datetime.timestamp objects: the\n>  PostgreSQL type &quot;timestamp with time zone&quot; is converted to\n>  datetime.timestamp with a FixedOffsetTimezone initialized as necessary.\n\n\n\n>### 1.99.6\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* sslmode parameter from 1.1.x\n>* various datetime conversion improvements.\n>* now psycopg should compile without mx or without native datetime\n>  (not both, obviously.)\n>* included various win32/MSVC fixes (pthread.h changes, winsock2\n>  library, include path in setup.py, etc.)\n>* ported interval fixes from 1.1.14/1.1.15.\n>* the last query executed by a cursor is now available in the\n>  .query attribute.\n>* conversion of unicode strings to backend encoding now uses a table\n>  (that still need to be filled.)\n>* cursors now have a .mogrify() method that return the query string\n>  instead of executing it.\n>* connection objects now have a .dsn read-only attribute that holds the\n>  connection string.\n>* moved psycopg C module to _psycopg and made psycopg a python module:\n>  this allows for a neat separation of DBAPI-2.0 functionality and psycopg\n>  extensions; the psycopg namespace will be also used to provide\n>  python-only extensions (like the pooling code, some ZPsycopgDA support\n>  functions and the like.)\n\n\n\n>### 1.99.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* initial working support for unicode bound variables: UTF-8 and latin-1\n>  backend encodings are natively supported (and the encoding.py example even\n>  works!)\n>* added .set_client_encoding() method on the connection object.\n>* added examples: encoding.py, binary.py, lastrowid.py.\n\n\n\n>### 1.99.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* better typecasting:\n\n>  - DateTimeDelta used for postgresql TIME (merge from 1.1)\n>  - BYTEA now is converted to a real buffer object, not to a string\n\n>* buffer objects are now adapted into Binary objects automatically.\n>* ported scroll method from 1.1 (DBAPI-2.0 extension for cursors)\n>* initial support for some DBAPI-2.0 extensions:\n\n>  - .rownumber attribute for cursors\n>  - .connection attribute for cursors\n>  - .next() and .__iter__() methods to have cursors support the iterator\n>    protocol\n>  - all exception objects are exported to the connection object\n\n\n\n>### 1.99.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* implemented microprotocols to adapt arbitrary types to the interface used by\n>  psycopg to bind variables in execute;\n\n>* moved qstring, pboolean and mxdatetime to the new adapter layout (binary is\n>  still missing; python 2.3 datetime needs to be written).\n\n\n\n\n>### 1.99.0\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>* reorganized the whole source tree;\n\n>* async core is in place;\n\n>* splitted QuotedString objects from mx stuff;\n\n>* dropped autotools and moved to pythonic setup.py (needs work.)\n\n\n\n\n\n\n*Got merge conflicts? Close this PR and delete the branch. I'll create a new PR for you.*\n\nHappy merging! 🤖\n","created_at":"2017-07-24T19:44:58Z","updated_at":"2017-07-24T19:44:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/44/commits","review_comments_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/44/comments","review_comment_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/comments{/number}","comments_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/44/comments","statuses_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/statuses/655f55b2569e75cb498d374f335e83c9411a8b55","head":{"label":"olin-computing:pyup-pin-psycopg2-2.7.3","ref":"pyup-pin-psycopg2-2.7.3","sha":"655f55b2569e75cb498d374f335e83c9411a8b55","user":{"login":"olin-computing","id":22137750,"avatar_url":"https://avatars1.githubusercontent.com/u/22137750?v=4","gravatar_id":"","url":"https://api.github.com/users/olin-computing","html_url":"https://github.com/olin-computing","followers_url":"https://api.github.com/users/olin-computing/followers","following_url":"https://api.github.com/users/olin-computing/following{/other_user}","gists_url":"https://api.github.com/users/olin-computing/gists{/gist_id}","starred_url":"https://api.github.com/users/olin-computing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olin-computing/subscriptions","organizations_url":"https://api.github.com/users/olin-computing/orgs","repos_url":"https://api.github.com/users/olin-computing/repos","events_url":"https://api.github.com/users/olin-computing/events{/privacy}","received_events_url":"https://api.github.com/users/olin-computing/received_events","type":"Organization","site_admin":false},"repo":{"id":81030241,"name":"assignment-dashboard","full_name":"olin-computing/assignment-dashboard","owner":{"login":"olin-computing","id":22137750,"avatar_url":"https://avatars1.githubusercontent.com/u/22137750?v=4","gravatar_id":"","url":"https://api.github.com/users/olin-computing","html_url":"https://github.com/olin-computing","followers_url":"https://api.github.com/users/olin-computing/followers","following_url":"https://api.github.com/users/olin-computing/following{/other_user}","gists_url":"https://api.github.com/users/olin-computing/gists{/gist_id}","starred_url":"https://api.github.com/users/olin-computing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olin-computing/subscriptions","organizations_url":"https://api.github.com/users/olin-computing/orgs","repos_url":"https://api.github.com/users/olin-computing/repos","events_url":"https://api.github.com/users/olin-computing/events{/privacy}","received_events_url":"https://api.github.com/users/olin-computing/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/olin-computing/assignment-dashboard","description":"A web dashboard for viewing the forks of a classroom assignment repo","fork":false,"url":"https://api.github.com/repos/olin-computing/assignment-dashboard","forks_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/forks","keys_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/keys{/key_id}","collaborators_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/teams","hooks_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/hooks","issue_events_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/events{/number}","events_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/events","assignees_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/assignees{/user}","branches_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/branches{/branch}","tags_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/tags","blobs_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/refs{/sha}","trees_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/trees{/sha}","statuses_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/statuses/{sha}","languages_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/languages","stargazers_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/stargazers","contributors_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/contributors","subscribers_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/subscribers","subscription_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/subscription","commits_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/commits{/sha}","git_commits_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/commits{/sha}","comments_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/comments{/number}","issue_comment_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/comments{/number}","contents_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/contents/{+path}","compare_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/compare/{base}...{head}","merges_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/merges","archive_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/downloads","issues_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues{/number}","pulls_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls{/number}","milestones_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/milestones{/number}","notifications_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/labels{/name}","releases_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/releases{/id}","deployments_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/deployments","created_at":"2017-02-05T23:36:22Z","updated_at":"2017-02-27T10:52:29Z","pushed_at":"2017-07-24T19:44:57Z","git_url":"git://github.com/olin-computing/assignment-dashboard.git","ssh_url":"git@github.com:olin-computing/assignment-dashboard.git","clone_url":"https://github.com/olin-computing/assignment-dashboard.git","svn_url":"https://github.com/olin-computing/assignment-dashboard","homepage":"","size":753,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"open_issues_count":41,"forks":1,"open_issues":41,"watchers":0,"default_branch":"master"}},"base":{"label":"olin-computing:master","ref":"master","sha":"4442587630cd1f55ae3302e96ddef7fd83caba16","user":{"login":"olin-computing","id":22137750,"avatar_url":"https://avatars1.githubusercontent.com/u/22137750?v=4","gravatar_id":"","url":"https://api.github.com/users/olin-computing","html_url":"https://github.com/olin-computing","followers_url":"https://api.github.com/users/olin-computing/followers","following_url":"https://api.github.com/users/olin-computing/following{/other_user}","gists_url":"https://api.github.com/users/olin-computing/gists{/gist_id}","starred_url":"https://api.github.com/users/olin-computing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olin-computing/subscriptions","organizations_url":"https://api.github.com/users/olin-computing/orgs","repos_url":"https://api.github.com/users/olin-computing/repos","events_url":"https://api.github.com/users/olin-computing/events{/privacy}","received_events_url":"https://api.github.com/users/olin-computing/received_events","type":"Organization","site_admin":false},"repo":{"id":81030241,"name":"assignment-dashboard","full_name":"olin-computing/assignment-dashboard","owner":{"login":"olin-computing","id":22137750,"avatar_url":"https://avatars1.githubusercontent.com/u/22137750?v=4","gravatar_id":"","url":"https://api.github.com/users/olin-computing","html_url":"https://github.com/olin-computing","followers_url":"https://api.github.com/users/olin-computing/followers","following_url":"https://api.github.com/users/olin-computing/following{/other_user}","gists_url":"https://api.github.com/users/olin-computing/gists{/gist_id}","starred_url":"https://api.github.com/users/olin-computing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olin-computing/subscriptions","organizations_url":"https://api.github.com/users/olin-computing/orgs","repos_url":"https://api.github.com/users/olin-computing/repos","events_url":"https://api.github.com/users/olin-computing/events{/privacy}","received_events_url":"https://api.github.com/users/olin-computing/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/olin-computing/assignment-dashboard","description":"A web dashboard for viewing the forks of a classroom assignment repo","fork":false,"url":"https://api.github.com/repos/olin-computing/assignment-dashboard","forks_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/forks","keys_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/keys{/key_id}","collaborators_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/teams","hooks_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/hooks","issue_events_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/events{/number}","events_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/events","assignees_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/assignees{/user}","branches_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/branches{/branch}","tags_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/tags","blobs_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/refs{/sha}","trees_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/trees{/sha}","statuses_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/statuses/{sha}","languages_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/languages","stargazers_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/stargazers","contributors_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/contributors","subscribers_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/subscribers","subscription_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/subscription","commits_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/commits{/sha}","git_commits_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/git/commits{/sha}","comments_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/comments{/number}","issue_comment_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/comments{/number}","contents_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/contents/{+path}","compare_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/compare/{base}...{head}","merges_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/merges","archive_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/downloads","issues_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues{/number}","pulls_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls{/number}","milestones_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/milestones{/number}","notifications_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/labels{/name}","releases_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/releases{/id}","deployments_url":"https://api.github.com/repos/olin-computing/assignment-dashboard/deployments","created_at":"2017-02-05T23:36:22Z","updated_at":"2017-02-27T10:52:29Z","pushed_at":"2017-07-24T19:44:57Z","git_url":"git://github.com/olin-computing/assignment-dashboard.git","ssh_url":"git@github.com:olin-computing/assignment-dashboard.git","clone_url":"https://github.com/olin-computing/assignment-dashboard.git","svn_url":"https://github.com/olin-computing/assignment-dashboard","homepage":"","size":753,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"open_issues_count":41,"forks":1,"open_issues":41,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/44"},"html":{"href":"https://github.com/olin-computing/assignment-dashboard/pull/44"},"issue":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/44"},"comments":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/issues/44/comments"},"review_comments":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/44/comments"},"review_comment":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/pulls/44/commits"},"statuses":{"href":"https://api.github.com/repos/olin-computing/assignment-dashboard/statuses/655f55b2569e75cb498d374f335e83c9411a8b55"}},"merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"pyup-bot"}}