class_docstr: UploadedFileManager protocol, that should be implemented by the concrete
  uploaded file managers.
  
  It is responsible for:
      - retrieving files by session_id and file_id for st.file_uploader and
          st.camera_input
      - cleaning up uploaded files associated with session on session end
  
  It should be created during Runtime initialization.
  
  Optionally UploadedFileManager could be responsible for issuing URLs which will be
  used by frontend to upload files to.
class_docstr_tok: ["UploadedFileManager","protocol",",","that","should","be","implemented","by","the","concrete","uploaded","file","managers",".","It","is","responsible","for",":","-","retrieving","files","by","session_id","and","file_id","for","st.file_uploader","and","st.camera_input","-","cleaning","up","uploaded","files","associated","with","session","on","session","end","It","should","be","created","during","Runtime","initialization",".","Optionally","UploadedFileManager","could","be","responsible","for","issuing","URLs","which","will","be","used","by","frontend","to","upload","files","to","."]
docstr: Return a list of UploadFileUrlInfo for a given sequence of file_names.
  Optional to implement, issuing of URLs could be done by other service.
  
  Parameters
  ----------
  session_id
      The ID of the session that request URLs.
  file_names
      The sequence of file names for which URLs are requested
  
  Returns
  -------
  List[UploadFileUrlInfo]
      A list of UploadFileUrlInfo instances, each instance contains information
      about uploaded file URLs.
docstr_tok: ["Return","a","list","of","UploadFileUrlInfo","for","a","given","sequence","of","file_names",".","Optional","to","implement",",","issuing","of","URLs","could","be","done","by","other","service",".","Parameters","--","--","--","--","--","session_id","The","ID","of","the","session","that","request","URLs",".","file_names","The","sequence","of","file","names","for","which","URLs","are","requested","Returns","--","--","--","-","List","[","UploadFileUrlInfo","]","A","list","of","UploadFileUrlInfo","instances",",","each","instance","contains","information","about","uploaded","file","URLs","."]
code: def get_upload_urls(
      self, session_id: str, file_names: Sequence[str]
  ) -> List[UploadFileUrlInfo]:
      """Return a list of UploadFileUrlInfo for a given sequence of file_names.
      Optional to implement, issuing of URLs could be done by other service.
  
      Parameters
      ----------
      session_id
          The ID of the session that request URLs.
      file_names
          The sequence of file names for which URLs are requested
  
      Returns
      -------
      List[UploadFileUrlInfo]
          A list of UploadFileUrlInfo instances, each instance contains information
          about uploaded file URLs.
      """
      raise NotImplementedError
  
imports: import io
  from abc import abstractmethod
  from typing import List, NamedTuple, Sequence
  from typing_extensions import Protocol
  from streamlit import util
  from streamlit.proto.Common_pb2 import FileURLs
  from streamlit.runtime.stats import CacheStatsProvider
label_desc: Use image node_id 3 for calling the UploadedFileManager obj's underlying member method code with example usage: obj.get_upload_urls(session_id, file_names) without return types