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

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(cache, norad_id, result.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.0.tar.gz (41.9 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.0-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: satchecker_client-0.1.0.tar.gz
  • Upload date:
  • Size: 41.9 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.0.tar.gz
Algorithm Hash digest
SHA256 15efd9f21e5ea55fa0b29d97fe37ee054baf84b838f6bccd8242ff6becb7329a
MD5 81916db6a89183520848bfc65f0d2c43
BLAKE2b-256 0b8c635e4add467262359ef59d7b85ffe02972bf2b3d5c3289b3718710e8a2d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for satchecker_client-0.1.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for satchecker_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1867c4cdb69f9183678fe33a9366116fa14113e129fddb4b8780235fbaa9f03a
MD5 e2d5b7f4634282957c3eb6082922b04c
BLAKE2b-256 72fb03a76f6a7eb3ba75cd2cb5e55df3e760325e6fff3c51daf0255463cdc7ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for satchecker_client-0.1.0-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

0.1.2

2 files

0.1.1

2 files

This release

0.1.0 This release

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