e4cee86482
Config.branch(): Add throw argument
...
In case a branch doesn't exist, branch() throws an error. Allow to return None instead.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-27 18:58:28 +02:00
89578b788f
graph.yed.MapAttr2Shape: Add Class
...
MapAttr2Shape is a class which allows processing GraphML files, such that nodes get added shape attributes understood by the yEd editor, based on the values of other node attributes. This allows to programmatically visualize node attributes.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-27 18:12:05 +02:00
b2b726b632
Bunch: Add class
...
jwutils.Bunch is a simple wrapper around a dictionary, which allows member-type access to to dictionary data.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-27 14:11:42 +02:00
e03491bee3
project.conf: Fix: Add python3-ldap
...
auth.ldap requires an LDAP client, which is not reflected in the package's dependencies, fix that.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-16 20:16:17 +02:00
5ae98ade71
Release 1.0.0-25@suse-tumbleweed/x86_64
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-07-16 15:26:27 +00:00
f375d45088
Start version: 1.0.0-25
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-07-16 15:19:49 +00:00
ceea557a61
algo.ShuntingYard: Increase debug logging
...
Make ShuntingYard log more. Might be overkill in which case the change should be reversed.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-11 10:46:19 +02:00
1e16c0ffb1
Cmds: Add argcomplete support
...
argcomplete takes the arguments added to argparse, and builds bash completion with it. Add it to all Cmds based executables.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-11 10:43:47 +02:00
428692ea3a
Streamline Python file headers somewhat
...
- Add coding statement
- Import all modules in one line where possible
- Order: __future__, typing, plain imports, from imports,
janware modules
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-10 05:14:06 +02:00
862a5dbc95
ArgsContainer.specified_args: Add property
...
ArgsContainer.specified_args is a list of arguments that were explicitly specified, i.e. not defaults, in the order they were specified in.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-06 07:12:52 +02:00
d35a5588cd
Cmds.__run(): Don't exit(0)
...
WSGI doesn't like sys.exit() being called, so avoid it. Two cases need to be taken into consideration:
1. No exception thrown by self.args.func()
The variable exit_status is zero, we can check that and _not_
call sys.exit()
2. Exception thrown by self.args.func()
In that case, the exception should be raised, to be caught by
WSGI / ASGI whatever to do what they want with it. The code
calling sys.exit() is never reached. Hence, we need to add
--backtrace to the invocation options.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-05 12:27:11 +02:00
1a267dd2e5
cast.from_env(): Add function
...
cast.from_env() takes an environment variable name instead of the string as the first argument and does the obvious thing. It also takes a default and saves the conversion in case the environment variable doesn't exist.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-05 10:54:30 +02:00
8b6504f01b
fixup! algo.ShuntingYard: Use slog() for debugging
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-04 10:22:14 +02:00
49e9b5ab5d
algo.ShuntingYard.tokenize(): Allow mixed quotes
...
"A string which contains 'single quotes'" or 'a string containing "double quotes"' is not tokenized as quoted. Fix that.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-04 08:59:58 +02:00
27e2a49d1e
algo.ShuntingYard: Use slog() for debugging
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-07-04 08:58:42 +02:00
271ea32dcd
algo.ShuntingYard.tokenize(): Support double quotes
...
tokenize() only sorts single quoted strings into QUOTED, fix that.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-27 09:46:12 +02:00
29f57ec187
algo.ShuntingYard: Add operator()
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-09 09:16:48 +02:00
2efe2f97fa
Config.__getitem__(): Raise KeyError if need be
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-06 13:39:24 +02:00
8a316ead21
auth: Add LDAP support
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-05 20:48:14 +02:00
0a1a6e5e17
log.get_caller_pos(): Fix None module
...
<W> jw-client-devops-web.py [ 29] Exiting jw-client-devops-web.py Exception ignored in: <function App.__del__ at 0x7f3ddeb8f560> Traceback (most recent call last): File "/home/jan/local/src/jw.dev/proj/jw-client-devops-web/src/python/jw/devops/client/web/cmds/App.py", line 43, in __del__ File "/home/jan/local/src/jw.dev/proj/jw-python/tools/python/jwutils/log.py", line 167, in slog File "/home/jan/local/src/jw.dev/proj/jw-python/tools/python/jwutils/log.py", line 126, in get_caller_pos AttributeError: 'NoneType' object has no attribute '__name__'
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-05 22:57:55 +02:00
958c077da3
Cmds: Support --write-profile <filename>
...
Add an option which makes the program write profiling statistics in pstats format to a specified file.
Visualize e.g. with:
gprof2dot -f pstats <filename> -o <dotfile> dot -Tpng | display <dotfile>
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-05 16:58:26 +02:00
d2ec56336e
ArgsContainer: Add add_argument() function
...
add_argument() at the face of it looks much like ArgumentParser.add_argument(), but is a function, not a class method. It takes the ArgsContainer|ArgParser instance as first argument, then decides what type it is, and proceeds to use this knowledge to decide whether or not the argument to be added already has a definition.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-04 04:55:32 +02:00
6e70529f7a
log.(add|rm)_capture_stream(): Add functions
...
Add functions log.(add|rm)_capture_stream(). The functions are meant to capture everything passed to syslog into the stream objects installed by it. Not sure about future semantics changes: add_capture_stream() takes a currently unused flags argument, and it suppresses everything else logged until the stream is removed again.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-03 15:25:44 +02:00
748b850532
log.set_level(): Return current flags
...
Make log.set_level() return the flags that were set before setting the flags passed as argument.
Support None as flags argument, in which case it doesn't change anything and only returns the currently set flags.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-03 15:17:08 +02:00
cf122e44be
log.slog(): Support log flag "module"
...
If module is present in the log flags string, the module is prepended to each log message. The length of the module prefix can be set via the new set_module_name_length() function.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-06-01 15:14:48 +02:00
5ee88c1a81
cmd.Cmds: Support --backtrace
...
Wrap all execution in try-block, don't raise in except block unless --backtrace is passed to the command line.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-30 15:53:43 +02:00
b464f20e6c
stree.StringTree.find(): Add method
...
StringTree.find(key, val) (and Config.find(), for that matter) returns a list of paths with sections containing children matching key / val pairs. One of them can be None, which acts as a wildcard.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-29 12:05:10 +02:00
a9fa274bb1
stree.StringTree: Add property path
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-29 12:04:52 +02:00
9c13381e7a
cast.cast_str_to_timedelta(): Add conversion method
...
Make cast.from_str() accept time strings.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-28 11:12:49 +02:00
296dde387c
cast.from_str(): Add as alias to cast_str()
...
Using cast.from_str('blah') seems more logical than cast.cast_str(), so add that alias and see how it fares.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-28 11:11:11 +02:00
8f464fe278
Config: Add method __setitem__()
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-20 13:11:14 +02:00
7cd94fa3db
Config: Add .root
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-20 13:10:53 +02:00
18117e4590
stree.StringTree: Add .parent and .root
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-20 13:09:58 +02:00
51f08d3dce
ArgsContainer: Add class
...
ArgsContainer provides an interface similar to argparse.ArgumentParser and can be used as a drop-in replacement when fishing for arguments.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-16 06:52:45 +02:00
2bad14a891
stree.StringTree: Fix logging typo
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-16 06:52:22 +02:00
17e5972120
Release 1.0.0-24@suse-tumbleweed/x86_64
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-05-12 18:07:08 +00:00
32803b4cdb
Start version: 1.0.0-24
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-05-12 18:06:37 +00:00
d30c41b03d
stree.StringTree.py.__set(): Disable assert self.content != str(content)
...
There's an assertion in StringTree.py.__set(), assert self.content != str(content), which often triggers. Not sure what the idea behind the assertion was, disable it.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-12 18:57:16 +02:00
4b4d8ebdb0
Config: Add property name
...
There's currently no way to access the root node content, add the property name for that.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-05-12 18:53:04 +02:00
976178f5bf
Release 1.0.0-23@suse-tumbleweed/x86_64
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-05-12 06:53:53 +00:00
a503353925
Start version: 1.0.0-23
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-05-12 06:53:21 +00:00
20f713e6f7
Fix errors reported by mypy
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-04-29 11:54:56 +02:00
6835a569a5
query.Queries: Remove references to app
...
App is not a standardized interface, remove references to it.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-03-16 15:22:34 +01:00
dfdbf68886
Release 1.0.0-22@suse-tumbleweed/x86_64
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-03-30 10:53:58 +00:00
81166e5cea
Start version: 1.0.0-22
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-03-30 10:53:23 +00:00
34de9114c5
Config: Support glob_paths_env_key
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-03-12 13:37:32 +01:00
495cebd769
db.Session: Add
...
Add database session API to db. This is a breaking change, because from this commit on, a session object has to be passed to every query.
This commit also removes any reference to Cmds / App objects. An instantiated database object can be worked with outside of an App.
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-03-10 18:44:39 +01:00
841b5a3391
Fix errors reported by mypy
...
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-03-01 07:58:19 +01:00
babd3ef933
Release 1.0.0-21@suse-tumbleweed/x86_64
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-02-20 19:19:19 +00:00
7454acdd34
Start version: 1.0.0-21
...
Signed-off-by: janware DevOps <devops@janware.com>
2025-02-20 19:18:51 +00:00