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

Re: [pygame] pygame initialization



Hi René

Thanks for the info. Looking forward to the next version.

~DR0ID


On 21.01.2019 07:19, René Dudfield wrote:
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
    >
    >