From 6c92a633b3ff304b2fccff7e85fbf54ebf7d3f59 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sun, 30 Aug 2026 16:56:04 +0200 Subject: [PATCH] Bump pytrafikverket to 2.0.0 (#180820) --- .../trafikverket_camera/coordinator.py | 6 +- .../trafikverket_camera/manifest.json | 2 +- .../trafikverket_ferry/manifest.json | 2 +- .../trafikverket_train/manifest.json | 2 +- .../trafikverket_weatherstation/manifest.json | 2 +- requirements_all.txt | 2 +- .../trafikverket_camera/conftest.py | 62 +++++++++++++++---- .../trafikverket_camera/test_coordinator.py | 2 +- .../trafikverket_camera/test_init.py | 19 ++++-- 9 files changed, 72 insertions(+), 27 deletions(-) diff --git a/homeassistant/components/trafikverket_camera/coordinator.py b/homeassistant/components/trafikverket_camera/coordinator.py index 581aa6edd992..e4e3e66094f4 100644 --- a/homeassistant/components/trafikverket_camera/coordinator.py +++ b/homeassistant/components/trafikverket_camera/coordinator.py @@ -73,8 +73,10 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[CameraData]): return CameraData(data=camera_data, image=None) image_url = camera_data.photourl - if camera_data.fullsizephoto: - image_url = f"{camera_data.photourl}?type=fullsize" + if camera_data.has_fullsizephoto: + if TYPE_CHECKING: + assert camera_data.photourlfullsize is not None + image_url = camera_data.photourlfullsize async with self.session.get( image_url, timeout=aiohttp.ClientTimeout(total=10) diff --git a/homeassistant/components/trafikverket_camera/manifest.json b/homeassistant/components/trafikverket_camera/manifest.json index 641654de20a0..0afecd202994 100644 --- a/homeassistant/components/trafikverket_camera/manifest.json +++ b/homeassistant/components/trafikverket_camera/manifest.json @@ -7,5 +7,5 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==1.1.1"] + "requirements": ["pytrafikverket==2.0.0"] } diff --git a/homeassistant/components/trafikverket_ferry/manifest.json b/homeassistant/components/trafikverket_ferry/manifest.json index a1c55f969784..83fb599e3bd9 100644 --- a/homeassistant/components/trafikverket_ferry/manifest.json +++ b/homeassistant/components/trafikverket_ferry/manifest.json @@ -7,5 +7,5 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==1.1.1"] + "requirements": ["pytrafikverket==2.0.0"] } diff --git a/homeassistant/components/trafikverket_train/manifest.json b/homeassistant/components/trafikverket_train/manifest.json index a97fd5b8cb85..47a4f196e971 100644 --- a/homeassistant/components/trafikverket_train/manifest.json +++ b/homeassistant/components/trafikverket_train/manifest.json @@ -7,5 +7,5 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==1.1.1"] + "requirements": ["pytrafikverket==2.0.0"] } diff --git a/homeassistant/components/trafikverket_weatherstation/manifest.json b/homeassistant/components/trafikverket_weatherstation/manifest.json index c65bef540d41..3105db98ee35 100644 --- a/homeassistant/components/trafikverket_weatherstation/manifest.json +++ b/homeassistant/components/trafikverket_weatherstation/manifest.json @@ -7,5 +7,5 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pytrafikverket"], - "requirements": ["pytrafikverket==1.1.1"] + "requirements": ["pytrafikverket==2.0.0"] } diff --git a/requirements_all.txt b/requirements_all.txt index 7644590742d0..aef8bf39192d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2854,7 +2854,7 @@ pytradfri[async]==9.0.1 # homeassistant.components.trafikverket_ferry # homeassistant.components.trafikverket_train # homeassistant.components.trafikverket_weatherstation -pytrafikverket==1.1.1 +pytrafikverket==2.0.0 # homeassistant.components.v2c pytrydan==1.0.5 diff --git a/tests/components/trafikverket_camera/conftest.py b/tests/components/trafikverket_camera/conftest.py index 91ce963e6582..6320426db33a 100644 --- a/tests/components/trafikverket_camera/conftest.py +++ b/tests/components/trafikverket_camera/conftest.py @@ -24,8 +24,9 @@ async def load_integration_from_entry( get_camera: CameraInfoModel, ) -> MockConfigEntry: """Set up the Trafikverket Camera integration in Home Assistant.""" + aioclient_mock.get("https://www.testurl.com/test_photo.jpg", content=b"0123456789") aioclient_mock.get( - "https://www.testurl.com/test_photo.jpg?type=fullsize", content=b"0123456789" + "https://www.testurl.com/test_photo_fullsize.jpg", content=b"0123456789" ) config_entry = MockConfigEntry( @@ -57,17 +58,24 @@ def fixture_get_camera() -> CameraInfoModel: return CameraInfoModel( camera_name="Test Camera", camera_id="1234", + camera_group="Test Camera Group", + camera_type="Road", active=True, deleted=False, description="Test Camera for testing", direction="180", - fullsizephoto=True, + has_fullsizephoto=True, + has_sketchimage=True, + icon="12", location="Test location", modified=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), phototime=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), photourl="https://www.testurl.com/test_photo.jpg", + photourlfullsize="https://www.testurl.com/test_photo_fullsize.jpg", + photourlsketch="https://www.testurl.com/test_photo_sketch.jpg", + photourlthumbnail="https://www.testurl.com/test_photo_thumbnail.jpg", status="Running", - camera_type="Road", + wgs84="POINT (12.345678 56.789012)", ) @@ -78,17 +86,24 @@ def fixture_get_camera2() -> CameraInfoModel: return CameraInfoModel( camera_name="Test Camera2", camera_id="5678", + camera_group="Test Camera Group2", + camera_type="Road", active=True, deleted=False, description="Test Camera for testing2", direction="180", - fullsizephoto=True, + has_fullsizephoto=True, + has_sketchimage=True, + icon="12", location="Test location2", modified=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), phototime=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), photourl="https://www.testurl.com/test_photo2.jpg", + photourlfullsize="https://www.testurl.com/test_photo2_fullsize.jpg", + photourlsketch="https://www.testurl.com/test_photo2_sketch.jpg", + photourlthumbnail="https://www.testurl.com/test_photo2_thumbnail.jpg", status="Running", - camera_type="Road", + wgs84="POINT (12.345678 56.789012)", ) @@ -100,32 +115,46 @@ def fixture_get_cameras() -> CameraInfoModel: CameraInfoModel( camera_name="Test Camera", camera_id="1234", + camera_group="Test Camera Group", + camera_type="Road", active=True, deleted=False, description="Test Camera for testing", direction="180", - fullsizephoto=True, - location="Test location", + has_fullsizephoto=True, + has_sketchimage=True, + icon="12", + location="Test location2", modified=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), phototime=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), photourl="https://www.testurl.com/test_photo.jpg", + photourlfullsize="https://www.testurl.com/test_photo_fullsize.jpg", + photourlsketch="https://www.testurl.com/test_photo_sketch.jpg", + photourlthumbnail="https://www.testurl.com/test_photo_thumbnail.jpg", status="Running", - camera_type="Road", + wgs84="POINT (13.345678 56.789012)", ), CameraInfoModel( camera_name="Test Camera2", camera_id="5678", + camera_group="Test Camera Group2", + camera_type="Road", active=True, deleted=False, description="Test Camera for testing2", direction="180", - fullsizephoto=True, + has_fullsizephoto=True, + has_sketchimage=True, + icon="12", location="Test location2", modified=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), phototime=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), photourl="https://www.testurl.com/test_photo2.jpg", + photourlfullsize="https://www.testurl.com/test_photo2_fullsize.jpg", + photourlsketch="https://www.testurl.com/test_photo2_sketch.jpg", + photourlthumbnail="https://www.testurl.com/test_photo2_thumbnail.jpg", status="Running", - camera_type="Road", + wgs84="POINT (12.345678 56.789012)", ), ] @@ -137,15 +166,22 @@ def fixture_get_camera_no_location() -> CameraInfoModel: return CameraInfoModel( camera_name="Test Camera", camera_id="1234", + camera_group="Test Camera Group", + camera_type="Road", active=True, deleted=False, description="Test Camera for testing", direction="180", - fullsizephoto=True, - location=None, + has_fullsizephoto=True, + has_sketchimage=True, + icon="12", + location="Test location2", modified=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), phototime=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), photourl="https://www.testurl.com/test_photo.jpg", + photourlfullsize="https://www.testurl.com/test_photo_fullsize.jpg", + photourlsketch="https://www.testurl.com/test_photo_sketch.jpg", + photourlthumbnail="https://www.testurl.com/test_photo_thumbnail.jpg", status="Running", - camera_type="Road", + wgs84="POINT (12.345678 56.789012)", ) diff --git a/tests/components/trafikverket_camera/test_coordinator.py b/tests/components/trafikverket_camera/test_coordinator.py index d83c7d7c79cd..0a9b672da10f 100644 --- a/tests/components/trafikverket_camera/test_coordinator.py +++ b/tests/components/trafikverket_camera/test_coordinator.py @@ -30,7 +30,7 @@ async def test_coordinator( ) -> None: """Test the Trafikverket Camera coordinator.""" aioclient_mock.get( - "https://www.testurl.com/test_photo.jpg?type=fullsize", content=b"0123456789" + "https://www.testurl.com/test_photo_fullsize.jpg", content=b"0123456789" ) entry = MockConfigEntry( diff --git a/tests/components/trafikverket_camera/test_init.py b/tests/components/trafikverket_camera/test_init.py index 0ec2ef307736..8d708d46c9ec 100644 --- a/tests/components/trafikverket_camera/test_init.py +++ b/tests/components/trafikverket_camera/test_init.py @@ -24,7 +24,7 @@ async def test_setup_entry( ) -> None: """Test setup entry.""" aioclient_mock.get( - "https://www.testurl.com/test_photo.jpg?type=fullsize", content=b"0123456789" + "https://www.testurl.com/test_photo_fullsize.jpg", content=b"0123456789" ) entry = MockConfigEntry( @@ -56,7 +56,7 @@ async def test_unload_entry( ) -> None: """Test unload an entry.""" aioclient_mock.get( - "https://www.testurl.com/test_photo.jpg?type=fullsize", content=b"0123456789" + "https://www.testurl.com/test_photo_fullsize.jpg", content=b"0123456789" ) entry = MockConfigEntry( @@ -90,7 +90,7 @@ async def test_migrate_entry( ) -> None: """Test migrate entry to version 2.""" aioclient_mock.get( - "https://www.testurl.com/test_photo.jpg?type=fullsize", content=b"0123456789" + "https://www.testurl.com/test_photo_fullsize.jpg", content=b"0123456789" ) entry = MockConfigEntry( @@ -204,17 +204,24 @@ async def test_migrate_entry_fails_no_id( _camera = CameraInfoModel( camera_name="Test_camera", camera_id=None, + camera_group="Test Camera Group", + camera_type="Road", active=True, deleted=False, description="Test Camera for testing", direction="180", - fullsizephoto=True, - location="Test location", + has_fullsizephoto=True, + has_sketchimage=True, + icon="12", + location="Test location2", modified=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), phototime=datetime(2022, 4, 4, 4, 4, 4, tzinfo=dt_util.UTC), photourl="https://www.testurl.com/test_photo.jpg", + photourlfullsize="https://www.testurl.com/test_photo_fullsize.jpg", + photourlsketch="https://www.testurl.com/test_photo_sketch.jpg", + photourlthumbnail="https://www.testurl.com/test_photo_thumbnail.jpg", status="Running", - camera_type="Road", + wgs84="POINT (12.345678 56.789012)", ) with patch(