jw-pkg/scripts/python-tools.sh
Jan Lindemann b77d92794e python-tools.sh: Fix __path__ type check in __init__.py
Don't check __path__ as Interable[str] anylonger, this somehow broke (Don't
remember how). Use type: ignore instead.

Signed-off-by: Jan Lindemann <jan@janware.com>
2024-04-30 09:00:45 +00:00

81 lines
1.4 KiB
Bash

#!/bin/bash
usage()
{
cat <<-EOT
usage $myname [-e sed-extract-command] [-m module] file.py ...
EOT
[ "$1" ] && exit $1
}
module_path()
{
if [ "$module" ]; then
echo $module.$1
return
fi
echo $1
}
cmd_create_init()
{
local import_submodules=0
local e f files base extracted module_path
local del="-------------------------- generated by $myname"
echo "# >> $del >>"
echo "from pkgutil import extend_path"
echo "from typing import Iterable"
echo "__path__ = extend_path(__path__, __name__) # type: ignore" # was "type Iterable[str]"
files="$*"
for f in $files; do
test -d $f && continue
base=${f##*/}
base=${base%.py}
if [ "$sed_extract_command" ]; then
#echo running $sed_extract_command on $f
extracted=`sed "$sed_extract_command" $f`
#extracted="$sed_extract_command"
for e in $extracted; do
echo "from `module_path $base` import $e"
done
fi
done
if [ "$import_submodules" = 1 ]; then
for f in $files; do
[ -f $f/__init__.py ] && echo "import `module_path $f` as $f"
done
fi
echo "# << $del <<"
}
# --------------------- here we go
myname=`basename $0`
eval set -- `getopt -o 'he:m:' "$@"`
while [ "$1" != -- ]; do
case $1 in
-e)
sed_extract_command="$2"
shift
;;
-m)
module=$2
shift
;;
-h)
usage 0;;
*)
echo unknown argument $1
usage 1;;
esac
shift
done
shift
cmd=cmd_${1//-/_}
shift
eval $cmd $*