Home

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)
SectionDatabasenow auto-discovers regional JSON files, keeps the cache keyed bySectionType, and exposes both fuzzy lookups and comparison-based search helpers so you can handle designations that vary in case, hyphenation, or separator characters.SectionFactorywires that cache to concrete section classes forUK,EU, andUSwhile gracefully warning when the region linked inSectionDatabasedoes not yet have a corresponding module; extension hooks forAU/NZare already in place.- Region coverage in this release:
UK,EU, andUSare the most mature,INis 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, andlrfd.pyalready 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; see02-api-reference/index.mdand the new02-api-reference/02-database.mddeep 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:
- 🇪🇺
EUEuropean Union - Eurocode 3 - 🇬🇧
UKUnited Kingdom - Eurocode 3 with UK NA - 🇺🇸
USUnited States - AISC & ASTM, underUSfor imperial units andUS_Metricfor SI units. - 🇮🇳
INIndia - IS 800 & IS 808 - 🇦🇺
AUAustralia - AS 4100 & AS/NZS 5131 - 🇳🇿
NZNew 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
🫂