Skip to main content
Pre-release

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

XY-shaped probability field shown as a binned scatter chart.

CI CodSpeed Python 3.11+ Docs Launch the examples on Binder

XY is an extremely fast, interactive, customizable Python charting library for the web, notebooks, and static exports.

Charts are composed declaratively or through matplotlib conventions. You can fully customize them with Python, CSS, or Tailwind.

With small charts, every point is sent to the browser. For large charts, the Rust core computes only what the screen needs to display, based on its resolution. Pan, zoom, hover, and selection can show full details by running the same process for the new range, and a selection returns the original rows.

With XY we rendered the entirety of OpenStreetMap — a 10,000,000,000 point dataset. See the example →

[!IMPORTANT] XY is in alpha and is receiving frequent enhancements. ⭐️ Star the repo to follow the progress.

Is XY right for me?

XY is for Python users who want one flexible charting library for everything from everyday plots to custom application visuals and large datasets. Build a chart once, then use it in notebooks and web apps or export it as HTML, PNG, SVG, or PDF.

Installation

pip install xy

# or, with uv
uv add xy

Getting started

A chart is a container plus the marks inside it. Any sequence works; NumPy is optional.

import xy

chart = xy.line_chart(xy.line([1, 2, 3, 4, 5], [120, 180, 165, 240, 310]))
# chart.to_html("chart.html")
# chart.to_png("chart.png")
# chart.to_svg("chart.svg")
chart  # notebooks render it

The same API scales to a hundred million points as a density surface:

A hundred-million-point spiral rendered as a density surface, then zoomed until the surface resolves into individual points.

import numpy as np

import xy

rng = np.random.default_rng(7)
n = 100_000_000

r = 6.0 * rng.beta(1.2, 3.0, n)
theta = 2.9 * np.log1p(r) + rng.integers(0, 4, n) * (np.pi / 2) + rng.normal(0, 0.045 + 0.016 * r, n)

chart = xy.scatter_chart(
    xy.scatter(
        r * np.cos(theta),
        r * np.sin(theta),
        color=np.exp(-r / 2.2),
        colormap="magma_r",
        density=True,
        opacity=0.85,
        # Grow and solidify markers once a view drills through to real rows.
        size=2.5,
        zoom_size_factor=2.6,
        zoom_opacity=0.95,
    ),
    xy.theme(
        background="#ffffff", plot_background="#ffffff", grid_color="#e6e6e1",
        axis_color="#c3c2b7", text_color="#0b0b0b",
    ),
    title="100 million points",
)
chart

Coming from matplotlib

For common pyplot workflows, change the import and keep the plotting code:

import numpy as np
import xy.pyplot as plt

x = np.linspace(0, 10, 200)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), "r--", label="signal")
ax.legend()
plt.show()

See the compatibility guide; not all charts and functionality are supported yet.

Customize every layer

Use Python to control the chart, from marks and axes to interactions and layout.

  • Marks: Control color, size, opacity, symbols, gradients, strokes, curves, and colormaps.
  • Guides: Customize axes, ticks, grids, annotations, legends, colorbars, and tooltips.
  • Interaction: Add pan, zoom, hover, selections, crosshairs, callbacks, and linked charts.
  • Layout: Create layers and facets, set responsive dimensions, and apply themes.
chart = xy.line_chart(
    xy.line(x, y, color="#7c3aed", width=3),
    class_name="rounded-xl bg-white",
    class_names={"tooltip": "rounded-lg bg-zinc-900 text-white"},
)

See the styling guide for examples. For a detailed breakdown of what can be customized, see the capability matrix.

Benchmarks

Live interactive charts, 10k to 100M points. Every library gets every row and is driven through its own input path in a real browser. The clock stops only when the canvas is both correct (planted sentinel points verified lit) and stable (10 byte-identical frames), so progressive renderers are charged until their last chunk lands.

Time until every point is on screen, 10k to 100M points, for XY, Matplotlib, and Plotly. Lower is better.

XY holds 0.071 s at 10k and 0.081 s at 100M, flat across four orders of magnitude, because above 200k rows it draws a screen-bounded density surface instead of one marker per row, and zoom drills back to exact rows. Every exact-marker path scales with N instead: Matplotlib crosses a second at ~3M and reaches 13.4 s at 50M; Plotly crosses at ~2.5M and reaches 9.8 s at 25M.

The pale line is XY with density=False: the same engine drawing one marker per row, no aggregation credit. It renders 100M exact markers in 1.34 s on 5.26 GiB.

Time until every point is on screen, in seconds. ✕ is a size the library did not render: Plotly never finishes constructing the figure at 50M, and Matplotlib draws at 100M but never resolves the zoom that follows.

Points 10k 100k 500k 1M 2.5M 5M 10M 25M 50M 100M
XY speedup 1× 2× 3× 4× 9× 16× 34× 89× 177× —
XY 0.071 0.072 0.075 0.084 0.083 0.089 0.083 0.077 0.076 0.081
XY (density=False) 0.085 0.074 0.087 0.098 0.111 0.144 0.206 0.424 0.645 1.343
Matplotlib (WebAgg) 0.086 0.115 0.224 0.357 0.758 1.424 2.804 6.838 13.385 ✕
Plotly (scattergl) 0.341 0.373 0.477 0.614 1.033 1.785 3.367 9.794 ✕ ✕

Peak Python-side resident memory, in GiB. Browser memory is tracked separately and excluded here, since a headless Chrome resides ~1 GiB before drawing anything.

Points 10k 100k 500k 1M 2.5M 5M 10M 25M 50M 100M
XY advantage 1.8× 1.7× 1.9× 2.1× 2.1× 2.4× 2.6× 2.9× 2.8× —
XY 0.05 0.05 0.06 0.07 0.13 0.19 0.32 0.70 1.36 2.58
XY (density=False) 0.05 0.05 0.07 0.10 0.18 0.31 0.57 1.35 2.66 5.26
Matplotlib (WebAgg) 0.09 0.09 0.12 0.15 0.28 0.46 0.84 2.06 3.85 ✕
Plotly (scattergl) 0.21 0.18 0.28 0.36 0.60 1.05 1.86 4.70 ✕ ✕

One machine (Apple M5 Pro), one run per cell; at the small end the timings carry roughly ±10 ms of run-to-run spread.

For the environment, methodology, per-size videos, and raw results, see the benchmark runbook and competitive benchmark specification.

Embed XY in a Reflex app

The Reflex integration bundled with xy turns any XY chart into a regular Reflex component, with no JavaScript, iframe, or separate chart service. Install the reflex extra to select a compatible framework version:

pip install "xy[reflex]"

# or, with uv
uv add "xy[reflex]"

The import namespace remains reflex_xy. Register the integration once:

# rxconfig.py
import reflex as rx
import reflex_xy

config = rx.Config(
    app_name="dashboard",
    plugins=[reflex_xy.XYPlugin()],
)

Then add a chart anywhere in the component tree:

import reflex as rx
import reflex_xy
import xy

signups = xy.line_chart(
    xy.line([1, 2, 3, 4, 5], [120, 180, 165, 240, 310]),
    title="Weekly signups",
)


def index() -> rx.Component:
    return rx.card(
        rx.heading("Growth"),
        reflex_xy.chart(signups, height="320px"),
        width="100%",
    )


app = rx.App()
app.add_page(index)

For state-driven charts, declare the chart in the page and supply columns from a @reflex_xy.data state method — the structure (channels, colormaps, axes) is validated when reflex run compiles the app, while the columns ride the app's own websocket as binary buffers, never through Reflex state:

from typing import TypedDict

import numpy as np
import reflex as rx
import reflex_xy


class CloudData(TypedDict):
    x: np.ndarray
    y: np.ndarray
    mag: np.ndarray


class Dash(rx.State):
    points: int = 200_000

    @reflex_xy.data
    def cloud(self) -> CloudData:
        rng = np.random.default_rng(7)
        x = rng.normal(size=self.points)
        y = x * 0.6 + rng.normal(scale=0.6, size=self.points)
        return {"x": x, "y": y, "mag": np.hypot(x, y)}


def dashboard() -> rx.Component:
    return reflex_xy.scatter_chart(
        data=Dash.cloud,
        x="x", y="y", color="mag", colormap="viridis",
        height="460px",
    )

Hover, pan, and zoom keep working. For charts driven by Reflex state, events, or live streams, see the Reflex integration guide and the runnable example app.

Examples

Each notebook fetches its rows from the linked public source; no raw datasets are stored in this repository. Counts describe the featured chart, and the notebooks scale further. See the example guide for sources, workload controls, and setup.

Gaia DR3 · HR diagram
250,000 plotted stars

Gaia DR3 stellar color versus absolute magnitude.

Open notebook
gnomAD v4.1 · allele frequency
164,000 plotted variants

gnomAD allele frequency across all autosomes.

Open notebook
Pan-UKBB · Manhattan plot
814,294 plotted variants

Pan-UKBB standing-height associations across all autosomes.

Open notebook
Dukascopy · EUR/USD ticks
101,427 plotted ticks

Dukascopy EUR/USD midpoint quotes.

Open notebook
LIGO · GW150914 strain
16,777,216 raw · 3,441 shown

GWOSC reconstructed Hanford waveform for GW150914.

Open notebook
NYC TLC · taxi pickup density
300,000 pickup records

Locally projected NYC yellow-taxi pickup hexbin density.

Open notebook

How it works

Most chart stacks serialize every value as JSON and ask the browser to draw every mark. XY keeps exact values in a ColumnStore, computes a level of detail in Rust, and transfers typed binary buffers. Decimated and density views are bounded by the visible result.

flowchart TB
    API["Python API<br/>Build the chart"]
    STORE["ColumnStore<br/>Keep canonical f64 columns"]
    CORE["Native Rust compute<br/>Direct · decimated · density"]
    PAYLOAD["Compact payload<br/>Data-less JSON spec + typed binary buffers"]
    RENDER["Browser or notebook<br/>WebGL2 marks · Canvas axes · DOM interface"]

    API --> STORE --> CORE --> PAYLOAD --> RENDER

So a dense overview can aggregate while a narrow view returns exact points. With a live host, pan and zoom request a refined payload. Canonical f64 data stays in Python, so hover and selection still return original rows.

For the full design, see the design dossier.

Roadmap

Broad 2D coverage first, then geographic, 3D, and volume visualization. Queued next, no dates implied:

  • Categorical distributions: strip, swarm, beeswarm, boxen, rug
  • Regression diagnostics: trendline, residual, QQ, PP
  • Scatter matrix and joint plots: SPLOM, pair grid, marginal histograms
  • Pie / donut: xy.pie_chart(labels, values, hole=...) ships over unequal-width core polar bars, with Matplotlib-shaped helpers in xy.pyplot; nested donuts and variable-radius composition remain
  • Candlestick / OHLC and finance overlays: SMA, VWAP, Bollinger, RSI, MACD; prototyped, awaiting a fresh landing
  • Waterfall and funnel
  • Treemap, sunburst, and icicle
  • Gauge / indicator: build on the shipped polar axes and composable radial marks
  • Slope, bump, and dumbbell
  • 3D and volume: scatter, surfaces, meshes, isosurfaces, and volumetric views

The full ranked backlog is in the chart roadmap. Want a chart or feature that isn't listed? Open an issue.

Metadata

Release files for xy 0.0.7a2

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

Source distribution (sdist)

Source distribution for xy 0.0.7a2
File Size Uploaded
xy-0.0.7a2.tar.gz 1.6 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for xy 0.0.7a2
File
xy-0.0.7a2-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
xy-0.0.7a2-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
xy-0.0.7a2-py3-none-win32.whl Python 3 none Windows x86-32 Details
xy-0.0.7a2-py3-none-pyemscripten_2026_0_wasm32.whl Python 3 none PyEmscripten 2026.0+ WebAssembly Details
xy-0.0.7a2-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
xy-0.0.7a2-py3-none-musllinux_1_2_armv7l.whl Python 3 none Linux musl 1.2+ ARMv7l Details
xy-0.0.7a2-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
xy-0.0.7a2-py3-none-manylinux_2_17_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
xy-0.0.7a2-py3-none-manylinux_2_17_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details
xy-0.0.7a2-py3-none-manylinux_2_17_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
xy-0.0.7a2-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
xy-0.0.7a2-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 22.0 MB

Release files / xy-0.0.7a2.tar.gz

Download URL xy-0.0.7a2.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
aec3fe5ddb0e2ff68a0932e32e664ae0c7d3dcc833b9177ded9e17c40294de70
BLAKE2b-256 checksum
How to use checksums
524ba00cd9b25a846a3cb8116bfd8352babca6dc39046bf558110f475bca4c35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-win_arm64.whl

Download URL xy-0.0.7a2-py3-none-win_arm64.whl
Size 1.6 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
258f8c279781bc4ac8f560aff22df4724eb9d965b1899c6660c9f76e55c9eb67
BLAKE2b-256 checksum
How to use checksums
1a1221f4f00da89acbd6a08f42c4a6d3d681a7ab8ec0a9c603254bd2c1268111
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-win_amd64.whl

Download URL xy-0.0.7a2-py3-none-win_amd64.whl
Size 1.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a70166b2ea1964272e4ddab097dce1190e8b5a07770631b3b4fda4c4959b59f0
BLAKE2b-256 checksum
How to use checksums
ffa9f8b13dc997403cd4694f9144856b5d4df77faa5737de91688cc08ada8e5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-win32.whl

Download URL xy-0.0.7a2-py3-none-win32.whl
Size 1.7 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
70bdea1be1a1caa399571f3214f4ed67d3a1bbace7100bf0b690d3de924bbbff
BLAKE2b-256 checksum
How to use checksums
3df64498d9d1a468905c390299eba894f8803f60288591e1f327aaf35e7543d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-pyemscripten_2026_0_wasm32.whl

Download URL xy-0.0.7a2-py3-none-pyemscripten_2026_0_wasm32.whl
Size 1.4 MB
Tags PyEmscripten 2026.0+ WebAssembly Python 3
SHA-256 checksum
How to use checksums
c6c22d6ffa994908b56ff5670248def6447f3193d26104b36f6684badeabaab0
BLAKE2b-256 checksum
How to use checksums
3b85c6f7c86b4595c50782845c782075c2a699b7289066f08ea960931901fa6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-musllinux_1_2_x86_64.whl

Download URL xy-0.0.7a2-py3-none-musllinux_1_2_x86_64.whl
Size 1.8 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
edc2b87f02c659674eb88258aecc749e8d19e1adf8e1c98782bd307f840a8281
BLAKE2b-256 checksum
How to use checksums
197d248b7491f0cf515d9c75d95b7edaf9cc3ba0154dff286b74ea62cf1fce27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-musllinux_1_2_armv7l.whl

Download URL xy-0.0.7a2-py3-none-musllinux_1_2_armv7l.whl
Size 1.7 MB
Tags Linux musl 1.2+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
4a264172643e6a0cec35816eb5cac249988e87b0a03f13efdcb9608c2c2414b8
BLAKE2b-256 checksum
How to use checksums
9113e6c6c6205b16eb8e76e4d57d09320553f0340404851d51b4312bc7da7467
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-musllinux_1_2_aarch64.whl

Download URL xy-0.0.7a2-py3-none-musllinux_1_2_aarch64.whl
Size 1.7 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
d54fa8a708dd7ffbafb221d62f6281a07152a4ecbf8254d99f1cbf0903575fce
BLAKE2b-256 checksum
How to use checksums
99795e70bad282cbc3e092a0c08f8e29bebe32f463fbb63cfaf326357b625bfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-manylinux_2_17_x86_64.whl

Download URL xy-0.0.7a2-py3-none-manylinux_2_17_x86_64.whl
Size 1.8 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
d9e775ce45ecfa7e1fc7e1f9b0135214b249dbe5ea810fded844210d31eca56e
BLAKE2b-256 checksum
How to use checksums
bb03b444117cf03ddbc6124c7ba87f47e7471bb98a2e2c8a7821d6ec4006052e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-manylinux_2_17_armv7l.whl

Download URL xy-0.0.7a2-py3-none-manylinux_2_17_armv7l.whl
Size 1.7 MB
Tags Linux glibc 2.17+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
39a822e1c3ec6a52cab100fe123b2b4bf1d1303c7903e1b2ceaeb091ff768a2f
BLAKE2b-256 checksum
How to use checksums
c7b042250054fff8d0da7931c7a7bd24a4efd6f07193ab03fe4b02df9531fa24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-manylinux_2_17_aarch64.whl

Download URL xy-0.0.7a2-py3-none-manylinux_2_17_aarch64.whl
Size 1.7 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
2d71dd29756ad93d814f1da9abe23641dfc8d483fcff4a380f48f6ee4c7bc1ae
BLAKE2b-256 checksum
How to use checksums
149f25babbaac4a97e09a1c622949c8181c18acee4ca4d63b7d00e851728bd99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-macosx_11_0_arm64.whl

Download URL xy-0.0.7a2-py3-none-macosx_11_0_arm64.whl
Size 1.7 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
eda9113745b5859170c4d9938fb7b5230a4d3d2b05977085bd0f29a20313fd45
BLAKE2b-256 checksum
How to use checksums
3c810c5753f0f54b20e7990d38e1792056bfb1783da2ac5fa669b5cef67e20fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xy-0.0.7a2-py3-none-macosx_10_12_x86_64.whl

Download URL xy-0.0.7a2-py3-none-macosx_10_12_x86_64.whl
Size 1.7 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b4637cd8d61856386f4494deacab92432bf30e272ee18dc9ea2121497ef08ebd
BLAKE2b-256 checksum
How to use checksums
b138f43ce8e748fb87c4c29e2e6edc6143570cd00c9691e54703bdc658d1c441
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.0.7

13 release files

This release

0.0.7a2 This release

13 release files

0.0.4

13 release files

0.0.3

13 release files

0.0.2

12 release files

0.0.1

8 release 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