ab-openapi-python-generator 2.1.3__tar.gz → 2.1.4.dev1768280320__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. {ab_openapi_python_generator-2.1.3 → ab_openapi_python_generator-2.1.4.dev1768280320}/PKG-INFO +27 -21
  2. ab_openapi_python_generator-2.1.4.dev1768280320/pyproject.toml +106 -0
  3. ab_openapi_python_generator-2.1.4.dev1768280320/setup.py +48 -0
  4. ab_openapi_python_generator-2.1.3/.envrc.example +0 -5
  5. ab_openapi_python_generator-2.1.3/.gitattributes +0 -0
  6. ab_openapi_python_generator-2.1.3/.github/dependabot.yml +0 -18
  7. ab_openapi_python_generator-2.1.3/.github/workflows/ci.yaml +0 -74
  8. ab_openapi_python_generator-2.1.3/.github/workflows/publish.yaml +0 -37
  9. ab_openapi_python_generator-2.1.3/.gitignore +0 -219
  10. ab_openapi_python_generator-2.1.3/.pre-commit-config.yaml +0 -27
  11. ab_openapi_python_generator-2.1.3/.vscode/launch.json +0 -66
  12. ab_openapi_python_generator-2.1.3/.vscode/tasks.json +0 -40
  13. ab_openapi_python_generator-2.1.3/Makefile +0 -35
  14. ab_openapi_python_generator-2.1.3/docs/acknowledgements/index.md +0 -11
  15. ab_openapi_python_generator-2.1.3/docs/css/custom.css +0 -120
  16. ab_openapi_python_generator-2.1.3/docs/css/termynal.css +0 -101
  17. ab_openapi_python_generator-2.1.3/docs/index.md +0 -34
  18. ab_openapi_python_generator-2.1.3/docs/js/custom.js +0 -161
  19. ab_openapi_python_generator-2.1.3/docs/js/termynal.js +0 -197
  20. ab_openapi_python_generator-2.1.3/docs/openapi-definition.md +0 -201
  21. ab_openapi_python_generator-2.1.3/docs/quick_start.md +0 -48
  22. ab_openapi_python_generator-2.1.3/docs/references/index.md +0 -45
  23. ab_openapi_python_generator-2.1.3/docs/references/module_usage.md +0 -3
  24. ab_openapi_python_generator-2.1.3/docs/tutorial/advanced.md +0 -3
  25. ab_openapi_python_generator-2.1.3/docs/tutorial/authentication.md +0 -3
  26. ab_openapi_python_generator-2.1.3/docs/tutorial/index.md +0 -890
  27. ab_openapi_python_generator-2.1.3/logo.png +0 -0
  28. ab_openapi_python_generator-2.1.3/pyproject.toml +0 -118
  29. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/__init__.py +0 -17
  30. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/__main__.py +0 -85
  31. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/common.py +0 -58
  32. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/generate_data.py +0 -235
  33. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/__init__.py +0 -0
  34. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/__init__.py +0 -0
  35. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/api_config_generator.py +0 -35
  36. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/common.py +0 -58
  37. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/generator.py +0 -54
  38. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/jinja_config.py +0 -38
  39. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/model_generator.py +0 -896
  40. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/service_generator.py +0 -540
  41. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/aiohttp.jinja2 +0 -49
  42. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/alias_union.jinja2 +0 -17
  43. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/apiconfig.jinja2 +0 -38
  44. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/apiconfig_pydantic_2.jinja2 +0 -42
  45. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/discriminator_enum.jinja2 +0 -7
  46. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/enum.jinja2 +0 -11
  47. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/httpx.jinja2 +0 -126
  48. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/models.jinja2 +0 -24
  49. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/models_pydantic_2.jinja2 +0 -28
  50. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/requests.jinja2 +0 -50
  51. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/language_converters/python/templates/service.jinja2 +0 -12
  52. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/models.py +0 -101
  53. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/parsers/__init__.py +0 -13
  54. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/parsers/openapi_30.py +0 -65
  55. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/parsers/openapi_31.py +0 -65
  56. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/py.typed +0 -0
  57. ab_openapi_python_generator-2.1.3/src/openapi_python_generator/version_detector.py +0 -70
  58. ab_openapi_python_generator-2.1.3/tests/__init__.py +0 -0
  59. ab_openapi_python_generator-2.1.3/tests/build_test_api/api.py +0 -154
  60. ab_openapi_python_generator-2.1.3/tests/conftest.py +0 -42
  61. ab_openapi_python_generator-2.1.3/tests/regression/__init__.py +0 -0
  62. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_11.py +0 -33
  63. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_117.py +0 -36
  64. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_120.py +0 -36
  65. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_17.py +0 -27
  66. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_30_87.py +0 -24
  67. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_51.py +0 -27
  68. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_55.py +0 -23
  69. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_7.py +0 -34
  70. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_71.py +0 -27
  71. ab_openapi_python_generator-2.1.3/tests/regression/test_issue_illegal_py_symbols.py +0 -51
  72. ab_openapi_python_generator-2.1.3/tests/test_api_config.py +0 -10
  73. ab_openapi_python_generator-2.1.3/tests/test_common_normalize_symbol.py +0 -6
  74. ab_openapi_python_generator-2.1.3/tests/test_data/failing_api.json +0 -7
  75. ab_openapi_python_generator-2.1.3/tests/test_data/gitea_issue_11.json +0 -1
  76. ab_openapi_python_generator-2.1.3/tests/test_data/issue_117.json +0 -29
  77. ab_openapi_python_generator-2.1.3/tests/test_data/issue_120.json +0 -53
  78. ab_openapi_python_generator-2.1.3/tests/test_data/issue_17.json +0 -1038
  79. ab_openapi_python_generator-2.1.3/tests/test_data/issue_30_87.json +0 -70
  80. ab_openapi_python_generator-2.1.3/tests/test_data/issue_51.json +0 -480
  81. ab_openapi_python_generator-2.1.3/tests/test_data/issue_55.json +0 -70
  82. ab_openapi_python_generator-2.1.3/tests/test_data/issue_71.json +0 -31
  83. ab_openapi_python_generator-2.1.3/tests/test_data/issue_71_31.json +0 -42
  84. ab_openapi_python_generator-2.1.3/tests/test_data/issue_illegal_character_in_operation_id.json +0 -46
  85. ab_openapi_python_generator-2.1.3/tests/test_data/issue_keyword_parameter_name.json +0 -55
  86. ab_openapi_python_generator-2.1.3/tests/test_data/openapi_gitea_converted.json +0 -24858
  87. ab_openapi_python_generator-2.1.3/tests/test_data/swagger_petstore_3_0_4.yaml +0 -913
  88. ab_openapi_python_generator-2.1.3/tests/test_data/swagger_petstore_3_1.yaml +0 -931
  89. ab_openapi_python_generator-2.1.3/tests/test_data/test_api.json +0 -625
  90. ab_openapi_python_generator-2.1.3/tests/test_data/test_api_31.json +0 -388
  91. ab_openapi_python_generator-2.1.3/tests/test_generate_data.py +0 -193
  92. ab_openapi_python_generator-2.1.3/tests/test_generate_data_negative.py +0 -51
  93. ab_openapi_python_generator-2.1.3/tests/test_generated_code.py +0 -452
  94. ab_openapi_python_generator-2.1.3/tests/test_main.py +0 -28
  95. ab_openapi_python_generator-2.1.3/tests/test_model_docstring.py +0 -30
  96. ab_openapi_python_generator-2.1.3/tests/test_model_generator.py +0 -432
  97. ab_openapi_python_generator-2.1.3/tests/test_model_generator_edges.py +0 -133
  98. ab_openapi_python_generator-2.1.3/tests/test_openapi_30.py +0 -257
  99. ab_openapi_python_generator-2.1.3/tests/test_openapi_31.py +0 -380
  100. ab_openapi_python_generator-2.1.3/tests/test_openapi_31_completeness.py +0 -572
  101. ab_openapi_python_generator-2.1.3/tests/test_openapi_31_coverage.py +0 -445
  102. ab_openapi_python_generator-2.1.3/tests/test_openapi_31_schema_features.py +0 -441
  103. ab_openapi_python_generator-2.1.3/tests/test_service_generator.py +0 -441
  104. ab_openapi_python_generator-2.1.3/tests/test_service_generator_edges.py +0 -29
  105. ab_openapi_python_generator-2.1.3/tests/test_swagger_petstore_30.py +0 -186
  106. ab_openapi_python_generator-2.1.3/tests/test_swagger_petstore_31.py +0 -259
  107. ab_openapi_python_generator-2.1.3/tests/test_version_detector_edges.py +0 -51
  108. ab_openapi_python_generator-2.1.3/tox.ini +0 -24
  109. {ab_openapi_python_generator-2.1.3 → ab_openapi_python_generator-2.1.4.dev1768280320}/LICENSE +0 -0
  110. {ab_openapi_python_generator-2.1.3 → ab_openapi_python_generator-2.1.4.dev1768280320}/README.md +0 -0
  111. {ab_openapi_python_generator-2.1.3 → ab_openapi_python_generator-2.1.4.dev1768280320}/src/ab_openapi_python_generator/__init__.py +0 -0
@@ -1,27 +1,32 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: ab-openapi-python-generator
3
- Version: 2.1.3
3
+ Version: 2.1.4.dev1768280320
4
4
  Summary: Openapi Python Generator
5
- Project-URL: Homepage, https://github.com/auth-broker/openapi-python-generator
6
- Project-URL: Repository, https://github.com/auth-broker/openapi-python-generator
7
- Project-URL: Documentation, https://openapi-python-generator.readthedocs.io
8
- Project-URL: Changelog, https://github.com/auth-broker/openapi-python-generator/releases
9
- Author-email: Marco Müllner <muellnermarco@gmail.com>, Matt Coulter <mattcoul7@gmail.com>
10
- License-Expression: MIT
11
- License-File: LICENSE
12
- Keywords: Generator,OpenAPI,Python,async
5
+ Home-page: https://github.com/auth-broker/openapi-python-generator
6
+ License: MIT
7
+ Keywords: OpenAPI,Generator,Python,async
8
+ Author: Marco Müllner
9
+ Author-email: muellnermarco@gmail.com
10
+ Requires-Python: >=3.9,<4.0
13
11
  Classifier: Development Status :: 3 - Alpha
14
- Requires-Python: <4,>=3.9
15
- Requires-Dist: black>=21.10b0
16
- Requires-Dist: click<9,>=8.1.3
17
- Requires-Dist: httpx[all]<0.29,>=0.28.0
18
- Requires-Dist: importlib-metadata<9,>=8.7.0
19
- Requires-Dist: isort>=5.10.1
20
- Requires-Dist: jinja2<4,>=3.1.2
21
- Requires-Dist: openapi-pydantic<0.6,>=0.5.1
22
- Requires-Dist: orjson<4,>=3.9.15
23
- Requires-Dist: pydantic<3,>=2.10.2
24
- Requires-Dist: pyyaml<7,>=6.0.2
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Requires-Dist: Jinja2 (>=3.1.2,<4.0.0)
18
+ Requires-Dist: black (>=21.10b0)
19
+ Requires-Dist: click (>=8.1.3,<9.0.0)
20
+ Requires-Dist: httpx[all] (>=0.28.0,<0.29.0)
21
+ Requires-Dist: importlib-metadata (>=8.7.0,<9.0.0)
22
+ Requires-Dist: isort (>=5.10.1)
23
+ Requires-Dist: openapi-pydantic (>=0.5.1,<0.6.0)
24
+ Requires-Dist: orjson (>=3.9.15,<4.0.0)
25
+ Requires-Dist: pydantic (>=2.10.2,<3.0.0)
26
+ Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
27
+ Project-URL: Changelog, https://github.com/auth-broker/openapi-python-generator/releases
28
+ Project-URL: Documentation, https://openapi-python-generator.readthedocs.io
29
+ Project-URL: Repository, https://github.com/auth-broker/openapi-python-generator
25
30
  Description-Content-Type: text/markdown
26
31
 
27
32
  # Openapi Python Generator
@@ -123,3 +128,4 @@ This project was generated from [@cjolowicz]'s [Hypermodern Python Cookiecutter]
123
128
  [license]: https://github.com/MarcoMuellner/openapi-python-generator/blob/main/LICENSE
124
129
  [contributor guide]: https://github.com/MarcoMuellner/openapi-python-generator/blob/main/CONTRIBUTING.md
125
130
  [Quick start page]: https://marcomuellner.github.io/openapi-python-generator/quick_start/
131
+
@@ -0,0 +1,106 @@
1
+ [tool.poetry]
2
+ name = "ab-openapi-python-generator"
3
+ version = "2.1.4.dev.1768280320"
4
+ description = "Openapi Python Generator"
5
+ authors = ["Marco Müllner <muellnermarco@gmail.com>", "Matt Coulter <mattcoul7@gmail.com>"]
6
+ license = "MIT"
7
+ readme = "README.md"
8
+ homepage = "https://github.com/auth-broker/openapi-python-generator"
9
+ repository = "https://github.com/auth-broker/openapi-python-generator"
10
+ documentation = "https://openapi-python-generator.readthedocs.io"
11
+ classifiers = [
12
+ "Development Status :: 3 - Alpha",
13
+ ]
14
+ keywords = ["OpenAPI", "Generator", "Python", "async"]
15
+
16
+ [tool.poetry.urls]
17
+ Changelog = "https://github.com/auth-broker/openapi-python-generator/releases"
18
+
19
+ [tool.poetry.dependencies]
20
+ python = "^3.9"
21
+ httpx = {extras = ["all"], version = "^0.28.0"}
22
+ pydantic = "^2.10.2"
23
+ orjson = "^3.9.15"
24
+ Jinja2 = "^3.1.2"
25
+ click = "^8.1.3"
26
+ black = ">=21.10b0"
27
+ isort = ">=5.10.1"
28
+ openapi-pydantic = "^0.5.1"
29
+ pyyaml = "^6.0.2"
30
+ importlib-metadata = "^8.7.0"
31
+
32
+ [tool.poetry.group.dev.dependencies]
33
+ Pygments = ">=2.10.0"
34
+ coverage = {extras = ["toml"], version = "^6.4.1"}
35
+ darglint = ">=1.8.1"
36
+ ruff = ">=0.12.12"
37
+ furo = ">=2021.11.12"
38
+ ty = "^0.0.1a20"
39
+ pep8-naming = ">=0.10.1"
40
+ pre-commit = ">=2.16.0"
41
+ pre-commit-hooks = ">=4.1.0"
42
+ pytest = ">=6.2.5"
43
+ pyupgrade = ">=2.29.1"
44
+ safety = ">=1.10.3"
45
+ typeguard = ">=2.13.3"
46
+ xdoctest = {extras = ["colors"], version = ">=0.15.10"}
47
+ myst-parser = {version = ">=0.16.1"}
48
+ pytest-cov = "^3.0.0"
49
+ fastapi = "^0.115.5"
50
+ uvicorn = "^0.18.1"
51
+ respx = "^0.22.0"
52
+ aiohttp = "^3.8.3"
53
+ responses = "^0.25.8"
54
+
55
+ [tool.poetry.scripts]
56
+ openapi-python-generator = "openapi_python_generator.__main__:main"
57
+
58
+
59
+ [tool.coverage.paths]
60
+ source = ["src", "*/site-packages"]
61
+ tests = ["tests", "*/tests"]
62
+
63
+ [tool.coverage.run]
64
+ branch = true
65
+ source = ["openapi_python_generator", "tests"]
66
+
67
+ [tool.coverage.report]
68
+ show_missing = true
69
+ fail_under = 100
70
+
71
+ [tool.isort]
72
+ profile = "black"
73
+ force_single_line = true
74
+ lines_after_imports = 2
75
+
76
+ [tool.mypy]
77
+ strict = true
78
+ warn_unreachable = true
79
+ pretty = true
80
+ show_column_numbers = true
81
+ show_error_codes = true
82
+ show_error_context = true
83
+
84
+ [build-system]
85
+ requires = ["poetry-core>=1.0.0"]
86
+ build-backend = "poetry.core.masonry.api"
87
+
88
+ [tool.ruff]
89
+ exclude = ["tests/*"]
90
+ line-length = 120
91
+
92
+ [tool.ruff.lint]
93
+ ignore = ["E501"]
94
+ select = [
95
+ "B",
96
+ "B9",
97
+ "C",
98
+ "E",
99
+ "F",
100
+ "I",
101
+ "S",
102
+ "W",
103
+ ]
104
+
105
+ [tool.ruff.lint.mccabe]
106
+ max-complexity = 25
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ from setuptools import setup
3
+
4
+ package_dir = \
5
+ {'': 'src'}
6
+
7
+ packages = \
8
+ ['ab_openapi_python_generator']
9
+
10
+ package_data = \
11
+ {'': ['*']}
12
+
13
+ install_requires = \
14
+ ['Jinja2>=3.1.2,<4.0.0',
15
+ 'black>=21.10b0',
16
+ 'click>=8.1.3,<9.0.0',
17
+ 'httpx[all]>=0.28.0,<0.29.0',
18
+ 'importlib-metadata>=8.7.0,<9.0.0',
19
+ 'isort>=5.10.1',
20
+ 'openapi-pydantic>=0.5.1,<0.6.0',
21
+ 'orjson>=3.9.15,<4.0.0',
22
+ 'pydantic>=2.10.2,<3.0.0',
23
+ 'pyyaml>=6.0.2,<7.0.0']
24
+
25
+ entry_points = \
26
+ {'console_scripts': ['openapi-python-generator = '
27
+ 'openapi_python_generator.__main__:main']}
28
+
29
+ setup_kwargs = {
30
+ 'name': 'ab-openapi-python-generator',
31
+ 'version': '2.1.4.dev1768280320',
32
+ 'description': 'Openapi Python Generator',
33
+ 'long_description': "# Openapi Python Generator\n\n[![PyPI](https://img.shields.io/pypi/v/openapi-python-generator.svg)][pypi_]\n[![Status](https://img.shields.io/pypi/status/openapi-python-generator.svg)][status]\n[![Python Version](https://img.shields.io/pypi/pyversions/openapi-python-generator)][python version]\n[![License](https://img.shields.io/pypi/l/openapi-python-generator)][license]\n\n[![](https://img.shields.io/static/v1?label=documentation&message=enabled&color=<COLOR>)][documentation]\n[![Tests](https://github.com/auth-broker/openapi-python-generator/workflows/Tests/badge.svg)][tests]\n[![Codecov](https://codecov.io/gh/auth-broker/openapi-python-generator/branch/main/graph/badge.svg)][codecov]\n\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)][pre-commit]\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)][black]\n\n[pypi_]: https://pypi.org/project/openapi-python-generator/\n[status]: https://pypi.org/project/openapi-python-generator/\n[python version]: https://pypi.org/project/openapi-python-generator\n[documentation]: https://marcomuellner.github.io/openapi-python-generator/\n[tests]: https://github.com/MarcoMuellner/openapi-python-generator/actions?workflow=Tests\n[codecov]: https://app.codecov.io/gh/MarcoMuellner/openapi-python-generator\n[pre-commit]: https://github.com/pre-commit/pre-commit\n[black]: https://github.com/psf/black\n\n![](logo.png)\n\n---\n__Documentation:__ [here][documentation]\n\n---\n\n## Features\n\n- __Ease of use__. Provide input, output and the library, and the generator will do the rest.\n- __Type safety and type hinting.__ __OpenAPI python generator__ makes heavy use of pydantic models to provide type-safe data structures.\n- __Support for multiple rest frameworks.__ __OpenAPI python generator__ currently supports the following:\n - [httpx](https://pypi.org/project/httpx/)\n - [requests](https://pypi.org/project/requests/)\n - [aiohttp](https://pypi.org/project/aiohttp/)\n- __Async and sync code generation support__, depending on the framework. It will automatically create both for frameworks that support both.\n- __Easily extendable using Jinja2 templates__. The code is designed to be easily extendable and should support even more languages and frameworks in the future.\n- __Fully tested__. Every generated code is automatically tested against the OpenAPI spec and we have 100% coverage.\n- __Usage as CLI or as library__.\n\n## Requirements\n\n- Python 3.7+\n\n## Installation\n\nYou can install _Openapi Python Generator_ via [pip] from [PyPI]:\n\n```console\n$ pip install ab-openapi-python-generator\n```\n\n## Usage\n\nPlease see the [Quick start page] for details.\n\n## Roadmap\n\n- Support for all commonly used http libraries in the python ecosystem (~~requests~~, urllib, ...)\n- Support for multiple languages\n- Support for multiple authentication schemes\n- Support custom themes\n\n## Contributing\n\nContributions are very welcome.\nTo learn more, see the [Contributor Guide].\n\n## License\n\nDistributed under the terms of the [MIT license][license],\n_Openapi Python Generator_ is free and open source software.\n\n## Issues\n\nIf you encounter any problems,\nplease [file an issue] along with a detailed description.\n\n## Credits\n\nSpecial thanks to the peeps from [openapi-schema-pydantic](https://github.com/kuimono/openapi-schema-pydantic),\nwhich already did a lot of the legwork by providing a pydantic schema for the OpenAPI 3.0.0+ specification.\n\nThis project was generated from [@cjolowicz]'s [Hypermodern Python Cookiecutter] template.\n\n[@cjolowicz]: https://github.com/cjolowicz\n[pypi]: https://pypi.org/\n[hypermodern python cookiecutter]: https://github.com/cjolowicz/cookiecutter-hypermodern-python\n[file an issue]: https://github.com/MarcoMuellner/openapi-python-generator/issues\n[pip]: https://pip.pypa.io/\n\n<!-- github-only -->\n\n[license]: https://github.com/MarcoMuellner/openapi-python-generator/blob/main/LICENSE\n[contributor guide]: https://github.com/MarcoMuellner/openapi-python-generator/blob/main/CONTRIBUTING.md\n[Quick start page]: https://marcomuellner.github.io/openapi-python-generator/quick_start/\n",
34
+ 'author': 'Marco Müllner',
35
+ 'author_email': 'muellnermarco@gmail.com',
36
+ 'maintainer': 'None',
37
+ 'maintainer_email': 'None',
38
+ 'url': 'https://github.com/auth-broker/openapi-python-generator',
39
+ 'package_dir': package_dir,
40
+ 'packages': packages,
41
+ 'package_data': package_data,
42
+ 'install_requires': install_requires,
43
+ 'entry_points': entry_points,
44
+ 'python_requires': '>=3.9,<4.0',
45
+ }
46
+
47
+
48
+ setup(**setup_kwargs)
@@ -1,5 +0,0 @@
1
- # NOTE: UV_PUBLISH_USERNAME & UV_PUBLISH_PASSWORD are only required for testing
2
- # publishing this package from local. However, please let the CD workflow
3
- # handle production workflows.
4
- export UV_PUBLISH_USERNAME=
5
- export UV_PUBLISH_PASSWORD=
File without changes
@@ -1,18 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: "github-actions"
4
- directory: "/"
5
- schedule:
6
- interval: "weekly"
7
- day: "saturday"
8
- time: "03:00"
9
- timezone: "Australia/Melbourne"
10
-
11
- - package-ecosystem: "pip"
12
- directory: "/"
13
- open-pull-requests-limit: 2
14
- schedule:
15
- interval: "weekly"
16
- day: "saturday"
17
- time: "03:00"
18
- timezone: "Australia/Melbourne"
@@ -1,74 +0,0 @@
1
- name: CI
2
-
3
- permissions:
4
- contents: read
5
- pull-requests: write
6
-
7
- on:
8
- pull_request:
9
- branches: [main]
10
-
11
- concurrency:
12
- group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }} - ci-pipeline"
13
- cancel-in-progress: true
14
-
15
- jobs:
16
- lint:
17
- if: ${{ github.actor != 'dependabot[bot]' }}
18
- runs-on:
19
- group: Default
20
- timeout-minutes: 5
21
-
22
- steps:
23
- - uses: actions/checkout@v4
24
-
25
- # Install uv + Python (with cache)
26
- - name: Install uv
27
- uses: astral-sh/setup-uv@v6
28
- with:
29
- version: latest
30
- enable-cache: true
31
- python-version: "3.12"
32
-
33
- # Private Git deps (optional; remove if not needed)
34
- - name: Configure Git credentials for private deps
35
- if: env.GH_READ_TOKEN != ''
36
- env:
37
- GH_READ_TOKEN: ${{ secrets.GH_READ_TOKEN }}
38
- run: |
39
- git config --global url."https://${GH_READ_TOKEN}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
40
-
41
- - name: Sync deps
42
- run: uv sync --extra all
43
-
44
- - name: Lint
45
- run: uv run tox -e lint
46
-
47
- test:
48
- if: ${{ github.actor != 'dependabot[bot]' }}
49
- runs-on:
50
- group: Default
51
- timeout-minutes: 5
52
- # Run in parallel with lint (remove this 'needs' to keep parallel; add needs: [lint] to serialize)
53
- steps:
54
- - uses: actions/checkout@v4
55
-
56
- - name: Install uv
57
- uses: astral-sh/setup-uv@v6
58
- with:
59
- version: latest
60
- enable-cache: true
61
- python-version: "3.12"
62
-
63
- - name: Configure Git credentials for private deps
64
- if: env.GH_READ_TOKEN != ''
65
- env:
66
- GH_READ_TOKEN: ${{ secrets.GH_READ_TOKEN }}
67
- run: |
68
- git config --global url."https://${GH_READ_TOKEN}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
69
-
70
- - name: Sync deps
71
- run: uv sync --extra all
72
-
73
- - name: Test
74
- run: uv run tox -e test
@@ -1,37 +0,0 @@
1
- name: Publish to PyPI
2
-
3
- on:
4
- release:
5
- types: [published]
6
- workflow_dispatch:
7
-
8
- permissions: read-all
9
-
10
- # This allows a subsequently queued workflow run to interrupt previous runs
11
- concurrency:
12
- group: "${{ github.workflow }} @ ${{ github.head_ref || github.ref }} - release"
13
- cancel-in-progress: true
14
-
15
- jobs:
16
- publish:
17
- runs-on:
18
- group: Default
19
- timeout-minutes: 5
20
-
21
- steps:
22
- - name: Checkout code
23
- uses: actions/checkout@v4
24
-
25
- - name: Install uv
26
- uses: astral-sh/setup-uv@v6
27
-
28
- - name: Install project Python
29
- run: uv python install
30
-
31
- - name: Build
32
- run: uv build --no-sources
33
-
34
- - name: Publish to PyPI
35
- env:
36
- UV_PUBLISH_TOKEN: ${{ secrets.UV_PUBLISH_TOKEN }}
37
- run: uv publish --verbose
@@ -1,219 +0,0 @@
1
- # Byte-compiled / optimized / DLL files
2
- __pycache__/
3
- *.py[cod]
4
- *.py[codz]
5
- *$py.class
6
-
7
- # C extensions
8
- *.so
9
-
10
- # Distribution / packaging
11
- .Python
12
- build/
13
- develop-eggs/
14
- dist/
15
- downloads/
16
- eggs/
17
- .eggs/
18
- lib/
19
- lib64/
20
- parts/
21
- sdist/
22
- var/
23
- wheels/
24
- pip-wheel-metadata/
25
- share/python-wheels/
26
- *.egg-info/
27
- .installed.cfg
28
- *.egg
29
- MANIFEST
30
-
31
- # PyInstaller
32
- # Usually these files are written by a python script from a template
33
- # before PyInstaller builds the exe, so as to inject date/other infos into it.
34
- *.manifest
35
- *.spec
36
-
37
- # Installer logs
38
- pip-log.txt
39
- pip-delete-this-directory.txt
40
-
41
- # Unit test / coverage reports
42
- htmlcov/
43
- .tox/
44
- .nox/
45
- .coverage
46
- .coverage.*
47
- .cache
48
- nosetests.xml
49
- coverage.xml
50
- *.cover
51
- *.py,cover
52
- *.py.cover
53
- .hypothesis/
54
- .pytest_cache/
55
- cover/
56
-
57
- # Translations
58
- *.mo
59
- *.pot
60
-
61
- # Django stuff:
62
- *.log
63
- local_settings.py
64
- db.sqlite3
65
- db.sqlite3-journal
66
-
67
- # Flask stuff:
68
- instance/
69
- .webassets-cache
70
-
71
- # Scrapy stuff:
72
- .scrapy
73
-
74
- # Sphinx documentation
75
- docs/_build/
76
-
77
- # PyBuilder
78
- .pybuilder/
79
- target/
80
-
81
- # Jupyter Notebook
82
- .ipynb_checkpoints
83
-
84
- # IPython
85
- profile_default/
86
- ipython_config.py
87
-
88
- # pyenv
89
- # For a library or package, you might want to ignore these files since the code is
90
- # intended to run in multiple environments; otherwise, check them in:
91
- .python-version
92
-
93
- # pipenv
94
- # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
95
- # However, in case of collaboration, if having platform-specific dependencies or dependencies
96
- # having no cross-platform support, pipenv may install dependencies that don't work, or not
97
- # install all needed dependencies.
98
- Pipfile.lock
99
-
100
- # UV
101
- # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
102
- # This is especially recommended for binary packages to ensure reproducibility, and is more
103
- # commonly ignored for libraries.
104
- uv.lock
105
-
106
- # poetry
107
- # For packages, we do not commit the lock file,
108
- # since we are not controlling the environment,
109
- # refer to https://python-poetry.org/docs/basic-usage/#as-a-library-developer
110
- poetry.lock
111
- poetry.toml
112
-
113
- # pdm
114
- # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
115
- # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
116
- # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
117
- pdm.lock
118
- pdm.toml
119
- .pdm-python
120
- .pdm-build/
121
-
122
- # pixi
123
- # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
124
- pixi.lock
125
- # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
126
- # in the .venv directory. It is recommended not to include this directory in version control.
127
- .pixi
128
-
129
- # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
130
- __pypackages__/
131
-
132
- # Celery stuff
133
- celerybeat-schedule
134
- celerybeat.pid
135
-
136
- # SageMath parsed files
137
- *.sage.py
138
-
139
- # Environments
140
- .env
141
- .envrc
142
- .venv
143
- env/
144
- venv/
145
- ENV/
146
- env.bak/
147
- venv.bak/
148
-
149
- # Spyder project settings
150
- .spyderproject
151
- .spyproject
152
-
153
- # Rope project settings
154
- .ropeproject
155
-
156
- # mkdocs documentation
157
- /site
158
-
159
- # mypy
160
- .mypy_cache/
161
- .dmypy.json
162
- dmypy.json
163
-
164
- # Pyre type checker
165
- .pyre/
166
- /.idea/
167
- /testclient/
168
- /tests/test_result/
169
- test_output/
170
-
171
- # pytype static type analyzer
172
- .pytype/
173
-
174
- # Cython debug symbols
175
- cython_debug/
176
-
177
- # PyCharm
178
- # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
179
- # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
180
- # and can be added to the global gitignore or merged into this file. For a more nuclear
181
- # option (not recommended) you can uncomment the following to ignore the entire idea folder.
182
- #.idea/
183
-
184
- # Abstra
185
- # Abstra is an AI-powered process automation framework.
186
- # Ignore directories containing user credentials, local state, and settings.
187
- # Learn more at https://abstra.io/docs
188
- .abstra/
189
-
190
- # Visual Studio Code
191
- # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
192
- # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
193
- # and can be added to the global gitignore or merged into this file. However, if you prefer,
194
- # you could uncomment the following to ignore the entire vscode folder
195
- #.vscode/
196
-
197
- # Ruff stuff:
198
- .ruff_cache/
199
-
200
- # PyPI configuration file
201
- .pypirc
202
-
203
- # Cursor
204
- # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
205
- # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
206
- # refer to https://docs.cursor.com/context/ignore-files
207
- .cursorignore
208
- .cursorindexingignore
209
-
210
- # Marimo
211
- marimo/_static/
212
- marimo/_lsp/
213
- __marimo__/
214
-
215
- # Streamlit
216
- .streamlit/secrets.toml
217
-
218
- # Generated Files
219
- .DS_Store
@@ -1,27 +0,0 @@
1
- repos:
2
- - repo: https://github.com/astral-sh/ruff-pre-commit
3
- rev: v0.4.5
4
- hooks:
5
- - id: ruff
6
- args: [--fix]
7
- name: ruff check + fix
8
- - id: ruff-format
9
- name: ruff format
10
-
11
- - repo: https://github.com/codespell-project/codespell
12
- rev: v2.2.6
13
- hooks:
14
- - id: codespell
15
- args: ["--write-changes"]
16
-
17
- - repo: https://github.com/executablebooks/mdformat
18
- rev: 0.7.16
19
- hooks:
20
- - id: mdformat
21
- args: ["--wrap", "80"]
22
-
23
- - repo: https://github.com/pappasam/toml-sort
24
- rev: v0.23.1
25
- hooks:
26
- - id: toml-sort
27
- args: ["--all", "--in-place"]
@@ -1,66 +0,0 @@
1
- {
2
- "version": "0.2.0",
3
- "configurations": [
4
- {
5
- "name": "pytest",
6
- "type": "python",
7
- "request": "launch",
8
- "module": "pytest",
9
- "args": ["-vv", "--no-cov"],
10
- "justMyCode": false,
11
- "cwd": "${workspaceFolder}",
12
- "console": "integratedTerminal",
13
- "env": {
14
- "PYTHONASYNCIODEBUG": "1" // optional: helps with debugging asyncio
15
- }
16
- },
17
- {
18
- "name": "pytest: current module",
19
- "type": "python",
20
- "request": "launch",
21
- "module": "pytest",
22
- // run pytest on the directory that contains the file in the active editor
23
- "args": ["-vv", "${fileDirname}", "--no-cov"],
24
- "justMyCode": false,
25
- "cwd": "${workspaceFolder}",
26
- "console": "integratedTerminal",
27
- "env": {
28
- "PYTHONASYNCIODEBUG": "1" // optional: helps with debugging asyncio
29
- }
30
- },
31
- {
32
- "name": "pytest: current file",
33
- "type": "python",
34
- "request": "launch",
35
- "module": "pytest",
36
- "args": ["-vv", "${relativeFile}", "--no-cov"],
37
- "justMyCode": false,
38
- "console": "integratedTerminal",
39
- "cwd": "${workspaceFolder}",
40
- "env": {
41
- "PYTHONASYNCIODEBUG": "1" // optional: helps with debugging asyncio
42
- }
43
- },
44
- {
45
- "name": "pytest: specify case in current file",
46
- "type": "python",
47
- "request": "launch",
48
- "module": "pytest",
49
- "args": ["-vv", "${relativeFile}::${input:testName}", "--no-cov"],
50
- "justMyCode": false,
51
- "console": "integratedTerminal",
52
- "cwd": "${workspaceFolder}",
53
- "env": {
54
- "PYTHONASYNCIODEBUG": "1" // optional: helps with debugging asyncio
55
- }
56
- }
57
- ],
58
- "inputs": [
59
- {
60
- "id": "testName",
61
- "type": "promptString",
62
- "description": "Enter test name or leave blank to run the whole file",
63
- "default": ""
64
- }
65
- ]
66
- }