sqlmath 2026.2.28__tar.gz → 2026.3.31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.ci.sh +93 -62
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.github/workflows/ci.yml +29 -15
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.github/workflows/publish_pypi_test.yml +2 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.gitignore +2 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.npmignore +4 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/CHANGELOG.md +16 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/MANIFEST.in +1 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/PKG-INFO +6 -6
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/README.md +5 -5
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/jslint.mjs +1 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/jslint_ci.sh +60 -34
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/package.json +1 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/pyproject.toml +1 -1
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/setup.py +39 -15
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath/__init__.py +223 -37
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath.mjs +52 -25
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_base.c +97 -41
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_base.h +0 -6
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_external_sqlite.c +2000 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/test.mjs +11 -21
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/test.py +401 -28
- sqlmath-2026.2.28/test_lgbm.py → sqlmath-2026.3.31/test_lgbm_numpy.py +86 -56
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.gitconfig +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/.github/workflows/publish.yml +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/LICENSE +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/asset_image_folder_open_solid.svg +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/asset_image_github_brands.svg +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/asset_image_logo_256.html +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/asset_image_logo_256.png +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/asset_image_logo_256.svg +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/asset_sqlmath_external_rollup.js +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/cpplint.py +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/csslint.js +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/indent.exe +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/index.html +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/libiconv2.dll +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/libintl3.dll +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_browser.mjs +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_custom.c +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_custom.mjs +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/sqlmath_wrapper_wasm.js +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/test_data_sinefit.csv +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/test_lgbm_binary.test +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/test_lgbm_binary.train +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/test_lgbm_preb.txt +0 -0
- {sqlmath-2026.2.28 → sqlmath-2026.3.31}/zlib.v1.3.1.vcpkg.x64-windows-static.lib +0 -0
|
@@ -20,7 +20,7 @@ shCiArtifactUploadCustom() {(set -e
|
|
|
20
20
|
git fetch origin artifact
|
|
21
21
|
git checkout origin/artifact "branch-$GITHUB_BRANCH0"
|
|
22
22
|
mv "branch-$GITHUB_BRANCH0"/* .
|
|
23
|
-
git add -f
|
|
23
|
+
git add -f sqlmath_wasm.*
|
|
24
24
|
# screenshot html
|
|
25
25
|
PID_LIST=""
|
|
26
26
|
shBrowserScreenshot \
|
|
@@ -34,40 +34,53 @@ shCiArtifactUploadCustom() {(set -e
|
|
|
34
34
|
shCiBaseCustom() {(set -e
|
|
35
35
|
# This function will run custom-code for base-ci.
|
|
36
36
|
shCiEmsdkExport
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
process.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
);
|
|
37
|
+
FILE_LIB_LGBM="$(node --input-type=module -e '
|
|
38
|
+
function libPlatformArchExt() {
|
|
39
|
+
let libArch = process.arch;
|
|
40
|
+
let libExt = process.platform;
|
|
41
|
+
let libPlatform = process.platform;
|
|
42
|
+
libExt = libExt.replace("darwin", "dylib");
|
|
43
|
+
libExt = libExt.replace("win32", "dll");
|
|
44
|
+
libExt = libExt.replace(libPlatform, "so");
|
|
45
|
+
return `${libPlatform}_${libArch}.${libExt}`;
|
|
46
|
+
}
|
|
47
|
+
process.stdout.write(`lib_lightgbm_${libPlatformArchExt()}`);
|
|
45
48
|
' "$@")" # '
|
|
46
49
|
# bugfix - Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
|
|
47
|
-
if [ ! -f "sqlmath/$
|
|
50
|
+
if [ ! -f "sqlmath/$FILE_LIB_LGBM" ]
|
|
48
51
|
then
|
|
49
52
|
case "$(uname)" in
|
|
50
53
|
Darwin*)
|
|
51
54
|
brew install libomp
|
|
52
|
-
cp -L
|
|
55
|
+
cp -L "$(brew --prefix libomp)/lib/libomp.dylib" \
|
|
56
|
+
"sqlmath/$(node -p '`libomp_${process.platform}_${process.arch}.dylib`')"
|
|
53
57
|
;;
|
|
54
58
|
esac
|
|
55
59
|
pip install lightgbm=="$(printf "v4.6.0" | sed "s|v||")"
|
|
56
60
|
cp "$(
|
|
57
61
|
find "$(
|
|
58
|
-
pip show
|
|
59
|
-
)/lightgbm" | grep "$
|
|
60
|
-
)" "sqlmath/$
|
|
62
|
+
pip show lightgbm | grep Location | sed "s|Location: ||"
|
|
63
|
+
)/lightgbm" | grep "\<lib_lightgbm\.\(dll\|dylib\|so\)$"
|
|
64
|
+
)" "sqlmath/$FILE_LIB_LGBM"
|
|
61
65
|
fi
|
|
62
66
|
# .github_cache - restore
|
|
63
67
|
if [ "$GITHUB_ACTION" ] && [ -d .github_cache/ ]
|
|
64
68
|
then
|
|
65
|
-
cp -a .github_cache/*
|
|
69
|
+
cp -a .github_cache/* ./ || true # js-hack - */
|
|
66
70
|
fi
|
|
67
71
|
# cleanup
|
|
68
72
|
rm -rf *.egg-info _sqlmath* build/ sqlmath/_sqlmath* && mkdir -p build/
|
|
69
73
|
PID_LIST=""
|
|
70
74
|
#
|
|
75
|
+
# run nodejs-ci
|
|
76
|
+
if [ "$GITHUB_ACTION" ]
|
|
77
|
+
then
|
|
78
|
+
npm_config_mode_test_nopython=1 shCiTestNodejs &
|
|
79
|
+
else
|
|
80
|
+
shCiTestNodejs &
|
|
81
|
+
fi
|
|
82
|
+
PID_LIST="$PID_LIST $!"
|
|
83
|
+
#
|
|
71
84
|
# python -m build --sdist
|
|
72
85
|
# python -m cibuildwheel
|
|
73
86
|
(
|
|
@@ -104,23 +117,26 @@ process.stdout.write(
|
|
|
104
117
|
) &
|
|
105
118
|
PID_LIST="$PID_LIST $!"
|
|
106
119
|
#
|
|
107
|
-
shPidListWait
|
|
108
|
-
#
|
|
109
|
-
# run nodejs-ci
|
|
110
|
-
shCiTestNodejs
|
|
120
|
+
shPidListWait shCiBaseCustom "$PID_LIST"
|
|
111
121
|
#
|
|
112
122
|
# upload artifact
|
|
113
|
-
if (shCiMatrixIsmainNodeversion) &&
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
if (shCiMatrixIsmainNodeversion) && \
|
|
124
|
+
( \
|
|
125
|
+
[ "$GITHUB_EVENT_NAME" = push ] || \
|
|
126
|
+
[ "$GITHUB_EVENT_NAME" = schedule ] || \
|
|
127
|
+
[ "$GITHUB_EVENT_NAME" = workflow_dispatch ] \
|
|
128
|
+
) && \
|
|
129
|
+
( \
|
|
130
|
+
[ "$GITHUB_BRANCH0" = alpha ] || \
|
|
131
|
+
[ "$GITHUB_BRANCH0" = beta ] || \
|
|
132
|
+
[ "$GITHUB_BRANCH0" = master ] \
|
|
133
|
+
)
|
|
118
134
|
then
|
|
119
135
|
export GITHUB_UPLOAD_RETRY=0
|
|
120
136
|
while true
|
|
121
137
|
do
|
|
122
|
-
GITHUB_UPLOAD_RETRY="$((GITHUB_UPLOAD_RETRY + 1))"
|
|
123
|
-
if [ "$GITHUB_UPLOAD_RETRY" -
|
|
138
|
+
export GITHUB_UPLOAD_RETRY="$((GITHUB_UPLOAD_RETRY + 1))"
|
|
139
|
+
if [ ! "$GITHUB_UPLOAD_RETRY" -le 4 ]
|
|
124
140
|
then
|
|
125
141
|
return 1
|
|
126
142
|
fi
|
|
@@ -162,41 +178,49 @@ shCiBaseCustomArtifactUpload() {(set -e
|
|
|
162
178
|
cd .tmp/artifact/
|
|
163
179
|
cp ../../.git/config .git/config
|
|
164
180
|
# update dir branch-$GITHUB_BRANCH0
|
|
165
|
-
mkdir -p "branch-$GITHUB_BRANCH0"
|
|
181
|
+
mkdir -p "branch-$GITHUB_BRANCH0/"
|
|
182
|
+
(
|
|
183
|
+
cd "branch-$GITHUB_BRANCH0/"
|
|
184
|
+
rm -f lib_lightgbm.*
|
|
185
|
+
rm -f libomp.*
|
|
166
186
|
case "$(uname)" in
|
|
167
187
|
Darwin*)
|
|
168
|
-
rm -f
|
|
169
|
-
|
|
188
|
+
rm -f *darwin.so
|
|
189
|
+
case $(uname -m) in
|
|
190
|
+
arm64)
|
|
191
|
+
rm -f *darwin*arm64*
|
|
192
|
+
rm -f *macos*arm64*
|
|
193
|
+
;;
|
|
194
|
+
x86_64)
|
|
195
|
+
rm -f *darwin*x64*
|
|
196
|
+
rm -f *macos*x86_64*
|
|
197
|
+
;;
|
|
198
|
+
esac
|
|
199
|
+
# save libomp
|
|
200
|
+
cp ../../../sqlmath/libomp* ./
|
|
170
201
|
;;
|
|
171
202
|
Linux*)
|
|
172
|
-
rm -f
|
|
203
|
+
rm -f *linux*
|
|
173
204
|
# save sdist
|
|
174
|
-
rm -f
|
|
175
|
-
cp
|
|
205
|
+
rm -f *.tar.gz
|
|
206
|
+
cp ../../../dist/sqlmath-*.tar.gz ./
|
|
207
|
+
# save wasm
|
|
208
|
+
rm -f sqlmath_wasm*
|
|
209
|
+
cp ../../../.artifact/asset_image_logo_256.png ./
|
|
210
|
+
cp ../../../sqlmath_wasm* ./
|
|
176
211
|
;;
|
|
177
212
|
MINGW*)
|
|
178
|
-
rm -f
|
|
179
|
-
rm -f
|
|
213
|
+
rm -f *win32_x64*
|
|
214
|
+
rm -f *win_amd64*
|
|
180
215
|
;;
|
|
181
216
|
esac
|
|
182
|
-
cp
|
|
183
|
-
cp
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
../../sqlmath/libomp.dylib \
|
|
190
|
-
../../sqlmath_wasm.js \
|
|
191
|
-
../../sqlmath_wasm.wasm
|
|
192
|
-
do
|
|
193
|
-
if [ -f "$FILE" ]
|
|
194
|
-
then
|
|
195
|
-
cp "$FILE" "branch-$GITHUB_BRANCH0"
|
|
196
|
-
fi
|
|
197
|
-
done
|
|
198
|
-
# save cibuildwheel
|
|
199
|
-
cp ../../dist/sqlmath-*.whl "branch-$GITHUB_BRANCH0"
|
|
217
|
+
cp ../../../_sqlmath.napi* ./
|
|
218
|
+
cp ../../../_sqlmath.shell* ./
|
|
219
|
+
cp ../../../dist/sqlmath-*.whl ./
|
|
220
|
+
cp ../../../sqlmath/lib_lightgbm* ./
|
|
221
|
+
rm -f *win32_x64*.exp
|
|
222
|
+
rm -f *win32_x64*.lib
|
|
223
|
+
)
|
|
200
224
|
# git commit
|
|
201
225
|
git add .
|
|
202
226
|
git add -f "branch-$GITHUB_BRANCH0"/_sqlmath*
|
|
@@ -322,7 +346,7 @@ shCiBuildWasm() {(set -e
|
|
|
322
346
|
}());
|
|
323
347
|
/*jslint-enable*/
|
|
324
348
|
' >> sqlmath_wasm.js
|
|
325
|
-
cp build/sqlmath_wasm.wasm
|
|
349
|
+
cp build/sqlmath_wasm.wasm ./
|
|
326
350
|
ls -l sqlmath_wasm.*
|
|
327
351
|
)}
|
|
328
352
|
|
|
@@ -426,8 +450,9 @@ shCiPublishNpmCustom() {(set -e
|
|
|
426
450
|
git checkout origin/artifact \
|
|
427
451
|
branch-beta/_sqlmath* \
|
|
428
452
|
branch-beta/sqlmath_wasm*
|
|
429
|
-
cp -a branch-beta/_sqlmath*
|
|
430
|
-
cp -a branch-beta/
|
|
453
|
+
cp -a branch-beta/_sqlmath.napi* ./
|
|
454
|
+
cp -a branch-beta/_sqlmath.shell* ./
|
|
455
|
+
cp -a branch-beta/sqlmath_wasm.* ./
|
|
431
456
|
# npm-publish
|
|
432
457
|
npm publish --access public
|
|
433
458
|
)}
|
|
@@ -436,10 +461,10 @@ shCiPublishPypiCustom() {(set -e
|
|
|
436
461
|
# This function will run custom-code to npm-publish package.
|
|
437
462
|
# fetch artifact
|
|
438
463
|
git fetch origin artifact --depth=1
|
|
439
|
-
git checkout origin/artifact branch-
|
|
464
|
+
git checkout origin/artifact branch-beta/
|
|
440
465
|
mkdir dist/
|
|
441
|
-
cp -a branch-
|
|
442
|
-
cp -a branch-
|
|
466
|
+
cp -a branch-beta/sqlmath-*.tar.gz dist/
|
|
467
|
+
cp -a branch-beta/sqlmath-*.whl dist/
|
|
443
468
|
ls -la dist/
|
|
444
469
|
)}
|
|
445
470
|
|
|
@@ -477,8 +502,11 @@ ciBuildExt({process});
|
|
|
477
502
|
) &
|
|
478
503
|
PID_LIST="$PID_LIST $!"
|
|
479
504
|
# build python c-extension
|
|
480
|
-
|
|
481
|
-
|
|
505
|
+
if [ ! "$npm_config_mode_test_nopython" ]
|
|
506
|
+
then
|
|
507
|
+
python setup.py build_ext &
|
|
508
|
+
PID_LIST="$PID_LIST $!"
|
|
509
|
+
fi
|
|
482
510
|
shPidListWait build_ext "$PID_LIST"
|
|
483
511
|
fi;
|
|
484
512
|
PID_LIST=""
|
|
@@ -497,8 +525,11 @@ require("assert")(require("./package.json").name !== "sqlmath");
|
|
|
497
525
|
) &
|
|
498
526
|
PID_LIST="$PID_LIST $!"
|
|
499
527
|
# test python
|
|
500
|
-
|
|
501
|
-
|
|
528
|
+
if [ ! "$npm_config_mode_test_nopython" ]
|
|
529
|
+
then
|
|
530
|
+
python setup.py test &
|
|
531
|
+
PID_LIST="$PID_LIST $!"
|
|
532
|
+
fi
|
|
502
533
|
shPidListWait test "$PID_LIST"
|
|
503
534
|
)}
|
|
504
535
|
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
# and upload build-artifacts to branch-gh-pages
|
|
3
3
|
name: ci
|
|
4
4
|
on:
|
|
5
|
+
pull_request:
|
|
6
|
+
branches:
|
|
7
|
+
- alpha
|
|
8
|
+
- beta
|
|
9
|
+
- master
|
|
5
10
|
push:
|
|
6
11
|
branches:
|
|
7
12
|
- alpha
|
|
@@ -24,9 +29,10 @@ jobs:
|
|
|
24
29
|
node_version:
|
|
25
30
|
- "24"
|
|
26
31
|
os:
|
|
32
|
+
- macos-15-intel
|
|
27
33
|
- macos-latest
|
|
28
34
|
- ubuntu-latest
|
|
29
|
-
- windows-
|
|
35
|
+
- windows-2022
|
|
30
36
|
python_version:
|
|
31
37
|
- "3.12"
|
|
32
38
|
# base - .github/workflows/ci.yml - beg
|
|
@@ -37,8 +43,8 @@ jobs:
|
|
|
37
43
|
${{ matrix.architecture }}
|
|
38
44
|
${{ matrix.os }}
|
|
39
45
|
CI_MATRIX_NAME_MAIN: "node v24 x64 ubuntu-latest"
|
|
40
|
-
CI_MATRIX_NODE_VERSION:
|
|
41
|
-
CI_MATRIX_NODE_VERSION_MAIN:
|
|
46
|
+
CI_MATRIX_NODE_VERSION: ${{ matrix.node_version }}
|
|
47
|
+
CI_MATRIX_NODE_VERSION_MAIN: "24"
|
|
42
48
|
CI_WORKFLOW_NAME: >
|
|
43
49
|
${{ github.workflow }}
|
|
44
50
|
- ${{ github.event_name }}
|
|
@@ -57,7 +63,16 @@ jobs:
|
|
|
57
63
|
echo "$(date -u +"%Y-%m-%d %TZ") - ${{ env.CI_WORKFLOW_NAME }}" # "
|
|
58
64
|
git config --global core.autocrlf false
|
|
59
65
|
# https://github.com/actions/checkout
|
|
60
|
-
- uses: actions/checkout@
|
|
66
|
+
- uses: actions/checkout@v5
|
|
67
|
+
# https://github.com/actions/cache
|
|
68
|
+
- uses: actions/cache@v5
|
|
69
|
+
with:
|
|
70
|
+
key: >
|
|
71
|
+
${{ hashFiles('./package.json') }}
|
|
72
|
+
${{ matrix.architecture }}
|
|
73
|
+
${{ matrix.node_version }}
|
|
74
|
+
${{ matrix.os }}
|
|
75
|
+
path: .github_cache/
|
|
61
76
|
# fetch jslint_ci.sh from trusted source
|
|
62
77
|
- run: |
|
|
63
78
|
git fetch origin alpha --depth=1
|
|
@@ -65,25 +80,24 @@ jobs:
|
|
|
65
80
|
if [ -f "$FILE" ]; then git checkout origin/alpha "$FILE"; fi; done'
|
|
66
81
|
# pre-run .ci.sh
|
|
67
82
|
- run: sh jslint_ci.sh shCiPre
|
|
83
|
+
if: >
|
|
84
|
+
github.event_name == 'push' ||
|
|
85
|
+
github.event_name == 'schedule' ||
|
|
86
|
+
github.event_name == 'workflow_dispatch'
|
|
68
87
|
# https://github.com/actions/setup-node
|
|
69
|
-
- uses: actions/setup-node@
|
|
88
|
+
- uses: actions/setup-node@v5
|
|
70
89
|
with:
|
|
71
90
|
node-version: ${{ matrix.node_version }}
|
|
72
91
|
# https://github.com/actions/setup-python
|
|
73
|
-
- uses: actions/setup-python@
|
|
92
|
+
- uses: actions/setup-python@v6
|
|
74
93
|
with:
|
|
75
94
|
python-version: ${{ matrix.python_version }}
|
|
76
|
-
# https://github.com/actions/cache
|
|
77
|
-
- uses: actions/cache@v4
|
|
78
|
-
with:
|
|
79
|
-
key: >
|
|
80
|
-
${{ hashFiles('./package.json') }}
|
|
81
|
-
${{ matrix.architecture }}
|
|
82
|
-
${{ matrix.node_version }}
|
|
83
|
-
${{ matrix.os }}
|
|
84
|
-
path: .github_cache
|
|
85
95
|
# run nodejs coverages and tests
|
|
86
96
|
- run: sh jslint_ci.sh shCiBase
|
|
87
97
|
# upload build-artifacts to branch-gh-pages
|
|
88
98
|
- run: sh jslint_ci.sh shCiArtifactUpload
|
|
99
|
+
if: >
|
|
100
|
+
github.event_name == 'push' ||
|
|
101
|
+
github.event_name == 'schedule' ||
|
|
102
|
+
github.event_name == 'workflow_dispatch'
|
|
89
103
|
# base - .github/workflows/ci.yml - end
|
|
@@ -8,7 +8,7 @@ jobs:
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
publish_pypi:
|
|
11
|
-
name:
|
|
11
|
+
name: Publish Package to PyPI
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
environment:
|
|
14
14
|
name: pypi
|
|
@@ -27,3 +27,4 @@ jobs:
|
|
|
27
27
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
28
28
|
with:
|
|
29
29
|
repository-url: https://test.pypi.org/legacy/
|
|
30
|
+
verbose: true
|
|
@@ -5,6 +5,22 @@
|
|
|
5
5
|
- sqlite - Add similar error-handling from builtin-sql-function PERCENTILE() into custom-sql-function QUANTILE().
|
|
6
6
|
- none
|
|
7
7
|
|
|
8
|
+
# v2026.3.31
|
|
9
|
+
- python-ci - bugfix - Fix shell-function shCiBaseCustom() always skipping python setup.py build_ext.
|
|
10
|
+
- ci - Speed-up windows-ci by replacing windows-latest with windows-2022.
|
|
11
|
+
- sqlmath-ci - Speed-up ci with env-var npm_config_mode_test_nopython, allowing shell-function shCiTestNodejs() to be run in background, parallel to python -m cibuildwheel.
|
|
12
|
+
- sqlmath-ci - Rename pre-built-binaries lib_lightgbm.xxx, libomp.xxx to lib_lightgbm_platform_arch.xxx, libomp_platform_arch.xxx, to prevent name-collision under darwin_arm64 and darwin_x64 builds.
|
|
13
|
+
- sqlmath-ci - Update file setup.py to open text-files with utf-8 encoding.
|
|
14
|
+
- sqlmath-ci - Update file .github/workflows/ci.yml with extra matrix.os macos-15-intel.
|
|
15
|
+
- jslint-ci - Update shell-function shGitPullrequestCleanup() to allow squash-and-merge pull-request.
|
|
16
|
+
- sqlmath-ci - Update file .github/workflows/ci.yml with hook to run on pull-request.
|
|
17
|
+
|
|
18
|
+
# v2026.3.1
|
|
19
|
+
- sqlmath-python - bugfix - Fix 762-character-limit SQL-string-bug in python-function db_exec().
|
|
20
|
+
- jslint-ci - Update shell-function shLintPython().
|
|
21
|
+
- python - Auto-detect-and-load lib_lightgbm.dll.
|
|
22
|
+
- sqlite - Add sqlite-extension csv.c, tsv.c.
|
|
23
|
+
|
|
8
24
|
# v2026.2.28
|
|
9
25
|
- python-ci - Fix ruff lint-errors.
|
|
10
26
|
- jslint-ci - Update shell-function shCiBase() to check npm-version-support, before running npm-pkg-fix.
|
|
@@ -39,8 +39,8 @@ include sqlmath_wrapper_wasm.js
|
|
|
39
39
|
include test.mjs
|
|
40
40
|
include test.py
|
|
41
41
|
include test_data_sinefit.csv
|
|
42
|
-
include test_lgbm.py
|
|
43
42
|
include test_lgbm_binary.test
|
|
44
43
|
include test_lgbm_binary.train
|
|
44
|
+
include test_lgbm_numpy.py
|
|
45
45
|
include test_lgbm_preb.txt
|
|
46
46
|
include zlib.v1.3.1.vcpkg.x64-windows-static.lib
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sqlmath
|
|
3
|
-
Version: 2026.
|
|
3
|
+
Version: 2026.3.31
|
|
4
4
|
Summary: sqlite for datascience
|
|
5
5
|
Author: Kai Zhu
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -27,7 +27,7 @@ Description-Content-Type: text/markdown
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
# Status
|
|
30
|
-
| Branch | [master<br>(v2026.
|
|
30
|
+
| Branch | [master<br>(v2026.3.31)](https://github.com/sqlmath/sqlmath/tree/master) | [beta<br>(Web Demo)](https://github.com/sqlmath/sqlmath/tree/beta) | [alpha<br>(Development)](https://github.com/sqlmath/sqlmath/tree/alpha) |
|
|
31
31
|
|--:|:--:|:--:|:--:|
|
|
32
32
|
| CI | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Amaster) | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Abeta) | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Aalpha) |
|
|
33
33
|
| Coverage | [](https://sqlmath.github.io/sqlmath/branch-master/.artifact/coverage/index.html) | [](https://sqlmath.github.io/sqlmath/branch-beta/.artifact/coverage/index.html) | [](https://sqlmath.github.io/sqlmath/branch-alpha/.artifact/coverage/index.html) |
|
|
@@ -146,11 +146,11 @@ PORT=8080 sh jslint_ci.sh shHttpFileServer
|
|
|
146
146
|
```shell
|
|
147
147
|
python -m build
|
|
148
148
|
#
|
|
149
|
-
twine upload --repository testpypi dist/sqlmath-2026.
|
|
150
|
-
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.
|
|
149
|
+
twine upload --repository testpypi dist/sqlmath-2026.3.31*
|
|
150
|
+
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.3.31
|
|
151
151
|
#
|
|
152
|
-
twine upload dist/sqlmath-2026.
|
|
153
|
-
pip install sqlmath==2026.
|
|
152
|
+
twine upload dist/sqlmath-2026.3.31*
|
|
153
|
+
pip install sqlmath==2026.3.31
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
# Status
|
|
5
|
-
| Branch | [master<br>(v2026.
|
|
5
|
+
| Branch | [master<br>(v2026.3.31)](https://github.com/sqlmath/sqlmath/tree/master) | [beta<br>(Web Demo)](https://github.com/sqlmath/sqlmath/tree/beta) | [alpha<br>(Development)](https://github.com/sqlmath/sqlmath/tree/alpha) |
|
|
6
6
|
|--:|:--:|:--:|:--:|
|
|
7
7
|
| CI | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Amaster) | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Abeta) | [](https://github.com/sqlmath/sqlmath/actions?query=branch%3Aalpha) |
|
|
8
8
|
| Coverage | [](https://sqlmath.github.io/sqlmath/branch-master/.artifact/coverage/index.html) | [](https://sqlmath.github.io/sqlmath/branch-beta/.artifact/coverage/index.html) | [](https://sqlmath.github.io/sqlmath/branch-alpha/.artifact/coverage/index.html) |
|
|
@@ -121,11 +121,11 @@ PORT=8080 sh jslint_ci.sh shHttpFileServer
|
|
|
121
121
|
```shell
|
|
122
122
|
python -m build
|
|
123
123
|
#
|
|
124
|
-
twine upload --repository testpypi dist/sqlmath-2026.
|
|
125
|
-
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.
|
|
124
|
+
twine upload --repository testpypi dist/sqlmath-2026.3.31*
|
|
125
|
+
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.3.31
|
|
126
126
|
#
|
|
127
|
-
twine upload dist/sqlmath-2026.
|
|
128
|
-
pip install sqlmath==2026.
|
|
127
|
+
twine upload dist/sqlmath-2026.3.31*
|
|
128
|
+
pip install sqlmath==2026.3.31
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
|
|
@@ -163,7 +163,7 @@ let jslint_charset_ascii = (
|
|
|
163
163
|
+ "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
|
|
164
164
|
+ "`abcdefghijklmnopqrstuvwxyz{|}~\u007f"
|
|
165
165
|
);
|
|
166
|
-
let jslint_edition = "v2026.
|
|
166
|
+
let jslint_edition = "v2026.3.1-beta";
|
|
167
167
|
let jslint_export; // The jslint object to be exported.
|
|
168
168
|
let jslint_fudge = 1; // Fudge starting line and starting
|
|
169
169
|
// ... column to 1.
|
|
@@ -206,7 +206,6 @@ import moduleChildProcess from "child_process";
|
|
|
206
206
|
import moduleFs from "fs";
|
|
207
207
|
import moduleOs from "os";
|
|
208
208
|
import modulePath from "path";
|
|
209
|
-
import moduleUrl from "url";
|
|
210
209
|
(async function () {
|
|
211
210
|
let child;
|
|
212
211
|
let exitCode;
|
|
@@ -221,7 +220,7 @@ import moduleUrl from "url";
|
|
|
221
220
|
).test(url)) {
|
|
222
221
|
url = modulePath.resolve(url);
|
|
223
222
|
}
|
|
224
|
-
file =
|
|
223
|
+
file = new URL(url, "http://localhost").pathname;
|
|
225
224
|
// remove prefix $PWD from file
|
|
226
225
|
if (String(file + "/").startsWith(process.cwd() + "/")) {
|
|
227
226
|
file = file.replace(process.cwd(), "");
|
|
@@ -1075,15 +1074,16 @@ import moduleFs from "fs";
|
|
|
1075
1074
|
|
|
1076
1075
|
shGitPullrequestCleanup() {(set -e
|
|
1077
1076
|
# This function will cleanup pull-request after merge.
|
|
1077
|
+
git checkout alpha
|
|
1078
|
+
git push . alpha:__pr_upstream_pre -f
|
|
1078
1079
|
git fetch upstream beta
|
|
1079
1080
|
# verify no diff between alpha..upstream/beta
|
|
1080
1081
|
git diff alpha..upstream/beta
|
|
1081
|
-
git push . HEAD:__pr_upstream_pre -f
|
|
1082
1082
|
git reset upstream/beta
|
|
1083
|
-
git push
|
|
1084
|
-
git push origin alpha
|
|
1083
|
+
git push . alpha:beta -f
|
|
1084
|
+
git push origin alpha beta -f
|
|
1085
1085
|
sh jslint_ci.sh shMyciUpdate
|
|
1086
|
-
git push .
|
|
1086
|
+
git push . alpha:__pr_upstream -f
|
|
1087
1087
|
)}
|
|
1088
1088
|
|
|
1089
1089
|
shGitSquashPop() {(set -e
|
|
@@ -1373,7 +1373,6 @@ import moduleFs from "fs";
|
|
|
1373
1373
|
import moduleHttp from "http";
|
|
1374
1374
|
import modulePath from "path";
|
|
1375
1375
|
import moduleRepl from "repl";
|
|
1376
|
-
import moduleUrl from "url";
|
|
1377
1376
|
(async function httpFileServer() {
|
|
1378
1377
|
|
|
1379
1378
|
// this function will start http-file-server
|
|
@@ -1421,7 +1420,7 @@ import moduleUrl from "url";
|
|
|
1421
1420
|
// init timeStart
|
|
1422
1421
|
timeStart = Date.now();
|
|
1423
1422
|
// init pathname
|
|
1424
|
-
pathname =
|
|
1423
|
+
pathname = new URL(req.url, "http://localhost").pathname;
|
|
1425
1424
|
// debug - serverLog
|
|
1426
1425
|
res.on("close", function () {
|
|
1427
1426
|
if (pathname === "/favicon.ico") {
|
|
@@ -1724,45 +1723,69 @@ function objectDeepCopyWithKeysSorted(obj) {
|
|
|
1724
1723
|
|
|
1725
1724
|
shLintPython() {(set -e
|
|
1726
1725
|
# This function will lint python file.
|
|
1726
|
+
# https://docs.astral.sh/ruff/rules/
|
|
1727
1727
|
FILE_LIST="$@"
|
|
1728
1728
|
(
|
|
1729
1729
|
printf "\n\nlint ruff\n"
|
|
1730
1730
|
OPTION=""
|
|
1731
1731
|
# autofix
|
|
1732
1732
|
OPTION="$OPTION --fix"
|
|
1733
|
-
|
|
1733
|
+
OPTION="$OPTION --select=ALL"
|
|
1734
|
+
#
|
|
1735
|
+
# ANNXXX flake8-annotations
|
|
1734
1736
|
OPTION="$OPTION --ignore=ANN"
|
|
1735
|
-
#
|
|
1736
|
-
#
|
|
1737
|
+
#
|
|
1738
|
+
# C901 - complex-structure
|
|
1739
|
+
# {name} is too complex ({complexity} > {max_complexity})
|
|
1740
|
+
OPTION="$OPTION --ignore=C901"
|
|
1741
|
+
#
|
|
1742
|
+
# D203 - incorrect-blank-line-before-class
|
|
1743
|
+
# 1 blank line required before class docstring
|
|
1737
1744
|
OPTION="$OPTION --ignore=D203"
|
|
1738
|
-
#
|
|
1739
|
-
#
|
|
1745
|
+
#
|
|
1746
|
+
# D212 - multi-line-summary-first-line
|
|
1747
|
+
# Multi-line docstring summary should start at the first line
|
|
1740
1748
|
OPTION="$OPTION --ignore=D212"
|
|
1741
|
-
#
|
|
1742
|
-
#
|
|
1749
|
+
#
|
|
1750
|
+
# D401 - non-imperative-mood
|
|
1751
|
+
# First line of docstring should be in imperative mood: "{first_line}"
|
|
1743
1752
|
OPTION="$OPTION --ignore=D401"
|
|
1744
|
-
#
|
|
1745
|
-
#
|
|
1753
|
+
#
|
|
1754
|
+
# D404 - docstring-starts-with-this
|
|
1755
|
+
# First word of the docstring should not be "This"
|
|
1746
1756
|
OPTION="$OPTION --ignore=D404"
|
|
1747
|
-
#
|
|
1748
|
-
#
|
|
1757
|
+
#
|
|
1758
|
+
# ERA001 - commented-out-code
|
|
1759
|
+
# Found commented-out code
|
|
1749
1760
|
OPTION="$OPTION --ignore=ERA001"
|
|
1750
|
-
#
|
|
1751
|
-
#
|
|
1761
|
+
#
|
|
1762
|
+
# PLR0912 - too-many-branches
|
|
1763
|
+
# Too many branches ({branches} > {max_branches})
|
|
1764
|
+
OPTION="$OPTION --ignore=PLR0912"
|
|
1765
|
+
#
|
|
1766
|
+
# PLR0913 - too-many-arguments
|
|
1767
|
+
# Too many arguments in function definition ({c_args} > {max_args})
|
|
1768
|
+
OPTION="$OPTION --ignore=PLR0913"
|
|
1769
|
+
#
|
|
1770
|
+
# PLR0915 - too-many-statements
|
|
1771
|
+
# Too many statements ({statements} > {max_statements})
|
|
1752
1772
|
OPTION="$OPTION --ignore=PLR0915"
|
|
1753
|
-
#
|
|
1754
|
-
#
|
|
1773
|
+
#
|
|
1774
|
+
# S603 - subprocess-without-shell-equals-true
|
|
1775
|
+
# subprocess call: check for execution of untrusted input
|
|
1755
1776
|
OPTION="$OPTION --ignore=S603"
|
|
1756
|
-
#
|
|
1757
|
-
#
|
|
1777
|
+
#
|
|
1778
|
+
# S607 - start-process-with-partial-path
|
|
1779
|
+
# Starting a process with a partial executable path
|
|
1758
1780
|
OPTION="$OPTION --ignore=S607"
|
|
1759
|
-
#
|
|
1760
|
-
#
|
|
1781
|
+
#
|
|
1782
|
+
# S608 - hardcoded-sql-expression
|
|
1783
|
+
# Possible SQL injection vector through string-based query construction
|
|
1761
1784
|
OPTION="$OPTION --ignore=S608"
|
|
1762
|
-
#
|
|
1763
|
-
#
|
|
1785
|
+
#
|
|
1786
|
+
# T201 - print
|
|
1787
|
+
# print found
|
|
1764
1788
|
OPTION="$OPTION --ignore=T201"
|
|
1765
|
-
OPTION="$OPTION --select=ALL"
|
|
1766
1789
|
ruff check $OPTION $FILE_LIST
|
|
1767
1790
|
) &
|
|
1768
1791
|
PID_LIST="$PID_LIST $!"
|
|
@@ -1770,12 +1793,15 @@ shLintPython() {(set -e
|
|
|
1770
1793
|
(
|
|
1771
1794
|
printf "lint pycodestyle\n"
|
|
1772
1795
|
OPTION="--ignore="
|
|
1773
|
-
#
|
|
1774
|
-
#
|
|
1796
|
+
#
|
|
1797
|
+
# E116 - unexpected-indentation-comment
|
|
1798
|
+
# Unexpected indentation (comment)
|
|
1775
1799
|
OPTION="$OPTION,E116"
|
|
1776
|
-
#
|
|
1777
|
-
#
|
|
1800
|
+
#
|
|
1801
|
+
# E261 - too-few-spaces-before-inline-comment
|
|
1802
|
+
# Insert at least two spaces before an inline comment
|
|
1778
1803
|
OPTION="$OPTION,E261"
|
|
1804
|
+
#
|
|
1779
1805
|
# Line break occurred before a binary operator (W503)
|
|
1780
1806
|
# Line breaks should occur after the binary operator to keep all variable
|
|
1781
1807
|
# names aligned.
|