omni-us / jsonargparse

Implement minimal boilerplate CLIs derived from type hints and parse from command line, config files and environment variables
https://jsonargparse.readthedocs.io
MIT License
314 stars 42 forks source link

Feature path std io #475

Closed mquillot closed 5 months ago

mquillot commented 5 months ago

What does this PR do?

Add support for "-" as value for Path class initialization so that user can ask to use standard input/output instead of file.

For instance, users who are used to type their input files with Path_fr will now be able to give "-" as input string so that get_content or open (of Path_fr class) will read the standard input stream without having nothing more to do. Same for output.

Note that some code has been added for typehiting so that it does not create conflict with another feature: giving "-" to specify that a list of files is given through the standard input.

Before submitting

codecov[bot] commented 5 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (2bc81ea) to head (4772cac).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #475 +/- ## ========================================= Coverage 100.00% 100.00% ========================================= Files 21 21 Lines 6008 6013 +5 ========================================= + Hits 6008 6013 +5 ``` | [Flag](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | Coverage Δ | | |---|---|---| | [py3.10](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `88.40% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.10_all](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `98.73% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.10_pydantic1](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `48.92% <34.78%> (+<0.01%)` | :arrow_up: | | [py3.10_pydantic2](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `48.64% <30.43%> (-0.01%)` | :arrow_down: | | [py3.10_types](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `98.73% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.11](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `88.39% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.11_all](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `98.73% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.11_types](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `98.73% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.12](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `88.39% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.12_all](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `98.73% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.12_types](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `98.73% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.7](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `88.97% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.7_all](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `99.49% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.7_types](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `99.47% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.8](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `89.12% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.8_all](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `99.51% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.8_types](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `99.50% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.9](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `88.97% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.9_all](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `99.38% <100.00%> (+<0.01%)` | :arrow_up: | | [py3.9_types](https://app.codecov.io/gh/omni-us/jsonargparse/pull/475/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us) | `99.38% <100.00%> (+<0.01%)` | :arrow_up: | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=omni-us#carryforward-flags-in-the-pull-request-comment) to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

mquillot commented 5 months ago

I think @mauvilsa you can review a second time. I tried to follow your recommandations as possible.

sonarcloud[bot] commented 5 months ago

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
No data about Coverage
0.0% Duplication on New Code

See analysis details on SonarCloud