Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
fc85e35
Don't build/release on push, only on release.
Sep 11, 2025
74ddf1a
Update copyright.
Oct 15, 2025
e02a07a
Separate out the unit tests from one file to files organized by what …
Jan 12, 2026
1d94254
If they try to parse an empty string as a loop, raise an exception. A…
Jan 12, 2026
933498d
Improve typing of the loop iterator.
Jan 12, 2026
c901aa6
Improve a comment in the parser to call out a clause that we don't ev…
Jan 12, 2026
7d23c05
Get test coverage on the parser as close to 100% as is practical. Wil…
Jan 12, 2026
8500190
Remove a leftover clause in the parser which could never trigger.
Jan 12, 2026
141fb04
Remove support for EOL python3.8 and add support for new python3.14.
Jan 12, 2026
5ce28f7
Implement the parser in rust.
Jan 13, 2026
97ecc66
Parser file cleanup
Jan 13, 2026
d75f16d
Switch over to a pure rust implementation. At the moment a few tests …
Jan 13, 2026
56ea6ae
All tests passing.
Jan 13, 2026
68eb103
Disable a test which isn't usable anymore now that we aren't fetching…
Jan 13, 2026
a956d01
Update parser to no longer be a class, just a function.
Jan 13, 2026
af6d773
Multiple performance improvements in the rust code.
Jan 13, 2026
21361a4
Batch calling add_tags and add_tag from the parser to reduce the numb…
Jan 13, 2026
bc8184c
Cache references to the saveframe and loop class to avoid needing to …
Jan 13, 2026
106714c
Speed up search for next quote or \n; string.
Jan 13, 2026
a9d13a3
Don't convert the strings to lowercase over and over again when check…
Jan 13, 2026
1212afe
Move import
Jan 13, 2026
4483e49
Re-use dictionaries for kwargs passed into python to reduce number of…
Jan 13, 2026
dc2b3b5
Minor code cleanup.
Jan 13, 2026
2218bae
Add a cargo related ignore
Jan 13, 2026
69dcc0c
Another big speed up by avoiding copying/reallocating strings.
Jan 13, 2026
bf36fbc
Store tokens as an index into a source rather than their own strings,…
Jan 13, 2026
6d02d72
Add Cargo.toml file.
Jan 13, 2026
f48deae
Fix compile warnings in rust.
Jan 13, 2026
176160f
Support multiple python threads parsing at the same time. !
Jan 13, 2026
1d254a3
Replace regex to fix the improper multiline values with a local, slig…
Jan 13, 2026
972a932
Speed up value quoting
Jan 13, 2026
f7f6610
Remove C extension!
Jan 13, 2026
18ccdcf
Remove setup.py, just use pyproject. Update it to use maturin to do t…
Jan 13, 2026
377ff6e
Significantly speed up rendering a loop to str by using a rust implem…
Jan 13, 2026
792bc19
As the logic to check the conversion dict is already present in the r…
Jan 13, 2026
3ebc563
Remove python3.14 from CI until PyO3 updates to support it.
Jan 13, 2026
6898044
Restore python3.14 support, and update version of pyO3 used.
Jan 13, 2026
17c4a91
Remove two old orphan references to cnmrstar.
Jan 14, 2026
bef0488
Fix compile warnings introduced by updating to a newer version of PyO3
Jan 14, 2026
f798ece
Attempt to fix build error in CI pipeline
Jan 14, 2026
09e4d4d
Restore support for python3.8 as it is still commonly used and can ea…
Jan 14, 2026
3aa093e
Bump version number to 3.4 and add release notes.
Jan 14, 2026
2228bd9
Remove quote_value from utils.py as we can just directly call the quo…
Jan 14, 2026
ac045d2
Revert "Remove quote_value from utils.py as we can just directly call…
Jan 14, 2026
2744464
Let's not deprecate the function in case someone is using it. Instead…
Jan 14, 2026
c5f576f
Typo fix.
Jan 14, 2026
643582e
Break rust code into separate files.
Jan 14, 2026
c17d165
Switch the __str__ function of a saveframe to also use a rust acceler…
Jan 14, 2026
c1751e7
Switch release to 3.4.0b1 to reflect beta nature of the big change.
Jan 14, 2026
bc4454a
macos-13 is retired. Update to macos-15 and add the intel target too.
Jan 14, 2026
faaacf8
Added MACOSX_DEPLOYMENT_TARGET=10.12 to the macOS environment. This t…
Jan 14, 2026
ebf5ace
PyO3 doesn't support 32 bit systems.
Jan 14, 2026
ac10517
Move the version to the pyproject.toml file and update the cargo toml…
Jan 14, 2026
47e791e
Minor bump to MACOSX_DEPLOYMENT_TARGET minimum since 10.15 is the low…
Jan 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 7 additions & 19 deletions .github/workflows/continous_integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
python-version: [ '3.11', '3.12', '3.13' ]
python-version: [ '3.11', '3.12', '3.13', '3.14' ]
include:
- os: ubuntu-22.04
python-version: '3.10'
Expand Down Expand Up @@ -43,23 +43,11 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies for pypy3
if: ${{ matrix.python-version == 'pypy3' }}
run: pypy3 -m pip install -e .
- name: Install dependencies for CPython
if: ${{ matrix.python-version != 'pypy3' }}
- name: Set up Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: false
- name: Install package
run: python3 -m pip install -e .
- name: Build c extension for pypy3
if: ${{ matrix.python-version == 'pypy3' }}
run: pypy3 -m pip install ./c
- name: Build c extension for Cpython
if: ${{ matrix.python-version != 'pypy3' }}
run: python3 -m pip install ./c
- name: Run tests using Cpython
if: ${{ matrix.python-version != 'pypy3' }}
- name: Run tests
run: python3 -m pynmrstar.unit_tests
- name: Run tests using Pypy
if: ${{ matrix.python-version == 'pypy3' }}
run: pypy3 -m pynmrstar.unit_tests
#- name: Launch interactive debug
# uses: mxschmitt/action-tmate@v3
17 changes: 12 additions & 5 deletions .github/workflows/manylinux_wheel_builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ name: Build and upload to PyPI
on:
workflow_dispatch:
pull_request:
push:
branches:
- v3
release:
types:
- published
Expand All @@ -16,17 +13,27 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# macos-13 is an intel runner, macos-14 is apple silicon
os: [ubuntu-latest, windows-latest, macos-13, macos-14]
os: [ubuntu-latest, windows-latest, macos-15, macos-15-intel]

steps:
- uses: actions/checkout@v4

- name: Set up Rust
uses: actions-rust-lang/setup-rust-toolchain@v1

- name: Build wheels
uses: pypa/cibuildwheel@v2.23.3
env:
# Skip PyPy versions below 3.11 (PyO3 requirement) and 32-bit Linux (Rust unsupported)
CIBW_SKIP: "pp37-* pp38-* pp39-* pp310-* *-musllinux_i686 *-manylinux_i686"
# Ensure cibuildwheel uses PEP 517 build
CIBW_BUILD_FRONTEND: "build"
# Install Rust in the cibuildwheel environment
CIBW_BEFORE_ALL_LINUX: "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y && source $HOME/.cargo/env"
CIBW_BEFORE_ALL_MACOS: "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y && source $HOME/.cargo/env"
CIBW_BEFORE_ALL_WINDOWS: "rustup default stable"
CIBW_ENVIRONMENT_LINUX: 'PATH="$HOME/.cargo/bin:$PATH"'
CIBW_ENVIRONMENT_MACOS: 'PATH="$HOME/.cargo/bin:$PATH" MACOSX_DEPLOYMENT_TARGET=10.15'

- uses: actions/upload-artifact@v4
with:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ coverage.xml
*,cover
.hypothesis/

# Rust
Cargo.lock

# Translations
*.mo
*.pot
Expand Down
12 changes: 12 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[package]
name = "pynmrstar_parser"
version = "0.0.0"
edition = "2021"

[lib]
name = "pynmrstar_parser"
crate-type = ["cdylib"]

[dependencies]
pyo3 = { version = "0.27", features = ["extension-module"] }
memchr = "2"
6 changes: 0 additions & 6 deletions c/Makefile

This file was deleted.

Loading
Loading