ralsei.wrappers¶
Module Contents¶
Functions¶
| Create function wrapper that ‘pops’  | |
| Create function wrapper that remaps keyword argument names | |
| Create function wrapper that remaps fields in the output dictionary | |
| Create function wrapper that adds to the keyword arguments | |
| Create function wrapper that adds entries to the output dictionary | |
| Compose multiple decorators together on a  | |
| Compose multiple decorators together on a  | |
| Get fields popped by  | 
Aliases¶
| Row to row mapping function | |
| One row to many rows mapping function | 
API¶
- class ralsei.wrappers.OneToOne¶
- type OneToOne = collections.abc.Callable[..., dict[str, Any]]
- Row to row mapping function - def example(html: str): return {"name": get_name(html)}
 
- class ralsei.wrappers.OneToMany¶
- type OneToMany = collections.abc.Callable[..., collections.abc.Iterator[dict[str, Any]]]
- One row to many rows mapping function - def example(html: str): for name in get_names(html): yield {"name": name}
 
- ralsei.wrappers.into_many(fn: ralsei.wrappers.OneToOne) ralsei.wrappers.OneToMany¶
- ralsei.wrappers.into_one(fn: ralsei.wrappers.OneToMany) ralsei.wrappers.OneToOne¶
- Turn - OneToManymapping function into- OneToOne- Would throw an error if the input function yields more than one row 
- 
ralsei.wrappers.pop_id_fields(*id_fields: str, keep: bool = False) collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- Create function wrapper that ‘pops’ - id_fieldsoff the keyword arguments, calls the inner function without them, then re-inserts them into the output rows- >>> @pop_id_fields("id") ... def foo(a: int): ... yield {"b": a * 2} ... >>> next(foo(id=5, a=3)) {"id": 5, "b": 6}- Additionally, popped field names are saved into the function’s metadata, so that tasks can use them for inferring - IdColumns- Parameters:¶
- *id_fields: str¶
- keyword arguments to pop 
- keep: bool = False¶
- if - True, the popped arguments would still be passed to the inner function- >>> @pop_id_fields("year") ... def foo(year: int, name: str): ... yield {"html": download(year, name) } ... >>> next(foo(year=2015, name="Tokyo")) {"year": 2015, "json": {...}}
 
 
- ralsei.wrappers.rename_input(**mapping: str) collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- Create function wrapper that remaps keyword argument names - @rename_input(a="b") def foo(b: int): yield {...} foo(a=10)
- ralsei.wrappers.rename_output(**mapping: str) collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- Create function wrapper that remaps fields in the output dictionary - >>> @rename_output(a="b") ... def foo(): ... yield {"a": 5} ... >>> next(foo()) {"b": 5}
- ralsei.wrappers.add_to_input(**add_values: Any) collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- Create function wrapper that adds to the keyword arguments - @add_to_input(b="meow") def foo(a: int, b: str): yield {...} foo(a=5)
- ralsei.wrappers.add_to_output(**add_values: Any) collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- Create function wrapper that adds entries to the output dictionary - >>> @add_to_output(b="meow") ... def foo(): ... yield {"a": 10} ... >>> next(foo()) {"a": 10, "b": "meow"}
- ralsei.wrappers.compose(fn: ralsei.wrappers.OneToMany, *decorators: collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]) ralsei.wrappers.OneToMany¶
- Compose multiple decorators together on a - OneToMany- Parameters:¶
- fn: ralsei.wrappers.OneToMany¶
- base function 
- *decorators: collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- decorators to apply 
 
 
- ralsei.wrappers.compose_one(fn: ralsei.wrappers.OneToOne, *decorators: collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]) ralsei.wrappers.OneToOne¶
- Compose multiple decorators together on a - OneToOne- Parameters:¶
- fn: ralsei.wrappers.OneToOne¶
- base function 
- *decorators: collections.abc.Callable[[ralsei.wrappers.OneToMany], ralsei.wrappers.OneToMany]¶
- decorators to apply 
 
 
- ralsei.wrappers.get_popped_fields(fn: collections.abc.Callable) list[str] | None¶
- Get fields popped by - pop_id_fields()from the function metadata