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

Maarten Breddels commented on ARROW-13546:
------------------------------------------

My current workaround, to make it backward compatible, if anyone hits the same 
issue
{code:java}
def _make_argument_optional(f, **defaults):
    # workaround for https://issues.apache.org/jira/browse/ARROW-13546
    # makes f act as if arguments have default values (or ignore when the 
argument does not exist)
    import inspect
    import functools
    sig = inspect.signature(f)
    params = sig.parameters
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        kwargs = kwargs.copy()
        for name, value in defaults.items():
            if name in params and name not in kwargs:
                kwargs[name] = value
        return f(*args, **kwargs)
    return wrapper
_make_argument_optional(fs.open_output_stream, metadata=None)(path)
{code}

> [Python] Breaking API change in FSSpecHandler, requires metadata argument
> -------------------------------------------------------------------------
>
>                 Key: ARROW-13546
>                 URL: https://issues.apache.org/jira/browse/ARROW-13546
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Python
>            Reporter: Maarten Breddels
>            Priority: Major
>
> [https://github.com/apache/arrow/pull/10295] introduced the required metadata 
> argument to FSSpecHandler.open_output_stream 
> Noticed this in our CI/testsuite at 
> [https://github.com/vaexio/vaex/pull/1490] 
> {code:java}
>     def create():
> 261>       return fs.open_output_stream(path)
> 262E       TypeError: open_output_stream() missing 1 required positional 
> argument: 'metadata'
> {code}



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

Reply via email to