Frequenz-client-microgrid

Latest version: v0.4.0

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

Scan your dependencies

0.4.0

Frequenz Microgrid API Client Release Notes

Summary

This release migrates to use `betterproto` and `grpclib` instead of `grpcio` and `protobuf` internally. It also stops *leaking* these internal libraries to downstream users. It should now be possible to use the client without having to use `grpclib` or `betterproto` directly.

Upgrading

- The client now uses a string URL to connect to the server, the `grpc_channel` and `target` arguments are now replaced by `server_url`. The current accepted format is `grpc://hostname[:<port:int=9090>][?ssl=<ssl:bool=false>]`, meaning that the `port` and `ssl` are optional and default to 9090 and `false` respectively. You will have to adapt the way you connect to the server in your code.

- The client is now using [`grpclib`](https://pypi.org/project/grpclib/) to connect to the server instead of [`grpcio`](https://pypi.org/project/grpcio/). You might need to adapt your code if you are using `grpcio` directly.

- The client now doesn't raise `grpc.aio.RpcError` exceptions anymore. Instead, it raises its own exceptions, one per gRPC error status code, all inheriting from `GrpcError`, which in turn inherits from `ClientError` (as any other exception raised by this library in the future). `GrpcError`s have the `grpclib.GRPCError` as their `__cause__`. You might need to adapt your error handling code to catch these specific exceptions instead of `grpc.aio.RpcError`.

You can also access the underlying `grpclib.GRPCError` using the `grpc_error` attribute for `GrpStatusError` exceptions, but it is discouraged because it makes downstream projects dependant on `grpclib` too

- The client now uses protobuf/grpc bindings generated [betterproto](https://github.com/danielgtaylor/python-betterproto) ([frequenz-microgrid-betterproto](https://github.com/frequenz-floss/frequenz-microgrid-betterproto-python)) instead of [grpcio](https://pypi.org/project/grpcio/) ([frequenz-api-microgrid](https://github.com/frequenz-floss/frequenz-api-microgrid)). If you were using the bindings directly, you might need to do some minor adjustments to your code.

- If an unknown EV charger component state is received, it will now be set to `EVChargerComponentState.UNKNOWN` instead of `EVChargerComponentState.UNSPECIFIED`.

New Features

- The client now raises more specific exceptions based on the gRPC status code, so you can more easily handle different types of errors.

For example:

python
try:
connections = await client.connections()
except OperationTimedOut:
...


instead of:

python
try:
connections = await client.connections()
except grpc.aio.RpcError as e:
if e.code() == grpc.StatusCode.DEADLINE_EXCEEDED:
...


- We now expose component errors as part of the streamed component data:

* `BatteryData.errors`
* `InverterData.errors`

- We now expose component states as part of the streamed component data:

* `BatteryData.component_state` and `BatteryData.relay_state`
* `InverterData.component_state`

- Added the missing `EVChargerComponentState.UNKNOWN` state.

Bug Fixes

- Fix a leakage of `GrpcStreamBroadcaster` instances.
- The user-passed retry strategy was not properly used by the data streaming methods.
- The client `set_bounds()` method might have not done anything and if it did, errors were not properly raised.


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/32
* Bump nox from 2023.4.22 to 2024.3.2 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/35
* Update protobuf requirement from <5,>=4.21.6 to >=4.21.6,<6 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/34
* Bump nox from 2024.3.2 to 2024.4.15 in the required group by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/38
* Improve exception messages by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/43
* Fix a few bugs related to `GrpcStreamBroadcaster` by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/42
* Bump client-base to v0.4.0 by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/44
* Properly await for `AddInclusionBounds` by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/47
* Allow using `None` to specify the default retry strategy by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/46
* Raise a new `ClientError` instead of `AioRpcError` by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/48
* Convert to `betterproto` by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/37
* Make the client accept a server URL to connect to by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/49
* Add specific gRPC client errors by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/53
* Add missing state and error wrappers by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/54


**Full Changelog**: https://github.com/frequenz-floss/frequenz-client-microgrid-python/compare/v0.3.0...v0.4.0

0.3.0

Frequenz Microgrid API Client Release Notes

New Features

- The `reactive_power` is exposed for meters, inverters and EV chargers.


What's Changed
* Clear RELEASE_NOTES.md by shsms in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/27
* Add reactive power for inverters, meters and EV chargers by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/30
* Improve Location docs and tests by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/29
* Widen the channels dependency by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/31


**Full Changelog**: https://github.com/frequenz-floss/frequenz-client-microgrid-python/compare/v0.2.0...v0.3.0

0.2.0

Frequenz Microgrid API Client Release Notes

Summary

This release updates the minimum required `frequenz-channels` version is updated
to v1.0.0-rc1. This is a breaking change, because the channels API has changed.

Upgrading

Follow the upgrading instructions from the new channel release: [v1.0.0-rc1](https://github.com/frequenz-floss/frequenz-channels-python/releases/tag/v1.0.0-rc.1).


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/25
* Update minimum `frequenz-channels` version to `v1.0.0-rc1` by shsms in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/26

New Contributors
* shsms made their first contribution in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/26

**Full Changelog**: https://github.com/frequenz-floss/frequenz-client-microgrid-python/compare/v0.1.2...v0.2.0

0.1.2

Frequenz Microgrid API Client Release Notes

Summary

This version downgrades the `protobuf` dependency to 4.21.6.

This is the version used in the SDK v1.0.0-rc5, which we imported the code from. If we don't do this we introduce an unnecessary dependency conflict with the SDK.


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/23
* Downgrade protobuf to 4.21.6 by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/24


**Full Changelog**: https://github.com/frequenz-floss/frequenz-client-microgrid-python/compare/v0.1.1...v0.1.2

0.1.1

Frequenz Microgrid API Client Release Notes

Summary

This release add some symbols that were missing from the public API:

+ `ComponentCategory`
+ `ComponentMetadata`
+ `ComponentMetricId`
+ `ComponentType`
+ `Fuse`
+ `GridMetadata`
+ `InverterType`


What's Changed
* Clear release notes by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/21
* Expose missing symbols by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/22


**Full Changelog**: https://github.com/frequenz-floss/frequenz-client-microgrid-python/compare/v0.1.0...v0.1.1

0.1.0

Frequenz Microgrid API Client Release Notes

Summary

Code import from the [SDK v1.0.0-rc5](https://github.com/frequenz-floss/frequenz-sdk-python/releases/tag/v1.0.0-rc5) release.

Upgrading

Changes compared to the code in the SDK v1.0.0-rc5 release:

* The `MicrogridGrpcClient` class was renamed to `ApiClient`.

* The `retry_spec` constructor argument was renamed to `retry_strategy`.

* The `MicrogridApiClient` abstract base class was removed, use `ApiClient` instead.

* The `Connection` class is now a `dataclass` instead of a `NamedTuple`. If you use the tuple-like interface (`connection[0]`, etc.) you should use the named attributes instead or use [`dataclasses.astuple()`](https://docs.python.org/3/library/dataclasses.html#dataclasses.astuple) to convert it to a tuple.


What's Changed
* Generate project structure using repo-config by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/1
* Import code from the SDK v1.0.0-rc5 by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/9
* Bump actions/cache from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/5
* Bump actions/setup-python from 4 to 5 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/4
* Bump flake8 from 6.1.0 to 7.0.0 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/7
* Bump black from 23.9.1 to 24.2.0 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/8
* Bump actions/{up,down}load-artifact from 3 to 4 by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/2
* Bump the optional group with 12 updates by dependabot in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/10
* Clean up the code by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/11
* Add more tests from the SDK v1.0.0-rc5 by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/12
* Use streaming helper and retry strategies from `frequenz-client-base` by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/17
* Upgrade `client-base` to v0.2.0 by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/20
* Bump mkdocs-material from 9.5.11 to 9.5.12 by llucax in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/19

New Contributors
* llucax made their first contribution in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/1
* dependabot made their first contribution in https://github.com/frequenz-floss/frequenz-client-microgrid-python/pull/5

**Full Changelog**: https://github.com/frequenz-floss/frequenz-client-microgrid-python/commits/v0.1.0

Links

Releases

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.