Showing with 12,815 additions and 8,279 deletions.
  1. +1 −1 .commitlintrc.json
  2. +0 −1 .coveragerc
  3. +19 −3 .git-blame-ignore-revs
  4. +1 −0 .gitattributes
  5. +1 −1 .github/renovate.json
  6. +1 −1 .github/workflows/assign.yml
  7. +9 −4 .github/workflows/check-generated-files.yml
  8. +34 −5 .github/workflows/conda-lock.yml
  9. +2 −0 .github/workflows/ibis-backends-skip-helper.yml
  10. +118 −225 .github/workflows/ibis-backends.yml
  11. +20 −9 .github/workflows/ibis-docs-lint.yml
  12. +4 −2 .github/workflows/ibis-docs-release.yml
  13. +2 −0 .github/workflows/ibis-main-skip-helper.yml
  14. +3 −24 .github/workflows/ibis-main.yml
  15. +32 −11 .github/workflows/ibis-tpch-queries.yml
  16. +2 −0 .github/workflows/nix-skip-helper.yml
  17. +2 −0 .github/workflows/nix.yml
  18. +2 −1 .github/workflows/test-report.yml
  19. +6 −6 .github/workflows/update-deps.yml
  20. +5 −2 .github/workflows/update-setup-py.yml
  21. +0 −7 .gitignore
  22. +72 −98 .pre-commit-config.yaml
  23. +1 −0 .prettierignore
  24. +28 −0 LICENSES/odo.txt
  25. +0 −788 ci/datamgr.py
  26. +7 −2 ci/release/prepare.sh
  27. +1 −1 ci/release/verify.sh
  28. +28 −7 ci/schema/clickhouse.sql
  29. +24 −7 ci/schema/duckdb.sql
  30. +8 −7 ci/schema/postgresql.sql
  31. +27 −4 codecov.yml
  32. +388 −0 conda-lock/linux-64-3.10.lock
  33. +179 −168 conda-lock/linux-64-3.8.lock
  34. +179 −166 conda-lock/linux-64-3.9.lock
  35. +372 −0 conda-lock/osx-64-3.10.lock
  36. +175 −164 conda-lock/osx-64-3.8.lock
  37. +175 −162 conda-lock/osx-64-3.9.lock
  38. +363 −0 conda-lock/win-64-3.10.lock
  39. +163 −152 conda-lock/win-64-3.8.lock
  40. +164 −151 conda-lock/win-64-3.9.lock
  41. +8 −17 default.nix
  42. +2 −2 docker-compose.yml
  43. +1 −1 docs/about/roadmap.md
  44. +1 −1 docs/about/team.md
  45. +2 −9 docs/backends/Impala.md
  46. +227 −0 docs/blog/Ibis-version-3.1.0-release.md
  47. +42 −13 docs/contribute/01_environment.md
  48. +7 −14 docs/contribute/04_backend_tests.md
  49. +150 −100 docs/ibis-for-sql-programmers.ipynb
  50. +154 −1 docs/release_notes.md
  51. +57 −0 docs/stylesheets/extra.css
  52. +9 −6 docs/tutorial/01-Introduction-to-Ibis.ipynb
  53. +33 −23 docs/tutorial/02-Aggregates-Joins.ipynb
  54. +13 −9 docs/tutorial/03-Expressions-Lazy-Mode-Logging.ipynb
  55. +63 −49 docs/tutorial/04-More-Value-Expressions.ipynb
  56. +18 −14 docs/tutorial/05-IO-Create-Insert-External-Data.ipynb
  57. +29 −20 docs/tutorial/06-ComplexFiltering.ipynb
  58. +18 −13 docs/tutorial/07-Analytics-Tools.ipynb
  59. +14 −9 docs/tutorial/08-Geospatial-Analysis.ipynb
  60. +3 −3 docs/user_guide/design.md
  61. +11 −9 docs/user_guide/extending/elementwise.ipynb
  62. +18 −10 docs/user_guide/extending/reduction.ipynb
  63. +17 −4 gen_matrix.py
  64. +23 −13 ibis/__init__.py
  65. +202 −17 ibis/backends/base/__init__.py
  66. +30 −19 ibis/backends/base/sql/__init__.py
  67. +21 −16 ibis/backends/base/sql/alchemy/__init__.py
  68. +35 −8 ibis/backends/base/sql/alchemy/datatypes.py
  69. +3 −3 ibis/backends/base/sql/alchemy/query_builder.py
  70. +163 −69 ibis/backends/base/sql/alchemy/registry.py
  71. +35 −0 ibis/backends/base/sql/alchemy/translator.py
  72. +4 −0 ibis/backends/base/sql/compiler/__init__.py
  73. +11 −4 ibis/backends/base/sql/compiler/base.py
  74. +0 −133 ibis/backends/base/sql/compiler/extract_subqueries.py
  75. +36 −18 ibis/backends/base/sql/compiler/query_builder.py
  76. +75 −338 ibis/backends/base/sql/compiler/select_builder.py
  77. +4 −5 ibis/backends/base/sql/compiler/translator.py
  78. +49 −0 ibis/backends/base/sql/registry/binary_infix.py
  79. +28 −26 ibis/backends/base/sql/registry/helpers.py
  80. +1 −1 ibis/backends/base/sql/registry/literal.py
  81. +16 −4 ibis/backends/base/sql/registry/main.py
  82. +4 −12 ibis/backends/base/sql/registry/window.py
  83. +14 −23 ibis/backends/clickhouse/__init__.py
  84. +13 −129 ibis/backends/clickhouse/client.py
  85. +220 −0 ibis/backends/clickhouse/datatypes.py
  86. +169 −66 ibis/backends/clickhouse/registry.py
  87. +60 −26 ibis/backends/clickhouse/tests/conftest.py
  88. +7 −7 ibis/backends/clickhouse/tests/test_client.py
  89. +43 −48 ibis/backends/clickhouse/tests/test_functions.py
  90. +32 −1 ibis/backends/clickhouse/tests/test_literals.py
  91. +2 −23 ibis/backends/clickhouse/tests/test_operators.py
  92. +1 −1 ibis/backends/clickhouse/tests/test_select.py
  93. +112 −33 ibis/backends/clickhouse/tests/test_types.py
  94. +256 −44 ibis/backends/conftest.py
  95. +1 −1 ibis/backends/dask/__init__.py
  96. +2 −2 ibis/backends/dask/core.py
  97. +28 −14 ibis/backends/dask/execution/generic.py
  98. +30 −3 ibis/backends/dask/execution/numeric.py
  99. +7 −3 ibis/backends/dask/execution/reductions.py
  100. +4 −4 ibis/backends/dask/execution/selection.py
  101. +27 −8 ibis/backends/dask/execution/util.py
  102. +1 −1 ibis/backends/dask/execution/window.py
  103. +2 −0 ibis/backends/dask/tests/conftest.py
  104. +1 −1 ibis/backends/dask/tests/execution/test_temporal.py
  105. +7 −7 ibis/backends/dask/tests/test_udf.py
  106. +5 −0 ibis/backends/dask/trace.py
  107. +27 −20 ibis/backends/datafusion/__init__.py
  108. +92 −55 ibis/backends/datafusion/compiler.py
  109. +3 −1 ibis/backends/datafusion/datatypes.py
  110. +2 −1 ibis/backends/datafusion/tests/conftest.py
  111. +1 −1 ibis/backends/datafusion/tests/test_udf.py
  112. +125 −36 ibis/backends/duckdb/__init__.py
  113. +1 −0 ibis/backends/duckdb/compiler.py
  114. +45 −44 ibis/backends/duckdb/datatypes.py
  115. +59 −0 ibis/backends/duckdb/registry.py
  116. +42 −3 ibis/backends/duckdb/tests/conftest.py
  117. +12 −6 ibis/backends/duckdb/tests/test_datatypes.py
  118. +109 −0 ibis/backends/duckdb/tests/test_register.py
  119. +3 −3 ibis/backends/impala/__init__.py
  120. +1 −1 ibis/backends/impala/client.py
  121. +9 −3 ibis/backends/impala/compat.py
  122. +1 −0 ibis/backends/impala/ddl.py
  123. +0 −41 ibis/backends/impala/hdfs.py
  124. +262 −69 ibis/backends/impala/tests/conftest.py
  125. +9 −9 ibis/backends/impala/tests/test_client.py
  126. +19 −0 ibis/backends/impala/tests/test_ddl.py
  127. +1 −0 ibis/backends/impala/tests/test_ddl_compilation.py
  128. +37 −58 ibis/backends/impala/tests/test_patched.py
  129. +22 −19 ibis/backends/impala/tests/test_sql.py
  130. +8 −8 ibis/backends/impala/tests/test_udf.py
  131. +6 −6 ibis/backends/impala/tests/test_value_exprs.py
  132. +2 −4 ibis/backends/impala/udf.py
  133. +3 −0 ibis/backends/mysql/compiler.py
  134. +44 −93 ibis/backends/mysql/registry.py
  135. +48 −2 ibis/backends/mysql/tests/conftest.py
  136. +26 −11 ibis/backends/pandas/__init__.py
  137. +1 −1 ibis/backends/pandas/aggcontext.py
  138. +16 −2 ibis/backends/pandas/client.py
  139. +3 −3 ibis/backends/pandas/core.py
  140. +2 −2 ibis/backends/pandas/execution/decimal.py
  141. +120 −19 ibis/backends/pandas/execution/generic.py
  142. +39 −27 ibis/backends/pandas/execution/selection.py
  143. +19 −3 ibis/backends/pandas/execution/structs.py
  144. +3 −3 ibis/backends/pandas/execution/timecontext.py
  145. +1 −1 ibis/backends/pandas/execution/util.py
  146. +7 −2 ibis/backends/pandas/execution/window.py
  147. +30 −4 ibis/backends/pandas/tests/conftest.py
  148. +123 −1 ibis/backends/pandas/tests/execution/test_join.py
  149. +1 −1 ibis/backends/pandas/tests/execution/test_temporal.py
  150. +8 −8 ibis/backends/pandas/tests/test_udf.py
  151. +4 −0 ibis/backends/pandas/trace.py
  152. +3 −3 ibis/backends/postgres/__init__.py
  153. +2 −1 ibis/backends/postgres/compiler.py
  154. +1 −1 ibis/backends/postgres/datatypes.py
  155. +107 −211 ibis/backends/postgres/registry.py
  156. +62 −30 ibis/backends/postgres/tests/conftest.py
  157. +3 −3 ibis/backends/postgres/tests/test_client.py
  158. +1 −49 ibis/backends/postgres/tests/test_functions.py
  159. +3 −3 ibis/backends/postgres/tests/test_geospatial.py
  160. +44 −58 ibis/backends/postgres/tests/test_postgis.py
  161. +0 −4 ibis/backends/postgres/tests/test_udf.py
  162. +13 −9 ibis/backends/pyspark/__init__.py
  163. +2 −2 ibis/backends/pyspark/client.py
  164. +213 −26 ibis/backends/pyspark/compiler.py
  165. +21 −6 ibis/backends/pyspark/tests/conftest.py
  166. +0 −32 ibis/backends/pyspark/tests/test_basic.py
  167. +12 −12 ibis/backends/pyspark/tests/test_timecontext.py
  168. +0 −5 ibis/backends/pyspark/tests/test_window_context_adjustment.py
  169. +6 −2 ibis/backends/sqlite/__init__.py
  170. +19 −44 ibis/backends/sqlite/registry.py
  171. +64 −3 ibis/backends/sqlite/tests/conftest.py
  172. +3 −4 ibis/backends/sqlite/tests/test_client.py
  173. +5 −18 ibis/backends/sqlite/tests/test_functions.py
  174. +107 −0 ibis/backends/sqlite/udf.py
  175. +50 −13 ibis/backends/tests/base.py
  176. +322 −98 ibis/backends/tests/test_aggregation.py
  177. +36 −1 ibis/backends/tests/test_api.py
  178. +183 −11 ibis/backends/tests/test_array.py
  179. +6 −9 ibis/backends/tests/test_client.py
  180. +208 −10 ibis/backends/tests/test_generic.py
  181. +19 −21 ibis/backends/tests/test_join.py
  182. +58 −42 ibis/backends/tests/test_numeric.py
  183. +2 −6 ibis/backends/tests/test_string.py
  184. +86 −0 ibis/backends/tests/test_struct.py
  185. +184 −7 ibis/backends/tests/test_temporal.py
  186. +1 −1 ibis/backends/tests/test_union.py
  187. +26 −0 ibis/backends/tests/test_window.py
  188. +2 −2 ibis/common/caching.py
  189. +99 −0 ibis/common/dispatch.py
  190. +20 −22 ibis/common/tests/test_grounds.py
  191. +321 −580 ibis/expr/analysis.py
  192. +0 −7 ibis/expr/analytics.py
  193. +82 −58 ibis/expr/api.py
  194. +1 −1 ibis/expr/datatypes/__init__.py
  195. +132 −62 ibis/expr/datatypes/core.py
  196. +138 −0 ibis/expr/deferred.py
  197. +21 −14 ibis/expr/format.py
  198. +38 −36 ibis/expr/lineage.py
  199. +21 −41 ibis/expr/operations/analytic.py
  200. +18 −7 ibis/expr/operations/arrays.py
  201. +11 −5 ibis/expr/operations/core.py
  202. +77 −50 ibis/expr/operations/generic.py
  203. +3 −3 ibis/expr/operations/geospatial.py
  204. +3 −3 ibis/expr/operations/histograms.py
  205. +124 −11 ibis/expr/operations/logical.py
  206. +7 −7 ibis/expr/operations/maps.py
  207. +28 −28 ibis/expr/operations/numeric.py
  208. +41 −7 ibis/expr/operations/reductions.py
  209. +80 −103 ibis/expr/operations/relations.py
  210. +30 −30 ibis/expr/operations/strings.py
  211. +33 −33 ibis/expr/operations/temporal.py
  212. +4 −4 ibis/expr/operations/vectorized.py
  213. +42 −23 ibis/expr/rules.py
  214. +3 −2 ibis/expr/schema.py
  215. +6 −6 ibis/expr/timecontext.py
  216. +44 −12 ibis/expr/types/analytic.py
  217. +24 −14 ibis/expr/types/arrays.py
  218. +4 −4 ibis/expr/types/binary.py
  219. +4 −4 ibis/expr/types/category.py
  220. +7 −7 ibis/expr/types/collections.py
  221. +9 −11 ibis/expr/types/core.py
  222. +180 −150 ibis/expr/types/generic.py
  223. +43 −51 ibis/expr/types/groupby.py
  224. +13 −7 ibis/expr/types/logical.py
  225. +10 −10 ibis/expr/types/maps.py
  226. +14 −9 ibis/expr/types/numeric.py
  227. +159 −150 ibis/expr/types/relations.py
  228. +4 −4 ibis/expr/types/strings.py
  229. +45 −11 ibis/expr/types/structs.py
  230. +13 −7 ibis/expr/types/temporal.py
  231. +9 −9 ibis/expr/window.py
  232. +19 −3 ibis/tests/benchmarks/test_benchmarks.py
  233. +45 −1 ibis/tests/expr/test_analysis.py
  234. +10 −7 ibis/tests/expr/test_analytics.py
  235. +0 −27 ibis/tests/expr/test_array.py
  236. +2 −2 ibis/tests/expr/test_case.py
  237. +9 −0 ibis/tests/expr/test_datatypes.py
  238. +21 −1 ibis/tests/expr/test_decimal.py
  239. +22 −0 ibis/tests/expr/test_format.py
  240. +0 −15 ibis/tests/expr/test_lineage.py
  241. +1 −1 ibis/tests/expr/test_literal.py
  242. +27 −5 ibis/tests/expr/test_operations.py
  243. +46 −13 ibis/tests/expr/test_rules.py
  244. +11 −0 ibis/tests/expr/test_schema.py
  245. +10 −0 ibis/tests/expr/test_struct.py
  246. +74 −33 ibis/tests/expr/test_table.py
  247. +191 −17 ibis/tests/expr/test_value_exprs.py
  248. +2 −2 ibis/tests/expr/test_window_functions.py
  249. +2 −2 ibis/tests/sql/test_compiler.py
  250. +97 −23 ibis/tests/sql/test_select_sql.py
  251. +11 −0 ibis/tests/sql/test_sqlalchemy.py
  252. +29 −33 ibis/tests/test_api.py
  253. +2 −2 ibis/tests/test_version.py
  254. +1 −1 ibis/tests/util.py
  255. +6 −10 justfile
  256. +40 −15 nix/default.nix
  257. +9 −9 nix/sources.json
  258. +20 −2 nix/sources.nix
  259. +0 −170 patches/datafusion-macos.patch
  260. +0 −12 patches/templates.patch
  261. +0 −13 patches/watchdog-force-kqueue.patch
  262. +39 −32 poetry-overrides.nix
  263. +1,262 −1,160 poetry.lock
  264. +23 −33 pyproject.toml
  265. +192 −0 requirements.txt
  266. +19 −22 setup.py
  267. +39 −54 shell.nix
2 changes: 1 addition & 1 deletion .commitlintrc.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"rules": {
"body-leading-blank": [1, "always"],
"body-max-line-length": [2, "always", 100],
"body-max-line-length": [2, "always", 200],
"footer-leading-blank": [1, "always"],
"footer-max-line-length": [2, "always", 100],
"header-max-length": [2, "always", 100],
Expand Down
1 change: 0 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ ignore_errors = True
omit =
*_version.py
*tests*
*__init__*
22 changes: 19 additions & 3 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
# convert imports to absolute
5332737fefbef3eac1063d93034d7ce87ba1c01b
bb025103420741836cf594aa8163962d03b71b7b
5332737fefbef3eac1063d93034d7ce87ba1c01b # convert imports to absolute
bb025103420741836cf594aa8163962d03b71b7b # convert imports to absolute
5c0895a3cf4b5b96af1b8e5d8630f6a595af2002 # refactor(ir): rename ir.ListExpr -> ir.ValueList
20e3f8d39077829e5c9463e7654408ce27a292d8 # refactor(ir): keep ir.Column instead of both ir.Column and ir.AnyColumn
1fb3a21ab745ecfc915b17b36b57657080ac0344 # refactor(ir): keep ir.Scalar instead of both ir.Scalar and ir.AnyScalar
2aecdc910a4f55e5af9b595b52a900a2409c8c52 # refactor(ir): keep ir.Value instead of both ir.Value and ir.AnyValue
ecc9d173a889ed9b56228ff62a09e5e0fa97d427 # refactor(ir): reorganize ir.Scalar and ir.Column methods
bcd0091c6d38de2615dd52e4438f3ffe32454396 # refactor(ir): rename ir.ColumnExpr -> ir.Column
64416c25aaa91cc9dfc2ab26f72b3766b9bcf9f4 # refactor(ir): rename ir.ScalarExpr -> ir.Scalar
7901860b279cc15ea6ed40a16bc9aa333c0c0879 # refactor(ir): rename ir.ValueExpr -> ir.Value
fa1387ac8d6af8989cccd88ba4bf04d496b5ef3a # refactor(ir): rename ir.ExistsExpr -> ir.Exists
37ee8323e84d94551e2cd390f6dca36b6e1d2b60 # refactor(ir): rename ir.TopKExpr -> ir.TopK
e284a966b7bb32061c2756f9ed0dbc676ae07201 # refactor(ir): rename ir.AnalyticExpr -> ir.Analytic
8a3326e73723ccfc15f6636d5664ad7c76abaa56 # refactor(ir): rename ir.TableExpr -> ir.Table
cd31389542561a94d9d0207e09c9c906c3831fe9 # refactor(ir): rename ops.AnalyticOp -> ops.Analytic
6ecaaed58c0a4e7cf38c1f04c7c2527f9587af90 # refactor(ir): rename ops.WindowOp -> ops.Window
96b5b584b47e67840faa1ea32a3beaa73065039a # refactor(ir): rename ops.BinaryOp -> ops.Binary
2673ac391c89b73fb97bb646eeef898b4d48fe30 # refactor(ir): rename ops.UnaryOp -> ops.Unary
4803894dcff2afced4a1fc651d40b235c862791a # refactor(ir): rename ops.ValueOp -> ops.Value
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ nix/sources.json linguist-generated=true
nix/sources.nix linguist-generated=true
poetry.lock linguist-generated=true
setup.py linguist-generated=true
requirements.txt linguist-generated=true
docs/**/*.ipynb linguist-generated=true
2 changes: 1 addition & 1 deletion .github/renovate.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"rangeStrategy": "widen",
"extends": ["config:base"],
"extends": ["config:base", ":enablePreCommit"],
"schedule": ["after 10pm and before 5am every weekday", "every weekend"],
"semanticCommits": "enabled",
"lockFileMaintenance": { "enabled": true },
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/assign.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.event.comment.body == '/take' }}
steps:
- uses: pozil/auto-assign-issue@v1.4.0
- uses: pozil/auto-assign-issue@v1.8.0
with:
assignees: ${{ github.event.comment.user.login }}
13 changes: 9 additions & 4 deletions .github/workflows/check-generated-files.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
uses: actions/checkout@v3

- name: install python
uses: actions/setup-python@v3
uses: actions/setup-python@v4
id: install_python
with:
python-version: "3.10"
Expand All @@ -66,13 +66,16 @@ jobs:
run: sudo apt-get update -y -q

- name: install system dependencies
run: sudo apt-get install -y -q build-essential graphviz krb5-config libkrb5-dev
run: sudo apt-get install -y -q build-essential graphviz krb5-config libkrb5-dev libgeos-dev

- name: install poetry
run: pip install poetry

- name: generate requirements.txt
run: poetry export --dev --extras all --without-hashes > requirements.txt
run: poetry export --dev --extras all --without-hashes --no-ansi > requirements.txt

- name: check requirements.txt
run: git diff --exit-code requirements.txt

- uses: syphar/restore-virtualenv@v1
with:
Expand Down Expand Up @@ -106,7 +109,7 @@ jobs:
uses: actions/checkout@v3

- name: install python
uses: actions/setup-python@v3
uses: actions/setup-python@v4
with:
python-version: "3.10"

Expand All @@ -115,6 +118,8 @@ jobs:

- name: run poetry lock
run: poetry lock --no-update
env:
PYTHONHASHSEED: "42"

- name: check whether poetry lockfile needs to be updated
run: git diff --exit-code poetry.lock
39 changes: 34 additions & 5 deletions .github/workflows/conda-lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: Generate Conda Lockfiles

on:
schedule:
# At minute 30 past every 24th hour
- cron: "30 */24 * * *"
# At minute 00:30 on Sunday
- cron: "30 0 * * SUN"
workflow_dispatch:
repository_dispatch:
types:
Expand Down Expand Up @@ -42,7 +42,6 @@ jobs:
run: mamba install 'conda-lock <1.0'

- name: generate lock file
continue-on-error: ${{ matrix.python-version == '3.10' }}
run: |
set -euo pipefail
Expand Down Expand Up @@ -85,12 +84,42 @@ jobs:
-e visualization \
--mamba
- name: generate lock file for osx-arm64
continue-on-error: true
run: |
set -euo pipefail
python_version_file="$(mktemp --suffix=.yml)"
{
echo 'name: conda-lock'
echo 'dependencies:'
echo ' - python=${{ matrix.python-version }}'
} > "${python_version_file}"
template='conda-lock/{platform}-${{ matrix.python-version }}.lock'
conda lock \
--kind explicit \
--file pyproject.toml \
--file "${python_version_file}" \
--platform osx-arm64 \
--filename-template "${template}" \
-e dask \
-e datafusion \
-e geospatial \
-e mysql \
-e pandas \
-e postgres \
-e pyspark \
-e sqlite \
-e visualization \
--mamba
- name: create conda environment
continue-on-error: ${{ matrix.python-version == '3.10' }}
run: mamba create --name ibis${{ matrix.python-version }} --file conda-lock/linux-64-${{ matrix.python-version }}.lock

- name: upload conda lock files
continue-on-error: ${{ matrix.python-version == '3.10' }}
uses: actions/upload-artifact@v3
with:
name: conda-lock-files-${{ github.run_attempt }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ibis-backends-skip-helper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ on:
- "docs/**"
branches:
- master
- "*.x.x"
pull_request:
paths:
- "docs/**"
branches:
- master
- "*.x.x"
jobs:
backends:
runs-on: ubuntu-latest
Expand Down
Loading