Changelog — turbo-turtle 1.2.9 documentation

Skip to main content
`Ctrl`+`K`

# Changelog

## v1.3.0 (unreleased)

## v1.2.9 (2025-12-05)

### Documentation

- Improve SCons tutorial configuration for Windows path compatibility (ISSUE-264, MERGE-264). By Kyle Brindley.

### Internal Changes

- Improved test suite support for Windows (ISSUE-264, MERGE-264). By Kyle Brindley.

- Add Windows CI server (ISSUE-265, MERGE-265). By Kyle Brindley.

### Bug fixes

- Improve compatibility with Abaqus Python exit behavior on Windows (ISSUE-264, MERGE-264). By Kyle Brindley.

## v1.2.8 (2025-10-08)

### Documentation

- Improved type annotations (ISSUE-258, MERGE-261, ISSUE-261, MERGE-263). By Kyle Brindley.

### Internal Changes

- Drop Python 3.9 support for its end-of-life by the Python Software Foundation and deprecation by conda-forge (ISSUE-260, MERGE-260). By Kyle Brindley.

- Replace flake8 and black with ruff for linting and formatting (ISSUE-258, MERGE-261). By Kyle Brindley.

- Lint test modules with ruff (ISSUE-262, MERGE-262). By Kyle Brindley.

- Passing mypy static type checks, with skips on Abaqus Python 2 compatible files. (ISSUE-261, MERGE-263). By Kyle Brindley.

## v1.2.7 (2025-07-23)

### Documentation

- Landing page re-design for ease of access and reduced clutter. By Kyle Brindley.

### Internal Changes

- Match Conda-forge recipe more closely for easier diffs during package recipe updates. By Kyle Brindley.

- Use full default Flake8 checks. By Kyle Brindley.

### Bug fixes

- Fix element type assignment in Cubit Python backend implementation of the export subcommand. By Kyle Brindley.

- Fix conversion of exception messages to exit error messages. Previously used an exception attribute that was deprecated in Python 2.6, so the bug was a Python 2/3 incompatibility when Abaqus 2024 finally introduced Python 3 (ISSUE-256, MERGE-259). By Kyle Brindley.

## v1.2.6 (2025-05-21)

### Documentation

- Add PyPI shields to README and HTML documentation (ISSUE-255). By Kyle Brindley.

### Internal Changes

- Cleanup internal conda-build deployment logic. By Kyle Brindley.

## v1.2.5 (2025-05-21)

### Internal Changes

- Automated PyPI deploy workflow from GitHub.com. By Kyle Brindley.

## v1.2.4 (2025-05-21)

### Documentation

- Match short descriptions across PyPI and conda packages. By Kyle Brindley.

## v1.2.3 (2025-05-21)

### Documentation

- Fix README targets checked by twine/PyPi during upload. By Kyle Brindley.

## v1.2.2 (2025-05-21)

### Internal Changes

- Update URLs for external package builds to use the external GitHub.com URLs. By Kyle Brindley.

## v1.2.1 (2025-05-21)

### Internal Changes

- Fix Gitlab-CI pip build artifacts. By Kyle Brindley.

## v1.2.0 (2025-05-21)

### Documentation

- Update release procedure for a merge-commit style feature-branch workflow. By Kyle Brindley.

### Internal Changes

- Fix the SCons extensions builder unit test of builder keyword arguments. By Kyle Brindley.

- Require WAVES>=0.12.6 for tutorials and system tests that run SCons workflows. By Kyle Brindley.

- SCons build and install aliases for more consistent packaging and deployment scripts (ISSUE-252, MERGE-253). By Kyle Brindley.

- Require WAVES v0.13 or newer for building and runtime (ISSUE-252, MERGE-253). By Kyle Brindley.

- Overhaul Gitlab-CI job environments for reduced Conda environment collisions and improved job artifact cleanup (ISSUE-254, MERGE-254). By Kyle Brindley.

- Overhaul GitHub-Actions job definitions for common environment definitions with Gitlab-CI environments (ISSUE-254, MERGE-254). By Kyle Brindley.

## v1.1.5 (2025-03-28)

### Enhancements

- Suppress Cubit journal file output. Output is incomplete and all relevant meta data is also reported to STDOUT, which the user can choose to capture. Cubit can reach a self-imposed journal file count and throw errors until journal files are manually removed. This causes problems in large automated workflows (ISSUE-250, MERGE-250). By Kyle Brindley.

## v1.1.4 (2025-03-17)

### Internal Changes

- Handle proxy server changes for AEA RHEL CI builds (ISSUE-247, MERGE-247). By Kyle Brindley.

- System test against Abaqus Python 2/3 update (Abaqus 2023/2024) during MR pipelines (ISSUE-248, :merge:248`). By Kyle Brindley.

### Enhancements

- Abaqus Python 2/3 compatible print to shell’s STDERR stream (ISSUE-245, MERGE-245, ISSUE-246, MERGE-246). By Kyle Brindley.

## v1.1.3 (2025-02-24)

### Bug fixes

- Update incorrect `abaqusConstants` value for two-dimensional planar parts in `geometry` subcommand (ISSUE-242, MERGE-242). By Thomas Roberts.

## v1.1.2 (2024-12-02)

### Bug fixes

- Add pytest package to documentation build (MERGE-239). By Kyle Brindley.

## v1.1.1 (2024-12-02)

### Bug fixes

- Fix internal import paths for docs and fetch subcommands (MERGE-238). By Kyle Brindley.

## v1.1.0 (2024-12-02)

### Documentation

- Package internal HTML documentation for internal Conda package distribution (ISSUE-235, MERGE-230). By Kyle Brindley.

- Change Sphinx theme to `sphinx-book-theme` (ISSUE-228, MERGE-234). By Kyle Brindley.

### Internal Changes

- Run the unit tests against a matrix of Abaqus and Cubit versions (ISSUE-141, MERGE-224). By Kyle Brindley.

- Run both unit and system tests against a matrix of Abaqus and Cubit versions during scheduled CI tests (ISSUE-233, MERGE-225, MERGE-227). By Kyle Brindley.

- Add a scheduled CI job to test all support Python versions (ISSUE-236, MERGE-229). By Kyle Brindley.

- Remove the experimental, semi-private API builders in favor of the public CLI builder design (ISSUE-234, MERGE-231). By Kyle Brindley.

- Autoformat and perform style checks with black and flake8 together (ISSUE-231, MERGE-235). By Kyle Brindley.

### Enhancements

- Update docs subcommand implementation for more robust error messages (ISSUE-232, MERGE-232). By Kyle Brindley.

## v1.0.0 (2024-10-21)

### New Features

- Work-in-progress Gmsh cylinder subcommand implementation (ISSUE-208, MERGE-208). By Kyle Brindley.

- Work-in-progress Gmsh geometry subcommand implementation (ISSUE-209, MERGE-210). By Kyle Brindley.

- Work-in-progress Gmsh sphere subcommand implementation. Incorrect pre-existing, `--input-file`, model handling. Solid spheres do not revolve correctly (ISSUE-210, MERGE-211). By Kyle Brindley.

- Work-in-progress Gmsh image subcommand implementation. Missing model name, part name, and image size behavior (ISSUE-214, MERGE-212). By Kyle Brindley.

- Work-in-progress Gmsh mesh subcommand implementation. Missing model name, part name, element type, and edge seed behaviors. Performs global tri- and tet-meshing globally to all models and parts. (ISSUE-214, MERGE-212). By Kyle Brindley.

### Bug fixes

- Fix temporary file handling for Windows (ISSUE-224, MERGE-214). By Kyle Brindley.

- Partition 2D models with Abaqus backend (ISSUE-181, MERGE-217). By Thomas Roberts.

### Internal Changes

- Add Gmsh Python API to CI environment (MERGE-207). By Kyle Brindley.

- Update system tests and example scons extensions to use WAVES v0.11.0 syntax (ISSUE-225, MERGE-215). By Kyle Brindley.

- Add missing package to GitHub-CI environments (ISSUE-226, MERGE-219). By Kyle Brindley.

- Drop Python 3.8 support as end-of-life by the end of October, 2024 (ISSUE-211, MERGE-220). By Kyle Brindley.

- Set maximum `sphinx_rtd_theme` version because v3 removed the display version in sidebar support unless the documentation is actually hosted on Read the Docs. Temporary solution to finding a new documentation theme (MERGE-221). By Kyle Brindley.

## v0.12.12 (2024-09-26)

### Documentation

- Add GitHub shields to HTML documentation (ISSUE-198, MERGE-197). By Kyle Brindley.

- Add GitHub-Pages documentation URL to README and documentation (ISSUE-199, MERGE-198). By Kyle Brindley.

- Add Zenodo DOI shields and citations (ISSUE-168, MERGE-199). By Kyle Brindley.

- Add conda-forge installation instructions and shields (ISSUE-167, MERGE-205). By Kyle Brindley.

### Internal Changes

- Multi-OS compatible Conda package build and test scripts (ISSUE-168, MERGE-199). By Kyle Brindley.

- Test the external recipe during Gitlab-CI jobs (ISSUE-168, MERGE-199). By Kyle Brindley.

- Update setuptools version specs to match current setuptools_scm documentation (ISSUE-201, MERGE-200). By Kyle Brindley.

- Update recipes to match conda-forge recommendations (ISSUE-202, MERGE-201). By Kyle Brindley.

- Remove unnecessary fast test job from CI deployment pipelines (ISSUE-203, MERGE-202). By Kyle Brindley.

- Clean up PIP and Conda package builds to exclude project version control files (ISSUE-204, MERGE-203). By Kyle Brindley.

- Separate system tests that require third-party software from those that do not. Run external recipe builds with a single pytest command instead of hardcoding the CLI tests in the recipe test script (ISSUE-205, MERGE-206). By Kyle Brindley.

### Enhancements

- Bundle built HTML and man page documentation with Gitlab PyPI registry package (ISSUE-207, MERGE-204). By Kyle Brindley.

## v0.12.11 (2024-09-12)

### Bug fixes

- Better unit test patch for missing Cubit package, e.g. on conda-forge CI servers (MERGE-196). By Kyle Brindley.

## v0.12.10 (2024-09-11)

### Bug fixes

- Fix package manifest for builds with newer conda-build/setuptools packages (ISSUE-192, MERGE-188). By Kyle Brindley.

- Remove system tests from external recipe(s) because they can not pass on CI servers without Abaqus and Cubit installed (ISSUE-193, MERGE-189). By Kyle Brindley.

- Fix the conda package entry points (ISSUE-195, MERGE-190). By Kyle Brindley.

- Better OS (Windows) path handling in test expectations (ISSUE-197, MERGE-192). By Kyle Brindley.

- Mock Cubit module during pytesting when Cubit is not available (ISSUE-194, MERGE-193). By Kyle Brindley.

### Documentation

- Point the README shields to the open-source release (ISSUE-191, MERGE-194). By Kyle Brindley.

### Internal Changes

- Add Windows compatible build script for external conda package recipes (ISSUE-196, MERGE-191). By Kyle Brindley.

- Add GitHub-CI Windows build/test workflow (ISSUE-196, MERGE-191). By Kyle Brindley.

## v0.12.9 (2024-09-11)

### Documentation

- Add the LANL software release number to the README (MERGE-187). By Kyle Brindley.

## v0.12.8 (2024-09-11)

### Bug fixes

- Fix the GitHub pages build environment (ISSUE-190, MERGE-186). By Kyle Brindley.

## v0.12.7 (2024-08-27)

### Bug fixes

- Handle the first target emitter name change for WAVES v0.10/v0.11 (ISSUE-189, MERGE-184). By Kyle Brindley.

### Internal Changes

- Use common AEA Conda channel downstream deployment pipeline (ISSUE-188, MERGE-183). By Kyle Brindley.

## v0.12.6 (2024-07-11)

### Internal Changes

- Add twine package for Gitlab PyPI registry deployment (MERGE-182). By Kyle Brindley.

## v0.12.5 (2024-07-11)

### Internal Changes

- Experimental Gitlab PyPI registry deployment (ISSUE-187, MERGE-181). By Kyle Brindley.

## v0.12.4 (2024-07-10)

### Bug fixes

- Preserve white space in set masks of Abaqus pass-through wrapper of the sets subcommand (ISSUE-185, MERGE-179). By Kyle Brindley.

### Documentation

- Edge seeds are implemented in Cubit. Remove “not yet implemented” statement from CLI usage help (ISSUE-179, MERGE-175). By Kyle Brindley.

- Add developer notes about package structure and interface designs (ISSUE-135, MERGE-178). By Kyle Brindley.

### Internal Changes

- Remove indexing of the shared conda channel from CI deployment job. Can’t use a project specific CI environment and manage the shared conda channel (ISSUE-184, MERGE-176). By Kyle Brindley.

## v0.12.3 (2024-06-26)

### Bug fixes

- Match revolution direction of Abaqus and Cubit to the +Y axis (ISSUE-183, MERGE-174). By Kyle Brindley.

### Enhancements

- Accept negative revolution angles to change revolution direction in Abaqus implementation (ISSUE-183, MERGE-174). By Kyle Brindley.

## v0.12.2 (2024-06-20)

### New Features

- Abaqus partitioning algorithm for 2D-axisymmetric parts (ISSUE-181, MERGE-217). By Thomas Roberts.

- Abaqus implementation of a `sets` subcommand for programmatic set creation (ISSUE-164, MERGE-161). By Kyle Brindley.

- Abaqus implementation of an edge seed option in the `mesh` subcommand (ISSUE-173, MERGE-164). By Kyle Brindley.

- Add `sets` subcommand CLI builder (ISSUE-171, MERGE-165). By Kyle Brindley.

- Cubit implementation of a `sets` subcommand and `--edge-sets` `mesh` option (ISSUE-170, MERGE-166). Kyle Brindley.

### Bug fixes

- Sphere module was missing an `if` statement that protected GUI execution from hitting the `sys.exit(main(...))` statement and crashing the GUI session (ISSUE-176, MERGE-169). By Thomas Roberts.

### Documentation

- Break long API function signatures into multiple lines for better readability (ISSUE-178, MERGE-172) By Kyle Brindley.

### Internal Changes

- Work-in-progress support for Abaqus CAE GUI export capability (ISSUE-154, MERGE-171). By Thomas Roberts.

- Work-in-progress support for Abaqus CAE GUI image capability (ISSUE-155, MERGE-170). By Thomas Roberts.

- Internal utility for constructing string delimited lists (MERGE-162). By Kyle Brindley.

- Add system tests for Abaqus implementation of sets subcommand (ISSUE-172, MERGE-163). By Kyle Brindley.

- Begin converting internal API error handling to exceptions. Limit conversion to system exit and error codes to the main implementation (ISSUE-175, MERGE-167). By Kyle Brindley.

- Activate project CI environment directly. Fixes errors related to conda-build/boa/mambabuild during packaging (MERGE-168). By Kyle Brindley.

### Enhancements

- Collect and report specific set name/mask failures in the `sets` subcommand (ISSUE-182, MERGE-173). By Kyle Brindley.

## v0.12.1 (2024-04-30)

### Documentation

- Add BSD-3 license text and files. Add placeholder citation files (ISSUE-166, MERGE-159). By Kyle Brindley.

### Internal Changes

- Add GitHub actions and external conda package build recipe (ISSUE-169, MERGE-160). By Kyle Brindley.

## v0.12.0 (2024-04-30)

### Breaking changes

- Remove the deprecated CLI builders prefixed with `turbo_turtle_`. Replaced by more general builders in v0.11.0 (2024-02-15) (ISSUE-127, MERGE-156). By Kyle Brindley.

- Remove the deprecated `--cubit` CLI option. Replaced by `--backend` in v0.11.0 (2024-02-15) (ISSUE-130, MERGE-157). By Kyle Brindley.

## v0.11.3 (2024-04-29)

### New Features

- Expose the `geometry-xyplot` matplotlib figure generation function to the public API (ISSUE-148, MERGE-139). By Kyle Brindley.

- Add a `fetch` subcommand to retrieve user manual and tutorial files (ISSUE-145, MERGE-143). By Kyle Brindley.

- Lazy import of submodules (MERGE-152). By Kyle Brindley.

### Bug fixes

- Call to the `main` function in `mesh_module.py` needs to be in the `except` statement so the GUI-wrapper does not execute `main` (ISSUE-165, MERGE-154). By Thomas Roberts.

- Match the coordinate transformations of `geometry` subcommand in the `geometry-xyplot` subcommand (ISSUE-156, MERGE-134). By Kyle Brindley.

- Python 3.8 compatible type annotations (ISSUE-162, MERGE-149). By Kyle Brindley.

### Documentation

- Add a bibiliography and references section (ISSUE-139, MERGE-136). By Kyle Brindley.

- Update SCons example in user manual to build both available backends: Abaqus and Cubit (ISSUE-158, MERGE-142). By Kyle Brindley.

- Update man page and documentation to include full subcommand and API (MERGE-148). By Kyle Brindley.

- Update the GUI documentation describing how to run and get more information about a plug-in (ISSUE-149, MERGE-131). By Thomas Roberts.

### Internal Changes

- Work-in-progress support for Abaqus CAE GUI meshing capability (ISSUE-153, MERGE-140). By Thomas Roberts.

- Work-in-progress support for Abaqus CAE GUI sphere capability (ISSUE-152, MERGE-133). By Thomas Roberts.

- Improved unit tests for the CLI builders (ISSUE-151, MERGE-135). By Kyle Brindley.

- Work-in-progress support for Abaqus CAE GUI cylinder capability (ISSUE-150, MERGE-132). By Thomas Roberts.

- Add the user manual SCons demo to the system tests (ISSUE-144, MERGE-141). By Kyle Brindley.

- Use the full Abaqus session object namespace (ISSUE-140, MERGE-144). By Kyle Brindley.

- Add PEP-8 partial style guide checks to CI jobs (ISSUE-160, MERGE-145). By Kyle Brindley.

- Add flake8 configuration file for easier consistency between developer checks and CI checks (ISSUE-161, MERGE-146). By Kyle Brindley.

- Use SCons task for flake8 style guide checks (MERGE-147). By Kyle Brindley.

- Add a draft SCons task for project profiling (MERGE-150). By Kyle Brindley.

- Add lazy loader package to CI environment (ISSUE-163, MERGE-151). By Kyle Brindley.

- Add partial submodule imports to cProfile SCons task (MERGE-153). By Kyle Brindley.

### Enhancements

- Add an option to use equally scaled X and Y axes in `geometry-xyplot` subcommand (ISSUE-157, MERGE-138). By Kyle Brindley.

## v0.11.2 (2024-03-29)

### Documentation

- Use built-in Abaqus/CAE plug-in documentation features to display GUI plug-in help messages and link to documentation in the Abaqus/CAE GUI (ISSUE-142, MERGE-129). By Thomas Roberts.

- Improve Abaqus geometry error message (MERGE-124). By Kyle Brindley.

### Internal Changes

- Reduce duplicate logic in geometry and cylinder subcommand implementations (ISSUE-123, MERGE-126). By Kyle Brindley.

- Make the Abaqus python package importable and change the GUI behavior to be a plug-in rather than direct execution on a python module (ISSUE-137, MERGE-127). By Thomas Roberts.

- Work-in-progress support for Abaqus CAE GUI geometry capability (ISSUE-138, MERGE-128). By Thomas Roberts.

### Enhancements

- Implement the numpy tolerance checks for the Cubit geometry and geometery-xyplot subcommands (ISSUE-123, MERGE-126). By Kyle Brindley.

- Add an option to add vertex index annotations to the geometery-xyplot subcommand (ISSUE-147, MERGE-130). By Kyle Brindley.

## v0.11.1 (2024-03-01)

### Internal Changes

- Work-in-progress support for Abaqus CAE GUI partitioning capability (ISSUE-133, MERGE-122). By Thomas Roberts.

- Dedicated Cubit imprint and merge function (ISSUE-76, MERGE-110). By Kyle Brindley.

- Dedicated Cubit local coordinate primary plane webcutting function (ISSUE-77, MERGE-111). By Kyle Brindley.

- Dedicated Cubit pyramidal volume creation and partitioning functions (ISSUE-131, MERGE-112). By Kyle Brindley.

- Unit test the pass through Abaqus Python CLI construction (ISSUE-58, MERGE-113). By Kyle Brindley.

- Unit test the pass through Cubit Python API unpacking (ISSUE-91, MERGE-114). By Kyle Brindley.

- Unit test the default argument values in the subcommand argparse parsers (ISSUE-55, MERGE-115). By Kyle Brindley.

- Report unit test coverage in Gitlab-CI pipelines (MERGE-116). By Kyle Brindley.

- Refact and unit test the coordinate modification performed by geometry subcommand (ISSUE-102, MERGE-117). By Kyle Brindley.

- Add a missing unit test for the Abaqus Python CLI merge construction (MERGE-118). By Kyle Brindley.

- Unit tests for Cubit curve and surface creation from coordinates (MERGE-119, MERGE-120). By Kyle Brindley.

- Build coverage artifacts in build directory (MERGE-121). By Kyle Brindley.

- Fix the docs and print abaqus module unit tests (ISSUE-136, MERGE-123). By Kyle Brindley.

### Enhancements

- Enforce positive floats and integers for CLI options requiring a positive value (ISSUE-55, MERGE-115). By Kyle Brindley.

## v0.11.0 (2024-02-15)

### Breaking changes

- Replace the `--cubit` flag with a `--backend` option that defaults to Abaqus (ISSUE-126, MERGE-108). By Kyle Brindley.

### New Features

- SCons CLI builders for every subcommand (ISSUE-125, MERGE-107). By Kyle Brindley.

### Documentation

- Consistent required option formatting in CLI usage (ISSUE-124, MERGE-105). By Kyle Brindley.

### Internal Changes

- Add a draft, general purpose SCons builder. Considered draft implementations in the internal interface until final design interface and behavior are stabilized(MERGE-106). By Kyle Brindley.

### Enhancements

- Allow users to turn off vertex markers in the `geometry-xyplot` subcommand output (MERGE-104). By Kyle Brindley.

## v0.10.2 (2024-02-14)

### New Features

- `geometry-xyplot` subcommand to plot lines-and-splines coordinate breaks (ISSUE-122, MERGE-102). By Kyle Brindley.

### Bug fixes

- Only partition the requested part name(s) in the Cubit `partition` implementation (ISSUE-110, MERGE-88). By Kyle Brindley.

### Internal Changes

- Remove duplication in CI environment creation logic (ISSUE-121, MERGE-101). By Kyle Brindley.

### Enhancements

- Partition multiple parts found in a single input file in the `partition` subcommand (ISSUE-110, MERGE-88). By Thomas Roberts and Kyle Brindley.

## v0.10.1 (2024-02-12)

### Bug fixes

- Pass the color map option from the image subcommand Python 3 CLI to the Abaqus Python CLI (ISSUE-120, MERGE-100). By Kyle Brindley.

### Documentation

- Document the re-git manual tag release step (ISSUE-117, MERGE-96). By Kyle Brindley.

- Add re-git badges (ISSUE-116, MERGE-95). By Kyle Brindley.

### Internal Changes

- Update CLI description for the `image` subcommand to be consistent with changes from ISSUE-92 (ISSUE-111, MERGE-89). By Thomas Roberts.

- Duplicate vertices Python 3 unit tests in Abaqus Python 2 (ISSUE-60, MERGE-90). By Kyle Brindley.

- Add boa to the CI environment for faster mambabuild packaging (ISSUE-118, MERGE-97). By Kyle Brindley.

- Build the package with boa and run the fast-test and conda-build jobs in parallel (ISSUE-119, MERGE-99). By Kyle Brindley.

### Enhancements

- Allow for assembly image generation by optionally excluding `--part-name` when using the `image` subcommand (ISSUE-92, MERGE-74). By Thomas Roberts.

## v0.10.0 (2024-01-24)

### Enhancements

- Improved Abaqus partitioning algorithm for handling pre-existing features (ISSUE-70, MERGE-86). By Kyle Brindley and Thomas Roberts.

## v0.9.1 (2024-01-24)

### Bug fixes

- Fix a part name variable in the `image` subcommand Abaqus implementation (ISSUE-105, MERGE-82). By Kyle Brindley.

### Documentation

- Match user manual `export` subcommand options to implementation (ISSUE-109, MERGE-84). By Kyle Brindley.

### Internal Changes

- Draft SCons extensions for subcommand builders. Considered draft implementations in the internal interface until final design interface and behavior are stabilized (ISSUE-103, MERGE-80). By Kyle Brindley.

- Updated cubit partition scheme to identify surfaces relative to local coordinate system and principal planes (ISSUE-104, MERGE-81). By Paula Rutherford.

- Expose the SCons builders as part of the (future) public API (ISSUE-106, MERGE-83). By Kyle Brindley.

### Enhancements

- Add capability for a solid sphere geometry generation (ISSUE-97, MERGE-79). By Paula Rutherford.

## v0.9.0 (2024-01-02)

### Breaking changes

- Cylinder subcommand generates a cylinder with a centroid on the global coordinate system origin for consistency with sphere subcommand (ISSUE-93, MERGE-76). By Kyle Brindley.

- Replace sphere subcommand center movement argument with a vertical offset movement for consistency with cylinder subcommand and the Abaqus axisymmetric compatible geometry generation design (ISSUE-94, MERGE-77). By Kyle Brindley.

### Documentation

- Clarify which `image` subcommand options are unused by Cubit implementation (ISSUE-85, MERGE-75). By Kyle Brindley.

### Enhancements

- Add a vertical offset option to the cylinder subcommand (ISSUE-93, MERGE-76). By Kyle Brindley.

- Add a vertical offset option to the geometry subcommand (ISSUE-95, MERGE-78). By Kyle Brindley.

## v0.8.0 (2023-11-28)

### Breaking changes

- Exclude the opening/closing assembly scope keywords in the `--assembly` option of the `export` subcommand. More consistent with the orphan mesh export behavior, which excludes the part/instance scope keywords. Allows users to more easily modify the assembly scope without post-facto text file modification and with straight-forward `*include` keywords. (ISSUE-90, MERGE-73). By Kyle Brindley.

## v0.7.2 (2023-11-28)

### New Features

- Draft implementation of `image` subcommand with Cubit (ISSUE-81, MERGE-68). By Kyle Brindley.

- Draft implementation of `export` subcommand with Cubit (ISSUE-79, ISSUE-88, MERGE-69, merge:70). By Kyle Brindley.

- Add ability to export Genesis files from `export` subcommand with Cubit (ISSUE-87, MERGE-71). By Kyle Brindley.

- Draft implementation of `merge` subcommand with Cubit (ISSUE-82, merge:72). By Kyle Brindley.

## v0.7.1 (2023-11-27)

### New Features

- Draft implementation of `cylinder` subcommand with Cubit (ISSUE-63, MERGE-61). By Kyle Brindley.

- Draft implementation of `sphere` subcommand with Cubit (ISSUE-71, MERGE-62). By Kyle Brindley.

- Draft implementation of `partition` subcommand with Cubit (ISSUE-72, MERGE-66). By Kyle Brindley.

- Draft implementation of `mesh` subcommand with Cubit (ISSUE-78, MERGE-67). By Kyle Brindley.

### Bug fixes

- Fix pass through of `rtol` and `atol` arguments in `geometry` subcommand (MERGE-60). By Kyle Brindley.

- Fix Cubit bin search and PYTHONPATH append behavior on MacOS (MERGE-63). By Kyle Brindley.

### Internal Changes

- Separate the sphere arc point calculation from the abaqus python specific sphere module (ISSUE-62, MERGE-63). By Kyle Brindley.

### Enhancements

- Regularize revolved solids in Cubit to remove the sketch seam in 360 degree revolutions (MERGE-63). By Kyle Brindley.

## v0.7.0 (2023-11-20)

### Breaking changes

- Partition refactor for reduction in duplicate code and interface updates to match implementation. Replaces `--[xz]point` with `--[xz]vector`. Removes the various `partition` options in favor of user defined local xz plane from `--center` and `--[xz]vector` (ISSUE-66, MERGE-59). By Kyle Brindley.

### Enhancements

- Expose numpy tolerance to geometry subcommand interface to control the vertical/horizontal line check precision (ISSUE-68, MERGE-58). By Kyle Brindley.

## v0.6.1 (2023-11-15)

### New Features

- Draft implementation of `geometry` subcommand with Cubit (ISSUE-44, MERGE-50). By Kyle Brindley.

### Bug fixes

- Fix the `--euclidean-distance` option of the `geometry` subcommand (ISSUE-67, MERGE-56). By Kyle Brindley.

### Documentation

- Developer documentation for the mixed Python 2/3 modules and testing with both Python 3 and Abaqus Python (ISSUE-51, MERGE-48). By Kyle Brindley.

### Internal Changes

- Move export subcommand Python 2/3 compatible functions to a Python 3 re-usable module and unit test in both Python 3 and Abaqus Python (ISSUE-51, MERGE-48). By Kyle Brindley.

- Move merge subcommand Python 2/3 compatible functions to a Python 3 re-usable module and unit test in both Python 3 and Abaqus Python (ISSUE-53, MERGE-49). By Kyle Brindley.

- Drive the system tests with pytest to reduce hardcoded duplication in test definitions between repository and conda-build recipe (ISSUE-61, MERGE-52). By Kyle Brindley.

- Move the element type substitution function to a common Python 2/3 compatible module (ISSUE-59, MERGE-55). By Kyle Brindley.

### Enhancements

- Support MacOS Cubit execution (ISSUE-64, MERGE-53). By Kyle Brindley.

## v0.6.0 (2023-11-13)

### Breaking changes

- Consistent angle of revolution command line argument between subcommands: `sphere` now accepts `--revolution-angle` instead of `--angle`. (ISSUE-57, MERGE-47). By Kyle Brindley.

## v0.5.2 (2023-11-13)

### New Features

- Draft assembly keyword block exporter in export subcommand (ISSUE-38, MERGE-36). By Kyle Brindley.

### Internal Changes

- Separate the splines logic from the geometry Abaqus Python script and unit test it (ISSUE-41, MERGE-37). By Kyle Brindley.

- Unit test the coordinate generation for the axisymmetric cylinder subcommand (ISSUE-50, MERGE-39). By Kyle Brindley.

- Add a version controlled CI and development environment (ISSUE-13, MERGE-38). By Kyle Brindley.

- Python 2/3 compatible 2D polar coordinate to 2D XY coordinate converter. By Kyle Brindley.

- Move Abaqus Python geometry functions that are Python 3 compatible to a dedicated Python 2/3 compatible utilities module (ISSUE-52, MERGE-43). By Kyle Brindley.

### Enhancements

- Raise an error if the provided Abaqus command is not found (ISSUE-48, MERGE-40). By Kyle Brindley.

- Better error reporting on STDERR when running Abaqus Python scripts (ISSUE-52, MERGE-43). By Kyle Brindley.

- Enforce positive floats in the CLI when they are expected (MERGE-44). By Kyle Brindley.

## v0.5.1 (2023-11-09)

### New Features

- Add a cylinder subcommand (ISSUE-40, MERGE-31). By Kyle Brindley.

- Add a `merge` subcommand to combine multiple Abaqus models together (ISSUE-37, MERGE-26). By Thomas Roberts and Kyle Brindley.

### Documentation

- Update project description and scope (ISSUE-36, MERGE-32). By Kyle Brindley.

- Add the Abaqus Python parsers to the internal API (ISSUE-47, MERGE-34). By Kyle Brindley.

### Internal Changes

- Replace duplicate Python 2/3 parsers with shared parsers compatible with both Abaqus Python and Python 3 (ISSUE-4, MERGE-28). By Kyle Brindley.

- Move the Python 3 wrapper functions to a dedicated module for re-use in SCons builders (ISSUE-35, MERGE-30). By Kyle Brindley.

### Enhancements

- Add color map argument to the image subcommand (ISSUE-45, MERGE-35). By Kyle Brindley.

## v0.5.0 (2023-11-07)

### Breaking changes

- Update the `export` subcommand to allow for multiple orphan mesh files to be exported from the same Abaqus model and also allow for element type changes. This change removed the `output_file` command line argument in favor of naming orphan mesh files after the part names (ISSUE-23, MERGE-24). By Thomas Roberts.

### New Features

- Add a `geometry` subcommand to draw 2D planar, 2D axisymmetric, or 3D bodies of revolution from a text file of x-y points (ISSUE-16, MERGE-25). By Thomas Roberts.

### Bug fixes

- Call the correct Abaqus Python script with the `export` subcommand (ISSUE-25, MERGE-22). By Kyle Brindley.

### Documentation

- Add a PDF build of the documentation (ISSUE-31, MERGE-20). By Kyle Brindley.

- Add a higher resolution PNG image for the Turbo Turtle logo (ISSUE-32, MERGE-23). By Thomas Roberts.

### Internal Changes

- Reduce hardcoded duplication and use Python built-ins for coordinate handling in sphere subcommand implementation (MERGE-21). By Kyle Brindley and Matthew Fister.

- Run the pytests with the regression suite (ISSUE-25, MERGE-22). By Kyle Brindley.

### Enhancements

- Fail with a non-zero exit code on Abaqus Python CLI errors (ISSUE-25, MERGE-22). By Kyle Brindley.

## v0.4.3 (2023-10-24)

### New Features

- Add a subcommand to mesh parts with a global seed (ISSUE-30, MERGE-19). By Kyle Brindley.

- Add a subcommand to export a part as an orphan mesh (ISSUE-29, MERGE-18). By Kyle Brindley.

### Documentation

- Add two of the system tests to the user manual as examples (ISSUE-24, MERGE-17). By Kyle Brindley.

## v0.4.2 (2023-10-24)

### New Features

- Add a subcommand to open the package’s installed documentation (ISSUE-15, MERGE-11). By Kyle Brindley.

- Add a subcommand to create hollow sphere geometry (ISSUE-8, MERGE-13). By Kyle Brindley.

- Add a subcommand to create assembly image (ISSUE-18, MERGE-16). By Kyle Brindley.

### Documentation

- Package HTML documentation and man page (ISSUE-11, MERGE-8). By Kyle Brindley.

### Internal Changes

- Consolidate in-repository system tests with the `regression` alias (ISSUE-15, MERGE-11). By Kyle Brindley.

- Reduce duplication in system test geometry creation (ISSUE-17, MERGE-12). By Kyle Brindley.

- Improved file handling for sphere and partition creation (ISSUE-6, MERGE-15). By Kyle Brindley.

### Enhancements

- Create 2D axisymmetric part when provided a revolution angle of zero (ISSUE-21, MERGE-14). By Kyle Brindley.

## v0.4.1 (2023-10-20)

### Bug fixes

- Fix partition abaqus CAE command construction (ISSUE-9, MERGE-7). By Kyle Brindley.

### Internal Changes

- Move abaqus imports internal to the partition function to allow future re-use of the parser (ISSUE-9, MERGE-7). By Kyle Brindley.

## v0.4.0 (2023-10-20)

### Breaking changes

- Move existing behavior to the `partition` subcommand to make room for additional common utilities (ISSUE-14, MERGE-5). By Kyle Brindley.

## v0.3.0 (2023-10-20)

### Documentation

- Gitlab-Pages hosted HTML documentation (ISSUE-1, ;merge:4). By Kyle Brindley.

## v0.2.0 (2023-10-19)

### New Features

- Package with Conda. By Kyle Brindley.

## v0.1.0 (2023-10-19)

### Breaking changes

### New Features

### Bug fixes

### Documentation

### Internal Changes

### Enhancements