Contents¶
Strategies for Contents (layouts).
These strategies are related to the section of Awkward Array User Guide "Direct constructors".
Functions:
contents ¶
contents(
draw: DrawFn,
*,
dtypes: SearchStrategy[dtype] | None = None,
max_size: int = 50,
allow_nan: bool = True,
allow_numpy: bool = True,
allow_empty: bool = True,
allow_string: bool = True,
allow_bytestring: bool = True,
allow_regular: bool = True,
allow_list_offset: bool = True,
allow_list: bool = True,
allow_record: bool = True,
allow_union: bool = True,
allow_indexed_option: bool = True,
allow_byte_masked: bool = True,
allow_bit_masked: bool = True,
allow_unmasked: bool = True,
max_leaf_size: int | None = None,
max_depth: int | None = None,
max_length: int | None = None,
allow_union_root: bool = True,
allow_option_root: bool = True,
) -> Content
Strategy for Awkward Array content layouts.
The current implementation generates the following layouts:
EmptyArrayNumpyArrayRegularArrayListArrayListOffsetArray- Strings
- Bytestrings
RecordArrayIndexedOptionArrayByteMaskedArrayBitMaskedArrayUnmaskedArrayUnionArray
Each type can be excluded separately with the corresponding allow_* argument.
The max_size is the main argument for constraining the array size. It counts most
of the scalar values in the layout, including data elements, offsets, indices, field
names, and parameters. The array size can also be constrained with
max_leaf_size, max_depth, and max_length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtypes
|
SearchStrategy[dtype] | None
|
A strategy for NumPy scalar dtypes used in
|
None
|
max_size
|
int
|
Upper bound on the number of scalars in the generated content. Counts data elements, offsets, indices, field names, and parameters. |
50
|
allow_nan
|
bool
|
No |
True
|
allow_numpy
|
bool
|
No |
True
|
allow_empty
|
bool
|
No |
True
|
allow_string
|
bool
|
No string content is generated if |
True
|
allow_bytestring
|
bool
|
No bytestring content is generated if |
True
|
allow_regular
|
bool
|
No |
True
|
allow_list_offset
|
bool
|
No |
True
|
allow_list
|
bool
|
No |
True
|
allow_record
|
bool
|
No |
True
|
allow_union
|
bool
|
No |
True
|
allow_indexed_option
|
bool
|
No |
True
|
allow_byte_masked
|
bool
|
No |
True
|
allow_bit_masked
|
bool
|
No |
True
|
allow_unmasked
|
bool
|
No |
True
|
max_leaf_size
|
int | None
|
Maximum total number of leaf elements in the generated content. Each numerical value, including complex and datetime, counts as one. Each string and bytestring (not character or byte) counts as one. |
None
|
max_depth
|
int | None
|
Maximum nesting depth. Each |
None
|
max_length
|
int | None
|
Maximum |
None
|
allow_union_root
|
bool
|
The outermost content node cannot be a |
True
|
allow_option_root
|
bool
|
The outermost content node cannot be an option type if |
True
|
Returns:
| Type | Description |
|---|---|
Content
|
|
Examples:
content_lists ¶
content_lists(
draw: DrawFn,
st_content: StContent = contents,
*,
max_size: int = 50,
max_leaf_size: int | None = None,
min_len: int = 0,
max_len: int | None = None,
all_option_or_none: bool = False,
st_option: StOption | None = None,
) -> list[Content]
Strategy for lists of contents within a size budget.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
st_content
|
StContent
|
A callable that accepts |
contents
|
max_size
|
int
|
Upper bound on total |
50
|
max_leaf_size
|
int | None
|
Maximum total number of leaf elements across all contents in the list. |
None
|
min_len
|
int
|
Minimum number of contents in the list. |
0
|
max_len
|
int | None
|
Maximum number of contents in the list. Unbounded if |
None
|
all_option_or_none
|
bool
|
If |
False
|
st_option
|
StOption | None
|
A callable conforming to |
None
|
Returns:
| Type | Description |
|---|---|
list[Content]
|
|
leaf_contents ¶
leaf_contents(
*,
dtypes: SearchStrategy[dtype] | None = None,
allow_nan: bool = True,
min_size: int = 0,
max_size: int = 10,
allow_numpy: bool = True,
allow_empty: bool = True,
allow_string: bool = True,
allow_bytestring: bool = True,
) -> st.SearchStrategy[
NumpyArray | EmptyArray | ListOffsetArray
]
Strategy for leaf content types.
This strategy generates EmptyArray, bytestring content,
string content, and NumpyArray and shrinks in that order
towards EmptyArray.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtypes
|
SearchStrategy[dtype] | None
|
A strategy for NumPy scalar dtypes used in
|
None
|
allow_nan
|
bool
|
No |
True
|
min_size
|
int
|
Minimum number of elements. |
0
|
max_size
|
int
|
Maximum number of elements. |
10
|
allow_numpy
|
bool
|
No |
True
|
allow_empty
|
bool
|
No |
True
|
allow_string
|
bool
|
No string content is generated if |
True
|
allow_bytestring
|
bool
|
No bytestring content is generated if |
True
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If no content types are possible with the given options. |
Returns:
| Type | Description |
|---|---|
NumpyArray | EmptyArray | ListOffsetArray
|
|
empty_array_contents ¶
numpy_array_contents ¶
numpy_array_contents(
*,
dtypes: SearchStrategy[dtype] | None = None,
allow_nan: bool = True,
min_size: int = 0,
max_size: int = 10,
) -> st.SearchStrategy[NumpyArray]
Strategy for ak.contents.NumpyArray instances.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtypes
|
SearchStrategy[dtype] | None
|
A strategy for NumPy scalar dtypes. If |
None
|
allow_nan
|
bool
|
No |
True
|
min_size
|
int
|
Minimum number of elements. |
0
|
max_size
|
int
|
Maximum number of elements. |
10
|
Returns:
| Type | Description |
|---|---|
NumpyArray
|
|
Examples:
regular_array_contents ¶
regular_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
*,
max_size: int | None = None,
max_zeros_length: int | None = None,
max_length: int | None = None,
) -> RegularArray
Strategy for ak.contents.RegularArray instances.
This strategy generates a RegularArray with the given
content. It shrinks toward a shorter length (larger size) with no unreachable
data.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
content or strategy for the content. If |
None
|
max_size
|
int | None
|
Upper bound on the size parameter of the
|
None
|
max_zeros_length
|
int | None
|
Upper bound on the |
None
|
max_length
|
int | None
|
Upper bound on the length of the |
None
|
Returns:
| Type | Description |
|---|---|
RegularArray
|
|
Examples:
Limit each element to at most 3 items:
Limit the number of elements when size is zero:
>>> c = regular_array_contents(max_size=0, max_zeros_length=2).example()
>>> c.size == 0 and len(c) <= 2
True
Limit the number of groups:
list_array_contents ¶
list_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
*,
max_length: int | None = None,
) -> ListArray
Strategy for ak.contents.ListArray instances.
This strategy generates a ListArray with the given
content. It produces all valid ListArray layouts including
unreachable data, gaps, overlapping sublists, and out-of-order starts. It shrinks
toward contiguous, monotonic starts with no unreachable data.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
None
|
|
max_length
|
int | None
|
Upper bound on the number of lists, i.e., |
None
|
Returns:
| Type | Description |
|---|---|
ListArray
|
|
Examples:
Limit the number of lists:
list_offset_array_contents ¶
list_offset_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
*,
max_length: int | None = None,
) -> ListOffsetArray
Strategy for ak.contents.ListOffsetArray instances.
This strategy generates a ListOffsetArray with the
given content. It produces layouts with and without unreachable data. It shrinks
toward no unreachable data (offsets[0] == 0 and offsets[-1] == len(content)).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
None
|
|
max_length
|
int | None
|
Upper bound on the number of lists, i.e., |
None
|
Returns:
| Type | Description |
|---|---|
ListOffsetArray
|
|
Examples:
Limit the number of lists:
string_contents ¶
string_contents(
draw: DrawFn,
*,
alphabet: SearchStrategy[str] | None = None,
min_size: int = 0,
max_size: int = 10,
) -> ListOffsetArray
Strategy for string ak.contents.ListOffsetArray instances.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
alphabet
|
SearchStrategy[str] | None
|
A strategy for characters used in the generated strings. If |
None
|
min_size
|
int
|
Minimum number of strings. |
0
|
max_size
|
int
|
Maximum number of strings. |
10
|
Returns:
| Type | Description |
|---|---|
ListOffsetArray
|
|
Examples:
bytestring_contents ¶
Strategy for bytestring ak.contents.ListOffsetArray instances.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
min_size
|
int
|
Minimum number of bytestrings. |
0
|
max_size
|
int
|
Maximum number of bytestrings. |
10
|
Returns:
| Type | Description |
|---|---|
ListOffsetArray
|
|
Examples:
record_array_contents ¶
record_array_contents(
draw: DrawFn,
contents: list[Content]
| SearchStrategy[list[Content]]
| None = None,
*,
max_fields: int = 5,
allow_tuple: bool = True,
max_length: int | None = None,
) -> RecordArray
Strategy for ak.contents.RecordArray instances.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
contents
|
list[Content] | SearchStrategy[list[Content]] | None
|
Child contents. Can be a strategy for a list of |
None
|
max_fields
|
int
|
Maximum number of fields when |
5
|
allow_tuple
|
bool
|
Allow tuple records (no field names) if |
True
|
max_length
|
int | None
|
Upper bound on the record length, i.e., |
None
|
Returns:
| Type | Description |
|---|---|
RecordArray
|
|
Examples:
Limit the number of fields:
Limit the record length:
option_contents ¶
option_contents(
content: SearchStrategy[Content]
| Content
| None = None,
*,
max_size: int | None = None,
allow_indexed_option: bool = True,
allow_byte_masked: bool = True,
allow_bit_masked: bool = True,
allow_unmasked: bool = True,
) -> st.SearchStrategy[Content]
Strategy for option-type content, selected by st.one_of.
Picks among IndexedOptionArray,
ByteMaskedArray,
BitMaskedArray, and
UnmaskedArray.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
Forwarded to each per-type strategy. |
None
|
max_size
|
int | None
|
Forwarded to |
None
|
allow_indexed_option
|
bool
|
No |
True
|
allow_byte_masked
|
bool
|
No |
True
|
allow_bit_masked
|
bool
|
No |
True
|
allow_unmasked
|
bool
|
No |
True
|
Returns:
| Type | Description |
|---|---|
Content
|
|
Examples:
indexed_option_array_contents ¶
indexed_option_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
*,
max_size: int | None = None,
) -> IndexedOptionArray
Strategy for ak.contents.IndexedOptionArray instances.
The index length is drawn independently of the content length. Valid entries can
reference any content position (duplicates allowed). Missing entries have index[i]
= -1.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
None
|
|
max_size
|
int | None
|
Upper bound on the index length, i.e., |
None
|
Returns:
| Type | Description |
|---|---|
IndexedOptionArray
|
|
Examples:
byte_masked_array_contents ¶
byte_masked_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
) -> ByteMaskedArray
Strategy for ak.contents.ByteMaskedArray instances.
The mask length always equals len(content).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
None
|
Returns:
| Type | Description |
|---|---|
ByteMaskedArray
|
|
Examples:
bit_masked_array_contents ¶
bit_masked_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
) -> BitMaskedArray
Strategy for ak.contents.BitMaskedArray instances.
The logical length always equals len(content). The mask is
bit-packed into uint8 bytes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
None
|
Returns:
| Type | Description |
|---|---|
BitMaskedArray
|
|
Examples:
unmasked_array_contents ¶
unmasked_array_contents(
draw: DrawFn,
content: SearchStrategy[Content]
| Content
| None = None,
) -> UnmaskedArray
Strategy for ak.contents.UnmaskedArray instances.
UnmaskedArray is an option type with no actual nulls.
It simply wraps content, adding option-type semantics without a mask buffer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
SearchStrategy[Content] | Content | None
|
None
|
Returns:
| Type | Description |
|---|---|
UnmaskedArray
|
|
Examples:
union_array_contents ¶
union_array_contents(
draw: DrawFn,
contents: list[Content]
| SearchStrategy[list[Content]]
| None = None,
*,
max_contents: int = 4,
max_length: int | None = None,
) -> UnionArray
Strategy for ak.contents.UnionArray instances.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
contents
|
list[Content] | SearchStrategy[list[Content]] | None
|
Child contents. Can be a strategy for a list of |
None
|
max_contents
|
int
|
Maximum number of child contents when |
4
|
max_length
|
int | None
|
Upper bound on the union length, i.e., |
None
|
Returns:
| Type | Description |
|---|---|
UnionArray
|
|
Examples:
Limit the union length: