Name | pydantic-argparse-builder JSON |
Version |
0.3.1
JSON |
| download |
home_page | |
Summary | Build ArgumentParser from pydantic model. |
upload_time | 2023-08-01 16:31:38 |
maintainer | |
docs_url | None |
author | elda27 |
requires_python | >=3.8,<4.0 |
license | Apache-2.0 |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pydantic-argparse-builder
[](https://pypi.org/project/pydantic-argparse-builder/)
[](https://badge.fury.io/py/pydantic-argparse-builder)
[](https://codecov.io/gh/elda27/pydantic_argparse_builder)
[](https://pepy.tech/project/pydantic-argparse-builder)
[](https://github.com/google/pydantic_argparse_builder/blob/main/LICENSE)
[](https://github.com/psf/black)
Build ArgumentParser from pydantic model.
## What's difference with other projects.
This project focuses on creating an argument parser from the pydantic model.
Many other projects hide `ArgumentParser` in the library, but it is difficult to use in complicated cases.
For example nested sub parser; i.e. `aws s3 cp <some options>`, or nested pydantic model is not supported.
This library achieve that you can easily add complicate uses.
## Example 1
```python
from argparse import ArgumentParser
from pydantic import BaseModel, Field
from pydantic_argparse_builder import build_parser
class Config(BaseModel):
string: str = Field(description="string parameter")
integer: int = Field(description="integer parameter")
parser = ArgumentParser()
build_parser(parser)
parser.print_help()
```
```
usage: basic.py [-h] --string STRING --integer INTEGER
optional arguments:
-h, --help show this help message and exit
Config:
--string STRING, -s STRING
a required string
--integer INTEGER, -i INTEGER
a required integer
```
## Example 2
```python
from argparse import ArgumentParser
from pydantic import BaseModel, Field
from pydantic_argparse_builder import build_parser
class SubConfigA(BaseModel):
string: str = Field(description="string parameter")
integer: int = Field(description="integer parameter")
class SubConfigB(BaseModel):
double: float = Field(description="a required string")
integer: int = Field(0, description="a required integer")
parser = ArgumentParser()
subparsers = parser.add_subparsers()
build_parser(subparsers.add_parser("alpha"), SubConfigA)
build_parser(subparsers.add_parser("beta"), SubConfigB)
parser.print_help()
```
```
usage: sub_parser.py [-h] {alpha,beta} ...
positional arguments:
{alpha,beta}
optional arguments:
-h, --help show this help message and exit
```
## Additional config
Behaviour of pydantic can be controlled via the `Config` class or extra arguments of `Field`.
`Config` is affected all fields.
Extra arguments of `Field` is affected specific field.
<dl>
<dt><code>cli_disable_prefix</code></dt>
<dd>Prefix of argument of boolean type for `store_false`. Default to <code>--disable-</code></dd>
<dt><code>cli_enable_prefix</code></dt>
<dd>Prefix of argument of boolean type for `store_true`. Default to <code>--enable-</code></dd>
</dl>
## Future works
- [ ]: Options completion for bash
Raw data
{
"_id": null,
"home_page": "",
"name": "pydantic-argparse-builder",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "elda27",
"author_email": "kaz.birdstick@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/bc/92/dd830c97d39c46d8825f5447c93c0c92b1090b4669ae9aea0cfde2de2924/pydantic_argparse_builder-0.3.1.tar.gz",
"platform": null,
"description": "# pydantic-argparse-builder\n[](https://pypi.org/project/pydantic-argparse-builder/)\n[](https://badge.fury.io/py/pydantic-argparse-builder)\n[](https://codecov.io/gh/elda27/pydantic_argparse_builder)\n[](https://pepy.tech/project/pydantic-argparse-builder)\n[](https://github.com/google/pydantic_argparse_builder/blob/main/LICENSE)\n[](https://github.com/psf/black)\n\nBuild ArgumentParser from pydantic model.\n\n## What's difference with other projects.\n\nThis project focuses on creating an argument parser from the pydantic model.\nMany other projects hide `ArgumentParser` in the library, but it is difficult to use in complicated cases.\nFor example nested sub parser; i.e. `aws s3 cp <some options>`, or nested pydantic model is not supported.\nThis library achieve that you can easily add complicate uses.\n\n## Example 1\n\n```python\nfrom argparse import ArgumentParser\nfrom pydantic import BaseModel, Field\nfrom pydantic_argparse_builder import build_parser\n\nclass Config(BaseModel):\n string: str = Field(description=\"string parameter\")\n integer: int = Field(description=\"integer parameter\")\n\nparser = ArgumentParser()\nbuild_parser(parser)\nparser.print_help()\n```\n\n```\nusage: basic.py [-h] --string STRING --integer INTEGER\n\noptional arguments:\n -h, --help show this help message and exit\n\nConfig:\n --string STRING, -s STRING\n a required string\n --integer INTEGER, -i INTEGER\n a required integer\n```\n\n## Example 2\n\n```python\nfrom argparse import ArgumentParser\nfrom pydantic import BaseModel, Field\nfrom pydantic_argparse_builder import build_parser\n\nclass SubConfigA(BaseModel):\n string: str = Field(description=\"string parameter\")\n integer: int = Field(description=\"integer parameter\")\n\nclass SubConfigB(BaseModel):\n double: float = Field(description=\"a required string\")\n integer: int = Field(0, description=\"a required integer\")\n\n\nparser = ArgumentParser()\nsubparsers = parser.add_subparsers()\nbuild_parser(subparsers.add_parser(\"alpha\"), SubConfigA)\nbuild_parser(subparsers.add_parser(\"beta\"), SubConfigB)\nparser.print_help()\n```\n\n```\nusage: sub_parser.py [-h] {alpha,beta} ...\n\npositional arguments:\n {alpha,beta}\n\noptional arguments:\n -h, --help show this help message and exit\n```\n\n## Additional config\nBehaviour of pydantic can be controlled via the `Config` class or extra arguments of `Field`.\n`Config` is affected all fields.\nExtra arguments of `Field` is affected specific field. \n\n\n<dl>\n <dt><code>cli_disable_prefix</code></dt>\n <dd>Prefix of argument of boolean type for `store_false`. Default to <code>--disable-</code></dd>\n\n <dt><code>cli_enable_prefix</code></dt>\n <dd>Prefix of argument of boolean type for `store_true`. Default to <code>--enable-</code></dd>\n\n</dl>\n\n\n## Future works\n\n- [ ]: Options completion for bash\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Build ArgumentParser from pydantic model.",
"version": "0.3.1",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "013364f6c802299e51b9146914bba8d3e4ec12bf06df24301dd21f2e78cfec7e",
"md5": "bdae62ba7f4551f322e92be64dd003d9",
"sha256": "630851ef999e15024ef6fafab1b45c8db30be2b4ed5582b715f87563875d7ad1"
},
"downloads": -1,
"filename": "pydantic_argparse_builder-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bdae62ba7f4551f322e92be64dd003d9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 11009,
"upload_time": "2023-08-01T16:31:35",
"upload_time_iso_8601": "2023-08-01T16:31:35.153550Z",
"url": "https://files.pythonhosted.org/packages/01/33/64f6c802299e51b9146914bba8d3e4ec12bf06df24301dd21f2e78cfec7e/pydantic_argparse_builder-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bc92dd830c97d39c46d8825f5447c93c0c92b1090b4669ae9aea0cfde2de2924",
"md5": "db802249aa00e7884d567a267638977b",
"sha256": "65d84d6bd71ce515b42f31fdb8b1933568b8494276f38f1d2999e31dc58c3adf"
},
"downloads": -1,
"filename": "pydantic_argparse_builder-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "db802249aa00e7884d567a267638977b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 9354,
"upload_time": "2023-08-01T16:31:38",
"upload_time_iso_8601": "2023-08-01T16:31:38.450168Z",
"url": "https://files.pythonhosted.org/packages/bc/92/dd830c97d39c46d8825f5447c93c0c92b1090b4669ae9aea0cfde2de2924/pydantic_argparse_builder-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-01 16:31:38",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pydantic-argparse-builder"
}