Wombat

Latest version: v0.10

Safety actively analyzes 723217 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

0.10

Features

Date-based maintenance and improved timing

The frequency of maintenance events is now significantly more customizable by enabling
custom starting dates and more resolved frequency inputs. There is no change required
for existing configurations as the default value will `frequency` number of days until
the next event.

- `frequency` is an integer input (0 for unmodeled)
- `frequency_basis` indicates the time basis for `frequency`, which is modeled in two
forms:
- timing based: amount of operational time that should pass before an event occurs,
which does not count downtime (repairs, upstream failure, or system offline) in the
time until the next event.
- "days": number of days between events (default)
- "months": number of months between events
- "years": number of years between events
- date based: uses a set schedule for when events should occur, regardless of downtime
and will use `start_date` as the first occurrence of the event.
- "date-days": number of days between events
- "date-months": number of months between events
- "date-years": number of years between events
- `start_date`: The first occurrence of the maintenance event, which defaults to the
simulation start date + the expected interval. If the input is prior to the simulation
start date, then it is treated as a staggered timing, so, for instance, a biannual
event starting the year prior to the simulation ends up being staggered with the first
occurrence in the first year of the simulation, not the second. Similarly, this
allows for maintenance activities to start well into the simulation period allowing
for costs on OEM-warrantied maintenance activities to be unmodeled.

A few examples of more complex scenarios assuming a 1/1/2000 simulation starting date:

- Semiannual event to occur starting in the 3rd month of the simulation:

yaml
frequency: 6
frequency_basis: months
start_date: "9/1/1999"


- Summer-based annual event with the first occurrence in the 3rd year of the simulation:

yaml
frequency: 1
frequency_basis: years
start_date: "6/1/2003"


- Annual, June maintenance activity:

yaml
frequency: 1
frequency_basis: "date-years"
start_date: "6/1/2000"


- Biannual, June maintenance activity that should start in the first year, and every
other year after that:

yaml
frequency: 1
frequency_basis: "date-years"
start_date: "6/1/2000"


Repeat vessel configuration simplification

Multiple instances of a servicing equipment can be created with a list of the name
and number of them in the following forms. This creates copies where the equipment's
name is suffixed with a 1-indexed indication of which number it is, such as
"Crew Transfer Vessel -1" through "Crew Transfer Vessel - 4" for the below example.

yaml
...
servicing_equipment:
- - ctv.yaml
- 4
- [hlv.yaml, 2]
- dsv.yaml
...


Single(ish) file configuration

WOMBAT configurations now allow for the embedding of servicing equipment, turbine,
substation, cable, and port data within the main configuration. Now, the only files
required outside the primary configuration YAML are the weather profile and layout.
To utilize this update, data can be included in the following form:

yaml
servicing_equipment:
- [7, ctv]
... Other configuration details
vessels:
ctv:
... Contents of library/corewind/vessels/ctv.yaml
turbines:
corewind_15MW:
... Contents of library/corewind/turbines/corewind_15MW.yaml
substations:
corewind_substation:
... Contents of library/corewind/substations/corewind_substation.yaml
cables:
corewind_array:
... Contents of library/corewind/cables/corewind_array.yaml
corewind_export:
... Contents of library/corewind/cables/corewind_export.yaml


Updates

- Update the `Failure` definition to use lists of failure configurations, not
dictionaries. Users can use the following function to update their cable, turbine,
substation, and consolidated configurations:
`wombat/core/library.py::convert_failure_data` Documentation is available at
https://wisdem.github.io/WOMBAT/API/utilities.html#importing-and-converting-from-old-versions.
- Updates the minimum Python version to 3.10.
- The wind farm operation level calculation was moved to `wombat/utilities/utilities.py`
so it can be reused when `Metrics` loads the operational data.
- Adds a CI check for code linting (pre-commit) and for the documentation building.
- Basic tests added for the Simulation API
- Fixes the `FutureWarnings` from Pandas about changing offset strings.
- Updates the COREWIND severity levels to those originally listed in the publication now
that severity levels can be used multiple times within a single subassembly.
- Updates the GH Pages uploading workflow steps.

0.9.7

- Fixes a new bug where YAML is now sensitive to the implicit closing of files by using
a context manager to open a YAML file and return the contents.
- Removes PyPI secret usage now that trusted publishing fails with redundant permissions.

0.9.6

- Fixes a discrepancy where the wind farm vs turbine availability losses do not match. A slight difference in total availability will be noticeable as a result.

0.9.5

- Fixes a bug that causes delayed mobilizations. The underlying cause was the lack of
resetting the index column of `WombatEnvironment.weather` after filtering out rows
that exist prior to the starting year of the simulation.
- The Polars minimum version was bumped to avoid a deprecation error with the previous
index column generation method.

0.9.4

- Adds support for Python 3.11 and 3.12.
- Adds the following capability and servicing equipment codes:
- MCN for medium cranes, which should enable greater options for land-based wind.
- VSG for vessel support groups, or any representation of multiple vessels used for a
single operation.
- Updates Polars API usage to account for a series of deprecation and future warnings.
- Changes the metrics demonstration to use the COREWIND Morro Bay in situ example, and
adds the availability plotting to the demonstration example.
- `RepairRequest.prior_operating_level` has been added to allow 100% reduction factor failures to correctly and consistently restore the operating level of a subassembly following a repair.
- Replaces the `valid_reduction` attrs validator with `validate_0_1_inclusive` to reuse the logic in multiple places without duplicating checking methods.
- Adds a `replacement` flag for interruption methods, so that a failure or replacement comment can be added as a cause for `simpy.process.interrupt`. This update allows the failure and maintenance processes to check if an interruption should cause the process to exit completely. Additionally, the forced exit ensures that processes can't persist after a replacement event when a process is recreated, which was happening in isolated cases.
- Fixes a bug in `RepairManager.purge_subassemble_requests()` where the pending tows are cleared regardless of whether or not the focal subassembly is the cause of the tow, leading to a simulation failure.
- Fixes a bug in `utilities/utilities.py:create_variable_from_string()` to operate in a way that is expected. The original method was removing all numerics, but only leading punctuation and numerics should be replaced, with any punctuation being replaced with an underscore.
- Adds additional inline comments for clarification on internal methods.
- Update README.md to be inline with current conda and Python standards.
- Fully adopts `functools.cache` now that older Python versions where
`functools.lru_cache` was the available caching method.
- Fixes a Pandas `FutureWarning` by removing a now unnecessary piece of code in
`wombat/core/post_processor.py:equipment_costs`

0.9.3

- Reinstate the original time-based availability methodology, which is based on all
turbines, not the wind farm total.
- Replace the `black` formatter with `ruff`.
- Adopt `pyupgrade` to ensure modern Python language usage.
- Add the NumPy 2.0 integration tool to Ruff.

Page 1 of 4

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.