1919import re
2020import sys
2121import warnings
22+ from typing import Union , TypeVar , List , Tuple , Dict
2223from urllib .parse import (
2324 parse_qs ,
2425 ParseResult ,
@@ -217,7 +218,7 @@ def __call__(self, var, cast=None, default=NOTSET, parse_default=False):
217218 def __contains__ (self , var ):
218219 return var in self .ENVIRON
219220
220- def str (self , var , default = NOTSET , multiline = False ):
221+ def str (self , var , default : Union [ str , NoValue ] = NOTSET , multiline = False ) -> str :
221222 """
222223 :rtype: str
223224 """
@@ -226,7 +227,7 @@ def str(self, var, default=NOTSET, multiline=False):
226227 return re .sub (r'(\\r)?\\n' , r'\n' , value )
227228 return value
228229
229- def bytes (self , var , default = NOTSET , encoding = 'utf8' ):
230+ def bytes (self , var , default : Union [ bytes , NoValue ] = NOTSET , encoding = 'utf8' ) -> bytes :
230231 """
231232 :rtype: bytes
232233 """
@@ -235,19 +236,19 @@ def bytes(self, var, default=NOTSET, encoding='utf8'):
235236 return value .encode (encoding )
236237 return value
237238
238- def bool (self , var , default = NOTSET ):
239+ def bool (self , var , default : Union [ bool , NoValue ] = NOTSET ) -> bool :
239240 """
240241 :rtype: bool
241242 """
242243 return self .get_value (var , cast = bool , default = default )
243244
244- def int (self , var , default = NOTSET ):
245+ def int (self , var , default : Union [ int , NoValue ] = NOTSET ) -> int :
245246 """
246247 :rtype: int
247248 """
248249 return self .get_value (var , cast = int , default = default )
249250
250- def float (self , var , default = NOTSET ):
251+ def float (self , var , default : Union [ float , NoValue ] = NOTSET ) -> float :
251252 """
252253 :rtype: float
253254 """
@@ -259,7 +260,7 @@ def json(self, var, default=NOTSET):
259260 """
260261 return self .get_value (var , cast = json .loads , default = default )
261262
262- def list (self , var , cast = None , default = NOTSET ):
263+ def list (self , var , cast = None , default = NOTSET ) -> List :
263264 """
264265 :rtype: list
265266 """
@@ -269,7 +270,7 @@ def list(self, var, cast=None, default=NOTSET):
269270 default = default
270271 )
271272
272- def tuple (self , var , cast = None , default = NOTSET ):
273+ def tuple (self , var , cast = None , default = NOTSET ) -> Tuple :
273274 """
274275 :rtype: tuple
275276 """
@@ -279,13 +280,13 @@ def tuple(self, var, cast=None, default=NOTSET):
279280 default = default
280281 )
281282
282- def dict (self , var , cast = dict , default = NOTSET ):
283+ def dict (self , var , cast = dict , default = NOTSET ) -> Dict :
283284 """
284285 :rtype: dict
285286 """
286287 return self .get_value (var , cast = cast , default = default )
287288
288- def url (self , var , default = NOTSET ):
289+ def url (self , var , default = NOTSET ) -> ParseResult :
289290 """
290291 :rtype: urllib.parse.ParseResult
291292 """
@@ -296,7 +297,7 @@ def url(self, var, default=NOTSET):
296297 parse_default = True
297298 )
298299
299- def db_url (self , var = DEFAULT_DATABASE_ENV , default = NOTSET , engine = None ):
300+ def db_url (self , var = DEFAULT_DATABASE_ENV , default = NOTSET , engine = None ) -> Dict :
300301 """Returns a config dictionary, defaulting to DATABASE_URL.
301302
302303 The db method is an alias for db_url.
@@ -310,7 +311,7 @@ def db_url(self, var=DEFAULT_DATABASE_ENV, default=NOTSET, engine=None):
310311
311312 db = db_url
312313
313- def cache_url (self , var = DEFAULT_CACHE_ENV , default = NOTSET , backend = None ):
314+ def cache_url (self , var = DEFAULT_CACHE_ENV , default = NOTSET , backend = None ) -> Dict :
314315 """Returns a config dictionary, defaulting to CACHE_URL.
315316
316317 The cache method is an alias for cache_url.
@@ -324,7 +325,7 @@ def cache_url(self, var=DEFAULT_CACHE_ENV, default=NOTSET, backend=None):
324325
325326 cache = cache_url
326327
327- def email_url (self , var = DEFAULT_EMAIL_ENV , default = NOTSET , backend = None ):
328+ def email_url (self , var = DEFAULT_EMAIL_ENV , default = NOTSET , backend = None ) -> Dict :
328329 """Returns a config dictionary, defaulting to EMAIL_URL.
329330
330331 The email method is an alias for email_url.
@@ -338,7 +339,7 @@ def email_url(self, var=DEFAULT_EMAIL_ENV, default=NOTSET, backend=None):
338339
339340 email = email_url
340341
341- def search_url (self , var = DEFAULT_SEARCH_ENV , default = NOTSET , engine = None ):
342+ def search_url (self , var = DEFAULT_SEARCH_ENV , default : Union [ Dict , NoValue ] = NOTSET , engine = None ) -> Dict :
342343 """Returns a config dictionary, defaulting to SEARCH_URL.
343344
344345 :rtype: dict
@@ -348,8 +349,8 @@ def search_url(self, var=DEFAULT_SEARCH_ENV, default=NOTSET, engine=None):
348349 engine = engine
349350 )
350351
351- def channels_url (self , var = DEFAULT_CHANNELS_ENV , default = NOTSET ,
352- backend = None ):
352+ def channels_url (self , var = DEFAULT_CHANNELS_ENV , default : Union [ Dict , NoValue ] = NOTSET ,
353+ backend = None ) -> Dict :
353354 """Returns a config dictionary, defaulting to CHANNELS_URL.
354355
355356 :rtype: dict
@@ -361,7 +362,7 @@ def channels_url(self, var=DEFAULT_CHANNELS_ENV, default=NOTSET,
361362
362363 channels = channels_url
363364
364- def path (self , var , default = NOTSET , ** kwargs ):
365+ def path (self , var , default : Union [ 'Path' , NoValue ] = NOTSET , ** kwargs ) -> 'Path' :
365366 """
366367 :rtype: Path
367368 """
0 commit comments