PySimpleGUI / PySimpleGUI/PySimpleGUI

[Bug] Broken Linux symlink crashes Demo_Tree_Element.py

Open
#6,570 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Demo Programs
Dominant language
Python
Stars
13.8k
Forks
1.8k
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Demo_Tree_Element.py, especially line 36 where os.stat(fullname) is used while inserting files into the tree. Reproduce the issue using a directory containing a broken symbolic link; done means the demo no longer crashes and the affected entry is handled visibly in the tree.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
desktop
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.