Version history

AIOHappyBase 1.2.0

Release date: 2019-11-28

First release of the async version of HappyBase!

The version number is the same because the API is almost identical (albeit async) except for a few updates:

  • Only Python 3.6+ will be supported (I like f-strings and ordered dictionaries, sue me:P)
  • Connection and ConnectionPool objects can be used as context managers (async and regular).
  • Explicitly closing non-context managed Connection and ConnectionPool objects is now required due the asyncio event loop being mostly unavailable during __del__.
  • Connection.create_table() now returns the Table instance.
  • Support for the framed transport and compact protocol have been dropped until thriftpy2.contrib.aio supports them as well.

HappyBase 1.2.0

Release date: 2019-05-14

  • Switch from thriftpy to its successor thriftpy2, which supports Python 3.7. (issue #221, pr 222,

HappyBase 1.1.0

Release date: 2017-04-03

  • Set socket timeout unconditionally on TSocket (#146)
  • Add new ‘0.98’ compatibility mode (#155)
  • Add support for reversed scanners (#67, #155)

HappyBase 1.0.0

Release date: 2016-08-13

  • First 1.x.y release!

    From now on this library uses a semantic versioning scheme. HappyBase is a mature library, but always used 0.x version numbers for no good reason. This has now changed.

  • Finally, Python 3 support. Thanks to all the people who contributed! (issue #40, pr 116, pr 108, pr 111)

  • Switch to thriftpy as the underlying Thrift library, which is a much nicer and better maintained library.

  • Enable building universal wheels (issue 78)

HappyBase 0.9

Release date: 2014-11-24

  • Fix an issue where scanners would return fewer results than expected due to HBase not always behaving as its documentation suggests (issue #72).
  • Add support for the Thrift compact protocol (TCompactProtocol) in Connection (issue #70).

HappyBase 0.8

Release date: 2014-02-25

  • Add (and default to) ‘0.96’ compatibility mode in Connection.
  • Add support for retrieving sorted columns, which is possible with the HBase 0.96 Thrift API. This feature uses a new sorted_columns argument to Table.scan(). An OrderedDict implementation is required for this feature; with Python 2.7 this is available from the standard library, but for Python 2.6 a separate ordereddict package has to be installed from PyPI. (issue #39)
  • The batch_size argument to Table.scan() is no longer propagated to Scan.setBatching() at the Java side (inside the Thrift server). To influence the Scan.setBatching() (which may split rows into partial rows) a new scan_batching argument to Table.scan() has been added. See issue #54, issue #56, and the HBase docs for Scan.setBatching() for more details.

HappyBase 0.7

Release date: 2013-11-06

  • Added a wal argument to various data manipulation methods on the Table and Batch classes to determine whether to write the mutation to the Write-Ahead Log (WAL). (issue #36)
  • Pass batch_size to underlying Thrift Scan instance (issue #38).
  • Expose server name and port in Table.regions() (recent HBase versions only) (issue #37).
  • Regenerated bundled Thrift API modules using a recent upstream Thrift API definition. This is required to expose newly added API.

HappyBase 0.6

Release date: 2013-06-12

  • Rewrote exception handling in connection pool. Exception handling is now a lot cleaner and does not introduce cyclic references anymore. (issue #25).
  • Regenerated bundled Thrift code using Thrift 0.9.0 with the new-style classes flag (issue #27).

HappyBase 0.5

Release date: 2013-05-24

  • Added a thread-safe connection pool (ConnectionPool) to keep connections open and share them between threads (issue #21).
  • The Connection.delete_table() method now features an optional disable parameter to make deleting enabled tables easier.
  • The debug log message emitted by Table.scan() when closing a scanner now includes both the number of rows returned to the calling code, and also the number of rows actually fetched from the server. If scanners are not completely iterated over (e.g. because of a ‘break’ statement in the for loop for the scanner), these numbers may differ. If this happens often, and the differences are big, this may be a hint that the batch_size parameter to Table.scan() is not optimal for your application.
  • Increased Thrift dependency to at least 0.8. Older versions are no longer available from PyPI. HappyBase should not be used with obsoleted Thrift versions.
  • The Connection constructor now features an optional timeout parameter to to specify the timeout to use for the Thrift socket (issue #15)
  • The timestamp argument to various methods now also accepts long values in addition to int values. This fixes problems with large timestamp values on 32-bit systems. (issue #23).
  • In some corner cases exceptions were raised during interpreter shutdown while closing any remaining open connections. (issue #18)

HappyBase 0.4

Release date: 2012-07-11

  • Add an optional table_prefix_separator argument to the Connection constructor, to specify the prefix used for the table_prefix argument (issue #3)
  • Add support for framed Thrift transports using a new optional transport argument to Connection (issue #6)
  • Add the Apache license conditions in the license statement (for the included HBase parts)
  • Documentation improvements

HappyBase 0.3

Release date: 2012-05-25

New features:

  • Improved compatibility with HBase 0.90.x
    • In earlier versions, using Table.scan() in combination with HBase 0.90.x often resulted in crashes, caused by incompatibilities in the underlying Thrift protocol.
    • A new compat flag to the Connection constructor has been added to enable compatibility with HBase 0.90.x.
    • Note that the Table.scan() API has a few limitations when used with HBase 0.90.x.
  • The row_prefix argument to Table.scan() can now be used together with filter and timestamp arguments.

Other changes:

  • Lower Thrift dependency to 0.6
  • The setup.py script no longer installs the tests
  • Documentation improvements

HappyBase 0.2

Release date: 2012-05-22

  • Fix package installation, so that pip install happybase works as expected (issue #1)
  • Various small documentation improvements

HappyBase 0.1

Release date: 2012-05-20

  • Initial release