Skip to main content

Isadora Logo

ISADORA - ICAO 1983 Compliant International Standard Atmosphere (ISA)

Isadora is a lightweight, precise, and Pythonic implementation of the International Standard Atmosphere (ISA) model. It provides atmospheric properties (temperature, pressure, density, dynamic and kinematic viscosity, speed of sound) at any geopotential altitude.

The package is fully unit-aware, supporting SI, USCS, and Imperial units, and validated against ICAO 1983 reference tables.

Ideal for aerospace engineers, researchers, and students, Isadora simplifies atmospheric computations while ensuring accuracy and unit safety.

Features

  • Compute unit-aware atmospheric properties at any geopotential height.
  • Compute derived quantities: Mach number, dynamic pressure, geometric height.
  • Support for multiple unit systems: SI (default), USCS, Imperial.
  • Physical constants implemented using type-safe, immutable units.
  • Fully ICAO 1983 compliant calculations.
  • Pytest-tested for physical consistency, numerical correctness, and unit integrity.

Installation

Install via pip:

pip install isadora

Or clone the repository and install locally:

git clone https://github.com/techkaduna/isadora.git
cd isadora
pip install .

Dependencies

  • Python >= 3.10
  • mudu – unit and measurement library
  • dataclasses (Python 3.10+ has it built-in)
  • pytest – for running the test suite

Quick Start

Import the package and create an ISA atmosphere:

from isadora import ISA

# Create an ISA atmosphere at 5 km geopotential height
atm = ISA(geopotential_height=5)

print("Temperature:", atm.temperature)
print("Pressure:", atm.pressure)
print("Density:", atm.density)
print("Dynamic Viscosity:", atm.dynamic_viscosity)
print("Kinematic Viscosity:", atm.kinematic_viscosity)
print("Speed of Sound:", atm.speed_of_sound)
print("Mach Number at 20 m/s:", atm.mach_number(20))
print("Geometric Height:", atm.geometric_height)

Switching Units

Change the global unit system using UnitRegistry:

from isadora.units import UnitRegistry

# Set to USCS units
UnitRegistry.set_unit_standard("USCS")

atm_uscs = ISA(geopotential_height=10)
print("Temperature (USCS):", atm_uscs.temperature)
print("Pressure (USCS):", atm_uscs.pressure)

Derived Quantities

The ISA object provides convenient methods:

  • atm.mach_number(velocity) – computes Mach number for a given velocity.
  • atm.dynamic_pressure(velocity) – computes dynamic pressure at altitude.
  • atm.geometric_height – converts geopotential height to geometric height.
  • atm.speed_of_sound – sound speed at the specified altitude.

Testing

Run the full Pytest test suite:

pytest -v tests/

Tests cover:

  • ICAO 1983 reference validation
  • Physical consistency (hydrostatic equilibrium, monotonicity)
  • Derived quantities (Mach, dynamic pressure, geometric height)
  • Unit system correctness and conversion

References

  • International Civil Aviation Organization (ICAO), 1983, Standard Atmosphere Tables
  • U.S. Standard Atmosphere, 1976, NASA

License

MIT License. See LICENSE file for details.

Contributing

Contributions are welcome! Follow PEP 8 style, include tests for new features, and submit via GitHub Pull Requests.

Contact

Author: Kolawole Andrew
GitHub: https://github.com/techkaduna/isadora
Email: andrewolakola@gmail.com

Metadata

Release files for isadora 1.2.0

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

Source distribution (sdist)

Source distribution for isadora 1.2.0
File Size Uploaded
isadora-1.2.0.tar.gz 16.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for isadora 1.2.0
File Interpreter ABI Platform
isadora-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.6 kB

Release files / isadora-1.2.0.tar.gz

Download URL isadora-1.2.0.tar.gz
Size 16.8 kB
Tags Source
SHA-256 checksum
How to use checksums
95e26cf1ff2fa8d8188db9762824905f11a542597d766e8be843339c0c2a5e23
BLAKE2b-256 checksum
How to use checksums
925812cd95cd9d4ab58e5d023979f3b6be0732a3ff35f6b899a3ab5ca7bf9442
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / isadora-1.2.0-py3-none-any.whl

Download URL isadora-1.2.0-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65f896b1b565994dd4f0f687e0b519b263f7477b68bff5bed423f7128b243aec
BLAKE2b-256 checksum
How to use checksums
12e4950ede4206a36aeedbd464630c3e1c4423354cd2064ccf6d90764fa9dfaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 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