Skip to content

Commit 81318cc

Browse files
committed
CCM-12896: Move generated Python types to digital-letters-events package
1 parent 35b960c commit 81318cc

File tree

9 files changed

+52
-78
lines changed

9 files changed

+52
-78
lines changed

scripts/config/sonar-scanner.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ sonar.tests=tests/, src/asyncapigenerator/tests, src/cloudeventjekylldocs/tests,
88
sonar.test.inclusions=tests/**, src/**/tests/**, src/**/__tests__/**, lambdas/**/src/__tests__/**, utils/utils/src/__tests__/**, utils/sender-management/src/__tests__/**
99
sonar.terraform.provider.aws.version=5.54.1
1010
sonar.cpd.exclusions=**.test.*
11-
sonar.coverage.exclusions=tests/**, src/**/tests/**, src/**/__tests__/**, **/*.dev.*, lambdas/**/src/__tests__/**, **/jest.config.ts, **/jest.config.cjs, scripts/**/*.*, docs/**/*.*, utils/utils/src/__tests__/**, src/asyncapigenerator/example_usage.py, src/asyncapigenerator/test_generator.py, src/eventcatalogasyncapiimporter/examples.py, src/digital-letters-events-python/**
11+
sonar.coverage.exclusions=tests/**, src/**/tests/**, src/**/__tests__/**, **/*.dev.*, lambdas/**/src/__tests__/**, **/jest.config.ts, **/jest.config.cjs, scripts/**/*.*, docs/**/*.*, utils/utils/src/__tests__/**, src/asyncapigenerator/example_usage.py, src/asyncapigenerator/test_generator.py, src/eventcatalogasyncapiimporter/examples.py, src/digital-letters-events/**
1212

1313
sonar.python.coverage.reportPaths=src/asyncapigenerator/coverage.xml,src/cloudeventjekylldocs/coverage.xml,src/eventcatalogasyncapiimporter/coverage.xml
1414
sonar.javascript.lcov.reportPaths=lcov.info,src/cloudevents/coverage/lcov.info

src/digital-letters-events-python/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

src/digital-letters-events-python/README.md

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
validators
22
types
3+
models

src/digital-letters-events/README.md

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
# digital-letters-events
22

3+
<!-- vale Vale.Terms = NO -->
34
This package contains the automatically-generated code that the
4-
[typescript-schema-generator](../typescript-schema-generator/) tool produces.
5+
[typescript-schema-generator](../typescript-schema-generator/) and the
6+
[pydantic-model-generator](../pydantic-model-generator/) tools produce.
7+
<!-- vale Vale.Terms = YES -->
58

69
The source files in this package should not be edited directly. If changes are
710
required, update the schemas in the
811
[src/cloudevents/domains](../cloudevents/domains) directory and use the
9-
`typescript-schema-generator` tool to regenerate them.
12+
`typescript-schema-generator` and `pydantic-model-generator` tools to regenerate
13+
them.
1014

1115
## Using this Package
1216

13-
### Using Event Types
17+
### TypeScript
18+
19+
#### Using Event Types
1420

1521
The event types can be used by simply installing the
1622
`digital-letters-events` package as a dependency and then importing
@@ -51,7 +57,7 @@ const pdmResourceSubmittedEvent: PDMResourceSubmitted = {
5157
};
5258
```
5359

54-
### Using Event Validator Functions
60+
#### Using Event Validator Functions
5561

5662
Validator functions for an event can be used by importing the default export
5763
from the relevant JS file in
@@ -74,3 +80,38 @@ if (isEventValid) {
7480
Note: You will need to make sure the
7581
[`allowJs`](https://www.typescriptlang.org/tsconfig/#allowJs) option is set in
7682
your package's `tsconfig.json` in order to import the JS files.
83+
84+
### Python
85+
86+
#### Using Event Models
87+
88+
The Pydantic models can be used by installing the `digital-letters-events` package and importing the desired model:
89+
90+
```python
91+
from digital_letters_events import PDMResourceSubmitted
92+
93+
try:
94+
# Validate and parse an event
95+
event_data = {
96+
"type": "uk.nhs.notify.digital.letters.pdm.resource.submitted.v1",
97+
"source": "/nhs/england/notify/staging/dev-647563337/data-plane/digitalletters/pdm",
98+
"dataschema": "https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-submitted-data.schema.json",
99+
"specversion": "1.0",
100+
"id": "0249e529-f947-4012-819e-b634eb71be79",
101+
"subject": "pdm-resource-123",
102+
"time": "2025-12-11T10:00:00Z",
103+
"data": {
104+
"something": "example value"
105+
}
106+
}
107+
108+
# Create and validate the event
109+
event = PDMResourceSubmitted(**event_data)
110+
111+
# Access validated fields
112+
print(event.id)
113+
print(event.type)
114+
print(event.data.something)
115+
except Exception as e:
116+
print(e)
117+
```
File renamed without changes.
File renamed without changes.

src/pydantic-model-generator/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Variables
22
SCHEMA_SRC_DIR := ../../schemas/digital-letters/2025-10-draft/events
3-
OUTPUT_DIR := ../digital-letters-events-python/models
3+
OUTPUT_DIR := ../digital-letters-events/models
44
SCRIPTS_DIR := scripts
55

66
# Default target

src/pydantic-model-generator/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ This will:
2929

3030
- Read all JSON event schemas from `schemas/digital-letters/2025-10-draft/events/`
3131
- Generate Pydantic v2 models using `datamodel-code-generator`
32-
- Output the models to `../digital-letters-events-python/models/`
32+
- Output the models to `../digital-letters-events/models/`
3333

3434
### Configuration
3535

@@ -44,12 +44,12 @@ The generator can be configured through:
4444
<!-- vale Vale.Terms = NO -->
4545
<!-- vale Vale.Avoid = NO -->
4646
Generated models are placed in the
47-
[digital-letters-events-python](../digital-letters-events-python/) package:
47+
[digital-letters-events](../digital-letters-events/) package:
4848
<!-- vale Vale.Terms = YES -->
4949
<!-- vale Vale.Avoid = YES -->
5050

51-
- `../digital-letters-events-python/models/` - Individual Pydantic model files
52-
- `../digital-letters-events-python/models/__init__.py` - Combined index for easy imports
51+
- `../digital-letters-events/models/` - Individual Pydantic model files
52+
- `../digital-letters-events/models/__init__.py` - Combined index for easy imports
5353

5454
## Testing
5555

0 commit comments

Comments
 (0)