Skip to main content

Tools and libraries for constructing airfoils, wings, and other related shapes.

Project description

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.

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

buffalowings-0.3.0.tar.gz (152.8 kB view details)

Uploaded Source

Built Distribution

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

buffalowings-0.3.0-py3-none-any.whl (204.7 kB view details)

Uploaded Python 3

File details

Details for the file buffalowings-0.3.0.tar.gz.

File metadata

  • Download URL: buffalowings-0.3.0.tar.gz
  • Upload date:
  • Size: 152.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.13

File hashes

Hashes for buffalowings-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3aa8793eb1c766ea875b0a0c365636cecc186cd8585a1cbd20b42e510db3ce1d
MD5 1370e8876332c24ba9a6274bf52196d8
BLAKE2b-256 e0e6e7bd5f6e7de3d5297fcdf9b659e96c5d983a7bb1f27dda98884800c9d656

See more details on using hashes here.

File details

Details for the file buffalowings-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: buffalowings-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 204.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.13

File hashes

Hashes for buffalowings-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 94a77fadbfdd9d5216cbb49d8969ee2592b8f40d5f1447a8c22724b5ff5ec9c7
MD5 bbf4f7528af5ce90de6dc74382ca509e
BLAKE2b-256 165229a68f2cfa923ccc013c927dbaf2d6884b18e462f29b5a5e7112710768c3

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