Hi DR0ID,
Thanks to charlesej, all of those have a get_init() now.
https://github.com/pygame/pygame/issues/616
<https://github.com/pygame/pygame/issues/616>
On Sat, Nov 10, 2018 at 10:56 AM DR0ID <dr0id@xxxxxxxxxx
<mailto:dr0id@xxxxxxxxxx>> wrote:
Hi
Thanks for adding the issue.
~DR0ID
On 10.11.2018 09:42, René Dudfield wrote:
> Hi,
>
> 1)
> - "all modules without a get_init() should have one if they have a
> .init()"
> https://github.com/pygame/pygame/issues/616
>
> 3) yeah, there are tools that catch bugs with apps and log them
for you.
>
> cheers,
>
> On Thu, Nov 8, 2018 at 8:15 PM DR0ID <dr0id@xxxxxxxxxx
<mailto:dr0id@xxxxxxxxxx>
> <mailto:dr0id@xxxxxxxxxx <mailto:dr0id@xxxxxxxxxx>>> wrote:
>
> Hi there
>
> 1.) For one of my last projects I have been toying around with
> pygame initialization. Instead of using pygame.init() and let it
> initialize everything I went through the trouble to initialize
> every module. Of course I didn't want to do it manually so I
wrote
> some code to do it for me. It worked, but I found it to be
> inconsistent that certain modules have an init() method but no
> get_init(). I would have expected that every module that has an
> init() method also should have an get_init(). To have only the
> init() method does not make much sense to me. Maybe this
could go
> into the next refactor version of pygame.
>
> I have attached an snippet from my log indicating in which
modules
> the get_init() method is missing, see first paragraph in
attached
> 'pygame_init_errors.txt' [1].
>
> 2.) I also found that a few modules that have an init() method
> raised an error (see second paragraph in attached log). Not sure
> if this is due to the way I initialize the modules or it is
> because pygame was not compiled with that support. Or my
> platform/hardware does not support those.
>
> The code generating the log can be found in the attached
> 'context_init_pygame.py' [2].
>
> 3.) While writing this initialization code I started to
wonder if
> I should log the capabilities of the system it was running
on. And
> that would be my next question: I think it would help diagnose
> problems if there were some sort of capabilities script that
reads
> the system/hardware and collects information about it. Maybe it
> could later be uploaded to pygame.org <http://pygame.org>
<http://pygame.org> (or
> somewhere else) anonymously for further analysis. Initialization
> and capabilities are not the same but I'm unsure if would make
> sense in case the initialization would fail to log the
> capabilities. But then it should probably collect a bit more
info
> than only the display modes, mixer configurations and
success full
> pygame modules initialization (you probably want to know
about the
> OS and its version, hardware, etc). But then I'm pretty sure
there
> are already other tools doing that.
>
>
> 4.) Another thing I noticed in the docs is that certain modules
> should (like scrap) or can (like mixer) be initialized after the
> display module. Not sure how scrap it initialized when using
> pygame.init() since this would be before scrap (maybe scrap
has to
> be initialized separately? I haven't tried.). This give me the
> idea to write a PygameInitializer class (see attached
> 'pygame_initializer.py' [3] which is a proof of concept)
that is a
> context manager. So in code it would look like this:
>
>
> ---- code ----
>
> def main():
> logger.info <http://logger.info> <http://logger.info>("before
pygame init")
> with
PygameInitializer(env_settings=(('SDL_VIDEO_CENTERED', '1'),))as pio:
> pio.mixer_frequency =1 pio.mixer_size =1
pio.mixer_channels =1 pio.mixer_buffer_size =16 screen =
pygame.display.set_mode((800, 600), pygame.DOUBLEBUF, 32)
> logger.info <http://logger.info> <http://logger.info>("set
display set mode")
>
> # your application code here logger.info
<http://logger.info> <http://logger.info>("application run!")
>
> ---- end code ----
>
> But then I wondered if it is really worth going through all this
> if there is pygame.init().
>
>
>
>
> [1] log: https://bpaste.net/show/53dccc5bd3cf
>
> ---- log snippet ----
> #### modules with missing get_init() method but has a init()
> method -> no consistency for modules that have an init()
method!! ####
> 2566 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame._freetype' from
>
'...\\python360\\lib\\site-packages\\pygame\\_freetype.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 2567 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame._freetype' from
>
'...\\python360\\lib\\site-packages\\pygame\\_freetype.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 2567 [MainProcess 15488 MainThread 9212]: ERROR missing
get_init()
> in module <module 'pygame._freetype' from
>
'...\\python360\\lib\\site-packages\\pygame\\_freetype.cp36-win_amd64.pyd'>:
> module 'pygame._freetype' has no attribute 'get_init'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(267)]
> 2569 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame.base' from
>
'...\\python360\\lib\\site-packages\\pygame\\base.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 2569 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame.base' from
>
'...\\python360\\lib\\site-packages\\pygame\\base.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 3177 [MainProcess 15488 MainThread 9212]: ERROR missing
get_init()
> in module <module 'pygame.base' from
>
'...\\python360\\lib\\site-packages\\pygame\\base.cp36-win_amd64.pyd'>:
> module 'pygame.base' has no attribute 'get_init'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(267)]
> 3198 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame.fastevent' from
>
'...\\python360\\lib\\site-packages\\pygame\\fastevent.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 3199 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame.fastevent' from
>
'...\\python360\\lib\\site-packages\\pygame\\fastevent.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 3200 [MainProcess 15488 MainThread 9212]: ERROR missing
get_init()
> in module <module 'pygame.fastevent' from
>
'...\\python360\\lib\\site-packages\\pygame\\fastevent.cp36-win_amd64.pyd'>:
> module 'pygame.fastevent' has no attribute 'get_init'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(267)]
> 3204 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame.freetype' from
> '...\\python360\\lib\\site-packages\\pygame\\freetype.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 3204 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame.freetype' from
> '...\\python360\\lib\\site-packages\\pygame\\freetype.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 3205 [MainProcess 15488 MainThread 9212]: ERROR missing
get_init()
> in module <module 'pygame.freetype' from
> '...\\python360\\lib\\site-packages\\pygame\\freetype.py'>: module
> 'pygame.freetype' has no attribute 'get_init'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(267)]
> 3219 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame.midi' from
> '...\\python360\\lib\\site-packages\\pygame\\midi.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 3219 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame.midi' from
> '...\\python360\\lib\\site-packages\\pygame\\midi.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 3222 [MainProcess 15488 MainThread 9212]: ERROR missing
get_init()
> in module <module 'pygame.midi' from
> '...\\python360\\lib\\site-packages\\pygame\\midi.py'>: module
> 'pygame.midi' has no attribute 'get_init'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(267)]
> 533054 [MainProcess 15488 MainThread 9212]: INFO initializing
> module <module 'pygame.scrap' from
>
'...\\python360\\lib\\site-packages\\pygame\\scrap.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 533057 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame.scrap' from
>
'...\\python360\\lib\\site-packages\\pygame\\scrap.cp36-win_amd64.pyd'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 533060 [MainProcess 15488 MainThread 9212]: ERROR missing
> get_init() in module <module 'pygame.scrap' from
>
'...\\python360\\lib\\site-packages\\pygame\\scrap.cp36-win_amd64.pyd'>:
> module 'pygame.scrap' has no attribute 'get_init'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(267)]
>
>
> #### modules throwing error on init() on my machine probably due
> to missing hardware or missing code at compile time (?) ####
> 2560 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame._camera_vidcapture' from
>
'...\\python360\\lib\\site-packages\\pygame\\_camera_vidcapture.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 2561 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame._camera_vidcapture' from
>
'...\\python360\\lib\\site-packages\\pygame\\_camera_vidcapture.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 2565 [MainProcess 15488 MainThread 9212]: ERROR init() raised an
> exceptions: No module named 'VideoCapture'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(269)]
> 3179 [MainProcess 15488 MainThread 9212]: INFO initializing
module
> <module 'pygame.camera' from
> '...\\python360\\lib\\site-packages\\pygame\\camera.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(258)]
> 3179 [MainProcess 15488 MainThread 9212]: INFO init() <module
> 'pygame.camera' from
> '...\\python360\\lib\\site-packages\\pygame\\camera.py'>
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(259)]
> 3182 [MainProcess 15488 MainThread 9212]: ERROR init() raised an
> exceptions: cannot import name '_camera'
> [gamelib.context_init_pygame: _init_module in
> context_init_pygame.py(269)]
>
>
> ---- end log snippet ----
>
>
> [2] context_init_pygame.py: https://bpaste.net/show/937b80cb07f9
> [3] pygame_initializer.py: https://bpaste.net/show/ee88d45ea10a
>
> ~DR0ID
>
>