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

Chris Nix commented on FLINK-18488:
-----------------------------------

One option to fix this might be to add keyword params to the Python constructor 
and use the Java CsvTableSource.Builder to add those kwargs that are defined.  
For example:
{code:python}
def __init__(
    self,
    source_path,
    field_names,
    field_types,
    field_delim=None,
    line_delim=None,
    quote_character=None,
    ignore_first_line=None,
    ignore_comments=None,
    lenient=None,
):
    gateway = get_gateway()
    builder = gateway.jvm.CsvTableSource.builder()
    builder.path(source_path)
    for (field_name, field_type) in zip(field_names, field_types):
        builder.field(field_name, _to_java_type(field_type))
    if field_delim is not None:            
        builder.fieldDelimiter(field_delim)
    if line_delim is not None:            
        builder.lineDelimiter(line_delim)
    if quote_character is not None:
        builder.quoteCharacter(quote_character)
    if ignore_first_line:
        builder.ignoreFirstLine()
    if ignore_comments is not None:
        builder.commentPrefix(ignore_comments)
    if lenient:
        builder.ignoreParseErrors()

    super(CsvTableSource, self).__init__(builder.build())

{code}
This way it'd maintain all the defaults defined in Java side, without 
redefining them on the Python side.  As is, it would omit the Java 
{{selectedFields}} param, for which there isn't a corresponding builder 
function.

> Python API CsvTableSource missing optional constructor params
> -------------------------------------------------------------
>
>                 Key: FLINK-18488
>                 URL: https://issues.apache.org/jira/browse/FLINK-18488
>             Project: Flink
>          Issue Type: Improvement
>          Components: API / Python
>            Reporter: Chris Nix
>            Priority: Minor
>
> CsvTableSource exists in the Python API, however the Python constructor is 
> missing the optional params available in the overloaded constructors from the 
> Java/Scala APIs.  Here's links to the docs:
>  *   
> [https://ci.apache.org/projects/flink/flink-docs-master/api/python/pyflink.table.html#pyflink.table.CsvTableSource]
>  *   
> [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/table/sources/CsvTableSource.html]
>  



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

Reply via email to