Skip to main content

PyOpenMagnetics - Python Wrapper for OpenMagnetics

Python License: MIT

🤖 For AI Assistants: If you're an AI assistant helping with this library, please read AGENTS.md FIRST before continuing with this README. It contains essential information about:

  • Correct import procedures (this package requires special handling)
  • ⚠️ Using API methods instead of manual calculations (CRITICAL)
  • Required field specifications for converter topologies
  • Troubleshooting common API errors
  • Complete working examples

⚠️ AVOID MANUAL MODE: Always use process_flyback(), calculate_advised_magnetics(), and other API methods rather than doing manual calculations. The MKF engine handles complex magnetic effects that manual calculations cannot.

PyOpenMagnetics is a Python wrapper for MKF (Magnetics Knowledge Foundation), the simulation engine of OpenMagnetics, providing a comprehensive toolkit for designing and analyzing magnetic components such as transformers and inductors.

Features

  • 🧲 Core Database: Access to extensive database of core shapes, materials, and manufacturers
  • 🔌 Winding Design: Automatic winding calculations with support for various wire types (round, litz, rectangular, planar)
  • 📊 Loss Calculations: Core losses (Steinmetz), winding losses (DC, skin effect, proximity effect)
  • 🎯 Design Adviser: Automated recommendations for optimal magnetic designs
  • 📈 Signal Processing: Harmonic analysis, waveform processing
  • 🖼️ Visualization: SVG plotting of cores, windings, magnetic fields
  • 🔧 SPICE Export: Export magnetic components as SPICE subcircuits

Installation

From PyPI (recommended)

pip install PyOpenMagnetics

From Source

git clone https://github.com/OpenMagnetics/PyOpenMagnetics.git
cd PyOpenMagnetics
pip install .

Build provenance

The build compiles MKF by globbing its .cpp files directly into the extension, tracking MKF/MAS main, and builds the Kirchhoff converter-model library (libKirchhoffApi.so) as an ExternalProject. The exact engine commits a wheel was compiled from are baked into the package:

import PyOpenMagnetics
print(PyOpenMagnetics.__mkf_commit__)  # MKF SHA this wheel was built from
print(PyOpenMagnetics.__mas_commit__)  # MAS SHA this wheel was built from

A clean rebuild:

rm -rf build && pip install . --no-deps -v

Importing and error handling

import PyOpenMagnetics works like any other package. Since v1.7.0 every engine failure raises PyOpenMagnetics.EngineError (a RuntimeError subclass) — functions never return error strings or {"data": "<error>"} objects:

import PyOpenMagnetics

PyOpenMagnetics.load_databases({})
print(f"✓ Loaded {len(PyOpenMagnetics.get_core_materials())} materials")
print(f"✓ Loaded {len(PyOpenMagnetics.get_core_shapes())} shapes")

try:
    PyOpenMagnetics.find_core_shape_by_name("No Such Shape")
except PyOpenMagnetics.EngineError as e:
    print(f"Engine error: {e}")

The only exception is the plotting family, which returns a discriminated union {"success": bool, "error": str, ...} that callers branch on.

See AGENTS.md for more usage guidance.

Quick Start

Basic Example: Creating a Core

import PyOpenMagnetics

# Find a core shape by name
shape = PyOpenMagnetics.find_core_shape_by_name("E 42/21/15")

# Find a core material by name
material = PyOpenMagnetics.find_core_material_by_name("3C95")

# Create a core with gapping. "type" is mandatory; shape/material accept
# either the objects fetched above or plain name strings.
core_data = {
    "functionalDescription": {
        "type": "two-piece set",
        "shape": shape,
        "material": material,
        "gapping": [{"type": "subtractive", "length": 0.001}],  # 1mm gap
        "numberStacks": 1
    }
}

# Calculate complete core data
core = PyOpenMagnetics.calculate_core_data(core_data, False)
print(f"Effective area: {core['processedDescription']['effectiveParameters']['effectiveArea']} m²")

Design Adviser: Get Magnetic Recommendations

import PyOpenMagnetics

# Define design requirements
inputs = {
    "designRequirements": {
        "magnetizingInductance": {
            "minimum": 100e-6,  # 100 µH minimum
            "nominal": 110e-6   # 110 µH nominal
        },
        "turnsRatios": [{"nominal": 5.0}]  # 5:1 turns ratio
    },
    "operatingPoints": [
        {
            "name": "Nominal",
            "conditions": {"ambientTemperature": 25},
            "excitationsPerWinding": [
                {
                    "name": "Primary",
                    "frequency": 100000,  # 100 kHz
                    "current": {
                        "waveform": {
                            "data": [0, 1.0, 0],
                            "time": [0, 5e-6, 10e-6]
                        }
                    },
                    "voltage": {
                        "waveform": {
                            "data": [50, 50, -50, -50],
                            "time": [0, 5e-6, 5e-6, 10e-6]
                        }
                    }
                }
            ]
        }
    ]
}

# Process inputs (adds harmonics and validation)
processed_inputs = PyOpenMagnetics.process_inputs(inputs)

# Get magnetic recommendations
# core_mode: "available cores" (stock cores) or "standard cores" (all standard shapes)
result = PyOpenMagnetics.calculate_advised_magnetics(processed_inputs, 5, "standard cores")

# Result format: {"data": [{"mas": {...}, "scoring": float, "scoringPerFilter": {...}}, ...]}
for i, item in enumerate(result["data"]):
    mag = item["mas"]["magnetic"]
    core = mag["core"]["functionalDescription"]
    print(f"{i+1}. {core['shape']['name']} - {core['material']['name']} (score: {item['scoring']:.3f})")

Calculate Core Losses

import PyOpenMagnetics

# A complete core (see "Creating a Core" above)
core = PyOpenMagnetics.calculate_core_data({
    "functionalDescription": {
        "type": "two-piece set",
        "shape": "E 42/21/15",
        "material": "3C95",
        "gapping": [{"type": "subtractive", "length": 0.0005}],
        "numberStacks": 1
    }
}, True)

# A wound coil on that core
bobbin = PyOpenMagnetics.create_basic_bobbin(core, True)
coil = PyOpenMagnetics.wind({
    "bobbin": bobbin,
    "functionalDescription": [{
        "name": "Primary",
        "numberTurns": 20,
        "numberParallels": 1,
        "isolationSide": "primary",
        "wire": "Round 0.5 - Grade 1"
    }]
}, 1, [1.0], [0], [])

# Inputs with the excitation waveforms (see the Design Adviser example)
inputs = PyOpenMagnetics.process_inputs({
    "designRequirements": {
        "magnetizingInductance": {"nominal": 100e-6},
        "turnsRatios": []
    },
    "operatingPoints": [{
        "name": "Nominal",
        "conditions": {"ambientTemperature": 25},
        "excitationsPerWinding": [{
            "name": "Primary",
            "frequency": 100000,
            "current": {"waveform": {"data": [-1, 1, -1], "time": [0, 5e-6, 10e-6]}},
            "voltage": {"waveform": {"data": [50, 50, -50, -50], "time": [0, 5e-6, 5e-6, 10e-6]}}
        }]
    }]
})

models = {"coreLosses": "IGSE", "reluctance": "ZHANG"}
losses = PyOpenMagnetics.calculate_core_losses(core, coil, inputs, models)
print(f"Core losses: {losses['coreLosses']} W")

Winding a Coil

import PyOpenMagnetics

# core from calculate_core_data(...) as above
bobbin = PyOpenMagnetics.create_basic_bobbin(core, True)

coil_spec = {
    "bobbin": bobbin,
    "functionalDescription": [
        {
            "name": "Primary",
            "numberTurns": 50,
            "numberParallels": 1,
            "isolationSide": "primary",
            "wire": "Round 0.5 - Grade 1"
        },
        {
            "name": "Secondary",
            "numberTurns": 10,
            "numberParallels": 3,
            "isolationSide": "secondary",
            "wire": "Round 1.00 - Grade 1"
        }
    ]
}

# wind(coil, repetitions, proportion_per_winding, pattern, margin_pairs)
coil = PyOpenMagnetics.wind(coil_spec, 1, [0.5, 0.5], [0, 1], [])
print(f"Wound {len(coil['turnsDescription'])} turns")

Converter-Based Design

The converter surface builds complete MAS Inputs straight from converter specifications (the Kirchhoff topology designer sizes inductance, turns ratios and waveforms). See examples/converter_design_example.py for the full flow:

import PyOpenMagnetics

flyback_specs = {
    "inputVoltage": {"minimum": 185, "maximum": 265},
    "desiredInductance": 800e-6,      # optional pin; omit to let Kirchhoff size it
    "desiredTurnsRatios": [13.5],     # optional pin
    "efficiency": 0.88,
    "operatingPoints": [{
        "outputVoltages": [12.0],
        "outputCurrents": [2.0],
        "switchingFrequency": 100000,
        "ambientTemperature": 40
    }]
}

inputs = PyOpenMagnetics.process_converter("flyback", flyback_specs)
processed = PyOpenMagnetics.process_inputs(inputs)
result = PyOpenMagnetics.calculate_advised_magnetics(processed, 5, "standard cores")
for item in result["data"]:
    print(item["mas"]["magnetic"]["manufacturerInfo"]["reference"], item["scoring"])

A TAS-shaped spec (an object with designRequirements / operatingPoints[].outputs) is also accepted and passed to Kirchhoff untouched.

API Reference

Database Access

Function Description
get_core_materials() Get all available core materials
get_core_shapes() Get all available core shapes
get_wires() Get all available wires
get_bobbins() Get all available bobbins
find_core_material_by_name(name) Find core material by name
find_core_shape_by_name(name) Find core shape by name
find_wire_by_name(name) Find wire by name

Core Calculations

Function Description
calculate_core_data(core, process) Calculate complete core data
calculate_core_gapping(core, gapping) Calculate gapping configuration
calculate_inductance_from_number_turns_and_gapping(...) Calculate inductance
calculate_core_losses(core, coil, inputs, models) Calculate core losses

Winding Functions

Function Description
wind(coil, repetitions, proportions, pattern, margins) Wind coils on a core
calculate_winding_losses(...) Calculate total winding losses
calculate_ohmic_losses(...) Calculate DC losses
calculate_skin_effect_losses(...) Calculate skin effect losses
calculate_proximity_effect_losses(...) Calculate proximity effect losses

Design Adviser

Function Description
calculate_advised_cores(inputs, max_results) Get recommended cores
calculate_advised_magnetics(inputs, max, mode) Get complete designs
process_inputs(inputs) Process and validate inputs

Visualization

Function Description
plot_core(core, ...) Generate SVG of core
plot_sections(magnetic, ...) Plot winding sections
plot_layers(magnetic, ...) Plot winding layers
plot_turns(magnetic, ...) Plot individual turns
plot_field(magnetic, ...) Plot magnetic field

Settings

Function Description
get_settings() Get current settings
set_settings(settings) Configure settings
reset_settings() Reset to defaults

SPICE Export

Function Description
export_magnetic_as_subcircuit(magnetic, ...) Export as SPICE model

Converter Topologies

All 24 power topologies are exposed with a uniform API. Use the generic process_converter("<topology>", converter, use_ngspice) (also accepts "advanced_<topology>"), or the per-topology functions below. The converter spec is either the legacy flat shape shown in "Converter-Based Design" above (inputVoltage, optional desiredInductance/desiredTurnsRatios/efficiency/ currentRippleRatio, and operatingPoints[] with outputVoltages[]/ outputCurrents[]/switchingFrequency/ambientTemperature) or a TAS-shaped spec, which is passed through untouched. Failures raise PyOpenMagnetics.EngineError.

Function family Description
process_converter(name, json, use_ngspice=True) Universal dispatch for every topology
design_magnetics_from_converter(name, json, max_results, core_mode, ...) Converter → advised magnetic designs (single call)
calculate_<t>_inputs(json) Build MAS inputs (basic mode) for topology <t>
calculate_advanced_<t>_inputs(json) Build MAS inputs (advanced mode)
simulate_<t>_ideal_waveforms(json) ngspice ideal-waveform simulation
generate_<t>_ngspice_circuit(json, input_voltage_index=0, operating_point_index=0) Generate ngspice netlist

<t>flyback, buck, boost, single_switch_forward, two_switch_forward, active_clamp_forward, push_pull, isolated_buck, isolated_buck_boost, cuk, sepic, zeta, four_switch_buck_boost, weinberg, llc, cllc, clllc, src, dab, psfb, pshb, ahb, vienna. PFC is basic-only (calculate_pfc_inputs, generate_pfc_ngspice_circuit(json, dc_resistance=0.1, simulation_time=0.02, time_step=1e-8)); common-/differential-mode chokes use the cmc / dmc families. See AGENTS.md §11 for the full per-topology parity matrix.

Core Materials

PyOpenMagnetics includes materials from major manufacturers:

  • TDK/EPCOS: N27, N49, N87, N95, N97, etc.
  • Ferroxcube: 3C90, 3C94, 3C95, 3F3, 3F4, etc.
  • Fair-Rite: Various ferrite materials
  • Magnetics Inc.: Powder cores (MPP, High Flux, Kool Mu)
  • Micrometals: Iron powder cores

Core Shapes

Supported shape families include:

  • E cores: E, EI, EFD, EQ, ER
  • ETD/EC cores: ETD, EC
  • PQ/PM cores: PQ, PM
  • RM cores: RM, RM/ILP
  • Toroidal: Various sizes
  • Pot cores: P, PT
  • U/UI cores: U, UI, UR
  • Planar: E-LP, EQ-LP, etc.

Wire Types

  • Round enamelled wire: Various AWG and IEC sizes
  • Litz wire: Multiple strand configurations
  • Rectangular wire: For high-current applications
  • Foil: For planar magnetics
  • Planar PCB: For integrated designs

Configuration

Use set_settings() to configure:

settings = PyOpenMagnetics.get_settings()
settings["coilAllowMarginTape"] = True
settings["coilWindEvenIfNotFit"] = False
settings["painterNumberPointsX"] = 50
PyOpenMagnetics.set_settings(settings)

Contributing

Contributions are welcome! Please see the OpenMagnetics organization for contribution guidelines.

Documentation

Quick Start

  • llms.txt - Comprehensive API reference optimized for AI assistants and quick lookup
  • examples/ - Practical example scripts for common design workflows
  • PyOpenMagnetics.pyi - Type stubs for IDE autocompletion

Tutorials

Reference

Validation

License

This project is licensed under the MIT License - see the LICENSE file for details.

Related Projects

References

  • Maniktala, S. "Switching Power Supplies A-Z", 2nd Edition
  • Basso, C. "Switch-Mode Power Supplies", 2nd Edition
  • McLyman, C. "Transformer and Inductor Design Handbook"

Support

For questions and support:

Download files

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

Source Distribution

pyopenmagnetics-1.7.7.tar.gz (689.2 kB view details)

Uploaded Source

Built Distributions

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

pyopenmagnetics-1.7.7-cp314-cp314-win_amd64.whl (11.6 MB view details)

Uploaded CPython 3.14Windows x86-64

pyopenmagnetics-1.7.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyopenmagnetics-1.7.7-cp313-cp313-win_amd64.whl (11.6 MB view details)

Uploaded CPython 3.13Windows x86-64

pyopenmagnetics-1.7.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyopenmagnetics-1.7.7-cp312-cp312-win_amd64.whl (11.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pyopenmagnetics-1.7.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyopenmagnetics-1.7.7-cp311-cp311-win_amd64.whl (11.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pyopenmagnetics-1.7.7-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pyopenmagnetics-1.7.7-cp310-cp310-win_amd64.whl (11.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pyopenmagnetics-1.7.7-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file pyopenmagnetics-1.7.7.tar.gz.

File metadata

  • Download URL: pyopenmagnetics-1.7.7.tar.gz
  • Upload date:
  • Size: 689.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyopenmagnetics-1.7.7.tar.gz
Algorithm Hash digest
SHA256 14d7160b83f08750d1ab9ee03eeabd1250b042cc77dda2247dbc235fbd4f7aab
MD5 c89b40fb9c83f3b2b072ce7c13b2947c
BLAKE2b-256 f3e2f86ab86358e63f77ce38a5c9ecb6b205e1d9234abe3f9b3a5d488cc0a1ce

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 676ec48a0064f00b1179e62549f9543fbaa39556afcf48d3414a790362d41282
MD5 38d0e29932480096df250fede0ee8d6b
BLAKE2b-256 00ca7e3a5da1f67a65d0506edac448be928a47aa67b2e22a922ab4eb9e37c1ef

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b6125d1bfc485f42c2745072591ec2198181bf54a94c7c9300b3c64b5f9b96bb
MD5 3754fd200170efe3ddf12137d15cea2f
BLAKE2b-256 25e5d5637847e935f45c6fcfe4b39d13cf6abe13464175f4d81df730fe901f48

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6f415133d0a344f6a2238e08052435f3aa4773d7c2bf3fce39f612c8e2638adb
MD5 9fc5e25ecf5d556ff50e3db44f535037
BLAKE2b-256 7ed3a4a349d6911b7aade606477741ce00c000eaa7695e48f5a2aacb3b656c82

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4546b8c6ae5e0f4dfff05f9e8634552e7dd291926e1b4ee568306d0b884af04c
MD5 1582f3276ac8064c4569fe7d12e9b21e
BLAKE2b-256 d139ade1bcfe648d311778332b00fa5ec18135cb27dbd017aeb9ae31073e0bd0

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6b88bb8a63cd8e11df276d34277dd9246b35711484c3537e651a391b6e15f5dd
MD5 30944fac5bcff72641fb9ae1dad53815
BLAKE2b-256 091641bf4ac11016b6f07c86d7ce3e325bb65c8ff3ac25cf24629a73b8592838

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 88569880ecdd14948ff6017c38259bb2441e4a786f5f5790879da8d8a478694e
MD5 2e1189aff3b7609012c7262167ae56d2
BLAKE2b-256 7b91085a638bcd52786543155795cb59c7c8401588f9960e91e4507f9884576b

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4ec43c9762392112ca7521c92ca2623cdbb2a6ac0f27d154386801a57f112080
MD5 4f57633e6c6470dcf028cd5558769884
BLAKE2b-256 63194c43af873e600f2b6d9b0a68882d39325815f6ae1e05e995383403714a2c

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1413da83fb149d5787c65abf446f1ed3e661367771d711d7aa77a60577c9e94e
MD5 f067462f62716df1bf6e9647d34c10ad
BLAKE2b-256 bec1e971ef14d4ec6c2cf244bb19c874b5c18f664b23ebdc1e6dc09218860afb

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6488035f5554ea4cf90af95b0212b1d91c53b70ed32e77de8984e525ca21d0fc
MD5 32206602df763ac257403137663de7b6
BLAKE2b-256 fecf6ec452daaca172112ecfcdc640a7669beb860afbb78011797aedceb6a09f

See more details on using hashes here.

File details

Details for the file pyopenmagnetics-1.7.7-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenmagnetics-1.7.7-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bba812bd268ae26b32d450b5394dd9721dd13d916f0cc7b11afcdfd10879253c
MD5 e7911356885b71a63a8f2795036df5d6
BLAKE2b-256 f54c257267ff6c330f8748fd5ba5f92ab4db2fbb697d9c6c0d5d8c059086492b

See more details on using hashes here.

Release history Release notifications | RSS feed

1.7.15

11 files

1.7.14

1 file

1.7.13

11 files

1.7.12

11 files

1.7.11

11 files

1.7.10

11 files

1.7.9

6 files

1.7.8

11 files

This release

1.7.7 This release

11 files

1.7.6

11 files

1.7.5

11 files

1.7.4

9 files

1.7.3

9 files

1.7.2

9 files

1.7.1

9 files

1.7.0

9 files

1.6.6

9 files

1.6.5

9 files

1.6.4

9 files

1.6.3

9 files

1.6.2

9 files

1.6.1

9 files

1.6.0

5 files

1.5.1

5 files

1.5.0

5 files

1.4.6

9 files

1.4.5

9 files

1.4.4

9 files

1.4.3

9 files

1.4.2

9 files

1.4.1

9 files

1.4.0

11 files

1.3.13

9 files

1.3.12

9 files

1.3.10

5 files

1.3.9

5 files

1.3.8

8 files

1.3.6

13 files

1.3.5

5 files

1.3.4

5 files

1.3.3

5 files

1.3.2

5 files

1.3.1

5 files

1.3.0

13 files

1.2.2

13 files

1.2.1

13 files

1.2.0

13 files

1.1.5

13 files

1.1.4

13 files

1.1.3

13 files

1.1.2

13 files

1.1.0

13 files

1.0.2

12 files

1.0.1

12 files

1.0.0

5 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