Skip to content

Commit

Permalink
Merge pull request #31 from NREL-Sienna/jd/fixdocsv3
Browse files Browse the repository at this point in the history
update index page
  • Loading branch information
jd-lara authored Dec 11, 2024
2 parents 56cfe62 + 51440c3 commit 808b04d
Show file tree
Hide file tree
Showing 9 changed files with 248 additions and 20 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

[![Main - CI](https://github.com/NREL-Sienna/StorageSystemsSimulations.jl/actions/workflows/main-tests.yml/badge.svg)](https://github.com/NREL-Sienna/StorageSystemsSimulations.jl/actions/workflows/main-tests.yml)
[![codecov](https://codecov.io/gh/NREL-Sienna/StorageSystemsSimulations.jl/branch/main/graph/badge.svg?token=sML4kPw4Z9)](https://codecov.io/gh/NREL-Sienna/StorageSystemsSimulations.jl)
[![Documentation](https://github.com/NREL-Sienna/StorageSystemsSimulations.jl/workflows/Documentation/badge.svg)](https://nrel-sienna.github.io/StorageSystemsSimulations.jl/latest)
[![Documentation](https://github.com/NREL-Sienna/StorageSystemsSimulations.jl/workflows/Documentation/badge.svg)](https://nrel-sienna.github.io/StorageSystemsSimulations.jl/stable/)
[<img src="https://img.shields.io/badge/slack-@Sienna/PSY-sienna.svg?logo=slack">](https://join.slack.com/t/nrel-sienna/shared_invite/zt-glam9vdu-o8A9TwZTZqqNTKHa7q3BpQ)


For information on using the package, see the [stable documentation](https://nrel-sienna.github.io/StorageSystemsSimulations.jl/stable/). Use the [in-development documentation](https://nrel-sienna.github.io/StorageSystemsSimulations.jl/dev/) for the version of the documentation which contains the unreleased features.

## Development

Contributions to the development and enahancement of StorageSystemsSimulations is welcome. Please see [CONTRIBUTING.md](https://github.com/NREL-Sienna/StorageSystemsSimulations.jl/blob/master/CONTRIBUTING.md) for code contribution guidelines.
Contributions to the development and enhancement of StorageSystemsSimulations is welcome. Please see [CONTRIBUTING.md](https://github.com/NREL-Sienna/StorageSystemsSimulations.jl/blob/master/CONTRIBUTING.md) for code contribution guidelines.

## License

Expand Down
8 changes: 6 additions & 2 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,20 @@ pages = OrderedDict(
"Quick Start Guide" => "quick_start_guide.md",
"Tutorials" =>
Any["tutorials/single_stage_model.md", "tutorials/simulation_tutorial.md"],
#"How-to and common uses" => ["how_to/configure_feedforward.md"],
#"Introductory Background" => ["background/discretization.md", "background/ancillary_services.md"],
"Formulation Library" =>
Any["StorageDispatchWithReserves" => "formulation_library/StorageDispatchWithReserves.md",],
"Code Base Developer Guide" => "code_base_developer_guide/developer.md",
"Code Base Developer Guide" => [
"code_base_developer_guide/developer.md",
"code_base_developer_guide/internals.md",
],
"API Reference" => "api/StorageSystemsSimulations.md",
)

makedocs(;
modules=[StorageSystemsSimulations],
format=Documenter.HTML(; prettyurls=haskey(ENV, "GITHUB_ACTIONS")),
warnonly=[:missing_docs],
sitename="StorageSystemsSimulations.jl",
authors="Jose Daniel Lara, Rodrigo Henriquez-Auba, Sourabh Dalvi",
pages=Any[p for p in pages],
Expand Down
52 changes: 42 additions & 10 deletions docs/src/api/StorageSystemsSimulations.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# StorageSystemsSimulations
# Public API

```@meta
CurrentModule = StorageSystemsSimulations
Expand All @@ -7,17 +7,49 @@ DocTestSetup = quote
end
```

## Exported
## [Variables](@id vars)

```@autodocs
Modules = [StorageSystemsSimulations]
Private = false
Filter = t -> typeof(t) === DataType ? !(t <: StorageSystemsSimulations.AbstractStorageFormulation) : true
```@docs
AncillaryServiceVariableDischarge
AncillaryServiceVariableCharge
StorageEnergyShortageVariable
StorageEnergySurplusVariable
StorageChargeCyclingSlackVariable
StorageDischargeCyclingSlackVariable
StorageRegularizationVariableCharge
StorageRegularizationVariableDischarge
```

## Internal
## [Auxiliary Variables](@id aux_vars)

```@autodocs
Modules = [StorageSystemsSimulations]
Public = false
```@docs
StorageEnergyOutput
```

## [Constraints](@id cons)

```@docs
StateofChargeLimitsConstraint
StorageCyclingCharge
StorageCyclingDischarge
ReserveCoverageConstraint
ReserveCoverageConstraintEndOfPeriod
ReserveCompleteCoverageConstraint
ReserveCompleteCoverageConstraintEndOfPeriod
StorageTotalReserveConstraint
ReserveDischargeConstraint
ReserveChargeConstraint
```

## [Parameters](@id params)

```@docs
EnergyLimitParameter
```

## [FeedForwards](@id ffs)

```@docs
EnergyTargetFeedforward
EnergyLimitFeedforward
```
10 changes: 10 additions & 0 deletions docs/src/code_base_developer_guide/internals.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
```@meta
CollapsedDocStrings = true
```

# Internals

```@autodocs
Modules = [StorageSystemsSimulations]
Public = false
```
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ StorageDispatchWithReserves
& \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t-1} sb_{stc,p,t-1} + p^{st,ch}_{t-1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t-1} sb_{stc,p,t-1}\right) &\\
& - \left(\sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{stc,p,t}\right) \ge -z^{st, ch}_{t} & \forall t \in \mathcal{T} \setminus 1\\
&\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t-1} sb_{std,p,t-1} + p^{st,ds}_{t-1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t-1} sb_{std,p,t-1}\right) &\\
&-\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t-1} + p^{st,ds}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\right) \le z^{st, ds}_{t} & \forall t \in \mathcal{T} \setminus 1\\
&-\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\right) \le z^{st, ds}_{t} & \forall t \in \mathcal{T} \setminus 1\\
&\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t-1} sb_{std,p,t-1} + p^{st,ds}_{t-1} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t-1} sb_{std,p,t-1}\right) &\\
&-\left(\sum_{p \in \mathcal{P}^{\text{as}_\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t} - \sum_{p \in \mathcal{P}^{\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\right) \ge -z^{st, ds}_{t} & \forall t \in \mathcal{T} \setminus 1
\end{aligned}
Expand Down
10 changes: 6 additions & 4 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ CurrentModule = StorageSystemsSimulations

## Overview

`StorageSimulations.jl` is a `PowerSimulations.jl` extension to support formulations and models
`StorageSystemsSimulations.jl` is a `PowerSimulations.jl` extension to support formulations and models
related to energy storage.

An Operational Storage Model can have multiple combinations of different restrictions. For instance,
it might be relevant to a study to consider cycling limits or employ energy targets coming from a planning model. To manage all these variations `StorageSimulations.jl` heavily uses the `DeviceModel` attributes feature.
it might be relevant to a study to consider cycling limits or employ energy targets coming from a planning model. To manage all these variations `StorageSystemsSimulations.jl` heavily uses the `DeviceModel` attributes feature.

For example, the formulation `StorageDispatchWithReserves` can be parametrized as follows:
For example, the formulation `StorageDispatchWithReserves` can be parametrized as follows when added to a `PowerSimulations.jl` model:

```julia
DeviceModel(
Expand All @@ -29,7 +29,9 @@ DeviceModel(
)
```

Each formulation can have different implementations for these attributes and the details can be found in the Formulation Library section in the documentation.
!!! tip

Each formulation can have different implementations for attributes. Carefully review the formulation library pages to understand how to configure the storage model according to your requirements

## Installation

Expand Down
3 changes: 3 additions & 0 deletions src/StorageSystemsSimulations.jl
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ export ReserveChargeConstraint
export EnergyTargetFeedforward
export EnergyLimitFeedforward

# parameters
export EnergyLimitParameter

#################################################################################
# Modeling Imports
import JuMP
Expand Down
160 changes: 160 additions & 0 deletions src/core/constraints.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,179 @@
# InputActivePowerVariableLimitsConstraint
# EnergyBalanceConstraint

"""
Struct to create the state of charge target constraint at the end of period.
Used when the attribute `energy_target = true`.
The specified constraint is formulated as:
```math
e^{st}_{T} + e^{st+} - e^{st-} = E^{st}_{T},
```
"""
struct StateofChargeTargetConstraint <: PSI.ConstraintType end

"""
Struct to create the state of charge constraint limits.
The specified constraint is formulated as:
```math
E_{st}^{min} \\le e^{st}_{t} \\le E_{st}^{max}, \\quad \\forall t \\in \\{1,\\dots, T\\}
```
"""
struct StateofChargeLimitsConstraint <: PSI.ConstraintType end

"""
Struct to create the storage cycling limits for the charge variable.
Used when `cycling_limits = true`.
The specified constraint is formulated as:
```math
\\sum_{t \\in \\mathcal{T}} \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} \\right)\\eta^{ch}_{st} \\Delta t - c^{ch-} \\leq C_{st} E^{max}_{st}
```
"""
struct StorageCyclingCharge <: PSI.ConstraintType end
"""
Struct to create the storage cycling limits for the discharge variable.
Used when `cycling_limits = true`.
The specified constraint is formulated as:
```math
\\sum_{t \\in \\mathcal{T}} \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t}\\right)\\frac{1}{\\eta^{ds}_{st}} \\Delta t - c^{ds-} \\leq C_{st} E^{max}_{st}
```
"""
struct StorageCyclingDischarge <: PSI.ConstraintType end

## AS Provision Energy Constraints
"""
Struct to specify the lower and upper bounds of the discharge variable considering reserves.
The specified constraints are formulated as:
```math
\\begin{align*}
& p^{st, ds}_{t} + \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} sb_{std,p,t} \\leq \\text{ss}^{st}_{t}P^{max,ds}_{st} \\quad \\forall t \\in \\{1,\\dots, T\\} \\\\
& p^{st, ds}_{t} - \\sum_{p \\in \\mathcal{P}^{\text{as}_\\text{dn}}} sb_{std,p,t} \\geq 0, \\quad \\forall t \\in \\{1,\\dots, T\\}
\\end{align*}
```
"""
struct ReserveDischargeConstraint <: PSI.ConstraintType end

"""
Struct to specify the lower and upper bounds of the charge variable considering reserves.
The specified constraints are formulated as:
```math
\\begin{align*}
&p^{st, ch}_{t} + \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} sb_{stc,p,t} \\leq (1 - \\text{ss}^{st}_{t})P^{max,ch}_{st}, \\quad \\forall t \\in \\{1,\\dots, T\\} \\\\
& p^{st, ch}_{t} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} sb_{stc,p,t} \\geq 0, \\quad \\forall t \\in \\{1,\\dots, T\\}
\\end{align*}
```
"""
struct ReserveChargeConstraint <: PSI.ConstraintType end

"""
Struct to specify the individual product ancillary service coverage at the beginning of the period for charge and discharge variables.
The specified constraints are formulated as:
```math
\\begin{align*}
& sb_{stc,p,1} \\eta^{ch}_{st} N_{p} \\Delta t \\le E_{st}^{max} - e^{st}_0, \\quad \\forall p \\in \\mathcal{P}^{as_{dn}} \\\\
& sb_{stc,p,t} \\eta^{ch}_{st} N_{p} \\Delta t \\le E_{st}^{max} - e^{st}_{t-1}, \\quad \\forall p \\in \\mathcal{P}^{as_{dn}}, \\forall t \\in \\{2,\\dots, T\\} \\\\
& sb_{std,p,1} \\frac{1}{\\eta^{ds}_{st}} N_{p} \\Delta t \\leq e^{st}_0 - E^{min}_{st}, \\quad \\forall p \\in \\mathcal{P}^{as_{up}} \\\\
& sb_{std,p,t} \\frac{1}{\\eta^{ds}_{st}} N_{p} \\Delta t \\leq e^{st}_{t-1} - E^{min}_{st}, \\quad \\forall p \\in \\mathcal{P}^{as_{up}}, \\forall t \\in \\{2,\\dots, T\\}
\\end{align*}
```
"""
struct ReserveCoverageConstraint <: PSI.ConstraintType end
"""
Struct to specify the individual product ancillary service coverage at the end of the period for charge and discharge variables.
The specified constraints are formulated as:
```math
\\begin{align*}
& sb_{stc,p,t} \\eta^{ch}_{st} N_{p} \\Delta t \\le E_{st}^{max} - e^{st}_{t}, \\quad \\forall p \\in \\mathcal{P}^{as_{dn}}, \\forall t \\in \\{1,\\dots, T\\} \\\\
& sb_{std,p,t} \\frac{1}{\\eta^{ds}_{st}} N_{p} \\Delta t \\leq e^{st}_{t}- E^{min}_{st}, \\quad \\forall p \\in \\mathcal{P}^{as_{up}}, \\forall t \\in \\{1,\\dots, T\\}
\\end{align*}
```
"""
struct ReserveCoverageConstraintEndOfPeriod <: PSI.ConstraintType end

"""
Struct to specify all products ancillary service coverage at the beginning of the period for charge and discharge variables.
Used when the attribute `complete_coverage = true`.
The specified constraints are formulated as:
```math
\\begin{align*}
& \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} sb_{stc,p,1} \\eta^{ch}_{st} N_{p} \\Delta t \\le E_{st}^{max} - e^{st}_0 \\\\
& \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} sb_{stc,p,t} \\eta^{ch}_{st} N_{p} \\Delta t \\le E_{st}^{max} - e^{st}_{t-1}, \\quad \\forall t \\in \\{2,\\dots, T\\} \\\\
& \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} sb_{std,p,1} \\frac{1}{\\eta^{ds}_{st}} N_{p} \\Delta t \\leq e^{st}_0 - E^{min}_{st} \\\\
& \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} sb_{std,p,t} \\frac{1}{\\eta^{ds}_{st}} N_{p} \\Delta t \\leq e^{st}_{t-1}- E^{min}_{st}, \\quad \\forall t \\in \\{2,\\dots, T\\}
\\end{align*}
```
"""
struct ReserveCompleteCoverageConstraint <: PSI.ConstraintType end

"""
Struct to specify all products ancillary service coverage at the end of the period for charge and discharge variables.
Used when the attribute `complete_coverage = true`.
The specified constraints are formulated as:
```math
\\begin{align*}
& \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} sb_{stc,p,t} \\eta^{ch}_{st} N_{p} \\Delta t \\le E_{st}^{max} - e^{st}_{t}, \\quad \\forall t \\in \\{1,\\dots, T\\} \\\\
& \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} sb_{std,p,t} \\frac{1}{\\eta^{ds}_{st}} N_{p} \\Delta t \\leq e^{st}_{t}- E^{min}_{st}, \\quad \\forall t \\in \\{1,\\dots, T\\}
\\end{align*}
```
"""
struct ReserveCompleteCoverageConstraintEndOfPeriod <: PSI.ConstraintType end

"""
Struct to specify an auxiliary constraint for adding charge and discharge into a single active power reserve variable.
The specified constraint is formulated as:
```math
sb_{stc, p, t} + sb_{std, p, t} = r_{p,t}, \\quad \\forall p \\in \\mathcal{P}, \\forall t \\in \\{1,\\dots, T\\}
```
"""
struct StorageTotalReserveConstraint <: PSI.ConstraintType end

"""
Struct to specify the auxiliary constraints for regularization terms in the objective function for the charge variable.
Used when the attribute `regularization = true`.
The specified constraints are formulated as:
```math
\\begin{align*}
& \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t-1} sb_{stc,p,t-1} + p^{st,ch}_{t-1} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t-1} sb_{stc,p,t-1}\\right) - \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t} sb_{stc,p,t}\\right) \\le z^{st, ch}_{t}, \\forall t \\in \\{2,\\dots, T\\}\\\\
& \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t-1} sb_{stc,p,t-1} + p^{st,ch}_{t-1} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t-1} sb_{stc,p,t-1}\\right) - \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t} sb_{stc,p,t} + p^{st,ch}_{t} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t} sb_{stc,p,t}\\right) \\ge -z^{st, ch}_{t}, \\forall t \\in \\{2,\\dots, T\\}
\\end{align*}
```
"""
struct StorageRegularizationConstraintCharge <: PSI.ConstraintType end

"""
Struct to specify the auxiliary constraints for regularization terms in the objective function for the discharge variable.
Used when the attribute `regularization = true`.
The specified constraints are formulated as:
```math
\\begin{align*}
& \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t-1} sb_{std,p,t-1} + p^{st,ds}_{t-1} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t-1} sb_{std,p,t-1}\\right) -\\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\\right) \\le z^{st, ds}_{t}, \\forall t \\in \\{2,\\dots, T\\}\\\\
& \\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t-1} sb_{std,p,t-1} + p^{st,ds}_{t-1} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{dn}}} R^*_{p,t-1} sb_{std,p,t-1}\\right) -\\left(\\sum_{p \\in \\mathcal{P}^{\\text{as}_\\text{up}}} R^*_{p,t} sb_{std,p,t} + p^{st,ds}_{t} - \\sum_{p \\in \\mathcal{P}^{\\text{as}_\text{dn}}} R^*_{p,t} sb_{std,p,t}\\right) \\ge -z^{st, ds}_{t}, \\forall t \\in \\{2,\\dots, T\\}
\\end{align*}
```
"""
struct StorageRegularizationConstraintDischarge <: PSI.ConstraintType end
16 changes: 15 additions & 1 deletion src/core/variables.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,18 @@
# ReservationVariable

# Ancillary Service Assignment Variables
"""
Ancillary service fraction assigned to Storage Discharging to product p
Docs abbreviation: ``sb^{std}_{p,t}``
"""
struct AncillaryServiceVariableDischarge <: PSI.VariableType end

"""
Ancillary service fraction assigned to Storage Charging to product p
Docs abbreviation: ``sb^{stc}_{p,t}``
"""
struct AncillaryServiceVariableCharge <: PSI.VariableType end

"""
Expand Down Expand Up @@ -38,12 +49,15 @@ Docs nomenclature: ``c^{ds-}``
"""
struct StorageDischargeCyclingSlackVariable <: PSI.VariableType end

"""
Abstract used for StorageRegularization variables
"""
abstract type StorageRegularizationVariable <: PSI.VariableType end

"""
Slack variable for energy storage levels > target storage levels
Docs nomenclature: ``z^{st, ch}``
Docs nomenclature: ``z^{st, ch}``
"""
struct StorageRegularizationVariableCharge <: StorageRegularizationVariable end

Expand Down

4 comments on commit 808b04d

@jd-lara
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register()

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request updated: JuliaRegistries/General/119992

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.11.0 -m "<description of version>" 808b04dd796e770f014ec707f81b0106da7e1831
git push origin v0.11.0

@jd-lara
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register()

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request updated: JuliaRegistries/General/119992

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.11.0 -m "<description of version>" 808b04dd796e770f014ec707f81b0106da7e1831
git push origin v0.11.0

Please sign in to comment.