Skip to content

Releases: airbnb/omniduct

v1.1.2

20 Feb 01:01
Compare
Choose a tag to compare

This is a minor release that bumps the dependency on interface_meta to the 1.1.x series; fixing some downstream issues the use of method descriptors (such as classmethod and staticmethod).

v1.1.1

14 Feb 00:41
Compare
Choose a tag to compare

This is a minor release with a minor feature improvement and a bugfix:

  • Users can now pass show=None (in addition to show='none') in database execution magics.
  • Fixed a bug introduced in v1.1.0 concerning S3 path resolution.

v1.1.0

12 Feb 20:48
Compare
Choose a tag to compare

This is a major release featuring some infrastructure improvements and some minor API breakage.

Breaking changes:

  • The custom metaclass that was once in omniduct has now been extracted into its own library, and gained support for checking that subclasses correctly override methods. Subclasses that override methods defined on a parent class must now explicitly annotate those method declarations with interface_meta.override(). Any downstream subclasses will have to conform to these changes also.

New features:

  • FilesystemClients can now have the home directory specified at instantiation or overridden at runtime, and can now be configured to be read only.
  • DatabaseClients now propagate the instantiation-time schema/database/etc namespace configuration as defaults to utility methods (such as table_desc, table_list, etc).

Bugfixes and improvements:

  • SQLAlchemy schema exploration extensions are now more dialog agnostic (#93)
  • The 'replace' operation for the DatabaseClient.query_to_table method has been fixed for Presto and HiveServer2.
  • REST client logging now renders JSON error responses rather than simply showing a string representation.

v1.0.3

12 Feb 20:38
Compare
Choose a tag to compare

This is a minor release with several feature additions:

New Features:

  • Added support for pruning the cache based on size and/or age (#89)
  • Add an option to cleanup SQL in the render methods (#90)
  • Added template_get, template_variables and meta_only argument to template_render.

Bugfixes:

  • SchemaMixin bugfixes affecting some less common sqlalchemy backends (e.g. Snowflake) (#91)

v1.0.2

06 Dec 23:34
Compare
Choose a tag to compare

A minor release that improves query times the PySparkClient, which formerly used DataFrame.toLocalIterator() instead of .collect() in non-streaming cases, resulting in slower and more memory consuming queries where streaming was not required.

v1.0.1

06 Dec 05:47
Compare
Choose a tag to compare

This is a minor bugfix release fixing two issues:

  • DuctRegistry configuration parsing broke when configuration contained empty dictionaries. (#88 , thanks @naoyak).
  • Improved formatting of linebreaks in description text in the show_about tooling.

v1.0.0

30 Nov 22:10
Compare
Choose a tag to compare

This release marks an important milestone: Omniduct is now considered to be stable and feature complete!

This release focussed primarily on improving documentation, and every user-facing class and function is now documented. There were some breaking changes to the DuctRegistry API which hitherto has not received much love, but otherwise code changes were fairly minimal.

Features and enhancements:

  • Extended the DuctRegistry configuration format support, and made minor changes to the API to be more intuitive. [Users of omniduct v0.9.6 and earlier will need to adjust their use of DuctRegistry appropriately.
  • Added a show_about utility function to simplify showing of information about the Omniduct package (or dependent packages), providing the option to "endorse" Omniduct or other significant dependencies.
  • Included the new Omniduct logo, which you can feel free to use to endorse Omniduct in your own work.
  • Extended documentation coverage to all user-facing classes and methods, and improved the consistency of documentation conventions.
  • Added an example company/organisation-specific Omniduct configuration wrapper to assist with the bootstrapping of such wrappers.

Bugfixes:

  • Avoid use of _file_read in download in case the _open method was overloaded by clients, as in LocalFsClient.

v0.9.6

17 Nov 23:36
Compare
Choose a tag to compare

A minor release with two enhancements.

Features and enhancements:

  • Add support for formatting the names of database query results (#86)
  • Allow rendering of parsed namespaces using overridden quotes and separators

v0.9.5

21 Sep 15:01
Compare
Choose a tag to compare

A minor release with several feature enhancements.

Features and enhancements:

  • Enable multi-value insert mode for dataframe_to_table methods (from upstream pandas patches not landed in master)
  • Implement mkdir and remove for the HDFS filesystem client.
  • Only check dependencies for the actual protocol (rather than all potential protocols) being used by the SQLAlchemy client.

v0.9.4

20 Sep 16:33
Compare
Choose a tag to compare

Another minor release with several feature enhancements and bugfixes. Some minor breakage may occur if you overrode the default behaviour and use the impyla HiveServer2 backend (you will need to manually install the impyla dependency).

Features and enhancements:

  • Snowflake protocol is supported via the sqlalchemy backend
  • Database queries without result sets no longer result in exceptions
  • FileSystemClient.mkdir methods now default to raising exceptions if path already exists (passing exist_ok=True will disable this behaviour)
  • S3 mkdir and remove operations are now implemented

Bugfixes:

  • Fixed dataframe_to_table functionality when using a remote CLI for HiveServer2 (the use of backtick/grave quotations in recent releases broke the scripted command)
  • LocalFsClient used a Python 3 style super() call, breaking compatibility with Python 2
  • LocalFsClient triggered preparation during initialisation, sometimes resulting in some spurious logging events
  • Database queries without result sets no longer result in exceptions

Miscellaneous:

  • pyhive is now the only HiveServer2 client installed by default (impyla does not support Python 3.7, but is otherwise still usable but must be manually installed).