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