class_docstr: A file-extension-based path filter that filters files that don't end
  with the provided extension(s).
  
  Attributes:
      file_extensions: File extension(s) of files to be included in reading.
      allow_if_no_extension: If this is True, files without any extensions
          will be included in reading.
class_docstr_tok: ["A","file-extension-based","path","filter","that","filters","files","that","do","n't","end","with","the","provided","extension","(","s",")",".","Attributes",":","file_extensions",":","File","extension","(","s",")","of","files","to","be","included","in","reading",".","allow_if_no_extension",":","If","this","is","True",",","files","without","any","extensions","will","be","included","in","reading","."]
code: def __str__(self):
      return (
          f"{type(self).__name__}(extensions={self.extensions}, "
          f"allow_if_no_extensions={self.allow_if_no_extension})"
      )
  
imports: import io
  import pathlib
  import posixpath
  import warnings
  from typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, Iterator, List, Literal, Optional, Union
  import numpy
  import ray
  from ray._private.utils import _add_creatable_buckets_param_if_s3_uri
  from ray.data._internal.dataset_logger import DatasetLogger
  from ray.data._internal.execution.interfaces import TaskContext
  from ray.data._internal.util import _check_pyarrow_version, _is_local_scheme, call_with_retry, make_async_gen
  from ray.data.block import Block, BlockAccessor
  from ray.data.context import DataContext
  from ray.data.datasource.block_path_provider import BlockWritePathProvider
  from ray.data.datasource.datasource import Datasource, ReadTask, WriteResult
  from ray.data.datasource.file_meta_provider import BaseFileMetadataProvider, DefaultFileMetadataProvider
  from ray.data.datasource.filename_provider import FilenameProvider, _DefaultFilenameProvider
  from ray.data.datasource.partitioning import Partitioning, PathPartitionFilter, PathPartitionParser
  from ray.data.datasource.path_util import _has_file_extension, _resolve_paths_and_filesystem
  from ray.util.annotations import Deprecated, DeveloperAPI, PublicAPI
label_desc: Use image node_id 4 for calling the FileExtensionFilter obj's underlying member method code with example usage: obj.__str__() and returns: type, str, self, str, self, str