class_docstr: Partition filter for path-based partition formats.
  
  Used to explicitly keep or reject files based on a custom filter function that
  takes partition keys and values parsed from the file's path as input.
class_docstr_tok: ["Partition","filter","for","path-based","partition","formats",".","Used","to","explicitly","keep","or","reject","files","based","on","a","custom","filter","function","that","takes","partition","keys","and","values","parsed","from","the","file","'s","path","as","input","."]
docstr: Creates a path-based partition filter using a flattened argument list.
  
  Args:
      filter_fn: Callback used to filter partitions. Takes a dictionary mapping
          partition keys to values as input. Unpartitioned files are denoted with
          an empty input dictionary. Returns `True` to read a file for that
          partition or `False` to skip it. Partition keys and values are always
          strings read from the filesystem path. For example, this removes all
          unpartitioned files:
  
          .. code:: python
  
              lambda d: True if d else False
  
          This raises an assertion error for any unpartitioned file found:
  
          .. code:: python
  
              def do_assert(val, msg):
                  assert val, msg
  
              lambda d: do_assert(d, "Expected all files to be partitioned!")
  
          And this only reads files from January, 2022 partitions:
  
          .. code:: python
  
              lambda d: d["month"] == "January" and d["year"] == "2022"
  
      style: The partition style - may be either HIVE or DIRECTORY.
      base_dir: "/"-delimited base directory to start searching for partitions
          (exclusive). File paths outside of this directory will be considered
          unpartitioned. Specify `None` or an empty string to search for
          partitions in all file path directories.
      field_names: The partition key names. Required for DIRECTORY partitioning.
          Optional for HIVE partitioning. When non-empty, the order and length of
          partition key field names must match the order and length of partition
          directories discovered. Partition key field names are not required to
          exist in the dataset schema.
      filesystem: Filesystem that will be used for partition path file I/O.
  
  Returns:
      The new path-based partition filter.
docstr_tok: ["Creates","a","path-based","partition","filter","using","a","flattened","argument","list",".","Args",":","filter_fn",":","Callback","used","to","filter","partitions",".","Takes","a","dictionary","mapping","partition","keys","to","values","as","input",".","Unpartitioned","files","are","denoted","with","an","empty","input","dictionary",".","Returns","`","True","`","to","read","a","file","for","that","partition","or","`","False","`","to","skip","it",".","Partition","keys","and","values","are","always","strings","read","from","the","filesystem","path",".","For","example",",","this","removes","all","unpartitioned","files",":","..","code",":",":","python","lambda","d",":","True","if","d","else","False","This","raises","an","assertion","error","for","any","unpartitioned","file","found",":","..","code",":",":","python","def","do_assert","(","val",",","msg",")",":","assert","val",",","msg","lambda","d",":","do_assert","(","d",",","``","Expected","all","files","to","be","partitioned","!","''",")","And","this","only","reads","files","from","January",",","2022","partitions",":","..","code",":",":","python","lambda","d",":","d","[","``","month","''","]","==","``","January","''","and","d","[","``","year","''","]","==","``","2022","''","style",":","The","partition","style","-","may","be","either","HIVE","or","DIRECTORY",".","base_dir",":","``","\/","''","-delimited","base","directory","to","start","searching","for","partitions","(","exclusive",")",".","File","paths","outside","of","this","directory","will","be","considered","unpartitioned",".","Specify","`","None","`","or","an","empty","string","to","search","for","partitions","in","all","file","path","directories",".","field_names",":","The","partition","key","names",".","Required","for","DIRECTORY","partitioning",".","Optional","for","HIVE","partitioning",".","When","non-empty",",","the","order","and","length","of","partition","key","field","names","must","match","the","order","and","length","of","partition","directories","discovered",".","Partition","key","field","names","are","not","required","to","exist","in","the","dataset","schema",".","filesystem",":","Filesystem","that","will","be","used","for","partition","path","file","I\/O",".","Returns",":","The","new","path-based","partition","filter","."]
code: def of(
      filter_fn: Callable[[Dict[str, str]], bool],
      style: PartitionStyle = PartitionStyle.HIVE,
      base_dir: Optional[str] = None,
      field_names: Optional[List[str]] = None,
      filesystem: Optional["pyarrow.fs.FileSystem"] = None,
  ) -> "PathPartitionFilter":
      """Creates a path-based partition filter using a flattened argument list.
  
      Args:
          filter_fn: Callback used to filter partitions. Takes a dictionary mapping
              partition keys to values as input. Unpartitioned files are denoted with
              an empty input dictionary. Returns `True` to read a file for that
              partition or `False` to skip it. Partition keys and values are always
              strings read from the filesystem path. For example, this removes all
              unpartitioned files:
  
              .. code:: python
  
                  lambda d: True if d else False
  
              This raises an assertion error for any unpartitioned file found:
  
              .. code:: python
  
                  def do_assert(val, msg):
                      assert val, msg
  
                  lambda d: do_assert(d, "Expected all files to be partitioned!")
  
              And this only reads files from January, 2022 partitions:
  
              .. code:: python
  
                  lambda d: d["month"] == "January" and d["year"] == "2022"
  
          style: The partition style - may be either HIVE or DIRECTORY.
          base_dir: "/"-delimited base directory to start searching for partitions
              (exclusive). File paths outside of this directory will be considered
              unpartitioned. Specify `None` or an empty string to search for
              partitions in all file path directories.
          field_names: The partition key names. Required for DIRECTORY partitioning.
              Optional for HIVE partitioning. When non-empty, the order and length of
              partition key field names must match the order and length of partition
              directories discovered. Partition key field names are not required to
              exist in the dataset schema.
          filesystem: Filesystem that will be used for partition path file I/O.
  
      Returns:
          The new path-based partition filter.
      """
      scheme = Partitioning(style, base_dir, field_names, filesystem)
      path_partition_parser = PathPartitionParser(scheme)
      return PathPartitionFilter(path_partition_parser, filter_fn)
  
imports: import posixpath
  from dataclasses import dataclass
  from enum import Enum
  from typing import TYPE_CHECKING, Callable, Dict, List, Optional
  from ray.util.annotations import DeveloperAPI, PublicAPI
label_desc: Use image node_id 1 for calling the PathPartitionFilter obj's underlying member method code with example usage: obj.of(filter_fn, style, base_dir, field_names, filesystem) and returns: PathPartitionFilter