Skip to main content

Logo

Buffalo Wings

CI Docs License

Tests mypy basedpyright Ruff lint Ruff format

coverage.py Built with Sphinx towncrier bumpversion uv setuptools Copier

Buffalo Wings is a Python geometry library for building airfoil and wing models from aerodynamic definitions. It is designed to support interactive design workflows, visualization tools, and downstream analysis or meshing pipelines. The long-term goal is to provide a strong geometry foundation for GUI-based airfoil and wing design applications.

Why This Project Exists

Buffalo Wings focuses on aerodynamic geometry rather than general-purpose CAD. The library is meant to turn validated airfoil and wing definitions into queryable geometry objects that can support plotting, inspection, meshing, and higher-level design tools. That includes future GUI-oriented applications for constructing and visualizing airfoils and wings.

Current Focus

The current public API is centered on two modules: buffalo_wings.airfoil for airfoil geometry and airfoil definitions, and buffalo_wings.wing for wing geometry and wing definitions.

Today, the airfoil subsystem is the most mature part of the project. Wing geometry support is under active development. GUI applications are a planned direction rather than a released feature.

Quick Start

Install Buffalo Wings from PyPI with:

pip install buffalo-wings

Create a NACA 4-digit airfoil from a designation:

import numpy as np
import buffalo_wings.airfoil as bwa

airfoil = bwa.AirfoilFactory.naca4_from_designation("2412")
t = np.linspace(-1.0, 1.0, 11, dtype=np.float64)
x, y = airfoil.xy(t)

Create the same airfoil from a public schema object:

import buffalo_wings.airfoil as bwa

spec = bwa.Naca4AirfoilSpec(designation="2412")
airfoil = bwa.AirfoilFactory.from_spec(spec)

The supported public modules are buffalo_wings.airfoil and buffalo_wings.wing. Shared low-level foundations such as numeric typing, numeric normalization, and structured diagnostics come from buffalo_core. Modules under buffalo_wings.*.internal are implementation details and are not part of the supported external API.

Where To Go Next

Start with examples/airfoil/create_naca4_from_designation.py for a minimal airfoil construction example. See examples/airfoil/create_naca4_from_spec.py for the schema-driven airfoil path. See examples/wing/create_rectangular_wing.py for a minimal public wing example. See the online documentation for examples, API reference, and developer notes. See the changelog for recent changes and project evolution.

Contributors

The main contributors to this project are:

  • David D. Marshall

Version History

See the changelog for details.

Code of Conduct

This project is governed by the Contributor Covenant Code of Conduct (v3.0). By participating, you agree to uphold it. Please see the code of conduct for details and reporting instructions.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Release files for BuffaloWings 0.3.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 BuffaloWings 0.3.0
File Size Uploaded
buffalowings-0.3.0.tar.gz 152.8 kB Details

Built distribution (wheel)

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

Total release size:357.4 kB

Release files / buffalowings-0.3.0.tar.gz

Download URL buffalowings-0.3.0.tar.gz
Size 152.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3aa8793eb1c766ea875b0a0c365636cecc186cd8585a1cbd20b42e510db3ce1d
BLAKE2b-256 checksum
How to use checksums
e0e6e7bd5f6e7de3d5297fcdf9b659e96c5d983a7bb1f27dda98884800c9d656
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.13

Release files / buffalowings-0.3.0-py3-none-any.whl

Download URL buffalowings-0.3.0-py3-none-any.whl
Size 204.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94a77fadbfdd9d5216cbb49d8969ee2592b8f40d5f1447a8c22724b5ff5ec9c7
BLAKE2b-256 checksum
How to use checksums
165229a68f2cfa923ccc013c927dbaf2d6884b18e462f29b5a5e7112710768c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

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