Source code for pybosl2.enums

# Copyright (c) 2026, pinkfish
#
# Licensed under the BSD 2-Clause License. See the LICENSE file in the project
# root for the full license text.
# SPDX-License-Identifier: BSD-2-Clause

# DocCategory: Foundational
# LibFile: pybosl2/enums.py
# FileSummary: Strongly-typed enums for pybosl2.
# FileGroup: BOSL2

"""Strongly-typed enums for pybosl2."""

from enum import StrEnum


[docs] class Gender(StrEnum): """Part gender for dovetail joints.""" MALE = "male" FEMALE = "female"
[docs] class AttachTag(StrEnum): """Attachment tags for boolean resolution. These values determine how attached shapes are combined with their parent shape during realization (e.g. keep/remove/intersect). """ KEEP = "keep" REMOVE = "remove" INTERSECT = "intersect"
[docs] class EdgeTreatmentKind(StrEnum): """What an edge treatment does to an edge: round it, chamfer it, or leave it sharp. The two are mutually exclusive on one edge, which is why they are members of one enum rather than two independent sizes (SPEC G-1, G-7). """ NONE = "none" ROUNDING = "rounding" CHAMFER = "chamfer"
[docs] class RoundingMethod(StrEnum): """Corner-rounding strategy for :func:`round_corners` and :func:`smooth_path`.""" CIRCLE = "circle" SMOOTH = "smooth" CHAMFER = "chamfer"
[docs] class VNFStyle(StrEnum): """Quad-subdivision style for :func:`vnf_vertex_array` and related functions.""" DEFAULT = "default" ALT = "alt" MIN_EDGE = "min_edge" MIN_AREA = "min_area" CONVEX = "convex" CONCAVE = "concave" QUINCUNX = "quincunx" QUAD = "quad" FLIP1 = "flip1" FLIP2 = "flip2"
[docs] class SweepMethod(StrEnum): """Cross-section orientation method for :func:`path_sweep`.""" INCREMENTAL = "incremental" MANUAL = "manual" NATURAL = "natural"
[docs] class SkinMethod(StrEnum): """Vertex-connection method for :func:`skin` / :meth:`VNF.from_skin`.""" DIRECT = "direct" REINDEX = "reindex"
[docs] class PartitionCutType(StrEnum): """Cut profile style for :func:`partition` and :func:`partition_mask`.""" FLAT = "flat" SAWTOOTH = "sawtooth" SINEWAVE = "sinewave" COMB = "comb" FINGER = "finger" DOVETAIL = "dovetail" HAMMERHEAD = "hammerhead" JIGSAW = "jigsaw" SQUARE = "square" TRIANGLE = "triangle" HALFSINE = "halfsine" SEMICIRCLE = "semicircle"
[docs] class Measure(StrEnum): """Rounding size specification for :func:`round_corners`.""" RADIUS = "radius" CUT = "cut" JOINT = "joint" WIDTH = "width"
[docs] class EdgeMode(StrEnum): """Edge-treatment mode for SDF primitives.""" ROUND = "round" CHAMFER = "chamfer"
[docs] class SamplingType(StrEnum): """Resampling strategy for :func:`skin` and related functions.""" LENGTH = "length" SEGMENT = "segment"
[docs] class ResampleMethod(StrEnum): """Resampling method for :func:`rot_resample`.""" LENGTH = "length" COUNT = "count"
[docs] class StaggerMode(StrEnum): """Stagger mode for :func:`grid_copies`.""" NONE = "none" STANDARD = "standard" ALT = "alt"