Release History
Version | Released |
---|---|
0.41.2 | 25 October 2024 |
0.41.1 | 23 October 2024 |
0.41.0 | 21 October 2024 |
0.40.0 | 20 September 2024 |
0.39.0 | 23 June 2024 |
0.38.0 | 14 May 2024 |
0.37.4 | 02 October 2024 |
0.37.3 | 25 March 2024 |
0.37.2 | 16 January 2024 |
0.37.1 | 16 January 2024 |
0.37.0 | 14 November 2023 |
0.36.0 | 29 September 2023 |
0.35.0 | 06 September 2023 |
0.34.0 | 24 October 2022 |
0.33.0 | 24 October 2022 |
0.32.0 | 29 August 2022 |
0.29.0 | 14 June 2022 |
0.28.0 | 07 June 2022 |
0.27.0 | 03 March 2022 |
0.26.0 | 07 December 2021 |
0.25.0 | 23 September 2021 |
0.24.0 | 20 August 2021 |
0.23.0 | 16 August 2021 |
0.22.0 | 12 February 2021 |
0.21.0 | 17 December 2020 |
0.20.0 | 14 December 2020 |
0.19.0 | 14 December 2020 |
0.18.0 | 14 December 2020 |
0.17.0 | 11 December 2020 |
0.16.0 | 11 December 2020 |
0.15.0 | 27 November 2020 |
0.14.0 | 27 November 2020 |
0.13.0 | 17 November 2020 |
0.12.0 | 17 November 2020 |
0.11.0 | 04 November 2020 |
0.10.0 | 02 November 2020 |
0.9.0 | 02 November 2020 |
0.8.0 | 30 October 2020 |
0.7.0 | 30 October 2020 |
0.6.0 | 29 October 2020 |
0.5.0 | 29 October 2020 |
NOTE: This library is not yet stable, and breaking changes should be expected until a 1.0.0 release.
[0.41.2]
Fixes
- Don't use typing_extensions for Optional import (fixes import of library on Python >3.12)
[0.41.1]
Breaking Changes
- Restrict installation to supported Python versions 3.9 -> 3.12.
[0.41.0]
Breaking Changes
- None.
New Features
- Data Model change:
- Add
phaseCode
variable toUsagePoint
- Added new classes:
Curve
CurveData
EarthFaultCompensator
GroundingImpedance
PetersenCoil
ReactiveCapabilityCurve
RotatingMachine
SynchronousMachine
- Add
- Added
designTemperature
anddesignRating
toConductor
to capture limitations in the conductor based on the network design and physical surrounds of the conductor. - Added
specialNeed
toCustomer
to capture any special needs of the customer, e.g. life support.
Enhancements
- None.
Fixes
- None.
Notes
- None.
[0.37.4]
Notes
- Update to support requests up to version 3.0.0 (exclusive)
- Update to corresponding zepben.auth library for requests support
[0.40.0]
Breaking Changes
- The database has been split into three databases, which will change the imports of most related classes:
- The existing database containing the network model (
*-network-model.sqlite
) with classes in thenetwork
package. - A new database containing the customer information (
*-customers.sqlite
) with classes in thecustomer
package. - A new database containing the diagrams (
*-diagrams.sqlite
) with classes in thediagram
package.
- The existing database containing the network model (
- The database split has resulted in the database classes also being split, e.g.
DatabaseReader
is nowNetworkDatabaseReader
,CustomerDatabaseReader
andDiagramDatabaseReader
. - Database table classes now return a
Generator
rather than aList
or their index collections. This will have no impact if you are just looping over the result, but it will have an impact if you have inherited your own tables. Equipment
toEquipmentContainer
links for LV feeders are no longer written to the database, they should never have been.- Converted the following classes to use
@dataclass
fromdataclasses
instead ofdataclassy
:PositionPoint
TownDetail
StreetDetail
StreetAddress
Name
DiagramObjectPoint
RelaySetting
TransformerEndRatedS
ResistanceReactance
DataSource
- All private collections inside our CIM objects that index objects by mrid now raise
KeyError
rather thanValueError
if you try and remove an object from an empty collection. - Rationalised accessors for the private collections inside our CIM objects, which has added and/or removed some functions. If you were using one of the removed
functions, there should be another that can give close/equivalent operation. The most notable change is the accessors should now be throwing exceptions
correctly, rather than returning
None
in some circumstances and throwing in others.Location
:get_point
now throws when provided an invalidsequence_number
rather than returningNone
.- Updated error message for providing an incorrect
sequence_number
toinsert_point
.
RelayInfo
:get_delay
andremove_delay_at
now throw when provided an invalidindex
rather than returningNone
.- Updated error message for providing an incorrect
index
toadd_delay
.
Sensor
:- Type information for
get_relay_function
has been updated to indicate the return value is not optional, as the function throws if themrid
is unknown.
- Type information for
ConductingEquipment
:- Updated error message for providing a
Terminal
with an incorrectsequence_number
toadd_terminal
.
- Updated error message for providing a
IdentifiedObject
:get_name
now throws when provided an invalidname_type
orname
rather than returningNone
.get_names
now throws when provided an invalidname_type
rather than returningNone
if it had no names, or anEmptyList
if it had names, but none of the requested type.
DiagramObject
:- Updated error message for providing an incorrect
sequence_number
toinsert_point
.
- Updated error message for providing an incorrect
ProtectionRelayFunction
:- Updated error message for providing an incorrect
sequence_number
toadd_threshold
. - Type information for
get_threshold
has been updated to indicate the return value is not optional, as the function throws if thesequence_number
is unknown. - Type information for
remove_threshold
has been updated to indicate thethreshold
to remove is not optional. - Updated error message for providing an incorrect
index
toadd_time_limit
. remove_time_limit_by_time_limit
was renamed toremove_time_limit
.remove_time_limit
was renamed toremove_time_limit_at
and now throws when provided an invalidindex
rather than returningNone
.- Type information for the following functions have been updated to indicate the return value is not optional, as the functions throw if the
mrid
is unknown:get_sensor
get_protected_switch
get_scheme
- Updated error message for providing an incorrect
ProtectionRelayScheme
:- Type information for
get_function
has been updated to indicate the return value is not optional, as the function throws if themrid
is unknown.
- Type information for
ProtectionRelaySystem
:- Type information for
get_scheme
has been updated to indicate the return value is not optional, as the function throws if themrid
is unknown.
- Type information for
PowerTransformerEnd
:- Updated error message for providing a
PowerTransformerEnd
with an incorrectend_number
toadd_end
. get_rating_by_rated_s
has been removed.get_rating_by_cooling_type
has been renamed toget_rating
and now throws when provided an invalidcooling_type
rather than returningNone
.- The parameters for
add_rating
have been reordered, andcooling_type
now defaults toUNKNOWN_COOLING_TYPE
. add_transformer_end_rated_s
now takes a copy of the providedtransformer_end_rated_s
rather than adding the object directly into the collection.remove_rating_by_cooling_type
now throws when provided an invalidcooling_type
rather than returningNone
.
- Updated error message for providing a
ProtectedSwitch
:- Type information for
get_relay_function
has been updated to indicate the return value is not optional, as the function throws if themrid
is unknown.
- Type information for
RegulatingControl
:- Type information for
get_regulating_cond_eq
has been updated to indicate the return value is not optional, as the function throws if themrid
is unknown.
- Type information for
New Features
- Support zepben.auth 0.12.0 which brings support for auth against EWB servers backed by EntraID.
Enhancements
- Added the following accessors/helpers to our CIM objects:
Location.for_each_point
RelayInfo.for_each_point
IdentifiedObject.has_name
DiagramObject.for_each_point
DiagramObject.remove_point_by_sequence_number
ProtectionRelayFunction.for_each_threshold
ProtectionRelayFunction.remove_threshold_at
ProtectionRelayFunction.for_each_time_limit
- Added missing
num_controls
field toPowerSystemResource
.
Fixes
- Added missing type information to the following
NameType
functions:get_or_add_name
,remove_name
andremove_names
Notes
- Updated to support zepben.protobuf 0.27.0. This has actually been supported since 0.38.0, however the released version was not captured in the dependencies.
[0.39.0]
Breaking Changes
- None.
New Features
- Added
EwbDataFilePaths
class for working with the EWB various database files
Enhancements
- Added feature list to documentation.
Fixes
- Updated zepben.auth to 0.11.1 to fix incorrect audience processing when requesting tokens with Entra.
Notes
- None.
[0.38.0]
Breaking Changes
- This is the last release using an artifact name of
zepben.evolve
, future releases will be made aszepben.ewb
. connect_with_secret()
andconnect_with_password()
will no longer create aZepbenTokenFetcher
directly from kwargs.IdentifiedObject.addName
has been refactored to take in astr
and aNameType
. This is doing the same thing under the hood as previousadd_name()
function, but simplifies the input by lowering the amount of objects that needed to be created prior to adding names. Example usage change:obj.add_name(nameType, "name", obj))
orobj.add_name(nameType.getOrAddName("name", obj))
becomesobj.add_name("name", nameType)
add_name()
/remove_name()
related function for bothIdentifiedObject
andNameType
will now also perform the same function on the other object type. i.e. Removing a name from the identified object will remove it from the name type and vice versa. Same interaction is also applied to adding a name.- Removed
ProtectionEquipment
. - Change of inheritance:
CurrentRelay
→ProtectionEquipment
. becomesCurrentRelay
→ProtectionRelayFunction
. - Removed symmetric relation
ProtectionEquipment
↔ProtectedSwitch
. - Renamed
CurrentRelayInfo
toRelayInfo
.- The override
CurrentRelay.relay_info
has been moved fromCurrentRelay
to its new parent class,ProtectionRelayFunction
. - Renamed
RelayInfo.remove_delay
toRelayInfo.remove_delay_at
. The original method name has been repurposed to remove a delay by its value rather than its index.
- The override
- Reworked values for enumerable type
ProtectionKind
.
New Features
- Added support for passing the grpc channel configuration options to the
GrpcChannelBuilder
. - Added
get_names(IdentifiedObject)
toNameType
to retrieve all names associated with theNameType
that belongs to anIdentifiedObject
. - Added
get_names(NameType)
andget_names(String)
toIdentifiedObject
so user can retrieve all names for a givenNameType
of theIdentifiedObject
- Added new classes and fields to support advanced modelling of protection relays:
SeriesCompensator
: A series capacitor or reactor or an AC transmission line without charging susceptance.Ground
: A point where the system is grounded used for connecting conducting equipment to ground.GroundDisconnector
: A manually operated or motor operated mechanical switching device used for isolating a circuit or equipment from ground.ProtectionRelayScheme
: A scheme that a group of relay functions implement. For example, typically schemes are primary and secondary, or main and failsafe.ProtectionRelayFunction
: A function that a relay implements to protect equipment.ProtectionRelaySystem
: A relay system for controllingProtectedSwitch
es.RelaySetting
: The threshold settings for a given relay.VoltageRelay
: A device that detects when the voltage in an AC circuit reaches a preset voltage.DistanceRelay
: A protective device used in power systems that measures the impedance of a transmission line to determine the distance to a fault, and initiates circuit breaker tripping to isolate the faulty section and safeguard the power system.RelayInfo.reclose_fast
: True if reclose_delays are associated with a fast Curve, False otherwise.RegulatingControl.rated_current
: The rated current of associated CT in amps for a RegulatingControl.
Enhancements
GrpcChannelBuilder
tests the connectivity of newly created channels before returning them to the user. This is done by callinggetMetadata()
against all known services, the channel is returned after the first successful response. Any connectivity errors will be propagated to the user. If no connectivity errors are encountered but no successful response is received from the known services, aGrpcConnectionException
is thrown.
Fixes
SetDirection
now traces through non-substation transformers.Feeder.normal_head_terminal
can now be freely updated when theFeeder
has no equipment assigned to it.PotentialTransformer
now recognised as a valid identified object type when deserializing gRPC messages.
Notes
- Default grpc channel message size is now 20MB.
[0.37.0]
Breaking Changes
- Updated to evolve-grpc 0.26.0.
New Features
- PowerTransformerEnd now supports multiple ratings based on cooling types attached to the transformer. Use new
add_rating
andget_rating
methods.- See notes section for deprecation information of
rated_s
.
- See notes section for deprecation information of
- Added new classes:
- TapChangerControl
- EvChargingUnit
- RegulatingControl
- Added new fields:
- Equipment.commissioned_date
- UsagePoint
- rated_power
- approved_inverter_capacity
- ProtectionEquipment
- directable
- power_direction
- CurrentRelayInfo.reclose_delays
- DER register fields on PowerElectronicsConnection
- Added new enums
- PowerDirectionKind
- RegulatingControlModeKind
- TransformerCoolingType
Enhancements
- Update docusaurus and its configuration.
Fixes
- None.
Notes
- Setting PowerTransformerEnd.rated_s directly has been deprecated. You should now use
add_rating
andget_rating
to set arated_s
alongside a definedTransformerCoolingType
if one is known. By default thecoolingType
will beUNKNOWN
.
[0.36.0]
Breaking Changes
- None.
New Features
- Support using Azure Entra ID as an auth provider
- Added support for connecting to EWB utilising Azure managed identities. Use the new function
connect_with_identity()
Enhancements
- None.
Fixes
- None.
Notes
- None.
[0.35.0]
Breaking Changes
Renamed the module for
GrpcChannelBuilder
fromchannel_builder
togrpc_channel_builder
.GrpcChannelBuilder().make_secure
now takes filenames instead of bytestrings. The order of the parameters has also been changed:private_key
now comes aftercertificate_chain
.- This changes also applies to any TLS parameters in
connect_*
functions.
- This changes also applies to any TLS parameters in
GrpcChannelBuilder().socket_address
has been renamed tofor_address
.GrpcChannelBuilder().token_fetcher
has been renamed towith_token_fetcher
.Refactored
AuthTokenPlugin
to a separate module.Removed deprecated
connect
andconnect_async
functions. They have been replaced with several simpler functions, e.g.connect_with_password
.Changed
connect_with_secret
andconnect_with_password
parameters:- The address of the authentication config is now specified with a single parameter:
conf_address
. - Added optional parameters
verify_conf
andverify_auth
, which are passed through torequests.get
andrequests.put
when fetching the authentication config and requesting access tokens respectively. ca
is replaced withca_filename
, which can be set to the filename of a CA to use when verifying the certificate of the gRPC service.
- The address of the authentication config is now specified with a single parameter:
Refactored
TreeNode
class to its own submodule:zepben.evolve.services.network.tracing.tree.tree_node
.Renamed
FeederDirection.has
toFeederDirection.__contains__
, which can be used via its operator versionin
. e.g.BOTH.has(DOWNSTREAM)
can be replaced withBOTH.__contains__(DOWNSTREAM)
orDOWNSTREAM in BOTH
Removed deprecated function
NetworkConsumerClient.get_feeder
.Refactored the following
Switch
descendant classes to their own submodules inzepben.evolve.model.cim.iec61970.base.wires
:Breaker
moved tobreaker
Disconnector
moved todisconnector
Fuse
moved tofuse
Jumper
moved tojumper
LoadBreakSwitch
moved toload_break_switch
ProtectedSwitch
moved toprotected_switch
Recloser
moved torecloser
Note that
from zepben.evolve import <ClassName>
will still work as usual for all of the above classes.DatabaseReader().load
is now an asynchronous function.The addition of the
mrid
andconnectivity_node_mrid
arguments to theTestNetworkBuilder
functions has changed the position of theaction
argument. If you are using positional arguments you will need to addaction=
before your actions if you do not specify your own mRIDs.SetDirection.run(NetworkService)
will no longer set directions for feeders with a head terminal on an open switch. It is expected these feeders are either placeholder feeders with no meaningful equipment, or are energised from another feeder which will set the directions from the other end.
New Features
- Added support for current transformers and power transformers with the following classes in
zepben.evolve.cim.*
:- In
zepben.evolve.cim.iec61968.infiec61968.infassetinfo
:CurrentTransformerInfo
: Properties of current transformer asset.PotentialTransformerInfo
: Properties of potential transformer asset.
- In
zepben.evolve.cim.iec61968.infiec61968.infcommon
:Ratio
: Fraction specified explicitly with a numerator and denominator, which can be used to calculate the quotient.
- In
zepben.evolve.cim.iec61970.base.auxiliaryequipment
:CurrentTransformer
: Instrument transformer used to measure electrical qualities of the circuit that is being protected and/or monitored.PotentialTransformer
: Instrument transformer (also known as Voltage Transformer) used to measure electrical qualities of the circuit that is being protected and/or monitored.PotentialTransformerKind
: The construction kind of the potential transformer. (Enum)Sensor
: This class describes devices that transform a measured quantity into signals that can be presented at displays, used in control or be recorded.
- In
- Added
PowerTransformer().get_end_by_terminal
, which gets aPowerTransformerEnd
by theTerminal
it's connected to. - Added the following functions to
connected_equipment_trace.py
for creating traces that work onConductingEquipment
, and ignore phase connectivity, instead considering things to be connected if they share aConnectivityNode
:new_normal_downstream_equipment_trace
: Creates a trace that traverses in the downstream direction using the normal state of the network.new_normal_upstream_equipment_trace
: Creates a trace that traverses in the upstream direction using the normal state of the network.new_current_downstream_equipment_trace
: Creates a trace that traverses in the downstream direction using the current state of the network.new_current_upstream_equipment_trace
: Creates a trace that traverses in the upstream direction using the current state of the network.
- Added support for protection equipment with the following classes, enums, and fields:
SwitchInfo
: Switch datasheet information.ProtectionEquipment
: An electrical device designed to respond to input conditions in a prescribed manner and after specified conditions are met to cause contact operation or similar abrupt change in associated electric control circuits, or simply to display the detected condition.CurrentRelay
: A device that checks current flow values in any direction or designated direction.CurrentRelayInfo
: Current relay datasheet information.ProtectionKind
: The kind of protection being provided by this protection equipment.ProtectedSwitch().breaking_capacity
: The maximum fault current in amps a breaking device can break safely under prescribed conditions of use.ProtectedSwitch().operated_by_protection_equipment
: The collection ofProtectionEquipment
operating theProtectedSwitch
.Switch().rated_current
: The maximum continuous current carrying capacity in amps governed by the device material and construction. The attribute shall be a positive value.Breaker().in_transit_time
: The transition time from open to close in seconds.
- Added
getCustomersForContainer
toCustomerConsumerClient
which allows fetching all theCustomer
s for a givenEquipmentContainer
- Added
getDiagramObjects
toDiagramConsumerClient
which allows fetching all theDiagramObject
s matching a given mRID. Traversal
has two new helper methods:if_not_stopping
: Adds a step action that is only called if the traversal is not stopping on the item.if_stopping
: Adds a step action that is only called if the traversal is stopping on the item.
Enhancements
tracker
is now a field inTraversal
, rather than its subclasses.- The constructor for
BranchRecursiveTraversal
now defaults theprocess_queue
field todepth_first()
. TreeNode
is now more closely aligned with its Kotlin version:TreeNode().parent
is now a read-only property.TreeNode().children
has been added as a read-only property that yields each child node.TreeNode().sort_weight
has been added as a read-only property that returns the sort weight of the node.
- All
Tracker
classes can now be copied using thecopy
method. - Added
FeederDirection.__not__
operator function. - Performance enhancement for
connected_equipment_trace.py
when traversing elements with single terminals. - Added support for LV2 transformers.
- Improved logging when saving a database.
- The
TestNetworkBuilder
has been enhanced with the following features:- You can now set the ID's without having to create a customer 'other' creator.
- Added Kotlin wrappers for
.fromOther
and.toOther
that allow you to pass a class type rather than a creator. e.g..toOther<Fuse>()
instead of.toOther(::Fuse)
or.toOther( { Fuse(it) } )
. - Added inbuilt support for
PowerElectronicsConnection
andEnergyConsumer
- The
to*
andconnect
functions can specify the connectivity node mRID to use. This will only be used if the terminals are not already connected.
- Added
+
and-
operators toPhaseCode
andSinglePhaseKind
.
Fixes
StreetDetail.to_cim
now references the protobuf -> CIM translation function for theStreetDetail
protobuf type.PerLengthImpedance.to_cim
now references the protobuf -> CIM translation function for thePerLengthImpedance
protobuf type.ZepbenTokenFetcher
now includes the refresh token in token refresh requests.- Fixed connectivity traces.
- Fixed bug where running a limited connected equipment trace with
maximum_steps=1
included equipment two steps away from the starting equipment iffeeder_direction
is set. - Each stop condition of a traversal is now checked on each step, regardless if a previous one in the internal list has returned
True
. - Add
normal_upstream_trace
,current_upstream_trace
, andphase_inferrer
to__all__
inzepben.evolve.services.network.tracing.tracing
. - Added missing
run
method forDownstreamTree
. - Added missing
TreeNodeTracker
. - Classes in the
zepben.evolve.services.network.tracing.tree.*
submodules may now be importedfrom zepben.evolve
. - Add
normal_upstream_trace
,current_upstream_trace
, andphase_inferrer
to__all__
inzepben.evolve.services.network.tracing.tracing
. - Stopped the NetworkConsumerClient from resolving the equipment of an EquipmentContainer when resolving references. Equipment for containers must always be explicitly requested by the client.
- Asking for the traced phases as a phase code when there are no nominal phases no longer throws.
- Feeder directions are now stopped at substation transformers in the same way as assigning equipment incase the feeder has no breaker, or the start point is not inline.
Notes
- None.
[0.34.0]
This is a re-release to ensure we're using a released version of zepben.protobuf. There is no notable difference to 0.33.0.
[0.33.0]
Breaking Changes
- Renamed the following classes to be consistent with the JVM implementation:
Traversal
toBasicTraversal
BaseTraversal
toTraversal
Tracker
toBasicTracker
BaseTracker
toTracker
- Renamed the following functions to be consistent with the JVM implementation:
Traversal.trace
toTraversal.run
Terminal.get_other_terminals
toTerminal.other_terminals
- Replaced
Equipment().current_feeders
withEquipment().current_containers
, which yieldsEquipmentContainer
's insteadFeeder
's. - Changed the
AssignToFeeders
trace to stop at and exclude LV equipment, which should now be added to the newLvFeeder
object. - In the
services.network.tracing.tracing
module, renamedassign_equipment_container_to_feeders
toassign_equipment_to_feeders
. - Database versions prior to v43 are no longer supported.
New Features
- Added
LvFeeder
, a branch of LV network starting at a distribution substation and continuing until the end of the LV network. - Added the following optional arguments to
NetworkConsumerClient().get_equipment(_for)_container(s)
:include_energizing_containers
: Specifies whether to include equipment from containers energizing the ones listed inmrids
. This is of the enum typeIncludedEnergizingContainers
, which has three possible values:EXCLUDE_ENERGIZING_CONTAINERS
: No additional effect (default).INCLUDE_ENERGIZING_FEEDERS
: Include HV/MV feeders that power LV feeders listed inmrids
.INCLUDE_ENERGIZING_SUBSTATIONS
: In addition toINCLUDE_ENERGIZING_FEEDERS
, include substations that energize a HV/MV feeder listed inmrids
or included viaINCLUDE_ENERGIZING_FEEDERS
.
include_energized_containers
: Specifies whether to include equipment from containers energized by the ones listed inmrids
. This is of the enum typeIncludedEnergizedContainers
, which has three possible values:EXCLUDE_ENERGIZED_CONTAINERS
: No additional effect (default).INCLUDE_ENERGIZED_FEEDERS
: Include HV/MV feeders powered by substations listed inmrids
.INCLUDE_ENERGIZED_LV_FEEDERS
: In addition toINCLUDE_ENERGIZED_FEEDERS
, include LV feeders that are energizes by a HV/MV feeder listed inmrids
or included viaINCLUDE_ENERGIZED_FEEDERS
.
- Added the method
NetworkConsumerClient().get_equipment_for_containers
, which is similar toNetworkConsumerClient().get_equipment_for_container
but acts on multiple containers. - Added
FindSwerEquipment
class which can be used for finding the SWER equipment in aNetworkService
orFeeder
.
Enhancements
- None.
Fixes
PhaseCode.num_phases
now correctly returns the number of single phases in a phase code.- Fixed issue where
PowerTransformer().ends
was sometimes incorrectly ordered after Protobuf-to-CIM translation.
Notes
- None.
v0.32.0
Breaking Changes
- Renamed the following classes to be consistent with the JVM implementation:
Traversal
toBasicTraversal
BaseTraversal
toTraversal
Tracker
toBasicTracker
BaseTracker
toTracker
- Renamed the following functions to be consistent with the JVM implementation:
Traversal.trace
toTraversal.run
Terminal.get_other_terminals
toTerminal.other_terminals
New Features
- None
Enhancements
- Improved performance for bus branch creation.
- Added the following functions to be consistent with the JVM implementation:
Terminal.connected_terminals
Fixes
PhaseStepTracker
now reports strict subsets of visited phases as visited.- Base voltages are no longer pulled from switches when creating nodes in
BusBranchNetworkCreator
Notes
- None.
v0.29.0
Breaking Changes
- None
New Features
- None
Enhancements
- Updated zepben.protobuf which includes version 1.46.3 of grpcio and grpcio-tools, plus version 4.21.1 of protobuf, enabling support for M1 macs and significant performance improvements.
Fixes
- None
Notes
- None.
v0.28.0
Breaking Changes
queue_next
functions now take an item and aTraversal
, and they now hold the responsibility of adding the next items to the traversal's queue.- Removed
get_connectivity
andget_connected_equipment
fromconnectivity_result.py
. Useconnected_terminals
andconnected_equipment
instead. - Moved
PhaseSelector
definition totypes.py
.
New Features
- Allow specification of timeout for CimConsumerClients
- Added the following traces to process a
NetworkService
, which can be accessed via thetracing
package:SetPhases
RemovePhases
SetDirection
RemoveDirection
PhaseInferrer
- Added new
connect_tls()
helper function for connecting to TLS secured EWB with no auth. - Added new
connect_with_secret()
helper function for connecting to a secure EWB server with a client id and secret.
Enhancements
- BusBranchNetworkCreator logic updated so that the factory methods for topological_branches, equivalent_branches, and power_transformers get the topological nodes passed in as arguments sorted by feeder_direction.
Fixes
connect_with_password()
now worksSetPhases
now supports setting backwards through XN/XY transformers.TestNetworkBuilder
now assigns equipment to feeders if there are any feeders present.
Notes
- None.
v0.27.0
Breaking Changes
- Removed CIM gRPC producers.
- Added support for
EquivalentBranches
inBusBranchNetworkCreator
. TownDetail
fields are now nullable.- Simplified
connect
andconnect_async
by refactoring optional settings (e.g. password authentication) to other functions. These functions are now deprecated. - Use asyncio for gRPC from the newest update of
grpcio
andgrpcio-tool
. - Renamed
PhaseDirection
toFeederDirection
:IN
renamed toUPSTREAM
OUT
renamed toDOWNSTREAM
- Separated feeder direction from phase.
- Direction has been removed from
TracedPhases
and is now accessed directly off theTerminal
. - Direction has been removed from
PhaseStatus
and is now accessed viaDirectionStatus
.
- Direction has been removed from
- Renamed
NetworkService.add_connectivitynode
toNetworkService.add_connectivity_node
New Features
- Implemented database module for persisting to sqlite database.
- Added
PhaseCodes
:s1
s2
- Added
SinglePhaseKinds
:s1
s1N
s12
s12N
s2
s2N
- Added the following CIM classes/enums:
TransformerConstructionKind
TransformerFunctionKind
StreetDetail
- Added the following
PowerTransformer
fields:construction_kind: TransformerConstructionKind
function: TransformerFunctionKind
- Added the following
StreetAddress
fields:po_box: str
street_detail: Optional[StreetDetail]
- Added the following
EnergySource
fields:is_external_grid: bool
r_min: Optional[float]
rn_min: Optional[float]
r0_min: Optional[float]
x_min: Optional[float]
xn_min: Optional[float]
x0_min: Optional[float]
r_max: Optional[float]
rn_max: Optional[float]
r0_max: Optional[float]
x_max: Optional[float]
xn_max: Optional[float]
x0_max: Optional[float]
- Added
TestNetworkBuilder
which can be used to create simple test networks.
Enhancements
- Reworked phase connectivity to better handle unknown primary phases (X/Y).
- You can now get a
PhaseCode
representation from traced phases if it is valid.
Fixes
- Updated gRPC to fix support for latest LetsEncrypt certificates.
Notes
- None.
v0.26.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.25.0
Breaking Changes
- Added
secure
flag toconnect()
andconnect_async()
that defaults to False. This flag needs to be True when a secure connection is required or credentials are used.
New Features
- Added CIM class
ShuntCompensatorInfo
Enhancements
- None.
Fixes
- Fixed bug that would cause bus-branch creation mappings to be shared between bus-branch creation result instances.
connect()
andconnect_async()
will now use the OS CA bundle by default if noca
is specified.
Notes
- None.
v0.24.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.23.0
Breaking Changes
Location.points
no longer provides an enumerated generator over PositionPoints.NetworkHierarchy
has been updated to use CIM classes.get_feeder
has been deprecated. Prefer the use of the more genericget_equipment_container
.get_identified_object
now returns aValueError
error if the requested object does not exist rather than anull
successful result.- Renamed
get_terminals_for_connectivitynode
toget_terminals_for_connectivity_node
inNetworkConsumerClient
. - Renamed
value
toobjects
inMultiObjectResult
. - All
CimConsumerClient
implementations have been changed to control a single service rather than one per call. - All SDK methods that retrieve objects with references will now request the network hierarchy first to provide a consistent result, regardless of call order.
- Changed
DiagramObject.style
to be a string and removedDiagramObjectStyle
enum. - Updated to use v0.15.0 gRPC protocols.
New Features
- Added the following CIM classes:
BusbarSection
EquivalentBranch
EquivalentEquipment
Name
NameType
NoLoadTest
LoadBreakSwitch
OpenCircuitTest
ShortCircuitTest
TransformerEndInfo
TransformerStarImpedance
TransformerTankInfo
TransformerTest
- Example simple bus branch network added in
zepben.evolve.examples.simple_bus_branch
. - Helper factory methods for AcLineSegment, Junction (Bus), PowerTransformer, EnergySource, and EnergyConsumer added to
NetworkService
and available throughzepben.evolve.services.network.network_extensions
. - Added utility function to generate bus-branch models from a NetworkService.
- Passing token for authorization of connection to authenticated gRPC server.
- Added API calls for getting loops.
- Added
isVirtual
andconnectionCategory
toUsagePoint
Enhancements
- [tests] cim_creators.py created with similar hypothesis derived functionality to pb_creators, and can be used to quickly build fake data for testing.
NetworkHierarchy
now contains circuits and loops.- You can now pass object instances rather than just mRID's to service functions used to populate those objects (e.g.
get_equipment_for_container
).
Fixes
get_identified_objects
now adds unknown mRIDs to the failed collection.- Fixed typing issues on all services.
- Circuits now correctly link to loops when received via gRPC.
Notes
- None.
v0.22.0
Breaking Changes
- ConnectivityResult init signature has slight changes to simplify use.
- Removed NetworkProtoToCim. Use NetworkService.add_from_pb directly instead.
- UUID is no longer a supported type for
IdentifiedObject.mRID
, use a string representation instead. get_unresolved_reference_mrids
has now been replaced byget_unresolved_references_from
andget_unresolved_references_to
, which returnUnresolvedReference
s
New Features
- AssignToFeeders and AssociatedTerminalTrace are now available for use.
- PowerTransformerInfo class added. A PowerTransformer may have a PowerTransformerInfo as its asset_info.
BaseService
now has two mappings overUnresolvedReference
, via the to_mrid and the from objects mrid, and two functions have been added:get_unresolved_references_from(mrid)
: Allows fetching all UnresolvedReferences frommrid
get_unresolved_references_to(mrid)
: Allows fetching all UnresolvedReferences pointing tomrid
- NetworkConsumerClient has 4 new functions:
For fetching equipment for an EquipmentContainer
get_equipment_for_container(service: NetworkService, mrid: str)
For fetching current equipment for a Feeder
get_current_equipment_for_feeder(service: NetworkService, mrid: str)
For fetching equipment for an OperationalRestriction
get_equipment_for_restriction(service: NetworkService, mrid: str)
For fetching terminals for a ConnectivityNode
get_terminals_for_connectivity_node(service: NetworkService, mrid: str)
NetworkConsumerClient.get_feeder()
now resolves all references, and thus you can expect to receive a Feeder with all equipment and their associations populated.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.21.0
Breaking Changes
- Re-ordered the internal modules. If you were previously importing from something other than the top-level module (zepben.evolve), it's likely these imports will no longer work. You should change all your imports to only import from zepben.evolve.
New Features
- Added MeasurementProducerClient for streaming measurements. Currently experimental and API will definitely change.
Enhancements
- Added PowerTransformerInfo class to be used as asset_info for PowerTransformers.
Fixes
- None.
Notes
- None.
v0.20.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.19.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.18.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- CimProducerClient and subclasses now works as expected - error_handlers are now able to be passed in.
Notes
- None.
v0.17.0
Breaking Changes
- Renamed top level package from
zepben.cimbend
tozepben.evolve
v0.16.0
Breaking Changes
- connect and connect_async no longer yield a [Sync]WorkbenchConnection, which has been deprecated, and now yield a gRPC Channel, which can be used to create the new consumer/producer clients listed below.
New Features
The gRPC api now matches evolve-sdk-jvm (with some additions). Notably, there are consumer clients and producer clients, and each have an asyncio compatible version and a synchronous version (prefixed with Sync). Each version exposes the same API.
New consumer client classes:
NetworkConsumerClient
andSyncNetworkConsumerClient
CustomerConsumerClient
andSyncCustomerConsumerClient
DiagramConsumerClient
andSyncDiagramConsumerClient
New producer client classes:
NetworkProducerClient
andSyncNetworkProducerClient
CustomerProducerClient
andSyncCustomerProducerClient
DiagramProducerClient
andSyncDiagramProducerClient
ProducerClient
- A wrapper around the above 3 clients to support sending to each service simultaneously.
Enhancements
- Aligned with evolve-sdk-jvm.
Fixes
- Lots.
Notes
- Some tracing functionality is still missing compared to the jvm sdk.
v0.15.0
Breaking Changes
- connect() and connect_async() now return a gRPC
Channel
rather than a [Sync]WorkbenchConnection which is now deprecated. Instead you should use thisChannel
to create a subclass of theCimConsumerClient
orCimProducerClient
. (see new features).
New Features
- Consumer and Producer gRPC streaming APIs have been enhanced. All gRPC based streaming should be done through the following classes:All consumers implement
- `NetworkConsumerClient`
- `NetworkProducerClient`
- `DiagramConsumerClient`
- `DiagramProducerClient`
- `CustomerConsumerClient`
- `CustomerProducerClient`get_identified_object()
andget_identified_objects()
NetworkConsumerClient also hasget_network_hierarchy()
,get_feeder()
,retrieve_network()
. See their pydoc for more info.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.14.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.13.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.12.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.11.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.10.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.9.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.8.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.7.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.6.0
Breaking Changes
- None.
New Features
- None.
Enhancements
- None.
Fixes
- None.
Notes
- None.
v0.5.0
Initial github release of the evolve protobuf and gRPC definitions.