PySimpleGUI icon indicating copy to clipboard operation
PySimpleGUI copied to clipboard

[Bug] Broken Linux symlink crashes Demo_Tree_Element.py

Open RanTalbott opened this issue 2 years ago • 2 comments

Type of Issue (Enhancement, Error, Bug, Question)

[Bug] Broken Linux symlink crashes Demo_Tree_Element.py When running the program against a directory tree that contains a broken file symbolic link, it crashes with a "file not found" error. Python throws an exception that isn't handled: Traceback (most recent call last): File "Demo_Tree_Element.py", line 38, in add_files_in_folder('', starting_path) File "Demo_Tree_Element.py", line 34, in add_files_in_folder add_files_in_folder(fullname, fullname) File "Demo_Tree_Element.py", line 34, in add_files_in_folder add_files_in_folder(fullname, fullname) File "Demo_Tree_Element.py", line 36, in add_files_in_folder treedata.Insert(parent, fullname, f, values=[os.stat(fullname).st_size], icon=file_icon) FileNotFoundError: [Errno 2] No such file or directory: '/home/ran/projects/net_tools/samplicator-master/depcomp'

This was obvious when I ran it from the command line, but from the Demo Browser it just silently disappeared


Operating System

Ubuntu 20.04

PySimpleGUI Port (tkinter, Qt, Wx, Web)

print(sg) <module 'PySimpleGUI' from '/usr/local/lib/python3.8/dist-packages/PySimpleGUI/init.py'> (sg.version) '4.60.5 Released 21-May-2023'


Versions

*** Version information copied to your clipboard. Paste into your GitHub Issue. ***

Python version: 3.8.10 (default, May 26 2023, 14:05:08) [GCC 9.4.0] port: tkinter tkinter version: 8.6.10 PySimpleGUI version: 4.60.5 PySimpleGUI filename: /usr/local/lib/python3.8/dist-packages/PySimpleGUI/PySimpleGUI.py

Version information can be obtained by calling sg.main_get_debug_data() Or you can print each version shown in ()

Python version (sg.sys.version)

'3.8.10 (default, May 26 2023, 14:05:08) \n[GCC 9.4.0]'

PySimpleGUI Version (sg.__version__)

'4.60.5'

GUI Version (tkinter (sg.tclversion_detailed), PySide2, WxPython, Remi)

tkinter


Your Experience In Months or Years (optional)

Years Python programming experience 2

Years Programming experience overall 54

Have used another Python GUI Framework? (tkinter, Qt, etc) (yes/no is fine)

Anything else you think would be helpful?


Troubleshooting

These items may solve your problem. Please check those you've done by changing - [ ] to - [X]

  • [ ] Searched main docs for your problem www.PySimpleGUI.org
  • [ ] Looked for Demo Programs that are similar to your goal. It is recommend you use the Demo Browser! Demos.PySimpleGUI.org
  • [ ] None of your GUI code was generated by an AI algorithm like GPT
  • [ ] If not tkinter - looked for Demo Programs for specific port
  • [ ] For non tkinter - Looked at readme for your specific port if not PySimpleGUI (Qt, WX, Remi)
  • [ ] Run your program outside of your debugger (from a command line)
  • [ ] Searched through Issues (open and closed) to see if already reported Issues.PySimpleGUI.org
  • [ ] Have upgraded to the latest release of PySimpleGUI on PyPI (lastest official version)
  • [ ] Tried using the PySimpleGUI.py file on GitHub. Your problem may have already been fixed but not released

Detailed Description

When running the program against a directory tree that contains a broken file symbolic link, it crashes with a "file not found" error. Python throws an exception that isn't handled: Traceback (most recent call last): File "Demo_Tree_Element.py", line 38, in add_files_in_folder('', starting_path) File "Demo_Tree_Element.py", line 34, in add_files_in_folder add_files_in_folder(fullname, fullname) File "Demo_Tree_Element.py", line 34, in add_files_in_folder add_files_in_folder(fullname, fullname) File "Demo_Tree_Element.py", line 36, in add_files_in_folder treedata.Insert(parent, fullname, f, values=[os.stat(fullname).st_size], icon=file_icon) FileNotFoundError: [Errno 2] No such file or directory: '/home/ran/projects/net_tools/samplicator-master/depcomp'

This was obvious when I ran it from the command line, but from the Demo Browser it just silently disappeared

Code To Duplicate

The Demo_Tree_Element.py file included with the package.

This pre-formatted code block is all set for you to paste in your bit of code:


# Paste your code here

To fix, replace line 36 with something like:

            try:
                treedata.Insert(parent, fullname, f, values=[os.stat(fullname).st_size], icon=file_icon)
            except:
                treedata.Insert(parent, fullname, f, values=["???? error"], icon=file_icon)

Screenshot, Sketch, or Drawing


Watcha Makin?

If you care to share something about your project, it would be awesome to hear what you're building.

RanTalbott avatar Oct 26 '23 02:10 RanTalbott

A broken directory symlink would cause a different failure,. but, given the rarity of the cause and the hassle of submitting a report, I'm not going to investigate it and suggest a fix.

RanTalbott avatar Oct 26 '23 02:10 RanTalbott

Demo Programs are meant to be a starting point.... a push-start with an emphasis on how to use the PySimpleGUI API calls. They're not meant to be highly robust with a lot of error detection. That would get in the way of the simplicity of showing how things work.

Thank you for taking the time to flag the problem.

PySimpleGUI avatar Oct 26 '23 06:10 PySimpleGUI