Changelog
=========

0.13.0 (2024-04-29)
-------------------
* New modules and packages:
  - gui package
  - gui.qt
* New classes:
  - gui.qt.ImageAspectLabel

0.12.1 (2024-06-24)
-------------------
* Bufixes:
  - `islast` does not crash on empty iterators
* Typo fixes in documentation

0.12.0 (2023-08-29)
-------------------
* New functions and classes:
  - string_util.parse_list
  - string_util.parse_pair
  - string_util.func_name
* New unit tests:
  - tests.test_string_util.TestParsePair
  - tests.test_string_util.TestParseList

0.11.0 (2023-08-29)
-------------------

* Bugfixes:
  - Setting correct `stacklevel` in `logs.add_logging_level`
  - Fixes to documentation of properties in `recipes.RangeBuilder` and
    `time.Stopwatch`
  - Counting tabs in prefix rather than entire string in
    `args.SmartHelpFormatter`
* API changes:
  - New keywords in `string_util.horiz_cat` and
    `string_util.split_horiz_cat`.
    - titles: optional headings included with each column
    - headers: string or string generator to insert after the title
    - width: minimum width to allow for each column
    - hsep: header separator, similar to `sep`, which it defaults to
    - Dropped `missing='missing'` option since it truncated anyway
  - Renamed `recipes.shift_left` to `recipes.shift_up`
* New unit tests:
  - tests.test_string_util
* Added pytest-cov to required test dependencies

0.10.1 (2023-08-21)
-------------------

* Fixes to test and documentation warnings

0.10.0 (2023-08-20)
-------------------

* New modules:
  - args
* New functions and classes:
  - args.SmartHelpFormatter
* New unit tests:
  - tests.test_args

0.9.2 (2023-08-20)
------------------

* Switched to trunk-based development

0.9.1 (2023-03-26)
------------------

* Migrated to GitLab hosting

0.9.0 (2023-03-15)
------------------

* New functions and classes:
  - logs.add_detail_level
* Bugfixes:
  - Added missing default kwargs to monkeypatched version of
    logging.LogAdapter method in logs.add_log_level
  - Updated bondary handling in npy_util.prune_mask
* logs.add_logging_level verifies exception info settings if prior calls
  are found

0.8.0 (2022-11-04)
------------------

* New functions and classes:
  - recipes.chained_getter
* New unit tests:
  - tests.test_logs.TestAddLoggingLevel
  - tests.test_logs.TestResetHandlers
  - tests.test_logs.TestLogMaxFilter
  - tests.test_logs.TestMetaLoggableType
  - tests.test_recipes.TestChainedGetter
* Bugfixes:
  - Fixed sense of inclusive in logs.LogMaxFilter
* logs.add_logging_level updates logging.LoggerAdapter


0.7.1 (2022-10-24)
------------------

* New functions and classes:
  - npy_util.prune_mask


0.7.0 (2022-10-17)
------------------

* New functions and classes:
  - npy_util.masked_index
  - npy_util.unmasked_index
  - npy_util.find_peaks
* New unit tests:
  - tests.test_npy_util.TestMaskedIndex
  - tests.test_npy_util.TestUnmaskedIndex
  - tests.test_npy_util.TestFindPeaks


0.6.0 (2022-10-11)
------------------

* API changes:
  - Parameter stop in recipes.RangeBuilder.update is now optional
  - Property span in recipes.RangeBuilder
* Bugfixes:
  - Fixed handling of bulleted list styles in files.docx.list_number


0.5.0 (2022-06-17)
------------------

* New functions and classes:
  - multiline_repr in string_util
  - RangeBuilder in recipes


0.4.0 (2022-06-02)
------------------

* New functions and classes:
  - npy_util.replace_field
* New unit tests:
  - tests.test_npy_util.TestReplaceField


0.3.0 (2022-03-29)
------------------

* New functions and classes:
  - load.load_module no longer nested in load.module_as_dict
  - npy_util.iterate_dtype
* Bugfixes:
  - files.PreOpenedFile object is now properly iterable
* New unit tests:
  - tests.test_load.TestLoadModule
  - tests.test_load.TestModuleAsDict


0.2.0 (2022-01-27)
------------------

* New modules:
  - npy_util
  - tests.test_numbers
  - tests.test_objects
* New functions and classes:
  - getsizeof, size_type_mapping in objects
  - ndarray_handler added to size_type_mapping in objects
  - isolate_dtype in npy_util
  - as_base, digit_count in numbers
* New unit tests:
  - tests.test_objects.TestGetsizeof
  - tests.test_numbers.TestAsBase
  - tests.test_numbers.TestDigitCount
* Added docs to sdist
* Moved map_array, mask2runs, runs2mask from math to npy_util


0.1.1 (2022-01-16)
------------------

Minor updates to first release.

* New functions and classes:
  - segment_distance in math
* Bugfixes:
  - math.read_divide correctly handles scalar inputs
* Created pytest configuration, added first set of unit tests
  - files.tests.test_csv
  - tests.test_math.TestSegmentDistance
* Improved documentation with autosummary
* Added this CHANGELOG to installed data


0.1 (2022-01-10)
----------------

First release.

* New modules
  - time
  - files.ui
* New functions and classes:
  - json_registry made public in configuration
  - semilogx_base, semilogy_base, loglog_base in mpl_util
  - map_array, rms in math
  - split_extension in files
* API changes:
  - string_util.timestamp moved to time
  - Added mask2runs and runs2mask to math
  - Improvements to NumpyObject in configuration
  - Improvements to copy_func in objects
  - Added n argument to insert_suffix in files
* Bufixes:
  - mpl_util.show_extents axis confusion
  - Broken imports in submodules
* Officially supporting Python versions up to 3.10
* README -> README.md so GitHub can pick it up


0.1a2 (2021-01-09)
------------------

Second alpha release.

* Major additions to API
* New modules:
  - threads
  - configuration
  - structures
  - mapping
  - ctypes_util
* New functions and classes:
  - CloseableMixin in recipes
  - to_hex, camel2snake, snake2camel, timestamp in string_util
  - set_labels in mpl_utils
  - real_divide, threshold, ang_diff_* in math
* API changes:
  - Moved half of recipes to mapping
  - Updated Namespace, (in mapping), added setdefaults


0.1a1 (2021-04-03)
------------------

First alpha release.

* API changes:
  - SentinelType made public in root package
  - ensure_extension.modes renamed to ensure_exntension.policies in files


0.1a1.dev2 (2019-03-31)
-----------------------

Second development pre-release.

*   Major overhaul of documentation

0.1a1.dev1 (2019-03-20)
-----------------------

First development pre-release.

* First release on PyPI.
* Created Read the Docs pages.
* Only code required for imprint present initially.
* Documentation 90% complete.
* No tests worth speaking of.
