pyglet 1.5.27__zip → 1.5.29__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (808) hide show
  1. pyglet-1.5.29/.github/workflows/unittests.yml +80 -0
  2. {pyglet-1.5.27 → pyglet-1.5.29}/LICENSE +1 -1
  3. {pyglet-1.5.27 → pyglet-1.5.29}/PKG-INFO +1 -1
  4. {pyglet-1.5.27 → pyglet-1.5.29}/RELEASE_NOTES +37 -0
  5. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/__init__.py +30 -63
  6. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/__init__.py +9 -41
  7. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/base.py +1 -2
  8. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/cocoa.py +115 -68
  9. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/win32.py +22 -12
  10. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/app/xlib.py +2 -2
  11. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/__init__.py +1 -1
  12. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/base.py +9 -3
  13. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/cocoa.py +7 -1
  14. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/headless.py +1 -1
  15. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/win32.py +10 -44
  16. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/xlib.py +1 -1
  17. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/canvas/xlib_vidmoderestore.py +1 -1
  18. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/clock.py +1 -1
  19. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/event.py +1 -1
  20. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/extlibs/__init__.py +1 -1
  21. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/extlibs/png.py +4 -4
  22. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/__init__.py +1 -1
  23. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/base.py +1 -1
  24. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/directwrite.py +598 -191
  25. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/fontconfig.py +1 -1
  26. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/freetype.py +1 -1
  27. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/freetype_lib.py +1 -1
  28. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/quartz.py +45 -19
  29. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/ttf.py +6 -41
  30. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/win32.py +34 -25
  31. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/font/win32query.py +29 -31
  32. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/__init__.py +1 -1
  33. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/agl.py +1 -1
  34. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/base.py +1 -1
  35. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/cocoa.py +1 -1
  36. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/gl.py +1 -1
  37. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/gl_info.py +1 -1
  38. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glext_arb.py +1 -1
  39. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glext_nv.py +1 -1
  40. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glu.py +1 -1
  41. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glu_info.py +1 -1
  42. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glx.py +1 -1
  43. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glx_info.py +1 -1
  44. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glxext_arb.py +1 -1
  45. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glxext_mesa.py +1 -1
  46. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/glxext_nv.py +1 -1
  47. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/headless.py +1 -1
  48. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib.py +1 -1
  49. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib_agl.py +1 -1
  50. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib_glx.py +1 -1
  51. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/lib_wgl.py +1 -1
  52. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wgl.py +1 -1
  53. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wgl_info.py +1 -1
  54. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wglext_arb.py +1 -1
  55. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/wglext_nv.py +1 -1
  56. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/win32.py +30 -30
  57. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gl/xlib.py +1 -1
  58. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/__init__.py +1 -1
  59. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/allocation.py +1 -1
  60. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/vertexattribute.py +1 -1
  61. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/vertexbuffer.py +1 -1
  62. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/graphics/vertexdomain.py +1 -1
  63. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/__init__.py +1 -1
  64. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/frame.py +1 -1
  65. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/ninepatch.py +1 -1
  66. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/gui/widgets.py +1 -1
  67. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/__init__.py +1 -1
  68. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/animation.py +1 -1
  69. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/atlas.py +1 -1
  70. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/__init__.py +1 -1
  71. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/bmp.py +1 -1
  72. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/dds.py +1 -1
  73. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/gdiplus.py +2 -2
  74. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/gdkpixbuf2.py +1 -1
  75. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/gif.py +1 -1
  76. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/pil.py +1 -1
  77. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/png.py +1 -1
  78. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/quartz.py +1 -1
  79. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/s3tc.py +1 -1
  80. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/image/codecs/wic.py +8 -15
  81. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/info.py +1 -1
  82. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/__init__.py +1 -1
  83. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/base.py +1 -1
  84. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/darwin_hid.py +2 -2
  85. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/directinput.py +1 -1
  86. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/evdev.py +1 -1
  87. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/evdev_constants.py +1 -1
  88. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/wintab.py +1 -1
  89. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/x11_xinput.py +1 -1
  90. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/input/x11_xinput_tablet.py +1 -1
  91. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/lib.py +11 -5
  92. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/__init__.py +1 -1
  93. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/__init__.py +3 -1
  94. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/cocoalibs.py +32 -3
  95. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/runtime.py +212 -52
  96. pyglet-1.5.29/pyglet/libs/darwin/coreaudio.py +172 -0
  97. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/quartzkey.py +1 -1
  98. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/__init__.py +81 -57
  99. {pyglet-1.5.27/pyglet → pyglet-1.5.29/pyglet/libs/win32}/com.py +1 -1
  100. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/constants.py +8 -1
  101. pyglet-1.5.29/pyglet/libs/win32/context_managers.py +57 -0
  102. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/dinput.py +5 -5
  103. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/libwintab.py +1 -1
  104. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/types.py +24 -16
  105. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/win32/winkey.py +9 -9
  106. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/cursorfont.py +1 -1
  107. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xf86vmode.py +1 -1
  108. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xinerama.py +1 -1
  109. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xinput.py +1 -1
  110. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xlib.py +1 -1
  111. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/xsync.py +1 -1
  112. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/math.py +1 -1
  113. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/__init__.py +1 -1
  114. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/buffered_logger.py +1 -1
  115. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/__init__.py +22 -36
  116. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/base.py +1 -1
  117. pyglet-1.5.29/pyglet/media/codecs/coreaudio.py +185 -0
  118. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg.py +3 -5
  119. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/__init__.py +1 -1
  120. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/compat.py +26 -8
  121. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +16 -3
  122. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +11 -5
  123. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +6 -3
  124. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +1 -1
  125. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +3 -3
  126. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/gstreamer.py +1 -1
  127. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/wave.py +1 -1
  128. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/wmf.py +3 -3
  129. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/devices/base.py +27 -22
  130. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/devices/win32.py +84 -39
  131. pyglet-1.5.29/pyglet/media/drivers/__init__.py +89 -0
  132. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/base.py +1 -1
  133. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/__init__.py +1 -1
  134. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/adaptation.py +1 -1
  135. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/exceptions.py +1 -1
  136. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/interface.py +1 -1
  137. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/directsound/lib_dsound.py +17 -17
  138. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/listener.py +1 -1
  139. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/__init__.py +1 -1
  140. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/adaptation.py +1 -1
  141. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/interface.py +1 -1
  142. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/lib_alc.py +1 -1
  143. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/openal/lib_openal.py +5 -5
  144. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/__init__.py +1 -1
  145. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/adaptation.py +1 -1
  146. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/interface.py +1 -1
  147. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/pulse/lib_pulseaudio.py +8 -10
  148. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/silent/__init__.py +1 -1
  149. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/silent/adaptation.py +1 -1
  150. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/__init__.py +1 -1
  151. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/adaptation.py +3 -1
  152. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/interface.py +13 -10
  153. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +3 -7
  154. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/events.py +1 -1
  155. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/exceptions.py +1 -1
  156. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/instrumentation.py +1 -1
  157. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/mediathreads.py +6 -2
  158. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/player.py +1 -1
  159. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/synthesis.py +1 -1
  160. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/__init__.py +1 -1
  161. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/codecs/__init__.py +1 -1
  162. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/codecs/gltf.py +1 -1
  163. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/model/codecs/obj.py +1 -1
  164. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/resource.py +1 -1
  165. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/shapes.py +1 -1
  166. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/sprite.py +1 -1
  167. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/__init__.py +1 -1
  168. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/caret.py +1 -1
  169. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/document.py +1 -1
  170. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/__init__.py +1 -1
  171. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/attributed.py +1 -1
  172. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/html.py +1 -1
  173. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/plaintext.py +1 -1
  174. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/formats/structured.py +1 -1
  175. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/layout.py +1 -1
  176. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/text/runlist.py +1 -1
  177. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/util.py +1 -1
  178. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/__init__.py +1 -1
  179. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/__init__.py +180 -182
  180. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_delegate.py +1 -1
  181. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_textview.py +12 -3
  182. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_view.py +56 -65
  183. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/pyglet_window.py +1 -1
  184. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/cocoa/systemcursor.py +1 -1
  185. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/event.py +1 -1
  186. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/headless/__init__.py +1 -1
  187. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/key.py +5 -2
  188. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/mouse.py +13 -7
  189. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/win32/__init__.py +33 -11
  190. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/window/xlib/__init__.py +12 -19
  191. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/PKG-INFO +1 -1
  192. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/SOURCES.txt +6 -27
  193. pyglet-1.5.29/tests/integration/platform/test_win_context_managers.py +122 -0
  194. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_events.py +31 -21
  195. pyglet-1.5.27/pyglet/media/drivers/__init__.py +0 -114
  196. pyglet-1.5.27/pyproject.toml +0 -20
  197. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.graphics.test_multitexture.test_multitexture.001.png +0 -0
  198. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_16bpp.bmp].001.png +0 -0
  199. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_1bpp.bmp].001.png +0 -0
  200. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_24bpp.bmp].001.png +0 -0
  201. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_32bpp.bmp].001.png +0 -0
  202. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_4bpp.bmp].001.png +0 -0
  203. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgb_8bpp.bmp].001.png +0 -0
  204. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_bmp_loading[rgba_32bpp.bmp].001.png +0 -0
  205. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_checkerboard.001.png +0 -0
  206. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgb_dxt1.dds].001.png +0 -0
  207. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt1.dds].001.png +0 -0
  208. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt3.dds].001.png +0 -0
  209. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_dds_loading[rgba_dxt5.dds].001.png +0 -0
  210. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[8bpp.gif].001.png +0 -0
  211. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[l.png].001.png +0 -0
  212. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[la.png].001.png +0 -0
  213. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgb.png].001.png +0 -0
  214. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_gdkpixbuf2_loading[rgba.png].001.png +0 -0
  215. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[l.png].001.png +0 -0
  216. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[la.png].001.png +0 -0
  217. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgb.png].001.png +0 -0
  218. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pil_loading[rgba.png].001.png +0 -0
  219. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[l.png].001.png +0 -0
  220. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[la.png].001.png +0 -0
  221. pyglet-1.5.27/tests/interactive/screenshots/session/tests.interactive.image.test_image.test_pypng_loading[rgba.png].001.png +0 -0
  222. {pyglet-1.5.27 → pyglet-1.5.29}/.coveragerc +0 -0
  223. {pyglet-1.5.27 → pyglet-1.5.29}/.gitignore +0 -0
  224. {pyglet-1.5.27 → pyglet-1.5.29}/.readthedocs.yml +0 -0
  225. {pyglet-1.5.27 → pyglet-1.5.29}/.travis.yml +0 -0
  226. {pyglet-1.5.27 → pyglet-1.5.29}/DESIGN +0 -0
  227. {pyglet-1.5.27 → pyglet-1.5.29}/MANIFEST.in +0 -0
  228. {pyglet-1.5.27 → pyglet-1.5.29}/NOTICE +0 -0
  229. {pyglet-1.5.27 → pyglet-1.5.29}/README.md +0 -0
  230. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/README +0 -0
  231. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/asedemo.py +0 -0
  232. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/aseprite.py +0 -0
  233. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/aseprite_codec/running.ase +0 -0
  234. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/logo3d/logo3d.jpg +0 -0
  235. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/logo3d/logo3d.obj.zip +0 -0
  236. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/logo3d/logo3d.wings +0 -0
  237. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/euclid.py +0 -0
  238. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/obj_test.py +0 -0
  239. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/rabbit.mtl +0 -0
  240. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/rabbit.obj +0 -0
  241. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/examples/tree_test.py +0 -0
  242. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/__init__.py +0 -0
  243. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/geometric.py +0 -0
  244. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/obj.py +0 -0
  245. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/model/model/obj_batch.py +0 -0
  246. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/euclid.py +0 -0
  247. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/follow_mouse.py +0 -0
  248. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/primitives.py +0 -0
  249. {pyglet-1.5.27 → pyglet-1.5.29}/contrib/toys/thrust.py +0 -0
  250. {pyglet-1.5.27 → pyglet-1.5.29}/doc/Makefile +0 -0
  251. {pyglet-1.5.27 → pyglet-1.5.29}/doc/README.md +0 -0
  252. {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/favicon.ico +0 -0
  253. {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/logo.png +0 -0
  254. {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/logo5.svg +0 -0
  255. {pyglet-1.5.27 → pyglet-1.5.29}/doc/_static/relatedlogo.png +0 -0
  256. {pyglet-1.5.27 → pyglet-1.5.29}/doc/conf.py +0 -0
  257. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/README.md +0 -0
  258. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/__init__.py +0 -0
  259. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/docstrings.py +0 -0
  260. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/layout.html +0 -0
  261. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/static/basic.css_t +0 -0
  262. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/static/pyglet.css_t +0 -0
  263. {pyglet-1.5.27 → pyglet-1.5.29}/doc/ext/theme/pyglet/theme.conf +0 -0
  264. {pyglet-1.5.27 → pyglet-1.5.29}/doc/external_resources.rst +0 -0
  265. {pyglet-1.5.27 → pyglet-1.5.29}/doc/index.rst +0 -0
  266. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/blacklist.rst +0 -0
  267. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/contributing.rst +0 -0
  268. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/dist.rst +0 -0
  269. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/doc.rst +0 -0
  270. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/generated.rst +0 -0
  271. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/gl.rst +0 -0
  272. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/media_logging_manual.rst +0 -0
  273. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/media_manual.rst +0 -0
  274. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/testing.rst +0 -0
  275. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/virtualenv.rst +0 -0
  276. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/wraptypes-class.svg +0 -0
  277. {pyglet-1.5.27 → pyglet-1.5.29}/doc/internal/wraptypes.rst +0 -0
  278. {pyglet-1.5.27 → pyglet-1.5.29}/doc/make.bat +0 -0
  279. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/app.rst +0 -0
  280. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/canvas.rst +0 -0
  281. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/clock.rst +0 -0
  282. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/event.rst +0 -0
  283. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/font.rst +0 -0
  284. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/gl.rst +0 -0
  285. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/allocation.rst +0 -0
  286. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/index.rst +0 -0
  287. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/vertexattribute.rst +0 -0
  288. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/vertexbuffer.rst +0 -0
  289. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/graphics/vertexdomain.rst +0 -0
  290. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/gui.rst +0 -0
  291. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/image/animation.rst +0 -0
  292. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/image/atlas.rst +0 -0
  293. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/image/index.rst +0 -0
  294. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/info.rst +0 -0
  295. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/input.rst +0 -0
  296. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/media.rst +0 -0
  297. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/media_synthesis.rst +0 -0
  298. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/pyglet.rst +0 -0
  299. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/resource.rst +0 -0
  300. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/shapes.rst +0 -0
  301. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/sprite.rst +0 -0
  302. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/caret.rst +0 -0
  303. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/document.rst +0 -0
  304. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/index.rst +0 -0
  305. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/text/layout.rst +0 -0
  306. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/window.rst +0 -0
  307. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/window_key.rst +0 -0
  308. {pyglet-1.5.27 → pyglet-1.5.29}/doc/modules/window_mouse.rst +0 -0
  309. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/advanced.rst +0 -0
  310. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/context.rst +0 -0
  311. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/debug.rst +0 -0
  312. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/eventloop.rst +0 -0
  313. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/events.rst +0 -0
  314. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/examplegame.rst +0 -0
  315. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/gl.rst +0 -0
  316. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/graphics.rst +0 -0
  317. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/image.rst +0 -0
  318. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/abstract_image.png +0 -0
  319. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/abstract_image.svg +0 -0
  320. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/buffer_image.png +0 -0
  321. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/buffer_image.svg +0 -0
  322. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/context_flow.png +0 -0
  323. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/context_flow.svg +0 -0
  324. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  325. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  326. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  327. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  328. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  329. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  330. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  331. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  332. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  333. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  334. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  335. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  336. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  337. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_default.png +0 -0
  338. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  339. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_help.png +0 -0
  340. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_no.png +0 -0
  341. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size.png +0 -0
  342. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  343. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  344. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  345. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  346. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_text.png +0 -0
  347. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  348. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  349. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/explosion.png +0 -0
  350. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/font_metrics.png +0 -0
  351. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/font_metrics.svg +0 -0
  352. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_classes.png +0 -0
  353. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_classes.svg +0 -0
  354. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_grid.png +0 -0
  355. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_grid.svg +0 -0
  356. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_sequence.png +0 -0
  357. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/image_sequence.svg +0 -0
  358. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  359. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  360. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/screens.png +0 -0
  361. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/screens.svg +0 -0
  362. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/text_classes.png +0 -0
  363. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/text_classes.svg +0 -0
  364. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_location.png +0 -0
  365. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_location.svg +0 -0
  366. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_osx_default.png +0 -0
  367. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  368. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_osx_tool.png +0 -0
  369. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_default.png +0 -0
  370. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  371. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  372. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_tool.png +0 -0
  373. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  374. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/input.rst +0 -0
  375. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/installation.rst +0 -0
  376. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/keyboard.rst +0 -0
  377. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/media.rst +0 -0
  378. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/mouse.rst +0 -0
  379. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/options.rst +0 -0
  380. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/quickstart.rst +0 -0
  381. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/resources.rst +0 -0
  382. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/shapes.rst +0 -0
  383. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/text.rst +0 -0
  384. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/time.rst +0 -0
  385. {pyglet-1.5.27 → pyglet-1.5.29}/doc/programming_guide/windowing.rst +0 -0
  386. {pyglet-1.5.27 → pyglet-1.5.29}/doc/requirements.txt +0 -0
  387. {pyglet-1.5.27 → pyglet-1.5.29}/examples/3dmodel/logo3d.mtl +0 -0
  388. {pyglet-1.5.27 → pyglet-1.5.29}/examples/3dmodel/logo3d.obj +0 -0
  389. {pyglet-1.5.27 → pyglet-1.5.29}/examples/3dmodel/model.py +0 -0
  390. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/README +0 -0
  391. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/assets/app.icns +0 -0
  392. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/assets/app.ico +0 -0
  393. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/assets/ship.svg +0 -0
  394. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/astraea.py +0 -0
  395. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/asteroid1.png +0 -0
  396. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/asteroid2.png +0 -0
  397. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/asteroid3.png +0 -0
  398. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/bullet.png +0 -0
  399. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/bullet.wav +0 -0
  400. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/explosion.png +0 -0
  401. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/explosion.wav +0 -0
  402. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/pointer.png +0 -0
  403. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/ship.png +0 -0
  404. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/smoke.png +0 -0
  405. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/res/starfield.jpg +0 -0
  406. {pyglet-1.5.27 → pyglet-1.5.29}/examples/astraea/setup.py +0 -0
  407. {pyglet-1.5.27 → pyglet-1.5.29}/examples/eglcontext.py +0 -0
  408. {pyglet-1.5.27 → pyglet-1.5.29}/examples/events/register_event_type.py +0 -0
  409. {pyglet-1.5.27 → pyglet-1.5.29}/examples/events/window_events.py +0 -0
  410. {pyglet-1.5.27 → pyglet-1.5.29}/examples/events/window_platform_event.py +0 -0
  411. {pyglet-1.5.27 → pyglet-1.5.29}/examples/file_dialog.py +0 -0
  412. {pyglet-1.5.27 → pyglet-1.5.29}/examples/fixed_resolution.py +0 -0
  413. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/asteroid.png +0 -0
  414. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/bullet.png +0 -0
  415. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/bullet.wav +0 -0
  416. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/engine_flame.png +0 -0
  417. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/resources/player.png +0 -0
  418. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/asteroid.py +0 -0
  419. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/game/__init__.py +0 -0
  420. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/game/load.py +0 -0
  421. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version1/game/resources.py +0 -0
  422. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/asteroid.py +0 -0
  423. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/__init__.py +0 -0
  424. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/load.py +0 -0
  425. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/physicalobject.py +0 -0
  426. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/player.py +0 -0
  427. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version2/game/resources.py +0 -0
  428. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/asteroid.py +0 -0
  429. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/__init__.py +0 -0
  430. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/load.py +0 -0
  431. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/physicalobject.py +0 -0
  432. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/player.py +0 -0
  433. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/resources.py +0 -0
  434. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version3/game/util.py +0 -0
  435. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/asteroid.py +0 -0
  436. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/__init__.py +0 -0
  437. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/asteroid.py +0 -0
  438. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/bullet.py +0 -0
  439. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/load.py +0 -0
  440. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/physicalobject.py +0 -0
  441. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/player.py +0 -0
  442. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/resources.py +0 -0
  443. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version4/game/util.py +0 -0
  444. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/asteroid.py +0 -0
  445. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/__init__.py +0 -0
  446. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/asteroid.py +0 -0
  447. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/bullet.py +0 -0
  448. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/load.py +0 -0
  449. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/physicalobject.py +0 -0
  450. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/player.py +0 -0
  451. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/resources.py +0 -0
  452. {pyglet-1.5.27 → pyglet-1.5.29}/examples/game/version5/game/util.py +0 -0
  453. {pyglet-1.5.27 → pyglet-1.5.29}/examples/graphics/image_convert.py +0 -0
  454. {pyglet-1.5.27 → pyglet-1.5.29}/examples/graphics/image_display.py +0 -0
  455. {pyglet-1.5.27 → pyglet-1.5.29}/examples/graphics/shapes.py +0 -0
  456. {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/bar.png +0 -0
  457. {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/button_down.png +0 -0
  458. {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/button_hover.png +0 -0
  459. {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/button_up.png +0 -0
  460. {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/knob.png +0 -0
  461. {pyglet-1.5.27 → pyglet-1.5.29}/examples/gui/widgets.py +0 -0
  462. {pyglet-1.5.27 → pyglet-1.5.29}/examples/hello_world.py +0 -0
  463. {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/apple_remote.py +0 -0
  464. {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/apple_remote_demo.py +0 -0
  465. {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/input.py +0 -0
  466. {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/joystick.py +0 -0
  467. {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/show_input.py +0 -0
  468. {pyglet-1.5.27 → pyglet-1.5.29}/examples/input/tablet.py +0 -0
  469. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/media_info.py +0 -0
  470. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/media_player.py +0 -0
  471. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/README +0 -0
  472. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/ball.png +0 -0
  473. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/ball.wav +0 -0
  474. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/noisy/noisy.py +0 -0
  475. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/README +0 -0
  476. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/reader.py +0 -0
  477. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/bass.wav +0 -0
  478. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/drums.wav +0 -0
  479. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/guitar.wav +0 -0
  480. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/piano.wav +0 -0
  481. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/res/space.txt +0 -0
  482. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/soundspace/soundspace.py +0 -0
  483. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/synthesizer.py +0 -0
  484. {pyglet-1.5.27 → pyglet-1.5.29}/examples/media/video.py +0 -0
  485. {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/opengl.py +0 -0
  486. {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/opengl_context.py +0 -0
  487. {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/opengl_scissor.py +0 -0
  488. {pyglet-1.5.27 → pyglet-1.5.29}/examples/opengl/pyglet.png +0 -0
  489. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/animation.py +0 -0
  490. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/dinosaur.gif +0 -0
  491. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/events.py +0 -0
  492. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/hello_world.py +0 -0
  493. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/image_viewer.py +0 -0
  494. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/kitten.jpg +0 -0
  495. {pyglet-1.5.27 → pyglet-1.5.29}/examples/programming_guide/window_subclass.py +0 -0
  496. {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/advanced_font.py +0 -0
  497. {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/font_comparison.py +0 -0
  498. {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/html_label.py +0 -0
  499. {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/pyglet.png +0 -0
  500. {pyglet-1.5.27 → pyglet-1.5.29}/examples/text/text_input.py +0 -0
  501. {pyglet-1.5.27 → pyglet-1.5.29}/examples/timer.py +0 -0
  502. {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/camera.py +0 -0
  503. {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/camera_group.py +0 -0
  504. {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/multiple_windows.py +0 -0
  505. {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/overlay_window.py +0 -0
  506. {pyglet-1.5.27 → pyglet-1.5.29}/examples/window/transparent_window.py +0 -0
  507. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/README +0 -0
  508. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/genfield.py +0 -0
  509. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/py.df.png +0 -0
  510. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/py.png +0 -0
  511. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/dist_field/renderfield.py +0 -0
  512. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/hello_world.svg +0 -0
  513. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/svg_test.py +0 -0
  514. {pyglet-1.5.27 → pyglet-1.5.29}/experimental/win32priority.py +0 -0
  515. {pyglet-1.5.27 → pyglet-1.5.29}/make.py +0 -0
  516. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/__init__.py +0 -0
  517. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  518. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/__init__.py +0 -0
  519. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/egl.py +0 -0
  520. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/eglext.py +0 -0
  521. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/egl/lib.py +0 -0
  522. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/libs/x11/__init__.py +0 -0
  523. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/codecs/pyogg.py +0 -0
  524. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet/media/devices/__init__.py +0 -0
  525. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/dependency_links.txt +0 -0
  526. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/top_level.txt +0 -0
  527. {pyglet-1.5.27 → pyglet-1.5.29}/pyglet.egg-info/zip-safe +0 -0
  528. {pyglet-1.5.27 → pyglet-1.5.29}/pytest.ini +0 -0
  529. {pyglet-1.5.27 → pyglet-1.5.29}/setup.cfg +0 -0
  530. {pyglet-1.5.27 → pyglet-1.5.29}/setup.py +0 -0
  531. {pyglet-1.5.27 → pyglet-1.5.29}/tests/__init__.py +0 -0
  532. {pyglet-1.5.27 → pyglet-1.5.29}/tests/annotations.py +0 -0
  533. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/__init__.py +0 -0
  534. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/data.py +0 -0
  535. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/event_loop.py +0 -0
  536. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/future_test.py +0 -0
  537. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/interactive.py +0 -0
  538. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/performance.py +0 -0
  539. {pyglet-1.5.27 → pyglet-1.5.29}/tests/base/test_interactive_test_base.py +0 -0
  540. {pyglet-1.5.27 → pyglet-1.5.29}/tests/conftest.py +0 -0
  541. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/README +0 -0
  542. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man.ttf +0 -0
  543. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man_bold.ttf +0 -0
  544. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  545. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/action_man_italic.ttf +0 -0
  546. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  547. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/8bpp.gif +0 -0
  548. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/cursor.png +0 -0
  549. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/dinosaur.gif +0 -0
  550. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/gdk_close.png +0 -0
  551. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/grey_background.png +0 -0
  552. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon1.png +0 -0
  553. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size1.png +0 -0
  554. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size2.png +0 -0
  555. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size3.png +0 -0
  556. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size4.png +0 -0
  557. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/icon_size5.png +0 -0
  558. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/l.png +0 -0
  559. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/la.png +0 -0
  560. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/multitexture.png +0 -0
  561. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb.png +0 -0
  562. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_16bpp.bmp +0 -0
  563. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_1bpp.bmp +0 -0
  564. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_24bpp.bmp +0 -0
  565. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_32bpp.bmp +0 -0
  566. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_4bpp.bmp +0 -0
  567. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_8bpp.bmp +0 -0
  568. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_8bpp.png +0 -0
  569. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_8bpp_trans.png +0 -0
  570. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgb_dxt1.dds +0 -0
  571. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba.png +0 -0
  572. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_32bpp.bmp +0 -0
  573. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_dxt1.dds +0 -0
  574. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_dxt3.dds +0 -0
  575. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/rgba_dxt5.dds +0 -0
  576. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  577. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/README +0 -0
  578. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/alert.wav +0 -0
  579. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/login.wav +0 -0
  580. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/logout.wav +0 -0
  581. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/receive.wav +0 -0
  582. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/send.wav +0 -0
  583. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_digitar_16_11025_1ch.wav +0 -0
  584. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_digitar_16_44800_1ch.wav +0 -0
  585. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_digitar_8_44800_1ch.wav +0 -0
  586. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_fm_16_11025_1ch.wav +0 -0
  587. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_fm_16_44800_1ch.wav +0 -0
  588. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_fm_8_44800_1ch.wav +0 -0
  589. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  590. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  591. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sawtooth_8_44800_1ch.wav +0 -0
  592. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  593. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  594. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_silence_8_44800_1ch.wav +0 -0
  595. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  596. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  597. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_sine_8_44800_1ch.wav +0 -0
  598. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  599. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  600. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_square_8_44800_1ch.wav +0 -0
  601. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  602. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  603. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/media/synthesis_triangle_8_44800_1ch.wav +0 -0
  604. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/models/logo3d.mtl +0 -0
  605. {pyglet-1.5.27 → pyglet-1.5.29}/tests/data/models/logo3d.obj +0 -0
  606. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/__init__.py +0 -0
  607. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/app/__init__.py +0 -0
  608. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/app/test_eventloop.py +0 -0
  609. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/font/test_fontconfig.py +0 -0
  610. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/font/test_freetype_face.py +0 -0
  611. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/__init__.py +0 -0
  612. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/graphics_common.py +0 -0
  613. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_allocation.py +0 -0
  614. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_immediate_drawing.py +0 -0
  615. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_immediate_drawing_indexed_data.py +0 -0
  616. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_multitexture.py +0 -0
  617. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_retained_drawing.py +0 -0
  618. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/graphics/test_retained_drawing_indexed_data.py +0 -0
  619. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/__init__.py +0 -0
  620. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  621. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/test_imagegrid.py +0 -0
  622. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/image/test_texture3d.py +0 -0
  623. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/__init__.py +0 -0
  624. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/mock_player.py +0 -0
  625. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_directsound.py +0 -0
  626. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_driver.py +0 -0
  627. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_openal.py +0 -0
  628. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_player.py +0 -0
  629. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/media/test_pulse.py +0 -0
  630. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/model/__init__.py +0 -0
  631. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/model/test_loading.py +0 -0
  632. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/platform/__init__.py +0 -0
  633. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/platform/test_linux_fontconfig.py +0 -0
  634. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  635. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/__init__.py +0 -0
  636. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  637. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir1/f2.txt +0 -0
  638. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir1/res.zip +0 -0
  639. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/dir2/f6.txt +0 -0
  640. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/f1.txt +0 -0
  641. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/rgbm.png +0 -0
  642. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/test_resource_image_loading.py +0 -0
  643. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/resource/test_resource_loading.py +0 -0
  644. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/test_toplevel_imports.py +0 -0
  645. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/text/__init__.py +0 -0
  646. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/text/test_empty_document.py +0 -0
  647. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/__init__.py +0 -0
  648. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/test_context_share.py +0 -0
  649. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/test_event_sequence.py +0 -0
  650. {pyglet-1.5.27 → pyglet-1.5.29}/tests/integration/window/test_window_caption.py +0 -0
  651. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/__init__.py +0 -0
  652. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/conftest.py +0 -0
  653. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/graphics/__init__.py +0 -0
  654. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/graphics/test_multitexture.py +0 -0
  655. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/image/__init__.py +0 -0
  656. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/image/test_image.py +0 -0
  657. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/media/__init__.py +0 -0
  658. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/media/test_player.py +0 -0
  659. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/screenshots/committed/README +0 -0
  660. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/screenshots/session/README +0 -0
  661. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/__init__.py +0 -0
  662. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_content_valign.py +0 -0
  663. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_html.py +0 -0
  664. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_inline_elements.py +0 -0
  665. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_inline_elements_style_change.py +0 -0
  666. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_multiline_wrap.py +0 -0
  667. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_plain.py +0 -0
  668. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/text/test_style.py +0 -0
  669. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/__init__.py +0 -0
  670. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_events.py +0 -0
  671. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_fullscreen.py +0 -0
  672. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_modes.py +0 -0
  673. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_multisample.py +0 -0
  674. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_open.py +0 -0
  675. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_settings.py +0 -0
  676. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/test_window_styles.py +0 -0
  677. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/window/window_util.py +0 -0
  678. {pyglet-1.5.27 → pyglet-1.5.29}/tests/interactive/windowed_test_base.py +0 -0
  679. {pyglet-1.5.27 → pyglet-1.5.29}/tests/requirements.txt +0 -0
  680. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/__init__.py +0 -0
  681. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/__init__.py +0 -0
  682. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_listener.py +0 -0
  683. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_player.py +0 -0
  684. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_sources.py +0 -0
  685. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/media/test_synthesis.py +0 -0
  686. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_atlas.py +0 -0
  687. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_clock.py +0 -0
  688. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_clock_fps.py +0 -0
  689. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_font.py +0 -0
  690. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_math.py +0 -0
  691. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_resource_path.py +0 -0
  692. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/test_text.py +0 -0
  693. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/text/__init__.py +0 -0
  694. {pyglet-1.5.27 → pyglet-1.5.29}/tests/unit/text/test_layout.py +0 -0
  695. {pyglet-1.5.27 → pyglet-1.5.29}/tools/al_info.py +0 -0
  696. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/bokeh_timeline.py +0 -0
  697. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/compare.py +0 -0
  698. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/configure.py +0 -0
  699. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/extractors.py +0 -0
  700. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/fs.py +0 -0
  701. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/mp.py +0 -0
  702. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/mpexceptions.py +0 -0
  703. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/playmany.py +0 -0
  704. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  705. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/readme_run_tests.txt +0 -0
  706. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/report.py +0 -0
  707. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/reports.py +0 -0
  708. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/retry_crashed.py +0 -0
  709. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/run_test_suite.py +0 -0
  710. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/summarize.py +0 -0
  711. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/test_instrumentation.py +0 -0
  712. {pyglet-1.5.27 → pyglet-1.5.29}/tools/ffmpeg/timeline.py +0 -0
  713. {pyglet-1.5.27 → pyglet-1.5.29}/tools/gendist.sh +0 -0
  714. {pyglet-1.5.27 → pyglet-1.5.29}/tools/gengl.py +0 -0
  715. {pyglet-1.5.27 → pyglet-1.5.29}/tools/genwrappers.py +0 -0
  716. {pyglet-1.5.27 → pyglet-1.5.29}/tools/gl_info.py +0 -0
  717. {pyglet-1.5.27 → pyglet-1.5.29}/tools/inspect_font.py +0 -0
  718. {pyglet-1.5.27 → pyglet-1.5.29}/tools/license.py +0 -0
  719. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wgl.h +0 -0
  720. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/__init__.py +0 -0
  721. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/cparser.py +0 -0
  722. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/ctypesparser.py +0 -0
  723. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/lex.py +0 -0
  724. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/preprocessor.py +0 -0
  725. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/wrap.py +0 -0
  726. {pyglet-1.5.27 → pyglet-1.5.29}/tools/wraptypes/yacc.py +0 -0
  727. {pyglet-1.5.27 → pyglet-1.5.29}/website/LICENSE.txt +0 -0
  728. {pyglet-1.5.27 → pyglet-1.5.29}/website/README.rst +0 -0
  729. {pyglet-1.5.27 → pyglet-1.5.29}/website/assets/favicon.ico +0 -0
  730. {pyglet-1.5.27 → pyglet-1.5.29}/website/assets/static/css/example-custom-styles.css +0 -0
  731. {pyglet-1.5.27 → pyglet-1.5.29}/website/assets/static/images/pyglet.png +0 -0
  732. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/404.html/contents.lr +0 -0
  733. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/404.html/ngc-5793.jpg +0 -0
  734. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/authors/benjamin/contents.lr +0 -0
  735. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/authors/benjamin/pyglet.png +0 -0
  736. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/authors/contents.lr +0 -0
  737. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/blog/contents.lr +0 -0
  738. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/blog/welcome-blog/contents.lr +0 -0
  739. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/contents.lr +0 -0
  740. {pyglet-1.5.27 → pyglet-1.5.29}/website/content/eclipse.jpg +0 -0
  741. {pyglet-1.5.27 → pyglet-1.5.29}/website/pyglet.lektorproject +0 -0
  742. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  743. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  744. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  745. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/LICENSE.txt +0 -0
  746. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/NOTICE.txt +0 -0
  747. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/README.md +0 -0
  748. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  749. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  750. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  751. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  752. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  753. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  754. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  755. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  756. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  757. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  758. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  759. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  760. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  761. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  762. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  763. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  764. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  765. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  766. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  767. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  768. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  769. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  770. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  771. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  772. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  773. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  774. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  775. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  776. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  777. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/blog-index.png +0 -0
  778. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/full-blog.png +0 -0
  779. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/full-page.png +0 -0
  780. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  781. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  782. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  783. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  784. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/404.ini +0 -0
  785. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/author.ini +0 -0
  786. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/authors.ini +0 -0
  787. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  788. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/blog.ini +0 -0
  789. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/page.ini +0 -0
  790. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  791. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/404.html +0 -0
  792. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/author.html +0 -0
  793. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/authors.html +0 -0
  794. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  795. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  796. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  797. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  798. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  799. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  800. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  801. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/blog.html +0 -0
  802. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/layout.html +0 -0
  803. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  804. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  805. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/none.html +0 -0
  806. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/page.html +0 -0
  807. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  808. {pyglet-1.5.27 → pyglet-1.5.29}/website/themes/lektor-icon/theme.ini +0 -0
@@ -0,0 +1,80 @@
1
+ name: PyTest
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ linux:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ matrix:
10
+ python-version: [ '3.8', '3.9', '3.10' ]
11
+ name: Python ${{ matrix.python-version }} ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - name: Setup python
15
+ uses: actions/setup-python@v4
16
+ with:
17
+ python-version: ${{ matrix.python-version }}
18
+ - name: Install dependencies
19
+ run: |
20
+ python -m pip install --upgrade pip
21
+ pip install pytest
22
+ sudo apt-get install xvfb libglu1-mesa
23
+ - name: Run tests
24
+ run: |
25
+ xvfb-run pytest tests/unit
26
+
27
+ osx:
28
+ runs-on: macos-latest
29
+ strategy:
30
+ matrix:
31
+ python-version: [ '3.8', '3.9', '3.10' ]
32
+ name: Python ${{ matrix.python-version }} OSX
33
+ steps:
34
+ - uses: actions/checkout@v3
35
+ - name: Setup python
36
+ uses: actions/setup-python@v4
37
+ with:
38
+ python-version: ${{ matrix.python-version }}
39
+ - name: Install dependencies
40
+ run: |
41
+ pip install pytest
42
+ - name: Run tests
43
+ run: |
44
+ pytest tests/unit
45
+
46
+ windows:
47
+ runs-on: windows-latest
48
+ strategy:
49
+ matrix:
50
+ python-version: [ '3.8', '3.9', '3.10' ]
51
+ name: Python ${{ matrix.python-version }} Windows
52
+ steps:
53
+ - uses: actions/checkout@v3
54
+ - name: Setup python
55
+ uses: actions/setup-python@v4
56
+ with:
57
+ python-version: ${{ matrix.python-version }}
58
+ - uses: msys2/setup-msys2@v2
59
+ with:
60
+ msystem: MINGW64
61
+ release: false
62
+ install: mingw-w64-x86_64-mesa
63
+ - name: Install dependencies
64
+ run: |
65
+ pip install pytest
66
+ - name: Run tests
67
+ shell: pwsh
68
+ run: |
69
+
70
+ $env:PYGLET_DEBUG_LIB = "True"
71
+ $env:PYGLET_DEBUG_GL_TRACE = "True"
72
+
73
+ mkdir D:\a\pyglet\pyglet\lib
74
+ copy C:\msys64\mingw64\bin\opengl32.dll D:\a\pyglet\pyglet\lib\
75
+
76
+ mkdir D:\a\pyglet\lib
77
+ copy C:\msys64\mingw64\bin\opengl32.dll D:\a\pyglet\lib\
78
+
79
+ # pytest tests/unit
80
+ python -m pyglet.info
@@ -1,5 +1,5 @@
1
1
  Copyright (c) 2006-2008 Alex Holkner
2
- Copyright (c) 2008-2021 pyglet contributors
2
+ Copyright (c) 2008-2023 pyglet contributors
3
3
  All rights reserved.
4
4
 
5
5
  Redistribution and use in source and binary forms, with or without
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyglet
3
- Version: 1.5.27
3
+ Version: 1.5.29
4
4
  Summary: Cross-platform windowing and multimedia library
5
5
  Home-page: http://pyglet.readthedocs.org/en/latest/
6
6
  Download-URL: http://pypi.python.org/pypi/pyglet
@@ -1,3 +1,40 @@
1
+ pyglet 1.5.29
2
+
3
+ Bugfixes
4
+ --------
5
+ - image: Fix name error on Windows when using WIC decoder (#1106)
6
+ - media: Backport thread join exception catch from 2.0 (9db3971) (#1105)
7
+
8
+
9
+ pyglet 1.5.28
10
+
11
+ Features
12
+ --------
13
+ - Add support for FFmpeg 6.0
14
+ - Add support for mouse buttons 4 & 5 on Windows and Linux
15
+ - Windows: set higher timer precision when starting PlatformEventLoop.
16
+ - font.DirectWrite: improve font name parser (set 'dw_legacy_naming' pyglet option for old behavior)
17
+ - Extend keyboard F-key support (F16-24 on Windows, F21-24 on Linux. Mac limited to F20. (#773)
18
+ - Avoid audio stutter by initializing the AudioDriver when the media module is first used.
19
+ - macOS: add support for "on_file_drop" Window events
20
+ - macOS: add CoreAudio decoder for supporting compressed audio formats out of the box (mp3, etc.)
21
+ - macOS: add filename support for QuartzFont
22
+ - macOS: New optional alternate event loop, to prevent M1 issues (set 'osx_alt_loop' pyglet option) (#794)
23
+
24
+ Bugfixes
25
+ --------
26
+ - Backport of numerous media and font bugfixes from the master branch.
27
+ - Fix BYTE windows type for Python 3.12
28
+ - Skip calling CGDisplaySetDisplayMode if the current screen mode is the same (#891)
29
+ - font.DirectWrite: Enable color font only for supported OS's
30
+ - Fix get_default_screen() to get the primary monitor, not just the first in the list (#717)
31
+ - Fix debug_win32 - LoadLibrary implementation (#748)
32
+ - font.Directwrite: Fix 32 bit crashes (#771)
33
+ - macOS: Fix memory leak with NSDate object returns.
34
+ - Fix FFmpeg 4.0 not being found on MacOS
35
+ - Varios XAudio2 fixes and cleanups (#877)
36
+
37
+
1
38
  pyglet 1.5.27
2
39
 
3
40
  Bugfixes
@@ -1,41 +1,6 @@
1
- # ----------------------------------------------------------------------------
2
- # pyglet
3
- # Copyright (c) 2006-2008 Alex Holkner
4
- # Copyright (c) 2008-2022 pyglet contributors
5
- # All rights reserved.
6
- #
7
- # Redistribution and use in source and binary forms, with or without
8
- # modification, are permitted provided that the following conditions
9
- # are met:
10
- #
11
- # * Redistributions of source code must retain the above copyright
12
- # notice, this list of conditions and the following disclaimer.
13
- # * Redistributions in binary form must reproduce the above copyright
14
- # notice, this list of conditions and the following disclaimer in
15
- # the documentation and/or other materials provided with the
16
- # distribution.
17
- # * Neither the name of pyglet nor the names of its
18
- # contributors may be used to endorse or promote products
19
- # derived from this software without specific prior written
20
- # permission.
21
- #
22
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
- # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
- # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
- # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
- # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
- # POSSIBILITY OF SUCH DAMAGE.
34
- # ----------------------------------------------------------------------------
35
-
36
1
  """pyglet is a cross-platform games and multimedia package.
37
2
 
38
- Detailed documentation is available at http://www.pyglet.org
3
+ More information is available at http://www.pyglet.org
39
4
  """
40
5
 
41
6
  import os
@@ -53,7 +18,7 @@ _is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
53
18
  #:
54
19
  #: Valid only if pyglet was installed from a source or binary distribution
55
20
  #: (i.e. not cloned from Git).
56
- version = '1.5.27'
21
+ version = '1.5.29'
57
22
 
58
23
 
59
24
  if sys.version_info < (3, 6):
@@ -160,12 +125,14 @@ options = {
160
125
  'vsync': None,
161
126
  'xsync': True,
162
127
  'xlib_fullscreen_override_redirect': False,
163
- 'darwin_cocoa': True,
164
128
  'search_local_libs': True,
165
129
  'advanced_font_features': False,
166
130
  'headless': False,
167
131
  'headless_device': 0,
168
132
  'win32_disable_shaping': False,
133
+ 'dw_legacy_naming': False,
134
+ 'com_mta': False,
135
+ 'osx_alt_loop': False
169
136
  }
170
137
 
171
138
  _option_types = {
@@ -189,30 +156,32 @@ _option_types = {
189
156
  'vsync': bool,
190
157
  'xsync': bool,
191
158
  'xlib_fullscreen_override_redirect': bool,
159
+ 'search_local_libs': bool,
192
160
  'advanced_font_features': bool,
193
161
  'headless': bool,
194
162
  'headless_device': int,
195
- 'win32_disable_shaping': bool
163
+ 'win32_disable_shaping': bool,
164
+ 'dw_legacy_naming': bool,
165
+ 'com_mta': bool,
166
+ 'osx_alt_loop': bool,
196
167
  }
197
168
 
198
169
 
199
- def _read_environment():
170
+ for key in options:
200
171
  """Read defaults for options from environment"""
201
- for key in options:
202
- env = 'PYGLET_%s' % key.upper()
203
- try:
204
- value = os.environ[env]
205
- if _option_types[key] is tuple:
206
- options[key] = value.split(',')
207
- elif _option_types[key] is bool:
208
- options[key] = value in ('true', 'TRUE', 'True', '1')
209
- elif _option_types[key] is int:
210
- options[key] = int(value)
211
- except KeyError:
212
- pass
213
-
172
+ assert key in _option_types, f"Option '{key}' must have a type set in _option_types."
173
+ env = f'PYGLET_{key.upper()}'
174
+ try:
175
+ value = os.environ[env]
176
+ if _option_types[key] is tuple:
177
+ options[key] = value.split(',')
178
+ elif _option_types[key] is bool:
179
+ options[key] = value in ('true', 'TRUE', 'True', '1')
180
+ elif _option_types[key] is int:
181
+ options[key] = int(value)
182
+ except KeyError:
183
+ pass
214
184
 
215
- _read_environment()
216
185
 
217
186
  if compat_platform == 'cygwin':
218
187
  # This hack pretends that the posix-like ctypes provides windows
@@ -268,21 +237,21 @@ def _trace_frame(thread, frame, indent):
268
237
  filename = os.path.join('...', filename)
269
238
  _trace_filename_abbreviations[path] = filename
270
239
 
271
- location = '(%s:%d)' % (filename, line)
240
+ location = f'({filename}:{line})'
272
241
 
273
242
  if indent:
274
- name = 'Called from %s' % name
275
- print('[%d] %s%s %s' % (thread, indent, name, location))
243
+ name = f'Called from {name}'
244
+ print(f'[{thread}] {indent}{name} {location}')
276
245
 
277
246
  if _trace_args:
278
247
  if is_ctypes:
279
248
  args = [_trace_repr(arg) for arg in frame.f_locals['args']]
280
- print(' %sargs=(%s)' % (indent, ', '.join(args)))
249
+ print(f' {indent}args=({", ".join(args)})')
281
250
  else:
282
251
  for argname in code.co_varnames[:code.co_argcount]:
283
252
  try:
284
253
  argvalue = _trace_repr(frame.f_locals[argname])
285
- print(' %s%s=%s' % (indent, argname, argvalue))
254
+ print(f' {indent}{argname}={argvalue}')
286
255
  except:
287
256
  pass
288
257
 
@@ -338,7 +307,7 @@ class _ModuleProxy:
338
307
  if self._module is not None:
339
308
  raise
340
309
 
341
- import_name = 'pyglet.%s' % self._module_name
310
+ import_name = f'pyglet.{self._module_name}'
342
311
  __import__(import_name)
343
312
  module = sys.modules[import_name]
344
313
  object.__setattr__(self, '_module', module)
@@ -352,7 +321,7 @@ class _ModuleProxy:
352
321
  if self._module is not None:
353
322
  raise
354
323
 
355
- import_name = 'pyglet.%s' % self._module_name
324
+ import_name = f'pyglet.{self._module_name}'
356
325
  __import__(import_name)
357
326
  module = sys.modules[import_name]
358
327
  object.__setattr__(self, '_module', module)
@@ -366,7 +335,6 @@ if TYPE_CHECKING:
366
335
  from . import app
367
336
  from . import canvas
368
337
  from . import clock
369
- from . import com
370
338
  from . import event
371
339
  from . import font
372
340
  from . import gl
@@ -387,7 +355,6 @@ else:
387
355
  app = _ModuleProxy('app')
388
356
  canvas = _ModuleProxy('canvas')
389
357
  clock = _ModuleProxy('clock')
390
- com = _ModuleProxy('com')
391
358
  event = _ModuleProxy('event')
392
359
  font = _ModuleProxy('font')
393
360
  gl = _ModuleProxy('gl')
@@ -1,38 +1,3 @@
1
- # ----------------------------------------------------------------------------
2
- # pyglet
3
- # Copyright (c) 2006-2008 Alex Holkner
4
- # Copyright (c) 2008-2022 pyglet contributors
5
- # All rights reserved.
6
- #
7
- # Redistribution and use in source and binary forms, with or without
8
- # modification, are permitted provided that the following conditions
9
- # are met:
10
- #
11
- # * Redistributions of source code must retain the above copyright
12
- # notice, this list of conditions and the following disclaimer.
13
- # * Redistributions in binary form must reproduce the above copyright
14
- # notice, this list of conditions and the following disclaimer in
15
- # the documentation and/or other materials provided with the
16
- # distribution.
17
- # * Neither the name of pyglet nor the names of its
18
- # contributors may be used to endorse or promote products
19
- # derived from this software without specific prior written
20
- # permission.
21
- #
22
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
- # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
- # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
- # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
- # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
- # POSSIBILITY OF SUCH DAMAGE.
34
- # ----------------------------------------------------------------------------
35
-
36
1
  """Application-wide functionality.
37
2
 
38
3
  Applications
@@ -64,20 +29,24 @@ default policy is to wait until all windows are closed)::
64
29
  .. versionadded:: 1.1
65
30
  """
66
31
 
32
+ import platform
67
33
  import sys
68
34
  import weakref
69
35
 
70
- from pyglet.app.base import EventLoop
36
+ import pyglet
71
37
  from pyglet import compat_platform
38
+ from pyglet.app.base import EventLoop
72
39
 
73
40
  _is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
74
41
 
75
-
76
42
  if _is_pyglet_doc_run:
77
43
  from pyglet.app.base import PlatformEventLoop
78
44
  else:
79
45
  if compat_platform == 'darwin':
80
- from pyglet.app.cocoa import CocoaEventLoop as PlatformEventLoop
46
+ from pyglet.app.cocoa import CocoaPlatformEventLoop as PlatformEventLoop
47
+
48
+ if platform.machine() == 'arm64' or pyglet.options["osx_alt_loop"]:
49
+ from pyglet.app.cocoa import CocoaAlternateEventLoop as EventLoop
81
50
  elif compat_platform in ('win32', 'cygwin'):
82
51
  from pyglet.app.win32 import Win32EventLoop as PlatformEventLoop
83
52
  else:
@@ -127,7 +96,6 @@ def exit():
127
96
  #: :meth:`EventLoop.run`.
128
97
  event_loop = EventLoop()
129
98
 
130
- #: The platform-dependent event loop.
131
- #: Applications must not subclass or replace this :class:`PlatformEventLoop`
132
- #: object.
99
+ #: The platform-dependent event loop. Applications must not subclass
100
+ # or replace this :class:`PlatformEventLoop` object.
133
101
  platform_event_loop = PlatformEventLoop()
@@ -1,7 +1,7 @@
1
1
  # ----------------------------------------------------------------------------
2
2
  # pyglet
3
3
  # Copyright (c) 2006-2008 Alex Holkner
4
- # Copyright (c) 2008-2022 pyglet contributors
4
+ # Copyright (c) 2008-2023 pyglet contributors
5
5
  # All rights reserved.
6
6
  #
7
7
  # Redistribution and use in source and binary forms, with or without
@@ -55,7 +55,6 @@ class PlatformEventLoop:
55
55
  def __init__(self):
56
56
  self._event_queue = queue.Queue()
57
57
  self._is_running = threading.Event()
58
- self._is_running.clear()
59
58
 
60
59
  def is_running(self):
61
60
  """Return True if the event loop is currently processing, or False
@@ -1,59 +1,18 @@
1
- # ----------------------------------------------------------------------------
2
- # pyglet
3
- # Copyright (c) 2006-2008 Alex Holkner
4
- # Copyright (c) 2008-2022 pyglet contributors
5
- # All rights reserved.
6
- #
7
- # Redistribution and use in source and binary forms, with or without
8
- # modification, are permitted provided that the following conditions
9
- # are met:
10
- #
11
- # * Redistributions of source code must retain the above copyright
12
- # notice, this list of conditions and the following disclaimer.
13
- # * Redistributions in binary form must reproduce the above copyright
14
- # notice, this list of conditions and the following disclaimer in
15
- # the documentation and/or other materials provided with the
16
- # distribution.
17
- # * Neither the name of pyglet nor the names of its
18
- # contributors may be used to endorse or promote products
19
- # derived from this software without specific prior written
20
- # permission.
21
- #
22
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
- # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
- # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
- # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
- # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
- # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
- # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
- # POSSIBILITY OF SUCH DAMAGE.
34
- # ----------------------------------------------------------------------------
35
-
36
- from pyglet.app.base import PlatformEventLoop
37
- from pyglet.libs.darwin import cocoapy
1
+ import signal
2
+ from pyglet import app
3
+ from pyglet.app.base import PlatformEventLoop, EventLoop
4
+ from pyglet.libs.darwin import cocoapy, AutoReleasePool, ObjCSubclass, PyObjectEncoding, ObjCInstance, send_super, \
5
+ ObjCClass, get_selector
38
6
 
39
7
  NSApplication = cocoapy.ObjCClass('NSApplication')
40
8
  NSMenu = cocoapy.ObjCClass('NSMenu')
41
9
  NSMenuItem = cocoapy.ObjCClass('NSMenuItem')
42
- NSAutoreleasePool = cocoapy.ObjCClass('NSAutoreleasePool')
43
10
  NSDate = cocoapy.ObjCClass('NSDate')
44
11
  NSEvent = cocoapy.ObjCClass('NSEvent')
45
12
  NSUserDefaults = cocoapy.ObjCClass('NSUserDefaults')
13
+ NSTimer = cocoapy.ObjCClass('NSTimer')
46
14
 
47
15
 
48
- class AutoReleasePool:
49
- def __enter__(self):
50
- self.pool = NSAutoreleasePool.alloc().init()
51
- return self.pool
52
-
53
- def __exit__(self, exc_type, exc_value, traceback):
54
- self.pool.drain()
55
- del self.pool
56
-
57
16
 
58
17
  def add_menu_item(menu, title, action, key):
59
18
  with AutoReleasePool():
@@ -65,8 +24,6 @@ def add_menu_item(menu, title, action, key):
65
24
  menu.addItem_(menuItem)
66
25
 
67
26
  # cleanup
68
- title.release()
69
- key.release()
70
27
  menuItem.release()
71
28
 
72
29
 
@@ -92,10 +49,72 @@ def create_menu():
92
49
  appMenuItem.release()
93
50
 
94
51
 
95
- class CocoaEventLoop(PlatformEventLoop):
52
+ class _AppDelegate_Implementation:
53
+ _AppDelegate = ObjCSubclass('NSObject', '_AppDelegate')
54
+
55
+ @_AppDelegate.method(b'@' + PyObjectEncoding)
56
+ def init(self, pyglet_loop):
57
+ objc = ObjCInstance(send_super(self, 'init'))
58
+ self._pyglet_loop = pyglet_loop
59
+ return objc # objc is self
60
+
61
+ @_AppDelegate.method('v')
62
+ def updatePyglet_(self):
63
+ self._pyglet_loop.nsapp_step()
64
+
65
+ @_AppDelegate.method('v@')
66
+ def applicationWillTerminate_(self, notification):
67
+ self._pyglet_loop.is_running = False
68
+ self._pyglet_loop.has_exit = True
69
+
70
+ @_AppDelegate.method('v@')
71
+ def applicationDidFinishLaunching_(self, notification):
72
+ self._pyglet_loop._finished_launching = True
73
+
74
+ _AppDelegate = ObjCClass('_AppDelegate') # the actual class
75
+
76
+ class CocoaAlternateEventLoop(EventLoop):
77
+ """This is an alternate loop developed mainly for ARM64 variants of macOS.
78
+ nextEventMatchingMask_untilDate_inMode_dequeue_ is very broken with ctypes calls. Events eventually stop
79
+ working properly after X returns. This event loop differs in that it uses the built-in NSApplication event
80
+ loop. We tie our schedule into it via timer.
81
+ """
82
+ def run(self, interval=1.0/60.0):
83
+ self.has_exit = False
84
+
85
+ from pyglet.window import Window
86
+ Window._enable_event_queue = False
87
+
88
+ # Dispatch pending events
89
+ for window in app.windows:
90
+ window.switch_to()
91
+ window.dispatch_pending_events()
92
+
93
+ self.platform_event_loop = app.platform_event_loop
94
+
95
+ self.dispatch_event('on_enter')
96
+ self.is_running = True
97
+ self.platform_event_loop.nsapp_start(interval)
98
+
99
+ def exit(self):
100
+ """Safely exit the event loop at the end of the current iteration.
101
+
102
+ This method is a thread-safe equivalent for setting
103
+ :py:attr:`has_exit` to ``True``. All waiting threads will be
104
+ interrupted (see :py:meth:`sleep`).
105
+ """
106
+ self.has_exit = True
107
+ self.platform_event_loop.notify()
108
+
109
+ self.is_running = False
110
+ self.dispatch_event('on_exit')
111
+
112
+ self.platform_event_loop.nsapp_stop()
113
+
114
+ class CocoaPlatformEventLoop(PlatformEventLoop):
96
115
 
97
116
  def __init__(self):
98
- super(CocoaEventLoop, self).__init__()
117
+ super(CocoaPlatformEventLoop, self).__init__()
99
118
  with AutoReleasePool():
100
119
  # Prepare the default application.
101
120
  self.NSApp = NSApplication.sharedApplication()
@@ -112,6 +131,11 @@ class CocoaEventLoop(PlatformEventLoop):
112
131
  ignoreState = cocoapy.CFSTR("ApplePersistenceIgnoreState")
113
132
  if not defaults.objectForKey_(ignoreState):
114
133
  defaults.setBool_forKey_(True, ignoreState)
134
+
135
+ holdEnabled = cocoapy.CFSTR("ApplePressAndHoldEnabled")
136
+ if not defaults.objectForKey_(holdEnabled):
137
+ defaults.setBool_forKey_(False, holdEnabled)
138
+
115
139
  self._finished_launching = False
116
140
 
117
141
  def start(self):
@@ -123,6 +147,44 @@ class CocoaEventLoop(PlatformEventLoop):
123
147
  self.NSApp.activateIgnoringOtherApps_(True)
124
148
  self._finished_launching = True
125
149
 
150
+ def nsapp_start(self, interval):
151
+ """Used only for CocoaAlternateEventLoop"""
152
+ from pyglet.app import event_loop
153
+ self._event_loop = event_loop
154
+
155
+ def term_received(*args):
156
+ if self.timer:
157
+ self.timer.invalidate()
158
+ self.timer = None
159
+
160
+ self.nsapp_stop()
161
+
162
+ # Force NSApp to close if Python receives sig events.
163
+ signal.signal(signal.SIGINT, term_received)
164
+ signal.signal(signal.SIGTERM, term_received)
165
+
166
+ self.appdelegate = _AppDelegate.alloc().init(self)
167
+ self.NSApp.setDelegate_(self.appdelegate)
168
+
169
+ self.timer = NSTimer.scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
170
+ interval, # Clamped internally to 0.0001 (including 0)
171
+ self.appdelegate,
172
+ get_selector('updatePyglet:'),
173
+ False,
174
+ True
175
+ )
176
+
177
+ self.NSApp.run()
178
+
179
+ def nsapp_step(self):
180
+ """Used only for CocoaAlternateEventLoop"""
181
+ self._event_loop.idle()
182
+ self.dispatch_posted_events()
183
+
184
+ def nsapp_stop(self):
185
+ """Used only for CocoaAlternateEventLoop"""
186
+ self.NSApp.terminate_(None)
187
+
126
188
  def step(self, timeout=None):
127
189
  with AutoReleasePool():
128
190
  self.dispatch_posted_events()
@@ -132,6 +194,8 @@ class CocoaEventLoop(PlatformEventLoop):
132
194
  # Using distantFuture as untilDate means that nextEventMatchingMask
133
195
  # will wait until the next event comes along.
134
196
  timeout_date = NSDate.distantFuture()
197
+ elif timeout == 0.0:
198
+ timeout_date = NSDate.distantPast()
135
199
  else:
136
200
  timeout_date = NSDate.dateWithTimeIntervalSinceNow_(timeout)
137
201
 
@@ -146,25 +210,8 @@ class CocoaEventLoop(PlatformEventLoop):
146
210
  if event is not None:
147
211
  event_type = event.type()
148
212
  if event_type != cocoapy.NSApplicationDefined:
149
- # Send out event as normal. Responders will still receive
150
- # keyUp:, keyDown:, and flagsChanged: events.
151
213
  self.NSApp.sendEvent_(event)
152
214
 
153
- # Resend key events as special pyglet-specific messages
154
- # which supplant the keyDown:, keyUp:, and flagsChanged: messages
155
- # because NSApplication translates multiple key presses into key
156
- # equivalents before sending them on, which means that some keyUp:
157
- # messages are never sent for individual keys. Our pyglet-specific
158
- # replacements ensure that we see all the raw key presses & releases.
159
- # We also filter out key-down repeats since pyglet only sends one
160
- # on_key_press event per key press.
161
- if event_type == cocoapy.NSKeyDown and not event.isARepeat():
162
- self.NSApp.sendAction_to_from_(cocoapy.get_selector("pygletKeyDown:"), None, event)
163
- elif event_type == cocoapy.NSKeyUp:
164
- self.NSApp.sendAction_to_from_(cocoapy.get_selector("pygletKeyUp:"), None, event)
165
- elif event_type == cocoapy.NSFlagsChanged:
166
- self.NSApp.sendAction_to_from_(cocoapy.get_selector("pygletFlagsChanged:"), None, event)
167
-
168
215
  self.NSApp.updateWindows()
169
216
  did_time_out = False
170
217
  else: