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](https://oracle.github.io/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
* Deprecate get rows by leorudczenko in https://github.com/BritishGeologicalSurvey/etlhelper/pull/182
* Set default row factory to as dict by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/183
* Run postgresql integration tests in ci by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/184
* Read LOBs as string/bytes instead of streaming by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/181
* Add README updates to index.rst by KoalaGeo in https://github.com/BritishGeologicalSurvey/etlhelper/pull/185
* More type hints by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/186
* Etl post type hint docs by ximenesuk in https://github.com/BritishGeologicalSurvey/etlhelper/pull/187
* Overhaul docs by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/190
* More docs updates by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/192
* Merge long-running for_v1 branch. by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/193
* Adjust annotations by leorudczenko in https://github.com/BritishGeologicalSurvey/etlhelper/pull/194
* Release doc updates by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/195
* Run Sphinx deploy for changes to etlhelper or .github folders by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/196
* Bump ubuntu version and use python 3.10 by leorudczenko in https://github.com/BritishGeologicalSurvey/etlhelper/pull/197
* Integration test fixes by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/198
* Use sqlite connection kwarg example by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/199
* Use PyPI list for published releases by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/200
* Update docs code demos by leorudczenko in https://github.com/BritishGeologicalSurvey/etlhelper/pull/201
* Update documentation by jbow0131 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/204
* Update csv_files.py imports by sophiedorward in https://github.com/BritishGeologicalSurvey/etlhelper/pull/206
* Add type hint to connection types in db_helper_factory by rachelheaven in https://github.com/BritishGeologicalSurvey/etlhelper/pull/207
* Pre release tweaks by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/208
* Skip test that passes locally but fails in CI by ximenesuk in https://github.com/BritishGeologicalSurvey/etlhelper/pull/210
* Database to API / NoSQL comments by spenny-liam in https://github.com/BritishGeologicalSurvey/etlhelper/pull/211
* Add link to log_to_console() by volcan01010 in https://github.com/BritishGeologicalSurvey/etlhelper/pull/209
New Contributors
* sophiedorward
* spenny-liam
* lyncop
* rachelheaven
* jbow0131
**Full Changelog**: https://github.com/BritishGeologicalSurvey/etlhelper/compare/v0.14.3...v1.0.0