Change Log

  • 1.8.2 - Python 3.14 support and the addition of ‘manylinux’ tagged wheels. by j_berendt at 2026-02-07 13:24:50

    Note: There are no changes to the code in this release.
    
    Changes:
    - Addition of Python 3.14 wheels and classifier tags.
    - Addition of 'manylinux' tagged wheels (for PyPI).
    
    Released: 2026-02-07
    
  • 1.8.1 - Addressed the inflated source archive size. by j_berendt at 2025-09-22 10:32:53

    There are no changes between this version and v1.8.0. A new version was
    created so the source archive on PyPI could be a reasonable size, rather
    than 64MB; as PyPI does not allow re-uploads.
    
    Released: 2025-09-22
    
  • 1.8.0 - Addition of three new file signature checking functions. by j_berendt at 2025-08-26 10:58:58

    ** NOTE **
    From this version, only Python versions 3.10-3.13 are (officially)
    supported, with pre-built wheels supplied.
    
    UTL4-9: Add new file signatures
    - The following file signature tests have been added to the futils module,
      with aliases added to the utils module:
      - is7zip
      - isgzip
      - ispdf
    
    Other changes:
    - References to Python 3.7 changed to 3.10.
    
    Testing:
    - Testing completes successfully with all modules passing and 100% code
      coverage.
    - Pylint completes successfully with all modules reporting 10/10.
    
    Released: 2025-09-20
    
  • 1.7.0 - Introduction of the f(ast)utils module. by j_berendt at 2024-12-14 14:52:35

    ** NOTE **
    This is the last version which officially support Python 3.7-3.9. All
    future updates will be focused on 3.10+ support. Wheels will no longer be
    built for Python <3.10.
    
    UTL4-6: Integrate new functionality from badsnakes.
    - A new C module (_futils) has been introduced, whose functions are
      wrapped by the current utils.py module for easy access and documentation.
    - The functions are C implementations of the file-checking utilities from
      badsnakes and include: isascii, isbinary and iszip.
    - Added the exclude_dirs function from badsnakes to the utils module.
    
    UTL4-7: Wrong badge links.
    - Addressed an issue where some badge links in the README file pointed to
      preqs, rather than to utils4.
    
    Compatibility warning:
    - Some functions have had keyword parameters enforced, which may break
      backwards compatibility.
    
    Testing:
    - All test cases pass for Python 3.12, with 100% code coverage.
      - Note: A couple tests fail for Python 3.7 - 3.9 owing to a reduction in
        underlying library support (e.g. matplotlib, cryptography) and the use
        of the walrus operator.
    - Pylint completes successfully with 10/10 for all modules.
    
    Released: 2025-01-04
    
  • 1.6.0 - New utils functions. Snyk vulnerability patch. by j_berendt at 2024-11-13 09:16:54

    UTL4-1:
    - Added a 'get_removable_drives' function to the utils module.
      - This is a Windows-only function. If run on Linux, a NotImplementedError
        is raised.
    
    UTL4-4:
    - Added a 'strip_ansi_colour' function to the utils module to strip
      colour ANSI escape sequences from a string.
    
    UTL4-5: Snyk vulnerability
    - Addressed a Snyk vulnerability issue with the cryptography library.
      - Installed cryptography v43.0.3 into the development venv. The build
        script will generate a new requirements.txt file with this upgraded
        installation.
    
    Testing:
    - Test cases added for the new strip_ansi_colour and get_removable_drives
      functions.
    - Testing completes successfully with 100% code coverage.
    - Pylintr completes successfully with all modules reporting 10/10.
    
    Released: 2024-11-13
    
  • 1.5.0 - Production release for version 1.5.0rc3. by j_berendt at 2024-09-17 14:04:43

    Wheel files:
    - All applicable wheels embedded into the dist directory for upload to
      PyPI.
    
    Testing:
    - Testing completes successfully with 100% code coverage.
    - Pylintr completes successfully at 100%.
    
    Released: 2024-09-18
    
  • 1.5.0rc3 - Release candidate (3) for version 1.5.0. by j_berendt at 2024-08-14 16:47:50

    Changes:
    - Addressed a bug in setup.cfg where the new [build] table worked for
      Windows, but not Linux.
      - The [build] table is now added dynamically for Windows only.
    - Updated the homepage of the documentation to include a more accurate
      build instruction for Windows.
    
    Released: 2024-08-14
    
  • 1.5.0rc2 - Release candidate (2) for version 1.5.0. by j_berendt at 2024-08-14 13:53:40

    Changes:
    - Added a compiler entry to setup.cfg (for Windows building).
    - Minor accuracy updates to the README file.
    - Updated the release checklist.
    - Updated minimum Python version to 3.7.
    - Updated references to Python 3.6 to Python 3.7.
    - Removed Python 3.6 from the documentation.
    
    Python 3.6 deprecation:
    - Although Python 3.6 is no longer *officially* supported, the library
      will still work on 3.6 in most cases. The reason for pulling official
      support is due to the difficulty in getting hold of a build environment
      for 3.6 as it's no longer supported.
    
    Testing:
    - Python 3.8 testing and coverage completed successfully at 100%.
    - Python 3.12 testing and coverage completed successfully at 100%.
    
    Released: 2024-08-14
    
  • 1.5.0rc1 - Release candidate for version 1.5.0. by j_berendt at 2024-08-09 12:18:24

    Changes:
    - Added a README file for GitHub and PyPI.
    - Migrated the build from setup.py to pyproject.toml.
    - Minor documentation updates, primarily on the homepage.
    
    Testing:
    - Python 3.8 testing and coverage completed successfully at 100%.
    - Python 3.11 testing and coverage completed successfully at 100%.
    
    Released: 2024-08-12
    
  • 1.5.0.dev1 - Updates to the mathfunc and stats modules. Bug fixes. by j_berendt at 2023-01-19 20:25:11

    mathfunc:
    - PHI: The former function 'phi' has been n renamed to 'PHI', as this
      calculates a *constant* value of phi. This adjustment also makes
      the 'phi' function name available for the new function.
    - phi: A new 'phi' function has been added to calculate Euler's totient
      (or phi function).
    - esieve: Updated to support a larger quantity of prime numbers due
      to a different C memory allocation method. Tested up to 100M
      successfully. Additionally, the esieve method has been updated to
      be more memory efficient.
    - is_permutation: A new function to determine if two positive integers
      are permutations of each other.
    
    stats:
    - A CUSUM calculation method has been added to the Stats class.
    - A Gaussian KDE calculation has been added to the Stats class.
    
    Bug fixes:
    - utils.clean_dataframe:
      - BUG: Integer and float values were converted to NaN during cleaning
             if a string was present in the field.
      - FIX: If a string is present in the field, the dtype is set to
             'object', however the integer and float values retain their
             original value.
    
    Released: 2023-01-25
    
  • 1.4.0 - Addition of the dirsplit function to the filesys module. by j_berendt at 2022-08-12 12:34:16

    filesys:
    - The dirsplit function has been added which splits the files in a given
      directory into (n) sub-directories.
    - This function is designed to facilitate batch loading where the parent
      directory contains more files than the loader is designed to handle in
      a single run.
    
    Released: 2022-08-15
    
  • 1.3.0 - Addition of the cutils module and a mathfunc fix. by j_berendt at 2022-07-18 10:21:45

    cutils.py:
    - Addition of the c-based utilities module.
    - memset function added to wipe a specific memory location.
    
    mathfunc:
    - Updated to simplify the logic in the is_pandigital method.
    
    Released: 2022-07-18
    
  • 1.2.0 - New filesys module. Minor bug fix in mathfunc. by j_berendt at 2022-06-29 13:38:42

    filesys:
    - The filesys module contains a new function for comparing two files
      to verify if they are the same.
    - All test cases written with 100% test coverage.
    
    mathfunc:
    - Bug fix to the is_triangular function.
      - Addresses a bracketing issue where the wrong triangular value
        was being calculated, although the end result of the function
        was still correct.
    
    Released: 2022-06-30
    
  • 1.1.0 - New ‘source check’ utility and mathfunc updates. by j_berendt at 2022-06-07 09:28:05

    srccheck:
    - A new utility has been added (source check) which enables the
      checksumming of files.
    - The primary design-purpose of this utility is to enable the caller
      application to *easily* perform checksums on its source code files
      during startup.
    
    mathfunc:
    - primefactors:
        - Introduced a primefactors function which generates a list of prime
          factors for a given N value.
    - fib:
        - Updated the Fibonacci sequence generator to return a list of values
          the in the sequence, up to N.
        - Updated the internal logic to use iteration, rather than
          linear calculation due to inaccuracy in higher values of N.
    - New methods added:
      - *intconcat*: Concatenate two integer values.
      - *int_nbits*: Return the number of bits occupied by (n).
      - *is_perfect*: Test is a number is a perfect number.
    - Changed C source code filenames for mathfunc from libmfunc to _mathfunc
      for clarity.
    - Test cases updated in support of these updates.
    
    stats:
    - A new 'stats' module has been added with the view of offering 'standard'
      statistical methods into a project, without the dependency overhead of
      a heavy data science library such as scipy.
    
    Released: 2022-06-13
    
  • 1.0.0b1 - Bug fixes for the alpha 1 release. by j_berendt at 2022-04-07 12:28:17

    progressbar:
    - Addressed an issue introduced in v1.0.0a1, where a single whitespace
      character was left at the end of the progress bar.
      For example: 'Processing ... N% Complete '.
    - Whitespace removed.
    
    utils:
    - The 'ping' function has been updated to include a 'timeout' parameter.
    
    Documentation:
    - Changed code examples in the documentation which still referenced
      utils3 to utils4.
    
    Released: 2022-04-07
    
  • 1.0.0a1 - Complete overhaul and update of utils3. by j_berendt at 2022-01-04 13:18:36

    Key changes:
    - Fully documented library.
    - Fully tested code - with 100% code coverage.
    - Fewer dependencies.
    - Better terminal colour support for Windows.
    - New mathfunc library, written in C for efficiency.
    - Cleaner, more efficient code, relative to utils3.
    
    Change overview:
    - Initial cleanup commit in preparation for the utils4 overhaul.
    - Setup file updated.
    - Addition of the C library (libmfunc) which provides the low-level
      logic for the mathfunc module.
    - Module revisions, testing and docs complete for the following modules:
      - cmaps
      - config
      - convert
      - crypto
      - dfdiff
      - dict2obj
      - log
      - mathfunc (libmfunc)
      - palette
      - progressbar
      - pywarnings
      - reader
      - registry (Windows-only, docs only)
      - reporterror
      - termcolour (docs only)
      - tickers (docs only)
      - timedelta
      - user_interface (docs only)
      - utils
      - validation
    
    New modules:
    - mathfunc:
      - This module is a wrapper for the C extension libary 'libmfunc' which
        contains high-iteration mathematical calculations. The low-level
        library has been implemented in C for speed and efficiency.
    - palette:
      - A new colour palette module containing all named CSS4 colours,
        accessible in both hex and RGB formats.
    - termcolour:
      - This module replaces the previous 'colours' module with extended, yet
        simplified ANSI sequence logic for colouring terminal text.
    
    Removed modules:
    The following module have been *removed* from utils4.
    - colours (replaced with the termcolour module)
    - database
    - get_datafiles
    
    Deprecations:
    - user_interface:
      - The 'get_input' method has been deprecated and replaced with the
        'prompt' method. A FutureWarning is raised when this method is used.
    - utils:
      - Many of the no-longer-used methods from the utils module have been
        removed, but will remain available in utils3 v0.15.1.
    - validation:
      - Many of the no-longer-used methods from the validation module have
        been removed, and its internal structure and logic have been
        simplified. If you require now-missing functionality, please continue
        to use the latest utils3 (v0.15.1).
    
    Other changes:
    - user_interface:
      - The user_interface module no longer requires an external JSON config
        file, as the config values have been integrated into the module itself.
      - A reported bug in the get_input (now prompt) method has been addressed
        where ANSI sequences were displayed in a Windows terminal, rather than
        colouring the text.
    - Updates to MANIFEST.in:
      - Includes the test suite in the source dist.
      - Includes *only* libmfunc* files in the libs directory.
    - setup:
      - On source and build setup calls, *copies* are made of the source dist
        file (.tar.gz) and the wheel file and renamed to use 'latest' in place
        of the version number.
    
    Testing:
    - Incorporated 'coverage' into the testing suite to ensure optimal code
      testing coverage.
    - Added .bat test runner files for easy testing on Windows.
    - The test cases have passed successfully on the following platforms and
      Python versions:
    
        Linux x86_64    Linux armv7l    Windows x86_64
        ------------    ------------    --------------
        3.6.15          3.6.15          3.6.8
        3.7.13          3.7.13          3.7.9
        3.8.13          3.8.13          3.8.10
        3.9.12          -               -
        3.10.4          -               -
    
    Documentation:
    - Documentation now uses the read-the-docs theme.
    - Guidance included for building utils4 from source.
    - Layout and navigation updated to provide easier/clearer access to the
      designed area.
    - Added a spell checker to the documentation generation process.
    
    Released: 2022-04-04
    
  • 0.15.1 - Progress bar bug fix. by j_berendt at 2021-12-14 12:48:54

    progressbar.py:
    - BUG:
      - When run on Windows, the progress bar initialisation method
        re-initialised colorama for each instance of the progress bar.
      - This caused the progress bar to slow down substantially after
        about 200 iterations, and in some cases caused programs crashes
        due to a stack overflow.
    - FIX:
      - Moved the colorama initialisation into the __init__ module of
        the utils3 package, and only to initialise if on Windows.
    
    Released: 2021-12-14
    
  • 0.15.0 - Addition of the convert module. by j_berendt at 2021-10-26 20:00:10

    convert.py:
    - The convert module is used to perform various data type conversions
      such as bin -> ascii, ascii -> hex, hex --> bin, etc.
    - All conversions supported for: binary, ascii, hexidecimal and integer.
    
    Released: 2021-10-26
    
  • 0.14.1 - Update to the reader module. by j_berendt at 2021-10-20 13:14:36

    reader.py:
    - The read_xls method has been updated to accept and apply date formats
      to ensure the call to pandas.read_csv parses the date columns
      correctly.
    
    Other changes:
    - Updated the docs to reflect Python 3.5+.
    - Various (non-functional) code base changes to address pylint detections.
    
    Released: 2021-10-20
    
  • 0.14.0 - Addition of the reader.py module. by j_berendt at 2021-08-25 13:00:14

    reader:
    - The reader module was developed to read old (Excel 2) workbooks
      into a DataFrame.
    
    Other changes:
    - Updated the setup.sh script to add/update the requirements.txt file.
      - Minor updates to output formatting.
    - Updated pylintr to v0.3.0.
    
    Released: 2021-08-25
    
  • 0.13.3 - User interface module bug fix. by j_berendt at 2020-10-08 07:35:41

    Details:
    - BUG: Addressed a bug in the user_interface module where all warning
      messages were displayed in any application instantiating
      UserInterface, although the application itself had set warnings to
      'ignore'.
    - FIX: Rather than ignoring, then resetting the warnings, a
      (previously unknown) argument has been passed into the `enable()`
      function of `win_unicode_console`to bypass the stdin and stdout
      encoding check. It was the mismatch in stdin and stdout encoding
      which threw the RuntimeWaring, causing the need for warning
      suppression.
    
    Other changes:
    - New pylintr
    
    Released: 2020-10-08
    
  • 0.13.2 - Updated reporterror module to include the module name. by j_berendt at 2020-05-15 15:32:13

  • 0.13.1 - Bug fix to database module. Sphinx updates. by j_berendt at 2020-05-12 19:09:32

    database.py:
    - Removed spurious message stating the database must be connected first.
    
    Sphinx:
    - Added create and update scripts or Linux.
    
  • 0.13.0 - New modules added. by j_berendt at 2020-05-05 15:45:28

    crypto:
    - Module added to provide light wrapper around base64 and hashlib
      libraries, with additional functionality.
    
    cmaps:
    - Module added to provide a light-weight/easy-access wrapper around
      matplotlib's colour maps.
    - Added deprecation warnings to colour mapping methods in the utils
      module.
    
  • 0.12.0 - Added the DataFrame differencing module (dfdiff). by j_berendt at 2020-01-21 21:25:55

  • 0.11.1 - Updated user_interface to include a blue heading. by j_berendt at 2019-09-24 09:51:28

  • 0.11.0 - Added the timedelta module. by j_berendt at 2019-07-22 12:29:44

  • 0.10.4 - Updated setup so win_unicode_console is not required for by j_berendt at 2019-03-25 20:33:02

    Linux installations.
    
  • 0.10.3 - Added wheel and dist package. by j_berendt at 2019-02-07 16:21:58

  • 0.10.3 - Updated registry.py so it *only* tries to work on Windows. by j_berendt at 2019-02-07 15:59:58

  • 0.10.3 - Merge fix for _version.py. by j_berendt at 2019-02-07 15:51:00

  • 0.10.3 - Various stability updates across the library. by j_berendt at 2019-02-07 08:54:01

    - Removed unrequired packages from the setup file.
      Often times utils3 is imported for a key feature, and you don't
      always need Oracle connection capability, or matplotlib, etc.
      Additionally, this should make installation and updates less painful.
    
    - Latitude and longitude rules updated to:
      - Accept 0 as a valid lat/lon value.
      - Return False to 90.01 (lat) and 180.01 (lon) as decimals were
        previously accepted for lat/lon values of 90 and 180 respectively.
    
    - The ._busy member of tickers.Spinner and tickers.WaitTicker has been
      renamed to .busy, as this threw pylint error when accessed externally.
      *CAUTION*:
      This has not been updated for backwards compatability.  If you use
      ._busy in your code, please update your code.
    
    - Dev note: The `pylintr` shell script has been added.
    
  • 0.11.0 - Various stability updates across the library. by j_berendt at 2019-02-07 08:54:01

    - Removed unrequired packages from the setup file.
      Often times utils3 is imported for a key feature, and you don't
      always need Oracle connection capability, or matplotlib, etc.
      Additionally, this should make installation and updates less painful.
    
    - Latitude and longitude rules updated to:
      - Accept 0 as a valid lat/lon value.
      - Return False to 90.01 (lat) and 180.01 (lon) as decimals were
        previously accepted for lat/lon values of 90 and 180 respectively.
    
    - The ._busy member of tickers.Spinner and tickers.WaitTicker has been
      renamed to .busy, as this threw pylint error when accessed externally.
      *CAUTION*:
      This has not been updated for backwards compatability.  If you use
      ._busy in your code, please update your code.
    
    - Dev note: The `pylintr` shell script has been added.
    
  • 0.10.2 - Added new dist files. by j_berendt at 2018-12-24 09:00:45

  • 0.10.2 - Added IP addr and geo coordinate validation rules. by j_berendt at 2018-12-21 17:34:56

  • 0.10.1 - Optional error catch added to tickers. by j_berendt at 2018-12-20 16:32:50

  • 0.10.0 - Setup and dist files complete. by j_berendt at 2018-12-18 16:22:47

  • 0.10.0 - Added the pywarnings.py module. by j_berendt at 2018-12-18 16:07:15

  • 0.10.0 - Added the colours.py module. by j_berendt at 2018-12-18 14:56:42

  • 0.10.0 - Pre update cleanup. by j_berendt at 2018-12-18 14:41:44

  • 0.9.0 - Updated changelog and docs. by j_berendt at 2018-10-29 16:11:08

  • 0.9.0 - Added distributions. by j_berendt at 2018-10-29 16:06:57

  • 0.9.0 - Added a module containing program wait tickers. by j_berendt at 2018-10-29 15:57:05

  • 0.8.2 - Re-added sdist tar.gz and wheel for installations. by j_berendt at 2018-10-24 11:29:14

  • 0.8.1 - Removed dist as it didn’t include all required files. by j_berendt at 2018-10-24 11:10:42

  • 0.8.0 - Added dist wheel. by j_berendt at 2018-10-23 14:39:16

  • 0.8.0 - Added validation.py to handle various validation rules. by j_berendt at 2018-10-23 14:22:25

  • 0.8.0 - Various minor Py35 compatibility bug fixes. by j_berendt at 2018-10-23 14:00:13

  • 0.8.0 - Added __version__ as an attribute to utils3. by j_berendt at 2018-10-23 13:34:35

  • 0.7.0 - Added package dist. by j_berendt at 2018-09-25 16:52:35

  • 0.7.0 - Updated to remove RuntimeWarning on UserInterface instantiation. by j_berendt at 2018-09-25 16:37:01