1313import os
1414import os .path
1515import posixpath
16+ from collections .abc import Callable
17+ from collections .abc import Iterable
1618from typing import Any
17- from typing import Callable
18- from typing import Dict
19- from typing import Iterable
20- from typing import Optional
21- from typing import Tuple
2219from typing import Union
2320
2421from flask import Blueprint
@@ -45,7 +42,7 @@ def addslash(url: str) -> str:
4542def config_for_set (
4643 uset : 'UploadSet' ,
4744 app : Flask ,
48- defaults : Optional [ Dict [ str , Optional [ str ]]] = None
45+ defaults : dict [ str , str | None ] | None = None
4946) -> 'UploadConfiguration' :
5047 """
5148 This is a helper function for `configure_uploads` that extracts the
@@ -146,20 +143,20 @@ class UploadConfiguration:
146143 def __init__ (
147144 self ,
148145 destination : str ,
149- base_url : Optional [ str ] = None ,
150- allow : Union [ Tuple [ ()], Tuple [str , ...] ] = (),
151- deny : Union [ Tuple [ ()], Tuple [str , ...] ] = ()
146+ base_url : str | None = None ,
147+ allow : tuple [ ()] | tuple [str , ...] = (),
148+ deny : tuple [ ()] | tuple [str , ...] = ()
152149 ) -> None :
153150 self .destination = destination
154151 self .base_url = base_url
155152 self .allow = allow
156153 self .deny = deny
157154
158155 @property
159- def tuple (self ) -> Tuple [
160- str , Optional [ str ] ,
161- Union [ Tuple [ ()], Tuple [str , ...] ],
162- Union [ Tuple [ ()], Tuple [str , ...] ]
156+ def tuple (self ) -> tuple [
157+ str , str | None ,
158+ tuple [ ()] | tuple [str , ...],
159+ tuple [ ()] | tuple [str , ...]
163160 ]:
164161 return (self .destination , self .base_url , self .allow , self .deny )
165162
@@ -193,13 +190,13 @@ def __init__(
193190 self ,
194191 name : str = 'files' ,
195192 extensions : Iterable [str ] = DEFAULTS ,
196- default_dest : Optional [ Callable [[Flask ], str ]] = None
193+ default_dest : Callable [[Flask ], str ] | None = None
197194 ) -> None :
198195 if not name .isalnum ():
199196 raise ValueError ("Name must be alphanumeric (no underscores)" )
200197 self .name = name
201198 self .extensions = extensions
202- self ._config : Optional [ UploadConfiguration ] = None
199+ self ._config : UploadConfiguration | None = None
203200 self .default_dest = default_dest
204201
205202 @property
@@ -238,7 +235,7 @@ def url(self, filename: str) -> str:
238235 else :
239236 return base + filename
240237
241- def path (self , filename : str , folder : Optional [ str ] = None ) -> str :
238+ def path (self , filename : str , folder : str | None = None ) -> str :
242239 """
243240 This returns the absolute path of a file uploaded to this set. It
244241 doesn't actually check whether said file exists.
@@ -288,8 +285,8 @@ def get_basename(self, filename: str) -> str:
288285 def save (
289286 self ,
290287 storage : FileStorage ,
291- folder : Optional [ str ] = None ,
292- name : Optional [ str ] = None
288+ folder : str | None = None ,
289+ name : str | None = None
293290 ) -> str :
294291 """This saves the `storage` into this upload set.
295292
0 commit comments