Skip to content

Commit 36026d1

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 36026d1

3 files changed

Lines changed: 10 additions & 3 deletions

File tree

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: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,18 @@ 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")
3033
config.load_config()
3134

3235
from openapi_python_client import Project
3336

3437
assert Project.project_name_override == "project-name"
3538
assert Project.package_name_override == "package_name"
39+
assert Project.package_version_override == "package_version"
3640

3741
def test_field_prefix(self):
3842
Config(field_prefix="blah").load_config()

0 commit comments

Comments
 (0)