|
| 1 | +# -*- coding: utf-8 -*- |
| 2 | +from setuptools import setup |
| 3 | + |
| 4 | +packages = [ |
| 5 | + "openapi_python_client", |
| 6 | + "openapi_python_client.parser", |
| 7 | + "openapi_python_client.parser.properties", |
| 8 | + "openapi_python_client.schema", |
| 9 | + "openapi_python_client.templates", |
| 10 | +] |
| 11 | + |
| 12 | +package_data = {"": ["*"], "openapi_python_client.templates": ["property_templates/*"]} |
| 13 | + |
| 14 | +install_requires = [ |
| 15 | + "attrs>=20.1.0,<21.0.0", |
| 16 | + "autoflake>=1.4,<2.0", |
| 17 | + "black>=20.8b1", |
| 18 | + "httpx>=0.15.4,<0.17.0", |
| 19 | + "isort>=5.0.5,<6.0.0", |
| 20 | + "jinja2>=2.11.1,<3.0.0", |
| 21 | + "pydantic>=1.6.1,<2.0.0", |
| 22 | + "python-dateutil>=2.8.1,<3.0.0", |
| 23 | + "pyyaml>=5.3.1,<6.0.0", |
| 24 | + "shellingham>=1.3.2,<2.0.0", |
| 25 | + "stringcase>=1.2.0,<2.0.0", |
| 26 | + "typer>=0.3,<0.4", |
| 27 | +] |
| 28 | + |
| 29 | +extras_require = { |
| 30 | + ':python_version < "3.8"': ["importlib_metadata>=2.0.0,<3.0.0"], |
| 31 | + ':sys_platform == "win32"': ["colorama>=0.4.3,<0.5.0"], |
| 32 | +} |
| 33 | + |
| 34 | +entry_points = {"console_scripts": ["openapi-python-client = openapi_python_client.cli:app"]} |
| 35 | + |
| 36 | +setup_kwargs = { |
| 37 | + "name": "openapi-python-client", |
| 38 | + "version": "0.7.0", |
| 39 | + "description": "Generate modern Python clients from OpenAPI", |
| 40 | + "long_description": '[](https://circleci.com/gh/triaxtec/openapi-python-client)\n[](https://codecov.io/gh/triaxtec/openapi-python-client)\n[](https://lbesson.mit-license.org/)\n[](https://mypy.readthedocs.io/en/stable/introduction.html)\n[](https://github.com/ambv/black)\n[](https://pypi.python.org/pypi/openapi-python-client/)\n[](https://pepy.tech/project/openapi-python-client)\n\n# openapi-python-client\n\nGenerate modern Python clients from OpenAPI 3.x documents.\n\n_This generator does not support OpenAPI 2.x FKA Swagger. If you need to use an older document, try upgrading it to\nversion 3 first with one of many available converters._\n\n**This project is still in development and does not support all OpenAPI features**\n\n## Why This?\n\nThe Python clients generated by openapi-generator support Python 2 and therefore come with a lot of baggage. This tool\naims to generate clients which:\n\n1. Use all the latest and greatest Python features like type annotations and dataclasses\n1. Don\'t carry around a bunch of compatibility code for older version of Python (e.g. the `six` package)\n1. Have better documentation and more obvious usage instructions\n\nAdditionally, because this generator is written in Python, it should be more accessible to contribution by the people\nusing it (Python developers).\n\n## Installation\n\nI recommend you install with [pipx](https://pipxproject.github.io/pipx/) so you don\'t conflict with any other packages\nyou might have: `pipx install openapi-python-client`.\n\nBetter yet, use `pipx run openapi-python-client <normal params / options>` to always use the latest version of the generator.\n\nYou can install with normal pip if you want to though: `pip install openapi-python-client`\n\nThen, if you want tab completion: `openapi-python-client --install-completion`\n\n## Usage\n\n### Create a new client\n\n`openapi-python-client generate --url https://my.api.com/openapi.json`\n\nThis will generate a new client library named based on the title in your OpenAPI spec. For example, if the title\nof your API is "My API", the expected output will be "my-api-client". If a folder already exists by that name, you\'ll\nget an error.\n\n### Update an existing client\n\n`openapi-python-client update --url https://my.api.com/openapi.json`\n\n> For more usage details run `openapi-python-client --help` or read [usage](usage.md)\n\n### Using custom templates\n\nThis feature leverages Jinja2\'s [ChoiceLoader](https://jinja.palletsprojects.com/en/2.11.x/api/#jinja2.ChoiceLoader) and [FileSystemLoader](https://jinja.palletsprojects.com/en/2.11.x/api/#jinja2.FileSystemLoader). This means you do _not_ need to customize every template. Simply copy the template(s) you want to customize from [the default template directory](openapi_python_client/templates) to your own custom template directory (file names _must_ match exactly) and pass the template directory through the `custom-template-path` flag to the `generate` and `update` commands. For instance,\n\n```\nopenapi-python-client update \\\n --url https://my.api.com/openapi.json \\\n --custom-template-path=relative/path/to/mytemplates\n```\n\n_Be forewarned, this is a beta-level feature in the sense that the API exposed in the templates is undocumented and unstable._\n\n## What You Get\n\n1. A `pyproject.toml` file with some basic metadata intended to be used with [Poetry].\n1. A `README.md` you\'ll most definitely need to update with your project\'s details\n1. A Python module named just like the auto-generated project name (e.g. "my_api_client") which contains:\n 1. A `client` module which will have both a `Client` class and an `AuthenticatedClient` class. You\'ll need these\n for calling the functions in the `api` module.\n 1. An `api` module which will contain one module for each tag in your OpenAPI spec, as well as a `default` module\n for endpoints without a tag. Each of these modules in turn contains one function for calling each endpoint.\n 1. A `models` module which has all the classes defined by the various schemas in your OpenAPI spec\n\nFor a full example you can look at the `end_to_end_tests` directory which has an `openapi.json` file.\n"golden-record" in that same directory is the generated client from that OpenAPI document.\n\n## OpenAPI features supported\n\n1. All HTTP Methods\n1. JSON and form bodies, path and query parameters\n1. File uploads with multipart/form-data bodies\n1. float, string, int, date, datetime, string enums, and custom schemas or lists containing any of those\n1. html/text or application/json responses containing any of the previous types\n1. Bearer token security\n\n## Configuration\n\nYou can pass a YAML (or JSON) file to openapi-python-client with the `--config` option in order to change some behavior.\nThe following parameters are supported:\n\n### class_overrides\n\nUsed to change the name of generated model classes. This param should be a mapping of existing class name\n(usually a key in the "schemas" section of your OpenAPI document) to class_name and module_name. As an example, if the\nname of the a model in OpenAPI (and therefore the generated class name) was something like "\\_PrivateInternalLongName"\nand you want the generated client\'s model to be called "ShortName" in a module called "short_name" you could do this:\n\nExample:\n\n```yaml\nclass_overrides:\n _PrivateInternalLongName:\n class_name: ShortName\n module_name: short_name\n```\n\nThe easiest way to find what needs to be overridden is probably to generate your client and go look at everything in the\nmodels folder.\n\n### project_name_override and package_name_override\n\nUsed to change the name of generated client library project/package. If the project name is changed but an override for the package name\nisn\'t provided, the package name will be converted from the project name using the standard convention (replacing `-`\'s with `_`\'s).\n\nExample:\n\n```yaml\nproject_name_override: my-special-project-name\npackage_name_override: my_extra_special_package_name\n```\n\n### field_prefix\n\nWhen generating properties, the `name` attribute of the OpenAPI schema will be used. When the `name` is not a valid\nPython identifier (e.g. begins with a number) this string will be prepended. Defaults to "field\\_".\n\nExample:\n\n```yaml\nfield_prefix: attr_\n```\n\n### package_version_override\n\nSpecify the package version of the generated client. If unset, the client will use the version of the OpenAPI spec.\n\nExample:\n\n```yaml\npackage_version_override: 1.2.3\n```\n\n[changelog.md]: CHANGELOG.md\n[poetry]: https://python-poetry.org/\n', |
| 41 | + "author": "Dylan Anthony", |
| 42 | + "author_email": "danthony@triaxtec.com", |
| 43 | + "maintainer": None, |
| 44 | + "maintainer_email": None, |
| 45 | + "url": "https://github.com/triaxtec/openapi-python-client", |
| 46 | + "packages": packages, |
| 47 | + "package_data": package_data, |
| 48 | + "install_requires": install_requires, |
| 49 | + "extras_require": extras_require, |
| 50 | + "entry_points": entry_points, |
| 51 | + "python_requires": ">=3.6,<4.0", |
| 52 | +} |
| 53 | + |
| 54 | + |
| 55 | +setup(**setup_kwargs) |
0 commit comments