lbug 0.12.0 → 0.12.3-dev.1

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.
Files changed (62) hide show
  1. package/lbug-source/.github/workflows/benchmark-workflow.yml +7 -4
  2. package/lbug-source/.github/workflows/build-and-deploy-extension.yml +4 -11
  3. package/lbug-source/.github/workflows/build-and-deploy.yml +37 -11
  4. package/lbug-source/.github/workflows/build-extensions.yml +0 -8
  5. package/lbug-source/.github/workflows/business-intelligence-benchmark.yml +1 -1
  6. package/lbug-source/.github/workflows/ci-workflow.yml +139 -34
  7. package/lbug-source/.github/workflows/clickbench-workflow.yml +5 -0
  8. package/lbug-source/.github/workflows/gen-docs.yml +55 -29
  9. package/lbug-source/.github/workflows/get-extensions-from-ghcr.yml +2 -2
  10. package/lbug-source/.github/workflows/interactive-v1-benchmark.yml +6 -1
  11. package/lbug-source/.github/workflows/java-workflow.yml +31 -33
  12. package/lbug-source/.github/workflows/ldbc-fintech-benchmark-workflow.yml +1 -1
  13. package/lbug-source/.github/workflows/lsqb-benchmark-workflow.yml +16 -8
  14. package/lbug-source/.github/workflows/precompiled-bin-workflow.yml +10 -8
  15. package/lbug-source/.github/workflows/purge-extension.yml +2 -2
  16. package/lbug-source/.github/workflows/python-wheel-workflow.yml +24 -12
  17. package/lbug-source/.github/workflows/wasm-workflow.yml +6 -1
  18. package/lbug-source/.gitignore +1 -0
  19. package/lbug-source/AGENTS.md +19 -0
  20. package/lbug-source/CMakeLists.txt +9 -7
  21. package/lbug-source/Makefile +1 -2
  22. package/lbug-source/benchmark/lsqb/benchmark_runner.py +1 -2
  23. package/lbug-source/benchmark/lsqb/serializer.py +1 -2
  24. package/lbug-source/dataset/books/books.csv +3 -0
  25. package/lbug-source/extension/azure/test/test_files/azure.test +2 -0
  26. package/lbug-source/extension/duckdb/test/test_files/duckdb.test +1 -0
  27. package/lbug-source/extension/duckdb/test/test_files/remote_duckdb.test +2 -0
  28. package/lbug-source/extension/fts/src/function/create_fts_index.cpp +6 -8
  29. package/lbug-source/extension/fts/test/test_files/multi_index.test +44 -0
  30. package/lbug-source/extension/httpfs/test/test_files/gcs_download.test +1 -0
  31. package/lbug-source/extension/httpfs/test/test_files/gcs_glob.test +1 -0
  32. package/lbug-source/extension/httpfs/test/test_files/gcs_remote_database.test +1 -0
  33. package/lbug-source/extension/httpfs/test/test_files/http.test +13 -0
  34. package/lbug-source/extension/httpfs/test/test_files/s3_download.test +1 -0
  35. package/lbug-source/extension/iceberg/test/test_files/iceberg.test +1 -0
  36. package/lbug-source/extension/json/test/scan_json.test +1 -0
  37. package/lbug-source/extension/sqlite/test/test_files/sqlite.test +1 -0
  38. package/lbug-source/extension/vector/test/test_files/transaction.test +56 -0
  39. package/lbug-source/extension/vector/test/test_files/update.test +84 -0
  40. package/lbug-source/scripts/extension/PRODUCTION_RELEASES +1 -14
  41. package/lbug-source/scripts/pip-package/setup.py +0 -3
  42. package/lbug-source/scripts/update-nightly-build-version.py +15 -0
  43. package/lbug-source/src/CMakeLists.txt +1 -1
  44. package/lbug-source/src/c_api/value.cpp +5 -2
  45. package/lbug-source/src/include/c_api/lbug.h +5 -3
  46. package/lbug-source/src/storage/table/node_table.cpp +1 -0
  47. package/lbug-source/test/c_api/value_test.cpp +4 -3
  48. package/lbug-source/test/test_files/extension/extension.test +0 -3
  49. package/lbug-source/tools/nodejs_api/README.md +2 -2
  50. package/lbug-source/tools/nodejs_api/package.json +2 -2
  51. package/lbug-source/tools/python_api/Makefile +2 -2
  52. package/lbug-source/tools/python_api/pyproject.toml +36 -0
  53. package/lbug-source/tools/wasm/examples/browser_in_memory/package.json +1 -1
  54. package/lbug-source/tools/wasm/examples/browser_persistent/package.json +1 -1
  55. package/lbug-source/tools/wasm/examples/nodejs/package.json +1 -1
  56. package/lbug-source/tools/wasm/package.json +1 -1
  57. package/package.json +3 -3
  58. package/prebuilt/lbugjs-darwin-arm64.node +0 -0
  59. package/prebuilt/lbugjs-linux-arm64.node +0 -0
  60. package/prebuilt/lbugjs-linux-x64.node +0 -0
  61. package/prebuilt/lbugjs-win32-x64.node +0 -0
  62. package/lbug-source/tools/python_api/requirements_dev.txt +0 -20
@@ -7,13 +7,16 @@ jobs:
7
7
  ldbc_benchmark:
8
8
  name: ldbc benchmark
9
9
  env:
10
- NUM_THREADS: 30
11
10
  GEN: Ninja
12
- runs-on: lbug-self-hosted-benchmarking
13
- if: false
11
+ runs-on: ubuntu-latest
14
12
  steps:
15
13
  - uses: actions/checkout@v4
16
14
 
15
+ - name: Setup ccache
16
+ uses: hendrikmuhs/ccache-action@v1.2
17
+ with:
18
+ key: benchmark-${{ runner.os }}
19
+
17
20
  - name: Build
18
21
  run: make benchmark
19
22
 
@@ -21,7 +24,7 @@ jobs:
21
24
  continue-on-error: true
22
25
  run: |
23
26
  set +e
24
- python3 benchmark/benchmark_runner.py --dataset ldbc-sf100 --thread 10
27
+ uv run benchmark/benchmark_runner.py --dataset ldbc-sf10
25
28
  echo $? > benchmark/exit_code
26
29
 
27
30
  - name: Upload benchmark logs
@@ -69,38 +69,31 @@ jobs:
69
69
  mkdir -p extension-artifacts/linux_amd64
70
70
  mkdir -p extension-artifacts/linux_arm64
71
71
  mkdir -p extension-artifacts/linux_x86
72
- mkdir -p extension-artifacts/osx_amd64
73
72
  mkdir -p extension-artifacts/osx_arm64
74
73
  mkdir -p extension-artifacts/win_amd64
75
74
 
76
75
  - name: Download built artifacts for linux-x86_64
77
76
  uses: actions/download-artifact@v4
78
77
  with:
79
- name: lbug-extensions_linux-x86_64
78
+ name: lbug-extensions-linux-x86_64
80
79
  path: extension-artifacts/linux_amd64
81
80
 
82
81
  - name: Download built artifacts for linux-aarch64
83
82
  uses: actions/download-artifact@v4
84
83
  with:
85
- name: lbug-extensions_linux-aarch64
84
+ name: lbug-extensions-linux-aarch64
86
85
  path: extension-artifacts/linux_arm64
87
86
 
88
- - name: Download built artifacts for osx-x86_64
89
- uses: actions/download-artifact@v4
90
- with:
91
- name: lbug-extensions_osx-x86_64
92
- path: extension-artifacts/osx_amd64
93
-
94
87
  - name: Download built artifacts for osx-aarch64
95
88
  uses: actions/download-artifact@v4
96
89
  with:
97
- name: lbug-extensions_osx-arm64
90
+ name: lbug-extensions-osx-arm64
98
91
  path: extension-artifacts/osx_arm64
99
92
 
100
93
  - name: Download built artifacts for windows-x86_64
101
94
  uses: actions/download-artifact@v4
102
95
  with:
103
- name: lbug-extensions_win-x86_64
96
+ name: lbug-extensions-win-x86_64
104
97
  path: extension-artifacts/win_amd64
105
98
 
106
99
  - name: Copy built artifacts
@@ -53,6 +53,11 @@ on:
53
53
  env:
54
54
  PIP_BREAK_SYSTEM_PACKAGES: 1
55
55
 
56
+ permissions:
57
+ id-token: write # Required for OIDC
58
+ contents: read
59
+ packages: write # Required by extension deployment
60
+
56
61
  jobs:
57
62
  get-nightly-version:
58
63
  runs-on: ubuntu-latest
@@ -60,9 +65,14 @@ jobs:
60
65
  steps:
61
66
  - uses: actions/checkout@v4
62
67
 
68
+ - name: Install uv
69
+ run: python3 -m pip install uv
70
+
63
71
  - name: Update nightly version
64
72
  run: |
65
- python3 -m pip install packaging
73
+ uv venv
74
+ source .venv/bin/activate
75
+ uv pip install packaging
66
76
  python3 update-nightly-build-version.py | grep "New Python dev version:" | awk -F'New Python dev version: ' '{print $2}' | sed 's/\.$//' > version.txt
67
77
  cat version.txt
68
78
  working-directory: scripts
@@ -74,7 +84,7 @@ jobs:
74
84
  path: scripts/version.txt
75
85
 
76
86
  build-extension:
77
- if: ${{ github.event_name == 'schedule' || github.event.inputs.skipExtensions != 'true' }}
87
+ if: ${{ github.event_name == 'schedule' && github.event.inputs.skipExtensions != 'true' }}
78
88
  uses: ./.github/workflows/build-and-deploy-extension.yml
79
89
  with:
80
90
  isNightly: ${{ github.event_name == 'schedule' || github.event.inputs.isNightly == 'true' }}
@@ -149,10 +159,15 @@ jobs:
149
159
  steps:
150
160
  - uses: actions/checkout@v4
151
161
 
162
+ - name: Install uv
163
+ run: pip3 install uv
164
+
152
165
  - name: Update nightly version
153
166
  if: ${{ github.event_name == 'schedule' || github.event.inputs.isNightly == 'true' }}
154
167
  run: |
155
- pip3 install packaging
168
+ uv venv
169
+ source .venv/bin/activate
170
+ uv pip install packaging
156
171
  python3 update-nightly-build-version.py
157
172
  working-directory: scripts
158
173
 
@@ -197,10 +212,15 @@ jobs:
197
212
  steps:
198
213
  - uses: actions/checkout@v4
199
214
 
215
+ - name: Install uv
216
+ run: python3 -m pip install uv
217
+
200
218
  - name: Update nightly version
201
219
  if: ${{ github.event_name == 'schedule' || github.event.inputs.isNightly == 'true' }}
202
220
  run: |
203
- python3 -m pip install packaging
221
+ uv venv
222
+ source .venv/bin/activate
223
+ uv pip install packaging
204
224
  python3 update-nightly-build-version.py
205
225
  working-directory: scripts
206
226
 
@@ -277,15 +297,18 @@ jobs:
277
297
  if: ${{ github.event_name == 'schedule' || github.event.inputs.skipNodejs != 'true' }}
278
298
  needs: [build-nodejs]
279
299
  runs-on: ubuntu-latest
280
- env:
281
- NODE_AUTH_TOKEN: ${{ secrets.NPM_JS_TOKEN }}
282
300
  steps:
283
301
  - uses: actions/checkout@v4
284
302
 
303
+ - name: Install uv
304
+ run: pip3 install uv
305
+
285
306
  - name: Update nightly version
286
307
  if: ${{ github.event_name == 'schedule' || github.event.inputs.isNightly == 'true' }}
287
308
  run: |
288
- pip3 install packaging
309
+ uv venv
310
+ source .venv/bin/activate
311
+ uv pip install packaging
289
312
  python3 update-nightly-build-version.py
290
313
  working-directory: scripts
291
314
 
@@ -312,11 +335,14 @@ jobs:
312
335
  name: windows-nodejs-module
313
336
  path: tools/nodejs_api/prebuilt
314
337
 
315
- - uses: actions/setup-node@v3
338
+ - uses: actions/setup-node@v4
316
339
  with:
317
- node-version: "16"
340
+ node-version: "22"
318
341
  registry-url: "https://registry.npmjs.org"
319
342
 
343
+ - name: Upgrade npm
344
+ run: npm install -g npm@latest
345
+
320
346
  - name: Package Node.js API with prebuilt binaries
321
347
  run: node package
322
348
  working-directory: tools/nodejs_api
@@ -342,8 +368,8 @@ jobs:
342
368
  working-directory: tools/nodejs_api
343
369
 
344
370
  - name: Deploy to npm.js
345
- if: ${{ github.event.inputs.isDeploy == 'true' || github.event.inputs.isNightly != 'true' }}
346
- run: npm publish lbug-source.tar.gz --access public --tag latest --otp=${{ secrets.NPM_JS_TOKEN_OTP}}
371
+ if: ${{ github.event.inputs.isDeploy == 'true' && github.event.inputs.isNightly != 'true' }}
372
+ run: npm publish lbug-source.tar.gz --access public --tag latest
347
373
  working-directory: tools/nodejs_api
348
374
 
349
375
  build-wasm:
@@ -118,14 +118,6 @@ jobs:
118
118
  echo set^(DuckDB_FOUND TRUE^)
119
119
  ) > C:\local\lib\cmake\DuckDB\DuckDBConfig.cmake
120
120
 
121
- - name: Cache build
122
- uses: actions/cache@v4
123
- with:
124
- path: build
125
- key: core-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'src/**', 'extension/**', 'tools/**') }}
126
- restore-keys: |
127
- core-build-${{ runner.os }}-${{ runner.arch }}-
128
-
129
121
  - name: Build precompiled extensions (Linux)
130
122
  if: runner.os == 'Linux'
131
123
  run: make extension-release
@@ -46,7 +46,7 @@ jobs:
46
46
 
47
47
  - name: Build lbug
48
48
  run: |
49
- pip3 install -r tools/python_api/requirements_dev.txt
49
+ pip3 install -e tools/python_api/[dev]
50
50
  make python
51
51
 
52
52
  - name: Clone implementation
@@ -161,14 +161,6 @@ jobs:
161
161
  steps:
162
162
  - uses: actions/checkout@v4
163
163
 
164
- - name: Cache build
165
- uses: actions/cache@v4
166
- with:
167
- path: build
168
- key: core-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'src/**', 'extension/**', 'tools/**') }}
169
- restore-keys: |
170
- core-build-${{ runner.os }}-${{ runner.arch }}-
171
-
172
164
  - name: Download binary-demo
173
165
  uses: actions/download-artifact@v4
174
166
  with:
@@ -211,9 +203,6 @@ jobs:
211
203
  run: |
212
204
  make test
213
205
 
214
- - name: Ensure Python dependencies
215
- run: pip install --user -r tools/python_api/requirements_dev.txt
216
-
217
206
  - name: Python test
218
207
  run: make pytest
219
208
 
@@ -557,14 +546,6 @@ jobs:
557
546
  steps:
558
547
  - uses: actions/checkout@v4
559
548
 
560
- - name: Cache build
561
- uses: actions/cache@v4
562
- with:
563
- path: build
564
- key: core-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'src/**', 'extension/**', 'tools/**') }}
565
- restore-keys: |
566
- core-build-${{ runner.os }}-${{ runner.arch }}-
567
-
568
549
  - name: Download binary-demo
569
550
  uses: actions/download-artifact@v4
570
551
  with:
@@ -596,8 +577,14 @@ jobs:
596
577
  run: |
597
578
  make test
598
579
 
580
+ - name: Install uv
581
+ run: pip install uv
582
+
599
583
  - name: Ensure Python dependencies
600
- run: pip install --user -r tools/python_api/requirements_dev.txt
584
+ run: |
585
+ uv venv
586
+ source .venv/bin/activate
587
+ uv pip install --prerelease=allow --user -e tools/python_api/[dev]
601
588
 
602
589
  - name: Python test
603
590
  run: make pytest
@@ -828,8 +815,14 @@ jobs:
828
815
  call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
829
816
  make test
830
817
 
818
+ - name: Install uv
819
+ run: pip install uv
820
+
831
821
  - name: Ensure Python dependencies
832
- run: pip install --user -r tools/python_api/requirements_dev.txt
822
+ run: |
823
+ uv venv
824
+ call .venv\Scripts\activate.bat
825
+ uv pip install --prerelease=allow --user -e tools/python_api/[dev]
833
826
 
834
827
  - name: Python test
835
828
  shell: cmd
@@ -911,6 +904,9 @@ jobs:
911
904
  repository: ${{ github.event.pull_request.head.repo.full_name }}
912
905
  ref: ${{ github.event.pull_request.head.ref }}
913
906
 
907
+ - name: Install uv
908
+ run: pip3 install uv
909
+
914
910
  - name: Install clang-format
915
911
  run: |
916
912
  sudo apt-get update
@@ -956,6 +952,9 @@ jobs:
956
952
  steps:
957
953
  - uses: actions/checkout@v4
958
954
 
955
+ - name: Install uv
956
+ run: pip3 install uv
957
+
959
958
  - name: Setup Python
960
959
  uses: actions/setup-python@v5
961
960
  with:
@@ -1036,14 +1035,6 @@ jobs:
1036
1035
  steps:
1037
1036
  - uses: actions/checkout@v4
1038
1037
 
1039
- - name: Cache build
1040
- uses: actions/cache@v4
1041
- with:
1042
- path: build
1043
- key: core-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt', 'src/**', 'extension/**', 'tools/**') }}
1044
- restore-keys: |
1045
- core-build-${{ runner.os }}-${{ runner.arch }}-
1046
-
1047
1038
  - name: Determine NUM_THREADS
1048
1039
  run: |
1049
1040
  export NUM_THREADS=$(($(sysctl -n hw.logicalcpu) * 2 / 3))
@@ -1098,8 +1089,14 @@ jobs:
1098
1089
  ulimit -n 10240
1099
1090
  make example
1100
1091
 
1092
+ - name: Install uv
1093
+ run: pip3 install uv
1094
+
1101
1095
  - name: Ensure Python dependencies
1102
- run: pip3 install --user -r tools/python_api/requirements_dev.txt
1096
+ run: |
1097
+ uv venv
1098
+ source .venv/bin/activate
1099
+ uv pip install --prerelease=allow --user -e tools/python_api/[dev]
1103
1100
 
1104
1101
  - name: Python test
1105
1102
  env:
@@ -1169,11 +1166,102 @@ jobs:
1169
1166
  - name: Generate datasets
1170
1167
  run: bash scripts/generate_binary_demo.sh
1171
1168
 
1169
+ - name: Install uv
1170
+ run: pip3 install uv
1171
+
1172
1172
  - name: Test
1173
1173
  run: |
1174
- pip3 install pytest pexpect
1174
+ uv venv
1175
+ source .venv/bin/activate
1176
+ uv pip install pytest pexpect
1175
1177
  make shell-test test
1176
1178
 
1179
+ minimal-linux-extension-test:
1180
+ name: minimal linux extension test
1181
+ runs-on: ubuntu-latest
1182
+ env:
1183
+ GEN: Ninja
1184
+ UW_S3_ACCESS_KEY_ID: ${{ secrets.UW_S3_ACCESS_KEY_ID }}
1185
+ UW_S3_SECRET_ACCESS_KEY: ${{ secrets.UW_S3_SECRET_ACCESS_KEY }}
1186
+ AWS_S3_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
1187
+ AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
1188
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
1189
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
1190
+ GCS_ACCESS_KEY_ID: ${{ secrets.GCS_ACCESS_KEY_ID }}
1191
+ GCS_SECRET_ACCESS_KEY: ${{ secrets.GCS_SECRET_ACCESS_KEY }}
1192
+ AZURE_CONNECTION_STRING: ${{ format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};EndpointSuffix=core.windows.net', secrets.AZURE_ACCOUNT_NAME, secrets.AZURE_ACCOUNT_KEY) }}
1193
+ AZURE_ACCOUNT_NAME: ${{ secrets.AZURE_ACCOUNT_NAME }}
1194
+ AZURE_PUBLIC_CONTAINER: ${{ secrets.AZURE_PUBLIC_CONTAINER }}
1195
+
1196
+ steps:
1197
+ - uses: actions/checkout@v4
1198
+
1199
+ - name: Setup ccache
1200
+ uses: hendrikmuhs/ccache-action@v1.2
1201
+ with:
1202
+ key: minimal-extension-test-${{ runner.os }}
1203
+
1204
+ - name: Update PostgreSQL host
1205
+ working-directory: extension/postgres/test/test_files
1206
+ env:
1207
+ PG_FNAME: postgres.test
1208
+ SQL_FNAME: sql_query.test
1209
+ FIND: "localhost"
1210
+ run: |
1211
+ node -e 'fs=require("fs");fs.readFile(process.env.PG_FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.PG_FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});'
1212
+ node -e 'fs=require("fs");fs.readFile(process.env.SQL_FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.SQL_FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});'
1213
+
1214
+ - name: Install DuckDB (Linux)
1215
+ if: runner.os == 'Linux'
1216
+ run: |
1217
+ if [ "${{ runner.arch }}" = "X64" ]; then
1218
+ wget https://github.com/duckdb/duckdb/releases/latest/download/libduckdb-linux-amd64.zip
1219
+ unzip libduckdb-linux-amd64.zip -d duckdb
1220
+ else
1221
+ wget https://github.com/duckdb/duckdb/releases/latest/download/libduckdb-linux-arm64.zip
1222
+ unzip libduckdb-linux-arm64.zip -d duckdb
1223
+ fi
1224
+ sudo cp duckdb/duckdb.h /usr/local/include/
1225
+ sudo cp duckdb/duckdb.hpp /usr/local/include/
1226
+ sudo cp duckdb/libduckdb.so /usr/local/lib/
1227
+ sudo ldconfig
1228
+ # Create CMake config files
1229
+ sudo mkdir -p /usr/local/lib/cmake/DuckDB
1230
+ sudo tee /usr/local/lib/cmake/DuckDB/DuckDBConfig.cmake > /dev/null << 'EOF'
1231
+ # DuckDB CMake configuration file
1232
+
1233
+ if(NOT TARGET DuckDB::duckdb)
1234
+ add_library(DuckDB::duckdb SHARED IMPORTED)
1235
+ set_target_properties(DuckDB::duckdb PROPERTIES
1236
+ INTERFACE_INCLUDE_DIRECTORIES "/usr/local/include"
1237
+ IMPORTED_LOCATION "/usr/local/lib/libduckdb.so"
1238
+ )
1239
+ endif()
1240
+
1241
+ set(DuckDB_LIBRARIES DuckDB::duckdb)
1242
+ set(DuckDB_INCLUDE_DIRS "/usr/local/include")
1243
+ set(DuckDB_FOUND TRUE)
1244
+ EOF
1245
+
1246
+ - name: Install uv
1247
+ run: |
1248
+ pip3 install uv
1249
+ uv venv
1250
+
1251
+ - name: Install dependencies
1252
+ run: uv pip install rangehttpserver requests
1253
+
1254
+ # shell needs to be built first to generate the dataset provided by the server
1255
+ - name: Extension test build
1256
+ run: make extension-test-build
1257
+
1258
+ - name: Extension test
1259
+ run: |
1260
+ uv run scripts/generate-tinysnb.py
1261
+ uv run scripts/setup-extension-repo.py &
1262
+ make extension-test
1263
+
1264
+
1177
1265
  linux-extension-test:
1178
1266
  name: linux extension test
1179
1267
  needs: [ gcc-build-test, clang-build-test ]
@@ -1215,8 +1303,14 @@ jobs:
1215
1303
  node -e 'fs=require("fs");fs.readFile(process.env.PG_FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.PG_FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});'
1216
1304
  node -e 'fs=require("fs");fs.readFile(process.env.SQL_FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.SQL_FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});'
1217
1305
 
1306
+ - name: Install uv
1307
+ run: pip install uv
1308
+
1218
1309
  - name: Install dependencies
1219
- run: pip install rangehttpserver requests
1310
+ run: |
1311
+ uv venv
1312
+ source .venv/bin/activate
1313
+ uv pip install rangehttpserver requests
1220
1314
 
1221
1315
  # shell needs to be built first to generate the dataset provided by the server
1222
1316
  - name: Extension test build
@@ -1324,8 +1418,14 @@ jobs:
1324
1418
  node -e 'fs=require("fs");fs.readFile(process.env.PG_TEST_FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.PG_TEST_FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});'
1325
1419
  node -e 'fs=require("fs");fs.readFile(process.env.SQL_TEST_FNAME,"utf8",(err,data)=>{if(err!=null)throw err;fs.writeFile(process.env.SQL_TEST_FNAME,data.replaceAll(process.env.FIND,process.env.PG_HOST),"utf8",e=>{if(e!=null)throw e;});});'
1326
1420
 
1421
+ - name: Install uv
1422
+ run: pip3 install uv
1423
+
1327
1424
  - name: Install dependencies
1328
- run: pip3 install rangehttpserver requests
1425
+ run: |
1426
+ uv venv
1427
+ source .venv/bin/activate
1428
+ uv pip install rangehttpserver requests
1329
1429
 
1330
1430
  # shell needs to be built first to generate the dataset provided by the server
1331
1431
  - name: Extension test build
@@ -1398,8 +1498,13 @@ jobs:
1398
1498
  WERROR: 0
1399
1499
  steps:
1400
1500
  - uses: actions/checkout@v4
1501
+ - name: Install uv
1502
+ run: pip install uv
1401
1503
  - name: Install dependencies
1402
- run: pip install rangehttpserver requests
1504
+ run: |
1505
+ uv venv
1506
+ call .venv\Scripts\activate.bat
1507
+ uv pip install rangehttpserver requests
1403
1508
 
1404
1509
  - name: Update PostgreSQL host
1405
1510
  working-directory: extension/postgres/test/test_files
@@ -17,6 +17,11 @@ jobs:
17
17
  steps:
18
18
  - uses: actions/checkout@v4
19
19
 
20
+ - name: Setup ccache
21
+ uses: hendrikmuhs/ccache-action@v1.2
22
+ with:
23
+ key: benchmark-${{ runner.os }}
24
+
20
25
  - name: Build
21
26
  run: make benchmark
22
27
 
@@ -4,50 +4,72 @@ on: workflow_dispatch
4
4
 
5
5
  jobs:
6
6
  build-python-package:
7
- runs-on: lbug-self-hosted-linux-building-x86_64
8
- if: false
9
- env:
10
- PLATFORM: manylinux_2_28_x86_64
7
+ runs-on: ubuntu-latest
11
8
  steps:
12
9
  - uses: actions/checkout@v4
13
10
 
14
- - name: Build Python package
15
- working-directory: scripts/pip-package/
11
+ - name: Package Python sdist
12
+ run: python package_tar.py
13
+ working-directory: scripts/pip-package
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: '3.11'
19
+
20
+ - name: Install uv
21
+ run: python -m pip install uv
22
+
23
+ - name: Install cibuildwheel
24
+ run: uv pip install cibuildwheel
25
+
26
+ - name: Build wheels
27
+ env:
28
+ CIBW_PLATFORM: linux
29
+ CIBW_BUILD: "cp310-*"
30
+ CIBW_ARCHS: "auto"
31
+ CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
32
+ CIBW_SKIP: "*-musllinux_*"
16
33
  run: |
17
- mkdir wheelhouse
18
- /opt/python/cp310-cp310/bin/python package_tar.py lbug.tar.gz
19
- /opt/python/cp310-cp310/bin/pip wheel lbug.tar.gz --no-deps -w wheelhouse/
20
- auditwheel repair wheelhouse/lbug-*.whl -w wheelhouse/
34
+ python -m cibuildwheel --output-dir scripts/pip-package/wheelhouse scripts/pip-package/*.tar.gz
21
35
 
22
36
  - uses: actions/upload-artifact@v4
23
37
  with:
24
38
  name: lbug-python-package
25
- path: scripts/pip-package/wheelhouse/*.manylinux_2_28_x86_64.whl
39
+ path: scripts/pip-package/wheelhouse/*.whl
26
40
 
27
41
  generate-python-docs:
28
42
  runs-on: ubuntu-latest
29
43
  needs: build-python-package
30
- container:
31
- image: python:3.10-bullseye
32
44
  steps:
33
45
  - uses: actions/checkout@v4
34
46
 
47
+ - name: Set up Python
48
+ uses: actions/setup-python@v5
49
+ with:
50
+ python-version: '3.10'
51
+
35
52
  - name: Download Python package
36
53
  uses: actions/download-artifact@v4
37
54
  with:
38
55
  name: lbug-python-package
39
56
 
57
+ - name: Install uv
58
+ run: pip install uv
59
+
40
60
  - name: Install Python packages
41
61
  run: |
42
- pip install *.whl
43
- pip install pdoc
44
- pip install torch~=2.0.0 --extra-index-url https://download.pytorch.org/whl/cpu
45
- pip install -r tools/python_api/requirements_dev.txt -f https://data.pyg.org/whl/torch-2.0.0+cpu.html
62
+ uv venv
63
+ source .venv/bin/activate
64
+ uv pip install *.whl
65
+ uv pip install pdoc
66
+ uv pip install torch~=2.5.0 --extra-index-url https://download.pytorch.org/whl/cpu
67
+ uv pip install --prerelease=allow -e tools/python_api/[dev]
46
68
 
47
69
  - name: Generate Python docs
48
70
  run: |
49
71
  mkdir docs
50
- pdoc --docformat "numpy" -o docs lbug
72
+ pdoc --docformat "numpy" -o docs real_ladybug
51
73
 
52
74
  - name: Upload Python docs
53
75
  uses: actions/upload-artifact@v4
@@ -79,7 +101,7 @@ jobs:
79
101
  with:
80
102
  name: lbug-nodejs-docs
81
103
  path: ./docs
82
-
104
+
83
105
  generate-wasm-docs:
84
106
  runs-on: macos-latest
85
107
  steps:
@@ -109,11 +131,15 @@ jobs:
109
131
 
110
132
  generate-java-docs:
111
133
  runs-on: ubuntu-latest
112
- container:
113
- image: openjdk:20
114
134
  steps:
115
135
  - uses: actions/checkout@v4
116
136
 
137
+ - name: Set up JDK
138
+ uses: actions/setup-java@v4
139
+ with:
140
+ java-version: '20'
141
+ distribution: 'temurin'
142
+
117
143
  - name: Generate Java docs
118
144
  shell: bash
119
145
  run: |
@@ -146,7 +172,7 @@ jobs:
146
172
  with:
147
173
  name: lbug-cpp-docs
148
174
  path: ./scripts/generate-cpp-docs/cpp/docs/html
149
-
175
+
150
176
  - name: Upload C docs
151
177
  uses: actions/upload-artifact@v4
152
178
  with:
@@ -165,10 +191,10 @@ jobs:
165
191
  steps:
166
192
  - uses: actions/checkout@v4
167
193
  with:
168
- repository: lbugdb/api-docs
194
+ repository: LadybugDB/api-docs
169
195
  token: ${{ secrets.DOC_PUSH_TOKEN }}
170
196
  path: api-docs
171
-
197
+
172
198
  - name: Remove old documentations
173
199
  run: |
174
200
  rm -rf api-docs/python
@@ -183,7 +209,7 @@ jobs:
183
209
  with:
184
210
  name: lbug-python-docs
185
211
  path: api-docs/python
186
-
212
+
187
213
  - name: Download Node.js docs
188
214
  uses: actions/download-artifact@v4
189
215
  with:
@@ -195,7 +221,7 @@ jobs:
195
221
  with:
196
222
  name: lbug-wasm-docs
197
223
  path: api-docs/wasm
198
-
224
+
199
225
  - name: Download Java docs
200
226
  uses: actions/download-artifact@v4
201
227
  with:
@@ -207,13 +233,13 @@ jobs:
207
233
  with:
208
234
  name: lbug-cpp-docs
209
235
  path: api-docs/cpp
210
-
236
+
211
237
  - name: Download C docs
212
238
  uses: actions/download-artifact@v4
213
239
  with:
214
240
  name: lbug-c-docs
215
241
  path: api-docs/c
216
-
242
+
217
243
  - name: Push changes
218
244
  working-directory: api-docs
219
245
  run: |
@@ -223,7 +249,7 @@ jobs:
223
249
  git add .
224
250
  git commit -m "Update API documentations"
225
251
  git push -u origin "api-documentation-update-${{ github.sha }}"
226
-
252
+
227
253
  - name: Create pull request
228
254
  working-directory: api-docs
229
255
  run: |