Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class BundleLink(BackboneElement):

class Bundle(Resource, Generic[T1, T2]):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Bundle'] = Field(
resourceType: str = Field(
default='Bundle',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class ObservationReferenceRange(BackboneElement):

class Observation(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Observation'] = Field(
resourceType: str = Field(
default='Observation',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class OperationOutcomeIssue(BackboneElement):

class OperationOutcome(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['OperationOutcome'] = Field(
resourceType: str = Field(
default='OperationOutcome',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class OrganizationContact(BackboneElement):

class Organization(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Organization'] = Field(
resourceType: str = Field(
default='Organization',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class PatientLink(BackboneElement):

class Patient(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Patient'] = Field(
resourceType: str = Field(
default='Patient',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
10 changes: 3 additions & 7 deletions src/api/writer-generator/python/writer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -468,13 +468,9 @@ export class Python extends Writer<PythonGeneratorOptions> {
}

private generateResourceTypeField(schema: SpecializationTypeSchema): void {
const hasChildren = (schema.typeFamily?.resources?.length ?? 0) > 0;

if (hasChildren) {
this.line(`${this.nameFormatFunction("resourceType")}: str = Field(`);
} else {
this.line(`${this.nameFormatFunction("resourceType")}: Literal['${schema.identifier.name}'] = Field(`);
}
// Always type as `str`; the value is validated on the pydantic side via `pattern`.
// A `Literal[...]` here would shadow the parent's field and trigger Pydantic warnings.
this.line(`${this.nameFormatFunction("resourceType")}: str = Field(`);
this.indentBlock(() => {
this.line(`default='${schema.identifier.name}',`);
this.line(`alias='resourceType',`);
Expand Down
8 changes: 4 additions & 4 deletions test/api/write-generator/__snapshots__/python.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class BundleLink(BackboneElement):

class Bundle(Resource, Generic[T1, T2]):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Bundle'] = Field(
resourceType: str = Field(
default='Bundle',
alias='resourceType',
serialization_alias='resourceType',
Expand Down Expand Up @@ -157,7 +157,7 @@ class PatientLink(BackboneElement):

class Patient(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Patient'] = Field(
resourceType: str = Field(
default='Patient',
alias='resourceType',
serialization_alias='resourceType',
Expand Down Expand Up @@ -268,7 +268,7 @@ class BundleLink(BackboneElement):

class Bundle(Resource, Generic[T1, T2]):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Bundle'] = Field(
resourceType: str = Field(
default='Bundle',
alias='resourceType',
serialization_alias='resourceType',
Expand Down Expand Up @@ -375,7 +375,7 @@ class BundleLink(BackboneElement):

class Bundle(Resource, Generic[T1, T2]):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Bundle'] = Field(
resourceType: str = Field(
default='Bundle',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ T2 = TypeVar('T2', bound=ANY, default=ANY)

class ClinicalDocument(ANY, Generic[T1, T2]):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['ClinicalDocument'] = Field(
resourceType: str = Field(
default='ClinicalDocument',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ from fhir_types.hl7_fhir_r4_core.domain_resource import DomainResource

class ExampleNotebook(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['ExampleNotebook'] = Field(
resourceType: str = Field(
default='ExampleNotebook',
alias='resourceType',
serialization_alias='resourceType',
Expand Down Expand Up @@ -326,7 +326,7 @@ class PatientLink(BackboneElement):

class Patient(DomainResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['Patient'] = Field(
resourceType: str = Field(
default='Patient',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ class ViewDefinitionWhere(BackboneElement):

class ViewDefinition(CanonicalResource):
model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid")
resourceType: Literal['ViewDefinition'] = Field(
resourceType: str = Field(
default='ViewDefinition',
alias='resourceType',
serialization_alias='resourceType',
Expand Down
Loading