Commit graph

249 commits

Author SHA1 Message Date
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
2811d99c30 project.conf: Build devel subpackage
-devel subpackge is needed to build a couple of other packages, so
build it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-20 19:14:31 +00:00
c785df8d4d Release 1.0.0-20@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2025-02-20 19:00:44 +00:00
721949e94b Start version: 1.0.0-20
Signed-off-by: janware DevOps <devops@janware.com>
2025-02-20 19:00:17 +00:00
5b71c081f4 schema.Table: Support property edit_columns
Support property edit_columns, intended to populate forms where rows
are created or edited, defaulting to log_columns.

Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-19 17:29:09 +01:00
7f2e0e3916 schema.Table: Add property default_sort_columns
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-17 12:22:26 +01:00
b33d9af302 schema.Table: Add add_child_row_location() and friends
Add the following methods:

 add_child_row_location(self, parent_table: Union[Self, str], **kwargs) -> Optional[str]
 add_child_row_location_rules(self) -> Iterable[str]
 add_child_row_location_rule(self, child_table: Union[Self, str]) -> Optional[str]

These are meant to be called from different pieces of code:

 - add_child_row_location() is meant to be used where the parent is
   rendered, to display a link to adding another child

 - add_child_row_location_rules() and add_child_row_location_rule()
   are meant to be invoked where processing is going to be done, i.e.
   likely code rendering child row content

Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-15 16:30:14 +01:00
5ca775eb82 schema.Table: Add property add_row_location_rule and friends
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-15 11:43:00 +01:00
9b1650b58f jwutils: Add Auth
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-14 14:29:30 +01:00
74902349b6 Config: Add method entries()
Config has no way to tell if a given path has children, so add the
entries() method.

Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-15 08:20:53 +01:00
79a3696eaa Config: Make branch() throw exception on inexistent path
Config.branch(path) just silently returns the entire tree if path
doesn't exist in the config. Fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-15 08:19:25 +01:00
91d7517054 schema.Column: Add property translate
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-14 08:12:02 +01:00
ba1b7eda19 schema.Table: Add property relationships
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-13 08:35:40 +01:00
9685f07eb8 query.Queries: Add method keys()
Signed-off-by: Jan Lindemann <jan@janware.com>
2025-02-12 18:36:37 +01:00