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:
- CDO Official Project: https://code.mpimet.mpg.de/projects/cdo
- CDO 2.6.0 Release Notes: https://code.mpimet.mpg.de/projects/cdo/wiki/Changelog
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")andcdo("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-Oto enable overwriting:cdo = Cdo(options="-O")or passoptions="-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-Ooption - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
865fea179a5b7351d03b925d07f716384084dd34ed7b12d74536765128a3a77e
|
|
| MD5 |
6e629ebb2f3d11917ce3e76f91153201
|
|
| BLAKE2b-256 |
9fc9837fa5fb0b3b93d0a704c61a2cb6c58b54a12bf66e8a8f7234951a9ec187
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 45.3 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba3c6ca4f2290d6b4af45b0125c231da8f466db45b0a2856e069f9462e94d72c
|
|
| MD5 |
a80bac0d9a1d9350f63f018647aea751
|
|
| BLAKE2b-256 |
66d44b8a239052ace52eebcc4035631a090dbbace979d3cddd7db42580b4ef60
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp314-cp314-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.8 MB
- Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ceecb10d48a30e12084346970faf96eca0c8125e9a283e7279ffc6f94ec5c37
|
|
| MD5 |
796c1f421ce6de3906a8714e3095f276
|
|
| BLAKE2b-256 |
9f0a2e7e5ccb6bcfce29dc7cfcca2ae34ab1ce7e11bff1f549fac4e0cbbd8aca
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp314-cp314-macosx_14_0_arm64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp314-cp314-macosx_14_0_arm64.whl
- Upload date:
- Size: 21.9 MB
- Tags: CPython 3.14, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
685261856a63d0fee4a76b63b7066233c20ceb8864157480ae0068b0670dee10
|
|
| MD5 |
41588f401dcdbc81931a18d33b95a1a9
|
|
| BLAKE2b-256 |
e14a86bd37def95f6e8910b11dce5477e51335939a09f06540dbe129b5582944
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 44.4 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f6d54bf132e77d9d4471efa36809b6243f0339ddb0aa8d2e2c313d832488b25
|
|
| MD5 |
b28ea144e08c29f3fd4df8b220518bd2
|
|
| BLAKE2b-256 |
bcb69e59c2fea7e7af77c971a126a591e5bbaaabb7dc137e2f81cd9a575a28fe
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.8 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1205cf2727d40884d1203c21dfd21d334bca32977e709a78927595a2c21d8484
|
|
| MD5 |
0ad29341bfec0c524bbb1cb2a1d763a6
|
|
| BLAKE2b-256 |
31971ed24588c2512050109665fb61f2b83a93ac8c3ecc0f24f90025c7c814fe
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp313-cp313-macosx_14_0_arm64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp313-cp313-macosx_14_0_arm64.whl
- Upload date:
- Size: 21.9 MB
- Tags: CPython 3.13, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07e41b039b64370464e6caa9452580ac188469e8e8594b6753522660a2ee1cea
|
|
| MD5 |
95257358a1f357ca108cf7c473e9557a
|
|
| BLAKE2b-256 |
47effe456382e626a8c1f9d68a27f62b02cce610484ca0ef7d21fe0346aadb1a
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 44.4 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
906574d90a09b6ed09a9b8e30eabe99c1e05126d1cc994ec4fc8c8cbcc21aa21
|
|
| MD5 |
a69cf258aca4f3a300a1bb896d391791
|
|
| BLAKE2b-256 |
851ea6251fd6f3a8de0f4bb32b09e5c9c11dcf0b9fcb918b7e1eb642bd7b5538
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16248200a30c867225cdea5e5aae5fa8e54f621d4f05df8e95b1e6aa8cfff079
|
|
| MD5 |
69ccee84aac799542d29c2b79803304e
|
|
| BLAKE2b-256 |
e78b9c9bb69d85054896764faa9b2b253b3d7de0e0b08ca1c365b8e5bc7c5a6b
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp312-cp312-macosx_14_0_arm64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp312-cp312-macosx_14_0_arm64.whl
- Upload date:
- Size: 21.9 MB
- Tags: CPython 3.12, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9537f57079bad8ff471584ad331d006b6f2f50685922843c6f7edbedddd029aa
|
|
| MD5 |
dbdb7ffdefabd3301df1c86d8bc704ee
|
|
| BLAKE2b-256 |
e70d71339d28d6dc4fdc321d92200364c5c9031533221739f6da2a85a98fa8d7
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 44.4 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6adeda8720d9be27003887855a735ce2e97fc7a861f942f6d2c8634ea0cc4952
|
|
| MD5 |
244a1a4de9497b36f10ed19465430731
|
|
| BLAKE2b-256 |
f3222e123a670b033565f6cb62a1d5d9dfe3b4c4c7753f39a201524b31778414
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7ca952b4713218a7ea372a4232519fcc2ce27a94b2a8a18698ce1a38a71ad29
|
|
| MD5 |
14fc4371ef589884a5cbf4257f26ecb5
|
|
| BLAKE2b-256 |
b333b380284f68571edb5f013700ba8c8bbd80054d1360a771dfff7e4c8e9a2d
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp311-cp311-macosx_14_0_arm64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp311-cp311-macosx_14_0_arm64.whl
- Upload date:
- Size: 21.9 MB
- Tags: CPython 3.11, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f492d1a1c984fe1a4251b1e9b322db1d1d724eed84f201de6038fc953e99c6d6
|
|
| MD5 |
0a6d75bce9cbfb4c6fb6aa3230997cb7
|
|
| BLAKE2b-256 |
c0c0964bf436198e9dcf1d52e9560b6f9b620553ccfa2c1d94a38647d71a0540
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 44.4 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c65b323f1aeb3995f4c7043b62dad2bfc41465009e77ff98c5e2b9e7b83f2e02
|
|
| MD5 |
7b06885a80bc9a423824e722e0efd791
|
|
| BLAKE2b-256 |
0bd7c1665bc17d894cf073ecc522070e82daa54312510b9018bf286bc9250960
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
594cdb991cf7377eddffe50cfb84331ad3a7e3749430e925133157fedb7804d9
|
|
| MD5 |
012559ce155999ae7b4b161775d06ea7
|
|
| BLAKE2b-256 |
aea55681c599cb53992d06c6fea050d28abf7567e2e03a200246ad802d11be66
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp310-cp310-macosx_14_0_arm64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp310-cp310-macosx_14_0_arm64.whl
- Upload date:
- Size: 21.9 MB
- Tags: CPython 3.10, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6bbcbd97cd642f3119255717462f57900bb43cb81fe6c9ec3d6799e5f26d03e
|
|
| MD5 |
a47e585345e5ee8a166492f694301d08
|
|
| BLAKE2b-256 |
b34c8b49ca571a734c8caab18a4e3f1699ceacff72fe04e12dcbce83bcff5aea
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 44.4 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d069436032f952e4560d5c03ba8d24303059fb9340541e94c0836041e2476d1
|
|
| MD5 |
0d61612ec4d909399c27af423a9444f8
|
|
| BLAKE2b-256 |
73ff56f95d800dc8f535386e45953c674bb07c6802efb70122c7c12e3ea8ef57
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3f5a0cd979e550c12049f709561a3f09c7741d786f17e128bf49ed302de1b1c
|
|
| MD5 |
ef2ab9d1f42c7e2bec935b4b06acab03
|
|
| BLAKE2b-256 |
6200350802fb1ea3d5edc60a1acd894b043c56fab7574c8a5d87dbfde1290418
|
File details
Details for the file skyborn_cdo-2.6.0.1-cp39-cp39-macosx_14_0_arm64.whl.
File metadata
- Download URL: skyborn_cdo-2.6.0.1-cp39-cp39-macosx_14_0_arm64.whl
- Upload date:
- Size: 21.9 MB
- Tags: CPython 3.9, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2d68113f2c8621c0fb8c5d7679b1f7c2e639c2a21560cdbc2c60d68ce039de4
|
|
| MD5 |
7088cf047cdff15a406d9344367b69cc
|
|
| BLAKE2b-256 |
605f75874f3d21c0cc71d39e299d1a51c1d94bceb9a3dccbec0e3361aad05f20
|