Clemens Schwaighofer
53cf2a6f48
Add prepare_url_slash to string_helpers.py and tests
...
Function cleans up url paths (without domain) by ensuring they start with a single slash and removing double slashes.
2025-10-23 15:47:19 +09:00
Clemens Schwaighofer
fe69530b38
Add a simple add key entry to dictionary
2025-10-23 15:31:52 +09:00
Clemens Schwaighofer
84ce43ab93
Add SQLite IO class
...
This is a very basic class without many helper functions added yet
Add to the CoreLibs so when we develop it further it can be used by all projects
2025-10-23 15:22:12 +09:00
Clemens Schwaighofer
30bf9c1bcb
Add Enum base class
...
A helper class for handling enum classes with various lookup helpers
2025-10-23 13:47:13 +09:00
Clemens Schwaighofer
2544fad9ce
Add json helper function json_replace
...
Function can replace content for a json path string in a dictionary
2025-10-23 13:20:40 +09:00
Clemens Schwaighofer
543e9766a1
Add symmetric encryption and tests
2025-10-23 11:47:41 +09:00
Clemens Schwaighofer
c1eda7305b
jmespath search, catch JMESPathTypeError error
...
This error can happend if we search for a key and try to make a value compare and the key does not exist.
Perhaps also when they key should return a list
2025-10-09 16:39:54 +09:00
Clemens Schwaighofer
f85fbb86af
Add iso datetime create with time zone support
...
The time zone check is for short mappings is limited, it is recommended
to use full TZ names like "Europe/Berlin", "Asia/Tokyo", "America/New_York"
2025-10-08 15:57:57 +09:00
Clemens Schwaighofer
7c5af588c7
Update the TimestampStrings zone info handling
...
time_zone is the string version of the time zone data
time_zone_zi is the ZoneInfo object of above
2025-09-25 15:53:26 +09:00
Clemens Schwaighofer
bb60a570d0
Change the TimestampStrings check to check for str instead of not ZoneInfo.
...
This fixes the pytest problem which threw:
TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union
during Mocking
2025-09-25 15:36:47 +09:00
Clemens Schwaighofer
38bae7fb46
TimestampStrings allows ZoneInfo object as time_zone parameter
...
So we can use pre-parsed data
Some tests for parsing settings, timestamp output
2025-09-25 15:14:40 +09:00
Clemens Schwaighofer
ef5981b473
convert_to_seconds allow negative time strings and add pytests
2025-09-24 15:25:53 +09:00
Clemens Schwaighofer
b32887a6d8
Add time in seconds convert to human readable format
2025-09-19 09:57:51 +09:00
Clemens Schwaighofer
74cb3d2c54
dump_data and new json_dumps
...
dump_data adds flag to dump without indent
json_dumps is dump_data like, but will be geared towards secure dump of dict to json for strage
2025-09-03 18:14:26 +09:00
Clemens Schwaighofer
f8ae6609c7
Allow empty config settings for settings loader if only loading is needed
2025-08-26 14:38:55 +09:00
Clemens Schwaighofer
f8905a176c
Fix settings loader
...
Remove all class vars for vars that are only used in the loader itsef
- entry_split_char
- entry_convert
- entry_set_empty
The self.settings varr was never used, removed
The config file path exists check is moved to the config data loader
The internal _check_settings_abort is now __check_settings_abort to make it private
lock file updates
2025-08-26 14:29:52 +09:00
Clemens Schwaighofer
446d9d5217
Log documentation updates
2025-08-18 14:35:14 +09:00
Clemens Schwaighofer
bc23006a34
disable the auto close of the log queue
...
This causes problems with logger clean up
2025-08-05 16:20:13 +09:00
Clemens Schwaighofer
60db747d6d
More fixes for the queue clean up
...
Changed that we call stop_listener and not _cleanup on exit
Then call _cleanup from the stop listener
We only need that if we have listeners (queue) anyway
2025-08-05 13:22:54 +09:00
Clemens Schwaighofer
2b04cbe239
Remove Log __del__ cleanup
2025-08-05 10:36:49 +09:00
Clemens Schwaighofer
80319385f0
Add Log exist queue clean up if queue is set
...
to avoid hung threads on errors
2025-08-05 10:32:33 +09:00
Clemens Schwaighofer
0df049d453
Add per run log rotate flag
...
This flag will use the normal file handler with a file name that has date + time + milliseconds
to create a new file each time the script is run
2025-08-01 16:01:50 +09:00
Clemens Schwaighofer
2f08ecabbf
For convert time string, skip convert if incoming value is a number of any type
...
Any float number will be rounded, and everything that is any kind of number will be then converted to int and returned
The rest will be converted to string and normal convert is run
2025-07-29 09:29:38 +09:00
Clemens Schwaighofer
a586cf65e2
Convert string with time units to seconds
2025-07-29 09:13:36 +09:00
Clemens Schwaighofer
4f9c2b9d5f
Add exception stack caller and add this to the logger exception call
...
So we get the location of the exception in the console log too
2025-07-28 15:26:23 +09:00
Clemens Schwaighofer
f1e3bc8559
For Log exception write to ERROR, add the stack trace too
2025-07-28 14:32:14 +09:00
Clemens Schwaighofer
d1ea9874da
Add HTTP basic auth builder
2025-07-26 11:26:09 +09:00
Clemens Schwaighofer
582937b866
dump_data is now ANY, we do the detail dump type in the run later
2025-07-26 10:51:37 +09:00
Clemens Schwaighofer
abf4b7ac89
Bug fix for find_in_array_from_list because of keys order
2025-07-25 15:57:48 +09:00
Clemens Schwaighofer
2cfbf4bb90
Update data search for iterators
...
array_search name is deprecated
use find_in_array_from_list
- change parameter order
data (search in) comes before search_params list
- created a TypedDict for the array search params dict entry
2025-07-25 15:48:37 +09:00
Clemens Schwaighofer
24798f19ca
Add CSV Exceptions
2025-07-25 10:23:52 +09:00
Clemens Schwaighofer
dcefa564da
Fix stack stack traceback call
...
It now works correct with start and skip_last settings, the method is now called "call_stack"
Also added auto reset if no output (start too hight) and optional stack separator
2025-07-24 10:52:39 +09:00
Clemens Schwaighofer
edd35dccea
Comment update for log class
2025-07-22 19:32:21 +09:00
Clemens Schwaighofer
fd5e1db22b
Change Log class and add simple Logger class without the init work
...
This Logger class can be used after the main Log class has been setup, eg in workers
inside pool/fork/thread runs
A new parent class holds all the public methods
init Logger class with "get_logger_settings" or with a dictionary Type LoggerInit that has
logger with type logging.Logger as mandatory and optional Queue entry
2025-07-18 14:15:00 +09:00
Clemens Schwaighofer
280e5fa861
Update the mask dict helper
...
It now goes recursive, is case insenstivie for keys and mask keys requests
Checks not for equal but for start/end or inside with edge character set
pytests added
2025-07-17 15:17:57 +09:00
Clemens Schwaighofer
472d3495b5
Add missing typedefs for regex constants
2025-07-17 13:32:35 +09:00
Clemens Schwaighofer
2778ac6870
in Log use the defined default levels for console and file
2025-07-16 11:06:38 +09:00
Clemens Schwaighofer
694712ed2e
logging update for exceptions with special error log to console
...
When calling log.exception it automatically writes a short message to the console as error
This error message is tagged <=EXCEPTION> and contains only the message without the stack trace
2025-07-15 17:56:56 +09:00
Clemens Schwaighofer
da68818d4f
Move the domain regex to the regex constant file
2025-07-15 11:13:23 +09:00
Clemens Schwaighofer
948b0dd5e7
Settings loader add more checks
...
string.domain.with-localhost
string.domain.with-localhost.port
string.domain
string.date
2025-07-15 10:32:19 +09:00
Clemens Schwaighofer
a626b738a9
Move dump_data from iterator folder to debug folder
2025-07-15 09:54:23 +09:00
Clemens Schwaighofer
5763f57830
In settings loader do the raise ValueRror on the error, fix stack level, loggin fix stack level
...
Settings loader: all errors are thrown where the error happens and not in the print function
The print function if to log will add +1 to the stack level so the error is shown
In the log class in the log wrapper calls add +1 to the stack level to have the error line in the correct place
-> this fixes the stack trace part for now but we still want to have an auto full stack trace simple added
2025-07-15 09:44:29 +09:00
Clemens Schwaighofer
acbe1ac692
Settings load add info for future settings/options argument
2025-07-14 18:15:07 +09:00
Clemens Schwaighofer
99bca2c467
Allow settings block to not exist via call setting
2025-07-14 18:14:33 +09:00
Clemens Schwaighofer
8082ab78a1
Merge branch 'development'
2025-07-14 17:21:28 +09:00
Clemens Schwaighofer
c69076f517
Add set default if empty/not set in settings
...
With new empty: block if just like this set to None if not set (empty), can also be any value,
if list, skip setting default
2025-07-14 17:21:04 +09:00
Clemens Schwaighofer
648ab001b6
Settings loader fix for not set range check entries
...
If we have a range or length check and the value is not set, skip, and do not convert either
Not set is None
2025-07-14 17:00:25 +09:00
Clemens Schwaighofer
447034046e
v0.12.3: settings loader error message improvement
2025-07-14 16:50:36 +09:00
Clemens Schwaighofer
0770ac0bb4
Better error handling in the settings loader for entry not found in block
2025-07-14 16:49:37 +09:00
Clemens Schwaighofer
58c8447531
Settings loader mandatory fixes
...
- mandatory empty check if empty list ([''])
- skip regex check if replace value is None -> allowed empty as empty if not mandatory
2025-07-14 16:23:55 +09:00