mypydantic.models.backupstorage

  1# Model Generated: Thu Mar  2 21:56:16 2023
  2
  3from __future__ import annotations
  4
  5from datetime import datetime
  6from typing import Any, Dict, IO, List, Literal, Optional, Type, Union
  7
  8from botocore.response import StreamingBody
  9from pydantic import Field
 10
 11from mypydantic.models.base_model import BaseModel
 12
 13
 14class BackupObjectModel(BaseModel):
 15    name: str = Field(alias="Name")
 16    object_checksum: str = Field(alias="ObjectChecksum")
 17    object_checksum_algorithm: Literal["SUMMARY"] = Field(
 18        alias="ObjectChecksumAlgorithm"
 19    )
 20    object_token: str = Field(alias="ObjectToken")
 21    chunks_count: Optional[int] = Field(default=None, alias="ChunksCount")
 22    metadata_string: Optional[str] = Field(default=None, alias="MetadataString")
 23
 24
 25class ChunkModel(BaseModel):
 26    index: int = Field(alias="Index")
 27    length: int = Field(alias="Length")
 28    checksum: str = Field(alias="Checksum")
 29    checksum_algorithm: Literal["SHA256"] = Field(alias="ChecksumAlgorithm")
 30    chunk_token: str = Field(alias="ChunkToken")
 31
 32
 33class DeleteObjectInputRequestModel(BaseModel):
 34    backup_job_id: str = Field(alias="BackupJobId")
 35    object_name: str = Field(alias="ObjectName")
 36
 37
 38class ResponseMetadataModel(BaseModel):
 39    request_id: str = Field(alias="RequestId")
 40    host_id: str = Field(alias="HostId")
 41    http_status_code: int = Field(alias="HTTPStatusCode")
 42    http_headers: Dict[str, str] = Field(alias="HTTPHeaders")
 43    retry_attempts: int = Field(alias="RetryAttempts")
 44
 45
 46class GetChunkInputRequestModel(BaseModel):
 47    storage_job_id: str = Field(alias="StorageJobId")
 48    chunk_token: str = Field(alias="ChunkToken")
 49
 50
 51class GetObjectMetadataInputRequestModel(BaseModel):
 52    storage_job_id: str = Field(alias="StorageJobId")
 53    object_token: str = Field(alias="ObjectToken")
 54
 55
 56class ListChunksInputRequestModel(BaseModel):
 57    storage_job_id: str = Field(alias="StorageJobId")
 58    object_token: str = Field(alias="ObjectToken")
 59    max_results: Optional[int] = Field(default=None, alias="MaxResults")
 60    next_token: Optional[str] = Field(default=None, alias="NextToken")
 61
 62
 63class ListObjectsInputRequestModel(BaseModel):
 64    storage_job_id: str = Field(alias="StorageJobId")
 65    starting_object_name: Optional[str] = Field(
 66        default=None, alias="StartingObjectName"
 67    )
 68    starting_object_prefix: Optional[str] = Field(
 69        default=None, alias="StartingObjectPrefix"
 70    )
 71    max_results: Optional[int] = Field(default=None, alias="MaxResults")
 72    next_token: Optional[str] = Field(default=None, alias="NextToken")
 73    created_before: Optional[Union[datetime, str]] = Field(
 74        default=None, alias="CreatedBefore"
 75    )
 76    created_after: Optional[Union[datetime, str]] = Field(
 77        default=None, alias="CreatedAfter"
 78    )
 79
 80
 81class NotifyObjectCompleteInputRequestModel(BaseModel):
 82    backup_job_id: str = Field(alias="BackupJobId")
 83    upload_id: str = Field(alias="UploadId")
 84    object_checksum: str = Field(alias="ObjectChecksum")
 85    object_checksum_algorithm: Literal["SUMMARY"] = Field(
 86        alias="ObjectChecksumAlgorithm"
 87    )
 88    metadata_string: Optional[str] = Field(default=None, alias="MetadataString")
 89    metadata_blob: Optional[
 90        Union[str, bytes, Type[IO[Any]], Type[StreamingBody]]
 91    ] = Field(default=None, alias="MetadataBlob")
 92    metadata_blob_length: Optional[int] = Field(
 93        default=None, alias="MetadataBlobLength"
 94    )
 95    metadata_blob_checksum: Optional[str] = Field(
 96        default=None, alias="MetadataBlobChecksum"
 97    )
 98    metadata_blob_checksum_algorithm: Optional[Literal["SHA256"]] = Field(
 99        default=None, alias="MetadataBlobChecksumAlgorithm"
100    )
101
102
103class PutChunkInputRequestModel(BaseModel):
104    backup_job_id: str = Field(alias="BackupJobId")
105    upload_id: str = Field(alias="UploadId")
106    chunk_index: int = Field(alias="ChunkIndex")
107    data: Union[str, bytes, Type[IO[Any]], Type[StreamingBody]] = Field(alias="Data")
108    length: int = Field(alias="Length")
109    checksum: str = Field(alias="Checksum")
110    checksum_algorithm: Literal["SHA256"] = Field(alias="ChecksumAlgorithm")
111
112
113class PutObjectInputRequestModel(BaseModel):
114    backup_job_id: str = Field(alias="BackupJobId")
115    object_name: str = Field(alias="ObjectName")
116    metadata_string: Optional[str] = Field(default=None, alias="MetadataString")
117    inline_chunk: Optional[
118        Union[str, bytes, Type[IO[Any]], Type[StreamingBody]]
119    ] = Field(default=None, alias="InlineChunk")
120    inline_chunk_length: Optional[int] = Field(default=None, alias="InlineChunkLength")
121    inline_chunk_checksum: Optional[str] = Field(
122        default=None, alias="InlineChunkChecksum"
123    )
124    inline_chunk_checksum_algorithm: Optional[str] = Field(
125        default=None, alias="InlineChunkChecksumAlgorithm"
126    )
127    object_checksum: Optional[str] = Field(default=None, alias="ObjectChecksum")
128    object_checksum_algorithm: Optional[Literal["SUMMARY"]] = Field(
129        default=None, alias="ObjectChecksumAlgorithm"
130    )
131    throw_on_duplicate: Optional[bool] = Field(default=None, alias="ThrowOnDuplicate")
132
133
134class StartObjectInputRequestModel(BaseModel):
135    backup_job_id: str = Field(alias="BackupJobId")
136    object_name: str = Field(alias="ObjectName")
137    throw_on_duplicate: Optional[bool] = Field(default=None, alias="ThrowOnDuplicate")
138
139
140class EmptyResponseMetadataModel(BaseModel):
141    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
142
143
144class GetChunkOutputModel(BaseModel):
145    data: Type[StreamingBody] = Field(alias="Data")
146    length: int = Field(alias="Length")
147    checksum: str = Field(alias="Checksum")
148    checksum_algorithm: Literal["SHA256"] = Field(alias="ChecksumAlgorithm")
149    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
150
151
152class GetObjectMetadataOutputModel(BaseModel):
153    metadata_string: str = Field(alias="MetadataString")
154    metadata_blob: Type[StreamingBody] = Field(alias="MetadataBlob")
155    metadata_blob_length: int = Field(alias="MetadataBlobLength")
156    metadata_blob_checksum: str = Field(alias="MetadataBlobChecksum")
157    metadata_blob_checksum_algorithm: Literal["SHA256"] = Field(
158        alias="MetadataBlobChecksumAlgorithm"
159    )
160    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
161
162
163class ListChunksOutputModel(BaseModel):
164    chunk_list: List[ChunkModel] = Field(alias="ChunkList")
165    next_token: str = Field(alias="NextToken")
166    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
167
168
169class ListObjectsOutputModel(BaseModel):
170    object_list: List[BackupObjectModel] = Field(alias="ObjectList")
171    next_token: str = Field(alias="NextToken")
172    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
173
174
175class NotifyObjectCompleteOutputModel(BaseModel):
176    object_checksum: str = Field(alias="ObjectChecksum")
177    object_checksum_algorithm: Literal["SUMMARY"] = Field(
178        alias="ObjectChecksumAlgorithm"
179    )
180    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
181
182
183class PutChunkOutputModel(BaseModel):
184    chunk_checksum: str = Field(alias="ChunkChecksum")
185    chunk_checksum_algorithm: Literal["SHA256"] = Field(alias="ChunkChecksumAlgorithm")
186    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
187
188
189class PutObjectOutputModel(BaseModel):
190    inline_chunk_checksum: str = Field(alias="InlineChunkChecksum")
191    inline_chunk_checksum_algorithm: Literal["SHA256"] = Field(
192        alias="InlineChunkChecksumAlgorithm"
193    )
194    object_checksum: str = Field(alias="ObjectChecksum")
195    object_checksum_algorithm: Literal["SUMMARY"] = Field(
196        alias="ObjectChecksumAlgorithm"
197    )
198    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
199
200
201class StartObjectOutputModel(BaseModel):
202    upload_id: str = Field(alias="UploadId")
203    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
class BackupObjectModel(mypydantic.models.base_model.BaseModel):
15class BackupObjectModel(BaseModel):
16    name: str = Field(alias="Name")
17    object_checksum: str = Field(alias="ObjectChecksum")
18    object_checksum_algorithm: Literal["SUMMARY"] = Field(
19        alias="ObjectChecksumAlgorithm"
20    )
21    object_token: str = Field(alias="ObjectToken")
22    chunks_count: Optional[int] = Field(default=None, alias="ChunksCount")
23    metadata_string: Optional[str] = Field(default=None, alias="MetadataString")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class ChunkModel(mypydantic.models.base_model.BaseModel):
26class ChunkModel(BaseModel):
27    index: int = Field(alias="Index")
28    length: int = Field(alias="Length")
29    checksum: str = Field(alias="Checksum")
30    checksum_algorithm: Literal["SHA256"] = Field(alias="ChecksumAlgorithm")
31    chunk_token: str = Field(alias="ChunkToken")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class DeleteObjectInputRequestModel(mypydantic.models.base_model.BaseModel):
34class DeleteObjectInputRequestModel(BaseModel):
35    backup_job_id: str = Field(alias="BackupJobId")
36    object_name: str = Field(alias="ObjectName")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class ResponseMetadataModel(mypydantic.models.base_model.BaseModel):
39class ResponseMetadataModel(BaseModel):
40    request_id: str = Field(alias="RequestId")
41    host_id: str = Field(alias="HostId")
42    http_status_code: int = Field(alias="HTTPStatusCode")
43    http_headers: Dict[str, str] = Field(alias="HTTPHeaders")
44    retry_attempts: int = Field(alias="RetryAttempts")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class GetChunkInputRequestModel(mypydantic.models.base_model.BaseModel):
47class GetChunkInputRequestModel(BaseModel):
48    storage_job_id: str = Field(alias="StorageJobId")
49    chunk_token: str = Field(alias="ChunkToken")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class GetObjectMetadataInputRequestModel(mypydantic.models.base_model.BaseModel):
52class GetObjectMetadataInputRequestModel(BaseModel):
53    storage_job_id: str = Field(alias="StorageJobId")
54    object_token: str = Field(alias="ObjectToken")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class ListChunksInputRequestModel(mypydantic.models.base_model.BaseModel):
57class ListChunksInputRequestModel(BaseModel):
58    storage_job_id: str = Field(alias="StorageJobId")
59    object_token: str = Field(alias="ObjectToken")
60    max_results: Optional[int] = Field(default=None, alias="MaxResults")
61    next_token: Optional[str] = Field(default=None, alias="NextToken")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class ListObjectsInputRequestModel(mypydantic.models.base_model.BaseModel):
64class ListObjectsInputRequestModel(BaseModel):
65    storage_job_id: str = Field(alias="StorageJobId")
66    starting_object_name: Optional[str] = Field(
67        default=None, alias="StartingObjectName"
68    )
69    starting_object_prefix: Optional[str] = Field(
70        default=None, alias="StartingObjectPrefix"
71    )
72    max_results: Optional[int] = Field(default=None, alias="MaxResults")
73    next_token: Optional[str] = Field(default=None, alias="NextToken")
74    created_before: Optional[Union[datetime, str]] = Field(
75        default=None, alias="CreatedBefore"
76    )
77    created_after: Optional[Union[datetime, str]] = Field(
78        default=None, alias="CreatedAfter"
79    )
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class NotifyObjectCompleteInputRequestModel(mypydantic.models.base_model.BaseModel):
 82class NotifyObjectCompleteInputRequestModel(BaseModel):
 83    backup_job_id: str = Field(alias="BackupJobId")
 84    upload_id: str = Field(alias="UploadId")
 85    object_checksum: str = Field(alias="ObjectChecksum")
 86    object_checksum_algorithm: Literal["SUMMARY"] = Field(
 87        alias="ObjectChecksumAlgorithm"
 88    )
 89    metadata_string: Optional[str] = Field(default=None, alias="MetadataString")
 90    metadata_blob: Optional[
 91        Union[str, bytes, Type[IO[Any]], Type[StreamingBody]]
 92    ] = Field(default=None, alias="MetadataBlob")
 93    metadata_blob_length: Optional[int] = Field(
 94        default=None, alias="MetadataBlobLength"
 95    )
 96    metadata_blob_checksum: Optional[str] = Field(
 97        default=None, alias="MetadataBlobChecksum"
 98    )
 99    metadata_blob_checksum_algorithm: Optional[Literal["SHA256"]] = Field(
100        default=None, alias="MetadataBlobChecksumAlgorithm"
101    )
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class PutChunkInputRequestModel(mypydantic.models.base_model.BaseModel):
104class PutChunkInputRequestModel(BaseModel):
105    backup_job_id: str = Field(alias="BackupJobId")
106    upload_id: str = Field(alias="UploadId")
107    chunk_index: int = Field(alias="ChunkIndex")
108    data: Union[str, bytes, Type[IO[Any]], Type[StreamingBody]] = Field(alias="Data")
109    length: int = Field(alias="Length")
110    checksum: str = Field(alias="Checksum")
111    checksum_algorithm: Literal["SHA256"] = Field(alias="ChecksumAlgorithm")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class PutObjectInputRequestModel(mypydantic.models.base_model.BaseModel):
114class PutObjectInputRequestModel(BaseModel):
115    backup_job_id: str = Field(alias="BackupJobId")
116    object_name: str = Field(alias="ObjectName")
117    metadata_string: Optional[str] = Field(default=None, alias="MetadataString")
118    inline_chunk: Optional[
119        Union[str, bytes, Type[IO[Any]], Type[StreamingBody]]
120    ] = Field(default=None, alias="InlineChunk")
121    inline_chunk_length: Optional[int] = Field(default=None, alias="InlineChunkLength")
122    inline_chunk_checksum: Optional[str] = Field(
123        default=None, alias="InlineChunkChecksum"
124    )
125    inline_chunk_checksum_algorithm: Optional[str] = Field(
126        default=None, alias="InlineChunkChecksumAlgorithm"
127    )
128    object_checksum: Optional[str] = Field(default=None, alias="ObjectChecksum")
129    object_checksum_algorithm: Optional[Literal["SUMMARY"]] = Field(
130        default=None, alias="ObjectChecksumAlgorithm"
131    )
132    throw_on_duplicate: Optional[bool] = Field(default=None, alias="ThrowOnDuplicate")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class StartObjectInputRequestModel(mypydantic.models.base_model.BaseModel):
135class StartObjectInputRequestModel(BaseModel):
136    backup_job_id: str = Field(alias="BackupJobId")
137    object_name: str = Field(alias="ObjectName")
138    throw_on_duplicate: Optional[bool] = Field(default=None, alias="ThrowOnDuplicate")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class EmptyResponseMetadataModel(mypydantic.models.base_model.BaseModel):
141class EmptyResponseMetadataModel(BaseModel):
142    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class GetChunkOutputModel(mypydantic.models.base_model.BaseModel):
145class GetChunkOutputModel(BaseModel):
146    data: Type[StreamingBody] = Field(alias="Data")
147    length: int = Field(alias="Length")
148    checksum: str = Field(alias="Checksum")
149    checksum_algorithm: Literal["SHA256"] = Field(alias="ChecksumAlgorithm")
150    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class GetObjectMetadataOutputModel(mypydantic.models.base_model.BaseModel):
153class GetObjectMetadataOutputModel(BaseModel):
154    metadata_string: str = Field(alias="MetadataString")
155    metadata_blob: Type[StreamingBody] = Field(alias="MetadataBlob")
156    metadata_blob_length: int = Field(alias="MetadataBlobLength")
157    metadata_blob_checksum: str = Field(alias="MetadataBlobChecksum")
158    metadata_blob_checksum_algorithm: Literal["SHA256"] = Field(
159        alias="MetadataBlobChecksumAlgorithm"
160    )
161    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class ListChunksOutputModel(mypydantic.models.base_model.BaseModel):
164class ListChunksOutputModel(BaseModel):
165    chunk_list: List[ChunkModel] = Field(alias="ChunkList")
166    next_token: str = Field(alias="NextToken")
167    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class ListObjectsOutputModel(mypydantic.models.base_model.BaseModel):
170class ListObjectsOutputModel(BaseModel):
171    object_list: List[BackupObjectModel] = Field(alias="ObjectList")
172    next_token: str = Field(alias="NextToken")
173    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class NotifyObjectCompleteOutputModel(mypydantic.models.base_model.BaseModel):
176class NotifyObjectCompleteOutputModel(BaseModel):
177    object_checksum: str = Field(alias="ObjectChecksum")
178    object_checksum_algorithm: Literal["SUMMARY"] = Field(
179        alias="ObjectChecksumAlgorithm"
180    )
181    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class PutChunkOutputModel(mypydantic.models.base_model.BaseModel):
184class PutChunkOutputModel(BaseModel):
185    chunk_checksum: str = Field(alias="ChunkChecksum")
186    chunk_checksum_algorithm: Literal["SHA256"] = Field(alias="ChunkChecksumAlgorithm")
187    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class PutObjectOutputModel(mypydantic.models.base_model.BaseModel):
190class PutObjectOutputModel(BaseModel):
191    inline_chunk_checksum: str = Field(alias="InlineChunkChecksum")
192    inline_chunk_checksum_algorithm: Literal["SHA256"] = Field(
193        alias="InlineChunkChecksumAlgorithm"
194    )
195    object_checksum: str = Field(alias="ObjectChecksum")
196    object_checksum_algorithm: Literal["SUMMARY"] = Field(
197        alias="ObjectChecksumAlgorithm"
198    )
199    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
class StartObjectOutputModel(mypydantic.models.base_model.BaseModel):
202class StartObjectOutputModel(BaseModel):
203    upload_id: str = Field(alias="UploadId")
204    response_metadata: ResponseMetadataModel = Field(alias="ResponseMetadata")
Inherited Members
mypydantic.models.base_model.BaseModel
BaseModel
Config
pydantic.main.BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs