abulka/pynsource

Differences between Linux binary and snap version on KDE Plasma 5

Irratzo opened this issue · 3 comments

Hi there,

this is is just a comment on differences between the binary version 1.77 currently downloadable from the official Pynsource website, and the current snap version 1.8 installable from snap, as described on the Pynsource website.

My system specs:
Operating System: Kubuntu 20.04
KDE Plasma Version: 5.18.5
KDE Frameworks Version: 5.68.0
Qt Version: 5.12.8
Kernel Version: 5.4.0-84-generic
OS Type: 64-bit
Processors: 4 × Intel® Core™ i5-3427U CPU @ 1.80GHz
Memory: 15.5 GiB of RAM

Difference in GUI:

  • The snap version looks better. In the binary version, there is no space between the menu items making them hard to read. Screenshots: binary version, snap version.
  • The binary version lacks menu items present in the snap version. Probably just due to the former being version 1.77, the latter 1.8.

Differences in functionality:

  • The snap version does not allow to unlock Pro version. See issue #104 for this.
  • The snap version successfully generates class diagrams from this module consisting mainly of Python dataclasses. The binary version fails with the following error message.
Pynsource couldn't handle traversing AST in file /home/user/src/aiida-jutools/aiida_jutools/computer/options.py corresponding to approx. lineno 35 coloffset 4 - source code:

 ignored: _typing.List[str] = _masci_python_util.dataclass_default_field([])

Please report this to https://github.com/abulka/pynsource/issues

Log file location:
/home/user/.cache/pynsource/log/debug.log

Actual exception:

'Subscript' object has no attribute 'id'

Corresponding excerpt from `

[Thu 07:38 am] [INFO] app.cmds.filemgmt - 120 - Importing... ['/home/user/src/aiida-jutools/aiida_jutools/computer/options.py']
[Thu 07:38 am] [INFO] parsing.core_parser_ast - 149 - Parsing /home/user/src/aiida-jutools/aiida_jutools/computer/options.py, syntax mode 3
[Thu 07:38 am] [INFO] parsing.core_parser_ast - 172 - Ok parsing the file /home/user/src/aiida-jutools/aiida_jutools/computer/options.py - no syntax errors encountered
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - """Tools for managing AiiDA Computer options nodes."""
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - import dataclasses as _dc
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - import re as _re
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - import typing as _typing
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - import aiida as _aiida
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - from aiida import orm as _orm, schedulers as _aiida_schedulers, engine as _aiida_engine, tools as _aiida_tools
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - from aiida.schedulers.plugins import lsf as _aiida_lsf_schedulers, slurm as _aiida_slurm_schedulers
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - import aiida_jutools as _jutools
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - from masci_tools.util import python_util as _masci_python_util
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 - @_dc.dataclass(init=True, repr=True, eq=True, order=False, frozen=False)
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 -     """
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 - ^
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 583 -     ignored: _typing.List[str] = _masci_python_util.dataclass_default_field([])
[Thu 07:38 am] [DEBUG] parsing.core_parser_ast - 584 -     ^
[Thu 07:38 am] [ERROR] parsing.core_parser_ast - 284 - html version of debug info may exist at: 'None'
[Thu 07:38 am] [ERROR] parsing.core_parser_ast - 285 - model.errors: 'Pynsource couldn't handle traversing AST in file /home/user/src/aiida-jutools/aiida_jutools/computer/options.py corresponding to approx. lineno 35 coloffset 4 - source code:

 ignored: _typing.List[str] = _masci_python_util.dataclass_default_field([])

Please report this to https://github.com/abulka/pynsource/issues

Log file location:
/home/user/.cache/pynsource/log/debug.log

Actual exception:

'Subscript' object has no attribute 'id''
[Thu 07:38 am] [ERROR] parsing.core_parser_ast - 288 - Parsing Visit error: 'Subscript' object has no attribute 'id', Debug info: Parse History: 
	visit_Module  Line: 13 col_offset: 0 'Tools for managing AiiDA Computer options nodes.' Line: 15 col_offset: 0 self.made_import = True import  dataclasses  as _dc Line: 16 col_offset: 0 self.imports_encountered ['_dc'] self.made_import = True import  re  as _re Line: 17 col_offset: 0 self.imports_encountered ['_dc', '_re'] self.made_import = True import  typing  as _typing Line: 19 col_offset: 0 self.imports_encountered ['_dc', '_re', '_typing'] self.made_import = True import  aiida  as _aiida Line: 20 col_offset: 0 self.imports_encountered ['_dc', '_re', '_typing', '_aiida'] from aiida import  orm  as _orm ,  schedulers  as _aiida_schedulers ,  engine  as _aiida_engine ,  tools  as _aiida_tools Line: 21 col_offset: 0 from aiida.schedulers.plugins import  lsf  as _aiida_lsf_schedulers ,  slurm  as _aiida_slurm_schedulers Line: 23 col_offset: 0 self.made_import = True import  aiida_jutools  as _jutools Line: 24 col_offset: 0 self.imports_encountered ['_dc', '_re', '_typing', '_aiida', '_jutools'] from masci_tools.util import  python_util  as _masci_python_util Line: 27 col_offset: 0 
	visit_ClassDef class _OptionsQueryConfig   (inside class _OptionsQueryConfig) ['_OptionsQueryConfig']  Line: 34 col_offset: -1 'Database query configuration for :py:meth:`~._OptionsConfig.get_options`.\n\n    :param: ignored: these options fields are ignored for querying options of this config.\n    :param: mandatory: these options fields are mandatory for querying options of this config.\n    :param: optional: these options fields are optional for querying options of this config.\n    ' 
	visit_AnnAssign ignored Line: 35 col_offset: 4 
[Thu 07:38 am] [ERROR] parsing.core_parser_ast - 289 - Full traceback: Traceback (most recent call last):
  File "parsing/core_parser_ast.py", line 273, in _convert_ast_to_old_parser
  File "typed_ast/ast3.py", line 277, in visit
  File "parsing/core_parser_ast.py", line 660, in visit_Module
  File "typed_ast/ast3.py", line 285, in generic_visit
  File "typed_ast/ast3.py", line 277, in visit
  File "parsing/core_parser_ast.py", line 825, in visit_ClassDef
  File "parsing/core_parser_ast.py", line 597, in body
  File "typed_ast/ast3.py", line 277, in visit
  File "parsing/core_parser_ast.py", line 1033, in visit_AnnAssign
  File "parsing/core_parser_ast.py", line 1010, in scan_assignment_for_type_annotations
AttributeError: 'Subscript' object has no attribute 'id'

I just downloaded the latest 1.8 official binary
https://github.com/abulka/pynsource/releases/download/version-1.80/pynsource-ubuntu-20.04-version-1.80.zip
and it is indeed the correct version 1.8 and has the latest features and ability to register as Pro. Am running on KDE neon, too.

Not sure where you are downloading the old 1.77 from?

Thank you for the link. I have downloaded this version as well just now, and now everything that I complained about not working, works now with my system as well (Kubuntu 20.04, Desktop KDE Plasma 5).

  • Pro Edition registration (Help > Enter licence) works
  • File > Visualise Python Modules works
  • GUI glitches from version 1.77 are resolved

Thank you very much for your fast support!

I downloaded the version 1.77 by mistake by not properly reading the text on the official download website. The link to the latest release is at the top with no heading. I overlooked that and just looked for the heading for my OS (Linux), and used the download link there, which is, as stated there, version 1.77. I would recommend putting the top link to the latest under its own heading e.g. 'Latest version, all operating systems'. Or mention under 'Linux' explicitly that the binary links there are older versions. Just to lower chance that overhasty people like I miss seeing the latest version. Thanks in case.

I agree, the download instructions could be clearer - thanks for the useful feedback.

I've improved them along the lines you suggested.
https://pynsource.com/download.html