scottbrian-utils
Intro
This is a collection of generally useful functions for use with any application.
The diag_msg function allows you to print a message with the time and caller sequence added for you.
The FileCatalog item allows you to map file names to their paths.
The @time_box decorator allows you to print start, stop, and execution times.
The print_flower_box_msg function allows you to print text in a flower box (i.e., surrounded by asterisks).
The log_verifier allows you to verify that expected log messages have been issued.
The msgs item is a simple facility you can use to send messages between threads.
The stop_watch item is a simple timing function that you can use in test cases.
The timer item provides a way to keep track of time to determine when a function has timed out.
The Pauser class provides a pause function similar to the python sleep function, but with improved accuracy.
The UniqueTS class provides a way to obtain a unique timestamp.
The doc_checker module provides an easy way to do doctest.
Examples:
With diag_msg you can print messages with the time and caller info added automatically.
- Example:
print a diagnostic message (<input> appears as the module name when run from the console)
>>> from scottbrian_utils.diag_msg import diag_msg
>>> diag_msg('this is a diagnostic message')
16:20:05.909260 <input>:1 this is a diagnostic message
With FileCatalog, you can code your application with file names and retrieve their paths at run time from a catalog. This allows you to use different catalogs for the same set of files, such as one catalog for production and another for testing. Here’s as example:
>>> from scottbrian_utils.file_catalog import FileCatalog
>>> from pathlib import Path
>>> prod_cat = FileCatalog({'file1': Path('/prod_files/file1.csv')})
>>> print(prod_cat.get_path('file1'))
/prod_files/file1.csv
>>> test_cat = FileCatalog({'file1': Path('/test_files/test_file1.csv')})
>>> print(test_cat.get_path('file1'))
/test_files/test_file1.csv
With @time_box, you can decorate a function to be sandwiched between start time and end time messages like this:
>>> from scottbrian_utils.time_hdr import time_box
>>> @time_box
... def func2() -> None:
... print('2 * 3 =', 2*3)
>>> func2()
**********************************************
* Starting func2 on Mon Jun 29 2020 18:22:50 *
**********************************************
2 * 3 = 6
********************************************
* Ending func2 on Mon Jun 29 2020 18:22:51 *
* Elapsed time: 0:00:00.001204 *
********************************************
With Pauser, you can pause execution for a specified number of seconds like this:
from scottbrian_utils.pauser import Pauser
pauser = Pauser()
pauser.pause(1.5) # pause for 1.5 seconds
Installation
pip install scottbrian-utils
Development setup
See tox.ini
Release History
- 1.0.0
Initial release
- 1.0.1
Added doc link to setup.py
Added version number to __init__.py
Added code in setup.py to get version number from __init__.py
Added licence to setup.py classifiers
- 1.1.0
Added FileCatalog
- 1.2.0
Added diag_msg
- 2.0.0
changed get_formatted_call_sequence and diag_msg (both in diag_msg.py) to get class name in additional cases
dropped support for python 3.6, 3.7, and 3.8
- 2.1.0
added pauser
support for python 3.10
- 2.2.0
added repr for LogVer
- 2.3.0
added is_specified method in Timer
added timeout_value in Timer
support for python 3.11
- 2.4.0
added fullmatch parm to add_msg in log_ver.py
added print_matched parm to print_match_results in log_ver.py
- 3.0.0
added unique_ts
added doc_checker
support python 3.12
drop support python < 3.12
- 4.0.0
added timedelta_match_string to time_hdr.py
added entry_trace.py
- restructured log_verifier:
performance improvements
changes to clarify that regex patterns are used
changed report format
method add_pattern replaces deprecated method add_msg
method verify_match_results replaces deprecated verify_log_results
Meta
Scott Tuttle
Distributed under the MIT license. See LICENSE
for more information.
Contributing
Fork it (<https://github.com/yourname/yourproject/fork>)
Create your feature branch (git checkout -b feature/fooBar)
Commit your changes (git commit -am ‘Add some fooBar’)
Push to the branch (git push origin feature/fooBar)
Create a new Pull Request
- diag_msg
CallerInfo
diag_msg()
get_caller_info()
get_formatted_call_sequence()
- DocChecker
DocCheckerOutputChecker
DocCheckerTestEvaluator
- entry_trace
etrace()
- FileCatalog
FileCatalog
- flower_box
print_flower_box_msg()
- LogVer
LogVer
- Msgs
Msgs
- Pauser
MetricResults
Pauser
- StopWatch
StopWatch
- time_hdr
get_datetime_match_string()
time_box()
- Timer
Timer
- UniqueTS
UniqueTS