jwutils: Move to jwutils -> jw.util

Move all implementation source code from the jwutils module to jw.util. For compatibility with existing Python modules, keep a thin, autogenerated compatibility shim under jwutils.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-06-10 07:22:46 +02:00 committed by janware DevOps
commit a2684dd601
Signed by: DevOps
SSH key fingerprint: SHA256:cZiw7ExG5q3KAVm7Jse3rGITowu0VjgUgNMPbifmY8g
129 changed files with 678 additions and 52 deletions

View file

@ -0,0 +1,8 @@
# ruff: noqa: E501
from jw.util.ArgsContainer import ArgsContainer as ArgsContainer
from jw.util.ArgsContainer import add_argument as add_argument
__all__ = [
"ArgsContainer",
"add_argument",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.Bunch import Bunch as Bunch
__all__ = [
"Bunch",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.Cmd import Cmd as Cmd
__all__ = [
"Cmd",
]

View file

@ -0,0 +1,8 @@
# ruff: noqa: E501
from jw.util.Cmds import Cmds as Cmds
from jw.util.Cmds import run_sub_commands as run_sub_commands
__all__ = [
"Cmds",
"run_sub_commands",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.Config import Config as Config
__all__ = [
"Config",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.CppState import CppState as CppState
__all__ = [
"CppState",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.Object import Object as Object
__all__ = [
"Object",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.Options import Options as Options
__all__ = [
"Options",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.Process import Process as Process
__all__ = [
"Process",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.RedirectStdIO import RedirectStdIO as RedirectStdIO
__all__ = [
"RedirectStdIO",
]

View file

@ -0,0 +1,3 @@
# ruff: noqa: E501
__all__ = []

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.StopWatch import StopWatch as StopWatch
__all__ = [
"StopWatch",
]

View file

@ -0,0 +1,51 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .ArgsContainer import ArgsContainer as ArgsContainer
from .ArgsContainer import add_argument as add_argument
from .Bunch import Bunch as Bunch
from .cast import cast_str_to_timedelta as cast_str_to_timedelta
from .cast import cast_str_to_int as cast_str_to_int
from .cast import cast_str_to_bool as cast_str_to_bool
from .cast import guess_type as guess_type
from .cast import from_str as from_str
from .cast import from_env as from_env
from .Cmds import Cmds as Cmds
from .Cmds import run_sub_commands as run_sub_commands
from .Config import Config as Config
from .CppState import CppState as CppState
from .ldap import Connection as Connection
from .ldap import default_config as default_config
from .log import prio_gets_logged as prio_gets_logged
from .log import log_level as log_level
from .log import slog_m as slog_m
from .log import slog as slog
from .log import parse_log_prio_str as parse_log_prio_str
from .log import console_color_chars as console_color_chars
from .log import set_level as set_level
from .log import set_flags as set_flags
from .log import append_to_prefix as append_to_prefix
from .log import remove_from_prefix as remove_from_prefix
from .log import set_filename_length as set_filename_length
from .log import set_module_name_length as set_module_name_length
from .log import add_log_file as add_log_file
from .misc import silentremove as silentremove
from .misc import atomic_store as atomic_store
from .misc import object_builtin_name as object_builtin_name
from .misc import get_derived_classes as get_derived_classes
from .misc import load_classes as load_classes
from .misc import load_class as load_class
from .misc import load_class_names as load_class_names
from .misc import load_object as load_object
from .misc import load_function as load_function
from .misc import commit_tmpfile as commit_tmpfile
from .misc import multi_regex_edit as multi_regex_edit
from .misc import dump as dump
from .Object import Object as Object
from .Options import Options as Options
from .Process import Process as Process
from .RedirectStdIO import RedirectStdIO as RedirectStdIO
from .StopWatch import StopWatch as StopWatch
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,12 @@
# ruff: noqa: E501
from jw.util.algo.ShuntingYard import L as L
from jw.util.algo.ShuntingYard import R as R
from jw.util.algo.ShuntingYard import Operator as Operator
from jw.util.algo.ShuntingYard import ShuntingYard as ShuntingYard
__all__ = [
"L",
"R",
"Operator",
"ShuntingYard",
]

View file

@ -0,0 +1,8 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .ShuntingYard import Operator as Operator
from .ShuntingYard import ShuntingYard as ShuntingYard
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.asyncio.Process import Process as Process
__all__ = [
"Process",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.asyncio.ShellCmd import ShellCmd as ShellCmd
__all__ = [
"ShellCmd",
]

View file

@ -0,0 +1,3 @@
# ruff: noqa: E501
__all__ = []

View file

@ -0,0 +1,8 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .Process import Process as Process
from .ShellCmd import ShellCmd as ShellCmd
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,14 @@
# ruff: noqa: E501
from jw.util.auth.Auth import Access as Access
from jw.util.auth.Auth import ProjectFlags as ProjectFlags
from jw.util.auth.Auth import Group as Group
from jw.util.auth.Auth import User as User
from jw.util.auth.Auth import Auth as Auth
__all__ = [
"Access",
"ProjectFlags",
"Group",
"User",
"Auth",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,11 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .Auth import Access as Access
from .Auth import ProjectFlags as ProjectFlags
from .Auth import Group as Group
from .Auth import User as User
from .Auth import Auth as Auth
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,10 @@
# ruff: noqa: E501
from jw.util.auth.dummy.Auth import Group as Group
from jw.util.auth.dummy.Auth import User as User
from jw.util.auth.dummy.Auth import Auth as Auth
__all__ = [
"Group",
"User",
"Auth",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,9 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .Auth import Group as Group
from .Auth import User as User
from .Auth import Auth as Auth
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,8 @@
# ruff: noqa: E501
from jw.util.auth.ldap.Auth import Group as Group
from jw.util.auth.ldap.Auth import Auth as Auth
__all__ = [
"Group",
"Auth",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,8 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .Auth import Group as Group
from .Auth import Auth as Auth
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,18 @@
# ruff: noqa: E501
from jw.util.cast import cast_str_to_timedelta as cast_str_to_timedelta
from jw.util.cast import cast_str_to_int as cast_str_to_int
from jw.util.cast import cast_str_to_bool as cast_str_to_bool
from jw.util.cast import guess_type as guess_type
from jw.util.cast import from_str as from_str
from jw.util.cast import from_env as from_env
from jw.util.cast import cast_str as cast_str
__all__ = [
"cast_str_to_timedelta",
"cast_str_to_int",
"cast_str_to_bool",
"guess_type",
"from_str",
"from_env",
"cast_str",
]

View file

@ -0,0 +1,7 @@
# ruff: noqa: E501
from jw.util.db.DataBase import DataBase as DataBase
__all__ = [
"DataBase",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.Session import Session as Session
__all__ = [
"Session",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.TableIoHandler import TableIoHandler as TableIoHandler
__all__ = [
"TableIoHandler",
]

View file

@ -0,0 +1,17 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .rows import rows_pretty as rows_pretty
from .rows import rows_duplicates as rows_duplicates
from .rows import rows_remove as rows_remove
from .rows import rows_select as rows_select
from .rows import rows_rewrite_regex as rows_rewrite_regex
from .rows import rows_check_not_null as rows_check_not_null
from .rows import rows_dumps as rows_dumps
from .rows import rows_dump as rows_dump
from .rows import rows_to_csv as rows_to_csv
from .Session import Session as Session
from .TableIoHandler import TableIoHandler as TableIoHandler
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.query.Queries import Queries as Queries
__all__ = [
"Queries",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.query.Query import Query as Query
__all__ = [
"Query",
]

View file

@ -0,0 +1,8 @@
# ruff: noqa: E501
from jw.util.db.query.QueryResult import ResType as ResType
from jw.util.db.query.QueryResult import QueryResult as QueryResult
__all__ = [
"ResType",
"QueryResult",
]

View file

@ -0,0 +1,10 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .Queries import Queries as Queries
from .Query import Query as Query
from .QueryResult import ResType as ResType
from .QueryResult import QueryResult as QueryResult
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,22 @@
# ruff: noqa: E501
from jw.util.db.rows import rows_pretty as rows_pretty
from jw.util.db.rows import rows_duplicates as rows_duplicates
from jw.util.db.rows import rows_remove as rows_remove
from jw.util.db.rows import rows_select as rows_select
from jw.util.db.rows import rows_rewrite_regex as rows_rewrite_regex
from jw.util.db.rows import rows_check_not_null as rows_check_not_null
from jw.util.db.rows import rows_dumps as rows_dumps
from jw.util.db.rows import rows_dump as rows_dump
from jw.util.db.rows import rows_to_csv as rows_to_csv
__all__ = [
"rows_pretty",
"rows_duplicates",
"rows_remove",
"rows_select",
"rows_rewrite_regex",
"rows_check_not_null",
"rows_dumps",
"rows_dump",
"rows_to_csv",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.schema.Column import Column as Column
__all__ = [
"Column",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.schema.ColumnSet import ColumnSet as ColumnSet
__all__ = [
"ColumnSet",
]

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.schema.CompositeForeignKey import CompositeForeignKey as CompositeForeignKey
__all__ = [
"CompositeForeignKey",
]

View file

@ -0,0 +1,10 @@
# ruff: noqa: E501
from jw.util.db.schema.DataType import py_type as py_type
from jw.util.db.schema.DataType import Id as Id
from jw.util.db.schema.DataType import DataType as DataType
__all__ = [
"py_type",
"Id",
"DataType",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.schema.Schema import Schema as Schema
__all__ = [
"Schema",
]

View file

@ -0,0 +1,3 @@
# ruff: noqa: E501
__all__ = []

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.schema.Table import Table as Table
__all__ = [
"Table",
]

View file

@ -0,0 +1,14 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .Column import Column as Column
from .ColumnSet import ColumnSet as ColumnSet
from .CompositeForeignKey import CompositeForeignKey as CompositeForeignKey
from .DataType import py_type as py_type
from .DataType import DataType as DataType
from .Schema import Schema as Schema
from .Table import Table as Table
from .utils import check_schema as check_schema
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.db.schema.utils import check_schema as check_schema
__all__ = [
"check_schema",
]

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.graph.yed.MapAttr2Shape import MapAttr2Shape as MapAttr2Shape
__all__ = [
"MapAttr2Shape",
]

View file

@ -0,0 +1,7 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .MapAttr2Shape import MapAttr2Shape as MapAttr2Shape
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,8 @@
# ruff: noqa: E501
from jw.util.ldap import Connection as Connection
from jw.util.ldap import default_config as default_config
__all__ = [
"Connection",
"default_config",
]

45
src/python/jwutils/log.py Normal file
View file

@ -0,0 +1,45 @@
# ruff: noqa: E501
from jw.util.log import OFF as OFF
from jw.util.log import DEBUG as DEBUG
from jw.util.log import INFO as INFO
from jw.util.log import NOTICE as NOTICE
from jw.util.log import WARNING as WARNING
from jw.util.log import ERR as ERR
from jw.util.log import prio_gets_logged as prio_gets_logged
from jw.util.log import log_level as log_level
from jw.util.log import slog_m as slog_m
from jw.util.log import slog as slog
from jw.util.log import parse_log_prio_str as parse_log_prio_str
from jw.util.log import console_color_chars as console_color_chars
from jw.util.log import get_caller_pos as get_caller_pos
from jw.util.log import set_level as set_level
from jw.util.log import set_flags as set_flags
from jw.util.log import append_to_prefix as append_to_prefix
from jw.util.log import remove_from_prefix as remove_from_prefix
from jw.util.log import set_filename_length as set_filename_length
from jw.util.log import set_module_name_length as set_module_name_length
from jw.util.log import add_log_file as add_log_file
__all__ = [
"OFF",
"DEBUG",
"INFO",
"NOTICE",
"WARNING",
"ERR",
"prio_gets_logged",
"log_level",
"slog_m",
"slog",
"parse_log_prio_str",
"console_color_chars",
"get_caller_pos",
"set_level",
"set_flags",
"append_to_prefix",
"remove_from_prefix",
"set_filename_length",
"set_module_name_length",
"add_log_file",
]

View file

@ -0,0 +1,28 @@
# ruff: noqa: E501
from jw.util.misc import silentremove as silentremove
from jw.util.misc import atomic_store as atomic_store
from jw.util.misc import object_builtin_name as object_builtin_name
from jw.util.misc import get_derived_classes as get_derived_classes
from jw.util.misc import load_classes as load_classes
from jw.util.misc import load_class as load_class
from jw.util.misc import load_class_names as load_class_names
from jw.util.misc import load_object as load_object
from jw.util.misc import load_function as load_function
from jw.util.misc import commit_tmpfile as commit_tmpfile
from jw.util.misc import multi_regex_edit as multi_regex_edit
from jw.util.misc import dump as dump
__all__ = [
"silentremove",
"atomic_store",
"object_builtin_name",
"get_derived_classes",
"load_classes",
"load_class",
"load_class_names",
"load_object",
"load_function",
"commit_tmpfile",
"multi_regex_edit",
"dump",
]

View file

@ -0,0 +1,3 @@
# ruff: noqa: E501
__all__ = []

View file

@ -0,0 +1,32 @@
cat_stub_py()
{
echo "# ruff: noqa: E501"
local sym
for sym in $syms; do
echo "from jw.util.$mod import $sym as $sym"
done
echo
echo "__all__ = ["
for sym in $syms; do
echo " \"$sym\","
done
echo "]"
}
for p in $(git -C ../jw/util ls-files | grep '\.py$' | grep -v __init__.py); do
f=../jw/util/$p
mod=$(echo $p | sed 's|\.py$||; s|/|.|g')
base=${mod##*.}
init=$(dirname $f)/__init__.py
syms=$(sed "/from \.$base /!d; s/from \.$base import //; s/ .*//" $init | xargs)
echo mod=$mod
echo base=$base
echo syms=$syms
echo
cat_stub_py > $p
#grep $base $init | sed 's|from |from jw.util|' > $f
#cat <<-EOT > $f
#from $mod import *
#EOT
#git rshow HEAD:./$f > $f
done

View file

@ -0,0 +1,5 @@
TOPDIR = ../../../..
PY_UPDATE_INIT_PY = false
include $(TOPDIR)/make/proj.mk
include $(JWBDIR)/make/py-mod.mk

View file

@ -0,0 +1,6 @@
# ruff: noqa: E501
from jw.util.stree.StringTree import StringTree as StringTree
__all__ = [
"StringTree",
]

View file

@ -0,0 +1,9 @@
# >> -------------------------- generated by python-tools.sh >>
# ruff: noqa: E501
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
from .serdes import parse as parse
from .serdes import read as read
from .StringTree import StringTree as StringTree
# << -------------------------- generated by python-tools.sh <<

View file

@ -0,0 +1,8 @@
# ruff: noqa: E501
from jw.util.stree.serdes import parse as parse
from jw.util.stree.serdes import read as read
__all__ = [
"parse",
"read",
]