Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

PRE-RELEASE

The code in this repository is under active development and testing prior to an official release. Until that time, the project should be considered unstable and liable to change without warning.

SSE_for_Py — sequence scrambling and mutation tools

SSE_for_Py provides tools for scrambling and mutating RNA/DNA genome sequences while holding chosen properties of those sequences constant — for example, preserving the encoded protein while randomizing codon usage, or nudging a sequence's dinucleotide composition (e.g., CpG content) toward a target value. These operations are used to build null-model or control sequences for studying compositional selection pressures in viral and other genomes.

The scrambling and mutation algorithms were originally written in PowerBasic. That code was translated into C, and Python bindings were added on top of the C extension, all written by Claude, Anthropic's AI coding agent. The C code was checked (via the Python bindings) for equivalence with the original PowerBasic implementation (see Testing below).

Methods

The following methods are implemented identically in the PowerBasic original and the C code (for which Python bindings are provided). They are described here in a language-independent way; see Implementations below for how to call them from either language.

All methods operate on a nucleotide sequence (A, C, G, T). Methods whose description mentions "codons" require the sequence length to be a multiple of 3 and treat it as a coding sequence read in one frame, starting at the first base.

  • NDR (Nucleotide Distribution Randomization) — repeatedly swaps pairs of individual nucleotides, choosing swaps that preserve the sequence's n-tuple frequency distribution. Six method names select a fixed n-tuple size and swap style: NDR, NTR, NQR (n-tuple 2, 3, 4; random swaps) and NDS, NTS, NQS (n-tuple 2, 3, 4; sequential swaps). To scramble with any other n-tuple size, call the underlying scramble_NDR function directly (see Library functions below).
  • CDLR (Codon Distribution at Leucine and aRginine) — swaps nucleotides between synonymous codons so as to preserve dinucleotide frequencies while leaving the encoded protein sequence unchanged.
  • NOR (Nucleotide Only Randomization) — shuffles all nucleotides in the sequence with no constraints, other than leaving gap (-) and ambiguous (N) characters in their original positions. This destroys both the reading frame and the encoded protein.
  • COR (Codon Only Randomization) — shuffles whole codons to new positions with no constraints, preserving the overall codon composition but not the encoded protein sequence or codon-to-position mapping.
  • CLR (Codon Like Randomization) — shuffles synonymous codons (those encoding the same amino acid) among the positions that encode that amino acid, preserving the protein sequence while randomizing synonymous codon usage.
  • CLS (Codon Like Swap) — like CLR, but performs the randomization as a series of pairwise swaps between synonymous codons, rather than a full shuffle.
  • CLM (Codon Like Maximal) — for each codon position, independently draws a new, random synonymous codon, maximally randomizing synonymous codon usage while preserving the protein sequence.

All of the codon-aware methods (CDLR, COR, CLR, CLS) accept a genetic code number (1–23, following the NCBI genetic code tables) so that non-standard codon tables can be used.

In addition to scrambling, a mutation method nudges a sequence toward a target frequency for a chosen dinucleotide (e.g., CpG or ApT), expressed as a ratio relative to the frequency expected from the sequence's base composition. It can preserve the encoded protein, optionally preserve overall mononucleotide frequencies while it mutates, and can be told to leave specific other (named) dinucleotides unchanged.

Implementations

Python

Installation

SSE_for_Py ships as a compiled Python package (the C code is built into a Python extension module), with prebuilt wheels for common platforms.

Using pip:

pip install SSE_for_Py

Using uv:

uv add SSE_for_Py

Command-line tools

Installing SSE_for_Py provides the following commands:

  • scramble — scramble sequences in a FASTA file (or from stdin, or a single sequence given directly) using any of the methods described above.

    # Scramble a FASTA file using the CDLR method, with genetic code 1
    scramble CDLR input.fasta --genetic-code 1 --output scrambled.fasta
    
    # Scramble a single sequence using NOR, with a given random seed
    scramble NOR --sequence ACGTACGTACGT --seed 42
    
    # Read from stdin, scramble with NTR (n-tuple 3, random swaps)
    scramble NTR < input.fasta > scrambled.fasta
    
  • mutate — mutate sequences in a FASTA file (or from stdin, or a single sequence) toward a target dinucleotide frequency ratio.

    # Reduce/increase CpG toward a 2x target ratio (the default)
    mutate input.fasta --output mutated.fasta
    
    # Target ApT at a different ratio, with a fixed seed
    mutate input.fasta --dinuc-mutate ApT --diverge 1.5 --seed 123
    
  • encode-alignment — convert a FASTA alignment into the internal, digit-encoded alignment format used elsewhere in the package.

    encode-alignment alignment.fasta --output alignment.enc
    

All of the FASTA-processing commands (scramble, mutate) share a common set of options, including --seed (for reproducibility), --output, --wrap (output line wrapping), --repeat (apply the operation more than once per input sequence), and --checksum (print an Adler-32 checksum of the output, used when validating against the PowerBasic reference — see Testing).

Library functions

The high-level, recommended entry points are SSE_for_Py.scramble.scramble (a generator that dispatches to any scrambling method) and SSE_for_Py.mutate.mutate:

from SSE_for_Py.scramble import scramble

# Scramble a single sequence directly
for seq_id, scrambled in scramble("CDLR", sequence="ATGCGTAAATAG", genetic_code=1):
    print(scrambled)

# Scramble every sequence in a FASTA file, using NTR (n-tuple 3, random swaps)
for seq_id, scrambled in scramble("NTR", "input.fasta"):
    print(f"{seq_id}: {scrambled}")
from SSE_for_Py.mutate import mutate

result = mutate("ATGCGTAAATAG", dinuc_mutate="CpG", dinuc_diverge=2.0)

Each scrambling method is also available directly as its own function, if you don't want to go through the scramble dispatcher:

from SSE_for_Py.scramble_NDR import scramble_NDR
from SSE_for_Py.scramble_CDLR import scramble_CDLR
from SSE_for_Py.scramble_NOR import scramble_NOR
from SSE_for_Py.scramble_COR import scramble_COR
from SSE_for_Py.scramble_CLR import scramble_CLR
from SSE_for_Py.scramble_CLS import scramble_CLS
from SSE_for_Py.scramble_CLM import scramble_CLM

scramble_NDR("ACGTACGTACGT", s_method=2, no_swaps=10, n_tuple=3)
scramble_CDLR("ATGCGTAAATAG", genetic_code=1)
scramble_NOR("ATGCGTAAATAG")
scramble_COR("ATGCGTAAATAG", genetic_code=1)
scramble_CLR("ATGCGTAAATAG", genetic_code=1)
scramble_CLS("ATGCGTAAATAG", genetic_code=1)
scramble_CLM("ATGCGTAAATAG")

Invalid arguments (e.g., a sequence whose length isn't a multiple of 3 for a codon-aware method) raise ValueError. Failures in the underlying C code, or a scramble that could not make enough progress to be considered meaningful (see the min_swap_fraction argument on scramble_NDR and scramble_CDLR), raise SSE_for_Py.exceptions.ScrambleError.

C library

The algorithms themselves live in a small, dependency-free C library under src/c/, with one source file per method (scramble_NDR.c, scramble_CDLR.c, scramble_NOR.c, scramble_COR.c, scramble_CLR.c, scramble_CLS.c, scramble_CLM.c), plus mutate_sequence.c for the mutation method and lib.c/lib.h for shared utilities (codon table setup and translation, RNG seeding).

All of that is compiled into a single Python extension module, SSE_for_Py._combined, built from combined_module.c plus the files above. Everything is built as one extension, rather than one per method, so that every method shares a single C-level RNG state — important for reproducibility when a script calls more than one scrambling method with the same seed.

The C code has no dependencies beyond the C standard library and libm, and can also be compiled and used standalone, outside of Python — see the benchmark-bin target in the Makefile for an example of linking it into a plain C binary.

Testing

Clone the repository and install the development dependencies with uv:

uv sync

Run the test suite:

make test

which is equivalent to uv run pytest. To run the tests across every supported Python version (currently 3.10 through 3.14), use:

make nox

Validating against the PowerBasic reference

Because the C code is a translation of the original PowerBasic implementation, the C extension can optionally be compiled with a simplified, deterministic random number generator instead of the platform's real one. Building with this test RNG (SSE_TEST_RNG=1) makes the C code draw from the exact same pseudo-random integer sequence as the PowerBasic code, given the same seed. This allows the two implementations' outputs be compared directly rather than only statistically.

That comparison is done by running the same input through both implementations and comparing an Adler-32 checksum of their output (the --checksum option on the scramble and mutate commands prints this). A checksum match on a given input and seed is strong evidence that the C translation faithfully reproduces the PowerBasic original's logic for that case. This technique was used throughout development to verify the C translation against the PowerBasic reference implementation, and is exercised by the test suite via:

make nox-with-rng-checksum

which builds the extension with both SSE_TEST_RNG=1 (the shared deterministic RNG) and PREVENT_REVERSIONS=1 (an extra guard against a specific class of double-free bug) before running the tests.

Benchmarking

Benchmarking is a developer-only tool — it's not installed as a command when you pip install/uv add this package, since it needs the C sources and Makefile from a source checkout to build its standalone-C comparison binary.

make benchmark

builds the C benchmark binary and the Python extension, then runs the benchmark module (python -m SSE_for_Py.cli.benchmark) to compare performance across methods and implementations.

benchmark results

SSE benchmark results

  • Sequence lengths: 100, 1000, 10000
  • Sequences per length: 100
  • Length SD: 0.0
  • Methods: CDLR, CLM, CLR, CLS, COR, NDR, NOR, translate
  • Repeats per sequence: 3
  • Warmup calls per sequence: 0
  • Seed: 1
  • Generated: 2026-08-24 16:08:09 UTC

Nucleotides per second

Sequence length 100

Method C nt/s Python nt/s C / Python
CDLR 3,169,342 3,139,684 1.0x
CLM 197,419,355 164,881,017 1.2x
CLR 8,913,487 8,502,869 1.0x
CLS 9,161,677 8,994,179 1.0x
COR 53,310,105 45,940,360 1.2x
NDR 3,846,154 3,892,160 1.0x
NOR 25,478,768 24,327,750 1.0x
translate 209,589,041 225,625,582 0.9x

Sequence length 1000

Method C nt/s Python nt/s C / Python
CDLR 6,378,915 6,357,758 1.0x
CLM 229,115,854 210,912,714 1.1x
CLR 8,733,548 8,519,392 1.0x
CLS 10,308,288 9,736,246 1.1x
COR 41,582,515 40,226,251 1.0x
NDR 10,796,638 10,718,490 1.0x
NOR 18,030,230 18,298,231 1.0x
translate 136,202,990 128,342,080 1.1x

Sequence length 10000

Method C nt/s Python nt/s C / Python
CDLR 6,449,089 6,439,097 1.0x
CLM 231,563,513 210,873,606 1.1x
CLR 8,285,014 8,196,008 1.0x
CLS 10,424,397 10,263,846 1.0x
COR 35,344,421 34,134,994 1.0x
NDR 11,555,925 11,540,557 1.0x
NOR 14,413,142 13,958,460 1.0x
translate 26,553,512 26,086,465 1.0x
Call/timing details

Sequence length 100

Method Language Calls Skipped Discarded Total nt Total seconds Min (s) Max (s) StdDev (s)
CDLR C 300 0 0 30,600 0.0097 0.000025 0.000101 0.000005
CDLR Python 300 0 0 30,600 0.0097 0.000025 0.000112 0.000007
CLM C 300 0 0 30,600 0.0002 0.000000 0.000001 0.000000
CLM Python 300 0 0 30,600 0.0002 0.000001 0.000010 0.000001
CLR C 300 0 0 30,600 0.0034 0.000010 0.000023 0.000001
CLR Python 300 0 0 30,600 0.0036 0.000011 0.000022 0.000002
CLS C 300 0 0 30,600 0.0033 0.000009 0.000016 0.000001
CLS Python 300 0 0 30,600 0.0034 0.000010 0.000019 0.000001
COR C 300 0 0 30,600 0.0006 0.000001 0.000008 0.000001
COR Python 300 0 0 30,600 0.0007 0.000002 0.000012 0.000001
NDR C 300 0 0 30,600 0.0080 0.000017 0.000059 0.000006
NDR Python 300 0 0 30,600 0.0079 0.000016 0.000070 0.000006
NOR C 300 0 0 30,600 0.0012 0.000003 0.000012 0.000001
NOR Python 300 0 0 30,600 0.0013 0.000004 0.000008 0.000001
translate C 300 0 0 30,600 0.0001 0.000000 0.000009 0.000001
translate Python 300 0 0 30,600 0.0001 0.000000 0.000003 0.000000

Sequence length 1000

Method Language Calls Skipped Discarded Total nt Total seconds Min (s) Max (s) StdDev (s)
CDLR C 300 0 0 300,600 0.0471 0.000140 0.000271 0.000014
CDLR Python 300 0 0 300,600 0.0473 0.000138 0.000226 0.000012
CLM C 300 0 0 300,600 0.0013 0.000003 0.000015 0.000002
CLM Python 300 0 0 300,600 0.0014 0.000005 0.000013 0.000001
CLR C 300 0 0 300,600 0.0344 0.000106 0.000213 0.000010
CLR Python 300 0 0 300,600 0.0353 0.000107 0.000174 0.000008
CLS C 300 0 0 300,600 0.0292 0.000089 0.000158 0.000008
CLS Python 300 0 0 300,600 0.0309 0.000091 0.000135 0.000007
COR C 300 0 0 300,600 0.0072 0.000021 0.000038 0.000003
COR Python 300 0 0 300,600 0.0075 0.000022 0.000046 0.000004
NDR C 300 0 0 300,600 0.0278 0.000082 0.000187 0.000010
NDR Python 300 0 0 300,600 0.0280 0.000082 0.000229 0.000013
NOR C 300 0 0 300,600 0.0167 0.000050 0.000090 0.000005
NOR Python 300 0 0 300,600 0.0164 0.000050 0.000081 0.000005
translate C 300 0 0 300,600 0.0022 0.000006 0.000014 0.000001
translate Python 300 0 0 300,600 0.0023 0.000007 0.000018 0.000002

Sequence length 10000

Method Language Calls Skipped Discarded Total nt Total seconds Min (s) Max (s) StdDev (s)
CDLR C 300 0 0 3,000,600 0.4653 0.001424 0.001747 0.000067
CDLR Python 300 0 0 3,000,600 0.4660 0.001408 0.002351 0.000094
CLM C 300 0 0 3,000,600 0.0130 0.000038 0.000059 0.000004
CLM Python 300 0 0 3,000,600 0.0142 0.000042 0.000064 0.000004
CLR C 300 0 0 3,000,600 0.3622 0.001108 0.001386 0.000055
CLR Python 300 0 0 3,000,600 0.3661 0.001108 0.001386 0.000056
CLS C 300 0 0 3,000,600 0.2878 0.000873 0.001066 0.000041
CLS Python 300 0 0 3,000,600 0.2923 0.000885 0.001074 0.000044
COR C 300 0 0 3,000,600 0.0849 0.000263 0.000405 0.000020
COR Python 300 0 0 3,000,600 0.0879 0.000265 0.000389 0.000019
NDR C 300 0 0 3,000,600 0.2597 0.000783 0.001266 0.000054
NDR Python 300 0 0 3,000,600 0.2600 0.000789 0.001362 0.000065
NOR C 300 0 0 3,000,600 0.2082 0.000644 0.000829 0.000032
NOR Python 300 0 0 3,000,600 0.2150 0.000646 0.000852 0.000039
translate C 300 0 0 3,000,600 0.1130 0.000346 0.000446 0.000020
translate Python 300 0 0 3,000,600 0.1150 0.000351 0.000488 0.000023

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sse_for_py-0.1.0rc12.tar.gz (35.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sse_for_py-0.1.0rc12-cp314-cp314-win_amd64.whl (61.6 kB view details)

Uploaded CPython 3.14Windows x86-64

sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (102.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (103.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sse_for_py-0.1.0rc12-cp314-cp314-macosx_11_0_arm64.whl (55.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

sse_for_py-0.1.0rc12-cp314-cp314-macosx_10_15_x86_64.whl (57.4 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

sse_for_py-0.1.0rc12-cp313-cp313-win_amd64.whl (60.8 kB view details)

Uploaded CPython 3.13Windows x86-64

sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (102.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (103.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sse_for_py-0.1.0rc12-cp313-cp313-macosx_11_0_arm64.whl (56.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

sse_for_py-0.1.0rc12-cp313-cp313-macosx_10_13_x86_64.whl (57.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

sse_for_py-0.1.0rc12-cp312-cp312-win_amd64.whl (60.8 kB view details)

Uploaded CPython 3.12Windows x86-64

sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (102.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (103.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sse_for_py-0.1.0rc12-cp312-cp312-macosx_11_0_arm64.whl (56.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

sse_for_py-0.1.0rc12-cp312-cp312-macosx_10_13_x86_64.whl (57.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

sse_for_py-0.1.0rc12-cp311-cp311-win_amd64.whl (60.8 kB view details)

Uploaded CPython 3.11Windows x86-64

sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (102.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (103.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sse_for_py-0.1.0rc12-cp311-cp311-macosx_11_0_arm64.whl (56.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

sse_for_py-0.1.0rc12-cp311-cp311-macosx_10_9_x86_64.whl (57.3 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

sse_for_py-0.1.0rc12-cp310-cp310-win_amd64.whl (60.8 kB view details)

Uploaded CPython 3.10Windows x86-64

sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (102.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (103.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

sse_for_py-0.1.0rc12-cp310-cp310-macosx_11_0_arm64.whl (56.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

sse_for_py-0.1.0rc12-cp310-cp310-macosx_10_9_x86_64.whl (57.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file sse_for_py-0.1.0rc12.tar.gz.

File metadata

  • Download URL: sse_for_py-0.1.0rc12.tar.gz
  • Upload date:
  • Size: 35.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sse_for_py-0.1.0rc12.tar.gz
Algorithm Hash digest
SHA256 86ae646a9ccb0a93f1f4df1636e8b287b3b4a7bbf1ccf0dd3dd6f4629d879a04
MD5 2a5ccb6684309981e4c53f209c562686
BLAKE2b-256 a7f5061fe0a805d2ed05faf7ea343873ea23d05348a889234b8f2948c5fa927d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12.tar.gz:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 accfae1958ad32482c414b5230d25ba46df0cd1cb4cd0740175136e928a06446
MD5 d89d3f5e0759bc83a595d7e0494c03a0
BLAKE2b-256 1b1c9b24c7c11178f3ab3d40c3cd980ced0365febbac39a59c7a792c5ae41e2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 af6e5c3f67b36f8079694de798069479c0a7aa37b67c7ff0e3cef2def5306669
MD5 9dc164e4c8e9606ed17733ca136f3dd3
BLAKE2b-256 a2e0d4082e5b8fe3dcb4400bdde24ec7239ecba5393fcb8e33eb87133fdf2887

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a2d2c49faf7f9e52e71f4fa48a723bca204144466d093800819bb9fffed68e73
MD5 a4ec96423121f49410ea69092e89e85b
BLAKE2b-256 e87941f49878c9d8427d297f1758eef9960ff754e575ad84e47c0237a4035327

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 91170e585afcf37c8051b043c4bbd943f9c815c0f3877bea46d0d1b82a270775
MD5 362c41ee800229885350d55f73d80ddb
BLAKE2b-256 1a14d9efa87ea1777590dfed6e31060c434bedb1957b01a6643f7e8a876c379b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e55d166876247821342ae1ba33c626b3c10f2bf23ecc06f4bb9c0cde33ddf588
MD5 378e3bbe6e834333dd270608b4d6c3f0
BLAKE2b-256 d8af468f8e3aa0a35aec39f65dfde5b2d9448f2ad18d5dcfb6d25baf0bac5376

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f8483e1070c1494a2d287c0f50aae0241647e75db792013d15856c98e93dcdf1
MD5 c93ba7e1f3dc14b5a0d2b915fdef089d
BLAKE2b-256 6ffc64cb5195f2fff1fd75a5426ac31ac6a16b9eb07555df7d1d9cbe9940284e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f24f32f1e1dc6bc29c292eac87b4a86470397cfcaecc0f91044de4e44109f1a0
MD5 5a4ca5626926bd3b0058ef4d508cf3f6
BLAKE2b-256 473d04ef072ae3f2ffef30b09f862f48d5a90a8c66a2747e9e60eae858c6e785

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5cd68bc62e22d12de5b6e60c4df65c5f9f9ec6073990957d5c5162bfd22a6844
MD5 a352123317f7975cba917ca893cb31d7
BLAKE2b-256 364960d147a4315c7a50299cd05cdcdb82a7ac92ac65916ff21dfe9cacf16da7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ecf95a23dea7c7a0819e4173a42cfa731a12f33f27326819629d9c0347231e04
MD5 0af40666e9b09fbc6b157bab0e40b860
BLAKE2b-256 7bb8c401e02222a385333e98b31ffd80f620a71aedb8c155cdc9adf5ca04581f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d190481de2c98ed5081afef6a5c5ee7b87d5593326c302a429253fd6fd54b9be
MD5 cd44f7b01b2e892cff20b8e3e63ccf64
BLAKE2b-256 9b99b5c08f8ad6b173886543f865ab6e293942fd6f47df62a9da029dd83b180e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 084e5a489854f84ff3e25c9536355b1db4f12dfc317a9c9a742baab970906bf5
MD5 3d895f9ba146352223241fe45d19c09c
BLAKE2b-256 feac32a1e843c582131d68db7b0e20d1eac2139e9254c6532565c155acd4eec7

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f07b47b9bf625f249a266ac97b2b1b14ad966130428810ff4356f2acaac2abe2
MD5 a31b2da9ba3be0de9ff77fea28a6d8bd
BLAKE2b-256 fbfe79e1c03018f47276b9e31fbb0cb7d787cd367fa85c8e58ed299db1067574

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3f7d25df62f895448441d9098afc9311ce8ba4fa6dbd337b181ef9171f92869d
MD5 649d778c9835bf94f7a55c0dae5efc9e
BLAKE2b-256 2d0e856994827a07e34afc072b97b55a4ec43aa075e3833f705d100a92f8d3ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 605e9ff074ff1af16977c93d711196bfa97c8a2a8ffab256074ceef3228fd275
MD5 70b5bacdfbb3ece5da4a85725243c9c4
BLAKE2b-256 71bb435a611eaa4745056410acc4439a223b9409b0119c3a931ffaf62d37e3be

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4e07913abc97f0df6878eda21232b68d924c608f989a4711107b91bf1f6d09df
MD5 9e1065cc68849412369514ef34ebf2d1
BLAKE2b-256 10d16d6c0e04a5a1e9be4b7bab9206820c4fe74570cb4747a208e62f419a9bab

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5c31d5e0f736ac23e6044e4041d8846abfbc6a0e1657fd62d509c9c68a1982a2
MD5 23c0644081317921686a73a46feb37e8
BLAKE2b-256 e9897a6d79b70ff06764de28b3701b2c7d04afbfd6ac3698c8da55ad29d1f0ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f437118ad7ada58f6e1210fac29318c56383207df26b78e4861ed30868b991b3
MD5 798dce73c7cf9f98a03ac50b9c4e4cba
BLAKE2b-256 7a6ccc1e4b0207aeae30b9e587c40c1fec414c4ce85e4d86d0c3c7795b0adfd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e831225eeb7fbc3e55d463648e53669f62c7a4d5f59b5ae925076b3504fde6a1
MD5 b695baa76d239fd06d745deaf34462ad
BLAKE2b-256 d15db144477b64385fc2f50db6bb2c08220b1128336256728a14092dcad8fc3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19a6b9e5e0a5d184dce740b847140503475168988819bfdd956928695ec95e42
MD5 84335cf28342ed59d426c5a2c00f433d
BLAKE2b-256 2f9dfd6274e2a52946d61857e0b45eb0a36f5f7c2a0a4d332842893cb2f53206

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b7e30a6f34edc19170d5d76a28e84ed18c2b4f90aa6ab04de4d82891d4234ee
MD5 2edc223633c963f9e13ea42fc14c6902
BLAKE2b-256 709846a0eba21a476bbb9f3150394d18b14df7e20615c2f7cc298a5f3a76b080

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 90dbf3b291fb912cc177092ee1ae3e29595a06c8a72135754f76b15ba3b2b8d4
MD5 5f78e791ca4339dc03f4c1b5cae2402e
BLAKE2b-256 69c1e95d4a8479945e0e86f51de5a52a49ac06c403c615f4cdf648bf0dbfc11a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0bbd5fb44952e147460fc01e3571e6171054476a5c6b032e2b7c734a4f7747d
MD5 621d347d03d428ee07ceaca4315b0609
BLAKE2b-256 8ad10eb3ade78593662c28d3078ea6e73ec451bb9af8c67b539ca3b26aac39af

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23bf6f41fe9e2935c31f83ca1f22ffb369738d62973b7905e0f390c99e4ced5b
MD5 0128a40d93e24e4495faf1da88c0d9c5
BLAKE2b-256 09ac4aa17fe1b7debb43684154cc101f5933a6ed145fec408c68847900024912

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80b35be5cac7fc92264d11b34c653ec51598bc84a5b1a944e907c995a54ba5da
MD5 656b3f729e6234320a535cdad088ef09
BLAKE2b-256 e4963083d7ffdd653413e6af10404a70273be61b4f12c552c69d5631d6b593d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sse_for_py-0.1.0rc12-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sse_for_py-0.1.0rc12-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a85fdfec1134a59f5dd16de544a974df17901d20b429c26daa8dc7d35f6d01ab
MD5 b6909d41ae24db28b39a0a717266407a
BLAKE2b-256 9389fe2612cb8c5ac4c309466fab17115992ee40d71dfe3759e8c55a9753598a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sse_for_py-0.1.0rc12-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on psimmond/SSE_for_Py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0rc12 This release

26 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page