Release notes for Python Couchbase Client ## 0.9.0 (April 2013) * Initial rewrite of the Python library using libcouchbase. This now requires a C compiler and libcouchbase to install * Basic key-value functionality including: ** get ** set ** add ** replace ** delete ** append ** prepend ** incr ** decr Issues: Most of these are older bugs closed out from the "0.8.x" client. These bugs were implicitly fixed by the rewrite * PYCBC-6 * PYCBC-62 * PYCBC-56 * PYCBC-11 * PYCBC-73 * PYCBC-29 * PYCBC-24 * PYCBC-75 * PYCBC-26 * PYCBC-28 Outstanding Issues * Version 0.9 will block all Python threads ## Version 0.10.0 (16 May 2013) This version rewrites the client again, still using libcouchbase, but this time using the native Python C API. Specifically this means: * Cython is no longer required to build * Code works on Visual Studio compilers (and can be used on Windows) Additionally, the API was changed in respect to return values. Currently most API functions will return a 'Result' (or a subclass thereof). The rewrite is filed as PYCBC-103 ### Issues #### Formal specification for key types - keytypes should currently be a Python unicode object * Issues PYCBC-91, PYCBC-66 #### Client-side timeout can be set via the 'timeout' property * Issues PYCBC-58 #### Support for byte values * Issues PYCBC-103 ## Version 0.11.1 (29 May 2013) This version maintains the 0.10.0 API, while adding some new features and fixing some additional bugs ### Features #### Basic HTTP/Views support (experimental). _view and _design methods now available * Issues PYCBC-105 #### User-Defined Transcoder classes These can be used to override/supplement the default serialization of keys and values. * Issues PYCBC-92 #### Pretty print __repr__ and __str__ for common objects * Issues PYCBC-118, PYCBC-112 #### Add 'touch' command * Issues PYCBC-115 #### Add 'unlock' and 'lock' commands * Issues PYCBC-104, PYCBC-61 #### Expose list of nodes * Issues PYCBC-106 #### Allow Python3's dict_keys to be passed into the multi_* methods * Issues PYCBC-107 #### Add bucket attribute to show bucket name * Issues PYCBC-119 ### Fixes #### Memory leak on each storage operation * Issues PYCBC-123 #### Memory leak on some exceptions If bad arguments were received, the exception handling code would leak memory * Issues PYCBC-111 #### JSON format now more efficient for unicode values. Previously JSON would be encoded in ascii-safe mode. 0.11 allows encoding in UTF-8 mode * Issues PYCBC-108 #### Negative TTL will throw an exception Passing a negative TTL will now throw an exception. Previously this resulted in an integer underflow * Issues PYCBC-109 ## Version 1.0.0-Beta (17 June 2013) This version builds upon previous APIs. It provides new APIs for querying views and managing design documents ### Features #### New 'query' method and paginated view iterator View querying is now more efficient and streamlined with the new 'query' method. The older '_view' method has been removed * Issues PYCBC-7 PYCBC-9 PYCBC-41 PYCBC-27 PYCBC-83 #### New set of design document methods. These provide simple methods for creating fetching and removing design documents. These replace the older '_design' method. * Issues PYCBC-64 PYCBC-68 #### Thread Safety The Connection object may now be used safely across multiple threads by default. Tuning the behavior among multiple threads can be changed by the 'lockmode' constructor option * Issues PYCBC-125 #### Low-level observe command This wraps the libcouchbase implementation. * Issues PYCBC-36 #### Provide API to change default JSON and Pickle converters This allows the user to select a more performant implementation * Issues PYCBC-124 Note that this only affects the JSON and Pickle conversion performed with key-value operations, not with views. ### Fixes #### Client crashes if invalid hostname is passed. Certain variants of bad hostnames (i.e. with illegal characters) will have libcouchbase return an error code the client cannot handle and will thus crash the program. * Issues PYCBC-128 #### Multi-Arithmetic (incr_multi, decr_multi) not changing the value These functions worked and did not return an error but did not actually modify the value * Issues PYCBC-138 #### Quiet parameter not being honored when passed to constructor The 'quiet' parameter was not being used if passed in the constructor * Issues PYCBC-136 #### Client crashes if duplicate keys are passed in *_multi methods * Issues PYCBC-134 #### More informative message if empty string is passed to get Previously this would return 'InvalidArgument' without more information. The client now checks for this and displays more helpful information * Issues PYCBC-131 #### Crash when specifying "host:port" in a single string This is still illegal but will raise an exception and not crash * Issues PYCBC-130 #### unlock_multi does not raise exception on missing CAS This has been fixed; as unlock must have a CAS * Issues PYCBC-139 #### Lock without TTL fails with erroneous 'Encoding Error' The client will now throw a more informative exception * Issues PYCBC-132 ## Version 1.0.0 GA (July 1, 2013) This is the first GA release. It has the following modifications from the Beta ### Features #### Allow 'Transcoder' to be a class as well as an instance Fixes some common misuse. If a class, a new instance is created * Issues PYCBC-135 ### Fixes #### Observe crashes when used against clusters with replicas * Issues PYCBC-146 #### Creating and destoying many Couchbase instances will crash program This happened because of an extra refcount decrement * Issues PYCBC-140