Skip to main content

Dead-simple, ultra-fast digital signal processing.

Project description

doppler — signal, shifted

Dead-simple, ultra-fast digital signal processing.

CI Docs PyPI Python License: MIT

C99 Rust uv Ruff

doppler is a C99 DSP library: NCO, FIR filter, FFT, polyphase resampler, DDC, and NATS-based signal streaming. Python and Rust wrap the same C core — no second implementation, no divergence, full SIMD throughput from any language.

NavigateQuick Start · Architecture · Examples · Guides

API ReferenceC API · Python: FFT · Python: Spectral · Python: Waveform · Python: Resample · Python: Filter · Python: Measurement · Python: DDC · Python: Accumulator


Why it's built this way

Every algorithm lives in C exactly once. The Python layer is type conversion and lifetime bridging — a few hundred lines of glue, not a reimplementation. Bugs get fixed once, benchmarks reflect real hardware, and a C transmitter talks to a Python subscriber without surprises.

Performance

On a Ryzen 7 AI 350 (-O2): NCO raw accumulator ~15 GSa/s, LO CF32 ~1.8 GSa/s, FIR CF32 ~900 MSa/s, FFT CF32 (N=4096) ~180 MSa/s, polyphase resampler (2× decim) ~70 MSa/s. Run make bench to measure on your hardware.

Quick start

Python

from doppler.spectral import FFT
import numpy as np

x = np.random.randn(1024).astype(np.complex64)
X = FFT(1024).execute_cf32(x)

C

#include <fft/fft_core.h>

fft_state_t *fft = fft_create(1024, -1, 1);  /* n, sign, nthreads */
fft_execute_cf32(fft, in, 1024, out);        /* in,out: float complex[1024] */
fft_destroy(fft);

Build

jbx install-deps        # install system deps (detects OS/distro)
make                    # C library
make pyext              # + Python bindings
make test               # CTest suite
make bench              # benchmarks

Docs

Full docs: doppler-dsp.github.io/doppler

Licensing

MIT. The core C library is pure C99 and links only -lm. Its FFT uses the vendored pocketfft (BSD-3-Clause) for double precision and arbitrary sizes, and the vendored PFFFT (Pommier/FFTPACK, BSD) for the native single-precision SIMD path. The optional stream component (libdoppler_stream) vendors nats.c (Apache-2.0).

Project details


Download files

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

Source Distribution

doppler_dsp-0.32.0.tar.gz (11.8 MB view details)

Uploaded Source

Built Distributions

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

doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp314-cp314-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp313-cp313-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp312-cp312-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp311-cp311-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (2.3 MB view details)

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

doppler_dsp-0.32.0-cp310-cp310-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

doppler_dsp-0.32.0-cp39-cp39-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file doppler_dsp-0.32.0.tar.gz.

File metadata

  • Download URL: doppler_dsp-0.32.0.tar.gz
  • Upload date:
  • Size: 11.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for doppler_dsp-0.32.0.tar.gz
Algorithm Hash digest
SHA256 26900350278dba8d3573537e8fdb5485b832bc795eb0685b7fcf1c6bc255b9a6
MD5 812060c0a853b88809b9bffbc8970539
BLAKE2b-256 95a089cdacfb14aa706e5dbb08a3c8a3576821e396d2f1fa1450af0e3e34b9b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0.tar.gz:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50e77e36e2eed6422080a8437c6f458b9fb0fbf2ff58573362ca13052e50efd0
MD5 5427bcdc1f1cc59ab00ed35ce800ac38
BLAKE2b-256 46a10ed22cfc47470b7154f619eac4b289971696785192cec4506d4ccf926673

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a2c093dcde6800cdc76aa8f8268c1fdf8f570937fddc07498f6c6e57bb035b0e
MD5 3f69b137ea0ac9c3935b65bf9371ea95
BLAKE2b-256 b910bf377dc72f63b6a19c59025e6b63066c5ff4365dd88b43a4f205e59e7588

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fd9caec054ab731649b1cb75789d3c5133d1ac7d6080d724b2cc12f387667812
MD5 e90b9b4477f837c13ddc6243634872aa
BLAKE2b-256 7d1fde17bd7f54c34246c80f14db0dfa8ba4007a54fd23fc1b078100c3113359

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48f24ab97acdfea5dd2d3572e934cdbd6bdaea41df17198839b6143a4779f0b5
MD5 6e803ec29567bc69aac618c64b1202b3
BLAKE2b-256 6c40e35f6ba433dfd8cf585cdca95410eb593ad5ee77f6a59fcf3089d7ab3934

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ece6e8902b2ffc051eb8d2982019138abfe36752f01a6e3cd9c11f3e641af6be
MD5 b07c780b90734b73db34a2843d58830d
BLAKE2b-256 c522e46de82ccf05f821b5a8eeee07a3ab37394f9496a0e7a67e46aa9cd7fc50

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a7042bbafe08db34d3e319f7ce0957ee1cb55db62e2bb93381217f1129ce2f56
MD5 c44b1bb422f7e3916bdef5671696b722
BLAKE2b-256 c3b9efd90dc4a7c0a48a9ce31903aa70231f9821582fcdc9b93de7620dcbe142

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b78012121e47803f9b1520eb5bacaaed3a4832ca49ad1a59ef9cb9e6ae64d69
MD5 7bb649c4a3e03bf4cd386f989f242117
BLAKE2b-256 9089f9727ee850e7ccc13774718861f8f2f64142c3d5f11189c258c20f1412ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 703e21842fc30c30b88e332bc3e5a362b5f57d55ea5417af9a631703159f0fef
MD5 09ac7b300e5a8067489799467b29c0d6
BLAKE2b-256 09ec09cce089d3a064451b06b71e1f0134f943ed6c336636fe89880da7ded300

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5ac707a7e64d8ea0aa3d91bda69f41e5aabe669f0a87fd15e1b5b919675dce64
MD5 86613f8aee68a4b6e2c01907e50f0f2f
BLAKE2b-256 577c98c58c6e98a3b6224d0aa6cba1b3833713a1da2320d0058ea29ae9d8aefb

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6efdff4c2342e84ac82c0c0b44fd5d80259bae236311f793b9c07de733727aab
MD5 2e9c9f054739cfbe03815518d93fc834
BLAKE2b-256 29af0fba68028124f25340bff0f799ff2fb2b9e7129ba1e3dcdeba1b5c43e578

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0bea37d7d3af0ef29366450e16b5bec89d3e63990bf1f548ccce6dc941e6b6c5
MD5 db9fa1d49b2d4632bdf8111dacb734ae
BLAKE2b-256 6ec15065d63e3b1d4e82ca25278b4a104493b117285ed7faac673092d77370d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d086e93ea6949d6ac3c07ca40891435656a44b4b4163dcefbf24329b2c89e139
MD5 a22b969a746fca9ad0ebb851fae121e1
BLAKE2b-256 355e6827c0e8752d357ddcafb9a648724c50a260aa2528aca6e84a76f41d611b

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3645b8f13d26ce5557145f00d3e08fb7ba61c06aaf8e99bd419e38f46bcf46bf
MD5 a9f7a569baf65a9324f1a5f25c80a022
BLAKE2b-256 1b1c0aa443988e98d00b29f06b498e3993e76782b0fcf78a1ebb4706135b5efb

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ea1d41f6efccaa663f8ab3eb99e01baf5f21494512c69139e8c8794f8fc76f22
MD5 2ee676ce0432f8eff8ba971cd7607e36
BLAKE2b-256 d6104210c98623f78db321bdefcb6618020c2a6e927a41df9a6775ae7b9613dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 74d783b5e8b07dc699b3794f93f5e3ca6fb4153571bb1c318226a617d1af13fc
MD5 6637db50095fd24f271692786f1f1471
BLAKE2b-256 c76bda2e167e372de1a9b5c81149b3d6b33165750fe6e5ad1f71fec15c132c13

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8128ffb0b60207eae6f15e9417306b1f114711a707b2138e8898abe5087518ad
MD5 fc8afd43d1f6f91ff963748c49ecf5a9
BLAKE2b-256 fd4e6b1544350ca1520e5409fb3f663814a476ec5de1565508b66c35df2986d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ec0be10676548d3504d37b9b6959fe09fc01a5ef5ea080aa280cd42d30c68926
MD5 3602e95a85c75688b4dd88c3aa6a0eed
BLAKE2b-256 5b4a36f7719172d7130542d4da5966a79e6970329298c6459c0d437978d24c2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

File details

Details for the file doppler_dsp-0.32.0-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for doppler_dsp-0.32.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e2fde7051521db74d2982af2a2b049614be367eff183ab0c762b55b90425f4fd
MD5 67324a6671c5df0103917247b124c073
BLAKE2b-256 60d8cc8703fd3e6e826ea2e7f341b407e5079191dbedb57bd33494a603f8f7b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for doppler_dsp-0.32.0-cp39-cp39-macosx_14_0_arm64.whl:

Publisher: release.yml on doppler-dsp/doppler

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

Supported by

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