def to_data(instance: CdmLocalEntityDeclarationDefinition, res_opt: 'ResolveOptions', options: 'CopyOptions'): local_entity = LocalEntityDeclaration() local_entity.entityName = instance.entity_name local_entity.explanation = instance.explanation local_entity.entityPath = instance.entity_path local_entity.lastFileStatusCheckTime = time_utils._get_formatted_date_string( instance.last_file_status_check_time) local_entity.lastFileModifiedTime = time_utils._get_formatted_date_string( instance.last_file_modified_time) local_entity.lastChildFileModifiedTime = time_utils._get_formatted_date_string( instance.last_child_file_modified_time) local_entity.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) local_entity.dataPartitions = copy_data_utils._array_copy_data( res_opt, instance.data_partitions, options, LocalEntityDeclarationPersistence.ensure_non_incremental(instance)) local_entity.dataPartitionPatterns = copy_data_utils._array_copy_data( res_opt, instance.data_partition_patterns, options, LocalEntityDeclarationPersistence.ensure_non_incremental(instance)) local_entity.incrementalPartitions = copy_data_utils._array_copy_data( res_opt, instance.incremental_partitions, options, LocalEntityDeclarationPersistence.ensure_incremental(instance)) local_entity.incrementalPartitionPatterns = copy_data_utils._array_copy_data( res_opt, instance.incremental_partition_patterns, options, LocalEntityDeclarationPersistence.ensure_incremental(instance)) return local_entity
def create_database_propertybags(instance: CdmManifestDefinition, res_opt: ResolveOptions, options: CopyOptions): properties = {} last_file_status_check_time = time_utils._get_formatted_date_string(instance.last_file_status_check_time) last_file_modified_time = time_utils._get_formatted_date_string(instance.last_file_modified_time) last_child_file_modified_time = time_utils._get_formatted_date_string(instance.last_child_file_modified_time) if last_file_status_check_time is not None: properties["cdm:lastFileStatusCheckTime"] = last_file_status_check_time if last_file_modified_time is not None: properties["cdm:lastFileModifiedTime"] = last_file_modified_time if last_child_file_modified_time is not None: properties["cdm:lastChildFileModifiedTime"] = last_child_file_modified_time if instance.schema is not None: properties["cdm:schema"] = instance.schema if instance.document_version is not None: properties["cdm:documentVersion"] = instance.document_version if instance.json_schema_semantic_version is not None: properties["cdm:jsonSchemaSemanticVersion"] = instance.json_schema_semantic_version if instance.imports is not None and len(instance.imports) > 0: properties["cdm:imports"] = copy_data_utils._array_copy_data(res_opt, instance.imports, options) if instance.exhibits_traits is not None and len(instance.exhibits_traits) > 0: properties["cdm:traits"] = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options) return properties
def to_data(instance: CdmEntityDefinition, res_opt: ResolveOptions, options: CopyOptions) -> Entity: exhibits_traits = [ trait for trait in instance.exhibits_traits if not trait.is_from_property ] data = Entity() data.explanation = instance.explanation data.entityName = instance.entity_name data.extendsEntity = EntityReferencePersistence.to_data( instance.extends_entity, res_opt, options) if instance.extends_entity else None data.ExtendsEntityResolutionGuidance = AttributeResolutionGuidancePersistence.to_data( instance.extends_entity_resolution_guidance, res_opt, options) if instance.extends_entity_resolution_guidance else None data.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, exhibits_traits, options) data.sourceName = instance._fetch_property('sourceName') data.displayName = instance._fetch_property('displayName') data.description = instance._fetch_property('description') data.version = instance._fetch_property('version') data.cdmSchemas = instance._fetch_property('cdmSchemas') data.attributeContext = AttributeContextPersistence.to_data( instance.attribute_context, res_opt, options) if instance.attribute_context else None # After the properties so they show up first in doc data.hasAttributes = copy_data_utils._array_copy_data( res_opt, instance.attributes, options) return data
def to_data(instance: CdmAttributeContext, res_opt: ResolveOptions, options: CopyOptions) -> AttributeContext: result = AttributeContext() exhibits_traits = [ trait for trait in instance.exhibits_traits if not trait.is_from_property ] result.explanation = instance.explanation result.name = instance.name result.type = map_enum_to_type_name[instance.type] result.parent = AttributeContextReferencePersistence.to_data( instance.parent, res_opt, options) if instance.parent is not None else None result.definition = PersistenceLayer.to_data( instance.definition, res_opt, options, PersistenceLayer.CDM_FOLDER ) if instance.definition is not None else None # I know the trait collection names look wrong. but I wanted to use the def baseclass result.appliedTraits = copy_data_utils._array_copy_data( res_opt, exhibits_traits, options) result.contents = copy_data_utils._array_copy_data( res_opt, instance.contents, options) return result
def to_data(instance: CdmManifestDefinition, res_opt: ResolveOptions, options: CopyOptions) -> ManifestContent: manifest = ManifestContent() manifest.manifestName = instance.manifest_name manifest.schema = instance.schema manifest.jsonSchemaSemanticVersion = instance.json_schema_semantic_version manifest.documentVersion = instance.document_version manifest.lastFileStatusCheckTime = time_utils._get_formatted_date_string( instance.last_file_status_check_time) manifest.lastFileModifiedTime = time_utils._get_formatted_date_string( instance.last_file_modified_time) manifest.lastChildFileModifiedTime = time_utils._get_formatted_date_string( instance.last_child_file_modified_time) manifest.explanation = instance.explanation manifest.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) manifest.entities = copy_data_utils._array_copy_data( res_opt, instance.entities, options) manifest.subManifests = copy_data_utils._array_copy_data( res_opt, instance.sub_manifests, options) manifest.imports = copy_data_utils._array_copy_data( res_opt, instance.imports, options) manifest.relationships = copy_data_utils._array_copy_data( res_opt, instance.relationships, options) return manifest
def to_data(instance: CdmDocumentDefinition, res_opt: ResolveOptions, options: CopyOptions) -> DocumentContent: result = DocumentContent() result.schema = instance.schema result.jsonSchemaSemanticVersion = instance.json_schema_semantic_version result.imports = copy_data_utils._array_copy_data(res_opt, instance.imports, options) result.definitions = copy_data_utils._array_copy_data(res_opt, instance.definitions, options) result.documentVersion = instance.document_version return result
def to_data(instance: CdmAttributeGroupDefinition, res_opt: ResolveOptions, options: CopyOptions) -> Optional[AttributeGroup]: result = AttributeGroup() result.explanation = instance.explanation result.attributeGroupName = instance.attribute_group_name result.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) result.attributeContext = AttributeContextReferencePersistence.to_data( instance.attribute_context, res_opt, options) if instance.attribute_context else None result.members = copy_data_utils._array_copy_data( res_opt, instance.members, options) return result
async def to_data(instance: 'CdmTypeAttributeDefinition', res_opt: 'ResolveOptions', options: 'CopyOptions') -> 'Attribute': applied_traits = \ [trait for trait in instance.applied_traits if not trait.is_from_property] \ if instance.applied_traits else None result = Attribute() result.name = instance.name description = instance._fetch_property('description') if description: result.description = description result.dataType = TypeAttributePersistence._data_type_to_data( instance.data_format) result.traits = copy_data_utils._array_copy_data( res_opt, applied_traits, options) await utils.process_annotations_to_data(instance.ctx, result, instance.applied_traits) t2pm = TraitToPropertyMap(instance) result.isHidden = bool( t2pm._fetch_trait_reference('is.hidden')) or None return result
def _copy_ref_data(instance: CdmObjectReference, res_opt: ResolveOptions, copy: CdmJsonType, ref_to: CdmJsonType, options: CopyOptions) -> Optional[CdmJsonType]: if instance.object_type == CdmObjectType.ATTRIBUTE_GROUP_REF: copy = AttributeGroupReference() copy.attributeGroupReference = ref_to return copy elif instance.object_type == CdmObjectType.DATA_TYPE_REF: copy = DataTypeReference() copy.dataTypeReference = ref_to return copy elif instance.object_type == CdmObjectType.ENTITY_REF: copy = EntityReference() copy.entityReference = ref_to return copy elif instance.object_type == CdmObjectType.PURPOSE_REF: copy = PurposeReference() copy.purposeReference = ref_to return copy elif instance.object_type == CdmObjectType.TRAIT_REF: copy = TraitReference() copy.traitReference = ref_to copy.arguments = copy_data_utils._array_copy_data(res_opt, instance.arguments, options) return copy elif instance.object_type == CdmObjectType.TRAIT_GROUP_REF: copy = TraitGroupReference() copy.traitGroupReference = ref_to return copy else: return None
def to_data(instance: CdmObjectReference, res_opt: ResolveOptions, options: CopyOptions) -> CdmJsonType: # We don't know what object we are creating to initialize to any copy = None replace = None if instance.named_reference: identifier = utils.copy_identifier_ref(instance, res_opt, options) if instance.simple_named_reference: return identifier replace = CdmObjectRefPersistence._copy_ref_data(instance, res_opt, copy, identifier, options) if replace: copy = replace elif instance.explicit_reference: er_copy = PersistenceLayer.to_data(instance.explicit_reference, res_opt, options, PersistenceLayer.CDM_FOLDER) replace = CdmObjectRefPersistence._copy_ref_data(instance, res_opt, copy, er_copy, options) if replace: copy = replace if instance.optional is not None: copy.optional = instance.optional if instance.applied_traits: # We don't know if the object we are copying has applied traits or not and hence use any copy.appliedTraits = copy_data_utils._array_copy_data(res_opt, instance.applied_traits, options) return copy
def create_table_propertybags(instance: CdmLocalEntityDeclarationDefinition, res_opt: ResolveOptions, options: CopyOptions, properties): if properties == None: properties = {} if instance.entity_path is not None: path_tuple = StorageUtils.split_namespace_path(instance.entity_path) if path_tuple == None: logger.error(instance.ctx, _TAG, LocalEntityDeclarationPersistence.create_table_propertybags.__name__, instance.at_corpus_path, CdmLogCode.ERR_PERSIST_SYMS_ENTITY_PATH_NULL, instance.entity_name) return None properties['cdm:entityPath'] = path_tuple[1] t2pm = TraitToPropertyMap(instance) is_hidden_trait = t2pm._fetch_trait_reference('is.hidden') if not 'cdm:description' in properties: properties['cdm:description'] = instance.explanation if instance.last_child_file_modified_time is not None: properties['cdm:lastChildFileModifiedTime'] = instance.last_child_file_modified_time if instance.last_file_modified_time is not None: properties['cdm:lastFileModifiedTime'] = instance.last_file_modified_time if instance.last_file_status_check_time is not None: properties['cdm:lastFileStatusCheckTime'] = instance.last_file_status_check_time if is_hidden_trait is not None: properties['cdm:isHidden'] = True if instance.exhibits_traits is not None and len(instance.exhibits_traits) > 0: properties['cdm:entityDecTraits'] = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options) return properties
def to_data(ctx: CdmCorpusContext, doc: CdmDocumentDefinition, current_table_properties: TableProperties, res_opt: ResolveOptions, options: CopyOptions) -> TableEntity: if current_table_properties == None: return None if len(doc.definitions) == 0 or len(doc.definitions) > 1: logger.error( ctx, _TAG, 'to_data', doc.at_corpus_path, CdmLogCode.ERR_PERSIST_SYMS_MULTIPLE_OR_ZERO_TABLE_DEFINITION, doc.name) return None if isinstance(doc.definitions[0], CdmEntityDefinition): cdm_entity = doc.definitions[0] table_entity = EntityPersistence.to_data(cdm_entity, ctx, res_opt, options) te_properties = table_entity.properties if cdm_entity.owner is not None and isinstance( cdm_entity.owner, CdmDocumentDefinition): document = cdm_entity.owner if len(document.imports) > 0: imports = copy_data_utils._array_copy_data( res_opt, document.imports, options) te_properties.properties["cdm:imports"] = imports te_properties.namespace = current_table_properties.namespace te_properties.storage_descriptor.source = current_table_properties.storage_descriptor.source te_properties.storage_descriptor.format = current_table_properties.storage_descriptor.format te_properties.partitioning = current_table_properties.partitioning table_entity.properties = te_properties return table_entity return None
def to_data(instance: 'CdmDataPartitionDefinition', res_opt: 'ResolveOptions', options: 'CopyOptions') -> 'DataPartition': data_partition = DataPartition() data_partition.location = instance.location data_partition.name = instance.name data_partition.specializedSchema = instance.specialized_schema data_partition.lastFileStatusCheckTime = time_utils._get_formatted_date_string( instance.last_file_status_check_time) data_partition.lastFileModifiedTime = time_utils._get_formatted_date_string( instance.last_file_modified_time) data_partition.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) arguments = [] if instance.arguments: for argument_name, argument_list in instance.arguments.items(): for argument_value in argument_list: argument = Argument() argument.name = argument_name argument.value = argument_value arguments.append(argument) if len(arguments) > 0: data_partition.arguments = arguments return data_partition
def to_data(instance: CdmTraitDefinition, res_opt: ResolveOptions, options: CopyOptions) -> Trait: from .trait_reference_persistence import TraitReferencePersistence result = Trait() result.traitName = instance.trait_name result.extendsTrait = TraitReferencePersistence.to_data( instance.extends_trait, res_opt, options) if instance.extends_trait else None result.hasParameters = copy_data_utils._array_copy_data( res_opt, instance.parameters, options) if instance.associated_properties: result.associatedProperties = instance.associated_properties if instance.elevated: result.elevated = instance.elevated if instance.explanation: result.explanation = instance.explanation if instance.ugly: result.ugly = instance.ugly return result
def to_data(instance: CdmEntityAttributeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> EntityAttribute: entity = EntityReferencePersistence.to_data( instance.entity, res_opt, options) if instance.entity else None applied_traits = [ trait for trait in instance.applied_traits if isinstance(trait, CdmTraitGroupReference) or not trait.is_from_property ] entity_attribute = EntityAttribute() entity_attribute.name = instance.name entity_attribute.description = instance.description entity_attribute.displayName = instance.display_name entity_attribute.explanation = instance.explanation entity_attribute.isPolymorphicSource = instance.is_polymorphic_source entity_attribute.purpose = PurposeReferencePersistence.to_data( instance.purpose, res_opt, options) if instance.purpose else None entity_attribute.entity = entity entity_attribute.appliedTraits = copy_data_utils._array_copy_data( res_opt, applied_traits, options) entity_attribute.resolutionGuidance = AttributeResolutionGuidancePersistence.to_data( instance.resolution_guidance, res_opt, options) if instance.resolution_guidance else None return entity_attribute
def to_data(instance: CdmDataTypeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> DataType: result = DataType() result.explanation = instance.explanation result.dataTypeName = instance.data_type_name result.extendsDataType = DataTypeReferencePersistence.to_data(instance.extends_data_type, res_opt, options) if instance.extends_data_type else None result.exhibitsTraits = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options) return result
def create_properties(instance: CdmTypeAttributeDefinition, res_opt: ResolveOptions, options: CopyOptions): properties = {} display_name = instance._get_property('display_name') source_name = instance._get_property('source_name') description = instance._get_property('description') is_read_only = instance._get_property('isReadOnly') maximum_length = instance._get_property('maximum_length') maximum_value = instance._get_property('maximum_value') minimum_value = instance._get_property('minimum_value') source_ordering = instance._get_property('source_ordering') value_constrained_to_list = instance._get_property('value_constrained_to_list') is_primary_key = instance._get_property('is_primary_key') def_value = instance._get_property('defaultValue') if display_name is not None: properties['cdm:display_name'] = display_name if instance.explanation is not None: properties['cdm:explanation'] = instance.explanation if source_name is not None: properties['cdm:source_name'] = source_name if description is not None: properties['cdm:description'] = description if instance.applied_traits is not None and len(instance.applied_traits) > 0: applied_traits = \ [trait for trait in instance.applied_traits if isinstance(trait, CdmTraitGroupReference) or not trait.is_from_property] \ if instance.applied_traits else None properties['cdm:traits'] = copy_data_utils._array_copy_data(res_opt, applied_traits, options) if is_read_only is not None: properties['cdm:isReadOnly'] = is_read_only if maximum_length is not None: properties['cdm:maximumLength'] = maximum_length if maximum_value is not None: properties['cdm:maximumValue'] = maximum_value if minimum_value is not None: properties['cdm:minimumValue'] = minimum_value if source_ordering is not None and source_ordering != 0: properties['cdm:sourceOrdering'] = source_ordering if value_constrained_to_list is not None: properties['cdm:valueConstrainedToList'] = value_constrained_to_list if is_primary_key is not None: properties['cdm:isPrimaryKey'] = is_primary_key if def_value is not None: properties['cdm:defaultValue'] = def_value return properties
def to_data(instance: CdmPurposeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> Purpose: from .purpose_reference_persistence import PurposeReferencePersistence result = Purpose() result.explanation = instance.explanation result.purposeName = instance.purpose_name result.extendsPurpose = PurposeReferencePersistence.to_data(instance.extends_purpose, res_opt, options) if instance.extends_purpose else None result.exhibitsTraits = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options) return result
def to_data(instance: CdmTraitGroupDefinition, res_opt: ResolveOptions, options: CopyOptions) -> TraitGroup: result = TraitGroup() result.traitName = instance.trait_group_name if instance.explanation: result.explanation = instance.explanation result.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) return result
def to_data(instance: 'CdmE2ERelationship', res_opt: ResolveOptions, options: CopyOptions) -> E2ERelationship: relationship = E2ERelationship() if not StringUtils.is_null_or_white_space(instance.relationship_name): relationship.name = instance.relationship_name relationship.fromEntity = instance.from_entity relationship.fromEntityAttribute = instance.from_entity_attribute relationship.toEntity = instance.to_entity relationship.toEntityAttribute = instance.to_entity_attribute relationship.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) return relationship
def to_data(instance: CdmReferencedEntityDeclarationDefinition, res_opt: ResolveOptions, options: CopyOptions) -> ReferencedEntityDeclaration: data = ReferencedEntityDeclaration() data.entityName = instance.entity_name data.explanation = instance.explanation data.lastFileStatusCheckTime = time_utils._get_formatted_date_string( instance.last_file_status_check_time) data.lastFileModifiedTime = time_utils._get_formatted_date_string( instance.last_file_modified_time) data.entityPath = instance.entity_path data.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) return data
def to_data(instance: 'CdmDataPartitionDefinition', obj: 'StorageDescriptor', res_opt: 'ResolveOptions', options: 'CopyOptions') -> 'StorageDescriptor': obj.properties = {} if instance.name is not None: obj.properties['cdm:name'] = instance.name if instance.last_file_status_check_time is not None: obj.properties[ 'cdm:lastFileStatusCheckTime'] = time_utils._get_formatted_date_string( instance.last_file_status_check_time) if instance.last_file_modified_time is not None: obj.properties[ 'cdm:lastFileModifiedTime'] = time_utils._get_formatted_date_string( instance.last_file_modified_time) if instance.exhibits_traits is not None: tpm = TraitToPropertyMap(instance) csv_trait = tpm._fetch_trait_reference('is.partition.format.CSV') if csv_trait is not None: instance.exhibits_traits.remove('is.partition.format.CSV') if len(instance.exhibits_traits) > 0: obj.properties[ 'cdm:traits'] = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) if csv_trait is not None: instance.exhibits_traits.append(csv_trait) properties = DataPartitionPersistence.fill_property_bag_from_csv_trait( instance) if properties is not None: obj.format = FormatInfo( input_format=InputFormat. orgapachehadoopmapred_sequence_file_input_format, output_format=OutputFormat. orgapachehadoophiveqlio_hive_sequence_file_output_format, serialize_lib=SerializeLib. orgapachehadoophiveserde2lazy_lazy_simple_ser_de, format_type=FormatType.csv, properties=properties) else: #error return None return obj
def to_data(instance: CdmDataPartitionPatternDefinition, res_opt: ResolveOptions, options: CopyOptions) -> DataPartitionPattern: data = DataPartitionPattern() data.name = instance.name data.lastFileStatusCheckTime = time_utils._get_formatted_date_string( instance.last_file_status_check_time) data.lastFileModifiedTime = time_utils._get_formatted_date_string( instance.last_file_modified_time) data.explanation = instance.explanation data.rootLocation = instance.root_location data.regularExpression = instance.regular_expression data.parameters = instance.parameters data.specializedSchema = instance.specialized_schema data.exhibitsTraits = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) return data
def to_data(instance: CdmEntityAttributeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> EntityAttribute: entity = EntityReferencePersistence.to_data( instance.entity, res_opt, options) if instance.entity else None entity_attribute = EntityAttribute() entity_attribute.explanation = instance.explanation entity_attribute.name = instance.name entity_attribute.purpose = PurposeReferencePersistence.to_data( instance.purpose, res_opt, options) if instance.purpose else None entity_attribute.entity = entity entity_attribute.appliedTraits = copy_data_utils._array_copy_data( res_opt, instance.applied_traits, options) entity_attribute.resolutionGuidance = AttributeResolutionGuidancePersistence.to_data( instance.resolution_guidance, res_opt, options) if instance.resolution_guidance else None return entity_attribute
def create_table_propertybags(instance: CdmEntityDefinition, res_opt: ResolveOptions, options: CopyOptions): properties = {} if instance.explanation is not None: properties["cdm:explanation"] = instance.explanation if instance.source_name is not None: properties["cdm:sourceName"] = instance.source_name if instance.display_name is not None: properties["cdm:displayName"] = instance.display_name if instance.description is not None: properties["cdm:description"] = instance.description if instance.exhibits_traits is not None and len(instance.exhibits_traits) > 0: properties["cdm:traits"] = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options) return properties
def to_data(instance: 'CdmE2ERelationship', dbname: str, res_opt: ResolveOptions, options: CopyOptions, relationship=None) -> RelationshipEntity: properties = {} if instance.exhibits_traits is not None and len( instance.exhibits_traits) > 0: properties[ "cdm:exhibitsTraits"] = copy_data_utils._array_copy_data( res_opt, instance.exhibits_traits, options) ns = Namespace(dbname) column_relationship_informations = [] col_info = ColumnRelationshipInformation( from_column_name=instance.from_entity_attribute, to_column_name=instance.to_entity_attribute) column_relationship_informations.append(col_info) relationship_properties = RelationshipProperties( namespace=ns, from_table_name=utils.extract_table_name_from_entity_path( instance.from_entity), to_table_name=utils.extract_table_name_from_entity_path( instance.to_entity), properties=properties, publish_status=PublishStatus.published, relationship_type=RelationshipType.manytoone, column_relationship_informations=column_relationship_informations) relationship_name = instance.name if StringUtils.is_blank_by_cdm_standard(instance.name): relationship_name = "{}_{}_relationship".format( relationship_properties.from_table_name, relationship_properties.to_table_name) rel = RelationshipEntity(name=relationship_name, properties=relationship_properties, type=SASEntityType.relationship) return rel
async def to_data_async(document_object_or_path, manifest: CdmManifestDefinition, ctx: CdmCorpusContext, res_opt: ResolveOptions, options: CopyOptions) -> TableEntity: if isinstance(document_object_or_path, str): obje = await ctx.corpus.fetch_object_async(document_object_or_path, manifest) if isinstance(obje, CdmEntityDefinition): cdm_entity = obje table_entity = EntityPersistence.to_data( cdm_entity, ctx, res_opt, options) te_properties = table_entity.properties te_properties.namespace = TableNamespace( manifest.manifest_name) if cdm_entity.owner is not None and isinstance( cdm_entity.owner, CdmDocumentDefinition): document = cdm_entity.owner if len(document.imports) > 0: imports = copy_data_utils._array_copy_data( res_opt, document.imports, options) te_properties.properties["cdm:imports"] = imports else: logger.warning(ctx, _TAG, 'to_data_async', manifest.at_corpus_path, CdmLogCode.WARN_PERSIST_SYMS_ENTITY_MISIING, cdm_entity.name) return table_entity else: logger.error(ctx, _TAG, 'to_data_async', manifest.at_corpus_path, CdmLogCode.ERR_PERSIST_SYMS_ENTITY_FETCH_ERROR, document_object_or_path) return None return None
def to_data(instance: CdmTypeAttributeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> TypeAttribute: if instance is None: return None applied_traits = \ [trait for trait in instance.applied_traits if not trait.is_from_property] \ if instance.applied_traits else None data = TypeAttribute() data.explanation = instance.explanation data.purpose = PurposeReferencePersistence.to_data( instance.purpose, res_opt, options) if instance.purpose else None data.dataType = DataTypeReferencePersistence.to_data( instance.data_type, res_opt, options) if instance.data_type else None data.name = instance.name data.appliedTraits = copy_data_utils._array_copy_data( res_opt, applied_traits, options) data.resolutionGuidance = AttributeResolutionGuidancePersistence.to_data( instance.resolution_guidance, res_opt, options) if instance.resolution_guidance else None data.projection = ProjectionPersistence.to_data( instance.projection, res_opt, options) data.attributeContext = AttributeContextReferencePersistence.to_data( instance.attribute_context, res_opt, options) if instance.attribute_context else None is_read_only = instance._get_property('isReadOnly') if is_read_only: data.isReadOnly = is_read_only is_nullable = instance._get_property('isNullable') if is_nullable: data.isNullable = is_nullable data.sourceName = instance._get_property('sourceName') source_ordering = instance._get_property('sourceOrdering') if source_ordering: data.sourceOrdering = source_ordering data.displayName = instance._get_property('displayName') data.description = instance._get_property('description') value_constrained_to_list = instance._get_property( 'valueConstrainedToList') if value_constrained_to_list: data.valueConstrainedToList = value_constrained_to_list is_primary_key = instance._get_property('isPrimaryKey') if is_primary_key: data.isPrimaryKey = is_primary_key data.maximumLength = instance._get_property('maximumLength') data.maximumValue = instance._get_property('maximumValue') data.minimumValue = instance._get_property('minimumValue') data_format = instance._get_property('dataFormat') if data_format != CdmDataFormat.UNKNOWN: data.dataFormat = data_format.value default_value = instance._get_property('defaultValue') if default_value: data.defaultValue = default_value return data