pymodaq_utils 5.3.2__tar.gz → 5.3.4__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.
Files changed (37) hide show
  1. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/PKG-INFO +1 -1
  2. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/plugin_checks.py +13 -1
  3. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/plugin_rules.py +2 -2
  4. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/.gitignore +0 -0
  5. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/LICENSE +0 -0
  6. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/README.rst +0 -0
  7. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/pyproject.toml +0 -0
  8. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/__init__.py +0 -0
  9. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/abstract.py +0 -0
  10. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/array_manipulation.py +0 -0
  11. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/categorizing.py +0 -0
  12. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/config.py +0 -0
  13. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/enums.py +0 -0
  14. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/environment.py +0 -0
  15. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/factory.py +0 -0
  16. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/help.py +0 -0
  17. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/icon.ico +0 -0
  18. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/logger.py +0 -0
  19. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/math_utils.py +0 -0
  20. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/mysocket.py +0 -0
  21. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/packages.py +0 -0
  22. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/plugin_scaffold.py +0 -0
  23. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/plugin_testing.py +0 -0
  24. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/resources/__init__.py +0 -0
  25. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/resources/config_template.toml +0 -0
  26. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/resources/hatch_build_plugins.py +0 -0
  27. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/serialize/__init__.py +0 -0
  28. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/serialize/factory.py +0 -0
  29. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/serialize/mysocket.py +0 -0
  30. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/serialize/serializer.py +0 -0
  31. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/serialize/serializer_legacy.py +0 -0
  32. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/serialize/utils.py +0 -0
  33. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/singleton.py +0 -0
  34. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/splash.png +0 -0
  35. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/units.py +0 -0
  36. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/utils.py +0 -0
  37. {pymodaq_utils-5.3.2 → pymodaq_utils-5.3.4}/src/pymodaq_utils/warnings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pymodaq_utils
3
- Version: 5.3.2
3
+ Version: 5.3.4
4
4
  Summary: Modular Data Acquisition with Python
5
5
  Project-URL: Homepage, http://pymodaq.cnrs.fr
6
6
  Project-URL: Source, https://github.com/PyMoDAQ/PyMoDAQ
@@ -289,7 +289,19 @@ def _is_environmental(error: Exception, package: str) -> bool:
289
289
  if isinstance(error, ImportError):
290
290
  name = getattr(error, 'name', None) or ''
291
291
  return not (name == 'pymodaq' or name.startswith('pymodaq.') or name.split('.')[0] == package)
292
- return isinstance(error, (OSError, KeyError))
292
+ if isinstance(error, (OSError, KeyError)):
293
+ return True
294
+ # a vendor module may refuse to load with another kind of error (pyvisa without backend: ValueError, PyDAQmx
295
+ # on Linux: NotImplementedError...): it is environmental if raised by third party code, not by the plugin
296
+ if isinstance(error, (ValueError, NotImplementedError, RuntimeError)):
297
+ tb = error.__traceback__
298
+ while tb is not None and tb.tb_next is not None:
299
+ tb = tb.tb_next
300
+ if tb is not None:
301
+ origin = tb.tb_frame.f_globals.get('__name__', '') or ''
302
+ top = origin.split('.')[0]
303
+ return bool(top) and top not in (package, 'pymodaq', 'pymodaq_utils', 'pymodaq_gui', 'pymodaq_data')
304
+ return False
293
305
 
294
306
 
295
307
  def load_plugin_class(plugin_module: PluginModule) -> type:
@@ -379,7 +379,7 @@ def check_leftovers(package: str, root: Path, project: Optional[Path] = None) ->
379
379
  'replace it with the wrapper and methods of your instrument', path, i))
380
380
  if path.suffix == '.py':
381
381
  try:
382
- tree = ast.parse(path.read_text(errors='replace'))
382
+ tree = ast.parse(path.read_text(errors='replace'), filename=str(path))
383
383
  except SyntaxError as e:
384
384
  findings.append(syntax_error_finding('PMQ200', path, e))
385
385
  continue
@@ -450,7 +450,7 @@ def check_plugin_source(path: Path, kind: str, class_name: str, static_fallback:
450
450
  """
451
451
  findings = []
452
452
  try:
453
- tree = ast.parse(path.read_text(errors='replace'))
453
+ tree = ast.parse(path.read_text(errors='replace'), filename=str(path))
454
454
  except SyntaxError as e:
455
455
  return [syntax_error_finding('PMQ300', path, e)]
456
456
 
File without changes
File without changes
File without changes