sqlmath 2026.3.1__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.3.1 → sqlmath-2026.3.31}/.ci.sh +93 -62
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/.github/workflows/ci.yml +29 -15
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/.github/workflows/publish_pypi_test.yml +2 -1
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/.gitignore +2 -1
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/.npmignore +4 -1
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/CHANGELOG.md +10 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/PKG-INFO +6 -6
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/README.md +5 -5
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/jslint_ci.sh +7 -8
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/package.json +1 -1
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/pyproject.toml +1 -1
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/setup.py +37 -13
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath/__init__.py +21 -6
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath.mjs +18 -7
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/.gitconfig +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/.github/workflows/publish.yml +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/LICENSE +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/MANIFEST.in +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/asset_image_folder_open_solid.svg +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/asset_image_github_brands.svg +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/asset_image_logo_256.html +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/asset_image_logo_256.png +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/asset_image_logo_256.svg +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/asset_sqlmath_external_rollup.js +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/cpplint.py +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/csslint.js +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/indent.exe +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/index.html +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/jslint.mjs +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/libiconv2.dll +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/libintl3.dll +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_base.c +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_base.h +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_browser.mjs +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_custom.c +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_custom.mjs +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_external_sqlite.c +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/sqlmath_wrapper_wasm.js +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test.mjs +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test.py +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test_data_sinefit.csv +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test_lgbm_binary.test +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test_lgbm_binary.train +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test_lgbm_numpy.py +0 -0
- {sqlmath-2026.3.1 → sqlmath-2026.3.31}/test_lgbm_preb.txt +0 -0
- {sqlmath-2026.3.1 → 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,16 @@
|
|
|
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
|
+
|
|
8
18
|
# v2026.3.1
|
|
9
19
|
- sqlmath-python - bugfix - Fix 762-character-limit SQL-string-bug in python-function db_exec().
|
|
10
20
|
- jslint-ci - Update shell-function shLintPython().
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sqlmath
|
|
3
|
-
Version: 2026.3.
|
|
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.3.
|
|
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.3.
|
|
150
|
-
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.3.
|
|
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.3.
|
|
153
|
-
pip install sqlmath==2026.3.
|
|
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.3.
|
|
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.3.
|
|
125
|
-
py -m pip install --index-url https://test.pypi.org/simple/ sqlmath==2026.3.
|
|
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.3.
|
|
128
|
-
pip install sqlmath==2026.3.
|
|
127
|
+
twine upload dist/sqlmath-2026.3.31*
|
|
128
|
+
pip install sqlmath==2026.3.31
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
|
|
@@ -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") {
|
|
@@ -27,8 +27,8 @@ python setup.py bdist_wheel
|
|
|
27
27
|
python setup.py build_ext
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
|
-
__version__ = "2026.3.
|
|
31
|
-
__version_info__ = ("2026", "3", "
|
|
30
|
+
__version__ = "2026.3.31"
|
|
31
|
+
__version_info__ = ("2026", "3", "31")
|
|
32
32
|
|
|
33
33
|
import asyncio
|
|
34
34
|
import base64
|
|
@@ -36,6 +36,7 @@ import hashlib
|
|
|
36
36
|
import json
|
|
37
37
|
import os
|
|
38
38
|
import pathlib
|
|
39
|
+
import platform
|
|
39
40
|
import re
|
|
40
41
|
import shutil
|
|
41
42
|
import subprocess
|
|
@@ -349,7 +350,7 @@ def build_pkg_info():
|
|
|
349
350
|
"""This function will build PKG-INFO."""
|
|
350
351
|
# https://packaging.python.org/en/latest/specifications/core-metadata/#core-metadata
|
|
351
352
|
toml = ""
|
|
352
|
-
with pathlib.Path("pyproject.toml").open() as file1:
|
|
353
|
+
with pathlib.Path("pyproject.toml").open(encoding="utf-8") as file1:
|
|
353
354
|
toml = file1.read()
|
|
354
355
|
data = ""
|
|
355
356
|
data += "Metadata-Version: 2.1\n"
|
|
@@ -382,10 +383,14 @@ def build_pkg_info():
|
|
|
382
383
|
):
|
|
383
384
|
data += f"Project-URL: {match[1]}, {match[2]}\n"
|
|
384
385
|
data += "License-File: LICENSE\n"
|
|
385
|
-
with pathlib.Path("README.md").open() as file1:
|
|
386
|
+
with pathlib.Path("README.md").open(encoding="utf-8") as file1:
|
|
386
387
|
data += "Description-Content-Type: text/markdown\n\n"
|
|
387
388
|
data += file1.read().strip() + "\n"
|
|
388
|
-
with pathlib.Path("PKG-INFO").open(
|
|
389
|
+
with pathlib.Path("PKG-INFO").open(
|
|
390
|
+
"w",
|
|
391
|
+
encoding="utf-8",
|
|
392
|
+
newline="\n",
|
|
393
|
+
) as file1:
|
|
389
394
|
file1.write(re.sub(" +\n", "\n", data))
|
|
390
395
|
|
|
391
396
|
|
|
@@ -405,7 +410,7 @@ def build_sdist(sdist_directory, config_settings=None):
|
|
|
405
410
|
sdist_directory = pathlib.Path(sdist_directory).resolve()
|
|
406
411
|
# init file_sdist
|
|
407
412
|
name_version = ""
|
|
408
|
-
with pathlib.Path("pyproject.toml").open() as file1:
|
|
413
|
+
with pathlib.Path("pyproject.toml").open(encoding="utf-8") as file1:
|
|
409
414
|
toml = file1.read()
|
|
410
415
|
name_version = (
|
|
411
416
|
re.search('\nname = "(.*?)"', toml)[1]
|
|
@@ -417,7 +422,7 @@ def build_sdist(sdist_directory, config_settings=None):
|
|
|
417
422
|
# Copy files from MANIFEST.in to dir_tmp and create tarball.
|
|
418
423
|
with tempfile.TemporaryDirectory() as dir_tmp:
|
|
419
424
|
script = ""
|
|
420
|
-
with pathlib.Path("MANIFEST.in").open() as file1:
|
|
425
|
+
with pathlib.Path("MANIFEST.in").open(encoding="utf-8") as file1:
|
|
421
426
|
script = file1.read()
|
|
422
427
|
script = "\n".join(
|
|
423
428
|
f"cp --parents '{file}' '{dir_tmp}/{name_version}/'"
|
|
@@ -437,7 +442,12 @@ def build_sdist(sdist_directory, config_settings=None):
|
|
|
437
442
|
)
|
|
438
443
|
"""
|
|
439
444
|
file_tmp = ""
|
|
440
|
-
with tempfile.NamedTemporaryFile(
|
|
445
|
+
with tempfile.NamedTemporaryFile(
|
|
446
|
+
"w",
|
|
447
|
+
delete=False,
|
|
448
|
+
encoding="utf-8",
|
|
449
|
+
newline="\n",
|
|
450
|
+
) as file1:
|
|
441
451
|
file1.write(script)
|
|
442
452
|
file_tmp = file1.name
|
|
443
453
|
subprocess.run(["sh", file_tmp], check=True)
|
|
@@ -591,6 +601,24 @@ def env_vcvarsall():
|
|
|
591
601
|
return env
|
|
592
602
|
|
|
593
603
|
|
|
604
|
+
def lib_platform_arch_ext():
|
|
605
|
+
"""This function will return f"{platform}_{arch}.{extension}"."""
|
|
606
|
+
lib_arch = (
|
|
607
|
+
platform.machine()
|
|
608
|
+
.lower()
|
|
609
|
+
.replace("aarch64", "arm64")
|
|
610
|
+
.replace("amd64", "x64")
|
|
611
|
+
.replace("x86_64", "x64")
|
|
612
|
+
)
|
|
613
|
+
lib_platform = sys.platform
|
|
614
|
+
lib_ext = "so"
|
|
615
|
+
if lib_platform == "darwin":
|
|
616
|
+
lib_ext = "dylib"
|
|
617
|
+
if lib_platform == "win32":
|
|
618
|
+
lib_ext = "dll"
|
|
619
|
+
return f"{lib_platform}_{lib_arch}.{lib_ext}"
|
|
620
|
+
|
|
621
|
+
|
|
594
622
|
def main():
|
|
595
623
|
"""This function will run main-program."""
|
|
596
624
|
match sys.argv[1]:
|
|
@@ -635,11 +663,7 @@ class SetupError(Exception):
|
|
|
635
663
|
"""Setup error."""
|
|
636
664
|
|
|
637
665
|
|
|
638
|
-
FILE_LIB_LGBM = (
|
|
639
|
-
"lib_lightgbm.dylib" if sys.platform == "darwin"
|
|
640
|
-
else "lib_lightgbm.dll" if sys.platform == "win32"
|
|
641
|
-
else "lib_lightgbm.so"
|
|
642
|
-
)
|
|
666
|
+
FILE_LIB_LGBM = f"lib_lightgbm_{lib_platform_arch_ext()}"
|
|
643
667
|
FILE_LIB_SQLMATH = f"_sqlmath{sysconfig.get_config_var('EXT_SUFFIX')}"
|
|
644
668
|
|
|
645
669
|
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
"""sqlmath.py."""
|
|
23
23
|
|
|
24
|
-
__version__ = "2026.3.
|
|
25
|
-
__version_info__ = ("2026", "3", "
|
|
24
|
+
__version__ = "2026.3.31"
|
|
25
|
+
__version_info__ = ("2026", "3", "31")
|
|
26
26
|
|
|
27
27
|
import csv
|
|
28
28
|
import io
|
|
@@ -385,10 +385,7 @@ PRAGMA busy_timeout = {timeout_busy};
|
|
|
385
385
|
""",
|
|
386
386
|
)
|
|
387
387
|
# LGBM_DLOPEN
|
|
388
|
-
lib_lgbm =
|
|
389
|
-
lib_lgbm = lib_lgbm.replace("Darwin", "lib_lightgbm.dylib")
|
|
390
|
-
lib_lgbm = lib_lgbm.replace("Linux", "lib_lightgbm.so")
|
|
391
|
-
lib_lgbm = lib_lgbm.replace("Windows", "lib_lightgbm.dll")
|
|
388
|
+
lib_lgbm = f"lib_lightgbm_{lib_platform_arch_ext()}"
|
|
392
389
|
lib_lgbm = pathlib.Path(__file__).resolve().parent / lib_lgbm
|
|
393
390
|
if lib_lgbm.exists():
|
|
394
391
|
db_exec(
|
|
@@ -800,6 +797,24 @@ def json_row_list_from_csv(csv_text):
|
|
|
800
797
|
return [row for row in reader if row]
|
|
801
798
|
|
|
802
799
|
|
|
800
|
+
def lib_platform_arch_ext():
|
|
801
|
+
"""This function will return f"{platform}_{arch}.{extension}"."""
|
|
802
|
+
lib_arch = (
|
|
803
|
+
platform.machine()
|
|
804
|
+
.lower()
|
|
805
|
+
.replace("aarch64", "arm64")
|
|
806
|
+
.replace("amd64", "x64")
|
|
807
|
+
.replace("x86_64", "x64")
|
|
808
|
+
)
|
|
809
|
+
lib_platform = sys.platform
|
|
810
|
+
lib_ext = "so"
|
|
811
|
+
if lib_platform == "darwin":
|
|
812
|
+
lib_ext = "dylib"
|
|
813
|
+
if lib_platform == "win32":
|
|
814
|
+
lib_ext = "dll"
|
|
815
|
+
return f"{lib_platform}_{lib_arch}.{lib_ext}"
|
|
816
|
+
|
|
817
|
+
|
|
803
818
|
def objectdeepcopywithkeyssorted(obj):
|
|
804
819
|
"""This function will recursively deep-copy <obj> with keys sorted."""
|
|
805
820
|
if isinstance(obj, float):
|
|
@@ -128,7 +128,7 @@ let {
|
|
|
128
128
|
let sqlMessageDict = {}; // dict of web-worker-callbacks
|
|
129
129
|
let sqlMessageId = 0;
|
|
130
130
|
let sqlWorker;
|
|
131
|
-
let version = "v2026.3.
|
|
131
|
+
let version = "v2026.3.31";
|
|
132
132
|
|
|
133
133
|
async function assertErrorThrownAsync(asyncFunc, regexp) {
|
|
134
134
|
|
|
@@ -1059,11 +1059,7 @@ PRAGMA busy_timeout = ${timeoutBusy};
|
|
|
1059
1059
|
}),
|
|
1060
1060
|
// LGBM_DLOPEN
|
|
1061
1061
|
(async function () {
|
|
1062
|
-
let libLgbm
|
|
1063
|
-
libLgbm = process.platform;
|
|
1064
|
-
libLgbm = libLgbm.replace("darwin", "lib_lightgbm.dylib");
|
|
1065
|
-
libLgbm = libLgbm.replace("win32", "lib_lightgbm.dll");
|
|
1066
|
-
libLgbm = libLgbm.replace(process.platform, "lib_lightgbm.so");
|
|
1062
|
+
let libLgbm = `lib_lightgbm_${libPlatformArchExt()}`;
|
|
1067
1063
|
libLgbm = `${import.meta.dirname}/sqlmath/${libLgbm}`;
|
|
1068
1064
|
await moduleFs.promises.access(
|
|
1069
1065
|
libLgbm
|
|
@@ -1679,6 +1675,16 @@ function jsonRowListFromCsv({
|
|
|
1679
1675
|
return rowList;
|
|
1680
1676
|
}
|
|
1681
1677
|
|
|
1678
|
+
function libPlatformArchExt() {
|
|
1679
|
+
let libArch = process.arch;
|
|
1680
|
+
let libExt = process.platform;
|
|
1681
|
+
let libPlatform = process.platform;
|
|
1682
|
+
libExt = libExt.replace("darwin", "dylib");
|
|
1683
|
+
libExt = libExt.replace("win32", "dll");
|
|
1684
|
+
libExt = libExt.replace(libPlatform, "so");
|
|
1685
|
+
return `${libPlatform}_${libArch}.${libExt}`;
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1682
1688
|
function listOrEmptyList(list) {
|
|
1683
1689
|
|
|
1684
1690
|
// This function will return <list> or empty-list if falsy.
|
|
@@ -1906,7 +1912,11 @@ function waitAsync(timeout) {
|
|
|
1906
1912
|
// This function will wait <timeout> ms.
|
|
1907
1913
|
|
|
1908
1914
|
return new Promise(function (resolve) {
|
|
1909
|
-
|
|
1915
|
+
let ms = Number(timeout);
|
|
1916
|
+
if (!Number.isFinite(ms)) {
|
|
1917
|
+
ms = 0;
|
|
1918
|
+
}
|
|
1919
|
+
setTimeout(resolve, ms * !npm_config_mode_test);
|
|
1910
1920
|
});
|
|
1911
1921
|
}
|
|
1912
1922
|
|
|
@@ -1978,6 +1988,7 @@ export {
|
|
|
1978
1988
|
fsWriteFileUnlessTest,
|
|
1979
1989
|
jsbatonGetInt64,
|
|
1980
1990
|
jsbatonGetString,
|
|
1991
|
+
libPlatformArchExt,
|
|
1981
1992
|
listOrEmptyList,
|
|
1982
1993
|
noop,
|
|
1983
1994
|
objectDeepCopyWithKeysSorted,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|