<commit_before>version: 0.0.45
---------------
* Add `extend` to ordered set API
* Fix issue with repr2 dictionaries with newlines in keys

version: 0.0.44
---------------
* Add `ub.iter_window`

version: 0.0.43
---------------
* Removed `util_stress`, it was out of scope. 
* Spelling: changed the `Timer.ellapsed` attribute to `Timer.elapsed`.
* Verbosity of `Timer` and `Timerit` now depends on if a label was
  specified. 
* `Timer.tic` now returns a reference to the `Timer` instance.


version: 0.0.42
---------------
FIX: bug in hash_data where negative integers did not work.
ENH: hash_data can now accept OrderedDict input
ENH: dict_union now returns OrderedDicts if the first argument is one

version: 0.0.41
---------------
ADD: OrderedSet / oset
ENH: Added base to `augpath`
ENH: Added symlink function that works on unix and windows*.
(*if use has symlink permissions, it works just like unix without caveats.
  Otherwise ub.symlink falls back to using junctions and hard links, 
  which should still work mostly the same, except os.path.islink and
  os.readlink will not work among other minor issues).
ENH: ub.delete now treats nested junctions as symlinks, unlike `shutil.rmtree`.


version: 0.0.40
---------------
ENH: Added numpy support to repr2

version: 0.0.39
---------------
ENH: Changed ub.Timerit.call API to return a reference to the Timerit object
instead of of the average seconds. Note this change is backwards incompatible.


version: 0.0.38
---------------
ADD: `ub.hash_data` and `ub.hash_file` for easy hashing of arbitrary structured
    data and file.

ADD: `ub.dict_union` combines multiple dictionaries and returns the result.

ENH: `ub.Timerit` reports better measures of expected time.

ENH: new arg `total` to ub.chunks lets you specify how long an iterable is if
`len` is not available (for generators)

version: 0.0.37
---------------
ADD: Added ub.TempDir

ADD: Added ub.import_module_from_path

ADD: Added ub.import_module_from_name

ENH: can now choose ub.cmd tee backend (select or thread) on posix. 

FIX: fixed unused argument `chunksize` in util_download

ENH: ProgIter now supports a more tqdm-like api

FIX: ub.cmd tests now work on windows

FIX: terminal colors now work on windows

ENH: Added standard deviation to timerit

ENH: Minor enhancements to ub.Cacher

DEP: Removed most of the static_analysis module. Use code in xdoctest for now. Note: some of this functionality may return as general utilities in the future, but the existing constructs were only needed for doctests, which are now done via xdoctest.

version: 0.0.34
---------------

FEATURE: Added ub.truepath

FEATURE: Added ub.iterable

FEATURE: Added util_func.py with ub.identity

FEATURE: Added util_download.py with ub.download and ub.grabdata

ENH: __init__ imports are now statically generated, this fixes
   the random third party attributes (e.g. expanduser, Thread) that were
    exposed in the __init__ file.

ENH: ProgIter now uses scientific notation when it is small

ENH: AutoOrderedDict now inherits from AutoDict

ENH: tests are now running using pytest and xdoctest

ENH: ub.cmd now uses thread based logging 

FIX: Fixed many failing tests on windows

FIX: Small bug and documentation fixes.

ISSUE: ub.cmd does not work correctly on windows

ISSUE: some unicode formatting does not work correctly on windows


version: 0.0.33
---------------
FEATURE: Added ub.repr2 and ub.hzcat
FEATURE: Added ub.color_text


version: 0.0.31
---------------
FEATURE: Added ub.argflag and ub.argval


version: 0.0.28
---------------
FEATURE: Added ub.AutoDict and ub.AutoOrderedDict.
<commit_msg>Update whats new<commit_after>version: 0.0.45
---------------
* Add `extend` to ordered set API
* Fix issue with repr2 dictionaries with newlines in keys
* Fix issue with relative paths and symlink
* Increase tqdm compatibility with ProgIter

version: 0.0.44
---------------
* Add `ub.iter_window`

version: 0.0.43
---------------
* Removed `util_stress`, it was out of scope. 
* Spelling: changed the `Timer.ellapsed` attribute to `Timer.elapsed`.
* Verbosity of `Timer` and `Timerit` now depends on if a label was
  specified. 
* `Timer.tic` now returns a reference to the `Timer` instance.


version: 0.0.42
---------------
FIX: bug in hash_data where negative integers did not work.
ENH: hash_data can now accept OrderedDict input
ENH: dict_union now returns OrderedDicts if the first argument is one

version: 0.0.41
---------------
ADD: OrderedSet / oset
ENH: Added base to `augpath`
ENH: Added symlink function that works on unix and windows*.
(*if use has symlink permissions, it works just like unix without caveats.
  Otherwise ub.symlink falls back to using junctions and hard links, 
  which should still work mostly the same, except os.path.islink and
  os.readlink will not work among other minor issues).
ENH: ub.delete now treats nested junctions as symlinks, unlike `shutil.rmtree`.


version: 0.0.40
---------------
ENH: Added numpy support to repr2

version: 0.0.39
---------------
ENH: Changed ub.Timerit.call API to return a reference to the Timerit object
instead of of the average seconds. Note this change is backwards incompatible.


version: 0.0.38
---------------
ADD: `ub.hash_data` and `ub.hash_file` for easy hashing of arbitrary structured
    data and file.

ADD: `ub.dict_union` combines multiple dictionaries and returns the result.

ENH: `ub.Timerit` reports better measures of expected time.

ENH: new arg `total` to ub.chunks lets you specify how long an iterable is if
`len` is not available (for generators)

version: 0.0.37
---------------
ADD: Added ub.TempDir

ADD: Added ub.import_module_from_path

ADD: Added ub.import_module_from_name

ENH: can now choose ub.cmd tee backend (select or thread) on posix. 

FIX: fixed unused argument `chunksize` in util_download

ENH: ProgIter now supports a more tqdm-like api

FIX: ub.cmd tests now work on windows

FIX: terminal colors now work on windows

ENH: Added standard deviation to timerit

ENH: Minor enhancements to ub.Cacher

DEP: Removed most of the static_analysis module. Use code in xdoctest for now. Note: some of this functionality may return as general utilities in the future, but the existing constructs were only needed for doctests, which are now done via xdoctest.

version: 0.0.34
---------------

FEATURE: Added ub.truepath

FEATURE: Added ub.iterable

FEATURE: Added util_func.py with ub.identity

FEATURE: Added util_download.py with ub.download and ub.grabdata

ENH: __init__ imports are now statically generated, this fixes
   the random third party attributes (e.g. expanduser, Thread) that were
    exposed in the __init__ file.

ENH: ProgIter now uses scientific notation when it is small

ENH: AutoOrderedDict now inherits from AutoDict

ENH: tests are now running using pytest and xdoctest

ENH: ub.cmd now uses thread based logging 

FIX: Fixed many failing tests on windows

FIX: Small bug and documentation fixes.

ISSUE: ub.cmd does not work correctly on windows

ISSUE: some unicode formatting does not work correctly on windows


version: 0.0.33
---------------
FEATURE: Added ub.repr2 and ub.hzcat
FEATURE: Added ub.color_text


version: 0.0.31
---------------
FEATURE: Added ub.argflag and ub.argval


version: 0.0.28
---------------
FEATURE: Added ub.AutoDict and ub.AutoOrderedDict.

{'fraction_non_alphanumeric': 0.11112627986348123, 'fraction_numerical': 0.015017064846416382, 'mean_word_length': 3.2420382165605095, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '172634', 'n_tokens_mistral': 2276, 'n_tokens_neox': 2144, 'n_words': 976}