From 762d96d0e8cfca006492bdda8ad8e04c6591b783 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Mon, 27 Mar 2023 08:51:55 -0300 Subject: [PATCH] [Download Datasheet] Better message warnings - Unified --- CHANGELOG.md | 5 +++-- kibot/out_download_datasheets.py | 23 ++++++++++++----------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b759afa3..50830a1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,13 +12,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `default_resistor_tolerance` which tolerance to use when none found. - `cache_3d_resistors` to avoid generating them all the time. - 3D: colored 3D models for THT resistors -- Datasheet download: - - Avoid interruptions when too many redirections is detected (#408) +- Datasheet download: now the warnings mention which reference failed. ### Fixed - Makefile: don't skip all preflights on each run, just the ones we generate as targets. (#405) - KiKit present: problems when no board was specified. (#402) +- Datasheet download: + - Avoid interruptions when too many redirections is detected (#408) ## [1.6.1] - 2023-03-16 diff --git a/kibot/out_download_datasheets.py b/kibot/out_download_datasheets.py index 870909f9..16a6ddaf 100644 --- a/kibot/out_download_datasheets.py +++ b/kibot/out_download_datasheets.py @@ -50,6 +50,10 @@ class Download_Datasheets_Options(VariantOptions): raise KiPlotConfigurationError("Empty `output` ({})".format(str(self._tree))) self.field = self.field.lower() + def do_warning(self, msg, ds, c): + logger.warning(W_FAILDL+'{} during download of `{}` [{}]'.format(msg, ds, c.ref)) + return None + def download(self, c, ds, dir, name, known): dest = os.path.join(dir, name) logger.debug('To download: {} -> {}'.format(ds, dest)) @@ -67,20 +71,17 @@ class Download_Datasheets_Options(VariantOptions): try: r = requests.get(ds, allow_redirects=True, headers={'User-Agent': USER_AGENT}, timeout=20) except requests.exceptions.ReadTimeout: - logger.warning(W_FAILDL+'Timeout during download `{}`'.format(ds)) - return None - except requests.exceptions.ConnectionError: - logger.warning(W_FAILDL+'Connection error during download `{}`'.format(ds)) - return None + return self.do_warning('Timeout', ds, c) except requests.exceptions.SSLError: - logger.warning(W_FAILDL+'SSL Error during download `{}`'.format(ds)) - return None + return self.do_warning('SSL Error', ds, c) except requests.exceptions.TooManyRedirects: - logger.warning(W_FAILDL+'More than 30 redirections downloading `{}`'.format(ds)) - return None + return self.do_warning('More than 30 redirections', ds, c) + except requests.exceptions.ConnectionError: + return self.do_warning('Connection', ds, c) + except requests.exceptions.RequestException as e: + return self.do_warning(str(e), ds, c) if r.status_code != 200: - logger.warning(W_FAILDL+'Failed to download `{}`'.format(ds)) - return None + return self.do_warning('Failed with status '+str(r.status_code), ds, c) with open(dest, 'wb') as f: f.write(r.content) self._downloaded.add(name)