Logo

Python Version License PyPI Version Documentation

A python package for structural steel design. \(steelsnakes\) aims to provide a unified interface for designing steel members and connections for civil & structural engineers using Python. Users can import steel section data from international standards, perform verification checks from prior analysis and more.

Work in Progress

\(steelsnakes\) is currently under active development. Please report any issues or feature requests on the GitHub ISSUES page.

Latest Progress (March 21, 2026)

  • SectionDatabase now auto-discovers regional JSON files, keeps the cache keyed by SectionType, and exposes both fuzzy lookups and comparison-based search helpers so you can handle designations that vary in case, hyphenation, or separator characters.
  • SectionFactory wires that cache to concrete section classes for UK, EU, and US while gracefully warning when the region linked in SectionDatabase does not yet have a corresponding module; extension hooks for AU/NZ are already in place.
  • Region coverage in this release: UK, EU, and US are the most mature, IN is under active proof-of-concept, and the pending list (AU, NZ, JP, MX, SA, CN, CA, KR) is closely tracked in the TBD section of the source documentation.
  • Built-in checks in src/steelsnakes/UK/checks/uls.py, stability.py, src/steelsnakes/US/checks/classification.py, and lrfd.py already capture clauses for limit state verifications; expect more worked examples and metadata refinement as the TODO comments are closed.
  • The MkDocs API reference now starts with dedicated pages for the shared base modules (sections, database, factory, checks) before branching into each region; see 02-api-reference/index.md and the new 02-api-reference/02-database.md deep dive for details.

Note

These capabilities are still evolving; metadata gaps, non-unit-aware helpers, and TODOs remain in the source. Double-check the implementation against the codebase whenever you need precise behavior, especially before using it in production.

\(steelsnakes\) is divided into regions, and is currently developing support for the following regional standards:

  1. 🇪🇺 EU European Union - Eurocode 3
  2. 🇬🇧 UK United Kingdom - Eurocode 3 with UK NA
  3. 🇺🇸 US United States - AISC & ASTM, under US for imperial units and US_Metric for SI units.
  4. 🇮🇳 IN India - IS 800 & IS 808
  5. 🇦🇺 AU Australia - AS 4100 & AS/NZS 5131
  6. 🇳🇿 NZ New Zealand - NZS 3404 & AS/NZS 5131

See the Codes and Standards guide for more information.

Quick Start

Installation

pip install steelsnakes
uv add steelsnakes
poetry add steelsnakes

Example

For available steel profiles implemented in \(steelsnakes\), properties can be accessed directly from the object. See the Profiles for all available steel profiles.

from steelsnakes.UK.universal import UB, UniversalBeam
from steelsnakes.US.beams import W, WideFlangeBeam

beam_1 = UB(designation="1016x305x438")
beam_2 = W("W44X335")

print(beam_1.h)
print(beam_2.d)
print(beam_2.A)
1026.0
44.0
98.5

Note

\(steelsnakes\) does not currently implement any units or unit conversion; it is up to the user to ensure that all inputs are in the correct units as required by calculations

Contributing

All contributions are welcome! See the CONTRIBUTING GUIDELINES.

License

This project is licensed under the GNU General Public License v2.0. See the LICENSE.

References

See References

Acknowledgments

🫂