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 <dr...@bluewin.ch> 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 (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("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("set display set mode")
>
>     # your application code here    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
>
>
>

Reply via email to