Module adcp.types.domains.governance.attribute_definition
Classes
class AttributeDefinition (**data: Any)-
Expand source code
class AttributeDefinition(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) attribute_id: Annotated[ str, Field( description='Unique identifier for this attribute. Used in plan.restricted_attributes, signal-definition.restricted_attributes, and data marketplace catalog entries.', pattern='^[a-z][a-z0-9_]*$', ), ] name: Annotated[str, Field(description="Human-readable name (e.g., 'Health Data').")] description: Annotated[ str, Field( description='What this attribute category covers. Defines the boundary — what is and is not included.' ), ] regulatory_basis: Annotated[ list[RegulatoryBasi] | None, Field(description='Regulations that define or restrict this attribute category.'), ] = None includes: Annotated[ list[str] | None, Field( description="Specific data types that fall within this category (e.g., for health_data: 'medical conditions', 'disability status', 'prescription history', 'inferred health from behavioral signals')." ), ] = None excludes: Annotated[ list[str] | None, Field( description='Data types that might seem related but are explicitly outside this category. Helps with boundary cases.' ), ] = None signal_patterns: Annotated[ list[str] | None, Field( description="Common signal naming or tagging patterns that indicate this attribute (e.g., 'health:', 'condition_', 'diagnosis_'). Data providers and governance agents use these as hints when signals lack explicit restricted_attributes declarations." ), ] = None guidance: Annotated[ str | None, Field( description='Implementation notes. Covers edge cases, inferred vs. declared data, and common pitfalls.' ), ] = NoneBase model for AdCP types with spec-compliant serialization.
Defaults to
extra='ignore'so unknown fields from newer spec versions are silently dropped rather than causing validation errors. Generated types whose schemas setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='forbid'. Use this during spec upgrades to catch silently-dropped renamed fields in tests. See :func:_resolve_extra_policy.Important
The env var is resolved once at module import time. Set it in your shell or CI environment before
import adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport has no effect on already-imported model classes (they captured the policy at class-body evaluation).Consumers who want per-model strict validation can override
model_configon their subclass.Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var attribute_id : strvar description : strvar excludes : list[str] | Nonevar guidance : str | Nonevar includes : list[str] | Nonevar model_configvar name : strvar regulatory_basis : list[RegulatoryBasi] | Nonevar signal_patterns : list[str] | None
Inherited members
class RegulatoryBasi (**data: Any)-
Expand source code
class RegulatoryBasi(AdCPBaseModel): model_config = ConfigDict( extra='forbid', ) name: Annotated[str, Field(description="Name of the regulation (e.g., 'GDPR Article 9(1)').")] jurisdictions: Annotated[ list[str] | None, Field(description='ISO 3166-1 alpha-2 codes where this regulation applies.'), ] = None summary: Annotated[ str, Field(description='How this regulation defines or restricts the attribute.') ]Base model for AdCP types with spec-compliant serialization.
Defaults to
extra='ignore'so unknown fields from newer spec versions are silently dropped rather than causing validation errors. Generated types whose schemas setadditionalProperties: trueoverride this withextra='allow'in their ownmodel_config.Set
ADCP_STRICT_VALIDATION=1in the environment ("1","true","yes","on"are accepted) to flip the default toextra='forbid'. Use this during spec upgrades to catch silently-dropped renamed fields in tests. See :func:_resolve_extra_policy.Important
The env var is resolved once at module import time. Set it in your shell or CI environment before
import adcpruns — mutatingos.environ["ADCP_STRICT_VALIDATION"]after the firstadcpimport has no effect on already-imported model classes (they captured the policy at class-body evaluation).Consumers who want per-model strict validation can override
model_configon their subclass.Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- AdCPBaseModel
- pydantic.main.BaseModel
Class variables
var jurisdictions : list[str] | Nonevar model_configvar name : strvar summary : str
Inherited members