bsdd classes - typing for not required attributes

This commit is contained in:
Andrej730
2024-09-20 14:52:35 +05:00
parent 18476ec7f3
commit 95e76c3ab9
3 changed files with 246 additions and 245 deletions
+240 -242
View File
@@ -24,6 +24,7 @@ import requests
import webbrowser
import http.server
from typing import TypedDict, Literal, Optional
from typing_extensions import NotRequired
__version__ = version = "0.0.0"
@@ -31,9 +32,6 @@ __version__ = version = "0.0.0"
Status = Literal["Preview", "Active", "Inactive"]
ClassTypes = Literal["Class", "GroupOfProperties", "AlternativeUse", "Material"]
# NOTE: Some values in TypedDicts are actually not guaranteed to be provided
# and should be typed with NotRequired.
# Use yml_to_classes.py to update classes.
class DictionaryContractV1(TypedDict):
@@ -46,33 +44,33 @@ class DictionaryContractV1(TypedDict):
defaultLanguageCode: str
isLatestVersion: bool
isVerified: bool
license: str
licenseUrl: str
qualityAssuranceProcedure: str
qualityAssuranceProcedureUrl: str
status: str
moreInfoUrl: str
releaseDate: str
lastUpdatedUtc: str
availableLanguages: list[CodeNameDto]
license: NotRequired[str]
licenseUrl: NotRequired[str]
qualityAssuranceProcedure: NotRequired[str]
qualityAssuranceProcedureUrl: NotRequired[str]
status: NotRequired[str]
moreInfoUrl: NotRequired[str]
releaseDate: NotRequired[str]
lastUpdatedUtc: NotRequired[str]
availableLanguages: NotRequired[list[CodeNameDto]]
class DictionaryResponseContractV1(TypedDict):
totalCount: int
offset: int
count: int
dictionaries: list[DictionaryContractV1]
totalCount: NotRequired[int]
offset: NotRequired[int]
count: NotRequired[int]
dictionaries: NotRequired[list[DictionaryContractV1]]
class ClassListItemContractV1(TypedDict):
uri: str
code: str
name: str
classType: str
referenceCode: str
parentClassCode: str
descriptionPart: str
children: list[ClassListItemContractV1]
uri: NotRequired[str]
code: NotRequired[str]
name: NotRequired[str]
classType: NotRequired[str]
referenceCode: NotRequired[str]
parentClassCode: NotRequired[str]
descriptionPart: NotRequired[str]
children: NotRequired[list[ClassListItemContractV1]]
class DictionaryClassesResponseContractV1(TypedDict):
@@ -85,25 +83,25 @@ class DictionaryClassesResponseContractV1(TypedDict):
defaultLanguageCode: str
isLatestVersion: bool
isVerified: bool
license: str
licenseUrl: str
qualityAssuranceProcedure: str
qualityAssuranceProcedureUrl: str
status: str
moreInfoUrl: str
releaseDate: str
lastUpdatedUtc: str
classes: list[ClassListItemContractV1]
classesTotalCount: int
classesOffset: int
classesCount: int
license: NotRequired[str]
licenseUrl: NotRequired[str]
qualityAssuranceProcedure: NotRequired[str]
qualityAssuranceProcedureUrl: NotRequired[str]
status: NotRequired[str]
moreInfoUrl: NotRequired[str]
releaseDate: NotRequired[str]
lastUpdatedUtc: NotRequired[str]
classes: NotRequired[list[ClassListItemContractV1]]
classesTotalCount: NotRequired[int]
classesOffset: NotRequired[int]
classesCount: NotRequired[int]
class PropertyListItemContractV1(TypedDict):
uri: str
code: str
name: str
descriptionPart: str
uri: NotRequired[str]
code: NotRequired[str]
name: NotRequired[str]
descriptionPart: NotRequired[str]
class DictionaryPropertiesResponseContractV1(TypedDict):
@@ -116,234 +114,234 @@ class DictionaryPropertiesResponseContractV1(TypedDict):
defaultLanguageCode: str
isLatestVersion: bool
isVerified: bool
license: str
licenseUrl: str
qualityAssuranceProcedure: str
qualityAssuranceProcedureUrl: str
status: str
moreInfoUrl: str
releaseDate: str
lastUpdatedUtc: str
properties: list[PropertyListItemContractV1]
propertiesTotalCount: int
propertiesOffset: int
propertiesCount: int
license: NotRequired[str]
licenseUrl: NotRequired[str]
qualityAssuranceProcedure: NotRequired[str]
qualityAssuranceProcedureUrl: NotRequired[str]
status: NotRequired[str]
moreInfoUrl: NotRequired[str]
releaseDate: NotRequired[str]
lastUpdatedUtc: NotRequired[str]
properties: NotRequired[list[PropertyListItemContractV1]]
propertiesTotalCount: NotRequired[int]
propertiesOffset: NotRequired[int]
propertiesCount: NotRequired[int]
class ClassReferenceContractV1(TypedDict):
uri: str
name: str
code: str
name: NotRequired[str]
code: NotRequired[str]
class ClassPropertyValueContractV1(TypedDict):
uri: str
code: str
uri: NotRequired[str]
code: NotRequired[str]
value: str
description: str
sortNumber: int
description: NotRequired[str]
sortNumber: NotRequired[int]
class ClassPropertyContractV1(TypedDict):
name: str
uri: str
description: str
definition: str
dataType: str
dimension: str
dimensionLength: int
dimensionMass: int
dimensionTime: int
dimensionElectricCurrent: int
dimensionThermodynamicTemperature: int
dimensionAmountOfSubstance: int
dimensionLuminousIntensity: int
dynamicParameterPropertyCodes: list[str]
example: str
isDynamic: bool
isRequired: bool
isWritable: bool
maxExclusive: float
maxInclusive: float
minExclusive: float
minInclusive: float
pattern: str
physicalQuantity: str
allowedValues: list[ClassPropertyValueContractV1]
predefinedValue: str
propertyCode: str
propertyDictionaryName: str
propertyDictionaryUri: str
propertyUri: str
propertySet: str
propertyStatus: str
propertyValueKind: str
symbol: str
units: list[str]
qudtCodes: list[str]
uri: NotRequired[str]
description: NotRequired[str]
definition: NotRequired[str]
dataType: NotRequired[str]
dimension: NotRequired[str]
dimensionLength: NotRequired[int]
dimensionMass: NotRequired[int]
dimensionTime: NotRequired[int]
dimensionElectricCurrent: NotRequired[int]
dimensionThermodynamicTemperature: NotRequired[int]
dimensionAmountOfSubstance: NotRequired[int]
dimensionLuminousIntensity: NotRequired[int]
dynamicParameterPropertyCodes: NotRequired[list[str]]
example: NotRequired[str]
isDynamic: NotRequired[bool]
isRequired: NotRequired[bool]
isWritable: NotRequired[bool]
maxExclusive: NotRequired[float]
maxInclusive: NotRequired[float]
minExclusive: NotRequired[float]
minInclusive: NotRequired[float]
pattern: NotRequired[str]
physicalQuantity: NotRequired[str]
allowedValues: NotRequired[list[ClassPropertyValueContractV1]]
predefinedValue: NotRequired[str]
propertyCode: NotRequired[str]
propertyDictionaryName: NotRequired[str]
propertyDictionaryUri: NotRequired[str]
propertyUri: NotRequired[str]
propertySet: NotRequired[str]
propertyStatus: NotRequired[str]
propertyValueKind: NotRequired[str]
symbol: NotRequired[str]
units: NotRequired[list[str]]
qudtCodes: NotRequired[list[str]]
class PropertyContractV4(TypedDict):
dictionaryUri: str
dictionaryUri: NotRequired[str]
activationDateUtc: str
code: str
creatorLanguageCode: str
countriesOfUse: list[str]
countryOfOrigin: str
deActivationDateUtc: str
definition: str
deprecationExplanation: str
description: str
documentReference: str
creatorLanguageCode: NotRequired[str]
countriesOfUse: NotRequired[list[str]]
countryOfOrigin: NotRequired[str]
deActivationDateUtc: NotRequired[str]
definition: NotRequired[str]
deprecationExplanation: NotRequired[str]
description: NotRequired[str]
documentReference: NotRequired[str]
name: str
uri: str
replacedObjectCodes: list[str]
replacingObjectCodes: list[str]
revisionDateUtc: str
revisionNumber: int
replacedObjectCodes: NotRequired[list[str]]
replacingObjectCodes: NotRequired[list[str]]
revisionDateUtc: NotRequired[str]
revisionNumber: NotRequired[int]
status: str
subdivisionsOfUse: list[str]
uid: str
subdivisionsOfUse: NotRequired[list[str]]
uid: NotRequired[str]
versionDateUtc: str
versionNumber: int
visualRepresentationUri: str
connectedPropertyCodes: list[str]
dataType: str
dimension: str
dimensionLength: int
dimensionMass: int
dimensionTime: int
dimensionElectricCurrent: int
dimensionThermodynamicTemperature: int
dimensionAmountOfSubstance: int
dimensionLuminousIntensity: int
dynamicParameterPropertyCodes: list[str]
example: str
isDynamic: bool
maxExclusive: float
maxInclusive: float
methodOfMeasurement: str
minExclusive: float
minInclusive: float
pattern: str
physicalQuantity: str
allowedValues: list[PropertyValueContractV4]
propertyValueKind: str
propertyRelations: list[PropertyRelationContractV4]
textFormat: str
units: list[str]
qudtCodes: list[str]
propertyClasses: list[PropertyClassContractV4]
versionNumber: NotRequired[int]
visualRepresentationUri: NotRequired[str]
connectedPropertyCodes: NotRequired[list[str]]
dataType: NotRequired[str]
dimension: NotRequired[str]
dimensionLength: NotRequired[int]
dimensionMass: NotRequired[int]
dimensionTime: NotRequired[int]
dimensionElectricCurrent: NotRequired[int]
dimensionThermodynamicTemperature: NotRequired[int]
dimensionAmountOfSubstance: NotRequired[int]
dimensionLuminousIntensity: NotRequired[int]
dynamicParameterPropertyCodes: NotRequired[list[str]]
example: NotRequired[str]
isDynamic: NotRequired[bool]
maxExclusive: NotRequired[float]
maxInclusive: NotRequired[float]
methodOfMeasurement: NotRequired[str]
minExclusive: NotRequired[float]
minInclusive: NotRequired[float]
pattern: NotRequired[str]
physicalQuantity: NotRequired[str]
allowedValues: NotRequired[list[PropertyValueContractV4]]
propertyValueKind: NotRequired[str]
propertyRelations: NotRequired[list[PropertyRelationContractV4]]
textFormat: NotRequired[str]
units: NotRequired[list[str]]
qudtCodes: NotRequired[list[str]]
propertyClasses: NotRequired[list[PropertyClassContractV4]]
class PropertyValueContractV4(TypedDict):
uri: str
code: str
uri: NotRequired[str]
code: NotRequired[str]
value: str
description: str
sortNumber: int
description: NotRequired[str]
sortNumber: NotRequired[int]
class PropertyRelationContractV4(TypedDict):
uri: str
relationType: str
relatedPropertyUri: str
relatedPropertyName: str
uri: NotRequired[str]
relationType: NotRequired[str]
relatedPropertyUri: NotRequired[str]
relatedPropertyName: NotRequired[str]
class PropertyClassContractV4(TypedDict):
uri: str
code: str
uri: NotRequired[str]
code: NotRequired[str]
name: str
definition: str
description: str
propertySet: str
definition: NotRequired[str]
description: NotRequired[str]
propertySet: NotRequired[str]
class ClassRelationContractV1(TypedDict):
uri: str
uri: NotRequired[str]
relationType: str
relatedClassUri: str
relatedClassName: str
fraction: float
relatedClassName: NotRequired[str]
fraction: NotRequired[float]
class TextSearchResponseContractV1(TypedDict):
totalCount: int
offset: int
count: int
classes: list[TextSearchResponseClassContractV1]
dictionaries: list[TextSearchResponseDictionaryContractV1]
properties: list[TextSearchResponsePropertyContractV1]
totalCount: NotRequired[int]
offset: NotRequired[int]
count: NotRequired[int]
classes: NotRequired[list[TextSearchResponseClassContractV1]]
dictionaries: NotRequired[list[TextSearchResponseDictionaryContractV1]]
properties: NotRequired[list[TextSearchResponsePropertyContractV1]]
class TextSearchResponseClassContractV1(TypedDict):
dictionaryUri: str
dictionaryName: str
name: str
referenceCode: str
uri: str
classType: str
description: str
parentClassName: str
relatedIfcEntityNames: list[str]
dictionaryUri: NotRequired[str]
dictionaryName: NotRequired[str]
name: NotRequired[str]
referenceCode: NotRequired[str]
uri: NotRequired[str]
classType: NotRequired[str]
description: NotRequired[str]
parentClassName: NotRequired[str]
relatedIfcEntityNames: NotRequired[list[str]]
class TextSearchResponseDictionaryContractV1(TypedDict):
uri: str
name: str
uri: NotRequired[str]
name: NotRequired[str]
class TextSearchResponsePropertyContractV1(TypedDict):
dictionaryUri: str
dictionaryName: str
uri: str
name: str
description: str
dictionaryUri: NotRequired[str]
dictionaryName: NotRequired[str]
uri: NotRequired[str]
name: NotRequired[str]
description: NotRequired[str]
class ClassContractV1(TypedDict):
dictionaryUri: str
dictionaryUri: NotRequired[str]
activationDateUtc: str
code: str
creatorLanguageCode: str
countriesOfUse: list[str]
countryOfOrigin: str
deActivationDateUtc: str
definition: str
deprecationExplanation: str
description: str
documentReference: str
creatorLanguageCode: NotRequired[str]
countriesOfUse: NotRequired[list[str]]
countryOfOrigin: NotRequired[str]
deActivationDateUtc: NotRequired[str]
definition: NotRequired[str]
deprecationExplanation: NotRequired[str]
description: NotRequired[str]
documentReference: NotRequired[str]
name: str
uri: str
replacedObjectCodes: list[str]
replacingObjectCodes: list[str]
revisionDateUtc: str
revisionNumber: int
replacedObjectCodes: NotRequired[list[str]]
replacingObjectCodes: NotRequired[list[str]]
revisionDateUtc: NotRequired[str]
revisionNumber: NotRequired[int]
status: str
subdivisionsOfUse: list[str]
uid: str
subdivisionsOfUse: NotRequired[list[str]]
uid: NotRequired[str]
versionDateUtc: str
versionNumber: int
visualRepresentationUri: str
classType: str
referenceCode: str
synonyms: list[str]
relatedIfcEntityNames: list[str]
parentClassReference: ClassReferenceContractV1
classProperties: list[ClassPropertyContractV1]
classRelations: list[ClassRelationContractV1]
childClassReferences: list[ClassReferenceContractV1]
reverseClassRelations: list[ClassReverseRelationContractV1]
hierarchy: list[HierarchyItemContractV1]
versionNumber: NotRequired[int]
visualRepresentationUri: NotRequired[str]
classType: NotRequired[str]
referenceCode: NotRequired[str]
synonyms: NotRequired[list[str]]
relatedIfcEntityNames: NotRequired[list[str]]
parentClassReference: NotRequired[ClassReferenceContractV1]
classProperties: NotRequired[list[ClassPropertyContractV1]]
classRelations: NotRequired[list[ClassRelationContractV1]]
childClassReferences: NotRequired[list[ClassReferenceContractV1]]
reverseClassRelations: NotRequired[list[ClassReverseRelationContractV1]]
hierarchy: NotRequired[list[HierarchyItemContractV1]]
class ClassReverseRelationContractV1(TypedDict):
relationType: str
classUri: str
className: str
fraction: float
dictionaryUri: str
className: NotRequired[str]
fraction: NotRequired[float]
dictionaryUri: NotRequired[str]
class HierarchyItemContractV1(TypedDict):
@@ -354,49 +352,49 @@ class HierarchyItemContractV1(TypedDict):
class SearchInDictionaryResponseContractV1(TypedDict):
totalCount: int
offset: int
count: int
dictionary: DictionarySearchResultContractV1
totalCount: NotRequired[int]
offset: NotRequired[int]
count: NotRequired[int]
dictionary: NotRequired[DictionarySearchResultContractV1]
class DictionarySearchResultContractV1(TypedDict):
name: str
uri: str
classes: list[ClassSearchResultContractV1]
name: NotRequired[str]
uri: NotRequired[str]
classes: NotRequired[list[ClassSearchResultContractV1]]
class ClassSearchResultContractV1(TypedDict):
name: str
uri: str
referenceCode: str
classType: str
definition: str
synonyms: list[str]
name: NotRequired[str]
uri: NotRequired[str]
referenceCode: NotRequired[str]
classType: NotRequired[str]
definition: NotRequired[str]
synonyms: NotRequired[list[str]]
class ClassSearchResponseContractV1(TypedDict):
totalCount: int
offset: int
count: int
classes: list[ClassSearchResponseClassContractV1]
totalCount: NotRequired[int]
offset: NotRequired[int]
count: NotRequired[int]
classes: NotRequired[list[ClassSearchResponseClassContractV1]]
class ClassSearchResponseClassContractV1(TypedDict):
dictionaryUri: str
dictionaryName: str
name: str
referenceCode: str
uri: str
classType: str
description: str
parentClassName: str
relatedIfcEntityNames: list[str]
dictionaryUri: NotRequired[str]
dictionaryName: NotRequired[str]
name: NotRequired[str]
referenceCode: NotRequired[str]
uri: NotRequired[str]
classType: NotRequired[str]
description: NotRequired[str]
parentClassName: NotRequired[str]
relatedIfcEntityNames: NotRequired[list[str]]
class CountryContractV1(TypedDict):
code: str
name: str
code: NotRequired[str]
name: NotRequired[str]
class LanguageContractV1(TypedDict):
@@ -405,21 +403,21 @@ class LanguageContractV1(TypedDict):
class ReferenceDocumentContractV1(TypedDict):
title: str
name: str
date: str
title: NotRequired[str]
name: NotRequired[str]
date: NotRequired[str]
class UnitContractV1(TypedDict):
code: str
name: str
symbol: str
qudtUri: str
code: NotRequired[str]
name: NotRequired[str]
symbol: NotRequired[str]
qudtUri: NotRequired[str]
class CodeNameDto(TypedDict):
code: str
name: str
code: NotRequired[str]
name: NotRequired[str]
class OAuthReceiver(http.server.BaseHTTPRequestHandler):
+4 -1
View File
@@ -23,7 +23,10 @@ classifiers = [
"Programming Language :: Python :: Implementation :: PyPy",
"License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
]
dependencies = ["requests"]
dependencies = [
"requests",
"typing-extensions",
]
[project.optional-dependencies]
dev = [
+2 -2
View File
@@ -59,8 +59,8 @@ if __name__ == "__main__":
props_str = ""
for prop_name, prop_data in props.items():
python_type = get_python_type(prop_data)
# if prop_name not in required:
# python_type = f"NotRequired[{python_type}]"
if prop_name not in required:
python_type = f"NotRequired[{python_type}]"
props_str += f" {prop_name}: {python_type}\n"
class_strings[class_header] = props_str