egglog 8.0.0__tar.gz → 9.0.0__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.

Potentially problematic release.


This version of egglog might be problematic. Click here for more details.

Files changed (155) hide show
  1. {egglog-8.0.0 → egglog-9.0.0}/.github/dependabot.yml +13 -16
  2. {egglog-8.0.0 → egglog-9.0.0}/.github/workflows/CI.yml +34 -20
  3. {egglog-8.0.0 → egglog-9.0.0}/.github/workflows/version.yml +51 -7
  4. {egglog-8.0.0 → egglog-9.0.0}/.gitignore +0 -1
  5. egglog-9.0.0/.pre-commit-config.yaml +13 -0
  6. egglog-9.0.0/.python-version +1 -0
  7. {egglog-8.0.0 → egglog-9.0.0}/.readthedocs.yaml +8 -15
  8. {egglog-8.0.0 → egglog-9.0.0}/Cargo.lock +264 -360
  9. egglog-9.0.0/Cargo.toml +35 -0
  10. {egglog-8.0.0 → egglog-9.0.0}/Makefile +16 -0
  11. {egglog-8.0.0 → egglog-9.0.0}/PKG-INFO +8 -5
  12. {egglog-8.0.0 → egglog-9.0.0}/docs/changelog.md +187 -0
  13. egglog-9.0.0/docs/explanation/2023_07_presentation.ipynb +12102 -0
  14. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2023_11_09_portland_state.ipynb +9 -9
  15. egglog-9.0.0/docs/explanation/2023_11_17_pytensor.ipynb +2530 -0
  16. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2023_11_pydata_lightning_talk.ipynb +12 -14
  17. egglog-9.0.0/docs/explanation/pldi_2023_presentation.ipynb +4930 -0
  18. {egglog-8.0.0 → egglog-9.0.0}/docs/how-to-guides.md +0 -9
  19. {egglog-8.0.0 → egglog-9.0.0}/docs/reference/contributing.md +9 -11
  20. {egglog-8.0.0 → egglog-9.0.0}/docs/reference/egglog-translation.md +10 -3
  21. {egglog-8.0.0 → egglog-9.0.0}/docs/tutorials/getting-started.ipynb +4 -13
  22. egglog-9.0.0/docs/tutorials/sklearn.ipynb +6640 -0
  23. {egglog-8.0.0 → egglog-9.0.0}/pyproject.toml +41 -10
  24. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/__init__.py +1 -1
  25. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/bindings.pyi +218 -124
  26. egglog-9.0.0/python/egglog/builtins.py +1045 -0
  27. egglog-9.0.0/python/egglog/conversion.py +262 -0
  28. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/declarations.py +138 -98
  29. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/egraph.py +506 -626
  30. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/egraph_state.py +147 -76
  31. egglog-9.0.0/python/egglog/examples/bignum.py +31 -0
  32. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/higher_order_functions.py +1 -1
  33. egglog-9.0.0/python/egglog/examples/multiset.py +61 -0
  34. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/exp/array_api.py +730 -344
  35. egglog-9.0.0/python/egglog/exp/array_api_jit.py +44 -0
  36. egglog-9.0.0/python/egglog/exp/array_api_loopnest.py +74 -0
  37. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/exp/array_api_numba.py +8 -11
  38. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/exp/array_api_program_gen.py +67 -67
  39. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/exp/program_gen.py +67 -26
  40. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/exp/siu_examples.py +6 -9
  41. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/functionalize.py +1 -1
  42. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/ipython_magic.py +1 -1
  43. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/pretty.py +20 -28
  44. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/runtime.py +125 -56
  45. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/type_constraint_solver.py +19 -49
  46. egglog-9.0.0/python/egglog/visualizer.css +1 -0
  47. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/visualizer.js +1669 -1645
  48. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/visualizer_widget.py +2 -2
  49. egglog-9.0.0/python/tests/__snapshots__/test_array_api/TestLoopNest.test_index_codegen[code].py +8 -0
  50. egglog-9.0.0/python/tests/__snapshots__/test_array_api/TestLoopNest.test_index_codegen[expr].py +13 -0
  51. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[add][code].py +3 -0
  52. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[add][expr].py +1 -0
  53. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[add][initial_expr].py +1 -0
  54. egglog-8.0.0/python/tests/__snapshots__/test_array_api/TestLDA.test_source_optimized.py → egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[lda][code].py +7 -7
  55. egglog-8.0.0/python/tests/__snapshots__/test_array_api/TestLDA.test_optimize.py → egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[lda][expr].py +23 -10
  56. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[lda][initial_expr].py +112 -0
  57. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[tuple][code].py +2 -0
  58. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[tuple][expr].py +1 -0
  59. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_jit[tuple][initial_expr].py +1 -0
  60. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_program_compile[tuple][code].py +2 -0
  61. egglog-9.0.0/python/tests/__snapshots__/test_array_api/test_program_compile[tuple][expr].py +1 -0
  62. {egglog-8.0.0 → egglog-9.0.0}/python/tests/__snapshots__/test_bindings/TestEGraph.test_parse_program.py +69 -13
  63. egglog-9.0.0/python/tests/__snapshots__/test_program_gen/test_to_string_function_three.py +8 -0
  64. {egglog-8.0.0 → egglog-9.0.0}/python/tests/conftest.py +3 -3
  65. egglog-9.0.0/python/tests/test_array_api.py +381 -0
  66. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_bindings.py +25 -48
  67. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_convert.py +66 -10
  68. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_high_level.py +149 -61
  69. egglog-9.0.0/python/tests/test_no_import_star.py +12 -0
  70. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_pretty.py +17 -1
  71. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_program_gen.py +28 -10
  72. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_py_object_sort.py +21 -10
  73. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_runtime.py +3 -3
  74. egglog-9.0.0/python/tests/test_type_constraint_solver.py +53 -0
  75. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_typing.py +1 -1
  76. egglog-9.0.0/rust-toolchain.toml +2 -0
  77. {egglog-8.0.0 → egglog-9.0.0}/src/conversions.rs +168 -136
  78. egglog-9.0.0/src/egraph.rs +136 -0
  79. {egglog-8.0.0 → egglog-9.0.0}/src/error.rs +8 -0
  80. egglog-9.0.0/src/lib.rs +26 -0
  81. {egglog-8.0.0 → egglog-9.0.0}/src/py_object_sort.rs +143 -62
  82. {egglog-8.0.0 → egglog-9.0.0}/src/serialize.rs +2 -2
  83. egglog-9.0.0/src/termdag.rs +107 -0
  84. {egglog-8.0.0 → egglog-9.0.0}/src/utils.rs +26 -24
  85. {egglog-8.0.0 → egglog-9.0.0}/stubtest_allow +2 -1
  86. {egglog-8.0.0 → egglog-9.0.0}/test-data/unit/check-high-level.test +4 -4
  87. egglog-9.0.0/uv.lock +3274 -0
  88. egglog-8.0.0/.pre-commit-config.yaml +0 -39
  89. egglog-8.0.0/Cargo.toml +0 -42
  90. egglog-8.0.0/docs/explanation/2023_07_presentation.ipynb +0 -12126
  91. egglog-8.0.0/docs/explanation/2023_11_17_pytensor.ipynb +0 -2552
  92. egglog-8.0.0/docs/explanation/pldi_2023_presentation.ipynb +0 -4951
  93. egglog-8.0.0/docs/tutorials/sklearn.ipynb +0 -6639
  94. egglog-8.0.0/python/egglog/builtins.py +0 -546
  95. egglog-8.0.0/python/egglog/conversion.py +0 -200
  96. egglog-8.0.0/python/egglog/exp/array_api_jit.py +0 -34
  97. egglog-8.0.0/python/egglog/exp/array_api_loopnest.py +0 -145
  98. egglog-8.0.0/python/egglog/visualizer.css +0 -1
  99. egglog-8.0.0/python/tests/__init__.py +0 -1
  100. egglog-8.0.0/python/tests/__snapshots__/test_array_api/TestLDA.test_trace.py +0 -77
  101. egglog-8.0.0/python/tests/test_array_api.py +0 -167
  102. egglog-8.0.0/python/tests/test_modules.py +0 -43
  103. egglog-8.0.0/python/tests/test_type_constraint_solver.py +0 -60
  104. egglog-8.0.0/rust-toolchain.toml +0 -2
  105. egglog-8.0.0/src/egraph.rs +0 -219
  106. egglog-8.0.0/src/lib.rs +0 -36
  107. {egglog-8.0.0 → egglog-9.0.0}/CITATION.cff +0 -0
  108. {egglog-8.0.0 → egglog-9.0.0}/LICENSE +0 -0
  109. {egglog-8.0.0 → egglog-9.0.0}/README.md +0 -0
  110. {egglog-8.0.0 → egglog-9.0.0}/conftest.py +0 -0
  111. {egglog-8.0.0 → egglog-9.0.0}/docs/.gitignore +0 -0
  112. {egglog-8.0.0 → egglog-9.0.0}/docs/_templates/comments.html +0 -0
  113. {egglog-8.0.0 → egglog-9.0.0}/docs/conf.py +0 -0
  114. {egglog-8.0.0 → egglog-9.0.0}/docs/environment.yml +0 -0
  115. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/.gitignore +0 -0
  116. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2023_12_02_congruence_closure-1.png +0 -0
  117. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2023_12_02_congruence_closure-2.png +0 -0
  118. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2023_12_02_congruence_closure.md +0 -0
  119. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2024_03_17_community_talk.ipynb +0 -0
  120. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/2024_03_17_map.svg +0 -0
  121. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/big_graph.svg +0 -0
  122. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/define_and_define.md +0 -0
  123. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/ecosystem-graph.png +0 -0
  124. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/egg.png +0 -0
  125. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/indexing_pushdown.ipynb +0 -0
  126. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/moa.png +0 -0
  127. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation/optional_values.md +0 -0
  128. {egglog-8.0.0 → egglog-9.0.0}/docs/explanation.md +0 -0
  129. {egglog-8.0.0 → egglog-9.0.0}/docs/index.md +0 -0
  130. {egglog-8.0.0 → egglog-9.0.0}/docs/reference/bindings.md +0 -0
  131. {egglog-8.0.0 → egglog-9.0.0}/docs/reference/high-level.md +0 -0
  132. {egglog-8.0.0 → egglog-9.0.0}/docs/reference/python-integration.md +0 -0
  133. {egglog-8.0.0 → egglog-9.0.0}/docs/reference/usage.md +0 -0
  134. {egglog-8.0.0 → egglog-9.0.0}/docs/reference.md +0 -0
  135. {egglog-8.0.0 → egglog-9.0.0}/docs/tutorials/screenshot-1.png +0 -0
  136. {egglog-8.0.0 → egglog-9.0.0}/docs/tutorials/screenshot-2.png +0 -0
  137. {egglog-8.0.0 → egglog-9.0.0}/docs/tutorials.md +0 -0
  138. {egglog-8.0.0 → egglog-9.0.0}/increment_version.py +0 -0
  139. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/config.py +0 -0
  140. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/README.rst +0 -0
  141. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/__init__.py +0 -0
  142. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/bool.py +0 -0
  143. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/eqsat_basic.py +0 -0
  144. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/fib.py +0 -0
  145. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/lambda_.py +0 -0
  146. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/matrix.py +0 -0
  147. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/ndarrays.py +0 -0
  148. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/resolution.py +0 -0
  149. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/examples/schedule_demo.py +0 -0
  150. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/exp/__init__.py +0 -0
  151. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/py.typed +0 -0
  152. {egglog-8.0.0 → egglog-9.0.0}/python/egglog/thunk.py +0 -0
  153. {egglog-8.0.0 → egglog-9.0.0}/python/tests/__snapshots__/test_program_gen/test_to_string.py +0 -0
  154. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_functionalize.py +0 -0
  155. {egglog-8.0.0 → egglog-9.0.0}/python/tests/test_unstable_fn.py +0 -0
@@ -8,27 +8,24 @@ updates:
8
8
  - package-ecosystem: "cargo"
9
9
  directory: "/"
10
10
  schedule:
11
- interval: "weekly"
11
+ interval: "daily"
12
12
  groups:
13
- rust-production:
14
- dependency-type: "production"
15
- rust-development:
16
- dependency-type: "development"
13
+ rust:
14
+ patterns:
15
+ - "*"
17
16
  - package-ecosystem: "github-actions"
18
17
  directory: "/"
19
18
  schedule:
20
- interval: "weekly"
19
+ interval: "daily"
21
20
  groups:
22
- actions-production:
23
- dependency-type: "production"
24
- actions-development:
25
- dependency-type: "development"
26
- - package-ecosystem: "pip"
21
+ actions:
22
+ patterns:
23
+ - "*"
24
+ - package-ecosystem: "uv"
27
25
  directory: "/"
28
26
  schedule:
29
- interval: "weekly"
27
+ interval: "daily"
30
28
  groups:
31
- python-production:
32
- dependency-type: "production"
33
- python-development:
34
- dependency-type: "development"
29
+ python:
30
+ patterns:
31
+ - "*"
@@ -20,61 +20,75 @@ jobs:
20
20
  fail-fast: false
21
21
  matrix:
22
22
  py:
23
+ - "3.13"
23
24
  - "3.12"
24
25
  - "3.11"
25
26
  - "3.10"
26
27
  steps:
27
28
  - uses: actions/checkout@v4
28
- - uses: dtolnay/rust-toolchain@1.71.1
29
+ - uses: astral-sh/setup-uv@v5
30
+ with:
31
+ enable-cache: true
32
+ - uses: dtolnay/rust-toolchain@1.79.0
29
33
  - uses: Swatinem/rust-cache@v2
30
34
  - name: Setup python ${{ matrix.py }}
31
35
  uses: actions/setup-python@v5
32
36
  with:
33
37
  python-version: ${{ matrix.py }}
34
- cache: "pip"
35
- - run: pip install -e .[test]
36
- - run: pytest --benchmark-disable -vvv
38
+ - run: uv sync --extra test --locked
39
+ - run: uv run pytest --benchmark-disable -vvv --durations=10
40
+
37
41
  mypy:
38
42
  runs-on: ubuntu-latest
39
43
  steps:
40
44
  - uses: actions/checkout@v4
41
- - uses: dtolnay/rust-toolchain@1.71.1
45
+ - uses: astral-sh/setup-uv@v5
46
+ with:
47
+ enable-cache: true
48
+ - uses: dtolnay/rust-toolchain@1.79.0
42
49
  - uses: Swatinem/rust-cache@v2
43
50
  - uses: actions/setup-python@v5
44
51
  with:
52
+ # Run on oldest Python version to catch more errors
45
53
  python-version: "3.10"
46
- cache: "pip"
47
- - run: pip install -e .[test] mypy pre-commit
48
- - run: pre-commit run --hook-stage manual --all-files mypy
49
- - run: pre-commit run --hook-stage manual --all-files stubtest
54
+ - run: uv sync --extra test --locked
55
+ - run: make mypy
56
+ - run: make stubtest
57
+
50
58
  benchmark:
51
59
  runs-on: ubuntu-latest
52
60
  steps:
53
61
  - uses: actions/checkout@v4
54
- - uses: dtolnay/rust-toolchain@1.71.1
62
+ - uses: astral-sh/setup-uv@v5
63
+ with:
64
+ enable-cache: true
65
+ - uses: dtolnay/rust-toolchain@1.79.0
55
66
  - uses: Swatinem/rust-cache@v2
56
67
  - uses: actions/setup-python@v5
57
68
  with:
58
- python-version: "3.12"
59
- cache: "pip"
60
- - run: pip install -e .[test]
61
- - uses: CodSpeedHQ/action@v2
69
+ python-version-file: ".python-version"
70
+ - run: uv sync --extra test --locked
71
+ - uses: CodSpeedHQ/action@v3
62
72
  with:
63
73
  token: ${{ secrets.CODSPEED_TOKEN }}
64
- run: pytest -vvv -n auto
74
+ # allow updating snapshots due to indeterministic benchmarks
75
+ run: uv run pytest -vvv -n auto --snapshot-update
76
+
65
77
  docs:
66
78
  runs-on: ubuntu-latest
67
79
  steps:
68
80
  - uses: actions/checkout@v4
69
- - uses: dtolnay/rust-toolchain@1.71.1
81
+ - uses: astral-sh/setup-uv@v5
82
+ with:
83
+ enable-cache: true
84
+ - uses: dtolnay/rust-toolchain@1.79.0
70
85
  - uses: Swatinem/rust-cache@v2
71
86
  - uses: actions/setup-python@v5
72
87
  with:
73
- python-version: "3.10"
74
- cache: "pip"
88
+ python-version-file: ".python-version"
75
89
  - name: Install graphviz
76
90
  run: |
77
91
  sudo apt-get update
78
92
  sudo apt-get install -y graphviz
79
- - run: pip install -e .[docs] pre-commit
80
- - run: pre-commit run --hook-stage manual --all-files docs
93
+ - run: uv sync --extra docs --locked
94
+ - run: make docs
@@ -11,6 +11,10 @@
11
11
  # This seperates the release process from the test process, so we can still release if we need to and tests are failing
12
12
  name: Bump Version
13
13
  on:
14
+ push:
15
+ branches:
16
+ - main
17
+ pull_request:
14
18
  workflow_dispatch:
15
19
  inputs:
16
20
  type:
@@ -27,6 +31,7 @@ jobs:
27
31
  bump:
28
32
  runs-on: ubuntu-latest
29
33
  permissions: write-all
34
+ if: github.event_name == 'workflow_dispatch'
30
35
  outputs:
31
36
  version: ${{ steps.bump.outputs.version }}
32
37
  steps:
@@ -45,17 +50,48 @@ jobs:
45
50
  TYPE: ${{ inputs.type }}
46
51
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47
52
 
53
+ linux-cross:
54
+ name: build linux
55
+ runs-on: ubuntu-latest
56
+ strategy:
57
+ matrix:
58
+ target: [aarch64, ppc64]
59
+ needs: [bump]
60
+ if: ${{ always() }}
61
+ steps:
62
+ - uses: actions/checkout@v4
63
+ if: ${{ needs.bump.result == 'success' }}
64
+ with:
65
+ ref: version-${{ needs.bump.outputs.version }}
66
+ - uses: actions/checkout@v4
67
+ if: ${{ needs.bump.result == 'skipped' }}
68
+ - uses: PyO3/maturin-action@v1.47.3
69
+ with:
70
+ target: ${{ matrix.target }}
71
+ manylinux: auto
72
+ command: build
73
+ args: --release --sdist -o dist --find-interpreter
74
+ - name: Upload wheels
75
+ uses: actions/upload-artifact@v4
76
+ with:
77
+ name: wheels-linux-${{ matrix.target }}
78
+ path: dist
79
+
48
80
  linux:
49
81
  name: build linux
50
82
  runs-on: ubuntu-latest
51
83
  needs: [bump]
84
+ if: ${{ always() }}
52
85
  steps:
53
86
  - uses: actions/checkout@v4
87
+ if: ${{ needs.bump.result == 'success' }}
54
88
  with:
55
89
  ref: version-${{ needs.bump.outputs.version }}
90
+ - uses: actions/checkout@v4
91
+ if: ${{ needs.bump.result == 'skipped' }}
56
92
  - name: Setup QEMU
57
- uses: docker/setup-qemu-action@v1
58
- - uses: PyO3/maturin-action@v1.42.1
93
+ uses: docker/setup-qemu-action@v3
94
+ - uses: PyO3/maturin-action@v1.47.3
59
95
  with:
60
96
  manylinux: auto
61
97
  command: build
@@ -70,11 +106,15 @@ jobs:
70
106
  name: build windows
71
107
  runs-on: windows-latest
72
108
  needs: [bump]
109
+ if: ${{ always() }}
73
110
  steps:
74
111
  - uses: actions/checkout@v4
112
+ if: ${{ needs.bump.result == 'success' }}
75
113
  with:
76
114
  ref: version-${{ needs.bump.outputs.version }}
77
- - uses: PyO3/maturin-action@v1.42.1
115
+ - uses: actions/checkout@v4
116
+ if: ${{ needs.bump.result == 'skipped' }}
117
+ - uses: PyO3/maturin-action@v1.47.3
78
118
  with:
79
119
  command: build
80
120
  args: --release -o dist --find-interpreter
@@ -88,11 +128,15 @@ jobs:
88
128
  name: build macos
89
129
  runs-on: macos-latest
90
130
  needs: [bump]
131
+ if: ${{ always() }}
91
132
  steps:
92
133
  - uses: actions/checkout@v4
134
+ if: ${{ needs.bump.result == 'success' }}
93
135
  with:
94
136
  ref: version-${{ needs.bump.outputs.version }}
95
- - uses: PyO3/maturin-action@v1.42.1
137
+ - uses: actions/checkout@v4
138
+ if: ${{ needs.bump.result == 'skipped' }}
139
+ - uses: PyO3/maturin-action@v1.47.3
96
140
  with:
97
141
  command: build
98
142
  target: universal2-apple-darwin
@@ -107,14 +151,14 @@ jobs:
107
151
  name: Release
108
152
  runs-on: ubuntu-latest
109
153
  if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch')
110
- needs: [macos, windows, linux]
154
+ needs: [macos, windows, linux, linux-cross, bump]
111
155
  steps:
112
156
  - uses: actions/download-artifact@v4
113
157
  with:
114
158
  pattern: wheels-*
115
159
  merge-multiple: true
116
160
  - name: Publish to PyPI
117
- uses: PyO3/maturin-action@v1.42.1
161
+ uses: PyO3/maturin-action@v1.47.3
118
162
  env:
119
163
  MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
120
164
  with:
@@ -131,7 +175,7 @@ jobs:
131
175
  - run: |
132
176
  git tag "v$VERSION"
133
177
  git push --tags
134
- gh pr merge --admin --delete-branch --merge
178
+ gh pr merge --delete-branch --merge --auto
135
179
  env:
136
180
  VERSION: ${{ needs.bump.outputs.version }}
137
181
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -69,7 +69,6 @@ docs/_build/
69
69
  .vscode/
70
70
 
71
71
  # Pyenv
72
- .python-version
73
72
 
74
73
  TODO
75
74
  *.code-workspace
@@ -0,0 +1,13 @@
1
+ exclude: ^python/tests/__snapshots__/
2
+ repos:
3
+ - repo: https://github.com/astral-sh/ruff-pre-commit
4
+ rev: v0.11.0
5
+ hooks:
6
+ - id: ruff
7
+ args: [--fix, --exit-non-zero-on-fix]
8
+ - id: ruff-format
9
+ - repo: https://github.com/astral-sh/uv-pre-commit
10
+ # uv version.
11
+ rev: 0.6.8
12
+ hooks:
13
+ - id: uv-lock
@@ -0,0 +1 @@
1
+ 3.12
@@ -12,24 +12,17 @@ build:
12
12
  python: "3.12"
13
13
  # # You can also specify other tool versions:
14
14
  # # nodejs: "16"
15
- rust: "1.70"
15
+ rust: "1.78"
16
16
  # golang: "1.17"
17
17
  apt_packages:
18
18
  - graphviz
19
+ commands:
20
+ - asdf plugin add uv
21
+ - asdf install uv latest
22
+ - asdf global uv latest
23
+ - uv sync --extra docs --frozen
24
+ - uv run -m sphinx -T -b html -d docs/_build/doctrees -D language=en docs $READTHEDOCS_OUTPUT/html
25
+
19
26
  # Build documentation in the docs/ directory with Sphinx
20
27
  sphinx:
21
28
  configuration: docs/conf.py
22
-
23
- # If using Sphinx, optionally build your docs in additional formats such as PDF
24
- # formats:
25
- # - pdf
26
-
27
- # Optionally declare the Python requirements required to build your docs
28
- python:
29
- install:
30
- - method: pip
31
- path: .
32
- extra_requirements:
33
- - docs
34
- # conda:
35
- # environment: docs/environment.yml