[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] pygame initialization



Hi DR0ID,

Thanks to charlesej, all of those have a get_init() now.
https://github.com/pygame/pygame/issues/616


On Sat, Nov 10, 2018 at 10:56 AM DR0ID <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>> 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> (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>("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>("set display set mode")
>
>          # your application code here 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
>
>