Skip to content

Commit 88ca206

Browse files
committed
add setup.py for pip -e install
1 parent 1a95016 commit 88ca206

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

setup.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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.schema',
8+
'openapi_python_client.templates']
9+
10+
package_data = \
11+
{'': ['*'], 'openapi_python_client.templates': ['property_templates/*']}
12+
13+
install_requires = \
14+
['attrs>=20.1.0,<21.0.0',
15+
'black>=20.8b1',
16+
'httpx>=0.13,<0.15',
17+
'isort>=5.0.5,<6.0.0',
18+
'jinja2>=2.11.1,<3.0.0',
19+
'pydantic>=1.6.1,<2.0.0',
20+
'python-dateutil>=2.8.1,<3.0.0',
21+
'pyyaml>=5.3.1,<6.0.0',
22+
'shellingham>=1.3.2,<2.0.0',
23+
'stringcase>=1.2.0,<2.0.0',
24+
'typer>=0.3,<0.4']
25+
26+
extras_require = \
27+
{':python_version < "3.8"': ['importlib_metadata>=1.6.0,<2.0.0'],
28+
':sys_platform == "win32"': ['colorama>=0.4.3,<0.5.0']}
29+
30+
entry_points = \
31+
{'console_scripts': ['openapi-python-client = openapi_python_client.cli:app']}
32+
33+
setup_kwargs = {
34+
'name': 'openapi-python-client',
35+
'version': '0.6.0a4',
36+
'description': 'Generate modern Python clients from OpenAPI',
37+
'long_description': '[![triaxtec](https://circleci.com/gh/triaxtec/openapi-python-client.svg?style=svg)](https://circleci.com/gh/triaxtec/openapi-python-client)\n[![codecov](https://codecov.io/gh/triaxtec/openapi-python-client/branch/main/graph/badge.svg)](https://codecov.io/gh/triaxtec/openapi-python-client)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/openapi-python-client.svg)](https://pypi.python.org/pypi/openapi-python-client/)\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)\n[![Generic badge](https://img.shields.io/badge/type_checked-mypy-informational.svg)](https://mypy.readthedocs.io/en/stable/introduction.html)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n# openapi-python-client\n\nGenerate modern Python clients from OpenAPI\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## 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 `test_end_to_end` directory which has a declared [FastAPI](https://fastapi.tiangolo.com/)\nserver and the resulting openapi.json file in the "fastapi" directory. "golden-record" is the generated client from that\nOpenAPI 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[changelog.md]: CHANGELOG.md\n[poetry]: https://python-poetry.org/\n',
38+
'author': 'Dylan Anthony',
39+
'author_email': '[email protected]',
40+
'maintainer': None,
41+
'maintainer_email': None,
42+
'url': 'https://github.com/triaxtec/openapi-python-client',
43+
'packages': packages,
44+
'package_data': package_data,
45+
'install_requires': install_requires,
46+
'extras_require': extras_require,
47+
'entry_points': entry_points,
48+
'python_requires': '>=3.6,<4.0',
49+
}
50+
51+
52+
setup(**setup_kwargs)

0 commit comments

Comments
 (0)