33import logging
44import weakref
55from collections import deque
6- from collections .abc import Iterable , Sequence
76from contextlib import contextmanager
87from ctypes import c_char_p , c_float , c_int , cast
98from typing import (
109 Any ,
10+ Deque ,
11+ Dict ,
12+ Iterable ,
13+ List ,
1114 Literal ,
15+ Sequence ,
16+ Set ,
17+ Tuple ,
1218 overload ,
1319)
1420
@@ -267,9 +273,9 @@ def __init__(
267273 gl .glEnable (gl .GL_SCISSOR_TEST )
268274
269275 # States
270- self ._blend_func : tuple [int , int ] | tuple [int , int , int , int ] = self .BLEND_DEFAULT
276+ self ._blend_func : Tuple [int , int ] | Tuple [int , int , int , int ] = self .BLEND_DEFAULT
271277 self ._point_size = 1.0
272- self ._flags : set [int ] = set ()
278+ self ._flags : Set [int ] = set ()
273279 self ._wireframe = False
274280 # Options for cull_face
275281 self ._cull_face_options = {
@@ -288,7 +294,7 @@ def __init__(
288294 self .gc_mode = gc_mode
289295 #: Collected objects to gc when gc_mode is "context_gc".
290296 #: This can be used during debugging.
291- self .objects : deque [Any ] = deque ()
297+ self .objects : Deque [Any ] = deque ()
292298
293299 @property
294300 def info (self ) -> GLInfo :
@@ -365,7 +371,7 @@ def fbo(self) -> Framebuffer:
365371 return self .active_framebuffer
366372
367373 @property
368- def gl_version (self ) -> tuple [int , int ]:
374+ def gl_version (self ) -> Tuple [int , int ]:
369375 """
370376 The OpenGL major and minor version as a tuple.
371377
@@ -578,7 +584,7 @@ def is_enabled(self, flag) -> bool:
578584 return flag in self ._flags
579585
580586 @property
581- def viewport (self ) -> tuple [int , int , int , int ]:
587+ def viewport (self ) -> Tuple [int , int , int , int ]:
582588 """
583589 Get or set the viewport for the currently active framebuffer.
584590 The viewport simply describes what pixels of the screen
@@ -595,11 +601,11 @@ def viewport(self) -> tuple[int, int, int, int]:
595601 return self .active_framebuffer .viewport
596602
597603 @viewport .setter
598- def viewport (self , value : tuple [int , int , int , int ]):
604+ def viewport (self , value : Tuple [int , int , int , int ]):
599605 self .active_framebuffer .viewport = value
600606
601607 @property
602- def scissor (self ) -> tuple [int , int , int , int ] | None :
608+ def scissor (self ) -> Tuple [int , int , int , int ] | None :
603609 """
604610 Get or set the scissor box for the active framebuffer.
605611 This is a shortcut for :py:meth:`~arcade.gl.Framebuffer.scissor`.
@@ -624,7 +630,7 @@ def scissor(self, value):
624630 self .fbo .scissor = value
625631
626632 @property
627- def blend_func (self ) -> tuple [int , int ] | tuple [int , int , int , int ]:
633+ def blend_func (self ) -> Tuple [int , int ] | Tuple [int , int , int , int ]:
628634 """
629635 Get or set the blend function.
630636 This is tuple specifying how the color and
@@ -672,7 +678,7 @@ def blend_func(self) -> tuple[int, int] | tuple[int, int, int, int]:
672678 return self ._blend_func
673679
674680 @blend_func .setter
675- def blend_func (self , value : tuple [int , int ] | tuple [int , int , int , int ]):
681+ def blend_func (self , value : Tuple [int , int ] | Tuple [int , int , int , int ]):
676682 self ._blend_func = value
677683 if len (value ) == 2 :
678684 gl .glBlendFunc (* value )
@@ -946,7 +952,7 @@ def buffer(
946952 def framebuffer (
947953 self ,
948954 * ,
949- color_attachments : Texture2D | list [Texture2D ] | None = None ,
955+ color_attachments : Texture2D | List [Texture2D ] | None = None ,
950956 depth_attachment : Texture2D | None = None ,
951957 ) -> Framebuffer :
952958 """Create a Framebuffer.
@@ -963,14 +969,14 @@ def framebuffer(
963969
964970 def texture (
965971 self ,
966- size : tuple [int , int ],
972+ size : Tuple [int , int ],
967973 * ,
968974 components : int = 4 ,
969975 dtype : str = "f1" ,
970976 data : BufferProtocol | None = None ,
971977 wrap_x : PyGLenum | None = None ,
972978 wrap_y : PyGLenum | None = None ,
973- filter : tuple [PyGLenum , PyGLenum ] | None = None ,
979+ filter : Tuple [PyGLenum , PyGLenum ] | None = None ,
974980 samples : int = 0 ,
975981 immutable : bool = False ,
976982 internal_format : PyGLenum | None = None ,
@@ -1066,14 +1072,14 @@ def texture(
10661072
10671073 def texture_array (
10681074 self ,
1069- size : tuple [int , int , int ],
1075+ size : Tuple [int , int , int ],
10701076 * ,
10711077 components : int = 4 ,
10721078 dtype : str = "f1" ,
10731079 data : BufferProtocol | None = None ,
10741080 wrap_x : PyGLenum | None = None ,
10751081 wrap_y : PyGLenum | None = None ,
1076- filter : tuple [PyGLenum , PyGLenum ] | None = None ,
1082+ filter : Tuple [PyGLenum , PyGLenum ] | None = None ,
10771083 ) -> TextureArray :
10781084 """
10791085 Create a 2D Texture Array.
@@ -1099,7 +1105,7 @@ def texture_array(
10991105 )
11001106
11011107 def depth_texture (
1102- self , size : tuple [int , int ], * , data : BufferProtocol | None = None
1108+ self , size : Tuple [int , int ], * , data : BufferProtocol | None = None
11031109 ) -> Texture2D :
11041110 """
11051111 Create a 2D depth texture. Can be used as a depth attachment
@@ -1223,8 +1229,8 @@ def program(
12231229 geometry_shader : str | None = None ,
12241230 tess_control_shader : str | None = None ,
12251231 tess_evaluation_shader : str | None = None ,
1226- common : list [str ] | None = None ,
1227- defines : dict [str , str ] | None = None ,
1232+ common : List [str ] | None = None ,
1233+ defines : Dict [str , str ] | None = None ,
12281234 varyings : Sequence [str ] | None = None ,
12291235 varyings_capture_mode : str = "interleaved" ,
12301236 ) -> Program :
@@ -1284,7 +1290,7 @@ def program(
12841290
12851291 # If we don't have a fragment shader we are doing transform feedback.
12861292 # When a geometry shader is present the out attributes will be located there
1287- out_attributes = list (varyings ) if varyings is not None else []
1293+ out_attributes = list (varyings ) if varyings is not None else [] # type: List[str]
12881294 if not source_fs and not out_attributes :
12891295 if source_geo :
12901296 out_attributes = source_geo .out_attributes
@@ -1583,7 +1589,7 @@ def __init__(self, ctx):
15831589 self .MAX_TEXTURE_MAX_ANISOTROPY = self .get_float (gl .GL_MAX_TEXTURE_MAX_ANISOTROPY , 1.0 )
15841590 """The highest supported anisotropy value. Usually 8.0 or 16.0."""
15851591
1586- self .MAX_VIEWPORT_DIMS : tuple [int , int ] = self .get_int_tuple (gl .GL_MAX_VIEWPORT_DIMS , 2 )
1592+ self .MAX_VIEWPORT_DIMS : Tuple [int , int ] = self .get_int_tuple (gl .GL_MAX_VIEWPORT_DIMS , 2 )
15871593 """
15881594 The maximum support window or framebuffer viewport.
15891595 This is usually the same as the maximum texture size
@@ -1607,10 +1613,10 @@ def __init__(self, ctx):
16071613 warn ("Error happened while querying of limits. Moving on .." )
16081614
16091615 @overload
1610- def get_int_tuple (self , enum : GLenumLike , length : Literal [2 ]) -> tuple [int , int ]: ...
1616+ def get_int_tuple (self , enum : GLenumLike , length : Literal [2 ]) -> Tuple [int , int ]: ...
16111617
16121618 @overload
1613- def get_int_tuple (self , enum : GLenumLike , length : int ) -> tuple [int , ...]: ...
1619+ def get_int_tuple (self , enum : GLenumLike , length : int ) -> Tuple [int , ...]: ...
16141620
16151621 def get_int_tuple (self , enum : GLenumLike , length : int ):
16161622 """
0 commit comments