You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2021/08/30 02:35:00 UTC

[jira] [Commented] (AVRO-3162) Update Python CLI Argument Handling

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

ASF subversion and git services commented on AVRO-3162:
-------------------------------------------------------

Commit e8c61ba4f0051a76d4bf2e2d4391ec92a6e90f4f in avro's branch refs/heads/master from Michael A. Smith
[ https://gitbox.apache.org/repos/asf?p=avro.git;h=e8c61ba ]

AVRO-3162: Use Argparse to Manage Arguments (#1270)

Improve the python cli, consisting mainly of scripts/avro and avro.tool, by implementing argparse, and a `__main__.py` module.

- argparse handles arity and type exceptions more fluently at invocation time than can easily be done with sys.argv.
- argparse handles sub-commands natively, especially in python 3.7 and up.
- `__main__.py` dispatch (along with setuptools `entry_points.console_scripts` at install time) allows the cli to be invoked with both `python -m avro` and just `avro` without having an out-of-band `scripts/avro` directory.
- Just in case someone is still using scripts/avro, I've kept that around with a deprecation warning.
- I added type hints as best I can; however, the avro script has an `eval` call that we might want to get rid of, some day.

> Update Python CLI Argument Handling
> -----------------------------------
>
>                 Key: AVRO-3162
>                 URL: https://issues.apache.org/jira/browse/AVRO-3162
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: python
>    Affects Versions: 1.10.2
>            Reporter: Michael A. Smith
>            Assignee: Michael A. Smith
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Avro python has several modules that use commandline arguments via sys.argv or the outdated optparse library. I propose to replace all of that using the up-to-date argparse library.
> Also, I would like to move scripts/avro into {{avro/__main__.py}}, so that {{{{python -m avro}}}} invokes it directly, and so that all the avro python code is in the same directory tree.



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