Skip to main content

satchecker-client

A small Python client for the IAU CPS SatChecker service, which publishes nearest-epoch satellite orbital records — TLEs up to the 2026-07-12 archive handover, OMM element sets after it. No account or credentials are needed.

Unofficial. This is a third-party client written for the TABASCAL and tab-sim radio-astronomy packages. It is not published, endorsed, or maintained by the IAU CPS SatHub team, who develop the SatChecker service itself. The distribution name deliberately avoids satchecker so that name stays available to them.

What it does

  • Transport — both nearest-record endpoints, with normalised column sets and a typed error hierarchy that separates a per-satellite miss from a service outage or a rate limit.
  • Parsing — TLE line parsing including Alpha-5 catalogue numbers and checksums, plus the element range and finiteness checks both record kinds share.
  • Kind dispatch — one place that knows how TLE and OMM records differ, so callers spanning the archive handover do not thread a format flag through their own code.
  • Caching — a validated, atomically-written per-NORAD JSON store.
  • Batching — bounded-concurrency fetches that stop on the first sign the service itself is the problem rather than working through the rest of a list.

What it does not do

It takes no view on which record your observation should use. Source precedence, how stale a record may be before it is refused, and whether missing coverage is fatal are application policy and stay with the caller.

Install

pip install satchecker-client

Full documentation, including the usage guide and API reference, is at satchecker-client.readthedocs.io.

Use

import satchecker_client as sc

# Identify your application to the service operators. Optional, but the service
# is a courtesy to the community and shared traffic is easier to reason about
# when it is attributable.
sc.set_client_identifier("my-app/1.0")

epoch_jd = 2460800.5
norad_ids = [25544, 48274]

# nearest_endpoints_for picks TLE, OMM, or both, based on where the epoch falls
# relative to the archive handover.
for label, fetch in sc.nearest_endpoints_for(epoch_jd):
    result = sc.fetch_nearest_batch(norad_ids, epoch_jd, fetch_nearest=fetch, endpoint=label)
    if result.outage is not None:
        raise result.outage          # the service, not this satellite
    for norad_id, err in result.errors.items():
        print(f"{norad_id}: {err}")  # this satellite, keep going
    print(result.records)

Records are pandas rows; ask record_kind, record_epoch_jd and record_elements about one rather than testing for columns yourself.

Caching a fetch for reuse across nearby epochs:

cache = sc.TextOrbitCache("~/.cache/my-app/orbits")
sc.store_or_warn(
    lambda: cache.store(norad_id, result.records),
    cache.path(norad_id),
    "nearest records",
)
known = cache.get(norad_id)

Development

pip install -e ".[test]"
pytest

The tests block outbound network access via an autouse fixture, so the suite runs offline and never touches the live service.

Licence

MIT — see LICENSE. Extracted from TABASCAL, which is GPL-3.0; this client is relicensed by its copyright holder so that a thin API client is not the thing that constrains what it can be built into.

Download files

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

Source Distribution

satchecker_client-0.1.2.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

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

satchecker_client-0.1.2-py3-none-any.whl (34.0 kB view details)

Uploaded Python 3

File details

Details for the file satchecker_client-0.1.2.tar.gz.

File metadata

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

File hashes

Hashes for satchecker_client-0.1.2.tar.gz
Algorithm Hash digest
SHA256 de153f1791f28365a0003bde2b0b65987b510dc875aa1d9fb286c0dc1c51922c
MD5 a2046b6927b7df751cc4014397e389cc
BLAKE2b-256 596b5e3094851809d496c5268b72f9def132c74ed710a2734b32adfd7265d1ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for satchecker_client-0.1.2.tar.gz:

Publisher: release.yaml on epfl-radio-astro/satchecker-client

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

File details

Details for the file satchecker_client-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for satchecker_client-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 67c3e722cd0e86ed569a6882287a971c1d3664106b9055b4f86484b23702ca44
MD5 0671f8f7d18e26ac63c0e86a36440455
BLAKE2b-256 abab59d0c9a9f2c58433a7325b93aabe0667b9d4cd372fc0f10256e9eb4a607f

See more details on using hashes here.

Provenance

The following attestation bundles were made for satchecker_client-0.1.2-py3-none-any.whl:

Publisher: release.yaml on epfl-radio-astro/satchecker-client

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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

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