Skip to content

Releases: BritishGeologicalSurvey/etlhelper

v1.0.2

26 Nov 14:48
e466256
Compare
Choose a tag to compare

This is a minor release to fix generation of SQLAlchemy connection strings using the python-oracledb driver. It also updates the CI to run tests against Python 3.12 and 3.13.

What's Changed

  • Run tests on newer Python versions by @leorudczenko in #216
  • Make OracleDbHelper.sqlalchemy_connection_string use oracle+oracledb instead of oracle by @leorudczenko in #217

Full Changelog: v1.0.1...v1.0.2

v1.0.1

26 Jun 16:10
bf39be6
Compare
Choose a tag to compare

This is a minor release to update the documentation to remove the placeholder references to v0.14.3 that were in place prior to v1 release.

v1.0.0

26 Jun 15:43
a4d823c
Compare
Choose a tag to compare

ETL Helper version 1.0 contains many breaking changes and new ways of working.

Breaking changes

  • The cxOracle driver has been replaced with the python-oracledb driver. python-oracledb does not depend on Oracle Instant Client and all related code e.g., setup_oracle_client, has been removed as it is no longer required. This is a great sign of progress, as one of the initial purposes of ETL Helper was to give an easy way to jump through the hoops of installing Oracle Instant Client in CI pipelines. The read_lob flag has been deprecated as part of this change. Setting the encoding at connection time via encoding kwarg is also deprecated in the python-oracledb driver, which always uses utf8. See the Oracle driver documentation for details.
  • The default row factory has been changed from namedtuple_row_factory, to dict_row_factory. This is because dictionaries are mutable and so easier to use in transform functions. They are also more widely understood. To recreate the previous behaviour in existing scripts, import the row factory with from etlhelper.row_factories import namedtuple_row_factory set row_factory=namedtuple_row_factory.
  • get_rows is deprecated; use fetchall instead. This does the same thing, but is better aligned with the DB API 2.0.
  • fetchmany is deprecated; use iter_chunks instead. The behaviour of ETL Helper's fetchmany was different to cursor.fetchmany as defined by the DB API 2.0 and this was confusing. It is also possible to use chunks = etl.iter_chunks(...); do_something(next(chunks)).
  • dump_rows is deprecated; use for row in iter_rows(...); my_func(row) instead.
  • The ETL Helper logger is no longer given a handler by default. This is the correct behaviour for a library. Activate logging with etl.log_to_console().
  • The minimum supported Python version is 3.9. This allows us to benefit from security and typing improvements.

Non-breaking changes

  • There is a new Sphinx-based documentation webpage at https://britishgeologicalsurvey.github.io/etlhelper.
  • Documentation for the previous version (v0.14.3) can still be found at: https://github.com/BritishGeologicalSurvey/etlhelper/tree/v0.14.3
  • There is a new preferred syntax, using import etlhelper as etl to provide easy access to the public functions.
  • executemany and load functions can now take a transform function.
  • Type hints have been added to the ETL functions.
  • The build system uses pyproject.toml instead of setup.py and versioneer.
  • The CI pipeline has moved from Travis to GitHub actions.
  • The CI pipeline runs the PostgreSQL integration tests (which cover the bulk of the application logic).

What's Changed

New Contributors

Full Changelog: v0.14.3...v1.0.0

v1.0.0rc3

17 May 15:37
980c573
Compare
Choose a tag to compare
v1.0.0rc3 Pre-release
Pre-release

Release candidate for Version 1.0.

Draft release notes for v1.0.0 are here: https://github.com/BritishGeologicalSurvey/etlhelper/releases/tag/untagged-7b87dd3ee68b8f887de6

v1.0.0rc2

17 May 15:05
c5b2c92
Compare
Choose a tag to compare
v1.0.0rc2 Pre-release
Pre-release

Release candidate for Version 1.0.

Draft release notes for v1.0.0 are here: https://github.com/BritishGeologicalSurvey/etlhelper/releases/tag/untagged-7b87dd3ee68b8f887de6

v0.14.3

23 Aug 15:02
f570dd5
Compare
Choose a tag to compare

This is a minor release, with the main purpose of adding a deprecation warning to inform users that ETL Helper will soon move to version 1. This will include breaking changes. Users are advised to pin the version of their dependencies.

Other changes include swapping the CI system from Travis CI to GitHub Actions, documentation updates and minor tweaks to module importing and the reporting of SQLite column type.

Merge requests merged

New Contributors

Full Changelog: v0.14.2...v0.14.3

v0.14.2

04 Nov 20:21
887f084
Compare
Choose a tag to compare

This is a minor release to allow schema-qualified table names e.g. schema.table in the validate_identifiers() and to apply the validation to table names passed to the copy_table_rows() function.

What's Changed

Full Changelog: v0.14.1...v0.14.2

v0.14.1

04 Nov 12:33
820f654
Compare
Choose a tag to compare

This release is a minor fix to allow the test suite to pass in Python 3.6.

What's Changed

Full Changelog: v0.14.0...v0.14.1

v0.14.0

04 Nov 10:57
fcf2561
Compare
Choose a tag to compare

This release adds the following new features:

  • The generate_insert_sql function (used by load) validates the table and column names used. As these are user-provided they were a potential route for SQL injection attacks. An ETLHelperBadIdentifierError is raised on bad input.
  • The abort_etlhelper_threads() function has been added. When called, this raises an ETLHelperAbort exception at the end of the current chunk. It can be used to cancel jobs that are running in threads, such as in GUI applications. See README.md.
  • list_row_factory and tuple_row_factory have been added. Data can now be exported as all of the main Python container types e.g. namedtuple, dictionary, list and tuple. Lists are mutable so are convenient to use with transform functions. Tuples are fast to create and access. See README.md

Pull requests merged

Full Changelog: V0.13.0...v0.14.0

v0.13.0

23 May 12:47
e8ae62c
Compare
Choose a tag to compare

This release adds the table_info() function that provides basic metadata about the columns in a table. It is useful when browsing data and when auto-generating SQL queries.

What's Changed

Full Changelog: v0.12.2...v0.13.0