Skip to main content

Pre-compiled CDO (Climate Data Operators) binary distributed as a Python package — backend for Skyborn

Project description

skyborn-cdo

Pre-compiled CDO (Climate Data Operators) distributed as a pip-installable Python package.

This is a backend module for Skyborn — an atmospheric science research toolkit.

About CDO 2.6.0

This package bundles CDO 2.6.0 with all required dependencies. For detailed CDO documentation and release information, see:

Installation

pip install skyborn-cdo

This installs a pre-compiled CDO binary along with all required libraries (NetCDF, HDF5, ecCodes, FFTW3, PROJ, UDUNITS2). No system-level CDO installation needed.

Optional dependencies

# xarray support (returnXArray)
pip install skyborn-cdo[xarray]

# Test dependencies
pip install skyborn-cdo[test]

Supported platforms

Platform Architecture Status
Linux x86_64 ✅ Supported
macOS arm64 (Apple Silicon) ✅ Supported
Windows x86_64 ✅ Supported

Quick Start

from skyborn_cdo import Cdo

cdo = Cdo()
print(cdo.version())  # CDO 2.6.0

Usage

skyborn-cdo provides two API styles — command-line style and method-call style — both covering all 900+ CDO operators.

1. Command-line Style — cdo()

Pass a full CDO command string, just like typing in a terminal. The leading cdo prefix is optional.

from skyborn_cdo import Cdo

cdo = Cdo()

# With 'cdo' prefix (copy/paste from terminal)
cdo("cdo -O mergetime in1.nc in2.nc out.nc")

# Without 'cdo' prefix (also valid)
cdo("mergetime in1.nc in2.nc out.nc")

# Complex command with options
cdo("-O -f nc4 sellonlatbox,0,30,0,30 input.nc output.nc")

# Chained operators (CDO pipe syntax)
cdo("-O -f nc4 -fldmean -sellonlatbox,70,140,10,55 input.nc output.nc")
cdo("-O -f nc4 -sp2gpl -setgridtype,regular input.nc output.nc")

2. Method-call Style — cdo.operator()

Each of CDO's 900+ operators is available as a Python method via dynamic dispatch.

from skyborn_cdo import Cdo

cdo = Cdo()

# Basic: operator(parameters, input=..., output=...)
cdo.sellonlatbox("0,30,0,30", input="input.nc", output="output.nc")

# No parameters needed
cdo.copy(input="input.nc", output="output.nc")
cdo.topo(output="topo.nc")

# Multiple input files (space-separated string or list)
cdo.mergetime(input="in1.nc in2.nc in3.nc", output="merged.nc")
cdo.mergetime(input=["in1.nc", "in2.nc", "in3.nc"], output="merged.nc")

# Wildcard / glob patterns (automatically expanded)
cdo.mergetime(input="data_2020*.nc", output="merged.nc")
cdo.mergetime(input="/path/to/data_20200?.nc", output="merged.nc")
cdo.ensmean(input="ensemble_*.nc", output="ensmean.nc")

Wildcards: Both cdo.operator(input="*.nc") and cdo("mergetime *.nc out.nc") support glob patterns (*, ?, [...]). Files are sorted alphabetically before being passed to CDO.

3. Options

CDO options like -O (overwrite), -s (silent), -f nc4 (output format) can be set globally or per-call.

# Global options — applied to every command
cdo = Cdo(options="-O -s")
cdo.copy(input="in.nc", output="out.nc")

# Per-call options — merged with global options
cdo = Cdo()
cdo.copy(input="in.nc", output="out.nc", options="-O -f nc4")

# Common options:
#   -O          Overwrite existing output files
#   -s          Silent mode (suppress informational messages)
#   -f nc4      Output in NetCDF4 format
#   -f nc4c     Output in NetCDF4 classic format
#   -f grb2     Output in GRIB2 format
#   -P 4        Use 4 threads for parallel processing

⚠️ Important: CDO does not overwrite existing output files by default. If the output file already exists, CDO will raise an error: Outputfile out.nc already exists! Use -O to enable overwriting: cdo = Cdo(options="-O") or pass options="-O" per call.

4. Info Operators (return text output)

Operators like info, sinfo, griddes, showname, etc. return their text output as a string instead of writing to a file.

cdo = Cdo()

# File information
info = cdo.sinfo(input="input.nc")
print(info)

# Grid description
grid = cdo.griddes(input="input.nc")
print(grid)

# Show variable names
names = cdo.showname(input="input.nc")
print(names)

# Show timestamps
dates = cdo.showdate(input="input.nc")
print(dates)

# Number of time steps / levels / variables
print(cdo.ntime(input="input.nc"))
print(cdo.nlevel(input="input.nc"))
print(cdo.nvar(input="input.nc"))

5. Return as xarray / netCDF4 / numpy

# Return as xarray.Dataset (requires: pip install skyborn-cdo[xarray])
ds = cdo.sellonlatbox("0,30,0,30", input="input.nc", returnXArray=True)
print(ds)

# Return as netCDF4.Dataset (requires: pip install netCDF4)
nc = cdo.copy(input="input.nc", returnCdf=True)
print(nc.variables.keys())

# Return as numpy array (first variable)
arr = cdo.copy(input="input.nc", returnArray=True)
print(arr.shape)

# Return as masked numpy array
marr = cdo.copy(input="input.nc", returnMaArray=True)

6. Chained Operators (Pipeline)

CDO supports nesting operators in a single command. This is the most powerful feature for building complex processing pipelines.

Command-line style (recommended for complex chains)

cdo = Cdo(options="-O")

# Remapping → Spatial selection → Field mean
cdo("-f nc4 -fldmean -sellonlatbox,70,140,10,55 -remapbil,r180x90 input.nc output.nc")

# Spectral mode conversion pipeline
cdo("-f nc4 -sp2gpl -setgridtype,regular input_spectral.nc output_regular.nc")

# Arithmetic pipeline
cdo("-addc,273.15 -mulc,0.01 input.nc output.nc")

# Conditional masking
cdo("-ifthen -gtc,0 topo.nc topo.nc positive_topo.nc")

Method-call style (using input as sub-command)

cdo = Cdo(options="-O")

# Use CDO operator syntax in the input parameter for chaining
cdo.remapbil("r360x180", input="-mergetime in1.nc in2.nc in3.nc", output="out.nc")
cdo.fldmean(input="-sellonlatbox,70,140,10,55 input.nc", output="mean.nc")
cdo.timmean(input="-sellonlatbox,0,360,-30,30 -remapbil,r180x90 input.nc", output="out.nc")

7. Common Operator Examples

Spatial Operations

cdo = Cdo(options="-O")

# Select region by longitude/latitude box
cdo.sellonlatbox("70,140,10,55", input="global.nc", output="china.nc")

# Select by grid index box
cdo.selindexbox("1,100,1,80", input="input.nc", output="subset.nc")

# Remap to regular grid
cdo.remapbil("r360x180", input="input.nc", output="1deg.nc")     # Bilinear
cdo.remapcon("r360x180", input="input.nc", output="1deg.nc")     # Conservative
cdo.remapnn("r360x180", input="input.nc", output="1deg.nc")      # Nearest neighbor
cdo.remapdis("r360x180", input="input.nc", output="1deg.nc")     # Distance weighted

# Zonal / Meridional mean
cdo.zonmean(input="input.nc", output="zonmean.nc")
cdo.mermean(input="input.nc", output="mermean.nc")

# Invert latitude direction
cdo.invertlat(input="input.nc", output="flipped.nc")

Time Operations

cdo = Cdo(options="-O")

# Time averaging
cdo.timmean(input="input.nc", output="time_avg.nc")
cdo.timstd(input="input.nc", output="time_std.nc")
cdo.timmin(input="input.nc", output="time_min.nc")
cdo.timmax(input="input.nc", output="time_max.nc")

# Monthly / Seasonal / Yearly statistics
cdo.monmean(input="input.nc", output="monthly_mean.nc")
cdo.seasmean(input="input.nc", output="seasonal_mean.nc")
cdo.yearmonmean(input="input.nc", output="yearly_mean.nc")

# Select time steps
cdo.selyear("2020", input="input.nc", output="year2020.nc")
cdo.selmon("1,2,3", input="input.nc", output="jan_mar.nc")
cdo.seltimestep("1/10", input="input.nc", output="first10.nc")

# Set time axis
cdo.settaxis("2020-01-15,12:00,1mon", input="input.nc", output="redate.nc")

# Merge time series
cdo.mergetime(input="jan.nc feb.nc mar.nc", output="q1.nc")

# Split by month / year
cdo.splitmon(input="input.nc", output="monthly_")
cdo.splityear(input="input.nc", output="yearly_")

# Detrend
cdo.detrend(input="input.nc", output="detrended.nc")

Field Statistics

cdo = Cdo(options="-O")

# Field (spatial) statistics
cdo.fldmean(input="input.nc", output="fldmean.nc")
cdo.fldstd(input="input.nc", output="fldstd.nc")
cdo.fldmin(input="input.nc", output="fldmin.nc")
cdo.fldmax(input="input.nc", output="fldmax.nc")
cdo.fldsum(input="input.nc", output="fldsum.nc")

Arithmetic

cdo = Cdo(options="-O")

# Scalar operations
cdo.mulc("2.0", input="input.nc", output="doubled.nc")
cdo.addc("273.15", input="celsius.nc", output="kelvin.nc")
cdo.divc("100", input="input.nc", output="divided.nc")
cdo.subc("273.15", input="kelvin.nc", output="celsius.nc")

# Unary operations
cdo.abs(input="input.nc", output="absolute.nc")
cdo.sqrt(input="positive.nc", output="sqrt.nc")

# Two-file operations
cdo.add(input="a.nc b.nc", output="sum.nc")
cdo.sub(input="a.nc b.nc", output="diff.nc")
cdo.mul(input="a.nc b.nc", output="product.nc")
cdo.div(input="a.nc b.nc", output="ratio.nc")

# Custom expression
cdo.expr("'new_var=temp*2+precip;'", input="input.nc", output="computed.nc")

Vertical Level Operations

cdo = Cdo(options="-O")

# Select specific levels
cdo.sellevel("85000,50000,20000", input="input.nc", output="levels.nc")

# Interpolate to new levels
cdo.intlevel("90000,85000,70000,50000,30000", input="input.nc", output="interp.nc")

# Show levels
print(cdo.showlevel(input="input.nc"))

Grid Type Conversion & Spectral Transforms

cdo = Cdo(options="-O")

# Convert grid type
cdo.setgridtype("regular", input="input.nc", output="regular.nc")

# Spectral ↔ Grid-point transforms
cdo.sp2gpl(input="spectral.nc", output="gaussian_linear.nc")
cdo.sp2gp(input="spectral.nc", output="gaussian.nc")
cdo.gp2sp(input="gaussian.nc", output="spectral.nc")

# Complex chain: spectral to regular grid in NetCDF4
cdo("-O -f nc4 -sp2gpl -setgridtype,regular spectral.nc regular.nc")

Format Conversion

cdo = Cdo(options="-O")

# NetCDF formats
cdo.copy(input="input.nc", output="out.nc", options="-f nc4")     # NetCDF4
cdo.copy(input="input.nc", output="out.nc", options="-f nc4c")    # NetCDF4 Classic
cdo.copy(input="input.nc", output="out.nc", options="-f nc2")     # NetCDF 64-bit

# GRIB formats
cdo.copy(input="input.nc", output="out.grb", options="-f grb")    # GRIB1
cdo.copy(input="input.nc", output="out.grb2", options="-f grb2")  # GRIB2

Variable Metadata

cdo = Cdo(options="-O")

# Rename variable
cdo.chname("old_name,new_name", input="input.nc", output="renamed.nc")

# Set attributes
cdo.setattribute("varname@units=kg/m2", input="input.nc", output="units.nc")

# Set missing value
cdo.setmissval("-999", input="input.nc", output="newmiss.nc")

Ensemble Operations

cdo = Cdo(options="-O")

# Ensemble mean (multiple realizations)
cdo.ensmean(input="run_*.nc", output="ensemble_mean.nc")

# Ensemble standard deviation
cdo.ensstd(input="run_*.nc", output="ensemble_std.nc")

# Ensemble variance
cdo.ensvar(input="run_001.nc run_002.nc run_003.nc", output="ensemble_var.nc")

# Ensemble sum
cdo.enssum(input=["member_1.nc", "member_2.nc", "member_3.nc"], output="ens_sum.nc")

# Ensemble percentiles
cdo.enspctl("25,50,75", input="run_*.nc", output="ensemble_quartiles.nc")

Grid Information and Modification

cdo = Cdo(options="-O")

# Calculate grid cell areas
cdo.gridarea(input="input.nc", output="grid_areas.nc")

# Calculate grid weights (for weighted averaging)
cdo.gridweights(input="input.nc", output="weights.nc")

# Set grid type
cdo.setgridtype("regular", input="curvilinear.nc", output="regular.nc")

# Show grid description
print(cdo.griddes(input="input.nc"))

# Invert latitude direction (flip N-S)
cdo.invertlat(input="input.nc", output="flipped.nc")

Advanced Statistical Operations

cdo = Cdo(options="-O")

# Field percentiles
cdo.fldpctl("10,50,90", input="input.nc", output="field_percentiles.nc")

# Field range (max - min)
cdo.fldrange(input="input.nc", output="field_range.nc")

# Time series percentiles
cdo.timpctl("25,50,75", input="timeseries.nc", output="time_percentiles.nc")

# Running mean (e.g., 5-timestep window)
cdo.runmean("5", input="input.nc", output="smoothed.nc")

# Trend removal
cdo.detrend(input="input.nc", output="detrended.nc")

8. Error Handling

skyborn-cdo captures all CDO errors and raises them as CdoError exceptions with full diagnostic information.

from skyborn_cdo import Cdo, CdoError

cdo = Cdo()

try:
    cdo.sellonlatbox("0,30,0,30", input="nonexistent.nc", output="out.nc")
except CdoError as e:
    print(f"Error: {e}")
    print(f"Return code: {e.returncode}")
    print(f"CDO stderr: {e.stderr}")
    print(f"Command: {e.cmd}")

Common errors:

  • File not found: Open failed on >file.nc< No such file or directory
  • Output exists: Outputfile out.nc already exists! → Add -O option
  • Invalid parameters: Float parameter >abc< contains invalid character
  • Timeout: CDO command timed out after 60s → Increase timeout

9. Timeout

# Global timeout for all commands (seconds)
cdo = Cdo(timeout=300)

# Per-call timeout override
cdo.remapcon("r3600x1800", input="input.nc", output="hires.nc", timeout=600)
cdo("cdo -O remapcon,r3600x1800 input.nc hires.nc", timeout=600)

10. Debug Mode

# Print executed commands and CDO stderr output
cdo = Cdo(debug=True)
cdo.sellonlatbox("0,30,0,30", input="input.nc", output="output.nc")
# [skyborn-cdo] Running: /path/to/cdo -sellonlatbox,0,30,0,30 input.nc output.nc
# [skyborn-cdo] stderr: cdo    sellonlatbox: ...

11. Getting Help

Python API — cdo.help()

from skyborn_cdo import Cdo

cdo = Cdo()

# Help for a specific operator
print(cdo.help("sellonlatbox"))
print(cdo.help("mergetime"))
print(cdo.help("remapbil"))

# General usage summary
print(cdo.help())

# List all available operators
print(cdo.operators())

# Check if an operator exists
cdo.has_operator("sellonlatbox")  # True

CLI — skyborn-cdo -h / --help

# Show general help
skyborn-cdo --help

# Show help for a specific CDO operator (passed to CDO directly)
skyborn-cdo -h sellonlatbox
skyborn-cdo -h mergetime
skyborn-cdo -h remapbil

# List all operators
skyborn-cdo --operators

# Also works via python -m
python -m skyborn_cdo --help
python -m skyborn_cdo -h sellonlatbox

CLI

The package provides a skyborn-cdo command-line tool (also available as python -m skyborn_cdo):

# Show installation info and CDO version
skyborn-cdo --info

# Show help
skyborn-cdo --help

# Operator-level help (forwarded to CDO)
skyborn-cdo -h sellonlatbox

# List all operators
skyborn-cdo --operators

# Pass-through to CDO (any CDO command works)
skyborn-cdo -O -f nc4 copy input.nc output.nc
skyborn-cdo mergetime in1.nc in2.nc out.nc
skyborn-cdo -O -f nc4 -sp2gpl -setgridtype,regular spectral.nc regular.nc

CDO Operators

skyborn-cdo provides access to 938 CDO operators covering all aspects of climate data processing. Check operator availability:

cdo = Cdo()
print(len(cdo.operators()))  # 938
cdo.has_operator("sellonlatbox")  # True
print(cdo.help("sellonlatbox"))  # Get operator documentation

Operator Categories

Category Count Examples Use Cases
Time Operations 208 timmean, timstd, mergetime, seldate, monmean, yearsum Time series analysis, temporal statistics, date/time selection
Statistical 222 fldmean, fldstd, ensmean, timavg, zonmean, mermean Spatial/temporal statistics, ensemble analysis
Spatial Selection 35 sellonlatbox, selindexbox, selgrid, sellevel, selcode Regional extraction, level selection
Grid/Remapping 64 remapbil, remapcon, remapnn, setgrid, gridarea Grid conversion, interpolation, regridding
Arithmetic 60 add, mul, expr, addc, sqrt, log Mathematical operations, calculations
Vertical Levels 13 ml2pl, intlevel, pressure, sealevelpressure Model level conversion, vertical interpolation
Format/IO 47 copy, merge, split, cat, import_*, output* File operations, format conversion
Info/Query 50 info, showname, griddes, ntime, showdate File inspection, metadata extraction
Spectral/Grid Transform 28 sp2gp, gp2sp, sp2gpl, fourier Spectral transforms, Fourier analysis
Others 211 Specialized operators for specific domains Advanced climate computations

Total: 938 operators

Are All Operators Useful?

Commonly used (daily work): ~80-100 operators

  • Space: sellonlatbox, remapbil, remapcon, zonmean, mermean
  • Time: mergetime, timmean, monmean, yearsum, seldate, selyear
  • Statistics: fldmean, fldstd, fldmin, fldmax, ensmean
  • Arithmetic: add, sub, mul, div, addc, mulc, expr
  • Info: sinfo, showname, griddes, ntime

Specialized operators (400+): Domain-specific

  • Meteorology: sealevelpressure, ml2pl, geopotheight
  • Oceanography: detrend, dmean, seasmean
  • Climate indices: eca_* (extreme climate events), ydrun* (running means)
  • Statistical analysis: trend, regres, corr, eof
  • Spectral analysis: sp2gp, gp2sp, dft, filter

Legacy/Niche operators (400+): Less frequently used but available

  • Format-specific imports (import_cmsaf, import_grads)
  • Experimental features (remapavgtest, remapcon2test)
  • Highly specialized computations

How to decide if you need an operator:

# Search operators by keyword
cdo = Cdo()
time_ops = [op for op in cdo.operators() if 'time' in op]
print(f"Time-related: {len(time_ops)} operators")  # 208

# Get detailed help for any operator
print(cdo.help("operator_name"))

CDO Version

This package bundles CDO 2.6.0 with the following libraries:

  • NetCDF-C 4.9.x
  • HDF5 1.14.x
  • ecCodes 2.40+
  • FFTW3 3.3.10
  • PROJ 9.5.x
  • UDUNITS2 2.2.28

Exact library versions vary by platform (Linux/macOS build from source, Windows uses MSYS2 packages).

What's New in CDO 2.6.0

New operators

Operator Description
varsskew Ensemble skewness across input files (VarsStat group)
varskurt Ensemble kurtosis across input files (VarsStat group)
varsmedian Ensemble median across input files (VarsStat group)
varspctl Ensemble percentile across input files, e.g. varspctl,90
symmetrize Mirrors data at the equator (creates symmetric fields)
splitensemble Splits GRIB2 ensemble members into separate files

New global options

Option Description
--query Pre-selects a subset of the data cube from a dataset
--async_read true|false Reads input data asynchronously; available for diff, info, trend, detrend, Timstat operators

Performance improvements

  • Significant performance improvement for reading HEALPix zarr datasets with NCZARR.

Bug fixes

  • fillmiss: wrong result when fewer than 4 valid neighbours available [Bug #12341]
  • chparam: failed since release 2.5.3 [Bug #12328]

Usage examples

cdo = Cdo()

# VarsStat: compute skewness / kurtosis / median across an ensemble
cdo.varsskew(input=["mem1.nc", "mem2.nc", "mem3.nc"], output="skew.nc")
cdo.varskurt(input=["mem1.nc", "mem2.nc", "mem3.nc"], output="kurt.nc")
cdo.varsmedian(input=["mem1.nc", "mem2.nc", "mem3.nc"], output="median.nc")
cdo.varspctl("90", input=["mem1.nc", "mem2.nc", "mem3.nc"], output="pct90.nc")

# Symmetrize: mirror a field at the equator
cdo.symmetrize(input="topo.nc", output="topo_symmetric.nc")

# Global async read option (speeds up supported operators)
cdo("--async_read true -diff file1.nc file2.nc")

API Reference

Cdo class

Parameter Type Default Description
cdo_path str None Path to CDO binary (auto-discovered if None)
options str "" Default CDO options (e.g. "-O -s -f nc4")
env dict None Custom environment variables
debug bool False Print commands and stderr
timeout int None Default timeout in seconds

Operator method parameters

Parameter Type Description
First positional arg str Operator parameters (e.g. "0,30,0,30")
input str or list Input file(s)
output str Output file path
options str Additional CDO options for this call
timeout int Timeout override
returnXArray bool Return as xarray.Dataset
returnCdf bool Return as netCDF4.Dataset
returnArray bool Return as numpy.ndarray
returnMaArray bool Return as masked numpy.ndarray

Utility methods

Method Returns Description
cdo.help() str General usage summary
cdo.help("operator") str CDO help text for a specific operator
cdo.version() str CDO version string
cdo.operators() set All available CDO operator names
cdo.has_operator(name) bool Check if an operator exists
cdo.cleanup() Remove temporary files

CdoError exception

Import: from skyborn_cdo import CdoError

Attribute Type Description
returncode int CDO exit code
stderr str Full CDO error output
cmd str Command that failed

Development

git clone --recurse-submodules https://github.com/QianyeSu/skyborn-cdo.git
cd skyborn-cdo
pip install -e ".[test]"
pytest tests/

Author

Qianye Su
Email: suqianye2000@gmail.com
GitHub: @QianyeSu

License

This Python wrapper is licensed under BSD-3-Clause.

CDO itself is licensed under BSD-3-Clause by MPI für Meteorologie. See LICENSE for details.

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

skyborn_cdo-2.6.0.1.tar.gz (3.1 MB view details)

Uploaded Source

Built Distributions

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

skyborn_cdo-2.6.0.1-cp314-cp314-win_amd64.whl (45.3 MB view details)

Uploaded CPython 3.14Windows x86-64

skyborn_cdo-2.6.0.1-cp314-cp314-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.1-cp314-cp314-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

skyborn_cdo-2.6.0.1-cp313-cp313-win_amd64.whl (44.4 MB view details)

Uploaded CPython 3.13Windows x86-64

skyborn_cdo-2.6.0.1-cp313-cp313-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.1-cp313-cp313-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

skyborn_cdo-2.6.0.1-cp312-cp312-win_amd64.whl (44.4 MB view details)

Uploaded CPython 3.12Windows x86-64

skyborn_cdo-2.6.0.1-cp312-cp312-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.1-cp312-cp312-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

skyborn_cdo-2.6.0.1-cp311-cp311-win_amd64.whl (44.4 MB view details)

Uploaded CPython 3.11Windows x86-64

skyborn_cdo-2.6.0.1-cp311-cp311-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.1-cp311-cp311-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

skyborn_cdo-2.6.0.1-cp310-cp310-win_amd64.whl (44.4 MB view details)

Uploaded CPython 3.10Windows x86-64

skyborn_cdo-2.6.0.1-cp310-cp310-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.1-cp310-cp310-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

skyborn_cdo-2.6.0.1-cp39-cp39-win_amd64.whl (44.4 MB view details)

Uploaded CPython 3.9Windows x86-64

skyborn_cdo-2.6.0.1-cp39-cp39-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.1-cp39-cp39-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file skyborn_cdo-2.6.0.1.tar.gz.

File metadata

  • Download URL: skyborn_cdo-2.6.0.1.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for skyborn_cdo-2.6.0.1.tar.gz
Algorithm Hash digest
SHA256 865fea179a5b7351d03b925d07f716384084dd34ed7b12d74536765128a3a77e
MD5 6e629ebb2f3d11917ce3e76f91153201
BLAKE2b-256 9fc9837fa5fb0b3b93d0a704c61a2cb6c58b54a12bf66e8a8f7234951a9ec187

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ba3c6ca4f2290d6b4af45b0125c231da8f466db45b0a2856e069f9462e94d72c
MD5 a80bac0d9a1d9350f63f018647aea751
BLAKE2b-256 66d44b8a239052ace52eebcc4035631a090dbbace979d3cddd7db42580b4ef60

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6ceecb10d48a30e12084346970faf96eca0c8125e9a283e7279ffc6f94ec5c37
MD5 796c1f421ce6de3906a8714e3095f276
BLAKE2b-256 9f0a2e7e5ccb6bcfce29dc7cfcca2ae34ab1ce7e11bff1f549fac4e0cbbd8aca

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 685261856a63d0fee4a76b63b7066233c20ceb8864157480ae0068b0670dee10
MD5 41588f401dcdbc81931a18d33b95a1a9
BLAKE2b-256 e14a86bd37def95f6e8910b11dce5477e51335939a09f06540dbe129b5582944

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1f6d54bf132e77d9d4471efa36809b6243f0339ddb0aa8d2e2c313d832488b25
MD5 b28ea144e08c29f3fd4df8b220518bd2
BLAKE2b-256 bcb69e59c2fea7e7af77c971a126a591e5bbaaabb7dc137e2f81cd9a575a28fe

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1205cf2727d40884d1203c21dfd21d334bca32977e709a78927595a2c21d8484
MD5 0ad29341bfec0c524bbb1cb2a1d763a6
BLAKE2b-256 31971ed24588c2512050109665fb61f2b83a93ac8c3ecc0f24f90025c7c814fe

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 07e41b039b64370464e6caa9452580ac188469e8e8594b6753522660a2ee1cea
MD5 95257358a1f357ca108cf7c473e9557a
BLAKE2b-256 47effe456382e626a8c1f9d68a27f62b02cce610484ca0ef7d21fe0346aadb1a

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 906574d90a09b6ed09a9b8e30eabe99c1e05126d1cc994ec4fc8c8cbcc21aa21
MD5 a69cf258aca4f3a300a1bb896d391791
BLAKE2b-256 851ea6251fd6f3a8de0f4bb32b09e5c9c11dcf0b9fcb918b7e1eb642bd7b5538

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16248200a30c867225cdea5e5aae5fa8e54f621d4f05df8e95b1e6aa8cfff079
MD5 69ccee84aac799542d29c2b79803304e
BLAKE2b-256 e78b9c9bb69d85054896764faa9b2b253b3d7de0e0b08ca1c365b8e5bc7c5a6b

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9537f57079bad8ff471584ad331d006b6f2f50685922843c6f7edbedddd029aa
MD5 dbdb7ffdefabd3301df1c86d8bc704ee
BLAKE2b-256 e70d71339d28d6dc4fdc321d92200364c5c9031533221739f6da2a85a98fa8d7

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6adeda8720d9be27003887855a735ce2e97fc7a861f942f6d2c8634ea0cc4952
MD5 244a1a4de9497b36f10ed19465430731
BLAKE2b-256 f3222e123a670b033565f6cb62a1d5d9dfe3b4c4c7753f39a201524b31778414

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7ca952b4713218a7ea372a4232519fcc2ce27a94b2a8a18698ce1a38a71ad29
MD5 14fc4371ef589884a5cbf4257f26ecb5
BLAKE2b-256 b333b380284f68571edb5f013700ba8c8bbd80054d1360a771dfff7e4c8e9a2d

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f492d1a1c984fe1a4251b1e9b322db1d1d724eed84f201de6038fc953e99c6d6
MD5 0a6d75bce9cbfb4c6fb6aa3230997cb7
BLAKE2b-256 c0c0964bf436198e9dcf1d52e9560b6f9b620553ccfa2c1d94a38647d71a0540

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c65b323f1aeb3995f4c7043b62dad2bfc41465009e77ff98c5e2b9e7b83f2e02
MD5 7b06885a80bc9a423824e722e0efd791
BLAKE2b-256 0bd7c1665bc17d894cf073ecc522070e82daa54312510b9018bf286bc9250960

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 594cdb991cf7377eddffe50cfb84331ad3a7e3749430e925133157fedb7804d9
MD5 012559ce155999ae7b4b161775d06ea7
BLAKE2b-256 aea55681c599cb53992d06c6fea050d28abf7567e2e03a200246ad802d11be66

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d6bbcbd97cd642f3119255717462f57900bb43cb81fe6c9ec3d6799e5f26d03e
MD5 a47e585345e5ee8a166492f694301d08
BLAKE2b-256 b34c8b49ca571a734c8caab18a4e3f1699ceacff72fe04e12dcbce83bcff5aea

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6d069436032f952e4560d5c03ba8d24303059fb9340541e94c0836041e2476d1
MD5 0d61612ec4d909399c27af423a9444f8
BLAKE2b-256 73ff56f95d800dc8f535386e45953c674bb07c6802efb70122c7c12e3ea8ef57

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3f5a0cd979e550c12049f709561a3f09c7741d786f17e128bf49ed302de1b1c
MD5 ef2ab9d1f42c7e2bec935b4b06acab03
BLAKE2b-256 6200350802fb1ea3d5edc60a1acd894b043c56fab7574c8a5d87dbfde1290418

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.1-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e2d68113f2c8621c0fb8c5d7679b1f7c2e639c2a21560cdbc2c60d68ce039de4
MD5 7088cf047cdff15a406d9344367b69cc
BLAKE2b-256 605f75874f3d21c0cc71d39e299d1a51c1d94bceb9a3dccbec0e3361aad05f20

See more details on using hashes here.

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