span-panel-api 3.0.0b10__tar.gz → 3.0.0b11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/CHANGELOG.md +4 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/PKG-INFO +1 -1
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/pyproject.toml +1 -1
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_panel.py +33 -1
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/.gitignore +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/LICENSE +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/README.md +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/__init__.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/_http.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/adapters.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/auth.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/const.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/detection.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/dispatch.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/exceptions.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/factory.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/models.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/mqtt/__init__.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/mqtt/async_client.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/mqtt/client.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/mqtt/connection.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/mqtt/const.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/mqtt/models.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/phase_validation.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/protocol.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/py.typed +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/reference_payloads/README.md +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/reference_payloads/__init__.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/reference_payloads/homie_schema.json +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/schema_drift.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/conftest.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/configs/simulation_config_32_circuit.yaml +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/configs/simulation_config_40_circuit_with_battery.yaml +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/configs/simulation_config_8_tab_workshop.yaml +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/flat_wire.json +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/panelbench_unvalued_by_both.json +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/v2/README.md +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/v2/status.json +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/circuits.response.txt +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/panel.response.txt +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/soe.response.txt +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/status.response.txt +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_accumulator.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_adapters_discovery.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_adopted_control.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_adoption.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_async_mqtt_client.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_auth_and_homie_helpers.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_catalog_divergence.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_detection_auth.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_exceptions.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_factory_dispatch.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_field_metadata.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_live_flat_differential.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_mqtt_bridge.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_mqtt_client_connection.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_mqtt_connect_flow.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_mqtt_debounce.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_mqtt_homie.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_packaging.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_phase_validation_configs.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_phase_validation_errors.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_protocol_conformance.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_protocol_models.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_public_api_unchanged.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_redispatch_on_reconnect.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_reference_tree_values.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_generation_cross_check.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_migration_delta.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_adapter.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_against_simulator.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_charge_limit.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_circuits.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_conformance.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_connection_health.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_devices.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_discovery.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_pcs.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_service_entrance.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_shed_forecast.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_snapshot.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_transport.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_provenance.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_zero_adapter.py +0 -0
- {span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_shared_http_client.py +0 -0
|
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [3.0.0b11]
|
|
8
|
+
|
|
9
|
+
Carries `span-panel-api-schema-1` 0.1.0b8, which restores `dominant_power_source` on a panel with no MID. No change in this distribution.
|
|
10
|
+
|
|
7
11
|
## [3.0.0b10]
|
|
8
12
|
|
|
9
13
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: span-panel-api
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.0b11
|
|
4
4
|
Summary: A client library for SPAN Panel API
|
|
5
5
|
Project-URL: Homepage, https://github.com/SpanPanel/span-panel-api
|
|
6
6
|
Project-URL: Issues, https://github.com/SpanPanel/span-panel-api/issues
|
|
@@ -445,7 +445,39 @@ def test_an_unresolvable_forming_entity_cannot_escape_as_a_raw_id() -> None:
|
|
|
445
445
|
|
|
446
446
|
assert resolve_dominant_power_source(stranger, {}) == "UNKNOWN"
|
|
447
447
|
assert resolve_dominant_power_source(unmapped, {"wh-1": "energy.ebus.device.water-heater"}) == "UNKNOWN"
|
|
448
|
-
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
def test_a_panel_with_no_mid_reports_the_grid_as_forming() -> None:
|
|
451
|
+
"""Elimination, not a guess, and it restores an answer flat already gave.
|
|
452
|
+
|
|
453
|
+
A commissioned MID is what SPAN islands with, so its absence rules out every
|
|
454
|
+
other value this field can take. `BATTERY` needs a BESS and a BESS brings a
|
|
455
|
+
MID; `PV` cannot form a grid alone, because anything that can is a
|
|
456
|
+
grid-forming inverter and therefore a MID; `NONE` describes a panel supplying
|
|
457
|
+
nothing, which is a panel that is not publishing. What remains is a generator,
|
|
458
|
+
and that is two cases of which only one reaches here — one wired through a MID
|
|
459
|
+
is named by that MID and answered before this point, while one with no MID
|
|
460
|
+
interface is what SPAN treats as the grid, and is the only kind an install
|
|
461
|
+
with no MID can have. So this keeps holding if MID-integrated generators
|
|
462
|
+
arrive: they bring a MID.
|
|
463
|
+
|
|
464
|
+
Observed: a live no-BESS panel read `Grid` on flat all night and went
|
|
465
|
+
`Unknown` the moment it upgraded, because the property moved onto a device
|
|
466
|
+
that install does not have. Nothing about the site changed.
|
|
467
|
+
"""
|
|
468
|
+
assert resolve_dominant_power_source(None, {}) == "GRID"
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
def test_a_mid_that_has_not_answered_is_unknown_rather_than_grid() -> None:
|
|
472
|
+
"""Distinct from having no MID at all, and the distinction is the whole point.
|
|
473
|
+
|
|
474
|
+
An islanding authority exists and has not said what is forming the grid. That
|
|
475
|
+
is genuinely unknown — unlike an install with no such authority, where the
|
|
476
|
+
answer is settled by what cannot be there.
|
|
477
|
+
"""
|
|
478
|
+
silent = _synthetic("mid", grid__grid_forming_entity="")
|
|
479
|
+
|
|
480
|
+
assert resolve_dominant_power_source(silent, {}) is None
|
|
449
481
|
|
|
450
482
|
|
|
451
483
|
def test_the_forming_device_is_named_readably_not_by_wire_id() -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/src/span_panel_api/reference_payloads/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/fixtures/panelbench_unvalued_by_both.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/circuits.response.txt
RENAMED
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/panel.response.txt
RENAMED
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/soe.response.txt
RENAMED
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/simulation_fixtures/status.response.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_generation_cross_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_against_simulator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_connection_health.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{span_panel_api-3.0.0b10 → span_panel_api-3.0.0b11}/tests/test_schema_one_service_entrance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|