Skip to main content

GitHub release; latest by date GitHub Release Date Test Status Code coverage
PyPI - Version PyPI - Format PyPI - Downloads PyPI - Python Version
GitHub commits since latest release GitHub commit activity GitHub last commit
Number of GitHub open issues Number of GitHub closed issues Number of GitHub open pull requests Number of GitHub closed pull requests
GitHub License Number of GitHub stars GitHub forks

cspyce MODULE OVERVIEW

Version 2.x, originally released March, 2022 (see above for current installable version)

PDS Ring-Moon Systems Node, SETI Institute

cspyce is a Python module that provides an interface to the C-language CSPICE library produced by the Navigation and Ancillary Information Facility (NAIF) of NASA's Planetary Data System (PDS). It implements most functions of CSPICE in a Python-like way, while also supporting numerous enhancements, including support for Python exceptions, array inputs, and aliases.

cspyce may be installed by running pip install cspyce.

Python versions 3.9 thru 3.14 are currently supported, with pre-built wheels available for Linux, MacOS, and Windows. NumPy 1.x and 2.x are supported.

If you are looking for information on running or distributing this code from the GitHub sources, look at the file README-developers.md in this directory.

PYTHONIZATION

cspyce has been designed to replicate the core features of CSPICE for users who wish to translate a program that already exists. Function names in cspyce match their CSPICE names.

However, it is also designed to behave as much as possible like a normal Python module. To that end, it has the following features.

  • The C language requires buffers to be allocated for output and it requires array sizes to be included for both input and output. The cspyce module, instead, eliminates all extraneous inputs, and all output arguments are returned as a list (or as a single object if the function only returns one item).

  • cspyce has been fully integrated with Python's exception handling; programmers can still opt to use CSPICE's error handling mechanism if they wish to.

  • All cspyce functions can handle positional arguments as well as arguments passed by name.

  • All cspyce functions have informative docstrings, so typing help(function) provides useful information.

  • Many cspyce functions take sensible default values if input arguments are omitted.

  • All cspyce functions that take filename arguments now support path-like-arguments. A path-like argument could be a strings, a byte string, or a pathlib.Path. The pathlib.Path class provides an object-oriented class for manipulating file-system paths and performing common operations on files.

ENHANCEMENTS

In addition, the cspyce module takes advantage of features of the Python language to provide numerous options about how the functions perform their work. These options include:

  • Whether to return a CSPICE-style error condition or to raise a Python exception.

  • How to handle CSPICE functions that return a status flag, e.g., "found" or "ok", instead of using the CSPICE toolkit's error handling mechanism.

  • Whether to allow cspyce functions to accept arrays of inputs all at once, rather than looping through inputs in Python.

  • Whether to automate the translation between SPICE body and frame IDs and their associated names.

  • Whether to allow cspyce to support aliases, in which the same body or frame is associated with alternative names or IDs.


EXCEPTION HANDLING

In CSPICE, the user can designate what to do in the event of an error condition using the function erract(). In CSPICE, the available options are "RETURN", "REPORT", "IGNORE", "ABORT", and "DEFAULT". The cspyce version of this function adds new options "EXCEPTION" and "RUNTIME" to the suite of error handling options supported by CSPICE.

  • As usual, the user can select the exception handling mechanism to use by calling the function erract(). In cspyce, the default is "EXCEPTION".

  • When using the "EXCEPTION" option, each CSPICE error condition raises a Python exception rather than setting the failed() flag. The exception contains the text of the CSPICE error, in the form (short message + " -- " + long message). The CSPICE error conditions are mapped to standard Python exception types in a sensible way:

    • KeyError indicates that a SPICE ID or name is unrecognized.
    • ValueError indicates that one of the inputs to a function had an invalid value.
    • TypeError indicates that one of the inputs to a function had an invalid type.
    • IndexError indicates that an integer index is out of range.
    • IOError indicates errors with reading and writing files, including SPICE kernels. IOError can also indicate that needed information was not in one of the furnished kernels.
    • MemoryError indicates that adequate memory could not be allocated, or that the defined size of a memory buffer in C is too small.
    • ZeroDivisionError indicates that a divide-by-zero has occurred.
    • RuntimeError indicates that an action is incompatible with some aspect of the CSPICE module's internal configuration.
  • When using one of CSPICE's intrinsic error handling methods, no exception will be raised, but a call to failed() will reveal whether an error has occurred. A call to reset() is needed to clear the error.

  • Care has been taken to reduce the chances that the "dangerous" options "IGNORE" and "REPORT" will cause a segmentation fault. However, this possibility cannot be entirely ruled out, so caution is advised.

  • Because it would be a highly questionable thing to do, the "ABORT" and "DEFAULT" options are overridden by "EXCEPTION" when the user is running cspyce from an interactive shell. However, they resume their standard effects during non-interactive runs.

  • When using the "RUNTIME" option, each CSPICE error condition raises a Python RuntimeError exception rather than setting the failed() flag. This is similar to the "EXCEPTION" option except the type of exception is always the same.

  • Certain out-of-memory conditions are beyond the control of the CSPICE library. These will always raise a MemoryError exception, regardless of the exception handling method chosen.

HANDLING OF ERROR FLAGS

Many CSPICE functions bypass the library's own error handling mechanism; instead they return a status flag, sometimes called "found" or "ok", or perhaps an empty response to indicate failure. The cspyce module provides alternative options for these functions.

Within cspyce, functions that return error flags have an alternative implementation with a suffix of "_error", which uses the CSPICE/cspyce error handling mechanism detailed above instead.

Note that most _error versions of functions have fewer return values than the associated non-error versions. The user should be certain which version is being used before interpreting the returned value(s).

The cspyce module provides several ways to control which version of the function to use:

  • The function use_flags() takes a function name or list of names and designates the original version of each function as the default. If the input argument is missing, original versions are selected universally.

  • The function use_errors() takes a function name or list of names and designates the _error version of each function as the default. If the input argument is missing, _error versions are selected universally.

To provide a more consistent Python interface, the _error versions of all cspyce functions are selected by default. You can also choose between the "flag" and "error" versions of a function using cspyce function attributes, as discussed below.


VECTORS AND ARRAYS

VECTORIZATION

Nearly every function that takes floating-point input (be it a scalar, 1-D array, or 2-D array) has a vectorized version that allows you to pass a vector of these items in place of a single value. The CSPICE function is called for each of the provided inputs, the results are collected, and the cspyce function returns a vector of results.

  • Vectorized versions have the same name but with _vector appended.

  • In a vectorized function, you can replace any or all floating-point input parameters with an array having one extra leading dimension. Integer, boolean, and string inputs cannot be replaced by arrays.

  • If no inputs have an extra dimension, then the result is the same as calling the original, un-vectorized function.

  • Otherwise, all returned quantities are replaced by arrays having the size of the largest leading axis.

  • Note that it is permissible to pass arrays with different leading axis sizes to the function. The vectorized function cycles through the elements of each array repeatedly if necessary. It may make sense to do this if each leading axis is an integer fraction of the largest axis size. For example, if the first input array has size 100 and the second has size 25, then the returned arrays(s) will have 100 elements and the values of the second will each be used four times. However, caution is advised when using this capability.

  • Some functions are not vectorized. These include:

    • Functions that have no floating-point inputs.
    • Functions that include strings among the returned quantities.
    • Functions that already return arrays where the leading axis could be variable in size.
  • In the two cases (ckgp and ckgpav) where a function can be both vectorized and either raise an error or return a flag, the _vector suffix comes before _error.

ARRAYS

An optional import allows the cspyce module to support multidimensional arrays:

import cspyce
import cspyce.arrays

The latter import creates a new function in which the suffix _array replaces _vector for every vectorized function. Whereas _vector functions support only a single extra dimension, _array functions follow all the standard rules of shape broadcasting as defined in NumPy. For example, if one input has leading dimension (10,4) and another has dimension (4,), then the two shapes will be broadcasted together and returned quantities will be arrays with shape (10,4).

You can choose between the scalar, vector, and array versions of a function by using their explicit names, or by using cspyce function attributes, as discussed below.


ALIASES

Aliases allow the user to associate multiple names or SPICE codes with the same CSPICE body or frame. Aliases can be used for a variety of purposes.

  • You can use names and codes interchangeably as input arguments to any cspyce function.
  • You can use a body name or code in place of a frame name or code, and the primary frame associated with that identified body will be used.
  • Strings that represent integers are equivalent to the integers themselves.

Most importantly, you can allow multiple names or codes to refer to the same CSPICE body or frame. For bodies and frames that have multiple names or codes, calls to a cspyce function will try each option in sequence until it finds one that works. Options are always tried in the order in which they were defined, so higher-priority names and codes are tried first.

Example 1: Jupiter's moon Dia uses code 553, but it previously used code 55076. With 55076 defined as an alias for 553, a cspyce call will return information about Dia under either of its codes.

Example 2: The Earth's rotation is, by default, modeled by frame "IAU_EARTH". However, "ITRF93" is the name of a much more precise description of Earth's rotation. If you define "IAU_EARTH" as an alias for "ITRF93", then the cspyce toolkit will use ITRF93 if it is available, and otherwise IAU_EARTH.

Immediately after a cspyce call involving aliases, you can find out what value or values were actually used by looking at attributes of the function. For example, the first input to the cspyce function spkez is called targ and it identifies the code of a target being observed. After a call to

cspyce.spkez(553, ...)

the value of cspyce.spkez.targ will be the code actually used, in this case either 553 or 55076.

To enable aliases, you must import an additional module

import cspyce
import cspyce.aliases

(Note that cspyce.aliases and cspyce.arrays can both be imported, and in either order. Note also that these are unconventional modules, in that they introduce new functionality into the cspyce namespace rather than creating new namespaces called cspyce.aliases and cspyce.arrays.)

With this import, a new function is defined for every cspyce function that takes a frame or body as input. The new function has the same name as the pre-existing cspyce function, but with _alias inserted immediately after the original cspyce name (and before any other suffix such as _vector or _error).

You can make alias support the default for individual cspyce functions or for the entire cspyce module by calling cspyce.use_aliases(). These versions can subsequently be disabled as the default by calling cspyce.use_noaliases() (see more detailed discussion below).

To define a body alias or frame alias, call

cspyce.define_body_aliases(name_or_code, name_or_code, ...)
cspyce.define_frame_aliases(name_or_code, name_or_code, ...)

where the arguments are an arbitrary list of codes and names.

To determine the aliases associated with a name or code, call

cspyce.get_body_aliases(name_or_code)
cspyce.get_frame_aliases(name_or_code)

where the argument is either a name or a code.

You can also select between the alias-supporting and alias-nonsupporting versions of a function using function attributes as discussed below.


FUNCTION NAMES, VERSIONS AND SELECTION METHODS

A cspyce function can accumulate several suffixes, based on the particular behavior, as so:

basename[_alias][_vector|_array][_error]

Only functions that are truly distinct are defined. For example, if a function does not have a vector option, then no function will exist containing the _vector suffix.

You can use these functions to set defaults:

cspyce.use_flags()
cspyce.use_errors()
cspyce.use_scalars()
cspyce.use_vectors()
cspyce.use_arrays()
cspyce.use_aliases()
cspyce.use_noaliases()

Each function can take one or more arguments referencing specific cspyce functions, in which case the defaults only apply to those functions. If no arguments are specified, the default applies to all functions. For example, to use "flags" as the default for all functions except ckgp, you could use:

cspyce.use_flags()
cspyce.use_errors(cspyce.ckgp)

FUNCTION ATTRIBUTES

Function attributes provide a simpler mechanism for choosing the needed version of a function, without needing to remember the suffix rules. Every cspyce function has these attributes, each of which identifies another (or possibly the same) cspyce function:

Attribute Meaning
func.flag the equivalent function without the _error suffix, if any.
func.error the equivalent function with the _error suffix, if any.
func.scalar the equivalent function without _array or _vector suffixes.
func.vector the equivalent function with the _vector suffix, if any.
func.array the equivalent function with the _array suffix, if any.
func.alias the equivalent function with the _alias suffix, if any.
func.noalias the equivalent function without the _alias suffix, if any.

These attributes are always defined, even if the particular option is not supported by that function. This saves the programmer the effort of remembering, for example, which functions support aliases or which functions support flags.

Thus, if the programmer wishes to be sure they are using the error version of function bodn2c, and wants the vector version if it exists (but it doesn't!), they can call

cspyce.bodn2c.error.vector(args, ...)

RECORD ENHANCEMENTS

SpiceCell

cspyce provides an enhanced version of SpiceCell to make it simpler to use for both CSPICE and in Python.

In the documentation that follows, active elements refer to those elements in the SpiceCell whose index is such that 0 ≤ index < spice_cell.card.

Constructors

To create a SpiceCell:

from cspyce import SpiceCell, SPICE_CELL_INT, SPICE_CELL_DOUBLE
spice_cell = SpiceCell(typeno=SPICE_CELL_INT, size=20)
spice_cell = SpiceCell(typeno=SPICE_CELL_DOUBLE, size=10)

With these constructors, spice_cell.card will be set to 0 and there will initially be no active elements.

If you already have data that you want to convert to a spice cell, you can use a simpler interface:

spice_cell = SpiceCell([1, 2, 3, 4, 5])
spice_cell = SpiceCell(np.arange(1.0, 10.0))
spice_cell = SpiceCell(np.arange(1.0, 10.0), size=40)  # set size explicitly

If you use these constructions, Python will create a SpiceCell whose size is a little bigger than the length of the given data. The passed first argument will be the active elements.

Any CSPICE function that expects a SpiceCell as an input can also be passed an array, a tuple, or anything that can reasonably be converted into an appropriately typed SpiceCell:

Any CSPICE function that returns a SpiceCell as a result takes an optional final argument.

  • If this argument is omitted, a SpiceCell with a function-specific default capacity will be created, and the output will be placed into it.
  • If this argument is a SpiceCell, it will be used as the output argument.
  • If this argument is an integer, a SpiceCell with that capacity will be created and used as the output.

In all cases, the SpiceCell output will also be a return value.

>>> import cspyce
>>> cspyce.wninsd(2.0, 4.9, (1.0, 3.0, 5.0, 7.0, 9.0, 11.0))
<SpiceCell double 6/12 [ 1.   4.9  5.   7.   9.  11. ]>

Sequence-like operations

SpiceCell offers the following methods so that they behave like Python sequences.

spice_cell[index], spice_cell[index] = value

: Gets or sets the index-th element of the SpiceCell. Must have -len(spice_cell) ≤ index < spice_cell.size. As in Python, we allow negative indices, but -1, -2, etc count backwards from the last active elements.

len(spice_cell) : Returns the number of active elements of spice_cell.

spice_cell.append(value) : If value is a float or integer, it is added to the SpiceCell's active cells. If value is an array, all of its elements are added to the SpiceCell's active cells. The cell's maximum size is grown if necessary.

spice_cell.extend(values) : Appends each value in values to the end of the SpiceCell's active cells. Each element of values can be a float, an integer, or an array. The SpiceCell's maximum size is grown if necessary.

spice_cell += values : Synonym for spice_cell.extend(values)

spice_cell.clear() : Make all elements inactive. Same as spice_cell.card = 0.

iter(spice_cell) : Iterates through the active elements of spice_cell. Because of this iterator, list(spice_cell), set(spice_cell), and tuple(spice_cell) work as expected. You can also write a for loop for item in spice_cell: ... to iterate through the active elements.

bool(spice_cell) : If a spice_cell is used in a boolean context, its value is False if all elements are inactive (spice.cell.card == 0), and True otherwise.

SpiceCell-specific operations

SpiceCell also has the following methods and properties specific to a SpiceCell.

spice_cell.size : Gets the current maximum size of the SpiceCell.

spice_cell.size = value : Grows or shrinks the maximum size of the SpiceCell. If the number of active elements is greater than value, it is reduced to value. This operation is a cspyce enhancement that does not exist in CSPICE.

spice_cell.card : Same as len(spice_cell). (Also known as the "cardinality", hence the name).

spice_cell.card = value : Changes the number of active elements in the SpiceCell. Must have 0 ≤ value < spice_cell.size.

spice_cell.as_array() : Returns a view of the active contents of the array as a numpy array

spice_cell.as_intervals() : Returns a view of the active contents of the array as a 2-dimensional card/2x 2 array. Many SpiceCells are used to represent intervals in which each pair of numbers represents the lower and upper bounds.

Although cspyce's SpiceCells can grow and shrink, CSPICE is not aware of this capability. Its functions will still raise a WINDOWOVERFLOW if SpiceCell.size is not large enough to hold the results. The user must increase SpiceCell.size and try again.

Handling intervals and other structures

Although internally, a SpiceCell is a flat array of integers or floats, some CSPICE routines treat the contents of a SpiceCell as if it were a 2-dimensional array. For example, some CSPICE routines expect the SpiceCell to contain pairs of values where each pair represents the limits of an interval.

To simplify dealing with this use case, the methods append and extend have been enhanced. You can pass an array or an array-like object to append, and all elements of the array will be added to the SpiceCell. Likewise you can pass extend a sequence of array-like objects, and all of them will be added to the SpiceCell.

So, for example, you could write:

spice_cell.append([10, 20])
spice_cell.extend([[35, 50], [90, 100], [120, 140]])

to add intervals to your SpiceCell.

To view a SpiceCell containing intervals, you can use spice_cell.as_intervals() as described above. This is just a shortcut for spice_cell.as_array().reshape(-1, 2), where -1 is a special marker to reshape saying "figure out this value from the size of the array and the other dimensions". The expression spice_cell.as_array().reshape(-1, 3) would give an array of triples. self.as_array().reshape(-1, 4, 4) gives an array of 4x4 matrices.

Release files for cspyce 2.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cspyce 2.3.6
File Size Uploaded
cspyce-2.3.6.tar.gz 59.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for cspyce 2.3.6
File
cspyce-2.3.6-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
cspyce-2.3.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
cspyce-2.3.6-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp314-cp314t-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.15+ x86-64 Details
cspyce-2.3.6-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
cspyce-2.3.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
cspyce-2.3.6-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
cspyce-2.3.6-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cspyce-2.3.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
cspyce-2.3.6-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
cspyce-2.3.6-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cspyce-2.3.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
cspyce-2.3.6-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
cspyce-2.3.6-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cspyce-2.3.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
cspyce-2.3.6-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
cspyce-2.3.6-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cspyce-2.3.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
cspyce-2.3.6-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
cspyce-2.3.6-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
cspyce-2.3.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
cspyce-2.3.6-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
cspyce-2.3.6-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details

Total release size:146.3 MB

Release files / cspyce-2.3.6.tar.gz

Download URL cspyce-2.3.6.tar.gz
Size 59.4 MB
Tags Source
SHA-256 checksum
How to use checksums
287ab14c8bd319f98240917fa2e3964cf549b9c22efcbb2624b93a143b7e3a3c
BLAKE2b-256 checksum
How to use checksums
01a611c188e1ab80ab123bd5f34aada94a6ed5fa4b9fc12e8ee0fb6d6f3b1577
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314t-win_amd64.whl

Download URL cspyce-2.3.6-cp314-cp314t-win_amd64.whl
Size 2.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
ce87dd3cdb97268e2db40160356c56b8cfbd9793f271eeacb31a740526a4ac9f
BLAKE2b-256 checksum
How to use checksums
5d67325ccf1613438286369c16f42ecdc053ca0ba7ffba6cbeb3ae2e4a84d46f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d05742e964f1ebe9dc6d1b8bc0f7d3c0baadf5404a1d9fcc610b165cfd456c50
BLAKE2b-256 checksum
How to use checksums
a736c0b84ff1a39ddaaa74a5191549369238897d1db0f4b6ebedee3a10869a45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314t-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp314-cp314t-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bdf9cdff3d66d1a17af1dd81e8a07c4cff6969baa13e0478b03d69a66105d08b
BLAKE2b-256 checksum
How to use checksums
3c83b56349c33f3c7f61e39463b97d8f5b8ca939808fee9e5ea4da6f9464fd11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314t-macosx_10_15_x86_64.whl

Download URL cspyce-2.3.6-cp314-cp314t-macosx_10_15_x86_64.whl
Size 2.1 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
b969ecb1f216485a9ad87ad03cebc088b9eaf8a197aba7ce4e53b5240d8e7b84
BLAKE2b-256 checksum
How to use checksums
2eb1dc260620cb976425959a24a0cd3355ee0c206b1e2a53127fd47b878e8f8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314-win_amd64.whl

Download URL cspyce-2.3.6-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
edba45b5cd99bb5324263cccfbba05e2d73b47f1fd997860f963ecd1a1700cc9
BLAKE2b-256 checksum
How to use checksums
898f4b93eaaedfb1f160237dc7b91da60e593768cc0d0a270d874f3c78eeb79b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.6 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6ab0f84f5a9ba5e84ec4201c936604055c3a66ff904a987fe0bb0fb745412330
BLAKE2b-256 checksum
How to use checksums
1e2d73cb1def5b554ceb516355b4c2280c802a586ad8802f15cef70f2abf48c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp314-cp314-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0f549c449f231a09acdd20fb655411e422e3860ff9f142f520de87a5a59d844e
BLAKE2b-256 checksum
How to use checksums
04e0168bcc1b47a7851344530db5063e32e444373a2832da2bc47ad33160a9e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp314-cp314-macosx_10_15_x86_64.whl

Download URL cspyce-2.3.6-cp314-cp314-macosx_10_15_x86_64.whl
Size 2.1 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
c19e53186a0f5b5e30aade3ca7e915b165717208d2f9d8ace97da336ada50eb7
BLAKE2b-256 checksum
How to use checksums
48b64c3c40709225bffea7052c6f2990f5b72f90379dc315b128dc53d9c4f165
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp313-cp313-win_amd64.whl

Download URL cspyce-2.3.6-cp313-cp313-win_amd64.whl
Size 1.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
a9de932f12810c288d03819f750242c2997b3ccc3e34180a2cb46a656b7491f4
BLAKE2b-256 checksum
How to use checksums
d737667dec58b91af78092a8eee5b1c447242deb55d688e0a004fe760490581e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.6 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
17800c1e9e72c6ee107705bc177b70662028070f073a3977a772f734f4678ad8
BLAKE2b-256 checksum
How to use checksums
c0034c3df0730cebd4692e8afed101b19fc42035d2ae5846f5dd8a694a21c8d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp313-cp313-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp313-cp313-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6fedc52f38964965e0958f007f84f22671d54b1efda95bb277c911700efdfe99
BLAKE2b-256 checksum
How to use checksums
59c637ad3dede4f293c956e23b9b7422b327a7bfdef868b2db43ac5c3f542a27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp313-cp313-macosx_10_13_x86_64.whl

Download URL cspyce-2.3.6-cp313-cp313-macosx_10_13_x86_64.whl
Size 2.0 MB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
dc2b414069372f1bc4e77f26213971368ff4789c108e4cd2361450647aa2916c
BLAKE2b-256 checksum
How to use checksums
af8a213dbe710817d8d8148727991c6a29d1f61c12e4ff22e1c07002eb87431c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp312-cp312-win_amd64.whl

Download URL cspyce-2.3.6-cp312-cp312-win_amd64.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
92c0672c4b7fc75439cd6b471ffed9d2aa06f881441809619421413405a254d8
BLAKE2b-256 checksum
How to use checksums
f3e90ccaeaca1651cb8905c427a70c99f0efdddf7fcf8e879fcd069658130bb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8ab381248e90d835d6223ff70dfa7ba00f3fc33795d029470dba4483094493ff
BLAKE2b-256 checksum
How to use checksums
5af43a487e4faee054621af73d6defa1c631532cb39cf91a7f69877c77bfcf30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp312-cp312-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp312-cp312-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
deea16f603fee2f15e51e6424e176d50f734f97e995bff59458e1b048e8da58c
BLAKE2b-256 checksum
How to use checksums
742ec94748981135e463fc985e4ac5d6fcb8b50cc2d0d9d336772a4e1e8f2d02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp312-cp312-macosx_10_13_x86_64.whl

Download URL cspyce-2.3.6-cp312-cp312-macosx_10_13_x86_64.whl
Size 2.0 MB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
9b35696960f326a1c8ce42343a2607871e74bebf67af81c71e761b05ecbbf8e0
BLAKE2b-256 checksum
How to use checksums
fdef443e440436bda31d0fd720e882cd3e9798313551417f780e1bed38f56d28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp311-cp311-win_amd64.whl

Download URL cspyce-2.3.6-cp311-cp311-win_amd64.whl
Size 1.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b4ccc10ce9d1686ced675f43c3c2270e19bd0ac305c1d09572c894d8f33643f2
BLAKE2b-256 checksum
How to use checksums
04857cbf53b5344aa95a1b6c735f70e19bed9ce885204c45363a38ae833ca123
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f5afe69cea25a07698f51b872d762d7f5475a03540f419bdbca820b2b8c0d220
BLAKE2b-256 checksum
How to use checksums
4bf55beb2f4f33ff4e8277ac3a18e7824a7cb4863b3453e4e77abd4ebab7baf2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp311-cp311-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp311-cp311-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dd804283c7da80d3d136bc74da9d37ce7d1cda65f40f9b78732995acb0be861e
BLAKE2b-256 checksum
How to use checksums
dca8b917513e2daedb48b7e2367b1ddca4a5500bcab60f20c10a16b92b95d326
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp311-cp311-macosx_10_9_x86_64.whl

Download URL cspyce-2.3.6-cp311-cp311-macosx_10_9_x86_64.whl
Size 2.0 MB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4ffa87ccff8048ebd4ca53f2e86c3e53711a3adf8b7b4c72722412db6186a181
BLAKE2b-256 checksum
How to use checksums
7a6e2bfac9c9b04df9f096000ac5c6d4fe0cb15daa1e365d73290df92f93364b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp310-cp310-win_amd64.whl

Download URL cspyce-2.3.6-cp310-cp310-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
052c48420e94a63d85593d360042a9ce92defec8c2e75ab0d0a6de672330cd80
BLAKE2b-256 checksum
How to use checksums
65527be4e4a6701406f0bf9a55f2ef32b695240e0390d3e1c971c95f638f6853
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2d46e121fc9083e028667ed1a731ef2bb977de87958ca80389d5ea143ef58414
BLAKE2b-256 checksum
How to use checksums
140cb6b07da0325b590b9d8ea4495353bef65727476f246284e0a23300d391e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp310-cp310-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp310-cp310-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2f9d4c77e861f1e2de73a1a5db449fa24767445aee3ba86d895cfdb8a6b19d2d
BLAKE2b-256 checksum
How to use checksums
71782ca468e8289573bff52f9ef7235f985196911beb802d2b5d2416b81fd4b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp310-cp310-macosx_10_9_x86_64.whl

Download URL cspyce-2.3.6-cp310-cp310-macosx_10_9_x86_64.whl
Size 2.0 MB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
ab329c6b7f53a5f508dafdfd28f5c246a1c18ce00e468ca6c6e05ea528b33665
BLAKE2b-256 checksum
How to use checksums
c87b8c63bb7ac7e5841bfd328a69c2b0c35a004fc9c66aee289017e599419bcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp39-cp39-win_amd64.whl

Download URL cspyce-2.3.6-cp39-cp39-win_amd64.whl
Size 1.9 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
b49bad8e14635e53081e3ad156eb7674d90d17c255ebddedd0b0d95be21a8a6c
BLAKE2b-256 checksum
How to use checksums
8a5f22219a1592a0fb9043a171b6639e317247c15d6e5f04c7225051bc0f8c8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL cspyce-2.3.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 6.6 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
13f5d863cb365a61fb74be40ab9f78fd9403ad0d4427a78899a06bf9649790bd
BLAKE2b-256 checksum
How to use checksums
dd68865fab58841ce03be762271ac7a4b29924974aa2c496e144efd60c567d86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp39-cp39-macosx_11_0_arm64.whl

Download URL cspyce-2.3.6-cp39-cp39-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2b7165a92fef09e862bad136dd0bef19e85c1ed90b7be658d7ef7c0f6903b9ca
BLAKE2b-256 checksum
How to use checksums
0635821d1308bfc6165eba4db3edc4eb72cbea0878d5b09eab026c60e5a53830
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / cspyce-2.3.6-cp39-cp39-macosx_10_9_x86_64.whl

Download URL cspyce-2.3.6-cp39-cp39-macosx_10_9_x86_64.whl
Size 2.0 MB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
c020bed92c960a86fd13048a90812a7fe97a554f22efd0158c69b79660b17359
BLAKE2b-256 checksum
How to use checksums
0b8e601ce86ccf2004460fcd8d7c4ab97991b617e24877839b11cf1d50c122bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

2.3.6 This release

29 release files

2.3.2

21 release files

2.3.1

17 release files

2.3.0

17 release files

2.2.6

21 release files

2.2.5

21 release files

2.2.4

21 release files

2.2.3

21 release files

2.2.2

21 release files

2.2.1

21 release files

2.2.0

21 release files

2.1.1

17 release files

2.0.8

22 release files

2.0.5

11 release files

2.0.4

11 release files

2.0.3

11 release files

2.0.2

1 release file

2.0.1

11 release files

2.0.0

1 release file

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