limulus — Data Step for Your Workspace
limulus is a Python library for data processing using Data Step syntax.
Its goal is to bring the simplicity and long-term stability of Data Step into Python workflows.
This is currently an alpha release. Please note that breaking changes to the API and other interfaces may occur before the beta release.
Installation
pip install limulus
Usage
1. Prepare Your Data
Load a DataFrame (Arrow / Polars / Pandas) from a CSV or other source.
import pandas as pd
import limulus
health_df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "David"],
"age": [25, 30, 35, 40],
"height": [65, 70, 68, 72], # inches
"weight": [140, 180, 130, 200] # pounds
})
# Load data into a Session
session = limulus.Session()
session.loads({"health": health_df})
2. Run a Data Step
session.submit("""
data result;
set health;
where age > 25;
height_m = height * 0.0254;
weight_kg = weight * 0.454;
bmi = round(weight_kg / (height_m**2), 0.1);
keep name age bmi;
run;
""")
Multiple Data Steps can be submitted at once. Datasets created by earlier steps can be referenced by subsequent steps.
3. Retrieve Results
The simplest way is to retrieve the result from the session as an Arrow table using subscript notation.
You can convert it to pandas using Arrow's methods.
df_out = session["result"].to_pandas()
print(df_out)
Documentation
https://k-nkmt.github.io/limulus/
License
PolyForm Noncommercial License 1.0.0
This project is distributed under the PolyForm Noncommercial License. Creative Commons licenses are not used because they are generally not recommended for software distribution.
The software may be used for personal, educational, academic, and noncommercial research purposes.
Commercial use is not permitted under the current license terms.
The pip package includes a compiled Rust native extension (limulus_native); Rust dependencies are listed in native/limulus_native/Cargo.toml.
A more permissive license may be considered in the future as the project gains a more stable foundation.
contact: info@knworx.com
Notices
Project Positioning
limulus is a modern data-step–inspired data transformation framework implemented independently in Python and Rust. It is not affiliated with or endorsed by SAS Institute Inc.
Trademark Notice
SAS® is a registered trademark of SAS Institute Inc. All other trademarks are the property of their respective owners.
Independence Statement
This is an independent implementation. No SAS source code or proprietary materials have been used.
Compatibility Disclaimer
Compatibility with SAS software is not guaranteed and is not a project goal. Certain behaviors intentionally differ to provide modern semantics.
Metadata
Release files for limulus 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| limulus-0.6.0.tar.gz | 341.2 kB | Details |
Built distributions (wheels)
Total release size: 69.2 MB
Release files / limulus-0.6.0.tar.gz
| Download URL | limulus-0.6.0.tar.gz |
|---|---|
| Size | 341.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6efc72ed06fd2190ed3ae2a83167e64063dbed905f6092ba5384a990fa2a18a5
|
|
BLAKE2b-256 checksum How to use checksums |
2dc9cfe749fecde6b3dc5bafe24daa3b2df37a50d70cabcbc18b44fb3151814a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp313-cp313-win_amd64.whl
| Download URL | limulus-0.6.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
34ccf2a9e839b1ff6868d134d0dbeea9d9f60d86d13735461c1be89d6dd4692a
|
|
BLAKE2b-256 checksum How to use checksums |
8f4a3aaccc2614b1bc30f3b8b6a66c16a91de640c95d037efb5abc358b1b6e2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | limulus-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
0f58894684462cfdecdbe4bd82ed7b7b72a459a5bd6a264e9429668d70e25487
|
|
BLAKE2b-256 checksum How to use checksums |
3d5316d9e9a888c8395eafd36a22436c9ac5bb779c5e15c836d57471f7e6c598
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | limulus-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
611e2588d48c3b5a73a6577ec8ee83d23c489d4b7ed2f5e3870510da9de374f9
|
|
BLAKE2b-256 checksum How to use checksums |
cf4b66d9e2567e7ec19d03965d685a370e379065ffed5af36ca3b873aa018799
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | limulus-0.6.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 6.4 MB |
| Tags | CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a60c6071f0afdad7e9cd7a5256e57c9005ffd0142fec00fac7afff6fce4b4707
|
|
BLAKE2b-256 checksum How to use checksums |
3de265639080f848c225bf03c563465cddc62830cead18e760564cc8bd3ba010
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp312-cp312-win_amd64.whl
| Download URL | limulus-0.6.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d4ee799b75a7b55e9b23082dc444d3773df637cd7794427e73840a85cb6efad1
|
|
BLAKE2b-256 checksum How to use checksums |
c8d055879550e81499f921b6fee472a58a7d799af7a1973112f4c65df1196232
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | limulus-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4836c1065bb4117c97b9bb079fdaed6267307bcf743174f0b94730786f3e9bf1
|
|
BLAKE2b-256 checksum How to use checksums |
06bfef90ac56e998925836e6c8c7ab919ab44110702033a79748e255b639a0b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | limulus-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
06092c29ee4c54e85d9393e80f23bf6f6c7590d25d80e18e6e7167d02bc5c7aa
|
|
BLAKE2b-256 checksum How to use checksums |
3bd63a5f37273c2d406b577b52324e50cde779fcbcd4580f739ad9bcc637e25a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | limulus-0.6.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 6.4 MB |
| Tags | CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b790a9d2b19c64ff59b2b1ba38e1e9ee7794988eb34a6435377410d0db66045f
|
|
BLAKE2b-256 checksum How to use checksums |
93bb1e44b88f46ee06d04504ed2cb1fda885c22385bed4bebb575e0fbbb573cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp311-cp311-win_amd64.whl
| Download URL | limulus-0.6.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
af3e93e6f8ed0c30875cd00ab0ba5f12a3bc84a4c3c277617559402cef11df7f
|
|
BLAKE2b-256 checksum How to use checksums |
f2720af226baef2decb942dbff05e2c6d167ce4130d65109b3317192f82ab524
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | limulus-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
cd3eda8b50531d07fa864dbb3ec9c0873823b931b57444c7165a54b48acb0d38
|
|
BLAKE2b-256 checksum How to use checksums |
666ea8c8510321dfbecffedfc83b84a9aeab037f746824945634b59ecc005f08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | limulus-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
b1cc3e923ad613cd8a55e191f5de9a7f7149d88305bb1606ad657c8ce45a42a5
|
|
BLAKE2b-256 checksum How to use checksums |
31e0daf8a53085aed6112b2c84d273b64c217231157fbab856b20861284e63dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | limulus-0.6.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 6.4 MB |
| Tags | CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9f372e8445e6048ed05134b543600de95cdfab47cb55c42f8f6e641dc2638c55
|
|
BLAKE2b-256 checksum How to use checksums |
ae9a85c3142093950d6e550d6f4f839b2eba94450808827c619df4c82e8d4ed8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp310-cp310-win_amd64.whl
| Download URL | limulus-0.6.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e793d58cedda85bb9f9c7410ad8cd8cd58fd6e36a2b58d2f9ae10f68112476da
|
|
BLAKE2b-256 checksum How to use checksums |
8dd4628069aa9583adf6622e3664bf5c4e30e7444e47879678dc7aee3464d06f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | limulus-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
ab386053a0613a5dbc72a48f3a6a2b65a32b8de52189f1dd6a534c3e25999d0f
|
|
BLAKE2b-256 checksum How to use checksums |
7a7e5f2f345e301e265d1cdb4463fb615b0ce6d00a7d0951c8e10092cc9b08ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | limulus-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
a004d63403aa8a3e3547993b62fd06d01b32267a2bdcb7e36b52126c4190acfb
|
|
BLAKE2b-256 checksum How to use checksums |
58bf746802de790af4fa871b21ca35624d21219413d372fdf5018a37705c250f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / limulus-0.6.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | limulus-0.6.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 6.4 MB |
| Tags | CPython 3.10 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
62344e1b3bfd90e3b06687e2baa87fee8f12a7b30228bd2cb7d8f9cfe9a62d13
|
|
BLAKE2b-256 checksum How to use checksums |
e946fcd5a5760d8cc0f34f7558c26ff3b31500d178abee0fbaa4d5361837ea57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log