def get(
        self,
        granules: Union[List[DataGranule], List[str]],
        local_path: Optional[Union[Path, str]] = None,
        provider: Optional[str] = None,
        threads: int = 8,
        *,
        pqdm_kwargs: Optional[Mapping[str, Any]] = None,
    ) -> List[str]:
        """Retrieves data granules from a remote storage system.

           * If we run this in the cloud,
             we are moving data from S3 to a cloud compute instance (EC2, AWS Lambda).
           * If we run it outside the us-west-2 region and the data granules are part of a cloud-based
             collection, the method will not get any files.
           * If we request data granules from an on-prem collection,
             the data will be effectively downloaded to a local directory.

        Parameters:
            granules: A list of granules(DataGranule) instances or a list of granule links (HTTP).
            local_path: Local directory to store the remote data granules.  If not
                supplied, defaults to a subdirectory of the current working directory
                of the form `data/YYYY-MM-DD-UUID`, where `YYYY-MM-DD` is the year,
                month, and day of the current date, and `UUID` is the last 6 digits
                of a UUID4 value.
            provider: a valid cloud provider, each DAAC has a provider code for their cloud distributions
            threads: Parallel number of threads to use to download the files;
                adjust as necessary, default = 8.
            pqdm_kwargs: Additional keyword arguments to pass to pqdm, a parallel processing library.
                See pqdm documentation for available options. Default is to use immediate exception behavior
                and the number of jobs specified by the `threads` parameter.

        Returns:
            List of downloaded files
        """
        if not granules:
            raise ValueError("List of URLs or DataGranule instances expected")

        if local_path is None:
            today = datetime.datetime.now().strftime("%Y-%m-%d")
            uuid = uuid4().hex[:6]
            local_path = Path.cwd() / "data" / f"{today}-{uuid}"

        pqdm_kwargs = {
            "n_jobs": threads,
            "disable": True,
            **(pqdm_kwargs or {}),
        }

        return self._get(granules, Path(local_path), provider, pqdm_kwargs=pqdm_kwargs)
Retrieves data granules from a remote storage system.

           * If we run this in the cloud,
             we are moving data from S3 to a cloud compute instance (EC2, AWS Lambda).
           * If we run it outside the us-west-2 region and the data granules are part of a cloud-based
             collection, the method will not get any files.
           * If we request data granules from an on-prem collection,
             the data will be effectively downloaded to a local directory.

        Parameters:
            granules: A list of granules(DataGranule) instances or a list of granule links (HTTP).
            local_path: Local directory to store the remote data granules.  If not
                supplied, defaults to a subdirectory of the current working directory
                of the form `data/YYYY-MM-DD-UUID`, where `YYYY-MM-DD` is the year,
                month, and day of the current date, and `UUID` is the last 6 digits
                of a UUID4 value.
            provider: a valid cloud provider, each DAAC has a provider code for their cloud distributions
            threads: Parallel number of threads to use to download the files;
                adjust as necessary, default = 8.
            pqdm_kwargs: Additional keyword arguments to pass to pqdm, a parallel processing library.
                See pqdm documentation for available options. Default is to use immediate exception behavior
                and the number of jobs specified by the `threads` parameter.

        Returns:
            List of downloaded files
        
earthaccess/store.py