From 1157036832a0478aceef920d39a439d0dcfbab56 Mon Sep 17 00:00:00 2001 From: Gui-FernandesBR Date: Wed, 4 Nov 2026 11:56:50 -0300 Subject: [PATCH 1/2] DOC: avoid live Windy requests during documentation builds Read the Docs build 35644239 fails while executing the Windy ECMWF example because the upstream endpoint is unavailable. Render the Windy examples as code blocks and point readers to Open-Meteo when the service cannot be reached. --- docs/user/environment/1-atm-models/forecast.rst | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/user/environment/1-atm-models/forecast.rst b/docs/user/environment/1-atm-models/forecast.rst index 347fed281..17c8c3619 100644 --- a/docs/user/environment/1-atm-models/forecast.rst +++ b/docs/user/environment/1-atm-models/forecast.rst @@ -219,9 +219,17 @@ The following models are accepted: Let's see how to use Windy's data in RocketPy. First, we will set the location to EuRoC's launch area in Portugal. +.. note:: -.. jupyter-execute:: + These examples require access to Windy's forecast service. If the service is + unavailable, try another forecast source such as :ref:`open_meteo`. + +.. code-block:: python + + from datetime import datetime, timedelta + from rocketpy import Environment + tomorrow = datetime.now() + timedelta(days=1) env_windy = Environment( date=tomorrow, latitude=39.3897, @@ -238,7 +246,7 @@ you need reliable synoptic-scale forecasts several days ahead. We can use the ``ECMWF`` model from Windy.com. -.. jupyter-execute:: +.. code-block:: python env_windy.set_atmospheric_model(type="Windy", file="ECMWF") env_windy_ecmwf = env_windy @@ -262,7 +270,7 @@ models when assessing forecast uncertainty. The ``GFS`` model is also available on Windy.com. This is the same model as described in the :ref:`global-forecast-system` section. -.. jupyter-execute:: +.. code-block:: python env_windy.set_atmospheric_model(type="Windy", file="GFS") env_windy_gfs = env_windy @@ -278,7 +286,7 @@ wind and temperature trends against GFS or ECMWF. The ICON model is a global weather forecasting model already available on Windy.com. -.. jupyter-execute:: +.. code-block:: python env_windy.set_atmospheric_model(type="Windy", file="ICON") env_windy_icon = env_windy From c2bbeab4801f288741250fce16b6ee9b8d82a423 Mon Sep 17 00:00:00 2001 From: Gui-FernandesBR Date: Wed, 4 Nov 2026 12:04:21 -0300 Subject: [PATCH 2/2] DOC: avoid live ThrustCurve requests during documentation builds Read the Docs build 35645169 reaches the motor examples after the Windy fix, then fails because ThrustCurve returns HTTP 403. Render the API examples as code blocks and recommend local .eng files for reproducible workflows. --- docs/user/motors/genericmotor.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/user/motors/genericmotor.rst b/docs/user/motors/genericmotor.rst index 0706ffcba..30b404fa9 100644 --- a/docs/user/motors/genericmotor.rst +++ b/docs/user/motors/genericmotor.rst @@ -130,13 +130,14 @@ You can bypass the cache by setting ``no_cache=True``: .. note:: This method performs network requests to the ThrustCurve API unless a cached - version exists. For automated testing or fully reproducible workflows, prefer - local `.eng` files or set ``no_cache=True`` explicitly. + version exists. If the service is unavailable or blocks the request, use + ``load_from_eng_file`` with a local ``.eng`` file instead. Local files are also + preferred for automated testing and fully reproducible workflows. Example ------- -.. jupyter-execute:: +.. code-block:: python from rocketpy.motors import GenericMotor @@ -152,7 +153,7 @@ Using the no_cache option If you want to force RocketPy to ignore the cache and download a fresh copy every time, use: -.. jupyter-execute:: +.. code-block:: python motor = GenericMotor.load_from_thrustcurve_api("M1670", no_cache=True) motor.info()