seqfold 0.9.0__tar.gz → 0.10.2__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.
Files changed (58) hide show
  1. seqfold-0.10.2/.github/workflows/release.yml +309 -0
  2. seqfold-0.10.2/.gitignore +147 -0
  3. seqfold-0.10.2/Cargo.lock +191 -0
  4. seqfold-0.10.2/Cargo.toml +34 -0
  5. seqfold-0.10.2/DEVELOPMENT.md +130 -0
  6. seqfold-0.10.2/Makefile +32 -0
  7. {seqfold-0.9.0 → seqfold-0.10.2}/PKG-INFO +17 -32
  8. {seqfold-0.9.0 → seqfold-0.10.2}/README.md +4 -9
  9. seqfold-0.10.2/codegen/gen_data.py +84 -0
  10. seqfold-0.10.2/data/README.md +7 -0
  11. seqfold-0.10.2/data/_rna.py +237 -0
  12. seqfold-0.10.2/data/rna.dangle.dh.txt +89 -0
  13. seqfold-0.10.2/data/rna.dangle.txt +89 -0
  14. seqfold-0.10.2/data/rna.loop.dh.txt +34 -0
  15. seqfold-0.10.2/data/rna.loop.txt +34 -0
  16. seqfold-0.10.2/data/rna.py.template +10 -0
  17. seqfold-0.10.2/data/rna.stack.dh.txt +74 -0
  18. seqfold-0.10.2/data/rna.stack.txt +74 -0
  19. seqfold-0.10.2/data/rna.tstack.dh.txt +76 -0
  20. seqfold-0.10.2/data/rna.tstack.txt +76 -0
  21. seqfold-0.10.2/examples/README.md +16 -0
  22. seqfold-0.10.2/examples/bench.rs +47 -0
  23. seqfold-0.10.2/examples/dna.csv +9 -0
  24. seqfold-0.10.2/examples/known_structures.fasta +51 -0
  25. seqfold-0.10.2/examples/rna.csv +23 -0
  26. seqfold-0.10.2/pyproject.toml +40 -0
  27. {seqfold-0.9.0 → seqfold-0.10.2/python}/seqfold/__init__.py +21 -3
  28. {seqfold-0.9.0 → seqfold-0.10.2/python}/seqfold/main.py +1 -1
  29. seqfold-0.10.2/scripts/smoke_test.py +84 -0
  30. seqfold-0.10.2/src/core/data.rs +1421 -0
  31. seqfold-0.10.2/src/core/energies.rs +137 -0
  32. seqfold-0.10.2/src/core/fold.rs +936 -0
  33. seqfold-0.10.2/src/core/mod.rs +8 -0
  34. seqfold-0.10.2/src/core/pyfloat.rs +68 -0
  35. seqfold-0.10.2/src/core/tm.rs +279 -0
  36. seqfold-0.10.2/src/lib.rs +10 -0
  37. seqfold-0.10.2/src/python.rs +156 -0
  38. seqfold-0.10.2/tests/cli_test.py +85 -0
  39. {seqfold-0.9.0 → seqfold-0.10.2}/tests/fold_examples.py +1 -1
  40. {seqfold-0.9.0 → seqfold-0.10.2}/tests/fold_test.py +6 -129
  41. seqfold-0.9.0/seqfold/dna.py +0 -505
  42. seqfold-0.9.0/seqfold/fold.py +0 -891
  43. seqfold-0.9.0/seqfold/rna.py +0 -783
  44. seqfold-0.9.0/seqfold/tm.py +0 -299
  45. seqfold-0.9.0/seqfold/types.py +0 -39
  46. seqfold-0.9.0/seqfold.egg-info/PKG-INFO +0 -198
  47. seqfold-0.9.0/seqfold.egg-info/SOURCES.txt +0 -22
  48. seqfold-0.9.0/seqfold.egg-info/dependency_links.txt +0 -1
  49. seqfold-0.9.0/seqfold.egg-info/entry_points.txt +0 -2
  50. seqfold-0.9.0/seqfold.egg-info/not-zip-safe +0 -1
  51. seqfold-0.9.0/seqfold.egg-info/requires.txt +0 -5
  52. seqfold-0.9.0/seqfold.egg-info/top_level.txt +0 -2
  53. seqfold-0.9.0/setup.cfg +0 -4
  54. seqfold-0.9.0/setup.py +0 -32
  55. {seqfold-0.9.0 → seqfold-0.10.2}/LICENSE +0 -0
  56. {seqfold-0.9.0 → seqfold-0.10.2}/tests/__init__.py +0 -0
  57. {seqfold-0.9.0 → seqfold-0.10.2}/tests/fold_profile.py +0 -0
  58. {seqfold-0.9.0 → seqfold-0.10.2}/tests/tm_test.py +0 -0
@@ -0,0 +1,309 @@
1
+ # This file is autogenerated by maturin v1.13.3
2
+ # To update, run
3
+ #
4
+ # maturin generate-ci github --pytest -o .github/workflows/release.yml
5
+ #
6
+ # Builds + tests wheels on every push/PR; publishes to PyPI on tag push.
7
+ name: Release
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - main
13
+ - master
14
+ pull_request:
15
+ # Publishing a GitHub Release is the single source of truth for a release:
16
+ # the version is taken from the release tag and the wheels go to PyPI.
17
+ release:
18
+ types: [published]
19
+ workflow_dispatch:
20
+
21
+ permissions:
22
+ contents: read
23
+
24
+ jobs:
25
+ linux:
26
+ runs-on: ${{ matrix.platform.runner }}
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ # Mainstream glibc targets with working test emulation. Other arches
31
+ # (s390x/ppc64le/32-bit) install from the sdist.
32
+ platform:
33
+ - runner: ubuntu-22.04
34
+ target: x86_64
35
+ - runner: ubuntu-22.04
36
+ target: aarch64
37
+ steps:
38
+ - uses: actions/checkout@v6
39
+ - uses: actions/setup-python@v6
40
+ with:
41
+ python-version: "3.13"
42
+ - name: Set version from release tag
43
+ if: github.event_name == 'release'
44
+ shell: bash
45
+ env:
46
+ TAG: ${{ github.event.release.tag_name }}
47
+ run: |
48
+ V="${TAG#v}" # strip an optional leading "v"
49
+ sed -i.bak "s/^version = .*/version = \"$V\"/" Cargo.toml && rm -f Cargo.toml.bak
50
+ echo "building seqfold $V"
51
+ - name: Build wheels
52
+ uses: PyO3/maturin-action@v1
53
+ with:
54
+ target: ${{ matrix.platform.target }}
55
+ args: --release --out dist
56
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
57
+ manylinux: auto
58
+ - name: Upload wheels
59
+ uses: actions/upload-artifact@v6
60
+ with:
61
+ name: wheels-linux-${{ matrix.platform.target }}
62
+ path: dist
63
+ - uses: astral-sh/setup-uv@v7
64
+ if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
65
+ - name: pytest
66
+ if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
67
+ shell: bash
68
+ run: |
69
+ set -e
70
+ uv venv .venv
71
+ source .venv/bin/activate
72
+ uv pip install seqfold --no-index --no-deps --find-links dist --reinstall
73
+ uv pip install seqfold pytest
74
+ pytest
75
+ - name: pytest
76
+ if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }}
77
+ uses: uraimo/run-on-arch-action@v3
78
+ with:
79
+ arch: ${{ matrix.platform.target }}
80
+ # ubuntu22.04 provides the aarch64 image used to run the emulated tests.
81
+ distro: ubuntu22.04
82
+ githubToken: ${{ github.token }}
83
+ install: |
84
+ apt-get update
85
+ apt-get install -y --no-install-recommends python3 python3-venv
86
+ run: |
87
+ set -e
88
+ python3 -m venv .venv
89
+ source .venv/bin/activate
90
+ pip install pytest
91
+ pip install seqfold --no-index --no-deps --find-links dist --force-reinstall
92
+ pip install seqfold
93
+ pytest
94
+
95
+ musllinux:
96
+ runs-on: ${{ matrix.platform.runner }}
97
+ strategy:
98
+ fail-fast: false
99
+ matrix:
100
+ platform:
101
+ - runner: ubuntu-22.04
102
+ target: x86_64
103
+ - runner: ubuntu-22.04
104
+ target: aarch64
105
+ steps:
106
+ - uses: actions/checkout@v6
107
+ - uses: actions/setup-python@v6
108
+ with:
109
+ python-version: "3.13"
110
+ - name: Set version from release tag
111
+ if: github.event_name == 'release'
112
+ shell: bash
113
+ env:
114
+ TAG: ${{ github.event.release.tag_name }}
115
+ run: |
116
+ V="${TAG#v}" # strip an optional leading "v"
117
+ sed -i.bak "s/^version = .*/version = \"$V\"/" Cargo.toml && rm -f Cargo.toml.bak
118
+ echo "building seqfold $V"
119
+ - name: Build wheels
120
+ uses: PyO3/maturin-action@v1
121
+ with:
122
+ target: ${{ matrix.platform.target }}
123
+ args: --release --out dist
124
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
125
+ manylinux: musllinux_1_2
126
+ - name: Upload wheels
127
+ uses: actions/upload-artifact@v6
128
+ with:
129
+ name: wheels-musllinux-${{ matrix.platform.target }}
130
+ path: dist
131
+ - name: pytest
132
+ if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
133
+ run: |
134
+ set -e
135
+ docker run --rm -v ${{ github.workspace }}:/io -w /io alpine:latest sh -c '
136
+ apk add py3-pip py3-virtualenv
137
+ python3 -m virtualenv .venv
138
+ source .venv/bin/activate
139
+ pip install seqfold --no-index --no-deps --find-links dist --force-reinstall
140
+ pip install seqfold pytest
141
+ pytest
142
+ '
143
+ - name: pytest
144
+ if: ${{ !startsWith(matrix.platform.target, 'x86') }}
145
+ uses: uraimo/run-on-arch-action@v3
146
+ with:
147
+ arch: ${{ matrix.platform.target }}
148
+ distro: alpine_latest
149
+ githubToken: ${{ github.token }}
150
+ install: |
151
+ apk add py3-virtualenv
152
+ run: |
153
+ set -e
154
+ python3 -m virtualenv .venv
155
+ source .venv/bin/activate
156
+ pip install seqfold --no-index --no-deps --find-links dist --force-reinstall
157
+ pip install seqfold pytest
158
+ pytest
159
+
160
+ windows:
161
+ runs-on: ${{ matrix.platform.runner }}
162
+ strategy:
163
+ fail-fast: false
164
+ matrix:
165
+ # 32-bit Windows (x86) is dropped: setup-python can't reliably provide
166
+ # 32-bit CPython 3.13, and it's a legacy target with ~no users. Those
167
+ # install from the sdist.
168
+ platform:
169
+ - runner: windows-2025
170
+ target: x64
171
+ python_arch: x64
172
+ - runner: windows-11-arm
173
+ target: aarch64
174
+ python_arch: arm64
175
+ steps:
176
+ - uses: actions/checkout@v6
177
+ - uses: actions/setup-python@v6
178
+ with:
179
+ python-version: "3.13"
180
+ architecture: ${{ matrix.platform.python_arch }}
181
+ - name: Set version from release tag
182
+ if: github.event_name == 'release'
183
+ shell: bash
184
+ env:
185
+ TAG: ${{ github.event.release.tag_name }}
186
+ run: |
187
+ V="${TAG#v}" # strip an optional leading "v"
188
+ sed -i.bak "s/^version = .*/version = \"$V\"/" Cargo.toml && rm -f Cargo.toml.bak
189
+ echo "building seqfold $V"
190
+ - name: Build wheels
191
+ uses: PyO3/maturin-action@v1
192
+ with:
193
+ target: ${{ matrix.platform.target }}
194
+ args: --release --out dist
195
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
196
+ - name: Upload wheels
197
+ uses: actions/upload-artifact@v6
198
+ with:
199
+ name: wheels-windows-${{ matrix.platform.target }}
200
+ path: dist
201
+ - uses: astral-sh/setup-uv@v7
202
+ - name: pytest
203
+ shell: bash
204
+ run: |
205
+ set -e
206
+ uv venv .venv
207
+ source .venv/Scripts/activate
208
+ uv pip install seqfold --no-index --no-deps --find-links dist --reinstall
209
+ uv pip install seqfold pytest
210
+ pytest
211
+
212
+ macos:
213
+ runs-on: ${{ matrix.platform.runner }}
214
+ strategy:
215
+ fail-fast: false
216
+ matrix:
217
+ platform:
218
+ - runner: macos-15-intel
219
+ target: x86_64
220
+ - runner: macos-latest
221
+ target: aarch64
222
+ steps:
223
+ - uses: actions/checkout@v6
224
+ - uses: actions/setup-python@v6
225
+ with:
226
+ python-version: "3.13"
227
+ - name: Set version from release tag
228
+ if: github.event_name == 'release'
229
+ shell: bash
230
+ env:
231
+ TAG: ${{ github.event.release.tag_name }}
232
+ run: |
233
+ V="${TAG#v}" # strip an optional leading "v"
234
+ sed -i.bak "s/^version = .*/version = \"$V\"/" Cargo.toml && rm -f Cargo.toml.bak
235
+ echo "building seqfold $V"
236
+ - name: Build wheels
237
+ uses: PyO3/maturin-action@v1
238
+ with:
239
+ target: ${{ matrix.platform.target }}
240
+ args: --release --out dist
241
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
242
+ - name: Upload wheels
243
+ uses: actions/upload-artifact@v6
244
+ with:
245
+ name: wheels-macos-${{ matrix.platform.target }}
246
+ path: dist
247
+ - uses: astral-sh/setup-uv@v7
248
+ - name: pytest
249
+ run: |
250
+ set -e
251
+ uv venv .venv
252
+ source .venv/bin/activate
253
+ uv pip install seqfold --no-index --no-deps --find-links dist --reinstall
254
+ uv pip install seqfold pytest
255
+ pytest
256
+
257
+ sdist:
258
+ runs-on: ubuntu-latest
259
+ steps:
260
+ - uses: actions/checkout@v6
261
+ - name: Set version from release tag
262
+ if: github.event_name == 'release'
263
+ shell: bash
264
+ env:
265
+ TAG: ${{ github.event.release.tag_name }}
266
+ run: |
267
+ V="${TAG#v}" # strip an optional leading "v"
268
+ sed -i.bak "s/^version = .*/version = \"$V\"/" Cargo.toml && rm -f Cargo.toml.bak
269
+ echo "building seqfold $V"
270
+ - name: Build sdist
271
+ uses: PyO3/maturin-action@v1
272
+ with:
273
+ command: sdist
274
+ args: --out dist
275
+ - name: Upload sdist
276
+ uses: actions/upload-artifact@v6
277
+ with:
278
+ name: wheels-sdist
279
+ path: dist
280
+
281
+ release:
282
+ name: Release
283
+ runs-on: ubuntu-latest
284
+ if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }}
285
+ needs: [linux, musllinux, windows, macos, sdist]
286
+ # Dedicated publishing environment. Configure it under repo Settings ->
287
+ # Environments (and name it as the PyPI trusted publisher's "Environment").
288
+ # Add required reviewers there to gate who can actually publish to PyPI.
289
+ environment: pypi
290
+ permissions:
291
+ # Mint the OIDC token PyPI trusted publishing exchanges (no API token).
292
+ id-token: write
293
+ # Used to upload release artifacts
294
+ contents: write
295
+ # Used to generate artifact attestation
296
+ attestations: write
297
+ steps:
298
+ - uses: actions/download-artifact@v7
299
+ - name: Generate artifact attestation
300
+ uses: actions/attest@v4
301
+ with:
302
+ subject-path: 'wheels-*/*'
303
+ - name: Install uv
304
+ if: ${{ github.event_name == 'release' }}
305
+ uses: astral-sh/setup-uv@v7
306
+ # No token: uv uses GitHub OIDC trusted publishing (id-token: write above).
307
+ - name: Publish to PyPI
308
+ if: ${{ github.event_name == 'release' }}
309
+ run: uv publish --trusted-publishing always 'wheels-*/*'
@@ -0,0 +1,147 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+ # vscode settings
132
+ .vscode
133
+
134
+ # .c/.html files during build
135
+ seqfold/*.c
136
+ seqfold/*.html
137
+
138
+ # Rust / maturin build artifacts
139
+ /target
140
+ .venv/
141
+
142
+ # development/test files
143
+ /data/dna
144
+ *.stats
145
+
146
+
147
+ .DS_Store
@@ -0,0 +1,191 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "crossbeam-deque"
7
+ version = "0.8.6"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
10
+ dependencies = [
11
+ "crossbeam-epoch",
12
+ "crossbeam-utils",
13
+ ]
14
+
15
+ [[package]]
16
+ name = "crossbeam-epoch"
17
+ version = "0.9.18"
18
+ source = "registry+https://github.com/rust-lang/crates.io-index"
19
+ checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
20
+ dependencies = [
21
+ "crossbeam-utils",
22
+ ]
23
+
24
+ [[package]]
25
+ name = "crossbeam-utils"
26
+ version = "0.8.21"
27
+ source = "registry+https://github.com/rust-lang/crates.io-index"
28
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
29
+
30
+ [[package]]
31
+ name = "either"
32
+ version = "1.16.0"
33
+ source = "registry+https://github.com/rust-lang/crates.io-index"
34
+ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
35
+
36
+ [[package]]
37
+ name = "heck"
38
+ version = "0.5.0"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
41
+
42
+ [[package]]
43
+ name = "libc"
44
+ version = "0.2.186"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
47
+
48
+ [[package]]
49
+ name = "once_cell"
50
+ version = "1.21.4"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
53
+
54
+ [[package]]
55
+ name = "portable-atomic"
56
+ version = "1.13.1"
57
+ source = "registry+https://github.com/rust-lang/crates.io-index"
58
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
59
+
60
+ [[package]]
61
+ name = "proc-macro2"
62
+ version = "1.0.106"
63
+ source = "registry+https://github.com/rust-lang/crates.io-index"
64
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
65
+ dependencies = [
66
+ "unicode-ident",
67
+ ]
68
+
69
+ [[package]]
70
+ name = "pyo3"
71
+ version = "0.29.0"
72
+ source = "registry+https://github.com/rust-lang/crates.io-index"
73
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
74
+ dependencies = [
75
+ "libc",
76
+ "once_cell",
77
+ "portable-atomic",
78
+ "pyo3-build-config",
79
+ "pyo3-ffi",
80
+ "pyo3-macros",
81
+ ]
82
+
83
+ [[package]]
84
+ name = "pyo3-build-config"
85
+ version = "0.29.0"
86
+ source = "registry+https://github.com/rust-lang/crates.io-index"
87
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
88
+ dependencies = [
89
+ "target-lexicon",
90
+ ]
91
+
92
+ [[package]]
93
+ name = "pyo3-ffi"
94
+ version = "0.29.0"
95
+ source = "registry+https://github.com/rust-lang/crates.io-index"
96
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
97
+ dependencies = [
98
+ "libc",
99
+ "pyo3-build-config",
100
+ ]
101
+
102
+ [[package]]
103
+ name = "pyo3-macros"
104
+ version = "0.29.0"
105
+ source = "registry+https://github.com/rust-lang/crates.io-index"
106
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
107
+ dependencies = [
108
+ "proc-macro2",
109
+ "pyo3-macros-backend",
110
+ "quote",
111
+ "syn",
112
+ ]
113
+
114
+ [[package]]
115
+ name = "pyo3-macros-backend"
116
+ version = "0.29.0"
117
+ source = "registry+https://github.com/rust-lang/crates.io-index"
118
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
119
+ dependencies = [
120
+ "heck",
121
+ "proc-macro2",
122
+ "quote",
123
+ "syn",
124
+ ]
125
+
126
+ [[package]]
127
+ name = "quote"
128
+ version = "1.0.45"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
131
+ dependencies = [
132
+ "proc-macro2",
133
+ ]
134
+
135
+ [[package]]
136
+ name = "rayon"
137
+ version = "1.12.0"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
140
+ dependencies = [
141
+ "either",
142
+ "rayon-core",
143
+ ]
144
+
145
+ [[package]]
146
+ name = "rayon-core"
147
+ version = "1.13.0"
148
+ source = "registry+https://github.com/rust-lang/crates.io-index"
149
+ checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
150
+ dependencies = [
151
+ "crossbeam-deque",
152
+ "crossbeam-utils",
153
+ ]
154
+
155
+ [[package]]
156
+ name = "seqfold"
157
+ version = "0.10.2"
158
+ dependencies = [
159
+ "pyo3",
160
+ "rayon",
161
+ "smallvec",
162
+ ]
163
+
164
+ [[package]]
165
+ name = "smallvec"
166
+ version = "1.15.1"
167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
168
+ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
169
+
170
+ [[package]]
171
+ name = "syn"
172
+ version = "2.0.117"
173
+ source = "registry+https://github.com/rust-lang/crates.io-index"
174
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
175
+ dependencies = [
176
+ "proc-macro2",
177
+ "quote",
178
+ "unicode-ident",
179
+ ]
180
+
181
+ [[package]]
182
+ name = "target-lexicon"
183
+ version = "0.13.5"
184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
185
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
186
+
187
+ [[package]]
188
+ name = "unicode-ident"
189
+ version = "1.0.24"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
@@ -0,0 +1,34 @@
1
+ [package]
2
+ name = "seqfold"
3
+ # Dev default only. Releases take the version from the GitHub Release tag, which
4
+ # the CI injects here before building (see DEVELOPMENT.md). pyproject.toml reads
5
+ # this via `dynamic = ["version"]`.
6
+ version = "0.10.2"
7
+ edition = "2021"
8
+ description = "Predict the minimum free energy structure of nucleic acids"
9
+ license = "MIT"
10
+ repository = "https://github.com/Lattice-Automation/seqfold"
11
+ readme = "README.md"
12
+
13
+ [lib]
14
+ name = "seqfold"
15
+ crate-type = ["cdylib", "rlib"]
16
+
17
+ [features]
18
+ # Enables the PyO3 extension module. Off by default so `cargo test` exercises
19
+ # the pure-Rust engine without linking libpython.
20
+ python = ["dep:pyo3"]
21
+
22
+ [dependencies]
23
+ # abi3-py38: build a single stable-ABI wheel that works on CPython 3.8+,
24
+ # instead of a separate wheel per Python minor version.
25
+ pyo3 = { version = "0.29", features = ["extension-module", "abi3-py38"], optional = true }
26
+ # Data-parallel fill of the DP matrix (one task per cell on each anti-diagonal).
27
+ rayon = "1.10"
28
+ # Inline storage for the small per-cell basepair lists (no heap alloc for the
29
+ # common 0-1 element case).
30
+ smallvec = "1"
31
+
32
+ [profile.release]
33
+ lto = true
34
+ codegen-units = 1