Utilities for managing / converting field paths to / from strings.
Classes
FieldPath
FieldPath(*parts)Field Path object for client use.
A field path is a sequence of element keys, separated by periods. Each element key can be either a simple identifier, or a full unicode string.
In the string representation of a field path, non-identifier elements must be quoted using backticks, with internal backticks and backslashes escaped with a backslash.
Modules Functions
get_field_path
get_field_path(field_names: typing.Iterable[str])Create a field path from a list of nested field names.
A field path is a .-delimited concatenation of the field
names. It is used to represent a nested field. For example,
in the data
data = {
   'aa': {
       'bb': {
           'cc': 10,
       },
   },
}
the field path 'aa.bb.cc' represents that data stored in
data['aa']['bb']['cc'].
| Parameter | |
|---|---|
| Name | Description | 
field_names | 
        
          typing.Iterable[str]
          The list of field names.  | 
      
| Returns | |
|---|---|
| Type | Description | 
str | 
        The .-delimited field path. | 
      
get_nested_value
get_nested_value(field_path: str, data: dict)Get a (potentially nested) value from a dictionary.
If the data is nested, for example:
>>> data
{
    'top1': {
        'middle2': {
            'bottom3': 20,
            'bottom4': 22,
        },
        'middle5': True,
    },
    'top6': b' foo',
}
a field path can be used to access the nested data. For example:
>>> get_nested_value('top1', data)
{
    'middle2': {
        'bottom3': 20,
        'bottom4': 22,
    },
    'middle5': True,
}
>>> get_nested_value('top1.middle2', data)
{
    'bottom3': 20,
    'bottom4': 22,
}
>>> get_nested_value('top1.middle2.bottom3', data)
20
See xref_field_path for more information on field paths.
| Parameters | |
|---|---|
| Name | Description | 
field_path | 
        
          str
          A field path (  | 
      
data | 
        
          Dict[str, Any]
          The (possibly nested) data.  | 
      
| Exceptions | |
|---|---|
| Type | Description | 
KeyError | 
        If the field_path does not match nested data. | 
      
| Returns | |
|---|---|
| Type | Description | 
Any | 
        (A copy of) the value stored for the field_path. | 
      
parse_field_path
parse_field_path(api_repr: str)Parse a field path from into a list of nested field names.
See field_path for more on field paths.
| Parameter | |
|---|---|
| Name | Description | 
api_repr | 
        
          str
          The unique Firestore api representation which consists of either simple or UTF-8 field names. It cannot exceed 1500 bytes, and cannot be empty. Simple field names match   | 
      
| Returns | |
|---|---|
| Type | Description | 
List[str, ...] | 
        The list of field names in the field path. | 
render_field_path
render_field_path(field_names: typing.Iterable[str])Create a field path from a list of nested field names.
A field path is a .-delimited concatenation of the field
names. It is used to represent a nested field. For example,
in the data
data = {
   'aa': {
       'bb': {
           'cc': 10,
       },
   },
}
the field path 'aa.bb.cc' represents that data stored in
data['aa']['bb']['cc'].
| Parameter | |
|---|---|
| Name | Description | 
field_names | 
        
          typing.Iterable[str]
          The list of field names.  | 
      
| Returns | |
|---|---|
| Type | Description | 
str | 
        The .-delimited field path. | 
      
split_field_path
split_field_path(path: str)Split a field path into valid elements (without dots).
| Parameter | |
|---|---|
| Name | Description | 
path | 
        
          str
          field path to be lexed.  | 
      
| Exceptions | |
|---|---|
| Type | Description | 
ValueError | 
        if the path does not match the elements-interspersed- with-dots pattern. | 
| Returns | |
|---|---|
| Type | Description | 
List(str) | 
        tokens |