Skip to main content

What is Quadrants Typing?

A typing layer for the quadrants, plus PEP 561 type stubs for the quadrants package itself. Installing this one package gives quadrants users both:

  • quadrants_typing — generic Vec, Mat, NDArray, dimension, and dtype types for annotating quadrants kernels. Import it under the conventional alias:

    import quadrants_typing as qdt
    import quadrants as qd
    
    @qd.kernel
    def add(
        x: qdt.NDArray[qd.i32, qdt.Dim1], 
        y: qdt.NDArray[qd.i32, qdt.Dim1],
    ) -> None:
        for i in range(x.shape[0]):
            x[i] = y[i]
    
  • Automatic quadrants stubs — type checkers (pyright, mypy) discover the bundled quadrants-stubs package via PEP 561 with no configuration, so import quadrants is fully typed.

Quadrants Replacements

Type annotations replaces directly some quadrants functions, mostly from qd.types. Here is a full table:

  • N,R,C in {1,2,3,4,5,6,7,8}
  • dtype n {qd.u8, qd.u16, qd.u32, ... etc.}
Description qdt version qd version Example
Concrete tensor type qdt.NDArray[qd.<dtype>, Dim<N>] qd.types.NDArray[qd.<dtype>, <N>] qdt.NDArray[qd.i32, Dim3]
Templated tensor type qdt.NDArray[T, DimAny] qd.types.ndarray(dtype=None, ndim=None) def f[T: (qd.i32, qd.f32)](arr: qdt.NDArray[T, DimAny])
Vector type qdt.Vec[qd.<dtype>, Dim<N>] qd.types.vector(<N>, qd.<dtype>) qdt.Vec[qd.f32, Dim3]
Matrix type qdt.Mat[qd.<dtype>, Dim<R>, Dim<C>] qd.types.matrix(<R>, <C>, qd.<dtype>) qdt.Mat[qd.f32, Dim3, Dim4]
Compile-time value qdt.Template[T] qd.template() qdt.Template[bool]

If you would like to construct tensors with a rank greater than 8, or vectors and matrices with any dimension longer than 8, you can. See weird_hacks example for how to create the annotation, or use qd.types.vector or qd.types.matrix if you only need a constructor (e.g. for a local array).

Examples

Runnable, annotated example programs live in examples/. Run one by name:

pixi run example init_ndarray

How Finished is This?

Not at all! There's lots of work still to be done :P. Please help!

Omissions

Names present in quadrants that we intentionally do not stub in qdt, with the reason / recommended alternative:

Intentional

  • qd.types.struct: use dataclasses.dataclass
  • qd.types.NDArray: superseded by qdt.NDArray[qd.<dtype>, Dim<N>]
  • qd.types.ndarray: superseded by qdt.NDArray[T, DimAny]
  • qd.types.Template: superseded by qdt.Template[T]
  • qd.template: superseded by qdt.Template[T]

Todo

  • qd.types.ref: todo(real_func)
  • qd.types.quant.* (int, float, fixed): todo(field)
  • qd.types.sparse_matrix_builder: todo(sparse_matrix)
  • quadrants.lang.simt.grid, .tile_slicing: todo(simt) — simt.block, .warp, .subgroup (incl. its reductions/sorting re-exports) are stubbed

Download files

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

Source Distribution

quadrants_typing-0.2.1.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

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

quadrants_typing-0.2.1-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file quadrants_typing-0.2.1.tar.gz.

File metadata

  • Download URL: quadrants_typing-0.2.1.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quadrants_typing-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ec0dd498cb0099800dc56689d00430f936115b0cba891cb747a57b3d9d0686cc
MD5 651843436c55c0f3bc6e747b970a532f
BLAKE2b-256 c678b39979e37de539159001f2a101bb6374c46a70edb4581823e3e24ef677fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for quadrants_typing-0.2.1.tar.gz:

Publisher: publish.yml on D0liphin/quadrants-typing

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

File details

Details for the file quadrants_typing-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for quadrants_typing-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 64b10b7d57f2788dd183883977066cf3fada8c21b06a6701a7952220aa5f0085
MD5 6fc7307844f58d5e41a8bee1a443bc77
BLAKE2b-256 0b5896fd7a8aac5cb421d286712295d0833127b76a768e674089b6f49365853b

See more details on using hashes here.

Provenance

The following attestation bundles were made for quadrants_typing-0.2.1-py3-none-any.whl:

Publisher: publish.yml on D0liphin/quadrants-typing

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

Release history Release notifications | RSS feed

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.0

2 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