Skip to content

Commit d5a7c71

Browse files
committed
Add a setting to override the package version
A generate package version actually depends on the version of the OpenAPI spec and on the version of the generator. Upgrading the generator version may break backward compatibility of the client. This gives the user the possibility to bump its client version to reflect changes in the generated code even though the spec has not changed.
1 parent e54468f commit d5a7c71

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

openapi_python_client/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Project:
2929
TEMPLATE_FILTERS = {"snakecase": utils.snake_case, "kebabcase": utils.kebab_case}
3030
project_name_override: Optional[str] = None
3131
package_name_override: Optional[str] = None
32+
package_version_override: Optional[str] = None
3233

3334
def __init__(self, *, openapi: GeneratorData) -> None:
3435
self.openapi: GeneratorData = openapi
@@ -42,7 +43,7 @@ def __init__(self, *, openapi: GeneratorData) -> None:
4243
self.package_description: str = utils.remove_string_escapes(
4344
f"A client library for accessing {self.openapi.title}"
4445
)
45-
self.version: str = openapi.version
46+
self.version: str = self.package_version_override or openapi.version
4647

4748
self.env.filters.update(self.TEMPLATE_FILTERS)
4849

openapi_python_client/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Config(BaseModel):
1414
class_overrides: Optional[Dict[str, ClassOverride]]
1515
project_name_override: Optional[str]
1616
package_name_override: Optional[str]
17+
package_version_override: Optional[str]
1718
field_prefix: Optional[str]
1819

1920
def load_config(self) -> None:
@@ -29,6 +30,7 @@ def load_config(self) -> None:
2930

3031
Project.project_name_override = self.project_name_override
3132
Project.package_name_override = self.package_name_override
33+
Project.package_version_override = self.package_version_override
3234

3335
if self.field_prefix is not None:
3436
utils.FIELD_PREFIX = self.field_prefix

tests/test_config.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,19 @@ def test_class_overrides(self):
2525
assert reference.class_overrides["Class1"] == reference.Reference(**override1)
2626
assert reference.class_overrides["Class2"] == reference.Reference(**override2)
2727

28-
def test_project_and_package_name_overrides(self):
29-
config = Config(project_name_override="project-name", package_name_override="package_name")
28+
def test_project_and_package_name_and_package_version_overrides(self):
29+
config = Config(
30+
project_name_override="project-name",
31+
package_name_override="package_name",
32+
package_version_override="package_version",
33+
)
3034
config.load_config()
3135

3236
from openapi_python_client import Project
3337

3438
assert Project.project_name_override == "project-name"
3539
assert Project.package_name_override == "package_name"
40+
assert Project.package_version_override == "package_version"
3641

3742
def test_field_prefix(self):
3843
Config(field_prefix="blah").load_config()

0 commit comments

Comments
 (0)