11"""Debug functionality that allows for more useful issue reporting
22"""
33
4+ import platform
45import sys
56import traceback
67import importlib
78from typing import Tuple , Optional , Callable
89
10+ from pygame .version import ver
11+
912ImportResult = Tuple [str , bool , Optional [Callable ]]
1013
1114
@@ -53,6 +56,24 @@ def attempt_import(module, function_name, output_str=""):
5356 return (output_str , success , i )
5457
5558
59+ def _get_platform_info ():
60+ """
61+ Internal helper to get platform information
62+ """
63+ ret = f"Platform:\t \t { platform .platform ()} \n "
64+ ret += f"System:\t \t \t { platform .system ()} \n "
65+ ret += f"System Version:\t \t { platform .version ()} \n "
66+ ret += f"Processor:\t \t { platform .processor ()} \n "
67+ ret += (
68+ f"Architecture:\t \t Bits: { platform .architecture ()[0 ]} \t "
69+ f"Linkage: { platform .architecture ()[1 ]} \n \n "
70+ )
71+
72+ ret += f"Python:\t \t \t { platform .python_implementation ()} { sys .version } \n "
73+ ret += f"pygame version:\t \t { ver } \n "
74+ return ret
75+
76+
5677def print_debug_info (filename = None ):
5778 """Gets debug information for reporting bugs. Prints to console
5879 if filename is not specified, otherwise writes to that file
@@ -69,7 +90,14 @@ def default_return(linked=True):
6990 # pylint: disable=unused-argument
7091 return (- 1 , - 1 , - 1 )
7192
72- from pygame .display import get_driver , get_init as display_init
93+ from pygame .display import (
94+ get_driver as get_display_driver ,
95+ get_init as display_init ,
96+ )
97+ from pygame .mixer import (
98+ get_driver as get_mixer_driver ,
99+ get_init as mixer_init ,
100+ )
73101 from pygame .base import get_sdl_version
74102
75103 debug_str , * mixer = attempt_import (
@@ -100,33 +128,7 @@ def default_return(linked=True):
100128 else :
101129 ft_version = freetype [1 ]
102130
103- from pygame .version import ver
104-
105- import platform
106-
107- debug_str += f"Platform:\t \t { platform .platform ()} \n "
108-
109- debug_str += f"System:\t \t \t { platform .system ()} \n "
110-
111- debug_str += f"System Version:\t \t { platform .version ()} \n "
112-
113- debug_str += f"Processor:\t \t { platform .processor ()} \n "
114-
115- debug_str += (
116- f"Architecture:\t \t Bits: { platform .architecture ()[0 ]} \t "
117- f"Linkage: { platform .architecture ()[1 ]} \n "
118- )
119-
120- if display_init ():
121- debug_str += f"Driver:\t \t \t { get_driver ()} \n \n "
122- else :
123- debug_str += "Driver:\t \t \t Display Not Initialized\n \n "
124-
125- debug_str += f"Python:\t \t \t { platform .python_implementation ()} \n "
126-
127- debug_str += f"pygame version:\t \t { ver } \n "
128-
129- debug_str += f"python version:\t \t { str_from_tuple (sys .version_info [0 :3 ])} \n \n "
131+ debug_str += _get_platform_info ()
130132
131133 debug_str += (
132134 f"SDL versions:\t \t Linked: { str_from_tuple (get_sdl_version ())} \t "
@@ -150,9 +152,19 @@ def default_return(linked=True):
150152
151153 debug_str += (
152154 f"Freetype versions:\t Linked: { str_from_tuple (ft_version ())} \t "
153- f"Compiled: { str_from_tuple (ft_version (linked = False ))} "
155+ f"Compiled: { str_from_tuple (ft_version (linked = False ))} \n \n "
154156 )
155157
158+ if display_init ():
159+ debug_str += f"Display Driver:\t \t { get_display_driver ()} \n "
160+ else :
161+ debug_str += "Display Driver:\t \t Display Not Initialized\n "
162+
163+ if mixer_init ():
164+ debug_str += f"Mixer Driver:\t \t { get_mixer_driver ()} "
165+ else :
166+ debug_str += "Mixer Driver:\t \t Mixer Not Initialized"
167+
156168 if filename is None :
157169 print (debug_str )
158170
0 commit comments