You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Ben Kietzman (Jira)" <ji...@apache.org> on 2020/11/09 15:17:00 UTC

[jira] [Commented] (ARROW-10505) [Python] Improve validation of cython arguments

    [ https://issues.apache.org/jira/browse/ARROW-10505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17228658#comment-17228658 ] 

Ben Kietzman commented on ARROW-10505:
--------------------------------------

[~jorisvandenbossche] [~kszucs]

> [Python] Improve validation of cython arguments
> -----------------------------------------------
>
>                 Key: ARROW-10505
>                 URL: https://issues.apache.org/jira/browse/ARROW-10505
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: Python
>    Affects Versions: 2.0.0
>            Reporter: Ben Kietzman
>            Priority: Major
>
> Typing parameters in cython functions (for example
> {code:java}
> def validate(self, Schema schema not None):
> {code}
> )
>  is intuitive but provides uninformative error messages when the type doesn't match expectations. See {{FileSystemDataset.from_paths}} (ARROW-8290) for an instance of manual validation to make a high traffic function more friendly.
> {code:java}
>         for arg, class_, name in [
>             (schema, Schema, 'schema'),
>             (format, FileFormat, 'format'),
>             (filesystem, FileSystem, 'filesystem'),
>             (root_partition, Expression, 'root_partition')
>         ]:
>             if not isinstance(arg, class_):
>                 raise TypeError(
>                     "Argument '{0}' has incorrect type (expected {1}, "
>                     "got {2})".format(name, class_.__name__, type(arg))
>                 )
> {code}
> It seems we could do better by applying a validating decorator:
> {code:python}
> @param_types(schema=Schema, format=Format, filesystem=FileSystem,
>              root_partition=(None,Expression))
> def from_paths(paths, schema, format,
>                filesystem, partitions, root_partition):
> {code}
> This seems compact enough to add to any or all {{def functions}}, improving error messages and hiding validation boilerplate.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)