Skip to main content
Pre-release

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

Swift

A Python Robotics Package QUT Centre for Robotics Open Source

PyPI version PyPI - Python Version License: MIT

GitHub repository  |  Documentation (not yet published)

Swift is a light-weight browser-based animation visualizer which provides:

  • visualisation of mesh objects (Collada, STL, OBJ, glTF/GLB, PLY, VRML/WRL, and PCD files) and primitive shapes;
  • visualisation of multi-link robots created with the Robotics Toolbox for Python;
  • interactive UI controls (sliders, buttons, and more) for driving a scene from the browser;
  • recording and saving a video of the simulation;
  • source code which can be read for learning and teaching;

Built using Python and Javascript, Swift is cross-platform (Linux, MacOS, and Windows) while also leveraging the ubiquity and support of these languages.

A Panda arm following a slider-controlled target box in Swift

Swift provides robotics-specific functionality for rapid prototyping of algorithms, research, and education. Through the Robotics Toolbox for Python, Swift can visualise over 30 supplied robot models: well-known contemporary robots from Franka-Emika, Kinova, Universal Robotics, Rethink as well as classical robots such as the Puma 560 and the Stanford arm. Swift is under development and will support mobile robots in the future.

What's new in 2.0

Swift's browser frontend has been rebuilt from scratch as modern, dependency-free ES modules (no bundler, no framework, current three.js) — see this release's changelog for the full list. For existing users:

  • a bottom-left playback panel with a pause/play button and a realtime-speed selector (Max/1x/0.5x/0.25x) — see Playback controls below;
  • WebRTC support has been removed (comms="rtc", the vision install extra) — it had no live-camera use case and wasn't providing anything a plain WebSocket doesn't already handle for the normal desktop/browser setup this simulator targets;
  • env.add() is now four explicit methods — add_shape(), add_ui(), add_assembly(), add_robot() — one entry point per kind of thing, no type-checking required. env.add() still works and dispatches to these, kept for backward compatibility;
  • add_robot()/add_assembly() return an AssemblyHandle that owns that instance's live joint state (handle.q, handle.qd) — the robot model (or bare forward-kinematics function, for add_assembly()) stays plain and shareable, driven functionally (panda.fkine(handle.q), panda.jacobe(handle.q)). Setting robot.q/robot.qd directly still works but is deprecated;
  • any shape, assembly, or robot can take a per-step callbackcallback=lambda t, values: ... — invoked by env.step() with the current sim time and any named UI element values, returning the new pose (shape) or q (assembly/robot). Removes the need to hand-write a loop body that mutates pose/q each step;
  • UI elements take an optional name=, and their current value is kept in env.values — available to any callback as values[name] without writing a per-element setter function;
  • env.show() prints the current display list (every shape/assembly/robot/UI element, with its id and name if given) for debugging.

Examples

These build up from the simplest possible scene to a fully interactive one. All are in examples/ and runnable as-is.

Render a box

The simplest possible Swift scene: one shape, no motion.

import spatialgeometry as sg
from spatialmath import SE3
from swift import Swift

env = Swift()
env.launch(realtime=True)

box = sg.Cuboid([0.2, 0.2, 0.2], pose=SE3(0, 0, 0.1), color=[0.2, 0.4, 1.0, 1.0])
env.add_shape(box)

env.hold()  # keep the browser tab open

Render a box, with sliders to move it

Named sliders (name=...) push their current value into env.values; a per-step callback reads it from there and returns the box's new pose — no per-slider setter function, no manual pose assignment in the loop. The Z slider controls height above the floor (the box's bottom face, not its centre), so it's never possible to clip the box through the ground:

import time
import spatialgeometry as sg
from spatialmath import SE3
from swift import Swift, Slider

env = Swift()
env.launch(realtime=True)

SIDE = 0.2
box = sg.Cuboid([SIDE, SIDE, SIDE], pose=SE3(0, 0, SIDE / 2), color=[0.2, 0.4, 1.0, 1.0])


def box_pose(t, values):
    # z is height above the floor, not the box centre
    return SE3(values["x"], values["y"], values["z"] + SIDE / 2)


env.add_shape(box, callback=box_pose)

env.add_ui(Slider(lambda v: None, min=-0.5, max=0.5, step=0.01, value=0.0, desc="Box X", unit="m"), name="x")
env.add_ui(Slider(lambda v: None, min=-0.5, max=0.5, step=0.01, value=0.0, desc="Box Y", unit="m"), name="y")
env.add_ui(Slider(lambda v: None, min=0.0, max=0.6, step=0.01, value=0.0, desc="Box Z", unit="m"), name="z")

while True:
    env.step(0.05)
    time.sleep(0.05)

A 2-link arm, built from raw shapes (no robot model)

Before reaching for a full robot model, it's worth seeing what one actually automates. add_assembly(fk, parts) takes a pure forward-kinematics function — given the assembly's current q, return one world pose per part — plus the parts themselves, and swift builds and owns the handle for you. Here two elongated cuboids stand in for the links of a 2-revolute-joint arm:

import time
import numpy as np
import spatialgeometry as sg
from spatialmath import SE3
from swift import Swift, Slider

env = Swift()
env.launch(realtime=True)


class TwoLinkArm:
    """A pure kinematic model: two links, two revolute joints about z."""

    def __init__(self, L1=0.3, L2=0.25, thickness=0.03):
        self.L1 = L1
        self.L2 = L2
        self.link1 = sg.Cuboid([L1, thickness, thickness], color=[0.8, 0.2, 0.2, 1.0])
        self.link2 = sg.Cuboid([L2, thickness, thickness], color=[0.2, 0.4, 1.0, 1.0])

    def part_poses(self, q) -> list[SE3]:
        """World pose of each link, purely as a function of q. Each
        cuboid's local origin sits at its own proximal (joint) end, so
        Tx(length / 2) places its centre correctly."""
        joint1 = SE3.Rz(q[0])
        joint2 = joint1 * SE3.Tx(self.L1) * SE3.Rz(q[1])
        return [joint1 * SE3.Tx(self.L1 / 2), joint2 * SE3.Tx(self.L2 / 2)]


arm = TwoLinkArm()
handle = env.add_assembly(
    arm.part_poses,
    [arm.link1, arm.link2],
    q0=[0.0, 0.0],
    callback=lambda t, values: [values["q1"], values["q2"]],
)

env.add_ui(Slider(lambda v: None, min=-np.pi, max=np.pi, step=0.01, value=0.0, desc="Joint 1", unit="rad"), name="q1")
env.add_ui(Slider(lambda v: None, min=-np.pi, max=np.pi, step=0.01, value=0.0, desc="Joint 2", unit="rad"), name="q2")

while True:
    env.step(0.05)
    time.sleep(0.05)

TwoLinkArm is the kinematic model — shareable, and it knows nothing about its own current configuration. env.add_assembly() builds the piece that does: an AssemblyHandle owning live q, exactly what add_robot() (below) returns for a real rtb.Robot — same class either way. The leap from here to a full robot model is then just: a kinematic model with more than two links, described by roboticstoolbox instead of by hand.

Render a Panda

import roboticstoolbox as rtb
from swift import Swift

env = Swift()
env.launch(realtime=True)

panda = rtb.models.Panda()
handle = env.add_robot(panda)
handle.q = panda.qr

env.hold()  # keep the browser tab open

A box driven by pure kinematics (no interaction)

Not every scene needs sliders — a pose can just as easily be a function of time. Here a box orbits the origin on a circle of radius 3*W (W = box width), while the plane of that circle slowly tilts about the x-axis. Swift owns t and calls the callback each step, so there's no manual pose assignment in the loop:

import time
import spatialgeometry as sg
import spatialmath as sm
from swift import Swift

env = Swift()
env.launch(realtime=True)

W = 0.1
box = sg.Cuboid([W, W, W], color=[0.2, 0.4, 1.0, 1.0])


def orbit(t, values):
    return sm.SE3.Rx(t / 10) * sm.SE3.Rz(t) * sm.SE3.Tx(3 * W)


env.add_shape(box, callback=orbit)

dt = 0.02
while True:
    env.step(dt)
    time.sleep(dt)

Tx(3*W) places the box at the orbit radius; Rz(t) spins it around the circle; Rx(t/10), applied last (so in the world frame, after the orbit is computed), tilts the whole orbital plane about x — ten times slower than the orbit itself.

Worth knowing: the ground plane is solid and opaque, so once the tilt carries the box below z=0 it's genuinely hidden underneath the ground from a normal above-ground viewpoint — the same as burying a real box and looking down at the dirt, not a rendering glitch. This particular orbit has no z-offset, so it dips underground for part of every cycle by construction; add a z-offset to Tx/wrap it in a translation if you'd rather the whole orbit stayed above the floor.

Panda arm follows a target, positioned by sliders

The most complete example: a target box is positioned by three named sliders, and on every step the arm runs resolved-rate motion control (rtb.p_servo) towards wherever that box currently is — move a slider, the box moves, and the arm continuously chases it. Both the box's pose and the arm's q are computed by per-step callbacks reading from env.values, so the whole thing runs off a plain env.step() loop with no pose/q mutation inside it:

import time
import numpy as np
import roboticstoolbox as rtb
import spatialgeometry as sg
import spatialmath as sm
from swift import Swift, Slider

env = Swift()
env.launch(realtime=True)
dt = 0.05

panda = rtb.models.Panda()
handle = env.add_robot(panda)
handle.q = panda.qr

SIDE = 0.05
X0, Y0, Z0 = 0.5, 0.0, 0.3  # initial target position; z is height above the floor

# The gripper points straight down at the target
target_orientation = sm.SE3.Rx(np.pi)

target = sg.Cuboid(
    [SIDE, SIDE, SIDE],
    pose=sm.SE3(X0, Y0, Z0 + SIDE / 2) * target_orientation,
    color=[0.2, 0.4, 1.0, 1.0],
)


def target_pose(t, values):
    return sm.SE3(values["x"], values["y"], values["z"] + SIDE / 2) * target_orientation


env.add_shape(target, callback=target_pose)


def track_target(t, values):
    v, _ = rtb.p_servo(panda.fkine(handle.q), target.T, gain=1.0, threshold=0.01)
    qd = np.linalg.pinv(panda.jacobe(handle.q)) @ v
    return handle.q + qd * dt


handle.callback = track_target

env.add_ui(Slider(lambda v: None, min=0.2, max=0.7, step=0.01, value=X0, desc="Target X", unit="m"), name="x")
env.add_ui(Slider(lambda v: None, min=-0.4, max=0.4, step=0.01, value=Y0, desc="Target Y", unit="m"), name="y")
env.add_ui(Slider(lambda v: None, min=0.05, max=0.6, step=0.01, value=Z0, desc="Target Z", unit="m"), name="z")

while True:
    env.step(dt)
    time.sleep(dt)

Embed within a Jupyter Notebook

To embed within a Jupyter Notebook cell, use the browser="notebook" option when launching the simulator — any of the examples above work the same way, just swap the env.launch(...) line:

env.launch(realtime=True, browser="notebook")

Playback controls

Every non-headless session shows a small panel bottom-left of the browser view:

  • a pause/play button (||/) — also bound to the spacebar;
  • a realtime-speed selector (Max/1x/0.5x/0.25x) — 1x matches env.launch(realtime=True), Max matches the default (realtime=False, uncapped). env.launch(realtime=0.5) (a specific float, not just True/False) sets an initial speed directly.

Recording video

Any scene can be recorded straight from Python — call env.start_recording(...) around the part you want captured, env.stop_recording() when done. The .webm file downloads automatically once encoding finishes:

env.start_recording("my_recording", framerate=20, format="webm")

# ... normal env.step() loop, or any pose changes ...

env.stop_recording()

format also accepts "png"/"jpg" (frame sequences). "gif" currently captures real frames but doesn't reliably trigger a download yet — use "webm" for now if you need the file to actually save.

Installing

Using pip

Swift is designed to be controlled through the Robotics Toolbox for Python. By installing the toolbox through PyPI, swift is installed as a dependency

pip install roboticstoolbox-python

Otherwise, Swift can be install by

pip install swift-sim

Available options are:

  • nb provides the ability for Swift to be embedded within a Jupyter Notebook

Put the options in a comma-separated list like

pip install swift-sim[optionlist]

Swift requires Python 3.10 or later.

From GitHub

To install the latest version from GitHub

git clone https://github.com/jhavl/swift.git
cd swift
pip install -e .

Download files

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

Source Distribution

swift_sim-2.0.0rc1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distributions

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

swift_sim-2.0.0rc1-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

swift_sim-2.0.0rc1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

swift_sim-2.0.0rc1-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

swift_sim-2.0.0rc1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

swift_sim-2.0.0rc1-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

swift_sim-2.0.0rc1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

swift_sim-2.0.0rc1-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10Windows x86-64

swift_sim-2.0.0rc1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (2.8 MB view details)

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

swift_sim-2.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file swift_sim-2.0.0rc1.tar.gz.

File metadata

  • Download URL: swift_sim-2.0.0rc1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for swift_sim-2.0.0rc1.tar.gz
Algorithm Hash digest
SHA256 fd6f8c50456c34716f9fb82468ae1067c2460f6b2d247acc7d96920a8757c1cc
MD5 606b51190d28df2d552e15eefca08451
BLAKE2b-256 cedbe4eddbf7a6c3253e44fed236343c171d57354c4c2d42e4e0d3812a3b921c

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1.tar.gz:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 05323f1255a5a668bd2efa3d310b4651c39a2b1c1ea210032785af7e154ec6e8
MD5 d870470daf972863f6954766c7c5986b
BLAKE2b-256 7119a0c2403bc90db6400e4871ac0c2ca05c64185ad12f20b0ef2f7e978a764e

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp313-cp313-win_amd64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a049975beddbaa6dd1acb7ea35354bcdf18bf4aaef27be0c634367036b49da8e
MD5 028f7a46bba342676df72fd9e05d7516
BLAKE2b-256 4a553864449ca637e8c1c11952a907d6fd04b8a86dff0884341181bf631db44b

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 1b9df960c5a0acf1ce78dac6fc489193249990e31363cac57880d1361f6c343f
MD5 90fc529103652da4267cd38924c8f3c4
BLAKE2b-256 42691f0bed0d0186ae2367fda9dfbaf6f2554e6fe60e77c5bf14ccd82a2e8dc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1764d3ce75eef049a179d87d559619813a7b2af02e360fa2f3b4042973ce32ca
MD5 3a604592cca54766e6d21487cf5fe440
BLAKE2b-256 7922b859c11e5aa5d2b05bbd92b1003d1d8ccc79720e3cc37123a072c8fba87a

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 316a386e6f3e0baf3a726e304a97835a07ec93bd2010670d770b8a5c9db63862
MD5 5a81489698e78eb0cadc5e241934e186
BLAKE2b-256 8ed856abffa3775188cbd8d8bb4eea3a1e68c8b13a5c6c307ec9391778832636

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp312-cp312-win_amd64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 feee3ab3f84d330ebef93cf6c88dc1fe8b1904b9eaedae638c218fb7a87ab407
MD5 962bf37118279b3aa30b25924889be0d
BLAKE2b-256 39bbc164aaf6bf375a039f49b84863633dd3226bc38d97b0ee3dc83452a60f48

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f1aa0a603c05386d8f09ba6ff8e4f0c16a9b89dbcebc1aa12afab31e1c8df342
MD5 e9a6e4a958ea4a998370fc53eaeeec37
BLAKE2b-256 acaf227a58c17a558ea58496e12133ec926f580f59b10ab6ebf522b17fe96512

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d91f24586d2456ab009edcc9b5b19227025910acfb7438ca3c4b26e222e91bb
MD5 e1deff16e1ff37dfb00b4bed11f0ed8e
BLAKE2b-256 e24d48a75dfca8794d90f489083788f25e677dff35ba20549e66aa74b1cc8721

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1b051d360bc4d0b822b527d3c0b4d880ed66ac84f194c5a0d19c2573af43a3ef
MD5 00486f632826438e029daecac8b9e1ec
BLAKE2b-256 db776d9069a167e8f4c30ac48327ea0a75d8a13e6d728e95935f20c2a2efb4a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp311-cp311-win_amd64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4a9b4cd924a9049c83508a11096f88e2c634d593ae88334e1fc515754cc7d647
MD5 b068e37f5e62318371f1620620a83fc3
BLAKE2b-256 c8fcd40416a810deea43ed8b46297b763818d1cb95e6386f0df656d97ea83eed

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 adc6a8537d7e470f7df9d550243a7f90cf373a6034004f44d9dc7dda82c03a44
MD5 92c9ca4df43145f0368db086dd51fc1b
BLAKE2b-256 e358ae6c2b5d12cbee69ca9c97ad70c920ca73939fddc4f9a34832c789b4069f

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe025c9856a16e34af57c6d009397c66ea30298b7e53f00b120862e884c5990b
MD5 41ec9142102cdea6934be83ae5c70347
BLAKE2b-256 bbc46826511c00efb08684707d3064e48c2faf49dee61011b1ed2ef7ed751b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a69c2e7dea4af85d6eaa3d6855708c60193803497e7a7a08dbafa0d82488cc3b
MD5 e70cc60a753f85f9a4cfcf83b527ff4b
BLAKE2b-256 65923e373ad4bc9eeb9e7cb5060730e0d33773e0fef739f56619e5d0cf75f233

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp310-cp310-win_amd64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9fa652a09c03ab78b79e7bad32c2361f661cb17efd28a15c832aecd9f72eb948
MD5 16ad43a971cf368f73797004654a51a3
BLAKE2b-256 63409f828aba19f5aeca503ff31ba8156a69472b9e286bcc2a022feb55bca893

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 d4264564f0229602cf20bb14465f66e9832d72549dc6da1c1f2c397042ef28ab
MD5 1931a4afbac7196eb122a2e4fe0de6c4
BLAKE2b-256 5b51cb1581f109cc3d93ba19c2ee17a1e93f3c116086753c53f865830ed68c48

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

File details

Details for the file swift_sim-2.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swift_sim-2.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb0eaa8663d373ac20c100ebe858026128636b80dcc3ee9844a9ccacf2c955a9
MD5 4aabca38618017f6c130a8f7c78fcfcb
BLAKE2b-256 f0b011c492722c7411a88adf2d82792cbb55f396df978c9176a0bc3fd4cf66ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for swift_sim-2.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on jhavl/swift

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

Release history Release notifications | RSS feed

2.0.0

17 files

This release

2.0.0rc1 This release

17 files

1.1.0

30 files

1.0.1

30 files

1.0.0

14 files

0.10.0

13 files

0.9.6

13 files

0.9.5

17 files

0.9.4

2 files

0.8.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page